From 8dca58b3bede6f3649cf133227375bacb53dde55 Mon Sep 17 00:00:00 2001 From: "enrico.eth" <85900164+enricobottazzi@users.noreply.github.com> Date: Fri, 15 Dec 2023 05:57:33 +0100 Subject: [PATCH] `MerkleSumTree` version improvements (#230) Co-authored-by: sifnoc Co-authored-by: Alex Kuzmin Co-authored-by: ntampakas --- .github/scripts/wakeup.sh | 18 + .github/workflows/rust.yml | 40 +- backend/Cargo.lock | 1 + backend/Cargo.toml | 5 +- backend/README.md | 66 +- backend/build.rs | 5 - backend/examples/summa_solvency_flow.rs | 48 +- ...ntracts.sh => update_verifier_contract.sh} | 10 +- backend/src/apis/csv/assets.csv | 3 - backend/src/apis/csv_parser.rs | 67 +- backend/src/apis/mod.rs | 25 + backend/src/apis/round.rs | 163 +- .../src/contracts/abi/InclusionVerifier.json | 2 +- .../src/contracts/abi/SolvencyVerifier.json | 1 - backend/src/contracts/abi/Summa.json | 2 +- backend/src/contracts/deployments.json | 2 +- .../contracts/generated/inclusion_verifier.rs | 19765 ++++---- backend/src/contracts/generated/mod.rs | 1 - .../contracts/generated/solvency_verifier.rs | 41185 ---------------- .../src/contracts/generated/summa_contract.rs | 15554 +++--- backend/src/contracts/signer.rs | 25 +- backend/src/lib.rs | 1 + backend/src/tests.rs | 168 +- contracts/README.md | 37 +- contracts/scripts/deploy.ts | 16 +- contracts/src/InclusionVerifier.sol | 4 +- contracts/src/InclusionVerifier.yul | 1842 +- contracts/src/SolvencyVerifier.sol | 11 - contracts/src/SolvencyVerifier.yul | 1418 - contracts/src/Summa.sol | 186 +- contracts/test/Summa.ts | 298 +- csv/entry_13.csv | 14 + csv/entry_16.csv | 17 + csv/entry_16_bigints.csv | 17 + csv/entry_16_modified.csv | 17 + csv/entry_16_overflow.csv | 17 + csv/entry_16_switched_order.csv | 17 + csv/entry_17.csv | 19 + {backend/src/apis/csv => csv}/signatures.csv | 0 .../examples => csv}/states/entry_16_1.csv | 0 .../examples => csv}/states/entry_16_2.csv | 0 .../examples => csv}/states/entry_16_3.csv | 0 .../examples => csv}/states/entry_16_4.csv | 0 .../examples => csv}/states/entry_16_5.csv | 0 zk_prover/README.md | 89 +- zk_prover/benches/full_solvency_flow.rs | 191 +- .../commitment_solidity_calldata.json | 7 + zk_prover/examples/gen_commitment.rs | 41 + zk_prover/examples/gen_inclusion_proof.rs | 77 + zk_prover/examples/gen_inclusion_verifier.rs | 76 +- zk_prover/examples/gen_solvency_verifier.rs | 86 - .../inclusion_proof_solidity_calldata.json | 8 +- .../examples/nova_incremental_verifier.rs | 42 +- .../solvency_proof_solidity_calldata.json | 8 - zk_prover/prints/mst-inclusion-layout.png | Bin 1759345 -> 1846594 bytes .../src/chips/less_than_check/lt_check.rs | 135 - zk_prover/src/chips/less_than_check/mod.rs | 2 - zk_prover/src/chips/less_than_check/tests.rs | 231 - zk_prover/src/chips/merkle_sum_tree.rs | 85 +- zk_prover/src/chips/mod.rs | 1 - .../src/chips/poseidon/poseidon_params.rs | 15 +- zk_prover/src/chips/range/range_check.rs | 36 +- zk_prover/src/chips/range/tests.rs | 22 +- .../circom/incremental_mst_inclusion.circom | 18 +- zk_prover/src/circom/merkle_sum_tree.circom | 112 +- zk_prover/src/circuits/merkle_sum_tree.rs | 390 +- zk_prover/src/circuits/mod.rs | 1 - zk_prover/src/circuits/solvency.rs | 357 - zk_prover/src/circuits/tests.rs | 560 +- zk_prover/src/circuits/traits.rs | 22 +- zk_prover/src/circuits/types.rs | 6 + zk_prover/src/circuits/utils.rs | 15 +- zk_prover/src/lib.rs | 2 +- .../src/merkle_sum_tree/csv/entry_16.csv | 17 - .../merkle_sum_tree/csv/entry_16_bigints.csv | 17 - .../merkle_sum_tree/csv/entry_16_modified.csv | 17 - .../csv/entry_16_no_overflow.csv | 17 - .../merkle_sum_tree/csv/entry_16_overflow.csv | 17 - .../csv/entry_16_overflow_2.csv | 17 - .../csv/entry_16_switched_order.csv | 17 - zk_prover/src/merkle_sum_tree/entry.rs | 30 +- zk_prover/src/merkle_sum_tree/mod.rs | 25 +- zk_prover/src/merkle_sum_tree/mst.rs | 218 +- zk_prover/src/merkle_sum_tree/node.rs | 130 +- zk_prover/src/merkle_sum_tree/tests.rs | 245 +- zk_prover/src/merkle_sum_tree/tree.rs | 185 + .../src/merkle_sum_tree/utils/build_tree.rs | 72 +- .../src/merkle_sum_tree/utils/create_proof.rs | 43 - .../src/merkle_sum_tree/utils/csv_parser.rs | 80 +- .../utils/generate_leaf_hash.rs | 19 - zk_prover/src/merkle_sum_tree/utils/hash.rs | 36 - .../src/merkle_sum_tree/utils/index_of.rs | 17 - zk_prover/src/merkle_sum_tree/utils/mod.rs | 12 +- .../utils/proof_verification.rs | 36 - 94 files changed, 22819 insertions(+), 62170 deletions(-) create mode 100755 .github/scripts/wakeup.sh rename backend/scripts/{update_verifier_contracts.sh => update_verifier_contract.sh} (63%) mode change 100644 => 100755 delete mode 100644 backend/src/apis/csv/assets.csv delete mode 100644 backend/src/contracts/abi/SolvencyVerifier.json delete mode 100644 backend/src/contracts/generated/solvency_verifier.rs delete mode 100644 contracts/src/SolvencyVerifier.sol delete mode 100644 contracts/src/SolvencyVerifier.yul create mode 100644 csv/entry_13.csv create mode 100644 csv/entry_16.csv create mode 100644 csv/entry_16_bigints.csv create mode 100644 csv/entry_16_modified.csv create mode 100644 csv/entry_16_overflow.csv create mode 100644 csv/entry_16_switched_order.csv create mode 100644 csv/entry_17.csv rename {backend/src/apis/csv => csv}/signatures.csv (100%) rename {zk_prover/examples => csv}/states/entry_16_1.csv (100%) rename {zk_prover/examples => csv}/states/entry_16_2.csv (100%) rename {zk_prover/examples => csv}/states/entry_16_3.csv (100%) rename {zk_prover/examples => csv}/states/entry_16_4.csv (100%) rename {zk_prover/examples => csv}/states/entry_16_5.csv (100%) create mode 100644 zk_prover/examples/commitment_solidity_calldata.json create mode 100644 zk_prover/examples/gen_commitment.rs create mode 100644 zk_prover/examples/gen_inclusion_proof.rs delete mode 100644 zk_prover/examples/gen_solvency_verifier.rs delete mode 100644 zk_prover/examples/solvency_proof_solidity_calldata.json delete mode 100644 zk_prover/src/chips/less_than_check/lt_check.rs delete mode 100644 zk_prover/src/chips/less_than_check/mod.rs delete mode 100644 zk_prover/src/chips/less_than_check/tests.rs delete mode 100644 zk_prover/src/circuits/solvency.rs delete mode 100644 zk_prover/src/merkle_sum_tree/csv/entry_16.csv delete mode 100644 zk_prover/src/merkle_sum_tree/csv/entry_16_bigints.csv delete mode 100644 zk_prover/src/merkle_sum_tree/csv/entry_16_modified.csv delete mode 100644 zk_prover/src/merkle_sum_tree/csv/entry_16_no_overflow.csv delete mode 100644 zk_prover/src/merkle_sum_tree/csv/entry_16_overflow.csv delete mode 100644 zk_prover/src/merkle_sum_tree/csv/entry_16_overflow_2.csv delete mode 100644 zk_prover/src/merkle_sum_tree/csv/entry_16_switched_order.csv create mode 100644 zk_prover/src/merkle_sum_tree/tree.rs delete mode 100644 zk_prover/src/merkle_sum_tree/utils/create_proof.rs delete mode 100644 zk_prover/src/merkle_sum_tree/utils/generate_leaf_hash.rs delete mode 100644 zk_prover/src/merkle_sum_tree/utils/hash.rs delete mode 100644 zk_prover/src/merkle_sum_tree/utils/index_of.rs delete mode 100644 zk_prover/src/merkle_sum_tree/utils/proof_verification.rs diff --git a/.github/scripts/wakeup.sh b/.github/scripts/wakeup.sh new file mode 100755 index 00000000..e8302270 --- /dev/null +++ b/.github/scripts/wakeup.sh @@ -0,0 +1,18 @@ +#!/bin/bash +set -e + +runner="i-0e04845bff4576909" + +while true; do + runner_status=$(aws ec2 describe-instances --instance-ids $runner --query "Reservations[*].Instances[*].State.[Name]" --output text) + if [ $runner_status = "stopped" ]; then + aws ec2 start-instances --instance-ids $runner + break + elif [ $runner_status = "running" ]; then + break + else + sleep 5 + fi +done + +exit 0 diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 33a8b1b6..16e92c7f 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -6,16 +6,43 @@ on: pull_request: branches: ["*"] +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + env: CARGO_TERM_COLOR: always jobs: - build: + wakeup: runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + + steps: + - uses: actions/checkout@v3 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + role-to-assume: arn:aws:iam::490752553772:role/summa-solvency-ec2-slc + role-duration-seconds: 900 + aws-region: us-west-2 + + - name: Wakeup runner + run: .github/scripts/wakeup.sh + + build: + runs-on: [summa-solvency-runner] + needs: [wakeup] steps: - uses: actions/checkout@v3 + - name: Set Environment + run: echo "PATH=/home/ubuntu/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" >> "$GITHUB_ENV" + - name: Install solc run: (hash svm 2>/dev/null || cargo install --version 0.2.23 svm-rs) && svm install 0.8.20 && solc --version @@ -24,23 +51,24 @@ jobs: cd zk_prover cargo test --release --features dev-graph -- --nocapture - - name: Test Nova Prover + - name: Test Zk Prover examples run: | cd zk_prover + cargo run --release --example gen_inclusion_verifier + cargo run --release --example gen_commitment + cargo run --release --example gen_inclusion_proof cargo run --release --example nova_incremental_verifier - name: Install Foundry uses: foundry-rs/foundry-toolchain@v1 - name: Test backend - env: - SIGNATURE_VERIFICATION_MESSAGE: "Summa proof of solvency for CryptoExchange" run: | cd backend cargo test --release -- --nocapture - - name: Test example + - name: Test backend example run: | cd backend cargo run --release --example summa_solvency_flow - \ No newline at end of file + diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 67b7408b..a3cdd3ca 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -3766,6 +3766,7 @@ dependencies = [ "futures", "halo2_proofs", "num-bigint 0.4.3", + "num-traits", "reqwest", "serde", "serde_json", diff --git a/backend/Cargo.toml b/backend/Cargo.toml index eec1ddec..6afe132b 100644 --- a/backend/Cargo.toml +++ b/backend/Cargo.toml @@ -13,12 +13,13 @@ futures = "0.3.28" num-bigint = "0.4.3" serde = { version = "1.0.166", features = ["derive"] } snark-verifier-sdk = { git = "https://github.com/privacy-scaling-explorations/snark-verifier", version = "0.1.1" } -ethers = { version = "2.0.7", default-features = false, features = ["ethers-solc"] } +ethers = { version = "2.0.7", default-features = false, features = ["ethers-solc", "legacy"] } reqwest = { version = "0.11", features = ["json"] } serde_json = "1.0.64" tokio = { version = "1.7.1", features = ["full"] } base64 = "0.13" bincode = "1.3.3" +num-traits = "0.2.14" [build-dependencies] -ethers = { version = "2.0.7", default-features = false, features = ["ethers-solc"] } +ethers = { version = "2.0.7", default-features = false, features = ["ethers-solc", "legacy"] } diff --git a/backend/README.md b/backend/README.md index 3f04ef51..19b6aaa6 100644 --- a/backend/README.md +++ b/backend/README.md @@ -6,13 +6,14 @@ This directory contains the backend implementation for the Summa Proof of Solven ### Round -The `Round` component represents a specific period or cycle in the Summa Proof of Solvency protocol. It encapsulates the state of the system at a given time, including the snapshot of assets and liabilities, as well as the associated proofs. - The `Round` struct integrates with the `Snapshot` and `SummaSigner` to facilitate the generation and submission of proofs to the contract. +The `Round` component represents a specific period or cycle in the Summa Proof of Solvency protocol. It encapsulates the state of the system at a given time, including the snapshot of assets and liabilities, as well as the associated proofs. +The `Round` struct integrates with the `Snapshot` and `SummaSigner` to facilitate the generation and submission of proofs to the contract. Key Features: + - Initialization of a new round with specific parameters. - Building a snapshot of the current state. -- Dispatching solvency proofs to the contract. +- Submitting commitment to the contract. - Retrieving proofs of inclusion for specific users. ### AddressOwnership @@ -20,6 +21,7 @@ Key Features: The `AddressOwnership` component is responsible for managing and verifying the ownership of addresses. It ensures that addresses used in the protocol owned by the respective participants. This component interacts with the `SummaSigner` to submit proofs of address ownership to on-chain. Key Features: + - Initialization with specific signer details. - Dispatching proofs of address ownership to the contract. @@ -41,26 +43,26 @@ To build the binary executable and test it ``` cargo build -SIGNATURE_VERIFICATION_MESSAGE="Summa proof of solvency for CryptoExchange" cargo test --release -- --nocapture +cargo test --release -- --nocapture ``` ## Important Notices -### Generating and updating verifier contracts for Backend +### Generating and updating verifier contract for Backend + +The verifier contract in the backend were generated using a predefined set of parameters: `N_CURRENCIES = 2` and `N_BYTES=14`, as indicated [here](https://github.com/summa-dev/summa-solvency/blob/master/zk_prover/examples/gen_inclusion_verifier.rs#L21-L22). +If you intend to work with different parameters, you'll need to adjust these hard-coded values and then generate new verifier contract. -The verifier contracts in the backend were generated using a predefined set of parameters: `N_ASSETS = 2` and `N_BYTES=14`, as indicated [here](https://github.com/summa-dev/summa-solvency/blob/master/zk_prover/examples/gen_solvency_verifier.rs#L21-L22). -If you intend to work with different parameters, you'll need to adjust these hard-coded values and then generate new verifier contracts. - -The process described below assists in both generating the verifiers and updating the Summa contract, which integrates the new verifiers as constructors. +The process described below assists in both generating the verifier and updating the Summa contract, which integrates the new verifier as constructors. #### Using the Bash Script -We have provided a bash script to automate the process of updating the verifier contracts and the Summa contract. To use the script: +We have provided a bash script to automate the process of updating the verifier contract and the Summa contract. To use the script: Ensure you have the necessary permissions to execute the script. ``` -backend $ chmod +x scripts/update_verifier_contracts.sh +backend $ scripts/update_verifier_contract.sh ``` ## Summa solvency flow example @@ -91,26 +93,19 @@ If executed successfully, you'll see: 1. Ownership proofs are submitted successfully! ``` +### 2. Submit Commitment -### 2. Submit Proof of Solvency +The CEX must submit a commitment to the Summa contract for each round. This commitment consists of a `timestamp`, the root hash of the Merkle Sum Tree (`mst_root`), and `balances`. -This step is also crucial for two primary reasons: - - first, to validate the root hash of the Merkle Sum Tree (`mst_root`); and second, to ensure that the assets held by the CEX exceed their liabilities, as confirmed through the proof verification on the Summa contract. -The CEX must submit this proof of solvency to the Summa contract. +Without publishing the commitment, users cannot verify their inclusion proof on the Summa contract. This is because the inclusion verifier function internally requires the `mst_root`, but users only know the `timestamp` associated with the round and the verifier functions does not requre `mst_root` directly. - Currently, it's a mandatory requirement to provide this proof before generating the inclusion proof for each user in the current round. - -Without this verification, It seems the user may not trust to the inclusion proof for the round. becuase the `mst_root` is not published on contract. More specifically, it means that the `mst_root` is not correctly verified on the Summa contract. - -In here, we'll introduce you through the process of submitting a solvency proof using the `Round` to the Summa contract. +In here, we'll introduce you through the process of submitting a commitment using the `Round` to the Summa contract. The Round serves as the core of the backend in Summa, and we have briefly described it in the Components section. -To initialize the `Round` instance, you'll need paths to specific CSV files (`assets.csv` and `entry_16.csv`) and the `ptau/hermez-raw-11` file. Here's what each file does: +To initialize the `Round` instance, you'll need paths to the liabilities CSV file (`entry_16.csv`) and the `ptau/hermez-raw-11` file. The files serve the following purpose: -- `assets.csv`: Calculates the total balance of assets for the solvency proof. Only the CEX can generate this file. -- `entry_16.csv`: Used to build the Merkle sum tree, with each leaf element derived from sixteen entries in the CSV. -- `ptau/hermez-raw-11`: Contains parameters for constructing the zk circuits. +- `entry_16.csv`: contains the username and liabilities entries for each CEX user (necessary to build the commitment). Liabilities column names have the following format: `balance__`, where and are the names of the cryptocurrencies and their corresponding blockchains. values are the same as in the Address Ownership Proof step; +- `ptau/hermez-raw-11`: contains parameters for constructing the zk circuits. Using the `Round` instance, the solvency proof is dispatched to the Summa contract with the `dispatch_solvency_proof` method. @@ -138,27 +133,20 @@ This is the final step in the Summa process and the only part that occurs on the Users receive the proof for a specific round and use methods available on the deployed Summa contract. Importantly, the Summa contract verifier function is a view function, meaning it doesn't consume gas or change the blockchain's state. -In this step, you'll see: +In this step, the user has to: -- Retrieve the `mst_root` from the Summa contract and match it with the `root_hash` in the proof. -- Ensure the `leaf_hash` aligns with the hash based on the `username` and `balances` provided by the CEX. -- Use the `verify_inclusion_proof` method on the Summa contract to validate the proof. +- Ensure the `leaf_hash` (public input of the proof) aligns with the Poseidon hash of the `username` and `balances` provided by the CEX. +- Submit the proof to the `verify_inclusion_proof` method on the Summa contract Which will: + - Retrieve the `mstRoot` from the Summa contract and match it with the `root_hash` in the proof. + - Retrieve the `rootBalances` from the Summa contract and match it with the `root_balances` in the proof + - Verify the zk Proof The result will display as: + ``` 4. Verifying the proof on contract verifier for User #0: true ``` -### 4. Verify Proof of Inclusion - -This is the final step in the Summa process and the only part that occurs on the user side. Users receive the proof for a specific round and use methods available on the deployed Summa contract. Importantly, the Summa contract verifier function is a view function, meaning it doesn't consume gas or change the blockchain's state. - -In this step, you'll see: -- Retrieve the `mst_root` from the Summa contract and match it with the `root_hash` in the proof. -- Ensure the `leaf_hash` aligns with the hash based on the `username` and `balances` provided by the CEX. -- Use the `verify_inclusion_proof` method on the Summa contract to validate the proof. -The result will display as: - **Note:** In a production environment, users can independently verify their proof using public interfaces, such as Etherscan, as shown below: ![Summa contract interface on Etherscan](summa_verifier_interface.png) This offers an added layer of transparency and trust. diff --git a/backend/build.rs b/backend/build.rs index 6d3cc39d..0cc6e4a4 100644 --- a/backend/build.rs +++ b/backend/build.rs @@ -8,11 +8,6 @@ fn main() { "Summa", "Summa", ), - ( - "src/contracts/generated/solvency_verifier.rs", - "SolvencyVerifier", - "SolvencyVerifier", - ), ( "src/contracts/generated/inclusion_verifier.rs", "InclusionVerifier", diff --git a/backend/examples/summa_solvency_flow.rs b/backend/examples/summa_solvency_flow.rs index be26bb2b..6093f41d 100644 --- a/backend/examples/summa_solvency_flow.rs +++ b/backend/examples/summa_solvency_flow.rs @@ -7,14 +7,15 @@ use serde_json::{from_reader, to_string_pretty}; use summa_backend::{ apis::{ address_ownership::AddressOwnership, + leaf_hash_from_inputs, round::{MstInclusionProof, Round}, }, contracts::signer::{AddressInput, SummaSigner}, tests::initialize_test_env, }; -use summa_solvency::merkle_sum_tree::utils::generate_leaf_hash; +use summa_solvency::merkle_sum_tree::MerkleSumTree; -const N_ASSETS: usize = 2; +const N_CURRENCIES: usize = 2; const USER_INDEX: usize = 0; #[tokio::main] @@ -24,14 +25,16 @@ async fn main() -> Result<(), Box> { // 1. Submit ownership proof // - // Each CEX prepares its own `signature` CSV file. - let signature_csv_path = "src/apis/csv/signatures.csv"; - // The signer instance would be shared with `address_ownership` and `round` instances // - // Using AddressInput::Address to directly provide the summa_contract's address. - // For deployed contracts, if the address is stored in a config file, - // you can alternatively use AddressInput::Path to specify the file's path. + // Using `AddressInput::Address`` to directly provide the summa_contract's address. + // + // If the address of a deployed contract is stored in a configuration file, + // you can use `AddressInput::Path` to provide the path to that file. + // + // For example, if the contract address is in "backend/src/contracts/deployments.json" located + // you would use `AddressInput::Path` as follows:`AddressInput::Path("backend/src/contracts/deployments.json".to_string())`. + // let signer = SummaSigner::new( "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80", anvil.endpoint().as_str(), @@ -39,6 +42,8 @@ async fn main() -> Result<(), Box> { ) .await?; + // Each CEX prepares its own `signature` CSV file. + let signature_csv_path = "../csv/signatures.csv"; let mut address_ownership_client = AddressOwnership::new(&signer, signature_csv_path).unwrap(); // Dispatch the proof of address ownership. @@ -49,22 +54,21 @@ async fn main() -> Result<(), Box> { println!("1. Ownership proofs are submitted successfully!"); - // 2. Submit solvency proof + // 2. Submit Commitment // - // Initialize the `Round` instance to submit the proof of solvency. - let asset_csv = "src/apis/csv/assets.csv"; - let entry_csv = "../zk_prover/src/merkle_sum_tree/csv/entry_16.csv"; + // Initialize the `Round` instance to submit the liability commitment. let params_path = "ptau/hermez-raw-11"; + let entry_csv = "../csv/entry_16.csv"; + let mst = MerkleSumTree::from_csv(entry_csv).unwrap(); - // Using the `round` instance, the solvency proof is dispatched to the Summa contract with the `dispatch_solvency_proof` method. + // Using the `round` instance, the commitment is dispatched to the Summa contract with the `dispatch_commitment` method. let timestamp = 1u64; - let mut round = - Round::<4, 2, 14>::new(&signer, entry_csv, asset_csv, params_path, timestamp).unwrap(); + let mut round = Round::<4, 2, 14>::new(&signer, Box::new(mst), params_path, timestamp).unwrap(); - // Sends the solvency proof, which should ideally complete without errors. - round.dispatch_solvency_proof().await?; + // Sends the commitment, which should ideally complete without errors. + round.dispatch_commitment().await?; - println!("2. Solvency proof is submitted successfully!"); + println!("2. Commitment is submitted successfully!"); // 3. Generate Inclusion Proof // @@ -100,19 +104,19 @@ async fn main() -> Result<(), Box> { // It's assumed that both `user_name` and `balances` are provided by the CEX. // The `balances` represent the user's balances on the CEX at `snapshot_time`. let user_name = "dxGaEAii".to_string(); - let balances = vec![11888, 41163]; + let balances = vec!["11888".to_string(), "41163".to_string()]; let leaf_hash = public_inputs[0]; assert_eq!( leaf_hash, - generate_leaf_hash::(user_name.clone(), balances.clone()) + leaf_hash_from_inputs::(user_name.clone(), balances.clone()) ); // Get `mst_root` from contract. the `mst_root` is disptached by CEX with specific time `snapshot_time`. - let mst_root = summa_contract.mst_roots(snapshot_time).call().await?; + let commitment = summa_contract.commitments(snapshot_time).call().await?; // Match the `mst_root` with the `root_hash` derived from the proof. - assert_eq!(mst_root, public_inputs[1]); + assert_eq!(commitment, public_inputs[1]); // Validate the inclusion proof using the contract verifier. let proof = inclusion_proof.get_proof(); diff --git a/backend/scripts/update_verifier_contracts.sh b/backend/scripts/update_verifier_contract.sh old mode 100644 new mode 100755 similarity index 63% rename from backend/scripts/update_verifier_contracts.sh rename to backend/scripts/update_verifier_contract.sh index 4e5c8eec..ec0af6bd --- a/backend/scripts/update_verifier_contracts.sh +++ b/backend/scripts/update_verifier_contract.sh @@ -5,10 +5,14 @@ set -e echo "1. Building verifier contracts" cd ../zk_prover cargo run --release --example gen_inclusion_verifier -cargo run --release --example gen_solvency_verifier + +# Generate Commitment for Merkle Sum Tree +echo "2. Generate Commitment for Merkle Sum Tree" +cd ../zk_prover +cargo run --release --example gen_commitment # Deploy contracts to local environment -echo "2. Deploying contracts to local environment" +echo "3. Deploying contracts to local environment" cd ../contracts npm install npx hardhat node & @@ -17,7 +21,7 @@ sleep 5 npx hardhat run scripts/deploy.ts --network localhost # Generate interface files for Backend -echo "3. Generating interface files for Backend" +echo "4. Generating interface files for Backend" cd ../backend cargo build diff --git a/backend/src/apis/csv/assets.csv b/backend/src/apis/csv/assets.csv deleted file mode 100644 index bb2e38f0..00000000 --- a/backend/src/apis/csv/assets.csv +++ /dev/null @@ -1,3 +0,0 @@ -chain;asset_name;amount -ETH;ETH;556863 -ETH;USDT;556863 diff --git a/backend/src/apis/csv_parser.rs b/backend/src/apis/csv_parser.rs index 3bde75e1..672fd14d 100644 --- a/backend/src/apis/csv_parser.rs +++ b/backend/src/apis/csv_parser.rs @@ -1,12 +1,9 @@ use std::{error::Error, fs::File, path::Path}; -use ethers::{ - abi::AbiEncode, - types::{Bytes, U256}, -}; +use ethers::{abi::AbiEncode, types::Bytes}; use serde::{Deserialize, Serialize}; -use crate::contracts::generated::summa_contract::{AddressOwnershipProof, Asset}; +use crate::contracts::generated::summa_contract::AddressOwnershipProof; #[derive(Debug, Deserialize, Serialize)] pub struct SignatureRecord { @@ -49,48 +46,13 @@ pub fn parse_signature_csv>( Ok(address_ownership_proofs) } -#[derive(Debug, Deserialize)] -struct AssetRecord { - chain: String, - asset_name: String, - amount: String, -} - -pub fn parse_asset_csv, const N_ASSETS: usize>( - path: P, -) -> Result<[Asset; N_ASSETS], Box> { - let file = File::open(path)?; - let mut rdr = csv::ReaderBuilder::new().delimiter(b';').from_reader(file); - - let mut assets_vec = Vec::with_capacity(N_ASSETS); - - for result in rdr.deserialize() { - let record: AssetRecord = result?; - - assets_vec.push(Asset { - asset_name: record.asset_name, - chain: record.chain, - amount: U256::from_dec_str(&record.amount)?, - }); - } - - let assets_array: [Asset; N_ASSETS] = assets_vec.try_into().map_err(|v: Vec| { - format!( - "The number of assets in CSV file does not match the expected count {:?}", - v - ) - })?; - - Ok(assets_array) -} - #[cfg(test)] mod tests { use super::*; #[test] fn test_parse_csv_to_signature() { - let path = "src/apis/csv/signatures.csv"; + let path = "../csv/signatures.csv"; let address_ownership = parse_signature_csv(path).unwrap(); let first_address_ownership = AddressOwnershipProof { @@ -103,27 +65,4 @@ mod tests { assert_eq!(address_ownership[0], first_address_ownership); } - - #[test] - fn test_parse_csv_to_assets() { - let path = "src/apis/csv/assets.csv"; - let assets = parse_asset_csv::<&str, 2>(path).unwrap(); - - assert_eq!( - assets[0], - Asset { - chain: "ETH".to_string(), - asset_name: "ETH".to_string(), - amount: U256::from(556863), - } - ); - assert_eq!( - assets[1], - Asset { - chain: "ETH".to_string(), - asset_name: "USDT".to_string(), - amount: U256::from(556863), - } - ); - } } diff --git a/backend/src/apis/mod.rs b/backend/src/apis/mod.rs index 82fca001..8cdc087b 100644 --- a/backend/src/apis/mod.rs +++ b/backend/src/apis/mod.rs @@ -1,3 +1,28 @@ pub mod address_ownership; pub mod csv_parser; pub mod round; + +use ethers::types::U256; +use num_bigint::BigUint; +use num_traits::Num; +use summa_solvency::merkle_sum_tree::Entry; + +pub fn leaf_hash_from_inputs( + username: String, + balances: Vec, +) -> U256 +where + [usize; N_CURRENCIES + 1]: Sized, +{ + // Convert balances to BigUint + let balances: Vec = balances + .iter() + .map(|balance| BigUint::from_str_radix(balance, 10).unwrap()) + .collect(); + + let entry: Entry = Entry::new(username, balances.try_into().unwrap()).unwrap(); + + // Convert Fp to U256 + let hash_str = format!("{:?}", entry.compute_leaf().hash); + U256::from_str_radix(&hash_str, 16).unwrap() +} diff --git a/backend/src/apis/round.rs b/backend/src/apis/round.rs index d986bb9c..865006ad 100644 --- a/backend/src/apis/round.rs +++ b/backend/src/apis/round.rs @@ -1,21 +1,19 @@ use ethers::types::{Bytes, U256}; use halo2_proofs::{ - halo2curves::bn256::{Bn256, Fr as Fp, G1Affine}, + halo2curves::bn256::{Bn256, G1Affine}, plonk::{ProvingKey, VerifyingKey}, poly::kzg::commitment::ParamsKZG, }; use serde::{Deserialize, Serialize}; use std::error::Error; -use super::csv_parser::parse_asset_csv; -use crate::contracts::{generated::summa_contract::summa::Asset, signer::SummaSigner}; +use crate::contracts::{generated::summa_contract::summa::Cryptocurrency, signer::SummaSigner}; use summa_solvency::{ circuits::{ merkle_sum_tree::MstInclusionCircuit, - solvency::SolvencyCircuit, utils::{gen_proof_solidity_calldata, generate_setup_artifacts}, }, - merkle_sum_tree::MerkleSumTree, + merkle_sum_tree::Tree, }; pub(crate) type SetupArtifacts = ( @@ -24,22 +22,6 @@ pub(crate) type SetupArtifacts = ( VerifyingKey, ); -#[derive(Debug, Clone)] -pub struct SolvencyProof { - public_inputs: Vec, - proof_calldata: Bytes, -} - -impl SolvencyProof { - pub fn get_public_inputs(&self) -> &Vec { - &self.public_inputs - } - - pub fn get_proof_calldata(&self) -> &Bytes { - &self.proof_calldata - } -} - #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MstInclusionProof { public_inputs: Vec, @@ -56,39 +38,35 @@ impl MstInclusionProof { } } -pub struct Snapshot { - mst: MerkleSumTree, - assets_state: [Asset; N_ASSETS], - trusted_setup: [SetupArtifacts; 2], +pub struct Snapshot { + pub mst: Box>, + trusted_setup: SetupArtifacts, } -pub struct Round<'a, const LEVELS: usize, const N_ASSETS: usize, const N_BYTES: usize> { +pub struct Round<'a, const LEVELS: usize, const N_CURRENCIES: usize, const N_BYTES: usize> { timestamp: u64, - snapshot: Snapshot, + snapshot: Snapshot, signer: &'a SummaSigner, } -impl - Round<'_, LEVELS, N_ASSETS, N_BYTES> +impl + Round<'_, LEVELS, N_CURRENCIES, N_BYTES> where - [usize; N_ASSETS + 1]: Sized, - [usize; 2 * (1 + N_ASSETS)]: Sized, + [usize; N_CURRENCIES + 1]: Sized, + [usize; N_CURRENCIES + 2]: Sized, { pub fn new<'a>( signer: &'a SummaSigner, - entry_csv_path: &str, - asset_csv_path: &str, + mst: Box>, params_path: &str, timestamp: u64, - ) -> Result, Box> { + ) -> Result, Box> + where + [(); N_CURRENCIES + 2]: Sized, + { Ok(Round { timestamp, - snapshot: Snapshot::::new( - asset_csv_path, - entry_csv_path, - params_path, - ) - .unwrap(), + snapshot: Snapshot::::new(mst, params_path).unwrap(), signer: &signer, }) } @@ -97,17 +75,33 @@ where self.timestamp } - pub async fn dispatch_solvency_proof(&mut self) -> Result<(), Box> { - let proof: SolvencyProof = match self.snapshot.generate_proof_of_solvency() { - Ok(p) => p, - Err(e) => return Err(format!("Failed to generate proof of solvency: {}", e).into()), - }; + pub async fn dispatch_commitment(&mut self) -> Result<(), Box> { + let root_str = format!("{:?}", self.snapshot.mst.root().hash); + let mst_root = U256::from_str_radix(&root_str, 16).unwrap(); + + let mut root_sums = Vec::::new(); + + for balance in self.snapshot.mst.root().balances.iter() { + let fp_str = format!("{:?}", balance); + root_sums.push(U256::from_str_radix(&fp_str, 16).unwrap()); + } self.signer - .submit_proof_of_solvency( - proof.public_inputs[0], - self.snapshot.assets_state.to_vec(), - proof.proof_calldata, + .submit_commitment( + mst_root, + root_sums, + self.snapshot + .mst + .cryptocurrencies() + .iter() + .map(|cryptocurrency| Cryptocurrency { + name: cryptocurrency.name.clone(), + chain: cryptocurrency.chain.clone(), + }) + .collect::>() + .as_slice() + .try_into() + .unwrap(), U256::from(self.get_timestamp()), ) .await?; @@ -118,7 +112,10 @@ where pub fn get_proof_of_inclusion( &self, user_index: usize, - ) -> Result { + ) -> Result + where + [(); N_CURRENCIES + 2]: Sized, + { Ok(self .snapshot .generate_proof_of_inclusion(user_index) @@ -126,22 +123,18 @@ where } } -impl - Snapshot +impl + Snapshot where - [usize; N_ASSETS + 1]: Sized, - [usize; 2 * (1 + N_ASSETS)]: Sized, + [usize; N_CURRENCIES + 1]: Sized, + [usize; N_CURRENCIES + 2]: Sized, { pub fn new( - asset_csv_path: &str, - entry_csv_path: &str, + mst: Box>, params_path: &str, - ) -> Result, Box> { - let assets_state = parse_asset_csv::<&str, N_ASSETS>(asset_csv_path).unwrap(); - let mst = MerkleSumTree::::new(entry_csv_path).unwrap(); - - let mst_inclusion_circuit = MstInclusionCircuit::::init_empty(); - let solvency_circuit = SolvencyCircuit::::init_empty(); + ) -> Result, Box> { + let mst_inclusion_circuit = + MstInclusionCircuit::::init_empty(); // get k from ptau file name let parts: Vec<&str> = params_path.split("-").collect(); @@ -151,54 +144,26 @@ where let mst_inclusion_setup_artifacts: SetupArtifacts = generate_setup_artifacts(k, Some(params_path), mst_inclusion_circuit).unwrap(); - let solvency_setup_artifacts_artifacts = - generate_setup_artifacts(10, Some(params_path), solvency_circuit).unwrap(); - - let trusted_setup = [ - mst_inclusion_setup_artifacts, - solvency_setup_artifacts_artifacts, - ]; - Ok(Snapshot { mst, - assets_state, - trusted_setup, - }) - } - - pub fn generate_proof_of_solvency(&self) -> Result { - let asset_sums = self - .assets_state - .iter() - .map(|asset| Fp::from_raw(asset.amount.0) as Fp) - .collect::>() - .try_into() - .unwrap(); - let circuit = SolvencyCircuit::::init(self.mst.clone(), asset_sums); - - let calldata = gen_proof_solidity_calldata( - &self.trusted_setup[1].0, - &self.trusted_setup[1].1, - circuit, - ); - - Ok(SolvencyProof { - proof_calldata: calldata.0, - public_inputs: calldata.1, + trusted_setup: mst_inclusion_setup_artifacts, }) } pub fn generate_proof_of_inclusion( &self, user_index: usize, - ) -> Result { - let circuit = - MstInclusionCircuit::::init(self.mst.clone(), user_index); + ) -> Result + where + [(); N_CURRENCIES + 2]: Sized, + { + let merkle_proof = self.mst.generate_proof(user_index).unwrap(); + let circuit = MstInclusionCircuit::::init(merkle_proof); // Currently, default manner of generating a inclusion proof for solidity-verifier. let calldata = gen_proof_solidity_calldata( - &self.trusted_setup[0].0, - &self.trusted_setup[0].1, + &self.trusted_setup.0, + &self.trusted_setup.1, circuit.clone(), ); diff --git a/backend/src/contracts/abi/InclusionVerifier.json b/backend/src/contracts/abi/InclusionVerifier.json index e752b6e8..3ac0da95 100644 --- a/backend/src/contracts/abi/InclusionVerifier.json +++ b/backend/src/contracts/abi/InclusionVerifier.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"pubInputs","type":"uint256[]"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50615467806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e366004615329565b610057565b604051901515815260200160405180910390f35b60006001610063615252565b6000805160206154128339815191526100d9565b6000805160206153f283398151915280831081831016908380096000805160206153f28339815191528384096000805160206153f283398151915284820990506000805160206153f28339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301527f2df16218a82d39831071e46956c233ee9aa79bb065b265871080d8643f2f52ab600083015260208501518060608401526040860151806080850152846101388284610077565b169450505060608501518060a084015260808601518060c08501528461015e8284610077565b169450505060a08501518060e084015260c086015180610100850152846101858284610077565b16945050506101206000830120610120830152610120820151818106610140840152806101608401525060e085015180610180840152610100860151806101a0850152846101d38284610077565b1694505050610120850151806101c0840152610140860151806101e0850152846101fd8284610077565b60a061016087012061020087018190528581066102208801526102408701521694506001915050610260830153602161024083012061026083018190528181066102808401526102a08301526101608501516102c083018190526101808601516102e08401819052846102708284610077565b16945050506101a0850151806103008401526101c0860151806103208501528461029a8284610077565b16945050506101e08501518061034084015261020086015180610360850152846102c48284610077565b169450505061022085015180610380840152610240860151806103a0850152846102ee8284610077565b16945050506101206102a08301206103c08301526103c08201518181066103e0840152806104008401525061026085015180610420840152610280860151806104408501528461033e8284610077565b16945050506102a0850151806104608401526102c086015180610480850152846103688284610077565b16945050506102e0850151806104a0840152610300860151806104c0850152846103928284610077565b1694505050610320850151806104e084015261034086015180610500850152846103bc8284610077565b16945050506103608501518061052084015261038086015180610540850152846103e68284610077565b1694505050610160610400830120610560830152610560820151818106610580840152806105a084015250806103a0860151066105c0830152806103c0860151066105e0830152806103e086015106610600830152806104008601510661062083015280610420860151066106408301528061044086015106610660830152806104608601510661068083015280610480860151066106a0830152806104a0860151066106c0830152806104c0860151066106e0830152806104e086015106610700830152806105008601510661072083015280610520860151066107408301528061054086015106610760830152806105608601510661078083015280610580860151066107a0830152806105a0860151066107c0830152806105c0860151066107e0830152806105e086015106610800830152806106008601510661082083015280610620860151066108408301528061064086015106610860830152806106608601510661088083015280610680860151066108a0830152806106a0860151066108c0830152806106c0860151066108e0830152806106e086015106610900830152806107008601510661092083015280610720860151066109408301528061074086015106610960830152806107608601510661098083015280610780860151066109a0830152806107a0860151066109c0830152806107c0860151066109e0830152806107e086015106610a008301526104806105a0830120610a20830152610a20820151818106610a4084015280610a60840152506001610a808301536021610a60830120610a808301819052818106610aa0840152610ac0830152610800850151610ae08301819052610820860151610b0084018190528461066f8284610077565b16945050506060610ac0830120610b20830152610b20820151818106610b4084015280610b608401525061084085015180610b8084015261086086015180610ba0850152846106be8284610077565b16945050508061058083015161058084015109610bc0830181905281908009610be0830181905281908009610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d0084015108610d20830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d2084015109610d40830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d4084015109610d60830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff61058084015108610d80830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d4084015109610da0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb061058084015108610dc0830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d4084015109610de0830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc61058084015108610e00830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d4084015109610e20830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc61058084015108610e40830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d4084015109610e60830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e61058084015108610e80830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d4084015109610ea0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e761058084015108610ec0830152806001610d4084015109610ee0830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061058084015108610f00830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d4084015109610f20830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa261058084015108610f40830152610d808201518181610dc085015109905080610f608401528181610e0085015109905080610f808401528181610e4085015109905080610fa08401528181610e8085015109905080610fc08401528181610ec085015109905080610fe08401528181610f00850151099050806110008401528181610f40850151099050806110208401528181610d208501510990508061104084015250602061108083015260206110a083015260206110c08301526110408201516110e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6111008301526000805160206154128339815191526111208301528260016020611060850160c0611080870160055afa141692506110608201516000610d208401519050828261102086015109610d20850152828282099150610f408401519050828261100086015109610f40850152828282099150610f0084015190508282610fe086015109610f00850152828282099150610ec084015190508282610fc086015109610ec0850152828282099150610e8084015190508282610fa086015109610e80850152828282099150610e4084015190508282610f8086015109610e40850152828282099150610e0084015190508282610f6086015109610e00850152828282099150610dc084015190508282610d8086015109610dc085015282828209610d808501819052610d608501518493509091500961114083015280610dc0830151610da08401510961116083015280610e00830151610de08401510961118083015280610e40830151610e20840151096111a083015280610e80830151610e60840151096111c083015280610ec0830151610ea0840151096111e083015280610f00830151610ee08401510961120083015280610f40830151610f20840151096112208301528060208301516112008401510981818360408601516112208701510908611240840152506106e08201516105c0830151829190086112608301819052819080096112808301819052819080096112a0830152806112a0830151611260840151096112c0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad56112c0840151096112e0830152806107008301516105e0840151086113008301819052819080096113208301819052819080096113408301528061134083015161130084015109611360830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e861136084015109611380830152806113808301516112e0840151086113a08301528061060083015182036113a0840151086113c083018190526107808301518291096113e0830152806113e08301516103e084015109611400830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff96112c084015109611420830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86113608401510961144083015280611440830151611420840151086114608301528061062083015182036114608401510861148083018190526107808301518291096114a0830152806114a0830151611400840151086114c0830152806114c08301516103e0840151096114e08301528061064083015182036112c08401510861150083018190526107a0830151829109611520830152806115208301516114e084015108611540830152806115408301516103e084015109611560830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561064084015109611580830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611300840151096115a0830152806115a0830151611580840151086115c083018190526106a08301518291086115e0830181905281908009611600830181905281908009611620830152806116208301516115e084015109611640830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e6661060084015109611660830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6106208401510961168083015280611680830151611660840151086116a0830152806116a08301518203611640840151086116c083018190526107a08301518291096116e0830152806116e083015161156084015108611700830152806117008301516103e084015109611720830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961064084015109611740830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c861130084015109611760830152806117608301516117408401510861178083018190526106c08301518291086117a0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610600840151096117c0830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be610620840151096117e0830152806117e08301516117c0840151086118008301528061180083015182036117a08401510861182083018190526107a08301518291096118408301528061184083015161172084015108611860830152806118608301516103e0840151096118808301528061076083015182036001086118a083018190526107608301518291096118c08301528061076083015182036002086118e083018190526118c08301518291096119008301528061076083015182036004086119208301819052611900830151829109611940830152806105c0830151610680840151086119608301528061060083015182036119608401510861198083018190526119408301518291096119a0830152806119a0830151611880840151086119c0830152806119c08301516103e0840151096119e083015280610620830151820361066084015108611a008301819052611940830151829109611a2083015280611a208301516119e084015108611a4083015280611a408301516103e084015109611a60830152806107c08301516113c084015109611a8083015280611a80830151611a6084015108611aa083015280611aa08301516103e084015109611ac0830152806107c083015161148084015109611ae083015280611ae0830151611ac084015108611b0083015280611b008301516103e084015109611b20830152806107e083015161150084015109611b4083015280611b40830151611b2084015108611b6083015280611b608301516103e084015109611b80830152806107e08301516116c084015109611ba083015280611ba0830151611b8084015108611bc083015280611bc08301516103e084015109611be0830152806107e083015161182084015109611c0083015280611c00830151611be084015108611c2083015280611c208301516103e084015109611c40830152806107608301518203600308611c608301819052611900830151829109611c8083015280611c8083015161198084015109611ca083015280611ca0830151611c4084015108611cc083015280611cc08301516103e084015109611ce083015280611c80830151611a0084015109611d0083015280611d00830151611ce084015108611d2083015280611d208301516103e084015109611d40830152806107608301516118e084015109611d6083015280611d60830151611c6084015109611d8083015280611d8083015161192084015109611da083015280611da083015161064084015109611dc0830152806106408301518203600108611de08301819052611dc0830151829109611e0083015280611e00830151611d4084015108611e2083015280611e208301516103e084015109611e4083015280610640830151600209611e60830152806105c083015182036105e084015108611e808301819052611e60830151829109611ea0830152806105c0830151820361060084015108611ec083015280611ec08301518203611ea084015108611ee08301528061062083015182036105e084015108611f0083015280611f008301518203611ee084015108611f208301819052611da0830151829109611f4083015280611f40830151611e4084015108611f6083015280611f608301516103e084015109611f80830152806118c0830151611c6084015109611fa083015280611fa083015161192084015109611fc0830152806105e08301516105c084015108611fe0830152806106408301518203611fe0840151086120008301819052611fc083015182910961202083015280612020830151611f8084015108612040830152806120408301516103e0840151096120608301819052612020830151829108612080830152806120808301516103e0840151096120a0830152806108e083015182036001086120c083018190526112008301518291096120e0830152806120e08301516120a084015108612100830152806121008301516103e0840151096121208301526109408201518190800961214083015280610940830151820361214084015108612160830181905261114083015182910961218083015280612180830151612120840151086121a0830152806121a08301516103e0840151096121c0830152806109208301518203610940840151086121e08301819052611200830151829109612200830152806122008301516121c084015108612220830152806122208301516103e084015109612240830152806111408301518203600108612260830152806111808301516111608401510861228083018190526111a08301518291086122a083018190526111c08301518291086122c083018190526111e08301518291086122e0830152806122e08301518203612260840151086123008301528061022083015161082084015109612320830152806123208301516106a08401510861234083018190526102808301518291086123608301528061022083015161084084015109612380830152806123808301516105c0840151086123a083018190526102808301518291086123c083018190526123608301518291096123e08301528061022083015161086084015109612400830152806124008301516105e084015108612420830181905261028083015182910861244083018190526123e08301518291096124608301528061022083015161088084015109612480830152806124808301516106c0840151086124a083018190526102808301518291086124c083018190526124608301518291096124e08301819052610900830151829109612500830152806102208301516001096125208301528061252083015161058084015109612540830152806125408301516106a0840151086125608301819052610280830151829108612580830152806102208301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096125a0830152806125a0830151610580840151096125c0830152806125c08301516105c0840151086125e083018190526102808301518291086126008301819052612580830151829109612620830152806102208301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b096126408301528061264083015161058084015109612660830152806126608301516105e08401510861268083018190526102808301518291086126a083018190526126208301518291096126c0830152806102208301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096126e0830152806126e083015161058084015109612700830152806127008301516106c084015108612720830181905261028083015182910861274083018190526126c083015182910961276083018190526108e0830151829109612780830152806127808301518203612500840151086127a083018190526123008301518291096127c0830152806127c0830151612240840151086127e0830152806127e08301516103e084015109612800830152806102208301516108a08401510961282083015280612820830151610640840151086128408301819052610280830151829108612860830152806102208301516108c08401510961288083015280612880830151611240840151086128a083018190526102808301518291086128c083018190526128608301518291096128e08301819052610960830151829109612900830152806102208301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612920830152806129208301516105808401510961294083015280612940830151610640840151086129608301819052610280830151829108612980830152806102208301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d096129a0830152806129a0830151610580840151096129c0830152806129c0830151611240840151086129e08301819052610280830151829108612a008301819052612980830151829109612a208301819052610940830151829109612a4083015280612a40830151820361290084015108612a608301819052612300830151829109612a8083015280612a8083015161280084015108612aa083015280612aa08301516103e084015109612ac0830152806109808301518203600108612ae08301819052611200830151829109612b0083015280612b00830151612ac084015108612b2083015280612b208301516103e084015109612b4083015261098082015181908009612b60830152806109808301518203612b6084015108612b808301819052611140830151829109612ba083015280612ba0830151612b4084015108612bc083015280612bc08301516103e084015109612be0830152806102208301516109c084015108612c0083018190526109a0830151829109612c2083015280610280830151610a0084015108612c408301819052612c20830151829109612c608301528061060083015161010009612c8083015280612c8083015182036105c084015108612ca08301819052610740830151829109612cc08301819052610220830151829108612ce08301819052610980830151829109612d008301528061028083015161072084015108612d208301819052612d00830151829109612d4083015280612d408301518203612c6084015108612d608301819052612300830151829109612d8083015280612d80830151612be084015108612da083015280612da08301516103e084015109612dc083015280610a0083015182036109c084015108612de08301819052611200830151829109612e0083015280612e00830151612dc084015108612e2083015280612e208301516103e084015109612e4083015280612300830151612de084015109612e60830152806109e083015182036109c084015108612e808301819052612e60830151829109612ea083015280612ea0830151612e4084015108612ec0830152610d0082015181908009612ee08301819052610d00830151829109612f008301819052610d00830151829109612f208301819052610d00830151829109612f4083015280610d00830151600109612f6083015280612ee0830151600109612f8083015280612f00830151600109612fa083015280612f20830151600109612fc083015280610d20830151612ec084015109612fe083015280610580830151610bc08401510961300083015280600161058084015109613020830152806130208301518203610b4084015108613040830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f61058084015109613060830152806130608301518203610b4084015108613080830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610580840151096130a0830152806130a08301518203610b40840151086130c0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610580840151096130e0830152806130e08301518203610b408401510861310083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610bc085015109610b4084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610bc08801510961058087015109089050806131208401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610bc085015109610b4084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610bc08801510961058087015109089050806131408401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610bc085015109610b4084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610bc088015109610580870151090861316084015250613040820151819060010961318083018190526130808301518291096131a083018190526131008301518291096131c0830152806001610b40840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061058087015109089050806131e08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610bc085015109610b4084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610bc08801510961058087015109089050806132008401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610bc085015109610b4084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610bc08801510961058087015109089050806132208401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610bc085015109610b4084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610bc0880151096105808701510908613240840152506130c08201516131a08301518291900961326083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa361058085015109610b4084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105808801510961058087015109089050806132808401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e61058085015109610b4084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105808801510961058087015109089050806132a08401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e861058085015109610b4084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105808801510961058087015109089050806132c08401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161961058085015109610b4084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105808801510961058087015109086132e0840152506131008201516131808301518291900961330083015261312082015181816131408501510990508061332084015281816131608501510990508061334084015281816131e0850151099050806133608401528181613180850151099050806133808401528181613200850151099050806133a08401528181613220850151099050806133c08401528181613240850151099050806133e084015281816132608501510990508061340084015281816132808501510990508061342084015281816132a08501510990508061344084015281816131a08501510990508061346084015281816132c08501510990508061348084015281816132e0850151099050806134a08401528181613300850151099050806134c0840152506020613500830152602061352083015260206135408301526134c08201516135608301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6135808301526000805160206154128339815191526135a083015282600160206134e0850160c0613500870160055afa141692506134e08201516000613300840151905082826134a0860151096133008501528282820991506132e084015190508282613480860151096132e08501528282820991506132c084015190508282613460860151096132c08501528282820991506131a084015190508282613440860151096131a08501528282820991506132a084015190508282613420860151096132a08501528282820991506132808401519050828261340086015109613280850152828282099150613260840151905082826133e086015109613260850152828282099150613240840151905082826133c086015109613240850152828282099150613220840151905082826133a086015109613220850152828282099150613200840151905082826133808601510961320085015282828209915061318084015190508282613360860151096131808501528282820991506131e084015190508282613340860151096131e08501528282820991506131608401519050828261332086015109613160850152828282099150613140840151905082826131208601510961314085015282828209613120850181905261314085015190925083915082900890508181613160850151086135c0840152506131808201516131c0830151829190096135e08301526131e08201518061360084015250806132608301516131c0840151096136208301526132008201518181613220850151089050818161324085015108613640840152506131a08201516131c08301518291900961366083015261328082015181816132a085015108613680840152506133008201516131c0830151829190096136a08301526132c082015181816132e0850151086136c0840152506135c082015161360083015182908290099050806136e084015281816136408501510990508061370084015281816136808501510990508061372084015281816136c08501510990508061374084015250602061378083015260206137a083015260206137c08301526137408201516137e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6138008301526000805160206154128339815191526138208301528260016020613760850160c0613780870160055afa1416925061376082015160006136c084015190508282613720860151096136c08501528282820991506136808401519050828261370086015109613680850152828282099150613640840151905082826136e086015109613640850152828282099150613600840151905082826135c086015109613600850152828282096135c085015250506136008201516135e08301518291900961384083015280613640830151613620840151096138608301528061368083015161366084015109613880830152806136c08301516136a0840151096138a0830152610a40820151819080096138c08301819052610a408301518291096138e08301819052610a408301518291096139008301819052610a408301518291096139208301819052610a408301518291096139408301819052610a408301518291096139608301819052610a408301518291096139808301819052610a408301518291096139a08301819052610a408301518291096139c08301819052610a408301518291096139e08301819052610a40830151829109613a008301819052610a40830151829109613a208301819052610a40830151829109613a408301819052610a40830151829109613a608301819052610a40830151829109613a808301819052610a40830151829109613aa08301819052610a40830151829109613ac08301819052610a40830151829109613ae08301819052610a40830151829109613b008301819052610a40830151829109613b20830152610aa082015181908009613b408301819052610aa0830151829109613b608301819052610aa0830151829109613b808301819052610aa0830151829109613ba0830152806131208301516105c084015109818183613140860151610600870151090890508181836131608601516106808701510908613bc084018190526135c08401518392509009613be0830152806001613be0840151830309613c00830152806131208301516105e084015109818183613140860151610620870151090890508181836131608601516106608701510908613c2084018190526135c08401518392509009613c408301819052610a408301518291820309613c6083015280610a40830151600109613c8083015280613c60830151613c0084015108613ca0830152806001613ca084015109613cc0830152806001613c8084015109613ce0830152806135e0830151600109613d00830152806131e083015161064084015109613d208301819052613840830151829109613d40830152806001613d40840151830309613d60830152806001613d0084015109613d80830152806131e0830151610a0084015109613da08301819052613840830151829109613dc08301819052610a408301518291820309613de083015280610a40830151613d0084015109613e0083015280613de0830151613d6084015108613e20830152806131e08301516106a084015109613e408301819052613840830151829109613e6083018190526138c08301518291820309613e80830152806138c0830151613d0084015109613ea083015280613e80830151613e2084015108613ec0830152806131e08301516106c084015109613ee08301819052613840830151829109613f0083018190526138e08301518291820309613f20830152806138e0830151613d0084015109613f4083015280613f20830151613ec084015108613f60830152806131e08301516106e084015109613f808301819052613840830151829109613fa083018190526139008301518291820309613fc083015280613900830151613d0084015109613fe083015280613fc0830151613f6084015108614000830152806131e08301516107008401510961402083018190526138408301518291096140408301819052613920830151829182030961406083015280613920830151613d008401510961408083015280614060830151614000840151086140a0830152806131e0830151610720840151096140c083018190526138408301518291096140e08301819052613940830151829182030961410083015280613940830151613d0084015109614120830152806141008301516140a084015108614140830152806131e0830151610740840151096141608301819052613840830151829109614180830181905261396083015182918203096141a083015280613960830151613d00840151096141c0830152806141a0830151614140840151086141e0830152806131e08301516107608401510961420083018190526138408301518291096142208301819052613980830151829182030961424083015280613980830151613d0084015109614260830152806142408301516141e084015108614280830152806131e0830151610780840151096142a083018190526138408301518291096142c083018190526139a083015182918203096142e0830152806139a0830151613d0084015109614300830152806142e083015161428084015108614320830152806131e08301516107a084015109614340830181905261384083015182910961436083018190526139c08301518291820309614380830152806139c0830151613d00840151096143a083015280614380830151614320840151086143c0830152806131e08301516107c0840151096143e0830181905261384083015182910961440083018190526139e08301518291820309614420830152806139e0830151613d0084015109614440830152806144208301516143c084015108614460830152806131e08301516107e08401510961448083018190526138408301518291096144a08301819052613a0083015182918203096144c083015280613a00830151613d00840151096144e0830152806144c083015161446084015108614500830152806131e08301516108208401510961452083018190526138408301518291096145408301819052613a20830151829182030961456083015280613a20830151613d008401510961458083015280614560830151614500840151086145a0830152806131e0830151610840840151096145c083018190526138408301518291096145e08301819052613a40830151829182030961460083015280613a40830151613d0084015109614620830152806146008301516145a084015108614640830152806131e08301516108608401510961466083018190526138408301518291096146808301819052613a6083015182918203096146a083015280613a60830151613d00840151096146c0830152806146a0830151614640840151086146e0830152806131e08301516108808401510961470083018190526138408301518291096147208301819052613a80830151829182030961474083015280613a80830151613d0084015109614760830152806147408301516146e084015108614780830152806131e08301516108a0840151096147a083018190526138408301518291096147c08301819052613aa083015182918203096147e083015280613aa0830151613d0084015109614800830152806147e083015161478084015108614820830152806131e08301516108c08401510961484083018190526138408301518291096148608301819052613ac0830151829182030961488083015280613ac0830151613d00840151096148a083015280614880830151614820840151086148c0830152806135e0830151612f60840151096148e0830152806135e0830151612f8084015109614900830152806135e0830151612fa084015109614920830152806135e0830151612fc084015109614940830152806131e0830151612fe08401510961496083018190526138408301518291096149808301819052613ae083015182918203096149a083015280613ae0830151613d00840151096149c083015280613ae08301516148e0840151096149e083015280613ae083015161490084015109614a0083015280613ae083015161492084015109614a2083015280613ae083015161494084015109614a40830152806149a08301516148c084015108614a60830152806131e083015161080084015109614a808301819052613840830151829109614aa08301819052613b008301518291820309614ac083015280613b00830151613d0084015109614ae083015280614ac0830151614a6084015108614b008301819052610aa0830151829109614b2083015280610aa0830151613d8084015109614b4083015280610aa0830151613e0084015109614b6083015280610aa0830151613ea084015109614b8083015280610aa0830151613f4084015109614ba083015280610aa0830151613fe084015109614bc083015280610aa083015161408084015109614be083015280610aa083015161412084015109614c0083015280610aa08301516141c084015109614c2083015280610aa083015161426084015109614c4083015280610aa083015161430084015109614c6083015280610aa08301516143a084015109614c8083015280610aa083015161444084015109614ca083015280610aa08301516144e084015109614cc083015280610aa083015161458084015109614ce083015280610aa083015161462084015109614d0083015280610aa08301516146c084015109614d2083015280610aa083015161476084015109614d4083015280610aa083015161480084015109614d6083015280610aa08301516148a084015109614d8083015280610aa08301516149c084015109614da083015280610aa08301516149e084015109614dc083015280610aa0830151614a0084015109614de083015280610aa0830151614a2084015109614e0083015280610aa0830151614a4084015109614e2083015280610aa0830151614ae084015109614e4083015280614b20830151613cc084015108614e6083015280613620830151600109614e80830152806132008301516108e084015109818183613220860151610900870151090890508181836132408601516109208701510908614ea084018190526138608401518392509009614ec0830152806001614ec0840151830309614ee0830152806001614e8084015109614f0083015280613b40830151614ee084015109614f2083015280613b40830151614f0084015109614f4083015280614f20830151614e6084015108614f6083015280613660830151600109614f8083015280613280830151610940840151098181836132a08601516109608701510908614fa084018190526138808401518392509009614fc0830152806001614fc0840151830309614fe0830152806001614f808401510961500083015280613280830151610980840151098181836132a08601516109a08701510908615020840181905261388084015183925090096150408301819052610a40830151829182030961506083015280610a40830151614f808401510961508083015280615060830151614fe0840151086150a08301819052613b608301518291096150c083015280613b60830151615000840151096150e083015280613b6083015161508084015109615100830152806150c0830151614f6084015108615120830152806136a0830151600109615140830152806132c08301516109c0840151098181836132e08601516109e0870151090861516084018190526138a084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c083015280613b808301516151a0840151096151e083015280613b808301516151c084015109615200830152806151e083015161512084015108615220830152806131c083015160010961524083015280610b408301516001096152608301526001615280830181815260026152a08501526152208401516152c085015284919060409060608160075afa141692506152808201516152e08301526152a08201516153008301526060820151615320830152608082015161534083015282600160406152e0850160806152e0870160065afa1416925060a082015161536083015260c0820151615380830152613ce08201516153a0830152826001604061536085016060615360870160075afa141692506152e08201516153c08301526153008201516153e083015261536082015161540083015261538082015161542083015282600160406153c0850160806153c0870160065afa1416925060e0820151615440830152610100820151615460830152614b40820151615480830152826001604061544085016060615440870160075afa141692506153c08201516154a08301526153e08201516154c08301526154408201516154e083015261546082015161550083015282600160406154a0850160806154a0870160065afa141692506101c08201516155208301526101e0820151615540830152614b60820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa141692507f291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db4252906156008301527f154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc615620830152614b80820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692507f176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d6156e08301527f1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51615700830152614ba082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e202507596157c08301527f0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea836157e0830152614bc082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af6158a08301527f24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c436158c0830152614be08201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa46159808301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c06159a0830152614c008201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed615a608301527f286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf615a80830152614c20820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5615b408301527f0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2615b60830152614c40820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36615c208301527f2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890615c40830152614c60820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f615d008301527f1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d615d20830152614c80820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c615de08301527f1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68615e00830152614ca0820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701615ec08301527f07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a615ee0830152614cc0820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d615fa08301527f154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6615fc0830152614ce0820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f2402db4b1c7746dcd9fe7eab82ab3fa7ebb1bd352a9af94ef6811b2af9ab6f8e6160808301527f2a0047ec08a254753c466648f0dc6e077e88e5495829c3a845873b9058bf44076160a0830152614d008201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a6161608301527f27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28616180830152614d208201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746162408301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616260830152614d40820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a6163208301527eb004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56616340830152614d60820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f2903a763c1c6b78667f906b6fe2b4ad197b55587c90e14e8502446da8c45ef7d6164008301527f13ea57986f9295e92def3303aef53f2b4f625ba985531201ab53dc7307f46b69616420830152614d80820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692506104208201516164e0830152610440820151616500830152614da082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692506104608201516165c08301526104808201516165e0830152614dc082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104a08201516166a08301526104c08201516166c0830152614de08201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104e08201516167808301526105008201516167a0830152614e008201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa14169250610520820151616860830152610540820151616880830152614e208201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa141692506103808201516169408301526103a0820151616960830152614e40820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa141692506102c0820151616a208301526102e0820151616a40830152614f40820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa14169250610300820151616b00830152610320820151616b208301526150e0820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610340820151616be0830152610360820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610180820151616cc08301526101a0820151616ce0830152615200820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610ae0820151616da0830152610b00820151616dc08301526152408201518103616de0830152508160016040616da084016060616da0860160075afa14169150616d20810151616e00820152616d40810151616e20820152616da0810151616e40820152616dc0810151616e608201528160016040616e0084016080616e00860160065afa14169150610b80810151616e80820152610ba0810151616ea0820152615260810151616ec08201528160016040616e8084016060616e80860160075afa14169150616e00810151616ee0820152616e20810151616f00820152616e80810151616f20820152616ea0810151616f408201528160016040616ee084016080616ee0860160065afa14169150616ee0810151616f60820152616f00810151616f808201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2616fa08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed616fc08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b616fe08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa617000820152610b80810151617020820152610ba08101516170408201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6170608201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6170808201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456170a08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff6170c08201528160016020616f608401610180616f60860160085afa616f6093909301516001149214161691505092915050565b604051806170c00160405280610386906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156152b1576152b1615272565b604052919050565b600082601f8301126152ca57600080fd5b813567ffffffffffffffff8111156152e4576152e4615272565b6152f7601f8201601f1916602001615288565b81815284602083860101111561530c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561533c57600080fd5b823567ffffffffffffffff8082111561535457600080fd5b818501915085601f83011261536857600080fd5b813560208282111561537c5761537c615272565b8160051b61538b828201615288565b928352848101820192828101908a8511156153a557600080fd5b958301955b848710156153c3578635825295830195908301906153aa565b97505050860135925050808211156153da57600080fd5b506153e7858286016152b9565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a26469706673582212208f0f08c113d71e9affd04a930a0ccffff41cc79e358932cfa7ac1395c242440564736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e366004615329565b610057565b604051901515815260200160405180910390f35b60006001610063615252565b6000805160206154128339815191526100d9565b6000805160206153f283398151915280831081831016908380096000805160206153f28339815191528384096000805160206153f283398151915284820990506000805160206153f28339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301527f2df16218a82d39831071e46956c233ee9aa79bb065b265871080d8643f2f52ab600083015260208501518060608401526040860151806080850152846101388284610077565b169450505060608501518060a084015260808601518060c08501528461015e8284610077565b169450505060a08501518060e084015260c086015180610100850152846101858284610077565b16945050506101206000830120610120830152610120820151818106610140840152806101608401525060e085015180610180840152610100860151806101a0850152846101d38284610077565b1694505050610120850151806101c0840152610140860151806101e0850152846101fd8284610077565b60a061016087012061020087018190528581066102208801526102408701521694506001915050610260830153602161024083012061026083018190528181066102808401526102a08301526101608501516102c083018190526101808601516102e08401819052846102708284610077565b16945050506101a0850151806103008401526101c0860151806103208501528461029a8284610077565b16945050506101e08501518061034084015261020086015180610360850152846102c48284610077565b169450505061022085015180610380840152610240860151806103a0850152846102ee8284610077565b16945050506101206102a08301206103c08301526103c08201518181066103e0840152806104008401525061026085015180610420840152610280860151806104408501528461033e8284610077565b16945050506102a0850151806104608401526102c086015180610480850152846103688284610077565b16945050506102e0850151806104a0840152610300860151806104c0850152846103928284610077565b1694505050610320850151806104e084015261034086015180610500850152846103bc8284610077565b16945050506103608501518061052084015261038086015180610540850152846103e68284610077565b1694505050610160610400830120610560830152610560820151818106610580840152806105a084015250806103a0860151066105c0830152806103c0860151066105e0830152806103e086015106610600830152806104008601510661062083015280610420860151066106408301528061044086015106610660830152806104608601510661068083015280610480860151066106a0830152806104a0860151066106c0830152806104c0860151066106e0830152806104e086015106610700830152806105008601510661072083015280610520860151066107408301528061054086015106610760830152806105608601510661078083015280610580860151066107a0830152806105a0860151066107c0830152806105c0860151066107e0830152806105e086015106610800830152806106008601510661082083015280610620860151066108408301528061064086015106610860830152806106608601510661088083015280610680860151066108a0830152806106a0860151066108c0830152806106c0860151066108e0830152806106e086015106610900830152806107008601510661092083015280610720860151066109408301528061074086015106610960830152806107608601510661098083015280610780860151066109a0830152806107a0860151066109c0830152806107c0860151066109e0830152806107e086015106610a008301526104806105a0830120610a20830152610a20820151818106610a4084015280610a60840152506001610a808301536021610a60830120610a808301819052818106610aa0840152610ac0830152610800850151610ae08301819052610820860151610b0084018190528461066f8284610077565b16945050506060610ac0830120610b20830152610b20820151818106610b4084015280610b608401525061084085015180610b8084015261086086015180610ba0850152846106be8284610077565b16945050508061058083015161058084015109610bc0830181905281908009610be0830181905281908009610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d0084015108610d20830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d2084015109610d40830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d4084015109610d60830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff61058084015108610d80830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d4084015109610da0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb061058084015108610dc0830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d4084015109610de0830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc61058084015108610e00830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d4084015109610e20830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc61058084015108610e40830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d4084015109610e60830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e61058084015108610e80830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d4084015109610ea0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e761058084015108610ec0830152806001610d4084015109610ee0830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061058084015108610f00830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d4084015109610f20830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa261058084015108610f40830152610d808201518181610dc085015109905080610f608401528181610e0085015109905080610f808401528181610e4085015109905080610fa08401528181610e8085015109905080610fc08401528181610ec085015109905080610fe08401528181610f00850151099050806110008401528181610f40850151099050806110208401528181610d208501510990508061104084015250602061108083015260206110a083015260206110c08301526110408201516110e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6111008301526000805160206154128339815191526111208301528260016020611060850160c0611080870160055afa141692506110608201516000610d208401519050828261102086015109610d20850152828282099150610f408401519050828261100086015109610f40850152828282099150610f0084015190508282610fe086015109610f00850152828282099150610ec084015190508282610fc086015109610ec0850152828282099150610e8084015190508282610fa086015109610e80850152828282099150610e4084015190508282610f8086015109610e40850152828282099150610e0084015190508282610f6086015109610e00850152828282099150610dc084015190508282610d8086015109610dc085015282828209610d808501819052610d608501518493509091500961114083015280610dc0830151610da08401510961116083015280610e00830151610de08401510961118083015280610e40830151610e20840151096111a083015280610e80830151610e60840151096111c083015280610ec0830151610ea0840151096111e083015280610f00830151610ee08401510961120083015280610f40830151610f20840151096112208301528060208301516112008401510981818360408601516112208701510908611240840152506106e08201516105c0830151829190086112608301819052819080096112808301819052819080096112a0830152806112a0830151611260840151096112c0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad56112c0840151096112e0830152806107008301516105e0840151086113008301819052819080096113208301819052819080096113408301528061134083015161130084015109611360830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e861136084015109611380830152806113808301516112e0840151086113a08301528061060083015182036113a0840151086113c083018190526107808301518291096113e0830152806113e08301516103e084015109611400830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff96112c084015109611420830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86113608401510961144083015280611440830151611420840151086114608301528061062083015182036114608401510861148083018190526107808301518291096114a0830152806114a0830151611400840151086114c0830152806114c08301516103e0840151096114e08301528061064083015182036112c08401510861150083018190526107a0830151829109611520830152806115208301516114e084015108611540830152806115408301516103e084015109611560830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561064084015109611580830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611300840151096115a0830152806115a0830151611580840151086115c083018190526106a08301518291086115e0830181905281908009611600830181905281908009611620830152806116208301516115e084015109611640830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e6661060084015109611660830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6106208401510961168083015280611680830151611660840151086116a0830152806116a08301518203611640840151086116c083018190526107a08301518291096116e0830152806116e083015161156084015108611700830152806117008301516103e084015109611720830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961064084015109611740830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c861130084015109611760830152806117608301516117408401510861178083018190526106c08301518291086117a0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610600840151096117c0830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be610620840151096117e0830152806117e08301516117c0840151086118008301528061180083015182036117a08401510861182083018190526107a08301518291096118408301528061184083015161172084015108611860830152806118608301516103e0840151096118808301528061076083015182036001086118a083018190526107608301518291096118c08301528061076083015182036002086118e083018190526118c08301518291096119008301528061076083015182036004086119208301819052611900830151829109611940830152806105c0830151610680840151086119608301528061060083015182036119608401510861198083018190526119408301518291096119a0830152806119a0830151611880840151086119c0830152806119c08301516103e0840151096119e083015280610620830151820361066084015108611a008301819052611940830151829109611a2083015280611a208301516119e084015108611a4083015280611a408301516103e084015109611a60830152806107c08301516113c084015109611a8083015280611a80830151611a6084015108611aa083015280611aa08301516103e084015109611ac0830152806107c083015161148084015109611ae083015280611ae0830151611ac084015108611b0083015280611b008301516103e084015109611b20830152806107e083015161150084015109611b4083015280611b40830151611b2084015108611b6083015280611b608301516103e084015109611b80830152806107e08301516116c084015109611ba083015280611ba0830151611b8084015108611bc083015280611bc08301516103e084015109611be0830152806107e083015161182084015109611c0083015280611c00830151611be084015108611c2083015280611c208301516103e084015109611c40830152806107608301518203600308611c608301819052611900830151829109611c8083015280611c8083015161198084015109611ca083015280611ca0830151611c4084015108611cc083015280611cc08301516103e084015109611ce083015280611c80830151611a0084015109611d0083015280611d00830151611ce084015108611d2083015280611d208301516103e084015109611d40830152806107608301516118e084015109611d6083015280611d60830151611c6084015109611d8083015280611d8083015161192084015109611da083015280611da083015161064084015109611dc0830152806106408301518203600108611de08301819052611dc0830151829109611e0083015280611e00830151611d4084015108611e2083015280611e208301516103e084015109611e4083015280610640830151600209611e60830152806105c083015182036105e084015108611e808301819052611e60830151829109611ea0830152806105c0830151820361060084015108611ec083015280611ec08301518203611ea084015108611ee08301528061062083015182036105e084015108611f0083015280611f008301518203611ee084015108611f208301819052611da0830151829109611f4083015280611f40830151611e4084015108611f6083015280611f608301516103e084015109611f80830152806118c0830151611c6084015109611fa083015280611fa083015161192084015109611fc0830152806105e08301516105c084015108611fe0830152806106408301518203611fe0840151086120008301819052611fc083015182910961202083015280612020830151611f8084015108612040830152806120408301516103e0840151096120608301819052612020830151829108612080830152806120808301516103e0840151096120a0830152806108e083015182036001086120c083018190526112008301518291096120e0830152806120e08301516120a084015108612100830152806121008301516103e0840151096121208301526109408201518190800961214083015280610940830151820361214084015108612160830181905261114083015182910961218083015280612180830151612120840151086121a0830152806121a08301516103e0840151096121c0830152806109208301518203610940840151086121e08301819052611200830151829109612200830152806122008301516121c084015108612220830152806122208301516103e084015109612240830152806111408301518203600108612260830152806111808301516111608401510861228083018190526111a08301518291086122a083018190526111c08301518291086122c083018190526111e08301518291086122e0830152806122e08301518203612260840151086123008301528061022083015161082084015109612320830152806123208301516106a08401510861234083018190526102808301518291086123608301528061022083015161084084015109612380830152806123808301516105c0840151086123a083018190526102808301518291086123c083018190526123608301518291096123e08301528061022083015161086084015109612400830152806124008301516105e084015108612420830181905261028083015182910861244083018190526123e08301518291096124608301528061022083015161088084015109612480830152806124808301516106c0840151086124a083018190526102808301518291086124c083018190526124608301518291096124e08301819052610900830151829109612500830152806102208301516001096125208301528061252083015161058084015109612540830152806125408301516106a0840151086125608301819052610280830151829108612580830152806102208301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096125a0830152806125a0830151610580840151096125c0830152806125c08301516105c0840151086125e083018190526102808301518291086126008301819052612580830151829109612620830152806102208301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b096126408301528061264083015161058084015109612660830152806126608301516105e08401510861268083018190526102808301518291086126a083018190526126208301518291096126c0830152806102208301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096126e0830152806126e083015161058084015109612700830152806127008301516106c084015108612720830181905261028083015182910861274083018190526126c083015182910961276083018190526108e0830151829109612780830152806127808301518203612500840151086127a083018190526123008301518291096127c0830152806127c0830151612240840151086127e0830152806127e08301516103e084015109612800830152806102208301516108a08401510961282083015280612820830151610640840151086128408301819052610280830151829108612860830152806102208301516108c08401510961288083015280612880830151611240840151086128a083018190526102808301518291086128c083018190526128608301518291096128e08301819052610960830151829109612900830152806102208301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612920830152806129208301516105808401510961294083015280612940830151610640840151086129608301819052610280830151829108612980830152806102208301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d096129a0830152806129a0830151610580840151096129c0830152806129c0830151611240840151086129e08301819052610280830151829108612a008301819052612980830151829109612a208301819052610940830151829109612a4083015280612a40830151820361290084015108612a608301819052612300830151829109612a8083015280612a8083015161280084015108612aa083015280612aa08301516103e084015109612ac0830152806109808301518203600108612ae08301819052611200830151829109612b0083015280612b00830151612ac084015108612b2083015280612b208301516103e084015109612b4083015261098082015181908009612b60830152806109808301518203612b6084015108612b808301819052611140830151829109612ba083015280612ba0830151612b4084015108612bc083015280612bc08301516103e084015109612be0830152806102208301516109c084015108612c0083018190526109a0830151829109612c2083015280610280830151610a0084015108612c408301819052612c20830151829109612c608301528061060083015161010009612c8083015280612c8083015182036105c084015108612ca08301819052610740830151829109612cc08301819052610220830151829108612ce08301819052610980830151829109612d008301528061028083015161072084015108612d208301819052612d00830151829109612d4083015280612d408301518203612c6084015108612d608301819052612300830151829109612d8083015280612d80830151612be084015108612da083015280612da08301516103e084015109612dc083015280610a0083015182036109c084015108612de08301819052611200830151829109612e0083015280612e00830151612dc084015108612e2083015280612e208301516103e084015109612e4083015280612300830151612de084015109612e60830152806109e083015182036109c084015108612e808301819052612e60830151829109612ea083015280612ea0830151612e4084015108612ec0830152610d0082015181908009612ee08301819052610d00830151829109612f008301819052610d00830151829109612f208301819052610d00830151829109612f4083015280610d00830151600109612f6083015280612ee0830151600109612f8083015280612f00830151600109612fa083015280612f20830151600109612fc083015280610d20830151612ec084015109612fe083015280610580830151610bc08401510961300083015280600161058084015109613020830152806130208301518203610b4084015108613040830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f61058084015109613060830152806130608301518203610b4084015108613080830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610580840151096130a0830152806130a08301518203610b40840151086130c0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610580840151096130e0830152806130e08301518203610b408401510861310083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610bc085015109610b4084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610bc08801510961058087015109089050806131208401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610bc085015109610b4084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610bc08801510961058087015109089050806131408401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610bc085015109610b4084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610bc088015109610580870151090861316084015250613040820151819060010961318083018190526130808301518291096131a083018190526131008301518291096131c0830152806001610b40840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061058087015109089050806131e08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610bc085015109610b4084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610bc08801510961058087015109089050806132008401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610bc085015109610b4084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610bc08801510961058087015109089050806132208401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610bc085015109610b4084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610bc0880151096105808701510908613240840152506130c08201516131a08301518291900961326083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa361058085015109610b4084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105808801510961058087015109089050806132808401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e61058085015109610b4084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105808801510961058087015109089050806132a08401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e861058085015109610b4084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105808801510961058087015109089050806132c08401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161961058085015109610b4084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105808801510961058087015109086132e0840152506131008201516131808301518291900961330083015261312082015181816131408501510990508061332084015281816131608501510990508061334084015281816131e0850151099050806133608401528181613180850151099050806133808401528181613200850151099050806133a08401528181613220850151099050806133c08401528181613240850151099050806133e084015281816132608501510990508061340084015281816132808501510990508061342084015281816132a08501510990508061344084015281816131a08501510990508061346084015281816132c08501510990508061348084015281816132e0850151099050806134a08401528181613300850151099050806134c0840152506020613500830152602061352083015260206135408301526134c08201516135608301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6135808301526000805160206154128339815191526135a083015282600160206134e0850160c0613500870160055afa141692506134e08201516000613300840151905082826134a0860151096133008501528282820991506132e084015190508282613480860151096132e08501528282820991506132c084015190508282613460860151096132c08501528282820991506131a084015190508282613440860151096131a08501528282820991506132a084015190508282613420860151096132a08501528282820991506132808401519050828261340086015109613280850152828282099150613260840151905082826133e086015109613260850152828282099150613240840151905082826133c086015109613240850152828282099150613220840151905082826133a086015109613220850152828282099150613200840151905082826133808601510961320085015282828209915061318084015190508282613360860151096131808501528282820991506131e084015190508282613340860151096131e08501528282820991506131608401519050828261332086015109613160850152828282099150613140840151905082826131208601510961314085015282828209613120850181905261314085015190925083915082900890508181613160850151086135c0840152506131808201516131c0830151829190096135e08301526131e08201518061360084015250806132608301516131c0840151096136208301526132008201518181613220850151089050818161324085015108613640840152506131a08201516131c08301518291900961366083015261328082015181816132a085015108613680840152506133008201516131c0830151829190096136a08301526132c082015181816132e0850151086136c0840152506135c082015161360083015182908290099050806136e084015281816136408501510990508061370084015281816136808501510990508061372084015281816136c08501510990508061374084015250602061378083015260206137a083015260206137c08301526137408201516137e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6138008301526000805160206154128339815191526138208301528260016020613760850160c0613780870160055afa1416925061376082015160006136c084015190508282613720860151096136c08501528282820991506136808401519050828261370086015109613680850152828282099150613640840151905082826136e086015109613640850152828282099150613600840151905082826135c086015109613600850152828282096135c085015250506136008201516135e08301518291900961384083015280613640830151613620840151096138608301528061368083015161366084015109613880830152806136c08301516136a0840151096138a0830152610a40820151819080096138c08301819052610a408301518291096138e08301819052610a408301518291096139008301819052610a408301518291096139208301819052610a408301518291096139408301819052610a408301518291096139608301819052610a408301518291096139808301819052610a408301518291096139a08301819052610a408301518291096139c08301819052610a408301518291096139e08301819052610a40830151829109613a008301819052610a40830151829109613a208301819052610a40830151829109613a408301819052610a40830151829109613a608301819052610a40830151829109613a808301819052610a40830151829109613aa08301819052610a40830151829109613ac08301819052610a40830151829109613ae08301819052610a40830151829109613b008301819052610a40830151829109613b20830152610aa082015181908009613b408301819052610aa0830151829109613b608301819052610aa0830151829109613b808301819052610aa0830151829109613ba0830152806131208301516105c084015109818183613140860151610600870151090890508181836131608601516106808701510908613bc084018190526135c08401518392509009613be0830152806001613be0840151830309613c00830152806131208301516105e084015109818183613140860151610620870151090890508181836131608601516106608701510908613c2084018190526135c08401518392509009613c408301819052610a408301518291820309613c6083015280610a40830151600109613c8083015280613c60830151613c0084015108613ca0830152806001613ca084015109613cc0830152806001613c8084015109613ce0830152806135e0830151600109613d00830152806131e083015161064084015109613d208301819052613840830151829109613d40830152806001613d40840151830309613d60830152806001613d0084015109613d80830152806131e0830151610a0084015109613da08301819052613840830151829109613dc08301819052610a408301518291820309613de083015280610a40830151613d0084015109613e0083015280613de0830151613d6084015108613e20830152806131e08301516106a084015109613e408301819052613840830151829109613e6083018190526138c08301518291820309613e80830152806138c0830151613d0084015109613ea083015280613e80830151613e2084015108613ec0830152806131e08301516106c084015109613ee08301819052613840830151829109613f0083018190526138e08301518291820309613f20830152806138e0830151613d0084015109613f4083015280613f20830151613ec084015108613f60830152806131e08301516106e084015109613f808301819052613840830151829109613fa083018190526139008301518291820309613fc083015280613900830151613d0084015109613fe083015280613fc0830151613f6084015108614000830152806131e08301516107008401510961402083018190526138408301518291096140408301819052613920830151829182030961406083015280613920830151613d008401510961408083015280614060830151614000840151086140a0830152806131e0830151610720840151096140c083018190526138408301518291096140e08301819052613940830151829182030961410083015280613940830151613d0084015109614120830152806141008301516140a084015108614140830152806131e0830151610740840151096141608301819052613840830151829109614180830181905261396083015182918203096141a083015280613960830151613d00840151096141c0830152806141a0830151614140840151086141e0830152806131e08301516107608401510961420083018190526138408301518291096142208301819052613980830151829182030961424083015280613980830151613d0084015109614260830152806142408301516141e084015108614280830152806131e0830151610780840151096142a083018190526138408301518291096142c083018190526139a083015182918203096142e0830152806139a0830151613d0084015109614300830152806142e083015161428084015108614320830152806131e08301516107a084015109614340830181905261384083015182910961436083018190526139c08301518291820309614380830152806139c0830151613d00840151096143a083015280614380830151614320840151086143c0830152806131e08301516107c0840151096143e0830181905261384083015182910961440083018190526139e08301518291820309614420830152806139e0830151613d0084015109614440830152806144208301516143c084015108614460830152806131e08301516107e08401510961448083018190526138408301518291096144a08301819052613a0083015182918203096144c083015280613a00830151613d00840151096144e0830152806144c083015161446084015108614500830152806131e08301516108208401510961452083018190526138408301518291096145408301819052613a20830151829182030961456083015280613a20830151613d008401510961458083015280614560830151614500840151086145a0830152806131e0830151610840840151096145c083018190526138408301518291096145e08301819052613a40830151829182030961460083015280613a40830151613d0084015109614620830152806146008301516145a084015108614640830152806131e08301516108608401510961466083018190526138408301518291096146808301819052613a6083015182918203096146a083015280613a60830151613d00840151096146c0830152806146a0830151614640840151086146e0830152806131e08301516108808401510961470083018190526138408301518291096147208301819052613a80830151829182030961474083015280613a80830151613d0084015109614760830152806147408301516146e084015108614780830152806131e08301516108a0840151096147a083018190526138408301518291096147c08301819052613aa083015182918203096147e083015280613aa0830151613d0084015109614800830152806147e083015161478084015108614820830152806131e08301516108c08401510961484083018190526138408301518291096148608301819052613ac0830151829182030961488083015280613ac0830151613d00840151096148a083015280614880830151614820840151086148c0830152806135e0830151612f60840151096148e0830152806135e0830151612f8084015109614900830152806135e0830151612fa084015109614920830152806135e0830151612fc084015109614940830152806131e0830151612fe08401510961496083018190526138408301518291096149808301819052613ae083015182918203096149a083015280613ae0830151613d00840151096149c083015280613ae08301516148e0840151096149e083015280613ae083015161490084015109614a0083015280613ae083015161492084015109614a2083015280613ae083015161494084015109614a40830152806149a08301516148c084015108614a60830152806131e083015161080084015109614a808301819052613840830151829109614aa08301819052613b008301518291820309614ac083015280613b00830151613d0084015109614ae083015280614ac0830151614a6084015108614b008301819052610aa0830151829109614b2083015280610aa0830151613d8084015109614b4083015280610aa0830151613e0084015109614b6083015280610aa0830151613ea084015109614b8083015280610aa0830151613f4084015109614ba083015280610aa0830151613fe084015109614bc083015280610aa083015161408084015109614be083015280610aa083015161412084015109614c0083015280610aa08301516141c084015109614c2083015280610aa083015161426084015109614c4083015280610aa083015161430084015109614c6083015280610aa08301516143a084015109614c8083015280610aa083015161444084015109614ca083015280610aa08301516144e084015109614cc083015280610aa083015161458084015109614ce083015280610aa083015161462084015109614d0083015280610aa08301516146c084015109614d2083015280610aa083015161476084015109614d4083015280610aa083015161480084015109614d6083015280610aa08301516148a084015109614d8083015280610aa08301516149c084015109614da083015280610aa08301516149e084015109614dc083015280610aa0830151614a0084015109614de083015280610aa0830151614a2084015109614e0083015280610aa0830151614a4084015109614e2083015280610aa0830151614ae084015109614e4083015280614b20830151613cc084015108614e6083015280613620830151600109614e80830152806132008301516108e084015109818183613220860151610900870151090890508181836132408601516109208701510908614ea084018190526138608401518392509009614ec0830152806001614ec0840151830309614ee0830152806001614e8084015109614f0083015280613b40830151614ee084015109614f2083015280613b40830151614f0084015109614f4083015280614f20830151614e6084015108614f6083015280613660830151600109614f8083015280613280830151610940840151098181836132a08601516109608701510908614fa084018190526138808401518392509009614fc0830152806001614fc0840151830309614fe0830152806001614f808401510961500083015280613280830151610980840151098181836132a08601516109a08701510908615020840181905261388084015183925090096150408301819052610a40830151829182030961506083015280610a40830151614f808401510961508083015280615060830151614fe0840151086150a08301819052613b608301518291096150c083015280613b60830151615000840151096150e083015280613b6083015161508084015109615100830152806150c0830151614f6084015108615120830152806136a0830151600109615140830152806132c08301516109c0840151098181836132e08601516109e0870151090861516084018190526138a084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c083015280613b808301516151a0840151096151e083015280613b808301516151c084015109615200830152806151e083015161512084015108615220830152806131c083015160010961524083015280610b408301516001096152608301526001615280830181815260026152a08501526152208401516152c085015284919060409060608160075afa141692506152808201516152e08301526152a08201516153008301526060820151615320830152608082015161534083015282600160406152e0850160806152e0870160065afa1416925060a082015161536083015260c0820151615380830152613ce08201516153a0830152826001604061536085016060615360870160075afa141692506152e08201516153c08301526153008201516153e083015261536082015161540083015261538082015161542083015282600160406153c0850160806153c0870160065afa1416925060e0820151615440830152610100820151615460830152614b40820151615480830152826001604061544085016060615440870160075afa141692506153c08201516154a08301526153e08201516154c08301526154408201516154e083015261546082015161550083015282600160406154a0850160806154a0870160065afa141692506101c08201516155208301526101e0820151615540830152614b60820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa141692507f291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db4252906156008301527f154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc615620830152614b80820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692507f176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d6156e08301527f1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51615700830152614ba082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e202507596157c08301527f0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea836157e0830152614bc082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af6158a08301527f24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c436158c0830152614be08201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa46159808301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c06159a0830152614c008201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed615a608301527f286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf615a80830152614c20820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5615b408301527f0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2615b60830152614c40820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36615c208301527f2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890615c40830152614c60820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f615d008301527f1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d615d20830152614c80820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c615de08301527f1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68615e00830152614ca0820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701615ec08301527f07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a615ee0830152614cc0820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d615fa08301527f154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6615fc0830152614ce0820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f2402db4b1c7746dcd9fe7eab82ab3fa7ebb1bd352a9af94ef6811b2af9ab6f8e6160808301527f2a0047ec08a254753c466648f0dc6e077e88e5495829c3a845873b9058bf44076160a0830152614d008201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a6161608301527f27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28616180830152614d208201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746162408301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616260830152614d40820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a6163208301527eb004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56616340830152614d60820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f2903a763c1c6b78667f906b6fe2b4ad197b55587c90e14e8502446da8c45ef7d6164008301527f13ea57986f9295e92def3303aef53f2b4f625ba985531201ab53dc7307f46b69616420830152614d80820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692506104208201516164e0830152610440820151616500830152614da082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692506104608201516165c08301526104808201516165e0830152614dc082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104a08201516166a08301526104c08201516166c0830152614de08201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104e08201516167808301526105008201516167a0830152614e008201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa14169250610520820151616860830152610540820151616880830152614e208201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa141692506103808201516169408301526103a0820151616960830152614e40820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa141692506102c0820151616a208301526102e0820151616a40830152614f40820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa14169250610300820151616b00830152610320820151616b208301526150e0820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610340820151616be0830152610360820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610180820151616cc08301526101a0820151616ce0830152615200820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610ae0820151616da0830152610b00820151616dc08301526152408201518103616de0830152508160016040616da084016060616da0860160075afa14169150616d20810151616e00820152616d40810151616e20820152616da0810151616e40820152616dc0810151616e608201528160016040616e0084016080616e00860160065afa14169150610b80810151616e80820152610ba0810151616ea0820152615260810151616ec08201528160016040616e8084016060616e80860160075afa14169150616e00810151616ee0820152616e20810151616f00820152616e80810151616f20820152616ea0810151616f408201528160016040616ee084016080616ee0860160065afa14169150616ee0810151616f60820152616f00810151616f808201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2616fa08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed616fc08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b616fe08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa617000820152610b80810151617020820152610ba08101516170408201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6170608201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6170808201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456170a08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff6170c08201528160016020616f608401610180616f60860160085afa616f6093909301516001149214161691505092915050565b604051806170c00160405280610386906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156152b1576152b1615272565b604052919050565b600082601f8301126152ca57600080fd5b813567ffffffffffffffff8111156152e4576152e4615272565b6152f7601f8201601f1916602001615288565b81815284602083860101111561530c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561533c57600080fd5b823567ffffffffffffffff8082111561535457600080fd5b818501915085601f83011261536857600080fd5b813560208282111561537c5761537c615272565b8160051b61538b828201615288565b928352848101820192828101908a8511156153a557600080fd5b958301955b848710156153c3578635825295830195908301906153aa565b97505050860135925050808211156153da57600080fd5b506153e7858286016152b9565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a26469706673582212208f0f08c113d71e9affd04a930a0ccffff41cc79e358932cfa7ac1395c242440564736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} +{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"pubInputs","type":"uint256[]"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b5061563680620000216000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154f8565b610057565b604051901515815260200160405180910390f35b60006001610063615421565b6000805160206155e18339815191526100d9565b6000805160206155c183398151915280831081831016908380096000805160206155c18339815191528384096000805160206155c183398151915284820990506000805160206155c18339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155e18339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610600830151820361062084015108611fa083015280611fa083015161068084015109611fc08301819052610600830151829108611fe0830152806106408301518203611fe0840151086120008301819052611ee083015182910961202083015280612020830151611f808401510861204083015280612040830151610420840151096120608301528061062083015182036106008401510861208083015280612080830151610680840151096120a083018190526106208301518291086120c08301528061066083015182036120c0840151086120e08301819052611ee08301518291096121008301528061210083015161206084015108612120830152806121208301516104208401510961214083015280611a00830151611da08401510961216083015280612160830151611a608401510961218083015280610620830151610600840151086121a08301528061068083015182036121a0840151086121c083018190526121808301518291096121e0830152806121e083015161214084015108612200830152806122008301516104208401510961222083018190526121e0830151829108612240830152806122408301516104208401510961226083015280610920830151820360010861228083018190526113008301518291096122a0830152806122a0830151612260840151086122c0830152806122c0830151610420840151096122e083015261098082015181908009612300830152806109808301518203612300840151086123208301819052611240830151829109612340830152806123408301516122e0840151086123608301528061236083015161042084015109612380830152806109608301518203610980840151086123a083018190526113008301518291096123c0830152806123c0830151612380840151086123e0830152806123e083015161042084015109612400830152806112408301518203600108612420830152806112808301516112608401510861244083018190526112a083015182910861246083018190526112c083015182910861248083018190526112e08301518291086124a0830152806124a08301518203612420840151086124c083015280610260830151610860840151096124e0830152806124e08301516106e08401510861250083018190526102c08301518291086125208301528061026083015161088084015109612540830152806125408301516106008401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108a0840151096125c0830152806125c0830151610620840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830152806102608301516108c084015109612640830152806126408301516107008401510861266083018190526102c083015182910861268083018190526126208301518291096126a083018190526109408301518291096126c0830152806102608301516001096126e0830152806126e08301516105c084015109612700830152806127008301516106e08401510861272083018190526102c0830151829108612740830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612760830152806127608301516105c08401510961278083015280612780830151610600840151086127a083018190526102c08301518291086127c083018190526127408301518291096127e0830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612800830152806128008301516105c084015109612820830152806128208301516106208401510861284083018190526102c083015182910861286083018190526127e0830151829109612880830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096128a0830152806128a08301516105c0840151096128c0830152806128c0830151610700840151086128e083018190526102c0830151829108612900830181905261288083015182910961292083018190526109208301518291096129408301528061294083015182036126c08401510861296083018190526124c083015182910961298083015280612980830151612400840151086129a0830152806129a0830151610420840151096129c0830152806102608301516108e0840151096129e0830152806129e083015161068084015108612a0083018190526102c0830151829108612a208301528061026083015161090084015109612a4083015280612a4083015161138084015108612a6083018190526102c0830151829108612a808301819052612a20830151829109612aa083018190526109a0830151829109612ac0830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612ae083015280612ae08301516105c084015109612b0083015280612b0083015161068084015108612b2083018190526102c0830151829108612b40830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612b6083015280612b608301516105c084015109612b8083015280612b8083015161138084015108612ba083018190526102c0830151829108612bc08301819052612b40830151829109612be08301819052610980830151829109612c0083015280612c008301518203612ac084015108612c2083018190526124c0830151829109612c4083015280612c408301516129c084015108612c6083015280612c6083015161042084015109612c80830152806109c08301518203600108612ca08301819052611300830151829109612cc083015280612cc0830151612c8084015108612ce083015280612ce083015161042084015109612d008301526109c082015181908009612d20830152806109c08301518203612d2084015108612d408301819052611240830151829109612d6083015280612d60830151612d0084015108612d8083015280612d8083015161042084015109612da083015280610260830151610a0084015108612dc083018190526109e0830151829109612de0830152806102c0830151610a4084015108612e008301819052612de0830151829109612e208301528061064083015161010009612e4083015280612e40830151820361060084015108612e608301819052610780830151829109612e808301819052610260830151829108612ea083018190526109c0830151829109612ec0830152806102c083015161076084015108612ee08301819052612ec0830151829109612f0083015280612f008301518203612e2084015108612f2083018190526124c0830151829109612f4083015280612f40830151612da084015108612f6083015280612f6083015161042084015109612f8083015280610a408301518203610a0084015108612fa08301819052611300830151829109612fc083015280612fc0830151612f8084015108612fe083015280612fe083015161042084015109613000830152806124c0830151612fa08401510961302083015280610a208301518203610a008401510861304083018190526130208301518291096130608301528061306083015161300084015108613080830152610d40820151819080096130a08301819052610d408301518291096130c08301819052610d408301518291096130e08301819052610d4083015182910961310083015280610d40830151600109613120830152806130a0830151600109613140830152806130c0830151600109613160830152806130e083015160010961318083015280610d60830151613080840151096131a0830152806105c0830151610c00840151096131c08301528060016105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c084015109613220830152806132208301518203610b8084015108613240830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c084015109613260830152806132608301518203610b8084015108613280830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c0840151096132a0830152806132a08301518203610b80840151086132c083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132e08401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806133008401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c08701510908613320840152506132008201518190600109613340830181905261324083015182910961336083018190526132c0830151829109613380830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133a08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133c08401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133e08401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613400840152506132808201516133608301518291900961342083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806134408401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806134608401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134808401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c087015109086134a0840152506132c0820151613340830151829190096134c08301526132e08201518181613300850151099050806134e084015281816133208501510990508061350084015281816133a08501510990508061352084015281816133408501510990508061354084015281816133c08501510990508061356084015281816133e0850151099050806135808401528181613400850151099050806135a08401528181613420850151099050806135c08401528181613440850151099050806135e084015281816134608501510990508061360084015281816133608501510990508061362084015281816134808501510990508061364084015281816134a08501510990508061366084015281816134c0850151099050806136808401525060206136c083015260206136e083015260206137008301526136808201516137208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6137408301526000805160206155e183398151915261376083015282600160206136a0850160c06136c0870160055afa141692506136a082015160006134c084015190508282613660860151096134c08501528282820991506134a084015190508282613640860151096134a085015282828209915061348084015190508282613620860151096134808501528282820991506133608401519050828261360086015109613360850152828282099150613460840151905082826135e086015109613460850152828282099150613440840151905082826135c086015109613440850152828282099150613420840151905082826135a08601510961342085015282828209915061340084015190508282613580860151096134008501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c085015282828209915061334084015190508282613520860151096133408501528282820991506133a084015190508282613500860151096133a0850152828282099150613320840151905082826134e086015109613320850152828282099150613300840151905082826132e086015109613300850152828282096132e08501819052613300850151909250839150829008905081816133208501510861378084015250613340820151613380830151829190096137a08301526133a0820151806137c08401525080613420830151613380840151096137e08301526133c082015181816133e08501510890508181613400850151086138008401525061336082015161338083015182919009613820830152613440820151818161346085015108613840840152506134c08201516133808301518291900961386083015261348082015181816134a085015108613880840152506137808201516137c083015182908290099050806138a08401528181613800850151099050806138c08401528181613840850151099050806138e0840152818161388085015109905080613900840152506020613940830152602061396083015260206139808301526139008201516139a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6139c08301526000805160206155e18339815191526139e08301528260016020613920850160c0613940870160055afa141692506139208201516000613880840151905082826138e086015109613880850152828282099150613840840151905082826138c086015109613840850152828282099150613800840151905082826138a0860151096138008501528282820991506137c084015190508282613780860151096137c08501528282820961378085015250506137c08201516137a083015182919009613a00830152806138008301516137e084015109613a208301528061384083015161382084015109613a408301528061388083015161386084015109613a60830152610a8082015181908009613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c608301819052610a80830151829109613c808301819052610a80830151829109613ca08301819052610a80830151829109613cc08301819052610a80830151829109613ce0830152610ae082015181908009613d008301819052610ae0830151829109613d208301819052610ae0830151829109613d408301819052610ae0830151829109613d60830152806132e083015161060084015109818183613300860151610640870151090890508181836133208601516106c08701510908613d8084018190526137808401518392509009613da0830152806001613da0840151830309613dc0830152806132e083015161062084015109818183613300860151610660870151090890508181836133208601516106a08701510908613de084018190526137808401518392509009613e008301819052610a808301518291820309613e2083015280610a80830151600109613e4083015280613e20830151613dc084015108613e60830152806001613e6084015109613e80830152806001613e4084015109613ea0830152806137a0830151600109613ec0830152806133a083015161068084015109613ee08301819052613a00830151829109613f00830152806001613f00840151830309613f20830152806001613ec084015109613f40830152806133a0830151610a4084015109613f608301819052613a00830151829109613f808301819052610a808301518291820309613fa083015280610a80830151613ec084015109613fc083015280613fa0830151613f2084015108613fe0830152806133a08301516106e0840151096140008301819052613a008301518291096140208301819052613a80830151829182030961404083015280613a80830151613ec08401510961406083015280614040830151613fe084015108614080830152806133a0830151610700840151096140a08301819052613a008301518291096140c08301819052613aa083015182918203096140e083015280613aa0830151613ec084015109614100830152806140e083015161408084015108614120830152806133a0830151610720840151096141408301819052613a008301518291096141608301819052613ac0830151829182030961418083015280613ac0830151613ec0840151096141a083015280614180830151614120840151086141c0830152806133a0830151610740840151096141e08301819052613a008301518291096142008301819052613ae0830151829182030961422083015280613ae0830151613ec084015109614240830152806142208301516141c084015108614260830152806133a0830151610760840151096142808301819052613a008301518291096142a08301819052613b0083015182918203096142c083015280613b00830151613ec0840151096142e0830152806142c083015161426084015108614300830152806133a0830151610780840151096143208301819052613a008301518291096143408301819052613b20830151829182030961436083015280613b20830151613ec08401510961438083015280614360830151614300840151086143a0830152806133a08301516107a0840151096143c08301819052613a008301518291096143e08301819052613b40830151829182030961440083015280613b40830151613ec084015109614420830152806144008301516143a084015108614440830152806133a08301516107c0840151096144608301819052613a008301518291096144808301819052613b6083015182918203096144a083015280613b60830151613ec0840151096144c0830152806144a0830151614440840151086144e0830152806133a08301516107e0840151096145008301819052613a008301518291096145208301819052613b80830151829182030961454083015280613b80830151613ec084015109614560830152806145408301516144e084015108614580830152806133a0830151610800840151096145a08301819052613a008301518291096145c08301819052613ba083015182918203096145e083015280613ba0830151613ec084015109614600830152806145e083015161458084015108614620830152806133a0830151610820840151096146408301819052613a008301518291096146608301819052613bc0830151829182030961468083015280613bc0830151613ec0840151096146a083015280614680830151614620840151086146c0830152806133a0830151610860840151096146e08301819052613a008301518291096147008301819052613be0830151829182030961472083015280613be0830151613ec084015109614740830152806147208301516146c084015108614760830152806133a0830151610880840151096147808301819052613a008301518291096147a08301819052613c0083015182918203096147c083015280613c00830151613ec0840151096147e0830152806147c083015161476084015108614800830152806133a08301516108a0840151096148208301819052613a008301518291096148408301819052613c20830151829182030961486083015280613c20830151613ec08401510961488083015280614860830151614800840151086148a0830152806133a08301516108c0840151096148c08301819052613a008301518291096148e08301819052613c40830151829182030961490083015280613c40830151613ec084015109614920830152806149008301516148a084015108614940830152806133a08301516108e0840151096149608301819052613a008301518291096149808301819052613c6083015182918203096149a083015280613c60830151613ec0840151096149c0830152806149a0830151614940840151086149e0830152806133a083015161090084015109614a008301819052613a00830151829109614a208301819052613c808301518291820309614a4083015280613c80830151613ec084015109614a6083015280614a408301516149e084015108614a80830152806137a083015161312084015109614aa0830152806137a083015161314084015109614ac0830152806137a083015161316084015109614ae0830152806137a083015161318084015109614b00830152806133a08301516131a084015109614b208301819052613a00830151829109614b408301819052613ca08301518291820309614b6083015280613ca0830151613ec084015109614b8083015280613ca0830151614aa084015109614ba083015280613ca0830151614ac084015109614bc083015280613ca0830151614ae084015109614be083015280613ca0830151614b0084015109614c0083015280614b60830151614a8084015108614c20830152806133a083015161084084015109614c408301819052613a00830151829109614c608301819052613cc08301518291820309614c8083015280613cc0830151613ec084015109614ca083015280614c80830151614c2084015108614cc08301819052610ae0830151829109614ce083015280610ae0830151613f4084015109614d0083015280610ae0830151613fc084015109614d2083015280610ae083015161406084015109614d4083015280610ae083015161410084015109614d6083015280610ae08301516141a084015109614d8083015280610ae083015161424084015109614da083015280610ae08301516142e084015109614dc083015280610ae083015161438084015109614de083015280610ae083015161442084015109614e0083015280610ae08301516144c084015109614e2083015280610ae083015161456084015109614e4083015280610ae083015161460084015109614e6083015280610ae08301516146a084015109614e8083015280610ae083015161474084015109614ea083015280610ae08301516147e084015109614ec083015280610ae083015161488084015109614ee083015280610ae083015161492084015109614f0083015280610ae08301516149c084015109614f2083015280610ae0830151614a6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614ba084015109614f8083015280610ae0830151614bc084015109614fa083015280610ae0830151614be084015109614fc083015280610ae0830151614c0084015109614fe083015280610ae0830151614ca08401510961500083015280614ce0830151613e8084015108615020830152806137e0830151600109615040830152806133c0830151610920840151098181836133e08601516109408701510908905081818361340086015161096087015109086150608401819052613a2084015183925090096150808301528060016150808401518303096150a0830152806001615040840151096150c083015280613d008301516150a0840151096150e083015280613d008301516150c084015109615100830152806150e0830151615020840151086151208301528061382083015160010961514083015280613440830151610980840151098181836134608601516109a087015109086151608401819052613a4084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c0830152806134408301516109c0840151098181836134608601516109e087015109086151e08401819052613a4084015183925090096152008301819052610a80830151829182030961522083015280610a8083015161514084015109615240830152806152208301516151a0840151086152608301819052613d2083015182910961528083015280613d208301516151c0840151096152a083015280613d20830151615240840151096152c083015280615280830151615120840151086152e08301528061386083015160010961530083015280613480830151610a00840151098181836134a0860151610a2087015109086153208401819052613a6084015183925090096153408301528060016153408401518303096153608301528060016153008401510961538083015280613d40830151615360840151096153a083015280613d40830151615380840151096153c0830152806153a08301516152e0840151086153e08301528061338083015160010961540083015280610b808301516001096154208301526001615440830181815260026154608501526153e084015161548085015284919060409060608160075afa141692506154408201516154a08301526154608201516154c083015260a08201516154e083015260c082015161550083015282600160406154a0850160806154a0870160065afa1416925060e0820151615520830152610100820151615540830152613ea0820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa14169250610120820151615600830152610140820151615620830152614d00820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692506102008201516156e0830152610220820151615700830152614d2082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906157c08301527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a956157e0830152614d4082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a36158a08301527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b66158c0830152614d608201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e6159808301527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b6159a0830152614d808201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056615a608301527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c615a80830152614da0820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615b408301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615b60830152614dc0820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8615c208301527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78615c40830152614de0820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5615d008301527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098615d20830152614e00820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615de08301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615e00830152614e20820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615ec08301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615ee0830152614e40820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa615fa08301527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289615fc0830152614e60820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f817436160808301527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c6160a0830152614e808201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe6161608301527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a616180830152614ea08201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad6162408301527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960616260830152614ec0820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d226163208301527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac616340830152614ee0820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746164008301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616420830152614f00820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692507f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e6164e08301527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb616500830152614f2082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692507f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf06165c08301527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb3916165e0830152614f4082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104608201516166a08301526104808201516166c0830152614f608201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104a08201516167808301526104c08201516167a0830152614f808201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa141692506104e0820151616860830152610500820151616880830152614fa08201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa14169250610520820151616940830152610540820151616960830152614fc0820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa14169250610560820151616a20830152610580820151616a40830152614fe0820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa141692506103c0820151616b008301526103e0820151616b20830152615000820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610300820151616be0830152610320820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610340820151616cc0830152610360820151616ce08301526152a0820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610380820151616da08301526103a0820151616dc08301526152c0820151616de08301528260016040616da085016060616da0870160075afa14169250616d20820151616e00830152616d40820151616e20830152616da0820151616e40830152616dc0820151616e608301528260016040616e0085016080616e00870160065afa141692506101c0820151616e808301526101e0820151616ea08301526153c0820151616ec08301528260016040616e8085016060616e80870160075afa14169250616e00820151616ee0830152616e20820151616f00830152616e80820151616f20830152616ea0820151616f408301528260016040616ee085016080616ee0870160065afa14169250610b20820151616f60830152610b40820151616f808301526154008201518103616fa0830152508160016040616f6084016060616f60860160075afa14169150616ee0810151616fc0820152616f00810151616fe0820152616f60810151617000820152616f808101516170208201528160016040616fc084016080616fc0860160065afa14169150610bc0810151617040820152610be0810151617060820152615420810151617080820152816001604061704084016060617040860160075afa14169150616fc08101516170a0820152616fe08101516170c08201526170408101516170e082015261706081015161710082015281600160406170a0840160806170a0860160065afa141691506170a08101516171208201526170c08101516171408201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26171608201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171808201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171a08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6171c0820152610bc08101516171e0820152610be08101516172008201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6172208201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6172408201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456172608201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61728082015281600160206171208401610180617120860160085afa61712093909301516001149214161691505092915050565b604051806172800160405280610394906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561548057615480615441565b604052919050565b600082601f83011261549957600080fd5b813567ffffffffffffffff8111156154b3576154b3615441565b6154c6601f8201601f1916602001615457565b8181528460208386010111156154db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561550b57600080fd5b823567ffffffffffffffff8082111561552357600080fd5b818501915085601f83011261553757600080fd5b813560208282111561554b5761554b615441565b8160051b61555a828201615457565b928352848101820192828101908a85111561557457600080fd5b958301955b8487101561559257863582529583019590830190615579565b97505050860135925050808211156155a957600080fd5b506155b685828601615488565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220433d439b616c9b0984aa273d65d03bbc910a575c3fc62a9c5097577b1baffcd564736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154f8565b610057565b604051901515815260200160405180910390f35b60006001610063615421565b6000805160206155e18339815191526100d9565b6000805160206155c183398151915280831081831016908380096000805160206155c18339815191528384096000805160206155c183398151915284820990506000805160206155c18339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155e18339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610600830151820361062084015108611fa083015280611fa083015161068084015109611fc08301819052610600830151829108611fe0830152806106408301518203611fe0840151086120008301819052611ee083015182910961202083015280612020830151611f808401510861204083015280612040830151610420840151096120608301528061062083015182036106008401510861208083015280612080830151610680840151096120a083018190526106208301518291086120c08301528061066083015182036120c0840151086120e08301819052611ee08301518291096121008301528061210083015161206084015108612120830152806121208301516104208401510961214083015280611a00830151611da08401510961216083015280612160830151611a608401510961218083015280610620830151610600840151086121a08301528061068083015182036121a0840151086121c083018190526121808301518291096121e0830152806121e083015161214084015108612200830152806122008301516104208401510961222083018190526121e0830151829108612240830152806122408301516104208401510961226083015280610920830151820360010861228083018190526113008301518291096122a0830152806122a0830151612260840151086122c0830152806122c0830151610420840151096122e083015261098082015181908009612300830152806109808301518203612300840151086123208301819052611240830151829109612340830152806123408301516122e0840151086123608301528061236083015161042084015109612380830152806109608301518203610980840151086123a083018190526113008301518291096123c0830152806123c0830151612380840151086123e0830152806123e083015161042084015109612400830152806112408301518203600108612420830152806112808301516112608401510861244083018190526112a083015182910861246083018190526112c083015182910861248083018190526112e08301518291086124a0830152806124a08301518203612420840151086124c083015280610260830151610860840151096124e0830152806124e08301516106e08401510861250083018190526102c08301518291086125208301528061026083015161088084015109612540830152806125408301516106008401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108a0840151096125c0830152806125c0830151610620840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830152806102608301516108c084015109612640830152806126408301516107008401510861266083018190526102c083015182910861268083018190526126208301518291096126a083018190526109408301518291096126c0830152806102608301516001096126e0830152806126e08301516105c084015109612700830152806127008301516106e08401510861272083018190526102c0830151829108612740830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612760830152806127608301516105c08401510961278083015280612780830151610600840151086127a083018190526102c08301518291086127c083018190526127408301518291096127e0830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612800830152806128008301516105c084015109612820830152806128208301516106208401510861284083018190526102c083015182910861286083018190526127e0830151829109612880830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096128a0830152806128a08301516105c0840151096128c0830152806128c0830151610700840151086128e083018190526102c0830151829108612900830181905261288083015182910961292083018190526109208301518291096129408301528061294083015182036126c08401510861296083018190526124c083015182910961298083015280612980830151612400840151086129a0830152806129a0830151610420840151096129c0830152806102608301516108e0840151096129e0830152806129e083015161068084015108612a0083018190526102c0830151829108612a208301528061026083015161090084015109612a4083015280612a4083015161138084015108612a6083018190526102c0830151829108612a808301819052612a20830151829109612aa083018190526109a0830151829109612ac0830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612ae083015280612ae08301516105c084015109612b0083015280612b0083015161068084015108612b2083018190526102c0830151829108612b40830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612b6083015280612b608301516105c084015109612b8083015280612b8083015161138084015108612ba083018190526102c0830151829108612bc08301819052612b40830151829109612be08301819052610980830151829109612c0083015280612c008301518203612ac084015108612c2083018190526124c0830151829109612c4083015280612c408301516129c084015108612c6083015280612c6083015161042084015109612c80830152806109c08301518203600108612ca08301819052611300830151829109612cc083015280612cc0830151612c8084015108612ce083015280612ce083015161042084015109612d008301526109c082015181908009612d20830152806109c08301518203612d2084015108612d408301819052611240830151829109612d6083015280612d60830151612d0084015108612d8083015280612d8083015161042084015109612da083015280610260830151610a0084015108612dc083018190526109e0830151829109612de0830152806102c0830151610a4084015108612e008301819052612de0830151829109612e208301528061064083015161010009612e4083015280612e40830151820361060084015108612e608301819052610780830151829109612e808301819052610260830151829108612ea083018190526109c0830151829109612ec0830152806102c083015161076084015108612ee08301819052612ec0830151829109612f0083015280612f008301518203612e2084015108612f2083018190526124c0830151829109612f4083015280612f40830151612da084015108612f6083015280612f6083015161042084015109612f8083015280610a408301518203610a0084015108612fa08301819052611300830151829109612fc083015280612fc0830151612f8084015108612fe083015280612fe083015161042084015109613000830152806124c0830151612fa08401510961302083015280610a208301518203610a008401510861304083018190526130208301518291096130608301528061306083015161300084015108613080830152610d40820151819080096130a08301819052610d408301518291096130c08301819052610d408301518291096130e08301819052610d4083015182910961310083015280610d40830151600109613120830152806130a0830151600109613140830152806130c0830151600109613160830152806130e083015160010961318083015280610d60830151613080840151096131a0830152806105c0830151610c00840151096131c08301528060016105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c084015109613220830152806132208301518203610b8084015108613240830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c084015109613260830152806132608301518203610b8084015108613280830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c0840151096132a0830152806132a08301518203610b80840151086132c083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132e08401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806133008401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c08701510908613320840152506132008201518190600109613340830181905261324083015182910961336083018190526132c0830151829109613380830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133a08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133c08401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133e08401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613400840152506132808201516133608301518291900961342083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806134408401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806134608401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134808401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c087015109086134a0840152506132c0820151613340830151829190096134c08301526132e08201518181613300850151099050806134e084015281816133208501510990508061350084015281816133a08501510990508061352084015281816133408501510990508061354084015281816133c08501510990508061356084015281816133e0850151099050806135808401528181613400850151099050806135a08401528181613420850151099050806135c08401528181613440850151099050806135e084015281816134608501510990508061360084015281816133608501510990508061362084015281816134808501510990508061364084015281816134a08501510990508061366084015281816134c0850151099050806136808401525060206136c083015260206136e083015260206137008301526136808201516137208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6137408301526000805160206155e183398151915261376083015282600160206136a0850160c06136c0870160055afa141692506136a082015160006134c084015190508282613660860151096134c08501528282820991506134a084015190508282613640860151096134a085015282828209915061348084015190508282613620860151096134808501528282820991506133608401519050828261360086015109613360850152828282099150613460840151905082826135e086015109613460850152828282099150613440840151905082826135c086015109613440850152828282099150613420840151905082826135a08601510961342085015282828209915061340084015190508282613580860151096134008501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c085015282828209915061334084015190508282613520860151096133408501528282820991506133a084015190508282613500860151096133a0850152828282099150613320840151905082826134e086015109613320850152828282099150613300840151905082826132e086015109613300850152828282096132e08501819052613300850151909250839150829008905081816133208501510861378084015250613340820151613380830151829190096137a08301526133a0820151806137c08401525080613420830151613380840151096137e08301526133c082015181816133e08501510890508181613400850151086138008401525061336082015161338083015182919009613820830152613440820151818161346085015108613840840152506134c08201516133808301518291900961386083015261348082015181816134a085015108613880840152506137808201516137c083015182908290099050806138a08401528181613800850151099050806138c08401528181613840850151099050806138e0840152818161388085015109905080613900840152506020613940830152602061396083015260206139808301526139008201516139a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6139c08301526000805160206155e18339815191526139e08301528260016020613920850160c0613940870160055afa141692506139208201516000613880840151905082826138e086015109613880850152828282099150613840840151905082826138c086015109613840850152828282099150613800840151905082826138a0860151096138008501528282820991506137c084015190508282613780860151096137c08501528282820961378085015250506137c08201516137a083015182919009613a00830152806138008301516137e084015109613a208301528061384083015161382084015109613a408301528061388083015161386084015109613a60830152610a8082015181908009613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c608301819052610a80830151829109613c808301819052610a80830151829109613ca08301819052610a80830151829109613cc08301819052610a80830151829109613ce0830152610ae082015181908009613d008301819052610ae0830151829109613d208301819052610ae0830151829109613d408301819052610ae0830151829109613d60830152806132e083015161060084015109818183613300860151610640870151090890508181836133208601516106c08701510908613d8084018190526137808401518392509009613da0830152806001613da0840151830309613dc0830152806132e083015161062084015109818183613300860151610660870151090890508181836133208601516106a08701510908613de084018190526137808401518392509009613e008301819052610a808301518291820309613e2083015280610a80830151600109613e4083015280613e20830151613dc084015108613e60830152806001613e6084015109613e80830152806001613e4084015109613ea0830152806137a0830151600109613ec0830152806133a083015161068084015109613ee08301819052613a00830151829109613f00830152806001613f00840151830309613f20830152806001613ec084015109613f40830152806133a0830151610a4084015109613f608301819052613a00830151829109613f808301819052610a808301518291820309613fa083015280610a80830151613ec084015109613fc083015280613fa0830151613f2084015108613fe0830152806133a08301516106e0840151096140008301819052613a008301518291096140208301819052613a80830151829182030961404083015280613a80830151613ec08401510961406083015280614040830151613fe084015108614080830152806133a0830151610700840151096140a08301819052613a008301518291096140c08301819052613aa083015182918203096140e083015280613aa0830151613ec084015109614100830152806140e083015161408084015108614120830152806133a0830151610720840151096141408301819052613a008301518291096141608301819052613ac0830151829182030961418083015280613ac0830151613ec0840151096141a083015280614180830151614120840151086141c0830152806133a0830151610740840151096141e08301819052613a008301518291096142008301819052613ae0830151829182030961422083015280613ae0830151613ec084015109614240830152806142208301516141c084015108614260830152806133a0830151610760840151096142808301819052613a008301518291096142a08301819052613b0083015182918203096142c083015280613b00830151613ec0840151096142e0830152806142c083015161426084015108614300830152806133a0830151610780840151096143208301819052613a008301518291096143408301819052613b20830151829182030961436083015280613b20830151613ec08401510961438083015280614360830151614300840151086143a0830152806133a08301516107a0840151096143c08301819052613a008301518291096143e08301819052613b40830151829182030961440083015280613b40830151613ec084015109614420830152806144008301516143a084015108614440830152806133a08301516107c0840151096144608301819052613a008301518291096144808301819052613b6083015182918203096144a083015280613b60830151613ec0840151096144c0830152806144a0830151614440840151086144e0830152806133a08301516107e0840151096145008301819052613a008301518291096145208301819052613b80830151829182030961454083015280613b80830151613ec084015109614560830152806145408301516144e084015108614580830152806133a0830151610800840151096145a08301819052613a008301518291096145c08301819052613ba083015182918203096145e083015280613ba0830151613ec084015109614600830152806145e083015161458084015108614620830152806133a0830151610820840151096146408301819052613a008301518291096146608301819052613bc0830151829182030961468083015280613bc0830151613ec0840151096146a083015280614680830151614620840151086146c0830152806133a0830151610860840151096146e08301819052613a008301518291096147008301819052613be0830151829182030961472083015280613be0830151613ec084015109614740830152806147208301516146c084015108614760830152806133a0830151610880840151096147808301819052613a008301518291096147a08301819052613c0083015182918203096147c083015280613c00830151613ec0840151096147e0830152806147c083015161476084015108614800830152806133a08301516108a0840151096148208301819052613a008301518291096148408301819052613c20830151829182030961486083015280613c20830151613ec08401510961488083015280614860830151614800840151086148a0830152806133a08301516108c0840151096148c08301819052613a008301518291096148e08301819052613c40830151829182030961490083015280613c40830151613ec084015109614920830152806149008301516148a084015108614940830152806133a08301516108e0840151096149608301819052613a008301518291096149808301819052613c6083015182918203096149a083015280613c60830151613ec0840151096149c0830152806149a0830151614940840151086149e0830152806133a083015161090084015109614a008301819052613a00830151829109614a208301819052613c808301518291820309614a4083015280613c80830151613ec084015109614a6083015280614a408301516149e084015108614a80830152806137a083015161312084015109614aa0830152806137a083015161314084015109614ac0830152806137a083015161316084015109614ae0830152806137a083015161318084015109614b00830152806133a08301516131a084015109614b208301819052613a00830151829109614b408301819052613ca08301518291820309614b6083015280613ca0830151613ec084015109614b8083015280613ca0830151614aa084015109614ba083015280613ca0830151614ac084015109614bc083015280613ca0830151614ae084015109614be083015280613ca0830151614b0084015109614c0083015280614b60830151614a8084015108614c20830152806133a083015161084084015109614c408301819052613a00830151829109614c608301819052613cc08301518291820309614c8083015280613cc0830151613ec084015109614ca083015280614c80830151614c2084015108614cc08301819052610ae0830151829109614ce083015280610ae0830151613f4084015109614d0083015280610ae0830151613fc084015109614d2083015280610ae083015161406084015109614d4083015280610ae083015161410084015109614d6083015280610ae08301516141a084015109614d8083015280610ae083015161424084015109614da083015280610ae08301516142e084015109614dc083015280610ae083015161438084015109614de083015280610ae083015161442084015109614e0083015280610ae08301516144c084015109614e2083015280610ae083015161456084015109614e4083015280610ae083015161460084015109614e6083015280610ae08301516146a084015109614e8083015280610ae083015161474084015109614ea083015280610ae08301516147e084015109614ec083015280610ae083015161488084015109614ee083015280610ae083015161492084015109614f0083015280610ae08301516149c084015109614f2083015280610ae0830151614a6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614ba084015109614f8083015280610ae0830151614bc084015109614fa083015280610ae0830151614be084015109614fc083015280610ae0830151614c0084015109614fe083015280610ae0830151614ca08401510961500083015280614ce0830151613e8084015108615020830152806137e0830151600109615040830152806133c0830151610920840151098181836133e08601516109408701510908905081818361340086015161096087015109086150608401819052613a2084015183925090096150808301528060016150808401518303096150a0830152806001615040840151096150c083015280613d008301516150a0840151096150e083015280613d008301516150c084015109615100830152806150e0830151615020840151086151208301528061382083015160010961514083015280613440830151610980840151098181836134608601516109a087015109086151608401819052613a4084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c0830152806134408301516109c0840151098181836134608601516109e087015109086151e08401819052613a4084015183925090096152008301819052610a80830151829182030961522083015280610a8083015161514084015109615240830152806152208301516151a0840151086152608301819052613d2083015182910961528083015280613d208301516151c0840151096152a083015280613d20830151615240840151096152c083015280615280830151615120840151086152e08301528061386083015160010961530083015280613480830151610a00840151098181836134a0860151610a2087015109086153208401819052613a6084015183925090096153408301528060016153408401518303096153608301528060016153008401510961538083015280613d40830151615360840151096153a083015280613d40830151615380840151096153c0830152806153a08301516152e0840151086153e08301528061338083015160010961540083015280610b808301516001096154208301526001615440830181815260026154608501526153e084015161548085015284919060409060608160075afa141692506154408201516154a08301526154608201516154c083015260a08201516154e083015260c082015161550083015282600160406154a0850160806154a0870160065afa1416925060e0820151615520830152610100820151615540830152613ea0820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa14169250610120820151615600830152610140820151615620830152614d00820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692506102008201516156e0830152610220820151615700830152614d2082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906157c08301527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a956157e0830152614d4082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a36158a08301527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b66158c0830152614d608201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e6159808301527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b6159a0830152614d808201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056615a608301527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c615a80830152614da0820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615b408301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615b60830152614dc0820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8615c208301527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78615c40830152614de0820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5615d008301527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098615d20830152614e00820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615de08301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615e00830152614e20820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615ec08301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615ee0830152614e40820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa615fa08301527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289615fc0830152614e60820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f817436160808301527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c6160a0830152614e808201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe6161608301527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a616180830152614ea08201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad6162408301527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960616260830152614ec0820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d226163208301527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac616340830152614ee0820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746164008301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616420830152614f00820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692507f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e6164e08301527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb616500830152614f2082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692507f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf06165c08301527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb3916165e0830152614f4082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104608201516166a08301526104808201516166c0830152614f608201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104a08201516167808301526104c08201516167a0830152614f808201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa141692506104e0820151616860830152610500820151616880830152614fa08201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa14169250610520820151616940830152610540820151616960830152614fc0820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa14169250610560820151616a20830152610580820151616a40830152614fe0820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa141692506103c0820151616b008301526103e0820151616b20830152615000820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610300820151616be0830152610320820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610340820151616cc0830152610360820151616ce08301526152a0820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610380820151616da08301526103a0820151616dc08301526152c0820151616de08301528260016040616da085016060616da0870160075afa14169250616d20820151616e00830152616d40820151616e20830152616da0820151616e40830152616dc0820151616e608301528260016040616e0085016080616e00870160065afa141692506101c0820151616e808301526101e0820151616ea08301526153c0820151616ec08301528260016040616e8085016060616e80870160075afa14169250616e00820151616ee0830152616e20820151616f00830152616e80820151616f20830152616ea0820151616f408301528260016040616ee085016080616ee0870160065afa14169250610b20820151616f60830152610b40820151616f808301526154008201518103616fa0830152508160016040616f6084016060616f60860160075afa14169150616ee0810151616fc0820152616f00810151616fe0820152616f60810151617000820152616f808101516170208201528160016040616fc084016080616fc0860160065afa14169150610bc0810151617040820152610be0810151617060820152615420810151617080820152816001604061704084016060617040860160075afa14169150616fc08101516170a0820152616fe08101516170c08201526170408101516170e082015261706081015161710082015281600160406170a0840160806170a0860160065afa141691506170a08101516171208201526170c08101516171408201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26171608201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171808201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171a08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6171c0820152610bc08101516171e0820152610be08101516172008201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6172208201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6172408201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456172608201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61728082015281600160206171208401610180617120860160085afa61712093909301516001149214161691505092915050565b604051806172800160405280610394906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561548057615480615441565b604052919050565b600082601f83011261549957600080fd5b813567ffffffffffffffff8111156154b3576154b3615441565b6154c6601f8201601f1916602001615457565b8181528460208386010111156154db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561550b57600080fd5b823567ffffffffffffffff8082111561552357600080fd5b818501915085601f83011261553757600080fd5b813560208282111561554b5761554b615441565b8160051b61555a828201615457565b928352848101820192828101908a85111561557457600080fd5b958301955b8487101561559257863582529583019590830190615579565b97505050860135925050808211156155a957600080fd5b506155b685828601615488565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220433d439b616c9b0984aa273d65d03bbc910a575c3fc62a9c5097577b1baffcd564736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/abi/SolvencyVerifier.json b/backend/src/contracts/abi/SolvencyVerifier.json deleted file mode 100644 index 8d5d66bf..00000000 --- a/backend/src/contracts/abi/SolvencyVerifier.json +++ /dev/null @@ -1 +0,0 @@ -{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/SolvencyVerifier.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"pubInputs","type":"uint256[]"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50615012806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e366004614ed4565b610057565b604051901515815260200160405180910390f35b60006001610063614dfd565b600080516020614fbd8339815191526100d9565b600080516020614f9d8339815191528083108183101690838009600080516020614f9d833981519152838409600080516020614f9d8339815191528482099050600080516020614f9d8339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301527eae99b137916ff4220b0da7179a4601301c82346fc665cd3369a54e1f02d4ea6000830152602085015180608084015260408601518060a0850152846101438284610077565b169450505060608501518060c084015260808601518060e0850152846101698284610077565b169450505060a08501518061010084015260c086015180610120850152846101918284610077565b16945050506101406000830120610140830152610140820151818106610160840152806101808401525060e0850151806101a0840152610100860151806101c0850152846101df8284610077565b1694505050610120850151806101e084015261014086015180610200850152846102098284610077565b60a061018087012061022087018190528581066102408801526102608701521694506001915050610280830153602161026083012061028083018190528181066102a08401526102c08301526101608501516102e0830181905261018086015161030084018190528461027c8284610077565b16945050506101a0850151806103208401526101c086015180610340850152846102a68284610077565b16945050506101e08501518061036084015261020086015180610380850152846102d08284610077565b1694505050610220850151806103a0840152610240860151806103c0850152846102fa8284610077565b16945050506101206102c08301206103e08301526103e0820151818106610400840152806104208401525061026085015180610440840152610280860151806104608501528461034a8284610077565b16945050506102a0850151806104808401526102c0860151806104a0850152846103748284610077565b16945050506102e0850151806104c0840152610300860151806104e08501528461039e8284610077565b16945050506103208501518061050084015261034086015180610520850152846103c88284610077565b16945050506103608501518061054084015261038086015180610560850152846103f28284610077565b16945050506101606104208301206105808301526105808201518181066105a0840152806105c084015250806103a0860151066105e0830152806103c086015106610600830152806103e08601510661062083015280610400860151066106408301528061042086015106610660830152806104408601510661068083015280610460860151066106a083015280610480860151066106c0830152806104a0860151066106e0830152806104c086015106610700830152806104e08601510661072083015280610500860151066107408301528061052086015106610760830152806105408601510661078083015280610560860151066107a083015280610580860151066107c0830152806105a0860151066107e0830152806105c086015106610800830152806105e08601510661082083015280610600860151066108408301528061062086015106610860830152806106408601510661088083015280610660860151066108a083015280610680860151066108c0830152806106a0860151066108e0830152806106c086015106610900830152806106e08601510661092083015280610700860151066109408301528061072086015106610960830152806107408601510661098083015280610760860151066109a083015280610780860151066109c0830152806107a0860151066109e08301526104406105c0830120610a00830152610a00820151818106610a2084015280610a40840152506001610a608301536021610a40830120610a608301819052818106610a80840152610aa08301526107c0850151610ac083018190526107e0860151610ae084018190528461065f8284610077565b16945050506060610aa0830120610b00830152610b00820151818106610b2084015280610b408401525061080085015180610b6084015261082086015180610b80850152846106ae8284610077565b1694505050806105a08301516105a084015109610ba0830181905281908009610bc0830181905281908009610be0830181905281908009610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610cc084015108610ce0830152807f3058355f447953c1ade231a513e0f80710e9db4e679b02351f90fd168b040001610ce084015109610d00830152807f15f79db9c39181bc3e31c83f9291da76eedf1b23c410add7e9098464aaa4fb26610d0084015109610d20830152807f1a6cb0b91da01e6d7a1e7d76eeef7de63954cd24b5a8c2b95ad8712f455b04db6105a084015108610d40830152807f03b743d74fd9ddb41f920179ac30e04b0ebd93e580b9c0b50061087904110bd4610d0084015109610d60830152807f2cad0a9b9157c27598be443cd550781219765462f8ffafdc4380ed1aebeef42d6105a084015108610d80830152807f1f4d7180df5014849825f3c9b0e89d79432c51f48eb5846ae63b433f28aba10b610d0084015109610da0830152807f1116dcf201e18ba5202a51ecd098bae3e5079653eb03ec265da6b254c7545ef66105a084015108610dc0830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d0084015109610de0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105a084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d0084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105a084015108610e40830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d0084015109610e60830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105a084015108610e80830152806001610d0084015109610ea0830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105a084015108610ec0830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d0084015109610ee0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105a084015108610f00830152807f0dd30b9ad8c173555d2a33029bc807ac165b61281e9054a173af7ff4e4fc88fc610d0084015109610f20830152807f229142d808702cd45b2612b3e5b950b111d887205b291befd032759f0b0377056105a084015108610f40830152610d408201518181610d8085015109905080610f608401528181610dc085015109905080610f808401528181610e0085015109905080610fa08401528181610e4085015109905080610fc08401528181610e8085015109905080610fe08401528181610ec0850151099050806110008401528181610f00850151099050806110208401528181610f40850151099050806110408401528181610ce0850151099050806110608401525060206110a083015260206110c083015260206110e08301526110608201516111008301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff611120830152600080516020614fbd8339815191526111408301528260016020611080850160c06110a0870160055afa141692506110808201516000610ce08401519050828261104086015109610ce0850152828282099150610f408401519050828261102086015109610f40850152828282099150610f008401519050828261100086015109610f00850152828282099150610ec084015190508282610fe086015109610ec0850152828282099150610e8084015190508282610fc086015109610e80850152828282099150610e4084015190508282610fa086015109610e40850152828282099150610e0084015190508282610f8086015109610e00850152828282099150610dc084015190508282610f6086015109610dc0850152828282099150610d8084015190508282610d4086015109610d8085015282828209610d408501819052610d208501518493509091500961116083015280610d80830151610d608401510961118083015280610dc0830151610da0840151096111a083015280610e00830151610de0840151096111c083015280610e40830151610e20840151096111e083015280610e80830151610e608401510961120083015280610ec0830151610ea08401510961122083015280610f00830151610ee08401510961124083015280610f40830151610f20840151096112608301528060208301516112208401510981818360408601516112408701510908905081818360608601516112608701510908611280840152506107208201516105e0830151829190086112a08301819052819080096112c08301819052819080096112e0830152806112e08301516112a084015109611300830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561130084015109611320830152806107408301516106008401510861134083018190528190800961136083018190528190800961138083015280611380830151611340840151096113a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86113a0840151096113c0830152806113c0830151611320840151086113e08301528061062083015182036113e08401510861140083018190526107a08301518291096114208301528061142083015161040084015109611440830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961130084015109611460830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86113a08401510961148083015280611480830151611460840151086114a08301528061064083015182036114a0840151086114c083018190526107a08301518291096114e0830152806114e08301516114408401510861150083015280611500830151610400840151096115208301528061066083015182036113008401510861154083018190526107c0830151829109611560830152806115608301516115208401510861158083015280611580830151610400840151096115a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610660840151096115c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611340840151096115e0830152806115e08301516115c08401510861160083018190526106e08301518291086116208301819052819080096116408301819052819080096116608301528061166083015161162084015109611680830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610620840151096116a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610640840151096116c0830152806116c08301516116a0840151086116e0830152806116e083015182036116808401510861170083018190526107c0830151829109611720830152806117208301516115a0840151086117408301528061174083015161040084015109611760830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961066084015109611780830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611340840151096117a0830152806117a0830151611780840151086117c083018190526107008301518291086117e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261062084015109611800830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106408401510961182083015280611820830151611800840151086118408301528061184083015182036117e08401510861186083018190526107c083015182910961188083015280611880830151611760840151086118a0830152806118a0830151610400840151096118c08301528061078083015182036001086118e0830181905261078083015182910961190083015280610780830151820360020861192083018190526119008301518291096119408301528061078083015182036003086119608301819052611940830151829109611980830152806105e08301516106a0840151086119a08301528061062083015182036119a0840151086119c083018190526119808301518291096119e0830152806119e08301516118c084015108611a0083015280611a0083015161040084015109611a2083015280610640830151820361068084015108611a408301819052611980830151829109611a6083015280611a60830151611a2084015108611a8083015280611a8083015161040084015109611aa08301528061078083015161192084015109611ac083015280611ac083015161196084015109611ae0830152806107808301518203600408611b008301819052611ae0830151829109611b2083015280611b2083015161066084015109611b40830152806106608301518203600108611b608301819052611b40830151829109611b8083015280611b80830151611aa084015108611ba083015280611ba083015161040084015109611bc083015280610660830151600209611be0830152806105e0830151820361060084015108611c008301819052611be0830151829109611c20830152806105e0830151820361062084015108611c4083015280611c408301518203611c2084015108611c6083015280610640830151820361060084015108611c8083015280611c808301518203611c6084015108611ca08301819052611b20830151829109611cc083015280611cc0830151611bc084015108611ce083015280611ce083015161040084015109611d008301528061190083015161196084015109611d2083015280611d20830151611b0084015109611d40830152806106008301516105e084015108611d60830152806106608301518203611d6084015108611d808301819052611d40830151829109611da083015280611da0830151611d0084015108611dc083015280611dc083015161040084015109611de08301819052611da0830151829108611e0083015280611e0083015161040084015109611e2083015280611940830151611b0084015109611e408301528061060083015182036105e084015108611e6083015280600160701b611e6084015108611e80830152806106608301518203611e8084015108611ea08301819052611e40830151829109611ec083015280611ec0830151611e2084015108611ee083015280611ee083015161040084015109611f00830152806108c08301518203600108611f208301819052611220830151829109611f4083015280611f40830151611f0084015108611f6083015280611f6083015161040084015109611f8083015261092082015181908009611fa0830152806109208301518203611fa084015108611fc08301819052611160830151829109611fe083015280611fe0830151611f80840151086120008301528061200083015161040084015109612020830152806109008301518203610920840151086120408301819052611220830151829109612060830152806120608301516120208401510861208083015280612080830151610400840151096120a08301528061116083015182036001086120c0830152806111a0830151611180840151086120e083018190526111c083015182910861210083018190526111e083015182910861212083018190526112008301518291086121408301528061214083015182036120c0840151086121608301528061024083015161080084015109612180830152806121808301516106e0840151086121a083018190526102a08301518291086121c083015280610240830151610820840151096121e0830152806121e08301516105e08401510861220083018190526102a083015182910861222083018190526121c08301518291096122408301528061024083015161084084015109612260830152806122608301516106008401510861228083018190526102a08301518291086122a083018190526122408301518291096122c083015280610240830151610860840151096122e0830152806122e08301516107008401510861230083018190526102a083015182910861232083018190526122c083015182910961234083018190526108e083015182910961236083015280610240830151600109612380830152806123808301516105a0840151096123a0830152806123a08301516106e0840151086123c083018190526102a08301518291086123e0830152806102408301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612400830152806124008301516105a084015109612420830152806124208301516105e08401510861244083018190526102a083015182910861246083018190526123e0830151829109612480830152806102408301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b096124a0830152806124a08301516105a0840151096124c0830152806124c0830151610600840151086124e083018190526102a08301518291086125008301819052612480830151829109612520830152806102408301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5209612540830152806125408301516105a084015109612560830152806125608301516107008401510861258083018190526102a08301518291086125a083018190526125208301518291096125c083018190526108c08301518291096125e0830152806125e08301518203612360840151086126008301819052612160830151829109612620830152806126208301516120a0840151086126408301528061264083015161040084015109612660830152806102408301516108808401510961268083015280612680830151610660840151086126a083018190526102a08301518291086126c0830152806102408301516108a0840151096126e0830152806126e08301516112808401510861270083018190526102a083015182910861272083018190526126c08301518291096127408301819052610940830151829109612760830152806102408301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612780830152806127808301516105a0840151096127a0830152806127a0830151610660840151086127c083018190526102a08301518291086127e0830152806102408301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612800830152806128008301516105a084015109612820830152806128208301516112808401510861284083018190526102a083015182910861286083018190526127e083015182910961288083018190526109208301518291096128a0830152806128a08301518203612760840151086128c083018190526121608301518291096128e0830152806128e08301516126608401510861290083015280612900830151610400840151096129208301528061096083015182036001086129408301819052611220830151829109612960830152806129608301516129208401510861298083015280612980830151610400840151096129a0830152610960820151819080096129c08301528061096083015182036129c0840151086129e08301819052611160830151829109612a0083015280612a008301516129a084015108612a2083015280612a2083015161040084015109612a40830152806102408301516109a084015108612a608301819052610980830151829109612a80830152806102a08301516109e084015108612aa08301819052612a80830151829109612ac0830152806106c083015161010009612ae083015280612ae0830151820361066084015108612b008301819052610760830151829109612b208301819052610240830151829108612b408301819052610960830151829109612b60830152806102a083015161072084015108612b808301819052612b60830151829109612ba083015280612ba08301518203612ac084015108612bc08301819052612160830151829109612be083015280612be0830151612a4084015108612c0083015280612c0083015161040084015109612c20830152806109e083015182036109a084015108612c408301819052611220830151829109612c6083015280612c60830151612c2084015108612c8083015280612c8083015161040084015109612ca083015280612160830151612c4084015109612cc0830152806109c083015182036109a084015108612ce08301819052612cc0830151829109612d0083015280612d00830151612ca084015108612d20830152610cc082015181908009612d408301819052610cc0830151829109612d608301819052610cc0830151829109612d808301819052610cc0830151829109612da083015280610cc0830151600109612dc083015280612d40830151600109612de083015280612d60830151600109612e0083015280612d80830151600109612e2083015280610ce0830151612d2084015109612e40830152806105a0830151610ba084015109612e608301528060016105a084015109612e8083015280612e808301518203610b2084015108612ea0830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e36105a084015109612ec083015280612ec08301518203610b2084015108612ee0830152807f15f79db9c39181bc3e31c83f9291da76eedf1b23c410add7e9098464aaa4fb266105a084015109612f0083015280612f008301518203610b2084015108612f20830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d6105a084015109612f4083015280612f408301518203610b2084015108612f6083015280817f2b0bd16731aaf34928c0661ba43310fbbf44baa457b980ce19affba7315792a4610ba085015109610b2084015109818183847f05587d0baf86ace08f8fdf9add4e476168ef2da421ffefc32a31f9ecbea86d5d610ba0880151096105a08701510908905080612f808401525080817f1e42214ea9b2db33296ba55096815a0a6d468af715ccfa9fab93b1e3701b7f62610ba085015109610b2084015109818183847f1648cc055b11af4e0f62923d9627e377b1d413c0864af4963a826fcc6a0231fa610ba0880151096105a08701510908905080612fa08401525080817f2960d84a95d8f00f740a3d1478feb6d4b196e34bf86b62b75041b14b389d49ce610ba085015109610b2084015109818183847f21fe615ace99028841c84393e39435ea26675e494fd4886263e6fedd3cba1f16610ba0880151096105a08701510908612fc084015250612ea08201518190600109612fe08301819052612f608301518291096130008301819052612ee083015182910961302083015280817f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44856105a085015109610b2084015109818183847f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7c6105a0880151096105a087015109089050806130408401525080817f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7c6105a085015109610b2084015109818183847f1d05f683f7bacf55bccd495a5703cb329ada890af08ac0d24959599e24c832816105a0880151096105a087015109089050806130608401525080817f23af40e47e2f59a03809484a29d5e3afbf105f1fa100de8be21295a92fa75534610ba085015109610b2084015109818183847f0cb50d8e630246898046fd6c57ab74ad69238928d8b8920561cf5feac058aacd610ba0880151096105a087015109089050806130808401525080817f259eb1d15d2e74dc1a22c32210de87566d7ae67bcc859ce1e33117e171cbbcd2610ba085015109610b2084015109818183847f0705f7901a0ba3736dff0830a813cdc7350ce79c852ba2d86353d0ff84d80bb5610ba0880151096105a087015109089050806130a08401525080817f2a6bbeb56332f220c30fcaac737fd885c3596480f0ca2ff07d2733561911b7bd610ba085015109610b2084015109818183847f26a0f84d76444b5e0a60f8966cc6c88c09cf0713bd044ba9fe6c9b2e8b6263b7610ba0880151096105a087015109086130c084015250612f20820151613000830151829190096130e083015280817f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1f6105a085015109610b2084015109818183847f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e26105a0880151096105a087015109089050806131008401525080817f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e26105a085015109610b2084015109818183847f017829d43aa3529ba5ed3f4879cd1c09ff9f06e716afb2bc6cc72847d12771ae6105a0880151096105a0870151090861312084015250612ee0820151612fe083015182919009613140830152806001610b20840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105a0870151090861316084015250612f80820151612fa083015182908290099050806131808401528181612fc0850151099050806131a08401528181613040850151099050806131c08401528181613060850151099050806131e084015281816130008501510990508061320084015281816130808501510990508061322084015281816130a08501510990508061324084015281816130c08501510990508061326084015281816130e0850151099050806132808401528181613100850151099050806132a08401528181613120850151099050806132c08401528181613140850151099050806132e08401528181613160850151099050806133008401528181612fe085015109905080613320840152506020613360830152602061338083015260206133a08301526133208201516133c08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6133e0830152600080516020614fbd8339815191526134008301528260016020613340850160c0613360870160055afa141692506133408201516000612fe08401519050828261330086015109612fe0850152828282099150613160840151905082826132e086015109613160850152828282099150613140840151905082826132c086015109613140850152828282099150613120840151905082826132a08601510961312085015282828209915061310084015190508282613280860151096131008501528282820991506130e084015190508282613260860151096130e08501528282820991506130c084015190508282613240860151096130c08501528282820991506130a084015190508282613220860151096130a08501528282820991506130808401519050828261320086015109613080850152828282099150613000840151905082826131e086015109613000850152828282099150613060840151905082826131c086015109613060850152828282099150613040840151905082826131a086015109613040850152828282099150612fc08401519050828261318086015109612fc0850152828282099150612fa084015190508282612f8086015109612fa085015282828209612f808501819052612fa085015190925083915082900890508181612fc0850151086134208401525061300082015161302083015182919009613440830152613040820151818161306085015108613460840152506130e08201516130208301518291900961348083015261308082015181816130a085015108905081816130c0850151086134a084015250613140820151613020830151829190096134c08301526131008201518181613120850151086134e084015250612fe082015161302083015182919009613500830152613160820151806135208401525061342082015181816134608501510990508061354084015281816134a08501510990508061356084015281816134e0850151099050806135808401528181613520850151099050806135a08401525060206135e0830152602061360083015260206136208301526135a08201516136408301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff613660830152600080516020614fbd83398151915261368083015282600160206135c0850160c06135e0870160055afa141692506135c0820151600061352084015190508282613580860151096135208501528282820991506134e084015190508282613560860151096134e08501528282820991506134a084015190508282613540860151096134a08501528282820991506134608401519050828261342086015109613460850152828282096134208501525050613460820151613440830151829190096136a0830152806134a0830151613480840151096136c0830152806134e08301516134c0840151096136e08301528061352083015161350084015109613700830152610a20820151819080096137208301819052610a208301518291096137408301819052610a208301518291096137608301819052610a208301518291096137808301819052610a208301518291096137a08301819052610a208301518291096137c08301819052610a208301518291096137e08301819052610a208301518291096138008301819052610a208301518291096138208301819052610a208301518291096138408301819052610a208301518291096138608301819052610a208301518291096138808301819052610a208301518291096138a08301819052610a208301518291096138c08301819052610a208301518291096138e08301819052610a20830151829109613900830152610a80820151819080096139208301819052610a808301518291096139408301819052610a808301518291096139608301819052610a8083015182910961398083015280612f808301516105e084015109818183612fa086015161062087015109089050818183612fc08601516106a087015109086139a0840181905261342084015183925090096139c08301528060016139c08401518303096139e083015280612f8083015161060084015109818183612fa086015161064087015109089050818183612fc08601516106808701510908613a0084018190526134208401518392509009613a208301819052610a208301518291820309613a4083015280610a20830151600109613a6083015280613a408301516139e084015108613a80830152806001613a8084015109613aa0830152806001613a6084015109613ac083015280613440830151600109613ae083015280613040830151610660840151098181836130608601516106c08701510908613b0084018190526136a08401518392509009613b20830152806001613b20840151830309613b40830152806001613ae084015109613b6083015280613040830151610920840151098181836130608601516109408701510908613b8084018190526136a08401518392509009613ba08301819052610a208301518291820309613bc083015280610a20830151613ae084015109613be083015280613bc0830151613b4084015108613c0083015280613040830151610960840151098181836130608601516109808701510908613c2084018190526136a08401518392509009613c4083018190526137208301518291820309613c6083015280613720830151613ae084015109613c8083015280613c60830151613c0084015108613ca08301819052610a80830151829109613cc083015280610a80830151613b6084015109613ce083015280610a80830151613be084015109613d0083015280610a80830151613c8084015109613d2083015280613cc0830151613aa084015108613d4083015280613480830151600109613d60830152806130808301516108c0840151098181836130a08601516108e0870151090890508181836130c08601516109008701510908613d8084018190526136c08401518392509009613da0830152806001613da0840151830309613dc0830152806001613d6084015109613de083015280613920830151613dc084015109613e0083015280613920830151613de084015109613e2083015280613e00830151613d4084015108613e40830152806134c0830151600109613e60830152806131008301516109a0840151098181836131208601516109c08701510908613e8084018190526136e08401518392509009613ea0830152806001613ea0840151830309613ec0830152806001613e6084015109613ee083015280613940830151613ec084015109613f0083015280613940830151613ee084015109613f2083015280613f00830151613e4084015108613f4083015280613500830151600109613f60830152806131608301516109e084015109613f808301819052613700830151829109613fa0830152806001613fa0840151830309613fc0830152806001613f6084015109613fe0830152806131608301516106e08401510961400083018190526137008301518291096140208301819052610a20830151829182030961404083015280610a20830151613f608401510961406083015280614040830151613fc08401510861408083015280613160830151610700840151096140a083018190526137008301518291096140c0830181905261372083015182918203096140e083015280613720830151613f6084015109614100830152806140e083015161408084015108614120830152806131608301516107208401510961414083018190526137008301518291096141608301819052613740830151829182030961418083015280613740830151613f60840151096141a083015280614180830151614120840151086141c083015280613160830151610740840151096141e083018190526137008301518291096142008301819052613760830151829182030961422083015280613760830151613f6084015109614240830152806142208301516141c084015108614260830152806131608301516107608401510961428083018190526137008301518291096142a0830181905261378083015182918203096142c083015280613780830151613f60840151096142e0830152806142c0830151614260840151086143008301528061316083015161078084015109614320830181905261370083015182910961434083018190526137a08301518291820309614360830152806137a0830151613f608401510961438083015280614360830151614300840151086143a0830152806131608301516107a0840151096143c083018190526137008301518291096143e083018190526137c08301518291820309614400830152806137c0830151613f6084015109614420830152806144008301516143a084015108614440830152806131608301516107c084015109614460830181905261370083015182910961448083018190526137e083015182918203096144a0830152806137e0830151613f60840151096144c0830152806144a0830151614440840151086144e0830152806131608301516108008401510961450083018190526137008301518291096145208301819052613800830151829182030961454083015280613800830151613f6084015109614560830152806145408301516144e08401510861458083015280613160830151610820840151096145a083018190526137008301518291096145c0830181905261382083015182918203096145e083015280613820830151613f6084015109614600830152806145e083015161458084015108614620830152806131608301516108408401510961464083018190526137008301518291096146608301819052613840830151829182030961468083015280613840830151613f60840151096146a083015280614680830151614620840151086146c083015280613160830151610860840151096146e083018190526137008301518291096147008301819052613860830151829182030961472083015280613860830151613f6084015109614740830152806147208301516146c084015108614760830152806131608301516108808401510961478083018190526137008301518291096147a0830181905261388083015182918203096147c083015280613880830151613f60840151096147e0830152806147c083015161476084015108614800830152806131608301516108a084015109614820830181905261370083015182910961484083018190526138a08301518291820309614860830152806138a0830151613f608401510961488083015280614860830151614800840151086148a083015280613500830151612dc0840151096148c083015280613500830151612de0840151096148e083015280613500830151612e008401510961490083015280613500830151612e208401510961492083015280613160830151612e4084015109614940830181905261370083015182910961496083018190526138c08301518291820309614980830152806138c0830151613f60840151096149a0830152806138c08301516148c0840151096149c0830152806138c08301516148e0840151096149e0830152806138c083015161490084015109614a00830152806138c083015161492084015109614a20830152806149808301516148a084015108614a40830152806131608301516107e084015109614a608301819052613700830151829109614a8083018190526138e08301518291820309614aa0830152806138e0830151613f6084015109614ac083015280614aa0830151614a4084015108614ae08301819052613960830151829109614b0083015280613960830151613fe084015109614b208301528061396083015161406084015109614b408301528061396083015161410084015109614b60830152806139608301516141a084015109614b808301528061396083015161424084015109614ba0830152806139608301516142e084015109614bc08301528061396083015161438084015109614be08301528061396083015161442084015109614c00830152806139608301516144c084015109614c208301528061396083015161456084015109614c408301528061396083015161460084015109614c60830152806139608301516146a084015109614c808301528061396083015161474084015109614ca0830152806139608301516147e084015109614cc08301528061396083015161488084015109614ce0830152806139608301516149a084015109614d00830152806139608301516149c084015109614d20830152806139608301516149e084015109614d4083015280613960830151614a0084015109614d6083015280613960830151614a2084015109614d8083015280613960830151614ac084015109614da083015280614b00830151613f4084015108614dc083015280613020830151600109614de083015280610b20830151600109614e008301526001614e2083018181526002614e40850152614dc0840151614e6085015284919060409060608160075afa14169250614e20820151614e80830152614e40820151614ea08301526080820151614ec083015260a0820151614ee08301528260016040614e8085016080614e80870160065afa1416925060c0820151614f0083015260e0820151614f20830152613ac0820151614f408301528260016040614f0085016060614f00870160075afa14169250614e80820151614f60830152614ea0820151614f80830152614f00820151614fa0830152614f20820151614fc08301528260016040614f6085016080614f60870160065afa14169250610100820151614fe0830152610120820151615000830152613ce08201516150208301528260016040614fe085016060614fe0870160075afa14169250614f60820151615040830152614f80820151615060830152614fe08201516150808301526150008201516150a0830152826001604061504085016080615040870160065afa141692506103208201516150c08301526103408201516150e0830152613d0082015161510083015282600160406150c0850160606150c0870160075afa141692506150408201516151208301526150608201516151408301526150c08201516151608301526150e0820151615180830152826001604061512085016080615120870160065afa141692506103608201516151a08301526103808201516151c0830152613d208201516151e083015282600160406151a0850160606151a0870160075afa141692506151208201516152008301526151408201516152208301526151a08201516152408301526151c0820151615260830152826001604061520085016080615200870160065afa141692506102e08201516152808301526103008201516152a0830152613e208201516152c0830152826001604061528085016060615280870160075afa141692506152008201516152e08301526152208201516153008301526152808201516153208301526152a082015161534083015282600160406152e0850160806152e0870160065afa141692506101a08201516153608301526101c0820151615380830152613f208201516153a0830152826001604061536085016060615360870160075afa141692506152e08201516153c08301526153008201516153e083015261536082015161540083015261538082015161542083015282600160406153c0850160806153c0870160065afa141692506101e0820151615440830152610200820151615460830152614b20820151615480830152826001604061544085016060615440870160075afa141692506153c08201516154a08301526153e08201516154c08301526154408201516154e083015261546082015161550083015282600160406154a0850160806154a0870160065afa141692507f0655d62979dc062dc1e8c15334bf17cf5c7e6352219c0bd0b0cc039598d9a6696155208301527f019589d3002f6a0ded46a69053f0c05e7a7ca45339b3d2bae85d00f26ac0f33e615540830152614b40820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa141692507f1eab999592385208b42a12dcc047763ee5cf12052eb4b0d9a7a286e043f3df9f6156008301527f18887eb3c646ffd4961226c91bac9661004798b1fc6a39c43f9a6d1d03767194615620830152614b60820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692507f076806058b02e1b5e99b2f2e8eee613194f8df73481659f5938baacd64e4d7b86156e08301527f05ae81644b244dceea5350a84a79cbf0a199bbd6c1fad9887423f8c8048e6039615700830152614b8082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f0438873fc00231ae527efcf74d9092f5059dfa05275cbe7381e948fe3b7b61d86157c08301527f03c0f314c93403792ba86ec3841b3080f2f7cd092c6bcb632cdbc2122a13cdef6157e0830152614ba082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f2b12b132a6261ad60249147599cae0d5b3547e510deabba65526d130f04f24026158a08301527f13e3c02ce00f6b7e00d5b099eda5f1155956ae83899a2d59cefcb00dad66a7f66158c0830152614bc08201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f0ed83370277e0fd35e8258dd5630ce0ce3491fdf7e166d293745635b0cc4eba56159808301527f03994e7e77ad58072b78757700ab0b79247f2e462b0cf6a5a18b607414c095db6159a0830152614be08201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f23ba4bc49baab563e9d5bf07da231a4496d35b6bc782dbbd76135fe44c31cbcf615a608301527f28b88097e7edf1b2904f6c25c1e30ca0e38c74a52125b2995c4cf0a750683854615a80830152614c00820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f17dcbba0bbe2d24566de620998f62ff54ea5302ada6aeb18028b61b4dc19bbd3615b408301527f0e1f908007a5c2cc934426c26de7206c53fa10c79d63ef52ee91bfb568c72fbd615b60830152614c20820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f2c7823f99cb2adb716becb960914ffa1d6e2f257875fdd03c2bee52ef571d41e615c208301527f09ab83ebc6803e65b2e6831c8706d9a134f6b1cf6f6ec5c2697afee095320ee1615c40830152614c40820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f2dc12c205152bfacc354c838225571172c215e01a64de6a2ca6665c70937ac58615d008301527f0449eb529f0038a2bd2f6c0b6213a70488b69b479d90a953579e4c9d45621b85615d20830152614c60820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f09a2ab3913a4770fd50f6ba9ec4ce0b3178b54d7bfca5b42fe7e8e1ce5cf60a9615de08301527f13ec31f94026569c4bb76e2c4ceaa3e6525438ffb4a7a69cde61f6d77b93bad7615e00830152614c80820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974615ec08301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3615ee0830152614ca0820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f02a9a77d8e6f6fd89f33ba56fe45f6f5c907e50ba28cdd4198acfb562eb21103615fa08301527f23abee68d83c2d6632576e5e95ca01a61e5e3e6d9438c2ac6428c8b6edfe2aba615fc0830152614cc0820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f2cf36d36bfacbe1a8d8c626aefa75ac0feb46b725989a8e6fabed074bf9f6af76160808301527f060fded3ed5ec56d9e0064d73c472245a4c4b6ec371e9808692bf7f259d3b7306160a0830152614ce08201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa14169250610440820151616160830152610460820151616180830152614d008201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692506104808201516162408301526104a0820151616260830152614d20820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692506104c08201516163208301526104e0820151616340830152614d40820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa14169250610500820151616400830152610520820151616420830152614d60820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692506105408201516164e0830152610560820151616500830152614d8082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692506103a08201516165c08301526103c08201516165e0830152614da082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa14169250610ac08201516166a0830152610ae08201516166c0830152614de082015181036166e08301525081600160406166a0840160606166a0860160075afa141691506166208101516167008201526166408101516167208201526166a08101516167408201526166c0810151616760820152816001604061670084016080616700860160065afa14169150610b60810151616780820152610b808101516167a0820152614e008101516167c0820152816001604061678084016060616780860160075afa141691506167008101516167e08201526167208101516168008201526167808101516168208201526167a081015161684082015281600160406167e0840160806167e0860160065afa141691506167e08101516168608201526168008101516168808201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26168a08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6168c08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6168e08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa616900820152610b60810151616920820152610b808101516169408201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6169608201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6169808201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456169a08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff6169c082015281600160206168608401610180616860860160085afa61686093909301516001149214161691505092915050565b604051806169c0016040528061034e906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614e5c57614e5c614e1d565b604052919050565b600082601f830112614e7557600080fd5b813567ffffffffffffffff811115614e8f57614e8f614e1d565b614ea2601f8201601f1916602001614e33565b818152846020838601011115614eb757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614ee757600080fd5b823567ffffffffffffffff80821115614eff57600080fd5b818501915085601f830112614f1357600080fd5b8135602082821115614f2757614f27614e1d565b8160051b614f36828201614e33565b928352848101820192828101908a851115614f5057600080fd5b958301955b84871015614f6e57863582529583019590830190614f55565b9750505086013592505080821115614f8557600080fd5b50614f9285828601614e64565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220d4b2dc8798bab17b65a2e72c3cd13b07b4a58aae366a77784852333c75aa78b964736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e366004614ed4565b610057565b604051901515815260200160405180910390f35b60006001610063614dfd565b600080516020614fbd8339815191526100d9565b600080516020614f9d8339815191528083108183101690838009600080516020614f9d833981519152838409600080516020614f9d8339815191528482099050600080516020614f9d8339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301527eae99b137916ff4220b0da7179a4601301c82346fc665cd3369a54e1f02d4ea6000830152602085015180608084015260408601518060a0850152846101438284610077565b169450505060608501518060c084015260808601518060e0850152846101698284610077565b169450505060a08501518061010084015260c086015180610120850152846101918284610077565b16945050506101406000830120610140830152610140820151818106610160840152806101808401525060e0850151806101a0840152610100860151806101c0850152846101df8284610077565b1694505050610120850151806101e084015261014086015180610200850152846102098284610077565b60a061018087012061022087018190528581066102408801526102608701521694506001915050610280830153602161026083012061028083018190528181066102a08401526102c08301526101608501516102e0830181905261018086015161030084018190528461027c8284610077565b16945050506101a0850151806103208401526101c086015180610340850152846102a68284610077565b16945050506101e08501518061036084015261020086015180610380850152846102d08284610077565b1694505050610220850151806103a0840152610240860151806103c0850152846102fa8284610077565b16945050506101206102c08301206103e08301526103e0820151818106610400840152806104208401525061026085015180610440840152610280860151806104608501528461034a8284610077565b16945050506102a0850151806104808401526102c0860151806104a0850152846103748284610077565b16945050506102e0850151806104c0840152610300860151806104e08501528461039e8284610077565b16945050506103208501518061050084015261034086015180610520850152846103c88284610077565b16945050506103608501518061054084015261038086015180610560850152846103f28284610077565b16945050506101606104208301206105808301526105808201518181066105a0840152806105c084015250806103a0860151066105e0830152806103c086015106610600830152806103e08601510661062083015280610400860151066106408301528061042086015106610660830152806104408601510661068083015280610460860151066106a083015280610480860151066106c0830152806104a0860151066106e0830152806104c086015106610700830152806104e08601510661072083015280610500860151066107408301528061052086015106610760830152806105408601510661078083015280610560860151066107a083015280610580860151066107c0830152806105a0860151066107e0830152806105c086015106610800830152806105e08601510661082083015280610600860151066108408301528061062086015106610860830152806106408601510661088083015280610660860151066108a083015280610680860151066108c0830152806106a0860151066108e0830152806106c086015106610900830152806106e08601510661092083015280610700860151066109408301528061072086015106610960830152806107408601510661098083015280610760860151066109a083015280610780860151066109c0830152806107a0860151066109e08301526104406105c0830120610a00830152610a00820151818106610a2084015280610a40840152506001610a608301536021610a40830120610a608301819052818106610a80840152610aa08301526107c0850151610ac083018190526107e0860151610ae084018190528461065f8284610077565b16945050506060610aa0830120610b00830152610b00820151818106610b2084015280610b408401525061080085015180610b6084015261082086015180610b80850152846106ae8284610077565b1694505050806105a08301516105a084015109610ba0830181905281908009610bc0830181905281908009610be0830181905281908009610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610cc084015108610ce0830152807f3058355f447953c1ade231a513e0f80710e9db4e679b02351f90fd168b040001610ce084015109610d00830152807f15f79db9c39181bc3e31c83f9291da76eedf1b23c410add7e9098464aaa4fb26610d0084015109610d20830152807f1a6cb0b91da01e6d7a1e7d76eeef7de63954cd24b5a8c2b95ad8712f455b04db6105a084015108610d40830152807f03b743d74fd9ddb41f920179ac30e04b0ebd93e580b9c0b50061087904110bd4610d0084015109610d60830152807f2cad0a9b9157c27598be443cd550781219765462f8ffafdc4380ed1aebeef42d6105a084015108610d80830152807f1f4d7180df5014849825f3c9b0e89d79432c51f48eb5846ae63b433f28aba10b610d0084015109610da0830152807f1116dcf201e18ba5202a51ecd098bae3e5079653eb03ec265da6b254c7545ef66105a084015108610dc0830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d0084015109610de0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105a084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d0084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105a084015108610e40830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d0084015109610e60830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105a084015108610e80830152806001610d0084015109610ea0830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105a084015108610ec0830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d0084015109610ee0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105a084015108610f00830152807f0dd30b9ad8c173555d2a33029bc807ac165b61281e9054a173af7ff4e4fc88fc610d0084015109610f20830152807f229142d808702cd45b2612b3e5b950b111d887205b291befd032759f0b0377056105a084015108610f40830152610d408201518181610d8085015109905080610f608401528181610dc085015109905080610f808401528181610e0085015109905080610fa08401528181610e4085015109905080610fc08401528181610e8085015109905080610fe08401528181610ec0850151099050806110008401528181610f00850151099050806110208401528181610f40850151099050806110408401528181610ce0850151099050806110608401525060206110a083015260206110c083015260206110e08301526110608201516111008301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff611120830152600080516020614fbd8339815191526111408301528260016020611080850160c06110a0870160055afa141692506110808201516000610ce08401519050828261104086015109610ce0850152828282099150610f408401519050828261102086015109610f40850152828282099150610f008401519050828261100086015109610f00850152828282099150610ec084015190508282610fe086015109610ec0850152828282099150610e8084015190508282610fc086015109610e80850152828282099150610e4084015190508282610fa086015109610e40850152828282099150610e0084015190508282610f8086015109610e00850152828282099150610dc084015190508282610f6086015109610dc0850152828282099150610d8084015190508282610d4086015109610d8085015282828209610d408501819052610d208501518493509091500961116083015280610d80830151610d608401510961118083015280610dc0830151610da0840151096111a083015280610e00830151610de0840151096111c083015280610e40830151610e20840151096111e083015280610e80830151610e608401510961120083015280610ec0830151610ea08401510961122083015280610f00830151610ee08401510961124083015280610f40830151610f20840151096112608301528060208301516112208401510981818360408601516112408701510908905081818360608601516112608701510908611280840152506107208201516105e0830151829190086112a08301819052819080096112c08301819052819080096112e0830152806112e08301516112a084015109611300830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561130084015109611320830152806107408301516106008401510861134083018190528190800961136083018190528190800961138083015280611380830151611340840151096113a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86113a0840151096113c0830152806113c0830151611320840151086113e08301528061062083015182036113e08401510861140083018190526107a08301518291096114208301528061142083015161040084015109611440830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961130084015109611460830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86113a08401510961148083015280611480830151611460840151086114a08301528061064083015182036114a0840151086114c083018190526107a08301518291096114e0830152806114e08301516114408401510861150083015280611500830151610400840151096115208301528061066083015182036113008401510861154083018190526107c0830151829109611560830152806115608301516115208401510861158083015280611580830151610400840151096115a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610660840151096115c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611340840151096115e0830152806115e08301516115c08401510861160083018190526106e08301518291086116208301819052819080096116408301819052819080096116608301528061166083015161162084015109611680830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610620840151096116a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610640840151096116c0830152806116c08301516116a0840151086116e0830152806116e083015182036116808401510861170083018190526107c0830151829109611720830152806117208301516115a0840151086117408301528061174083015161040084015109611760830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961066084015109611780830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611340840151096117a0830152806117a0830151611780840151086117c083018190526107008301518291086117e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261062084015109611800830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106408401510961182083015280611820830151611800840151086118408301528061184083015182036117e08401510861186083018190526107c083015182910961188083015280611880830151611760840151086118a0830152806118a0830151610400840151096118c08301528061078083015182036001086118e0830181905261078083015182910961190083015280610780830151820360020861192083018190526119008301518291096119408301528061078083015182036003086119608301819052611940830151829109611980830152806105e08301516106a0840151086119a08301528061062083015182036119a0840151086119c083018190526119808301518291096119e0830152806119e08301516118c084015108611a0083015280611a0083015161040084015109611a2083015280610640830151820361068084015108611a408301819052611980830151829109611a6083015280611a60830151611a2084015108611a8083015280611a8083015161040084015109611aa08301528061078083015161192084015109611ac083015280611ac083015161196084015109611ae0830152806107808301518203600408611b008301819052611ae0830151829109611b2083015280611b2083015161066084015109611b40830152806106608301518203600108611b608301819052611b40830151829109611b8083015280611b80830151611aa084015108611ba083015280611ba083015161040084015109611bc083015280610660830151600209611be0830152806105e0830151820361060084015108611c008301819052611be0830151829109611c20830152806105e0830151820361062084015108611c4083015280611c408301518203611c2084015108611c6083015280610640830151820361060084015108611c8083015280611c808301518203611c6084015108611ca08301819052611b20830151829109611cc083015280611cc0830151611bc084015108611ce083015280611ce083015161040084015109611d008301528061190083015161196084015109611d2083015280611d20830151611b0084015109611d40830152806106008301516105e084015108611d60830152806106608301518203611d6084015108611d808301819052611d40830151829109611da083015280611da0830151611d0084015108611dc083015280611dc083015161040084015109611de08301819052611da0830151829108611e0083015280611e0083015161040084015109611e2083015280611940830151611b0084015109611e408301528061060083015182036105e084015108611e6083015280600160701b611e6084015108611e80830152806106608301518203611e8084015108611ea08301819052611e40830151829109611ec083015280611ec0830151611e2084015108611ee083015280611ee083015161040084015109611f00830152806108c08301518203600108611f208301819052611220830151829109611f4083015280611f40830151611f0084015108611f6083015280611f6083015161040084015109611f8083015261092082015181908009611fa0830152806109208301518203611fa084015108611fc08301819052611160830151829109611fe083015280611fe0830151611f80840151086120008301528061200083015161040084015109612020830152806109008301518203610920840151086120408301819052611220830151829109612060830152806120608301516120208401510861208083015280612080830151610400840151096120a08301528061116083015182036001086120c0830152806111a0830151611180840151086120e083018190526111c083015182910861210083018190526111e083015182910861212083018190526112008301518291086121408301528061214083015182036120c0840151086121608301528061024083015161080084015109612180830152806121808301516106e0840151086121a083018190526102a08301518291086121c083015280610240830151610820840151096121e0830152806121e08301516105e08401510861220083018190526102a083015182910861222083018190526121c08301518291096122408301528061024083015161084084015109612260830152806122608301516106008401510861228083018190526102a08301518291086122a083018190526122408301518291096122c083015280610240830151610860840151096122e0830152806122e08301516107008401510861230083018190526102a083015182910861232083018190526122c083015182910961234083018190526108e083015182910961236083015280610240830151600109612380830152806123808301516105a0840151096123a0830152806123a08301516106e0840151086123c083018190526102a08301518291086123e0830152806102408301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612400830152806124008301516105a084015109612420830152806124208301516105e08401510861244083018190526102a083015182910861246083018190526123e0830151829109612480830152806102408301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b096124a0830152806124a08301516105a0840151096124c0830152806124c0830151610600840151086124e083018190526102a08301518291086125008301819052612480830151829109612520830152806102408301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5209612540830152806125408301516105a084015109612560830152806125608301516107008401510861258083018190526102a08301518291086125a083018190526125208301518291096125c083018190526108c08301518291096125e0830152806125e08301518203612360840151086126008301819052612160830151829109612620830152806126208301516120a0840151086126408301528061264083015161040084015109612660830152806102408301516108808401510961268083015280612680830151610660840151086126a083018190526102a08301518291086126c0830152806102408301516108a0840151096126e0830152806126e08301516112808401510861270083018190526102a083015182910861272083018190526126c08301518291096127408301819052610940830151829109612760830152806102408301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612780830152806127808301516105a0840151096127a0830152806127a0830151610660840151086127c083018190526102a08301518291086127e0830152806102408301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612800830152806128008301516105a084015109612820830152806128208301516112808401510861284083018190526102a083015182910861286083018190526127e083015182910961288083018190526109208301518291096128a0830152806128a08301518203612760840151086128c083018190526121608301518291096128e0830152806128e08301516126608401510861290083015280612900830151610400840151096129208301528061096083015182036001086129408301819052611220830151829109612960830152806129608301516129208401510861298083015280612980830151610400840151096129a0830152610960820151819080096129c08301528061096083015182036129c0840151086129e08301819052611160830151829109612a0083015280612a008301516129a084015108612a2083015280612a2083015161040084015109612a40830152806102408301516109a084015108612a608301819052610980830151829109612a80830152806102a08301516109e084015108612aa08301819052612a80830151829109612ac0830152806106c083015161010009612ae083015280612ae0830151820361066084015108612b008301819052610760830151829109612b208301819052610240830151829108612b408301819052610960830151829109612b60830152806102a083015161072084015108612b808301819052612b60830151829109612ba083015280612ba08301518203612ac084015108612bc08301819052612160830151829109612be083015280612be0830151612a4084015108612c0083015280612c0083015161040084015109612c20830152806109e083015182036109a084015108612c408301819052611220830151829109612c6083015280612c60830151612c2084015108612c8083015280612c8083015161040084015109612ca083015280612160830151612c4084015109612cc0830152806109c083015182036109a084015108612ce08301819052612cc0830151829109612d0083015280612d00830151612ca084015108612d20830152610cc082015181908009612d408301819052610cc0830151829109612d608301819052610cc0830151829109612d808301819052610cc0830151829109612da083015280610cc0830151600109612dc083015280612d40830151600109612de083015280612d60830151600109612e0083015280612d80830151600109612e2083015280610ce0830151612d2084015109612e40830152806105a0830151610ba084015109612e608301528060016105a084015109612e8083015280612e808301518203610b2084015108612ea0830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e36105a084015109612ec083015280612ec08301518203610b2084015108612ee0830152807f15f79db9c39181bc3e31c83f9291da76eedf1b23c410add7e9098464aaa4fb266105a084015109612f0083015280612f008301518203610b2084015108612f20830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d6105a084015109612f4083015280612f408301518203610b2084015108612f6083015280817f2b0bd16731aaf34928c0661ba43310fbbf44baa457b980ce19affba7315792a4610ba085015109610b2084015109818183847f05587d0baf86ace08f8fdf9add4e476168ef2da421ffefc32a31f9ecbea86d5d610ba0880151096105a08701510908905080612f808401525080817f1e42214ea9b2db33296ba55096815a0a6d468af715ccfa9fab93b1e3701b7f62610ba085015109610b2084015109818183847f1648cc055b11af4e0f62923d9627e377b1d413c0864af4963a826fcc6a0231fa610ba0880151096105a08701510908905080612fa08401525080817f2960d84a95d8f00f740a3d1478feb6d4b196e34bf86b62b75041b14b389d49ce610ba085015109610b2084015109818183847f21fe615ace99028841c84393e39435ea26675e494fd4886263e6fedd3cba1f16610ba0880151096105a08701510908612fc084015250612ea08201518190600109612fe08301819052612f608301518291096130008301819052612ee083015182910961302083015280817f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44856105a085015109610b2084015109818183847f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7c6105a0880151096105a087015109089050806130408401525080817f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7c6105a085015109610b2084015109818183847f1d05f683f7bacf55bccd495a5703cb329ada890af08ac0d24959599e24c832816105a0880151096105a087015109089050806130608401525080817f23af40e47e2f59a03809484a29d5e3afbf105f1fa100de8be21295a92fa75534610ba085015109610b2084015109818183847f0cb50d8e630246898046fd6c57ab74ad69238928d8b8920561cf5feac058aacd610ba0880151096105a087015109089050806130808401525080817f259eb1d15d2e74dc1a22c32210de87566d7ae67bcc859ce1e33117e171cbbcd2610ba085015109610b2084015109818183847f0705f7901a0ba3736dff0830a813cdc7350ce79c852ba2d86353d0ff84d80bb5610ba0880151096105a087015109089050806130a08401525080817f2a6bbeb56332f220c30fcaac737fd885c3596480f0ca2ff07d2733561911b7bd610ba085015109610b2084015109818183847f26a0f84d76444b5e0a60f8966cc6c88c09cf0713bd044ba9fe6c9b2e8b6263b7610ba0880151096105a087015109086130c084015250612f20820151613000830151829190096130e083015280817f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1f6105a085015109610b2084015109818183847f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e26105a0880151096105a087015109089050806131008401525080817f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e26105a085015109610b2084015109818183847f017829d43aa3529ba5ed3f4879cd1c09ff9f06e716afb2bc6cc72847d12771ae6105a0880151096105a0870151090861312084015250612ee0820151612fe083015182919009613140830152806001610b20840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105a0870151090861316084015250612f80820151612fa083015182908290099050806131808401528181612fc0850151099050806131a08401528181613040850151099050806131c08401528181613060850151099050806131e084015281816130008501510990508061320084015281816130808501510990508061322084015281816130a08501510990508061324084015281816130c08501510990508061326084015281816130e0850151099050806132808401528181613100850151099050806132a08401528181613120850151099050806132c08401528181613140850151099050806132e08401528181613160850151099050806133008401528181612fe085015109905080613320840152506020613360830152602061338083015260206133a08301526133208201516133c08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6133e0830152600080516020614fbd8339815191526134008301528260016020613340850160c0613360870160055afa141692506133408201516000612fe08401519050828261330086015109612fe0850152828282099150613160840151905082826132e086015109613160850152828282099150613140840151905082826132c086015109613140850152828282099150613120840151905082826132a08601510961312085015282828209915061310084015190508282613280860151096131008501528282820991506130e084015190508282613260860151096130e08501528282820991506130c084015190508282613240860151096130c08501528282820991506130a084015190508282613220860151096130a08501528282820991506130808401519050828261320086015109613080850152828282099150613000840151905082826131e086015109613000850152828282099150613060840151905082826131c086015109613060850152828282099150613040840151905082826131a086015109613040850152828282099150612fc08401519050828261318086015109612fc0850152828282099150612fa084015190508282612f8086015109612fa085015282828209612f808501819052612fa085015190925083915082900890508181612fc0850151086134208401525061300082015161302083015182919009613440830152613040820151818161306085015108613460840152506130e08201516130208301518291900961348083015261308082015181816130a085015108905081816130c0850151086134a084015250613140820151613020830151829190096134c08301526131008201518181613120850151086134e084015250612fe082015161302083015182919009613500830152613160820151806135208401525061342082015181816134608501510990508061354084015281816134a08501510990508061356084015281816134e0850151099050806135808401528181613520850151099050806135a08401525060206135e0830152602061360083015260206136208301526135a08201516136408301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff613660830152600080516020614fbd83398151915261368083015282600160206135c0850160c06135e0870160055afa141692506135c0820151600061352084015190508282613580860151096135208501528282820991506134e084015190508282613560860151096134e08501528282820991506134a084015190508282613540860151096134a08501528282820991506134608401519050828261342086015109613460850152828282096134208501525050613460820151613440830151829190096136a0830152806134a0830151613480840151096136c0830152806134e08301516134c0840151096136e08301528061352083015161350084015109613700830152610a20820151819080096137208301819052610a208301518291096137408301819052610a208301518291096137608301819052610a208301518291096137808301819052610a208301518291096137a08301819052610a208301518291096137c08301819052610a208301518291096137e08301819052610a208301518291096138008301819052610a208301518291096138208301819052610a208301518291096138408301819052610a208301518291096138608301819052610a208301518291096138808301819052610a208301518291096138a08301819052610a208301518291096138c08301819052610a208301518291096138e08301819052610a20830151829109613900830152610a80820151819080096139208301819052610a808301518291096139408301819052610a808301518291096139608301819052610a8083015182910961398083015280612f808301516105e084015109818183612fa086015161062087015109089050818183612fc08601516106a087015109086139a0840181905261342084015183925090096139c08301528060016139c08401518303096139e083015280612f8083015161060084015109818183612fa086015161064087015109089050818183612fc08601516106808701510908613a0084018190526134208401518392509009613a208301819052610a208301518291820309613a4083015280610a20830151600109613a6083015280613a408301516139e084015108613a80830152806001613a8084015109613aa0830152806001613a6084015109613ac083015280613440830151600109613ae083015280613040830151610660840151098181836130608601516106c08701510908613b0084018190526136a08401518392509009613b20830152806001613b20840151830309613b40830152806001613ae084015109613b6083015280613040830151610920840151098181836130608601516109408701510908613b8084018190526136a08401518392509009613ba08301819052610a208301518291820309613bc083015280610a20830151613ae084015109613be083015280613bc0830151613b4084015108613c0083015280613040830151610960840151098181836130608601516109808701510908613c2084018190526136a08401518392509009613c4083018190526137208301518291820309613c6083015280613720830151613ae084015109613c8083015280613c60830151613c0084015108613ca08301819052610a80830151829109613cc083015280610a80830151613b6084015109613ce083015280610a80830151613be084015109613d0083015280610a80830151613c8084015109613d2083015280613cc0830151613aa084015108613d4083015280613480830151600109613d60830152806130808301516108c0840151098181836130a08601516108e0870151090890508181836130c08601516109008701510908613d8084018190526136c08401518392509009613da0830152806001613da0840151830309613dc0830152806001613d6084015109613de083015280613920830151613dc084015109613e0083015280613920830151613de084015109613e2083015280613e00830151613d4084015108613e40830152806134c0830151600109613e60830152806131008301516109a0840151098181836131208601516109c08701510908613e8084018190526136e08401518392509009613ea0830152806001613ea0840151830309613ec0830152806001613e6084015109613ee083015280613940830151613ec084015109613f0083015280613940830151613ee084015109613f2083015280613f00830151613e4084015108613f4083015280613500830151600109613f60830152806131608301516109e084015109613f808301819052613700830151829109613fa0830152806001613fa0840151830309613fc0830152806001613f6084015109613fe0830152806131608301516106e08401510961400083018190526137008301518291096140208301819052610a20830151829182030961404083015280610a20830151613f608401510961406083015280614040830151613fc08401510861408083015280613160830151610700840151096140a083018190526137008301518291096140c0830181905261372083015182918203096140e083015280613720830151613f6084015109614100830152806140e083015161408084015108614120830152806131608301516107208401510961414083018190526137008301518291096141608301819052613740830151829182030961418083015280613740830151613f60840151096141a083015280614180830151614120840151086141c083015280613160830151610740840151096141e083018190526137008301518291096142008301819052613760830151829182030961422083015280613760830151613f6084015109614240830152806142208301516141c084015108614260830152806131608301516107608401510961428083018190526137008301518291096142a0830181905261378083015182918203096142c083015280613780830151613f60840151096142e0830152806142c0830151614260840151086143008301528061316083015161078084015109614320830181905261370083015182910961434083018190526137a08301518291820309614360830152806137a0830151613f608401510961438083015280614360830151614300840151086143a0830152806131608301516107a0840151096143c083018190526137008301518291096143e083018190526137c08301518291820309614400830152806137c0830151613f6084015109614420830152806144008301516143a084015108614440830152806131608301516107c084015109614460830181905261370083015182910961448083018190526137e083015182918203096144a0830152806137e0830151613f60840151096144c0830152806144a0830151614440840151086144e0830152806131608301516108008401510961450083018190526137008301518291096145208301819052613800830151829182030961454083015280613800830151613f6084015109614560830152806145408301516144e08401510861458083015280613160830151610820840151096145a083018190526137008301518291096145c0830181905261382083015182918203096145e083015280613820830151613f6084015109614600830152806145e083015161458084015108614620830152806131608301516108408401510961464083018190526137008301518291096146608301819052613840830151829182030961468083015280613840830151613f60840151096146a083015280614680830151614620840151086146c083015280613160830151610860840151096146e083018190526137008301518291096147008301819052613860830151829182030961472083015280613860830151613f6084015109614740830152806147208301516146c084015108614760830152806131608301516108808401510961478083018190526137008301518291096147a0830181905261388083015182918203096147c083015280613880830151613f60840151096147e0830152806147c083015161476084015108614800830152806131608301516108a084015109614820830181905261370083015182910961484083018190526138a08301518291820309614860830152806138a0830151613f608401510961488083015280614860830151614800840151086148a083015280613500830151612dc0840151096148c083015280613500830151612de0840151096148e083015280613500830151612e008401510961490083015280613500830151612e208401510961492083015280613160830151612e4084015109614940830181905261370083015182910961496083018190526138c08301518291820309614980830152806138c0830151613f60840151096149a0830152806138c08301516148c0840151096149c0830152806138c08301516148e0840151096149e0830152806138c083015161490084015109614a00830152806138c083015161492084015109614a20830152806149808301516148a084015108614a40830152806131608301516107e084015109614a608301819052613700830151829109614a8083018190526138e08301518291820309614aa0830152806138e0830151613f6084015109614ac083015280614aa0830151614a4084015108614ae08301819052613960830151829109614b0083015280613960830151613fe084015109614b208301528061396083015161406084015109614b408301528061396083015161410084015109614b60830152806139608301516141a084015109614b808301528061396083015161424084015109614ba0830152806139608301516142e084015109614bc08301528061396083015161438084015109614be08301528061396083015161442084015109614c00830152806139608301516144c084015109614c208301528061396083015161456084015109614c408301528061396083015161460084015109614c60830152806139608301516146a084015109614c808301528061396083015161474084015109614ca0830152806139608301516147e084015109614cc08301528061396083015161488084015109614ce0830152806139608301516149a084015109614d00830152806139608301516149c084015109614d20830152806139608301516149e084015109614d4083015280613960830151614a0084015109614d6083015280613960830151614a2084015109614d8083015280613960830151614ac084015109614da083015280614b00830151613f4084015108614dc083015280613020830151600109614de083015280610b20830151600109614e008301526001614e2083018181526002614e40850152614dc0840151614e6085015284919060409060608160075afa14169250614e20820151614e80830152614e40820151614ea08301526080820151614ec083015260a0820151614ee08301528260016040614e8085016080614e80870160065afa1416925060c0820151614f0083015260e0820151614f20830152613ac0820151614f408301528260016040614f0085016060614f00870160075afa14169250614e80820151614f60830152614ea0820151614f80830152614f00820151614fa0830152614f20820151614fc08301528260016040614f6085016080614f60870160065afa14169250610100820151614fe0830152610120820151615000830152613ce08201516150208301528260016040614fe085016060614fe0870160075afa14169250614f60820151615040830152614f80820151615060830152614fe08201516150808301526150008201516150a0830152826001604061504085016080615040870160065afa141692506103208201516150c08301526103408201516150e0830152613d0082015161510083015282600160406150c0850160606150c0870160075afa141692506150408201516151208301526150608201516151408301526150c08201516151608301526150e0820151615180830152826001604061512085016080615120870160065afa141692506103608201516151a08301526103808201516151c0830152613d208201516151e083015282600160406151a0850160606151a0870160075afa141692506151208201516152008301526151408201516152208301526151a08201516152408301526151c0820151615260830152826001604061520085016080615200870160065afa141692506102e08201516152808301526103008201516152a0830152613e208201516152c0830152826001604061528085016060615280870160075afa141692506152008201516152e08301526152208201516153008301526152808201516153208301526152a082015161534083015282600160406152e0850160806152e0870160065afa141692506101a08201516153608301526101c0820151615380830152613f208201516153a0830152826001604061536085016060615360870160075afa141692506152e08201516153c08301526153008201516153e083015261536082015161540083015261538082015161542083015282600160406153c0850160806153c0870160065afa141692506101e0820151615440830152610200820151615460830152614b20820151615480830152826001604061544085016060615440870160075afa141692506153c08201516154a08301526153e08201516154c08301526154408201516154e083015261546082015161550083015282600160406154a0850160806154a0870160065afa141692507f0655d62979dc062dc1e8c15334bf17cf5c7e6352219c0bd0b0cc039598d9a6696155208301527f019589d3002f6a0ded46a69053f0c05e7a7ca45339b3d2bae85d00f26ac0f33e615540830152614b40820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa141692507f1eab999592385208b42a12dcc047763ee5cf12052eb4b0d9a7a286e043f3df9f6156008301527f18887eb3c646ffd4961226c91bac9661004798b1fc6a39c43f9a6d1d03767194615620830152614b60820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692507f076806058b02e1b5e99b2f2e8eee613194f8df73481659f5938baacd64e4d7b86156e08301527f05ae81644b244dceea5350a84a79cbf0a199bbd6c1fad9887423f8c8048e6039615700830152614b8082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f0438873fc00231ae527efcf74d9092f5059dfa05275cbe7381e948fe3b7b61d86157c08301527f03c0f314c93403792ba86ec3841b3080f2f7cd092c6bcb632cdbc2122a13cdef6157e0830152614ba082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f2b12b132a6261ad60249147599cae0d5b3547e510deabba65526d130f04f24026158a08301527f13e3c02ce00f6b7e00d5b099eda5f1155956ae83899a2d59cefcb00dad66a7f66158c0830152614bc08201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f0ed83370277e0fd35e8258dd5630ce0ce3491fdf7e166d293745635b0cc4eba56159808301527f03994e7e77ad58072b78757700ab0b79247f2e462b0cf6a5a18b607414c095db6159a0830152614be08201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f23ba4bc49baab563e9d5bf07da231a4496d35b6bc782dbbd76135fe44c31cbcf615a608301527f28b88097e7edf1b2904f6c25c1e30ca0e38c74a52125b2995c4cf0a750683854615a80830152614c00820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f17dcbba0bbe2d24566de620998f62ff54ea5302ada6aeb18028b61b4dc19bbd3615b408301527f0e1f908007a5c2cc934426c26de7206c53fa10c79d63ef52ee91bfb568c72fbd615b60830152614c20820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f2c7823f99cb2adb716becb960914ffa1d6e2f257875fdd03c2bee52ef571d41e615c208301527f09ab83ebc6803e65b2e6831c8706d9a134f6b1cf6f6ec5c2697afee095320ee1615c40830152614c40820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f2dc12c205152bfacc354c838225571172c215e01a64de6a2ca6665c70937ac58615d008301527f0449eb529f0038a2bd2f6c0b6213a70488b69b479d90a953579e4c9d45621b85615d20830152614c60820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f09a2ab3913a4770fd50f6ba9ec4ce0b3178b54d7bfca5b42fe7e8e1ce5cf60a9615de08301527f13ec31f94026569c4bb76e2c4ceaa3e6525438ffb4a7a69cde61f6d77b93bad7615e00830152614c80820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974615ec08301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3615ee0830152614ca0820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f02a9a77d8e6f6fd89f33ba56fe45f6f5c907e50ba28cdd4198acfb562eb21103615fa08301527f23abee68d83c2d6632576e5e95ca01a61e5e3e6d9438c2ac6428c8b6edfe2aba615fc0830152614cc0820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f2cf36d36bfacbe1a8d8c626aefa75ac0feb46b725989a8e6fabed074bf9f6af76160808301527f060fded3ed5ec56d9e0064d73c472245a4c4b6ec371e9808692bf7f259d3b7306160a0830152614ce08201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa14169250610440820151616160830152610460820151616180830152614d008201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692506104808201516162408301526104a0820151616260830152614d20820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692506104c08201516163208301526104e0820151616340830152614d40820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa14169250610500820151616400830152610520820151616420830152614d60820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692506105408201516164e0830152610560820151616500830152614d8082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692506103a08201516165c08301526103c08201516165e0830152614da082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa14169250610ac08201516166a0830152610ae08201516166c0830152614de082015181036166e08301525081600160406166a0840160606166a0860160075afa141691506166208101516167008201526166408101516167208201526166a08101516167408201526166c0810151616760820152816001604061670084016080616700860160065afa14169150610b60810151616780820152610b808101516167a0820152614e008101516167c0820152816001604061678084016060616780860160075afa141691506167008101516167e08201526167208101516168008201526167808101516168208201526167a081015161684082015281600160406167e0840160806167e0860160065afa141691506167e08101516168608201526168008101516168808201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26168a08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6168c08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6168e08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa616900820152610b60810151616920820152610b808101516169408201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6169608201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6169808201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456169a08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff6169c082015281600160206168608401610180616860860160085afa61686093909301516001149214161691505092915050565b604051806169c0016040528061034e906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614e5c57614e5c614e1d565b604052919050565b600082601f830112614e7557600080fd5b813567ffffffffffffffff811115614e8f57614e8f614e1d565b614ea2601f8201601f1916602001614e33565b818152846020838601011115614eb757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215614ee757600080fd5b823567ffffffffffffffff80821115614eff57600080fd5b818501915085601f830112614f1357600080fd5b8135602082821115614f2757614f27614e1d565b8160051b614f36828201614e33565b928352848101820192828101908a851115614f5057600080fd5b958301955b84871015614f6e57863582529583019590830190614f55565b9750505086013592505080821115614f8557600080fd5b50614f9285828601614e64565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220d4b2dc8798bab17b65a2e72c3cd13b07b4a58aae366a77784852333c75aa78b964736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} diff --git a/backend/src/contracts/abi/Summa.json b/backend/src/contracts/abi/Summa.json index fd7e3ec0..224b5e3f 100644 --- a/backend/src/contracts/abi/Summa.json +++ b/backend/src/contracts/abi/Summa.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"contract IVerifier","name":"_solvencyVerifier","type":"address"},{"internalType":"contract IVerifier","name":"_inclusionVerifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"indexed":false,"internalType":"struct Summa.AddressOwnershipProof[]","name":"addressOwnershipProofs","type":"tuple[]"}],"name":"AddressOwnershipProofSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mstRoot","type":"uint256"},{"components":[{"internalType":"string","name":"assetName","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"indexed":false,"internalType":"struct Summa.Asset[]","name":"assets","type":"tuple[]"}],"name":"SolvencyProofSubmitted","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressOwnershipProofs","outputs":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"mstRoots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"ownershipProofByAddress","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof[]","name":"_addressOwnershipProofs","type":"tuple[]"}],"name":"submitProofOfAddressOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"},{"components":[{"internalType":"string","name":"assetName","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"uint256","name":"amount","type":"uint256"}],"internalType":"struct Summa.Asset[]","name":"assets","type":"tuple[]"},{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"submitProofOfSolvency","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"publicInputs","type":"uint256[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"verifyInclusionProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"publicInputs","type":"uint256[]"}],"name":"verifySolvencyProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60c06040523480156200001157600080fd5b50604051620016f3380380620016f38339810160408190526200003491620000c4565b6200003f3362000057565b6001600160a01b039182166080521660a052620000fc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620000bf57600080fd5b919050565b60008060408385031215620000d857600080fd5b620000e383620000a7565b9150620000f360208401620000a7565b90509250929050565b60805160a0516115d1620001226000396000610a850152600061045e01526115d16000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610136578063a3c4bcf814610151578063c7ddca0e14610174578063c8e5814714610187578063f2fde38b1461019a57600080fd5b806323eb94a0146100a3578063413a9f2d146100d65780636c7684fe146100eb578063715018a61461010e5780637f3bfb2e14610116575b600080fd5b6100c36100b1366004610c28565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b6100e96100e4366004610d68565b6101ad565b005b6100fe6100f9366004610f22565b610444565b60405190151581526020016100cd565b6100e96104df565b6100c3610124366004610c28565b60036020526000908152604090205481565b6000546040516001600160a01b0390911681526020016100cd565b61016461015f366004610c28565b6104f3565b6040516100cd9493929190610fcc565b6100e9610182366004611024565b610753565b6100fe61019536600461117e565b6109fd565b6100e96101a83660046111eb565b610b05565b6101b5610b7e565b60015460000361022b5760405162461bcd60e51b815260206004820152603660248201527f5468652043455820686173206e6f74207375626d697474656420616e792061646044820152756472657373206f776e6572736869702070726f6f667360501b60648201526084015b60405180910390fd5b60008351600161023b9190611231565b67ffffffffffffffff81111561025357610253610c41565b60405190808252806020026020018201604052801561027c578160200160208202803683370190505b509050848160008151811061029357610293611244565b60200260200101818152505060005b845181101561038e578481815181106102bd576102bd611244565b602002602001015160200151516000141580156102f957508481815181106102e7576102e7611244565b60200260200101516000015151600014155b6103355760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a5908185cdcd95d609a1b6044820152606401610222565b84818151811061034757610347611244565b602002602001015160400151828260016103619190611231565b8151811061037157610371611244565b6020908102919091010152806103868161125a565b9150506102a2565b506103998382610444565b6103d85760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2102d2590383937b7b360811b6044820152606401610222565b6000828152600360205260408120869055815183917f0473581c3cf437afc52207d88ce1541afbc7ce9fdb83b4d4d3b7214beed56ff59184919061041e5761041e611244565b602002602001015186604051610435929190611273565b60405180910390a25050505050565b604051630bd205a960e41b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610495908590879060040161130a565b602060405180830381865afa1580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190611361565b90505b92915050565b6104e7610b7e565b6104f16000610bd8565b565b6001818154811061050357600080fd5b906000526020600020906004020160009150905080600001805461052690611383565b80601f016020809104026020016040519081016040528092919081815260200182805461055290611383565b801561059f5780601f106105745761010080835404028352916020019161059f565b820191906000526020600020905b81548152906001019060200180831161058257829003601f168201915b5050505050908060010180546105b490611383565b80601f01602080910402602001604051908101604052809291908181526020018280546105e090611383565b801561062d5780601f106106025761010080835404028352916020019161062d565b820191906000526020600020905b81548152906001019060200180831161061057829003601f168201915b50505050509080600201805461064290611383565b80601f016020809104026020016040519081016040528092919081815260200182805461066e90611383565b80156106bb5780601f10610690576101008083540402835291602001916106bb565b820191906000526020600020905b81548152906001019060200180831161069e57829003601f168201915b5050505050908060030180546106d090611383565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611383565b80156107495780601f1061071e57610100808354040283529160200191610749565b820191906000526020600020905b81548152906001019060200180831161072c57829003601f168201915b5050505050905084565b61075b610b7e565b60005b81518110156109c257600082828151811061077b5761077b611244565b60200260200101516000015160405160200161079791906113bd565b60408051601f19818403018152918152815160209283012060008181526002909352912054909150801561080d5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610222565b610818836001611231565b600083815260026020526040902055835160019085908590811061083e5761083e611244565b60209081029190910181015182546001810184556000938452919092208251600490920201908190610870908261141f565b5060208201516001820190610885908261141f565b506040820151600282019061089a908261141f565b50606082015160038201906108af908261141f565b5050508383815181106108c4576108c4611244565b6020026020010151600001515160001415801561090057508383815181106108ee576108ee611244565b60200260200101516020015151600014155b801561092b575083838151811061091957610919611244565b60200260200101516040015151600014155b8015610956575083838151811061094457610944611244565b60200260200101516060015151600014155b6109ad5760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610222565b505080806109ba9061125a565b91505061075e565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516109f291906114df565b60405180910390a150565b600082600181518110610a1257610a12611244565b6020026020010151600360008481526020019081526020016000205414610a6e5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610222565b604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610abc908690889060040161130a565b602060405180830381865afa158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd9190611361565b949350505050565b610b0d610b7e565b6001600160a01b038116610b725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610222565b610b7b81610bd8565b50565b6000546001600160a01b031633146104f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610222565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610c3a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610c7a57610c7a610c41565b60405290565b6040516080810167ffffffffffffffff81118282101715610c7a57610c7a610c41565b604051601f8201601f1916810167ffffffffffffffff81118282101715610ccc57610ccc610c41565b604052919050565b600067ffffffffffffffff821115610cee57610cee610c41565b5060051b60200190565b600082601f830112610d0957600080fd5b813567ffffffffffffffff811115610d2357610d23610c41565b610d36601f8201601f1916602001610ca3565b818152846020838601011115610d4b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610d7e57600080fd5b84359350602085013567ffffffffffffffff80821115610d9d57600080fd5b818701915087601f830112610db157600080fd5b610dc3610dbe8335610cd4565b610ca3565b82358082526020808301929160051b8501018a811115610de257600080fd5b602085015b81811015610e84578481351115610dfd57600080fd5b803586016060818e03601f19011215610e1557600080fd5b610e1d610c57565b602082013587811115610e2f57600080fd5b610e3e8f602083860101610cf8565b825250604082013587811115610e5357600080fd5b610e628f602083860101610cf8565b6020838101919091526060939093013560408301525085529384019301610de7565b5090965050506040870135915080821115610e9e57600080fd5b50610eab87828801610cf8565b949793965093946060013593505050565b600082601f830112610ecd57600080fd5b81356020610edd610dbe83610cd4565b82815260059290921b84018101918181019086841115610efc57600080fd5b8286015b84811015610f175780358352918301918301610f00565b509695505050505050565b60008060408385031215610f3557600080fd5b823567ffffffffffffffff80821115610f4d57600080fd5b610f5986838701610cf8565b93506020850135915080821115610f6f57600080fd5b50610f7c85828601610ebc565b9150509250929050565b6000815180845260005b81811015610fac57602081850181015186830182015201610f90565b506000602082860101526020601f19601f83011685010191505092915050565b608081526000610fdf6080830187610f86565b8281036020840152610ff18187610f86565b905082810360408401526110058186610f86565b905082810360608401526110198185610f86565b979650505050505050565b6000602080838503121561103757600080fd5b823567ffffffffffffffff8082111561104f57600080fd5b818501915085601f83011261106357600080fd5b8135611071610dbe82610cd4565b81815260059190911b8301840190848101908883111561109057600080fd5b8585015b83811015611171578035858111156110ab57600080fd5b86016080818c03601f190112156110c25760008081fd5b6110ca610c80565b88820135878111156110dc5760008081fd5b6110ea8d8b83860101610cf8565b825250604080830135888111156111015760008081fd5b61110f8e8c83870101610cf8565b8b84015250606080840135898111156111285760008081fd5b6111368f8d83880101610cf8565b838501525060808401359150888211156111505760008081fd5b61115e8e8c84870101610cf8565b9083015250845250918601918601611094565b5098975050505050505050565b60008060006060848603121561119357600080fd5b833567ffffffffffffffff808211156111ab57600080fd5b6111b787838801610cf8565b945060208601359150808211156111cd57600080fd5b506111da86828701610ebc565b925050604084013590509250925092565b6000602082840312156111fd57600080fd5b81356001600160a01b038116811461121457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104d9576104d961121b565b634e487b7160e01b600052603260045260246000fd5b60006001820161126c5761126c61121b565b5060010190565b6000604080830185845260208281860152818651808452606093508387019150838160051b88010183890160005b838110156112fa57898303605f19018552815180518885526112c589860182610f86565b905087820151858203898701526112dc8282610f86565b928b0151958b019590955250948601949250908501906001016112a1565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b8281101561134357815184529284019290840190600101611327565b505050838103828501526113578186610f86565b9695505050505050565b60006020828403121561137357600080fd5b8151801515811461121457600080fd5b600181811c9082168061139757607f821691505b6020821081036113b757634e487b7160e01b600052602260045260246000fd5b50919050565b6020815260006104d66020830184610f86565b601f82111561141a57600081815260208120601f850160051c810160208610156113f75750805b601f850160051c820191505b8181101561141657828155600101611403565b5050505b505050565b815167ffffffffffffffff81111561143957611439610c41565b61144d816114478454611383565b846113d0565b602080601f831160018114611482576000841561146a5750858301515b600019600386901b1c1916600185901b178555611416565b600085815260208120601f198616915b828110156114b157888601518255948401946001909101908401611492565b50858210156114cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561158d57603f1989840301855281516080815181865261152c82870182610f86565b915050888201518582038a8701526115448282610f86565b915050878201518582038987015261155c8282610f86565b915050606080830151925085820381870152506115798183610f86565b968901969450505090860190600101611506565b50909897505050505050505056fea2646970667358221220f32f840eddc80cec82eb8f05c34e311f2c0922da70b900e8971882d940e5044964736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c80638da5cb5b116100665780638da5cb5b14610136578063a3c4bcf814610151578063c7ddca0e14610174578063c8e5814714610187578063f2fde38b1461019a57600080fd5b806323eb94a0146100a3578063413a9f2d146100d65780636c7684fe146100eb578063715018a61461010e5780637f3bfb2e14610116575b600080fd5b6100c36100b1366004610c28565b60026020526000908152604090205481565b6040519081526020015b60405180910390f35b6100e96100e4366004610d68565b6101ad565b005b6100fe6100f9366004610f22565b610444565b60405190151581526020016100cd565b6100e96104df565b6100c3610124366004610c28565b60036020526000908152604090205481565b6000546040516001600160a01b0390911681526020016100cd565b61016461015f366004610c28565b6104f3565b6040516100cd9493929190610fcc565b6100e9610182366004611024565b610753565b6100fe61019536600461117e565b6109fd565b6100e96101a83660046111eb565b610b05565b6101b5610b7e565b60015460000361022b5760405162461bcd60e51b815260206004820152603660248201527f5468652043455820686173206e6f74207375626d697474656420616e792061646044820152756472657373206f776e6572736869702070726f6f667360501b60648201526084015b60405180910390fd5b60008351600161023b9190611231565b67ffffffffffffffff81111561025357610253610c41565b60405190808252806020026020018201604052801561027c578160200160208202803683370190505b509050848160008151811061029357610293611244565b60200260200101818152505060005b845181101561038e578481815181106102bd576102bd611244565b602002602001015160200151516000141580156102f957508481815181106102e7576102e7611244565b60200260200101516000015151600014155b6103355760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a5908185cdcd95d609a1b6044820152606401610222565b84818151811061034757610347611244565b602002602001015160400151828260016103619190611231565b8151811061037157610371611244565b6020908102919091010152806103868161125a565b9150506102a2565b506103998382610444565b6103d85760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2102d2590383937b7b360811b6044820152606401610222565b6000828152600360205260408120869055815183917f0473581c3cf437afc52207d88ce1541afbc7ce9fdb83b4d4d3b7214beed56ff59184919061041e5761041e611244565b602002602001015186604051610435929190611273565b60405180910390a25050505050565b604051630bd205a960e41b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610495908590879060040161130a565b602060405180830381865afa1580156104b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d69190611361565b90505b92915050565b6104e7610b7e565b6104f16000610bd8565b565b6001818154811061050357600080fd5b906000526020600020906004020160009150905080600001805461052690611383565b80601f016020809104026020016040519081016040528092919081815260200182805461055290611383565b801561059f5780601f106105745761010080835404028352916020019161059f565b820191906000526020600020905b81548152906001019060200180831161058257829003601f168201915b5050505050908060010180546105b490611383565b80601f01602080910402602001604051908101604052809291908181526020018280546105e090611383565b801561062d5780601f106106025761010080835404028352916020019161062d565b820191906000526020600020905b81548152906001019060200180831161061057829003601f168201915b50505050509080600201805461064290611383565b80601f016020809104026020016040519081016040528092919081815260200182805461066e90611383565b80156106bb5780601f10610690576101008083540402835291602001916106bb565b820191906000526020600020905b81548152906001019060200180831161069e57829003601f168201915b5050505050908060030180546106d090611383565b80601f01602080910402602001604051908101604052809291908181526020018280546106fc90611383565b80156107495780601f1061071e57610100808354040283529160200191610749565b820191906000526020600020905b81548152906001019060200180831161072c57829003601f168201915b5050505050905084565b61075b610b7e565b60005b81518110156109c257600082828151811061077b5761077b611244565b60200260200101516000015160405160200161079791906113bd565b60408051601f19818403018152918152815160209283012060008181526002909352912054909150801561080d5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610222565b610818836001611231565b600083815260026020526040902055835160019085908590811061083e5761083e611244565b60209081029190910181015182546001810184556000938452919092208251600490920201908190610870908261141f565b5060208201516001820190610885908261141f565b506040820151600282019061089a908261141f565b50606082015160038201906108af908261141f565b5050508383815181106108c4576108c4611244565b6020026020010151600001515160001415801561090057508383815181106108ee576108ee611244565b60200260200101516020015151600014155b801561092b575083838151811061091957610919611244565b60200260200101516040015151600014155b8015610956575083838151811061094457610944611244565b60200260200101516060015151600014155b6109ad5760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610222565b505080806109ba9061125a565b91505061075e565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516109f291906114df565b60405180910390a150565b600082600181518110610a1257610a12611244565b6020026020010151600360008481526020019081526020016000205414610a6e5760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610222565b604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610abc908690889060040161130a565b602060405180830381865afa158015610ad9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afd9190611361565b949350505050565b610b0d610b7e565b6001600160a01b038116610b725760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610222565b610b7b81610bd8565b50565b6000546001600160a01b031633146104f15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610222565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610c3a57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff81118282101715610c7a57610c7a610c41565b60405290565b6040516080810167ffffffffffffffff81118282101715610c7a57610c7a610c41565b604051601f8201601f1916810167ffffffffffffffff81118282101715610ccc57610ccc610c41565b604052919050565b600067ffffffffffffffff821115610cee57610cee610c41565b5060051b60200190565b600082601f830112610d0957600080fd5b813567ffffffffffffffff811115610d2357610d23610c41565b610d36601f8201601f1916602001610ca3565b818152846020838601011115610d4b57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215610d7e57600080fd5b84359350602085013567ffffffffffffffff80821115610d9d57600080fd5b818701915087601f830112610db157600080fd5b610dc3610dbe8335610cd4565b610ca3565b82358082526020808301929160051b8501018a811115610de257600080fd5b602085015b81811015610e84578481351115610dfd57600080fd5b803586016060818e03601f19011215610e1557600080fd5b610e1d610c57565b602082013587811115610e2f57600080fd5b610e3e8f602083860101610cf8565b825250604082013587811115610e5357600080fd5b610e628f602083860101610cf8565b6020838101919091526060939093013560408301525085529384019301610de7565b5090965050506040870135915080821115610e9e57600080fd5b50610eab87828801610cf8565b949793965093946060013593505050565b600082601f830112610ecd57600080fd5b81356020610edd610dbe83610cd4565b82815260059290921b84018101918181019086841115610efc57600080fd5b8286015b84811015610f175780358352918301918301610f00565b509695505050505050565b60008060408385031215610f3557600080fd5b823567ffffffffffffffff80821115610f4d57600080fd5b610f5986838701610cf8565b93506020850135915080821115610f6f57600080fd5b50610f7c85828601610ebc565b9150509250929050565b6000815180845260005b81811015610fac57602081850181015186830182015201610f90565b506000602082860101526020601f19601f83011685010191505092915050565b608081526000610fdf6080830187610f86565b8281036020840152610ff18187610f86565b905082810360408401526110058186610f86565b905082810360608401526110198185610f86565b979650505050505050565b6000602080838503121561103757600080fd5b823567ffffffffffffffff8082111561104f57600080fd5b818501915085601f83011261106357600080fd5b8135611071610dbe82610cd4565b81815260059190911b8301840190848101908883111561109057600080fd5b8585015b83811015611171578035858111156110ab57600080fd5b86016080818c03601f190112156110c25760008081fd5b6110ca610c80565b88820135878111156110dc5760008081fd5b6110ea8d8b83860101610cf8565b825250604080830135888111156111015760008081fd5b61110f8e8c83870101610cf8565b8b84015250606080840135898111156111285760008081fd5b6111368f8d83880101610cf8565b838501525060808401359150888211156111505760008081fd5b61115e8e8c84870101610cf8565b9083015250845250918601918601611094565b5098975050505050505050565b60008060006060848603121561119357600080fd5b833567ffffffffffffffff808211156111ab57600080fd5b6111b787838801610cf8565b945060208601359150808211156111cd57600080fd5b506111da86828701610ebc565b925050604084013590509250925092565b6000602082840312156111fd57600080fd5b81356001600160a01b038116811461121457600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156104d9576104d961121b565b634e487b7160e01b600052603260045260246000fd5b60006001820161126c5761126c61121b565b5060010190565b6000604080830185845260208281860152818651808452606093508387019150838160051b88010183890160005b838110156112fa57898303605f19018552815180518885526112c589860182610f86565b905087820151858203898701526112dc8282610f86565b928b0151958b019590955250948601949250908501906001016112a1565b50909a9950505050505050505050565b604080825283519082018190526000906020906060840190828701845b8281101561134357815184529284019290840190600101611327565b505050838103828501526113578186610f86565b9695505050505050565b60006020828403121561137357600080fd5b8151801515811461121457600080fd5b600181811c9082168061139757607f821691505b6020821081036113b757634e487b7160e01b600052602260045260246000fd5b50919050565b6020815260006104d66020830184610f86565b601f82111561141a57600081815260208120601f850160051c810160208610156113f75750805b601f850160051c820191505b8181101561141657828155600101611403565b5050505b505050565b815167ffffffffffffffff81111561143957611439610c41565b61144d816114478454611383565b846113d0565b602080601f831160018114611482576000841561146a5750858301515b600019600386901b1c1916600185901b178555611416565b600085815260208120601f198616915b828110156114b157888601518255948401946001909101908401611492565b50858210156114cf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020808301818452808551808352604092508286019150828160051b87010184880160005b8381101561158d57603f1989840301855281516080815181865261152c82870182610f86565b915050888201518582038a8701526115448282610f86565b915050878201518582038987015261155c8282610f86565b915050606080830151925085820381870152506115798183610f86565b968901969450505090860190600101611506565b50909897505050505050505056fea2646970667358221220f32f840eddc80cec82eb8f05c34e311f2c0922da70b900e8971882d940e5044964736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file +{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"contract IVerifier","name":"_inclusionVerifier","type":"address"},{"internalType":"uint16","name":"mstLevels","type":"uint16"},{"internalType":"uint16","name":"currenciesCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"indexed":false,"internalType":"struct Summa.AddressOwnershipProof[]","name":"addressOwnershipProofs","type":"tuple[]"}],"name":"AddressOwnershipProofSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mstRoot","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"indexed":false,"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","type":"tuple[]"}],"name":"LiabilitiesCommitmentSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressOwnershipProofs","outputs":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"config","outputs":[{"internalType":"uint16","name":"mstLevels","type":"uint16"},{"internalType":"uint16","name":"currenciesCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"addressHash","type":"bytes32"}],"name":"getAddressOwnershipProof","outputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"},{"internalType":"uint256[]","name":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","type":"tuple[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"submitCommitment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof[]","name":"_addressOwnershipProofs","type":"tuple[]"}],"name":"submitProofOfAddressOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"publicInputs","type":"uint256[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"verifyInclusionProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a06040523480156200001157600080fd5b5060405162001cf938038062001cf9833981016040819052620000349162000110565b6200003f33620000a8565b6001600160a01b03939093166080526040805160608101825261ffff938416808252929093166020840181905260ff90941692018290526001805463ffffffff1916909117620100009093029290921760ff60201b191664010000000090910217905562000181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805161ffff811681146200010b57600080fd5b919050565b600080600080608085870312156200012757600080fd5b84516001600160a01b03811681146200013f57600080fd5b93506200014f60208601620000f8565b92506200015f60408601620000f8565b9150606085015160ff811681146200017657600080fd5b939692955090935050565b608051611b5c6200019d6000396000610b5b0152611b5c6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a3c4bcf811610066578063a3c4bcf814610169578063c7ddca0e1461018c578063c8e581471461019f578063da64a750146101c2578063f2fde38b146101d557600080fd5b806319b33968146100a357806349ce8997146100cc578063715018a6146100fa57806379502c55146101045780638da5cb5b1461014e575b600080fd5b6100b66100b13660046111d3565b6101e8565b6040516100c391906112a7565b60405180910390f35b6100ec6100da3660046111d3565b60046020526000908152604090205481565b6040519081526020016100c3565b610102610500565b005b60015461012a9061ffff8082169162010000810490911690640100000000900460ff1683565b6040805161ffff948516815293909216602084015260ff16908201526060016100c3565b6000546040516001600160a01b0390911681526020016100c3565b61017c6101773660046111d3565b610514565b6040516100c394939291906112c1565b61010261019a366004611440565b610774565b6101b26101ad366004611605565b610a15565b60405190151581526020016100c3565b6101026101d0366004611672565b610bdb565b6101026101e33660046117b9565b610fa7565b6102136040518060800160405280606081526020016060815260200160608152602001606081525090565b60008281526003602052604090205461026a5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b600082815260036020526040902054600290610288906001906117f8565b8154811061029857610298611811565b90600052602060002090600402016040518060800160405290816000820180546102c190611827565b80601f01602080910402602001604051908101604052809291908181526020018280546102ed90611827565b801561033a5780601f1061030f5761010080835404028352916020019161033a565b820191906000526020600020905b81548152906001019060200180831161031d57829003601f168201915b5050505050815260200160018201805461035390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461037f90611827565b80156103cc5780601f106103a1576101008083540402835291602001916103cc565b820191906000526020600020905b8154815290600101906020018083116103af57829003601f168201915b505050505081526020016002820180546103e590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461041190611827565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050815260200160038201805461047790611827565b80601f01602080910402602001604051908101604052809291908181526020018280546104a390611827565b80156104f05780601f106104c5576101008083540402835291602001916104f0565b820191906000526020600020905b8154815290600101906020018083116104d357829003601f168201915b5050505050815250509050919050565b610508611020565b610512600061107a565b565b6002818154811061052457600080fd5b906000526020600020906004020160009150905080600001805461054790611827565b80601f016020809104026020016040519081016040528092919081815260200182805461057390611827565b80156105c05780601f10610595576101008083540402835291602001916105c0565b820191906000526020600020905b8154815290600101906020018083116105a357829003601f168201915b5050505050908060010180546105d590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461060190611827565b801561064e5780601f106106235761010080835404028352916020019161064e565b820191906000526020600020905b81548152906001019060200180831161063157829003601f168201915b50505050509080600201805461066390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90611827565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050908060030180546106f190611827565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90611827565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905084565b61077c611020565b60005b81518110156109da57600082828151811061079c5761079c611811565b6020026020010151600001516040516020016107b89190611861565b60408051601f19818403018152918152815160209283012060008181526003909352912054909150801561082e5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610261565b600284848151811061084257610842611811565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061087490826118cc565b506020820151600182019061088990826118cc565b506040820151600282019061089e90826118cc565b50606082015160038201906108b390826118cc565b50506002546000848152600360205260409020555083518490849081106108dc576108dc611811565b60200260200101516000015151600014158015610918575083838151811061090657610906611811565b60200260200101516020015151600014155b8015610943575083838151811061093157610931611811565b60200260200101516040015151600014155b801561096e575083838151811061095c5761095c611811565b60200260200101516060015151600014155b6109c55760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610261565b505080806109d29061198c565b91505061077f565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465881604051610a0a91906119a5565b60405180910390a150565b600082600181518110610a2a57610a2a611811565b6020026020010151600460008481526020019081526020016000206000015414610a895760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b60025b8351811015610b4357838181518110610aa757610aa7611811565b602002602001015160046000858152602001908152602001600020600101600283610ad291906117f8565b81548110610ae257610ae2611811565b906000526020600020015414610b315760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b6044820152606401610261565b80610b3b8161198c565b915050610a8c565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b929086908890600401611a42565b602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611a67565b949350505050565b610be3611020565b83600003610c265760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b8151835114610c955760405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b6064820152608401610261565b6000825167ffffffffffffffff811115610cb157610cb1611319565b604051908082528060200260200182016040528015610ce457816020015b6060815260200190600190039081610ccf5790505b5090506000835167ffffffffffffffff811115610d0357610d03611319565b604051908082528060200260200182016040528015610d3657816020015b6060815260200190600190039081610d215790505b50905060005b8451811015610edc57848181518110610d5757610d57611811565b60200260200101516020015151600014158015610d935750848181518110610d8157610d81611811565b60200260200101516000015151600014155b610dd85760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b6044820152606401610261565b858181518110610dea57610dea611811565b6020026020010151600003610e535760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610261565b848181518110610e6557610e65611811565b602002602001015160000151838281518110610e8357610e83611811565b6020026020010181905250848181518110610ea057610ea0611811565b602002602001015160200151828281518110610ebe57610ebe611811565b60200260200101819052508080610ed49061198c565b915050610d3c565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260048352939093208251815592518051929392610f2792600185019201906110ca565b5060408201518051610f43916002840191602090910190611115565b5060608201518051610f5f916003840191602090910190611115565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f9793929190611a89565b60405180910390a2505050505050565b610faf611020565b6001600160a01b0381166110145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610261565b61101d8161107a565b50565b6000546001600160a01b031633146105125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610261565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215611105579160200282015b828111156111055782518255916020019190600101906110ea565b50611111929150611167565b5090565b82805482825590600052602060002090810192821561115b579160200282015b8281111561115b578251829061114b90826118cc565b5091602001919060010190611135565b5061111192915061117c565b5b808211156111115760008155600101611168565b808211156111115760006111908282611199565b5060010161117c565b5080546111a590611827565b6000825580601f106111b5575050565b601f01602090049060005260206000209081019061101d9190611167565b6000602082840312156111e557600080fd5b5035919050565b60005b838110156112075781810151838201526020016111ef565b50506000910152565b600081518084526112288160208601602086016111ec565b601f01601f19169290920160200192915050565b60008151608084526112516080850182611210565b90506020830151848203602086015261126a8282611210565b915050604083015184820360408601526112848282611210565b9150506060830151848203606086015261129e8282611210565b95945050505050565b6020815260006112ba602083018461123c565b9392505050565b6080815260006112d46080830187611210565b82810360208401526112e68187611210565b905082810360408401526112fa8186611210565b9050828103606084015261130e8185611210565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561135257611352611319565b60405290565b6040805190810167ffffffffffffffff8111828210171561135257611352611319565b604051601f8201601f1916810167ffffffffffffffff811182821017156113a4576113a4611319565b604052919050565b600067ffffffffffffffff8211156113c6576113c6611319565b5060051b60200190565b600082601f8301126113e157600080fd5b813567ffffffffffffffff8111156113fb576113fb611319565b61140e601f8201601f191660200161137b565b81815284602083860101111561142357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561145357600080fd5b823567ffffffffffffffff8082111561146b57600080fd5b818501915085601f83011261147f57600080fd5b813561149261148d826113ac565b61137b565b81815260059190911b830184019084810190888311156114b157600080fd5b8585015b83811015611592578035858111156114cc57600080fd5b86016080818c03601f190112156114e35760008081fd5b6114eb61132f565b88820135878111156114fd5760008081fd5b61150b8d8b838601016113d0565b825250604080830135888111156115225760008081fd5b6115308e8c838701016113d0565b8b84015250606080840135898111156115495760008081fd5b6115578f8d838801016113d0565b838501525060808401359150888211156115715760008081fd5b61157f8e8c848701016113d0565b90830152508452509186019186016114b5565b5098975050505050505050565b600082601f8301126115b057600080fd5b813560206115c061148d836113ac565b82815260059290921b840181019181810190868411156115df57600080fd5b8286015b848110156115fa57803583529183019183016115e3565b509695505050505050565b60008060006060848603121561161a57600080fd5b833567ffffffffffffffff8082111561163257600080fd5b61163e878388016113d0565b9450602086013591508082111561165457600080fd5b506116618682870161159f565b925050604084013590509250925092565b6000806000806080858703121561168857600080fd5b84359350602085013567ffffffffffffffff808211156116a757600080fd5b6116b38883890161159f565b945060408701359150808211156116c957600080fd5b818701915087601f8301126116dd57600080fd5b6116ea61148d83356113ac565b82358082526020808301929160051b8501018a81111561170957600080fd5b602085015b818110156117a557848135111561172457600080fd5b803586016040818e03601f1901121561173c57600080fd5b611744611358565b60208201358781111561175657600080fd5b6117658f6020838601016113d0565b82525060408201358781111561177a57600080fd5b6117898f6020838601016113d0565b602083015250808652505060208401935060208101905061170e565b50979a969950976060013596505050505050565b6000602082840312156117cb57600080fd5b81356001600160a01b03811681146112ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561180b5761180b6117e2565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061183b57607f821691505b60208210810361185b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516118738184602087016111ec565b9190910192915050565b601f8211156118c757600081815260208120601f850160051c810160208610156118a45750805b601f850160051c820191505b818110156118c3578281556001016118b0565b5050505b505050565b815167ffffffffffffffff8111156118e6576118e6611319565b6118fa816118f48454611827565b8461187d565b602080601f83116001811461192f57600084156119175750858301515b600019600386901b1c1916600185901b1785556118c3565b600085815260208120601f198616915b8281101561195e5788860151825594840194600190910190840161193f565b508582101561197c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161199e5761199e6117e2565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119fa57603f198886030184526119e885835161123c565b945092850192908501906001016119cc565b5092979650505050505050565b600081518084526020808501945080840160005b83811015611a3757815187529582019590820190600101611a1b565b509495945050505050565b604081526000611a556040830185611a07565b828103602084015261129e8185611210565b600060208284031215611a7957600080fd5b815180151581146112ba57600080fd5b83815260006020606081840152611aa36060840186611a07565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611b1557868303601f1901855281518051878552611ae988860182611210565b918a0151858303868c0152919050611b018183611210565b968a01969450505090870190600101611ac5565b50909b9a505050505050505050505056fea264697066735822122045d9336f0b6314796496c7a1cf160c19b42a61943a90fb5bbe2cfcef107bb5db64736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a3c4bcf811610066578063a3c4bcf814610169578063c7ddca0e1461018c578063c8e581471461019f578063da64a750146101c2578063f2fde38b146101d557600080fd5b806319b33968146100a357806349ce8997146100cc578063715018a6146100fa57806379502c55146101045780638da5cb5b1461014e575b600080fd5b6100b66100b13660046111d3565b6101e8565b6040516100c391906112a7565b60405180910390f35b6100ec6100da3660046111d3565b60046020526000908152604090205481565b6040519081526020016100c3565b610102610500565b005b60015461012a9061ffff8082169162010000810490911690640100000000900460ff1683565b6040805161ffff948516815293909216602084015260ff16908201526060016100c3565b6000546040516001600160a01b0390911681526020016100c3565b61017c6101773660046111d3565b610514565b6040516100c394939291906112c1565b61010261019a366004611440565b610774565b6101b26101ad366004611605565b610a15565b60405190151581526020016100c3565b6101026101d0366004611672565b610bdb565b6101026101e33660046117b9565b610fa7565b6102136040518060800160405280606081526020016060815260200160608152602001606081525090565b60008281526003602052604090205461026a5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b600082815260036020526040902054600290610288906001906117f8565b8154811061029857610298611811565b90600052602060002090600402016040518060800160405290816000820180546102c190611827565b80601f01602080910402602001604051908101604052809291908181526020018280546102ed90611827565b801561033a5780601f1061030f5761010080835404028352916020019161033a565b820191906000526020600020905b81548152906001019060200180831161031d57829003601f168201915b5050505050815260200160018201805461035390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461037f90611827565b80156103cc5780601f106103a1576101008083540402835291602001916103cc565b820191906000526020600020905b8154815290600101906020018083116103af57829003601f168201915b505050505081526020016002820180546103e590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461041190611827565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050815260200160038201805461047790611827565b80601f01602080910402602001604051908101604052809291908181526020018280546104a390611827565b80156104f05780601f106104c5576101008083540402835291602001916104f0565b820191906000526020600020905b8154815290600101906020018083116104d357829003601f168201915b5050505050815250509050919050565b610508611020565b610512600061107a565b565b6002818154811061052457600080fd5b906000526020600020906004020160009150905080600001805461054790611827565b80601f016020809104026020016040519081016040528092919081815260200182805461057390611827565b80156105c05780601f10610595576101008083540402835291602001916105c0565b820191906000526020600020905b8154815290600101906020018083116105a357829003601f168201915b5050505050908060010180546105d590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461060190611827565b801561064e5780601f106106235761010080835404028352916020019161064e565b820191906000526020600020905b81548152906001019060200180831161063157829003601f168201915b50505050509080600201805461066390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90611827565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050908060030180546106f190611827565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90611827565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905084565b61077c611020565b60005b81518110156109da57600082828151811061079c5761079c611811565b6020026020010151600001516040516020016107b89190611861565b60408051601f19818403018152918152815160209283012060008181526003909352912054909150801561082e5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610261565b600284848151811061084257610842611811565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061087490826118cc565b506020820151600182019061088990826118cc565b506040820151600282019061089e90826118cc565b50606082015160038201906108b390826118cc565b50506002546000848152600360205260409020555083518490849081106108dc576108dc611811565b60200260200101516000015151600014158015610918575083838151811061090657610906611811565b60200260200101516020015151600014155b8015610943575083838151811061093157610931611811565b60200260200101516040015151600014155b801561096e575083838151811061095c5761095c611811565b60200260200101516060015151600014155b6109c55760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610261565b505080806109d29061198c565b91505061077f565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465881604051610a0a91906119a5565b60405180910390a150565b600082600181518110610a2a57610a2a611811565b6020026020010151600460008481526020019081526020016000206000015414610a895760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b60025b8351811015610b4357838181518110610aa757610aa7611811565b602002602001015160046000858152602001908152602001600020600101600283610ad291906117f8565b81548110610ae257610ae2611811565b906000526020600020015414610b315760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b6044820152606401610261565b80610b3b8161198c565b915050610a8c565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b929086908890600401611a42565b602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611a67565b949350505050565b610be3611020565b83600003610c265760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b8151835114610c955760405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b6064820152608401610261565b6000825167ffffffffffffffff811115610cb157610cb1611319565b604051908082528060200260200182016040528015610ce457816020015b6060815260200190600190039081610ccf5790505b5090506000835167ffffffffffffffff811115610d0357610d03611319565b604051908082528060200260200182016040528015610d3657816020015b6060815260200190600190039081610d215790505b50905060005b8451811015610edc57848181518110610d5757610d57611811565b60200260200101516020015151600014158015610d935750848181518110610d8157610d81611811565b60200260200101516000015151600014155b610dd85760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b6044820152606401610261565b858181518110610dea57610dea611811565b6020026020010151600003610e535760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610261565b848181518110610e6557610e65611811565b602002602001015160000151838281518110610e8357610e83611811565b6020026020010181905250848181518110610ea057610ea0611811565b602002602001015160200151828281518110610ebe57610ebe611811565b60200260200101819052508080610ed49061198c565b915050610d3c565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260048352939093208251815592518051929392610f2792600185019201906110ca565b5060408201518051610f43916002840191602090910190611115565b5060608201518051610f5f916003840191602090910190611115565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f9793929190611a89565b60405180910390a2505050505050565b610faf611020565b6001600160a01b0381166110145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610261565b61101d8161107a565b50565b6000546001600160a01b031633146105125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610261565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215611105579160200282015b828111156111055782518255916020019190600101906110ea565b50611111929150611167565b5090565b82805482825590600052602060002090810192821561115b579160200282015b8281111561115b578251829061114b90826118cc565b5091602001919060010190611135565b5061111192915061117c565b5b808211156111115760008155600101611168565b808211156111115760006111908282611199565b5060010161117c565b5080546111a590611827565b6000825580601f106111b5575050565b601f01602090049060005260206000209081019061101d9190611167565b6000602082840312156111e557600080fd5b5035919050565b60005b838110156112075781810151838201526020016111ef565b50506000910152565b600081518084526112288160208601602086016111ec565b601f01601f19169290920160200192915050565b60008151608084526112516080850182611210565b90506020830151848203602086015261126a8282611210565b915050604083015184820360408601526112848282611210565b9150506060830151848203606086015261129e8282611210565b95945050505050565b6020815260006112ba602083018461123c565b9392505050565b6080815260006112d46080830187611210565b82810360208401526112e68187611210565b905082810360408401526112fa8186611210565b9050828103606084015261130e8185611210565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561135257611352611319565b60405290565b6040805190810167ffffffffffffffff8111828210171561135257611352611319565b604051601f8201601f1916810167ffffffffffffffff811182821017156113a4576113a4611319565b604052919050565b600067ffffffffffffffff8211156113c6576113c6611319565b5060051b60200190565b600082601f8301126113e157600080fd5b813567ffffffffffffffff8111156113fb576113fb611319565b61140e601f8201601f191660200161137b565b81815284602083860101111561142357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561145357600080fd5b823567ffffffffffffffff8082111561146b57600080fd5b818501915085601f83011261147f57600080fd5b813561149261148d826113ac565b61137b565b81815260059190911b830184019084810190888311156114b157600080fd5b8585015b83811015611592578035858111156114cc57600080fd5b86016080818c03601f190112156114e35760008081fd5b6114eb61132f565b88820135878111156114fd5760008081fd5b61150b8d8b838601016113d0565b825250604080830135888111156115225760008081fd5b6115308e8c838701016113d0565b8b84015250606080840135898111156115495760008081fd5b6115578f8d838801016113d0565b838501525060808401359150888211156115715760008081fd5b61157f8e8c848701016113d0565b90830152508452509186019186016114b5565b5098975050505050505050565b600082601f8301126115b057600080fd5b813560206115c061148d836113ac565b82815260059290921b840181019181810190868411156115df57600080fd5b8286015b848110156115fa57803583529183019183016115e3565b509695505050505050565b60008060006060848603121561161a57600080fd5b833567ffffffffffffffff8082111561163257600080fd5b61163e878388016113d0565b9450602086013591508082111561165457600080fd5b506116618682870161159f565b925050604084013590509250925092565b6000806000806080858703121561168857600080fd5b84359350602085013567ffffffffffffffff808211156116a757600080fd5b6116b38883890161159f565b945060408701359150808211156116c957600080fd5b818701915087601f8301126116dd57600080fd5b6116ea61148d83356113ac565b82358082526020808301929160051b8501018a81111561170957600080fd5b602085015b818110156117a557848135111561172457600080fd5b803586016040818e03601f1901121561173c57600080fd5b611744611358565b60208201358781111561175657600080fd5b6117658f6020838601016113d0565b82525060408201358781111561177a57600080fd5b6117898f6020838601016113d0565b602083015250808652505060208401935060208101905061170e565b50979a969950976060013596505050505050565b6000602082840312156117cb57600080fd5b81356001600160a01b03811681146112ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561180b5761180b6117e2565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061183b57607f821691505b60208210810361185b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516118738184602087016111ec565b9190910192915050565b601f8211156118c757600081815260208120601f850160051c810160208610156118a45750805b601f850160051c820191505b818110156118c3578281556001016118b0565b5050505b505050565b815167ffffffffffffffff8111156118e6576118e6611319565b6118fa816118f48454611827565b8461187d565b602080601f83116001811461192f57600084156119175750858301515b600019600386901b1c1916600185901b1785556118c3565b600085815260208120601f198616915b8281101561195e5788860151825594840194600190910190840161193f565b508582101561197c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161199e5761199e6117e2565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119fa57603f198886030184526119e885835161123c565b945092850192908501906001016119cc565b5092979650505050505050565b600081518084526020808501945080840160005b83811015611a3757815187529582019590820190600101611a1b565b509495945050505050565b604081526000611a556040830185611a07565b828103602084015261129e8185611210565b600060208284031215611a7957600080fd5b815180151581146112ba57600080fd5b83815260006020606081840152611aa36060840186611a07565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611b1557868303601f1901855281518051878552611ae988860182611210565b918a0151858303868c0152919050611b018183611210565b968a01969450505090870190600101611ac5565b50909b9a505050505050505050505056fea264697066735822122045d9336f0b6314796496c7a1cf160c19b42a61943a90fb5bbe2cfcef107bb5db64736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/deployments.json b/backend/src/contracts/deployments.json index a945ae8f..6896ec0c 100644 --- a/backend/src/contracts/deployments.json +++ b/backend/src/contracts/deployments.json @@ -1 +1 @@ -{"31337":{"address":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9"}} +{"31337":{"address":"0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512"}} \ No newline at end of file diff --git a/backend/src/contracts/generated/inclusion_verifier.rs b/backend/src/contracts/generated/inclusion_verifier.rs index 71ddc9f7..b2235df0 100644 --- a/backend/src/contracts/generated/inclusion_verifier.rs +++ b/backend/src/contracts/generated/inclusion_verifier.rs @@ -40,12 +40,13 @@ pub mod inclusion_verifier { 91, 80, 97, - 84, - 103, + 86, + 54, 128, - 97, + 98, 0, - 32, + 0, + 33, 96, 0, 57, @@ -112,8 +113,8 @@ pub mod inclusion_verifier { 96, 4, 97, - 83, - 41, + 84, + 248, 86, 91, 97, @@ -149,8 +150,8 @@ pub mod inclusion_verifier { 0, 99, 97, - 82, - 82, + 84, + 33, 86, 91, 96, @@ -160,8 +161,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 225, 131, 57, 129, @@ -180,8 +181,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 193, 131, 57, 129, @@ -206,8 +207,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 193, 131, 57, 129, @@ -224,8 +225,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 193, 131, 57, 129, @@ -244,8 +245,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 193, 131, 57, 129, @@ -295,39 +296,63 @@ pub mod inclusion_verifier { 131, 1, 82, - 127, - 45, - 241, - 98, - 24, - 168, - 45, - 57, + 128, + 96, + 96, + 135, + 1, + 81, + 6, + 96, + 96, 131, - 16, - 113, - 228, - 105, - 86, - 194, - 51, - 238, - 154, - 167, - 155, - 176, - 101, - 178, - 101, + 1, + 82, + 128, + 96, + 128, 135, - 16, + 1, + 81, + 6, + 96, 128, - 216, - 100, - 63, - 47, + 131, + 1, 82, + 127, + 16, + 30, + 50, + 32, + 159, + 188, + 42, + 253, + 218, + 46, 171, + 8, + 238, + 211, + 227, + 233, + 50, + 62, + 205, + 146, + 229, + 198, + 185, + 80, + 130, + 4, + 185, + 72, + 222, + 26, + 229, + 243, 96, 0, 131, @@ -340,7 +365,7 @@ pub mod inclusion_verifier { 81, 128, 96, - 96, + 160, 132, 1, 82, @@ -351,14 +376,14 @@ pub mod inclusion_verifier { 81, 128, 96, - 128, + 192, 133, 1, 82, 132, 97, 1, - 56, + 80, 130, 132, 97, @@ -378,7 +403,7 @@ pub mod inclusion_verifier { 81, 128, 96, - 160, + 224, 132, 1, 82, @@ -388,15 +413,16 @@ pub mod inclusion_verifier { 1, 81, 128, - 96, - 192, + 97, + 1, + 0, 133, 1, 82, 132, 97, 1, - 94, + 119, 130, 132, 97, @@ -415,8 +441,9 @@ pub mod inclusion_verifier { 1, 81, 128, - 96, - 224, + 97, + 1, + 32, 132, 1, 82, @@ -428,14 +455,14 @@ pub mod inclusion_verifier { 128, 97, 1, - 0, + 64, 133, 1, 82, 132, 97, 1, - 133, + 159, 130, 132, 97, @@ -450,7 +477,7 @@ pub mod inclusion_verifier { 80, 97, 1, - 32, + 96, 96, 0, 131, @@ -458,13 +485,13 @@ pub mod inclusion_verifier { 32, 97, 1, - 32, + 96, 131, 1, 82, 97, 1, - 32, + 96, 130, 1, 81, @@ -473,14 +500,14 @@ pub mod inclusion_verifier { 6, 97, 1, - 64, + 128, 132, 1, 82, 128, 97, 1, - 96, + 160, 132, 1, 82, @@ -493,7 +520,7 @@ pub mod inclusion_verifier { 128, 97, 1, - 128, + 192, 132, 1, 82, @@ -506,14 +533,14 @@ pub mod inclusion_verifier { 128, 97, 1, - 160, + 224, 133, 1, 82, 132, 97, 1, - 211, + 237, 130, 132, 97, @@ -534,8 +561,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 1, - 192, + 2, + 0, 132, 1, 82, @@ -547,15 +574,15 @@ pub mod inclusion_verifier { 81, 128, 97, - 1, - 224, + 2, + 32, 133, 1, 82, 132, 97, - 1, - 253, + 2, + 23, 130, 132, 97, @@ -567,13 +594,13 @@ pub mod inclusion_verifier { 160, 97, 1, - 96, + 160, 135, 1, 32, 97, 2, - 0, + 64, 135, 1, 129, @@ -584,13 +611,13 @@ pub mod inclusion_verifier { 6, 97, 2, - 32, + 96, 136, 1, 82, 97, 2, - 64, + 128, 135, 1, 82, @@ -604,7 +631,7 @@ pub mod inclusion_verifier { 80, 97, 2, - 96, + 160, 131, 1, 83, @@ -612,13 +639,13 @@ pub mod inclusion_verifier { 33, 97, 2, - 64, + 128, 131, 1, 32, 97, 2, - 96, + 160, 131, 1, 129, @@ -629,13 +656,13 @@ pub mod inclusion_verifier { 6, 97, 2, - 128, + 192, 132, 1, 82, 97, 2, - 160, + 224, 131, 1, 82, @@ -646,8 +673,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 2, - 192, + 3, + 0, 131, 1, 129, @@ -660,8 +687,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 2, - 224, + 3, + 32, 132, 1, 129, @@ -670,7 +697,7 @@ pub mod inclusion_verifier { 132, 97, 2, - 112, + 138, 130, 132, 97, @@ -692,7 +719,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 0, + 64, 132, 1, 82, @@ -705,14 +732,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 32, + 96, 133, 1, 82, 132, 97, 2, - 154, + 180, 130, 132, 97, @@ -734,7 +761,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 64, + 128, 132, 1, 82, @@ -747,14 +774,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 96, + 160, 133, 1, 82, 132, 97, 2, - 196, + 222, 130, 132, 97, @@ -776,7 +803,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 128, + 192, 132, 1, 82, @@ -789,14 +816,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 160, + 224, 133, 1, 82, 132, 97, - 2, - 238, + 3, + 8, 130, 132, 97, @@ -814,19 +841,19 @@ pub mod inclusion_verifier { 32, 97, 2, - 160, + 224, 131, 1, 32, 97, - 3, - 192, + 4, + 0, 131, 1, 82, 97, - 3, - 192, + 4, + 0, 130, 1, 81, @@ -834,15 +861,15 @@ pub mod inclusion_verifier { 129, 6, 97, - 3, - 224, + 4, + 32, 132, 1, 82, 128, 97, 4, - 0, + 64, 132, 1, 82, @@ -856,7 +883,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 32, + 96, 132, 1, 82, @@ -869,14 +896,14 @@ pub mod inclusion_verifier { 128, 97, 4, - 64, + 128, 133, 1, 82, 132, 97, 3, - 62, + 88, 130, 132, 97, @@ -898,7 +925,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 96, + 160, 132, 1, 82, @@ -911,14 +938,14 @@ pub mod inclusion_verifier { 128, 97, 4, - 128, + 192, 133, 1, 82, 132, 97, 3, - 104, + 130, 130, 132, 97, @@ -940,7 +967,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 160, + 224, 132, 1, 82, @@ -952,15 +979,15 @@ pub mod inclusion_verifier { 81, 128, 97, - 4, - 192, + 5, + 0, 133, 1, 82, 132, 97, 3, - 146, + 172, 130, 132, 97, @@ -981,8 +1008,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 4, - 224, + 5, + 32, 132, 1, 82, @@ -995,14 +1022,14 @@ pub mod inclusion_verifier { 128, 97, 5, - 0, + 64, 133, 1, 82, 132, 97, 3, - 188, + 214, 130, 132, 97, @@ -1024,7 +1051,7 @@ pub mod inclusion_verifier { 128, 97, 5, - 32, + 96, 132, 1, 82, @@ -1037,14 +1064,14 @@ pub mod inclusion_verifier { 128, 97, 5, - 64, + 128, 133, 1, 82, 132, 97, - 3, - 230, + 4, + 0, 130, 132, 97, @@ -1062,19 +1089,19 @@ pub mod inclusion_verifier { 96, 97, 4, - 0, + 64, 131, 1, 32, 97, 5, - 96, + 160, 131, 1, 82, 97, 5, - 96, + 160, 130, 1, 81, @@ -1083,14 +1110,14 @@ pub mod inclusion_verifier { 6, 97, 5, - 128, + 192, 132, 1, 82, 128, 97, 5, - 160, + 224, 132, 1, 82, @@ -1104,8 +1131,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 5, - 192, + 6, + 0, 131, 1, 82, @@ -1118,8 +1145,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 5, - 224, + 6, + 32, 131, 1, 82, @@ -1133,7 +1160,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 0, + 64, 131, 1, 82, @@ -1147,7 +1174,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 32, + 96, 131, 1, 82, @@ -1161,7 +1188,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 64, + 128, 131, 1, 82, @@ -1175,7 +1202,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 96, + 160, 131, 1, 82, @@ -1189,7 +1216,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 128, + 192, 131, 1, 82, @@ -1203,7 +1230,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 160, + 224, 131, 1, 82, @@ -1216,8 +1243,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 6, - 192, + 7, + 0, 131, 1, 82, @@ -1230,8 +1257,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 6, - 224, + 7, + 32, 131, 1, 82, @@ -1245,7 +1272,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 0, + 64, 131, 1, 82, @@ -1259,7 +1286,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 32, + 96, 131, 1, 82, @@ -1273,7 +1300,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 64, + 128, 131, 1, 82, @@ -1287,7 +1314,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 96, + 160, 131, 1, 82, @@ -1301,7 +1328,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 128, + 192, 131, 1, 82, @@ -1315,7 +1342,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 160, + 224, 131, 1, 82, @@ -1328,8 +1355,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 7, - 192, + 8, + 0, 131, 1, 82, @@ -1342,8 +1369,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 7, - 224, + 8, + 32, 131, 1, 82, @@ -1357,7 +1384,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 0, + 64, 131, 1, 82, @@ -1371,7 +1398,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 32, + 96, 131, 1, 82, @@ -1385,7 +1412,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 64, + 128, 131, 1, 82, @@ -1399,7 +1426,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 96, + 160, 131, 1, 82, @@ -1413,7 +1440,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 128, + 192, 131, 1, 82, @@ -1427,7 +1454,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 160, + 224, 131, 1, 82, @@ -1440,8 +1467,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 8, - 192, + 9, + 0, 131, 1, 82, @@ -1454,8 +1481,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 8, - 224, + 9, + 32, 131, 1, 82, @@ -1469,7 +1496,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 0, + 64, 131, 1, 82, @@ -1483,7 +1510,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 32, + 96, 131, 1, 82, @@ -1497,7 +1524,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 64, + 128, 131, 1, 82, @@ -1511,7 +1538,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 96, + 160, 131, 1, 82, @@ -1525,7 +1552,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 128, + 192, 131, 1, 82, @@ -1539,7 +1566,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 160, + 224, 131, 1, 82, @@ -1552,8 +1579,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 9, - 192, + 10, + 0, 131, 1, 82, @@ -1566,8 +1593,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 9, - 224, + 10, + 32, 131, 1, 82, @@ -1581,7 +1608,7 @@ pub mod inclusion_verifier { 6, 97, 10, - 0, + 64, 131, 1, 82, @@ -1590,19 +1617,19 @@ pub mod inclusion_verifier { 128, 97, 5, - 160, + 224, 131, 1, 32, 97, 10, - 32, + 96, 131, 1, 82, 97, 10, - 32, + 96, 130, 1, 81, @@ -1611,14 +1638,14 @@ pub mod inclusion_verifier { 6, 97, 10, - 64, + 128, 132, 1, 82, 128, 97, 10, - 96, + 160, 132, 1, 82, @@ -1627,7 +1654,7 @@ pub mod inclusion_verifier { 1, 97, 10, - 128, + 192, 131, 1, 83, @@ -1635,13 +1662,13 @@ pub mod inclusion_verifier { 33, 97, 10, - 96, + 160, 131, 1, 32, 97, 10, - 128, + 192, 131, 1, 129, @@ -1652,13 +1679,13 @@ pub mod inclusion_verifier { 6, 97, 10, - 160, + 224, 132, 1, 82, 97, - 10, - 192, + 11, + 0, 131, 1, 82, @@ -1669,8 +1696,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 10, - 224, + 11, + 32, 131, 1, 129, @@ -1684,7 +1711,7 @@ pub mod inclusion_verifier { 81, 97, 11, - 0, + 64, 132, 1, 129, @@ -1693,7 +1720,7 @@ pub mod inclusion_verifier { 132, 97, 6, - 111, + 137, 130, 132, 97, @@ -1709,20 +1736,20 @@ pub mod inclusion_verifier { 96, 96, 97, - 10, - 192, + 11, + 0, 131, 1, 32, 97, 11, - 32, + 96, 131, 1, 82, 97, 11, - 32, + 96, 130, 1, 81, @@ -1731,14 +1758,14 @@ pub mod inclusion_verifier { 6, 97, 11, - 64, + 128, 132, 1, 82, 128, 97, 11, - 96, + 160, 132, 1, 82, @@ -1752,7 +1779,7 @@ pub mod inclusion_verifier { 128, 97, 11, - 128, + 192, 132, 1, 82, @@ -1765,14 +1792,14 @@ pub mod inclusion_verifier { 128, 97, 11, - 160, + 224, 133, 1, 82, 132, 97, 6, - 190, + 216, 130, 132, 97, @@ -1788,20 +1815,20 @@ pub mod inclusion_verifier { 128, 97, 5, - 128, + 192, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 11, - 192, + 12, + 0, 131, 1, 129, @@ -1812,8 +1839,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 11, - 224, + 12, + 32, 131, 1, 129, @@ -1825,7 +1852,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 0, + 64, 131, 1, 129, @@ -1837,7 +1864,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 32, + 96, 131, 1, 129, @@ -1849,7 +1876,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 64, + 128, 131, 1, 129, @@ -1861,7 +1888,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 96, + 160, 131, 1, 129, @@ -1873,7 +1900,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 128, + 192, 131, 1, 129, @@ -1885,7 +1912,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 160, + 224, 131, 1, 129, @@ -1896,8 +1923,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 12, - 192, + 13, + 0, 131, 1, 129, @@ -1908,8 +1935,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 12, - 224, + 13, + 32, 131, 1, 129, @@ -1921,7 +1948,7 @@ pub mod inclusion_verifier { 9, 97, 13, - 0, + 64, 131, 1, 82, @@ -1961,14 +1988,14 @@ pub mod inclusion_verifier { 0, 97, 13, - 0, + 64, 132, 1, 81, 8, 97, 13, - 32, + 96, 131, 1, 82, @@ -2008,14 +2035,14 @@ pub mod inclusion_verifier { 1, 97, 13, - 32, + 96, 132, 1, 81, 9, 97, 13, - 64, + 128, 131, 1, 82, @@ -2055,14 +2082,14 @@ pub mod inclusion_verifier { 2, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 13, - 96, + 160, 131, 1, 82, @@ -2102,14 +2129,14 @@ pub mod inclusion_verifier { 255, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 13, - 128, + 192, 131, 1, 82, @@ -2149,14 +2176,14 @@ pub mod inclusion_verifier { 81, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 13, - 160, + 224, 131, 1, 82, @@ -2196,14 +2223,14 @@ pub mod inclusion_verifier { 176, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, - 13, - 192, + 14, + 0, 131, 1, 82, @@ -2243,14 +2270,14 @@ pub mod inclusion_verifier { 53, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, - 13, - 224, + 14, + 32, 131, 1, 82, @@ -2290,14 +2317,14 @@ pub mod inclusion_verifier { 204, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 0, + 64, 131, 1, 82, @@ -2337,14 +2364,14 @@ pub mod inclusion_verifier { 37, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 32, + 96, 131, 1, 82, @@ -2384,14 +2411,14 @@ pub mod inclusion_verifier { 220, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 64, + 128, 131, 1, 82, @@ -2431,14 +2458,14 @@ pub mod inclusion_verifier { 227, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 96, + 160, 131, 1, 82, @@ -2478,14 +2505,14 @@ pub mod inclusion_verifier { 30, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 128, + 192, 131, 1, 82, @@ -2525,14 +2552,14 @@ pub mod inclusion_verifier { 26, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 160, + 224, 131, 1, 82, @@ -2572,14 +2599,14 @@ pub mod inclusion_verifier { 231, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, - 14, - 192, + 15, + 0, 131, 1, 82, @@ -2588,14 +2615,14 @@ pub mod inclusion_verifier { 1, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, - 14, - 224, + 15, + 32, 131, 1, 82, @@ -2635,14 +2662,14 @@ pub mod inclusion_verifier { 0, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 15, - 0, + 64, 131, 1, 82, @@ -2682,14 +2709,14 @@ pub mod inclusion_verifier { 95, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 15, - 32, + 96, 131, 1, 82, @@ -2729,28 +2756,216 @@ pub mod inclusion_verifier { 162, 97, 5, + 192, + 132, + 1, + 81, + 8, + 97, + 15, + 128, + 131, + 1, + 82, + 128, + 127, + 42, + 217, + 2, + 30, + 208, + 124, + 66, + 171, + 25, + 247, + 124, + 92, + 242, + 203, + 210, + 222, + 177, + 53, + 234, + 51, + 15, + 27, + 21, + 115, + 189, + 8, + 217, + 147, + 9, + 196, + 187, + 125, + 97, + 13, + 128, + 132, + 1, + 81, + 9, + 97, + 15, + 160, + 131, + 1, + 82, 128, + 127, + 5, + 139, + 76, + 84, + 16, + 181, + 93, + 126, + 158, + 88, + 201, + 89, + 142, + 181, + 133, + 126, + 118, + 253, + 254, + 21, + 106, + 158, + 91, + 29, + 134, + 217, + 28, + 0, + 230, + 59, + 68, + 132, + 97, + 5, + 192, 132, 1, 81, 8, 97, 15, - 64, + 192, 131, 1, 82, + 128, + 127, + 25, + 8, + 89, + 125, + 47, + 195, + 188, + 29, + 163, + 18, + 239, + 163, + 68, + 224, + 252, + 138, + 112, + 121, + 48, + 2, + 56, + 242, + 238, + 53, + 119, + 79, + 17, + 126, + 102, + 253, + 68, + 103, 97, 13, 128, + 132, + 1, + 81, + 9, + 97, + 15, + 224, + 131, + 1, + 82, + 128, + 127, + 23, + 91, + 244, + 245, + 177, + 109, + 228, + 12, + 21, + 61, + 86, + 19, + 60, + 160, + 91, + 210, + 183, + 186, + 184, + 70, + 64, + 198, 130, + 91, + 204, + 146, + 228, + 21, + 137, + 2, + 187, + 154, + 97, + 5, + 192, + 132, 1, 81, - 129, - 129, + 8, + 97, + 16, + 0, + 131, + 1, + 82, 97, 13, 192, + 130, + 1, + 81, + 129, + 129, + 97, + 14, + 0, 133, 1, 81, @@ -2759,8 +2974,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 96, + 16, + 32, 132, 1, 82, @@ -2768,7 +2983,7 @@ pub mod inclusion_verifier { 129, 97, 14, - 0, + 64, 133, 1, 81, @@ -2777,8 +2992,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 128, + 16, + 64, 132, 1, 82, @@ -2786,7 +3001,7 @@ pub mod inclusion_verifier { 129, 97, 14, - 64, + 128, 133, 1, 81, @@ -2795,8 +3010,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 160, + 16, + 96, 132, 1, 82, @@ -2804,7 +3019,25 @@ pub mod inclusion_verifier { 129, 97, 14, + 192, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 16, 128, + 132, + 1, + 82, + 129, + 129, + 97, + 15, + 0, 133, 1, 81, @@ -2813,7 +3046,25 @@ pub mod inclusion_verifier { 80, 128, 97, + 16, + 160, + 132, + 1, + 82, + 129, + 129, + 97, 15, + 64, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 16, 192, 132, 1, @@ -2821,8 +3072,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 14, - 192, + 15, + 128, 133, 1, 81, @@ -2831,7 +3082,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, + 16, 224, 132, 1, @@ -2840,7 +3091,7 @@ pub mod inclusion_verifier { 129, 97, 15, - 0, + 192, 133, 1, 81, @@ -2849,7 +3100,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 0, 132, 1, @@ -2857,8 +3108,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 15, - 64, + 16, + 0, 133, 1, 81, @@ -2867,7 +3118,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 32, 132, 1, @@ -2876,7 +3127,7 @@ pub mod inclusion_verifier { 129, 97, 13, - 32, + 96, 133, 1, 81, @@ -2885,7 +3136,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 64, 132, 1, @@ -2894,7 +3145,7 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 128, 131, 1, @@ -2902,7 +3153,7 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 160, 131, 1, @@ -2910,19 +3161,19 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 192, 131, 1, 82, 97, - 16, + 17, 64, 130, 1, 81, 97, - 16, + 17, 224, 131, 1, @@ -2961,7 +3212,7 @@ pub mod inclusion_verifier { 255, 255, 97, - 17, + 18, 0, 131, 1, @@ -2973,8 +3224,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 225, 131, 57, 129, @@ -2982,7 +3233,7 @@ pub mod inclusion_verifier { 145, 82, 97, - 17, + 18, 32, 131, 1, @@ -2993,14 +3244,14 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 96, 133, 1, 96, 192, 97, - 16, + 17, 128, 135, 1, @@ -3013,7 +3264,7 @@ pub mod inclusion_verifier { 146, 80, 97, - 16, + 17, 96, 130, 1, @@ -3022,7 +3273,7 @@ pub mod inclusion_verifier { 0, 97, 13, - 32, + 96, 132, 1, 81, @@ -3031,7 +3282,7 @@ pub mod inclusion_verifier { 130, 130, 97, - 16, + 17, 32, 134, 1, @@ -3039,7 +3290,7 @@ pub mod inclusion_verifier { 9, 97, 13, - 32, + 96, 133, 1, 82, @@ -3050,8 +3301,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 15, - 64, + 16, + 0, 132, 1, 81, @@ -3060,15 +3311,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 16, + 17, 0, 134, 1, 81, 9, 97, - 15, - 64, + 16, + 0, 133, 1, 82, @@ -3080,7 +3331,7 @@ pub mod inclusion_verifier { 80, 97, 15, - 0, + 192, 132, 1, 81, @@ -3089,7 +3340,7 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 224, 134, 1, @@ -3097,7 +3348,7 @@ pub mod inclusion_verifier { 9, 97, 15, - 0, + 192, 133, 1, 82, @@ -3108,8 +3359,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 14, - 192, + 15, + 128, 132, 1, 81, @@ -3118,15 +3369,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 192, 134, 1, 81, 9, 97, - 14, - 192, + 15, + 128, 133, 1, 82, @@ -3137,8 +3388,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 14, - 128, + 15, + 64, 132, 1, 81, @@ -3147,15 +3398,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 160, 134, 1, 81, 9, 97, - 14, - 128, + 15, + 64, 133, 1, 82, @@ -3166,8 +3417,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 14, - 64, + 15, + 0, 132, 1, 81, @@ -3176,15 +3427,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 128, 134, 1, 81, 9, 97, - 14, - 64, + 15, + 0, 133, 1, 82, @@ -3196,7 +3447,7 @@ pub mod inclusion_verifier { 80, 97, 14, - 0, + 192, 132, 1, 81, @@ -3205,7 +3456,7 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 96, 134, 1, @@ -3213,7 +3464,7 @@ pub mod inclusion_verifier { 9, 97, 14, - 0, + 192, 133, 1, 82, @@ -3224,8 +3475,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 13, - 192, + 14, + 128, 132, 1, 81, @@ -3234,15 +3485,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 13, - 128, + 16, + 64, 134, 1, 81, 9, 97, - 13, - 192, + 14, + 128, 133, 1, 82, @@ -3250,50 +3501,88 @@ pub mod inclusion_verifier { 130, 130, 9, + 145, + 80, 97, - 13, - 128, - 133, + 14, + 64, + 132, 1, - 129, + 81, 144, - 82, + 80, + 130, + 130, 97, - 13, - 96, - 133, + 16, + 32, + 134, 1, 81, - 132, - 147, + 9, + 97, + 14, + 64, + 133, + 1, + 82, + 130, + 130, + 130, + 9, + 145, 80, + 97, + 14, + 0, + 132, + 1, + 81, 144, - 145, 80, + 130, + 130, + 97, + 13, + 192, + 134, + 1, + 81, 9, 97, - 17, - 64, - 131, + 14, + 0, + 133, 1, 82, - 128, + 130, + 130, + 130, + 9, 97, 13, 192, - 131, + 133, 1, - 81, + 129, + 144, + 82, 97, 13, 160, - 132, + 133, 1, 81, + 132, + 147, + 80, + 144, + 145, + 80, 9, 97, - 17, - 96, + 18, + 64, 131, 1, 82, @@ -3312,8 +3601,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 17, - 128, + 18, + 96, 131, 1, 82, @@ -3332,8 +3621,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 17, - 160, + 18, + 128, 131, 1, 82, @@ -3352,8 +3641,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 17, - 192, + 18, + 160, 131, 1, 82, @@ -3372,8 +3661,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 17, - 224, + 18, + 192, 131, 1, 82, @@ -3393,7 +3682,7 @@ pub mod inclusion_verifier { 9, 97, 18, - 0, + 224, 131, 1, 82, @@ -3412,56 +3701,152 @@ pub mod inclusion_verifier { 81, 9, 97, - 18, - 32, + 19, + 0, 131, 1, 82, 128, - 96, - 32, + 97, + 15, + 128, 131, 1, 81, 97, - 18, - 0, + 15, + 96, 132, 1, 81, 9, - 129, - 129, + 97, + 19, + 32, + 131, + 1, + 82, + 128, + 97, + 15, + 192, 131, - 96, - 64, - 134, 1, 81, 97, - 18, - 32, - 135, + 15, + 160, + 132, 1, 81, 9, - 8, 97, - 18, + 19, 64, - 132, + 131, 1, 82, - 80, + 128, 97, - 6, - 224, - 130, + 16, + 0, + 131, 1, 81, 97, - 5, - 192, + 15, + 224, + 132, + 1, + 81, + 9, + 97, + 19, + 96, + 131, + 1, + 82, + 128, + 96, + 32, + 131, + 1, + 81, + 97, + 19, + 0, + 132, + 1, + 81, + 9, + 129, + 129, + 131, + 96, + 64, + 134, + 1, + 81, + 97, + 19, + 32, + 135, + 1, + 81, + 9, + 8, + 144, + 80, + 129, + 129, + 131, + 96, + 96, + 134, + 1, + 81, + 97, + 19, + 64, + 135, + 1, + 81, + 9, + 8, + 144, + 80, + 129, + 129, + 131, + 96, + 128, + 134, + 1, + 81, + 97, + 19, + 96, + 135, + 1, + 81, + 9, + 8, + 97, + 19, + 128, + 132, + 1, + 82, + 80, + 97, + 7, + 32, + 130, + 1, + 81, + 97, + 6, + 0, 131, 1, 81, @@ -3470,8 +3855,8 @@ pub mod inclusion_verifier { 144, 8, 97, - 18, - 96, + 19, + 160, 131, 1, 129, @@ -3482,8 +3867,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 18, - 128, + 19, + 192, 131, 1, 129, @@ -3494,28 +3879,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 18, - 160, + 19, + 224, 131, 1, 82, 128, 97, - 18, - 160, + 19, + 224, 131, 1, 81, 97, - 18, - 96, + 19, + 160, 132, 1, 81, 9, 97, - 18, - 192, + 20, + 0, 131, 1, 82, @@ -3554,35 +3939,35 @@ pub mod inclusion_verifier { 122, 213, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 9, 97, - 18, - 224, + 20, + 32, 131, 1, 82, 128, 97, 7, - 0, + 64, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 19, - 0, + 20, + 64, 131, 1, 129, @@ -3593,8 +3978,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 19, - 32, + 20, + 96, 131, 1, 129, @@ -3605,28 +3990,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 19, - 64, + 20, + 128, 131, 1, 82, 128, 97, - 19, - 64, + 20, + 128, 131, 1, 81, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 19, - 96, + 20, + 160, 131, 1, 82, @@ -3665,57 +4050,57 @@ pub mod inclusion_verifier { 177, 232, 97, - 19, - 96, + 20, + 160, 132, 1, 81, 9, 97, - 19, - 128, + 20, + 192, 131, 1, 82, 128, 97, - 19, - 128, + 20, + 192, 131, 1, 81, 97, - 18, - 224, + 20, + 32, 132, 1, 81, 8, 97, - 19, - 160, + 20, + 224, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 19, - 160, + 20, + 224, 132, 1, 81, 8, 97, - 19, - 192, + 21, + 0, 131, 1, 129, @@ -3723,7 +4108,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 128, + 192, 131, 1, 81, @@ -3731,28 +4116,28 @@ pub mod inclusion_verifier { 145, 9, 97, - 19, - 224, + 21, + 32, 131, 1, 82, 128, 97, - 19, - 224, + 21, + 32, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 20, - 0, + 21, + 64, 131, 1, 82, @@ -3791,15 +4176,15 @@ pub mod inclusion_verifier { 143, 249, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 9, 97, - 20, - 32, + 21, + 96, 131, 1, 82, @@ -3838,57 +4223,57 @@ pub mod inclusion_verifier { 3, 200, 97, - 19, - 96, + 20, + 160, 132, 1, 81, 9, 97, - 20, - 64, + 21, + 128, 131, 1, 82, 128, 97, - 20, - 64, + 21, + 128, 131, 1, 81, 97, - 20, - 32, + 21, + 96, 132, 1, 81, 8, 97, - 20, - 96, + 21, + 160, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, 130, 3, 97, - 20, - 96, + 21, + 160, 132, 1, 81, 8, 97, - 20, - 128, + 21, + 192, 131, 1, 129, @@ -3896,7 +4281,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 128, + 192, 131, 1, 81, @@ -3904,70 +4289,70 @@ pub mod inclusion_verifier { 145, 9, 97, - 20, - 160, + 21, + 224, 131, 1, 82, 128, 97, - 20, - 160, + 21, + 224, 131, 1, 81, 97, - 20, - 0, + 21, + 64, 132, 1, 81, 8, 97, - 20, - 192, + 22, + 0, 131, 1, 82, 128, 97, - 20, - 192, + 22, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 20, - 224, + 22, + 32, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, 130, 3, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 8, 97, - 21, - 0, + 22, + 64, 131, 1, 129, @@ -3975,7 +4360,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -3983,48 +4368,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 21, - 32, + 22, + 96, 131, 1, 82, 128, 97, - 21, - 32, + 22, + 96, 131, 1, 81, 97, - 20, - 224, + 22, + 32, 132, 1, 81, 8, 97, - 21, - 64, + 22, + 128, 131, 1, 82, 128, 97, - 21, - 64, + 22, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 21, - 96, + 22, + 160, 131, 1, 82, @@ -4064,14 +4449,14 @@ pub mod inclusion_verifier { 213, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 21, - 128, + 22, + 192, 131, 1, 82, @@ -4110,35 +4495,35 @@ pub mod inclusion_verifier { 177, 232, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 21, - 160, + 22, + 224, 131, 1, 82, 128, 97, - 21, - 160, + 22, + 224, 131, 1, 81, 97, - 21, - 128, + 22, + 192, 132, 1, 81, 8, 97, - 21, - 192, + 23, + 0, 131, 1, 129, @@ -4146,7 +4531,7 @@ pub mod inclusion_verifier { 82, 97, 6, - 160, + 224, 131, 1, 81, @@ -4154,8 +4539,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 21, - 224, + 23, + 32, 131, 1, 129, @@ -4166,8 +4551,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 22, - 0, + 23, + 64, 131, 1, 129, @@ -4178,28 +4563,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 22, - 32, + 23, + 96, 131, 1, 82, 128, 97, - 22, - 32, + 23, + 96, 131, 1, 81, 97, - 21, - 224, + 23, + 32, 132, 1, 81, 9, 97, - 22, - 64, + 23, + 128, 131, 1, 82, @@ -4239,14 +4624,14 @@ pub mod inclusion_verifier { 102, 97, 6, - 0, + 64, 132, 1, 81, 9, 97, - 22, - 96, + 23, + 160, 131, 1, 82, @@ -4286,56 +4671,56 @@ pub mod inclusion_verifier { 254, 97, 6, - 32, + 96, 132, 1, 81, 9, 97, - 22, - 128, + 23, + 192, 131, 1, 82, 128, 97, - 22, - 128, + 23, + 192, 131, 1, 81, 97, - 22, - 96, + 23, + 160, 132, 1, 81, 8, 97, - 22, - 160, + 23, + 224, 131, 1, 82, 128, 97, - 22, - 160, + 23, + 224, 131, 1, 81, 130, 3, 97, - 22, - 64, + 23, + 128, 132, 1, 81, 8, 97, - 22, - 192, + 24, + 0, 131, 1, 129, @@ -4343,7 +4728,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -4351,48 +4736,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 22, - 224, + 24, + 32, 131, 1, 82, 128, 97, - 22, - 224, + 24, + 32, 131, 1, 81, 97, - 21, - 96, + 22, + 160, 132, 1, 81, 8, 97, - 23, - 0, + 24, + 64, 131, 1, 82, 128, 97, - 23, - 0, + 24, + 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 23, - 32, + 24, + 96, 131, 1, 82, @@ -4432,14 +4817,14 @@ pub mod inclusion_verifier { 249, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 23, - 64, + 24, + 128, 131, 1, 82, @@ -4478,43 +4863,43 @@ pub mod inclusion_verifier { 3, 200, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 23, - 96, + 24, + 160, 131, 1, 82, 128, 97, - 23, - 96, + 24, + 160, 131, 1, 81, 97, - 23, - 64, + 24, + 128, 132, 1, 81, 8, 97, - 23, - 128, + 24, + 192, 131, 1, 129, 144, 82, 97, - 6, - 192, + 7, + 0, 131, 1, 81, @@ -4522,8 +4907,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 23, - 160, + 24, + 224, 131, 1, 82, @@ -4563,14 +4948,14 @@ pub mod inclusion_verifier { 2, 97, 6, - 0, + 64, 132, 1, 81, 9, 97, - 23, - 192, + 25, + 0, 131, 1, 82, @@ -4610,56 +4995,56 @@ pub mod inclusion_verifier { 190, 97, 6, - 32, + 96, 132, 1, 81, 9, 97, - 23, - 224, + 25, + 32, 131, 1, 82, 128, 97, - 23, - 224, + 25, + 32, 131, 1, 81, 97, - 23, - 192, + 25, + 0, 132, 1, 81, 8, 97, - 24, - 0, + 25, + 64, 131, 1, 82, 128, 97, - 24, - 0, + 25, + 64, 131, 1, 81, 130, 3, 97, - 23, - 160, + 24, + 224, 132, 1, 81, 8, 97, - 24, - 32, + 25, + 96, 131, 1, 129, @@ -4667,7 +5052,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -4675,55 +5060,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 24, - 64, + 25, + 128, 131, 1, 82, 128, 97, - 24, - 64, + 25, + 128, 131, 1, 81, 97, - 23, - 32, + 24, + 96, 132, 1, 81, 8, 97, - 24, - 96, + 25, + 160, 131, 1, 82, 128, 97, - 24, - 96, + 25, + 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 24, - 128, + 25, + 192, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -4733,8 +5118,8 @@ pub mod inclusion_verifier { 1, 8, 97, - 24, - 160, + 25, + 224, 131, 1, 129, @@ -4742,7 +5127,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 96, + 160, 131, 1, 81, @@ -4750,15 +5135,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 24, - 192, + 26, + 0, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -4768,16 +5153,16 @@ pub mod inclusion_verifier { 2, 8, 97, - 24, - 224, + 26, + 32, 131, 1, 129, 144, 82, 97, - 24, - 192, + 26, + 0, 131, 1, 81, @@ -4785,15 +5170,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 0, + 26, + 64, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -4803,16 +5188,16 @@ pub mod inclusion_verifier { 4, 8, 97, - 25, - 32, + 26, + 96, 131, 1, 129, 144, 82, 97, - 25, - 0, + 26, + 64, 131, 1, 81, @@ -4820,58 +5205,58 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 64, + 26, + 128, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 0, 131, 1, 81, 97, 6, - 128, + 192, 132, 1, 81, 8, 97, - 25, - 96, + 26, + 160, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 25, - 96, + 26, + 160, 132, 1, 81, 8, 97, - 25, - 128, + 26, + 192, 131, 1, 129, 144, 82, 97, - 25, - 64, + 26, + 128, 131, 1, 81, @@ -4879,55 +5264,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 160, + 26, + 224, 131, 1, 82, 128, 97, - 25, - 160, + 26, + 224, 131, 1, 81, 97, - 24, - 128, + 25, + 192, 132, 1, 81, 8, 97, - 25, - 192, + 27, + 0, 131, 1, 82, 128, 97, - 25, - 192, + 27, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 25, - 224, + 27, + 32, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, @@ -4935,732 +5320,542 @@ pub mod inclusion_verifier { 3, 97, 6, - 96, + 160, 132, 1, 81, 8, 97, - 26, - 0, + 27, + 64, 131, 1, 129, 144, 82, 97, - 25, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 32, - 131, - 1, - 82, - 128, - 97, - 26, - 32, - 131, - 1, - 81, - 97, - 25, - 224, - 132, - 1, - 81, - 8, - 97, 26, - 64, - 131, - 1, - 82, 128, - 97, - 26, - 64, 131, 1, 81, - 97, - 3, - 224, - 132, - 1, - 81, + 130, + 145, 9, 97, - 26, + 27, 96, 131, 1, 82, 128, 97, - 7, - 192, + 27, + 96, 131, 1, 81, 97, - 19, - 192, + 27, + 32, 132, 1, 81, - 9, + 8, 97, - 26, + 27, 128, 131, 1, 82, 128, 97, - 26, + 27, 128, 131, 1, 81, 97, - 26, - 96, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 26, + 27, 160, 131, 1, 82, 128, 97, - 26, - 160, + 8, + 0, 131, 1, 81, 97, - 3, - 224, + 21, + 0, 132, 1, 81, 9, 97, - 26, + 27, 192, 131, 1, 82, 128, 97, - 7, + 27, 192, 131, 1, 81, 97, - 20, - 128, + 27, + 160, 132, 1, 81, - 9, + 8, 97, - 26, + 27, 224, 131, 1, 82, 128, 97, - 26, + 27, 224, 131, 1, 81, 97, - 26, - 192, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 27, + 28, 0, 131, 1, 82, 128, 97, - 27, + 8, 0, 131, 1, 81, 97, - 3, - 224, + 21, + 192, 132, 1, 81, 9, 97, - 27, + 28, 32, 131, 1, 82, 128, 97, - 7, - 224, + 28, + 32, 131, 1, 81, 97, - 21, + 28, 0, 132, 1, 81, - 9, + 8, 97, - 27, + 28, 64, 131, 1, 82, 128, 97, - 27, + 28, 64, 131, 1, 81, 97, - 27, + 4, 32, 132, 1, 81, - 8, + 9, 97, - 27, + 28, 96, 131, 1, 82, 128, 97, - 27, - 96, + 8, + 32, 131, 1, 81, 97, - 3, - 224, + 22, + 64, 132, 1, 81, 9, 97, - 27, + 28, 128, 131, 1, 82, 128, 97, - 7, - 224, + 28, + 128, 131, 1, 81, 97, - 22, - 192, + 28, + 96, 132, 1, 81, - 9, + 8, 97, - 27, + 28, 160, 131, 1, 82, 128, 97, - 27, + 28, 160, 131, 1, 81, 97, - 27, - 128, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 27, + 28, 192, 131, 1, 82, 128, 97, - 27, - 192, + 8, + 32, 131, 1, 81, 97, - 3, - 224, + 24, + 0, 132, 1, 81, 9, 97, - 27, + 28, 224, 131, 1, 82, 128, 97, - 7, + 28, 224, 131, 1, 81, 97, - 24, - 32, + 28, + 192, 132, 1, 81, - 9, + 8, 97, - 28, + 29, 0, 131, 1, 82, 128, 97, - 28, + 29, 0, 131, 1, 81, 97, - 27, - 224, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 28, + 29, 32, 131, 1, 82, 128, 97, - 28, + 8, 32, 131, 1, 81, 97, - 3, - 224, + 25, + 96, 132, 1, 81, 9, 97, - 28, + 29, 64, 131, 1, 82, 128, 97, - 7, - 96, + 29, + 64, 131, 1, 81, - 130, - 3, - 96, - 3, - 8, - 97, - 28, - 96, - 131, - 1, - 129, - 144, - 82, 97, - 25, - 0, - 131, + 29, + 32, + 132, 1, 81, - 130, - 145, - 9, + 8, 97, - 28, - 128, + 29, + 96, 131, 1, 82, 128, 97, - 28, - 128, + 29, + 96, 131, 1, 81, 97, - 25, - 128, + 4, + 32, 132, 1, 81, 9, 97, - 28, - 160, + 29, + 128, 131, 1, 82, 128, 97, - 28, + 7, 160, 131, 1, 81, - 97, - 28, - 64, - 132, - 1, - 81, + 130, + 3, + 96, + 3, 8, 97, - 28, - 192, + 29, + 160, 131, 1, + 129, + 144, 82, - 128, 97, - 28, - 192, + 26, + 64, 131, 1, 81, - 97, - 3, - 224, - 132, - 1, - 81, + 130, + 145, 9, 97, - 28, - 224, + 29, + 192, 131, 1, 82, 128, 97, - 28, - 128, + 29, + 192, 131, 1, 81, 97, 26, - 0, + 192, 132, 1, 81, 9, 97, 29, - 0, - 131, - 1, - 82, - 128, - 97, - 29, - 0, - 131, - 1, - 81, - 97, - 28, 224, - 132, - 1, - 81, - 8, - 97, - 29, - 32, 131, 1, 82, 128, 97, 29, - 32, - 131, - 1, - 81, - 97, - 3, 224, - 132, - 1, - 81, - 9, - 97, - 29, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 96, 131, 1, 81, 97, - 24, - 224, - 132, - 1, - 81, - 9, - 97, 29, - 96, - 131, - 1, - 82, 128, - 97, - 29, - 96, - 131, - 1, - 81, - 97, - 28, - 96, 132, 1, 81, - 9, + 8, 97, - 29, - 128, + 30, + 0, 131, 1, 82, 128, 97, - 29, - 128, + 30, + 0, 131, 1, 81, 97, - 25, + 4, 32, 132, 1, 81, 9, 97, - 29, - 160, + 30, + 32, 131, 1, 82, 128, 97, 29, - 160, + 192, 131, 1, 81, 97, - 6, + 27, 64, 132, 1, 81, 9, 97, - 29, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 29, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 29, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, 30, - 0, + 64, 131, 1, 82, 128, 97, 30, - 0, + 64, 131, 1, 81, 97, - 29, - 64, + 30, + 32, 132, 1, 81, 8, 97, 30, - 32, + 96, 131, 1, 82, 128, 97, 30, - 32, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, 30, - 64, - 131, - 1, - 82, 128, - 97, - 6, - 64, - 131, - 1, - 81, - 96, - 2, - 9, - 97, - 30, - 96, 131, 1, 82, 128, 97, - 5, - 192, + 7, + 160, 131, 1, 81, - 130, - 3, 97, - 5, - 224, + 26, + 32, 132, 1, 81, - 8, - 97, - 30, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 30, - 96, - 131, - 1, - 81, - 130, - 145, 9, 97, 30, @@ -5670,20 +5865,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 5, - 192, + 30, + 160, 131, 1, 81, - 130, - 3, 97, - 6, - 0, + 29, + 160, 132, 1, 81, - 8, + 9, 97, 30, 192, @@ -5697,15 +5890,13 @@ pub mod inclusion_verifier { 131, 1, 81, - 130, - 3, 97, - 30, - 160, + 26, + 96, 132, 1, 81, - 8, + 9, 97, 30, 224, @@ -5714,20 +5905,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 6, - 32, + 30, + 224, 131, 1, 81, - 130, - 3, 97, - 5, - 224, + 6, + 128, 132, 1, 81, - 8, + 9, 97, 31, 0, @@ -5736,19 +5925,15 @@ pub mod inclusion_verifier { 82, 128, 97, - 31, - 0, + 6, + 128, 131, 1, 81, 130, 3, - 97, - 30, - 224, - 132, + 96, 1, - 81, 8, 97, 31, @@ -5759,8 +5944,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 29, - 160, + 31, + 0, 131, 1, 81, @@ -5782,7 +5967,7 @@ pub mod inclusion_verifier { 81, 97, 30, - 64, + 128, 132, 1, 81, @@ -5801,8 +5986,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, @@ -5815,18 +6000,20 @@ pub mod inclusion_verifier { 82, 128, 97, - 24, - 192, + 6, + 0, 131, 1, 81, + 130, + 3, 97, - 28, - 96, + 6, + 32, 132, 1, 81, - 9, + 8, 97, 31, 160, @@ -5841,8 +6028,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 25, - 32, + 6, + 128, 132, 1, 81, @@ -5852,20 +6039,17 @@ pub mod inclusion_verifier { 192, 131, 1, + 129, + 144, 82, - 128, 97, - 5, - 224, + 6, + 0, 131, 1, 81, - 97, - 5, - 192, - 132, - 1, - 81, + 130, + 145, 8, 97, 31, @@ -5898,8 +6082,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 31, - 192, + 30, + 224, 131, 1, 81, @@ -5940,8 +6124,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, @@ -5951,17 +6135,22 @@ pub mod inclusion_verifier { 96, 131, 1, - 129, - 144, 82, + 128, 97, - 32, + 6, 32, 131, 1, 81, 130, - 145, + 3, + 97, + 6, + 0, + 132, + 1, + 81, 8, 97, 32, @@ -5977,8 +6166,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 3, - 224, + 6, + 128, 132, 1, 81, @@ -5988,56 +6177,57 @@ pub mod inclusion_verifier { 160, 131, 1, + 129, + 144, 82, - 128, 97, - 8, - 224, + 6, + 32, 131, 1, 81, 130, - 3, - 96, - 1, + 145, 8, 97, 32, 192, 131, 1, - 129, - 144, 82, + 128, 97, - 18, - 0, + 6, + 96, 131, 1, 81, 130, - 145, - 9, + 3, 97, 32, - 224, - 131, + 192, + 132, 1, - 82, - 128, + 81, + 8, 97, 32, 224, 131, 1, - 81, + 129, + 144, + 82, 97, - 32, - 160, - 132, + 30, + 224, + 131, 1, 81, - 8, + 130, + 145, + 9, 97, 33, 0, @@ -6052,140 +6242,125 @@ pub mod inclusion_verifier { 1, 81, 97, - 3, - 224, + 32, + 96, 132, 1, 81, - 9, + 8, 97, 33, 32, 131, 1, 82, - 97, - 9, - 64, - 130, - 1, - 81, - 129, - 144, 128, - 9, 97, 33, - 64, - 131, - 1, - 82, - 128, - 97, - 9, - 64, + 32, 131, 1, 81, - 130, - 3, 97, - 33, - 64, + 4, + 32, 132, 1, 81, - 8, + 9, 97, 33, - 96, + 64, 131, 1, - 129, - 144, 82, + 128, 97, - 17, - 64, + 26, + 0, 131, 1, 81, - 130, - 145, + 97, + 29, + 160, + 132, + 1, + 81, 9, 97, 33, - 128, + 96, 131, 1, 82, 128, 97, 33, - 128, + 96, 131, 1, 81, 97, - 33, - 32, + 26, + 96, 132, 1, 81, - 8, + 9, 97, 33, - 160, + 128, 131, 1, 82, 128, 97, - 33, - 160, + 6, + 32, 131, 1, 81, 97, - 3, - 224, + 6, + 0, 132, 1, 81, - 9, + 8, 97, 33, - 192, + 160, 131, 1, 82, 128, 97, - 9, - 32, + 6, + 128, 131, 1, 81, 130, 3, 97, - 9, - 64, + 33, + 160, 132, 1, 81, 8, 97, 33, - 224, + 192, 131, 1, 129, 144, 82, 97, - 18, - 0, + 33, + 128, 131, 1, 81, @@ -6193,149 +6368,130 @@ pub mod inclusion_verifier { 145, 9, 97, - 34, - 0, + 33, + 224, 131, 1, 82, 128, 97, - 34, - 0, + 33, + 224, 131, 1, 81, 97, 33, - 192, + 64, 132, 1, 81, 8, 97, 34, - 32, + 0, 131, 1, 82, 128, 97, 34, - 32, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, 34, - 64, + 32, 131, 1, + 129, + 144, 82, - 128, 97, - 17, - 64, + 33, + 224, 131, 1, 81, 130, - 3, - 96, - 1, + 145, 8, 97, 34, - 96, + 64, 131, 1, 82, 128, 97, - 17, - 128, + 34, + 64, 131, 1, 81, 97, - 17, - 96, + 4, + 32, 132, 1, 81, - 8, + 9, 97, 34, - 128, + 96, 131, 1, - 129, - 144, 82, + 128, 97, - 17, - 160, + 9, + 32, 131, 1, 81, 130, - 145, - 8, - 97, - 34, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 192, - 131, + 3, + 96, 1, - 81, - 130, - 145, 8, 97, 34, - 192, + 128, 131, 1, 129, 144, 82, 97, - 17, - 224, + 19, + 0, 131, 1, 81, 130, 145, - 8, + 9, 97, 34, - 224, + 160, 131, 1, 82, 128, 97, 34, - 224, + 160, 131, 1, 81, - 130, - 3, 97, 34, 96, @@ -6344,61 +6500,99 @@ pub mod inclusion_verifier { 81, 8, 97, - 35, - 0, + 34, + 192, 131, 1, 82, 128, 97, - 2, - 32, + 34, + 192, 131, 1, 81, 97, - 8, + 4, 32, 132, 1, 81, 9, 97, - 35, - 32, + 34, + 224, 131, 1, 82, + 97, + 9, + 128, + 130, + 1, + 81, + 129, + 144, 128, + 9, 97, 35, - 32, + 0, + 131, + 1, + 82, + 128, + 97, + 9, + 128, 131, 1, 81, + 130, + 3, 97, - 6, - 160, + 35, + 0, 132, 1, 81, 8, 97, 35, - 64, + 32, 131, 1, 129, 144, 82, 97, - 2, - 128, + 18, + 64, 131, 1, 81, 130, 145, + 9, + 97, + 35, + 64, + 131, + 1, + 82, + 128, + 97, + 35, + 64, + 131, + 1, + 81, + 97, + 34, + 224, + 132, + 1, + 81, 8, 97, 35, @@ -6408,14 +6602,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 2, - 32, + 35, + 96, 131, 1, 81, 97, - 8, - 64, + 4, + 32, 132, 1, 81, @@ -6428,14 +6622,16 @@ pub mod inclusion_verifier { 82, 128, 97, - 35, - 128, + 9, + 96, 131, 1, 81, + 130, + 3, 97, - 5, - 192, + 9, + 128, 132, 1, 81, @@ -6449,31 +6645,34 @@ pub mod inclusion_verifier { 144, 82, 97, - 2, - 128, + 19, + 0, 131, 1, 81, 130, 145, - 8, + 9, 97, 35, 192, 131, 1, - 129, - 144, 82, + 128, 97, 35, - 96, + 192, 131, 1, 81, - 130, - 145, - 9, + 97, + 35, + 128, + 132, + 1, + 81, + 8, 97, 35, 224, @@ -6482,14 +6681,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 2, - 32, + 35, + 224, 131, 1, 81, 97, - 8, - 96, + 4, + 32, 132, 1, 81, @@ -6502,34 +6701,35 @@ pub mod inclusion_verifier { 82, 128, 97, - 36, - 0, + 18, + 64, 131, 1, 81, - 97, - 5, - 224, - 132, + 130, + 3, + 96, 1, - 81, 8, 97, 36, 32, 131, 1, - 129, - 144, 82, + 128, 97, - 2, + 18, 128, 131, 1, 81, - 130, - 145, + 97, + 18, + 96, + 132, + 1, + 81, 8, 97, 36, @@ -6540,121 +6740,127 @@ pub mod inclusion_verifier { 144, 82, 97, - 35, - 224, + 18, + 160, 131, 1, 81, 130, 145, - 9, + 8, 97, 36, 96, 131, 1, + 129, + 144, 82, - 128, 97, - 2, - 32, + 18, + 192, 131, 1, 81, - 97, + 130, + 145, 8, - 128, - 132, - 1, - 81, - 9, 97, 36, 128, 131, 1, + 129, + 144, 82, - 128, 97, - 36, - 128, + 18, + 224, 131, 1, 81, - 97, - 6, - 192, - 132, - 1, - 81, + 130, + 145, 8, 97, 36, 160, 131, 1, - 129, - 144, 82, - 97, - 2, 128, + 97, + 36, + 160, 131, 1, 81, 130, - 145, + 3, + 97, + 36, + 32, + 132, + 1, + 81, 8, 97, 36, 192, 131, 1, - 129, - 144, 82, + 128, 97, - 36, + 2, 96, 131, 1, 81, - 130, - 145, + 97, + 8, + 96, + 132, + 1, + 81, 9, 97, 36, 224, 131, 1, - 129, - 144, 82, + 128, 97, - 9, - 0, + 36, + 224, 131, 1, 81, - 130, - 145, - 9, + 97, + 6, + 224, + 132, + 1, + 81, + 8, 97, 37, 0, 131, 1, + 129, + 144, 82, - 128, 97, 2, - 32, + 192, 131, 1, 81, - 96, - 1, - 9, + 130, + 145, + 8, 97, 37, 32, @@ -6663,13 +6869,13 @@ pub mod inclusion_verifier { 82, 128, 97, - 37, - 32, + 2, + 96, 131, 1, 81, 97, - 5, + 8, 128, 132, 1, @@ -6690,7 +6896,7 @@ pub mod inclusion_verifier { 81, 97, 6, - 160, + 0, 132, 1, 81, @@ -6705,7 +6911,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6717,47 +6923,17 @@ pub mod inclusion_verifier { 128, 131, 1, + 129, + 144, 82, - 128, 97, - 2, + 37, 32, 131, 1, 81, - 127, - 9, - 34, - 107, - 110, - 34, - 198, - 240, - 202, - 100, - 236, - 38, - 170, - 212, - 200, - 110, - 113, - 91, - 95, - 137, - 142, - 94, - 150, - 63, - 37, - 135, - 14, - 86, - 187, - 229, - 51, - 233, - 162, + 130, + 145, 9, 97, 37, @@ -6767,14 +6943,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 37, - 160, + 2, + 96, 131, 1, 81, 97, - 5, - 128, + 8, + 160, 132, 1, 81, @@ -6793,8 +6969,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 5, - 192, + 6, + 32, 132, 1, 81, @@ -6809,7 +6985,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6826,7 +7002,7 @@ pub mod inclusion_verifier { 82, 97, 37, - 128, + 160, 131, 1, 81, @@ -6842,43 +7018,16 @@ pub mod inclusion_verifier { 128, 97, 2, - 32, + 96, 131, 1, 81, - 127, - 19, - 179, - 96, - 212, - 232, - 47, - 233, - 21, - 254, - 209, - 96, - 129, - 3, - 143, - 152, - 194, - 17, - 66, - 123, - 135, - 162, - 129, - 189, - 115, - 60, - 39, - 125, - 186, - 223, - 16, - 55, - 43, + 97, + 8, + 192, + 132, + 1, + 81, 9, 97, 38, @@ -6894,31 +7043,28 @@ pub mod inclusion_verifier { 1, 81, 97, - 5, - 128, + 7, + 0, 132, 1, 81, - 9, + 8, 97, 38, 96, 131, 1, + 129, + 144, 82, - 128, 97, - 38, - 96, + 2, + 192, 131, 1, 81, - 97, - 5, - 224, - 132, - 1, - 81, + 130, + 145, 8, 97, 38, @@ -6929,14 +7075,14 @@ pub mod inclusion_verifier { 144, 82, 97, - 2, - 128, + 38, + 32, 131, 1, 81, 130, 145, - 8, + 9, 97, 38, 160, @@ -6946,8 +7092,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 38, - 32, + 9, + 64, 131, 1, 81, @@ -6963,43 +7109,12 @@ pub mod inclusion_verifier { 128, 97, 2, - 32, + 96, 131, 1, 81, - 127, - 24, - 175, - 223, - 35, - 233, - 189, - 147, - 2, - 103, - 63, - 193, - 224, - 118, - 164, - 146, - 212, - 214, - 91, - 209, - 142, - 188, - 77, - 133, - 78, - 209, - 137, - 19, - 155, - 171, - 49, - 62, - 82, + 96, + 1, 9, 97, 38, @@ -7016,7 +7131,7 @@ pub mod inclusion_verifier { 81, 97, 5, - 128, + 192, 132, 1, 81, @@ -7036,7 +7151,7 @@ pub mod inclusion_verifier { 81, 97, 6, - 192, + 224, 132, 1, 81, @@ -7051,7 +7166,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7063,52 +7178,83 @@ pub mod inclusion_verifier { 64, 131, 1, - 129, - 144, 82, + 128, 97, - 38, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 39, + 2, 96, 131, 1, - 129, - 144, - 82, - 97, - 8, - 224, - 131, - 1, 81, - 130, - 145, + 127, 9, - 97, - 39, - 128, - 131, - 1, - 82, - 128, - 97, - 39, - 128, - 131, - 1, - 81, - 130, - 3, - 97, + 34, + 107, + 110, + 34, + 198, + 240, + 202, + 100, + 236, + 38, + 170, + 212, + 200, + 110, + 113, + 91, + 95, + 137, + 142, + 94, + 150, + 63, 37, + 135, + 14, + 86, + 187, + 229, + 51, + 233, + 162, + 9, + 97, + 39, + 96, + 131, + 1, + 82, + 128, + 97, + 39, + 96, + 131, + 1, + 81, + 97, + 5, + 192, + 132, + 1, + 81, + 9, + 97, + 39, + 128, + 131, + 1, + 82, + 128, + 97, + 39, + 128, + 131, + 1, + 81, + 97, + 6, 0, 132, 1, @@ -7123,34 +7269,31 @@ pub mod inclusion_verifier { 144, 82, 97, - 35, - 0, + 2, + 192, 131, 1, 81, 130, 145, - 9, + 8, 97, 39, 192, 131, 1, + 129, + 144, 82, - 128, 97, 39, - 192, - 131, - 1, - 81, - 97, - 34, 64, - 132, + 131, 1, 81, - 8, + 130, + 145, + 9, 97, 39, 224, @@ -7159,17 +7302,44 @@ pub mod inclusion_verifier { 82, 128, 97, - 39, - 224, + 2, + 96, 131, 1, 81, - 97, + 127, + 19, + 179, + 96, + 212, + 232, + 47, + 233, + 21, + 254, + 209, + 96, + 129, 3, - 224, - 132, - 1, - 81, + 143, + 152, + 194, + 17, + 66, + 123, + 135, + 162, + 129, + 189, + 115, + 60, + 39, + 125, + 186, + 223, + 16, + 55, + 43, 9, 97, 40, @@ -7179,14 +7349,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 2, - 32, + 40, + 0, 131, 1, 81, 97, - 8, - 160, + 5, + 192, 132, 1, 81, @@ -7206,7 +7376,7 @@ pub mod inclusion_verifier { 81, 97, 6, - 64, + 32, 132, 1, 81, @@ -7221,7 +7391,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7233,16 +7403,80 @@ pub mod inclusion_verifier { 96, 131, 1, + 129, + 144, + 82, + 97, + 39, + 224, + 131, + 1, + 81, + 130, + 145, + 9, + 97, + 40, + 128, + 131, + 1, 82, 128, 97, 2, - 32, + 96, + 131, + 1, + 81, + 127, + 24, + 175, + 223, + 35, + 233, + 189, + 147, + 2, + 103, + 63, + 193, + 224, + 118, + 164, + 146, + 212, + 214, + 91, + 209, + 142, + 188, + 77, + 133, + 78, + 209, + 137, + 19, + 155, + 171, + 49, + 62, + 82, + 9, + 97, + 40, + 160, + 131, + 1, + 82, + 128, + 97, + 40, + 160, 131, 1, 81, 97, - 8, + 5, 192, 132, 1, @@ -7250,27 +7484,27 @@ pub mod inclusion_verifier { 9, 97, 40, - 128, + 192, 131, 1, 82, 128, 97, 40, - 128, + 192, 131, 1, 81, 97, - 18, - 64, + 7, + 0, 132, 1, 81, 8, 97, 40, - 160, + 224, 131, 1, 129, @@ -7278,7 +7512,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7286,8 +7520,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 192, + 41, + 0, 131, 1, 129, @@ -7295,7 +7529,7 @@ pub mod inclusion_verifier { 82, 97, 40, - 96, + 128, 131, 1, 81, @@ -7303,8 +7537,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 40, - 224, + 41, + 32, 131, 1, 129, @@ -7312,26 +7546,253 @@ pub mod inclusion_verifier { 82, 97, 9, + 32, + 131, + 1, + 81, + 130, + 145, + 9, + 97, + 41, + 64, + 131, + 1, + 82, + 128, + 97, + 41, + 64, + 131, + 1, + 81, + 130, + 3, + 97, + 38, + 192, + 132, + 1, + 81, + 8, + 97, + 41, 96, 131, 1, + 129, + 144, + 82, + 97, + 36, + 192, + 131, + 1, 81, 130, 145, 9, 97, 41, + 128, + 131, + 1, + 82, + 128, + 97, + 41, + 128, + 131, + 1, + 81, + 97, + 36, + 0, + 132, + 1, + 81, + 8, + 97, + 41, + 160, + 131, + 1, + 82, + 128, + 97, + 41, + 160, + 131, + 1, + 81, + 97, + 4, + 32, + 132, + 1, + 81, + 9, + 97, + 41, + 192, + 131, + 1, + 82, + 128, + 97, + 2, + 96, + 131, + 1, + 81, + 97, + 8, + 224, + 132, + 1, + 81, + 9, + 97, + 41, + 224, + 131, + 1, + 82, + 128, + 97, + 41, + 224, + 131, + 1, + 81, + 97, + 6, + 128, + 132, + 1, + 81, + 8, + 97, + 42, + 0, + 131, + 1, + 129, + 144, + 82, + 97, + 2, + 192, + 131, + 1, + 81, + 130, + 145, + 8, + 97, + 42, + 32, + 131, + 1, + 82, + 128, + 97, + 2, + 96, + 131, + 1, + 81, + 97, + 9, 0, + 132, + 1, + 81, + 9, + 97, + 42, + 64, 131, 1, 82, 128, 97, + 42, + 64, + 131, + 1, + 81, + 97, + 19, + 128, + 132, + 1, + 81, + 8, + 97, + 42, + 96, + 131, + 1, + 129, + 144, + 82, + 97, 2, + 192, + 131, + 1, + 81, + 130, + 145, + 8, + 97, + 42, + 128, + 131, + 1, + 129, + 144, + 82, + 97, + 42, 32, 131, 1, 81, + 130, + 145, + 9, + 97, + 42, + 160, + 131, + 1, + 129, + 144, + 82, + 97, + 9, + 160, + 131, + 1, + 81, + 130, + 145, + 9, + 97, + 42, + 192, + 131, + 1, + 82, + 128, + 97, + 2, + 96, + 131, + 1, + 81, 126, 161, 54, @@ -7366,48 +7827,48 @@ pub mod inclusion_verifier { 66, 9, 97, - 41, - 32, + 42, + 224, 131, 1, 82, 128, 97, - 41, - 32, + 42, + 224, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 41, - 64, + 43, + 0, 131, 1, 82, 128, 97, - 41, - 64, + 43, + 0, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 8, 97, - 41, - 96, + 43, + 32, 131, 1, 129, @@ -7415,7 +7876,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7423,15 +7884,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 41, - 128, + 43, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -7470,48 +7931,48 @@ pub mod inclusion_verifier { 157, 9, 97, - 41, - 160, + 43, + 96, 131, 1, 82, 128, 97, - 41, - 160, + 43, + 96, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 41, - 192, + 43, + 128, 131, 1, 82, 128, 97, - 41, - 192, + 43, + 128, 131, 1, 81, 97, - 18, - 64, + 19, + 128, 132, 1, 81, 8, 97, - 41, - 224, + 43, + 160, 131, 1, 129, @@ -7519,7 +7980,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7527,16 +7988,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 42, - 0, + 43, + 192, 131, 1, 129, 144, 82, 97, - 41, - 128, + 43, + 64, 131, 1, 81, @@ -7544,8 +8005,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 32, + 43, + 224, 131, 1, 129, @@ -7553,7 +8014,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 64, + 128, 131, 1, 81, @@ -7561,38 +8022,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 64, + 44, + 0, 131, 1, 82, 128, 97, - 42, - 64, + 44, + 0, 131, 1, 81, 130, 3, 97, - 41, - 0, + 42, + 192, 132, 1, 81, 8, 97, - 42, - 96, + 44, + 32, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 192, 131, 1, 81, @@ -7600,55 +8061,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 128, + 44, + 64, 131, 1, 82, 128, 97, - 42, - 128, + 44, + 64, 131, 1, 81, 97, - 40, - 0, + 41, + 192, 132, 1, 81, 8, 97, - 42, - 160, + 44, + 96, 131, 1, 82, 128, 97, - 42, - 160, + 44, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 42, - 192, + 44, + 128, 131, 1, 82, 128, 97, 9, - 128, + 192, 131, 1, 81, @@ -7658,15 +8119,15 @@ pub mod inclusion_verifier { 1, 8, 97, - 42, - 224, + 44, + 160, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -7675,54 +8136,54 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 0, + 44, + 192, 131, 1, 82, 128, 97, - 43, - 0, + 44, + 192, 131, 1, 81, 97, - 42, - 192, + 44, + 128, 132, 1, 81, 8, 97, - 43, - 32, + 44, + 224, 131, 1, 82, 128, 97, - 43, - 32, + 44, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 43, - 64, + 45, + 0, 131, 1, 82, 97, 9, - 128, + 192, 130, 1, 81, @@ -7731,37 +8192,37 @@ pub mod inclusion_verifier { 128, 9, 97, - 43, - 96, + 45, + 32, 131, 1, 82, 128, 97, 9, - 128, + 192, 131, 1, 81, 130, 3, 97, - 43, - 96, + 45, + 32, 132, 1, 81, 8, 97, - 43, - 128, + 45, + 64, 131, 1, 129, 144, 82, 97, - 17, + 18, 64, 131, 1, @@ -7770,68 +8231,68 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 160, + 45, + 96, 131, 1, 82, 128, 97, - 43, - 160, + 45, + 96, 131, 1, 81, 97, - 43, - 64, + 45, + 0, 132, 1, 81, 8, 97, - 43, - 192, + 45, + 128, 131, 1, 82, 128, 97, - 43, - 192, + 45, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 43, - 224, + 45, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 44, - 0, + 45, + 192, 131, 1, 129, @@ -7839,7 +8300,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 160, + 224, 131, 1, 81, @@ -7847,36 +8308,36 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 32, + 45, + 224, 131, 1, 82, 128, 97, 2, - 128, + 192, 131, 1, 81, 97, 10, - 0, + 64, 132, 1, 81, 8, 97, - 44, - 64, + 46, + 0, 131, 1, 129, 144, 82, 97, - 44, - 32, + 45, + 224, 131, 1, 81, @@ -7884,15 +8345,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 96, + 46, + 32, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, @@ -7901,30 +8362,30 @@ pub mod inclusion_verifier { 0, 9, 97, - 44, - 128, + 46, + 64, 131, 1, 82, 128, 97, - 44, - 128, + 46, + 64, 131, 1, 81, 130, 3, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 44, - 160, + 46, + 96, 131, 1, 129, @@ -7932,7 +8393,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 64, + 128, 131, 1, 81, @@ -7940,8 +8401,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 192, + 46, + 128, 131, 1, 129, @@ -7949,7 +8410,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 32, + 96, 131, 1, 81, @@ -7957,8 +8418,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 44, - 224, + 46, + 160, 131, 1, 129, @@ -7966,7 +8427,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 128, + 192, 131, 1, 81, @@ -7974,36 +8435,36 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 0, + 46, + 192, 131, 1, 82, 128, 97, 2, - 128, + 192, 131, 1, 81, 97, 7, - 32, + 96, 132, 1, 81, 8, 97, - 45, - 32, + 46, + 224, 131, 1, 129, 144, 82, 97, - 45, - 0, + 46, + 192, 131, 1, 81, @@ -8011,38 +8472,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 64, + 47, + 0, 131, 1, 82, 128, 97, - 45, - 64, + 47, + 0, 131, 1, 81, 130, 3, 97, - 44, - 96, + 46, + 32, 132, 1, 81, 8, 97, - 45, - 96, + 47, + 32, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 192, 131, 1, 81, @@ -8050,77 +8511,77 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 128, + 47, + 64, 131, 1, 82, 128, 97, - 45, - 128, + 47, + 64, 131, 1, 81, 97, - 43, - 224, + 45, + 160, 132, 1, 81, 8, 97, - 45, - 160, + 47, + 96, 131, 1, 82, 128, 97, - 45, - 160, + 47, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 45, - 192, + 47, + 128, 131, 1, 82, 128, 97, 10, - 0, + 64, 131, 1, 81, 130, 3, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 45, - 224, + 47, + 160, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -8129,98 +8590,98 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 0, + 47, + 192, 131, 1, 82, 128, 97, - 46, - 0, + 47, + 192, 131, 1, 81, 97, - 45, - 192, + 47, + 128, 132, 1, 81, 8, 97, - 46, - 32, + 47, + 224, 131, 1, 82, 128, 97, - 46, - 32, + 47, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 46, - 64, + 48, + 0, 131, 1, 82, 128, 97, - 35, - 0, + 36, + 192, 131, 1, 81, 97, - 45, - 224, + 47, + 160, 132, 1, 81, 9, 97, - 46, - 96, + 48, + 32, 131, 1, 82, 128, 97, - 9, - 224, + 10, + 32, 131, 1, 81, 130, 3, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 46, - 128, + 48, + 64, 131, 1, 129, 144, 82, 97, - 46, - 96, + 48, + 32, 131, 1, 81, @@ -8228,34 +8689,34 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 160, + 48, + 96, 131, 1, 82, 128, 97, - 46, - 160, + 48, + 96, 131, 1, 81, 97, - 46, - 64, + 48, + 0, 132, 1, 81, 8, 97, - 46, - 192, + 48, + 128, 131, 1, 82, 97, 13, - 0, + 64, 130, 1, 81, @@ -8264,8 +8725,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 46, - 224, + 48, + 160, 131, 1, 129, @@ -8273,7 +8734,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -8281,8 +8742,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 0, + 48, + 192, 131, 1, 129, @@ -8290,7 +8751,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -8298,8 +8759,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 32, + 48, + 224, 131, 1, 129, @@ -8307,7 +8768,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -8315,15 +8776,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 64, + 49, + 0, 131, 1, 82, 128, 97, 13, - 0, + 64, 131, 1, 81, @@ -8331,15 +8792,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 96, + 49, + 32, 131, 1, 82, 128, 97, - 46, - 224, + 48, + 160, 131, 1, 81, @@ -8347,15 +8808,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 128, + 49, + 64, 131, 1, 82, 128, 97, - 47, - 0, + 48, + 192, 131, 1, 81, @@ -8363,15 +8824,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 160, + 49, + 96, 131, 1, 82, 128, 97, - 47, - 32, + 48, + 224, 131, 1, 81, @@ -8379,48 +8840,48 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 192, + 49, + 128, 131, 1, 82, 128, 97, 13, - 32, + 96, 131, 1, 81, 97, - 46, - 192, + 48, + 128, 132, 1, 81, 9, 97, - 47, - 224, + 49, + 160, 131, 1, 82, 128, 97, 5, - 128, + 192, 131, 1, 81, 97, - 11, - 192, + 12, + 0, 132, 1, 81, 9, 97, - 48, - 0, + 49, + 192, 131, 1, 82, @@ -8429,21 +8890,21 @@ pub mod inclusion_verifier { 1, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 32, + 49, + 224, 131, 1, 82, 128, 97, - 48, - 32, + 49, + 224, 131, 1, 81, @@ -8451,14 +8912,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 64, + 50, + 0, 131, 1, 82, @@ -8498,21 +8959,21 @@ pub mod inclusion_verifier { 95, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 96, + 50, + 32, 131, 1, 82, 128, 97, - 48, - 96, + 50, + 32, 131, 1, 81, @@ -8520,14 +8981,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 128, + 50, + 64, 131, 1, 82, @@ -8567,21 +9028,21 @@ pub mod inclusion_verifier { 2, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 160, + 50, + 96, 131, 1, 82, 128, 97, - 48, - 160, + 50, + 96, 131, 1, 81, @@ -8589,14 +9050,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 192, + 50, + 128, 131, 1, 82, @@ -8636,21 +9097,21 @@ pub mod inclusion_verifier { 26, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 224, + 50, + 160, 131, 1, 82, 128, 97, - 48, - 224, + 50, + 160, 131, 1, 81, @@ -8658,14 +9119,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 49, - 0, + 50, + 192, 131, 1, 82, @@ -8705,15 +9166,15 @@ pub mod inclusion_verifier { 121, 139, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -8756,15 +9217,15 @@ pub mod inclusion_verifier { 134, 118, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -8774,8 +9235,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 32, + 50, + 224, 132, 1, 82, @@ -8816,15 +9277,15 @@ pub mod inclusion_verifier { 97, 54, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -8867,15 +9328,15 @@ pub mod inclusion_verifier { 231, 116, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -8885,8 +9346,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 64, + 51, + 0, 132, 1, 82, @@ -8927,15 +9388,15 @@ pub mod inclusion_verifier { 12, 40, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -8978,30 +9439,30 @@ pub mod inclusion_verifier { 239, 215, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 49, - 96, + 51, + 32, 132, 1, 82, 80, 97, - 48, - 64, + 50, + 0, 130, 1, 81, @@ -9011,16 +9472,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 49, - 128, + 51, + 64, 131, 1, 129, 144, 82, 97, - 48, - 128, + 50, + 64, 131, 1, 81, @@ -9028,16 +9489,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 49, - 160, + 51, + 96, 131, 1, 129, 144, 82, 97, - 49, - 0, + 50, + 192, 131, 1, 81, @@ -9045,8 +9506,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 49, - 192, + 51, + 128, 131, 1, 82, @@ -9055,7 +9516,7 @@ pub mod inclusion_verifier { 1, 97, 11, - 64, + 128, 132, 1, 81, @@ -9098,7 +9559,7 @@ pub mod inclusion_verifier { 0, 97, 5, - 128, + 192, 135, 1, 81, @@ -9108,8 +9569,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 224, + 51, + 160, 132, 1, 82, @@ -9150,15 +9611,15 @@ pub mod inclusion_verifier { 76, 242, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9201,15 +9662,15 @@ pub mod inclusion_verifier { 179, 15, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9219,8 +9680,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 0, + 51, + 192, 132, 1, 82, @@ -9261,15 +9722,15 @@ pub mod inclusion_verifier { 141, 207, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9312,15 +9773,15 @@ pub mod inclusion_verifier { 38, 251, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9330,8 +9791,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 32, + 51, + 224, 132, 1, 82, @@ -9372,15 +9833,15 @@ pub mod inclusion_verifier { 8, 51, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9423,36 +9884,36 @@ pub mod inclusion_verifier { 46, 39, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 50, - 64, + 52, + 0, 132, 1, 82, 80, 97, - 48, - 192, + 50, + 128, 130, 1, 81, 97, - 49, - 160, + 51, + 96, 131, 1, 81, @@ -9461,8 +9922,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 50, - 96, + 52, + 32, 131, 1, 82, @@ -9503,14 +9964,14 @@ pub mod inclusion_verifier { 163, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9554,14 +10015,14 @@ pub mod inclusion_verifier { 94, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9571,8 +10032,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 128, + 52, + 64, 132, 1, 82, @@ -9614,14 +10075,14 @@ pub mod inclusion_verifier { 94, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9665,14 +10126,14 @@ pub mod inclusion_verifier { 227, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9682,8 +10143,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 160, + 52, + 96, 132, 1, 82, @@ -9725,14 +10186,14 @@ pub mod inclusion_verifier { 232, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9776,14 +10237,14 @@ pub mod inclusion_verifier { 25, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9793,8 +10254,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 192, + 52, + 128, 132, 1, 82, @@ -9836,14 +10297,14 @@ pub mod inclusion_verifier { 25, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9887,35 +10348,35 @@ pub mod inclusion_verifier { 55, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 50, - 224, + 52, + 160, 132, 1, 82, 80, 97, - 49, - 0, + 50, + 192, 130, 1, 81, 97, - 49, - 128, + 51, + 64, 131, 1, 81, @@ -9924,22 +10385,22 @@ pub mod inclusion_verifier { 144, 9, 97, - 51, - 0, + 52, + 192, 131, 1, 82, 97, - 49, - 32, + 50, + 224, 130, 1, 81, 129, 129, 97, - 49, - 64, + 51, + 0, 133, 1, 81, @@ -9948,16 +10409,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 32, + 52, + 224, 132, 1, 82, 129, 129, 97, - 49, - 96, + 51, + 32, 133, 1, 81, @@ -9966,16 +10427,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 64, + 53, + 0, 132, 1, 82, 129, 129, 97, - 49, - 224, + 51, + 160, 133, 1, 81, @@ -9984,16 +10445,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 96, + 53, + 32, 132, 1, 82, 129, 129, 97, - 49, - 128, + 51, + 64, 133, 1, 81, @@ -10002,16 +10463,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 128, + 53, + 64, 132, 1, 82, 129, 129, 97, - 50, - 0, + 51, + 192, 133, 1, 81, @@ -10020,16 +10481,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 160, + 53, + 96, 132, 1, 82, 129, 129, 97, - 50, - 32, + 51, + 224, 133, 1, 81, @@ -10038,16 +10499,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 192, + 53, + 128, 132, 1, 82, 129, 129, 97, - 50, - 64, + 52, + 0, 133, 1, 81, @@ -10056,16 +10517,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 224, + 53, + 160, 132, 1, 82, 129, 129, 97, - 50, - 96, + 52, + 32, 133, 1, 81, @@ -10074,16 +10535,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 0, + 53, + 192, 132, 1, 82, 129, 129, 97, - 50, - 128, + 52, + 64, 133, 1, 81, @@ -10092,16 +10553,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 32, + 53, + 224, 132, 1, 82, 129, 129, 97, - 50, - 160, + 52, + 96, 133, 1, 81, @@ -10110,16 +10571,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 64, + 54, + 0, 132, 1, 82, 129, 129, 97, - 49, - 160, + 51, + 96, 133, 1, 81, @@ -10128,16 +10589,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 96, + 54, + 32, 132, 1, 82, 129, 129, 97, - 50, - 192, + 52, + 128, 133, 1, 81, @@ -10146,16 +10607,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 128, + 54, + 64, 132, 1, 82, 129, 129, 97, - 50, - 224, + 52, + 160, 133, 1, 81, @@ -10164,16 +10625,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 160, + 54, + 96, 132, 1, 82, 129, 129, 97, - 51, - 0, + 52, + 192, 133, 1, 81, @@ -10182,8 +10643,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 192, + 54, + 128, 132, 1, 82, @@ -10191,36 +10652,36 @@ pub mod inclusion_verifier { 96, 32, 97, - 53, - 0, + 54, + 192, 131, 1, 82, 96, 32, 97, - 53, - 32, + 54, + 224, 131, 1, 82, 96, 32, 97, - 53, - 64, + 55, + 0, 131, 1, 82, 97, - 52, - 192, + 54, + 128, 130, 1, 81, 97, - 53, - 96, + 55, + 32, 131, 1, 82, @@ -10258,8 +10719,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 53, - 128, + 55, + 64, 131, 1, 82, @@ -10270,8 +10731,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 225, 131, 57, 129, @@ -10279,8 +10740,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 53, - 160, + 55, + 96, 131, 1, 82, @@ -10290,15 +10751,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 52, - 224, + 54, + 160, 133, 1, 96, 192, 97, - 53, - 0, + 54, + 192, 135, 1, 96, @@ -10310,16 +10771,16 @@ pub mod inclusion_verifier { 146, 80, 97, - 52, - 224, + 54, + 160, 130, 1, 81, 96, 0, 97, - 51, - 0, + 52, + 192, 132, 1, 81, @@ -10328,15 +10789,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 160, + 54, + 96, 134, 1, 81, 9, 97, - 51, - 0, + 52, + 192, 133, 1, 82, @@ -10347,8 +10808,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 224, + 52, + 160, 132, 1, 81, @@ -10357,15 +10818,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 128, + 54, + 64, 134, 1, 81, 9, 97, - 50, - 224, + 52, + 160, 133, 1, 82, @@ -10376,8 +10837,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 192, + 52, + 128, 132, 1, 81, @@ -10386,15 +10847,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 96, + 54, + 32, 134, 1, 81, 9, 97, - 50, - 192, + 52, + 128, 133, 1, 82, @@ -10405,8 +10866,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 160, + 51, + 96, 132, 1, 81, @@ -10415,15 +10876,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 64, + 54, + 0, 134, 1, 81, 9, 97, - 49, - 160, + 51, + 96, 133, 1, 82, @@ -10434,8 +10895,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 160, + 52, + 96, 132, 1, 81, @@ -10444,15 +10905,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 32, + 53, + 224, 134, 1, 81, 9, 97, - 50, - 160, + 52, + 96, 133, 1, 82, @@ -10463,8 +10924,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 128, + 52, + 64, 132, 1, 81, @@ -10473,15 +10934,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 0, + 53, + 192, 134, 1, 81, 9, 97, - 50, - 128, + 52, + 64, 133, 1, 82, @@ -10492,8 +10953,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 96, + 52, + 32, 132, 1, 81, @@ -10502,15 +10963,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 224, + 53, + 160, 134, 1, 81, 9, 97, - 50, - 96, + 52, + 32, 133, 1, 82, @@ -10521,8 +10982,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 64, + 52, + 0, 132, 1, 81, @@ -10531,15 +10992,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 192, + 53, + 128, 134, 1, 81, 9, 97, - 50, - 64, + 52, + 0, 133, 1, 82, @@ -10550,8 +11011,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 32, + 51, + 224, 132, 1, 81, @@ -10560,15 +11021,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 160, + 53, + 96, 134, 1, 81, 9, 97, - 50, - 32, + 51, + 224, 133, 1, 82, @@ -10579,8 +11040,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 0, + 51, + 192, 132, 1, 81, @@ -10589,15 +11050,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 128, + 53, + 64, 134, 1, 81, 9, 97, - 50, - 0, + 51, + 192, 133, 1, 82, @@ -10608,8 +11069,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 128, + 51, + 64, 132, 1, 81, @@ -10618,15 +11079,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 96, + 53, + 32, 134, 1, 81, 9, 97, - 49, - 128, + 51, + 64, 133, 1, 82, @@ -10637,8 +11098,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 224, + 51, + 160, 132, 1, 81, @@ -10647,15 +11108,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 64, + 53, + 0, 134, 1, 81, 9, 97, - 49, - 224, + 51, + 160, 133, 1, 82, @@ -10666,8 +11127,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 96, + 51, + 32, 132, 1, 81, @@ -10676,15 +11137,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 32, + 52, + 224, 134, 1, 81, 9, 97, - 49, - 96, + 51, + 32, 133, 1, 82, @@ -10695,8 +11156,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 64, + 51, + 0, 132, 1, 81, @@ -10705,15 +11166,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 49, - 32, + 50, + 224, 134, 1, 81, 9, 97, - 49, - 64, + 51, + 0, 133, 1, 82, @@ -10722,16 +11183,16 @@ pub mod inclusion_verifier { 130, 9, 97, - 49, - 32, + 50, + 224, 133, 1, 129, 144, 82, 97, - 49, - 64, + 51, + 0, 133, 1, 81, @@ -10749,28 +11210,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 49, - 96, + 51, + 32, 133, 1, 81, 8, 97, - 53, - 192, + 55, + 128, 132, 1, 82, 80, 97, - 49, - 128, + 51, + 64, 130, 1, 81, 97, - 49, - 192, + 51, + 128, 131, 1, 81, @@ -10779,56 +11240,56 @@ pub mod inclusion_verifier { 144, 9, 97, - 53, - 224, + 55, + 160, 131, 1, 82, 97, - 49, - 224, + 51, + 160, 130, 1, 81, 128, 97, - 54, - 0, + 55, + 192, 132, 1, 82, 80, 128, 97, - 50, - 96, + 52, + 32, 131, 1, 81, 97, - 49, - 192, + 51, + 128, 132, 1, 81, 9, 97, - 54, - 32, + 55, + 224, 131, 1, 82, 97, - 50, - 0, + 51, + 192, 130, 1, 81, 129, 129, 97, - 50, - 32, + 51, + 224, 133, 1, 81, @@ -10838,28 +11299,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 50, - 64, + 52, + 0, 133, 1, 81, 8, 97, - 54, - 64, + 56, + 0, 132, 1, 82, 80, 97, - 49, - 160, + 51, + 96, 130, 1, 81, 97, - 49, - 192, + 51, + 128, 131, 1, 81, @@ -10868,42 +11329,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 54, - 96, + 56, + 32, 131, 1, 82, 97, - 50, - 128, + 52, + 64, 130, 1, 81, 129, 129, 97, - 50, - 160, + 52, + 96, 133, 1, 81, 8, 97, - 54, - 128, + 56, + 64, 132, 1, 82, 80, 97, - 51, - 0, + 52, + 192, 130, 1, 81, 97, - 49, - 192, + 51, + 128, 131, 1, 81, @@ -10912,42 +11373,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 54, - 160, + 56, + 96, 131, 1, 82, 97, - 50, - 192, + 52, + 128, 130, 1, 81, 129, 129, 97, - 50, - 224, + 52, + 160, 133, 1, 81, 8, 97, - 54, - 192, + 56, + 128, 132, 1, 82, 80, 97, - 53, - 192, + 55, + 128, 130, 1, 81, 97, - 54, - 0, + 55, + 192, 131, 1, 81, @@ -10960,16 +11421,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 54, - 224, + 56, + 160, 132, 1, 82, 129, 129, 97, - 54, - 64, + 56, + 0, 133, 1, 81, @@ -10978,16 +11439,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 0, + 56, + 192, 132, 1, 82, 129, 129, 97, - 54, - 128, + 56, + 64, 133, 1, 81, @@ -10996,16 +11457,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 32, + 56, + 224, 132, 1, 82, 129, 129, 97, - 54, - 192, + 56, + 128, 133, 1, 81, @@ -11014,8 +11475,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 64, + 57, + 0, 132, 1, 82, @@ -11023,36 +11484,36 @@ pub mod inclusion_verifier { 96, 32, 97, - 55, - 128, + 57, + 64, 131, 1, 82, 96, 32, 97, - 55, - 160, + 57, + 96, 131, 1, 82, 96, 32, 97, - 55, - 192, + 57, + 128, 131, 1, 82, 97, - 55, - 64, + 57, + 0, 130, 1, 81, 97, - 55, - 224, + 57, + 160, 131, 1, 82, @@ -11090,8 +11551,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 56, - 0, + 57, + 192, 131, 1, 82, @@ -11102,8 +11563,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 225, 131, 57, 129, @@ -11111,8 +11572,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 56, - 32, + 57, + 224, 131, 1, 82, @@ -11122,15 +11583,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 55, - 96, + 57, + 32, 133, 1, 96, 192, 97, - 55, - 128, + 57, + 64, 135, 1, 96, @@ -11142,16 +11603,16 @@ pub mod inclusion_verifier { 146, 80, 97, - 55, - 96, + 57, + 32, 130, 1, 81, 96, 0, 97, - 54, - 192, + 56, + 128, 132, 1, 81, @@ -11160,15 +11621,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 55, - 32, + 56, + 224, 134, 1, 81, 9, 97, - 54, - 192, + 56, + 128, 133, 1, 82, @@ -11179,8 +11640,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 128, + 56, + 64, 132, 1, 81, @@ -11189,15 +11650,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 55, - 0, + 56, + 192, 134, 1, 81, 9, 97, - 54, - 128, + 56, + 64, 133, 1, 82, @@ -11208,8 +11669,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 64, + 56, + 0, 132, 1, 81, @@ -11218,15 +11679,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 54, - 224, + 56, + 160, 134, 1, 81, 9, 97, - 54, - 64, + 56, + 0, 133, 1, 82, @@ -11237,8 +11698,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 0, + 55, + 192, 132, 1, 81, @@ -11247,15 +11708,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 192, + 55, + 128, 134, 1, 81, 9, 97, - 54, - 0, + 55, + 192, 133, 1, 82, @@ -11264,22 +11725,22 @@ pub mod inclusion_verifier { 130, 9, 97, - 53, - 192, + 55, + 128, 133, 1, 82, 80, 80, - 97, - 54, - 0, + 97, + 55, + 192, 130, 1, 81, 97, - 53, - 224, + 55, + 160, 131, 1, 81, @@ -11288,74 +11749,74 @@ pub mod inclusion_verifier { 144, 9, 97, - 56, - 64, + 58, + 0, 131, 1, 82, 128, 97, - 54, - 64, + 56, + 0, 131, 1, 81, 97, - 54, - 32, + 55, + 224, 132, 1, 81, 9, 97, - 56, - 96, + 58, + 32, 131, 1, 82, 128, 97, - 54, - 128, + 56, + 64, 131, 1, 81, 97, - 54, - 96, + 56, + 32, 132, 1, 81, 9, 97, - 56, - 128, + 58, + 64, 131, 1, 82, 128, 97, - 54, - 192, + 56, + 128, 131, 1, 81, 97, - 54, - 160, + 56, + 96, 132, 1, 81, 9, 97, - 56, - 160, + 58, + 96, 131, 1, 82, 97, 10, - 64, + 128, 130, 1, 81, @@ -11364,8 +11825,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 56, - 192, + 58, + 128, 131, 1, 129, @@ -11373,7 +11834,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11381,8 +11842,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 56, - 224, + 58, + 160, 131, 1, 129, @@ -11390,7 +11851,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11398,8 +11859,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 0, + 58, + 192, 131, 1, 129, @@ -11407,7 +11868,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11415,8 +11876,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 32, + 58, + 224, 131, 1, 129, @@ -11424,7 +11885,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11432,8 +11893,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 64, + 59, + 0, 131, 1, 129, @@ -11441,7 +11902,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11449,8 +11910,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 96, + 59, + 32, 131, 1, 129, @@ -11458,7 +11919,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11466,8 +11927,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 128, + 59, + 64, 131, 1, 129, @@ -11475,7 +11936,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11483,8 +11944,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 160, + 59, + 96, 131, 1, 129, @@ -11492,7 +11953,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11500,8 +11961,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 192, + 59, + 128, 131, 1, 129, @@ -11509,7 +11970,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11517,8 +11978,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 224, + 59, + 160, 131, 1, 129, @@ -11526,7 +11987,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11534,8 +11995,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 0, + 59, + 192, 131, 1, 129, @@ -11543,7 +12004,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11551,8 +12012,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 32, + 59, + 224, 131, 1, 129, @@ -11560,7 +12021,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11568,8 +12029,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 64, + 60, + 0, 131, 1, 129, @@ -11577,7 +12038,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11585,8 +12046,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 96, + 60, + 32, 131, 1, 129, @@ -11594,7 +12055,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11602,8 +12063,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 128, + 60, + 64, 131, 1, 129, @@ -11611,7 +12072,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11619,8 +12080,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 160, + 60, + 96, 131, 1, 129, @@ -11628,7 +12089,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11636,8 +12097,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 192, + 60, + 128, 131, 1, 129, @@ -11645,7 +12106,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11653,8 +12114,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 224, + 60, + 160, 131, 1, 129, @@ -11662,7 +12123,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11670,8 +12131,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 0, + 60, + 192, 131, 1, 129, @@ -11679,7 +12140,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11687,14 +12148,14 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 32, + 60, + 224, 131, 1, 82, 97, 10, - 160, + 224, 130, 1, 81, @@ -11703,8 +12164,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 59, - 64, + 61, + 0, 131, 1, 129, @@ -11712,7 +12173,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -11720,8 +12181,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 96, + 61, + 32, 131, 1, 129, @@ -11729,7 +12190,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -11737,8 +12198,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 128, + 61, + 64, 131, 1, 129, @@ -11746,7 +12207,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -11754,21 +12215,21 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 160, + 61, + 96, 131, 1, 82, 128, 97, - 49, - 32, + 50, + 224, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, @@ -11777,14 +12238,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 64, + 51, + 0, 134, 1, 81, 97, 6, - 0, + 64, 135, 1, 81, @@ -11796,30 +12257,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 96, + 51, + 32, 134, 1, 81, 97, 6, - 128, + 192, 135, 1, 81, 9, 8, 97, - 59, - 192, + 61, + 128, 132, 1, 129, 144, 82, 97, - 53, - 192, + 55, + 128, 132, 1, 81, @@ -11829,8 +12290,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 59, - 224, + 61, + 160, 131, 1, 82, @@ -11838,8 +12299,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 59, - 224, + 61, + 160, 132, 1, 81, @@ -11847,21 +12308,21 @@ pub mod inclusion_verifier { 3, 9, 97, - 60, - 0, + 61, + 192, 131, 1, 82, 128, 97, - 49, - 32, + 50, + 224, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, @@ -11870,14 +12331,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 64, + 51, + 0, 134, 1, 81, 97, 6, - 32, + 96, 135, 1, 81, @@ -11889,30 +12350,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 96, + 51, + 32, 134, 1, 81, 97, 6, - 96, + 160, 135, 1, 81, 9, 8, 97, - 60, - 32, + 61, + 224, 132, 1, 129, 144, 82, 97, - 53, - 192, + 55, + 128, 132, 1, 81, @@ -11922,8 +12383,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 60, - 64, + 62, + 0, 131, 1, 129, @@ -11931,7 +12392,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11941,83 +12402,15 @@ pub mod inclusion_verifier { 3, 9, 97, - 60, - 96, + 62, + 32, 131, 1, 82, 128, 97, 10, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 60, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 96, - 131, - 1, - 81, - 97, - 60, - 0, - 132, - 1, - 81, - 8, - 97, - 60, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 60, - 160, - 132, - 1, - 81, - 9, - 97, - 60, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 60, - 128, - 132, - 1, - 81, - 9, - 97, - 60, - 224, - 131, - 1, - 82, 128, - 97, - 53, - 224, 131, 1, 81, @@ -12025,62 +12418,27 @@ pub mod inclusion_verifier { 1, 9, 97, - 61, - 0, + 62, + 64, 131, 1, 82, 128, 97, - 49, - 224, - 131, - 1, - 81, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 61, + 62, 32, 131, 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, 81, - 130, - 145, - 9, - 97, - 61, - 64, - 131, - 1, - 82, - 128, - 96, - 1, 97, 61, - 64, + 192, 132, 1, 81, - 131, - 3, - 9, + 8, 97, - 61, + 62, 96, 131, 1, @@ -12089,235 +12447,146 @@ pub mod inclusion_verifier { 96, 1, 97, - 61, - 0, + 62, + 96, 132, 1, 81, 9, 97, - 61, + 62, 128, 131, 1, 82, 128, - 97, - 49, - 224, - 131, - 1, - 81, - 97, - 10, - 0, - 132, - 1, - 81, - 9, - 97, - 61, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 61, - 224, - 131, + 96, 1, - 82, - 128, 97, - 10, + 62, 64, - 131, - 1, - 81, - 97, - 61, - 0, 132, 1, 81, 9, 97, 62, - 0, + 160, 131, 1, 82, 128, 97, - 61, - 224, + 55, + 160, 131, 1, 81, - 97, - 61, 96, - 132, 1, - 81, - 8, + 9, 97, 62, - 32, + 192, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 6, - 160, + 128, 132, 1, 81, 9, 97, 62, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 62, - 96, + 224, 131, 1, 129, 144, 82, 97, - 56, - 192, + 58, + 0, 131, 1, 81, 130, 145, - 130, - 3, 9, 97, - 62, - 128, + 63, + 0, 131, 1, 82, 128, - 97, - 56, - 192, - 131, + 96, 1, - 81, 97, - 61, + 63, 0, 132, 1, 81, + 131, + 3, 9, 97, - 62, - 160, + 63, + 32, 131, 1, 82, 128, - 97, - 62, - 128, - 131, + 96, 1, - 81, 97, 62, - 32, + 192, 132, 1, 81, - 8, + 9, 97, - 62, - 192, + 63, + 64, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, - 6, - 192, + 10, + 64, 132, 1, 81, 9, 97, - 62, - 224, + 63, + 96, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -12326,15 +12595,15 @@ pub mod inclusion_verifier { 9, 97, 63, - 0, + 128, 131, 1, 129, 144, 82, 97, - 56, - 224, + 10, + 128, 131, 1, 81, @@ -12345,54 +12614,54 @@ pub mod inclusion_verifier { 9, 97, 63, - 32, + 160, 131, 1, 82, 128, 97, - 56, - 224, + 10, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 63, - 64, + 192, 131, 1, 82, 128, 97, 63, - 32, + 160, 131, 1, 81, 97, - 62, - 192, + 63, + 32, 132, 1, 81, 8, 97, 63, - 96, + 224, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -12404,16 +12673,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 63, - 128, + 64, + 0, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -12421,16 +12690,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 63, - 160, + 64, + 32, 131, 1, 129, 144, 82, 97, - 57, - 0, + 58, + 128, 131, 1, 81, @@ -12440,55 +12709,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 63, - 192, + 64, + 64, 131, 1, 82, 128, 97, - 57, - 0, + 58, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 63, - 224, + 64, + 96, 131, 1, 82, 128, 97, - 63, - 192, + 64, + 64, 131, 1, 81, 97, 63, - 96, + 224, 132, 1, 81, 8, 97, 64, - 0, + 128, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -12501,15 +12770,15 @@ pub mod inclusion_verifier { 9, 97, 64, - 32, + 160, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -12518,15 +12787,15 @@ pub mod inclusion_verifier { 9, 97, 64, - 64, + 192, 131, 1, 129, 144, 82, 97, - 57, - 32, + 58, + 160, 131, 1, 81, @@ -12537,54 +12806,54 @@ pub mod inclusion_verifier { 9, 97, 64, - 96, + 224, 131, 1, 82, 128, 97, - 57, - 32, + 58, + 160, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 64, - 128, + 65, + 0, 131, 1, 82, 128, 97, 64, - 96, + 224, 131, 1, 81, 97, 64, - 0, + 128, 132, 1, 81, 8, 97, - 64, - 160, + 65, + 32, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -12596,16 +12865,16 @@ pub mod inclusion_verifier { 81, 9, 97, + 65, 64, - 192, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -12613,16 +12882,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 64, - 224, + 65, + 96, 131, 1, 129, 144, 82, 97, - 57, - 64, + 58, + 192, 131, 1, 81, @@ -12633,54 +12902,54 @@ pub mod inclusion_verifier { 9, 97, 65, - 0, + 128, 131, 1, 82, 128, 97, - 57, - 64, + 58, + 192, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 65, - 32, + 160, 131, 1, 82, 128, 97, 65, - 0, + 128, 131, 1, 81, 97, - 64, - 160, + 65, + 32, 132, 1, 81, 8, 97, 65, - 64, + 192, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -12693,15 +12962,15 @@ pub mod inclusion_verifier { 9, 97, 65, - 96, + 224, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -12709,16 +12978,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 65, - 128, + 66, + 0, 131, 1, 129, 144, 82, 97, - 57, - 96, + 58, + 224, 131, 1, 81, @@ -12728,55 +12997,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 65, - 160, + 66, + 32, 131, 1, 82, 128, 97, - 57, - 96, + 58, + 224, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 65, - 192, + 66, + 64, 131, 1, 82, 128, 97, - 65, - 160, + 66, + 32, 131, 1, 81, 97, 65, - 64, + 192, 132, 1, 81, 8, 97, - 65, - 224, + 66, + 96, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -12789,15 +13058,15 @@ pub mod inclusion_verifier { 9, 97, 66, - 0, + 128, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -12806,15 +13075,15 @@ pub mod inclusion_verifier { 9, 97, 66, - 32, + 160, 131, 1, 129, 144, 82, 97, - 57, - 128, + 59, + 0, 131, 1, 81, @@ -12825,54 +13094,54 @@ pub mod inclusion_verifier { 9, 97, 66, - 64, + 192, 131, 1, 82, 128, 97, - 57, - 128, + 59, + 0, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 66, - 96, + 224, 131, 1, 82, 128, 97, 66, - 64, + 192, 131, 1, 81, 97, - 65, - 224, + 66, + 96, 132, 1, 81, 8, 97, - 66, - 128, + 67, + 0, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -12884,16 +13153,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 66, - 160, + 67, + 32, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -12901,16 +13170,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 66, - 192, + 67, + 64, 131, 1, 129, 144, 82, 97, - 57, - 160, + 59, + 32, 131, 1, 81, @@ -12920,55 +13189,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 66, - 224, + 67, + 96, 131, 1, 82, 128, 97, - 57, - 160, + 59, + 32, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 67, - 0, + 128, 131, 1, 82, 128, 97, - 66, - 224, + 67, + 96, 131, 1, 81, 97, - 66, - 128, + 67, + 0, 132, 1, 81, 8, 97, 67, - 32, + 160, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -12981,15 +13250,15 @@ pub mod inclusion_verifier { 9, 97, 67, - 64, + 192, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -12998,15 +13267,15 @@ pub mod inclusion_verifier { 9, 97, 67, - 96, + 224, 131, 1, 129, 144, 82, 97, - 57, - 192, + 59, + 64, 131, 1, 81, @@ -13016,55 +13285,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 67, - 128, + 68, + 0, 131, 1, 82, 128, 97, - 57, - 192, + 59, + 64, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 67, - 160, + 68, + 32, 131, 1, 82, 128, 97, - 67, - 128, + 68, + 0, 131, 1, 81, 97, 67, - 32, + 160, 132, 1, 81, 8, 97, - 67, - 192, + 68, + 64, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -13076,16 +13345,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 67, - 224, + 68, + 96, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13094,15 +13363,15 @@ pub mod inclusion_verifier { 9, 97, 68, - 0, + 128, 131, 1, 129, 144, 82, 97, - 57, - 224, + 59, + 96, 131, 1, 81, @@ -13113,54 +13382,54 @@ pub mod inclusion_verifier { 9, 97, 68, - 32, + 160, 131, 1, 82, 128, 97, - 57, - 224, + 59, + 96, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 68, - 64, + 192, 131, 1, 82, 128, 97, 68, - 32, + 160, 131, 1, 81, 97, - 67, - 192, + 68, + 64, 132, 1, 81, 8, 97, 68, - 96, + 224, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -13172,16 +13441,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 68, - 128, + 69, + 0, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13189,16 +13458,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 68, - 160, + 69, + 32, 131, 1, 129, 144, 82, 97, - 58, - 0, + 59, + 128, 131, 1, 81, @@ -13208,76 +13477,76 @@ pub mod inclusion_verifier { 3, 9, 97, - 68, - 192, + 69, + 64, 131, 1, 82, 128, 97, - 58, - 0, + 59, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 68, - 224, + 69, + 96, 131, 1, 82, 128, 97, - 68, - 192, + 69, + 64, 131, 1, 81, 97, 68, - 96, + 224, 132, 1, 81, 8, 97, 69, - 0, + 128, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 8, - 32, + 0, 132, 1, 81, 9, 97, 69, - 32, + 160, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13286,15 +13555,15 @@ pub mod inclusion_verifier { 9, 97, 69, - 64, + 192, 131, 1, 129, 144, 82, 97, - 58, - 32, + 59, + 160, 131, 1, 81, @@ -13305,75 +13574,75 @@ pub mod inclusion_verifier { 9, 97, 69, - 96, + 224, 131, 1, 82, 128, 97, - 58, - 32, + 59, + 160, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 69, - 128, + 70, + 0, 131, 1, 82, 128, 97, 69, - 96, + 224, 131, 1, 81, 97, 69, - 0, + 128, 132, 1, 81, 8, 97, - 69, - 160, + 70, + 32, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 8, - 64, + 32, 132, 1, 81, 9, 97, - 69, - 192, + 70, + 64, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13381,16 +13650,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 69, - 224, + 70, + 96, 131, 1, 129, 144, 82, 97, - 58, - 64, + 59, + 192, 131, 1, 81, @@ -13401,54 +13670,54 @@ pub mod inclusion_verifier { 9, 97, 70, - 0, + 128, 131, 1, 82, 128, 97, - 58, - 64, + 59, + 192, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 70, - 32, + 160, 131, 1, 82, 128, 97, 70, - 0, + 128, 131, 1, 81, 97, - 69, - 160, + 70, + 32, 132, 1, 81, 8, 97, 70, - 64, + 192, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -13461,15 +13730,15 @@ pub mod inclusion_verifier { 9, 97, 70, - 96, + 224, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13477,16 +13746,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 70, - 128, + 71, + 0, 131, 1, 129, 144, 82, 97, - 58, - 96, + 59, + 224, 131, 1, 81, @@ -13496,55 +13765,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 70, - 160, + 71, + 32, 131, 1, 82, 128, 97, - 58, - 96, + 59, + 224, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 70, - 192, + 71, + 64, 131, 1, 82, 128, 97, - 70, - 160, + 71, + 32, 131, 1, 81, 97, 70, - 64, + 192, 132, 1, 81, 8, 97, - 70, - 224, + 71, + 96, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -13557,15 +13826,15 @@ pub mod inclusion_verifier { 9, 97, 71, - 0, + 128, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13574,15 +13843,15 @@ pub mod inclusion_verifier { 9, 97, 71, - 32, + 160, 131, 1, 129, 144, 82, 97, - 58, - 128, + 60, + 0, 131, 1, 81, @@ -13593,54 +13862,54 @@ pub mod inclusion_verifier { 9, 97, 71, - 64, + 192, 131, 1, 82, 128, 97, - 58, - 128, + 60, + 0, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 71, - 96, + 224, 131, 1, 82, 128, 97, 71, - 64, + 192, 131, 1, 81, 97, - 70, - 224, + 71, + 96, 132, 1, 81, 8, 97, - 71, - 128, + 72, + 0, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -13652,16 +13921,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 71, - 160, + 72, + 32, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13669,16 +13938,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 71, - 192, + 72, + 64, 131, 1, 129, 144, 82, 97, - 58, - 160, + 60, + 32, 131, 1, 81, @@ -13688,55 +13957,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 71, - 224, + 72, + 96, 131, 1, 82, 128, 97, - 58, - 160, + 60, + 32, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 72, - 0, + 128, 131, 1, 82, 128, 97, - 71, - 224, + 72, + 96, 131, 1, 81, 97, - 71, - 128, + 72, + 0, 132, 1, 81, 8, 97, 72, - 32, + 160, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, @@ -13749,15 +14018,15 @@ pub mod inclusion_verifier { 9, 97, 72, - 64, + 192, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13766,15 +14035,15 @@ pub mod inclusion_verifier { 9, 97, 72, - 96, + 224, 131, 1, 129, 144, 82, 97, - 58, - 192, + 60, + 64, 131, 1, 81, @@ -13784,156 +14053,172 @@ pub mod inclusion_verifier { 3, 9, 97, - 72, - 128, + 73, + 0, 131, 1, 82, 128, 97, - 58, - 192, + 60, + 64, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 72, - 160, + 73, + 32, 131, 1, 82, 128, 97, - 72, - 128, + 73, + 0, 131, 1, 81, 97, 72, - 32, + 160, 132, 1, 81, 8, 97, - 72, - 192, + 73, + 64, 131, 1, 82, 128, 97, - 53, - 224, + 51, + 160, 131, 1, 81, 97, - 47, - 96, + 8, + 224, 132, 1, 81, 9, 97, - 72, - 224, + 73, + 96, 131, 1, + 129, + 144, 82, - 128, 97, - 53, - 224, + 58, + 0, 131, 1, 81, + 130, + 145, + 9, 97, - 47, + 73, 128, - 132, + 131, + 1, + 129, + 144, + 82, + 97, + 60, + 96, + 131, 1, 81, + 130, + 145, + 130, + 3, 9, 97, 73, - 0, + 160, 131, 1, 82, 128, 97, - 53, - 224, + 60, + 96, 131, 1, 81, 97, - 47, - 160, + 62, + 192, 132, 1, 81, 9, 97, 73, - 32, + 192, 131, 1, 82, 128, 97, - 53, - 224, + 73, + 160, 131, 1, 81, 97, - 47, - 192, + 73, + 64, 132, 1, 81, - 9, + 8, 97, 73, - 64, + 224, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, - 47, - 224, + 9, + 0, 132, 1, 81, 9, 97, - 73, - 96, + 74, + 0, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -13941,16 +14226,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 73, - 128, + 74, + 32, 131, 1, 129, 144, 82, 97, - 58, - 224, + 60, + 128, 131, 1, 81, @@ -13960,156 +14245,156 @@ pub mod inclusion_verifier { 3, 9, 97, - 73, - 160, + 74, + 64, 131, 1, 82, 128, 97, - 58, - 224, + 60, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 73, - 192, + 74, + 96, 131, 1, 82, 128, 97, - 58, - 224, + 74, + 64, 131, 1, 81, 97, - 72, + 73, 224, 132, 1, 81, - 9, + 8, 97, - 73, - 224, + 74, + 128, 131, 1, 82, 128, 97, - 58, - 224, + 55, + 160, 131, 1, 81, 97, - 73, - 0, + 49, + 32, 132, 1, 81, 9, 97, 74, - 0, + 160, 131, 1, 82, 128, 97, - 58, - 224, + 55, + 160, 131, 1, 81, 97, - 73, - 32, + 49, + 64, 132, 1, 81, 9, 97, 74, - 32, + 192, 131, 1, 82, 128, 97, - 58, - 224, + 55, + 160, 131, 1, 81, 97, - 73, - 64, + 49, + 96, 132, 1, 81, 9, 97, 74, - 64, + 224, 131, 1, 82, 128, 97, - 73, + 55, 160, 131, 1, 81, 97, - 72, - 192, + 49, + 128, 132, 1, 81, - 8, + 9, 97, - 74, - 96, + 75, + 0, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, - 8, - 0, + 49, + 160, 132, 1, 81, 9, 97, - 74, - 128, + 75, + 32, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -14117,16 +14402,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 74, - 160, + 75, + 64, 131, 1, 129, 144, 82, 97, - 59, - 0, + 60, + 160, 131, 1, 81, @@ -14136,184 +14421,240 @@ pub mod inclusion_verifier { 3, 9, 97, - 74, - 192, + 75, + 96, 131, 1, 82, 128, 97, - 59, - 0, + 60, + 160, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 74, - 224, + 75, + 128, 131, 1, 82, 128, 97, - 74, - 192, + 60, + 160, 131, 1, 81, 97, 74, - 96, + 160, 132, 1, 81, - 8, + 9, 97, 75, - 0, + 160, 131, 1, - 129, - 144, 82, + 128, 97, - 10, + 60, 160, 131, 1, 81, - 130, - 145, + 97, + 74, + 192, + 132, + 1, + 81, 9, 97, 75, - 32, + 192, 131, 1, 82, 128, 97, - 10, + 60, 160, 131, 1, 81, 97, - 61, - 128, + 74, + 224, 132, 1, 81, 9, 97, 75, - 64, + 224, 131, 1, 82, 128, 97, - 10, + 60, 160, 131, 1, 81, 97, - 62, + 75, 0, 132, 1, 81, 9, 97, - 75, - 96, + 76, + 0, 131, 1, 82, 128, 97, - 10, - 160, + 75, + 96, 131, 1, 81, 97, - 62, - 160, + 74, + 128, 132, 1, 81, - 9, + 8, 97, - 75, - 128, + 76, + 32, 131, 1, 82, 128, 97, - 10, + 51, 160, 131, 1, 81, 97, - 63, + 8, 64, 132, 1, 81, 9, 97, - 75, - 160, + 76, + 64, + 131, + 1, + 129, + 144, + 82, + 97, + 58, + 0, + 131, + 1, + 81, + 130, + 145, + 9, + 97, + 76, + 96, + 131, + 1, + 129, + 144, + 82, + 97, + 60, + 192, + 131, + 1, + 81, + 130, + 145, + 130, + 3, + 9, + 97, + 76, + 128, 131, 1, 82, 128, 97, - 10, - 160, + 60, + 192, 131, 1, 81, 97, - 63, - 224, + 62, + 192, 132, 1, 81, 9, 97, - 75, - 192, + 76, + 160, 131, 1, 82, 128, 97, - 10, - 160, + 76, + 128, 131, 1, 81, 97, - 64, - 128, + 76, + 32, 132, 1, 81, + 8, + 97, + 76, + 192, + 131, + 1, + 129, + 144, + 82, + 97, + 10, + 224, + 131, + 1, + 81, + 130, + 145, 9, 97, - 75, + 76, 224, 131, 1, @@ -14321,19 +14662,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 65, - 32, + 63, + 64, 132, 1, 81, 9, 97, - 76, + 77, 0, 131, 1, @@ -14341,19 +14682,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 65, + 63, 192, 132, 1, 81, 9, 97, - 76, + 77, 32, 131, 1, @@ -14361,19 +14702,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 66, + 64, 96, 132, 1, 81, 9, 97, - 76, + 77, 64, 131, 1, @@ -14381,19 +14722,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 67, + 65, 0, 132, 1, 81, 9, 97, - 76, + 77, 96, 131, 1, @@ -14401,19 +14742,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 67, + 65, 160, 132, 1, 81, 9, 97, - 76, + 77, 128, 131, 1, @@ -14421,19 +14762,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 68, + 66, 64, 132, 1, 81, 9, 97, - 76, + 77, 160, 131, 1, @@ -14441,19 +14782,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 68, + 66, 224, 132, 1, 81, 9, 97, - 76, + 77, 192, 131, 1, @@ -14461,19 +14802,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 69, + 67, 128, 132, 1, 81, 9, 97, - 76, + 77, 224, 131, 1, @@ -14481,19 +14822,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 70, + 68, 32, 132, 1, 81, 9, 97, - 77, + 78, 0, 131, 1, @@ -14501,19 +14842,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 70, + 68, 192, 132, 1, 81, 9, 97, - 77, + 78, 32, 131, 1, @@ -14521,19 +14862,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 71, + 69, 96, 132, 1, 81, 9, 97, - 77, + 78, 64, 131, 1, @@ -14541,19 +14882,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 72, + 70, 0, 132, 1, 81, 9, 97, - 77, + 78, 96, 131, 1, @@ -14561,19 +14902,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 72, + 70, 160, 132, 1, 81, 9, 97, - 77, + 78, 128, 131, 1, @@ -14581,19 +14922,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 73, - 192, + 71, + 64, 132, 1, 81, 9, 97, - 77, + 78, 160, 131, 1, @@ -14601,19 +14942,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 73, + 71, 224, 132, 1, 81, 9, 97, - 77, + 78, 192, 131, 1, @@ -14621,19 +14962,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 0, + 72, + 128, 132, 1, 81, 9, 97, - 77, + 78, 224, 131, 1, @@ -14641,19 +14982,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, + 73, 32, 132, 1, 81, 9, 97, - 78, + 79, 0, 131, 1, @@ -14661,19 +15002,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 64, + 73, + 192, 132, 1, 81, 9, 97, - 78, + 79, 32, 131, 1, @@ -14681,232 +15022,167 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, 74, - 224, + 96, 132, 1, 81, 9, 97, - 78, + 79, 64, 131, 1, 82, 128, 97, - 75, - 32, + 10, + 224, 131, 1, 81, 97, - 60, - 192, + 75, + 128, 132, 1, 81, - 8, + 9, 97, - 78, + 79, 96, 131, 1, 82, 128, 97, - 54, - 32, + 10, + 224, 131, 1, 81, - 96, + 97, + 75, + 160, + 132, 1, + 81, 9, 97, - 78, + 79, 128, 131, 1, 82, 128, 97, - 50, - 0, - 131, - 1, - 81, - 97, - 8, + 10, 224, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 50, - 32, - 134, - 1, - 81, - 97, - 9, - 0, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, 131, - 97, - 50, - 64, - 134, - 1, - 81, - 97, - 9, - 32, - 135, 1, 81, - 9, - 8, - 97, - 78, - 160, - 132, - 1, - 129, - 144, - 82, 97, - 56, - 96, + 75, + 192, 132, 1, 81, - 131, - 146, - 80, - 144, 9, 97, - 78, - 192, + 79, + 160, 131, 1, 82, 128, - 96, - 1, - 97, - 78, - 192, - 132, - 1, - 81, - 131, - 3, - 9, 97, - 78, + 10, 224, 131, 1, - 82, - 128, - 96, - 1, + 81, 97, - 78, - 128, + 75, + 224, 132, 1, 81, 9, 97, 79, - 0, + 192, 131, 1, 82, 128, 97, - 59, - 64, + 10, + 224, 131, 1, 81, 97, - 78, - 224, + 76, + 0, 132, 1, 81, 9, 97, 79, - 32, + 224, 131, 1, 82, 128, 97, - 59, - 64, + 10, + 224, 131, 1, 81, 97, - 79, - 0, + 76, + 160, 132, 1, 81, 9, 97, - 79, - 64, + 80, + 0, 131, 1, 82, 128, 97, - 79, - 32, + 76, + 224, 131, 1, 81, 97, - 78, - 96, + 62, + 128, 132, 1, 81, 8, 97, - 79, - 96, + 80, + 32, 131, 1, 82, 128, 97, - 54, - 96, + 55, + 224, 131, 1, 81, @@ -14914,21 +15190,21 @@ pub mod inclusion_verifier { 1, 9, 97, - 79, - 128, + 80, + 64, 131, 1, 82, 128, 97, - 50, - 128, + 51, + 192, 131, 1, 81, 97, 9, - 64, + 32, 132, 1, 81, @@ -14937,8 +15213,27 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 224, + 134, + 1, + 81, + 97, + 9, + 64, + 135, + 1, + 81, + 9, + 8, + 144, + 80, + 129, + 129, + 131, + 97, + 52, + 0, 134, 1, 81, @@ -14951,16 +15246,16 @@ pub mod inclusion_verifier { 9, 8, 97, - 79, - 160, + 80, + 96, 132, 1, 129, 144, 82, 97, - 56, - 128, + 58, + 32, 132, 1, 81, @@ -14970,8 +15265,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 79, - 192, + 80, + 128, 131, 1, 82, @@ -14979,8 +15274,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 79, - 192, + 80, + 128, 132, 1, 81, @@ -14988,8 +15283,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 79, - 224, + 80, + 160, 131, 1, 82, @@ -14997,230 +15292,188 @@ pub mod inclusion_verifier { 96, 1, 97, - 79, - 128, + 80, + 64, 132, 1, 81, 9, 97, 80, - 0, + 192, 131, 1, 82, 128, 97, - 50, - 128, + 61, + 0, 131, 1, 81, 97, - 9, - 128, + 80, + 160, 132, 1, 81, 9, - 129, - 129, + 97, + 80, + 224, 131, + 1, + 82, + 128, 97, - 50, - 160, - 134, + 61, + 0, + 131, 1, 81, 97, - 9, - 160, - 135, + 80, + 192, + 132, 1, 81, 9, - 8, 97, - 80, - 32, - 132, + 81, + 0, + 131, 1, - 129, - 144, 82, - 97, - 56, 128, - 132, + 97, + 80, + 224, + 131, 1, 81, - 131, - 146, - 80, - 144, - 9, 97, 80, - 64, + 32, + 132, + 1, + 81, + 8, + 97, + 81, + 32, 131, 1, - 129, - 144, 82, + 128, 97, - 10, - 64, + 56, + 32, 131, 1, 81, - 130, - 145, - 130, - 3, + 96, + 1, 9, 97, - 80, - 96, + 81, + 64, 131, 1, 82, 128, 97, - 10, + 52, 64, 131, 1, 81, 97, - 79, + 9, 128, 132, 1, 81, 9, - 97, - 80, - 128, + 129, + 129, 131, - 1, - 82, - 128, 97, - 80, + 52, 96, - 131, + 134, 1, 81, 97, - 79, - 224, - 132, + 9, + 160, + 135, 1, 81, + 9, 8, 97, - 80, - 160, - 131, + 81, + 96, + 132, 1, 129, 144, 82, 97, - 59, - 96, - 131, + 58, + 64, + 132, 1, 81, - 130, - 145, - 9, - 97, - 80, - 192, - 131, - 1, - 82, - 128, - 97, - 59, - 96, 131, - 1, - 81, - 97, + 146, 80, - 0, - 132, - 1, - 81, + 144, 9, 97, - 80, - 224, + 81, + 128, 131, 1, 82, 128, - 97, - 59, 96, - 131, 1, - 81, 97, - 80, + 81, 128, 132, 1, 81, + 131, + 3, 9, 97, 81, - 0, + 160, 131, 1, 82, 128, - 97, - 80, - 192, - 131, - 1, - 81, - 97, - 79, 96, - 132, 1, - 81, - 8, 97, 81, - 32, - 131, - 1, - 82, - 128, - 97, - 54, - 160, - 131, + 64, + 132, 1, 81, - 96, - 1, 9, 97, 81, - 64, + 192, 131, 1, 82, 128, 97, - 50, - 192, + 52, + 64, 131, 1, 81, @@ -15235,8 +15488,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 224, + 52, + 96, 134, 1, 81, @@ -15250,15 +15503,15 @@ pub mod inclusion_verifier { 8, 97, 81, - 96, + 224, 132, 1, 129, 144, 82, 97, - 56, - 160, + 58, + 64, 132, 1, 81, @@ -15268,32 +15521,37 @@ pub mod inclusion_verifier { 144, 9, 97, - 81, - 128, + 82, + 0, 131, 1, + 129, + 144, 82, - 128, - 96, - 1, 97, - 81, + 10, 128, - 132, + 131, 1, 81, - 131, + 130, + 145, + 130, 3, 9, 97, - 81, - 160, + 82, + 32, 131, 1, 82, 128, - 96, + 97, + 10, + 128, + 131, 1, + 81, 97, 81, 64, @@ -15302,15 +15560,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 81, - 192, + 82, + 64, 131, 1, 82, 128, 97, - 59, - 128, + 82, + 32, 131, 1, 81, @@ -15320,17 +15578,34 @@ pub mod inclusion_verifier { 132, 1, 81, - 9, + 8, + 97, + 82, + 96, + 131, + 1, + 129, + 144, + 82, 97, + 61, + 32, + 131, + 1, 81, - 224, + 130, + 145, + 9, + 97, + 82, + 128, 131, 1, 82, 128, 97, - 59, - 128, + 61, + 32, 131, 1, 81, @@ -15343,50 +15618,54 @@ pub mod inclusion_verifier { 9, 97, 82, - 0, + 160, 131, 1, 82, 128, 97, - 81, - 224, + 61, + 32, 131, 1, 81, 97, - 81, - 32, + 82, + 64, 132, 1, 81, - 8, + 9, 97, 82, - 32, + 192, 131, 1, 82, 128, 97, - 49, - 192, + 82, + 128, 131, 1, 81, - 96, + 97, + 81, + 32, + 132, 1, - 9, + 81, + 8, 97, 82, - 64, + 224, 131, 1, 82, 128, 97, - 11, - 64, + 56, + 96, 131, 1, 81, @@ -15394,313 +15673,232 @@ pub mod inclusion_verifier { 1, 9, 97, - 82, - 96, + 83, + 0, 131, 1, 82, - 96, - 1, + 128, 97, - 82, + 52, 128, 131, 1, - 129, - 129, - 82, - 96, - 2, - 97, - 82, - 160, - 133, - 1, - 82, - 97, - 82, - 32, - 132, - 1, 81, 97, - 82, - 192, - 133, - 1, - 82, + 10, + 0, 132, - 145, - 144, - 96, - 64, - 144, - 96, - 96, - 129, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 82, - 128, - 130, 1, 81, - 97, - 82, - 224, + 9, + 129, + 129, 131, - 1, - 82, 97, - 82, + 52, 160, - 130, + 134, 1, 81, 97, - 83, - 0, - 131, - 1, - 82, - 96, - 96, - 130, + 10, + 32, + 135, 1, 81, + 9, + 8, 97, 83, 32, - 131, + 132, 1, + 129, + 144, 82, + 97, + 58, 96, - 128, - 130, + 132, 1, 81, + 131, + 146, + 80, + 144, + 9, 97, 83, 64, 131, 1, 82, - 130, - 96, - 1, + 128, 96, - 64, - 97, - 82, - 224, - 133, 1, - 96, - 128, 97, - 82, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 96, - 160, - 130, + 83, + 64, + 132, 1, 81, + 131, + 3, + 9, 97, 83, 96, 131, 1, 82, + 128, 96, - 192, - 130, + 1, + 97, + 83, + 0, + 132, 1, 81, + 9, 97, 83, 128, 131, 1, 82, + 128, 97, - 60, - 224, - 130, + 61, + 64, + 131, 1, 81, 97, 83, - 160, - 131, - 1, - 82, - 130, 96, + 132, 1, - 96, - 64, + 81, + 9, 97, 83, - 96, - 133, + 160, + 131, 1, - 96, - 96, + 82, + 128, 97, - 83, - 96, - 135, + 61, + 64, + 131, 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 81, 97, - 82, - 224, - 130, + 83, + 128, + 132, 1, 81, + 9, 97, 83, 192, 131, 1, 82, + 128, 97, 83, - 0, - 130, + 160, + 131, + 1, + 81, + 97, + 82, + 224, + 132, 1, 81, + 8, 97, 83, 224, 131, 1, 82, + 128, 97, - 83, - 96, - 130, + 51, + 128, + 131, 1, 81, + 96, + 1, + 9, 97, 84, 0, 131, 1, 82, + 128, 97, - 83, + 11, 128, - 130, + 131, 1, 81, + 96, + 1, + 9, 97, 84, 32, 131, 1, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 83, - 192, - 133, - 1, - 96, - 128, - 97, - 83, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, 96, - 224, - 130, 1, - 81, 97, 84, 64, 131, 1, + 129, + 129, 82, - 97, - 1, - 0, - 130, - 1, - 81, + 96, + 2, 97, 84, 96, - 131, + 133, 1, 82, 97, - 75, - 64, - 130, + 83, + 224, + 132, 1, 81, 97, 84, 128, - 131, + 133, 1, 82, - 130, - 96, - 1, + 132, + 145, + 144, 96, 64, - 97, - 84, - 64, - 133, - 1, + 144, 96, 96, - 97, - 84, - 64, - 135, - 1, + 129, 96, 7, 90, @@ -15710,8 +15908,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 83, - 192, + 84, + 64, 130, 1, 81, @@ -15722,8 +15920,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 83, - 224, + 84, + 96, 130, 1, 81, @@ -15733,9 +15931,8 @@ pub mod inclusion_verifier { 131, 1, 82, - 97, - 84, - 64, + 96, + 160, 130, 1, 81, @@ -15745,9 +15942,8 @@ pub mod inclusion_verifier { 131, 1, 82, - 97, - 84, 96, + 192, 130, 1, 81, @@ -15782,9 +15978,8 @@ pub mod inclusion_verifier { 22, 146, 80, - 97, - 1, - 192, + 96, + 224, 130, 1, 81, @@ -15796,7 +15991,7 @@ pub mod inclusion_verifier { 82, 97, 1, - 224, + 0, 130, 1, 81, @@ -15807,8 +16002,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 96, + 62, + 160, 130, 1, 81, @@ -15916,78 +16111,24 @@ pub mod inclusion_verifier { 22, 146, 80, - 127, - 41, - 30, - 77, - 180, - 60, - 38, - 7, - 38, - 185, - 28, - 83, - 89, - 23, - 168, + 97, 1, - 189, - 224, - 107, - 231, - 247, - 207, - 69, + 32, + 130, 1, - 9, - 9, - 118, - 35, - 19, - 219, - 66, - 82, - 144, + 81, 97, 86, 0, 131, 1, 82, - 127, - 21, - 78, - 127, - 225, - 88, - 71, - 172, - 77, - 28, - 217, - 63, - 166, - 200, - 32, - 150, - 114, - 207, - 204, - 244, - 90, - 216, - 225, - 58, - 184, - 47, - 198, - 177, - 103, - 186, - 25, - 148, - 252, + 97, + 1, + 64, + 130, + 1, + 81, 97, 86, 32, @@ -15995,8 +16136,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 128, + 77, + 0, 130, 1, 81, @@ -16094,87 +16235,33 @@ pub mod inclusion_verifier { 97, 86, 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 23, - 107, - 16, - 212, - 2, - 250, - 192, - 91, - 252, - 152, - 34, - 52, - 245, - 11, - 48, - 90, - 208, - 103, - 225, - 34, - 241, - 104, - 42, - 75, - 156, - 75, - 217, - 139, - 218, - 145, - 145, - 157, + 135, + 1, + 96, + 6, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 2, + 0, + 130, + 1, + 81, 97, 86, 224, 131, 1, 82, - 127, - 29, - 98, - 231, - 141, - 101, - 94, - 63, - 199, - 65, - 136, - 102, - 103, - 56, - 252, - 166, - 82, - 74, - 113, - 47, - 26, - 60, - 76, - 207, - 221, - 15, - 164, - 79, - 62, - 44, - 132, - 156, + 97, + 2, + 32, + 130, + 1, 81, 97, 87, @@ -16183,8 +16270,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 160, + 77, + 32, 130, 1, 81, @@ -16293,38 +16380,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 1, - 157, - 215, - 238, + 41, + 155, + 18, + 230, 83, + 153, + 220, + 234, + 63, + 30, + 12, + 224, + 70, + 207, + 95, + 147, + 206, + 123, + 169, + 247, + 121, + 191, + 163, + 158, + 127, + 12, + 109, + 76, 25, + 98, + 138, 144, - 211, - 53, - 170, - 216, - 246, - 76, - 38, - 161, - 188, - 7, - 43, - 71, - 167, - 239, - 212, - 80, - 68, - 4, - 210, - 233, - 94, - 32, - 37, - 7, - 89, 97, 87, 192, @@ -16332,38 +16419,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 12, - 65, + 33, + 197, + 119, + 18, + 42, 61, - 216, - 229, + 31, + 77, 1, - 137, - 160, - 90, - 55, - 70, - 121, - 186, + 155, + 147, 231, - 47, - 114, - 79, - 123, - 113, - 233, - 86, - 195, - 44, - 8, + 36, + 217, 129, - 234, - 55, - 105, - 66, - 118, - 234, - 131, + 176, + 101, + 62, + 217, + 79, + 73, + 46, + 175, + 236, + 80, + 148, + 82, + 49, + 147, + 95, + 154, + 149, 97, 87, 224, @@ -16371,8 +16458,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 192, + 77, + 64, 130, 1, 81, @@ -16481,38 +16568,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 7, - 48, + 25, + 217, + 34, + 1, + 65, + 190, + 242, + 89, + 33, + 212, + 116, + 198, + 230, + 52, + 208, + 109, + 251, + 125, 121, - 157, - 91, - 254, - 193, - 206, - 252, - 90, - 175, - 252, - 255, - 227, - 243, - 221, - 73, - 27, - 43, - 252, - 175, - 159, - 85, - 63, - 148, - 222, - 97, - 69, - 237, - 71, - 66, - 175, + 4, + 229, + 154, + 78, + 196, + 134, + 161, + 72, + 176, + 11, + 253, + 56, + 163, 97, 88, 160, @@ -16520,38 +16607,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 36, - 173, - 74, - 240, - 130, - 233, - 107, - 20, - 185, - 166, - 218, - 128, - 244, - 250, - 19, - 52, - 242, + 47, + 56, + 81, + 30, 83, - 196, - 88, - 173, - 213, - 49, + 104, + 128, + 86, + 182, + 147, 200, - 217, - 248, - 178, + 78, + 246, + 154, + 122, + 226, + 185, + 171, + 72, + 41, + 6, + 220, + 70, + 174, + 157, + 149, + 34, + 253, 60, - 94, - 203, - 156, - 67, + 224, + 152, + 182, 97, 88, 192, @@ -16559,8 +16646,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 224, + 77, + 96, 130, 1, 81, @@ -16669,38 +16756,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 34, - 225, - 205, - 191, - 255, - 207, - 207, - 79, - 24, - 207, - 67, - 66, - 237, - 241, - 251, - 38, - 195, - 182, - 229, - 42, + 23, + 231, + 203, + 106, + 48, + 196, 206, + 154, 61, - 95, - 173, - 207, - 92, - 194, - 97, - 67, - 51, - 186, - 164, + 141, + 230, + 4, + 219, + 175, + 81, + 123, + 31, + 35, + 228, + 64, + 172, + 185, + 231, + 52, + 89, + 56, + 255, + 91, + 36, + 90, + 64, + 62, 97, 89, 128, @@ -16708,38 +16795,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 14, - 40, - 223, - 114, - 220, - 198, - 156, - 198, - 68, + 28, + 49, + 164, 45, - 114, + 125, + 163, + 96, + 204, + 232, + 38, + 46, + 33, + 251, + 154, + 94, + 242, + 106, + 35, + 235, + 188, 246, - 147, - 102, - 25, - 151, - 72, - 10, - 145, - 58, - 195, - 83, - 137, - 14, - 253, - 99, - 168, - 115, - 149, - 151, - 39, - 192, + 153, + 92, + 202, + 184, + 154, + 238, + 64, + 12, + 46, + 153, + 75, 97, 89, 160, @@ -16747,8 +16834,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 0, + 77, + 128, 130, 1, 81, @@ -16857,38 +16944,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 11, - 48, - 254, + 5, + 89, + 28, + 127, + 170, + 44, + 158, + 175, + 28, 149, - 129, - 166, - 199, - 0, - 100, - 227, - 179, - 84, - 70, - 178, - 67, - 56, - 66, - 219, - 118, - 232, - 250, - 213, - 71, - 251, - 177, - 238, - 105, - 145, - 100, 115, - 247, + 168, + 75, + 221, + 236, + 48, + 50, + 25, + 171, + 244, + 150, + 175, + 8, + 153, 237, + 67, + 136, + 83, + 34, + 125, + 208, + 86, 97, 90, 96, @@ -16896,38 +16983,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 40, - 110, - 15, - 135, - 214, - 25, - 227, - 254, - 218, - 200, - 163, - 215, - 68, - 46, - 243, - 79, - 182, - 86, - 108, - 233, - 175, - 90, - 49, - 87, - 88, - 192, - 194, - 184, - 0, - 12, + 44, + 250, + 36, + 253, + 229, + 118, + 117, + 11, + 64, 54, - 207, + 223, + 254, + 64, + 16, + 94, + 107, + 114, + 68, + 246, + 56, + 67, + 236, + 116, + 217, + 208, + 170, + 212, + 139, + 164, + 19, + 40, + 124, 97, 90, 128, @@ -16935,8 +17022,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 32, + 77, + 160, 130, 1, 81, @@ -17045,38 +17132,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 20, - 230, - 106, - 119, - 30, - 240, - 140, - 202, - 5, - 81, - 194, - 107, - 52, - 57, - 212, - 157, - 57, - 27, - 162, - 29, - 145, - 183, - 6, - 223, - 44, - 75, - 31, - 23, - 125, - 119, - 89, + 34, + 225, + 205, + 191, + 255, + 207, + 207, + 79, + 24, + 207, + 67, + 66, + 237, + 241, + 251, + 38, + 195, + 182, 229, + 42, + 206, + 61, + 95, + 173, + 207, + 92, + 194, + 97, + 67, + 51, + 186, + 164, 97, 91, 64, @@ -17084,38 +17171,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 5, - 50, + 14, + 40, + 223, 114, - 58, - 38, 220, - 146, - 143, - 67, - 3, - 62, - 250, - 239, - 142, - 74, - 162, + 198, + 156, + 198, + 68, + 45, + 114, + 246, + 147, + 102, + 25, + 151, + 72, + 10, + 145, + 58, + 195, + 83, + 137, + 14, + 253, + 99, + 168, 115, + 149, + 151, 39, - 114, - 186, - 65, - 75, - 29, - 173, - 206, - 31, - 231, - 208, - 179, - 13, - 153, - 210, + 192, 97, 91, 96, @@ -17123,8 +17210,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 64, + 77, + 192, 130, 1, 81, @@ -17233,38 +17320,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 4, - 116, + 25, + 32, + 107, + 235, + 197, + 204, + 74, + 91, + 105, + 44, + 88, + 188, + 97, + 231, 174, - 28, - 66, - 48, - 189, - 205, - 210, - 92, - 228, - 96, - 239, - 115, 198, - 137, - 228, - 34, - 126, - 223, + 211, + 251, + 184, + 52, + 78, + 57, + 161, + 51, + 105, + 159, + 116, + 230, + 244, 14, - 199, 194, - 190, - 133, - 239, - 141, - 117, - 89, - 46, - 27, - 54, + 168, 97, 92, 32, @@ -17272,38 +17359,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 47, - 216, - 62, - 110, - 7, - 204, - 53, - 117, - 90, - 4, + 6, + 120, + 199, + 189, + 209, + 65, + 189, + 38, + 203, + 233, 51, - 127, - 215, - 10, - 248, - 170, - 49, - 252, - 116, - 222, - 7, - 165, - 57, - 184, - 168, - 117, - 108, - 170, - 96, - 208, - 72, - 144, + 111, + 93, + 207, + 28, + 90, + 140, + 242, + 26, + 89, + 39, + 175, + 209, + 178, + 243, + 147, + 21, + 46, + 224, + 42, + 106, + 120, 97, 92, 64, @@ -17311,8 +17398,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 96, + 77, + 224, 130, 1, 81, @@ -17422,37 +17509,37 @@ pub mod inclusion_verifier { 80, 127, 28, - 111, - 147, - 174, - 247, - 149, - 245, - 37, + 110, + 35, + 67, + 51, + 55, + 131, + 180, + 244, + 138, + 231, + 210, + 104, + 26, + 251, + 60, + 223, + 106, + 77, + 251, 200, - 181, - 27, - 203, - 2, - 52, - 187, - 52, - 89, - 66, - 204, - 49, - 120, - 43, - 247, + 58, 80, - 150, - 255, - 242, - 112, - 127, - 62, - 75, - 159, + 12, + 176, + 109, + 179, + 38, + 90, + 211, + 229, + 213, 97, 93, 0, @@ -17460,38 +17547,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 27, - 248, - 75, - 118, - 24, - 113, - 163, - 49, - 27, - 9, + 26, + 61, + 131, 109, - 135, - 5, - 52, - 176, + 67, + 37, + 255, + 48, + 20, + 76, + 30, + 32, + 56, 164, - 176, - 149, - 51, - 12, 212, + 2, 95, - 190, - 123, - 187, - 245, - 179, - 83, - 169, - 128, - 195, - 157, + 208, + 240, + 26, + 242, + 76, + 253, + 141, + 253, + 84, + 1, + 142, + 100, + 243, + 176, + 152, 97, 93, 32, @@ -17499,8 +17586,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 128, + 78, + 0, 130, 1, 81, @@ -17609,38 +17696,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 7, - 96, - 155, - 167, - 145, - 240, - 237, - 93, - 86, - 144, - 145, - 4, - 28, - 128, - 9, - 116, - 184, - 68, - 11, + 32, + 59, + 33, + 166, + 72, + 251, + 251, + 150, + 69, + 150, + 64, + 187, 197, - 192, - 249, - 125, + 180, + 24, + 82, + 221, + 30, + 252, + 18, + 9, + 200, 155, - 98, - 149, - 161, 99, - 33, - 117, - 17, - 108, + 91, + 166, + 56, + 220, + 185, + 41, + 218, + 107, 97, 93, 224, @@ -17648,38 +17735,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 28, - 219, 4, - 18, - 243, - 142, - 26, - 25, - 83, + 231, + 0, + 47, + 6, + 242, + 9, 26, - 251, - 209, - 201, - 96, + 68, + 175, + 205, 49, + 30, + 147, + 194, + 47, 70, - 231, - 189, - 28, - 52, - 169, - 61, - 246, - 190, - 76, + 221, + 159, + 50, + 7, + 181, + 188, + 195, + 79, + 12, + 167, 101, - 177, - 38, - 227, - 83, - 123, - 104, + 32, + 152, + 240, + 151, 97, 94, 0, @@ -17687,8 +17774,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 160, + 78, + 32, 130, 1, 81, @@ -17797,38 +17884,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 14, - 149, - 91, - 137, - 236, - 165, - 252, - 52, - 210, - 23, 32, - 34, - 248, - 157, - 196, - 103, - 172, + 171, + 116, + 144, + 180, + 47, + 63, + 123, + 43, + 11, + 190, + 96, + 26, + 9, + 215, 46, - 132, - 201, + 233, + 63, 146, - 158, - 28, - 224, - 194, - 168, - 206, - 131, - 28, - 93, - 215, + 72, 1, + 213, + 151, + 244, + 140, + 242, + 212, + 67, + 117, + 29, + 95, + 145, 97, 94, 192, @@ -17836,38 +17923,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 7, - 207, - 146, - 154, - 220, - 230, - 20, - 176, - 136, - 200, + 43, + 202, + 47, + 23, + 98, + 148, + 106, + 5, + 251, + 22, + 50, + 85, + 12, + 108, + 177, 44, - 179, - 147, - 79, - 30, - 183, - 84, - 109, - 210, - 228, - 131, - 150, - 233, - 20, - 180, - 255, - 6, - 236, - 69, - 222, - 158, - 138, + 2, + 209, + 141, + 155, + 238, + 91, + 221, + 66, + 18, + 202, + 115, + 66, + 136, + 135, + 32, + 253, 97, 94, 224, @@ -17875,8 +17962,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 192, + 78, + 64, 130, 1, 81, @@ -17985,38 +18072,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 45, + 9, + 227, + 48, + 50, 69, - 49, - 164, - 117, - 40, - 230, - 66, - 248, - 246, - 149, - 74, - 63, - 63, - 249, - 246, - 7, - 46, - 56, - 211, - 14, - 46, - 13, - 16, - 141, - 28, - 172, - 32, - 29, - 75, - 104, - 77, + 227, + 176, + 10, + 202, + 137, + 78, + 159, + 186, + 61, + 81, + 132, + 255, + 55, + 57, + 198, + 100, + 227, + 99, + 242, + 5, + 212, + 47, + 238, + 227, + 39, + 182, + 170, 97, 95, 160, @@ -18024,38 +18111,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 21, - 76, - 64, - 155, + 19, + 206, + 146, + 40, + 60, + 198, + 246, + 72, 189, - 23, + 218, + 134, + 24, + 45, + 145, + 133, + 42, + 171, + 92, 96, - 236, + 136, + 171, + 0, + 141, + 156, + 219, 85, - 99, - 157, - 50, - 213, - 129, - 124, - 147, - 153, - 229, - 115, - 178, - 42, - 143, - 221, - 165, - 247, - 7, - 201, - 185, - 222, - 29, - 76, - 166, + 34, + 252, + 191, + 92, + 98, + 137, 97, 95, 192, @@ -18063,8 +18150,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 224, + 78, + 96, 130, 1, 81, @@ -18173,38 +18260,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 36, - 2, + 8, + 165, + 3, + 231, + 161, + 102, + 132, + 168, + 25, + 145, 219, + 252, + 94, + 200, + 76, + 159, 75, - 28, - 119, - 70, - 220, - 217, - 254, - 126, - 171, - 130, - 171, - 63, - 167, - 235, - 177, - 189, - 53, - 42, - 154, - 249, - 78, - 246, - 129, - 27, - 42, - 249, - 171, - 111, - 142, + 15, + 122, + 80, + 109, + 223, + 38, + 182, + 125, + 48, + 94, + 191, + 192, + 248, + 23, + 67, 97, 96, 128, @@ -18212,38 +18299,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 42, - 0, - 71, - 236, 8, 162, - 84, - 117, - 60, - 70, - 102, - 72, - 240, - 220, - 110, - 7, - 126, - 136, - 229, - 73, - 88, - 41, - 195, - 168, - 69, - 135, - 59, - 144, - 88, - 191, - 68, - 7, + 216, + 225, + 118, + 15, + 251, + 22, + 247, + 1, + 71, + 248, + 180, + 78, + 120, + 28, + 237, + 101, + 161, + 230, + 119, + 167, + 134, + 205, + 216, + 188, + 159, + 148, + 123, + 54, + 19, + 28, 97, 96, 160, @@ -18251,8 +18338,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 0, + 78, + 128, 130, 1, 81, @@ -18361,38 +18448,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 4, - 118, - 199, - 241, - 84, - 247, - 3, - 103, - 42, + 37, + 99, + 43, + 200, + 1, + 44, + 108, + 188, + 109, 221, - 116, - 255, - 235, - 198, - 255, 166, - 21, - 155, - 78, - 82, - 127, - 10, - 67, + 97, + 169, + 114, + 159, 84, - 182, + 76, + 84, + 98, + 7, + 0, + 195, + 132, + 12, 1, - 250, - 205, + 202, + 91, 87, - 255, - 26, + 230, 26, + 31, + 254, 97, 97, 96, @@ -18400,38 +18487,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 39, - 193, - 2, - 144, - 247, - 48, - 237, - 173, - 155, - 203, - 37, - 56, - 5, - 111, - 117, - 94, - 254, - 169, - 36, - 176, - 166, - 157, - 134, - 213, - 201, - 200, - 51, - 113, - 126, - 115, - 14, + 43, + 165, + 118, + 76, + 102, + 58, + 75, 40, + 146, + 52, + 60, + 48, + 61, + 160, + 245, + 102, + 78, + 63, + 98, + 13, + 214, + 184, + 81, + 167, + 17, + 120, + 23, + 4, + 41, + 47, + 209, + 26, 97, 97, 128, @@ -18439,8 +18526,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 32, + 78, + 160, 130, 1, 81, @@ -18550,37 +18637,37 @@ pub mod inclusion_verifier { 80, 127, 7, - 67, - 234, - 64, - 241, - 64, - 132, - 219, - 38, - 115, - 33, - 114, - 131, - 170, - 5, - 63, - 152, - 104, + 207, + 228, + 243, + 21, + 43, + 25, 150, - 238, - 124, - 24, - 31, - 82, - 17, + 232, + 234, + 253, + 113, 132, - 66, - 233, - 156, - 69, - 41, - 116, + 81, + 53, + 108, + 32, + 68, + 228, + 194, + 57, + 252, + 194, + 158, + 179, + 168, + 29, + 57, + 46, + 27, + 68, + 173, 97, 98, 64, @@ -18588,38 +18675,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 2, - 3, - 227, - 73, - 58, 37, + 86, + 115, + 226, + 36, + 165, 148, - 236, 229, - 125, - 34, - 204, - 117, - 221, - 8, + 63, + 213, + 177, + 180, + 220, + 212, + 99, + 41, + 231, + 42, + 4, + 225, + 96, + 86, + 222, + 163, + 213, + 161, + 126, + 49, + 41, 26, - 198, - 130, - 113, - 236, - 124, - 117, - 129, - 83, - 207, - 210, - 21, - 43, - 251, - 92, - 25, - 227, + 153, + 96, 97, 98, 96, @@ -18627,8 +18714,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 64, + 78, + 192, 130, 1, 81, @@ -18737,76 +18824,77 @@ pub mod inclusion_verifier { 146, 80, 127, - 30, - 135, - 235, - 136, - 87, - 119, - 149, - 201, - 242, - 140, - 66, + 19, + 108, + 177, + 75, + 53, + 31, 59, - 77, - 44, - 62, - 193, - 232, + 67, + 181, + 230, + 24, + 197, + 196, 144, - 22, - 68, - 102, - 234, - 151, + 34, + 88, + 142, + 221, + 72, + 85, + 15, + 78, + 125, + 105, + 48, + 148, 66, - 217, - 153, - 106, - 229, - 195, + 232, 184, - 10, - 42, + 61, + 13, + 34, 97, 99, 32, 131, 1, 82, - 126, - 176, - 4, - 129, - 75, - 36, - 199, - 199, - 169, - 220, - 86, - 255, - 160, - 61, - 79, - 43, - 126, - 15, - 86, - 5, - 243, + 127, + 14, + 233, 187, - 24, - 222, - 221, - 249, - 230, - 57, - 120, - 171, + 223, + 206, + 147, + 129, + 94, + 121, + 170, + 191, + 197, + 236, + 146, + 165, + 35, + 70, + 196, + 106, + 69, + 225, + 123, + 197, 188, - 86, + 154, + 216, + 21, + 94, + 152, + 44, + 156, + 172, 97, 99, 64, @@ -18814,8 +18902,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 96, + 78, + 224, 130, 1, 81, @@ -18924,38 +19012,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 41, - 3, - 167, - 99, - 193, - 198, - 183, - 134, - 103, - 249, - 6, - 182, - 254, - 43, - 74, - 209, - 151, - 181, - 85, - 135, - 201, - 14, - 20, - 232, - 80, - 36, - 70, - 218, - 140, + 7, + 67, + 234, + 64, + 241, + 64, + 132, + 219, + 38, + 115, + 33, + 114, + 131, + 170, + 5, + 63, + 152, + 104, + 150, + 238, + 124, + 24, + 31, + 82, + 17, + 132, + 66, + 233, + 156, 69, - 239, - 125, + 41, + 116, 97, 100, 0, @@ -18963,38 +19051,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 19, - 234, - 87, - 152, - 111, - 146, - 149, - 233, - 45, - 239, - 51, + 2, 3, - 174, - 245, - 63, - 43, - 79, - 98, - 91, - 169, - 133, - 83, - 18, - 1, - 171, + 227, + 73, + 58, + 37, + 148, + 236, + 229, + 125, + 34, + 204, + 117, + 221, + 8, + 26, + 198, + 130, + 113, + 236, + 124, + 117, + 129, 83, - 220, - 115, - 7, - 244, - 107, - 105, + 207, + 210, + 21, + 43, + 251, + 92, + 25, + 227, 97, 100, 32, @@ -19002,8 +19090,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 128, + 79, + 0, 130, 1, 81, @@ -19111,24 +19199,78 @@ pub mod inclusion_verifier { 22, 146, 80, - 97, - 4, - 32, - 130, - 1, - 81, + 127, + 31, + 93, + 105, + 248, + 173, + 199, + 222, + 243, + 83, + 202, + 197, + 48, + 19, + 49, + 246, + 106, + 106, + 161, + 44, + 59, + 220, + 70, + 186, + 133, + 9, + 216, + 28, + 25, + 34, + 148, + 76, + 30, 97, 100, 224, 131, 1, 82, - 97, - 4, - 64, - 130, + 127, + 5, + 10, + 53, + 140, + 142, + 231, + 73, 1, - 81, + 175, + 214, + 190, + 189, + 218, + 53, + 162, + 91, + 233, + 155, + 166, + 49, + 35, + 42, + 190, + 192, + 187, + 125, + 242, + 52, + 40, + 226, + 25, + 235, 97, 101, 0, @@ -19136,8 +19278,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 160, + 79, + 32, 130, 1, 81, @@ -19245,24 +19387,78 @@ pub mod inclusion_verifier { 22, 146, 80, - 97, - 4, - 96, - 130, - 1, - 81, + 127, + 29, + 219, + 249, + 28, + 238, + 237, + 136, + 168, + 198, + 110, + 155, + 248, + 208, + 137, + 179, + 9, + 141, + 192, + 131, + 241, + 87, + 144, + 135, + 7, + 150, + 167, + 38, + 127, + 37, + 207, + 155, + 240, 97, 101, 192, 131, 1, 82, - 97, - 4, - 128, - 130, - 1, - 81, + 127, + 10, + 180, + 232, + 11, + 0, + 145, + 205, + 64, + 7, + 2, + 148, + 247, + 84, + 229, + 75, + 18, + 126, + 32, + 0, + 87, + 44, + 3, + 68, + 194, + 131, + 138, + 238, + 175, + 37, + 30, + 179, + 145, 97, 101, 224, @@ -19270,8 +19466,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 192, + 79, + 64, 130, 1, 81, @@ -19381,7 +19577,7 @@ pub mod inclusion_verifier { 80, 97, 4, - 160, + 96, 130, 1, 81, @@ -19393,7 +19589,7 @@ pub mod inclusion_verifier { 82, 97, 4, - 192, + 128, 130, 1, 81, @@ -19404,8 +19600,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 224, + 79, + 96, 130, 1, 81, @@ -19515,7 +19711,7 @@ pub mod inclusion_verifier { 80, 97, 4, - 224, + 160, 130, 1, 81, @@ -19526,8 +19722,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 5, - 0, + 4, + 192, 130, 1, 81, @@ -19538,8 +19734,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 78, - 0, + 79, + 128, 130, 1, 81, @@ -19648,8 +19844,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 5, - 32, + 4, + 224, 130, 1, 81, @@ -19661,7 +19857,7 @@ pub mod inclusion_verifier { 82, 97, 5, - 64, + 0, 130, 1, 81, @@ -19672,8 +19868,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 78, - 32, + 79, + 160, 130, 1, 81, @@ -19782,8 +19978,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 3, - 128, + 5, + 32, 130, 1, 81, @@ -19794,8 +19990,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 3, - 160, + 5, + 64, 130, 1, 81, @@ -19806,8 +20002,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 78, - 64, + 79, + 192, 130, 1, 81, @@ -19916,8 +20112,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 2, - 192, + 5, + 96, 130, 1, 81, @@ -19928,8 +20124,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 2, - 224, + 5, + 128, 130, 1, 81, @@ -19941,7 +20137,7 @@ pub mod inclusion_verifier { 82, 97, 79, - 64, + 224, 130, 1, 81, @@ -20051,37 +20247,305 @@ pub mod inclusion_verifier { 80, 97, 3, + 192, + 130, + 1, + 81, + 97, + 107, + 0, + 131, + 1, + 82, + 97, + 3, + 224, + 130, + 1, + 81, + 97, + 107, + 32, + 131, + 1, + 82, + 97, + 80, + 0, + 130, + 1, + 81, + 97, + 107, + 64, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 107, + 0, + 133, + 1, + 96, + 96, + 97, + 107, + 0, + 135, + 1, + 96, + 7, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 106, + 128, + 130, + 1, + 81, + 97, + 107, + 96, + 131, + 1, + 82, + 97, + 106, + 160, + 130, + 1, + 81, + 97, + 107, + 128, + 131, + 1, + 82, + 97, + 107, + 0, + 130, + 1, + 81, + 97, + 107, + 160, + 131, + 1, + 82, + 97, + 107, + 32, + 130, + 1, + 81, + 97, + 107, + 192, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 107, + 96, + 133, + 1, + 96, + 128, + 97, + 107, + 96, + 135, + 1, + 96, + 6, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 3, 0, 130, 1, 81, 97, 107, + 224, + 131, + 1, + 82, + 97, + 3, + 32, + 130, + 1, + 81, + 97, + 108, + 0, + 131, + 1, + 82, + 97, + 81, + 0, + 130, + 1, + 81, + 97, + 108, + 32, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 107, + 224, + 133, + 1, + 96, + 96, + 97, + 107, + 224, + 135, + 1, + 96, + 7, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 107, + 96, + 130, + 1, + 81, + 97, + 108, + 64, + 131, + 1, + 82, + 97, + 107, + 128, + 130, + 1, + 81, + 97, + 108, + 96, + 131, + 1, + 82, + 97, + 107, + 224, + 130, + 1, + 81, + 97, + 108, + 128, + 131, + 1, + 82, + 97, + 108, 0, + 130, + 1, + 81, + 97, + 108, + 160, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 108, + 64, + 133, + 1, + 96, + 128, + 97, + 108, + 64, + 135, + 1, + 96, + 6, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 3, + 64, + 130, + 1, + 81, + 97, + 108, + 192, 131, 1, 82, 97, 3, - 32, + 96, 130, 1, 81, 97, - 107, - 32, + 108, + 224, 131, 1, 82, 97, - 80, - 224, + 82, + 160, 130, 1, 81, 97, - 107, - 64, + 109, + 0, 131, 1, 82, @@ -20091,15 +20555,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 0, + 108, + 192, 133, 1, 96, 96, 97, - 107, - 0, + 108, + 192, 135, 1, 96, @@ -20111,50 +20575,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 106, - 128, + 108, + 64, 130, 1, 81, 97, - 107, - 96, + 109, + 32, 131, 1, 82, 97, - 106, - 160, + 108, + 96, 130, 1, 81, 97, - 107, - 128, + 109, + 64, 131, 1, 82, 97, - 107, - 0, + 108, + 192, 130, 1, 81, 97, - 107, - 160, + 109, + 96, 131, 1, 82, 97, - 107, - 32, + 108, + 224, 130, 1, 81, 97, - 107, - 192, + 109, + 128, 131, 1, 82, @@ -20164,15 +20628,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 96, + 109, + 32, 133, 1, 96, 128, 97, - 107, - 96, + 109, + 32, 135, 1, 96, @@ -20185,37 +20649,37 @@ pub mod inclusion_verifier { 80, 97, 3, - 64, + 128, 130, 1, 81, 97, - 107, - 224, + 109, + 160, 131, 1, 82, 97, 3, - 96, + 160, 130, 1, 81, 97, - 108, - 0, + 109, + 192, 131, 1, 82, 97, - 81, - 0, + 82, + 192, 130, 1, 81, 97, - 108, - 32, + 109, + 224, 131, 1, 82, @@ -20225,15 +20689,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 224, + 109, + 160, 133, 1, 96, 96, 97, - 107, - 224, + 109, + 160, 135, 1, 96, @@ -20245,50 +20709,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 107, - 96, + 109, + 32, 130, 1, 81, 97, - 108, - 64, + 110, + 0, 131, 1, 82, 97, - 107, - 128, + 109, + 64, 130, 1, 81, 97, - 108, - 96, + 110, + 32, 131, 1, 82, 97, - 107, - 224, + 109, + 160, 130, 1, 81, 97, - 108, - 128, + 110, + 64, 131, 1, 82, 97, - 108, - 0, + 109, + 192, 130, 1, 81, 97, - 108, - 160, + 110, + 96, 131, 1, 82, @@ -20298,15 +20762,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 64, + 110, + 0, 133, 1, 96, 128, 97, - 108, - 64, + 110, + 0, 135, 1, 96, @@ -20319,37 +20783,37 @@ pub mod inclusion_verifier { 80, 97, 1, - 128, + 192, 130, 1, 81, 97, - 108, - 192, + 110, + 128, 131, 1, 82, 97, 1, - 160, + 224, 130, 1, 81, 97, - 108, - 224, + 110, + 160, 131, 1, 82, 97, - 82, - 0, + 83, + 192, 130, 1, 81, 97, - 109, - 0, + 110, + 192, 131, 1, 82, @@ -20359,15 +20823,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 192, + 110, + 128, 133, 1, 96, 96, 97, - 108, - 192, + 110, + 128, 135, 1, 96, @@ -20379,50 +20843,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 108, - 64, + 110, + 0, 130, 1, 81, 97, - 109, - 32, + 110, + 224, 131, 1, 82, 97, - 108, - 96, + 110, + 32, 130, 1, 81, 97, - 109, - 64, + 111, + 0, 131, 1, 82, 97, - 108, - 192, + 110, + 128, 130, 1, 81, 97, - 109, - 96, + 111, + 32, 131, 1, 82, 97, - 108, - 224, + 110, + 160, 130, 1, 81, 97, - 109, - 128, + 111, + 64, 131, 1, 82, @@ -20432,15 +20896,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 32, + 110, + 224, 133, 1, 96, 128, 97, - 109, - 32, + 110, + 224, 135, 1, 96, @@ -20452,40 +20916,40 @@ pub mod inclusion_verifier { 146, 80, 97, - 10, - 224, + 11, + 32, 130, 1, 81, 97, - 109, - 160, + 111, + 96, 131, 1, 82, 97, 11, - 0, + 64, 130, 1, 81, 97, - 109, - 192, + 111, + 128, 131, 1, 82, 97, - 82, - 64, + 84, + 0, 130, 1, 81, 129, 3, 97, - 109, - 224, + 111, + 160, 131, 1, 82, @@ -20496,15 +20960,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 160, + 111, + 96, 132, 1, 96, 96, 97, - 109, - 160, + 111, + 96, 134, 1, 96, @@ -20516,50 +20980,50 @@ pub mod inclusion_verifier { 145, 80, 97, - 109, - 32, + 110, + 224, 129, 1, 81, 97, - 110, - 0, + 111, + 192, 130, 1, 82, 97, - 109, - 64, + 111, + 0, 129, 1, 81, 97, - 110, - 32, + 111, + 224, 130, 1, 82, 97, - 109, - 160, + 111, + 96, 129, 1, 81, 97, - 110, - 64, + 112, + 0, 130, 1, 82, 97, - 109, - 192, + 111, + 128, 129, 1, 81, 97, - 110, - 96, + 112, + 32, 130, 1, 82, @@ -20569,15 +21033,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 0, + 111, + 192, 132, 1, 96, 128, 97, - 110, - 0, + 111, + 192, 134, 1, 96, @@ -20590,37 +21054,37 @@ pub mod inclusion_verifier { 80, 97, 11, - 128, + 192, 129, 1, 81, 97, - 110, - 128, + 112, + 64, 130, 1, 82, 97, 11, - 160, + 224, 129, 1, 81, 97, - 110, - 160, + 112, + 96, 130, 1, 82, 97, - 82, - 96, + 84, + 32, 129, 1, 81, 97, - 110, - 192, + 112, + 128, 130, 1, 82, @@ -20630,15 +21094,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 128, + 112, + 64, 132, 1, 96, 96, 97, - 110, - 128, + 112, + 64, 134, 1, 96, @@ -20650,50 +21114,50 @@ pub mod inclusion_verifier { 145, 80, 97, - 110, - 0, + 111, + 192, 129, 1, 81, 97, - 110, - 224, + 112, + 160, 130, 1, 82, 97, - 110, - 32, + 111, + 224, 129, 1, 81, 97, - 111, - 0, + 112, + 192, 130, 1, 82, 97, - 110, - 128, + 112, + 64, 129, 1, 81, 97, - 111, - 32, + 112, + 224, 130, 1, 82, 97, - 110, - 160, + 112, + 96, 129, 1, 81, 97, - 111, - 64, + 113, + 0, 130, 1, 82, @@ -20703,15 +21167,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 224, + 112, + 160, 132, 1, 96, 128, 97, - 110, - 224, + 112, + 160, 134, 1, 96, @@ -20723,26 +21187,26 @@ pub mod inclusion_verifier { 145, 80, 97, - 110, - 224, + 112, + 160, 129, 1, 81, 97, - 111, - 96, + 113, + 32, 130, 1, 82, 97, - 111, - 0, + 112, + 192, 129, 1, 81, 97, - 111, - 128, + 113, + 64, 130, 1, 82, @@ -20780,8 +21244,8 @@ pub mod inclusion_verifier { 18, 194, 97, - 111, - 160, + 113, + 96, 130, 1, 82, @@ -20819,8 +21283,8 @@ pub mod inclusion_verifier { 246, 237, 97, - 111, - 192, + 113, + 128, 130, 1, 82, @@ -20858,8 +21322,8 @@ pub mod inclusion_verifier { 151, 91, 97, - 111, - 224, + 113, + 160, 130, 1, 82, @@ -20897,32 +21361,32 @@ pub mod inclusion_verifier { 125, 170, 97, - 112, - 0, + 113, + 192, 130, 1, 82, 97, 11, - 128, + 192, 129, 1, 81, 97, - 112, - 32, + 113, + 224, 130, 1, 82, 97, 11, - 160, + 224, 129, 1, 81, 97, - 112, - 64, + 114, + 0, 130, 1, 82, @@ -20960,8 +21424,8 @@ pub mod inclusion_verifier { 226, 61, 97, - 112, - 96, + 114, + 32, 130, 1, 82, @@ -20999,8 +21463,8 @@ pub mod inclusion_verifier { 247, 158, 97, - 112, - 128, + 114, + 64, 130, 1, 82, @@ -21038,8 +21502,8 @@ pub mod inclusion_verifier { 193, 69, 97, - 112, - 160, + 114, + 96, 130, 1, 82, @@ -21077,8 +21541,8 @@ pub mod inclusion_verifier { 222, 255, 97, - 112, - 192, + 114, + 128, 130, 1, 82, @@ -21088,16 +21552,16 @@ pub mod inclusion_verifier { 96, 32, 97, - 111, - 96, + 113, + 32, 132, 1, 97, 1, 128, 97, - 111, - 96, + 113, + 32, 134, 1, 96, @@ -21105,8 +21569,8 @@ pub mod inclusion_verifier { 90, 250, 97, - 111, - 96, + 113, + 32, 147, 144, 147, @@ -21133,8 +21597,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 112, - 192, + 114, + 128, 1, 96, 64, @@ -21142,7 +21606,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 134, + 148, 144, 96, 32, @@ -21212,15 +21676,15 @@ pub mod inclusion_verifier { 23, 21, 97, - 82, - 177, + 84, + 128, 87, 97, - 82, - 177, + 84, + 128, 97, - 82, - 114, + 84, + 65, 86, 91, 96, @@ -21240,8 +21704,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 82, - 202, + 84, + 153, 87, 96, 0, @@ -21263,20 +21727,20 @@ pub mod inclusion_verifier { 17, 21, 97, - 82, - 228, + 84, + 179, 87, 97, - 82, - 228, + 84, + 179, 97, - 82, - 114, + 84, + 65, 86, 91, 97, - 82, - 247, + 84, + 198, 96, 31, 130, @@ -21289,8 +21753,8 @@ pub mod inclusion_verifier { 32, 1, 97, - 82, - 136, + 84, + 87, 86, 91, 129, @@ -21306,8 +21770,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 12, + 84, + 219, 87, 96, 0, @@ -21354,8 +21818,8 @@ pub mod inclusion_verifier { 18, 21, 97, - 83, - 60, + 85, + 11, 87, 96, 0, @@ -21378,8 +21842,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 84, + 85, + 35, 87, 96, 0, @@ -21398,8 +21862,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 83, - 104, + 85, + 55, 87, 96, 0, @@ -21415,15 +21879,15 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 124, + 85, + 75, 87, 97, - 83, - 124, + 85, + 75, 97, - 82, - 114, + 84, + 65, 86, 91, 129, @@ -21431,14 +21895,14 @@ pub mod inclusion_verifier { 5, 27, 97, - 83, - 139, + 85, + 90, 130, 130, 1, 97, - 82, - 136, + 84, + 87, 86, 91, 146, @@ -21459,8 +21923,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 165, + 85, + 116, 87, 96, 0, @@ -21477,8 +21941,8 @@ pub mod inclusion_verifier { 16, 21, 97, - 83, - 195, + 85, + 146, 87, 134, 53, @@ -21493,8 +21957,8 @@ pub mod inclusion_verifier { 1, 144, 97, - 83, - 170, + 85, + 121, 86, 91, 151, @@ -21512,8 +21976,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 218, + 85, + 169, 87, 96, 0, @@ -21522,15 +21986,15 @@ pub mod inclusion_verifier { 91, 80, 97, - 83, - 231, + 85, + 182, 133, 130, 134, 1, 97, - 82, - 185, + 84, + 136, 86, 91, 145, @@ -21617,38 +22081,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 143, - 15, - 8, - 193, - 19, - 215, - 30, - 154, - 255, + 67, + 61, + 67, + 155, + 97, + 108, + 155, + 9, + 132, + 170, + 39, + 61, + 101, 208, - 74, - 147, + 59, + 188, + 145, 10, - 12, - 207, - 255, - 244, - 28, - 199, - 158, - 53, - 137, - 50, - 207, - 167, - 172, - 19, - 149, - 194, - 66, - 68, - 5, + 87, + 92, + 63, + 198, + 42, + 156, + 80, + 151, + 87, + 123, + 27, + 175, + 252, + 213, 100, 115, 111, @@ -21726,8 +22190,8 @@ pub mod inclusion_verifier { 96, 4, 97, - 83, - 41, + 84, + 248, 86, 91, 97, @@ -21763,8 +22227,8 @@ pub mod inclusion_verifier { 0, 99, 97, - 82, - 82, + 84, + 33, 86, 91, 96, @@ -21774,8 +22238,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 225, 131, 57, 129, @@ -21794,8 +22258,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 193, 131, 57, 129, @@ -21820,8 +22284,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 193, 131, 57, 129, @@ -21838,8 +22302,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 193, 131, 57, 129, @@ -21858,8 +22322,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 193, 131, 57, 129, @@ -21909,39 +22373,63 @@ pub mod inclusion_verifier { 131, 1, 82, - 127, - 45, - 241, - 98, - 24, - 168, - 45, - 57, + 128, + 96, + 96, + 135, + 1, + 81, + 6, + 96, + 96, 131, - 16, - 113, - 228, - 105, - 86, - 194, - 51, - 238, - 154, - 167, - 155, - 176, - 101, - 178, - 101, + 1, + 82, + 128, + 96, + 128, 135, - 16, + 1, + 81, + 6, + 96, 128, - 216, - 100, - 63, - 47, + 131, + 1, 82, + 127, + 16, + 30, + 50, + 32, + 159, + 188, + 42, + 253, + 218, + 46, 171, + 8, + 238, + 211, + 227, + 233, + 50, + 62, + 205, + 146, + 229, + 198, + 185, + 80, + 130, + 4, + 185, + 72, + 222, + 26, + 229, + 243, 96, 0, 131, @@ -21954,7 +22442,7 @@ pub mod inclusion_verifier { 81, 128, 96, - 96, + 160, 132, 1, 82, @@ -21965,14 +22453,14 @@ pub mod inclusion_verifier { 81, 128, 96, - 128, + 192, 133, 1, 82, 132, 97, 1, - 56, + 80, 130, 132, 97, @@ -21992,7 +22480,7 @@ pub mod inclusion_verifier { 81, 128, 96, - 160, + 224, 132, 1, 82, @@ -22002,15 +22490,16 @@ pub mod inclusion_verifier { 1, 81, 128, - 96, - 192, + 97, + 1, + 0, 133, 1, 82, 132, 97, 1, - 94, + 119, 130, 132, 97, @@ -22029,8 +22518,9 @@ pub mod inclusion_verifier { 1, 81, 128, - 96, - 224, + 97, + 1, + 32, 132, 1, 82, @@ -22042,14 +22532,14 @@ pub mod inclusion_verifier { 128, 97, 1, - 0, + 64, 133, 1, 82, 132, 97, 1, - 133, + 159, 130, 132, 97, @@ -22064,7 +22554,7 @@ pub mod inclusion_verifier { 80, 97, 1, - 32, + 96, 96, 0, 131, @@ -22072,13 +22562,13 @@ pub mod inclusion_verifier { 32, 97, 1, - 32, + 96, 131, 1, 82, 97, 1, - 32, + 96, 130, 1, 81, @@ -22087,14 +22577,14 @@ pub mod inclusion_verifier { 6, 97, 1, - 64, + 128, 132, 1, 82, 128, 97, 1, - 96, + 160, 132, 1, 82, @@ -22107,7 +22597,7 @@ pub mod inclusion_verifier { 128, 97, 1, - 128, + 192, 132, 1, 82, @@ -22120,14 +22610,14 @@ pub mod inclusion_verifier { 128, 97, 1, - 160, + 224, 133, 1, 82, 132, 97, 1, - 211, + 237, 130, 132, 97, @@ -22148,8 +22638,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 1, - 192, + 2, + 0, 132, 1, 82, @@ -22161,15 +22651,15 @@ pub mod inclusion_verifier { 81, 128, 97, - 1, - 224, + 2, + 32, 133, 1, 82, 132, 97, - 1, - 253, + 2, + 23, 130, 132, 97, @@ -22181,13 +22671,13 @@ pub mod inclusion_verifier { 160, 97, 1, - 96, + 160, 135, 1, 32, 97, 2, - 0, + 64, 135, 1, 129, @@ -22198,13 +22688,13 @@ pub mod inclusion_verifier { 6, 97, 2, - 32, + 96, 136, 1, 82, 97, 2, - 64, + 128, 135, 1, 82, @@ -22218,7 +22708,7 @@ pub mod inclusion_verifier { 80, 97, 2, - 96, + 160, 131, 1, 83, @@ -22226,13 +22716,13 @@ pub mod inclusion_verifier { 33, 97, 2, - 64, + 128, 131, 1, 32, 97, 2, - 96, + 160, 131, 1, 129, @@ -22243,13 +22733,13 @@ pub mod inclusion_verifier { 6, 97, 2, - 128, + 192, 132, 1, 82, 97, 2, - 160, + 224, 131, 1, 82, @@ -22260,8 +22750,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 2, - 192, + 3, + 0, 131, 1, 129, @@ -22274,8 +22764,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 2, - 224, + 3, + 32, 132, 1, 129, @@ -22284,7 +22774,7 @@ pub mod inclusion_verifier { 132, 97, 2, - 112, + 138, 130, 132, 97, @@ -22306,7 +22796,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 0, + 64, 132, 1, 82, @@ -22319,14 +22809,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 32, + 96, 133, 1, 82, 132, 97, 2, - 154, + 180, 130, 132, 97, @@ -22348,7 +22838,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 64, + 128, 132, 1, 82, @@ -22361,14 +22851,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 96, + 160, 133, 1, 82, 132, 97, 2, - 196, + 222, 130, 132, 97, @@ -22390,7 +22880,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 128, + 192, 132, 1, 82, @@ -22403,14 +22893,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 160, + 224, 133, 1, 82, 132, 97, - 2, - 238, + 3, + 8, 130, 132, 97, @@ -22428,19 +22918,19 @@ pub mod inclusion_verifier { 32, 97, 2, - 160, + 224, 131, 1, 32, 97, - 3, - 192, + 4, + 0, 131, 1, 82, 97, - 3, - 192, + 4, + 0, 130, 1, 81, @@ -22448,15 +22938,15 @@ pub mod inclusion_verifier { 129, 6, 97, - 3, - 224, + 4, + 32, 132, 1, 82, 128, 97, 4, - 0, + 64, 132, 1, 82, @@ -22470,7 +22960,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 32, + 96, 132, 1, 82, @@ -22483,14 +22973,14 @@ pub mod inclusion_verifier { 128, 97, 4, - 64, + 128, 133, 1, 82, 132, 97, 3, - 62, + 88, 130, 132, 97, @@ -22512,7 +23002,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 96, + 160, 132, 1, 82, @@ -22525,14 +23015,14 @@ pub mod inclusion_verifier { 128, 97, 4, - 128, + 192, 133, 1, 82, 132, 97, 3, - 104, + 130, 130, 132, 97, @@ -22554,7 +23044,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 160, + 224, 132, 1, 82, @@ -22566,15 +23056,15 @@ pub mod inclusion_verifier { 81, 128, 97, - 4, - 192, + 5, + 0, 133, 1, 82, 132, 97, 3, - 146, + 172, 130, 132, 97, @@ -22595,8 +23085,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 4, - 224, + 5, + 32, 132, 1, 82, @@ -22609,14 +23099,14 @@ pub mod inclusion_verifier { 128, 97, 5, - 0, + 64, 133, 1, 82, 132, 97, 3, - 188, + 214, 130, 132, 97, @@ -22638,7 +23128,7 @@ pub mod inclusion_verifier { 128, 97, 5, - 32, + 96, 132, 1, 82, @@ -22651,14 +23141,14 @@ pub mod inclusion_verifier { 128, 97, 5, - 64, + 128, 133, 1, 82, 132, 97, - 3, - 230, + 4, + 0, 130, 132, 97, @@ -22676,19 +23166,19 @@ pub mod inclusion_verifier { 96, 97, 4, - 0, + 64, 131, 1, 32, 97, 5, - 96, + 160, 131, 1, 82, 97, 5, - 96, + 160, 130, 1, 81, @@ -22697,14 +23187,14 @@ pub mod inclusion_verifier { 6, 97, 5, - 128, + 192, 132, 1, 82, 128, 97, 5, - 160, + 224, 132, 1, 82, @@ -22718,8 +23208,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 5, - 192, + 6, + 0, 131, 1, 82, @@ -22732,8 +23222,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 5, - 224, + 6, + 32, 131, 1, 82, @@ -22747,7 +23237,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 0, + 64, 131, 1, 82, @@ -22761,7 +23251,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 32, + 96, 131, 1, 82, @@ -22775,7 +23265,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 64, + 128, 131, 1, 82, @@ -22789,7 +23279,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 96, + 160, 131, 1, 82, @@ -22803,7 +23293,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 128, + 192, 131, 1, 82, @@ -22817,7 +23307,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 160, + 224, 131, 1, 82, @@ -22830,8 +23320,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 6, - 192, + 7, + 0, 131, 1, 82, @@ -22844,8 +23334,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 6, - 224, + 7, + 32, 131, 1, 82, @@ -22859,7 +23349,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 0, + 64, 131, 1, 82, @@ -22873,7 +23363,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 32, + 96, 131, 1, 82, @@ -22887,7 +23377,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 64, + 128, 131, 1, 82, @@ -22901,7 +23391,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 96, + 160, 131, 1, 82, @@ -22915,7 +23405,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 128, + 192, 131, 1, 82, @@ -22929,7 +23419,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 160, + 224, 131, 1, 82, @@ -22942,8 +23432,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 7, - 192, + 8, + 0, 131, 1, 82, @@ -22956,8 +23446,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 7, - 224, + 8, + 32, 131, 1, 82, @@ -22971,7 +23461,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 0, + 64, 131, 1, 82, @@ -22985,7 +23475,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 32, + 96, 131, 1, 82, @@ -22999,7 +23489,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 64, + 128, 131, 1, 82, @@ -23013,7 +23503,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 96, + 160, 131, 1, 82, @@ -23027,7 +23517,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 128, + 192, 131, 1, 82, @@ -23041,7 +23531,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 160, + 224, 131, 1, 82, @@ -23054,8 +23544,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 8, - 192, + 9, + 0, 131, 1, 82, @@ -23068,8 +23558,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 8, - 224, + 9, + 32, 131, 1, 82, @@ -23083,7 +23573,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 0, + 64, 131, 1, 82, @@ -23097,7 +23587,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 32, + 96, 131, 1, 82, @@ -23111,7 +23601,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 64, + 128, 131, 1, 82, @@ -23125,7 +23615,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 96, + 160, 131, 1, 82, @@ -23139,7 +23629,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 128, + 192, 131, 1, 82, @@ -23153,7 +23643,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 160, + 224, 131, 1, 82, @@ -23166,8 +23656,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 9, - 192, + 10, + 0, 131, 1, 82, @@ -23180,8 +23670,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 9, - 224, + 10, + 32, 131, 1, 82, @@ -23195,7 +23685,7 @@ pub mod inclusion_verifier { 6, 97, 10, - 0, + 64, 131, 1, 82, @@ -23204,19 +23694,19 @@ pub mod inclusion_verifier { 128, 97, 5, - 160, + 224, 131, 1, 32, 97, 10, - 32, + 96, 131, 1, 82, 97, 10, - 32, + 96, 130, 1, 81, @@ -23225,14 +23715,14 @@ pub mod inclusion_verifier { 6, 97, 10, - 64, + 128, 132, 1, 82, 128, 97, 10, - 96, + 160, 132, 1, 82, @@ -23241,7 +23731,7 @@ pub mod inclusion_verifier { 1, 97, 10, - 128, + 192, 131, 1, 83, @@ -23249,13 +23739,13 @@ pub mod inclusion_verifier { 33, 97, 10, - 96, + 160, 131, 1, 32, 97, 10, - 128, + 192, 131, 1, 129, @@ -23266,13 +23756,13 @@ pub mod inclusion_verifier { 6, 97, 10, - 160, + 224, 132, 1, 82, 97, - 10, - 192, + 11, + 0, 131, 1, 82, @@ -23283,8 +23773,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 10, - 224, + 11, + 32, 131, 1, 129, @@ -23298,7 +23788,7 @@ pub mod inclusion_verifier { 81, 97, 11, - 0, + 64, 132, 1, 129, @@ -23307,7 +23797,7 @@ pub mod inclusion_verifier { 132, 97, 6, - 111, + 137, 130, 132, 97, @@ -23323,20 +23813,20 @@ pub mod inclusion_verifier { 96, 96, 97, - 10, - 192, + 11, + 0, 131, 1, 32, 97, 11, - 32, + 96, 131, 1, 82, 97, 11, - 32, + 96, 130, 1, 81, @@ -23345,14 +23835,14 @@ pub mod inclusion_verifier { 6, 97, 11, - 64, + 128, 132, 1, 82, 128, 97, 11, - 96, + 160, 132, 1, 82, @@ -23366,7 +23856,7 @@ pub mod inclusion_verifier { 128, 97, 11, - 128, + 192, 132, 1, 82, @@ -23379,14 +23869,14 @@ pub mod inclusion_verifier { 128, 97, 11, - 160, + 224, 133, 1, 82, 132, 97, 6, - 190, + 216, 130, 132, 97, @@ -23402,20 +23892,20 @@ pub mod inclusion_verifier { 128, 97, 5, - 128, + 192, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 11, - 192, + 12, + 0, 131, 1, 129, @@ -23426,8 +23916,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 11, - 224, + 12, + 32, 131, 1, 129, @@ -23439,7 +23929,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 0, + 64, 131, 1, 129, @@ -23451,7 +23941,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 32, + 96, 131, 1, 129, @@ -23463,7 +23953,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 64, + 128, 131, 1, 129, @@ -23475,7 +23965,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 96, + 160, 131, 1, 129, @@ -23487,7 +23977,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 128, + 192, 131, 1, 129, @@ -23499,7 +23989,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 160, + 224, 131, 1, 129, @@ -23510,8 +24000,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 12, - 192, + 13, + 0, 131, 1, 129, @@ -23522,8 +24012,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 12, - 224, + 13, + 32, 131, 1, 129, @@ -23535,7 +24025,7 @@ pub mod inclusion_verifier { 9, 97, 13, - 0, + 64, 131, 1, 82, @@ -23575,14 +24065,14 @@ pub mod inclusion_verifier { 0, 97, 13, - 0, + 64, 132, 1, 81, 8, 97, 13, - 32, + 96, 131, 1, 82, @@ -23622,14 +24112,14 @@ pub mod inclusion_verifier { 1, 97, 13, - 32, + 96, 132, 1, 81, 9, 97, 13, - 64, + 128, 131, 1, 82, @@ -23669,14 +24159,14 @@ pub mod inclusion_verifier { 2, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 13, - 96, + 160, 131, 1, 82, @@ -23716,14 +24206,14 @@ pub mod inclusion_verifier { 255, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 13, - 128, + 192, 131, 1, 82, @@ -23763,14 +24253,14 @@ pub mod inclusion_verifier { 81, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 13, - 160, + 224, 131, 1, 82, @@ -23810,14 +24300,14 @@ pub mod inclusion_verifier { 176, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, - 13, - 192, + 14, + 0, 131, 1, 82, @@ -23857,14 +24347,14 @@ pub mod inclusion_verifier { 53, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, - 13, - 224, + 14, + 32, 131, 1, 82, @@ -23904,14 +24394,14 @@ pub mod inclusion_verifier { 204, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 0, + 64, 131, 1, 82, @@ -23951,14 +24441,14 @@ pub mod inclusion_verifier { 37, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 32, + 96, 131, 1, 82, @@ -23998,14 +24488,14 @@ pub mod inclusion_verifier { 220, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 64, + 128, 131, 1, 82, @@ -24045,14 +24535,14 @@ pub mod inclusion_verifier { 227, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 96, + 160, 131, 1, 82, @@ -24092,14 +24582,14 @@ pub mod inclusion_verifier { 30, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 128, + 192, 131, 1, 82, @@ -24139,14 +24629,14 @@ pub mod inclusion_verifier { 26, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 160, + 224, 131, 1, 82, @@ -24186,14 +24676,14 @@ pub mod inclusion_verifier { 231, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, - 14, - 192, + 15, + 0, 131, 1, 82, @@ -24202,14 +24692,14 @@ pub mod inclusion_verifier { 1, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, - 14, - 224, + 15, + 32, 131, 1, 82, @@ -24249,14 +24739,14 @@ pub mod inclusion_verifier { 0, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 15, - 0, + 64, 131, 1, 82, @@ -24296,14 +24786,14 @@ pub mod inclusion_verifier { 95, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 15, - 32, + 96, 131, 1, 82, @@ -24343,28 +24833,216 @@ pub mod inclusion_verifier { 162, 97, 5, + 192, + 132, + 1, + 81, + 8, + 97, + 15, + 128, + 131, + 1, + 82, + 128, + 127, + 42, + 217, + 2, + 30, + 208, + 124, + 66, + 171, + 25, + 247, + 124, + 92, + 242, + 203, + 210, + 222, + 177, + 53, + 234, + 51, + 15, + 27, + 21, + 115, + 189, + 8, + 217, + 147, + 9, + 196, + 187, + 125, + 97, + 13, 128, 132, 1, 81, + 9, + 97, + 15, + 160, + 131, + 1, + 82, + 128, + 127, + 5, + 139, + 76, + 84, + 16, + 181, + 93, + 126, + 158, + 88, + 201, + 89, + 142, + 181, + 133, + 126, + 118, + 253, + 254, + 21, + 106, + 158, + 91, + 29, + 134, + 217, + 28, + 0, + 230, + 59, + 68, + 132, + 97, + 5, + 192, + 132, + 1, + 81, 8, 97, 15, - 64, + 192, 131, 1, 82, + 128, + 127, + 25, + 8, + 89, + 125, + 47, + 195, + 188, + 29, + 163, + 18, + 239, + 163, + 68, + 224, + 252, + 138, + 112, + 121, + 48, + 2, + 56, + 242, + 238, + 53, + 119, + 79, + 17, + 126, + 102, + 253, + 68, + 103, 97, 13, 128, + 132, + 1, + 81, + 9, + 97, + 15, + 224, + 131, + 1, + 82, + 128, + 127, + 23, + 91, + 244, + 245, + 177, + 109, + 228, + 12, + 21, + 61, + 86, + 19, + 60, + 160, + 91, + 210, + 183, + 186, + 184, + 70, + 64, + 198, 130, + 91, + 204, + 146, + 228, + 21, + 137, + 2, + 187, + 154, + 97, + 5, + 192, + 132, 1, 81, - 129, - 129, + 8, + 97, + 16, + 0, + 131, + 1, + 82, 97, 13, 192, + 130, + 1, + 81, + 129, + 129, + 97, + 14, + 0, 133, 1, 81, @@ -24373,8 +25051,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 96, + 16, + 32, 132, 1, 82, @@ -24382,7 +25060,7 @@ pub mod inclusion_verifier { 129, 97, 14, - 0, + 64, 133, 1, 81, @@ -24391,8 +25069,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 128, + 16, + 64, 132, 1, 82, @@ -24400,7 +25078,7 @@ pub mod inclusion_verifier { 129, 97, 14, - 64, + 128, 133, 1, 81, @@ -24409,8 +25087,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 160, + 16, + 96, 132, 1, 82, @@ -24418,7 +25096,25 @@ pub mod inclusion_verifier { 129, 97, 14, + 192, + 133, + 1, + 81, + 9, + 144, + 80, 128, + 97, + 16, + 128, + 132, + 1, + 82, + 129, + 129, + 97, + 15, + 0, 133, 1, 81, @@ -24427,7 +25123,25 @@ pub mod inclusion_verifier { 80, 128, 97, + 16, + 160, + 132, + 1, + 82, + 129, + 129, + 97, 15, + 64, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 16, 192, 132, 1, @@ -24435,8 +25149,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 14, - 192, + 15, + 128, 133, 1, 81, @@ -24445,7 +25159,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, + 16, 224, 132, 1, @@ -24454,7 +25168,7 @@ pub mod inclusion_verifier { 129, 97, 15, - 0, + 192, 133, 1, 81, @@ -24463,7 +25177,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 0, 132, 1, @@ -24471,8 +25185,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 15, - 64, + 16, + 0, 133, 1, 81, @@ -24481,7 +25195,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 32, 132, 1, @@ -24490,7 +25204,7 @@ pub mod inclusion_verifier { 129, 97, 13, - 32, + 96, 133, 1, 81, @@ -24499,7 +25213,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 64, 132, 1, @@ -24508,7 +25222,7 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 128, 131, 1, @@ -24516,7 +25230,7 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 160, 131, 1, @@ -24524,19 +25238,19 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 192, 131, 1, 82, 97, - 16, + 17, 64, 130, 1, 81, 97, - 16, + 17, 224, 131, 1, @@ -24575,7 +25289,7 @@ pub mod inclusion_verifier { 255, 255, 97, - 17, + 18, 0, 131, 1, @@ -24587,8 +25301,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 225, 131, 57, 129, @@ -24596,7 +25310,7 @@ pub mod inclusion_verifier { 145, 82, 97, - 17, + 18, 32, 131, 1, @@ -24607,14 +25321,14 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 96, 133, 1, 96, 192, 97, - 16, + 17, 128, 135, 1, @@ -24627,7 +25341,7 @@ pub mod inclusion_verifier { 146, 80, 97, - 16, + 17, 96, 130, 1, @@ -24636,7 +25350,7 @@ pub mod inclusion_verifier { 0, 97, 13, - 32, + 96, 132, 1, 81, @@ -24645,7 +25359,7 @@ pub mod inclusion_verifier { 130, 130, 97, - 16, + 17, 32, 134, 1, @@ -24653,7 +25367,94 @@ pub mod inclusion_verifier { 9, 97, 13, - 32, + 96, + 133, + 1, + 82, + 130, + 130, + 130, + 9, + 145, + 80, + 97, + 16, + 0, + 132, + 1, + 81, + 144, + 80, + 130, + 130, + 97, + 17, + 0, + 134, + 1, + 81, + 9, + 97, + 16, + 0, + 133, + 1, + 82, + 130, + 130, + 130, + 9, + 145, + 80, + 97, + 15, + 192, + 132, + 1, + 81, + 144, + 80, + 130, + 130, + 97, + 16, + 224, + 134, + 1, + 81, + 9, + 97, + 15, + 192, + 133, + 1, + 82, + 130, + 130, + 130, + 9, + 145, + 80, + 97, + 15, + 128, + 132, + 1, + 81, + 144, + 80, + 130, + 130, + 97, + 16, + 192, + 134, + 1, + 81, + 9, + 97, + 15, + 128, 133, 1, 82, @@ -24675,7 +25476,7 @@ pub mod inclusion_verifier { 130, 97, 16, - 0, + 160, 134, 1, 81, @@ -24703,8 +25504,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 224, + 16, + 128, 134, 1, 81, @@ -24732,8 +25533,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 192, + 16, + 96, 134, 1, 81, @@ -24761,8 +25562,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 160, + 16, + 64, 134, 1, 81, @@ -24790,8 +25591,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 128, + 16, + 32, 134, 1, 81, @@ -24819,8 +25620,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 96, + 13, + 192, 134, 1, 81, @@ -24835,46 +25636,17 @@ pub mod inclusion_verifier { 130, 130, 9, - 145, - 80, - 97, - 13, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 13, - 128, - 134, - 1, - 81, - 9, 97, 13, 192, 133, 1, - 82, - 130, - 130, - 130, - 9, - 97, - 13, - 128, - 133, - 1, 129, 144, 82, 97, 13, - 96, + 160, 133, 1, 81, @@ -24886,27 +25658,27 @@ pub mod inclusion_verifier { 80, 9, 97, - 17, + 18, 64, 131, 1, 82, 128, 97, - 13, - 192, + 14, + 0, 131, 1, 81, 97, 13, - 160, + 224, 132, 1, 81, 9, 97, - 17, + 18, 96, 131, 1, @@ -24914,19 +25686,19 @@ pub mod inclusion_verifier { 128, 97, 14, - 0, + 64, 131, 1, 81, 97, - 13, - 224, + 14, + 32, 132, 1, 81, 9, 97, - 17, + 18, 128, 131, 1, @@ -24934,19 +25706,19 @@ pub mod inclusion_verifier { 128, 97, 14, - 64, + 128, 131, 1, 81, 97, 14, - 32, + 96, 132, 1, 81, 9, 97, - 17, + 18, 160, 131, 1, @@ -24954,39 +25726,39 @@ pub mod inclusion_verifier { 128, 97, 14, - 128, + 192, 131, 1, 81, 97, 14, - 96, + 160, 132, 1, 81, 9, 97, - 17, + 18, 192, 131, 1, 82, 128, 97, - 14, - 192, + 15, + 0, 131, 1, 81, 97, 14, - 160, + 224, 132, 1, 81, 9, 97, - 17, + 18, 224, 131, 1, @@ -24994,19 +25766,19 @@ pub mod inclusion_verifier { 128, 97, 15, - 0, + 64, 131, 1, 81, 97, - 14, - 224, + 15, + 32, 132, 1, 81, 9, 97, - 18, + 19, 0, 131, 1, @@ -25014,31 +25786,71 @@ pub mod inclusion_verifier { 128, 97, 15, - 64, + 128, 131, 1, 81, 97, 15, - 32, + 96, 132, 1, 81, 9, 97, - 18, + 19, 32, 131, 1, 82, 128, + 97, + 15, + 192, + 131, + 1, + 81, + 97, + 15, + 160, + 132, + 1, + 81, + 9, + 97, + 19, + 64, + 131, + 1, + 82, + 128, + 97, + 16, + 0, + 131, + 1, + 81, + 97, + 15, + 224, + 132, + 1, + 81, + 9, + 97, + 19, + 96, + 131, + 1, + 82, + 128, 96, 32, 131, 1, 81, 97, - 18, + 19, 0, 132, 1, @@ -25053,29 +25865,65 @@ pub mod inclusion_verifier { 1, 81, 97, - 18, + 19, 32, 135, 1, 81, 9, 8, + 144, + 80, + 129, + 129, + 131, + 96, + 96, + 134, + 1, + 81, 97, - 18, + 19, 64, + 135, + 1, + 81, + 9, + 8, + 144, + 80, + 129, + 129, + 131, + 96, + 128, + 134, + 1, + 81, + 97, + 19, + 96, + 135, + 1, + 81, + 9, + 8, + 97, + 19, + 128, 132, 1, 82, 80, 97, - 6, - 224, + 7, + 32, 130, 1, 81, 97, - 5, - 192, + 6, + 0, 131, 1, 81, @@ -25084,8 +25932,8 @@ pub mod inclusion_verifier { 144, 8, 97, - 18, - 96, + 19, + 160, 131, 1, 129, @@ -25096,8 +25944,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 18, - 128, + 19, + 192, 131, 1, 129, @@ -25108,28 +25956,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 18, - 160, + 19, + 224, 131, 1, 82, 128, 97, - 18, - 160, + 19, + 224, 131, 1, 81, 97, - 18, - 96, + 19, + 160, 132, 1, 81, 9, 97, - 18, - 192, + 20, + 0, 131, 1, 82, @@ -25168,35 +26016,35 @@ pub mod inclusion_verifier { 122, 213, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 9, 97, - 18, - 224, + 20, + 32, 131, 1, 82, 128, 97, 7, - 0, + 64, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 19, - 0, + 20, + 64, 131, 1, 129, @@ -25207,8 +26055,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 19, - 32, + 20, + 96, 131, 1, 129, @@ -25219,28 +26067,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 19, - 64, + 20, + 128, 131, 1, 82, 128, 97, - 19, - 64, + 20, + 128, 131, 1, 81, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 19, - 96, + 20, + 160, 131, 1, 82, @@ -25279,57 +26127,57 @@ pub mod inclusion_verifier { 177, 232, 97, - 19, - 96, + 20, + 160, 132, 1, 81, 9, 97, - 19, - 128, + 20, + 192, 131, 1, 82, 128, 97, - 19, - 128, + 20, + 192, 131, 1, 81, 97, - 18, - 224, + 20, + 32, 132, 1, 81, 8, 97, - 19, - 160, + 20, + 224, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 19, - 160, + 20, + 224, 132, 1, 81, 8, 97, - 19, - 192, + 21, + 0, 131, 1, 129, @@ -25337,7 +26185,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 128, + 192, 131, 1, 81, @@ -25345,28 +26193,28 @@ pub mod inclusion_verifier { 145, 9, 97, - 19, - 224, + 21, + 32, 131, 1, 82, 128, 97, - 19, - 224, + 21, + 32, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 20, - 0, + 21, + 64, 131, 1, 82, @@ -25405,15 +26253,15 @@ pub mod inclusion_verifier { 143, 249, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 9, 97, - 20, - 32, + 21, + 96, 131, 1, 82, @@ -25452,57 +26300,57 @@ pub mod inclusion_verifier { 3, 200, 97, - 19, - 96, + 20, + 160, 132, 1, 81, 9, 97, - 20, - 64, + 21, + 128, 131, 1, 82, 128, 97, - 20, - 64, + 21, + 128, 131, 1, 81, 97, - 20, - 32, + 21, + 96, 132, 1, 81, 8, 97, - 20, - 96, + 21, + 160, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, 130, 3, 97, - 20, - 96, + 21, + 160, 132, 1, 81, 8, 97, - 20, - 128, + 21, + 192, 131, 1, 129, @@ -25510,7 +26358,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 128, + 192, 131, 1, 81, @@ -25518,70 +26366,70 @@ pub mod inclusion_verifier { 145, 9, 97, - 20, - 160, + 21, + 224, 131, 1, 82, 128, 97, - 20, - 160, + 21, + 224, 131, 1, 81, 97, - 20, - 0, + 21, + 64, 132, 1, 81, 8, 97, - 20, - 192, + 22, + 0, 131, 1, 82, 128, 97, - 20, - 192, + 22, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 20, - 224, + 22, + 32, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, 130, 3, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 8, 97, - 21, - 0, + 22, + 64, 131, 1, 129, @@ -25589,7 +26437,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -25597,48 +26445,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 21, - 32, + 22, + 96, 131, 1, 82, 128, 97, - 21, - 32, + 22, + 96, 131, 1, 81, 97, - 20, - 224, + 22, + 32, 132, 1, 81, 8, 97, - 21, - 64, + 22, + 128, 131, 1, 82, 128, 97, - 21, - 64, + 22, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 21, - 96, + 22, + 160, 131, 1, 82, @@ -25678,14 +26526,14 @@ pub mod inclusion_verifier { 213, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 21, - 128, + 22, + 192, 131, 1, 82, @@ -25724,35 +26572,35 @@ pub mod inclusion_verifier { 177, 232, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 21, - 160, + 22, + 224, 131, 1, 82, 128, 97, - 21, - 160, + 22, + 224, 131, 1, 81, 97, - 21, - 128, + 22, + 192, 132, 1, 81, 8, 97, - 21, - 192, + 23, + 0, 131, 1, 129, @@ -25760,7 +26608,7 @@ pub mod inclusion_verifier { 82, 97, 6, - 160, + 224, 131, 1, 81, @@ -25768,8 +26616,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 21, - 224, + 23, + 32, 131, 1, 129, @@ -25780,8 +26628,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 22, - 0, + 23, + 64, 131, 1, 129, @@ -25792,28 +26640,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 22, - 32, + 23, + 96, 131, 1, 82, 128, 97, - 22, - 32, + 23, + 96, 131, 1, 81, 97, - 21, - 224, + 23, + 32, 132, 1, 81, 9, 97, - 22, - 64, + 23, + 128, 131, 1, 82, @@ -25853,14 +26701,14 @@ pub mod inclusion_verifier { 102, 97, 6, - 0, + 64, 132, 1, 81, 9, 97, - 22, - 96, + 23, + 160, 131, 1, 82, @@ -25900,56 +26748,56 @@ pub mod inclusion_verifier { 254, 97, 6, - 32, + 96, 132, 1, 81, 9, 97, - 22, - 128, + 23, + 192, 131, 1, 82, 128, 97, - 22, - 128, + 23, + 192, 131, 1, 81, 97, - 22, - 96, + 23, + 160, 132, 1, 81, 8, 97, - 22, - 160, + 23, + 224, 131, 1, 82, 128, 97, - 22, - 160, + 23, + 224, 131, 1, 81, 130, 3, 97, - 22, - 64, + 23, + 128, 132, 1, 81, 8, 97, - 22, - 192, + 24, + 0, 131, 1, 129, @@ -25957,7 +26805,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -25965,48 +26813,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 22, - 224, + 24, + 32, 131, 1, 82, 128, 97, - 22, - 224, + 24, + 32, 131, 1, 81, 97, - 21, - 96, + 22, + 160, 132, 1, 81, 8, 97, - 23, - 0, + 24, + 64, 131, 1, 82, 128, 97, - 23, - 0, + 24, + 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 23, - 32, + 24, + 96, 131, 1, 82, @@ -26046,14 +26894,14 @@ pub mod inclusion_verifier { 249, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 23, - 64, + 24, + 128, 131, 1, 82, @@ -26092,43 +26940,43 @@ pub mod inclusion_verifier { 3, 200, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 23, - 96, + 24, + 160, 131, 1, 82, 128, 97, - 23, - 96, + 24, + 160, 131, 1, 81, 97, - 23, - 64, + 24, + 128, 132, 1, 81, 8, 97, - 23, - 128, + 24, + 192, 131, 1, 129, 144, 82, 97, - 6, - 192, + 7, + 0, 131, 1, 81, @@ -26136,8 +26984,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 23, - 160, + 24, + 224, 131, 1, 82, @@ -26177,14 +27025,14 @@ pub mod inclusion_verifier { 2, 97, 6, - 0, + 64, 132, 1, 81, 9, 97, - 23, - 192, + 25, + 0, 131, 1, 82, @@ -26224,56 +27072,56 @@ pub mod inclusion_verifier { 190, 97, 6, - 32, + 96, 132, 1, 81, 9, 97, - 23, - 224, + 25, + 32, 131, 1, 82, 128, 97, - 23, - 224, + 25, + 32, 131, 1, 81, 97, - 23, - 192, + 25, + 0, 132, 1, 81, 8, 97, - 24, - 0, + 25, + 64, 131, 1, 82, 128, 97, - 24, - 0, + 25, + 64, 131, 1, 81, 130, 3, 97, - 23, - 160, + 24, + 224, 132, 1, 81, 8, 97, - 24, - 32, + 25, + 96, 131, 1, 129, @@ -26281,7 +27129,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -26289,55 +27137,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 24, - 64, + 25, + 128, 131, 1, 82, 128, 97, - 24, - 64, + 25, + 128, 131, 1, 81, 97, - 23, - 32, + 24, + 96, 132, 1, 81, 8, 97, - 24, - 96, + 25, + 160, 131, 1, 82, 128, 97, - 24, - 96, + 25, + 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 24, - 128, + 25, + 192, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -26347,8 +27195,8 @@ pub mod inclusion_verifier { 1, 8, 97, - 24, - 160, + 25, + 224, 131, 1, 129, @@ -26356,7 +27204,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 96, + 160, 131, 1, 81, @@ -26364,15 +27212,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 24, - 192, + 26, + 0, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -26382,16 +27230,16 @@ pub mod inclusion_verifier { 2, 8, 97, - 24, - 224, + 26, + 32, 131, 1, 129, 144, 82, 97, - 24, - 192, + 26, + 0, 131, 1, 81, @@ -26399,15 +27247,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 0, + 26, + 64, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -26417,16 +27265,16 @@ pub mod inclusion_verifier { 4, 8, 97, - 25, - 32, + 26, + 96, 131, 1, 129, 144, 82, 97, - 25, - 0, + 26, + 64, 131, 1, 81, @@ -26434,58 +27282,58 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 64, + 26, + 128, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 0, 131, 1, 81, 97, 6, - 128, + 192, 132, 1, 81, 8, 97, - 25, - 96, + 26, + 160, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 25, - 96, + 26, + 160, 132, 1, 81, 8, 97, - 25, - 128, + 26, + 192, 131, 1, 129, 144, 82, 97, - 25, - 64, + 26, + 128, 131, 1, 81, @@ -26493,306 +27341,426 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 160, + 26, + 224, 131, 1, 82, 128, 97, + 26, + 224, + 131, + 1, + 81, + 97, 25, + 192, + 132, + 1, + 81, + 8, + 97, + 27, + 0, + 131, + 1, + 82, + 128, + 97, + 27, + 0, + 131, + 1, + 81, + 97, + 4, + 32, + 132, + 1, + 81, + 9, + 97, + 27, + 32, + 131, + 1, + 82, + 128, + 97, + 6, + 96, + 131, + 1, + 81, + 130, + 3, + 97, + 6, 160, + 132, + 1, + 81, + 8, + 97, + 27, + 64, + 131, + 1, + 129, + 144, + 82, + 97, + 26, + 128, 131, 1, 81, + 130, + 145, + 9, 97, - 24, + 27, + 96, + 131, + 1, + 82, 128, + 97, + 27, + 96, + 131, + 1, + 81, + 97, + 27, + 32, 132, 1, 81, 8, 97, - 25, + 27, + 128, + 131, + 1, + 82, + 128, + 97, + 27, + 128, + 131, + 1, + 81, + 97, + 4, + 32, + 132, + 1, + 81, + 9, + 97, + 27, + 160, + 131, + 1, + 82, + 128, + 97, + 8, + 0, + 131, + 1, + 81, + 97, + 21, + 0, + 132, + 1, + 81, + 9, + 97, + 27, 192, 131, 1, 82, 128, 97, - 25, + 27, 192, 131, 1, 81, 97, - 3, - 224, + 27, + 160, 132, 1, 81, - 9, + 8, 97, - 25, + 27, 224, 131, 1, 82, 128, 97, - 6, - 32, + 27, + 224, 131, 1, 81, - 130, - 3, 97, - 6, - 96, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 26, + 28, 0, 131, 1, - 129, - 144, 82, + 128, 97, - 25, - 64, + 8, + 0, 131, 1, 81, - 130, - 145, + 97, + 21, + 192, + 132, + 1, + 81, 9, 97, - 26, + 28, 32, 131, 1, 82, 128, 97, - 26, + 28, 32, 131, 1, 81, 97, - 25, - 224, + 28, + 0, 132, 1, 81, 8, 97, - 26, + 28, 64, 131, 1, 82, 128, 97, - 26, + 28, 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 26, + 28, 96, 131, 1, 82, 128, 97, - 7, - 192, + 8, + 32, 131, 1, 81, 97, - 19, - 192, + 22, + 64, 132, 1, 81, 9, 97, - 26, + 28, 128, 131, 1, 82, 128, 97, - 26, + 28, 128, 131, 1, 81, 97, - 26, + 28, 96, 132, 1, 81, 8, 97, - 26, + 28, 160, 131, 1, 82, 128, 97, - 26, + 28, 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 26, + 28, 192, 131, 1, 82, 128, 97, - 7, - 192, + 8, + 32, 131, 1, 81, 97, - 20, - 128, + 24, + 0, 132, 1, 81, 9, 97, - 26, + 28, 224, 131, 1, 82, 128, 97, - 26, + 28, 224, 131, 1, 81, 97, - 26, + 28, 192, 132, 1, 81, 8, 97, - 27, + 29, 0, 131, 1, 82, 128, 97, - 27, + 29, 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 27, + 29, 32, 131, 1, 82, 128, 97, - 7, - 224, + 8, + 32, 131, 1, 81, 97, - 21, - 0, + 25, + 96, 132, 1, 81, 9, 97, - 27, + 29, 64, 131, 1, 82, 128, 97, - 27, + 29, 64, 131, 1, 81, 97, - 27, + 29, 32, 132, 1, 81, 8, 97, - 27, + 29, 96, 131, 1, 82, 128, 97, - 27, + 29, 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 27, + 29, 128, 131, 1, @@ -26800,492 +27768,455 @@ pub mod inclusion_verifier { 128, 97, 7, - 224, + 160, 131, 1, 81, + 130, + 3, + 96, + 3, + 8, 97, - 22, - 192, - 132, - 1, - 81, - 9, - 97, - 27, + 29, 160, 131, 1, + 129, + 144, 82, - 128, 97, - 27, - 160, + 26, + 64, 131, 1, 81, + 130, + 145, + 9, 97, - 27, - 128, - 132, - 1, - 81, - 8, - 97, - 27, + 29, 192, 131, 1, 82, 128, 97, - 27, + 29, 192, 131, 1, 81, 97, - 3, - 224, + 26, + 192, 132, 1, 81, 9, 97, - 27, + 29, 224, 131, 1, 82, 128, 97, - 7, + 29, 224, 131, 1, 81, 97, - 24, - 32, + 29, + 128, 132, 1, 81, - 9, + 8, 97, - 28, + 30, 0, 131, 1, 82, 128, 97, - 28, + 30, 0, 131, 1, 81, 97, - 27, - 224, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 28, + 30, 32, 131, 1, 82, 128, 97, - 28, - 32, + 29, + 192, 131, 1, 81, 97, - 3, - 224, + 27, + 64, 132, 1, 81, 9, 97, - 28, + 30, 64, 131, 1, 82, 128, 97, - 7, - 96, + 30, + 64, 131, 1, 81, - 130, - 3, - 96, - 3, + 97, + 30, + 32, + 132, + 1, + 81, 8, 97, - 28, + 30, 96, 131, 1, - 129, - 144, 82, + 128, 97, - 25, - 0, + 30, + 96, 131, 1, 81, - 130, - 145, + 97, + 4, + 32, + 132, + 1, + 81, 9, 97, - 28, + 30, 128, 131, 1, 82, 128, 97, - 28, - 128, + 7, + 160, 131, 1, 81, 97, - 25, - 128, + 26, + 32, 132, 1, 81, 9, 97, - 28, + 30, 160, 131, 1, 82, 128, 97, - 28, + 30, 160, 131, 1, 81, 97, - 28, - 64, + 29, + 160, 132, 1, 81, - 8, + 9, 97, - 28, + 30, 192, 131, 1, 82, 128, 97, - 28, + 30, 192, 131, 1, 81, 97, - 3, - 224, + 26, + 96, 132, 1, 81, 9, 97, - 28, + 30, 224, 131, 1, 82, 128, 97, - 28, - 128, + 30, + 224, 131, 1, 81, 97, - 26, - 0, + 6, + 128, 132, 1, 81, 9, 97, - 29, + 31, 0, 131, 1, 82, 128, 97, - 29, - 0, + 6, + 128, 131, 1, 81, - 97, - 28, - 224, - 132, + 130, + 3, + 96, 1, - 81, 8, 97, - 29, + 31, 32, 131, 1, + 129, + 144, 82, - 128, 97, - 29, - 32, + 31, + 0, 131, 1, 81, - 97, - 3, - 224, - 132, - 1, - 81, + 130, + 145, 9, 97, - 29, + 31, 64, 131, 1, 82, 128, 97, - 7, - 96, + 31, + 64, 131, 1, 81, 97, - 24, - 224, + 30, + 128, 132, 1, 81, - 9, + 8, 97, - 29, + 31, 96, 131, 1, 82, 128, 97, - 29, + 31, 96, 131, 1, 81, 97, - 28, - 96, + 4, + 32, 132, 1, 81, 9, 97, - 29, + 31, 128, 131, 1, 82, 128, 97, - 29, - 128, + 6, + 0, 131, 1, 81, + 130, + 3, 97, - 25, + 6, 32, 132, 1, 81, - 9, + 8, 97, - 29, + 31, 160, 131, 1, 82, 128, 97, - 29, + 31, 160, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 29, + 31, 192, 131, 1, + 129, + 144, 82, - 128, 97, 6, - 64, + 0, 131, 1, 81, 130, - 3, - 96, - 1, + 145, 8, 97, - 29, + 31, 224, 131, 1, - 129, - 144, 82, + 128, 97, - 29, - 192, + 6, + 64, 131, 1, 81, 130, - 145, - 9, + 3, 97, - 30, + 31, + 224, + 132, + 1, + 81, + 8, + 97, + 32, 0, 131, 1, + 129, + 144, 82, - 128, 97, 30, - 0, + 224, 131, 1, 81, + 130, + 145, + 9, 97, - 29, - 64, - 132, - 1, - 81, - 8, - 97, - 30, + 32, 32, 131, 1, 82, 128, 97, - 30, + 32, 32, 131, 1, 81, 97, - 3, - 224, + 31, + 128, 132, 1, 81, - 9, + 8, 97, - 30, + 32, 64, 131, 1, 82, 128, 97, - 6, + 32, 64, 131, 1, 81, - 96, - 2, - 9, - 97, - 30, - 96, - 131, - 1, - 82, - 128, - 97, - 5, - 192, - 131, - 1, - 81, - 130, - 3, 97, - 5, - 224, + 4, + 32, 132, 1, 81, - 8, - 97, - 30, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 30, - 96, - 131, - 1, - 81, - 130, - 145, 9, 97, - 30, - 160, + 32, + 96, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 32, 131, 1, 81, @@ -27299,34 +28230,33 @@ pub mod inclusion_verifier { 81, 8, 97, - 30, - 192, + 32, + 128, 131, 1, 82, 128, 97, - 30, - 192, + 32, + 128, 131, 1, 81, - 130, - 3, 97, - 30, - 160, + 6, + 128, 132, 1, 81, - 8, + 9, 97, - 30, - 224, + 32, + 160, 131, 1, + 129, + 144, 82, - 128, 97, 6, 32, @@ -27334,47 +28264,41 @@ pub mod inclusion_verifier { 1, 81, 130, - 3, - 97, - 5, - 224, - 132, - 1, - 81, + 145, 8, 97, - 31, - 0, + 32, + 192, 131, 1, 82, 128, 97, - 31, - 0, + 6, + 96, 131, 1, 81, 130, 3, 97, - 30, - 224, + 32, + 192, 132, 1, 81, 8, 97, - 31, 32, + 224, 131, 1, 129, 144, 82, 97, - 29, - 160, + 30, + 224, 131, 1, 81, @@ -27382,138 +28306,138 @@ pub mod inclusion_verifier { 145, 9, 97, - 31, - 64, + 33, + 0, 131, 1, 82, 128, 97, - 31, - 64, + 33, + 0, 131, 1, 81, 97, - 30, - 64, + 32, + 96, 132, 1, 81, 8, 97, - 31, - 96, + 33, + 32, 131, 1, 82, 128, 97, - 31, - 96, + 33, + 32, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 31, - 128, + 33, + 64, 131, 1, 82, 128, 97, - 24, - 192, + 26, + 0, 131, 1, 81, 97, - 28, - 96, + 29, + 160, 132, 1, 81, 9, 97, - 31, - 160, + 33, + 96, 131, 1, 82, 128, 97, - 31, - 160, + 33, + 96, 131, 1, 81, 97, - 25, - 32, + 26, + 96, 132, 1, 81, 9, 97, - 31, - 192, + 33, + 128, 131, 1, 82, 128, 97, - 5, - 224, + 6, + 32, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 31, - 224, + 33, + 160, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, 130, 3, 97, - 31, - 224, + 33, + 160, 132, 1, 81, 8, 97, - 32, - 0, + 33, + 192, 131, 1, 129, 144, 82, 97, - 31, - 192, + 33, + 128, 131, 1, 81, @@ -27521,56 +28445,56 @@ pub mod inclusion_verifier { 145, 9, 97, - 32, - 32, + 33, + 224, 131, 1, 82, 128, 97, - 32, - 32, + 33, + 224, 131, 1, 81, 97, - 31, - 128, + 33, + 64, 132, 1, 81, 8, 97, - 32, - 64, + 34, + 0, 131, 1, 82, 128, 97, - 32, - 64, + 34, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, + 34, 32, - 96, 131, 1, 129, 144, 82, 97, - 32, - 32, + 33, + 224, 131, 1, 81, @@ -27578,35 +28502,35 @@ pub mod inclusion_verifier { 145, 8, 97, - 32, - 128, + 34, + 64, 131, 1, 82, 128, 97, - 32, - 128, + 34, + 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 32, - 160, + 34, + 96, 131, 1, 82, 128, 97, - 8, - 224, + 9, + 32, 131, 1, 81, @@ -27616,15 +28540,15 @@ pub mod inclusion_verifier { 1, 8, 97, - 32, - 192, + 34, + 128, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -27633,54 +28557,54 @@ pub mod inclusion_verifier { 145, 9, 97, - 32, - 224, + 34, + 160, 131, 1, 82, 128, 97, - 32, - 224, + 34, + 160, 131, 1, 81, 97, - 32, - 160, + 34, + 96, 132, 1, 81, 8, 97, - 33, - 0, + 34, + 192, 131, 1, 82, 128, 97, - 33, - 0, + 34, + 192, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 33, - 32, + 34, + 224, 131, 1, 82, 97, 9, - 64, + 128, 130, 1, 81, @@ -27689,37 +28613,37 @@ pub mod inclusion_verifier { 128, 9, 97, - 33, - 64, + 35, + 0, 131, 1, 82, 128, 97, 9, - 64, + 128, 131, 1, 81, 130, 3, 97, - 33, - 64, + 35, + 0, 132, 1, 81, 8, 97, - 33, - 96, + 35, + 32, 131, 1, 129, 144, 82, 97, - 17, + 18, 64, 131, 1, @@ -27728,55 +28652,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 33, - 128, + 35, + 64, 131, 1, 82, 128, 97, - 33, - 128, + 35, + 64, 131, 1, 81, 97, - 33, - 32, + 34, + 224, 132, 1, 81, 8, 97, - 33, - 160, + 35, + 96, 131, 1, 82, 128, 97, - 33, - 160, + 35, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 33, - 192, + 35, + 128, 131, 1, 82, 128, 97, 9, - 32, + 96, 131, 1, 81, @@ -27784,21 +28708,21 @@ pub mod inclusion_verifier { 3, 97, 9, - 64, + 128, 132, 1, 81, 8, 97, - 33, - 224, + 35, + 160, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -27807,54 +28731,54 @@ pub mod inclusion_verifier { 145, 9, 97, - 34, - 0, + 35, + 192, 131, 1, 82, 128, 97, - 34, - 0, + 35, + 192, 131, 1, 81, 97, - 33, - 192, + 35, + 128, 132, 1, 81, 8, 97, - 34, - 32, + 35, + 224, 131, 1, 82, 128, 97, - 34, - 32, + 35, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 34, - 64, + 36, + 0, 131, 1, 82, 128, 97, - 17, + 18, 64, 131, 1, @@ -27865,35 +28789,35 @@ pub mod inclusion_verifier { 1, 8, 97, - 34, - 96, + 36, + 32, 131, 1, 82, 128, 97, - 17, + 18, 128, 131, 1, 81, 97, - 17, + 18, 96, 132, 1, 81, 8, 97, - 34, - 128, + 36, + 64, 131, 1, 129, 144, 82, 97, - 17, + 18, 160, 131, 1, @@ -27902,15 +28826,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 160, + 36, + 96, 131, 1, 129, 144, 82, 97, - 17, + 18, 192, 131, 1, @@ -27919,15 +28843,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 192, + 36, + 128, 131, 1, 129, 144, 82, 97, - 17, + 18, 224, 131, 1, @@ -27936,70 +28860,70 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 224, + 36, + 160, 131, 1, 82, 128, 97, - 34, - 224, + 36, + 160, 131, 1, 81, 130, 3, 97, - 34, - 96, + 36, + 32, 132, 1, 81, 8, 97, - 35, - 0, + 36, + 192, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 32, + 96, 132, 1, 81, 9, 97, - 35, - 32, + 36, + 224, 131, 1, 82, 128, 97, - 35, - 32, + 36, + 224, 131, 1, 81, 97, 6, - 160, + 224, 132, 1, 81, 8, 97, - 35, - 64, + 37, + 0, 131, 1, 129, @@ -28007,7 +28931,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28015,48 +28939,48 @@ pub mod inclusion_verifier { 145, 8, 97, - 35, - 96, + 37, + 32, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 64, + 128, 132, 1, 81, 9, 97, - 35, - 128, + 37, + 64, 131, 1, 82, 128, 97, - 35, - 128, + 37, + 64, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 35, - 160, + 37, + 96, 131, 1, 129, @@ -28064,7 +28988,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28072,16 +28996,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 35, - 192, + 37, + 128, 131, 1, 129, 144, 82, 97, - 35, - 96, + 37, + 32, 131, 1, 81, @@ -28089,48 +29013,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 35, - 224, + 37, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 96, + 160, 132, 1, 81, 9, 97, - 36, - 0, + 37, + 192, 131, 1, 82, 128, 97, - 36, - 0, + 37, + 192, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 36, - 32, + 37, + 224, 131, 1, 129, @@ -28138,7 +29062,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28146,16 +29070,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 36, - 64, + 38, + 0, 131, 1, 129, 144, 82, 97, - 35, - 224, + 37, + 160, 131, 1, 81, @@ -28163,48 +29087,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 36, - 96, + 38, + 32, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 128, + 192, 132, 1, 81, 9, 97, - 36, - 128, + 38, + 64, 131, 1, 82, 128, 97, - 36, - 128, + 38, + 64, 131, 1, 81, 97, - 6, - 192, + 7, + 0, 132, 1, 81, 8, 97, - 36, - 160, + 38, + 96, 131, 1, 129, @@ -28212,7 +29136,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28220,16 +29144,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 36, - 192, + 38, + 128, 131, 1, 129, 144, 82, 97, - 36, - 96, + 38, + 32, 131, 1, 81, @@ -28237,8 +29161,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 36, - 224, + 38, + 160, 131, 1, 129, @@ -28246,7 +29170,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 0, + 64, 131, 1, 81, @@ -28254,15 +29178,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 37, - 0, + 38, + 192, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28270,48 +29194,48 @@ pub mod inclusion_verifier { 1, 9, 97, - 37, - 32, + 38, + 224, 131, 1, 82, 128, 97, - 37, - 32, + 38, + 224, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 37, - 64, + 39, + 0, 131, 1, 82, 128, 97, - 37, - 64, + 39, + 0, 131, 1, 81, 97, 6, - 160, + 224, 132, 1, 81, 8, 97, - 37, - 96, + 39, + 32, 131, 1, 129, @@ -28319,7 +29243,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28327,15 +29251,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 37, - 128, + 39, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28374,48 +29298,48 @@ pub mod inclusion_verifier { 162, 9, 97, - 37, - 160, + 39, + 96, 131, 1, 82, 128, 97, - 37, - 160, + 39, + 96, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 37, - 192, + 39, + 128, 131, 1, 82, 128, 97, - 37, - 192, + 39, + 128, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 37, - 224, + 39, + 160, 131, 1, 129, @@ -28423,7 +29347,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28431,16 +29355,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 38, - 0, + 39, + 192, 131, 1, 129, 144, 82, 97, - 37, - 128, + 39, + 64, 131, 1, 81, @@ -28448,15 +29372,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 38, - 32, + 39, + 224, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28495,48 +29419,48 @@ pub mod inclusion_verifier { 43, 9, 97, - 38, - 64, + 40, + 0, 131, 1, 82, 128, 97, - 38, - 64, + 40, + 0, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 38, - 96, + 40, + 32, 131, 1, 82, 128, 97, - 38, - 96, + 40, + 32, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 38, - 128, + 40, + 64, 131, 1, 129, @@ -28544,7 +29468,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28552,16 +29476,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 38, - 160, + 40, + 96, 131, 1, 129, 144, 82, 97, - 38, - 32, + 39, + 224, 131, 1, 81, @@ -28569,15 +29493,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 38, - 192, + 40, + 128, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28616,48 +29540,48 @@ pub mod inclusion_verifier { 82, 9, 97, - 38, - 224, + 40, + 160, 131, 1, 82, 128, 97, - 38, - 224, + 40, + 160, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 39, - 0, + 40, + 192, 131, 1, 82, 128, 97, - 39, - 0, + 40, + 192, 131, 1, 81, 97, - 6, - 192, + 7, + 0, 132, 1, 81, 8, 97, - 39, - 32, + 40, + 224, 131, 1, 129, @@ -28665,7 +29589,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28673,16 +29597,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 39, - 64, + 41, + 0, 131, 1, 129, 144, 82, 97, - 38, - 192, + 40, + 128, 131, 1, 81, @@ -28690,16 +29614,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 96, + 41, + 32, 131, 1, 129, 144, 82, 97, - 8, - 224, + 9, + 32, 131, 1, 81, @@ -28707,38 +29631,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 128, + 41, + 64, 131, 1, 82, 128, 97, - 39, - 128, + 41, + 64, 131, 1, 81, 130, 3, 97, - 37, - 0, + 38, + 192, 132, 1, 81, 8, 97, - 39, - 160, + 41, + 96, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 192, 131, 1, 81, @@ -28746,88 +29670,88 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 192, + 41, + 128, 131, 1, 82, 128, 97, - 39, - 192, + 41, + 128, 131, 1, 81, 97, - 34, - 64, + 36, + 0, 132, 1, 81, 8, 97, - 39, - 224, + 41, + 160, 131, 1, 82, 128, 97, - 39, - 224, + 41, + 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 40, - 0, + 41, + 192, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 160, + 224, 132, 1, 81, 9, 97, - 40, - 32, + 41, + 224, 131, 1, 82, 128, 97, - 40, - 32, + 41, + 224, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 8, 97, - 40, - 64, + 42, + 0, 131, 1, 129, @@ -28835,7 +29759,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28843,48 +29767,48 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 96, + 42, + 32, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, - 8, - 192, + 9, + 0, 132, 1, 81, 9, 97, - 40, - 128, + 42, + 64, 131, 1, 82, 128, 97, - 40, - 128, + 42, + 64, 131, 1, 81, 97, - 18, - 64, + 19, + 128, 132, 1, 81, 8, 97, - 40, - 160, + 42, + 96, 131, 1, 129, @@ -28892,7 +29816,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28900,16 +29824,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 192, + 42, + 128, 131, 1, 129, 144, 82, 97, - 40, - 96, + 42, + 32, 131, 1, 81, @@ -28917,8 +29841,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 40, - 224, + 42, + 160, 131, 1, 129, @@ -28926,7 +29850,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 96, + 160, 131, 1, 81, @@ -28934,15 +29858,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 41, - 0, + 42, + 192, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28980,48 +29904,48 @@ pub mod inclusion_verifier { 66, 9, 97, - 41, - 32, + 42, + 224, 131, 1, 82, 128, 97, - 41, - 32, + 42, + 224, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 41, - 64, + 43, + 0, 131, 1, 82, 128, 97, - 41, - 64, + 43, + 0, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 8, 97, - 41, - 96, + 43, + 32, 131, 1, 129, @@ -29029,7 +29953,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -29037,15 +29961,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 41, - 128, + 43, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -29084,48 +30008,48 @@ pub mod inclusion_verifier { 157, 9, 97, - 41, - 160, + 43, + 96, 131, 1, 82, 128, 97, - 41, - 160, + 43, + 96, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 41, - 192, + 43, + 128, 131, 1, 82, 128, 97, - 41, - 192, + 43, + 128, 131, 1, 81, 97, - 18, - 64, + 19, + 128, 132, 1, 81, 8, 97, - 41, - 224, + 43, + 160, 131, 1, 129, @@ -29133,7 +30057,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -29141,16 +30065,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 42, - 0, + 43, + 192, 131, 1, 129, 144, 82, 97, - 41, - 128, + 43, + 64, 131, 1, 81, @@ -29158,8 +30082,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 32, + 43, + 224, 131, 1, 129, @@ -29167,7 +30091,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 64, + 128, 131, 1, 81, @@ -29175,38 +30099,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 64, + 44, + 0, 131, 1, 82, 128, 97, - 42, - 64, + 44, + 0, 131, 1, 81, 130, 3, 97, - 41, - 0, + 42, + 192, 132, 1, 81, 8, 97, - 42, - 96, + 44, + 32, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 192, 131, 1, 81, @@ -29214,55 +30138,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 128, + 44, + 64, 131, 1, 82, 128, 97, - 42, - 128, + 44, + 64, 131, 1, 81, 97, - 40, - 0, + 41, + 192, 132, 1, 81, 8, 97, - 42, - 160, + 44, + 96, 131, 1, 82, 128, 97, - 42, - 160, + 44, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 42, - 192, + 44, + 128, 131, 1, 82, 128, 97, 9, - 128, + 192, 131, 1, 81, @@ -29272,15 +30196,15 @@ pub mod inclusion_verifier { 1, 8, 97, - 42, - 224, + 44, + 160, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -29289,54 +30213,54 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 0, + 44, + 192, 131, 1, 82, 128, 97, - 43, - 0, + 44, + 192, 131, 1, 81, 97, - 42, - 192, + 44, + 128, 132, 1, 81, 8, 97, - 43, - 32, + 44, + 224, 131, 1, 82, 128, 97, - 43, - 32, + 44, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 43, - 64, + 45, + 0, 131, 1, 82, 97, 9, - 128, + 192, 130, 1, 81, @@ -29345,37 +30269,37 @@ pub mod inclusion_verifier { 128, 9, 97, - 43, - 96, + 45, + 32, 131, 1, 82, 128, 97, 9, - 128, + 192, 131, 1, 81, 130, 3, 97, - 43, - 96, + 45, + 32, 132, 1, 81, 8, 97, - 43, - 128, + 45, + 64, 131, 1, 129, 144, 82, 97, - 17, + 18, 64, 131, 1, @@ -29384,68 +30308,68 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 160, + 45, + 96, 131, 1, 82, 128, 97, - 43, - 160, + 45, + 96, 131, 1, 81, 97, - 43, - 64, + 45, + 0, 132, 1, 81, 8, 97, - 43, - 192, + 45, + 128, 131, 1, 82, 128, 97, - 43, - 192, + 45, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 43, - 224, + 45, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 44, - 0, + 45, + 192, 131, 1, 129, @@ -29453,7 +30377,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 160, + 224, 131, 1, 81, @@ -29461,36 +30385,36 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 32, + 45, + 224, 131, 1, 82, 128, 97, 2, - 128, + 192, 131, 1, 81, 97, 10, - 0, + 64, 132, 1, 81, 8, 97, - 44, - 64, + 46, + 0, 131, 1, 129, 144, 82, 97, - 44, - 32, + 45, + 224, 131, 1, 81, @@ -29498,15 +30422,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 96, + 46, + 32, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, @@ -29515,30 +30439,30 @@ pub mod inclusion_verifier { 0, 9, 97, - 44, - 128, + 46, + 64, 131, 1, 82, 128, 97, - 44, - 128, + 46, + 64, 131, 1, 81, 130, 3, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 44, - 160, + 46, + 96, 131, 1, 129, @@ -29546,7 +30470,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 64, + 128, 131, 1, 81, @@ -29554,8 +30478,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 192, + 46, + 128, 131, 1, 129, @@ -29563,7 +30487,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 32, + 96, 131, 1, 81, @@ -29571,8 +30495,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 44, - 224, + 46, + 160, 131, 1, 129, @@ -29580,7 +30504,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 128, + 192, 131, 1, 81, @@ -29588,36 +30512,36 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 0, + 46, + 192, 131, 1, 82, 128, 97, 2, - 128, + 192, 131, 1, 81, 97, 7, - 32, + 96, 132, 1, 81, 8, 97, - 45, - 32, + 46, + 224, 131, 1, 129, 144, 82, 97, - 45, - 0, + 46, + 192, 131, 1, 81, @@ -29625,38 +30549,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 64, + 47, + 0, 131, 1, 82, 128, 97, - 45, - 64, + 47, + 0, 131, 1, 81, 130, 3, 97, - 44, - 96, + 46, + 32, 132, 1, 81, 8, 97, - 45, - 96, + 47, + 32, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 192, 131, 1, 81, @@ -29664,77 +30588,77 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 128, + 47, + 64, 131, 1, 82, 128, 97, - 45, - 128, + 47, + 64, 131, 1, 81, 97, - 43, - 224, + 45, + 160, 132, 1, 81, 8, 97, - 45, - 160, + 47, + 96, 131, 1, 82, 128, 97, - 45, - 160, + 47, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 45, - 192, + 47, + 128, 131, 1, 82, 128, 97, 10, - 0, + 64, 131, 1, 81, 130, 3, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 45, - 224, + 47, + 160, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -29743,98 +30667,98 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 0, + 47, + 192, 131, 1, 82, 128, 97, - 46, - 0, + 47, + 192, 131, 1, 81, 97, - 45, - 192, + 47, + 128, 132, 1, 81, 8, 97, - 46, - 32, + 47, + 224, 131, 1, 82, 128, 97, - 46, - 32, + 47, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 46, - 64, + 48, + 0, 131, 1, 82, 128, 97, - 35, - 0, + 36, + 192, 131, 1, 81, 97, - 45, - 224, + 47, + 160, 132, 1, 81, 9, 97, - 46, - 96, + 48, + 32, 131, 1, 82, 128, 97, - 9, - 224, + 10, + 32, 131, 1, 81, 130, 3, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 46, - 128, + 48, + 64, 131, 1, 129, 144, 82, 97, - 46, - 96, + 48, + 32, 131, 1, 81, @@ -29842,34 +30766,34 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 160, + 48, + 96, 131, 1, 82, 128, 97, - 46, - 160, + 48, + 96, 131, 1, 81, 97, - 46, - 64, + 48, + 0, 132, 1, 81, 8, 97, - 46, - 192, + 48, + 128, 131, 1, 82, 97, 13, - 0, + 64, 130, 1, 81, @@ -29878,8 +30802,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 46, - 224, + 48, + 160, 131, 1, 129, @@ -29887,7 +30811,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -29895,8 +30819,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 0, + 48, + 192, 131, 1, 129, @@ -29904,7 +30828,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -29912,8 +30836,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 32, + 48, + 224, 131, 1, 129, @@ -29921,7 +30845,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -29929,15 +30853,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 64, + 49, + 0, 131, 1, 82, 128, 97, 13, - 0, + 64, 131, 1, 81, @@ -29945,15 +30869,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 96, + 49, + 32, 131, 1, 82, 128, 97, - 46, - 224, + 48, + 160, 131, 1, 81, @@ -29961,15 +30885,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 128, + 49, + 64, 131, 1, 82, 128, 97, - 47, - 0, + 48, + 192, 131, 1, 81, @@ -29977,15 +30901,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 160, + 49, + 96, 131, 1, 82, 128, 97, - 47, - 32, + 48, + 224, 131, 1, 81, @@ -29993,48 +30917,48 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 192, + 49, + 128, 131, 1, 82, 128, 97, 13, - 32, + 96, 131, 1, 81, 97, - 46, - 192, + 48, + 128, 132, 1, 81, 9, 97, - 47, - 224, + 49, + 160, 131, 1, 82, 128, 97, 5, - 128, + 192, 131, 1, 81, 97, - 11, - 192, + 12, + 0, 132, 1, 81, 9, 97, - 48, - 0, + 49, + 192, 131, 1, 82, @@ -30043,21 +30967,21 @@ pub mod inclusion_verifier { 1, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 32, + 49, + 224, 131, 1, 82, 128, 97, - 48, - 32, + 49, + 224, 131, 1, 81, @@ -30065,14 +30989,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 64, + 50, + 0, 131, 1, 82, @@ -30112,21 +31036,21 @@ pub mod inclusion_verifier { 95, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 96, + 50, + 32, 131, 1, 82, 128, 97, - 48, - 96, + 50, + 32, 131, 1, 81, @@ -30134,14 +31058,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 128, + 50, + 64, 131, 1, 82, @@ -30181,21 +31105,21 @@ pub mod inclusion_verifier { 2, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 160, + 50, + 96, 131, 1, 82, 128, 97, - 48, - 160, + 50, + 96, 131, 1, 81, @@ -30203,14 +31127,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 192, + 50, + 128, 131, 1, 82, @@ -30250,21 +31174,21 @@ pub mod inclusion_verifier { 26, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 224, + 50, + 160, 131, 1, 82, 128, 97, - 48, - 224, + 50, + 160, 131, 1, 81, @@ -30272,14 +31196,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 49, - 0, + 50, + 192, 131, 1, 82, @@ -30319,15 +31243,15 @@ pub mod inclusion_verifier { 121, 139, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30370,15 +31294,15 @@ pub mod inclusion_verifier { 134, 118, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -30388,8 +31312,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 32, + 50, + 224, 132, 1, 82, @@ -30430,15 +31354,15 @@ pub mod inclusion_verifier { 97, 54, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30481,15 +31405,15 @@ pub mod inclusion_verifier { 231, 116, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -30499,8 +31423,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 64, + 51, + 0, 132, 1, 82, @@ -30541,15 +31465,15 @@ pub mod inclusion_verifier { 12, 40, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30592,30 +31516,30 @@ pub mod inclusion_verifier { 239, 215, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 49, - 96, + 51, + 32, 132, 1, 82, 80, 97, - 48, - 64, + 50, + 0, 130, 1, 81, @@ -30625,16 +31549,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 49, - 128, + 51, + 64, 131, 1, 129, 144, 82, 97, - 48, - 128, + 50, + 64, 131, 1, 81, @@ -30642,16 +31566,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 49, - 160, + 51, + 96, 131, 1, 129, 144, 82, 97, - 49, - 0, + 50, + 192, 131, 1, 81, @@ -30659,8 +31583,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 49, - 192, + 51, + 128, 131, 1, 82, @@ -30669,7 +31593,7 @@ pub mod inclusion_verifier { 1, 97, 11, - 64, + 128, 132, 1, 81, @@ -30712,7 +31636,7 @@ pub mod inclusion_verifier { 0, 97, 5, - 128, + 192, 135, 1, 81, @@ -30722,8 +31646,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 224, + 51, + 160, 132, 1, 82, @@ -30764,15 +31688,15 @@ pub mod inclusion_verifier { 76, 242, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30815,15 +31739,15 @@ pub mod inclusion_verifier { 179, 15, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -30833,8 +31757,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 0, + 51, + 192, 132, 1, 82, @@ -30875,15 +31799,15 @@ pub mod inclusion_verifier { 141, 207, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30926,15 +31850,15 @@ pub mod inclusion_verifier { 38, 251, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -30944,8 +31868,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 32, + 51, + 224, 132, 1, 82, @@ -30986,15 +31910,15 @@ pub mod inclusion_verifier { 8, 51, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31037,36 +31961,36 @@ pub mod inclusion_verifier { 46, 39, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 50, - 64, + 52, + 0, 132, 1, 82, 80, 97, - 48, - 192, + 50, + 128, 130, 1, 81, 97, - 49, - 160, + 51, + 96, 131, 1, 81, @@ -31075,8 +31999,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 50, - 96, + 52, + 32, 131, 1, 82, @@ -31117,14 +32041,14 @@ pub mod inclusion_verifier { 163, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31168,14 +32092,14 @@ pub mod inclusion_verifier { 94, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -31185,8 +32109,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 128, + 52, + 64, 132, 1, 82, @@ -31228,14 +32152,14 @@ pub mod inclusion_verifier { 94, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31279,14 +32203,14 @@ pub mod inclusion_verifier { 227, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -31296,8 +32220,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 160, + 52, + 96, 132, 1, 82, @@ -31339,14 +32263,14 @@ pub mod inclusion_verifier { 232, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31390,14 +32314,14 @@ pub mod inclusion_verifier { 25, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -31407,8 +32331,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 192, + 52, + 128, 132, 1, 82, @@ -31450,14 +32374,14 @@ pub mod inclusion_verifier { 25, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31501,35 +32425,35 @@ pub mod inclusion_verifier { 55, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 50, - 224, + 52, + 160, 132, 1, 82, 80, 97, - 49, - 0, + 50, + 192, 130, 1, 81, 97, - 49, - 128, + 51, + 64, 131, 1, 81, @@ -31538,22 +32462,22 @@ pub mod inclusion_verifier { 144, 9, 97, - 51, - 0, + 52, + 192, 131, 1, 82, 97, - 49, - 32, + 50, + 224, 130, 1, 81, 129, 129, 97, - 49, - 64, + 51, + 0, 133, 1, 81, @@ -31562,16 +32486,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 32, + 52, + 224, 132, 1, 82, 129, 129, 97, - 49, - 96, + 51, + 32, 133, 1, 81, @@ -31580,16 +32504,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 64, + 53, + 0, 132, 1, 82, 129, 129, 97, - 49, - 224, + 51, + 160, 133, 1, 81, @@ -31598,16 +32522,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 96, + 53, + 32, 132, 1, 82, 129, 129, 97, - 49, - 128, + 51, + 64, 133, 1, 81, @@ -31616,16 +32540,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 128, + 53, + 64, 132, 1, 82, 129, 129, 97, - 50, - 0, + 51, + 192, 133, 1, 81, @@ -31634,16 +32558,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 160, + 53, + 96, 132, 1, 82, 129, 129, 97, - 50, - 32, + 51, + 224, 133, 1, 81, @@ -31652,16 +32576,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 192, + 53, + 128, 132, 1, 82, 129, 129, 97, - 50, - 64, + 52, + 0, 133, 1, 81, @@ -31670,16 +32594,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 224, + 53, + 160, 132, 1, 82, 129, 129, 97, - 50, - 96, + 52, + 32, 133, 1, 81, @@ -31688,16 +32612,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 0, + 53, + 192, 132, 1, 82, 129, 129, 97, - 50, - 128, + 52, + 64, 133, 1, 81, @@ -31706,16 +32630,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 32, + 53, + 224, 132, 1, 82, 129, 129, 97, - 50, - 160, + 52, + 96, 133, 1, 81, @@ -31724,16 +32648,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 64, + 54, + 0, 132, 1, 82, 129, 129, 97, - 49, - 160, + 51, + 96, 133, 1, 81, @@ -31742,16 +32666,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 96, + 54, + 32, 132, 1, 82, 129, 129, 97, - 50, - 192, + 52, + 128, 133, 1, 81, @@ -31760,16 +32684,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 128, + 54, + 64, 132, 1, 82, 129, 129, 97, - 50, - 224, + 52, + 160, 133, 1, 81, @@ -31778,16 +32702,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 160, + 54, + 96, 132, 1, 82, 129, 129, 97, - 51, - 0, + 52, + 192, 133, 1, 81, @@ -31796,8 +32720,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 192, + 54, + 128, 132, 1, 82, @@ -31805,36 +32729,36 @@ pub mod inclusion_verifier { 96, 32, 97, - 53, - 0, + 54, + 192, 131, 1, 82, 96, 32, 97, - 53, - 32, + 54, + 224, 131, 1, 82, 96, 32, 97, - 53, - 64, + 55, + 0, 131, 1, 82, 97, - 52, - 192, + 54, + 128, 130, 1, 81, 97, - 53, - 96, + 55, + 32, 131, 1, 82, @@ -31872,8 +32796,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 53, - 128, + 55, + 64, 131, 1, 82, @@ -31884,8 +32808,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 225, 131, 57, 129, @@ -31893,8 +32817,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 53, - 160, + 55, + 96, 131, 1, 82, @@ -31904,15 +32828,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 52, - 224, + 54, + 160, 133, 1, 96, 192, 97, - 53, - 0, + 54, + 192, 135, 1, 96, @@ -31924,16 +32848,16 @@ pub mod inclusion_verifier { 146, 80, 97, - 52, - 224, + 54, + 160, 130, 1, 81, 96, 0, 97, - 51, - 0, + 52, + 192, 132, 1, 81, @@ -31942,15 +32866,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 160, + 54, + 96, 134, 1, 81, 9, 97, - 51, - 0, + 52, + 192, 133, 1, 82, @@ -31961,8 +32885,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 224, + 52, + 160, 132, 1, 81, @@ -31971,15 +32895,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 128, + 54, + 64, 134, 1, 81, 9, 97, - 50, - 224, + 52, + 160, 133, 1, 82, @@ -31990,8 +32914,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 192, + 52, + 128, 132, 1, 81, @@ -32000,15 +32924,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 96, + 54, + 32, 134, 1, 81, 9, 97, - 50, - 192, + 52, + 128, 133, 1, 82, @@ -32018,9 +32942,9 @@ pub mod inclusion_verifier { 9, 145, 80, - 97, - 49, - 160, + 97, + 51, + 96, 132, 1, 81, @@ -32029,15 +32953,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 64, + 54, + 0, 134, 1, 81, 9, 97, - 49, - 160, + 51, + 96, 133, 1, 82, @@ -32048,8 +32972,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 160, + 52, + 96, 132, 1, 81, @@ -32058,15 +32982,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 32, + 53, + 224, 134, 1, 81, 9, 97, - 50, - 160, + 52, + 96, 133, 1, 82, @@ -32077,8 +33001,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 128, + 52, + 64, 132, 1, 81, @@ -32087,15 +33011,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 0, + 53, + 192, 134, 1, 81, 9, 97, - 50, - 128, + 52, + 64, 133, 1, 82, @@ -32106,8 +33030,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 96, + 52, + 32, 132, 1, 81, @@ -32116,15 +33040,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 224, + 53, + 160, 134, 1, 81, 9, 97, - 50, - 96, + 52, + 32, 133, 1, 82, @@ -32135,8 +33059,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 64, + 52, + 0, 132, 1, 81, @@ -32145,15 +33069,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 192, + 53, + 128, 134, 1, 81, 9, 97, - 50, - 64, + 52, + 0, 133, 1, 82, @@ -32164,8 +33088,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 32, + 51, + 224, 132, 1, 81, @@ -32174,15 +33098,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 160, + 53, + 96, 134, 1, 81, 9, 97, - 50, - 32, + 51, + 224, 133, 1, 82, @@ -32193,8 +33117,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 0, + 51, + 192, 132, 1, 81, @@ -32203,15 +33127,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 128, + 53, + 64, 134, 1, 81, 9, 97, - 50, - 0, + 51, + 192, 133, 1, 82, @@ -32222,8 +33146,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 128, + 51, + 64, 132, 1, 81, @@ -32232,15 +33156,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 96, + 53, + 32, 134, 1, 81, 9, 97, - 49, - 128, + 51, + 64, 133, 1, 82, @@ -32251,8 +33175,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 224, + 51, + 160, 132, 1, 81, @@ -32261,15 +33185,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 64, + 53, + 0, 134, 1, 81, 9, 97, - 49, - 224, + 51, + 160, 133, 1, 82, @@ -32280,8 +33204,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 96, + 51, + 32, 132, 1, 81, @@ -32290,15 +33214,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 32, + 52, + 224, 134, 1, 81, 9, 97, - 49, - 96, + 51, + 32, 133, 1, 82, @@ -32309,8 +33233,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 64, + 51, + 0, 132, 1, 81, @@ -32319,15 +33243,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 49, - 32, + 50, + 224, 134, 1, 81, 9, 97, - 49, - 64, + 51, + 0, 133, 1, 82, @@ -32336,16 +33260,16 @@ pub mod inclusion_verifier { 130, 9, 97, - 49, - 32, + 50, + 224, 133, 1, 129, 144, 82, 97, - 49, - 64, + 51, + 0, 133, 1, 81, @@ -32363,28 +33287,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 49, - 96, + 51, + 32, 133, 1, 81, 8, 97, - 53, - 192, + 55, + 128, 132, 1, 82, 80, 97, - 49, - 128, + 51, + 64, 130, 1, 81, 97, - 49, - 192, + 51, + 128, 131, 1, 81, @@ -32393,56 +33317,56 @@ pub mod inclusion_verifier { 144, 9, 97, - 53, - 224, + 55, + 160, 131, 1, 82, 97, - 49, - 224, + 51, + 160, 130, 1, 81, 128, 97, - 54, - 0, + 55, + 192, 132, 1, 82, 80, 128, 97, - 50, - 96, + 52, + 32, 131, 1, 81, 97, - 49, - 192, + 51, + 128, 132, 1, 81, 9, 97, - 54, - 32, + 55, + 224, 131, 1, 82, 97, - 50, - 0, + 51, + 192, 130, 1, 81, 129, 129, 97, - 50, - 32, + 51, + 224, 133, 1, 81, @@ -32452,28 +33376,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 50, - 64, + 52, + 0, 133, 1, 81, 8, 97, - 54, - 64, + 56, + 0, 132, 1, 82, 80, 97, - 49, - 160, + 51, + 96, 130, 1, 81, 97, - 49, - 192, + 51, + 128, 131, 1, 81, @@ -32482,42 +33406,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 54, - 96, + 56, + 32, 131, 1, 82, 97, - 50, - 128, + 52, + 64, 130, 1, 81, 129, 129, 97, - 50, - 160, + 52, + 96, 133, 1, 81, 8, 97, - 54, - 128, + 56, + 64, 132, 1, 82, 80, 97, - 51, - 0, + 52, + 192, 130, 1, 81, 97, - 49, - 192, + 51, + 128, 131, 1, 81, @@ -32526,42 +33450,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 54, - 160, + 56, + 96, 131, 1, 82, 97, - 50, - 192, + 52, + 128, 130, 1, 81, 129, 129, 97, - 50, - 224, + 52, + 160, 133, 1, 81, 8, 97, - 54, - 192, + 56, + 128, 132, 1, 82, 80, 97, - 53, - 192, + 55, + 128, 130, 1, 81, 97, - 54, - 0, + 55, + 192, 131, 1, 81, @@ -32574,16 +33498,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 54, - 224, + 56, + 160, 132, 1, 82, 129, 129, 97, - 54, - 64, + 56, + 0, 133, 1, 81, @@ -32592,16 +33516,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 0, + 56, + 192, 132, 1, 82, 129, 129, 97, - 54, - 128, + 56, + 64, 133, 1, 81, @@ -32610,16 +33534,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 32, + 56, + 224, 132, 1, 82, 129, 129, 97, - 54, - 192, + 56, + 128, 133, 1, 81, @@ -32628,8 +33552,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 64, + 57, + 0, 132, 1, 82, @@ -32637,36 +33561,36 @@ pub mod inclusion_verifier { 96, 32, 97, - 55, - 128, + 57, + 64, 131, 1, 82, 96, 32, 97, - 55, - 160, + 57, + 96, 131, 1, 82, 96, 32, 97, - 55, - 192, + 57, + 128, 131, 1, 82, 97, - 55, - 64, + 57, + 0, 130, 1, 81, 97, - 55, - 224, + 57, + 160, 131, 1, 82, @@ -32704,8 +33628,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 56, - 0, + 57, + 192, 131, 1, 82, @@ -32716,8 +33640,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 225, 131, 57, 129, @@ -32725,8 +33649,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 56, - 32, + 57, + 224, 131, 1, 82, @@ -32736,15 +33660,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 55, - 96, + 57, + 32, 133, 1, 96, 192, 97, - 55, - 128, + 57, + 64, 135, 1, 96, @@ -32756,16 +33680,16 @@ pub mod inclusion_verifier { 146, 80, 97, - 55, - 96, + 57, + 32, 130, 1, 81, 96, 0, 97, - 54, - 192, + 56, + 128, 132, 1, 81, @@ -32774,15 +33698,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 55, - 32, + 56, + 224, 134, 1, 81, 9, 97, - 54, - 192, + 56, + 128, 133, 1, 82, @@ -32793,8 +33717,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 128, + 56, + 64, 132, 1, 81, @@ -32803,15 +33727,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 55, - 0, + 56, + 192, 134, 1, 81, 9, 97, - 54, - 128, + 56, + 64, 133, 1, 82, @@ -32822,8 +33746,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 64, + 56, + 0, 132, 1, 81, @@ -32832,15 +33756,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 54, - 224, + 56, + 160, 134, 1, 81, 9, 97, - 54, - 64, + 56, + 0, 133, 1, 82, @@ -32851,8 +33775,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 0, + 55, + 192, 132, 1, 81, @@ -32861,15 +33785,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 192, + 55, + 128, 134, 1, 81, 9, 97, - 54, - 0, + 55, + 192, 133, 1, 82, @@ -32878,22 +33802,22 @@ pub mod inclusion_verifier { 130, 9, 97, - 53, - 192, + 55, + 128, 133, 1, 82, 80, 80, 97, - 54, - 0, + 55, + 192, 130, 1, 81, 97, - 53, - 224, + 55, + 160, 131, 1, 81, @@ -32902,74 +33826,74 @@ pub mod inclusion_verifier { 144, 9, 97, - 56, - 64, + 58, + 0, 131, 1, 82, 128, 97, - 54, - 64, + 56, + 0, 131, 1, 81, 97, - 54, - 32, + 55, + 224, 132, 1, 81, 9, 97, - 56, - 96, + 58, + 32, 131, 1, 82, 128, 97, - 54, - 128, + 56, + 64, 131, 1, 81, 97, - 54, - 96, + 56, + 32, 132, 1, 81, 9, 97, - 56, - 128, + 58, + 64, 131, 1, 82, 128, 97, - 54, - 192, + 56, + 128, 131, 1, 81, 97, - 54, - 160, + 56, + 96, 132, 1, 81, 9, 97, - 56, - 160, + 58, + 96, 131, 1, 82, 97, 10, - 64, + 128, 130, 1, 81, @@ -32978,8 +33902,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 56, - 192, + 58, + 128, 131, 1, 129, @@ -32987,7 +33911,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -32995,8 +33919,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 56, - 224, + 58, + 160, 131, 1, 129, @@ -33004,7 +33928,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33012,8 +33936,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 0, + 58, + 192, 131, 1, 129, @@ -33021,7 +33945,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33029,8 +33953,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 32, + 58, + 224, 131, 1, 129, @@ -33038,7 +33962,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33046,8 +33970,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 64, + 59, + 0, 131, 1, 129, @@ -33055,7 +33979,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33063,8 +33987,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 96, + 59, + 32, 131, 1, 129, @@ -33072,7 +33996,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33080,8 +34004,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 128, + 59, + 64, 131, 1, 129, @@ -33089,7 +34013,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33097,8 +34021,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 160, + 59, + 96, 131, 1, 129, @@ -33106,7 +34030,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33114,8 +34038,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 192, + 59, + 128, 131, 1, 129, @@ -33123,7 +34047,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33131,8 +34055,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 224, + 59, + 160, 131, 1, 129, @@ -33140,7 +34064,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33148,8 +34072,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 0, + 59, + 192, 131, 1, 129, @@ -33157,7 +34081,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33165,8 +34089,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 32, + 59, + 224, 131, 1, 129, @@ -33174,7 +34098,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33182,8 +34106,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 64, + 60, + 0, 131, 1, 129, @@ -33191,7 +34115,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33199,8 +34123,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 96, + 60, + 32, 131, 1, 129, @@ -33208,7 +34132,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33216,8 +34140,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 128, + 60, + 64, 131, 1, 129, @@ -33225,7 +34149,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33233,8 +34157,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 160, + 60, + 96, 131, 1, 129, @@ -33242,7 +34166,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33250,8 +34174,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 192, + 60, + 128, 131, 1, 129, @@ -33259,7 +34183,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33267,8 +34191,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 224, + 60, + 160, 131, 1, 129, @@ -33276,7 +34200,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33284,8 +34208,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 0, + 60, + 192, 131, 1, 129, @@ -33293,7 +34217,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33301,14 +34225,14 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 32, + 60, + 224, 131, 1, 82, 97, 10, - 160, + 224, 130, 1, 81, @@ -33317,8 +34241,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 59, - 64, + 61, + 0, 131, 1, 129, @@ -33326,7 +34250,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -33334,8 +34258,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 96, + 61, + 32, 131, 1, 129, @@ -33343,7 +34267,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -33351,8 +34275,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 128, + 61, + 64, 131, 1, 129, @@ -33360,7 +34284,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -33368,21 +34292,21 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 160, + 61, + 96, 131, 1, 82, 128, 97, - 49, - 32, + 50, + 224, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, @@ -33391,14 +34315,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 64, + 51, + 0, 134, 1, 81, 97, 6, - 0, + 64, 135, 1, 81, @@ -33410,30 +34334,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 96, + 51, + 32, 134, 1, 81, 97, 6, - 128, + 192, 135, 1, 81, 9, 8, 97, - 59, - 192, + 61, + 128, 132, 1, 129, 144, 82, 97, - 53, - 192, + 55, + 128, 132, 1, 81, @@ -33443,8 +34367,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 59, - 224, + 61, + 160, 131, 1, 82, @@ -33452,8 +34376,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 59, - 224, + 61, + 160, 132, 1, 81, @@ -33461,21 +34385,21 @@ pub mod inclusion_verifier { 3, 9, 97, - 60, - 0, + 61, + 192, 131, 1, 82, 128, 97, - 49, - 32, + 50, + 224, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, @@ -33484,14 +34408,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 64, + 51, + 0, 134, 1, 81, 97, 6, - 32, + 96, 135, 1, 81, @@ -33503,30 +34427,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 96, + 51, + 32, 134, 1, 81, 97, 6, - 96, + 160, 135, 1, 81, 9, 8, 97, - 60, - 32, + 61, + 224, 132, 1, 129, 144, 82, 97, - 53, - 192, + 55, + 128, 132, 1, 81, @@ -33536,8 +34460,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 60, - 64, + 62, + 0, 131, 1, 129, @@ -33545,7 +34469,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33555,311 +34479,56 @@ pub mod inclusion_verifier { 3, 9, 97, - 60, - 96, + 62, + 32, 131, 1, 82, 128, 97, 10, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 60, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 96, - 131, - 1, - 81, - 97, - 60, - 0, - 132, - 1, - 81, - 8, - 97, - 60, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 60, - 160, - 132, - 1, - 81, - 9, - 97, - 60, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 60, - 128, - 132, - 1, - 81, - 9, - 97, - 60, - 224, - 131, - 1, - 82, - 128, - 97, - 53, - 224, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 61, - 0, - 131, - 1, - 82, 128, - 97, - 49, - 224, - 131, - 1, - 81, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 61, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 64, 131, 1, - 82, - 128, - 96, - 1, - 97, - 61, - 64, - 132, - 1, 81, - 131, - 3, - 9, - 97, - 61, - 96, - 131, - 1, - 82, - 128, 96, 1, - 97, - 61, - 0, - 132, - 1, - 81, - 9, - 97, - 61, - 128, - 131, - 1, - 82, - 128, - 97, - 49, - 224, - 131, - 1, - 81, - 97, - 10, - 0, - 132, - 1, - 81, - 9, - 97, - 61, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, 9, 97, - 61, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, + 62, 64, 131, 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 61, - 224, - 131, - 1, 82, 128, 97, - 10, - 64, - 131, - 1, - 81, - 97, - 61, - 0, - 132, - 1, - 81, - 9, - 97, 62, - 0, - 131, - 1, - 82, - 128, - 97, - 61, - 224, + 32, 131, 1, 81, 97, 61, - 96, + 192, 132, 1, 81, 8, 97, 62, - 32, + 96, 131, 1, 82, 128, - 97, - 49, - 224, - 131, - 1, - 81, - 97, - 6, - 160, - 132, - 1, - 81, - 9, - 97, - 62, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, + 96, 1, - 81, - 130, - 145, - 9, 97, 62, 96, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 192, - 131, + 132, 1, 81, - 130, - 145, - 130, - 3, 9, 97, 62, @@ -33868,15 +34537,11 @@ pub mod inclusion_verifier { 1, 82, 128, - 97, - 56, - 192, - 131, + 96, 1, - 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -33889,18 +34554,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 62, - 128, + 55, + 160, 131, 1, 81, - 97, - 62, - 32, - 132, + 96, 1, - 81, - 8, + 9, 97, 62, 192, @@ -33909,14 +34570,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 6, - 192, + 128, 132, 1, 81, @@ -33930,104 +34591,79 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, + 58, 0, 131, 1, - 129, - 144, - 82, - 97, - 56, - 224, - 131, - 1, 81, 130, 145, - 130, - 3, 9, 97, 63, - 32, + 0, 131, 1, 82, 128, - 97, - 56, - 224, - 131, + 96, 1, - 81, 97, - 61, + 63, 0, 132, 1, 81, + 131, + 3, 9, 97, 63, - 64, + 32, 131, 1, 82, 128, - 97, - 63, - 32, - 131, + 96, 1, - 81, 97, 62, 192, 132, 1, 81, - 8, + 9, 97, 63, - 96, + 64, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, - 6, - 224, + 10, + 64, 132, 1, 81, 9, 97, 63, - 128, + 96, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34036,15 +34672,15 @@ pub mod inclusion_verifier { 9, 97, 63, - 160, + 128, 131, 1, 129, 144, 82, 97, - 57, - 0, + 10, + 128, 131, 1, 81, @@ -34055,75 +34691,75 @@ pub mod inclusion_verifier { 9, 97, 63, - 192, + 160, 131, 1, 82, 128, 97, - 57, - 0, + 10, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 63, - 224, + 192, 131, 1, 82, 128, 97, 63, - 192, + 160, 131, 1, 81, 97, 63, - 96, + 32, 132, 1, 81, 8, - 97, - 64, - 0, + 97, + 63, + 224, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, - 7, - 0, + 6, + 224, 132, 1, 81, 9, 97, 64, - 32, + 0, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34132,15 +34768,15 @@ pub mod inclusion_verifier { 9, 97, 64, - 64, + 32, 131, 1, 129, 144, 82, 97, - 57, - 32, + 58, + 128, 131, 1, 81, @@ -34151,75 +34787,75 @@ pub mod inclusion_verifier { 9, 97, 64, - 96, + 64, 131, 1, 82, 128, 97, - 57, - 32, + 58, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 64, - 128, + 96, 131, 1, 82, 128, 97, 64, - 96, + 64, 131, 1, 81, 97, - 64, - 0, + 63, + 224, 132, 1, 81, 8, 97, 64, - 160, + 128, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 7, - 32, + 0, 132, 1, 81, 9, 97, 64, - 192, + 160, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34228,15 +34864,15 @@ pub mod inclusion_verifier { 9, 97, 64, - 224, + 192, 131, 1, 129, 144, 82, 97, - 57, - 64, + 58, + 160, 131, 1, 81, @@ -34246,76 +34882,76 @@ pub mod inclusion_verifier { 3, 9, 97, - 65, - 0, + 64, + 224, 131, 1, 82, 128, 97, - 57, - 64, + 58, + 160, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 65, - 32, + 0, 131, 1, 82, 128, 97, - 65, - 0, + 64, + 224, 131, 1, 81, 97, 64, - 160, + 128, 132, 1, 81, 8, 97, 65, - 64, + 32, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 7, - 64, + 32, 132, 1, 81, 9, 97, 65, - 96, + 64, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34324,15 +34960,15 @@ pub mod inclusion_verifier { 9, 97, 65, - 128, + 96, 131, 1, 129, 144, 82, 97, - 57, - 96, + 58, + 192, 131, 1, 81, @@ -34343,75 +34979,75 @@ pub mod inclusion_verifier { 9, 97, 65, - 160, + 128, 131, 1, 82, 128, 97, - 57, - 96, + 58, + 192, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 65, - 192, + 160, 131, 1, 82, 128, 97, 65, - 160, + 128, 131, 1, 81, 97, 65, - 64, + 32, 132, 1, 81, 8, 97, 65, - 224, + 192, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 7, - 96, + 64, 132, 1, 81, 9, 97, - 66, - 0, + 65, + 224, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34420,15 +35056,15 @@ pub mod inclusion_verifier { 9, 97, 66, - 32, + 0, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 224, 131, 1, 81, @@ -34439,75 +35075,75 @@ pub mod inclusion_verifier { 9, 97, 66, - 64, + 32, 131, 1, 82, 128, 97, - 57, - 128, + 58, + 224, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 66, - 96, + 64, 131, 1, 82, 128, 97, 66, - 64, + 32, 131, 1, 81, 97, 65, - 224, + 192, 132, 1, 81, 8, 97, 66, - 128, + 96, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 7, - 128, + 96, 132, 1, 81, 9, 97, 66, - 160, + 128, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34516,15 +35152,15 @@ pub mod inclusion_verifier { 9, 97, 66, - 192, + 160, 131, 1, 129, 144, 82, 97, - 57, - 160, + 59, + 0, 131, 1, 81, @@ -34535,75 +35171,75 @@ pub mod inclusion_verifier { 9, 97, 66, - 224, + 192, 131, 1, 82, 128, 97, - 57, - 160, + 59, + 0, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 67, - 0, + 66, + 224, 131, 1, 82, 128, 97, 66, - 224, + 192, 131, 1, 81, 97, 66, - 128, + 96, 132, 1, 81, 8, 97, 67, - 32, + 0, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 7, - 160, + 128, 132, 1, 81, 9, 97, 67, - 64, + 32, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34612,15 +35248,15 @@ pub mod inclusion_verifier { 9, 97, 67, - 96, + 64, 131, 1, 129, 144, 82, 97, - 57, - 192, + 59, + 32, 131, 1, 81, @@ -34631,75 +35267,75 @@ pub mod inclusion_verifier { 9, 97, 67, - 128, + 96, 131, 1, 82, 128, 97, - 57, - 192, + 59, + 32, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 67, - 160, + 128, 131, 1, 82, 128, 97, 67, - 128, + 96, 131, 1, 81, 97, 67, - 32, + 0, 132, 1, 81, 8, 97, 67, - 192, + 160, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 7, - 192, + 160, 132, 1, 81, 9, 97, 67, - 224, + 192, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34707,16 +35343,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 68, - 0, + 67, + 224, 131, 1, 129, 144, 82, 97, - 57, - 224, + 59, + 64, 131, 1, 81, @@ -34727,75 +35363,75 @@ pub mod inclusion_verifier { 9, 97, 68, - 32, + 0, 131, 1, 82, 128, 97, - 57, - 224, + 59, + 64, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 68, - 64, + 32, 131, 1, 82, 128, 97, 68, - 32, + 0, 131, 1, 81, 97, 67, - 192, + 160, 132, 1, 81, 8, 97, 68, - 96, + 64, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 7, - 224, + 192, 132, 1, 81, 9, 97, 68, - 128, + 96, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34804,15 +35440,15 @@ pub mod inclusion_verifier { 9, 97, 68, - 160, + 128, 131, 1, 129, 144, 82, 97, - 58, - 0, + 59, + 96, 131, 1, 81, @@ -34823,75 +35459,75 @@ pub mod inclusion_verifier { 9, 97, 68, - 192, + 160, 131, 1, 82, 128, 97, - 58, - 0, + 59, + 96, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 68, - 224, + 192, 131, 1, 82, 128, 97, 68, - 192, + 160, 131, 1, 81, 97, 68, - 96, + 64, 132, 1, 81, 8, 97, - 69, - 0, + 68, + 224, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, - 8, - 32, + 7, + 224, 132, 1, 81, 9, 97, 69, - 32, + 0, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34900,15 +35536,15 @@ pub mod inclusion_verifier { 9, 97, 69, - 64, + 32, 131, 1, 129, 144, 82, 97, - 58, - 32, + 59, + 128, 131, 1, 81, @@ -34919,75 +35555,75 @@ pub mod inclusion_verifier { 9, 97, 69, - 96, + 64, 131, 1, 82, 128, 97, - 58, - 32, + 59, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 69, - 128, + 96, 131, 1, 82, 128, 97, 69, - 96, + 64, 131, 1, 81, 97, - 69, - 0, + 68, + 224, 132, 1, 81, 8, 97, 69, - 160, + 128, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 8, - 64, + 0, 132, 1, 81, 9, 97, 69, - 192, + 160, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -34996,15 +35632,15 @@ pub mod inclusion_verifier { 9, 97, 69, - 224, + 192, 131, 1, 129, 144, 82, 97, - 58, - 64, + 59, + 160, 131, 1, 81, @@ -35014,76 +35650,76 @@ pub mod inclusion_verifier { 3, 9, 97, - 70, - 0, + 69, + 224, 131, 1, 82, 128, 97, - 58, - 64, + 59, + 160, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 70, - 32, + 0, 131, 1, 82, 128, 97, - 70, - 0, + 69, + 224, 131, 1, 81, 97, 69, - 160, + 128, 132, 1, 81, 8, 97, 70, - 64, + 32, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 8, - 96, + 32, 132, 1, 81, 9, 97, 70, - 96, + 64, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -35092,15 +35728,15 @@ pub mod inclusion_verifier { 9, 97, 70, - 128, + 96, 131, 1, 129, 144, 82, 97, - 58, - 96, + 59, + 192, 131, 1, 81, @@ -35111,75 +35747,75 @@ pub mod inclusion_verifier { 9, 97, 70, - 160, + 128, 131, 1, 82, 128, 97, - 58, - 96, + 59, + 192, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 70, - 192, + 160, 131, 1, 82, 128, 97, 70, - 160, + 128, 131, 1, 81, 97, 70, - 64, + 32, 132, 1, 81, 8, 97, 70, - 224, + 192, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 8, - 128, + 96, 132, 1, 81, 9, 97, - 71, - 0, + 70, + 224, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -35188,15 +35824,15 @@ pub mod inclusion_verifier { 9, 97, 71, - 32, + 0, 131, 1, 129, 144, 82, 97, - 58, - 128, + 59, + 224, 131, 1, 81, @@ -35207,75 +35843,75 @@ pub mod inclusion_verifier { 9, 97, 71, - 64, + 32, 131, 1, 82, 128, 97, - 58, - 128, + 59, + 224, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 71, - 96, + 64, 131, 1, 82, 128, 97, 71, - 64, + 32, 131, 1, 81, 97, 70, - 224, + 192, 132, 1, 81, 8, 97, 71, - 128, + 96, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 8, - 160, + 128, 132, 1, 81, 9, 97, 71, - 160, + 128, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -35284,15 +35920,15 @@ pub mod inclusion_verifier { 9, 97, 71, - 192, + 160, 131, 1, 129, 144, 82, 97, - 58, - 160, + 60, + 0, 131, 1, 81, @@ -35303,75 +35939,75 @@ pub mod inclusion_verifier { 9, 97, 71, - 224, + 192, 131, 1, 82, 128, 97, - 58, - 160, + 60, + 0, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, - 72, - 0, + 71, + 224, 131, 1, 82, 128, 97, 71, - 224, + 192, 131, 1, 81, 97, 71, - 128, + 96, 132, 1, 81, 8, 97, 72, - 32, + 0, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, 8, - 192, + 160, 132, 1, 81, 9, 97, 72, - 64, + 32, 131, 1, 129, 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -35380,15 +36016,15 @@ pub mod inclusion_verifier { 9, 97, 72, - 96, + 64, 131, 1, 129, 144, 82, 97, - 58, - 192, + 60, + 32, 131, 1, 81, @@ -35399,83 +36035,99 @@ pub mod inclusion_verifier { 9, 97, 72, - 128, + 96, 131, 1, 82, 128, 97, - 58, - 192, + 60, + 32, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, 9, 97, 72, - 160, + 128, 131, 1, 82, 128, 97, 72, - 128, + 96, 131, 1, 81, 97, 72, - 32, + 0, 132, 1, 81, 8, 97, 72, - 192, + 160, 131, 1, 82, 128, 97, - 53, - 224, + 51, + 160, 131, 1, 81, 97, - 47, - 96, + 8, + 192, 132, 1, 81, 9, 97, 72, - 224, + 192, 131, 1, + 129, + 144, 82, - 128, 97, - 53, - 224, + 58, + 0, 131, 1, 81, + 130, + 145, + 9, 97, - 47, - 128, - 132, + 72, + 224, + 131, + 1, + 129, + 144, + 82, + 97, + 60, + 64, + 131, 1, 81, + 130, + 145, + 130, + 3, 9, 97, 73, @@ -35485,14 +36137,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 53, - 224, + 60, + 64, 131, 1, 81, 97, - 47, - 160, + 62, + 192, 132, 1, 81, @@ -35505,18 +36157,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 53, - 224, + 73, + 0, 131, 1, 81, 97, - 47, - 192, + 72, + 160, 132, 1, 81, - 9, + 8, 97, 73, 64, @@ -35525,13 +36177,13 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 160, 131, 1, 81, 97, - 47, + 8, 224, 132, 1, @@ -35546,8 +36198,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 58, + 0, 131, 1, 81, @@ -35563,8 +36215,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, - 224, + 60, + 96, 131, 1, 81, @@ -35581,14 +36233,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, - 224, + 60, + 96, 131, 1, 81, 97, - 61, - 0, + 62, + 192, 132, 1, 81, @@ -35601,18 +36253,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, - 224, + 73, + 160, 131, 1, 81, 97, - 72, - 224, + 73, + 64, 132, 1, 81, - 9, + 8, 97, 73, 224, @@ -35621,13 +36273,13 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, - 224, + 51, + 160, 131, 1, 81, 97, - 73, + 9, 0, 132, 1, @@ -35638,40 +36290,36 @@ pub mod inclusion_verifier { 0, 131, 1, + 129, + 144, 82, - 128, 97, 58, - 224, + 0, 131, 1, 81, - 97, - 73, - 32, - 132, - 1, - 81, + 130, + 145, 9, 97, 74, 32, 131, 1, + 129, + 144, 82, - 128, 97, - 58, - 224, + 60, + 128, 131, 1, 81, - 97, - 73, - 64, - 132, - 1, - 81, + 130, + 145, + 130, + 3, 9, 97, 74, @@ -35681,18 +36329,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 73, - 160, + 60, + 128, 131, 1, 81, 97, - 72, + 62, 192, 132, 1, 81, - 8, + 9, 97, 74, 96, @@ -35701,53 +36349,57 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 74, + 64, 131, 1, 81, 97, - 8, - 0, + 73, + 224, 132, 1, 81, - 9, + 8, 97, 74, 128, 131, 1, - 129, - 144, 82, + 128, 97, - 56, - 64, + 55, + 160, 131, 1, 81, - 130, - 145, + 97, + 49, + 32, + 132, + 1, + 81, 9, 97, 74, 160, 131, 1, - 129, - 144, 82, + 128, 97, - 59, - 0, + 55, + 160, 131, 1, 81, - 130, - 145, - 130, - 3, + 97, + 49, + 64, + 132, + 1, + 81, 9, 97, 74, @@ -35757,14 +36409,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 59, - 0, + 55, + 160, 131, 1, 81, 97, - 61, - 0, + 49, + 96, 132, 1, 81, @@ -35777,74 +36429,73 @@ pub mod inclusion_verifier { 82, 128, 97, - 74, - 192, + 55, + 160, 131, 1, 81, 97, - 74, - 96, + 49, + 128, 132, 1, 81, - 8, + 9, 97, 75, 0, 131, 1, - 129, - 144, 82, + 128, 97, - 10, + 51, 160, 131, 1, 81, - 130, - 145, + 97, + 49, + 160, + 132, + 1, + 81, 9, 97, 75, 32, 131, 1, + 129, + 144, 82, - 128, 97, - 10, - 160, + 58, + 0, 131, 1, 81, - 97, - 61, - 128, - 132, - 1, - 81, + 130, + 145, 9, 97, 75, 64, 131, 1, + 129, + 144, 82, - 128, 97, - 10, + 60, 160, 131, 1, 81, - 97, - 62, - 0, - 132, - 1, - 81, + 130, + 145, + 130, + 3, 9, 97, 75, @@ -35854,14 +36505,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, + 60, 160, 131, 1, 81, 97, 62, - 160, + 192, 132, 1, 81, @@ -35874,14 +36525,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, + 60, 160, 131, 1, 81, 97, - 63, - 64, + 74, + 160, 132, 1, 81, @@ -35894,14 +36545,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, + 60, 160, 131, 1, 81, 97, - 63, - 224, + 74, + 192, 132, 1, 81, @@ -35914,14 +36565,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, + 60, 160, 131, 1, 81, 97, - 64, - 128, + 74, + 224, 132, 1, 81, @@ -35934,14 +36585,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, + 60, 160, 131, 1, 81, 97, - 65, - 32, + 75, + 0, 132, 1, 81, @@ -35954,18 +36605,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 75, + 96, 131, 1, 81, 97, - 65, - 192, + 74, + 128, 132, 1, 81, - 9, + 8, 97, 76, 32, @@ -35974,14 +36625,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, + 51, 160, 131, 1, 81, 97, - 66, - 96, + 8, + 64, 132, 1, 81, @@ -35991,40 +36642,36 @@ pub mod inclusion_verifier { 64, 131, 1, + 129, + 144, 82, - 128, - 97, - 10, - 160, - 131, - 1, - 81, 97, - 67, + 58, 0, - 132, + 131, 1, 81, + 130, + 145, 9, 97, 76, 96, 131, 1, + 129, + 144, 82, - 128, 97, - 10, - 160, + 60, + 192, 131, 1, 81, - 97, - 67, - 160, - 132, - 1, - 81, + 130, + 145, + 130, + 3, 9, 97, 76, @@ -36034,14 +36681,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 60, + 192, 131, 1, 81, 97, - 68, - 64, + 62, + 192, 132, 1, 81, @@ -36054,37 +36701,34 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 76, + 128, 131, 1, 81, 97, - 68, - 224, + 76, + 32, 132, 1, 81, - 9, + 8, 97, 76, 192, 131, 1, + 129, + 144, 82, - 128, 97, 10, - 160, + 224, 131, 1, 81, - 97, - 69, - 128, - 132, - 1, - 81, + 130, + 145, 9, 97, 76, @@ -36095,13 +36739,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 70, - 32, + 63, + 64, 132, 1, 81, @@ -36115,12 +36759,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 70, + 63, 192, 132, 1, @@ -36135,12 +36779,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 71, + 64, 96, 132, 1, @@ -36155,12 +36799,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 72, + 65, 0, 132, 1, @@ -36175,12 +36819,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 72, + 65, 160, 132, 1, @@ -36195,13 +36839,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 73, - 192, + 66, + 64, 132, 1, 81, @@ -36215,12 +36859,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 73, + 66, 224, 132, 1, @@ -36235,13 +36879,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 0, + 67, + 128, 132, 1, 81, @@ -36255,12 +36899,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, + 68, 32, 132, 1, @@ -36275,13 +36919,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 64, + 68, + 192, 132, 1, 81, @@ -36295,13 +36939,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 224, + 69, + 96, 132, 1, 81, @@ -36314,18 +36958,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 75, - 32, + 10, + 224, 131, 1, 81, 97, - 60, - 192, + 70, + 0, 132, 1, 81, - 8, + 9, 97, 78, 96, @@ -36334,13 +36978,17 @@ pub mod inclusion_verifier { 82, 128, 97, - 54, - 32, + 10, + 224, 131, 1, 81, - 96, + 97, + 70, + 160, + 132, 1, + 81, 9, 97, 78, @@ -36350,72 +36998,37 @@ pub mod inclusion_verifier { 82, 128, 97, - 50, - 0, - 131, - 1, - 81, - 97, - 8, + 10, 224, - 132, - 1, - 81, - 9, - 129, - 129, 131, - 97, - 50, - 32, - 134, - 1, - 81, - 97, - 9, - 0, - 135, 1, 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, 97, - 50, + 71, 64, - 134, - 1, - 81, - 97, - 9, - 32, - 135, + 132, 1, 81, 9, - 8, 97, 78, 160, - 132, + 131, 1, - 129, - 144, 82, + 128, 97, - 56, - 96, + 10, + 224, + 131, + 1, + 81, + 97, + 71, + 224, 132, 1, 81, - 131, - 146, - 80, - 144, 9, 97, 78, @@ -36424,16 +37037,18 @@ pub mod inclusion_verifier { 1, 82, 128, - 96, + 97, + 10, + 224, + 131, 1, + 81, 97, - 78, - 192, + 72, + 128, 132, 1, 81, - 131, - 3, 9, 97, 78, @@ -36442,11 +37057,15 @@ pub mod inclusion_verifier { 1, 82, 128, - 96, + 97, + 10, + 224, + 131, 1, + 81, 97, - 78, - 128, + 73, + 32, 132, 1, 81, @@ -36459,14 +37078,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 59, - 64, + 10, + 224, 131, 1, 81, 97, - 78, - 224, + 73, + 192, 132, 1, 81, @@ -36479,14 +37098,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 59, - 64, + 10, + 224, 131, 1, 81, 97, - 79, - 0, + 74, + 96, 132, 1, 81, @@ -36499,18 +37118,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 79, - 32, + 10, + 224, 131, 1, 81, 97, - 78, - 96, + 75, + 128, 132, 1, 81, - 8, + 9, 97, 79, 96, @@ -36519,13 +37138,17 @@ pub mod inclusion_verifier { 82, 128, 97, - 54, - 96, + 10, + 224, 131, 1, 81, - 96, + 97, + 75, + 160, + 132, 1, + 81, 9, 97, 79, @@ -36535,104 +37158,130 @@ pub mod inclusion_verifier { 82, 128, 97, - 50, - 128, + 10, + 224, 131, 1, 81, 97, - 9, - 64, + 75, + 192, 132, 1, 81, 9, - 129, - 129, - 131, 97, - 50, + 79, 160, - 134, + 131, + 1, + 82, + 128, + 97, + 10, + 224, + 131, 1, 81, 97, - 9, - 96, - 135, + 75, + 224, + 132, 1, 81, 9, - 8, 97, 79, - 160, - 132, + 192, + 131, 1, - 129, - 144, 82, - 97, - 56, 128, + 97, + 10, + 224, + 131, + 1, + 81, + 97, + 76, + 0, 132, 1, 81, - 131, - 146, - 80, - 144, 9, 97, 79, - 192, + 224, 131, 1, 82, 128, - 96, + 97, + 10, + 224, + 131, 1, + 81, 97, - 79, - 192, + 76, + 160, 132, 1, 81, - 131, - 3, 9, 97, - 79, - 224, + 80, + 0, 131, 1, 82, 128, - 96, + 97, + 76, + 224, + 131, 1, + 81, 97, - 79, + 62, 128, 132, 1, 81, - 9, + 8, 97, 80, - 0, + 32, 131, 1, 82, 128, 97, - 50, + 55, + 224, + 131, + 1, + 81, + 96, + 1, + 9, + 97, + 80, + 64, + 131, + 1, + 82, 128, + 97, + 51, + 192, 131, 1, 81, 97, 9, - 128, + 32, 132, 1, 81, @@ -36641,76 +37290,56 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 224, 134, 1, 81, 97, 9, - 160, + 64, 135, 1, 81, 9, 8, - 97, + 144, 80, - 32, - 132, - 1, 129, - 144, - 82, - 97, - 56, - 128, - 132, - 1, - 81, + 129, 131, - 146, - 80, - 144, - 9, 97, - 80, - 64, - 131, + 52, + 0, + 134, 1, - 129, - 144, - 82, + 81, 97, - 10, - 64, - 131, + 9, + 96, + 135, 1, 81, - 130, - 145, - 130, - 3, 9, + 8, 97, 80, 96, - 131, + 132, 1, + 129, + 144, 82, - 128, - 97, - 10, - 64, - 131, - 1, - 81, 97, - 79, - 128, + 58, + 32, 132, 1, 81, + 131, + 146, + 80, + 144, 9, 97, 80, @@ -36719,35 +37348,32 @@ pub mod inclusion_verifier { 1, 82, 128, - 97, - 80, 96, - 131, 1, - 81, 97, - 79, - 224, + 80, + 128, 132, 1, 81, - 8, + 131, + 3, + 9, 97, 80, 160, 131, 1, - 129, - 144, 82, - 97, - 59, + 128, 96, - 131, + 1, + 97, + 80, + 64, + 132, 1, 81, - 130, - 145, 9, 97, 80, @@ -36757,14 +37383,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 59, - 96, + 61, + 0, 131, 1, 81, 97, 80, - 0, + 160, 132, 1, 81, @@ -36777,14 +37403,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 59, - 96, + 61, + 0, 131, 1, 81, 97, 80, - 128, + 192, 132, 1, 81, @@ -36798,13 +37424,13 @@ pub mod inclusion_verifier { 128, 97, 80, - 192, + 224, 131, 1, 81, 97, - 79, - 96, + 80, + 32, 132, 1, 81, @@ -36817,8 +37443,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 54, - 160, + 56, + 32, 131, 1, 81, @@ -36833,14 +37459,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 50, - 192, + 52, + 64, 131, 1, 81, 97, 9, - 192, + 128, 132, 1, 81, @@ -36849,14 +37475,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 224, + 52, + 96, 134, 1, 81, 97, 9, - 224, + 160, 135, 1, 81, @@ -36871,8 +37497,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 160, + 58, + 64, 132, 1, 81, @@ -36923,58 +37549,73 @@ pub mod inclusion_verifier { 82, 128, 97, - 59, - 128, + 52, + 64, 131, 1, 81, 97, - 81, - 160, + 9, + 192, 132, 1, 81, 9, - 97, - 81, - 224, + 129, + 129, 131, + 97, + 52, + 96, + 134, 1, - 82, - 128, + 81, 97, - 59, - 128, - 131, + 9, + 224, + 135, 1, 81, + 9, + 8, 97, 81, - 192, + 224, + 132, + 1, + 129, + 144, + 82, + 97, + 58, + 64, 132, 1, 81, + 131, + 146, + 80, + 144, 9, 97, 82, 0, 131, 1, + 129, + 144, 82, - 128, 97, - 81, - 224, + 10, + 128, 131, 1, 81, - 97, - 81, - 32, - 132, - 1, - 81, - 8, + 130, + 145, + 130, + 3, + 9, 97, 82, 32, @@ -36983,13 +37624,17 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 192, + 10, + 128, 131, 1, 81, - 96, + 97, + 81, + 64, + 132, 1, + 81, 9, 97, 82, @@ -36999,322 +37644,338 @@ pub mod inclusion_verifier { 82, 128, 97, - 11, - 64, + 82, + 32, 131, 1, 81, - 96, + 97, + 81, + 160, + 132, 1, - 9, + 81, + 8, 97, 82, 96, 131, 1, + 129, + 144, 82, - 96, + 97, + 61, + 32, + 131, 1, + 81, + 130, + 145, + 9, 97, 82, 128, 131, 1, - 129, - 129, 82, - 96, - 2, + 128, + 97, + 61, + 32, + 131, + 1, + 81, + 97, + 81, + 192, + 132, + 1, + 81, + 9, 97, 82, 160, - 133, + 131, 1, 82, + 128, 97, - 82, + 61, 32, + 131, + 1, + 81, + 97, + 82, + 64, 132, 1, 81, + 9, 97, 82, 192, - 133, + 131, 1, 82, - 132, - 145, - 144, - 96, - 64, - 144, - 96, - 96, - 129, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 128, 97, 82, 128, - 130, + 131, + 1, + 81, + 97, + 81, + 32, + 132, 1, 81, + 8, 97, 82, 224, 131, 1, 82, + 128, 97, - 82, - 160, - 130, + 56, + 96, + 131, 1, 81, + 96, + 1, + 9, 97, 83, 0, 131, 1, 82, - 96, - 96, - 130, + 128, + 97, + 52, + 128, + 131, + 1, + 81, + 97, + 10, + 0, + 132, + 1, + 81, + 9, + 129, + 129, + 131, + 97, + 52, + 160, + 134, + 1, + 81, + 97, + 10, + 32, + 135, 1, 81, + 9, + 8, 97, 83, 32, - 131, + 132, 1, + 129, + 144, 82, + 97, + 58, 96, - 128, - 130, + 132, 1, 81, + 131, + 146, + 80, + 144, + 9, 97, 83, 64, 131, 1, 82, - 130, - 96, - 1, + 128, 96, - 64, - 97, - 82, - 224, - 133, 1, - 96, - 128, 97, - 82, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 96, - 160, - 130, + 83, + 64, + 132, 1, 81, + 131, + 3, + 9, 97, 83, 96, 131, 1, 82, + 128, 96, - 192, - 130, + 1, + 97, + 83, + 0, + 132, 1, 81, + 9, 97, 83, 128, 131, 1, 82, + 128, 97, - 60, - 224, - 130, + 61, + 64, + 131, 1, 81, 97, 83, - 160, - 131, - 1, - 82, - 130, 96, + 132, 1, - 96, - 64, + 81, + 9, 97, 83, - 96, - 133, + 160, + 131, 1, - 96, - 96, + 82, + 128, 97, - 83, - 96, - 135, + 61, + 64, + 131, 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, + 81, 97, - 82, - 224, - 130, + 83, + 128, + 132, 1, 81, + 9, 97, 83, 192, 131, 1, 82, + 128, 97, 83, - 0, - 130, + 160, + 131, + 1, + 81, + 97, + 82, + 224, + 132, 1, 81, + 8, 97, 83, 224, 131, 1, 82, + 128, 97, - 83, - 96, - 130, + 51, + 128, + 131, 1, 81, + 96, + 1, + 9, 97, 84, 0, 131, 1, 82, + 128, 97, - 83, + 11, 128, - 130, + 131, 1, 81, + 96, + 1, + 9, 97, 84, 32, 131, 1, 82, - 130, - 96, - 1, - 96, - 64, - 97, - 83, - 192, - 133, - 1, - 96, - 128, - 97, - 83, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, 96, - 224, - 130, 1, - 81, 97, 84, 64, 131, 1, + 129, + 129, 82, - 97, - 1, - 0, - 130, - 1, - 81, + 96, + 2, 97, 84, 96, - 131, + 133, 1, 82, 97, - 75, - 64, - 130, + 83, + 224, + 132, 1, 81, 97, 84, 128, - 131, + 133, 1, 82, - 130, - 96, - 1, + 132, + 145, + 144, 96, 64, - 97, - 84, - 64, - 133, - 1, + 144, 96, 96, - 97, - 84, - 64, - 135, - 1, + 129, 96, 7, 90, @@ -37324,8 +37985,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 83, - 192, + 84, + 64, 130, 1, 81, @@ -37336,8 +37997,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 83, - 224, + 84, + 96, 130, 1, 81, @@ -37347,9 +38008,8 @@ pub mod inclusion_verifier { 131, 1, 82, - 97, - 84, - 64, + 96, + 160, 130, 1, 81, @@ -37359,9 +38019,8 @@ pub mod inclusion_verifier { 131, 1, 82, - 97, - 84, 96, + 192, 130, 1, 81, @@ -37396,9 +38055,8 @@ pub mod inclusion_verifier { 22, 146, 80, - 97, - 1, - 192, + 96, + 224, 130, 1, 81, @@ -37410,7 +38068,7 @@ pub mod inclusion_verifier { 82, 97, 1, - 224, + 0, 130, 1, 81, @@ -37421,8 +38079,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 96, + 62, + 160, 130, 1, 81, @@ -37530,78 +38188,24 @@ pub mod inclusion_verifier { 22, 146, 80, - 127, - 41, - 30, - 77, - 180, - 60, - 38, - 7, - 38, - 185, - 28, - 83, - 89, - 23, - 168, + 97, 1, - 189, - 224, - 107, - 231, - 247, - 207, - 69, + 32, + 130, 1, - 9, - 9, - 118, - 35, - 19, - 219, - 66, - 82, - 144, + 81, 97, 86, 0, 131, 1, 82, - 127, - 21, - 78, - 127, - 225, - 88, - 71, - 172, - 77, - 28, - 217, - 63, - 166, - 200, - 32, - 150, - 114, - 207, - 204, - 244, - 90, - 216, - 225, - 58, - 184, - 47, - 198, - 177, - 103, - 186, - 25, - 148, - 252, + 97, + 1, + 64, + 130, + 1, + 81, 97, 86, 32, @@ -37609,8 +38213,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 128, + 77, + 0, 130, 1, 81, @@ -37718,77 +38322,23 @@ pub mod inclusion_verifier { 22, 146, 80, - 127, - 23, - 107, - 16, - 212, + 97, 2, - 250, - 192, - 91, - 252, - 152, - 34, - 52, - 245, - 11, - 48, - 90, - 208, - 103, - 225, - 34, - 241, - 104, - 42, - 75, - 156, - 75, - 217, - 139, - 218, - 145, - 145, - 157, + 0, + 130, + 1, + 81, 97, 86, 224, 131, 1, 82, - 127, - 29, - 98, - 231, - 141, - 101, - 94, - 63, - 199, - 65, - 136, - 102, - 103, - 56, - 252, - 166, - 82, - 74, - 113, - 47, - 26, - 60, - 76, - 207, - 221, - 15, - 164, - 79, - 62, - 44, - 132, - 156, + 97, + 2, + 32, + 130, + 1, 81, 97, 87, @@ -37797,8 +38347,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 160, + 77, + 32, 130, 1, 81, @@ -37907,38 +38457,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 1, - 157, - 215, - 238, + 41, + 155, + 18, + 230, 83, + 153, + 220, + 234, + 63, + 30, + 12, + 224, + 70, + 207, + 95, + 147, + 206, + 123, + 169, + 247, + 121, + 191, + 163, + 158, + 127, + 12, + 109, + 76, 25, + 98, + 138, 144, - 211, - 53, - 170, - 216, - 246, - 76, - 38, - 161, - 188, - 7, - 43, - 71, - 167, - 239, - 212, - 80, - 68, - 4, - 210, - 233, - 94, - 32, - 37, - 7, - 89, 97, 87, 192, @@ -37946,38 +38496,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 12, - 65, + 33, + 197, + 119, + 18, + 42, 61, - 216, - 229, + 31, + 77, 1, - 137, - 160, - 90, - 55, - 70, - 121, - 186, + 155, + 147, 231, - 47, - 114, - 79, - 123, - 113, - 233, - 86, - 195, - 44, - 8, + 36, + 217, 129, - 234, - 55, - 105, - 66, - 118, - 234, - 131, + 176, + 101, + 62, + 217, + 79, + 73, + 46, + 175, + 236, + 80, + 148, + 82, + 49, + 147, + 95, + 154, + 149, 97, 87, 224, @@ -37985,8 +38535,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 192, + 77, + 64, 130, 1, 81, @@ -38095,38 +38645,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 7, - 48, + 25, + 217, + 34, + 1, + 65, + 190, + 242, + 89, + 33, + 212, + 116, + 198, + 230, + 52, + 208, + 109, + 251, + 125, 121, - 157, - 91, - 254, - 193, - 206, - 252, - 90, - 175, - 252, - 255, - 227, - 243, - 221, - 73, - 27, - 43, - 252, - 175, - 159, - 85, - 63, - 148, - 222, - 97, - 69, - 237, - 71, - 66, - 175, + 4, + 229, + 154, + 78, + 196, + 134, + 161, + 72, + 176, + 11, + 253, + 56, + 163, 97, 88, 160, @@ -38134,38 +38684,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 36, - 173, - 74, - 240, - 130, - 233, - 107, - 20, - 185, - 166, - 218, - 128, - 244, - 250, - 19, - 52, - 242, + 47, + 56, + 81, + 30, 83, - 196, - 88, - 173, - 213, - 49, + 104, + 128, + 86, + 182, + 147, 200, - 217, - 248, - 178, + 78, + 246, + 154, + 122, + 226, + 185, + 171, + 72, + 41, + 6, + 220, + 70, + 174, + 157, + 149, + 34, + 253, 60, - 94, - 203, - 156, - 67, + 224, + 152, + 182, 97, 88, 192, @@ -38173,8 +38723,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 75, - 224, + 77, + 96, 130, 1, 81, @@ -38283,38 +38833,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 34, - 225, - 205, - 191, - 255, - 207, - 207, - 79, - 24, - 207, - 67, - 66, - 237, - 241, - 251, - 38, - 195, - 182, - 229, - 42, + 23, + 231, + 203, + 106, + 48, + 196, 206, + 154, 61, - 95, - 173, - 207, - 92, - 194, - 97, - 67, - 51, - 186, - 164, + 141, + 230, + 4, + 219, + 175, + 81, + 123, + 31, + 35, + 228, + 64, + 172, + 185, + 231, + 52, + 89, + 56, + 255, + 91, + 36, + 90, + 64, + 62, 97, 89, 128, @@ -38322,38 +38872,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 14, - 40, - 223, - 114, - 220, - 198, - 156, - 198, - 68, + 28, + 49, + 164, 45, - 114, + 125, + 163, + 96, + 204, + 232, + 38, + 46, + 33, + 251, + 154, + 94, + 242, + 106, + 35, + 235, + 188, 246, - 147, - 102, - 25, - 151, - 72, - 10, - 145, - 58, - 195, - 83, - 137, - 14, - 253, - 99, - 168, - 115, - 149, - 151, - 39, - 192, + 153, + 92, + 202, + 184, + 154, + 238, + 64, + 12, + 46, + 153, + 75, 97, 89, 160, @@ -38361,8 +38911,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 0, + 77, + 128, 130, 1, 81, @@ -38471,38 +39021,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 11, - 48, - 254, + 5, + 89, + 28, + 127, + 170, + 44, + 158, + 175, + 28, 149, - 129, - 166, - 199, - 0, - 100, - 227, - 179, - 84, - 70, - 178, - 67, - 56, - 66, - 219, - 118, - 232, - 250, - 213, - 71, - 251, - 177, - 238, - 105, - 145, - 100, 115, - 247, + 168, + 75, + 221, + 236, + 48, + 50, + 25, + 171, + 244, + 150, + 175, + 8, + 153, 237, + 67, + 136, + 83, + 34, + 125, + 208, + 86, 97, 90, 96, @@ -38510,38 +39060,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 40, - 110, - 15, - 135, - 214, - 25, - 227, + 44, + 250, + 36, + 253, + 229, + 118, + 117, + 11, + 64, + 54, + 223, 254, - 218, - 200, - 163, - 215, + 64, + 16, + 94, + 107, + 114, 68, - 46, - 243, - 79, - 182, - 86, - 108, - 233, - 175, - 90, - 49, - 87, - 88, - 192, - 194, - 184, - 0, - 12, - 54, - 207, + 246, + 56, + 67, + 236, + 116, + 217, + 208, + 170, + 212, + 139, + 164, + 19, + 40, + 124, 97, 90, 128, @@ -38549,8 +39099,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 32, + 77, + 160, 130, 1, 81, @@ -38659,38 +39209,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 20, - 230, - 106, - 119, - 30, - 240, - 140, - 202, - 5, - 81, - 194, - 107, - 52, - 57, - 212, - 157, - 57, - 27, - 162, - 29, - 145, - 183, - 6, - 223, - 44, - 75, - 31, - 23, - 125, - 119, - 89, + 34, + 225, + 205, + 191, + 255, + 207, + 207, + 79, + 24, + 207, + 67, + 66, + 237, + 241, + 251, + 38, + 195, + 182, 229, + 42, + 206, + 61, + 95, + 173, + 207, + 92, + 194, + 97, + 67, + 51, + 186, + 164, 97, 91, 64, @@ -38698,38 +39248,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 5, - 50, + 14, + 40, + 223, 114, - 58, - 38, 220, - 146, - 143, - 67, - 3, - 62, - 250, - 239, - 142, - 74, - 162, + 198, + 156, + 198, + 68, + 45, + 114, + 246, + 147, + 102, + 25, + 151, + 72, + 10, + 145, + 58, + 195, + 83, + 137, + 14, + 253, + 99, + 168, 115, + 149, + 151, 39, - 114, - 186, - 65, - 75, - 29, - 173, - 206, - 31, - 231, - 208, - 179, - 13, - 153, - 210, + 192, 97, 91, 96, @@ -38737,8 +39287,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 64, + 77, + 192, 130, 1, 81, @@ -38847,77 +39397,77 @@ pub mod inclusion_verifier { 146, 80, 127, - 4, - 116, - 174, - 28, - 66, - 48, - 189, - 205, - 210, - 92, - 228, - 96, - 239, - 115, - 198, - 137, - 228, - 34, - 126, - 223, - 14, - 199, - 194, - 190, - 133, - 239, - 141, - 117, - 89, - 46, - 27, - 54, - 97, - 92, + 25, 32, - 131, - 1, - 82, - 127, - 47, - 216, - 62, - 110, - 7, + 107, + 235, + 197, 204, - 53, - 117, - 90, - 4, - 51, - 127, - 215, - 10, - 248, - 170, - 49, - 252, - 116, - 222, - 7, - 165, + 74, + 91, + 105, + 44, + 88, + 188, + 97, + 231, + 174, + 198, + 211, + 251, + 184, + 52, + 78, 57, - 184, + 161, + 51, + 105, + 159, + 116, + 230, + 244, + 14, + 194, 168, - 117, - 108, - 170, - 96, - 208, - 72, - 144, + 97, + 92, + 32, + 131, + 1, + 82, + 127, + 6, + 120, + 199, + 189, + 209, + 65, + 189, + 38, + 203, + 233, + 51, + 111, + 93, + 207, + 28, + 90, + 140, + 242, + 26, + 89, + 39, + 175, + 209, + 178, + 243, + 147, + 21, + 46, + 224, + 42, + 106, + 120, 97, 92, 64, @@ -38925,8 +39475,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 96, + 77, + 224, 130, 1, 81, @@ -39036,37 +39586,37 @@ pub mod inclusion_verifier { 80, 127, 28, - 111, - 147, - 174, - 247, - 149, - 245, - 37, + 110, + 35, + 67, + 51, + 55, + 131, + 180, + 244, + 138, + 231, + 210, + 104, + 26, + 251, + 60, + 223, + 106, + 77, + 251, 200, - 181, - 27, - 203, - 2, - 52, - 187, - 52, - 89, - 66, - 204, - 49, - 120, - 43, - 247, + 58, 80, - 150, - 255, - 242, - 112, - 127, - 62, - 75, - 159, + 12, + 176, + 109, + 179, + 38, + 90, + 211, + 229, + 213, 97, 93, 0, @@ -39074,38 +39624,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 27, - 248, - 75, - 118, - 24, - 113, - 163, - 49, - 27, - 9, + 26, + 61, + 131, 109, - 135, - 5, - 52, - 176, + 67, + 37, + 255, + 48, + 20, + 76, + 30, + 32, + 56, 164, - 176, - 149, - 51, - 12, 212, + 2, 95, - 190, - 123, - 187, - 245, - 179, - 83, - 169, - 128, - 195, - 157, + 208, + 240, + 26, + 242, + 76, + 253, + 141, + 253, + 84, + 1, + 142, + 100, + 243, + 176, + 152, 97, 93, 32, @@ -39113,8 +39663,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 128, + 78, + 0, 130, 1, 81, @@ -39223,38 +39773,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 7, - 96, - 155, - 167, - 145, - 240, - 237, - 93, - 86, - 144, - 145, - 4, - 28, - 128, - 9, - 116, - 184, - 68, - 11, + 32, + 59, + 33, + 166, + 72, + 251, + 251, + 150, + 69, + 150, + 64, + 187, 197, - 192, - 249, - 125, + 180, + 24, + 82, + 221, + 30, + 252, + 18, + 9, + 200, 155, - 98, - 149, - 161, 99, - 33, - 117, - 17, - 108, + 91, + 166, + 56, + 220, + 185, + 41, + 218, + 107, 97, 93, 224, @@ -39262,38 +39812,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 28, - 219, 4, - 18, - 243, - 142, - 26, - 25, - 83, + 231, + 0, + 47, + 6, + 242, + 9, 26, - 251, - 209, - 201, - 96, + 68, + 175, + 205, 49, + 30, + 147, + 194, + 47, 70, - 231, - 189, - 28, - 52, - 169, - 61, - 246, - 190, - 76, + 221, + 159, + 50, + 7, + 181, + 188, + 195, + 79, + 12, + 167, 101, - 177, - 38, - 227, - 83, - 123, - 104, + 32, + 152, + 240, + 151, 97, 94, 0, @@ -39301,8 +39851,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 160, + 78, + 32, 130, 1, 81, @@ -39411,38 +39961,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 14, - 149, - 91, - 137, - 236, - 165, - 252, - 52, - 210, - 23, 32, - 34, - 248, - 157, - 196, - 103, - 172, + 171, + 116, + 144, + 180, + 47, + 63, + 123, + 43, + 11, + 190, + 96, + 26, + 9, + 215, 46, - 132, - 201, + 233, + 63, 146, - 158, - 28, - 224, - 194, - 168, - 206, - 131, - 28, - 93, - 215, + 72, 1, + 213, + 151, + 244, + 140, + 242, + 212, + 67, + 117, + 29, + 95, + 145, 97, 94, 192, @@ -39450,38 +40000,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 7, - 207, - 146, - 154, - 220, - 230, - 20, - 176, - 136, - 200, + 43, + 202, + 47, + 23, + 98, + 148, + 106, + 5, + 251, + 22, + 50, + 85, + 12, + 108, + 177, 44, - 179, - 147, - 79, - 30, - 183, - 84, - 109, - 210, - 228, - 131, - 150, - 233, - 20, - 180, - 255, - 6, - 236, - 69, - 222, - 158, - 138, + 2, + 209, + 141, + 155, + 238, + 91, + 221, + 66, + 18, + 202, + 115, + 66, + 136, + 135, + 32, + 253, 97, 94, 224, @@ -39489,8 +40039,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 192, + 78, + 64, 130, 1, 81, @@ -39599,38 +40149,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 45, + 9, + 227, + 48, + 50, 69, - 49, - 164, - 117, - 40, - 230, - 66, - 248, - 246, - 149, - 74, - 63, - 63, - 249, - 246, - 7, - 46, - 56, - 211, - 14, - 46, - 13, - 16, - 141, - 28, - 172, - 32, - 29, - 75, - 104, - 77, + 227, + 176, + 10, + 202, + 137, + 78, + 159, + 186, + 61, + 81, + 132, + 255, + 55, + 57, + 198, + 100, + 227, + 99, + 242, + 5, + 212, + 47, + 238, + 227, + 39, + 182, + 170, 97, 95, 160, @@ -39638,38 +40188,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 21, - 76, - 64, - 155, + 19, + 206, + 146, + 40, + 60, + 198, + 246, + 72, 189, - 23, - 96, - 236, - 85, - 99, - 157, - 50, - 213, - 129, - 124, - 147, - 153, - 229, - 115, - 178, + 218, + 134, + 24, + 45, + 145, + 133, 42, - 143, - 221, - 165, - 247, - 7, - 201, - 185, - 222, - 29, - 76, - 166, + 171, + 92, + 96, + 136, + 171, + 0, + 141, + 156, + 219, + 85, + 34, + 252, + 191, + 92, + 98, + 137, 97, 95, 192, @@ -39677,8 +40227,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 76, - 224, + 78, + 96, 130, 1, 81, @@ -39787,38 +40337,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 36, - 2, + 8, + 165, + 3, + 231, + 161, + 102, + 132, + 168, + 25, + 145, 219, + 252, + 94, + 200, + 76, + 159, 75, - 28, - 119, - 70, - 220, - 217, - 254, - 126, - 171, - 130, - 171, - 63, - 167, - 235, - 177, - 189, - 53, - 42, - 154, - 249, - 78, - 246, - 129, - 27, - 42, - 249, - 171, - 111, - 142, + 15, + 122, + 80, + 109, + 223, + 38, + 182, + 125, + 48, + 94, + 191, + 192, + 248, + 23, + 67, 97, 96, 128, @@ -39826,38 +40376,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 42, - 0, - 71, - 236, 8, 162, - 84, - 117, - 60, - 70, - 102, - 72, - 240, - 220, - 110, - 7, - 126, - 136, - 229, - 73, - 88, - 41, - 195, - 168, - 69, - 135, - 59, - 144, - 88, - 191, - 68, - 7, + 216, + 225, + 118, + 15, + 251, + 22, + 247, + 1, + 71, + 248, + 180, + 78, + 120, + 28, + 237, + 101, + 161, + 230, + 119, + 167, + 134, + 205, + 216, + 188, + 159, + 148, + 123, + 54, + 19, + 28, 97, 96, 160, @@ -39865,8 +40415,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 0, + 78, + 128, 130, 1, 81, @@ -39975,38 +40525,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 4, - 118, - 199, - 241, - 84, - 247, - 3, - 103, - 42, + 37, + 99, + 43, + 200, + 1, + 44, + 108, + 188, + 109, 221, - 116, - 255, - 235, - 198, - 255, 166, - 21, - 155, - 78, - 82, - 127, - 10, - 67, + 97, + 169, + 114, + 159, 84, - 182, + 76, + 84, + 98, + 7, + 0, + 195, + 132, + 12, 1, - 250, - 205, + 202, + 91, 87, - 255, - 26, + 230, 26, + 31, + 254, 97, 97, 96, @@ -40014,38 +40564,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 39, - 193, - 2, - 144, - 247, - 48, - 237, - 173, - 155, - 203, - 37, - 56, - 5, - 111, - 117, - 94, - 254, - 169, - 36, - 176, - 166, - 157, - 134, - 213, - 201, - 200, - 51, - 113, - 126, - 115, - 14, + 43, + 165, + 118, + 76, + 102, + 58, + 75, 40, + 146, + 52, + 60, + 48, + 61, + 160, + 245, + 102, + 78, + 63, + 98, + 13, + 214, + 184, + 81, + 167, + 17, + 120, + 23, + 4, + 41, + 47, + 209, + 26, 97, 97, 128, @@ -40053,8 +40603,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 32, + 78, + 160, 130, 1, 81, @@ -40164,37 +40714,37 @@ pub mod inclusion_verifier { 80, 127, 7, - 67, - 234, - 64, - 241, - 64, - 132, - 219, - 38, - 115, - 33, - 114, - 131, - 170, - 5, - 63, - 152, - 104, + 207, + 228, + 243, + 21, + 43, + 25, 150, - 238, - 124, - 24, - 31, - 82, - 17, + 232, + 234, + 253, + 113, 132, - 66, - 233, - 156, - 69, - 41, - 116, + 81, + 53, + 108, + 32, + 68, + 228, + 194, + 57, + 252, + 194, + 158, + 179, + 168, + 29, + 57, + 46, + 27, + 68, + 173, 97, 98, 64, @@ -40202,38 +40752,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 2, - 3, - 227, - 73, - 58, 37, + 86, + 115, + 226, + 36, + 165, 148, - 236, 229, - 125, - 34, - 204, - 117, - 221, - 8, + 63, + 213, + 177, + 180, + 220, + 212, + 99, + 41, + 231, + 42, + 4, + 225, + 96, + 86, + 222, + 163, + 213, + 161, + 126, + 49, + 41, 26, - 198, - 130, - 113, - 236, - 124, - 117, - 129, - 83, - 207, - 210, - 21, - 43, - 251, - 92, - 25, - 227, + 153, + 96, 97, 98, 96, @@ -40241,8 +40791,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 64, + 78, + 192, 130, 1, 81, @@ -40351,76 +40901,77 @@ pub mod inclusion_verifier { 146, 80, 127, - 30, - 135, - 235, - 136, - 87, - 119, - 149, - 201, - 242, - 140, - 66, + 19, + 108, + 177, + 75, + 53, + 31, 59, - 77, - 44, - 62, - 193, - 232, + 67, + 181, + 230, + 24, + 197, + 196, 144, - 22, - 68, - 102, - 234, - 151, + 34, + 88, + 142, + 221, + 72, + 85, + 15, + 78, + 125, + 105, + 48, + 148, 66, - 217, - 153, - 106, - 229, - 195, + 232, 184, - 10, - 42, + 61, + 13, + 34, 97, 99, 32, 131, 1, 82, - 126, - 176, - 4, - 129, - 75, - 36, - 199, - 199, - 169, - 220, - 86, - 255, - 160, - 61, - 79, - 43, - 126, - 15, - 86, - 5, - 243, + 127, + 14, + 233, 187, - 24, - 222, - 221, - 249, - 230, - 57, - 120, - 171, + 223, + 206, + 147, + 129, + 94, + 121, + 170, + 191, + 197, + 236, + 146, + 165, + 35, + 70, + 196, + 106, + 69, + 225, + 123, + 197, 188, - 86, + 154, + 216, + 21, + 94, + 152, + 44, + 156, + 172, 97, 99, 64, @@ -40428,8 +40979,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 96, + 78, + 224, 130, 1, 81, @@ -40538,38 +41089,38 @@ pub mod inclusion_verifier { 146, 80, 127, - 41, - 3, - 167, - 99, - 193, - 198, - 183, - 134, - 103, - 249, - 6, - 182, - 254, - 43, - 74, - 209, - 151, - 181, - 85, - 135, - 201, - 14, - 20, - 232, - 80, - 36, - 70, - 218, - 140, + 7, + 67, + 234, + 64, + 241, + 64, + 132, + 219, + 38, + 115, + 33, + 114, + 131, + 170, + 5, + 63, + 152, + 104, + 150, + 238, + 124, + 24, + 31, + 82, + 17, + 132, + 66, + 233, + 156, 69, - 239, - 125, + 41, + 116, 97, 100, 0, @@ -40577,38 +41128,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 19, - 234, - 87, - 152, - 111, - 146, - 149, - 233, - 45, - 239, - 51, + 2, 3, - 174, - 245, - 63, - 43, - 79, - 98, - 91, - 169, - 133, - 83, - 18, - 1, - 171, + 227, + 73, + 58, + 37, + 148, + 236, + 229, + 125, + 34, + 204, + 117, + 221, + 8, + 26, + 198, + 130, + 113, + 236, + 124, + 117, + 129, 83, - 220, - 115, - 7, - 244, - 107, - 105, + 207, + 210, + 21, + 43, + 251, + 92, + 25, + 227, 97, 100, 32, @@ -40616,8 +41167,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 128, + 79, + 0, 130, 1, 81, @@ -40725,24 +41276,78 @@ pub mod inclusion_verifier { 22, 146, 80, - 97, - 4, - 32, - 130, - 1, - 81, + 127, + 31, + 93, + 105, + 248, + 173, + 199, + 222, + 243, + 83, + 202, + 197, + 48, + 19, + 49, + 246, + 106, + 106, + 161, + 44, + 59, + 220, + 70, + 186, + 133, + 9, + 216, + 28, + 25, + 34, + 148, + 76, + 30, 97, 100, 224, 131, 1, 82, - 97, - 4, - 64, - 130, + 127, + 5, + 10, + 53, + 140, + 142, + 231, + 73, 1, - 81, + 175, + 214, + 190, + 189, + 218, + 53, + 162, + 91, + 233, + 155, + 166, + 49, + 35, + 42, + 190, + 192, + 187, + 125, + 242, + 52, + 40, + 226, + 25, + 235, 97, 101, 0, @@ -40750,8 +41355,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 160, + 79, + 32, 130, 1, 81, @@ -40859,24 +41464,78 @@ pub mod inclusion_verifier { 22, 146, 80, - 97, - 4, - 96, - 130, - 1, - 81, + 127, + 29, + 219, + 249, + 28, + 238, + 237, + 136, + 168, + 198, + 110, + 155, + 248, + 208, + 137, + 179, + 9, + 141, + 192, + 131, + 241, + 87, + 144, + 135, + 7, + 150, + 167, + 38, + 127, + 37, + 207, + 155, + 240, 97, 101, 192, 131, 1, 82, - 97, - 4, - 128, - 130, - 1, - 81, + 127, + 10, + 180, + 232, + 11, + 0, + 145, + 205, + 64, + 7, + 2, + 148, + 247, + 84, + 229, + 75, + 18, + 126, + 32, + 0, + 87, + 44, + 3, + 68, + 194, + 131, + 138, + 238, + 175, + 37, + 30, + 179, + 145, 97, 101, 224, @@ -40884,8 +41543,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 192, + 79, + 64, 130, 1, 81, @@ -40995,7 +41654,7 @@ pub mod inclusion_verifier { 80, 97, 4, - 160, + 96, 130, 1, 81, @@ -41007,7 +41666,7 @@ pub mod inclusion_verifier { 82, 97, 4, - 192, + 128, 130, 1, 81, @@ -41018,8 +41677,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 77, - 224, + 79, + 96, 130, 1, 81, @@ -41129,7 +41788,7 @@ pub mod inclusion_verifier { 80, 97, 4, - 224, + 160, 130, 1, 81, @@ -41140,8 +41799,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 5, - 0, + 4, + 192, 130, 1, 81, @@ -41152,8 +41811,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 78, - 0, + 79, + 128, 130, 1, 81, @@ -41262,8 +41921,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 5, - 32, + 4, + 224, 130, 1, 81, @@ -41275,7 +41934,7 @@ pub mod inclusion_verifier { 82, 97, 5, - 64, + 0, 130, 1, 81, @@ -41286,8 +41945,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 78, - 32, + 79, + 160, 130, 1, 81, @@ -41396,8 +42055,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 3, - 128, + 5, + 32, 130, 1, 81, @@ -41408,8 +42067,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 3, - 160, + 5, + 64, 130, 1, 81, @@ -41420,8 +42079,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 78, - 64, + 79, + 192, 130, 1, 81, @@ -41530,8 +42189,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 2, - 192, + 5, + 96, 130, 1, 81, @@ -41542,8 +42201,8 @@ pub mod inclusion_verifier { 1, 82, 97, - 2, - 224, + 5, + 128, 130, 1, 81, @@ -41555,7 +42214,7 @@ pub mod inclusion_verifier { 82, 97, 79, - 64, + 224, 130, 1, 81, @@ -41665,7 +42324,7 @@ pub mod inclusion_verifier { 80, 97, 3, - 0, + 192, 130, 1, 81, @@ -41677,7 +42336,7 @@ pub mod inclusion_verifier { 82, 97, 3, - 32, + 224, 130, 1, 81, @@ -41689,7 +42348,7 @@ pub mod inclusion_verifier { 82, 97, 80, - 224, + 0, 130, 1, 81, @@ -41785,8 +42444,276 @@ pub mod inclusion_verifier { 96, 128, 97, - 107, - 96, + 107, + 96, + 135, + 1, + 96, + 6, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 3, + 0, + 130, + 1, + 81, + 97, + 107, + 224, + 131, + 1, + 82, + 97, + 3, + 32, + 130, + 1, + 81, + 97, + 108, + 0, + 131, + 1, + 82, + 97, + 81, + 0, + 130, + 1, + 81, + 97, + 108, + 32, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 107, + 224, + 133, + 1, + 96, + 96, + 97, + 107, + 224, + 135, + 1, + 96, + 7, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 107, + 96, + 130, + 1, + 81, + 97, + 108, + 64, + 131, + 1, + 82, + 97, + 107, + 128, + 130, + 1, + 81, + 97, + 108, + 96, + 131, + 1, + 82, + 97, + 107, + 224, + 130, + 1, + 81, + 97, + 108, + 128, + 131, + 1, + 82, + 97, + 108, + 0, + 130, + 1, + 81, + 97, + 108, + 160, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 108, + 64, + 133, + 1, + 96, + 128, + 97, + 108, + 64, + 135, + 1, + 96, + 6, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 3, + 64, + 130, + 1, + 81, + 97, + 108, + 192, + 131, + 1, + 82, + 97, + 3, + 96, + 130, + 1, + 81, + 97, + 108, + 224, + 131, + 1, + 82, + 97, + 82, + 160, + 130, + 1, + 81, + 97, + 109, + 0, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 108, + 192, + 133, + 1, + 96, + 96, + 97, + 108, + 192, + 135, + 1, + 96, + 7, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 108, + 64, + 130, + 1, + 81, + 97, + 109, + 32, + 131, + 1, + 82, + 97, + 108, + 96, + 130, + 1, + 81, + 97, + 109, + 64, + 131, + 1, + 82, + 97, + 108, + 192, + 130, + 1, + 81, + 97, + 109, + 96, + 131, + 1, + 82, + 97, + 108, + 224, + 130, + 1, + 81, + 97, + 109, + 128, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 109, + 32, + 133, + 1, + 96, + 128, + 97, + 109, + 32, 135, 1, 96, @@ -41799,37 +42726,37 @@ pub mod inclusion_verifier { 80, 97, 3, - 64, + 128, 130, 1, 81, 97, - 107, - 224, + 109, + 160, 131, 1, 82, 97, 3, - 96, + 160, 130, 1, 81, 97, - 108, - 0, + 109, + 192, 131, 1, 82, 97, - 81, - 0, + 82, + 192, 130, 1, 81, 97, - 108, - 32, + 109, + 224, 131, 1, 82, @@ -41839,15 +42766,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 224, + 109, + 160, 133, 1, 96, 96, 97, - 107, - 224, + 109, + 160, 135, 1, 96, @@ -41859,50 +42786,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 107, - 96, + 109, + 32, 130, 1, 81, 97, - 108, - 64, + 110, + 0, 131, 1, 82, 97, - 107, - 128, + 109, + 64, 130, 1, 81, 97, - 108, - 96, + 110, + 32, 131, 1, 82, 97, - 107, - 224, + 109, + 160, 130, 1, 81, 97, - 108, - 128, + 110, + 64, 131, 1, 82, 97, - 108, - 0, + 109, + 192, 130, 1, 81, 97, - 108, - 160, + 110, + 96, 131, 1, 82, @@ -41912,15 +42839,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 64, + 110, + 0, 133, 1, 96, 128, 97, - 108, - 64, + 110, + 0, 135, 1, 96, @@ -41933,37 +42860,37 @@ pub mod inclusion_verifier { 80, 97, 1, - 128, + 192, 130, 1, 81, 97, - 108, - 192, + 110, + 128, 131, 1, 82, 97, 1, - 160, + 224, 130, 1, 81, 97, - 108, - 224, + 110, + 160, 131, 1, 82, 97, - 82, - 0, + 83, + 192, 130, 1, 81, 97, - 109, - 0, + 110, + 192, 131, 1, 82, @@ -41973,15 +42900,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 192, + 110, + 128, 133, 1, 96, 96, 97, - 108, - 192, + 110, + 128, 135, 1, 96, @@ -41993,50 +42920,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 108, - 64, + 110, + 0, 130, 1, 81, 97, - 109, - 32, + 110, + 224, 131, 1, 82, 97, - 108, - 96, + 110, + 32, 130, 1, 81, 97, - 109, - 64, + 111, + 0, 131, 1, 82, 97, - 108, - 192, + 110, + 128, 130, 1, 81, 97, - 109, - 96, + 111, + 32, 131, 1, 82, 97, - 108, - 224, + 110, + 160, 130, 1, 81, 97, - 109, - 128, + 111, + 64, 131, 1, 82, @@ -42046,15 +42973,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 32, + 110, + 224, 133, 1, 96, 128, 97, - 109, - 32, + 110, + 224, 135, 1, 96, @@ -42066,40 +42993,40 @@ pub mod inclusion_verifier { 146, 80, 97, - 10, - 224, + 11, + 32, 130, 1, 81, 97, - 109, - 160, + 111, + 96, 131, 1, 82, 97, 11, - 0, + 64, 130, 1, 81, 97, - 109, - 192, + 111, + 128, 131, 1, 82, 97, - 82, - 64, + 84, + 0, 130, 1, 81, 129, 3, 97, - 109, - 224, + 111, + 160, 131, 1, 82, @@ -42110,15 +43037,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 160, + 111, + 96, 132, 1, 96, 96, 97, - 109, - 160, + 111, + 96, 134, 1, 96, @@ -42130,50 +43057,50 @@ pub mod inclusion_verifier { 145, 80, 97, - 109, - 32, + 110, + 224, 129, 1, 81, 97, - 110, - 0, + 111, + 192, 130, 1, 82, 97, - 109, - 64, + 111, + 0, 129, 1, 81, 97, - 110, - 32, + 111, + 224, 130, 1, 82, 97, - 109, - 160, + 111, + 96, 129, 1, 81, 97, - 110, - 64, + 112, + 0, 130, 1, 82, 97, - 109, - 192, + 111, + 128, 129, 1, 81, 97, - 110, - 96, + 112, + 32, 130, 1, 82, @@ -42183,15 +43110,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 0, + 111, + 192, 132, 1, 96, 128, 97, - 110, - 0, + 111, + 192, 134, 1, 96, @@ -42204,37 +43131,37 @@ pub mod inclusion_verifier { 80, 97, 11, - 128, + 192, 129, 1, 81, 97, - 110, - 128, + 112, + 64, 130, 1, 82, 97, 11, - 160, + 224, 129, 1, 81, 97, - 110, - 160, + 112, + 96, 130, 1, 82, 97, - 82, - 96, + 84, + 32, 129, 1, 81, 97, - 110, - 192, + 112, + 128, 130, 1, 82, @@ -42244,15 +43171,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 128, + 112, + 64, 132, 1, 96, 96, 97, - 110, - 128, + 112, + 64, 134, 1, 96, @@ -42264,50 +43191,50 @@ pub mod inclusion_verifier { 145, 80, 97, - 110, - 0, + 111, + 192, 129, 1, 81, 97, - 110, - 224, + 112, + 160, 130, 1, 82, 97, - 110, - 32, + 111, + 224, 129, 1, 81, 97, - 111, - 0, + 112, + 192, 130, 1, 82, 97, - 110, - 128, + 112, + 64, 129, 1, 81, 97, - 111, - 32, + 112, + 224, 130, 1, 82, 97, - 110, - 160, + 112, + 96, 129, 1, 81, 97, - 111, - 64, + 113, + 0, 130, 1, 82, @@ -42317,15 +43244,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 224, + 112, + 160, 132, 1, 96, 128, 97, - 110, - 224, + 112, + 160, 134, 1, 96, @@ -42337,26 +43264,26 @@ pub mod inclusion_verifier { 145, 80, 97, - 110, - 224, + 112, + 160, 129, 1, 81, 97, - 111, - 96, + 113, + 32, 130, 1, 82, 97, - 111, - 0, + 112, + 192, 129, 1, 81, 97, - 111, - 128, + 113, + 64, 130, 1, 82, @@ -42394,8 +43321,8 @@ pub mod inclusion_verifier { 18, 194, 97, - 111, - 160, + 113, + 96, 130, 1, 82, @@ -42433,8 +43360,8 @@ pub mod inclusion_verifier { 246, 237, 97, - 111, - 192, + 113, + 128, 130, 1, 82, @@ -42472,8 +43399,8 @@ pub mod inclusion_verifier { 151, 91, 97, - 111, - 224, + 113, + 160, 130, 1, 82, @@ -42511,32 +43438,32 @@ pub mod inclusion_verifier { 125, 170, 97, - 112, - 0, + 113, + 192, 130, 1, 82, 97, 11, - 128, + 192, 129, 1, 81, 97, - 112, - 32, + 113, + 224, 130, 1, 82, 97, 11, - 160, + 224, 129, 1, 81, 97, - 112, - 64, + 114, + 0, 130, 1, 82, @@ -42574,8 +43501,8 @@ pub mod inclusion_verifier { 226, 61, 97, - 112, - 96, + 114, + 32, 130, 1, 82, @@ -42613,8 +43540,8 @@ pub mod inclusion_verifier { 247, 158, 97, - 112, - 128, + 114, + 64, 130, 1, 82, @@ -42652,8 +43579,8 @@ pub mod inclusion_verifier { 193, 69, 97, - 112, - 160, + 114, + 96, 130, 1, 82, @@ -42691,8 +43618,8 @@ pub mod inclusion_verifier { 222, 255, 97, - 112, - 192, + 114, + 128, 130, 1, 82, @@ -42702,16 +43629,16 @@ pub mod inclusion_verifier { 96, 32, 97, - 111, - 96, + 113, + 32, 132, 1, 97, 1, 128, 97, - 111, - 96, + 113, + 32, 134, 1, 96, @@ -42719,8 +43646,8 @@ pub mod inclusion_verifier { 90, 250, 97, - 111, - 96, + 113, + 32, 147, 144, 147, @@ -42747,8 +43674,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 112, - 192, + 114, + 128, 1, 96, 64, @@ -42756,7 +43683,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 134, + 148, 144, 96, 32, @@ -42826,15 +43753,15 @@ pub mod inclusion_verifier { 23, 21, 97, - 82, - 177, + 84, + 128, 87, 97, - 82, - 177, + 84, + 128, 97, - 82, - 114, + 84, + 65, 86, 91, 96, @@ -42854,8 +43781,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 82, - 202, + 84, + 153, 87, 96, 0, @@ -42877,20 +43804,20 @@ pub mod inclusion_verifier { 17, 21, 97, - 82, - 228, + 84, + 179, 87, 97, - 82, - 228, + 84, + 179, 97, - 82, - 114, + 84, + 65, 86, 91, 97, - 82, - 247, + 84, + 198, 96, 31, 130, @@ -42903,8 +43830,8 @@ pub mod inclusion_verifier { 32, 1, 97, - 82, - 136, + 84, + 87, 86, 91, 129, @@ -42920,8 +43847,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 12, + 84, + 219, 87, 96, 0, @@ -42968,8 +43895,8 @@ pub mod inclusion_verifier { 18, 21, 97, - 83, - 60, + 85, + 11, 87, 96, 0, @@ -42992,8 +43919,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 84, + 85, + 35, 87, 96, 0, @@ -43012,8 +43939,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 83, - 104, + 85, + 55, 87, 96, 0, @@ -43029,15 +43956,15 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 124, + 85, + 75, 87, 97, - 83, - 124, + 85, + 75, 97, - 82, - 114, + 84, + 65, 86, 91, 129, @@ -43045,14 +43972,14 @@ pub mod inclusion_verifier { 5, 27, 97, - 83, - 139, + 85, + 90, 130, 130, 1, 97, - 82, - 136, + 84, + 87, 86, 91, 146, @@ -43073,8 +44000,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 165, + 85, + 116, 87, 96, 0, @@ -43091,8 +44018,8 @@ pub mod inclusion_verifier { 16, 21, 97, - 83, - 195, + 85, + 146, 87, 134, 53, @@ -43107,8 +44034,8 @@ pub mod inclusion_verifier { 1, 144, 97, - 83, - 170, + 85, + 121, 86, 91, 151, @@ -43126,8 +44053,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 218, + 85, + 169, 87, 96, 0, @@ -43136,15 +44063,15 @@ pub mod inclusion_verifier { 91, 80, 97, - 83, - 231, + 85, + 182, 133, 130, 134, 1, 97, - 82, - 185, + 84, + 136, 86, 91, 145, @@ -43231,38 +44158,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 143, - 15, - 8, - 193, - 19, - 215, - 30, - 154, - 255, + 67, + 61, + 67, + 155, + 97, + 108, + 155, + 9, + 132, + 170, + 39, + 61, + 101, 208, - 74, - 147, + 59, + 188, + 145, 10, - 12, - 207, - 255, - 244, - 28, - 199, - 158, - 53, - 137, - 50, - 207, - 167, - 172, - 19, - 149, - 194, - 66, - 68, - 5, + 87, + 92, + 63, + 198, + 42, + 156, + 80, + 151, + 87, + 123, + 27, + 175, + 252, + 213, 100, 115, 111, diff --git a/backend/src/contracts/generated/mod.rs b/backend/src/contracts/generated/mod.rs index a944f3aa..467f80f0 100644 --- a/backend/src/contracts/generated/mod.rs +++ b/backend/src/contracts/generated/mod.rs @@ -1,3 +1,2 @@ pub mod summa_contract; -pub mod solvency_verifier; pub mod inclusion_verifier; \ No newline at end of file diff --git a/backend/src/contracts/generated/solvency_verifier.rs b/backend/src/contracts/generated/solvency_verifier.rs deleted file mode 100644 index c4614e1f..00000000 --- a/backend/src/contracts/generated/solvency_verifier.rs +++ /dev/null @@ -1,41185 +0,0 @@ -pub use solvency_verifier::*; -/// This module was auto-generated with ethers-rs Abigen. -/// More information at: -#[allow( - clippy::enum_variant_names, - clippy::too_many_arguments, - clippy::upper_case_acronyms, - clippy::type_complexity, - dead_code, - non_camel_case_types, -)] -pub mod solvency_verifier { - #[rustfmt::skip] - const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"pubInputs\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; - ///The parsed JSON ABI of the contract. - pub static SOLVENCYVERIFIER_ABI: ::ethers::contract::Lazy< - ::ethers::core::abi::Abi, - > = ::ethers::contract::Lazy::new(|| { - ::ethers::core::utils::__serde_json::from_str(__ABI) - .expect("ABI is always valid") - }); - #[rustfmt::skip] - const __BYTECODE: &[u8] = &[ - 96, - 128, - 96, - 64, - 82, - 52, - 128, - 21, - 97, - 0, - 16, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 97, - 80, - 18, - 128, - 97, - 0, - 32, - 96, - 0, - 57, - 96, - 0, - 243, - 254, - 96, - 128, - 96, - 64, - 82, - 52, - 128, - 21, - 97, - 0, - 16, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 96, - 4, - 54, - 16, - 97, - 0, - 43, - 87, - 96, - 0, - 53, - 96, - 224, - 28, - 128, - 99, - 189, - 32, - 90, - 144, - 20, - 97, - 0, - 48, - 87, - 91, - 96, - 0, - 128, - 253, - 91, - 97, - 0, - 67, - 97, - 0, - 62, - 54, - 96, - 4, - 97, - 78, - 212, - 86, - 91, - 97, - 0, - 87, - 86, - 91, - 96, - 64, - 81, - 144, - 21, - 21, - 129, - 82, - 96, - 32, - 1, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 243, - 91, - 96, - 0, - 96, - 1, - 97, - 0, - 99, - 97, - 77, - 253, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 189, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 0, - 217, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 157, - 131, - 57, - 129, - 81, - 145, - 82, - 128, - 131, - 16, - 129, - 131, - 16, - 22, - 144, - 131, - 128, - 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 157, - 131, - 57, - 129, - 81, - 145, - 82, - 131, - 132, - 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 157, - 131, - 57, - 129, - 81, - 145, - 82, - 132, - 130, - 9, - 144, - 80, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 157, - 131, - 57, - 129, - 81, - 145, - 82, - 96, - 3, - 130, - 8, - 145, - 144, - 145, - 20, - 145, - 144, - 145, - 22, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 128, - 96, - 32, - 135, - 1, - 81, - 6, - 96, - 32, - 131, - 1, - 82, - 128, - 96, - 64, - 135, - 1, - 81, - 6, - 96, - 64, - 131, - 1, - 82, - 128, - 96, - 96, - 135, - 1, - 81, - 6, - 96, - 96, - 131, - 1, - 82, - 126, - 174, - 153, - 177, - 55, - 145, - 111, - 244, - 34, - 11, - 13, - 167, - 23, - 154, - 70, - 1, - 48, - 28, - 130, - 52, - 111, - 198, - 101, - 205, - 51, - 105, - 165, - 78, - 31, - 2, - 212, - 234, - 96, - 0, - 131, - 1, - 82, - 96, - 32, - 133, - 1, - 81, - 128, - 96, - 128, - 132, - 1, - 82, - 96, - 64, - 134, - 1, - 81, - 128, - 96, - 160, - 133, - 1, - 82, - 132, - 97, - 1, - 67, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 133, - 1, - 81, - 128, - 96, - 192, - 132, - 1, - 82, - 96, - 128, - 134, - 1, - 81, - 128, - 96, - 224, - 133, - 1, - 82, - 132, - 97, - 1, - 105, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 160, - 133, - 1, - 81, - 128, - 97, - 1, - 0, - 132, - 1, - 82, - 96, - 192, - 134, - 1, - 81, - 128, - 97, - 1, - 32, - 133, - 1, - 82, - 132, - 97, - 1, - 145, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 64, - 96, - 0, - 131, - 1, - 32, - 97, - 1, - 64, - 131, - 1, - 82, - 97, - 1, - 64, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 1, - 96, - 132, - 1, - 82, - 128, - 97, - 1, - 128, - 132, - 1, - 82, - 80, - 96, - 224, - 133, - 1, - 81, - 128, - 97, - 1, - 160, - 132, - 1, - 82, - 97, - 1, - 0, - 134, - 1, - 81, - 128, - 97, - 1, - 192, - 133, - 1, - 82, - 132, - 97, - 1, - 223, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 133, - 1, - 81, - 128, - 97, - 1, - 224, - 132, - 1, - 82, - 97, - 1, - 64, - 134, - 1, - 81, - 128, - 97, - 2, - 0, - 133, - 1, - 82, - 132, - 97, - 2, - 9, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 96, - 160, - 97, - 1, - 128, - 135, - 1, - 32, - 97, - 2, - 32, - 135, - 1, - 129, - 144, - 82, - 133, - 129, - 6, - 97, - 2, - 64, - 136, - 1, - 82, - 97, - 2, - 96, - 135, - 1, - 82, - 22, - 148, - 80, - 96, - 1, - 145, - 80, - 80, - 97, - 2, - 128, - 131, - 1, - 83, - 96, - 33, - 97, - 2, - 96, - 131, - 1, - 32, - 97, - 2, - 128, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 2, - 160, - 132, - 1, - 82, - 97, - 2, - 192, - 131, - 1, - 82, - 97, - 1, - 96, - 133, - 1, - 81, - 97, - 2, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 1, - 128, - 134, - 1, - 81, - 97, - 3, - 0, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 2, - 124, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 160, - 133, - 1, - 81, - 128, - 97, - 3, - 32, - 132, - 1, - 82, - 97, - 1, - 192, - 134, - 1, - 81, - 128, - 97, - 3, - 64, - 133, - 1, - 82, - 132, - 97, - 2, - 166, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 224, - 133, - 1, - 81, - 128, - 97, - 3, - 96, - 132, - 1, - 82, - 97, - 2, - 0, - 134, - 1, - 81, - 128, - 97, - 3, - 128, - 133, - 1, - 82, - 132, - 97, - 2, - 208, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 32, - 133, - 1, - 81, - 128, - 97, - 3, - 160, - 132, - 1, - 82, - 97, - 2, - 64, - 134, - 1, - 81, - 128, - 97, - 3, - 192, - 133, - 1, - 82, - 132, - 97, - 2, - 250, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 97, - 2, - 192, - 131, - 1, - 32, - 97, - 3, - 224, - 131, - 1, - 82, - 97, - 3, - 224, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 4, - 0, - 132, - 1, - 82, - 128, - 97, - 4, - 32, - 132, - 1, - 82, - 80, - 97, - 2, - 96, - 133, - 1, - 81, - 128, - 97, - 4, - 64, - 132, - 1, - 82, - 97, - 2, - 128, - 134, - 1, - 81, - 128, - 97, - 4, - 96, - 133, - 1, - 82, - 132, - 97, - 3, - 74, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 160, - 133, - 1, - 81, - 128, - 97, - 4, - 128, - 132, - 1, - 82, - 97, - 2, - 192, - 134, - 1, - 81, - 128, - 97, - 4, - 160, - 133, - 1, - 82, - 132, - 97, - 3, - 116, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 224, - 133, - 1, - 81, - 128, - 97, - 4, - 192, - 132, - 1, - 82, - 97, - 3, - 0, - 134, - 1, - 81, - 128, - 97, - 4, - 224, - 133, - 1, - 82, - 132, - 97, - 3, - 158, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 32, - 133, - 1, - 81, - 128, - 97, - 5, - 0, - 132, - 1, - 82, - 97, - 3, - 64, - 134, - 1, - 81, - 128, - 97, - 5, - 32, - 133, - 1, - 82, - 132, - 97, - 3, - 200, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 96, - 133, - 1, - 81, - 128, - 97, - 5, - 64, - 132, - 1, - 82, - 97, - 3, - 128, - 134, - 1, - 81, - 128, - 97, - 5, - 96, - 133, - 1, - 82, - 132, - 97, - 3, - 242, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 96, - 97, - 4, - 32, - 131, - 1, - 32, - 97, - 5, - 128, - 131, - 1, - 82, - 97, - 5, - 128, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 5, - 160, - 132, - 1, - 82, - 128, - 97, - 5, - 192, - 132, - 1, - 82, - 80, - 128, - 97, - 3, - 160, - 134, - 1, - 81, - 6, - 97, - 5, - 224, - 131, - 1, - 82, - 128, - 97, - 3, - 192, - 134, - 1, - 81, - 6, - 97, - 6, - 0, - 131, - 1, - 82, - 128, - 97, - 3, - 224, - 134, - 1, - 81, - 6, - 97, - 6, - 32, - 131, - 1, - 82, - 128, - 97, - 4, - 0, - 134, - 1, - 81, - 6, - 97, - 6, - 64, - 131, - 1, - 82, - 128, - 97, - 4, - 32, - 134, - 1, - 81, - 6, - 97, - 6, - 96, - 131, - 1, - 82, - 128, - 97, - 4, - 64, - 134, - 1, - 81, - 6, - 97, - 6, - 128, - 131, - 1, - 82, - 128, - 97, - 4, - 96, - 134, - 1, - 81, - 6, - 97, - 6, - 160, - 131, - 1, - 82, - 128, - 97, - 4, - 128, - 134, - 1, - 81, - 6, - 97, - 6, - 192, - 131, - 1, - 82, - 128, - 97, - 4, - 160, - 134, - 1, - 81, - 6, - 97, - 6, - 224, - 131, - 1, - 82, - 128, - 97, - 4, - 192, - 134, - 1, - 81, - 6, - 97, - 7, - 0, - 131, - 1, - 82, - 128, - 97, - 4, - 224, - 134, - 1, - 81, - 6, - 97, - 7, - 32, - 131, - 1, - 82, - 128, - 97, - 5, - 0, - 134, - 1, - 81, - 6, - 97, - 7, - 64, - 131, - 1, - 82, - 128, - 97, - 5, - 32, - 134, - 1, - 81, - 6, - 97, - 7, - 96, - 131, - 1, - 82, - 128, - 97, - 5, - 64, - 134, - 1, - 81, - 6, - 97, - 7, - 128, - 131, - 1, - 82, - 128, - 97, - 5, - 96, - 134, - 1, - 81, - 6, - 97, - 7, - 160, - 131, - 1, - 82, - 128, - 97, - 5, - 128, - 134, - 1, - 81, - 6, - 97, - 7, - 192, - 131, - 1, - 82, - 128, - 97, - 5, - 160, - 134, - 1, - 81, - 6, - 97, - 7, - 224, - 131, - 1, - 82, - 128, - 97, - 5, - 192, - 134, - 1, - 81, - 6, - 97, - 8, - 0, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 134, - 1, - 81, - 6, - 97, - 8, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 134, - 1, - 81, - 6, - 97, - 8, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 134, - 1, - 81, - 6, - 97, - 8, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 134, - 1, - 81, - 6, - 97, - 8, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 134, - 1, - 81, - 6, - 97, - 8, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 134, - 1, - 81, - 6, - 97, - 8, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 160, - 134, - 1, - 81, - 6, - 97, - 8, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 192, - 134, - 1, - 81, - 6, - 97, - 9, - 0, - 131, - 1, - 82, - 128, - 97, - 6, - 224, - 134, - 1, - 81, - 6, - 97, - 9, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 0, - 134, - 1, - 81, - 6, - 97, - 9, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 32, - 134, - 1, - 81, - 6, - 97, - 9, - 96, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 134, - 1, - 81, - 6, - 97, - 9, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 96, - 134, - 1, - 81, - 6, - 97, - 9, - 160, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 134, - 1, - 81, - 6, - 97, - 9, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 134, - 1, - 81, - 6, - 97, - 9, - 224, - 131, - 1, - 82, - 97, - 4, - 64, - 97, - 5, - 192, - 131, - 1, - 32, - 97, - 10, - 0, - 131, - 1, - 82, - 97, - 10, - 0, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 10, - 32, - 132, - 1, - 82, - 128, - 97, - 10, - 64, - 132, - 1, - 82, - 80, - 96, - 1, - 97, - 10, - 96, - 131, - 1, - 83, - 96, - 33, - 97, - 10, - 64, - 131, - 1, - 32, - 97, - 10, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 10, - 128, - 132, - 1, - 82, - 97, - 10, - 160, - 131, - 1, - 82, - 97, - 7, - 192, - 133, - 1, - 81, - 97, - 10, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 134, - 1, - 81, - 97, - 10, - 224, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 6, - 95, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 97, - 10, - 160, - 131, - 1, - 32, - 97, - 11, - 0, - 131, - 1, - 82, - 97, - 11, - 0, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 11, - 32, - 132, - 1, - 82, - 128, - 97, - 11, - 64, - 132, - 1, - 82, - 80, - 97, - 8, - 0, - 133, - 1, - 81, - 128, - 97, - 11, - 96, - 132, - 1, - 82, - 97, - 8, - 32, - 134, - 1, - 81, - 128, - 97, - 11, - 128, - 133, - 1, - 82, - 132, - 97, - 6, - 174, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 128, - 97, - 5, - 160, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 11, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 11, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 11, - 224, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 0, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 128, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 192, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 12, - 192, - 132, - 1, - 81, - 8, - 97, - 12, - 224, - 131, - 1, - 82, - 128, - 127, - 48, - 88, - 53, - 95, - 68, - 121, - 83, - 193, - 173, - 226, - 49, - 165, - 19, - 224, - 248, - 7, - 16, - 233, - 219, - 78, - 103, - 155, - 2, - 53, - 31, - 144, - 253, - 22, - 139, - 4, - 0, - 1, - 97, - 12, - 224, - 132, - 1, - 81, - 9, - 97, - 13, - 0, - 131, - 1, - 82, - 128, - 127, - 21, - 247, - 157, - 185, - 195, - 145, - 129, - 188, - 62, - 49, - 200, - 63, - 146, - 145, - 218, - 118, - 238, - 223, - 27, - 35, - 196, - 16, - 173, - 215, - 233, - 9, - 132, - 100, - 170, - 164, - 251, - 38, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 13, - 32, - 131, - 1, - 82, - 128, - 127, - 26, - 108, - 176, - 185, - 29, - 160, - 30, - 109, - 122, - 30, - 125, - 118, - 238, - 239, - 125, - 230, - 57, - 84, - 205, - 36, - 181, - 168, - 194, - 185, - 90, - 216, - 113, - 47, - 69, - 91, - 4, - 219, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 13, - 64, - 131, - 1, - 82, - 128, - 127, - 3, - 183, - 67, - 215, - 79, - 217, - 221, - 180, - 31, - 146, - 1, - 121, - 172, - 48, - 224, - 75, - 14, - 189, - 147, - 229, - 128, - 185, - 192, - 181, - 0, - 97, - 8, - 121, - 4, - 17, - 11, - 212, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 13, - 96, - 131, - 1, - 82, - 128, - 127, - 44, - 173, - 10, - 155, - 145, - 87, - 194, - 117, - 152, - 190, - 68, - 60, - 213, - 80, - 120, - 18, - 25, - 118, - 84, - 98, - 248, - 255, - 175, - 220, - 67, - 128, - 237, - 26, - 235, - 238, - 244, - 45, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 13, - 128, - 131, - 1, - 82, - 128, - 127, - 31, - 77, - 113, - 128, - 223, - 80, - 20, - 132, - 152, - 37, - 243, - 201, - 176, - 232, - 157, - 121, - 67, - 44, - 81, - 244, - 142, - 181, - 132, - 106, - 230, - 59, - 67, - 63, - 40, - 171, - 161, - 11, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 13, - 160, - 131, - 1, - 82, - 128, - 127, - 17, - 22, - 220, - 242, - 1, - 225, - 139, - 165, - 32, - 42, - 81, - 236, - 208, - 152, - 186, - 227, - 229, - 7, - 150, - 83, - 235, - 3, - 236, - 38, - 93, - 166, - 178, - 84, - 199, - 84, - 94, - 246, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 13, - 192, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, - 74, - 43, - 229, - 211, - 2, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 13, - 224, - 131, - 1, - 82, - 128, - 127, - 13, - 174, - 248, - 111, - 136, - 196, - 64, - 101, - 139, - 228, - 48, - 243, - 133, - 89, - 184, - 52, - 102, - 44, - 13, - 189, - 77, - 71, - 165, - 93, - 110, - 151, - 251, - 73, - 196, - 26, - 44, - 255, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 14, - 0, - 131, - 1, - 82, - 128, - 127, - 9, - 107, - 159, - 139, - 133, - 152, - 183, - 195, - 135, - 251, - 105, - 171, - 242, - 54, - 176, - 213, - 224, - 78, - 36, - 210, - 117, - 238, - 152, - 36, - 68, - 67, - 237, - 165, - 211, - 188, - 64, - 53, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 14, - 32, - 131, - 1, - 82, - 128, - 127, - 38, - 248, - 174, - 231, - 91, - 152, - 232, - 102, - 48, - 84, - 220, - 10, - 143, - 74, - 167, - 135, - 71, - 229, - 195, - 118, - 3, - 202, - 216, - 108, - 255, - 158, - 7, - 238, - 28, - 67, - 191, - 204, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 14, - 64, - 131, - 1, - 82, - 128, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 227, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 14, - 96, - 131, - 1, - 82, - 128, - 127, - 37, - 128, - 133, - 19, - 32, - 245, - 149, - 202, - 138, - 103, - 156, - 194, - 21, - 125, - 139, - 125, - 72, - 70, - 188, - 142, - 237, - 27, - 37, - 176, - 146, - 214, - 223, - 166, - 75, - 28, - 78, - 30, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 14, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 14, - 160, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 14, - 192, - 131, - 1, - 82, - 128, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 125, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 14, - 224, - 131, - 1, - 82, - 128, - 127, - 5, - 139, - 76, - 84, - 16, - 181, - 93, - 126, - 158, - 88, - 201, - 89, - 142, - 181, - 133, - 126, - 118, - 253, - 254, - 21, - 106, - 158, - 91, - 29, - 134, - 217, - 28, - 0, - 230, - 59, - 68, - 132, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 15, - 0, - 131, - 1, - 82, - 128, - 127, - 13, - 211, - 11, - 154, - 216, - 193, - 115, - 85, - 93, - 42, - 51, - 2, - 155, - 200, - 7, - 172, - 22, - 91, - 97, - 40, - 30, - 144, - 84, - 161, - 115, - 175, - 127, - 244, - 228, - 252, - 136, - 252, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 15, - 32, - 131, - 1, - 82, - 128, - 127, - 34, - 145, - 66, - 216, - 8, - 112, - 44, - 212, - 91, - 38, - 18, - 179, - 229, - 185, - 80, - 177, - 17, - 216, - 135, - 32, - 91, - 41, - 27, - 239, - 208, - 50, - 117, - 159, - 11, - 3, - 119, - 5, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 15, - 64, - 131, - 1, - 82, - 97, - 13, - 64, - 130, - 1, - 81, - 129, - 129, - 97, - 13, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 13, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 12, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 96, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 16, - 160, - 131, - 1, - 82, - 96, - 32, - 97, - 16, - 192, - 131, - 1, - 82, - 96, - 32, - 97, - 16, - 224, - 131, - 1, - 82, - 97, - 16, - 96, - 130, - 1, - 81, - 97, - 17, - 0, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 17, - 32, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 189, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 17, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 16, - 128, - 133, - 1, - 96, - 192, - 97, - 16, - 160, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 16, - 128, - 130, - 1, - 81, - 96, - 0, - 97, - 12, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 64, - 134, - 1, - 81, - 9, - 97, - 12, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 32, - 134, - 1, - 81, - 9, - 97, - 15, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 0, - 134, - 1, - 81, - 9, - 97, - 15, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 224, - 134, - 1, - 81, - 9, - 97, - 14, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 192, - 134, - 1, - 81, - 9, - 97, - 14, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 160, - 134, - 1, - 81, - 9, - 97, - 14, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 128, - 134, - 1, - 81, - 9, - 97, - 14, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 13, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 96, - 134, - 1, - 81, - 9, - 97, - 13, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 13, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 13, - 64, - 134, - 1, - 81, - 9, - 97, - 13, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 13, - 64, - 133, - 1, - 129, - 144, - 82, - 97, - 13, - 32, - 133, - 1, - 81, - 132, - 147, - 80, - 144, - 145, - 80, - 9, - 97, - 17, - 96, - 131, - 1, - 82, - 128, - 97, - 13, - 128, - 131, - 1, - 81, - 97, - 13, - 96, - 132, - 1, - 81, - 9, - 97, - 17, - 128, - 131, - 1, - 82, - 128, - 97, - 13, - 192, - 131, - 1, - 81, - 97, - 13, - 160, - 132, - 1, - 81, - 9, - 97, - 17, - 160, - 131, - 1, - 82, - 128, - 97, - 14, - 0, - 131, - 1, - 81, - 97, - 13, - 224, - 132, - 1, - 81, - 9, - 97, - 17, - 192, - 131, - 1, - 82, - 128, - 97, - 14, - 64, - 131, - 1, - 81, - 97, - 14, - 32, - 132, - 1, - 81, - 9, - 97, - 17, - 224, - 131, - 1, - 82, - 128, - 97, - 14, - 128, - 131, - 1, - 81, - 97, - 14, - 96, - 132, - 1, - 81, - 9, - 97, - 18, - 0, - 131, - 1, - 82, - 128, - 97, - 14, - 192, - 131, - 1, - 81, - 97, - 14, - 160, - 132, - 1, - 81, - 9, - 97, - 18, - 32, - 131, - 1, - 82, - 128, - 97, - 15, - 0, - 131, - 1, - 81, - 97, - 14, - 224, - 132, - 1, - 81, - 9, - 97, - 18, - 64, - 131, - 1, - 82, - 128, - 97, - 15, - 64, - 131, - 1, - 81, - 97, - 15, - 32, - 132, - 1, - 81, - 9, - 97, - 18, - 96, - 131, - 1, - 82, - 128, - 96, - 32, - 131, - 1, - 81, - 97, - 18, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 96, - 64, - 134, - 1, - 81, - 97, - 18, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 96, - 96, - 134, - 1, - 81, - 97, - 18, - 96, - 135, - 1, - 81, - 9, - 8, - 97, - 18, - 128, - 132, - 1, - 82, - 80, - 97, - 7, - 32, - 130, - 1, - 81, - 97, - 5, - 224, - 131, - 1, - 81, - 130, - 145, - 144, - 8, - 97, - 18, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 18, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 18, - 224, - 131, - 1, - 82, - 128, - 97, - 18, - 224, - 131, - 1, - 81, - 97, - 18, - 160, - 132, - 1, - 81, - 9, - 97, - 19, - 0, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 19, - 0, - 132, - 1, - 81, - 9, - 97, - 19, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 19, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 128, - 131, - 1, - 82, - 128, - 97, - 19, - 128, - 131, - 1, - 81, - 97, - 19, - 64, - 132, - 1, - 81, - 9, - 97, - 19, - 160, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 19, - 160, - 132, - 1, - 81, - 9, - 97, - 19, - 192, - 131, - 1, - 82, - 128, - 97, - 19, - 192, - 131, - 1, - 81, - 97, - 19, - 32, - 132, - 1, - 81, - 8, - 97, - 19, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 19, - 224, - 132, - 1, - 81, - 8, - 97, - 20, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 20, - 32, - 131, - 1, - 82, - 128, - 97, - 20, - 32, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 20, - 64, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 19, - 0, - 132, - 1, - 81, - 9, - 97, - 20, - 96, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 19, - 160, - 132, - 1, - 81, - 9, - 97, - 20, - 128, - 131, - 1, - 82, - 128, - 97, - 20, - 128, - 131, - 1, - 81, - 97, - 20, - 96, - 132, - 1, - 81, - 8, - 97, - 20, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 20, - 160, - 132, - 1, - 81, - 8, - 97, - 20, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 20, - 224, - 131, - 1, - 82, - 128, - 97, - 20, - 224, - 131, - 1, - 81, - 97, - 20, - 64, - 132, - 1, - 81, - 8, - 97, - 21, - 0, - 131, - 1, - 82, - 128, - 97, - 21, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 21, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 19, - 0, - 132, - 1, - 81, - 8, - 97, - 21, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 21, - 96, - 131, - 1, - 82, - 128, - 97, - 21, - 96, - 131, - 1, - 81, - 97, - 21, - 32, - 132, - 1, - 81, - 8, - 97, - 21, - 128, - 131, - 1, - 82, - 128, - 97, - 21, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 21, - 160, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 21, - 192, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 19, - 64, - 132, - 1, - 81, - 9, - 97, - 21, - 224, - 131, - 1, - 82, - 128, - 97, - 21, - 224, - 131, - 1, - 81, - 97, - 21, - 192, - 132, - 1, - 81, - 8, - 97, - 22, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 22, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 22, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 22, - 96, - 131, - 1, - 82, - 128, - 97, - 22, - 96, - 131, - 1, - 81, - 97, - 22, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 128, - 131, - 1, - 82, - 128, - 127, - 19, - 171, - 236, - 57, - 10, - 218, - 127, - 67, - 112, - 129, - 154, - 177, - 199, - 132, - 111, - 33, - 5, - 84, - 86, - 157, - 155, - 41, - 209, - 234, - 141, - 190, - 189, - 15, - 168, - 197, - 62, - 102, - 97, - 6, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 160, - 131, - 1, - 82, - 128, - 127, - 30, - 185, - 225, - 220, - 25, - 163, - 58, - 98, - 76, - 152, - 98, - 161, - 217, - 125, - 21, - 16, - 189, - 82, - 30, - 173, - 93, - 254, - 3, - 69, - 170, - 246, - 24, - 91, - 26, - 30, - 96, - 254, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 22, - 192, - 131, - 1, - 82, - 128, - 97, - 22, - 192, - 131, - 1, - 81, - 97, - 22, - 160, - 132, - 1, - 81, - 8, - 97, - 22, - 224, - 131, - 1, - 82, - 128, - 97, - 22, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 22, - 128, - 132, - 1, - 81, - 8, - 97, - 23, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 23, - 32, - 131, - 1, - 82, - 128, - 97, - 23, - 32, - 131, - 1, - 81, - 97, - 21, - 160, - 132, - 1, - 81, - 8, - 97, - 23, - 64, - 131, - 1, - 82, - 128, - 97, - 23, - 64, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 23, - 96, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 23, - 128, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 19, - 64, - 132, - 1, - 81, - 9, - 97, - 23, - 160, - 131, - 1, - 82, - 128, - 97, - 23, - 160, - 131, - 1, - 81, - 97, - 23, - 128, - 132, - 1, - 81, - 8, - 97, - 23, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 23, - 224, - 131, - 1, - 82, - 128, - 127, - 15, - 193, - 201, - 57, - 77, - 184, - 155, - 178, - 96, - 26, - 188, - 73, - 253, - 173, - 79, - 3, - 140, - 229, - 22, - 144, - 48, - 162, - 173, - 105, - 118, - 63, - 120, - 117, - 3, - 107, - 203, - 2, - 97, - 6, - 32, - 132, - 1, - 81, - 9, - 97, - 24, - 0, - 131, - 1, - 82, - 128, - 127, - 22, - 169, - 233, - 140, - 73, - 58, - 144, - 43, - 149, - 2, - 5, - 78, - 220, - 3, - 231, - 178, - 43, - 126, - 172, - 52, - 52, - 89, - 97, - 188, - 138, - 188, - 237, - 107, - 209, - 71, - 200, - 190, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 24, - 32, - 131, - 1, - 82, - 128, - 97, - 24, - 32, - 131, - 1, - 81, - 97, - 24, - 0, - 132, - 1, - 81, - 8, - 97, - 24, - 64, - 131, - 1, - 82, - 128, - 97, - 24, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 23, - 224, - 132, - 1, - 81, - 8, - 97, - 24, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 24, - 128, - 131, - 1, - 82, - 128, - 97, - 24, - 128, - 131, - 1, - 81, - 97, - 23, - 96, - 132, - 1, - 81, - 8, - 97, - 24, - 160, - 131, - 1, - 82, - 128, - 97, - 24, - 160, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 24, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 24, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 0, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 2, - 8, - 97, - 25, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 25, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 3, - 8, - 97, - 25, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 25, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 128, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 131, - 1, - 81, - 97, - 6, - 160, - 132, - 1, - 81, - 8, - 97, - 25, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 25, - 160, - 132, - 1, - 81, - 8, - 97, - 25, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 25, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 224, - 131, - 1, - 82, - 128, - 97, - 25, - 224, - 131, - 1, - 81, - 97, - 24, - 192, - 132, - 1, - 81, - 8, - 97, - 26, - 0, - 131, - 1, - 82, - 128, - 97, - 26, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 26, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 128, - 132, - 1, - 81, - 8, - 97, - 26, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 25, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 96, - 131, - 1, - 82, - 128, - 97, - 26, - 96, - 131, - 1, - 81, - 97, - 26, - 32, - 132, - 1, - 81, - 8, - 97, - 26, - 128, - 131, - 1, - 82, - 128, - 97, - 26, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 26, - 160, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 97, - 25, - 32, - 132, - 1, - 81, - 9, - 97, - 26, - 192, - 131, - 1, - 82, - 128, - 97, - 26, - 192, - 131, - 1, - 81, - 97, - 25, - 96, - 132, - 1, - 81, - 9, - 97, - 26, - 224, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 4, - 8, - 97, - 27, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 27, - 32, - 131, - 1, - 82, - 128, - 97, - 27, - 32, - 131, - 1, - 81, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 27, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 27, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 27, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 27, - 128, - 131, - 1, - 82, - 128, - 97, - 27, - 128, - 131, - 1, - 81, - 97, - 26, - 160, - 132, - 1, - 81, - 8, - 97, - 27, - 160, - 131, - 1, - 82, - 128, - 97, - 27, - 160, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 27, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 96, - 2, - 9, - 97, - 27, - 224, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 28, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 27, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 28, - 32, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 28, - 64, - 131, - 1, - 82, - 128, - 97, - 28, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 28, - 32, - 132, - 1, - 81, - 8, - 97, - 28, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 28, - 128, - 131, - 1, - 82, - 128, - 97, - 28, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 28, - 96, - 132, - 1, - 81, - 8, - 97, - 28, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 27, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 28, - 192, - 131, - 1, - 82, - 128, - 97, - 28, - 192, - 131, - 1, - 81, - 97, - 27, - 192, - 132, - 1, - 81, - 8, - 97, - 28, - 224, - 131, - 1, - 82, - 128, - 97, - 28, - 224, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 29, - 0, - 131, - 1, - 82, - 128, - 97, - 25, - 0, - 131, - 1, - 81, - 97, - 25, - 96, - 132, - 1, - 81, - 9, - 97, - 29, - 32, - 131, - 1, - 82, - 128, - 97, - 29, - 32, - 131, - 1, - 81, - 97, - 27, - 0, - 132, - 1, - 81, - 9, - 97, - 29, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 97, - 5, - 224, - 132, - 1, - 81, - 8, - 97, - 29, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 29, - 96, - 132, - 1, - 81, - 8, - 97, - 29, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 29, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 29, - 160, - 131, - 1, - 82, - 128, - 97, - 29, - 160, - 131, - 1, - 81, - 97, - 29, - 0, - 132, - 1, - 81, - 8, - 97, - 29, - 192, - 131, - 1, - 82, - 128, - 97, - 29, - 192, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 29, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 29, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 30, - 0, - 131, - 1, - 82, - 128, - 97, - 30, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 30, - 32, - 131, - 1, - 82, - 128, - 97, - 25, - 64, - 131, - 1, - 81, - 97, - 27, - 0, - 132, - 1, - 81, - 9, - 97, - 30, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 5, - 224, - 132, - 1, - 81, - 8, - 97, - 30, - 96, - 131, - 1, - 82, - 128, - 96, - 1, - 96, - 112, - 27, - 97, - 30, - 96, - 132, - 1, - 81, - 8, - 97, - 30, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 30, - 128, - 132, - 1, - 81, - 8, - 97, - 30, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 30, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 30, - 192, - 131, - 1, - 82, - 128, - 97, - 30, - 192, - 131, - 1, - 81, - 97, - 30, - 32, - 132, - 1, - 81, - 8, - 97, - 30, - 224, - 131, - 1, - 82, - 128, - 97, - 30, - 224, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 31, - 0, - 131, - 1, - 82, - 128, - 97, - 8, - 192, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 31, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 31, - 64, - 131, - 1, - 82, - 128, - 97, - 31, - 64, - 131, - 1, - 81, - 97, - 31, - 0, - 132, - 1, - 81, - 8, - 97, - 31, - 96, - 131, - 1, - 82, - 128, - 97, - 31, - 96, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 31, - 128, - 131, - 1, - 82, - 97, - 9, - 32, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 31, - 160, - 131, - 1, - 82, - 128, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 31, - 160, - 132, - 1, - 81, - 8, - 97, - 31, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 31, - 224, - 131, - 1, - 82, - 128, - 97, - 31, - 224, - 131, - 1, - 81, - 97, - 31, - 128, - 132, - 1, - 81, - 8, - 97, - 32, - 0, - 131, - 1, - 82, - 128, - 97, - 32, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 32, - 32, - 131, - 1, - 82, - 128, - 97, - 9, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 32, - 132, - 1, - 81, - 8, - 97, - 32, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 32, - 96, - 131, - 1, - 82, - 128, - 97, - 32, - 96, - 131, - 1, - 81, - 97, - 32, - 32, - 132, - 1, - 81, - 8, - 97, - 32, - 128, - 131, - 1, - 82, - 128, - 97, - 32, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 32, - 160, - 131, - 1, - 82, - 128, - 97, - 17, - 96, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 32, - 192, - 131, - 1, - 82, - 128, - 97, - 17, - 160, - 131, - 1, - 81, - 97, - 17, - 128, - 132, - 1, - 81, - 8, - 97, - 32, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 33, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 33, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 33, - 64, - 131, - 1, - 82, - 128, - 97, - 33, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 32, - 192, - 132, - 1, - 81, - 8, - 97, - 33, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 0, - 132, - 1, - 81, - 9, - 97, - 33, - 128, - 131, - 1, - 82, - 128, - 97, - 33, - 128, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, - 97, - 33, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 33, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 32, - 132, - 1, - 81, - 9, - 97, - 33, - 224, - 131, - 1, - 82, - 128, - 97, - 33, - 224, - 131, - 1, - 81, - 97, - 5, - 224, - 132, - 1, - 81, - 8, - 97, - 34, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 34, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 34, - 64, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 64, - 132, - 1, - 81, - 9, - 97, - 34, - 96, - 131, - 1, - 82, - 128, - 97, - 34, - 96, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 34, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 34, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 34, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 34, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 96, - 132, - 1, - 81, - 9, - 97, - 34, - 224, - 131, - 1, - 82, - 128, - 97, - 34, - 224, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 8, - 97, - 35, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 35, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 34, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 35, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 8, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 35, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 35, - 128, - 131, - 1, - 82, - 128, - 97, - 35, - 128, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 35, - 160, - 131, - 1, - 82, - 128, - 97, - 35, - 160, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, - 97, - 35, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 35, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 127, - 9, - 34, - 107, - 110, - 34, - 198, - 240, - 202, - 100, - 236, - 38, - 170, - 212, - 200, - 110, - 113, - 91, - 95, - 137, - 142, - 94, - 150, - 63, - 37, - 135, - 14, - 86, - 187, - 229, - 51, - 233, - 162, - 9, - 97, - 36, - 0, - 131, - 1, - 82, - 128, - 97, - 36, - 0, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 36, - 32, - 131, - 1, - 82, - 128, - 97, - 36, - 32, - 131, - 1, - 81, - 97, - 5, - 224, - 132, - 1, - 81, - 8, - 97, - 36, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 35, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 36, - 128, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 127, - 19, - 179, - 96, - 212, - 232, - 47, - 233, - 21, - 254, - 209, - 96, - 129, - 3, - 143, - 152, - 194, - 17, - 66, - 123, - 135, - 162, - 129, - 189, - 115, - 60, - 39, - 125, - 186, - 223, - 16, - 55, - 43, - 9, - 97, - 36, - 160, - 131, - 1, - 82, - 128, - 97, - 36, - 160, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 36, - 192, - 131, - 1, - 82, - 128, - 97, - 36, - 192, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 36, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 36, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 37, - 32, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 127, - 24, - 175, - 223, - 35, - 233, - 189, - 147, - 2, - 103, - 63, - 193, - 224, - 118, - 164, - 146, - 212, - 214, - 91, - 209, - 142, - 188, - 77, - 133, - 78, - 209, - 137, - 19, - 155, - 171, - 49, - 62, - 82, - 9, - 97, - 37, - 64, - 131, - 1, - 82, - 128, - 97, - 37, - 64, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 37, - 96, - 131, - 1, - 82, - 128, - 97, - 37, - 96, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 8, - 97, - 37, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 37, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 37, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 8, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 37, - 224, - 131, - 1, - 82, - 128, - 97, - 37, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 35, - 96, - 132, - 1, - 81, - 8, - 97, - 38, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 38, - 32, - 131, - 1, - 82, - 128, - 97, - 38, - 32, - 131, - 1, - 81, - 97, - 32, - 160, - 132, - 1, - 81, - 8, - 97, - 38, - 64, - 131, - 1, - 82, - 128, - 97, - 38, - 64, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 38, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 128, - 132, - 1, - 81, - 9, - 97, - 38, - 128, - 131, - 1, - 82, - 128, - 97, - 38, - 128, - 131, - 1, - 81, - 97, - 6, - 96, - 132, - 1, - 81, - 8, - 97, - 38, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 38, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 160, - 132, - 1, - 81, - 9, - 97, - 38, - 224, - 131, - 1, - 82, - 128, - 97, - 38, - 224, - 131, - 1, - 81, - 97, - 18, - 128, - 132, - 1, - 81, - 8, - 97, - 39, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 39, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 38, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 39, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 39, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 126, - 161, - 54, - 186, - 19, - 175, - 166, - 200, - 62, - 183, - 184, - 47, - 179, - 112, - 226, - 40, - 231, - 65, - 85, - 228, - 143, - 184, - 241, - 193, - 207, - 195, - 63, - 176, - 218, - 138, - 251, - 66, - 9, - 97, - 39, - 128, - 131, - 1, - 82, - 128, - 97, - 39, - 128, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 39, - 160, - 131, - 1, - 82, - 128, - 97, - 39, - 160, - 131, - 1, - 81, - 97, - 6, - 96, - 132, - 1, - 81, - 8, - 97, - 39, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 39, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 127, - 46, - 185, - 117, - 13, - 206, - 84, - 95, - 23, - 212, - 146, - 5, - 141, - 210, - 1, - 161, - 37, - 31, - 243, - 217, - 7, - 120, - 100, - 88, - 61, - 68, - 234, - 249, - 190, - 144, - 8, - 105, - 157, - 9, - 97, - 40, - 0, - 131, - 1, - 82, - 128, - 97, - 40, - 0, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 40, - 32, - 131, - 1, - 82, - 128, - 97, - 40, - 32, - 131, - 1, - 81, - 97, - 18, - 128, - 132, - 1, - 81, - 8, - 97, - 40, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 40, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 39, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 40, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 40, - 160, - 131, - 1, - 82, - 128, - 97, - 40, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 39, - 96, - 132, - 1, - 81, - 8, - 97, - 40, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 40, - 224, - 131, - 1, - 82, - 128, - 97, - 40, - 224, - 131, - 1, - 81, - 97, - 38, - 96, - 132, - 1, - 81, - 8, - 97, - 41, - 0, - 131, - 1, - 82, - 128, - 97, - 41, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 41, - 32, - 131, - 1, - 82, - 128, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 41, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 41, - 96, - 131, - 1, - 82, - 128, - 97, - 41, - 96, - 131, - 1, - 81, - 97, - 41, - 32, - 132, - 1, - 81, - 8, - 97, - 41, - 128, - 131, - 1, - 82, - 128, - 97, - 41, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 41, - 160, - 131, - 1, - 82, - 97, - 9, - 96, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 41, - 192, - 131, - 1, - 82, - 128, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 41, - 192, - 132, - 1, - 81, - 8, - 97, - 41, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 0, - 131, - 1, - 82, - 128, - 97, - 42, - 0, - 131, - 1, - 81, - 97, - 41, - 160, - 132, - 1, - 81, - 8, - 97, - 42, - 32, - 131, - 1, - 82, - 128, - 97, - 42, - 32, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 42, - 64, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 9, - 160, - 132, - 1, - 81, - 8, - 97, - 42, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 128, - 131, - 1, - 82, - 128, - 97, - 2, - 160, - 131, - 1, - 81, - 97, - 9, - 224, - 132, - 1, - 81, - 8, - 97, - 42, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 42, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 192, - 131, - 1, - 81, - 97, - 1, - 0, - 9, - 97, - 42, - 224, - 131, - 1, - 82, - 128, - 97, - 42, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 96, - 132, - 1, - 81, - 8, - 97, - 43, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 64, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 43, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 160, - 131, - 1, - 81, - 97, - 7, - 32, - 132, - 1, - 81, - 8, - 97, - 43, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 43, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 160, - 131, - 1, - 82, - 128, - 97, - 43, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 42, - 192, - 132, - 1, - 81, - 8, - 97, - 43, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 224, - 131, - 1, - 82, - 128, - 97, - 43, - 224, - 131, - 1, - 81, - 97, - 42, - 64, - 132, - 1, - 81, - 8, - 97, - 44, - 0, - 131, - 1, - 82, - 128, - 97, - 44, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 44, - 32, - 131, - 1, - 82, - 128, - 97, - 9, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 160, - 132, - 1, - 81, - 8, - 97, - 44, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 44, - 96, - 131, - 1, - 82, - 128, - 97, - 44, - 96, - 131, - 1, - 81, - 97, - 44, - 32, - 132, - 1, - 81, - 8, - 97, - 44, - 128, - 131, - 1, - 82, - 128, - 97, - 44, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 44, - 160, - 131, - 1, - 82, - 128, - 97, - 33, - 96, - 131, - 1, - 81, - 97, - 44, - 64, - 132, - 1, - 81, - 9, - 97, - 44, - 192, - 131, - 1, - 82, - 128, - 97, - 9, - 192, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 160, - 132, - 1, - 81, - 8, - 97, - 44, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 44, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 0, - 131, - 1, - 82, - 128, - 97, - 45, - 0, - 131, - 1, - 81, - 97, - 44, - 160, - 132, - 1, - 81, - 8, - 97, - 45, - 32, - 131, - 1, - 82, - 97, - 12, - 192, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 45, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 12, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 12, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 12, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 160, - 131, - 1, - 82, - 128, - 97, - 12, - 192, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 45, - 192, - 131, - 1, - 82, - 128, - 97, - 45, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 45, - 224, - 131, - 1, - 82, - 128, - 97, - 45, - 96, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 46, - 0, - 131, - 1, - 82, - 128, - 97, - 45, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 46, - 32, - 131, - 1, - 82, - 128, - 97, - 12, - 224, - 131, - 1, - 81, - 97, - 45, - 32, - 132, - 1, - 81, - 9, - 97, - 46, - 64, - 131, - 1, - 82, - 128, - 97, - 5, - 160, - 131, - 1, - 81, - 97, - 11, - 160, - 132, - 1, - 81, - 9, - 97, - 46, - 96, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 46, - 128, - 131, - 1, - 82, - 128, - 97, - 46, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 32, - 132, - 1, - 81, - 8, - 97, - 46, - 160, - 131, - 1, - 82, - 128, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 227, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 46, - 192, - 131, - 1, - 82, - 128, - 97, - 46, - 192, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 32, - 132, - 1, - 81, - 8, - 97, - 46, - 224, - 131, - 1, - 82, - 128, - 127, - 21, - 247, - 157, - 185, - 195, - 145, - 129, - 188, - 62, - 49, - 200, - 63, - 146, - 145, - 218, - 118, - 238, - 223, - 27, - 35, - 196, - 16, - 173, - 215, - 233, - 9, - 132, - 100, - 170, - 164, - 251, - 38, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 47, - 0, - 131, - 1, - 82, - 128, - 97, - 47, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 32, - 132, - 1, - 81, - 8, - 97, - 47, - 32, - 131, - 1, - 82, - 128, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 125, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 47, - 64, - 131, - 1, - 82, - 128, - 97, - 47, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 32, - 132, - 1, - 81, - 8, - 97, - 47, - 96, - 131, - 1, - 82, - 128, - 129, - 127, - 43, - 11, - 209, - 103, - 49, - 170, - 243, - 73, - 40, - 192, - 102, - 27, - 164, - 51, - 16, - 251, - 191, - 68, - 186, - 164, - 87, - 185, - 128, - 206, - 25, - 175, - 251, - 167, - 49, - 87, - 146, - 164, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 5, - 88, - 125, - 11, - 175, - 134, - 172, - 224, - 143, - 143, - 223, - 154, - 221, - 78, - 71, - 97, - 104, - 239, - 45, - 164, - 33, - 255, - 239, - 195, - 42, - 49, - 249, - 236, - 190, - 168, - 109, - 93, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 47, - 128, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 30, - 66, - 33, - 78, - 169, - 178, - 219, - 51, - 41, - 107, - 165, - 80, - 150, - 129, - 90, - 10, - 109, - 70, - 138, - 247, - 21, - 204, - 250, - 159, - 171, - 147, - 177, - 227, - 112, - 27, - 127, - 98, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 22, - 72, - 204, - 5, - 91, - 17, - 175, - 78, - 15, - 98, - 146, - 61, - 150, - 39, - 227, - 119, - 177, - 212, - 19, - 192, - 134, - 74, - 244, - 150, - 58, - 130, - 111, - 204, - 106, - 2, - 49, - 250, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 47, - 160, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 41, - 96, - 216, - 74, - 149, - 216, - 240, - 15, - 116, - 10, - 61, - 20, - 120, - 254, - 182, - 212, - 177, - 150, - 227, - 75, - 248, - 107, - 98, - 183, - 80, - 65, - 177, - 75, - 56, - 157, - 73, - 206, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 33, - 254, - 97, - 90, - 206, - 153, - 2, - 136, - 65, - 200, - 67, - 147, - 227, - 148, - 53, - 234, - 38, - 103, - 94, - 73, - 79, - 212, - 136, - 98, - 99, - 230, - 254, - 221, - 60, - 186, - 31, - 22, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 47, - 192, - 132, - 1, - 82, - 80, - 97, - 46, - 160, - 130, - 1, - 81, - 129, - 144, - 96, - 1, - 9, - 97, - 47, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 47, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 46, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 32, - 131, - 1, - 82, - 128, - 129, - 127, - 5, - 139, - 76, - 84, - 16, - 181, - 93, - 126, - 158, - 88, - 201, - 89, - 142, - 181, - 133, - 126, - 118, - 253, - 254, - 21, - 106, - 158, - 91, - 29, - 134, - 217, - 28, - 0, - 230, - 59, - 68, - 133, - 97, - 5, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 124, - 97, - 5, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 48, - 64, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 124, - 97, - 5, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 29, - 5, - 246, - 131, - 247, - 186, - 207, - 85, - 188, - 205, - 73, - 90, - 87, - 3, - 203, - 50, - 154, - 218, - 137, - 10, - 240, - 138, - 192, - 210, - 73, - 89, - 89, - 158, - 36, - 200, - 50, - 129, - 97, - 5, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 48, - 96, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 35, - 175, - 64, - 228, - 126, - 47, - 89, - 160, - 56, - 9, - 72, - 74, - 41, - 213, - 227, - 175, - 191, - 16, - 95, - 31, - 161, - 0, - 222, - 139, - 226, - 18, - 149, - 169, - 47, - 167, - 85, - 52, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 12, - 181, - 13, - 142, - 99, - 2, - 70, - 137, - 128, - 70, - 253, - 108, - 87, - 171, - 116, - 173, - 105, - 35, - 137, - 40, - 216, - 184, - 146, - 5, - 97, - 207, - 95, - 234, - 192, - 88, - 170, - 205, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 48, - 128, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 37, - 158, - 177, - 209, - 93, - 46, - 116, - 220, - 26, - 34, - 195, - 34, - 16, - 222, - 135, - 86, - 109, - 122, - 230, - 123, - 204, - 133, - 156, - 225, - 227, - 49, - 23, - 225, - 113, - 203, - 188, - 210, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 7, - 5, - 247, - 144, - 26, - 11, - 163, - 115, - 109, - 255, - 8, - 48, - 168, - 19, - 205, - 199, - 53, - 12, - 231, - 156, - 133, - 43, - 162, - 216, - 99, - 83, - 208, - 255, - 132, - 216, - 11, - 181, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 48, - 160, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 42, - 107, - 190, - 181, - 99, - 50, - 242, - 32, - 195, - 15, - 202, - 172, - 115, - 127, - 216, - 133, - 195, - 89, - 100, - 128, - 240, - 202, - 47, - 240, - 125, - 39, - 51, - 86, - 25, - 17, - 183, - 189, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 38, - 160, - 248, - 77, - 118, - 68, - 75, - 94, - 10, - 96, - 248, - 150, - 108, - 198, - 200, - 140, - 9, - 207, - 7, - 19, - 189, - 4, - 75, - 169, - 254, - 108, - 155, - 46, - 139, - 98, - 99, - 183, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 48, - 192, - 132, - 1, - 82, - 80, - 97, - 47, - 32, - 130, - 1, - 81, - 97, - 48, - 0, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 48, - 224, - 131, - 1, - 82, - 128, - 129, - 127, - 37, - 128, - 133, - 19, - 32, - 245, - 149, - 202, - 138, - 103, - 156, - 194, - 21, - 125, - 139, - 125, - 72, - 70, - 188, - 142, - 237, - 27, - 37, - 176, - 146, - 214, - 223, - 166, - 75, - 28, - 78, - 31, - 97, - 5, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 226, - 97, - 5, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 49, - 0, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 226, - 97, - 5, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 1, - 120, - 41, - 212, - 58, - 163, - 82, - 155, - 165, - 237, - 63, - 72, - 121, - 205, - 28, - 9, - 255, - 159, - 6, - 231, - 22, - 175, - 178, - 188, - 108, - 199, - 40, - 71, - 209, - 39, - 113, - 174, - 97, - 5, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 49, - 32, - 132, - 1, - 82, - 80, - 97, - 46, - 224, - 130, - 1, - 81, - 97, - 47, - 224, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 49, - 64, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 49, - 96, - 132, - 1, - 82, - 80, - 97, - 47, - 128, - 130, - 1, - 81, - 97, - 47, - 160, - 131, - 1, - 81, - 130, - 144, - 130, - 144, - 9, - 144, - 80, - 128, - 97, - 49, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 47, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 49, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 49, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 49, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 49, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 49, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 49, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 49, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 51, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 47, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 51, - 32, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 51, - 96, - 131, - 1, - 82, - 96, - 32, - 97, - 51, - 128, - 131, - 1, - 82, - 96, - 32, - 97, - 51, - 160, - 131, - 1, - 82, - 97, - 51, - 32, - 130, - 1, - 81, - 97, - 51, - 192, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 51, - 224, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 189, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 52, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 51, - 64, - 133, - 1, - 96, - 192, - 97, - 51, - 96, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 51, - 64, - 130, - 1, - 81, - 96, - 0, - 97, - 47, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 51, - 0, - 134, - 1, - 81, - 9, - 97, - 47, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 49, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 224, - 134, - 1, - 81, - 9, - 97, - 49, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 49, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 192, - 134, - 1, - 81, - 9, - 97, - 49, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 49, - 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 160, - 134, - 1, - 81, - 9, - 97, - 49, - 32, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 49, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 128, - 134, - 1, - 81, - 9, - 97, - 49, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 96, - 134, - 1, - 81, - 9, - 97, - 48, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 64, - 134, - 1, - 81, - 9, - 97, - 48, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 32, - 134, - 1, - 81, - 9, - 97, - 48, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 0, - 134, - 1, - 81, - 9, - 97, - 48, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 49, - 224, - 134, - 1, - 81, - 9, - 97, - 48, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 49, - 192, - 134, - 1, - 81, - 9, - 97, - 48, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 49, - 160, - 134, - 1, - 81, - 9, - 97, - 48, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 47, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 49, - 128, - 134, - 1, - 81, - 9, - 97, - 47, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 47, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 47, - 128, - 134, - 1, - 81, - 9, - 97, - 47, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 47, - 128, - 133, - 1, - 129, - 144, - 82, - 97, - 47, - 160, - 133, - 1, - 81, - 144, - 146, - 80, - 131, - 145, - 80, - 130, - 144, - 8, - 144, - 80, - 129, - 129, - 97, - 47, - 192, - 133, - 1, - 81, - 8, - 97, - 52, - 32, - 132, - 1, - 82, - 80, - 97, - 48, - 0, - 130, - 1, - 81, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 64, - 131, - 1, - 82, - 97, - 48, - 64, - 130, - 1, - 81, - 129, - 129, - 97, - 48, - 96, - 133, - 1, - 81, - 8, - 97, - 52, - 96, - 132, - 1, - 82, - 80, - 97, - 48, - 224, - 130, - 1, - 81, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 128, - 131, - 1, - 82, - 97, - 48, - 128, - 130, - 1, - 81, - 129, - 129, - 97, - 48, - 160, - 133, - 1, - 81, - 8, - 144, - 80, - 129, - 129, - 97, - 48, - 192, - 133, - 1, - 81, - 8, - 97, - 52, - 160, - 132, - 1, - 82, - 80, - 97, - 49, - 64, - 130, - 1, - 81, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 192, - 131, - 1, - 82, - 97, - 49, - 0, - 130, - 1, - 81, - 129, - 129, - 97, - 49, - 32, - 133, - 1, - 81, - 8, - 97, - 52, - 224, - 132, - 1, - 82, - 80, - 97, - 47, - 224, - 130, - 1, - 81, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 53, - 0, - 131, - 1, - 82, - 97, - 49, - 96, - 130, - 1, - 81, - 128, - 97, - 53, - 32, - 132, - 1, - 82, - 80, - 97, - 52, - 32, - 130, - 1, - 81, - 129, - 129, - 97, - 52, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 53, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 160, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 53, - 224, - 131, - 1, - 82, - 96, - 32, - 97, - 54, - 0, - 131, - 1, - 82, - 96, - 32, - 97, - 54, - 32, - 131, - 1, - 82, - 97, - 53, - 160, - 130, - 1, - 81, - 97, - 54, - 64, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 54, - 96, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 189, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 54, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 53, - 192, - 133, - 1, - 96, - 192, - 97, - 53, - 224, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 53, - 192, - 130, - 1, - 81, - 96, - 0, - 97, - 53, - 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 128, - 134, - 1, - 81, - 9, - 97, - 53, - 32, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 96, - 134, - 1, - 81, - 9, - 97, - 52, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 64, - 134, - 1, - 81, - 9, - 97, - 52, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 52, - 32, - 134, - 1, - 81, - 9, - 97, - 52, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 52, - 32, - 133, - 1, - 82, - 80, - 80, - 97, - 52, - 96, - 130, - 1, - 81, - 97, - 52, - 64, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 54, - 160, - 131, - 1, - 82, - 128, - 97, - 52, - 160, - 131, - 1, - 81, - 97, - 52, - 128, - 132, - 1, - 81, - 9, - 97, - 54, - 192, - 131, - 1, - 82, - 128, - 97, - 52, - 224, - 131, - 1, - 81, - 97, - 52, - 192, - 132, - 1, - 81, - 9, - 97, - 54, - 224, - 131, - 1, - 82, - 128, - 97, - 53, - 32, - 131, - 1, - 81, - 97, - 53, - 0, - 132, - 1, - 81, - 9, - 97, - 55, - 0, - 131, - 1, - 82, - 97, - 10, - 32, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 55, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 57, - 0, - 131, - 1, - 82, - 97, - 10, - 128, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 57, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 57, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 57, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 57, - 128, - 131, - 1, - 82, - 128, - 97, - 47, - 128, - 131, - 1, - 81, - 97, - 5, - 224, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 47, - 160, - 134, - 1, - 81, - 97, - 6, - 32, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 47, - 192, - 134, - 1, - 81, - 97, - 6, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 57, - 160, - 132, - 1, - 129, - 144, - 82, - 97, - 52, - 32, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 57, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 57, - 192, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 57, - 224, - 131, - 1, - 82, - 128, - 97, - 47, - 128, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 47, - 160, - 134, - 1, - 81, - 97, - 6, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 47, - 192, - 134, - 1, - 81, - 97, - 6, - 128, - 135, - 1, - 81, - 9, - 8, - 97, - 58, - 0, - 132, - 1, - 129, - 144, - 82, - 97, - 52, - 32, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 58, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 58, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 32, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 58, - 96, - 131, - 1, - 82, - 128, - 97, - 58, - 64, - 131, - 1, - 81, - 97, - 57, - 224, - 132, - 1, - 81, - 8, - 97, - 58, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 58, - 128, - 132, - 1, - 81, - 9, - 97, - 58, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 58, - 96, - 132, - 1, - 81, - 9, - 97, - 58, - 192, - 131, - 1, - 82, - 128, - 97, - 52, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 58, - 224, - 131, - 1, - 82, - 128, - 97, - 48, - 64, - 131, - 1, - 81, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 48, - 96, - 134, - 1, - 81, - 97, - 6, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 59, - 0, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 160, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 59, - 32, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 59, - 32, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 59, - 64, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 58, - 224, - 132, - 1, - 81, - 9, - 97, - 59, - 96, - 131, - 1, - 82, - 128, - 97, - 48, - 64, - 131, - 1, - 81, - 97, - 9, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 48, - 96, - 134, - 1, - 81, - 97, - 9, - 64, - 135, - 1, - 81, - 9, - 8, - 97, - 59, - 128, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 160, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 59, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 59, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 32, - 131, - 1, - 81, - 97, - 58, - 224, - 132, - 1, - 81, - 9, - 97, - 59, - 224, - 131, - 1, - 82, - 128, - 97, - 59, - 192, - 131, - 1, - 81, - 97, - 59, - 64, - 132, - 1, - 81, - 8, - 97, - 60, - 0, - 131, - 1, - 82, - 128, - 97, - 48, - 64, - 131, - 1, - 81, - 97, - 9, - 96, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 48, - 96, - 134, - 1, - 81, - 97, - 9, - 128, - 135, - 1, - 81, - 9, - 8, - 97, - 60, - 32, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 160, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 60, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 60, - 96, - 131, - 1, - 82, - 128, - 97, - 55, - 32, - 131, - 1, - 81, - 97, - 58, - 224, - 132, - 1, - 81, - 9, - 97, - 60, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 96, - 131, - 1, - 81, - 97, - 60, - 0, - 132, - 1, - 81, - 8, - 97, - 60, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 59, - 96, - 132, - 1, - 81, - 9, - 97, - 60, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 59, - 224, - 132, - 1, - 81, - 9, - 97, - 61, - 0, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 60, - 128, - 132, - 1, - 81, - 9, - 97, - 61, - 32, - 131, - 1, - 82, - 128, - 97, - 60, - 192, - 131, - 1, - 81, - 97, - 58, - 160, - 132, - 1, - 81, - 8, - 97, - 61, - 64, - 131, - 1, - 82, - 128, - 97, - 52, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 61, - 96, - 131, - 1, - 82, - 128, - 97, - 48, - 128, - 131, - 1, - 81, - 97, - 8, - 192, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 48, - 160, - 134, - 1, - 81, - 97, - 8, - 224, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 48, - 192, - 134, - 1, - 81, - 97, - 9, - 0, - 135, - 1, - 81, - 9, - 8, - 97, - 61, - 128, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 192, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 61, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 61, - 160, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 61, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 61, - 96, - 132, - 1, - 81, - 9, - 97, - 61, - 224, - 131, - 1, - 82, - 128, - 97, - 57, - 32, - 131, - 1, - 81, - 97, - 61, - 192, - 132, - 1, - 81, - 9, - 97, - 62, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 32, - 131, - 1, - 81, - 97, - 61, - 224, - 132, - 1, - 81, - 9, - 97, - 62, - 32, - 131, - 1, - 82, - 128, - 97, - 62, - 0, - 131, - 1, - 81, - 97, - 61, - 64, - 132, - 1, - 81, - 8, - 97, - 62, - 64, - 131, - 1, - 82, - 128, - 97, - 52, - 192, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 62, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 0, - 131, - 1, - 81, - 97, - 9, - 160, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 49, - 32, - 134, - 1, - 81, - 97, - 9, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 62, - 128, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 224, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 62, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 160, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 62, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 96, - 132, - 1, - 81, - 9, - 97, - 62, - 224, - 131, - 1, - 82, - 128, - 97, - 57, - 64, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 63, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 64, - 131, - 1, - 81, - 97, - 62, - 224, - 132, - 1, - 81, - 9, - 97, - 63, - 32, - 131, - 1, - 82, - 128, - 97, - 63, - 0, - 131, - 1, - 81, - 97, - 62, - 64, - 132, - 1, - 81, - 8, - 97, - 63, - 64, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 63, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 9, - 224, - 132, - 1, - 81, - 9, - 97, - 63, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 63, - 160, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 63, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 63, - 224, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 9, - 97, - 64, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 64, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 64, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 32, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 64, - 96, - 131, - 1, - 82, - 128, - 97, - 64, - 64, - 131, - 1, - 81, - 97, - 63, - 192, - 132, - 1, - 81, - 8, - 97, - 64, - 128, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 9, - 97, - 64, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 64, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 64, - 224, - 131, - 1, - 82, - 128, - 97, - 55, - 32, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 65, - 0, - 131, - 1, - 82, - 128, - 97, - 64, - 224, - 131, - 1, - 81, - 97, - 64, - 128, - 132, - 1, - 81, - 8, - 97, - 65, - 32, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 32, - 132, - 1, - 81, - 9, - 97, - 65, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 65, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 65, - 128, - 131, - 1, - 82, - 128, - 97, - 55, - 64, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 65, - 160, - 131, - 1, - 82, - 128, - 97, - 65, - 128, - 131, - 1, - 81, - 97, - 65, - 32, - 132, - 1, - 81, - 8, - 97, - 65, - 192, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 64, - 132, - 1, - 81, - 9, - 97, - 65, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 66, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 96, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 66, - 32, - 131, - 1, - 82, - 128, - 97, - 55, - 96, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 66, - 64, - 131, - 1, - 82, - 128, - 97, - 66, - 32, - 131, - 1, - 81, - 97, - 65, - 192, - 132, - 1, - 81, - 8, - 97, - 66, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 96, - 132, - 1, - 81, - 9, - 97, - 66, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 66, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 66, - 192, - 131, - 1, - 82, - 128, - 97, - 55, - 128, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 66, - 224, - 131, - 1, - 82, - 128, - 97, - 66, - 192, - 131, - 1, - 81, - 97, - 66, - 96, - 132, - 1, - 81, - 8, - 97, - 67, - 0, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 128, - 132, - 1, - 81, - 9, - 97, - 67, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 67, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 67, - 96, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 67, - 128, - 131, - 1, - 82, - 128, - 97, - 67, - 96, - 131, - 1, - 81, - 97, - 67, - 0, - 132, - 1, - 81, - 8, - 97, - 67, - 160, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 160, - 132, - 1, - 81, - 9, - 97, - 67, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 67, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 68, - 0, - 131, - 1, - 82, - 128, - 97, - 55, - 192, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 68, - 32, - 131, - 1, - 82, - 128, - 97, - 68, - 0, - 131, - 1, - 81, - 97, - 67, - 160, - 132, - 1, - 81, - 8, - 97, - 68, - 64, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 192, - 132, - 1, - 81, - 9, - 97, - 68, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 68, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 68, - 160, - 131, - 1, - 82, - 128, - 97, - 55, - 224, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 68, - 192, - 131, - 1, - 82, - 128, - 97, - 68, - 160, - 131, - 1, - 81, - 97, - 68, - 64, - 132, - 1, - 81, - 8, - 97, - 68, - 224, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 0, - 132, - 1, - 81, - 9, - 97, - 69, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 69, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 0, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 69, - 64, - 131, - 1, - 82, - 128, - 97, - 56, - 0, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 69, - 96, - 131, - 1, - 82, - 128, - 97, - 69, - 64, - 131, - 1, - 81, - 97, - 68, - 224, - 132, - 1, - 81, - 8, - 97, - 69, - 128, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 32, - 132, - 1, - 81, - 9, - 97, - 69, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 69, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 69, - 224, - 131, - 1, - 82, - 128, - 97, - 56, - 32, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 70, - 0, - 131, - 1, - 82, - 128, - 97, - 69, - 224, - 131, - 1, - 81, - 97, - 69, - 128, - 132, - 1, - 81, - 8, - 97, - 70, - 32, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 64, - 132, - 1, - 81, - 9, - 97, - 70, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 70, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 70, - 128, - 131, - 1, - 82, - 128, - 97, - 56, - 64, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 70, - 160, - 131, - 1, - 82, - 128, - 97, - 70, - 128, - 131, - 1, - 81, - 97, - 70, - 32, - 132, - 1, - 81, - 8, - 97, - 70, - 192, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 96, - 132, - 1, - 81, - 9, - 97, - 70, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 71, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 96, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 71, - 32, - 131, - 1, - 82, - 128, - 97, - 56, - 96, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 71, - 64, - 131, - 1, - 82, - 128, - 97, - 71, - 32, - 131, - 1, - 81, - 97, - 70, - 192, - 132, - 1, - 81, - 8, - 97, - 71, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 128, - 132, - 1, - 81, - 9, - 97, - 71, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 71, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 71, - 192, - 131, - 1, - 82, - 128, - 97, - 56, - 128, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 71, - 224, - 131, - 1, - 82, - 128, - 97, - 71, - 192, - 131, - 1, - 81, - 97, - 71, - 96, - 132, - 1, - 81, - 8, - 97, - 72, - 0, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 160, - 132, - 1, - 81, - 9, - 97, - 72, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 72, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 72, - 96, - 131, - 1, - 82, - 128, - 97, - 56, - 160, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 72, - 128, - 131, - 1, - 82, - 128, - 97, - 72, - 96, - 131, - 1, - 81, - 97, - 72, - 0, - 132, - 1, - 81, - 8, - 97, - 72, - 160, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 97, - 45, - 192, - 132, - 1, - 81, - 9, - 97, - 72, - 192, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 97, - 45, - 224, - 132, - 1, - 81, - 9, - 97, - 72, - 224, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 97, - 46, - 0, - 132, - 1, - 81, - 9, - 97, - 73, - 0, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 97, - 46, - 32, - 132, - 1, - 81, - 9, - 97, - 73, - 32, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 46, - 64, - 132, - 1, - 81, - 9, - 97, - 73, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 73, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 73, - 128, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 73, - 160, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 72, - 192, - 132, - 1, - 81, - 9, - 97, - 73, - 192, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 72, - 224, - 132, - 1, - 81, - 9, - 97, - 73, - 224, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 73, - 0, - 132, - 1, - 81, - 9, - 97, - 74, - 0, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 73, - 32, - 132, - 1, - 81, - 9, - 97, - 74, - 32, - 131, - 1, - 82, - 128, - 97, - 73, - 128, - 131, - 1, - 81, - 97, - 72, - 160, - 132, - 1, - 81, - 8, - 97, - 74, - 64, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 224, - 132, - 1, - 81, - 9, - 97, - 74, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 74, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 74, - 160, - 131, - 1, - 82, - 128, - 97, - 56, - 224, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 74, - 192, - 131, - 1, - 82, - 128, - 97, - 74, - 160, - 131, - 1, - 81, - 97, - 74, - 64, - 132, - 1, - 81, - 8, - 97, - 74, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 57, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 75, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 63, - 224, - 132, - 1, - 81, - 9, - 97, - 75, - 32, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 64, - 96, - 132, - 1, - 81, - 9, - 97, - 75, - 64, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 65, - 0, - 132, - 1, - 81, - 9, - 97, - 75, - 96, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 65, - 160, - 132, - 1, - 81, - 9, - 97, - 75, - 128, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 66, - 64, - 132, - 1, - 81, - 9, - 97, - 75, - 160, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 66, - 224, - 132, - 1, - 81, - 9, - 97, - 75, - 192, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 67, - 128, - 132, - 1, - 81, - 9, - 97, - 75, - 224, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 68, - 32, - 132, - 1, - 81, - 9, - 97, - 76, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 68, - 192, - 132, - 1, - 81, - 9, - 97, - 76, - 32, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 69, - 96, - 132, - 1, - 81, - 9, - 97, - 76, - 64, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 70, - 0, - 132, - 1, - 81, - 9, - 97, - 76, - 96, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 70, - 160, - 132, - 1, - 81, - 9, - 97, - 76, - 128, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 71, - 64, - 132, - 1, - 81, - 9, - 97, - 76, - 160, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 71, - 224, - 132, - 1, - 81, - 9, - 97, - 76, - 192, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 72, - 128, - 132, - 1, - 81, - 9, - 97, - 76, - 224, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 73, - 160, - 132, - 1, - 81, - 9, - 97, - 77, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 73, - 192, - 132, - 1, - 81, - 9, - 97, - 77, - 32, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 73, - 224, - 132, - 1, - 81, - 9, - 97, - 77, - 64, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 74, - 0, - 132, - 1, - 81, - 9, - 97, - 77, - 96, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 74, - 32, - 132, - 1, - 81, - 9, - 97, - 77, - 128, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 74, - 192, - 132, - 1, - 81, - 9, - 97, - 77, - 160, - 131, - 1, - 82, - 128, - 97, - 75, - 0, - 131, - 1, - 81, - 97, - 63, - 64, - 132, - 1, - 81, - 8, - 97, - 77, - 192, - 131, - 1, - 82, - 128, - 97, - 48, - 32, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 77, - 224, - 131, - 1, - 82, - 128, - 97, - 11, - 32, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 78, - 0, - 131, - 1, - 82, - 96, - 1, - 97, - 78, - 32, - 131, - 1, - 129, - 129, - 82, - 96, - 2, - 97, - 78, - 64, - 133, - 1, - 82, - 97, - 77, - 192, - 132, - 1, - 81, - 97, - 78, - 96, - 133, - 1, - 82, - 132, - 145, - 144, - 96, - 64, - 144, - 96, - 96, - 129, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 78, - 32, - 130, - 1, - 81, - 97, - 78, - 128, - 131, - 1, - 82, - 97, - 78, - 64, - 130, - 1, - 81, - 97, - 78, - 160, - 131, - 1, - 82, - 96, - 128, - 130, - 1, - 81, - 97, - 78, - 192, - 131, - 1, - 82, - 96, - 160, - 130, - 1, - 81, - 97, - 78, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 78, - 128, - 133, - 1, - 96, - 128, - 97, - 78, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 96, - 192, - 130, - 1, - 81, - 97, - 79, - 0, - 131, - 1, - 82, - 96, - 224, - 130, - 1, - 81, - 97, - 79, - 32, - 131, - 1, - 82, - 97, - 58, - 192, - 130, - 1, - 81, - 97, - 79, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 79, - 0, - 133, - 1, - 96, - 96, - 97, - 79, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 78, - 128, - 130, - 1, - 81, - 97, - 79, - 96, - 131, - 1, - 82, - 97, - 78, - 160, - 130, - 1, - 81, - 97, - 79, - 128, - 131, - 1, - 82, - 97, - 79, - 0, - 130, - 1, - 81, - 97, - 79, - 160, - 131, - 1, - 82, - 97, - 79, - 32, - 130, - 1, - 81, - 97, - 79, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 79, - 96, - 133, - 1, - 96, - 128, - 97, - 79, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 0, - 130, - 1, - 81, - 97, - 79, - 224, - 131, - 1, - 82, - 97, - 1, - 32, - 130, - 1, - 81, - 97, - 80, - 0, - 131, - 1, - 82, - 97, - 60, - 224, - 130, - 1, - 81, - 97, - 80, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 79, - 224, - 133, - 1, - 96, - 96, - 97, - 79, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 79, - 96, - 130, - 1, - 81, - 97, - 80, - 64, - 131, - 1, - 82, - 97, - 79, - 128, - 130, - 1, - 81, - 97, - 80, - 96, - 131, - 1, - 82, - 97, - 79, - 224, - 130, - 1, - 81, - 97, - 80, - 128, - 131, - 1, - 82, - 97, - 80, - 0, - 130, - 1, - 81, - 97, - 80, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 80, - 64, - 133, - 1, - 96, - 128, - 97, - 80, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 32, - 130, - 1, - 81, - 97, - 80, - 192, - 131, - 1, - 82, - 97, - 3, - 64, - 130, - 1, - 81, - 97, - 80, - 224, - 131, - 1, - 82, - 97, - 61, - 0, - 130, - 1, - 81, - 97, - 81, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 80, - 192, - 133, - 1, - 96, - 96, - 97, - 80, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 80, - 64, - 130, - 1, - 81, - 97, - 81, - 32, - 131, - 1, - 82, - 97, - 80, - 96, - 130, - 1, - 81, - 97, - 81, - 64, - 131, - 1, - 82, - 97, - 80, - 192, - 130, - 1, - 81, - 97, - 81, - 96, - 131, - 1, - 82, - 97, - 80, - 224, - 130, - 1, - 81, - 97, - 81, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 81, - 32, - 133, - 1, - 96, - 128, - 97, - 81, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 96, - 130, - 1, - 81, - 97, - 81, - 160, - 131, - 1, - 82, - 97, - 3, - 128, - 130, - 1, - 81, - 97, - 81, - 192, - 131, - 1, - 82, - 97, - 61, - 32, - 130, - 1, - 81, - 97, - 81, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 81, - 160, - 133, - 1, - 96, - 96, - 97, - 81, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 81, - 32, - 130, - 1, - 81, - 97, - 82, - 0, - 131, - 1, - 82, - 97, - 81, - 64, - 130, - 1, - 81, - 97, - 82, - 32, - 131, - 1, - 82, - 97, - 81, - 160, - 130, - 1, - 81, - 97, - 82, - 64, - 131, - 1, - 82, - 97, - 81, - 192, - 130, - 1, - 81, - 97, - 82, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 82, - 0, - 133, - 1, - 96, - 128, - 97, - 82, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 2, - 224, - 130, - 1, - 81, - 97, - 82, - 128, - 131, - 1, - 82, - 97, - 3, - 0, - 130, - 1, - 81, - 97, - 82, - 160, - 131, - 1, - 82, - 97, - 62, - 32, - 130, - 1, - 81, - 97, - 82, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 82, - 128, - 133, - 1, - 96, - 96, - 97, - 82, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 82, - 0, - 130, - 1, - 81, - 97, - 82, - 224, - 131, - 1, - 82, - 97, - 82, - 32, - 130, - 1, - 81, - 97, - 83, - 0, - 131, - 1, - 82, - 97, - 82, - 128, - 130, - 1, - 81, - 97, - 83, - 32, - 131, - 1, - 82, - 97, - 82, - 160, - 130, - 1, - 81, - 97, - 83, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 82, - 224, - 133, - 1, - 96, - 128, - 97, - 82, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 160, - 130, - 1, - 81, - 97, - 83, - 96, - 131, - 1, - 82, - 97, - 1, - 192, - 130, - 1, - 81, - 97, - 83, - 128, - 131, - 1, - 82, - 97, - 63, - 32, - 130, - 1, - 81, - 97, - 83, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 83, - 96, - 133, - 1, - 96, - 96, - 97, - 83, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 82, - 224, - 130, - 1, - 81, - 97, - 83, - 192, - 131, - 1, - 82, - 97, - 83, - 0, - 130, - 1, - 81, - 97, - 83, - 224, - 131, - 1, - 82, - 97, - 83, - 96, - 130, - 1, - 81, - 97, - 84, - 0, - 131, - 1, - 82, - 97, - 83, - 128, - 130, - 1, - 81, - 97, - 84, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 83, - 192, - 133, - 1, - 96, - 128, - 97, - 83, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 224, - 130, - 1, - 81, - 97, - 84, - 64, - 131, - 1, - 82, - 97, - 2, - 0, - 130, - 1, - 81, - 97, - 84, - 96, - 131, - 1, - 82, - 97, - 75, - 32, - 130, - 1, - 81, - 97, - 84, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 84, - 64, - 133, - 1, - 96, - 96, - 97, - 84, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 83, - 192, - 130, - 1, - 81, - 97, - 84, - 160, - 131, - 1, - 82, - 97, - 83, - 224, - 130, - 1, - 81, - 97, - 84, - 192, - 131, - 1, - 82, - 97, - 84, - 64, - 130, - 1, - 81, - 97, - 84, - 224, - 131, - 1, - 82, - 97, - 84, - 96, - 130, - 1, - 81, - 97, - 85, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 84, - 160, - 133, - 1, - 96, - 128, - 97, - 84, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 6, - 85, - 214, - 41, - 121, - 220, - 6, - 45, - 193, - 232, - 193, - 83, - 52, - 191, - 23, - 207, - 92, - 126, - 99, - 82, - 33, - 156, - 11, - 208, - 176, - 204, - 3, - 149, - 152, - 217, - 166, - 105, - 97, - 85, - 32, - 131, - 1, - 82, - 127, - 1, - 149, - 137, - 211, - 0, - 47, - 106, - 13, - 237, - 70, - 166, - 144, - 83, - 240, - 192, - 94, - 122, - 124, - 164, - 83, - 57, - 179, - 210, - 186, - 232, - 93, - 0, - 242, - 106, - 192, - 243, - 62, - 97, - 85, - 64, - 131, - 1, - 82, - 97, - 75, - 64, - 130, - 1, - 81, - 97, - 85, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 85, - 32, - 133, - 1, - 96, - 96, - 97, - 85, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 160, - 130, - 1, - 81, - 97, - 85, - 128, - 131, - 1, - 82, - 97, - 84, - 192, - 130, - 1, - 81, - 97, - 85, - 160, - 131, - 1, - 82, - 97, - 85, - 32, - 130, - 1, - 81, - 97, - 85, - 192, - 131, - 1, - 82, - 97, - 85, - 64, - 130, - 1, - 81, - 97, - 85, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 85, - 128, - 133, - 1, - 96, - 128, - 97, - 85, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 30, - 171, - 153, - 149, - 146, - 56, - 82, - 8, - 180, - 42, - 18, - 220, - 192, - 71, - 118, - 62, - 229, - 207, - 18, - 5, - 46, - 180, - 176, - 217, - 167, - 162, - 134, - 224, - 67, - 243, - 223, - 159, - 97, - 86, - 0, - 131, - 1, - 82, - 127, - 24, - 136, - 126, - 179, - 198, - 70, - 255, - 212, - 150, - 18, - 38, - 201, - 27, - 172, - 150, - 97, - 0, - 71, - 152, - 177, - 252, - 106, - 57, - 196, - 63, - 154, - 109, - 29, - 3, - 118, - 113, - 148, - 97, - 86, - 32, - 131, - 1, - 82, - 97, - 75, - 96, - 130, - 1, - 81, - 97, - 86, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 0, - 133, - 1, - 96, - 96, - 97, - 86, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 85, - 128, - 130, - 1, - 81, - 97, - 86, - 96, - 131, - 1, - 82, - 97, - 85, - 160, - 130, - 1, - 81, - 97, - 86, - 128, - 131, - 1, - 82, - 97, - 86, - 0, - 130, - 1, - 81, - 97, - 86, - 160, - 131, - 1, - 82, - 97, - 86, - 32, - 130, - 1, - 81, - 97, - 86, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 96, - 133, - 1, - 96, - 128, - 97, - 86, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 104, - 6, - 5, - 139, - 2, - 225, - 181, - 233, - 155, - 47, - 46, - 142, - 238, - 97, - 49, - 148, - 248, - 223, - 115, - 72, - 22, - 89, - 245, - 147, - 139, - 170, - 205, - 100, - 228, - 215, - 184, - 97, - 86, - 224, - 131, - 1, - 82, - 127, - 5, - 174, - 129, - 100, - 75, - 36, - 77, - 206, - 234, - 83, - 80, - 168, - 74, - 121, - 203, - 240, - 161, - 153, - 187, - 214, - 193, - 250, - 217, - 136, - 116, - 35, - 248, - 200, - 4, - 142, - 96, - 57, - 97, - 87, - 0, - 131, - 1, - 82, - 97, - 75, - 128, - 130, - 1, - 81, - 97, - 87, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 224, - 133, - 1, - 96, - 96, - 97, - 86, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 86, - 96, - 130, - 1, - 81, - 97, - 87, - 64, - 131, - 1, - 82, - 97, - 86, - 128, - 130, - 1, - 81, - 97, - 87, - 96, - 131, - 1, - 82, - 97, - 86, - 224, - 130, - 1, - 81, - 97, - 87, - 128, - 131, - 1, - 82, - 97, - 87, - 0, - 130, - 1, - 81, - 97, - 87, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 64, - 133, - 1, - 96, - 128, - 97, - 87, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 4, - 56, - 135, - 63, - 192, - 2, - 49, - 174, - 82, - 126, - 252, - 247, - 77, - 144, - 146, - 245, - 5, - 157, - 250, - 5, - 39, - 92, - 190, - 115, - 129, - 233, - 72, - 254, - 59, - 123, - 97, - 216, - 97, - 87, - 192, - 131, - 1, - 82, - 127, - 3, - 192, - 243, - 20, - 201, - 52, - 3, - 121, - 43, - 168, - 110, - 195, - 132, - 27, - 48, - 128, - 242, - 247, - 205, - 9, - 44, - 107, - 203, - 99, - 44, - 219, - 194, - 18, - 42, - 19, - 205, - 239, - 97, - 87, - 224, - 131, - 1, - 82, - 97, - 75, - 160, - 130, - 1, - 81, - 97, - 88, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 192, - 133, - 1, - 96, - 96, - 97, - 87, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 87, - 64, - 130, - 1, - 81, - 97, - 88, - 32, - 131, - 1, - 82, - 97, - 87, - 96, - 130, - 1, - 81, - 97, - 88, - 64, - 131, - 1, - 82, - 97, - 87, - 192, - 130, - 1, - 81, - 97, - 88, - 96, - 131, - 1, - 82, - 97, - 87, - 224, - 130, - 1, - 81, - 97, - 88, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 32, - 133, - 1, - 96, - 128, - 97, - 88, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 43, - 18, - 177, - 50, - 166, - 38, - 26, - 214, - 2, - 73, - 20, - 117, - 153, - 202, - 224, - 213, - 179, - 84, - 126, - 81, - 13, - 234, - 187, - 166, - 85, - 38, - 209, - 48, - 240, - 79, - 36, - 2, - 97, - 88, - 160, - 131, - 1, - 82, - 127, - 19, - 227, - 192, - 44, - 224, - 15, - 107, - 126, - 0, - 213, - 176, - 153, - 237, - 165, - 241, - 21, - 89, - 86, - 174, - 131, - 137, - 154, - 45, - 89, - 206, - 252, - 176, - 13, - 173, - 102, - 167, - 246, - 97, - 88, - 192, - 131, - 1, - 82, - 97, - 75, - 192, - 130, - 1, - 81, - 97, - 88, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 160, - 133, - 1, - 96, - 96, - 97, - 88, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 88, - 32, - 130, - 1, - 81, - 97, - 89, - 0, - 131, - 1, - 82, - 97, - 88, - 64, - 130, - 1, - 81, - 97, - 89, - 32, - 131, - 1, - 82, - 97, - 88, - 160, - 130, - 1, - 81, - 97, - 89, - 64, - 131, - 1, - 82, - 97, - 88, - 192, - 130, - 1, - 81, - 97, - 89, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 0, - 133, - 1, - 96, - 128, - 97, - 89, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 14, - 216, - 51, - 112, - 39, - 126, - 15, - 211, - 94, - 130, - 88, - 221, - 86, - 48, - 206, - 12, - 227, - 73, - 31, - 223, - 126, - 22, - 109, - 41, - 55, - 69, - 99, - 91, - 12, - 196, - 235, - 165, - 97, - 89, - 128, - 131, - 1, - 82, - 127, - 3, - 153, - 78, - 126, - 119, - 173, - 88, - 7, - 43, - 120, - 117, - 119, - 0, - 171, - 11, - 121, - 36, - 127, - 46, - 70, - 43, - 12, - 246, - 165, - 161, - 139, - 96, - 116, - 20, - 192, - 149, - 219, - 97, - 89, - 160, - 131, - 1, - 82, - 97, - 75, - 224, - 130, - 1, - 81, - 97, - 89, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 128, - 133, - 1, - 96, - 96, - 97, - 89, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 0, - 130, - 1, - 81, - 97, - 89, - 224, - 131, - 1, - 82, - 97, - 89, - 32, - 130, - 1, - 81, - 97, - 90, - 0, - 131, - 1, - 82, - 97, - 89, - 128, - 130, - 1, - 81, - 97, - 90, - 32, - 131, - 1, - 82, - 97, - 89, - 160, - 130, - 1, - 81, - 97, - 90, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 224, - 133, - 1, - 96, - 128, - 97, - 89, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 35, - 186, - 75, - 196, - 155, - 170, - 181, - 99, - 233, - 213, - 191, - 7, - 218, - 35, - 26, - 68, - 150, - 211, - 91, - 107, - 199, - 130, - 219, - 189, - 118, - 19, - 95, - 228, - 76, - 49, - 203, - 207, - 97, - 90, - 96, - 131, - 1, - 82, - 127, - 40, - 184, - 128, - 151, - 231, - 237, - 241, - 178, - 144, - 79, - 108, - 37, - 193, - 227, - 12, - 160, - 227, - 140, - 116, - 165, - 33, - 37, - 178, - 153, - 92, - 76, - 240, - 167, - 80, - 104, - 56, - 84, - 97, - 90, - 128, - 131, - 1, - 82, - 97, - 76, - 0, - 130, - 1, - 81, - 97, - 90, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 90, - 96, - 133, - 1, - 96, - 96, - 97, - 90, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 224, - 130, - 1, - 81, - 97, - 90, - 192, - 131, - 1, - 82, - 97, - 90, - 0, - 130, - 1, - 81, - 97, - 90, - 224, - 131, - 1, - 82, - 97, - 90, - 96, - 130, - 1, - 81, - 97, - 91, - 0, - 131, - 1, - 82, - 97, - 90, - 128, - 130, - 1, - 81, - 97, - 91, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 90, - 192, - 133, - 1, - 96, - 128, - 97, - 90, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 23, - 220, - 187, - 160, - 187, - 226, - 210, - 69, - 102, - 222, - 98, - 9, - 152, - 246, - 47, - 245, - 78, - 165, - 48, - 42, - 218, - 106, - 235, - 24, - 2, - 139, - 97, - 180, - 220, - 25, - 187, - 211, - 97, - 91, - 64, - 131, - 1, - 82, - 127, - 14, - 31, - 144, - 128, - 7, - 165, - 194, - 204, - 147, - 68, - 38, - 194, - 109, - 231, - 32, - 108, - 83, - 250, - 16, - 199, - 157, - 99, - 239, - 82, - 238, - 145, - 191, - 181, - 104, - 199, - 47, - 189, - 97, - 91, - 96, - 131, - 1, - 82, - 97, - 76, - 32, - 130, - 1, - 81, - 97, - 91, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 91, - 64, - 133, - 1, - 96, - 96, - 97, - 91, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 90, - 192, - 130, - 1, - 81, - 97, - 91, - 160, - 131, - 1, - 82, - 97, - 90, - 224, - 130, - 1, - 81, - 97, - 91, - 192, - 131, - 1, - 82, - 97, - 91, - 64, - 130, - 1, - 81, - 97, - 91, - 224, - 131, - 1, - 82, - 97, - 91, - 96, - 130, - 1, - 81, - 97, - 92, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 91, - 160, - 133, - 1, - 96, - 128, - 97, - 91, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 44, - 120, - 35, - 249, - 156, - 178, - 173, - 183, - 22, - 190, - 203, - 150, - 9, - 20, - 255, - 161, - 214, - 226, - 242, - 87, - 135, - 95, - 221, - 3, - 194, - 190, - 229, - 46, - 245, - 113, - 212, - 30, - 97, - 92, - 32, - 131, - 1, - 82, - 127, - 9, - 171, - 131, - 235, - 198, - 128, - 62, - 101, - 178, - 230, - 131, - 28, - 135, - 6, - 217, - 161, - 52, - 246, - 177, - 207, - 111, - 110, - 197, - 194, - 105, - 122, - 254, - 224, - 149, - 50, - 14, - 225, - 97, - 92, - 64, - 131, - 1, - 82, - 97, - 76, - 64, - 130, - 1, - 81, - 97, - 92, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 92, - 32, - 133, - 1, - 96, - 96, - 97, - 92, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 91, - 160, - 130, - 1, - 81, - 97, - 92, - 128, - 131, - 1, - 82, - 97, - 91, - 192, - 130, - 1, - 81, - 97, - 92, - 160, - 131, - 1, - 82, - 97, - 92, - 32, - 130, - 1, - 81, - 97, - 92, - 192, - 131, - 1, - 82, - 97, - 92, - 64, - 130, - 1, - 81, - 97, - 92, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 92, - 128, - 133, - 1, - 96, - 128, - 97, - 92, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 45, - 193, - 44, - 32, - 81, - 82, - 191, - 172, - 195, - 84, - 200, - 56, - 34, - 85, - 113, - 23, - 44, - 33, - 94, - 1, - 166, - 77, - 230, - 162, - 202, - 102, - 101, - 199, - 9, - 55, - 172, - 88, - 97, - 93, - 0, - 131, - 1, - 82, - 127, - 4, - 73, - 235, - 82, - 159, - 0, - 56, - 162, - 189, - 47, - 108, - 11, - 98, - 19, - 167, - 4, - 136, - 182, - 155, - 71, - 157, - 144, - 169, - 83, - 87, - 158, - 76, - 157, - 69, - 98, - 27, - 133, - 97, - 93, - 32, - 131, - 1, - 82, - 97, - 76, - 96, - 130, - 1, - 81, - 97, - 93, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 0, - 133, - 1, - 96, - 96, - 97, - 93, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 92, - 128, - 130, - 1, - 81, - 97, - 93, - 96, - 131, - 1, - 82, - 97, - 92, - 160, - 130, - 1, - 81, - 97, - 93, - 128, - 131, - 1, - 82, - 97, - 93, - 0, - 130, - 1, - 81, - 97, - 93, - 160, - 131, - 1, - 82, - 97, - 93, - 32, - 130, - 1, - 81, - 97, - 93, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 96, - 133, - 1, - 96, - 128, - 97, - 93, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 9, - 162, - 171, - 57, - 19, - 164, - 119, - 15, - 213, - 15, - 107, - 169, - 236, - 76, - 224, - 179, - 23, - 139, - 84, - 215, - 191, - 202, - 91, - 66, - 254, - 126, - 142, - 28, - 229, - 207, - 96, - 169, - 97, - 93, - 224, - 131, - 1, - 82, - 127, - 19, - 236, - 49, - 249, - 64, - 38, - 86, - 156, - 75, - 183, - 110, - 44, - 76, - 234, - 163, - 230, - 82, - 84, - 56, - 255, - 180, - 167, - 166, - 156, - 222, - 97, - 246, - 215, - 123, - 147, - 186, - 215, - 97, - 94, - 0, - 131, - 1, - 82, - 97, - 76, - 128, - 130, - 1, - 81, - 97, - 94, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 224, - 133, - 1, - 96, - 96, - 97, - 93, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 93, - 96, - 130, - 1, - 81, - 97, - 94, - 64, - 131, - 1, - 82, - 97, - 93, - 128, - 130, - 1, - 81, - 97, - 94, - 96, - 131, - 1, - 82, - 97, - 93, - 224, - 130, - 1, - 81, - 97, - 94, - 128, - 131, - 1, - 82, - 97, - 94, - 0, - 130, - 1, - 81, - 97, - 94, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 64, - 133, - 1, - 96, - 128, - 97, - 94, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 67, - 234, - 64, - 241, - 64, - 132, - 219, - 38, - 115, - 33, - 114, - 131, - 170, - 5, - 63, - 152, - 104, - 150, - 238, - 124, - 24, - 31, - 82, - 17, - 132, - 66, - 233, - 156, - 69, - 41, - 116, - 97, - 94, - 192, - 131, - 1, - 82, - 127, - 2, - 3, - 227, - 73, - 58, - 37, - 148, - 236, - 229, - 125, - 34, - 204, - 117, - 221, - 8, - 26, - 198, - 130, - 113, - 236, - 124, - 117, - 129, - 83, - 207, - 210, - 21, - 43, - 251, - 92, - 25, - 227, - 97, - 94, - 224, - 131, - 1, - 82, - 97, - 76, - 160, - 130, - 1, - 81, - 97, - 95, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 192, - 133, - 1, - 96, - 96, - 97, - 94, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 94, - 64, - 130, - 1, - 81, - 97, - 95, - 32, - 131, - 1, - 82, - 97, - 94, - 96, - 130, - 1, - 81, - 97, - 95, - 64, - 131, - 1, - 82, - 97, - 94, - 192, - 130, - 1, - 81, - 97, - 95, - 96, - 131, - 1, - 82, - 97, - 94, - 224, - 130, - 1, - 81, - 97, - 95, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 95, - 32, - 133, - 1, - 96, - 128, - 97, - 95, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 2, - 169, - 167, - 125, - 142, - 111, - 111, - 216, - 159, - 51, - 186, - 86, - 254, - 69, - 246, - 245, - 201, - 7, - 229, - 11, - 162, - 140, - 221, - 65, - 152, - 172, - 251, - 86, - 46, - 178, - 17, - 3, - 97, - 95, - 160, - 131, - 1, - 82, - 127, - 35, - 171, - 238, - 104, - 216, - 60, - 45, - 102, - 50, - 87, - 110, - 94, - 149, - 202, - 1, - 166, - 30, - 94, - 62, - 109, - 148, - 56, - 194, - 172, - 100, - 40, - 200, - 182, - 237, - 254, - 42, - 186, - 97, - 95, - 192, - 131, - 1, - 82, - 97, - 76, - 192, - 130, - 1, - 81, - 97, - 95, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 95, - 160, - 133, - 1, - 96, - 96, - 97, - 95, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 95, - 32, - 130, - 1, - 81, - 97, - 96, - 0, - 131, - 1, - 82, - 97, - 95, - 64, - 130, - 1, - 81, - 97, - 96, - 32, - 131, - 1, - 82, - 97, - 95, - 160, - 130, - 1, - 81, - 97, - 96, - 64, - 131, - 1, - 82, - 97, - 95, - 192, - 130, - 1, - 81, - 97, - 96, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 0, - 133, - 1, - 96, - 128, - 97, - 96, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 44, - 243, - 109, - 54, - 191, - 172, - 190, - 26, - 141, - 140, - 98, - 106, - 239, - 167, - 90, - 192, - 254, - 180, - 107, - 114, - 89, - 137, - 168, - 230, - 250, - 190, - 208, - 116, - 191, - 159, - 106, - 247, - 97, - 96, - 128, - 131, - 1, - 82, - 127, - 6, - 15, - 222, - 211, - 237, - 94, - 197, - 109, - 158, - 0, - 100, - 215, - 60, - 71, - 34, - 69, - 164, - 196, - 182, - 236, - 55, - 30, - 152, - 8, - 105, - 43, - 247, - 242, - 89, - 211, - 183, - 48, - 97, - 96, - 160, - 131, - 1, - 82, - 97, - 76, - 224, - 130, - 1, - 81, - 97, - 96, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 128, - 133, - 1, - 96, - 96, - 97, - 96, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 96, - 0, - 130, - 1, - 81, - 97, - 96, - 224, - 131, - 1, - 82, - 97, - 96, - 32, - 130, - 1, - 81, - 97, - 97, - 0, - 131, - 1, - 82, - 97, - 96, - 128, - 130, - 1, - 81, - 97, - 97, - 32, - 131, - 1, - 82, - 97, - 96, - 160, - 130, - 1, - 81, - 97, - 97, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 224, - 133, - 1, - 96, - 128, - 97, - 96, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 64, - 130, - 1, - 81, - 97, - 97, - 96, - 131, - 1, - 82, - 97, - 4, - 96, - 130, - 1, - 81, - 97, - 97, - 128, - 131, - 1, - 82, - 97, - 77, - 0, - 130, - 1, - 81, - 97, - 97, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 97, - 96, - 133, - 1, - 96, - 96, - 97, - 97, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 96, - 224, - 130, - 1, - 81, - 97, - 97, - 192, - 131, - 1, - 82, - 97, - 97, - 0, - 130, - 1, - 81, - 97, - 97, - 224, - 131, - 1, - 82, - 97, - 97, - 96, - 130, - 1, - 81, - 97, - 98, - 0, - 131, - 1, - 82, - 97, - 97, - 128, - 130, - 1, - 81, - 97, - 98, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 97, - 192, - 133, - 1, - 96, - 128, - 97, - 97, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 128, - 130, - 1, - 81, - 97, - 98, - 64, - 131, - 1, - 82, - 97, - 4, - 160, - 130, - 1, - 81, - 97, - 98, - 96, - 131, - 1, - 82, - 97, - 77, - 32, - 130, - 1, - 81, - 97, - 98, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 98, - 64, - 133, - 1, - 96, - 96, - 97, - 98, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 97, - 192, - 130, - 1, - 81, - 97, - 98, - 160, - 131, - 1, - 82, - 97, - 97, - 224, - 130, - 1, - 81, - 97, - 98, - 192, - 131, - 1, - 82, - 97, - 98, - 64, - 130, - 1, - 81, - 97, - 98, - 224, - 131, - 1, - 82, - 97, - 98, - 96, - 130, - 1, - 81, - 97, - 99, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 98, - 160, - 133, - 1, - 96, - 128, - 97, - 98, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 192, - 130, - 1, - 81, - 97, - 99, - 32, - 131, - 1, - 82, - 97, - 4, - 224, - 130, - 1, - 81, - 97, - 99, - 64, - 131, - 1, - 82, - 97, - 77, - 64, - 130, - 1, - 81, - 97, - 99, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 32, - 133, - 1, - 96, - 96, - 97, - 99, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 98, - 160, - 130, - 1, - 81, - 97, - 99, - 128, - 131, - 1, - 82, - 97, - 98, - 192, - 130, - 1, - 81, - 97, - 99, - 160, - 131, - 1, - 82, - 97, - 99, - 32, - 130, - 1, - 81, - 97, - 99, - 192, - 131, - 1, - 82, - 97, - 99, - 64, - 130, - 1, - 81, - 97, - 99, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 128, - 133, - 1, - 96, - 128, - 97, - 99, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 0, - 130, - 1, - 81, - 97, - 100, - 0, - 131, - 1, - 82, - 97, - 5, - 32, - 130, - 1, - 81, - 97, - 100, - 32, - 131, - 1, - 82, - 97, - 77, - 96, - 130, - 1, - 81, - 97, - 100, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 0, - 133, - 1, - 96, - 96, - 97, - 100, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 99, - 128, - 130, - 1, - 81, - 97, - 100, - 96, - 131, - 1, - 82, - 97, - 99, - 160, - 130, - 1, - 81, - 97, - 100, - 128, - 131, - 1, - 82, - 97, - 100, - 0, - 130, - 1, - 81, - 97, - 100, - 160, - 131, - 1, - 82, - 97, - 100, - 32, - 130, - 1, - 81, - 97, - 100, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 96, - 133, - 1, - 96, - 128, - 97, - 100, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 64, - 130, - 1, - 81, - 97, - 100, - 224, - 131, - 1, - 82, - 97, - 5, - 96, - 130, - 1, - 81, - 97, - 101, - 0, - 131, - 1, - 82, - 97, - 77, - 128, - 130, - 1, - 81, - 97, - 101, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 224, - 133, - 1, - 96, - 96, - 97, - 100, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 100, - 96, - 130, - 1, - 81, - 97, - 101, - 64, - 131, - 1, - 82, - 97, - 100, - 128, - 130, - 1, - 81, - 97, - 101, - 96, - 131, - 1, - 82, - 97, - 100, - 224, - 130, - 1, - 81, - 97, - 101, - 128, - 131, - 1, - 82, - 97, - 101, - 0, - 130, - 1, - 81, - 97, - 101, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 101, - 64, - 133, - 1, - 96, - 128, - 97, - 101, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 160, - 130, - 1, - 81, - 97, - 101, - 192, - 131, - 1, - 82, - 97, - 3, - 192, - 130, - 1, - 81, - 97, - 101, - 224, - 131, - 1, - 82, - 97, - 77, - 160, - 130, - 1, - 81, - 97, - 102, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 101, - 192, - 133, - 1, - 96, - 96, - 97, - 101, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 101, - 64, - 130, - 1, - 81, - 97, - 102, - 32, - 131, - 1, - 82, - 97, - 101, - 96, - 130, - 1, - 81, - 97, - 102, - 64, - 131, - 1, - 82, - 97, - 101, - 192, - 130, - 1, - 81, - 97, - 102, - 96, - 131, - 1, - 82, - 97, - 101, - 224, - 130, - 1, - 81, - 97, - 102, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 102, - 32, - 133, - 1, - 96, - 128, - 97, - 102, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 10, - 192, - 130, - 1, - 81, - 97, - 102, - 160, - 131, - 1, - 82, - 97, - 10, - 224, - 130, - 1, - 81, - 97, - 102, - 192, - 131, - 1, - 82, - 97, - 77, - 224, - 130, - 1, - 81, - 129, - 3, - 97, - 102, - 224, - 131, - 1, - 82, - 80, - 129, - 96, - 1, - 96, - 64, - 97, - 102, - 160, - 132, - 1, - 96, - 96, - 97, - 102, - 160, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 102, - 32, - 129, - 1, - 81, - 97, - 103, - 0, - 130, - 1, - 82, - 97, - 102, - 64, - 129, - 1, - 81, - 97, - 103, - 32, - 130, - 1, - 82, - 97, - 102, - 160, - 129, - 1, - 81, - 97, - 103, - 64, - 130, - 1, - 82, - 97, - 102, - 192, - 129, - 1, - 81, - 97, - 103, - 96, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 103, - 0, - 132, - 1, - 96, - 128, - 97, - 103, - 0, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 11, - 96, - 129, - 1, - 81, - 97, - 103, - 128, - 130, - 1, - 82, - 97, - 11, - 128, - 129, - 1, - 81, - 97, - 103, - 160, - 130, - 1, - 82, - 97, - 78, - 0, - 129, - 1, - 81, - 97, - 103, - 192, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 103, - 128, - 132, - 1, - 96, - 96, - 97, - 103, - 128, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 103, - 0, - 129, - 1, - 81, - 97, - 103, - 224, - 130, - 1, - 82, - 97, - 103, - 32, - 129, - 1, - 81, - 97, - 104, - 0, - 130, - 1, - 82, - 97, - 103, - 128, - 129, - 1, - 81, - 97, - 104, - 32, - 130, - 1, - 82, - 97, - 103, - 160, - 129, - 1, - 81, - 97, - 104, - 64, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 103, - 224, - 132, - 1, - 96, - 128, - 97, - 103, - 224, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 103, - 224, - 129, - 1, - 81, - 97, - 104, - 96, - 130, - 1, - 82, - 97, - 104, - 0, - 129, - 1, - 81, - 97, - 104, - 128, - 130, - 1, - 82, - 127, - 25, - 142, - 147, - 147, - 146, - 13, - 72, - 58, - 114, - 96, - 191, - 183, - 49, - 251, - 93, - 37, - 241, - 170, - 73, - 51, - 53, - 169, - 231, - 18, - 151, - 228, - 133, - 183, - 174, - 243, - 18, - 194, - 97, - 104, - 160, - 130, - 1, - 82, - 127, - 24, - 0, - 222, - 239, - 18, - 31, - 30, - 118, - 66, - 106, - 0, - 102, - 94, - 92, - 68, - 121, - 103, - 67, - 34, - 212, - 247, - 94, - 218, - 221, - 70, - 222, - 189, - 92, - 217, - 146, - 246, - 237, - 97, - 104, - 192, - 130, - 1, - 82, - 127, - 9, - 6, - 137, - 208, - 88, - 95, - 240, - 117, - 236, - 158, - 153, - 173, - 105, - 12, - 51, - 149, - 188, - 75, - 49, - 51, - 112, - 179, - 142, - 243, - 85, - 172, - 218, - 220, - 209, - 34, - 151, - 91, - 97, - 104, - 224, - 130, - 1, - 82, - 127, - 18, - 200, - 94, - 165, - 219, - 140, - 109, - 235, - 74, - 171, - 113, - 128, - 141, - 203, - 64, - 143, - 227, - 209, - 231, - 105, - 12, - 67, - 211, - 123, - 76, - 230, - 204, - 1, - 102, - 250, - 125, - 170, - 97, - 105, - 0, - 130, - 1, - 82, - 97, - 11, - 96, - 129, - 1, - 81, - 97, - 105, - 32, - 130, - 1, - 82, - 97, - 11, - 128, - 129, - 1, - 81, - 97, - 105, - 64, - 130, - 1, - 82, - 127, - 38, - 24, - 106, - 45, - 101, - 238, - 77, - 47, - 156, - 154, - 91, - 145, - 248, - 101, - 151, - 211, - 95, - 25, - 44, - 209, - 32, - 202, - 247, - 233, - 53, - 216, - 68, - 61, - 25, - 56, - 226, - 61, - 97, - 105, - 96, - 130, - 1, - 82, - 127, - 48, - 68, - 31, - 209, - 181, - 211, - 55, - 4, - 130, - 196, - 33, - 82, - 168, - 137, - 144, - 39, - 113, - 105, - 137, - 166, - 153, - 108, - 37, - 53, - 188, - 159, - 127, - 238, - 138, - 174, - 247, - 158, - 97, - 105, - 128, - 130, - 1, - 82, - 127, - 22, - 243, - 99, - 241, - 3, - 200, - 13, - 123, - 188, - 138, - 211, - 198, - 134, - 126, - 8, - 34, - 187, - 198, - 0, - 11, - 233, - 26, - 70, - 137, - 117, - 92, - 125, - 244, - 2, - 33, - 193, - 69, - 97, - 105, - 160, - 130, - 1, - 82, - 127, - 43, - 28, - 187, - 62, - 82, - 30, - 223, - 90, - 98, - 45, - 130, - 118, - 42, - 68, - 165, - 230, - 63, - 30, - 80, - 179, - 50, - 215, - 17, - 84, - 164, - 167, - 149, - 141, - 96, - 17, - 222, - 255, - 97, - 105, - 192, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 32, - 97, - 104, - 96, - 132, - 1, - 97, - 1, - 128, - 97, - 104, - 96, - 134, - 1, - 96, - 8, - 90, - 250, - 97, - 104, - 96, - 147, - 144, - 147, - 1, - 81, - 96, - 1, - 20, - 146, - 20, - 22, - 22, - 145, - 80, - 80, - 146, - 145, - 80, - 80, - 86, - 91, - 96, - 64, - 81, - 128, - 97, - 105, - 192, - 1, - 96, - 64, - 82, - 128, - 97, - 3, - 78, - 144, - 96, - 32, - 130, - 2, - 128, - 54, - 131, - 55, - 80, - 145, - 146, - 145, - 80, - 80, - 86, - 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 65, - 96, - 4, - 82, - 96, - 36, - 96, - 0, - 253, - 91, - 96, - 64, - 81, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, - 97, - 78, - 92, - 87, - 97, - 78, - 92, - 97, - 78, - 29, - 86, - 91, - 96, - 64, - 82, - 145, - 144, - 80, - 86, - 91, - 96, - 0, - 130, - 96, - 31, - 131, - 1, - 18, - 97, - 78, - 117, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, - 97, - 78, - 143, - 87, - 97, - 78, - 143, - 97, - 78, - 29, - 86, - 91, - 97, - 78, - 162, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, - 96, - 32, - 1, - 97, - 78, - 51, - 86, - 91, - 129, - 129, - 82, - 132, - 96, - 32, - 131, - 134, - 1, - 1, - 17, - 21, - 97, - 78, - 183, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 96, - 32, - 133, - 1, - 96, - 32, - 131, - 1, - 55, - 96, - 0, - 145, - 129, - 1, - 96, - 32, - 1, - 145, - 144, - 145, - 82, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 96, - 0, - 128, - 96, - 64, - 131, - 133, - 3, - 18, - 21, - 97, - 78, - 231, - 87, - 96, - 0, - 128, - 253, - 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 78, - 255, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 133, - 1, - 145, - 80, - 133, - 96, - 31, - 131, - 1, - 18, - 97, - 79, - 19, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 53, - 96, - 32, - 130, - 130, - 17, - 21, - 97, - 79, - 39, - 87, - 97, - 79, - 39, - 97, - 78, - 29, - 86, - 91, - 129, - 96, - 5, - 27, - 97, - 79, - 54, - 130, - 130, - 1, - 97, - 78, - 51, - 86, - 91, - 146, - 131, - 82, - 132, - 129, - 1, - 130, - 1, - 146, - 130, - 129, - 1, - 144, - 138, - 133, - 17, - 21, - 97, - 79, - 80, - 87, - 96, - 0, - 128, - 253, - 91, - 149, - 131, - 1, - 149, - 91, - 132, - 135, - 16, - 21, - 97, - 79, - 110, - 87, - 134, - 53, - 130, - 82, - 149, - 131, - 1, - 149, - 144, - 131, - 1, - 144, - 97, - 79, - 85, - 86, - 91, - 151, - 80, - 80, - 80, - 134, - 1, - 53, - 146, - 80, - 80, - 128, - 130, - 17, - 21, - 97, - 79, - 133, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 97, - 79, - 146, - 133, - 130, - 134, - 1, - 97, - 78, - 100, - 86, - 91, - 145, - 80, - 80, - 146, - 80, - 146, - 144, - 80, - 86, - 254, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 151, - 129, - 106, - 145, - 104, - 113, - 202, - 141, - 60, - 32, - 140, - 22, - 216, - 124, - 253, - 71, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 1, - 162, - 100, - 105, - 112, - 102, - 115, - 88, - 34, - 18, - 32, - 212, - 178, - 220, - 135, - 152, - 186, - 177, - 123, - 101, - 162, - 231, - 44, - 60, - 209, - 59, - 7, - 180, - 165, - 138, - 174, - 54, - 106, - 119, - 120, - 72, - 82, - 51, - 60, - 117, - 170, - 120, - 185, - 100, - 115, - 111, - 108, - 99, - 67, - 0, - 8, - 18, - 0, - 51, - ]; - ///The bytecode of the contract. - pub static SOLVENCYVERIFIER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = &[ - 96, - 128, - 96, - 64, - 82, - 52, - 128, - 21, - 97, - 0, - 16, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 96, - 4, - 54, - 16, - 97, - 0, - 43, - 87, - 96, - 0, - 53, - 96, - 224, - 28, - 128, - 99, - 189, - 32, - 90, - 144, - 20, - 97, - 0, - 48, - 87, - 91, - 96, - 0, - 128, - 253, - 91, - 97, - 0, - 67, - 97, - 0, - 62, - 54, - 96, - 4, - 97, - 78, - 212, - 86, - 91, - 97, - 0, - 87, - 86, - 91, - 96, - 64, - 81, - 144, - 21, - 21, - 129, - 82, - 96, - 32, - 1, - 96, - 64, - 81, - 128, - 145, - 3, - 144, - 243, - 91, - 96, - 0, - 96, - 1, - 97, - 0, - 99, - 97, - 77, - 253, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 189, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 0, - 217, - 86, - 91, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 157, - 131, - 57, - 129, - 81, - 145, - 82, - 128, - 131, - 16, - 129, - 131, - 16, - 22, - 144, - 131, - 128, - 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 157, - 131, - 57, - 129, - 81, - 145, - 82, - 131, - 132, - 9, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 157, - 131, - 57, - 129, - 81, - 145, - 82, - 132, - 130, - 9, - 144, - 80, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 157, - 131, - 57, - 129, - 81, - 145, - 82, - 96, - 3, - 130, - 8, - 145, - 144, - 145, - 20, - 145, - 144, - 145, - 22, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 128, - 96, - 32, - 135, - 1, - 81, - 6, - 96, - 32, - 131, - 1, - 82, - 128, - 96, - 64, - 135, - 1, - 81, - 6, - 96, - 64, - 131, - 1, - 82, - 128, - 96, - 96, - 135, - 1, - 81, - 6, - 96, - 96, - 131, - 1, - 82, - 126, - 174, - 153, - 177, - 55, - 145, - 111, - 244, - 34, - 11, - 13, - 167, - 23, - 154, - 70, - 1, - 48, - 28, - 130, - 52, - 111, - 198, - 101, - 205, - 51, - 105, - 165, - 78, - 31, - 2, - 212, - 234, - 96, - 0, - 131, - 1, - 82, - 96, - 32, - 133, - 1, - 81, - 128, - 96, - 128, - 132, - 1, - 82, - 96, - 64, - 134, - 1, - 81, - 128, - 96, - 160, - 133, - 1, - 82, - 132, - 97, - 1, - 67, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 133, - 1, - 81, - 128, - 96, - 192, - 132, - 1, - 82, - 96, - 128, - 134, - 1, - 81, - 128, - 96, - 224, - 133, - 1, - 82, - 132, - 97, - 1, - 105, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 160, - 133, - 1, - 81, - 128, - 97, - 1, - 0, - 132, - 1, - 82, - 96, - 192, - 134, - 1, - 81, - 128, - 97, - 1, - 32, - 133, - 1, - 82, - 132, - 97, - 1, - 145, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 64, - 96, - 0, - 131, - 1, - 32, - 97, - 1, - 64, - 131, - 1, - 82, - 97, - 1, - 64, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 1, - 96, - 132, - 1, - 82, - 128, - 97, - 1, - 128, - 132, - 1, - 82, - 80, - 96, - 224, - 133, - 1, - 81, - 128, - 97, - 1, - 160, - 132, - 1, - 82, - 97, - 1, - 0, - 134, - 1, - 81, - 128, - 97, - 1, - 192, - 133, - 1, - 82, - 132, - 97, - 1, - 223, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 133, - 1, - 81, - 128, - 97, - 1, - 224, - 132, - 1, - 82, - 97, - 1, - 64, - 134, - 1, - 81, - 128, - 97, - 2, - 0, - 133, - 1, - 82, - 132, - 97, - 2, - 9, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 96, - 160, - 97, - 1, - 128, - 135, - 1, - 32, - 97, - 2, - 32, - 135, - 1, - 129, - 144, - 82, - 133, - 129, - 6, - 97, - 2, - 64, - 136, - 1, - 82, - 97, - 2, - 96, - 135, - 1, - 82, - 22, - 148, - 80, - 96, - 1, - 145, - 80, - 80, - 97, - 2, - 128, - 131, - 1, - 83, - 96, - 33, - 97, - 2, - 96, - 131, - 1, - 32, - 97, - 2, - 128, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 2, - 160, - 132, - 1, - 82, - 97, - 2, - 192, - 131, - 1, - 82, - 97, - 1, - 96, - 133, - 1, - 81, - 97, - 2, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 1, - 128, - 134, - 1, - 81, - 97, - 3, - 0, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 2, - 124, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 160, - 133, - 1, - 81, - 128, - 97, - 3, - 32, - 132, - 1, - 82, - 97, - 1, - 192, - 134, - 1, - 81, - 128, - 97, - 3, - 64, - 133, - 1, - 82, - 132, - 97, - 2, - 166, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 224, - 133, - 1, - 81, - 128, - 97, - 3, - 96, - 132, - 1, - 82, - 97, - 2, - 0, - 134, - 1, - 81, - 128, - 97, - 3, - 128, - 133, - 1, - 82, - 132, - 97, - 2, - 208, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 32, - 133, - 1, - 81, - 128, - 97, - 3, - 160, - 132, - 1, - 82, - 97, - 2, - 64, - 134, - 1, - 81, - 128, - 97, - 3, - 192, - 133, - 1, - 82, - 132, - 97, - 2, - 250, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 32, - 97, - 2, - 192, - 131, - 1, - 32, - 97, - 3, - 224, - 131, - 1, - 82, - 97, - 3, - 224, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 4, - 0, - 132, - 1, - 82, - 128, - 97, - 4, - 32, - 132, - 1, - 82, - 80, - 97, - 2, - 96, - 133, - 1, - 81, - 128, - 97, - 4, - 64, - 132, - 1, - 82, - 97, - 2, - 128, - 134, - 1, - 81, - 128, - 97, - 4, - 96, - 133, - 1, - 82, - 132, - 97, - 3, - 74, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 160, - 133, - 1, - 81, - 128, - 97, - 4, - 128, - 132, - 1, - 82, - 97, - 2, - 192, - 134, - 1, - 81, - 128, - 97, - 4, - 160, - 133, - 1, - 82, - 132, - 97, - 3, - 116, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 2, - 224, - 133, - 1, - 81, - 128, - 97, - 4, - 192, - 132, - 1, - 82, - 97, - 3, - 0, - 134, - 1, - 81, - 128, - 97, - 4, - 224, - 133, - 1, - 82, - 132, - 97, - 3, - 158, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 32, - 133, - 1, - 81, - 128, - 97, - 5, - 0, - 132, - 1, - 82, - 97, - 3, - 64, - 134, - 1, - 81, - 128, - 97, - 5, - 32, - 133, - 1, - 82, - 132, - 97, - 3, - 200, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 3, - 96, - 133, - 1, - 81, - 128, - 97, - 5, - 64, - 132, - 1, - 82, - 97, - 3, - 128, - 134, - 1, - 81, - 128, - 97, - 5, - 96, - 133, - 1, - 82, - 132, - 97, - 3, - 242, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 97, - 1, - 96, - 97, - 4, - 32, - 131, - 1, - 32, - 97, - 5, - 128, - 131, - 1, - 82, - 97, - 5, - 128, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 5, - 160, - 132, - 1, - 82, - 128, - 97, - 5, - 192, - 132, - 1, - 82, - 80, - 128, - 97, - 3, - 160, - 134, - 1, - 81, - 6, - 97, - 5, - 224, - 131, - 1, - 82, - 128, - 97, - 3, - 192, - 134, - 1, - 81, - 6, - 97, - 6, - 0, - 131, - 1, - 82, - 128, - 97, - 3, - 224, - 134, - 1, - 81, - 6, - 97, - 6, - 32, - 131, - 1, - 82, - 128, - 97, - 4, - 0, - 134, - 1, - 81, - 6, - 97, - 6, - 64, - 131, - 1, - 82, - 128, - 97, - 4, - 32, - 134, - 1, - 81, - 6, - 97, - 6, - 96, - 131, - 1, - 82, - 128, - 97, - 4, - 64, - 134, - 1, - 81, - 6, - 97, - 6, - 128, - 131, - 1, - 82, - 128, - 97, - 4, - 96, - 134, - 1, - 81, - 6, - 97, - 6, - 160, - 131, - 1, - 82, - 128, - 97, - 4, - 128, - 134, - 1, - 81, - 6, - 97, - 6, - 192, - 131, - 1, - 82, - 128, - 97, - 4, - 160, - 134, - 1, - 81, - 6, - 97, - 6, - 224, - 131, - 1, - 82, - 128, - 97, - 4, - 192, - 134, - 1, - 81, - 6, - 97, - 7, - 0, - 131, - 1, - 82, - 128, - 97, - 4, - 224, - 134, - 1, - 81, - 6, - 97, - 7, - 32, - 131, - 1, - 82, - 128, - 97, - 5, - 0, - 134, - 1, - 81, - 6, - 97, - 7, - 64, - 131, - 1, - 82, - 128, - 97, - 5, - 32, - 134, - 1, - 81, - 6, - 97, - 7, - 96, - 131, - 1, - 82, - 128, - 97, - 5, - 64, - 134, - 1, - 81, - 6, - 97, - 7, - 128, - 131, - 1, - 82, - 128, - 97, - 5, - 96, - 134, - 1, - 81, - 6, - 97, - 7, - 160, - 131, - 1, - 82, - 128, - 97, - 5, - 128, - 134, - 1, - 81, - 6, - 97, - 7, - 192, - 131, - 1, - 82, - 128, - 97, - 5, - 160, - 134, - 1, - 81, - 6, - 97, - 7, - 224, - 131, - 1, - 82, - 128, - 97, - 5, - 192, - 134, - 1, - 81, - 6, - 97, - 8, - 0, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 134, - 1, - 81, - 6, - 97, - 8, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 134, - 1, - 81, - 6, - 97, - 8, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 134, - 1, - 81, - 6, - 97, - 8, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 134, - 1, - 81, - 6, - 97, - 8, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 134, - 1, - 81, - 6, - 97, - 8, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 128, - 134, - 1, - 81, - 6, - 97, - 8, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 160, - 134, - 1, - 81, - 6, - 97, - 8, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 192, - 134, - 1, - 81, - 6, - 97, - 9, - 0, - 131, - 1, - 82, - 128, - 97, - 6, - 224, - 134, - 1, - 81, - 6, - 97, - 9, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 0, - 134, - 1, - 81, - 6, - 97, - 9, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 32, - 134, - 1, - 81, - 6, - 97, - 9, - 96, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 134, - 1, - 81, - 6, - 97, - 9, - 128, - 131, - 1, - 82, - 128, - 97, - 7, - 96, - 134, - 1, - 81, - 6, - 97, - 9, - 160, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 134, - 1, - 81, - 6, - 97, - 9, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 160, - 134, - 1, - 81, - 6, - 97, - 9, - 224, - 131, - 1, - 82, - 97, - 4, - 64, - 97, - 5, - 192, - 131, - 1, - 32, - 97, - 10, - 0, - 131, - 1, - 82, - 97, - 10, - 0, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 10, - 32, - 132, - 1, - 82, - 128, - 97, - 10, - 64, - 132, - 1, - 82, - 80, - 96, - 1, - 97, - 10, - 96, - 131, - 1, - 83, - 96, - 33, - 97, - 10, - 64, - 131, - 1, - 32, - 97, - 10, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 129, - 6, - 97, - 10, - 128, - 132, - 1, - 82, - 97, - 10, - 160, - 131, - 1, - 82, - 97, - 7, - 192, - 133, - 1, - 81, - 97, - 10, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 224, - 134, - 1, - 81, - 97, - 10, - 224, - 132, - 1, - 129, - 144, - 82, - 132, - 97, - 6, - 95, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 96, - 96, - 97, - 10, - 160, - 131, - 1, - 32, - 97, - 11, - 0, - 131, - 1, - 82, - 97, - 11, - 0, - 130, - 1, - 81, - 129, - 129, - 6, - 97, - 11, - 32, - 132, - 1, - 82, - 128, - 97, - 11, - 64, - 132, - 1, - 82, - 80, - 97, - 8, - 0, - 133, - 1, - 81, - 128, - 97, - 11, - 96, - 132, - 1, - 82, - 97, - 8, - 32, - 134, - 1, - 81, - 128, - 97, - 11, - 128, - 133, - 1, - 82, - 132, - 97, - 6, - 174, - 130, - 132, - 97, - 0, - 119, - 86, - 91, - 22, - 148, - 80, - 80, - 80, - 128, - 97, - 5, - 160, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 11, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 11, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 11, - 224, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 0, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 128, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 12, - 192, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 12, - 192, - 132, - 1, - 81, - 8, - 97, - 12, - 224, - 131, - 1, - 82, - 128, - 127, - 48, - 88, - 53, - 95, - 68, - 121, - 83, - 193, - 173, - 226, - 49, - 165, - 19, - 224, - 248, - 7, - 16, - 233, - 219, - 78, - 103, - 155, - 2, - 53, - 31, - 144, - 253, - 22, - 139, - 4, - 0, - 1, - 97, - 12, - 224, - 132, - 1, - 81, - 9, - 97, - 13, - 0, - 131, - 1, - 82, - 128, - 127, - 21, - 247, - 157, - 185, - 195, - 145, - 129, - 188, - 62, - 49, - 200, - 63, - 146, - 145, - 218, - 118, - 238, - 223, - 27, - 35, - 196, - 16, - 173, - 215, - 233, - 9, - 132, - 100, - 170, - 164, - 251, - 38, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 13, - 32, - 131, - 1, - 82, - 128, - 127, - 26, - 108, - 176, - 185, - 29, - 160, - 30, - 109, - 122, - 30, - 125, - 118, - 238, - 239, - 125, - 230, - 57, - 84, - 205, - 36, - 181, - 168, - 194, - 185, - 90, - 216, - 113, - 47, - 69, - 91, - 4, - 219, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 13, - 64, - 131, - 1, - 82, - 128, - 127, - 3, - 183, - 67, - 215, - 79, - 217, - 221, - 180, - 31, - 146, - 1, - 121, - 172, - 48, - 224, - 75, - 14, - 189, - 147, - 229, - 128, - 185, - 192, - 181, - 0, - 97, - 8, - 121, - 4, - 17, - 11, - 212, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 13, - 96, - 131, - 1, - 82, - 128, - 127, - 44, - 173, - 10, - 155, - 145, - 87, - 194, - 117, - 152, - 190, - 68, - 60, - 213, - 80, - 120, - 18, - 25, - 118, - 84, - 98, - 248, - 255, - 175, - 220, - 67, - 128, - 237, - 26, - 235, - 238, - 244, - 45, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 13, - 128, - 131, - 1, - 82, - 128, - 127, - 31, - 77, - 113, - 128, - 223, - 80, - 20, - 132, - 152, - 37, - 243, - 201, - 176, - 232, - 157, - 121, - 67, - 44, - 81, - 244, - 142, - 181, - 132, - 106, - 230, - 59, - 67, - 63, - 40, - 171, - 161, - 11, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 13, - 160, - 131, - 1, - 82, - 128, - 127, - 17, - 22, - 220, - 242, - 1, - 225, - 139, - 165, - 32, - 42, - 81, - 236, - 208, - 152, - 186, - 227, - 229, - 7, - 150, - 83, - 235, - 3, - 236, - 38, - 93, - 166, - 178, - 84, - 199, - 84, - 94, - 246, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 13, - 192, - 131, - 1, - 82, - 128, - 127, - 34, - 181, - 86, - 3, - 88, - 109, - 95, - 196, - 44, - 108, - 20, - 194, - 252, - 39, - 160, - 40, - 194, - 7, - 218, - 139, - 44, - 113, - 203, - 51, - 213, - 73, - 250, - 74, - 43, - 229, - 211, - 2, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 13, - 224, - 131, - 1, - 82, - 128, - 127, - 13, - 174, - 248, - 111, - 136, - 196, - 64, - 101, - 139, - 228, - 48, - 243, - 133, - 89, - 184, - 52, - 102, - 44, - 13, - 189, - 77, - 71, - 165, - 93, - 110, - 151, - 251, - 73, - 196, - 26, - 44, - 255, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 14, - 0, - 131, - 1, - 82, - 128, - 127, - 9, - 107, - 159, - 139, - 133, - 152, - 183, - 195, - 135, - 251, - 105, - 171, - 242, - 54, - 176, - 213, - 224, - 78, - 36, - 210, - 117, - 238, - 152, - 36, - 68, - 67, - 237, - 165, - 211, - 188, - 64, - 53, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 14, - 32, - 131, - 1, - 82, - 128, - 127, - 38, - 248, - 174, - 231, - 91, - 152, - 232, - 102, - 48, - 84, - 220, - 10, - 143, - 74, - 167, - 135, - 71, - 229, - 195, - 118, - 3, - 202, - 216, - 108, - 255, - 158, - 7, - 238, - 28, - 67, - 191, - 204, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 14, - 64, - 131, - 1, - 82, - 128, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 227, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 14, - 96, - 131, - 1, - 82, - 128, - 127, - 37, - 128, - 133, - 19, - 32, - 245, - 149, - 202, - 138, - 103, - 156, - 194, - 21, - 125, - 139, - 125, - 72, - 70, - 188, - 142, - 237, - 27, - 37, - 176, - 146, - 214, - 223, - 166, - 75, - 28, - 78, - 30, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 14, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 14, - 160, - 131, - 1, - 82, - 128, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 14, - 192, - 131, - 1, - 82, - 128, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 125, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 14, - 224, - 131, - 1, - 82, - 128, - 127, - 5, - 139, - 76, - 84, - 16, - 181, - 93, - 126, - 158, - 88, - 201, - 89, - 142, - 181, - 133, - 126, - 118, - 253, - 254, - 21, - 106, - 158, - 91, - 29, - 134, - 217, - 28, - 0, - 230, - 59, - 68, - 132, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 15, - 0, - 131, - 1, - 82, - 128, - 127, - 13, - 211, - 11, - 154, - 216, - 193, - 115, - 85, - 93, - 42, - 51, - 2, - 155, - 200, - 7, - 172, - 22, - 91, - 97, - 40, - 30, - 144, - 84, - 161, - 115, - 175, - 127, - 244, - 228, - 252, - 136, - 252, - 97, - 13, - 0, - 132, - 1, - 81, - 9, - 97, - 15, - 32, - 131, - 1, - 82, - 128, - 127, - 34, - 145, - 66, - 216, - 8, - 112, - 44, - 212, - 91, - 38, - 18, - 179, - 229, - 185, - 80, - 177, - 17, - 216, - 135, - 32, - 91, - 41, - 27, - 239, - 208, - 50, - 117, - 159, - 11, - 3, - 119, - 5, - 97, - 5, - 160, - 132, - 1, - 81, - 8, - 97, - 15, - 64, - 131, - 1, - 82, - 97, - 13, - 64, - 130, - 1, - 81, - 129, - 129, - 97, - 13, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 13, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 15, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 14, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 15, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 12, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 16, - 96, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 16, - 160, - 131, - 1, - 82, - 96, - 32, - 97, - 16, - 192, - 131, - 1, - 82, - 96, - 32, - 97, - 16, - 224, - 131, - 1, - 82, - 97, - 16, - 96, - 130, - 1, - 81, - 97, - 17, - 0, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 17, - 32, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 189, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 17, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 16, - 128, - 133, - 1, - 96, - 192, - 97, - 16, - 160, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 16, - 128, - 130, - 1, - 81, - 96, - 0, - 97, - 12, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 64, - 134, - 1, - 81, - 9, - 97, - 12, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 32, - 134, - 1, - 81, - 9, - 97, - 15, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 15, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 16, - 0, - 134, - 1, - 81, - 9, - 97, - 15, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 224, - 134, - 1, - 81, - 9, - 97, - 14, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 192, - 134, - 1, - 81, - 9, - 97, - 14, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 160, - 134, - 1, - 81, - 9, - 97, - 14, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 14, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 128, - 134, - 1, - 81, - 9, - 97, - 14, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 13, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 15, - 96, - 134, - 1, - 81, - 9, - 97, - 13, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 13, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 13, - 64, - 134, - 1, - 81, - 9, - 97, - 13, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 13, - 64, - 133, - 1, - 129, - 144, - 82, - 97, - 13, - 32, - 133, - 1, - 81, - 132, - 147, - 80, - 144, - 145, - 80, - 9, - 97, - 17, - 96, - 131, - 1, - 82, - 128, - 97, - 13, - 128, - 131, - 1, - 81, - 97, - 13, - 96, - 132, - 1, - 81, - 9, - 97, - 17, - 128, - 131, - 1, - 82, - 128, - 97, - 13, - 192, - 131, - 1, - 81, - 97, - 13, - 160, - 132, - 1, - 81, - 9, - 97, - 17, - 160, - 131, - 1, - 82, - 128, - 97, - 14, - 0, - 131, - 1, - 81, - 97, - 13, - 224, - 132, - 1, - 81, - 9, - 97, - 17, - 192, - 131, - 1, - 82, - 128, - 97, - 14, - 64, - 131, - 1, - 81, - 97, - 14, - 32, - 132, - 1, - 81, - 9, - 97, - 17, - 224, - 131, - 1, - 82, - 128, - 97, - 14, - 128, - 131, - 1, - 81, - 97, - 14, - 96, - 132, - 1, - 81, - 9, - 97, - 18, - 0, - 131, - 1, - 82, - 128, - 97, - 14, - 192, - 131, - 1, - 81, - 97, - 14, - 160, - 132, - 1, - 81, - 9, - 97, - 18, - 32, - 131, - 1, - 82, - 128, - 97, - 15, - 0, - 131, - 1, - 81, - 97, - 14, - 224, - 132, - 1, - 81, - 9, - 97, - 18, - 64, - 131, - 1, - 82, - 128, - 97, - 15, - 64, - 131, - 1, - 81, - 97, - 15, - 32, - 132, - 1, - 81, - 9, - 97, - 18, - 96, - 131, - 1, - 82, - 128, - 96, - 32, - 131, - 1, - 81, - 97, - 18, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 96, - 64, - 134, - 1, - 81, - 97, - 18, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 96, - 96, - 134, - 1, - 81, - 97, - 18, - 96, - 135, - 1, - 81, - 9, - 8, - 97, - 18, - 128, - 132, - 1, - 82, - 80, - 97, - 7, - 32, - 130, - 1, - 81, - 97, - 5, - 224, - 131, - 1, - 81, - 130, - 145, - 144, - 8, - 97, - 18, - 160, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 18, - 192, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 18, - 224, - 131, - 1, - 82, - 128, - 97, - 18, - 224, - 131, - 1, - 81, - 97, - 18, - 160, - 132, - 1, - 81, - 9, - 97, - 19, - 0, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 19, - 0, - 132, - 1, - 81, - 9, - 97, - 19, - 32, - 131, - 1, - 82, - 128, - 97, - 7, - 64, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 19, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 96, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 19, - 128, - 131, - 1, - 82, - 128, - 97, - 19, - 128, - 131, - 1, - 81, - 97, - 19, - 64, - 132, - 1, - 81, - 9, - 97, - 19, - 160, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 19, - 160, - 132, - 1, - 81, - 9, - 97, - 19, - 192, - 131, - 1, - 82, - 128, - 97, - 19, - 192, - 131, - 1, - 81, - 97, - 19, - 32, - 132, - 1, - 81, - 8, - 97, - 19, - 224, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 19, - 224, - 132, - 1, - 81, - 8, - 97, - 20, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 20, - 32, - 131, - 1, - 82, - 128, - 97, - 20, - 32, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 20, - 64, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 19, - 0, - 132, - 1, - 81, - 9, - 97, - 20, - 96, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 19, - 160, - 132, - 1, - 81, - 9, - 97, - 20, - 128, - 131, - 1, - 82, - 128, - 97, - 20, - 128, - 131, - 1, - 81, - 97, - 20, - 96, - 132, - 1, - 81, - 8, - 97, - 20, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 20, - 160, - 132, - 1, - 81, - 8, - 97, - 20, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 160, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 20, - 224, - 131, - 1, - 82, - 128, - 97, - 20, - 224, - 131, - 1, - 81, - 97, - 20, - 64, - 132, - 1, - 81, - 8, - 97, - 21, - 0, - 131, - 1, - 82, - 128, - 97, - 21, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 21, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 19, - 0, - 132, - 1, - 81, - 8, - 97, - 21, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 21, - 96, - 131, - 1, - 82, - 128, - 97, - 21, - 96, - 131, - 1, - 81, - 97, - 21, - 32, - 132, - 1, - 81, - 8, - 97, - 21, - 128, - 131, - 1, - 82, - 128, - 97, - 21, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 21, - 160, - 131, - 1, - 82, - 128, - 127, - 6, - 111, - 111, - 133, - 214, - 246, - 138, - 133, - 236, - 16, - 52, - 83, - 81, - 162, - 58, - 58, - 175, - 7, - 243, - 138, - 248, - 201, - 82, - 167, - 188, - 236, - 167, - 11, - 210, - 175, - 122, - 213, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 21, - 192, - 131, - 1, - 82, - 128, - 127, - 43, - 157, - 75, - 65, - 16, - 201, - 174, - 153, - 119, - 130, - 225, - 80, - 155, - 29, - 15, - 219, - 32, - 167, - 192, - 43, - 189, - 139, - 234, - 115, - 5, - 70, - 43, - 159, - 129, - 37, - 177, - 232, - 97, - 19, - 64, - 132, - 1, - 81, - 9, - 97, - 21, - 224, - 131, - 1, - 82, - 128, - 97, - 21, - 224, - 131, - 1, - 81, - 97, - 21, - 192, - 132, - 1, - 81, - 8, - 97, - 22, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 6, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 22, - 32, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 22, - 64, - 131, - 1, - 129, - 144, - 82, - 129, - 144, - 128, - 9, - 97, - 22, - 96, - 131, - 1, - 82, - 128, - 97, - 22, - 96, - 131, - 1, - 81, - 97, - 22, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 128, - 131, - 1, - 82, - 128, - 127, - 19, - 171, - 236, - 57, - 10, - 218, - 127, - 67, - 112, - 129, - 154, - 177, - 199, - 132, - 111, - 33, - 5, - 84, - 86, - 157, - 155, - 41, - 209, - 234, - 141, - 190, - 189, - 15, - 168, - 197, - 62, - 102, - 97, - 6, - 32, - 132, - 1, - 81, - 9, - 97, - 22, - 160, - 131, - 1, - 82, - 128, - 127, - 30, - 185, - 225, - 220, - 25, - 163, - 58, - 98, - 76, - 152, - 98, - 161, - 217, - 125, - 21, - 16, - 189, - 82, - 30, - 173, - 93, - 254, - 3, - 69, - 170, - 246, - 24, - 91, - 26, - 30, - 96, - 254, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 22, - 192, - 131, - 1, - 82, - 128, - 97, - 22, - 192, - 131, - 1, - 81, - 97, - 22, - 160, - 132, - 1, - 81, - 8, - 97, - 22, - 224, - 131, - 1, - 82, - 128, - 97, - 22, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 22, - 128, - 132, - 1, - 81, - 8, - 97, - 23, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 23, - 32, - 131, - 1, - 82, - 128, - 97, - 23, - 32, - 131, - 1, - 81, - 97, - 21, - 160, - 132, - 1, - 81, - 8, - 97, - 23, - 64, - 131, - 1, - 82, - 128, - 97, - 23, - 64, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 23, - 96, - 131, - 1, - 82, - 128, - 127, - 12, - 197, - 124, - 219, - 176, - 133, - 7, - 214, - 43, - 246, - 122, - 68, - 147, - 204, - 38, - 47, - 182, - 192, - 157, - 85, - 112, - 19, - 255, - 241, - 245, - 115, - 244, - 49, - 34, - 31, - 143, - 249, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 23, - 128, - 131, - 1, - 82, - 128, - 127, - 18, - 116, - 230, - 73, - 163, - 46, - 211, - 85, - 163, - 26, - 110, - 214, - 151, - 36, - 225, - 173, - 173, - 232, - 87, - 232, - 110, - 181, - 195, - 161, - 33, - 188, - 209, - 71, - 148, - 50, - 3, - 200, - 97, - 19, - 64, - 132, - 1, - 81, - 9, - 97, - 23, - 160, - 131, - 1, - 82, - 128, - 97, - 23, - 160, - 131, - 1, - 81, - 97, - 23, - 128, - 132, - 1, - 81, - 8, - 97, - 23, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 23, - 224, - 131, - 1, - 82, - 128, - 127, - 15, - 193, - 201, - 57, - 77, - 184, - 155, - 178, - 96, - 26, - 188, - 73, - 253, - 173, - 79, - 3, - 140, - 229, - 22, - 144, - 48, - 162, - 173, - 105, - 118, - 63, - 120, - 117, - 3, - 107, - 203, - 2, - 97, - 6, - 32, - 132, - 1, - 81, - 9, - 97, - 24, - 0, - 131, - 1, - 82, - 128, - 127, - 22, - 169, - 233, - 140, - 73, - 58, - 144, - 43, - 149, - 2, - 5, - 78, - 220, - 3, - 231, - 178, - 43, - 126, - 172, - 52, - 52, - 89, - 97, - 188, - 138, - 188, - 237, - 107, - 209, - 71, - 200, - 190, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, - 24, - 32, - 131, - 1, - 82, - 128, - 97, - 24, - 32, - 131, - 1, - 81, - 97, - 24, - 0, - 132, - 1, - 81, - 8, - 97, - 24, - 64, - 131, - 1, - 82, - 128, - 97, - 24, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 23, - 224, - 132, - 1, - 81, - 8, - 97, - 24, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 24, - 128, - 131, - 1, - 82, - 128, - 97, - 24, - 128, - 131, - 1, - 81, - 97, - 23, - 96, - 132, - 1, - 81, - 8, - 97, - 24, - 160, - 131, - 1, - 82, - 128, - 97, - 24, - 160, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 24, - 192, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 24, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 0, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 2, - 8, - 97, - 25, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 25, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 64, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 3, - 8, - 97, - 25, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 25, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 128, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 131, - 1, - 81, - 97, - 6, - 160, - 132, - 1, - 81, - 8, - 97, - 25, - 160, - 131, - 1, - 82, - 128, - 97, - 6, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 25, - 160, - 132, - 1, - 81, - 8, - 97, - 25, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 25, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 25, - 224, - 131, - 1, - 82, - 128, - 97, - 25, - 224, - 131, - 1, - 81, - 97, - 24, - 192, - 132, - 1, - 81, - 8, - 97, - 26, - 0, - 131, - 1, - 82, - 128, - 97, - 26, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 26, - 32, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 128, - 132, - 1, - 81, - 8, - 97, - 26, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 25, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 96, - 131, - 1, - 82, - 128, - 97, - 26, - 96, - 131, - 1, - 81, - 97, - 26, - 32, - 132, - 1, - 81, - 8, - 97, - 26, - 128, - 131, - 1, - 82, - 128, - 97, - 26, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 26, - 160, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 97, - 25, - 32, - 132, - 1, - 81, - 9, - 97, - 26, - 192, - 131, - 1, - 82, - 128, - 97, - 26, - 192, - 131, - 1, - 81, - 97, - 25, - 96, - 132, - 1, - 81, - 9, - 97, - 26, - 224, - 131, - 1, - 82, - 128, - 97, - 7, - 128, - 131, - 1, - 81, - 130, - 3, - 96, - 4, - 8, - 97, - 27, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 26, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 27, - 32, - 131, - 1, - 82, - 128, - 97, - 27, - 32, - 131, - 1, - 81, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 97, - 27, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 27, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 27, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 27, - 128, - 131, - 1, - 82, - 128, - 97, - 27, - 128, - 131, - 1, - 81, - 97, - 26, - 160, - 132, - 1, - 81, - 8, - 97, - 27, - 160, - 131, - 1, - 82, - 128, - 97, - 27, - 160, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 27, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 96, - 2, - 9, - 97, - 27, - 224, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 28, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 27, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 28, - 32, - 131, - 1, - 82, - 128, - 97, - 5, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 32, - 132, - 1, - 81, - 8, - 97, - 28, - 64, - 131, - 1, - 82, - 128, - 97, - 28, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 28, - 32, - 132, - 1, - 81, - 8, - 97, - 28, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 28, - 128, - 131, - 1, - 82, - 128, - 97, - 28, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 28, - 96, - 132, - 1, - 81, - 8, - 97, - 28, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 27, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 28, - 192, - 131, - 1, - 82, - 128, - 97, - 28, - 192, - 131, - 1, - 81, - 97, - 27, - 192, - 132, - 1, - 81, - 8, - 97, - 28, - 224, - 131, - 1, - 82, - 128, - 97, - 28, - 224, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 29, - 0, - 131, - 1, - 82, - 128, - 97, - 25, - 0, - 131, - 1, - 81, - 97, - 25, - 96, - 132, - 1, - 81, - 9, - 97, - 29, - 32, - 131, - 1, - 82, - 128, - 97, - 29, - 32, - 131, - 1, - 81, - 97, - 27, - 0, - 132, - 1, - 81, - 9, - 97, - 29, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 97, - 5, - 224, - 132, - 1, - 81, - 8, - 97, - 29, - 96, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 29, - 96, - 132, - 1, - 81, - 8, - 97, - 29, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 29, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 29, - 160, - 131, - 1, - 82, - 128, - 97, - 29, - 160, - 131, - 1, - 81, - 97, - 29, - 0, - 132, - 1, - 81, - 8, - 97, - 29, - 192, - 131, - 1, - 82, - 128, - 97, - 29, - 192, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 29, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 29, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 30, - 0, - 131, - 1, - 82, - 128, - 97, - 30, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 30, - 32, - 131, - 1, - 82, - 128, - 97, - 25, - 64, - 131, - 1, - 81, - 97, - 27, - 0, - 132, - 1, - 81, - 9, - 97, - 30, - 64, - 131, - 1, - 82, - 128, - 97, - 6, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 5, - 224, - 132, - 1, - 81, - 8, - 97, - 30, - 96, - 131, - 1, - 82, - 128, - 96, - 1, - 96, - 112, - 27, - 97, - 30, - 96, - 132, - 1, - 81, - 8, - 97, - 30, - 128, - 131, - 1, - 82, - 128, - 97, - 6, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 30, - 128, - 132, - 1, - 81, - 8, - 97, - 30, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 30, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 30, - 192, - 131, - 1, - 82, - 128, - 97, - 30, - 192, - 131, - 1, - 81, - 97, - 30, - 32, - 132, - 1, - 81, - 8, - 97, - 30, - 224, - 131, - 1, - 82, - 128, - 97, - 30, - 224, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 31, - 0, - 131, - 1, - 82, - 128, - 97, - 8, - 192, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 31, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 31, - 64, - 131, - 1, - 82, - 128, - 97, - 31, - 64, - 131, - 1, - 81, - 97, - 31, - 0, - 132, - 1, - 81, - 8, - 97, - 31, - 96, - 131, - 1, - 82, - 128, - 97, - 31, - 96, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 31, - 128, - 131, - 1, - 82, - 97, - 9, - 32, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 31, - 160, - 131, - 1, - 82, - 128, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 3, - 97, - 31, - 160, - 132, - 1, - 81, - 8, - 97, - 31, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 31, - 224, - 131, - 1, - 82, - 128, - 97, - 31, - 224, - 131, - 1, - 81, - 97, - 31, - 128, - 132, - 1, - 81, - 8, - 97, - 32, - 0, - 131, - 1, - 82, - 128, - 97, - 32, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 32, - 32, - 131, - 1, - 82, - 128, - 97, - 9, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 32, - 132, - 1, - 81, - 8, - 97, - 32, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 32, - 96, - 131, - 1, - 82, - 128, - 97, - 32, - 96, - 131, - 1, - 81, - 97, - 32, - 32, - 132, - 1, - 81, - 8, - 97, - 32, - 128, - 131, - 1, - 82, - 128, - 97, - 32, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 32, - 160, - 131, - 1, - 82, - 128, - 97, - 17, - 96, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 32, - 192, - 131, - 1, - 82, - 128, - 97, - 17, - 160, - 131, - 1, - 81, - 97, - 17, - 128, - 132, - 1, - 81, - 8, - 97, - 32, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 33, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 224, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 33, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 0, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 33, - 64, - 131, - 1, - 82, - 128, - 97, - 33, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 32, - 192, - 132, - 1, - 81, - 8, - 97, - 33, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 0, - 132, - 1, - 81, - 9, - 97, - 33, - 128, - 131, - 1, - 82, - 128, - 97, - 33, - 128, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, - 97, - 33, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 33, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 32, - 132, - 1, - 81, - 9, - 97, - 33, - 224, - 131, - 1, - 82, - 128, - 97, - 33, - 224, - 131, - 1, - 81, - 97, - 5, - 224, - 132, - 1, - 81, - 8, - 97, - 34, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 34, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 34, - 64, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 64, - 132, - 1, - 81, - 9, - 97, - 34, - 96, - 131, - 1, - 82, - 128, - 97, - 34, - 96, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 34, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 34, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 34, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 34, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 96, - 132, - 1, - 81, - 9, - 97, - 34, - 224, - 131, - 1, - 82, - 128, - 97, - 34, - 224, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 8, - 97, - 35, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 35, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 34, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 35, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 8, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 35, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 35, - 128, - 131, - 1, - 82, - 128, - 97, - 35, - 128, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 35, - 160, - 131, - 1, - 82, - 128, - 97, - 35, - 160, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, - 97, - 35, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 35, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 127, - 9, - 34, - 107, - 110, - 34, - 198, - 240, - 202, - 100, - 236, - 38, - 170, - 212, - 200, - 110, - 113, - 91, - 95, - 137, - 142, - 94, - 150, - 63, - 37, - 135, - 14, - 86, - 187, - 229, - 51, - 233, - 162, - 9, - 97, - 36, - 0, - 131, - 1, - 82, - 128, - 97, - 36, - 0, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 36, - 32, - 131, - 1, - 82, - 128, - 97, - 36, - 32, - 131, - 1, - 81, - 97, - 5, - 224, - 132, - 1, - 81, - 8, - 97, - 36, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 36, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 35, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 36, - 128, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 127, - 19, - 179, - 96, - 212, - 232, - 47, - 233, - 21, - 254, - 209, - 96, - 129, - 3, - 143, - 152, - 194, - 17, - 66, - 123, - 135, - 162, - 129, - 189, - 115, - 60, - 39, - 125, - 186, - 223, - 16, - 55, - 43, - 9, - 97, - 36, - 160, - 131, - 1, - 82, - 128, - 97, - 36, - 160, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 36, - 192, - 131, - 1, - 82, - 128, - 97, - 36, - 192, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 8, - 97, - 36, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 36, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 37, - 32, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 127, - 24, - 175, - 223, - 35, - 233, - 189, - 147, - 2, - 103, - 63, - 193, - 224, - 118, - 164, - 146, - 212, - 214, - 91, - 209, - 142, - 188, - 77, - 133, - 78, - 209, - 137, - 19, - 155, - 171, - 49, - 62, - 82, - 9, - 97, - 37, - 64, - 131, - 1, - 82, - 128, - 97, - 37, - 64, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 37, - 96, - 131, - 1, - 82, - 128, - 97, - 37, - 96, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 8, - 97, - 37, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 37, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 37, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 37, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 8, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 37, - 224, - 131, - 1, - 82, - 128, - 97, - 37, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 35, - 96, - 132, - 1, - 81, - 8, - 97, - 38, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 38, - 32, - 131, - 1, - 82, - 128, - 97, - 38, - 32, - 131, - 1, - 81, - 97, - 32, - 160, - 132, - 1, - 81, - 8, - 97, - 38, - 64, - 131, - 1, - 82, - 128, - 97, - 38, - 64, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 38, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 128, - 132, - 1, - 81, - 9, - 97, - 38, - 128, - 131, - 1, - 82, - 128, - 97, - 38, - 128, - 131, - 1, - 81, - 97, - 6, - 96, - 132, - 1, - 81, - 8, - 97, - 38, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 38, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 8, - 160, - 132, - 1, - 81, - 9, - 97, - 38, - 224, - 131, - 1, - 82, - 128, - 97, - 38, - 224, - 131, - 1, - 81, - 97, - 18, - 128, - 132, - 1, - 81, - 8, - 97, - 39, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 39, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 38, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 39, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 39, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 126, - 161, - 54, - 186, - 19, - 175, - 166, - 200, - 62, - 183, - 184, - 47, - 179, - 112, - 226, - 40, - 231, - 65, - 85, - 228, - 143, - 184, - 241, - 193, - 207, - 195, - 63, - 176, - 218, - 138, - 251, - 66, - 9, - 97, - 39, - 128, - 131, - 1, - 82, - 128, - 97, - 39, - 128, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 39, - 160, - 131, - 1, - 82, - 128, - 97, - 39, - 160, - 131, - 1, - 81, - 97, - 6, - 96, - 132, - 1, - 81, - 8, - 97, - 39, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 39, - 224, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 127, - 46, - 185, - 117, - 13, - 206, - 84, - 95, - 23, - 212, - 146, - 5, - 141, - 210, - 1, - 161, - 37, - 31, - 243, - 217, - 7, - 120, - 100, - 88, - 61, - 68, - 234, - 249, - 190, - 144, - 8, - 105, - 157, - 9, - 97, - 40, - 0, - 131, - 1, - 82, - 128, - 97, - 40, - 0, - 131, - 1, - 81, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 40, - 32, - 131, - 1, - 82, - 128, - 97, - 40, - 32, - 131, - 1, - 81, - 97, - 18, - 128, - 132, - 1, - 81, - 8, - 97, - 40, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 160, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 40, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 39, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 40, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 40, - 160, - 131, - 1, - 82, - 128, - 97, - 40, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 39, - 96, - 132, - 1, - 81, - 8, - 97, - 40, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 40, - 224, - 131, - 1, - 82, - 128, - 97, - 40, - 224, - 131, - 1, - 81, - 97, - 38, - 96, - 132, - 1, - 81, - 8, - 97, - 41, - 0, - 131, - 1, - 82, - 128, - 97, - 41, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 41, - 32, - 131, - 1, - 82, - 128, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 3, - 96, - 1, - 8, - 97, - 41, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 41, - 96, - 131, - 1, - 82, - 128, - 97, - 41, - 96, - 131, - 1, - 81, - 97, - 41, - 32, - 132, - 1, - 81, - 8, - 97, - 41, - 128, - 131, - 1, - 82, - 128, - 97, - 41, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 41, - 160, - 131, - 1, - 82, - 97, - 9, - 96, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 41, - 192, - 131, - 1, - 82, - 128, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 41, - 192, - 132, - 1, - 81, - 8, - 97, - 41, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 17, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 0, - 131, - 1, - 82, - 128, - 97, - 42, - 0, - 131, - 1, - 81, - 97, - 41, - 160, - 132, - 1, - 81, - 8, - 97, - 42, - 32, - 131, - 1, - 82, - 128, - 97, - 42, - 32, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 42, - 64, - 131, - 1, - 82, - 128, - 97, - 2, - 64, - 131, - 1, - 81, - 97, - 9, - 160, - 132, - 1, - 81, - 8, - 97, - 42, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 128, - 131, - 1, - 82, - 128, - 97, - 2, - 160, - 131, - 1, - 81, - 97, - 9, - 224, - 132, - 1, - 81, - 8, - 97, - 42, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 42, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 42, - 192, - 131, - 1, - 82, - 128, - 97, - 6, - 192, - 131, - 1, - 81, - 97, - 1, - 0, - 9, - 97, - 42, - 224, - 131, - 1, - 82, - 128, - 97, - 42, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 6, - 96, - 132, - 1, - 81, - 8, - 97, - 43, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 7, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 64, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 43, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 96, - 131, - 1, - 82, - 128, - 97, - 2, - 160, - 131, - 1, - 81, - 97, - 7, - 32, - 132, - 1, - 81, - 8, - 97, - 43, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 43, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 160, - 131, - 1, - 82, - 128, - 97, - 43, - 160, - 131, - 1, - 81, - 130, - 3, - 97, - 42, - 192, - 132, - 1, - 81, - 8, - 97, - 43, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 33, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 43, - 224, - 131, - 1, - 82, - 128, - 97, - 43, - 224, - 131, - 1, - 81, - 97, - 42, - 64, - 132, - 1, - 81, - 8, - 97, - 44, - 0, - 131, - 1, - 82, - 128, - 97, - 44, - 0, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 44, - 32, - 131, - 1, - 82, - 128, - 97, - 9, - 224, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 160, - 132, - 1, - 81, - 8, - 97, - 44, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 44, - 96, - 131, - 1, - 82, - 128, - 97, - 44, - 96, - 131, - 1, - 81, - 97, - 44, - 32, - 132, - 1, - 81, - 8, - 97, - 44, - 128, - 131, - 1, - 82, - 128, - 97, - 44, - 128, - 131, - 1, - 81, - 97, - 4, - 0, - 132, - 1, - 81, - 9, - 97, - 44, - 160, - 131, - 1, - 82, - 128, - 97, - 33, - 96, - 131, - 1, - 81, - 97, - 44, - 64, - 132, - 1, - 81, - 9, - 97, - 44, - 192, - 131, - 1, - 82, - 128, - 97, - 9, - 192, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 160, - 132, - 1, - 81, - 8, - 97, - 44, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 44, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 0, - 131, - 1, - 82, - 128, - 97, - 45, - 0, - 131, - 1, - 81, - 97, - 44, - 160, - 132, - 1, - 81, - 8, - 97, - 45, - 32, - 131, - 1, - 82, - 97, - 12, - 192, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 45, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 12, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 12, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 12, - 192, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 45, - 160, - 131, - 1, - 82, - 128, - 97, - 12, - 192, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 45, - 192, - 131, - 1, - 82, - 128, - 97, - 45, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 45, - 224, - 131, - 1, - 82, - 128, - 97, - 45, - 96, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 46, - 0, - 131, - 1, - 82, - 128, - 97, - 45, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 46, - 32, - 131, - 1, - 82, - 128, - 97, - 12, - 224, - 131, - 1, - 81, - 97, - 45, - 32, - 132, - 1, - 81, - 9, - 97, - 46, - 64, - 131, - 1, - 82, - 128, - 97, - 5, - 160, - 131, - 1, - 81, - 97, - 11, - 160, - 132, - 1, - 81, - 9, - 97, - 46, - 96, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 46, - 128, - 131, - 1, - 82, - 128, - 97, - 46, - 128, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 32, - 132, - 1, - 81, - 8, - 97, - 46, - 160, - 131, - 1, - 82, - 128, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 227, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 46, - 192, - 131, - 1, - 82, - 128, - 97, - 46, - 192, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 32, - 132, - 1, - 81, - 8, - 97, - 46, - 224, - 131, - 1, - 82, - 128, - 127, - 21, - 247, - 157, - 185, - 195, - 145, - 129, - 188, - 62, - 49, - 200, - 63, - 146, - 145, - 218, - 118, - 238, - 223, - 27, - 35, - 196, - 16, - 173, - 215, - 233, - 9, - 132, - 100, - 170, - 164, - 251, - 38, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 47, - 0, - 131, - 1, - 82, - 128, - 97, - 47, - 0, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 32, - 132, - 1, - 81, - 8, - 97, - 47, - 32, - 131, - 1, - 82, - 128, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 125, - 97, - 5, - 160, - 132, - 1, - 81, - 9, - 97, - 47, - 64, - 131, - 1, - 82, - 128, - 97, - 47, - 64, - 131, - 1, - 81, - 130, - 3, - 97, - 11, - 32, - 132, - 1, - 81, - 8, - 97, - 47, - 96, - 131, - 1, - 82, - 128, - 129, - 127, - 43, - 11, - 209, - 103, - 49, - 170, - 243, - 73, - 40, - 192, - 102, - 27, - 164, - 51, - 16, - 251, - 191, - 68, - 186, - 164, - 87, - 185, - 128, - 206, - 25, - 175, - 251, - 167, - 49, - 87, - 146, - 164, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 5, - 88, - 125, - 11, - 175, - 134, - 172, - 224, - 143, - 143, - 223, - 154, - 221, - 78, - 71, - 97, - 104, - 239, - 45, - 164, - 33, - 255, - 239, - 195, - 42, - 49, - 249, - 236, - 190, - 168, - 109, - 93, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 47, - 128, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 30, - 66, - 33, - 78, - 169, - 178, - 219, - 51, - 41, - 107, - 165, - 80, - 150, - 129, - 90, - 10, - 109, - 70, - 138, - 247, - 21, - 204, - 250, - 159, - 171, - 147, - 177, - 227, - 112, - 27, - 127, - 98, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 22, - 72, - 204, - 5, - 91, - 17, - 175, - 78, - 15, - 98, - 146, - 61, - 150, - 39, - 227, - 119, - 177, - 212, - 19, - 192, - 134, - 74, - 244, - 150, - 58, - 130, - 111, - 204, - 106, - 2, - 49, - 250, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 47, - 160, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 41, - 96, - 216, - 74, - 149, - 216, - 240, - 15, - 116, - 10, - 61, - 20, - 120, - 254, - 182, - 212, - 177, - 150, - 227, - 75, - 248, - 107, - 98, - 183, - 80, - 65, - 177, - 75, - 56, - 157, - 73, - 206, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 33, - 254, - 97, - 90, - 206, - 153, - 2, - 136, - 65, - 200, - 67, - 147, - 227, - 148, - 53, - 234, - 38, - 103, - 94, - 73, - 79, - 212, - 136, - 98, - 99, - 230, - 254, - 221, - 60, - 186, - 31, - 22, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 47, - 192, - 132, - 1, - 82, - 80, - 97, - 46, - 160, - 130, - 1, - 81, - 129, - 144, - 96, - 1, - 9, - 97, - 47, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 47, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 46, - 224, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 48, - 32, - 131, - 1, - 82, - 128, - 129, - 127, - 5, - 139, - 76, - 84, - 16, - 181, - 93, - 126, - 158, - 88, - 201, - 89, - 142, - 181, - 133, - 126, - 118, - 253, - 254, - 21, - 106, - 158, - 91, - 29, - 134, - 217, - 28, - 0, - 230, - 59, - 68, - 133, - 97, - 5, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 124, - 97, - 5, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 48, - 64, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 42, - 217, - 2, - 30, - 208, - 124, - 66, - 171, - 25, - 247, - 124, - 92, - 242, - 203, - 210, - 222, - 177, - 53, - 234, - 51, - 15, - 27, - 21, - 115, - 189, - 8, - 217, - 147, - 9, - 196, - 187, - 124, - 97, - 5, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 29, - 5, - 246, - 131, - 247, - 186, - 207, - 85, - 188, - 205, - 73, - 90, - 87, - 3, - 203, - 50, - 154, - 218, - 137, - 10, - 240, - 138, - 192, - 210, - 73, - 89, - 89, - 158, - 36, - 200, - 50, - 129, - 97, - 5, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 48, - 96, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 35, - 175, - 64, - 228, - 126, - 47, - 89, - 160, - 56, - 9, - 72, - 74, - 41, - 213, - 227, - 175, - 191, - 16, - 95, - 31, - 161, - 0, - 222, - 139, - 226, - 18, - 149, - 169, - 47, - 167, - 85, - 52, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 12, - 181, - 13, - 142, - 99, - 2, - 70, - 137, - 128, - 70, - 253, - 108, - 87, - 171, - 116, - 173, - 105, - 35, - 137, - 40, - 216, - 184, - 146, - 5, - 97, - 207, - 95, - 234, - 192, - 88, - 170, - 205, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 48, - 128, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 37, - 158, - 177, - 209, - 93, - 46, - 116, - 220, - 26, - 34, - 195, - 34, - 16, - 222, - 135, - 86, - 109, - 122, - 230, - 123, - 204, - 133, - 156, - 225, - 227, - 49, - 23, - 225, - 113, - 203, - 188, - 210, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 7, - 5, - 247, - 144, - 26, - 11, - 163, - 115, - 109, - 255, - 8, - 48, - 168, - 19, - 205, - 199, - 53, - 12, - 231, - 156, - 133, - 43, - 162, - 216, - 99, - 83, - 208, - 255, - 132, - 216, - 11, - 181, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 48, - 160, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 42, - 107, - 190, - 181, - 99, - 50, - 242, - 32, - 195, - 15, - 202, - 172, - 115, - 127, - 216, - 133, - 195, - 89, - 100, - 128, - 240, - 202, - 47, - 240, - 125, - 39, - 51, - 86, - 25, - 17, - 183, - 189, - 97, - 11, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 38, - 160, - 248, - 77, - 118, - 68, - 75, - 94, - 10, - 96, - 248, - 150, - 108, - 198, - 200, - 140, - 9, - 207, - 7, - 19, - 189, - 4, - 75, - 169, - 254, - 108, - 155, - 46, - 139, - 98, - 99, - 183, - 97, - 11, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 48, - 192, - 132, - 1, - 82, - 80, - 97, - 47, - 32, - 130, - 1, - 81, - 97, - 48, - 0, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 48, - 224, - 131, - 1, - 82, - 128, - 129, - 127, - 37, - 128, - 133, - 19, - 32, - 245, - 149, - 202, - 138, - 103, - 156, - 194, - 21, - 125, - 139, - 125, - 72, - 70, - 188, - 142, - 237, - 27, - 37, - 176, - 146, - 214, - 223, - 166, - 75, - 28, - 78, - 31, - 97, - 5, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 226, - 97, - 5, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 128, - 97, - 49, - 0, - 132, - 1, - 82, - 80, - 128, - 129, - 127, - 10, - 227, - 201, - 95, - 192, - 60, - 10, - 95, - 45, - 232, - 168, - 244, - 108, - 3, - 204, - 223, - 223, - 237, - 43, - 185, - 140, - 158, - 74, - 224, - 177, - 11, - 21, - 237, - 164, - 227, - 177, - 226, - 97, - 5, - 160, - 133, - 1, - 81, - 9, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 132, - 127, - 1, - 120, - 41, - 212, - 58, - 163, - 82, - 155, - 165, - 237, - 63, - 72, - 121, - 205, - 28, - 9, - 255, - 159, - 6, - 231, - 22, - 175, - 178, - 188, - 108, - 199, - 40, - 71, - 209, - 39, - 113, - 174, - 97, - 5, - 160, - 136, - 1, - 81, - 9, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 49, - 32, - 132, - 1, - 82, - 80, - 97, - 46, - 224, - 130, - 1, - 81, - 97, - 47, - 224, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 49, - 64, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 11, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 0, - 97, - 5, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 49, - 96, - 132, - 1, - 82, - 80, - 97, - 47, - 128, - 130, - 1, - 81, - 97, - 47, - 160, - 131, - 1, - 81, - 130, - 144, - 130, - 144, - 9, - 144, - 80, - 128, - 97, - 49, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 47, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 49, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 49, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 49, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 32, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 48, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 49, - 0, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 49, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 49, - 64, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 50, - 224, - 132, - 1, - 82, - 129, - 129, - 97, - 49, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 51, - 0, - 132, - 1, - 82, - 129, - 129, - 97, - 47, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 51, - 32, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 51, - 96, - 131, - 1, - 82, - 96, - 32, - 97, - 51, - 128, - 131, - 1, - 82, - 96, - 32, - 97, - 51, - 160, - 131, - 1, - 82, - 97, - 51, - 32, - 130, - 1, - 81, - 97, - 51, - 192, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 51, - 224, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 189, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 52, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 51, - 64, - 133, - 1, - 96, - 192, - 97, - 51, - 96, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 51, - 64, - 130, - 1, - 81, - 96, - 0, - 97, - 47, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 51, - 0, - 134, - 1, - 81, - 9, - 97, - 47, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 49, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 224, - 134, - 1, - 81, - 9, - 97, - 49, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 49, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 192, - 134, - 1, - 81, - 9, - 97, - 49, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 49, - 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 160, - 134, - 1, - 81, - 9, - 97, - 49, - 32, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 49, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 128, - 134, - 1, - 81, - 9, - 97, - 49, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 96, - 134, - 1, - 81, - 9, - 97, - 48, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 64, - 134, - 1, - 81, - 9, - 97, - 48, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 32, - 134, - 1, - 81, - 9, - 97, - 48, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 128, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 50, - 0, - 134, - 1, - 81, - 9, - 97, - 48, - 128, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 0, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 49, - 224, - 134, - 1, - 81, - 9, - 97, - 48, - 0, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 49, - 192, - 134, - 1, - 81, - 9, - 97, - 48, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 48, - 64, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 49, - 160, - 134, - 1, - 81, - 9, - 97, - 48, - 64, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 47, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 49, - 128, - 134, - 1, - 81, - 9, - 97, - 47, - 192, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 47, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 47, - 128, - 134, - 1, - 81, - 9, - 97, - 47, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 47, - 128, - 133, - 1, - 129, - 144, - 82, - 97, - 47, - 160, - 133, - 1, - 81, - 144, - 146, - 80, - 131, - 145, - 80, - 130, - 144, - 8, - 144, - 80, - 129, - 129, - 97, - 47, - 192, - 133, - 1, - 81, - 8, - 97, - 52, - 32, - 132, - 1, - 82, - 80, - 97, - 48, - 0, - 130, - 1, - 81, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 64, - 131, - 1, - 82, - 97, - 48, - 64, - 130, - 1, - 81, - 129, - 129, - 97, - 48, - 96, - 133, - 1, - 81, - 8, - 97, - 52, - 96, - 132, - 1, - 82, - 80, - 97, - 48, - 224, - 130, - 1, - 81, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 128, - 131, - 1, - 82, - 97, - 48, - 128, - 130, - 1, - 81, - 129, - 129, - 97, - 48, - 160, - 133, - 1, - 81, - 8, - 144, - 80, - 129, - 129, - 97, - 48, - 192, - 133, - 1, - 81, - 8, - 97, - 52, - 160, - 132, - 1, - 82, - 80, - 97, - 49, - 64, - 130, - 1, - 81, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 52, - 192, - 131, - 1, - 82, - 97, - 49, - 0, - 130, - 1, - 81, - 129, - 129, - 97, - 49, - 32, - 133, - 1, - 81, - 8, - 97, - 52, - 224, - 132, - 1, - 82, - 80, - 97, - 47, - 224, - 130, - 1, - 81, - 97, - 48, - 32, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 53, - 0, - 131, - 1, - 82, - 97, - 49, - 96, - 130, - 1, - 81, - 128, - 97, - 53, - 32, - 132, - 1, - 82, - 80, - 97, - 52, - 32, - 130, - 1, - 81, - 129, - 129, - 97, - 52, - 96, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 64, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 52, - 224, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 128, - 132, - 1, - 82, - 129, - 129, - 97, - 53, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 53, - 160, - 132, - 1, - 82, - 80, - 96, - 32, - 97, - 53, - 224, - 131, - 1, - 82, - 96, - 32, - 97, - 54, - 0, - 131, - 1, - 82, - 96, - 32, - 97, - 54, - 32, - 131, - 1, - 82, - 97, - 53, - 160, - 130, - 1, - 81, - 97, - 54, - 64, - 131, - 1, - 82, - 127, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 239, - 255, - 255, - 255, - 97, - 54, - 96, - 131, - 1, - 82, - 96, - 0, - 128, - 81, - 96, - 32, - 97, - 79, - 189, - 131, - 57, - 129, - 81, - 145, - 82, - 97, - 54, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 32, - 97, - 53, - 192, - 133, - 1, - 96, - 192, - 97, - 53, - 224, - 135, - 1, - 96, - 5, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 53, - 192, - 130, - 1, - 81, - 96, - 0, - 97, - 53, - 32, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 128, - 134, - 1, - 81, - 9, - 97, - 53, - 32, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 224, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 96, - 134, - 1, - 81, - 9, - 97, - 52, - 224, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 160, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 53, - 64, - 134, - 1, - 81, - 9, - 97, - 52, - 160, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 145, - 80, - 97, - 52, - 96, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 52, - 32, - 134, - 1, - 81, - 9, - 97, - 52, - 96, - 133, - 1, - 82, - 130, - 130, - 130, - 9, - 97, - 52, - 32, - 133, - 1, - 82, - 80, - 80, - 97, - 52, - 96, - 130, - 1, - 81, - 97, - 52, - 64, - 131, - 1, - 81, - 130, - 145, - 144, - 9, - 97, - 54, - 160, - 131, - 1, - 82, - 128, - 97, - 52, - 160, - 131, - 1, - 81, - 97, - 52, - 128, - 132, - 1, - 81, - 9, - 97, - 54, - 192, - 131, - 1, - 82, - 128, - 97, - 52, - 224, - 131, - 1, - 81, - 97, - 52, - 192, - 132, - 1, - 81, - 9, - 97, - 54, - 224, - 131, - 1, - 82, - 128, - 97, - 53, - 32, - 131, - 1, - 81, - 97, - 53, - 0, - 132, - 1, - 81, - 9, - 97, - 55, - 0, - 131, - 1, - 82, - 97, - 10, - 32, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 55, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 55, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 56, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 57, - 0, - 131, - 1, - 82, - 97, - 10, - 128, - 130, - 1, - 81, - 129, - 144, - 128, - 9, - 97, - 57, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 57, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 57, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 57, - 128, - 131, - 1, - 82, - 128, - 97, - 47, - 128, - 131, - 1, - 81, - 97, - 5, - 224, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 47, - 160, - 134, - 1, - 81, - 97, - 6, - 32, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 47, - 192, - 134, - 1, - 81, - 97, - 6, - 160, - 135, - 1, - 81, - 9, - 8, - 97, - 57, - 160, - 132, - 1, - 129, - 144, - 82, - 97, - 52, - 32, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 57, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 57, - 192, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 57, - 224, - 131, - 1, - 82, - 128, - 97, - 47, - 128, - 131, - 1, - 81, - 97, - 6, - 0, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 47, - 160, - 134, - 1, - 81, - 97, - 6, - 64, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 47, - 192, - 134, - 1, - 81, - 97, - 6, - 128, - 135, - 1, - 81, - 9, - 8, - 97, - 58, - 0, - 132, - 1, - 129, - 144, - 82, - 97, - 52, - 32, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 58, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 58, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 32, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 58, - 96, - 131, - 1, - 82, - 128, - 97, - 58, - 64, - 131, - 1, - 81, - 97, - 57, - 224, - 132, - 1, - 81, - 8, - 97, - 58, - 128, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 58, - 128, - 132, - 1, - 81, - 9, - 97, - 58, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 58, - 96, - 132, - 1, - 81, - 9, - 97, - 58, - 192, - 131, - 1, - 82, - 128, - 97, - 52, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 58, - 224, - 131, - 1, - 82, - 128, - 97, - 48, - 64, - 131, - 1, - 81, - 97, - 6, - 96, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 48, - 96, - 134, - 1, - 81, - 97, - 6, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 59, - 0, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 160, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 59, - 32, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 59, - 32, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 59, - 64, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 58, - 224, - 132, - 1, - 81, - 9, - 97, - 59, - 96, - 131, - 1, - 82, - 128, - 97, - 48, - 64, - 131, - 1, - 81, - 97, - 9, - 32, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 48, - 96, - 134, - 1, - 81, - 97, - 9, - 64, - 135, - 1, - 81, - 9, - 8, - 97, - 59, - 128, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 160, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 59, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 59, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 32, - 131, - 1, - 81, - 97, - 58, - 224, - 132, - 1, - 81, - 9, - 97, - 59, - 224, - 131, - 1, - 82, - 128, - 97, - 59, - 192, - 131, - 1, - 81, - 97, - 59, - 64, - 132, - 1, - 81, - 8, - 97, - 60, - 0, - 131, - 1, - 82, - 128, - 97, - 48, - 64, - 131, - 1, - 81, - 97, - 9, - 96, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 48, - 96, - 134, - 1, - 81, - 97, - 9, - 128, - 135, - 1, - 81, - 9, - 8, - 97, - 60, - 32, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 160, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 60, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 60, - 96, - 131, - 1, - 82, - 128, - 97, - 55, - 32, - 131, - 1, - 81, - 97, - 58, - 224, - 132, - 1, - 81, - 9, - 97, - 60, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 96, - 131, - 1, - 81, - 97, - 60, - 0, - 132, - 1, - 81, - 8, - 97, - 60, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 128, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 60, - 192, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 59, - 96, - 132, - 1, - 81, - 9, - 97, - 60, - 224, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 59, - 224, - 132, - 1, - 81, - 9, - 97, - 61, - 0, - 131, - 1, - 82, - 128, - 97, - 10, - 128, - 131, - 1, - 81, - 97, - 60, - 128, - 132, - 1, - 81, - 9, - 97, - 61, - 32, - 131, - 1, - 82, - 128, - 97, - 60, - 192, - 131, - 1, - 81, - 97, - 58, - 160, - 132, - 1, - 81, - 8, - 97, - 61, - 64, - 131, - 1, - 82, - 128, - 97, - 52, - 128, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 61, - 96, - 131, - 1, - 82, - 128, - 97, - 48, - 128, - 131, - 1, - 81, - 97, - 8, - 192, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 48, - 160, - 134, - 1, - 81, - 97, - 8, - 224, - 135, - 1, - 81, - 9, - 8, - 144, - 80, - 129, - 129, - 131, - 97, - 48, - 192, - 134, - 1, - 81, - 97, - 9, - 0, - 135, - 1, - 81, - 9, - 8, - 97, - 61, - 128, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 192, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 61, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 61, - 160, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 61, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 61, - 96, - 132, - 1, - 81, - 9, - 97, - 61, - 224, - 131, - 1, - 82, - 128, - 97, - 57, - 32, - 131, - 1, - 81, - 97, - 61, - 192, - 132, - 1, - 81, - 9, - 97, - 62, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 32, - 131, - 1, - 81, - 97, - 61, - 224, - 132, - 1, - 81, - 9, - 97, - 62, - 32, - 131, - 1, - 82, - 128, - 97, - 62, - 0, - 131, - 1, - 81, - 97, - 61, - 64, - 132, - 1, - 81, - 8, - 97, - 62, - 64, - 131, - 1, - 82, - 128, - 97, - 52, - 192, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 62, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 0, - 131, - 1, - 81, - 97, - 9, - 160, - 132, - 1, - 81, - 9, - 129, - 129, - 131, - 97, - 49, - 32, - 134, - 1, - 81, - 97, - 9, - 192, - 135, - 1, - 81, - 9, - 8, - 97, - 62, - 128, - 132, - 1, - 129, - 144, - 82, - 97, - 54, - 224, - 132, - 1, - 81, - 131, - 146, - 80, - 144, - 9, - 97, - 62, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 160, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 62, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 62, - 96, - 132, - 1, - 81, - 9, - 97, - 62, - 224, - 131, - 1, - 82, - 128, - 97, - 57, - 64, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 9, - 97, - 63, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 64, - 131, - 1, - 81, - 97, - 62, - 224, - 132, - 1, - 81, - 9, - 97, - 63, - 32, - 131, - 1, - 82, - 128, - 97, - 63, - 0, - 131, - 1, - 81, - 97, - 62, - 64, - 132, - 1, - 81, - 8, - 97, - 63, - 64, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 63, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 9, - 224, - 132, - 1, - 81, - 9, - 97, - 63, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 63, - 160, - 132, - 1, - 81, - 131, - 3, - 9, - 97, - 63, - 192, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 63, - 224, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 9, - 97, - 64, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 64, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 64, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 32, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 64, - 96, - 131, - 1, - 82, - 128, - 97, - 64, - 64, - 131, - 1, - 81, - 97, - 63, - 192, - 132, - 1, - 81, - 8, - 97, - 64, - 128, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 0, - 132, - 1, - 81, - 9, - 97, - 64, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 64, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 64, - 224, - 131, - 1, - 82, - 128, - 97, - 55, - 32, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 65, - 0, - 131, - 1, - 82, - 128, - 97, - 64, - 224, - 131, - 1, - 81, - 97, - 64, - 128, - 132, - 1, - 81, - 8, - 97, - 65, - 32, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 32, - 132, - 1, - 81, - 9, - 97, - 65, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 65, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 65, - 128, - 131, - 1, - 82, - 128, - 97, - 55, - 64, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 65, - 160, - 131, - 1, - 82, - 128, - 97, - 65, - 128, - 131, - 1, - 81, - 97, - 65, - 32, - 132, - 1, - 81, - 8, - 97, - 65, - 192, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 64, - 132, - 1, - 81, - 9, - 97, - 65, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 66, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 96, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 66, - 32, - 131, - 1, - 82, - 128, - 97, - 55, - 96, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 66, - 64, - 131, - 1, - 82, - 128, - 97, - 66, - 32, - 131, - 1, - 81, - 97, - 65, - 192, - 132, - 1, - 81, - 8, - 97, - 66, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 96, - 132, - 1, - 81, - 9, - 97, - 66, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 66, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 66, - 192, - 131, - 1, - 82, - 128, - 97, - 55, - 128, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 66, - 224, - 131, - 1, - 82, - 128, - 97, - 66, - 192, - 131, - 1, - 81, - 97, - 66, - 96, - 132, - 1, - 81, - 8, - 97, - 67, - 0, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 128, - 132, - 1, - 81, - 9, - 97, - 67, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 67, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 67, - 96, - 131, - 1, - 82, - 128, - 97, - 55, - 160, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 67, - 128, - 131, - 1, - 82, - 128, - 97, - 67, - 96, - 131, - 1, - 81, - 97, - 67, - 0, - 132, - 1, - 81, - 8, - 97, - 67, - 160, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 160, - 132, - 1, - 81, - 9, - 97, - 67, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 67, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 68, - 0, - 131, - 1, - 82, - 128, - 97, - 55, - 192, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 68, - 32, - 131, - 1, - 82, - 128, - 97, - 68, - 0, - 131, - 1, - 81, - 97, - 67, - 160, - 132, - 1, - 81, - 8, - 97, - 68, - 64, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 192, - 132, - 1, - 81, - 9, - 97, - 68, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 68, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 68, - 160, - 131, - 1, - 82, - 128, - 97, - 55, - 224, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 68, - 192, - 131, - 1, - 82, - 128, - 97, - 68, - 160, - 131, - 1, - 81, - 97, - 68, - 64, - 132, - 1, - 81, - 8, - 97, - 68, - 224, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 0, - 132, - 1, - 81, - 9, - 97, - 69, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 69, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 0, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 69, - 64, - 131, - 1, - 82, - 128, - 97, - 56, - 0, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 69, - 96, - 131, - 1, - 82, - 128, - 97, - 69, - 64, - 131, - 1, - 81, - 97, - 68, - 224, - 132, - 1, - 81, - 8, - 97, - 69, - 128, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 32, - 132, - 1, - 81, - 9, - 97, - 69, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 69, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 32, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 69, - 224, - 131, - 1, - 82, - 128, - 97, - 56, - 32, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 70, - 0, - 131, - 1, - 82, - 128, - 97, - 69, - 224, - 131, - 1, - 81, - 97, - 69, - 128, - 132, - 1, - 81, - 8, - 97, - 70, - 32, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 64, - 132, - 1, - 81, - 9, - 97, - 70, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 70, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 70, - 128, - 131, - 1, - 82, - 128, - 97, - 56, - 64, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 70, - 160, - 131, - 1, - 82, - 128, - 97, - 70, - 128, - 131, - 1, - 81, - 97, - 70, - 32, - 132, - 1, - 81, - 8, - 97, - 70, - 192, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 96, - 132, - 1, - 81, - 9, - 97, - 70, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 71, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 96, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 71, - 32, - 131, - 1, - 82, - 128, - 97, - 56, - 96, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 71, - 64, - 131, - 1, - 82, - 128, - 97, - 71, - 32, - 131, - 1, - 81, - 97, - 70, - 192, - 132, - 1, - 81, - 8, - 97, - 71, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 128, - 132, - 1, - 81, - 9, - 97, - 71, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 71, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 128, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 71, - 192, - 131, - 1, - 82, - 128, - 97, - 56, - 128, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 71, - 224, - 131, - 1, - 82, - 128, - 97, - 71, - 192, - 131, - 1, - 81, - 97, - 71, - 96, - 132, - 1, - 81, - 8, - 97, - 72, - 0, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 8, - 160, - 132, - 1, - 81, - 9, - 97, - 72, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 72, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 160, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 72, - 96, - 131, - 1, - 82, - 128, - 97, - 56, - 160, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 72, - 128, - 131, - 1, - 82, - 128, - 97, - 72, - 96, - 131, - 1, - 81, - 97, - 72, - 0, - 132, - 1, - 81, - 8, - 97, - 72, - 160, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 97, - 45, - 192, - 132, - 1, - 81, - 9, - 97, - 72, - 192, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 97, - 45, - 224, - 132, - 1, - 81, - 9, - 97, - 72, - 224, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 97, - 46, - 0, - 132, - 1, - 81, - 9, - 97, - 73, - 0, - 131, - 1, - 82, - 128, - 97, - 53, - 0, - 131, - 1, - 81, - 97, - 46, - 32, - 132, - 1, - 81, - 9, - 97, - 73, - 32, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 46, - 64, - 132, - 1, - 81, - 9, - 97, - 73, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 73, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 192, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 73, - 128, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 73, - 160, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 72, - 192, - 132, - 1, - 81, - 9, - 97, - 73, - 192, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 72, - 224, - 132, - 1, - 81, - 9, - 97, - 73, - 224, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 73, - 0, - 132, - 1, - 81, - 9, - 97, - 74, - 0, - 131, - 1, - 82, - 128, - 97, - 56, - 192, - 131, - 1, - 81, - 97, - 73, - 32, - 132, - 1, - 81, - 9, - 97, - 74, - 32, - 131, - 1, - 82, - 128, - 97, - 73, - 128, - 131, - 1, - 81, - 97, - 72, - 160, - 132, - 1, - 81, - 8, - 97, - 74, - 64, - 131, - 1, - 82, - 128, - 97, - 49, - 96, - 131, - 1, - 81, - 97, - 7, - 224, - 132, - 1, - 81, - 9, - 97, - 74, - 96, - 131, - 1, - 129, - 144, - 82, - 97, - 55, - 0, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 74, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 74, - 160, - 131, - 1, - 82, - 128, - 97, - 56, - 224, - 131, - 1, - 81, - 97, - 63, - 96, - 132, - 1, - 81, - 9, - 97, - 74, - 192, - 131, - 1, - 82, - 128, - 97, - 74, - 160, - 131, - 1, - 81, - 97, - 74, - 64, - 132, - 1, - 81, - 8, - 97, - 74, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 57, - 96, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 75, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 63, - 224, - 132, - 1, - 81, - 9, - 97, - 75, - 32, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 64, - 96, - 132, - 1, - 81, - 9, - 97, - 75, - 64, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 65, - 0, - 132, - 1, - 81, - 9, - 97, - 75, - 96, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 65, - 160, - 132, - 1, - 81, - 9, - 97, - 75, - 128, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 66, - 64, - 132, - 1, - 81, - 9, - 97, - 75, - 160, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 66, - 224, - 132, - 1, - 81, - 9, - 97, - 75, - 192, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 67, - 128, - 132, - 1, - 81, - 9, - 97, - 75, - 224, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 68, - 32, - 132, - 1, - 81, - 9, - 97, - 76, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 68, - 192, - 132, - 1, - 81, - 9, - 97, - 76, - 32, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 69, - 96, - 132, - 1, - 81, - 9, - 97, - 76, - 64, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 70, - 0, - 132, - 1, - 81, - 9, - 97, - 76, - 96, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 70, - 160, - 132, - 1, - 81, - 9, - 97, - 76, - 128, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 71, - 64, - 132, - 1, - 81, - 9, - 97, - 76, - 160, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 71, - 224, - 132, - 1, - 81, - 9, - 97, - 76, - 192, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 72, - 128, - 132, - 1, - 81, - 9, - 97, - 76, - 224, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 73, - 160, - 132, - 1, - 81, - 9, - 97, - 77, - 0, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 73, - 192, - 132, - 1, - 81, - 9, - 97, - 77, - 32, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 73, - 224, - 132, - 1, - 81, - 9, - 97, - 77, - 64, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 74, - 0, - 132, - 1, - 81, - 9, - 97, - 77, - 96, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 74, - 32, - 132, - 1, - 81, - 9, - 97, - 77, - 128, - 131, - 1, - 82, - 128, - 97, - 57, - 96, - 131, - 1, - 81, - 97, - 74, - 192, - 132, - 1, - 81, - 9, - 97, - 77, - 160, - 131, - 1, - 82, - 128, - 97, - 75, - 0, - 131, - 1, - 81, - 97, - 63, - 64, - 132, - 1, - 81, - 8, - 97, - 77, - 192, - 131, - 1, - 82, - 128, - 97, - 48, - 32, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 77, - 224, - 131, - 1, - 82, - 128, - 97, - 11, - 32, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 78, - 0, - 131, - 1, - 82, - 96, - 1, - 97, - 78, - 32, - 131, - 1, - 129, - 129, - 82, - 96, - 2, - 97, - 78, - 64, - 133, - 1, - 82, - 97, - 77, - 192, - 132, - 1, - 81, - 97, - 78, - 96, - 133, - 1, - 82, - 132, - 145, - 144, - 96, - 64, - 144, - 96, - 96, - 129, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 78, - 32, - 130, - 1, - 81, - 97, - 78, - 128, - 131, - 1, - 82, - 97, - 78, - 64, - 130, - 1, - 81, - 97, - 78, - 160, - 131, - 1, - 82, - 96, - 128, - 130, - 1, - 81, - 97, - 78, - 192, - 131, - 1, - 82, - 96, - 160, - 130, - 1, - 81, - 97, - 78, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 78, - 128, - 133, - 1, - 96, - 128, - 97, - 78, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 96, - 192, - 130, - 1, - 81, - 97, - 79, - 0, - 131, - 1, - 82, - 96, - 224, - 130, - 1, - 81, - 97, - 79, - 32, - 131, - 1, - 82, - 97, - 58, - 192, - 130, - 1, - 81, - 97, - 79, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 79, - 0, - 133, - 1, - 96, - 96, - 97, - 79, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 78, - 128, - 130, - 1, - 81, - 97, - 79, - 96, - 131, - 1, - 82, - 97, - 78, - 160, - 130, - 1, - 81, - 97, - 79, - 128, - 131, - 1, - 82, - 97, - 79, - 0, - 130, - 1, - 81, - 97, - 79, - 160, - 131, - 1, - 82, - 97, - 79, - 32, - 130, - 1, - 81, - 97, - 79, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 79, - 96, - 133, - 1, - 96, - 128, - 97, - 79, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 0, - 130, - 1, - 81, - 97, - 79, - 224, - 131, - 1, - 82, - 97, - 1, - 32, - 130, - 1, - 81, - 97, - 80, - 0, - 131, - 1, - 82, - 97, - 60, - 224, - 130, - 1, - 81, - 97, - 80, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 79, - 224, - 133, - 1, - 96, - 96, - 97, - 79, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 79, - 96, - 130, - 1, - 81, - 97, - 80, - 64, - 131, - 1, - 82, - 97, - 79, - 128, - 130, - 1, - 81, - 97, - 80, - 96, - 131, - 1, - 82, - 97, - 79, - 224, - 130, - 1, - 81, - 97, - 80, - 128, - 131, - 1, - 82, - 97, - 80, - 0, - 130, - 1, - 81, - 97, - 80, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 80, - 64, - 133, - 1, - 96, - 128, - 97, - 80, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 32, - 130, - 1, - 81, - 97, - 80, - 192, - 131, - 1, - 82, - 97, - 3, - 64, - 130, - 1, - 81, - 97, - 80, - 224, - 131, - 1, - 82, - 97, - 61, - 0, - 130, - 1, - 81, - 97, - 81, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 80, - 192, - 133, - 1, - 96, - 96, - 97, - 80, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 80, - 64, - 130, - 1, - 81, - 97, - 81, - 32, - 131, - 1, - 82, - 97, - 80, - 96, - 130, - 1, - 81, - 97, - 81, - 64, - 131, - 1, - 82, - 97, - 80, - 192, - 130, - 1, - 81, - 97, - 81, - 96, - 131, - 1, - 82, - 97, - 80, - 224, - 130, - 1, - 81, - 97, - 81, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 81, - 32, - 133, - 1, - 96, - 128, - 97, - 81, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 96, - 130, - 1, - 81, - 97, - 81, - 160, - 131, - 1, - 82, - 97, - 3, - 128, - 130, - 1, - 81, - 97, - 81, - 192, - 131, - 1, - 82, - 97, - 61, - 32, - 130, - 1, - 81, - 97, - 81, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 81, - 160, - 133, - 1, - 96, - 96, - 97, - 81, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 81, - 32, - 130, - 1, - 81, - 97, - 82, - 0, - 131, - 1, - 82, - 97, - 81, - 64, - 130, - 1, - 81, - 97, - 82, - 32, - 131, - 1, - 82, - 97, - 81, - 160, - 130, - 1, - 81, - 97, - 82, - 64, - 131, - 1, - 82, - 97, - 81, - 192, - 130, - 1, - 81, - 97, - 82, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 82, - 0, - 133, - 1, - 96, - 128, - 97, - 82, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 2, - 224, - 130, - 1, - 81, - 97, - 82, - 128, - 131, - 1, - 82, - 97, - 3, - 0, - 130, - 1, - 81, - 97, - 82, - 160, - 131, - 1, - 82, - 97, - 62, - 32, - 130, - 1, - 81, - 97, - 82, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 82, - 128, - 133, - 1, - 96, - 96, - 97, - 82, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 82, - 0, - 130, - 1, - 81, - 97, - 82, - 224, - 131, - 1, - 82, - 97, - 82, - 32, - 130, - 1, - 81, - 97, - 83, - 0, - 131, - 1, - 82, - 97, - 82, - 128, - 130, - 1, - 81, - 97, - 83, - 32, - 131, - 1, - 82, - 97, - 82, - 160, - 130, - 1, - 81, - 97, - 83, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 82, - 224, - 133, - 1, - 96, - 128, - 97, - 82, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 160, - 130, - 1, - 81, - 97, - 83, - 96, - 131, - 1, - 82, - 97, - 1, - 192, - 130, - 1, - 81, - 97, - 83, - 128, - 131, - 1, - 82, - 97, - 63, - 32, - 130, - 1, - 81, - 97, - 83, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 83, - 96, - 133, - 1, - 96, - 96, - 97, - 83, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 82, - 224, - 130, - 1, - 81, - 97, - 83, - 192, - 131, - 1, - 82, - 97, - 83, - 0, - 130, - 1, - 81, - 97, - 83, - 224, - 131, - 1, - 82, - 97, - 83, - 96, - 130, - 1, - 81, - 97, - 84, - 0, - 131, - 1, - 82, - 97, - 83, - 128, - 130, - 1, - 81, - 97, - 84, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 83, - 192, - 133, - 1, - 96, - 128, - 97, - 83, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 1, - 224, - 130, - 1, - 81, - 97, - 84, - 64, - 131, - 1, - 82, - 97, - 2, - 0, - 130, - 1, - 81, - 97, - 84, - 96, - 131, - 1, - 82, - 97, - 75, - 32, - 130, - 1, - 81, - 97, - 84, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 84, - 64, - 133, - 1, - 96, - 96, - 97, - 84, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 83, - 192, - 130, - 1, - 81, - 97, - 84, - 160, - 131, - 1, - 82, - 97, - 83, - 224, - 130, - 1, - 81, - 97, - 84, - 192, - 131, - 1, - 82, - 97, - 84, - 64, - 130, - 1, - 81, - 97, - 84, - 224, - 131, - 1, - 82, - 97, - 84, - 96, - 130, - 1, - 81, - 97, - 85, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 84, - 160, - 133, - 1, - 96, - 128, - 97, - 84, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 6, - 85, - 214, - 41, - 121, - 220, - 6, - 45, - 193, - 232, - 193, - 83, - 52, - 191, - 23, - 207, - 92, - 126, - 99, - 82, - 33, - 156, - 11, - 208, - 176, - 204, - 3, - 149, - 152, - 217, - 166, - 105, - 97, - 85, - 32, - 131, - 1, - 82, - 127, - 1, - 149, - 137, - 211, - 0, - 47, - 106, - 13, - 237, - 70, - 166, - 144, - 83, - 240, - 192, - 94, - 122, - 124, - 164, - 83, - 57, - 179, - 210, - 186, - 232, - 93, - 0, - 242, - 106, - 192, - 243, - 62, - 97, - 85, - 64, - 131, - 1, - 82, - 97, - 75, - 64, - 130, - 1, - 81, - 97, - 85, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 85, - 32, - 133, - 1, - 96, - 96, - 97, - 85, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 84, - 160, - 130, - 1, - 81, - 97, - 85, - 128, - 131, - 1, - 82, - 97, - 84, - 192, - 130, - 1, - 81, - 97, - 85, - 160, - 131, - 1, - 82, - 97, - 85, - 32, - 130, - 1, - 81, - 97, - 85, - 192, - 131, - 1, - 82, - 97, - 85, - 64, - 130, - 1, - 81, - 97, - 85, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 85, - 128, - 133, - 1, - 96, - 128, - 97, - 85, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 30, - 171, - 153, - 149, - 146, - 56, - 82, - 8, - 180, - 42, - 18, - 220, - 192, - 71, - 118, - 62, - 229, - 207, - 18, - 5, - 46, - 180, - 176, - 217, - 167, - 162, - 134, - 224, - 67, - 243, - 223, - 159, - 97, - 86, - 0, - 131, - 1, - 82, - 127, - 24, - 136, - 126, - 179, - 198, - 70, - 255, - 212, - 150, - 18, - 38, - 201, - 27, - 172, - 150, - 97, - 0, - 71, - 152, - 177, - 252, - 106, - 57, - 196, - 63, - 154, - 109, - 29, - 3, - 118, - 113, - 148, - 97, - 86, - 32, - 131, - 1, - 82, - 97, - 75, - 96, - 130, - 1, - 81, - 97, - 86, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 0, - 133, - 1, - 96, - 96, - 97, - 86, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 85, - 128, - 130, - 1, - 81, - 97, - 86, - 96, - 131, - 1, - 82, - 97, - 85, - 160, - 130, - 1, - 81, - 97, - 86, - 128, - 131, - 1, - 82, - 97, - 86, - 0, - 130, - 1, - 81, - 97, - 86, - 160, - 131, - 1, - 82, - 97, - 86, - 32, - 130, - 1, - 81, - 97, - 86, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 96, - 133, - 1, - 96, - 128, - 97, - 86, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 104, - 6, - 5, - 139, - 2, - 225, - 181, - 233, - 155, - 47, - 46, - 142, - 238, - 97, - 49, - 148, - 248, - 223, - 115, - 72, - 22, - 89, - 245, - 147, - 139, - 170, - 205, - 100, - 228, - 215, - 184, - 97, - 86, - 224, - 131, - 1, - 82, - 127, - 5, - 174, - 129, - 100, - 75, - 36, - 77, - 206, - 234, - 83, - 80, - 168, - 74, - 121, - 203, - 240, - 161, - 153, - 187, - 214, - 193, - 250, - 217, - 136, - 116, - 35, - 248, - 200, - 4, - 142, - 96, - 57, - 97, - 87, - 0, - 131, - 1, - 82, - 97, - 75, - 128, - 130, - 1, - 81, - 97, - 87, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 86, - 224, - 133, - 1, - 96, - 96, - 97, - 86, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 86, - 96, - 130, - 1, - 81, - 97, - 87, - 64, - 131, - 1, - 82, - 97, - 86, - 128, - 130, - 1, - 81, - 97, - 87, - 96, - 131, - 1, - 82, - 97, - 86, - 224, - 130, - 1, - 81, - 97, - 87, - 128, - 131, - 1, - 82, - 97, - 87, - 0, - 130, - 1, - 81, - 97, - 87, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 64, - 133, - 1, - 96, - 128, - 97, - 87, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 4, - 56, - 135, - 63, - 192, - 2, - 49, - 174, - 82, - 126, - 252, - 247, - 77, - 144, - 146, - 245, - 5, - 157, - 250, - 5, - 39, - 92, - 190, - 115, - 129, - 233, - 72, - 254, - 59, - 123, - 97, - 216, - 97, - 87, - 192, - 131, - 1, - 82, - 127, - 3, - 192, - 243, - 20, - 201, - 52, - 3, - 121, - 43, - 168, - 110, - 195, - 132, - 27, - 48, - 128, - 242, - 247, - 205, - 9, - 44, - 107, - 203, - 99, - 44, - 219, - 194, - 18, - 42, - 19, - 205, - 239, - 97, - 87, - 224, - 131, - 1, - 82, - 97, - 75, - 160, - 130, - 1, - 81, - 97, - 88, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 87, - 192, - 133, - 1, - 96, - 96, - 97, - 87, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 87, - 64, - 130, - 1, - 81, - 97, - 88, - 32, - 131, - 1, - 82, - 97, - 87, - 96, - 130, - 1, - 81, - 97, - 88, - 64, - 131, - 1, - 82, - 97, - 87, - 192, - 130, - 1, - 81, - 97, - 88, - 96, - 131, - 1, - 82, - 97, - 87, - 224, - 130, - 1, - 81, - 97, - 88, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 32, - 133, - 1, - 96, - 128, - 97, - 88, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 43, - 18, - 177, - 50, - 166, - 38, - 26, - 214, - 2, - 73, - 20, - 117, - 153, - 202, - 224, - 213, - 179, - 84, - 126, - 81, - 13, - 234, - 187, - 166, - 85, - 38, - 209, - 48, - 240, - 79, - 36, - 2, - 97, - 88, - 160, - 131, - 1, - 82, - 127, - 19, - 227, - 192, - 44, - 224, - 15, - 107, - 126, - 0, - 213, - 176, - 153, - 237, - 165, - 241, - 21, - 89, - 86, - 174, - 131, - 137, - 154, - 45, - 89, - 206, - 252, - 176, - 13, - 173, - 102, - 167, - 246, - 97, - 88, - 192, - 131, - 1, - 82, - 97, - 75, - 192, - 130, - 1, - 81, - 97, - 88, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 88, - 160, - 133, - 1, - 96, - 96, - 97, - 88, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 88, - 32, - 130, - 1, - 81, - 97, - 89, - 0, - 131, - 1, - 82, - 97, - 88, - 64, - 130, - 1, - 81, - 97, - 89, - 32, - 131, - 1, - 82, - 97, - 88, - 160, - 130, - 1, - 81, - 97, - 89, - 64, - 131, - 1, - 82, - 97, - 88, - 192, - 130, - 1, - 81, - 97, - 89, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 0, - 133, - 1, - 96, - 128, - 97, - 89, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 14, - 216, - 51, - 112, - 39, - 126, - 15, - 211, - 94, - 130, - 88, - 221, - 86, - 48, - 206, - 12, - 227, - 73, - 31, - 223, - 126, - 22, - 109, - 41, - 55, - 69, - 99, - 91, - 12, - 196, - 235, - 165, - 97, - 89, - 128, - 131, - 1, - 82, - 127, - 3, - 153, - 78, - 126, - 119, - 173, - 88, - 7, - 43, - 120, - 117, - 119, - 0, - 171, - 11, - 121, - 36, - 127, - 46, - 70, - 43, - 12, - 246, - 165, - 161, - 139, - 96, - 116, - 20, - 192, - 149, - 219, - 97, - 89, - 160, - 131, - 1, - 82, - 97, - 75, - 224, - 130, - 1, - 81, - 97, - 89, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 128, - 133, - 1, - 96, - 96, - 97, - 89, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 0, - 130, - 1, - 81, - 97, - 89, - 224, - 131, - 1, - 82, - 97, - 89, - 32, - 130, - 1, - 81, - 97, - 90, - 0, - 131, - 1, - 82, - 97, - 89, - 128, - 130, - 1, - 81, - 97, - 90, - 32, - 131, - 1, - 82, - 97, - 89, - 160, - 130, - 1, - 81, - 97, - 90, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 89, - 224, - 133, - 1, - 96, - 128, - 97, - 89, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 35, - 186, - 75, - 196, - 155, - 170, - 181, - 99, - 233, - 213, - 191, - 7, - 218, - 35, - 26, - 68, - 150, - 211, - 91, - 107, - 199, - 130, - 219, - 189, - 118, - 19, - 95, - 228, - 76, - 49, - 203, - 207, - 97, - 90, - 96, - 131, - 1, - 82, - 127, - 40, - 184, - 128, - 151, - 231, - 237, - 241, - 178, - 144, - 79, - 108, - 37, - 193, - 227, - 12, - 160, - 227, - 140, - 116, - 165, - 33, - 37, - 178, - 153, - 92, - 76, - 240, - 167, - 80, - 104, - 56, - 84, - 97, - 90, - 128, - 131, - 1, - 82, - 97, - 76, - 0, - 130, - 1, - 81, - 97, - 90, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 90, - 96, - 133, - 1, - 96, - 96, - 97, - 90, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 89, - 224, - 130, - 1, - 81, - 97, - 90, - 192, - 131, - 1, - 82, - 97, - 90, - 0, - 130, - 1, - 81, - 97, - 90, - 224, - 131, - 1, - 82, - 97, - 90, - 96, - 130, - 1, - 81, - 97, - 91, - 0, - 131, - 1, - 82, - 97, - 90, - 128, - 130, - 1, - 81, - 97, - 91, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 90, - 192, - 133, - 1, - 96, - 128, - 97, - 90, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 23, - 220, - 187, - 160, - 187, - 226, - 210, - 69, - 102, - 222, - 98, - 9, - 152, - 246, - 47, - 245, - 78, - 165, - 48, - 42, - 218, - 106, - 235, - 24, - 2, - 139, - 97, - 180, - 220, - 25, - 187, - 211, - 97, - 91, - 64, - 131, - 1, - 82, - 127, - 14, - 31, - 144, - 128, - 7, - 165, - 194, - 204, - 147, - 68, - 38, - 194, - 109, - 231, - 32, - 108, - 83, - 250, - 16, - 199, - 157, - 99, - 239, - 82, - 238, - 145, - 191, - 181, - 104, - 199, - 47, - 189, - 97, - 91, - 96, - 131, - 1, - 82, - 97, - 76, - 32, - 130, - 1, - 81, - 97, - 91, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 91, - 64, - 133, - 1, - 96, - 96, - 97, - 91, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 90, - 192, - 130, - 1, - 81, - 97, - 91, - 160, - 131, - 1, - 82, - 97, - 90, - 224, - 130, - 1, - 81, - 97, - 91, - 192, - 131, - 1, - 82, - 97, - 91, - 64, - 130, - 1, - 81, - 97, - 91, - 224, - 131, - 1, - 82, - 97, - 91, - 96, - 130, - 1, - 81, - 97, - 92, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 91, - 160, - 133, - 1, - 96, - 128, - 97, - 91, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 44, - 120, - 35, - 249, - 156, - 178, - 173, - 183, - 22, - 190, - 203, - 150, - 9, - 20, - 255, - 161, - 214, - 226, - 242, - 87, - 135, - 95, - 221, - 3, - 194, - 190, - 229, - 46, - 245, - 113, - 212, - 30, - 97, - 92, - 32, - 131, - 1, - 82, - 127, - 9, - 171, - 131, - 235, - 198, - 128, - 62, - 101, - 178, - 230, - 131, - 28, - 135, - 6, - 217, - 161, - 52, - 246, - 177, - 207, - 111, - 110, - 197, - 194, - 105, - 122, - 254, - 224, - 149, - 50, - 14, - 225, - 97, - 92, - 64, - 131, - 1, - 82, - 97, - 76, - 64, - 130, - 1, - 81, - 97, - 92, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 92, - 32, - 133, - 1, - 96, - 96, - 97, - 92, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 91, - 160, - 130, - 1, - 81, - 97, - 92, - 128, - 131, - 1, - 82, - 97, - 91, - 192, - 130, - 1, - 81, - 97, - 92, - 160, - 131, - 1, - 82, - 97, - 92, - 32, - 130, - 1, - 81, - 97, - 92, - 192, - 131, - 1, - 82, - 97, - 92, - 64, - 130, - 1, - 81, - 97, - 92, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 92, - 128, - 133, - 1, - 96, - 128, - 97, - 92, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 45, - 193, - 44, - 32, - 81, - 82, - 191, - 172, - 195, - 84, - 200, - 56, - 34, - 85, - 113, - 23, - 44, - 33, - 94, - 1, - 166, - 77, - 230, - 162, - 202, - 102, - 101, - 199, - 9, - 55, - 172, - 88, - 97, - 93, - 0, - 131, - 1, - 82, - 127, - 4, - 73, - 235, - 82, - 159, - 0, - 56, - 162, - 189, - 47, - 108, - 11, - 98, - 19, - 167, - 4, - 136, - 182, - 155, - 71, - 157, - 144, - 169, - 83, - 87, - 158, - 76, - 157, - 69, - 98, - 27, - 133, - 97, - 93, - 32, - 131, - 1, - 82, - 97, - 76, - 96, - 130, - 1, - 81, - 97, - 93, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 0, - 133, - 1, - 96, - 96, - 97, - 93, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 92, - 128, - 130, - 1, - 81, - 97, - 93, - 96, - 131, - 1, - 82, - 97, - 92, - 160, - 130, - 1, - 81, - 97, - 93, - 128, - 131, - 1, - 82, - 97, - 93, - 0, - 130, - 1, - 81, - 97, - 93, - 160, - 131, - 1, - 82, - 97, - 93, - 32, - 130, - 1, - 81, - 97, - 93, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 96, - 133, - 1, - 96, - 128, - 97, - 93, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 9, - 162, - 171, - 57, - 19, - 164, - 119, - 15, - 213, - 15, - 107, - 169, - 236, - 76, - 224, - 179, - 23, - 139, - 84, - 215, - 191, - 202, - 91, - 66, - 254, - 126, - 142, - 28, - 229, - 207, - 96, - 169, - 97, - 93, - 224, - 131, - 1, - 82, - 127, - 19, - 236, - 49, - 249, - 64, - 38, - 86, - 156, - 75, - 183, - 110, - 44, - 76, - 234, - 163, - 230, - 82, - 84, - 56, - 255, - 180, - 167, - 166, - 156, - 222, - 97, - 246, - 215, - 123, - 147, - 186, - 215, - 97, - 94, - 0, - 131, - 1, - 82, - 97, - 76, - 128, - 130, - 1, - 81, - 97, - 94, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 93, - 224, - 133, - 1, - 96, - 96, - 97, - 93, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 93, - 96, - 130, - 1, - 81, - 97, - 94, - 64, - 131, - 1, - 82, - 97, - 93, - 128, - 130, - 1, - 81, - 97, - 94, - 96, - 131, - 1, - 82, - 97, - 93, - 224, - 130, - 1, - 81, - 97, - 94, - 128, - 131, - 1, - 82, - 97, - 94, - 0, - 130, - 1, - 81, - 97, - 94, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 64, - 133, - 1, - 96, - 128, - 97, - 94, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 7, - 67, - 234, - 64, - 241, - 64, - 132, - 219, - 38, - 115, - 33, - 114, - 131, - 170, - 5, - 63, - 152, - 104, - 150, - 238, - 124, - 24, - 31, - 82, - 17, - 132, - 66, - 233, - 156, - 69, - 41, - 116, - 97, - 94, - 192, - 131, - 1, - 82, - 127, - 2, - 3, - 227, - 73, - 58, - 37, - 148, - 236, - 229, - 125, - 34, - 204, - 117, - 221, - 8, - 26, - 198, - 130, - 113, - 236, - 124, - 117, - 129, - 83, - 207, - 210, - 21, - 43, - 251, - 92, - 25, - 227, - 97, - 94, - 224, - 131, - 1, - 82, - 97, - 76, - 160, - 130, - 1, - 81, - 97, - 95, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 94, - 192, - 133, - 1, - 96, - 96, - 97, - 94, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 94, - 64, - 130, - 1, - 81, - 97, - 95, - 32, - 131, - 1, - 82, - 97, - 94, - 96, - 130, - 1, - 81, - 97, - 95, - 64, - 131, - 1, - 82, - 97, - 94, - 192, - 130, - 1, - 81, - 97, - 95, - 96, - 131, - 1, - 82, - 97, - 94, - 224, - 130, - 1, - 81, - 97, - 95, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 95, - 32, - 133, - 1, - 96, - 128, - 97, - 95, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 2, - 169, - 167, - 125, - 142, - 111, - 111, - 216, - 159, - 51, - 186, - 86, - 254, - 69, - 246, - 245, - 201, - 7, - 229, - 11, - 162, - 140, - 221, - 65, - 152, - 172, - 251, - 86, - 46, - 178, - 17, - 3, - 97, - 95, - 160, - 131, - 1, - 82, - 127, - 35, - 171, - 238, - 104, - 216, - 60, - 45, - 102, - 50, - 87, - 110, - 94, - 149, - 202, - 1, - 166, - 30, - 94, - 62, - 109, - 148, - 56, - 194, - 172, - 100, - 40, - 200, - 182, - 237, - 254, - 42, - 186, - 97, - 95, - 192, - 131, - 1, - 82, - 97, - 76, - 192, - 130, - 1, - 81, - 97, - 95, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 95, - 160, - 133, - 1, - 96, - 96, - 97, - 95, - 160, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 95, - 32, - 130, - 1, - 81, - 97, - 96, - 0, - 131, - 1, - 82, - 97, - 95, - 64, - 130, - 1, - 81, - 97, - 96, - 32, - 131, - 1, - 82, - 97, - 95, - 160, - 130, - 1, - 81, - 97, - 96, - 64, - 131, - 1, - 82, - 97, - 95, - 192, - 130, - 1, - 81, - 97, - 96, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 0, - 133, - 1, - 96, - 128, - 97, - 96, - 0, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 44, - 243, - 109, - 54, - 191, - 172, - 190, - 26, - 141, - 140, - 98, - 106, - 239, - 167, - 90, - 192, - 254, - 180, - 107, - 114, - 89, - 137, - 168, - 230, - 250, - 190, - 208, - 116, - 191, - 159, - 106, - 247, - 97, - 96, - 128, - 131, - 1, - 82, - 127, - 6, - 15, - 222, - 211, - 237, - 94, - 197, - 109, - 158, - 0, - 100, - 215, - 60, - 71, - 34, - 69, - 164, - 196, - 182, - 236, - 55, - 30, - 152, - 8, - 105, - 43, - 247, - 242, - 89, - 211, - 183, - 48, - 97, - 96, - 160, - 131, - 1, - 82, - 97, - 76, - 224, - 130, - 1, - 81, - 97, - 96, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 128, - 133, - 1, - 96, - 96, - 97, - 96, - 128, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 96, - 0, - 130, - 1, - 81, - 97, - 96, - 224, - 131, - 1, - 82, - 97, - 96, - 32, - 130, - 1, - 81, - 97, - 97, - 0, - 131, - 1, - 82, - 97, - 96, - 128, - 130, - 1, - 81, - 97, - 97, - 32, - 131, - 1, - 82, - 97, - 96, - 160, - 130, - 1, - 81, - 97, - 97, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 96, - 224, - 133, - 1, - 96, - 128, - 97, - 96, - 224, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 64, - 130, - 1, - 81, - 97, - 97, - 96, - 131, - 1, - 82, - 97, - 4, - 96, - 130, - 1, - 81, - 97, - 97, - 128, - 131, - 1, - 82, - 97, - 77, - 0, - 130, - 1, - 81, - 97, - 97, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 97, - 96, - 133, - 1, - 96, - 96, - 97, - 97, - 96, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 96, - 224, - 130, - 1, - 81, - 97, - 97, - 192, - 131, - 1, - 82, - 97, - 97, - 0, - 130, - 1, - 81, - 97, - 97, - 224, - 131, - 1, - 82, - 97, - 97, - 96, - 130, - 1, - 81, - 97, - 98, - 0, - 131, - 1, - 82, - 97, - 97, - 128, - 130, - 1, - 81, - 97, - 98, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 97, - 192, - 133, - 1, - 96, - 128, - 97, - 97, - 192, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 128, - 130, - 1, - 81, - 97, - 98, - 64, - 131, - 1, - 82, - 97, - 4, - 160, - 130, - 1, - 81, - 97, - 98, - 96, - 131, - 1, - 82, - 97, - 77, - 32, - 130, - 1, - 81, - 97, - 98, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 98, - 64, - 133, - 1, - 96, - 96, - 97, - 98, - 64, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 97, - 192, - 130, - 1, - 81, - 97, - 98, - 160, - 131, - 1, - 82, - 97, - 97, - 224, - 130, - 1, - 81, - 97, - 98, - 192, - 131, - 1, - 82, - 97, - 98, - 64, - 130, - 1, - 81, - 97, - 98, - 224, - 131, - 1, - 82, - 97, - 98, - 96, - 130, - 1, - 81, - 97, - 99, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 98, - 160, - 133, - 1, - 96, - 128, - 97, - 98, - 160, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 4, - 192, - 130, - 1, - 81, - 97, - 99, - 32, - 131, - 1, - 82, - 97, - 4, - 224, - 130, - 1, - 81, - 97, - 99, - 64, - 131, - 1, - 82, - 97, - 77, - 64, - 130, - 1, - 81, - 97, - 99, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 32, - 133, - 1, - 96, - 96, - 97, - 99, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 98, - 160, - 130, - 1, - 81, - 97, - 99, - 128, - 131, - 1, - 82, - 97, - 98, - 192, - 130, - 1, - 81, - 97, - 99, - 160, - 131, - 1, - 82, - 97, - 99, - 32, - 130, - 1, - 81, - 97, - 99, - 192, - 131, - 1, - 82, - 97, - 99, - 64, - 130, - 1, - 81, - 97, - 99, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 128, - 133, - 1, - 96, - 128, - 97, - 99, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 0, - 130, - 1, - 81, - 97, - 100, - 0, - 131, - 1, - 82, - 97, - 5, - 32, - 130, - 1, - 81, - 97, - 100, - 32, - 131, - 1, - 82, - 97, - 77, - 96, - 130, - 1, - 81, - 97, - 100, - 64, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 0, - 133, - 1, - 96, - 96, - 97, - 100, - 0, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 99, - 128, - 130, - 1, - 81, - 97, - 100, - 96, - 131, - 1, - 82, - 97, - 99, - 160, - 130, - 1, - 81, - 97, - 100, - 128, - 131, - 1, - 82, - 97, - 100, - 0, - 130, - 1, - 81, - 97, - 100, - 160, - 131, - 1, - 82, - 97, - 100, - 32, - 130, - 1, - 81, - 97, - 100, - 192, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 96, - 133, - 1, - 96, - 128, - 97, - 100, - 96, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 5, - 64, - 130, - 1, - 81, - 97, - 100, - 224, - 131, - 1, - 82, - 97, - 5, - 96, - 130, - 1, - 81, - 97, - 101, - 0, - 131, - 1, - 82, - 97, - 77, - 128, - 130, - 1, - 81, - 97, - 101, - 32, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 100, - 224, - 133, - 1, - 96, - 96, - 97, - 100, - 224, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 100, - 96, - 130, - 1, - 81, - 97, - 101, - 64, - 131, - 1, - 82, - 97, - 100, - 128, - 130, - 1, - 81, - 97, - 101, - 96, - 131, - 1, - 82, - 97, - 100, - 224, - 130, - 1, - 81, - 97, - 101, - 128, - 131, - 1, - 82, - 97, - 101, - 0, - 130, - 1, - 81, - 97, - 101, - 160, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 101, - 64, - 133, - 1, - 96, - 128, - 97, - 101, - 64, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 3, - 160, - 130, - 1, - 81, - 97, - 101, - 192, - 131, - 1, - 82, - 97, - 3, - 192, - 130, - 1, - 81, - 97, - 101, - 224, - 131, - 1, - 82, - 97, - 77, - 160, - 130, - 1, - 81, - 97, - 102, - 0, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 101, - 192, - 133, - 1, - 96, - 96, - 97, - 101, - 192, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 101, - 64, - 130, - 1, - 81, - 97, - 102, - 32, - 131, - 1, - 82, - 97, - 101, - 96, - 130, - 1, - 81, - 97, - 102, - 64, - 131, - 1, - 82, - 97, - 101, - 192, - 130, - 1, - 81, - 97, - 102, - 96, - 131, - 1, - 82, - 97, - 101, - 224, - 130, - 1, - 81, - 97, - 102, - 128, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 102, - 32, - 133, - 1, - 96, - 128, - 97, - 102, - 32, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 10, - 192, - 130, - 1, - 81, - 97, - 102, - 160, - 131, - 1, - 82, - 97, - 10, - 224, - 130, - 1, - 81, - 97, - 102, - 192, - 131, - 1, - 82, - 97, - 77, - 224, - 130, - 1, - 81, - 129, - 3, - 97, - 102, - 224, - 131, - 1, - 82, - 80, - 129, - 96, - 1, - 96, - 64, - 97, - 102, - 160, - 132, - 1, - 96, - 96, - 97, - 102, - 160, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 102, - 32, - 129, - 1, - 81, - 97, - 103, - 0, - 130, - 1, - 82, - 97, - 102, - 64, - 129, - 1, - 81, - 97, - 103, - 32, - 130, - 1, - 82, - 97, - 102, - 160, - 129, - 1, - 81, - 97, - 103, - 64, - 130, - 1, - 82, - 97, - 102, - 192, - 129, - 1, - 81, - 97, - 103, - 96, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 103, - 0, - 132, - 1, - 96, - 128, - 97, - 103, - 0, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 11, - 96, - 129, - 1, - 81, - 97, - 103, - 128, - 130, - 1, - 82, - 97, - 11, - 128, - 129, - 1, - 81, - 97, - 103, - 160, - 130, - 1, - 82, - 97, - 78, - 0, - 129, - 1, - 81, - 97, - 103, - 192, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 103, - 128, - 132, - 1, - 96, - 96, - 97, - 103, - 128, - 134, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 103, - 0, - 129, - 1, - 81, - 97, - 103, - 224, - 130, - 1, - 82, - 97, - 103, - 32, - 129, - 1, - 81, - 97, - 104, - 0, - 130, - 1, - 82, - 97, - 103, - 128, - 129, - 1, - 81, - 97, - 104, - 32, - 130, - 1, - 82, - 97, - 103, - 160, - 129, - 1, - 81, - 97, - 104, - 64, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 64, - 97, - 103, - 224, - 132, - 1, - 96, - 128, - 97, - 103, - 224, - 134, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 145, - 80, - 97, - 103, - 224, - 129, - 1, - 81, - 97, - 104, - 96, - 130, - 1, - 82, - 97, - 104, - 0, - 129, - 1, - 81, - 97, - 104, - 128, - 130, - 1, - 82, - 127, - 25, - 142, - 147, - 147, - 146, - 13, - 72, - 58, - 114, - 96, - 191, - 183, - 49, - 251, - 93, - 37, - 241, - 170, - 73, - 51, - 53, - 169, - 231, - 18, - 151, - 228, - 133, - 183, - 174, - 243, - 18, - 194, - 97, - 104, - 160, - 130, - 1, - 82, - 127, - 24, - 0, - 222, - 239, - 18, - 31, - 30, - 118, - 66, - 106, - 0, - 102, - 94, - 92, - 68, - 121, - 103, - 67, - 34, - 212, - 247, - 94, - 218, - 221, - 70, - 222, - 189, - 92, - 217, - 146, - 246, - 237, - 97, - 104, - 192, - 130, - 1, - 82, - 127, - 9, - 6, - 137, - 208, - 88, - 95, - 240, - 117, - 236, - 158, - 153, - 173, - 105, - 12, - 51, - 149, - 188, - 75, - 49, - 51, - 112, - 179, - 142, - 243, - 85, - 172, - 218, - 220, - 209, - 34, - 151, - 91, - 97, - 104, - 224, - 130, - 1, - 82, - 127, - 18, - 200, - 94, - 165, - 219, - 140, - 109, - 235, - 74, - 171, - 113, - 128, - 141, - 203, - 64, - 143, - 227, - 209, - 231, - 105, - 12, - 67, - 211, - 123, - 76, - 230, - 204, - 1, - 102, - 250, - 125, - 170, - 97, - 105, - 0, - 130, - 1, - 82, - 97, - 11, - 96, - 129, - 1, - 81, - 97, - 105, - 32, - 130, - 1, - 82, - 97, - 11, - 128, - 129, - 1, - 81, - 97, - 105, - 64, - 130, - 1, - 82, - 127, - 38, - 24, - 106, - 45, - 101, - 238, - 77, - 47, - 156, - 154, - 91, - 145, - 248, - 101, - 151, - 211, - 95, - 25, - 44, - 209, - 32, - 202, - 247, - 233, - 53, - 216, - 68, - 61, - 25, - 56, - 226, - 61, - 97, - 105, - 96, - 130, - 1, - 82, - 127, - 48, - 68, - 31, - 209, - 181, - 211, - 55, - 4, - 130, - 196, - 33, - 82, - 168, - 137, - 144, - 39, - 113, - 105, - 137, - 166, - 153, - 108, - 37, - 53, - 188, - 159, - 127, - 238, - 138, - 174, - 247, - 158, - 97, - 105, - 128, - 130, - 1, - 82, - 127, - 22, - 243, - 99, - 241, - 3, - 200, - 13, - 123, - 188, - 138, - 211, - 198, - 134, - 126, - 8, - 34, - 187, - 198, - 0, - 11, - 233, - 26, - 70, - 137, - 117, - 92, - 125, - 244, - 2, - 33, - 193, - 69, - 97, - 105, - 160, - 130, - 1, - 82, - 127, - 43, - 28, - 187, - 62, - 82, - 30, - 223, - 90, - 98, - 45, - 130, - 118, - 42, - 68, - 165, - 230, - 63, - 30, - 80, - 179, - 50, - 215, - 17, - 84, - 164, - 167, - 149, - 141, - 96, - 17, - 222, - 255, - 97, - 105, - 192, - 130, - 1, - 82, - 129, - 96, - 1, - 96, - 32, - 97, - 104, - 96, - 132, - 1, - 97, - 1, - 128, - 97, - 104, - 96, - 134, - 1, - 96, - 8, - 90, - 250, - 97, - 104, - 96, - 147, - 144, - 147, - 1, - 81, - 96, - 1, - 20, - 146, - 20, - 22, - 22, - 145, - 80, - 80, - 146, - 145, - 80, - 80, - 86, - 91, - 96, - 64, - 81, - 128, - 97, - 105, - 192, - 1, - 96, - 64, - 82, - 128, - 97, - 3, - 78, - 144, - 96, - 32, - 130, - 2, - 128, - 54, - 131, - 55, - 80, - 145, - 146, - 145, - 80, - 80, - 86, - 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 65, - 96, - 4, - 82, - 96, - 36, - 96, - 0, - 253, - 91, - 96, - 64, - 81, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, - 97, - 78, - 92, - 87, - 97, - 78, - 92, - 97, - 78, - 29, - 86, - 91, - 96, - 64, - 82, - 145, - 144, - 80, - 86, - 91, - 96, - 0, - 130, - 96, - 31, - 131, - 1, - 18, - 97, - 78, - 117, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, - 97, - 78, - 143, - 87, - 97, - 78, - 143, - 97, - 78, - 29, - 86, - 91, - 97, - 78, - 162, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, - 96, - 32, - 1, - 97, - 78, - 51, - 86, - 91, - 129, - 129, - 82, - 132, - 96, - 32, - 131, - 134, - 1, - 1, - 17, - 21, - 97, - 78, - 183, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 96, - 32, - 133, - 1, - 96, - 32, - 131, - 1, - 55, - 96, - 0, - 145, - 129, - 1, - 96, - 32, - 1, - 145, - 144, - 145, - 82, - 147, - 146, - 80, - 80, - 80, - 86, - 91, - 96, - 0, - 128, - 96, - 64, - 131, - 133, - 3, - 18, - 21, - 97, - 78, - 231, - 87, - 96, - 0, - 128, - 253, - 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 78, - 255, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 133, - 1, - 145, - 80, - 133, - 96, - 31, - 131, - 1, - 18, - 97, - 79, - 19, - 87, - 96, - 0, - 128, - 253, - 91, - 129, - 53, - 96, - 32, - 130, - 130, - 17, - 21, - 97, - 79, - 39, - 87, - 97, - 79, - 39, - 97, - 78, - 29, - 86, - 91, - 129, - 96, - 5, - 27, - 97, - 79, - 54, - 130, - 130, - 1, - 97, - 78, - 51, - 86, - 91, - 146, - 131, - 82, - 132, - 129, - 1, - 130, - 1, - 146, - 130, - 129, - 1, - 144, - 138, - 133, - 17, - 21, - 97, - 79, - 80, - 87, - 96, - 0, - 128, - 253, - 91, - 149, - 131, - 1, - 149, - 91, - 132, - 135, - 16, - 21, - 97, - 79, - 110, - 87, - 134, - 53, - 130, - 82, - 149, - 131, - 1, - 149, - 144, - 131, - 1, - 144, - 97, - 79, - 85, - 86, - 91, - 151, - 80, - 80, - 80, - 134, - 1, - 53, - 146, - 80, - 80, - 128, - 130, - 17, - 21, - 97, - 79, - 133, - 87, - 96, - 0, - 128, - 253, - 91, - 80, - 97, - 79, - 146, - 133, - 130, - 134, - 1, - 97, - 78, - 100, - 86, - 91, - 145, - 80, - 80, - 146, - 80, - 146, - 144, - 80, - 86, - 254, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 151, - 129, - 106, - 145, - 104, - 113, - 202, - 141, - 60, - 32, - 140, - 22, - 216, - 124, - 253, - 71, - 48, - 100, - 78, - 114, - 225, - 49, - 160, - 41, - 184, - 80, - 69, - 182, - 129, - 129, - 88, - 93, - 40, - 51, - 232, - 72, - 121, - 185, - 112, - 145, - 67, - 225, - 245, - 147, - 240, - 0, - 0, - 1, - 162, - 100, - 105, - 112, - 102, - 115, - 88, - 34, - 18, - 32, - 212, - 178, - 220, - 135, - 152, - 186, - 177, - 123, - 101, - 162, - 231, - 44, - 60, - 209, - 59, - 7, - 180, - 165, - 138, - 174, - 54, - 106, - 119, - 120, - 72, - 82, - 51, - 60, - 117, - 170, - 120, - 185, - 100, - 115, - 111, - 108, - 99, - 67, - 0, - 8, - 18, - 0, - 51, - ]; - ///The deployed bytecode of the contract. - pub static SOLVENCYVERIFIER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __DEPLOYED_BYTECODE, - ); - pub struct SolvencyVerifier(::ethers::contract::Contract); - impl ::core::clone::Clone for SolvencyVerifier { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for SolvencyVerifier { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for SolvencyVerifier { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for SolvencyVerifier { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(stringify!(SolvencyVerifier)).field(&self.address()).finish() - } - } - impl SolvencyVerifier { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - SOLVENCYVERIFIER_ABI.clone(), - client, - ), - ) - } - /// Constructs the general purpose `Deployer` instance based on the provided constructor arguments and sends it. - /// Returns a new instance of a deployer that returns an instance of this contract after sending the transaction - /// - /// Notes: - /// - If there are no constructor arguments, you should pass `()` as the argument. - /// - The default poll duration is 7 seconds. - /// - The default number of confirmations is 1 block. - /// - /// - /// # Example - /// - /// Generate contract bindings with `abigen!` and deploy a new contract instance. - /// - /// *Note*: this requires a `bytecode` and `abi` object in the `greeter.json` artifact. - /// - /// ```ignore - /// # async fn deploy(client: ::std::sync::Arc) { - /// abigen!(Greeter, "../greeter.json"); - /// - /// let greeter_contract = Greeter::deploy(client, "Hello world!".to_string()).unwrap().send().await.unwrap(); - /// let msg = greeter_contract.greet().call().await.unwrap(); - /// # } - /// ``` - pub fn deploy( - client: ::std::sync::Arc, - constructor_args: T, - ) -> ::core::result::Result< - ::ethers::contract::builders::ContractDeployer, - ::ethers::contract::ContractError, - > { - let factory = ::ethers::contract::ContractFactory::new( - SOLVENCYVERIFIER_ABI.clone(), - SOLVENCYVERIFIER_BYTECODE.clone().into(), - client, - ); - let deployer = factory.deploy(constructor_args)?; - let deployer = ::ethers::contract::ContractDeployer::new(deployer); - Ok(deployer) - } - ///Calls the contract's `verify` (0xbd205a90) function - pub fn verify( - &self, - pub_inputs: ::std::vec::Vec<::ethers::core::types::U256>, - proof: ::ethers::core::types::Bytes, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([189, 32, 90, 144], (pub_inputs, proof)) - .expect("method not found (this should never happen)") - } - } - impl From<::ethers::contract::Contract> - for SolvencyVerifier { - fn from(contract: ::ethers::contract::Contract) -> Self { - Self::new(contract.address(), contract.client()) - } - } - ///Container type for all input parameters for the `verify` function with signature `verify(uint256[],bytes)` and selector `0xbd205a90` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall(name = "verify", abi = "verify(uint256[],bytes)")] - pub struct VerifyCall { - pub pub_inputs: ::std::vec::Vec<::ethers::core::types::U256>, - pub proof: ::ethers::core::types::Bytes, - } - ///Container type for all return fields from the `verify` function with signature `verify(uint256[],bytes)` and selector `0xbd205a90` - #[derive( - Clone, - ::ethers::contract::EthAbiType, - ::ethers::contract::EthAbiCodec, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - pub struct VerifyReturn(pub bool); -} diff --git a/backend/src/contracts/generated/summa_contract.rs b/backend/src/contracts/generated/summa_contract.rs index 7b33fdba..dc13985c 100644 --- a/backend/src/contracts/generated/summa_contract.rs +++ b/backend/src/contracts/generated/summa_contract.rs @@ -11,14 +11,14 @@ pub use summa::*; )] pub mod summa { #[rustfmt::skip] - const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_solvencyVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"contract IVerifier\",\"name\":\"_inclusionVerifier\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"AddressOwnershipProofSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[],\"indexed\":false},{\"internalType\":\"struct Summa.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"assetName\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"SolvencyProofSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"addressOwnershipProofs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"mstRoots\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"ownershipProofByAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"_addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitProofOfAddressOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"struct Summa.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"assetName\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\",\"components\":[]}]},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitProofOfSolvency\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"publicInputs\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyInclusionProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"publicInputs\",\"type\":\"uint256[]\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifySolvencyProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; + const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_inclusionVerifier\",\"type\":\"address\",\"components\":[]},{\"internalType\":\"uint16\",\"name\":\"mstLevels\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint16\",\"name\":\"currenciesCount\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"AddressOwnershipProofSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[],\"indexed\":false},{\"internalType\":\"uint256[]\",\"name\":\"rootBalances\",\"type\":\"uint256[]\",\"components\":[],\"indexed\":false},{\"internalType\":\"struct Summa.Cryptocurrency[]\",\"name\":\"cryptocurrencies\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"LiabilitiesCommitmentSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"addressOwnershipProofs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"config\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"mstLevels\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint16\",\"name\":\"currenciesCount\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"addressHash\",\"type\":\"bytes32\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getAddressOwnershipProof\",\"outputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"rootBalances\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"struct Summa.Cryptocurrency[]\",\"name\":\"cryptocurrencies\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]}]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitCommitment\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"_addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitProofOfAddressOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"publicInputs\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyInclusionProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; ///The parsed JSON ABI of the contract. pub static SUMMA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(|| ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid")); #[rustfmt::skip] const __BYTECODE: &[u8] = &[ 96, - 192, + 160, 96, 64, 82, @@ -41,15 +41,15 @@ pub mod summa { 81, 98, 0, - 22, - 243, + 28, + 249, 56, 3, 128, 98, 0, - 22, - 243, + 28, + 249, 131, 57, 129, @@ -66,8 +66,8 @@ pub mod summa { 145, 98, 0, - 0, - 196, + 1, + 16, 86, 91, 98, @@ -78,7 +78,7 @@ pub mod summa { 98, 0, 0, - 87, + 168, 86, 91, 96, @@ -89,20 +89,101 @@ pub mod summa { 160, 27, 3, - 145, - 130, + 147, + 144, + 147, 22, 96, 128, 82, + 96, + 64, + 128, + 81, + 96, + 96, + 129, + 1, + 130, + 82, + 97, + 255, + 255, + 147, + 132, + 22, + 128, + 130, + 82, + 146, + 144, + 147, 22, 96, - 160, + 32, + 132, + 1, + 129, + 144, + 82, + 96, + 255, + 144, + 148, + 22, + 146, + 1, + 130, + 144, 82, + 96, + 1, + 128, + 84, + 99, + 255, + 255, + 255, + 255, + 25, + 22, + 144, + 145, + 23, 98, + 1, 0, 0, - 252, + 144, + 147, + 2, + 146, + 144, + 146, + 23, + 96, + 255, + 96, + 32, + 27, + 25, + 22, + 100, + 1, + 0, + 0, + 0, + 0, + 144, + 145, + 2, + 23, + 144, + 85, + 98, + 0, + 1, + 129, 86, 91, 96, @@ -187,22 +268,17 @@ pub mod summa { 91, 128, 81, - 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, + 97, + 255, + 255, 129, 22, 129, 20, 98, 0, - 0, - 191, + 1, + 11, 87, 96, 0, @@ -218,91 +294,138 @@ pub mod summa { 0, 128, 96, - 64, - 131, + 0, + 128, + 96, + 128, 133, + 135, 3, 18, 21, 98, 0, - 0, - 216, + 1, + 39, 87, 96, 0, 128, 253, 91, + 132, + 81, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, 98, 0, + 1, + 63, + 87, + 96, 0, - 227, - 131, + 128, + 253, + 91, + 147, + 80, + 98, + 0, + 1, + 79, + 96, + 32, + 134, + 1, 98, 0, 0, - 167, + 248, 86, 91, - 145, + 146, 80, 98, 0, - 0, - 243, + 1, + 95, 96, - 32, - 132, + 64, + 134, 1, 98, 0, 0, - 167, + 248, 86, 91, - 144, + 145, 80, + 96, + 96, + 133, + 1, + 81, + 96, + 255, + 129, + 22, + 129, + 20, + 98, + 0, + 1, + 118, + 87, + 96, + 0, + 128, + 253, + 91, + 147, + 150, 146, + 149, 80, - 146, 144, + 147, + 80, 80, 86, 91, 96, 128, 81, - 96, - 160, - 81, 97, - 21, - 209, + 27, + 92, 98, 0, 1, - 34, + 157, 96, 0, 57, 96, 0, 97, - 10, - 133, - 1, - 82, - 96, - 0, - 97, - 4, - 94, + 11, + 91, 1, 82, 97, - 21, - 209, + 27, + 92, 96, 0, 243, @@ -341,10 +464,10 @@ pub mod summa { 28, 128, 99, - 141, - 165, - 203, - 91, + 163, + 196, + 188, + 248, 17, 97, 0, @@ -352,17 +475,6 @@ pub mod summa { 87, 128, 99, - 141, - 165, - 203, - 91, - 20, - 97, - 1, - 54, - 87, - 128, - 99, 163, 196, 188, @@ -370,7 +482,7 @@ pub mod summa { 20, 97, 1, - 81, + 105, 87, 128, 99, @@ -381,7 +493,7 @@ pub mod summa { 20, 97, 1, - 116, + 140, 87, 128, 99, @@ -392,18 +504,29 @@ pub mod summa { 20, 97, 1, - 135, + 159, 87, 128, 99, - 242, - 253, + 218, + 100, + 167, + 80, + 20, + 97, + 1, + 194, + 87, + 128, + 99, + 242, + 253, 227, 139, 20, 97, 1, - 154, + 213, 87, 96, 0, @@ -412,10 +535,10 @@ pub mod summa { 91, 128, 99, - 35, - 235, - 148, - 160, + 25, + 179, + 57, + 104, 20, 97, 0, @@ -423,47 +546,47 @@ pub mod summa { 87, 128, 99, - 65, - 58, - 159, - 45, + 73, + 206, + 137, + 151, 20, 97, 0, - 214, + 204, 87, 128, 99, - 108, - 118, - 132, - 254, + 113, + 80, + 24, + 166, 20, 97, 0, - 235, + 250, 87, 128, 99, - 113, + 121, 80, - 24, - 166, + 44, + 85, 20, 97, 1, - 14, + 4, 87, 128, 99, - 127, - 59, - 251, - 46, + 141, + 165, + 203, + 91, 20, 97, 1, - 22, + 78, 87, 91, 96, @@ -473,7 +596,7 @@ pub mod summa { 91, 97, 0, - 195, + 182, 97, 0, 177, @@ -481,37 +604,27 @@ pub mod summa { 96, 4, 97, - 12, - 40, + 17, + 211, 86, 91, - 96, - 2, - 96, - 32, - 82, - 96, - 0, - 144, - 129, - 82, - 96, - 64, - 144, - 32, - 84, - 129, + 97, + 1, + 232, 86, 91, 96, 64, 81, + 97, + 0, + 195, + 145, 144, - 129, - 82, - 96, - 32, - 1, + 97, + 18, + 167, + 86, 91, 96, 64, @@ -524,50 +637,40 @@ pub mod summa { 91, 97, 0, - 233, + 236, 97, 0, - 228, + 218, 54, 96, 4, 97, - 13, - 104, - 86, - 91, - 97, - 1, - 173, + 17, + 211, 86, 91, - 0, - 91, - 97, - 0, - 254, - 97, - 0, - 249, - 54, 96, 4, - 97, - 15, - 34, - 86, - 91, - 97, - 4, - 68, + 96, + 32, + 82, + 96, + 0, + 144, + 129, + 82, + 96, + 64, + 144, + 32, + 84, + 129, 86, 91, 96, 64, 81, 144, - 21, - 21, 129, 82, 96, @@ -575,47 +678,91 @@ pub mod summa { 1, 97, 0, - 205, + 195, 86, 91, 97, - 0, - 233, + 1, + 2, 97, - 4, - 223, + 5, + 0, 86, 91, - 97, 0, - 195, + 91, + 96, + 1, + 84, 97, 1, - 36, - 54, - 96, - 4, + 42, + 144, 97, - 12, - 40, + 255, + 255, + 128, + 130, + 22, + 145, + 98, + 1, + 0, + 0, + 129, + 4, + 144, + 145, + 22, + 144, + 100, + 1, + 0, + 0, + 0, + 0, + 144, + 4, + 96, + 255, + 22, + 131, 86, 91, 96, - 3, + 64, + 128, + 81, + 97, + 255, + 255, + 148, + 133, + 22, + 129, + 82, + 147, + 144, + 146, + 22, 96, 32, + 132, + 1, 82, 96, - 0, + 255, + 22, 144, - 129, + 130, + 1, 82, 96, - 64, - 144, - 32, - 84, - 129, + 96, + 1, + 97, + 0, + 195, 86, 91, 96, @@ -642,26 +789,26 @@ pub mod summa { 1, 97, 0, - 205, + 195, 86, 91, 97, 1, - 100, + 124, 97, 1, - 95, + 119, 54, 96, 4, 97, - 12, - 40, + 17, + 211, 86, 91, 97, - 4, - 243, + 5, + 20, 86, 91, 96, @@ -669,91 +816,170 @@ pub mod summa { 81, 97, 0, - 205, + 195, 148, 147, 146, 145, 144, 97, - 15, - 204, + 18, + 193, 86, 91, 97, - 0, - 233, + 1, + 2, 97, 1, - 130, + 154, 54, 96, 4, 97, - 16, - 36, - 86, + 20, + 64, + 86, 91, 97, 7, - 83, + 116, 86, 91, 97, - 0, - 254, + 1, + 178, 97, 1, - 149, + 173, 54, 96, 4, 97, - 17, - 126, + 22, + 5, 86, 91, 97, - 9, - 253, + 10, + 21, 86, 91, + 96, + 64, + 81, + 144, + 21, + 21, + 129, + 82, + 96, + 32, + 1, 97, 0, - 233, + 195, + 86, + 91, 97, 1, - 168, + 2, + 97, + 1, + 208, 54, 96, 4, 97, - 17, - 235, + 22, + 114, 86, 91, 97, 11, - 5, + 219, 86, 91, 97, 1, - 181, + 2, 97, - 11, - 126, + 1, + 227, + 54, + 96, + 4, + 97, + 23, + 185, + 86, + 91, + 97, + 15, + 167, 86, 91, + 97, + 2, + 19, + 96, + 64, + 81, + 128, 96, + 128, 1, - 84, + 96, + 64, + 82, + 128, + 96, + 96, + 129, + 82, + 96, + 32, + 1, + 96, + 96, + 129, + 82, + 96, + 32, + 1, + 96, + 96, + 129, + 82, + 96, + 32, + 1, + 96, + 96, + 129, + 82, + 80, + 144, + 86, + 91, 96, 0, + 130, + 129, + 82, + 96, 3, + 96, + 32, + 82, + 96, + 64, + 144, + 32, + 84, 97, 2, - 43, + 106, 87, 96, 64, @@ -775,83 +1001,43 @@ pub mod summa { 1, 82, 96, - 54, + 20, 96, 36, 130, 1, 82, - 127, - 84, - 104, - 101, - 32, - 67, - 69, - 88, - 32, - 104, - 97, 115, - 32, - 110, - 111, - 116, - 32, - 115, - 117, + 16, + 89, + 25, + 28, + 153, + 92, + 220, + 200, + 27, + 155, + 221, + 8, + 29, + 153, + 92, + 154, + 89, + 154, + 89, + 89, + 96, 98, - 109, - 105, - 116, - 116, - 101, - 100, - 32, - 97, - 110, - 121, - 32, - 97, - 100, + 27, 96, 68, 130, 1, 82, - 117, - 100, - 114, - 101, - 115, - 115, - 32, - 111, - 119, - 110, - 101, - 114, - 115, - 104, - 105, - 112, - 32, - 112, - 114, - 111, - 111, - 102, - 115, - 96, - 80, - 27, 96, 100, - 130, - 1, - 82, - 96, - 132, 1, 91, 96, @@ -865,736 +1051,706 @@ pub mod summa { 91, 96, 0, - 131, - 81, + 130, + 129, + 82, 96, - 1, + 3, + 96, + 32, + 82, + 96, + 64, + 144, + 32, + 84, + 96, + 2, + 144, 97, 2, - 59, - 145, + 136, + 144, + 96, + 1, 144, 97, - 18, - 49, + 23, + 248, 86, 91, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 129, - 17, - 21, + 84, + 129, + 16, 97, 2, - 83, + 152, 87, 97, 2, - 83, + 152, 97, - 12, - 65, + 24, + 17, 86, 91, - 96, - 64, - 81, 144, - 128, - 130, + 96, + 0, 82, - 128, 96, 32, - 2, 96, + 0, 32, - 1, - 130, + 144, + 96, + 4, + 2, 1, 96, 64, - 82, + 81, 128, - 21, - 97, - 2, - 124, - 87, - 129, - 96, - 32, - 1, 96, - 32, - 130, - 2, 128, - 54, - 131, - 55, 1, + 96, + 64, + 82, 144, - 80, - 91, - 80, - 144, - 80, - 132, 129, 96, 0, - 129, - 81, - 129, - 16, - 97, - 2, - 147, - 87, + 130, + 1, + 128, + 84, 97, 2, - 147, + 193, + 144, 97, - 18, - 68, + 24, + 39, 86, 91, + 128, + 96, + 31, + 1, 96, 32, + 128, + 145, + 4, 2, 96, 32, 1, + 96, + 64, + 81, + 144, + 129, 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, 129, 129, 82, - 80, - 80, 96, - 0, + 32, + 1, + 130, + 128, + 84, + 97, + 2, + 237, + 144, + 97, + 24, + 39, + 86, 91, - 132, - 81, - 129, - 16, + 128, 21, 97, 3, - 142, + 58, 87, - 132, - 129, - 129, - 81, - 129, + 128, + 96, + 31, 16, 97, - 2, - 189, + 3, + 15, 87, 97, + 1, + 0, + 128, + 131, + 84, + 4, 2, - 189, + 131, + 82, + 145, + 96, + 32, + 1, + 145, 97, - 18, - 68, + 3, + 58, 86, 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, 96, 32, - 2, 96, + 0, 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, 1, 1, - 81, + 144, 96, 32, 1, - 81, - 81, - 96, - 0, - 20, - 21, 128, - 21, + 131, + 17, 97, - 2, - 249, + 3, + 29, 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, 80, - 132, - 129, - 129, - 81, 129, - 16, - 97, - 2, - 231, - 87, + 82, + 96, + 32, + 1, + 96, + 1, + 130, + 1, + 128, + 84, 97, - 2, - 231, + 3, + 83, + 144, 97, - 18, - 68, + 24, + 39, 86, 91, + 128, + 96, + 31, + 1, 96, 32, + 128, + 145, + 4, 2, 96, 32, 1, - 1, - 81, - 96, - 0, - 1, - 81, - 81, - 96, - 0, - 20, - 21, - 91, - 97, - 3, - 53, - 87, 96, 64, 81, - 98, - 70, - 27, - 205, + 144, + 129, + 1, 96, - 229, - 27, + 64, + 82, + 128, + 146, + 145, + 144, + 129, 129, 82, 96, 32, - 96, - 4, - 130, 1, - 82, - 96, - 13, - 96, - 36, 130, - 1, - 82, - 108, - 18, - 91, - 157, - 152, - 91, - 26, - 89, - 8, + 128, + 84, + 97, + 3, + 127, + 144, + 97, 24, - 92, - 220, - 217, - 93, - 96, - 154, - 27, + 39, + 86, + 91, + 128, + 21, + 97, + 3, + 204, + 87, + 128, 96, - 68, - 130, + 31, + 16, + 97, + 3, + 161, + 87, + 97, 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, 82, + 145, 96, - 100, + 32, 1, + 145, 97, - 2, - 34, + 3, + 204, 86, 91, - 132, - 129, + 130, + 1, + 145, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 91, 129, - 81, + 84, 129, - 16, + 82, + 144, + 96, + 1, + 1, + 144, + 96, + 32, + 1, + 128, + 131, + 17, 97, 3, - 71, + 175, 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, + 80, + 129, + 82, + 96, + 32, + 1, + 96, + 2, + 130, + 1, + 128, + 84, 97, 3, - 71, + 229, + 144, 97, - 18, - 68, + 24, + 39, 86, 91, + 128, + 96, + 31, + 1, 96, 32, + 128, + 145, + 4, 2, 96, 32, 1, - 1, - 81, 96, 64, - 1, 81, - 130, - 130, + 144, + 129, + 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, + 129, + 129, + 82, 96, + 32, 1, + 130, + 128, + 84, 97, - 3, - 97, - 145, + 4, + 17, 144, 97, - 18, - 49, + 24, + 39, 86, 91, - 129, - 81, - 129, + 128, + 21, + 97, + 4, + 94, + 87, + 128, + 96, + 31, 16, 97, - 3, - 113, + 4, + 51, 87, 97, - 3, - 113, + 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, + 96, + 32, + 1, + 145, 97, - 18, - 68, + 4, + 94, 86, 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, 96, 32, + 96, + 0, + 32, 144, + 91, 129, - 2, - 145, + 84, + 129, + 82, 144, - 145, + 96, 1, 1, - 82, + 144, + 96, + 32, + 1, 128, + 131, + 17, 97, + 4, + 65, + 87, + 130, + 144, 3, - 134, - 129, - 97, - 18, - 90, - 86, - 91, + 96, + 31, + 22, + 130, + 1, 145, + 91, 80, 80, - 97, - 2, - 162, - 86, - 91, 80, - 97, + 80, + 80, + 129, + 82, + 96, + 32, + 1, + 96, 3, - 153, - 131, 130, + 1, + 128, + 84, 97, 4, - 68, - 86, - 91, + 119, + 144, 97, - 3, - 216, - 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, + 24, + 39, + 86, + 91, + 128, 96, - 229, - 27, - 129, - 82, + 31, + 1, 96, 32, - 96, + 128, + 145, 4, - 130, - 1, - 82, + 2, 96, - 16, + 32, + 1, 96, - 36, - 130, + 64, + 81, + 144, + 129, 1, + 96, + 64, 82, - 111, - 36, - 183, - 59, - 48, - 182, - 52, - 178, - 16, - 45, - 37, + 128, + 146, + 145, 144, - 56, - 57, - 55, - 183, - 179, - 96, 129, - 27, - 96, - 68, - 130, - 1, + 129, 82, 96, - 100, + 32, 1, + 130, + 128, + 84, 97, - 2, - 34, + 4, + 163, + 144, + 97, + 24, + 39, 86, 91, + 128, + 21, + 97, + 4, + 240, + 87, + 128, 96, - 0, - 130, - 129, - 82, - 96, - 3, - 96, - 32, - 82, - 96, - 64, - 129, - 32, - 134, - 144, - 85, - 129, - 81, - 131, - 145, - 127, + 31, + 16, + 97, 4, - 115, - 88, - 28, - 60, - 244, - 55, - 175, 197, - 34, - 7, - 216, - 140, - 225, + 87, + 97, + 1, + 0, + 128, + 131, 84, - 26, - 251, - 199, - 206, - 159, - 219, + 4, + 2, 131, - 180, - 212, - 211, - 183, - 33, - 75, - 238, - 213, - 111, - 245, + 82, 145, - 132, + 96, + 32, + 1, 145, - 144, 97, 4, - 30, - 87, - 97, - 4, - 30, - 97, - 18, - 68, + 240, 86, 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, 96, 32, - 2, 96, + 0, 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, 1, 1, - 81, - 134, + 144, 96, - 64, - 81, + 32, + 1, + 128, + 131, + 17, 97, 4, - 53, - 146, - 145, + 211, + 87, + 130, 144, - 97, - 18, - 115, - 86, - 91, + 3, 96, - 64, - 81, - 128, + 31, + 22, + 130, + 1, 145, - 3, - 144, - 162, + 91, + 80, + 80, 80, 80, 80, + 129, + 82, + 80, + 80, + 144, 80, + 145, + 144, 80, 86, 91, - 96, - 64, - 81, - 99, - 11, - 210, + 97, 5, - 169, + 8, + 97, + 16, + 32, + 86, + 91, + 97, + 5, + 18, 96, - 228, - 27, + 0, + 97, + 16, + 122, + 86, + 91, + 86, + 91, + 96, + 2, 129, - 82, + 129, + 84, + 129, + 16, + 97, + 5, + 36, + 87, 96, 0, + 128, + 253, + 91, 144, 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 22, - 144, - 99, - 189, - 32, - 90, - 144, - 144, - 97, - 4, - 149, - 144, - 133, - 144, - 135, - 144, - 96, - 4, - 1, - 97, - 19, - 10, - 86, - 91, - 96, - 32, - 96, - 64, - 81, - 128, - 131, - 3, - 129, - 134, - 90, - 250, - 21, - 128, - 21, - 97, - 4, - 178, - 87, - 61, - 96, - 0, - 128, - 62, - 61, - 96, - 0, - 253, - 91, - 80, - 80, - 80, - 80, - 96, - 64, - 81, - 61, - 96, - 31, - 25, - 96, - 31, - 130, - 1, - 22, - 130, - 1, - 128, - 96, - 64, - 82, - 80, - 129, - 1, - 144, - 97, - 4, - 214, - 145, - 144, - 97, - 19, - 97, - 86, - 91, - 144, - 80, - 91, - 146, - 145, - 80, - 80, - 86, - 91, - 97, - 4, - 231, - 97, - 11, - 126, - 86, - 91, - 97, - 4, - 241, - 96, - 0, - 97, - 11, - 216, - 86, - 91, - 86, - 91, - 96, - 1, - 129, - 129, - 84, - 129, - 16, - 97, - 5, - 3, - 87, - 96, - 0, - 128, - 253, - 91, - 144, - 96, - 0, - 82, + 0, + 82, 96, 32, 96, @@ -1619,11 +1775,11 @@ pub mod summa { 84, 97, 5, - 38, + 71, 144, 97, - 19, - 131, + 24, + 39, 86, 91, 128, @@ -1663,18 +1819,18 @@ pub mod summa { 84, 97, 5, - 82, + 115, 144, 97, - 19, - 131, + 24, + 39, 86, 91, 128, 21, 97, 5, - 159, + 192, 87, 128, 96, @@ -1682,7 +1838,7 @@ pub mod summa { 16, 97, 5, - 116, + 149, 87, 97, 1, @@ -1701,7 +1857,7 @@ pub mod summa { 145, 97, 5, - 159, + 192, 86, 91, 130, @@ -1735,7 +1891,7 @@ pub mod summa { 17, 97, 5, - 130, + 163, 87, 130, 144, @@ -1761,11 +1917,11 @@ pub mod summa { 84, 97, 5, - 180, + 213, 144, 97, - 19, - 131, + 24, + 39, 86, 91, 128, @@ -1804,19 +1960,19 @@ pub mod summa { 128, 84, 97, - 5, - 224, + 6, + 1, 144, 97, - 19, - 131, + 24, + 39, 86, 91, 128, 21, 97, 6, - 45, + 78, 87, 128, 96, @@ -1824,7 +1980,7 @@ pub mod summa { 16, 97, 6, - 2, + 35, 87, 97, 1, @@ -1843,7 +1999,7 @@ pub mod summa { 145, 97, 6, - 45, + 78, 86, 91, 130, @@ -1877,7 +2033,7 @@ pub mod summa { 17, 97, 6, - 16, + 49, 87, 130, 144, @@ -1903,11 +2059,11 @@ pub mod summa { 84, 97, 6, - 66, + 99, 144, 97, - 19, - 131, + 24, + 39, 86, 91, 128, @@ -1947,18 +2103,18 @@ pub mod summa { 84, 97, 6, - 110, + 143, 144, 97, - 19, - 131, + 24, + 39, 86, 91, 128, 21, 97, 6, - 187, + 220, 87, 128, 96, @@ -1966,7 +2122,7 @@ pub mod summa { 16, 97, 6, - 144, + 177, 87, 97, 1, @@ -1985,7 +2141,7 @@ pub mod summa { 145, 97, 6, - 187, + 220, 86, 91, 130, @@ -2019,7 +2175,7 @@ pub mod summa { 17, 97, 6, - 158, + 191, 87, 130, 144, @@ -2045,11 +2201,11 @@ pub mod summa { 84, 97, 6, - 208, + 241, 144, 97, - 19, - 131, + 24, + 39, 86, 91, 128, @@ -2088,19 +2244,19 @@ pub mod summa { 128, 84, 97, - 6, - 252, + 7, + 29, 144, 97, - 19, - 131, + 24, + 39, 86, 91, 128, 21, 97, 7, - 73, + 106, 87, 128, 96, @@ -2108,7 +2264,7 @@ pub mod summa { 16, 97, 7, - 30, + 63, 87, 97, 1, @@ -2127,7 +2283,7 @@ pub mod summa { 145, 97, 7, - 73, + 106, 86, 91, 130, @@ -2161,7 +2317,7 @@ pub mod summa { 17, 97, 7, - 44, + 77, 87, 130, 144, @@ -2185,10 +2341,10 @@ pub mod summa { 91, 97, 7, - 91, + 124, 97, - 11, - 126, + 16, + 32, 86, 91, 96, @@ -2201,7 +2357,7 @@ pub mod summa { 21, 97, 9, - 194, + 218, 87, 96, 0, @@ -2213,14 +2369,14 @@ pub mod summa { 16, 97, 7, - 123, + 156, 87, 97, 7, - 123, + 156, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -2243,12 +2399,12 @@ pub mod summa { 1, 97, 7, - 151, + 184, 145, 144, 97, - 19, - 189, + 24, + 97, 86, 91, 96, @@ -2281,7 +2437,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 144, 147, 82, @@ -2295,7 +2451,7 @@ pub mod summa { 21, 97, 8, - 13, + 46, 87, 96, 64, @@ -2366,56 +2522,27 @@ pub mod summa { 1, 97, 2, - 34, - 86, - 91, - 97, - 8, - 24, - 131, - 96, - 1, 97, - 18, - 49, 86, 91, 96, - 0, - 131, - 129, - 82, - 96, 2, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 85, - 131, + 132, + 132, + 129, 81, - 96, - 1, - 144, - 133, - 144, - 133, - 144, 129, 16, 97, 8, - 62, + 66, 87, 97, 8, - 62, + 66, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -2460,12 +2587,12 @@ pub mod summa { 144, 97, 8, - 112, + 116, 144, 130, 97, - 20, - 31, + 24, + 204, 86, 91, 80, @@ -2481,12 +2608,12 @@ pub mod summa { 144, 97, 8, - 133, + 137, 144, 130, 97, - 20, - 31, + 24, + 204, 86, 91, 80, @@ -2502,12 +2629,12 @@ pub mod summa { 144, 97, 8, - 154, + 158, 144, 130, 97, - 20, - 31, + 24, + 204, 86, 91, 80, @@ -2523,33 +2650,53 @@ pub mod summa { 144, 97, 8, - 175, + 179, 144, 130, 97, - 20, - 31, + 24, + 204, 86, 91, 80, 80, + 96, + 2, + 84, + 96, + 0, + 132, + 129, + 82, + 96, + 3, + 96, + 32, + 82, + 96, + 64, + 144, + 32, + 85, 80, 131, - 131, - 129, 81, + 132, + 144, + 132, + 144, 129, 16, 97, 8, - 196, + 220, 87, 97, 8, - 196, + 220, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -2573,7 +2720,7 @@ pub mod summa { 21, 97, 9, - 0, + 24, 87, 80, 131, @@ -2583,15 +2730,15 @@ pub mod summa { 129, 16, 97, - 8, - 238, + 9, + 6, 87, 97, - 8, - 238, + 9, + 6, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -2616,7 +2763,7 @@ pub mod summa { 21, 97, 9, - 43, + 67, 87, 80, 131, @@ -2627,14 +2774,14 @@ pub mod summa { 16, 97, 9, - 25, + 49, 87, 97, 9, - 25, + 49, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -2659,7 +2806,7 @@ pub mod summa { 21, 97, 9, - 86, + 110, 87, 80, 131, @@ -2670,14 +2817,14 @@ pub mod summa { 16, 97, 9, - 68, + 92, 87, 97, 9, - 68, + 92, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -2700,7 +2847,7 @@ pub mod summa { 91, 97, 9, - 173, + 197, 87, 96, 64, @@ -2782,7 +2929,7 @@ pub mod summa { 1, 97, 2, - 34, + 97, 86, 91, 80, @@ -2791,11 +2938,11 @@ pub mod summa { 128, 97, 9, - 186, + 210, 144, 97, - 18, - 90, + 25, + 140, 86, 91, 145, @@ -2803,7 +2950,7 @@ pub mod summa { 80, 97, 7, - 94, + 127, 86, 91, 80, @@ -2845,13 +2992,13 @@ pub mod summa { 64, 81, 97, - 9, - 242, + 10, + 10, 145, 144, 97, - 20, - 223, + 25, + 165, 86, 91, 96, @@ -2876,14 +3023,14 @@ pub mod summa { 16, 97, 10, - 18, + 42, 87, 97, 10, - 18, + 42, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -2895,7 +3042,7 @@ pub mod summa { 1, 81, 96, - 3, + 4, 96, 0, 132, @@ -2913,11 +3060,14 @@ pub mod summa { 96, 0, 32, + 96, + 0, + 1, 84, 20, 97, 10, - 110, + 137, 87, 96, 64, @@ -2975,45 +3125,232 @@ pub mod summa { 1, 97, 2, - 34, + 97, 86, 91, 96, - 64, + 2, + 91, + 131, 81, - 99, + 129, + 16, + 21, + 97, 11, - 210, - 5, - 169, + 67, + 87, + 131, + 129, + 129, + 81, + 129, + 16, + 97, + 10, + 167, + 87, + 97, + 10, + 167, + 97, + 24, + 17, + 86, + 91, 96, - 228, - 27, + 32, + 2, + 96, + 32, + 1, + 1, + 81, + 96, + 4, + 96, + 0, + 133, 129, 82, 96, + 32, 1, + 144, + 129, + 82, 96, + 32, 1, 96, - 160, - 27, - 3, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 0, + 32, + 96, + 1, + 1, + 96, + 2, + 131, + 97, + 10, + 210, + 145, + 144, + 97, + 23, + 248, + 86, + 91, + 129, + 84, + 129, + 16, + 97, + 10, + 226, + 87, + 97, + 10, + 226, + 97, + 24, + 17, + 86, + 91, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 1, + 84, + 20, + 97, + 11, + 49, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 20, + 96, + 36, + 130, + 1, + 82, + 115, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 114, + 111, + 111, + 116, + 32, + 98, + 97, + 108, + 97, + 110, + 99, + 101, + 96, + 96, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 97, + 86, + 91, + 128, + 97, + 11, + 59, + 129, + 97, + 25, + 140, + 86, + 91, + 145, + 80, + 80, + 97, + 10, + 140, + 86, + 91, + 80, + 96, + 64, + 81, + 99, + 11, + 210, + 5, + 169, + 96, + 228, + 27, + 129, + 82, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, 0, 0, 0, @@ -3041,8 +3378,8 @@ pub mod summa { 144, 144, 97, - 10, - 188, + 11, + 146, 144, 134, 144, @@ -3052,8 +3389,8 @@ pub mod summa { 4, 1, 97, - 19, - 10, + 26, + 66, 86, 91, 96, @@ -3072,8 +3409,8 @@ pub mod summa { 128, 21, 97, - 10, - 217, + 11, + 175, 87, 61, 96, @@ -3112,13 +3449,13 @@ pub mod summa { 1, 144, 97, - 10, - 253, + 11, + 211, 145, 144, 97, - 19, - 97, + 26, + 103, 86, 91, 148, @@ -3131,25 +3468,19 @@ pub mod summa { 91, 97, 11, - 13, + 227, 97, - 11, - 126, + 16, + 32, 86, 91, + 131, 96, - 1, - 96, - 1, - 96, - 160, - 27, + 0, 3, - 129, - 22, 97, - 11, - 114, + 12, + 38, 87, 96, 64, @@ -3171,102 +3502,53 @@ pub mod summa { 1, 82, 96, - 38, + 16, 96, 36, 130, 1, 82, - 127, - 79, - 119, - 110, - 97, - 98, - 108, - 101, - 58, - 32, - 110, - 101, - 119, - 32, - 111, - 119, - 110, - 101, - 114, - 32, - 105, - 115, - 32, - 116, - 104, - 101, - 32, - 122, - 101, - 114, 111, - 32, - 97, - 96, - 68, - 130, - 1, - 82, - 101, - 100, - 100, - 114, - 101, - 115, - 115, - 96, - 208, - 27, + 18, + 91, + 157, + 152, + 91, + 26, + 89, + 8, + 19, + 84, + 213, + 8, + 28, + 155, + 219, + 221, 96, - 100, + 130, + 27, + 96, + 68, 130, 1, 82, 96, - 132, + 100, 1, 97, 2, - 34, - 86, - 91, - 97, - 11, - 123, - 129, 97, - 11, - 216, 86, 91, - 80, - 86, - 91, - 96, - 0, - 84, - 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 22, - 51, + 129, + 81, + 131, + 81, 20, 97, - 4, - 241, + 12, + 149, 87, 96, 64, @@ -3286,894 +3568,868 @@ pub mod summa { 4, 130, 1, - 129, - 144, 82, 96, + 53, + 96, 36, 130, 1, 82, 127, - 79, - 119, - 110, - 97, - 98, - 108, - 101, - 58, + 82, + 111, + 111, + 116, 32, - 99, - 97, 108, + 105, + 97, + 98, + 105, 108, + 105, + 116, + 105, 101, - 114, + 115, 32, - 105, + 115, + 117, + 109, 115, 32, + 97, 110, - 111, - 116, - 32, - 116, - 104, - 101, + 100, 32, - 111, - 119, - 110, - 101, - 114, + 108, + 105, + 97, + 98, + 105, + 108, 96, 68, 130, 1, 82, + 116, + 13, + 46, + 141, + 44, + 174, + 100, + 13, + 206, + 173, + 172, + 76, + 174, + 68, + 13, + 173, + 46, + 109, + 172, + 46, + 140, + 109, + 96, + 91, + 27, 96, 100, + 130, + 1, + 82, + 96, + 132, 1, 97, 2, - 34, + 97, 86, 91, 96, 0, + 130, + 81, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, + 97, + 12, + 177, + 87, + 97, + 12, + 177, + 97, + 19, + 25, + 86, + 91, + 96, + 64, + 81, + 144, + 128, + 130, + 82, 128, - 84, 96, - 1, + 32, + 2, 96, + 32, + 1, + 130, 1, 96, - 160, - 27, - 3, - 131, + 64, + 82, + 128, + 21, + 97, + 12, + 228, + 87, 129, - 22, 96, + 32, 1, + 91, + 96, + 96, + 129, + 82, 96, + 32, 1, + 144, 96, - 160, - 27, + 1, + 144, 3, - 25, + 144, + 129, + 97, + 12, + 207, + 87, + 144, + 80, + 91, + 80, + 144, + 80, + 96, + 0, 131, - 22, + 81, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 129, - 23, - 132, - 85, + 17, + 21, + 97, + 13, + 3, + 87, + 97, + 13, + 3, + 97, + 19, + 25, + 86, + 91, 96, 64, 81, - 145, 144, - 146, - 22, - 146, - 131, - 145, - 127, - 139, - 224, - 7, - 156, - 83, - 22, - 89, - 20, - 19, - 68, - 205, - 31, - 208, - 164, - 242, - 132, - 25, - 73, - 127, - 151, - 34, - 163, - 218, - 175, - 227, - 180, - 24, - 111, - 107, - 100, - 87, - 224, - 145, - 144, - 163, - 80, - 80, - 86, - 91, + 128, + 130, + 82, + 128, 96, - 0, + 32, + 2, 96, 32, + 1, 130, - 132, - 3, - 18, + 1, + 96, + 64, + 82, + 128, 21, 97, - 12, - 58, + 13, + 54, 87, + 129, 96, - 0, - 128, - 253, - 91, - 80, - 53, - 145, - 144, - 80, - 86, + 32, + 1, 91, - 99, - 78, - 72, - 123, - 113, 96, - 224, - 27, 96, - 0, + 129, 82, 96, - 65, - 96, - 4, - 82, + 32, + 1, + 144, 96, - 36, + 1, + 144, + 3, + 144, + 129, + 97, + 13, + 33, + 87, + 144, + 80, + 91, + 80, + 144, + 80, 96, 0, - 253, 91, - 96, - 64, + 132, 81, - 96, - 96, - 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 129, - 17, - 130, - 130, 16, - 23, 21, 97, - 12, - 122, + 14, + 220, + 87, + 132, + 129, + 129, + 81, + 129, + 16, + 97, + 13, + 87, 87, 97, - 12, - 122, + 13, + 87, 97, - 12, - 65, + 24, + 17, 86, 91, 96, - 64, - 82, - 144, - 86, - 91, + 32, + 2, 96, - 64, + 32, + 1, + 1, 81, 96, + 32, + 1, + 81, + 81, + 96, + 0, + 20, + 21, 128, + 21, + 97, + 13, + 147, + 87, + 80, + 132, 129, - 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 129, - 17, - 130, - 130, + 81, + 129, 16, - 23, - 21, 97, - 12, - 122, + 13, + 129, 87, 97, - 12, - 122, + 13, + 129, 97, - 12, - 65, + 24, + 17, 86, 91, 96, - 64, - 81, + 32, + 2, 96, - 31, - 130, + 32, + 1, 1, + 81, 96, - 31, - 25, - 22, - 129, + 0, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, + 81, + 81, + 96, + 0, + 20, 21, + 91, 97, - 12, - 204, + 13, + 216, 87, - 97, - 12, - 204, - 97, - 12, - 65, - 86, - 91, 96, 64, - 82, - 145, - 144, - 80, - 86, - 91, + 81, + 98, + 70, + 27, + 205, 96, - 0, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 130, - 17, - 21, - 97, - 12, - 238, - 87, - 97, - 12, - 238, - 97, - 12, - 65, - 86, - 91, - 80, - 96, - 5, + 229, 27, + 129, + 82, 96, 32, - 1, - 144, - 86, - 91, 96, - 0, + 4, 130, + 1, + 82, 96, - 31, - 131, + 22, + 96, + 36, + 130, 1, - 18, + 82, + 117, + 73, + 110, + 118, 97, - 13, - 9, - 87, + 108, + 105, + 100, + 32, + 99, + 114, + 121, + 112, + 116, + 111, + 99, + 117, + 114, + 114, + 101, + 110, + 99, + 121, 96, - 0, - 128, - 253, + 80, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 97, + 86, 91, + 133, 129, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 129, - 17, - 21, + 81, + 129, + 16, 97, 13, - 35, + 234, 87, 97, 13, - 35, + 234, 97, - 12, - 65, + 24, + 17, 86, 91, - 97, - 13, - 54, - 96, - 31, - 130, - 1, - 96, - 31, - 25, - 22, 96, 32, - 1, - 97, - 12, - 163, - 86, - 91, - 129, - 129, - 82, - 132, + 2, 96, 32, - 131, - 134, 1, 1, - 17, - 21, + 81, + 96, + 0, + 3, 97, - 13, - 75, + 14, + 83, 87, 96, - 0, - 128, - 253, - 91, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, + 82, 96, 32, - 133, - 1, 96, - 32, - 131, + 4, + 130, 1, - 55, + 82, 96, - 0, - 145, - 129, - 1, + 41, 96, + 36, + 130, + 1, + 82, + 127, + 65, + 108, + 108, + 32, + 114, + 111, + 111, + 116, + 32, + 115, + 117, + 109, + 115, + 32, + 115, + 104, + 111, + 117, + 108, + 100, + 32, + 98, + 101, + 32, + 103, + 114, + 101, + 97, + 116, + 101, + 114, 32, + 96, + 68, + 130, 1, - 145, - 144, - 145, 82, - 147, - 146, - 80, - 80, - 80, - 86, - 91, + 104, + 116, + 104, + 97, + 110, + 32, + 122, + 101, + 114, + 111, 96, - 0, - 128, + 184, + 27, 96, - 0, - 128, + 100, + 130, + 1, + 82, 96, - 128, - 133, - 135, - 3, - 18, - 21, + 132, + 1, 97, - 13, - 126, - 87, - 96, - 0, - 128, - 253, + 2, + 97, + 86, 91, 132, - 53, - 147, - 80, - 96, - 32, - 133, - 1, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 13, - 157, - 87, - 96, - 0, - 128, - 253, - 91, 129, - 135, - 1, - 145, - 80, - 135, - 96, - 31, - 131, - 1, - 18, + 129, + 81, + 129, + 16, 97, - 13, - 177, + 14, + 101, 87, - 96, - 0, - 128, - 253, - 91, - 97, - 13, - 195, - 97, - 13, - 190, - 131, - 53, 97, - 12, - 212, - 86, - 91, + 14, + 101, 97, - 12, - 163, + 24, + 17, 86, 91, - 130, - 53, - 128, - 130, - 82, 96, 32, - 128, - 131, - 1, - 146, - 145, + 2, 96, - 5, - 27, - 133, + 32, 1, 1, - 138, - 129, - 17, - 21, - 97, - 13, - 226, - 87, + 81, 96, 0, - 128, - 253, - 91, - 96, - 32, - 133, 1, - 91, + 81, + 131, + 130, 129, + 81, 129, 16, - 21, 97, 14, - 132, + 131, 87, - 132, - 129, - 53, - 17, - 21, 97, - 13, - 253, - 87, - 96, - 0, - 128, - 253, + 14, + 131, + 97, + 24, + 17, + 86, 91, - 128, - 53, - 134, - 1, - 96, 96, - 129, - 142, - 3, + 32, + 2, 96, - 31, - 25, + 32, 1, - 18, - 21, + 1, + 129, + 144, + 82, + 80, + 132, + 129, + 129, + 81, + 129, + 16, 97, 14, - 21, + 160, 87, - 96, - 0, - 128, - 253, - 91, 97, 14, - 29, + 160, 97, - 12, - 87, + 24, + 17, 86, 91, 96, 32, - 130, + 2, + 96, + 32, 1, - 53, - 135, + 1, + 81, + 96, + 32, + 1, + 81, + 130, + 130, 129, - 17, - 21, + 81, + 129, + 16, 97, 14, - 47, + 190, 87, - 96, - 0, - 128, - 253, - 91, 97, 14, - 62, - 143, + 190, + 97, + 24, + 17, + 86, + 91, + 96, + 32, + 2, 96, 32, - 131, - 134, 1, 1, + 129, + 144, + 82, + 80, + 128, + 128, 97, - 12, - 248, + 14, + 212, + 144, + 97, + 25, + 140, + 86, + 91, + 145, + 80, + 80, + 97, + 13, + 60, 86, 91, - 130, - 82, 80, 96, 64, - 130, + 128, + 81, + 96, + 128, + 129, 1, - 53, + 130, + 82, 135, 129, - 17, - 21, - 97, - 14, - 83, - 87, - 96, - 0, - 128, - 253, - 91, - 97, - 14, - 98, - 143, + 82, 96, 32, - 131, - 134, + 128, + 130, 1, + 136, + 129, + 82, + 130, + 132, 1, - 97, - 12, - 248, - 86, - 91, + 134, + 144, + 82, + 96, 96, - 32, 131, - 129, 1, - 145, + 133, 144, - 145, 82, 96, + 0, + 135, + 129, + 82, 96, + 4, + 131, + 82, 147, 144, 147, - 1, - 53, + 32, + 130, + 81, + 129, + 85, + 146, + 81, + 128, + 81, + 146, + 147, + 146, + 97, + 15, + 39, + 146, 96, - 64, - 131, 1, - 82, - 80, 133, - 82, - 147, - 132, 1, - 147, + 146, 1, + 144, 97, - 13, - 231, + 16, + 202, 86, 91, 80, - 144, - 150, - 80, - 80, - 80, 96, 64, - 135, + 130, 1, - 53, - 145, - 80, + 81, 128, - 130, - 17, - 21, + 81, 97, - 14, - 158, - 87, + 15, + 67, + 145, 96, - 0, - 128, - 253, - 91, - 80, - 97, - 14, - 171, - 135, - 130, - 136, + 2, + 132, + 1, + 145, + 96, + 32, + 144, + 145, 1, + 144, 97, - 12, - 248, + 17, + 21, 86, 91, - 148, - 151, - 147, - 150, 80, - 147, - 148, 96, 96, - 1, - 53, - 147, - 80, - 80, - 80, - 86, - 91, - 96, - 0, 130, - 96, - 31, - 131, 1, - 18, - 97, - 14, - 205, - 87, - 96, - 0, + 81, 128, - 253, - 91, - 129, - 53, - 96, - 32, - 97, - 14, - 221, - 97, - 13, - 190, - 131, + 81, 97, - 12, - 212, - 86, - 91, - 130, - 129, - 82, + 15, + 95, + 145, 96, - 5, - 146, - 144, - 146, - 27, + 3, 132, 1, - 129, - 1, 145, - 129, - 129, + 96, + 32, + 144, + 145, 1, 144, - 134, - 132, + 97, 17, 21, - 97, - 14, - 252, - 87, - 96, - 0, - 128, - 253, + 86, 91, + 80, + 144, + 80, + 80, 130, - 134, - 1, - 91, - 132, - 129, + 127, + 136, + 191, + 199, + 56, + 156, + 184, + 49, + 234, + 2, + 8, + 255, 16, - 21, + 109, + 166, + 245, + 201, + 248, + 128, + 54, + 186, + 8, + 79, + 30, + 176, + 8, + 210, + 120, + 141, + 61, + 69, + 153, + 141, + 135, + 135, + 135, + 96, + 64, + 81, 97, 15, - 23, - 87, - 128, - 53, - 131, - 82, - 145, - 131, - 1, + 151, + 147, + 146, 145, - 131, - 1, + 144, 97, - 15, - 0, + 26, + 137, 86, 91, - 80, - 150, - 149, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 162, 80, 80, 80, @@ -4182,2423 +4438,4956 @@ pub mod summa { 80, 86, 91, - 96, - 0, - 128, - 96, - 64, - 131, - 133, - 3, - 18, - 21, - 97, - 15, - 53, - 87, - 96, - 0, - 128, - 253, - 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 15, - 77, - 87, - 96, - 0, - 128, - 253, - 91, 97, 15, - 89, - 134, - 131, - 135, - 1, + 175, 97, - 12, - 248, + 16, + 32, 86, 91, - 147, - 80, 96, - 32, - 133, 1, - 53, - 145, - 80, - 128, - 130, - 17, - 21, - 97, - 15, - 111, - 87, 96, - 0, - 128, - 253, - 91, - 80, - 97, - 15, - 124, - 133, - 130, - 134, 1, - 97, - 14, - 188, - 86, - 91, - 145, - 80, - 80, - 146, - 80, - 146, - 144, - 80, - 86, - 91, 96, - 0, + 160, + 27, + 3, 129, + 22, + 97, + 16, + 20, + 87, + 96, + 64, 81, - 128, - 132, - 82, + 98, + 70, + 27, + 205, 96, - 0, - 91, - 129, + 229, + 27, 129, - 16, - 21, - 97, - 15, - 172, - 87, + 82, 96, 32, - 129, - 133, - 1, - 129, - 1, - 81, - 134, - 131, - 1, + 96, + 4, 130, 1, 82, - 1, - 97, - 15, - 144, - 86, - 91, - 80, 96, - 0, + 38, 96, - 32, + 36, 130, - 134, - 1, 1, 82, - 96, + 127, + 79, + 119, + 110, + 97, + 98, + 108, + 101, + 58, 32, + 110, + 101, + 119, + 32, + 111, + 119, + 110, + 101, + 114, + 32, + 105, + 115, + 32, + 116, + 104, + 101, + 32, + 122, + 101, + 114, + 111, + 32, + 97, 96, - 31, - 25, - 96, - 31, - 131, - 1, - 22, - 133, - 1, + 68, + 130, 1, - 145, - 80, - 80, - 146, - 145, - 80, - 80, - 86, - 91, - 96, - 128, - 129, 82, + 101, + 100, + 100, + 114, + 101, + 115, + 115, 96, - 0, - 97, - 15, - 223, + 208, + 27, 96, - 128, - 131, - 1, - 135, - 97, - 15, - 134, - 86, - 91, + 100, 130, - 129, - 3, + 1, + 82, 96, - 32, 132, 1, - 82, 97, - 15, - 241, - 129, - 135, + 2, 97, - 15, - 134, 86, 91, - 144, - 80, - 130, - 129, - 3, - 96, - 64, - 132, - 1, - 82, 97, 16, - 5, + 29, 129, - 134, 97, - 15, - 134, + 16, + 122, 86, 91, - 144, 80, - 130, + 86, + 91, + 96, + 0, + 84, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 22, + 51, + 20, + 97, + 5, + 18, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, 129, + 144, + 82, + 96, + 36, + 130, + 1, + 82, + 127, + 79, + 119, + 110, + 97, + 98, + 108, + 101, + 58, + 32, + 99, + 97, + 108, + 108, + 101, + 114, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 116, + 104, + 101, + 32, + 111, + 119, + 110, + 101, + 114, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 97, + 86, + 91, + 96, + 0, + 128, + 84, + 96, + 1, + 96, + 1, + 96, + 160, + 27, 3, + 131, + 129, + 22, + 96, + 1, + 96, + 1, 96, + 160, + 27, + 3, + 25, + 131, + 22, + 129, + 23, + 132, + 85, 96, + 64, + 81, + 145, + 144, + 146, + 22, + 146, + 131, + 145, + 127, + 139, + 224, + 7, + 156, + 83, + 22, + 89, + 20, + 19, + 68, + 205, + 31, + 208, + 164, + 242, 132, + 25, + 73, + 127, + 151, + 34, + 163, + 218, + 175, + 227, + 180, + 24, + 111, + 107, + 100, + 87, + 224, + 145, + 144, + 163, + 80, + 80, + 86, + 91, + 130, + 128, + 84, + 130, + 130, + 85, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 129, + 1, + 146, + 130, + 21, + 97, + 17, + 5, + 87, + 145, + 96, + 32, + 2, + 130, + 1, + 91, + 130, + 129, + 17, + 21, + 97, + 17, + 5, + 87, + 130, + 81, + 130, + 85, + 145, + 96, + 32, + 1, + 145, + 144, + 96, 1, + 1, + 144, + 97, + 16, + 234, + 86, + 91, + 80, + 97, + 17, + 17, + 146, + 145, + 80, + 97, + 17, + 103, + 86, + 91, + 80, + 144, + 86, + 91, + 130, + 128, + 84, + 130, + 130, + 85, + 144, + 96, + 0, 82, + 96, + 32, + 96, + 0, + 32, + 144, + 129, + 1, + 146, + 130, + 21, + 97, + 17, + 91, + 87, + 145, + 96, + 32, + 2, + 130, + 1, + 91, + 130, + 129, + 17, + 21, + 97, + 17, + 91, + 87, + 130, + 81, + 130, + 144, + 97, + 17, + 75, + 144, + 130, + 97, + 24, + 204, + 86, + 91, + 80, + 145, + 96, + 32, + 1, + 145, + 144, + 96, + 1, + 1, + 144, + 97, + 17, + 53, + 86, + 91, + 80, + 97, + 17, + 17, + 146, + 145, + 80, + 97, + 17, + 124, + 86, + 91, + 91, + 128, + 130, + 17, + 21, + 97, + 17, + 17, + 87, + 96, + 0, + 129, + 85, + 96, + 1, + 1, + 97, + 17, + 104, + 86, + 91, + 128, + 130, + 17, + 21, + 97, + 17, + 17, + 87, + 96, + 0, + 97, + 17, + 144, + 130, + 130, + 97, + 17, + 153, + 86, + 91, + 80, + 96, + 1, + 1, + 97, + 17, + 124, + 86, + 91, + 80, + 128, + 84, + 97, + 17, + 165, + 144, + 97, + 24, + 39, + 86, + 91, + 96, + 0, + 130, + 85, + 128, + 96, + 31, + 16, + 97, + 17, + 181, + 87, + 80, + 80, + 86, + 91, + 96, + 31, + 1, + 96, + 32, + 144, + 4, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 129, + 1, + 144, + 97, + 16, + 29, + 145, + 144, + 97, + 17, + 103, + 86, + 91, + 96, + 0, + 96, + 32, + 130, + 132, + 3, + 18, + 21, + 97, + 17, + 229, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 53, + 145, + 144, + 80, + 86, + 91, + 96, + 0, + 91, + 131, + 129, + 16, + 21, + 97, + 18, + 7, + 87, + 129, + 129, + 1, + 81, + 131, + 130, + 1, + 82, + 96, + 32, + 1, + 97, + 17, + 239, + 86, + 91, + 80, + 80, + 96, + 0, + 145, + 1, + 82, + 86, + 91, + 96, + 0, + 129, + 81, + 128, + 132, + 82, + 97, + 18, + 40, + 129, + 96, + 32, + 134, + 1, + 96, + 32, + 134, + 1, + 97, + 17, + 236, + 86, + 91, + 96, + 31, + 1, + 96, + 31, + 25, + 22, + 146, + 144, + 146, + 1, + 96, + 32, + 1, + 146, + 145, + 80, + 80, + 86, + 91, + 96, + 0, + 129, + 81, + 96, + 128, + 132, + 82, + 97, + 18, + 81, + 96, + 128, + 133, + 1, + 130, + 97, + 18, + 16, + 86, + 91, + 144, + 80, + 96, + 32, + 131, + 1, + 81, + 132, + 130, + 3, + 96, + 32, + 134, + 1, + 82, + 97, + 18, + 106, + 130, + 130, + 97, + 18, + 16, + 86, + 91, + 145, + 80, + 80, + 96, + 64, + 131, + 1, + 81, + 132, + 130, + 3, + 96, + 64, + 134, + 1, + 82, + 97, + 18, + 132, + 130, + 130, + 97, + 18, + 16, + 86, + 91, + 145, + 80, + 80, + 96, + 96, + 131, + 1, + 81, + 132, + 130, + 3, + 96, + 96, + 134, + 1, + 82, + 97, + 18, + 158, + 130, + 130, + 97, + 18, + 16, + 86, + 91, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 32, + 129, + 82, + 96, + 0, + 97, + 18, + 186, + 96, + 32, + 131, + 1, + 132, + 97, + 18, + 60, + 86, + 91, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 96, + 128, + 129, + 82, + 96, + 0, + 97, + 18, + 212, + 96, + 128, + 131, + 1, + 135, + 97, + 18, + 16, + 86, + 91, + 130, + 129, + 3, + 96, + 32, + 132, + 1, + 82, + 97, + 18, + 230, + 129, + 135, + 97, + 18, + 16, + 86, + 91, + 144, + 80, + 130, + 129, + 3, + 96, + 64, + 132, + 1, + 82, + 97, + 18, + 250, + 129, + 134, + 97, + 18, + 16, + 86, + 91, + 144, + 80, + 130, + 129, + 3, + 96, + 96, + 132, + 1, + 82, + 97, + 19, + 14, + 129, + 133, + 97, + 18, + 16, + 86, + 91, + 151, + 150, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 65, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 96, + 64, + 81, + 96, + 128, + 129, + 1, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 130, + 130, + 16, + 23, + 21, + 97, + 19, + 82, + 87, + 97, + 19, + 82, + 97, + 19, + 25, + 86, + 91, + 96, + 64, + 82, + 144, + 86, + 91, + 96, + 64, + 128, + 81, + 144, + 129, + 1, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 130, + 130, + 16, + 23, + 21, + 97, + 19, + 82, + 87, + 97, + 19, + 82, + 97, + 19, + 25, + 86, + 91, + 96, + 64, + 81, + 96, + 31, + 130, + 1, + 96, + 31, + 25, + 22, + 129, + 1, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 130, + 130, + 16, + 23, + 21, + 97, + 19, + 164, + 87, + 97, + 19, + 164, + 97, + 19, + 25, + 86, + 91, + 96, + 64, + 82, + 145, + 144, + 80, + 86, + 91, + 96, + 0, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 130, + 17, + 21, + 97, + 19, + 198, + 87, + 97, + 19, + 198, + 97, + 19, + 25, + 86, + 91, + 80, + 96, + 5, + 27, + 96, + 32, + 1, + 144, + 86, + 91, + 96, + 0, + 130, + 96, + 31, + 131, + 1, + 18, + 97, + 19, + 225, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, + 97, + 19, + 251, + 87, + 97, + 19, + 251, + 97, + 19, + 25, + 86, + 91, + 97, + 20, + 14, + 96, + 31, + 130, + 1, + 96, + 31, + 25, + 22, + 96, + 32, + 1, + 97, + 19, + 123, + 86, + 91, + 129, + 129, + 82, + 132, + 96, + 32, + 131, + 134, + 1, + 1, + 17, + 21, + 97, + 20, + 35, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 96, + 32, + 133, + 1, + 96, + 32, + 131, + 1, + 55, + 96, + 0, + 145, + 129, + 1, + 96, + 32, + 1, + 145, + 144, + 145, + 82, + 147, + 146, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 96, + 32, + 128, + 131, + 133, + 3, + 18, + 21, + 97, + 20, + 83, + 87, + 96, + 0, + 128, + 253, + 91, + 130, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 20, + 107, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 133, + 1, + 145, + 80, + 133, + 96, + 31, + 131, + 1, + 18, + 97, + 20, + 127, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 97, + 20, + 146, + 97, + 20, + 141, + 130, + 97, + 19, + 172, + 86, + 91, + 97, + 19, + 123, + 86, + 91, + 129, + 129, + 82, + 96, + 5, + 145, + 144, + 145, + 27, + 131, + 1, + 132, + 1, + 144, + 132, + 129, + 1, + 144, + 136, + 131, + 17, + 21, + 97, + 20, + 177, + 87, + 96, + 0, + 128, + 253, + 91, + 133, + 133, + 1, + 91, + 131, + 129, + 16, + 21, + 97, + 21, + 146, + 87, + 128, + 53, + 133, + 129, + 17, + 21, + 97, + 20, + 204, + 87, + 96, + 0, + 128, + 253, + 91, + 134, + 1, + 96, + 128, + 129, + 140, + 3, + 96, + 31, + 25, + 1, + 18, + 21, + 97, + 20, + 227, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 97, + 20, + 235, + 97, + 19, + 47, + 86, + 91, + 136, + 130, + 1, + 53, + 135, + 129, + 17, + 21, + 97, + 20, + 253, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 97, + 21, + 11, + 141, + 139, + 131, + 134, + 1, + 1, + 97, + 19, + 208, + 86, + 91, + 130, + 82, + 80, + 96, + 64, + 128, + 131, + 1, + 53, + 136, + 129, + 17, + 21, + 97, + 21, + 34, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 97, + 21, + 48, + 142, + 140, + 131, + 135, + 1, + 1, + 97, + 19, + 208, + 86, + 91, + 139, + 132, + 1, + 82, + 80, + 96, + 96, + 128, + 132, + 1, + 53, + 137, + 129, + 17, + 21, + 97, + 21, + 73, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 97, + 21, + 87, + 143, + 141, + 131, + 136, + 1, + 1, + 97, + 19, + 208, + 86, + 91, + 131, + 133, + 1, + 82, + 80, + 96, + 128, + 132, + 1, + 53, + 145, + 80, + 136, + 130, + 17, + 21, + 97, + 21, + 113, + 87, + 96, + 0, + 128, + 129, + 253, + 91, + 97, + 21, + 127, + 142, + 140, + 132, + 135, + 1, + 1, + 97, + 19, + 208, + 86, + 91, + 144, + 131, + 1, + 82, + 80, + 132, + 82, + 80, + 145, + 134, + 1, + 145, + 134, + 1, + 97, + 20, + 181, + 86, + 91, + 80, + 152, + 151, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 130, + 96, + 31, + 131, + 1, + 18, + 97, + 21, + 176, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 96, + 32, + 97, + 21, + 192, + 97, + 20, + 141, + 131, + 97, + 19, + 172, + 86, + 91, + 130, + 129, + 82, + 96, + 5, + 146, + 144, + 146, + 27, + 132, + 1, + 129, + 1, + 145, + 129, + 129, + 1, + 144, + 134, + 132, + 17, + 21, + 97, + 21, + 223, + 87, + 96, + 0, + 128, + 253, + 91, + 130, + 134, + 1, + 91, + 132, + 129, + 16, + 21, + 97, + 21, + 250, + 87, + 128, + 53, + 131, + 82, + 145, + 131, + 1, + 145, + 131, + 1, + 97, + 21, + 227, + 86, + 91, + 80, + 150, + 149, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 96, + 96, + 132, + 134, + 3, + 18, + 21, + 97, + 22, + 26, + 87, + 96, + 0, + 128, + 253, + 91, + 131, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 22, + 50, + 87, + 96, + 0, + 128, + 253, + 91, + 97, + 22, + 62, + 135, + 131, + 136, + 1, + 97, + 19, + 208, + 86, + 91, + 148, + 80, + 96, + 32, + 134, + 1, + 53, + 145, + 80, + 128, + 130, + 17, + 21, + 97, + 22, + 84, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 97, + 22, + 97, + 134, + 130, + 135, + 1, + 97, + 21, + 159, + 86, + 91, + 146, + 80, + 80, + 96, + 64, + 132, + 1, + 53, + 144, + 80, + 146, + 80, + 146, + 80, + 146, + 86, + 91, + 96, + 0, + 128, + 96, + 0, + 128, + 96, + 128, + 133, + 135, + 3, + 18, + 21, + 97, + 22, + 136, + 87, + 96, + 0, + 128, + 253, + 91, + 132, + 53, + 147, + 80, + 96, + 32, + 133, + 1, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, + 97, + 22, + 167, + 87, + 96, + 0, + 128, + 253, + 91, + 97, + 22, + 179, + 136, + 131, + 137, + 1, + 97, + 21, + 159, + 86, + 91, + 148, + 80, + 96, + 64, + 135, + 1, + 53, + 145, + 80, + 128, + 130, + 17, + 21, + 97, + 22, + 201, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 135, + 1, + 145, + 80, + 135, + 96, + 31, + 131, + 1, + 18, + 97, + 22, + 221, + 87, + 96, + 0, + 128, + 253, + 91, + 97, + 22, + 234, + 97, + 20, + 141, + 131, + 53, + 97, + 19, + 172, + 86, + 91, + 130, + 53, + 128, + 130, + 82, + 96, + 32, + 128, + 131, + 1, + 146, + 145, + 96, + 5, + 27, + 133, + 1, + 1, + 138, + 129, + 17, + 21, + 97, + 23, + 9, + 87, + 96, + 0, + 128, + 253, + 91, + 96, + 32, + 133, + 1, + 91, + 129, + 129, + 16, + 21, + 97, + 23, + 165, + 87, + 132, + 129, + 53, + 17, + 21, + 97, + 23, + 36, + 87, + 96, + 0, + 128, + 253, + 91, + 128, + 53, + 134, + 1, + 96, + 64, + 129, + 142, + 3, + 96, + 31, + 25, + 1, + 18, + 21, + 97, + 23, + 60, + 87, + 96, + 0, + 128, + 253, + 91, + 97, + 23, + 68, + 97, + 19, + 88, + 86, + 91, + 96, + 32, + 130, + 1, + 53, + 135, + 129, + 17, + 21, + 97, + 23, + 86, + 87, + 96, + 0, + 128, + 253, + 91, + 97, + 23, + 101, + 143, + 96, + 32, + 131, + 134, + 1, + 1, + 97, + 19, + 208, + 86, + 91, + 130, + 82, + 80, + 96, + 64, + 130, + 1, + 53, + 135, + 129, + 17, + 21, + 97, + 23, + 122, + 87, + 96, + 0, + 128, + 253, + 91, + 97, + 23, + 137, + 143, + 96, + 32, + 131, + 134, + 1, + 1, + 97, + 19, + 208, + 86, + 91, + 96, + 32, + 131, + 1, + 82, + 80, + 128, + 134, + 82, + 80, + 80, + 96, + 32, + 132, + 1, + 147, + 80, + 96, + 32, + 129, + 1, + 144, + 80, + 97, + 23, + 14, + 86, + 91, + 80, + 151, + 154, + 150, + 153, + 80, + 151, + 96, + 96, + 1, + 53, + 150, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 96, + 32, + 130, + 132, + 3, + 18, + 21, + 97, + 23, + 203, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, + 129, + 20, + 97, + 18, + 186, + 87, + 96, + 0, + 128, + 253, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 17, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 129, + 129, + 3, + 129, + 129, + 17, + 21, + 97, + 24, + 11, + 87, + 97, + 24, + 11, + 97, + 23, + 226, + 86, + 91, + 146, + 145, + 80, + 80, + 86, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 50, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 96, + 1, + 129, + 129, + 28, + 144, + 130, + 22, + 128, + 97, + 24, + 59, + 87, + 96, + 127, + 130, + 22, + 145, + 80, + 91, + 96, + 32, + 130, + 16, + 129, + 3, + 97, + 24, + 91, + 87, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 34, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 80, + 145, + 144, + 80, + 86, + 91, + 96, + 0, + 130, + 81, + 97, + 24, + 115, + 129, + 132, + 96, + 32, + 135, + 1, + 97, + 17, + 236, + 86, + 91, + 145, + 144, + 145, + 1, + 146, + 145, + 80, + 80, + 86, + 91, + 96, + 31, + 130, + 17, + 21, + 97, + 24, + 199, + 87, + 96, + 0, + 129, + 129, + 82, + 96, + 32, + 129, + 32, + 96, + 31, + 133, + 1, + 96, + 5, + 28, + 129, + 1, + 96, + 32, + 134, + 16, + 21, + 97, + 24, + 164, + 87, + 80, + 128, + 91, + 96, + 31, + 133, + 1, + 96, + 5, + 28, + 130, + 1, + 145, + 80, + 91, + 129, + 129, + 16, + 21, + 97, + 24, + 195, + 87, + 130, + 129, + 85, + 96, + 1, + 1, + 97, + 24, + 176, + 86, + 91, + 80, + 80, + 80, + 91, + 80, + 80, + 80, + 86, + 91, + 129, + 81, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, + 97, + 24, + 230, + 87, + 97, + 24, + 230, + 97, + 19, + 25, + 86, + 91, + 97, + 24, + 250, + 129, + 97, + 24, + 244, + 132, + 84, + 97, + 24, + 39, + 86, + 91, + 132, + 97, + 24, + 125, + 86, + 91, + 96, + 32, + 128, + 96, + 31, + 131, + 17, + 96, + 1, + 129, + 20, + 97, + 25, + 47, + 87, + 96, + 0, + 132, + 21, + 97, + 25, + 23, + 87, + 80, + 133, + 131, + 1, + 81, + 91, + 96, + 0, + 25, + 96, + 3, + 134, + 144, + 27, + 28, + 25, + 22, + 96, + 1, + 133, + 144, + 27, + 23, + 133, + 85, + 97, + 24, + 195, + 86, + 91, + 96, + 0, + 133, + 129, + 82, + 96, + 32, + 129, + 32, + 96, + 31, + 25, + 134, + 22, + 145, + 91, + 130, + 129, + 16, + 21, + 97, + 25, + 94, + 87, + 136, + 134, + 1, + 81, + 130, + 85, + 148, + 132, + 1, + 148, + 96, + 1, + 144, + 145, + 1, + 144, + 132, + 1, + 97, + 25, + 63, + 86, + 91, + 80, + 133, + 130, + 16, + 21, + 97, + 25, + 124, + 87, + 135, + 133, + 1, + 81, + 96, + 0, + 25, + 96, + 3, + 136, + 144, + 27, + 96, + 248, + 22, + 28, + 25, + 22, + 129, + 85, + 91, + 80, + 80, + 80, + 80, + 80, + 96, + 1, + 144, + 129, + 27, + 1, + 144, + 85, + 80, + 86, + 91, + 96, + 0, + 96, + 1, + 130, + 1, + 97, + 25, + 158, + 87, + 97, + 25, + 158, + 97, + 23, + 226, + 86, + 91, + 80, + 96, + 1, + 1, + 144, + 86, + 91, + 96, + 0, + 96, + 32, + 128, + 131, + 1, + 129, + 132, + 82, + 128, + 133, + 81, + 128, + 131, + 82, + 96, + 64, + 134, + 1, + 145, + 80, + 96, + 64, + 129, + 96, + 5, + 27, + 135, + 1, + 1, + 146, + 80, + 131, + 135, + 1, + 96, + 0, + 91, + 130, + 129, + 16, + 21, + 97, + 25, + 250, + 87, + 96, + 63, + 25, + 136, + 134, + 3, + 1, + 132, + 82, + 97, + 25, + 232, + 133, + 131, + 81, + 97, + 18, + 60, + 86, + 91, + 148, + 80, + 146, + 133, + 1, + 146, + 144, + 133, + 1, + 144, + 96, + 1, + 1, + 97, + 25, + 204, + 86, + 91, + 80, + 146, + 151, + 150, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 129, + 81, + 128, + 132, + 82, + 96, + 32, + 128, + 133, + 1, + 148, + 80, + 128, + 132, + 1, + 96, + 0, + 91, + 131, + 129, + 16, + 21, + 97, + 26, + 55, + 87, + 129, + 81, + 135, + 82, + 149, + 130, + 1, + 149, + 144, + 130, + 1, + 144, + 96, + 1, + 1, + 97, + 26, + 27, + 86, + 91, + 80, + 148, + 149, + 148, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 64, + 129, + 82, + 96, + 0, + 97, + 26, + 85, + 96, + 64, + 131, + 1, + 133, + 97, + 26, + 7, + 86, + 91, + 130, + 129, + 3, + 96, + 32, + 132, + 1, + 82, + 97, + 18, + 158, + 129, + 133, + 97, + 18, + 16, + 86, + 91, + 96, + 0, + 96, + 32, + 130, + 132, + 3, + 18, + 21, + 97, + 26, + 121, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 81, + 128, + 21, + 21, + 129, + 20, + 97, + 18, + 186, + 87, + 96, + 0, + 128, + 253, + 91, + 131, + 129, + 82, + 96, + 0, + 96, + 32, + 96, + 96, + 129, + 132, + 1, + 82, + 97, + 26, + 163, + 96, + 96, + 132, + 1, + 134, + 97, + 26, + 7, + 86, + 91, + 96, + 64, + 132, + 130, + 3, + 129, + 134, + 1, + 82, + 129, + 134, + 81, + 128, + 132, + 82, + 132, + 132, + 1, + 145, + 80, + 132, + 129, + 96, + 5, + 27, + 133, + 1, + 1, + 133, + 137, + 1, + 96, + 0, + 91, + 131, + 129, + 16, + 21, + 97, + 27, + 21, + 87, + 134, + 131, + 3, + 96, + 31, + 25, + 1, + 133, + 82, + 129, + 81, + 128, + 81, + 135, + 133, + 82, + 97, + 26, + 233, + 136, + 134, + 1, + 130, + 97, + 18, + 16, + 86, + 91, + 145, + 138, + 1, + 81, + 133, + 131, + 3, + 134, + 140, + 1, + 82, + 145, + 144, + 80, + 97, + 27, + 1, + 129, + 131, + 97, + 18, + 16, + 86, + 91, + 150, + 138, + 1, + 150, + 148, + 80, + 80, + 80, + 144, + 135, + 1, + 144, + 96, + 1, + 1, + 97, + 26, + 197, + 86, + 91, + 80, + 144, + 155, + 154, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 254, + 162, + 100, + 105, + 112, + 102, + 115, + 88, + 34, + 18, + 32, + 69, + 217, + 51, + 111, + 11, + 99, + 20, + 121, + 100, + 150, + 199, + 161, + 207, + 22, + 12, + 25, + 180, + 42, + 97, + 148, + 58, + 144, + 251, + 91, + 190, + 44, + 252, + 239, + 16, + 123, + 181, + 219, + 100, + 115, + 111, + 108, + 99, + 67, + 0, + 8, + 18, + 0, + 51, + ]; + ///The bytecode of the contract. + pub static SUMMA_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( + __BYTECODE, + ); + #[rustfmt::skip] + const __DEPLOYED_BYTECODE: &[u8] = &[ + 96, + 128, + 96, + 64, + 82, + 52, + 128, + 21, + 97, + 0, + 16, + 87, + 96, + 0, + 128, + 253, + 91, + 80, + 96, + 4, + 54, + 16, + 97, + 0, + 158, + 87, + 96, + 0, + 53, + 96, + 224, + 28, + 128, + 99, + 163, + 196, + 188, + 248, + 17, + 97, + 0, + 102, + 87, + 128, + 99, + 163, + 196, + 188, + 248, + 20, + 97, + 1, + 105, + 87, + 128, + 99, + 199, + 221, + 202, + 14, + 20, + 97, + 1, + 140, + 87, + 128, + 99, + 200, + 229, + 129, + 71, + 20, + 97, + 1, + 159, + 87, + 128, + 99, + 218, + 100, + 167, + 80, + 20, + 97, + 1, + 194, + 87, + 128, + 99, + 242, + 253, + 227, + 139, + 20, 97, - 16, + 1, + 213, + 87, + 96, + 0, + 128, + 253, + 91, + 128, + 99, 25, - 129, - 133, + 179, + 57, + 104, + 20, 97, - 15, - 134, - 86, - 91, + 0, + 163, + 87, + 128, + 99, + 73, + 206, + 137, 151, - 150, - 80, - 80, - 80, - 80, - 80, - 80, + 20, + 97, + 0, + 204, + 87, + 128, + 99, + 113, 80, - 86, - 91, - 96, + 24, + 166, + 20, + 97, 0, - 96, - 32, + 250, + 87, 128, - 131, - 133, - 3, - 18, - 21, + 99, + 121, + 80, + 44, + 85, + 20, 97, - 16, - 55, + 1, + 4, 87, - 96, - 0, 128, - 253, + 99, + 141, + 165, + 203, 91, - 130, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, + 20, 97, - 16, - 79, + 1, + 78, 87, + 91, 96, 0, 128, 253, 91, - 129, - 133, - 1, - 145, - 80, - 133, + 97, + 0, + 182, + 97, + 0, + 177, + 54, 96, - 31, - 131, - 1, - 18, + 4, 97, - 16, - 99, - 87, + 17, + 211, + 86, + 91, + 97, + 1, + 232, + 86, + 91, 96, + 64, + 81, + 97, 0, + 195, + 145, + 144, + 97, + 18, + 167, + 86, + 91, + 96, + 64, + 81, 128, - 253, + 145, + 3, + 144, + 243, 91, - 129, - 53, 97, - 16, - 113, + 0, + 236, 97, - 13, - 190, - 130, + 0, + 218, + 54, + 96, + 4, 97, - 12, - 212, + 17, + 211, 86, 91, + 96, + 4, + 96, + 32, + 82, + 96, + 0, + 144, + 129, + 82, + 96, + 64, + 144, + 32, + 84, 129, + 86, + 91, + 96, + 64, + 81, + 144, 129, 82, 96, + 32, + 1, + 97, + 0, + 195, + 86, + 91, + 97, + 1, + 2, + 97, 5, + 0, + 86, + 91, + 0, + 91, + 96, + 1, + 84, + 97, + 1, + 42, + 144, + 97, + 255, + 255, + 128, + 130, + 22, 145, + 98, + 1, + 0, + 0, + 129, + 4, 144, 145, - 27, - 131, + 22, + 144, + 100, 1, + 0, + 0, + 0, + 0, + 144, + 4, + 96, + 255, + 22, + 131, + 86, + 91, + 96, + 64, + 128, + 81, + 97, + 255, + 255, + 148, + 133, + 22, + 129, + 82, + 147, + 144, + 146, + 22, + 96, + 32, 132, 1, + 82, + 96, + 255, + 22, 144, - 132, - 129, + 130, 1, - 144, - 136, - 131, - 17, - 21, - 97, - 16, - 144, - 87, + 82, + 96, 96, - 0, - 128, - 253, - 91, - 133, - 133, 1, - 91, - 131, - 129, - 16, - 21, - 97, - 17, - 113, - 87, - 128, - 53, - 133, - 129, - 17, - 21, 97, - 16, - 171, - 87, - 96, 0, - 128, - 253, + 195, + 86, 91, - 134, + 96, + 0, + 84, + 96, + 64, + 81, + 96, 1, 96, - 128, - 129, - 140, + 1, + 96, + 160, + 27, 3, + 144, + 145, + 22, + 129, + 82, 96, - 31, - 25, + 32, 1, - 18, - 21, 97, - 16, - 194, - 87, - 96, 0, - 128, - 129, - 253, - 91, - 97, - 16, - 202, - 97, - 12, - 128, + 195, 86, 91, - 136, - 130, + 97, 1, - 53, - 135, - 129, - 17, - 21, + 124, 97, - 16, - 220, - 87, + 1, + 119, + 54, 96, - 0, - 128, - 129, - 253, - 91, + 4, 97, - 16, - 234, - 141, - 139, - 131, - 134, - 1, - 1, + 17, + 211, + 86, + 91, 97, - 12, - 248, + 5, + 20, 86, 91, - 130, - 82, - 80, 96, 64, - 128, - 131, - 1, - 53, - 136, - 129, - 17, - 21, + 81, 97, - 17, - 1, - 87, - 96, 0, - 128, - 129, - 253, + 195, + 148, + 147, + 146, + 145, + 144, + 97, + 18, + 193, + 86, 91, 97, - 17, - 15, - 142, - 140, - 131, - 135, 1, + 2, + 97, 1, + 154, + 54, + 96, + 4, 97, - 12, - 248, + 20, + 64, 86, 91, - 139, - 132, - 1, - 82, - 80, - 96, - 96, - 128, - 132, - 1, - 53, - 137, - 129, - 17, - 21, 97, - 17, - 40, - 87, - 96, - 0, - 128, - 129, - 253, + 7, + 116, + 86, 91, 97, - 17, - 54, - 143, - 141, - 131, - 136, 1, + 178, + 97, 1, + 173, + 54, + 96, + 4, 97, - 12, - 248, + 22, + 5, 86, 91, - 131, - 133, - 1, + 97, + 10, + 21, + 86, + 91, + 96, + 64, + 81, + 144, + 21, + 21, + 129, 82, - 80, 96, - 128, - 132, + 32, 1, - 53, - 145, - 80, - 136, - 130, - 17, - 21, 97, - 17, - 80, - 87, - 96, 0, - 128, - 129, - 253, + 195, + 86, 91, 97, - 17, - 94, - 142, - 140, - 132, - 135, 1, + 2, + 97, 1, + 208, + 54, + 96, + 4, 97, - 12, - 248, + 22, + 114, 86, 91, - 144, - 131, - 1, - 82, - 80, - 132, - 82, - 80, - 145, - 134, + 97, + 11, + 219, + 86, + 91, + 97, 1, - 145, - 134, + 2, + 97, 1, + 227, + 54, + 96, + 4, 97, - 16, - 148, + 23, + 185, 86, 91, - 80, - 152, - 151, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 97, + 15, + 167, 86, 91, + 97, + 2, + 19, 96, - 0, + 64, + 81, 128, 96, - 0, + 128, + 1, 96, + 64, + 82, + 128, 96, - 132, - 134, - 3, - 18, - 21, - 97, - 17, - 147, - 87, 96, - 0, - 128, - 253, - 91, - 131, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, - 130, - 17, - 21, - 97, - 17, - 171, - 87, + 129, + 82, 96, - 0, - 128, - 253, - 91, - 97, - 17, - 183, - 135, - 131, - 136, + 32, 1, - 97, - 12, - 248, - 86, - 91, - 148, - 80, + 96, + 96, + 129, + 82, 96, 32, - 134, 1, - 53, - 145, - 80, - 128, - 130, - 17, - 21, - 97, - 17, - 205, - 87, 96, - 0, - 128, - 253, - 91, - 80, - 97, - 17, - 218, - 134, - 130, - 135, - 1, - 97, - 14, - 188, - 86, - 91, - 146, - 80, - 80, 96, - 64, - 132, + 129, + 82, + 96, + 32, 1, - 53, - 144, - 80, - 146, - 80, - 146, + 96, + 96, + 129, + 82, 80, - 146, + 144, 86, 91, 96, 0, - 96, - 32, 130, - 132, + 129, + 82, + 96, 3, - 18, - 21, + 96, + 32, + 82, + 96, + 64, + 144, + 32, + 84, 97, - 17, - 253, + 2, + 106, 87, 96, - 0, - 128, - 253, - 91, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, - 53, + 82, + 96, + 32, 96, + 4, + 130, 1, + 82, + 96, + 20, 96, + 36, + 130, 1, + 82, + 115, + 16, + 89, + 25, + 28, + 153, + 92, + 220, + 200, + 27, + 155, + 221, + 8, + 29, + 153, + 92, + 154, + 89, + 154, + 89, + 89, 96, - 160, + 98, 27, - 3, - 129, - 22, - 129, - 20, - 97, - 18, - 20, - 87, 96, - 0, - 128, - 253, - 91, - 147, - 146, - 80, - 80, - 80, - 86, + 68, + 130, + 1, + 82, + 96, + 100, + 1, 91, - 99, - 78, - 72, - 123, - 113, 96, - 224, - 27, + 64, + 81, + 128, + 145, + 3, + 144, + 253, + 91, 96, 0, + 130, + 129, 82, 96, - 17, + 3, 96, - 4, + 32, 82, 96, - 36, + 64, + 144, + 32, + 84, + 96, + 2, + 144, + 97, + 2, + 136, + 144, 96, - 0, - 253, - 91, - 128, - 130, 1, - 128, - 130, - 17, - 21, + 144, 97, - 4, - 217, + 23, + 248, + 86, + 91, + 129, + 84, + 129, + 16, + 97, + 2, + 152, 87, 97, - 4, - 217, + 2, + 152, 97, - 18, - 27, + 24, + 17, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, + 144, 96, 0, 82, 96, - 50, + 32, + 96, + 0, + 32, + 144, 96, 4, - 82, + 2, + 1, 96, - 36, + 64, + 81, + 128, 96, - 0, - 253, - 91, + 128, + 1, 96, - 0, + 64, + 82, + 144, + 129, 96, - 1, + 0, 130, 1, + 128, + 84, 97, - 18, - 108, - 87, - 97, - 18, - 108, + 2, + 193, + 144, 97, - 18, - 27, + 24, + 39, 86, 91, - 80, + 128, 96, + 31, 1, - 1, - 144, - 86, - 91, 96, - 0, - 96, - 64, + 32, 128, - 131, - 1, - 133, - 132, - 82, + 145, + 4, + 2, 96, 32, - 130, + 1, + 96, + 64, + 81, + 144, 129, - 134, 1, + 96, + 64, 82, - 129, - 134, - 81, 128, - 132, - 82, - 96, - 96, - 147, - 80, - 131, - 135, - 1, + 146, 145, - 80, - 131, + 144, 129, - 96, - 5, - 27, - 136, - 1, - 1, - 131, - 137, - 1, - 96, - 0, - 91, - 131, 129, - 16, - 21, - 97, - 18, - 250, - 87, - 137, - 131, - 3, + 82, 96, - 95, - 25, + 32, 1, - 133, - 82, - 129, - 81, + 130, 128, - 81, - 136, - 133, - 82, + 84, 97, - 18, - 197, - 137, - 134, - 1, - 130, + 2, + 237, + 144, 97, - 15, - 134, + 24, + 39, 86, 91, - 144, - 80, - 135, - 130, - 1, - 81, - 133, - 130, - 3, - 137, - 135, - 1, - 82, + 128, + 21, 97, - 18, - 220, - 130, - 130, + 3, + 58, + 87, + 128, + 96, + 31, + 16, 97, + 3, 15, - 134, - 86, - 91, - 146, - 139, - 1, - 81, - 149, - 139, - 1, - 149, - 144, - 149, - 82, - 80, - 148, - 134, - 1, - 148, - 146, - 80, - 144, - 133, + 87, + 97, 1, - 144, + 0, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, 96, + 32, 1, - 1, + 145, 97, - 18, - 161, - 86, - 91, - 80, - 144, - 154, - 153, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 3, + 58, 86, 91, - 96, - 64, - 128, - 130, - 82, - 131, - 81, - 144, 130, 1, - 129, + 145, 144, - 82, 96, 0, - 144, + 82, 96, 32, - 144, 96, - 96, - 132, - 1, + 0, + 32, 144, - 130, - 135, - 1, - 132, 91, - 130, 129, - 16, - 21, - 97, - 19, - 67, - 87, + 84, 129, - 81, - 132, 82, - 146, - 132, - 1, - 146, 144, - 132, + 96, + 1, 1, 144, 96, + 32, 1, - 1, - 97, - 19, - 39, - 86, - 91, - 80, - 80, - 80, + 128, 131, - 129, + 17, + 97, 3, + 29, + 87, + 130, + 144, + 3, + 96, + 31, + 22, 130, - 133, 1, - 82, - 97, - 19, - 87, - 129, - 134, - 97, - 15, - 134, - 86, + 145, 91, - 150, - 149, 80, 80, 80, 80, 80, - 80, - 86, - 91, - 96, - 0, + 129, + 82, 96, 32, + 1, + 96, + 1, 130, - 132, + 1, + 128, + 84, + 97, 3, - 18, - 21, + 83, + 144, 97, - 19, - 115, - 87, - 96, - 0, - 128, - 253, + 24, + 39, + 86, 91, - 129, - 81, 128, - 21, - 21, - 129, - 20, - 97, - 18, - 20, - 87, 96, - 0, + 31, + 1, + 96, + 32, 128, - 253, - 91, + 145, + 4, + 2, + 96, + 32, + 1, 96, + 64, + 81, + 144, + 129, 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, 129, 129, - 28, - 144, + 82, + 96, + 32, + 1, 130, - 22, 128, + 84, 97, - 19, - 151, - 87, - 96, + 3, 127, - 130, - 22, - 145, - 80, + 144, + 97, + 24, + 39, + 86, 91, + 128, + 21, + 97, + 3, + 204, + 87, + 128, 96, - 32, - 130, + 31, 16, - 129, - 3, 97, - 19, - 183, + 3, + 161, 87, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, + 97, + 1, 0, - 82, - 96, - 34, - 96, + 128, + 131, + 84, 4, + 2, + 131, 82, - 96, - 36, - 96, - 0, - 253, - 91, - 80, 145, - 144, - 80, - 86, - 91, - 96, - 32, - 129, - 82, - 96, - 0, - 97, - 4, - 214, 96, 32, - 131, 1, - 132, + 145, 97, - 15, - 134, + 3, + 204, 86, 91, - 96, - 31, 130, - 17, - 21, - 97, - 20, - 26, - 87, + 1, + 145, + 144, 96, 0, - 129, - 129, 82, 96, 32, - 129, + 96, + 0, 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, 96, - 31, - 133, 1, - 96, - 5, - 28, - 129, 1, + 144, 96, 32, - 134, - 16, - 21, + 1, + 128, + 131, + 17, 97, - 19, - 247, + 3, + 175, 87, - 80, - 128, - 91, + 130, + 144, + 3, 96, 31, - 133, - 1, - 96, - 5, - 28, - 130, - 1, - 145, - 80, - 91, - 129, - 129, - 16, - 21, - 97, - 20, 22, - 87, 130, - 129, - 85, - 96, 1, - 1, - 97, - 20, - 3, - 86, + 145, 91, 80, 80, 80, - 91, - 80, 80, 80, - 86, - 91, - 129, - 81, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 21, - 97, - 20, - 57, - 87, - 97, - 20, - 57, - 97, - 12, - 65, - 86, - 91, - 97, - 20, - 77, 129, - 97, - 20, - 71, - 132, + 82, + 96, + 32, + 1, + 96, + 2, + 130, + 1, + 128, 84, 97, - 19, - 131, - 86, - 91, - 132, + 3, + 229, + 144, 97, - 19, - 208, + 24, + 39, 86, 91, + 128, + 96, + 31, + 1, 96, 32, 128, + 145, + 4, + 2, 96, - 31, - 131, - 17, + 32, + 1, 96, + 64, + 81, + 144, + 129, 1, + 96, + 64, + 82, + 128, + 146, + 145, + 144, 129, - 20, - 97, - 20, + 129, + 82, + 96, + 32, + 1, 130, + 128, + 84, + 97, + 4, + 17, + 144, + 97, + 24, + 39, + 86, + 91, + 128, + 21, + 97, + 4, + 94, 87, + 128, 96, - 0, - 132, - 21, + 31, + 16, 97, - 20, - 106, + 4, + 51, 87, - 80, - 133, - 131, + 97, 1, - 81, - 91, - 96, 0, - 25, - 96, - 3, - 134, - 144, - 27, - 28, - 25, - 22, + 128, + 131, + 84, + 4, + 2, + 131, + 82, + 145, 96, + 32, 1, - 133, - 144, - 27, - 23, - 133, - 85, + 145, 97, - 20, - 22, + 4, + 94, 86, 91, + 130, + 1, + 145, + 144, 96, 0, - 133, - 129, 82, 96, 32, - 129, - 32, 96, - 31, - 25, - 134, - 22, - 145, + 0, + 32, + 144, 91, - 130, 129, - 16, - 21, - 97, - 20, - 177, - 87, - 136, - 134, - 1, - 81, - 130, - 85, - 148, - 132, - 1, - 148, + 84, + 129, + 82, + 144, 96, 1, - 144, - 145, 1, 144, - 132, + 96, + 32, 1, + 128, + 131, + 17, 97, - 20, - 146, - 86, - 91, - 80, - 133, - 130, - 16, - 21, - 97, - 20, - 207, + 4, + 65, 87, - 135, - 133, - 1, - 81, - 96, - 0, - 25, - 96, - 3, - 136, + 130, 144, - 27, + 3, 96, - 248, - 22, - 28, - 25, + 31, 22, - 129, - 85, + 130, + 1, + 145, 91, 80, 80, 80, 80, 80, + 129, + 82, 96, + 32, 1, - 144, - 129, - 27, + 96, + 3, + 130, 1, + 128, + 84, + 97, + 4, + 119, 144, - 85, - 80, + 97, + 24, + 39, 86, 91, + 128, 96, - 0, + 31, + 1, 96, 32, 128, - 131, - 1, - 129, - 132, - 82, - 128, - 133, - 81, - 128, - 131, - 82, - 96, - 64, - 146, - 80, - 130, - 134, - 1, 145, - 80, - 130, - 129, + 4, + 2, 96, - 5, - 27, - 135, - 1, - 1, - 132, - 136, + 32, 1, 96, - 0, - 91, - 131, + 64, + 81, + 144, 129, - 16, - 21, - 97, - 21, - 141, - 87, - 96, - 63, - 25, - 137, - 132, - 3, 1, - 133, - 82, - 129, - 81, 96, + 64, + 82, 128, + 146, + 145, + 144, 129, - 81, 129, - 134, 82, - 97, - 21, - 44, - 130, - 135, - 1, - 130, - 97, - 15, - 134, - 86, - 91, - 145, - 80, - 80, - 136, - 130, + 96, + 32, 1, - 81, - 133, 130, - 3, - 138, - 135, - 1, - 82, + 128, + 84, 97, - 21, - 68, - 130, - 130, + 4, + 163, + 144, 97, - 15, - 134, + 24, + 39, 86, 91, - 145, - 80, - 80, - 135, - 130, - 1, - 81, - 133, - 130, - 3, - 137, - 135, - 1, - 82, - 97, + 128, 21, - 92, - 130, - 130, 97, - 15, - 134, - 86, - 91, - 145, - 80, - 80, - 96, + 4, + 240, + 87, + 128, 96, + 31, + 16, + 97, + 4, + 197, + 87, + 97, + 1, + 0, 128, 131, - 1, - 81, - 146, - 80, - 133, - 130, - 3, - 129, - 135, - 1, - 82, - 80, - 97, - 21, - 121, - 129, + 84, + 4, + 2, 131, + 82, + 145, + 96, + 32, + 1, + 145, 97, - 15, - 134, + 4, + 240, 86, 91, - 150, - 137, + 130, 1, - 150, - 148, - 80, - 80, - 80, + 145, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, 144, - 134, - 1, + 91, + 129, + 84, + 129, + 82, 144, 96, 1, 1, + 144, + 96, + 32, + 1, + 128, + 131, + 17, 97, - 21, - 6, - 86, + 4, + 211, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, 91, 80, - 144, - 152, - 151, 80, 80, 80, 80, + 129, + 82, 80, 80, + 144, 80, + 145, + 144, 80, 86, - 254, - 162, - 100, - 105, - 112, - 102, - 115, - 88, - 34, - 18, - 32, - 243, - 47, - 132, - 14, - 221, - 200, - 12, - 236, - 130, - 235, - 143, + 91, + 97, 5, - 195, - 78, - 49, - 31, - 44, - 9, - 34, - 218, - 112, - 185, - 0, - 232, - 151, - 24, - 130, - 217, - 64, - 229, - 4, - 73, - 100, - 115, - 111, - 108, - 99, - 67, - 0, 8, - 18, - 0, - 51, - ]; - ///The bytecode of the contract. - pub static SUMMA_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( - __BYTECODE, - ); - #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = &[ - 96, - 128, - 96, - 64, - 82, - 52, - 128, - 21, 97, - 0, 16, - 87, - 96, - 0, - 128, - 253, + 32, + 86, 91, - 80, - 96, - 4, - 54, - 16, 97, - 0, - 158, - 87, + 5, + 18, 96, 0, - 53, - 96, - 224, - 28, - 128, - 99, - 141, - 165, - 203, - 91, - 17, 97, - 0, - 102, - 87, - 128, - 99, - 141, - 165, - 203, + 16, + 122, + 86, 91, - 20, - 97, - 1, - 54, - 87, - 128, - 99, - 163, - 196, - 188, - 248, - 20, - 97, - 1, - 81, - 87, - 128, - 99, - 199, - 221, - 202, - 14, - 20, - 97, - 1, - 116, - 87, - 128, - 99, - 200, - 229, + 86, + 91, + 96, + 2, 129, - 71, - 20, - 97, - 1, - 135, - 87, - 128, - 99, - 242, - 253, - 227, - 139, - 20, + 129, + 84, + 129, + 16, 97, - 1, - 154, + 5, + 36, 87, 96, 0, 128, 253, 91, - 128, - 99, - 35, - 235, - 148, - 160, - 20, - 97, - 0, - 163, - 87, - 128, - 99, - 65, - 58, - 159, - 45, - 20, - 97, + 144, + 96, 0, - 214, - 87, - 128, - 99, - 108, - 118, - 132, - 254, - 20, - 97, + 82, + 96, + 32, + 96, 0, - 235, - 87, - 128, - 99, - 113, - 80, - 24, - 166, - 20, - 97, - 1, - 14, - 87, - 128, - 99, - 127, - 59, - 251, - 46, - 20, - 97, + 32, + 144, + 96, + 4, + 2, 1, - 22, - 87, - 91, 96, 0, + 145, + 80, + 144, + 80, 128, - 253, - 91, - 97, + 96, 0, - 195, + 1, + 128, + 84, 97, - 0, - 177, - 54, - 96, - 4, + 5, + 71, + 144, 97, - 12, - 40, + 24, + 39, 86, 91, + 128, 96, - 2, + 31, + 1, 96, 32, - 82, - 96, - 0, - 144, - 129, - 82, + 128, + 145, + 4, + 2, 96, - 64, - 144, 32, - 84, - 129, - 86, - 91, + 1, 96, 64, 81, 144, 129, - 82, - 96, - 32, 1, - 91, 96, 64, - 81, + 82, 128, + 146, 145, - 3, 144, - 243, - 91, - 97, - 0, - 233, - 97, - 0, - 228, - 54, + 129, + 129, + 82, 96, - 4, + 32, + 1, + 130, + 128, + 84, 97, - 13, - 104, - 86, - 91, + 5, + 115, + 144, 97, - 1, - 173, + 24, + 39, 86, 91, - 0, - 91, - 97, - 0, - 254, + 128, + 21, 97, - 0, - 249, - 54, + 5, + 192, + 87, + 128, 96, - 4, + 31, + 16, 97, - 15, - 34, - 86, - 91, + 5, + 149, + 87, 97, + 1, + 0, + 128, + 131, + 84, 4, - 68, - 86, - 91, - 96, - 64, - 81, - 144, - 21, - 21, - 129, + 2, + 131, 82, + 145, 96, 32, 1, + 145, 97, - 0, - 205, - 86, - 91, - 97, - 0, - 233, - 97, - 4, - 223, + 5, + 192, 86, 91, - 97, - 0, - 195, - 97, + 130, 1, - 36, - 54, - 96, - 4, - 97, - 12, - 40, - 86, - 91, + 145, + 144, 96, - 3, + 0, + 82, 96, 32, - 82, 96, 0, + 32, 144, + 91, 129, - 82, - 96, - 64, - 144, - 32, 84, 129, - 86, - 91, - 96, - 0, - 84, - 96, - 64, - 81, + 82, + 144, 96, 1, - 96, 1, - 96, - 160, - 27, - 3, 144, - 145, - 22, - 129, - 82, 96, 32, 1, + 128, + 131, + 17, 97, - 0, - 205, - 86, + 5, + 163, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, 91, - 97, + 80, + 80, + 80, + 80, + 80, + 144, + 128, + 96, 1, - 100, - 97, 1, - 95, - 54, - 96, - 4, + 128, + 84, 97, - 12, - 40, - 86, - 91, + 5, + 213, + 144, 97, - 4, - 243, + 24, + 39, 86, 91, + 128, + 96, + 31, + 1, + 96, + 32, + 128, + 145, + 4, + 2, + 96, + 32, + 1, + 96, + 64, + 81, + 144, + 129, + 1, 96, 64, - 81, - 97, - 0, - 205, - 148, - 147, + 82, + 128, 146, 145, 144, - 97, - 15, - 204, - 86, - 91, - 97, - 0, - 233, - 97, + 129, + 129, + 82, + 96, + 32, 1, 130, - 54, - 96, - 4, + 128, + 84, 97, - 16, - 36, - 86, - 91, + 6, + 1, + 144, 97, - 7, - 83, + 24, + 39, 86, 91, + 128, + 21, 97, - 0, - 254, + 6, + 78, + 87, + 128, + 96, + 31, + 16, + 97, + 6, + 35, + 87, 97, 1, - 149, - 54, - 96, + 0, + 128, + 131, + 84, 4, + 2, + 131, + 82, + 145, + 96, + 32, + 1, + 145, 97, - 17, - 126, - 86, - 91, - 97, - 9, - 253, + 6, + 78, 86, 91, - 97, + 130, + 1, + 145, + 144, + 96, 0, - 233, - 97, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 91, + 129, + 84, + 129, + 82, + 144, + 96, 1, - 168, - 54, + 1, + 144, 96, - 4, - 97, + 32, + 1, + 128, + 131, 17, - 235, - 86, - 91, 97, - 11, - 5, - 86, + 6, + 49, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, 91, - 97, + 80, + 80, + 80, + 80, + 80, + 144, + 128, + 96, + 2, 1, - 181, + 128, + 84, 97, - 11, - 126, + 6, + 99, + 144, + 97, + 24, + 39, 86, 91, + 128, 96, + 31, 1, - 84, 96, - 0, - 3, - 97, + 32, + 128, + 145, + 4, 2, - 43, - 87, + 96, + 32, + 1, 96, 64, 81, - 98, - 70, - 27, - 205, + 144, + 129, + 1, 96, - 229, - 27, + 64, + 82, + 128, + 146, + 145, + 144, + 129, 129, 82, 96, 32, - 96, - 4, - 130, 1, - 82, - 96, - 54, - 96, - 36, 130, - 1, - 82, - 127, + 128, 84, - 104, - 101, - 32, - 67, - 69, - 88, - 32, - 104, 97, - 115, - 32, - 110, - 111, - 116, - 32, - 115, - 117, - 98, - 109, - 105, - 116, - 116, - 101, - 100, - 32, + 6, + 143, + 144, 97, - 110, - 121, - 32, + 24, + 39, + 86, + 91, + 128, + 21, 97, - 100, - 96, - 68, - 130, - 1, - 82, - 117, - 100, - 114, - 101, - 115, - 115, - 32, - 111, - 119, - 110, - 101, - 114, - 115, - 104, - 105, - 112, - 32, - 112, - 114, - 111, - 111, - 102, - 115, - 96, - 80, - 27, + 6, + 220, + 87, + 128, 96, - 100, - 130, + 31, + 16, + 97, + 6, + 177, + 87, + 97, 1, + 0, + 128, + 131, + 84, + 4, + 2, + 131, 82, + 145, 96, - 132, + 32, 1, + 145, + 97, + 6, + 220, + 86, 91, - 96, - 64, - 81, - 128, + 130, + 1, 145, - 3, 144, - 253, - 91, 96, 0, - 131, - 81, + 82, 96, - 1, - 97, - 2, - 59, - 145, + 32, + 96, + 0, + 32, 144, - 97, - 18, - 49, - 86, 91, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 129, + 84, + 129, + 82, + 144, + 96, + 1, + 1, + 144, + 96, + 32, + 1, + 128, + 131, 17, - 21, 97, - 2, - 83, + 6, + 191, 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, + 80, + 80, + 80, + 144, + 128, + 96, + 3, + 1, + 128, + 84, 97, - 2, - 83, + 6, + 241, + 144, 97, - 12, - 65, + 24, + 39, 86, 91, - 96, - 64, - 81, - 144, - 128, - 130, - 82, 128, 96, + 31, + 1, + 96, 32, + 128, + 145, + 4, 2, 96, 32, 1, - 130, + 96, + 64, + 81, + 144, + 129, 1, 96, 64, 82, 128, - 21, - 97, - 2, - 124, - 87, + 146, + 145, + 144, 129, + 129, + 82, 96, 32, 1, - 96, - 32, 130, - 2, 128, - 54, - 131, - 55, - 1, + 84, + 97, + 7, + 29, 144, - 80, + 97, + 24, + 39, + 86, 91, - 80, - 144, - 80, - 132, - 129, + 128, + 21, + 97, + 7, + 106, + 87, + 128, 96, - 0, - 129, - 81, - 129, + 31, 16, 97, - 2, - 147, + 7, + 63, 87, 97, + 1, + 0, + 128, + 131, + 84, + 4, 2, - 147, + 131, + 82, + 145, + 96, + 32, + 1, + 145, 97, - 18, - 68, + 7, + 106, 86, 91, + 130, + 1, + 145, + 144, + 96, + 0, + 82, 96, 32, - 2, 96, + 0, 32, - 1, - 1, + 144, + 91, 129, + 84, 129, 82, + 144, + 96, + 1, + 1, + 144, + 96, + 32, + 1, + 128, + 131, + 17, + 97, + 7, + 77, + 87, + 130, + 144, + 3, + 96, + 31, + 22, + 130, + 1, + 145, + 91, + 80, + 80, 80, 80, + 80, + 144, + 80, + 132, + 86, + 91, + 97, + 7, + 124, + 97, + 16, + 32, + 86, + 91, 96, 0, 91, - 132, + 129, 81, 129, 16, 21, 97, - 3, - 142, + 9, + 218, 87, - 132, - 129, + 96, + 0, + 130, + 130, 129, 81, 129, 16, 97, - 2, - 189, + 7, + 156, 87, 97, - 2, - 189, + 7, + 156, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -6610,60 +9399,70 @@ pub mod summa { 1, 81, 96, - 32, + 0, 1, 81, - 81, 96, - 0, - 20, - 21, - 128, - 21, - 97, - 2, - 249, - 87, - 80, - 132, - 129, - 129, + 64, 81, - 129, - 16, + 96, + 32, + 1, 97, - 2, - 231, - 87, + 7, + 184, + 145, + 144, 97, - 2, - 231, + 24, 97, - 18, - 68, 86, 91, 96, - 32, - 2, + 64, + 128, + 81, 96, - 32, - 1, + 31, + 25, + 129, + 132, + 3, 1, + 129, + 82, + 145, + 129, + 82, + 129, 81, 96, - 0, + 32, + 146, + 131, 1, - 81, - 81, + 32, 96, 0, - 20, + 129, + 129, + 82, + 96, + 3, + 144, + 147, + 82, + 145, + 32, + 84, + 144, + 145, + 80, + 128, 21, - 91, 97, - 3, - 53, + 8, + 46, 87, 96, 64, @@ -6685,58 +9484,230 @@ pub mod summa { 1, 82, 96, - 13, + 24, 96, 36, 130, 1, 82, + 127, + 65, + 100, + 100, + 114, + 101, + 115, + 115, + 32, + 97, 108, - 18, + 114, + 101, + 97, + 100, + 121, + 32, + 118, + 101, + 114, + 105, + 102, + 105, + 101, + 100, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 97, + 86, 91, - 157, - 152, + 96, + 2, + 132, + 132, + 129, + 81, + 129, + 16, + 97, + 8, + 66, + 87, + 97, + 8, + 66, + 97, + 24, + 17, + 86, 91, - 26, - 89, + 96, + 32, + 144, + 129, + 2, + 145, + 144, + 145, + 1, + 129, + 1, + 81, + 130, + 84, + 96, + 1, + 129, + 1, + 132, + 85, + 96, + 0, + 147, + 132, + 82, + 145, + 144, + 146, + 32, + 130, + 81, + 96, + 4, + 144, + 146, + 2, + 1, + 144, + 129, + 144, + 97, 8, + 116, + 144, + 130, + 97, 24, - 92, - 220, - 217, - 93, + 204, + 86, + 91, + 80, + 96, + 32, + 130, + 1, + 81, + 96, + 1, + 130, + 1, + 144, + 97, + 8, + 137, + 144, + 130, + 97, + 24, + 204, + 86, + 91, + 80, + 96, + 64, + 130, + 1, + 81, + 96, + 2, + 130, + 1, + 144, + 97, + 8, + 158, + 144, + 130, + 97, + 24, + 204, + 86, + 91, + 80, 96, - 154, - 27, 96, - 68, 130, 1, - 82, + 81, 96, - 100, + 3, + 130, 1, + 144, 97, - 2, - 34, + 8, + 179, + 144, + 130, + 97, + 24, + 204, 86, 91, + 80, + 80, + 96, + 2, + 84, + 96, + 0, 132, 129, - 129, + 82, + 96, + 3, + 96, + 32, + 82, + 96, + 64, + 144, + 32, + 85, + 80, + 131, 81, + 132, + 144, + 132, + 144, 129, 16, 97, - 3, - 71, + 8, + 220, 87, 97, - 3, - 71, + 8, + 220, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -6748,210 +9719,80 @@ pub mod summa { 1, 81, 96, - 64, + 0, 1, 81, - 130, - 130, + 81, 96, - 1, - 97, - 3, - 97, - 145, - 144, + 0, + 20, + 21, + 128, + 21, 97, - 18, - 49, - 86, - 91, + 9, + 24, + 87, + 80, + 131, + 131, 129, 81, 129, 16, 97, - 3, - 113, + 9, + 6, 87, 97, - 3, - 113, + 9, + 6, 97, - 18, - 68, + 24, + 17, 86, 91, 96, 32, - 144, - 129, - 2, - 145, - 144, - 145, - 1, - 1, - 82, - 128, - 97, - 3, - 134, - 129, - 97, - 18, - 90, - 86, - 91, - 145, - 80, - 80, - 97, 2, - 162, - 86, - 91, - 80, - 97, - 3, - 153, - 131, - 130, - 97, - 4, - 68, - 86, - 91, - 97, - 3, - 216, - 87, - 96, - 64, - 81, - 98, - 70, - 27, - 205, - 96, - 229, - 27, - 129, - 82, 96, 32, - 96, - 4, - 130, - 1, - 82, - 96, - 16, - 96, - 36, - 130, 1, - 82, - 111, - 36, - 183, - 59, - 48, - 182, - 52, - 178, - 16, - 45, - 37, - 144, - 56, - 57, - 55, - 183, - 179, - 96, - 129, - 27, - 96, - 68, - 130, 1, - 82, + 81, 96, - 100, + 32, 1, - 97, - 2, - 34, - 86, - 91, + 81, + 81, 96, 0, - 130, - 129, - 82, - 96, - 3, - 96, - 32, - 82, - 96, - 64, - 129, - 32, - 134, - 144, - 85, - 129, - 81, + 20, + 21, + 91, + 128, + 21, + 97, + 9, + 67, + 87, + 80, 131, - 145, - 127, - 4, - 115, - 88, - 28, - 60, - 244, - 55, - 175, - 197, - 34, - 7, - 216, - 140, - 225, - 84, - 26, - 251, - 199, - 206, - 159, - 219, 131, - 180, - 212, - 211, - 183, - 33, - 75, - 238, - 213, - 111, - 245, - 145, - 132, - 145, - 144, + 129, + 81, + 129, + 16, 97, - 4, - 30, + 9, + 49, 87, 97, - 4, - 30, + 9, + 49, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -6962,932 +9803,763 @@ pub mod summa { 1, 1, 81, - 134, 96, 64, + 1, 81, - 97, - 4, - 53, - 146, - 145, - 144, - 97, - 18, - 115, - 86, - 91, - 96, - 64, 81, + 96, + 0, + 20, + 21, + 91, 128, - 145, - 3, - 144, - 162, - 80, - 80, - 80, - 80, + 21, + 97, + 9, + 110, + 87, 80, - 86, - 91, - 96, - 64, + 131, + 131, + 129, 81, - 99, - 11, - 210, - 5, - 169, - 96, - 228, - 27, 129, - 82, - 96, - 0, - 144, - 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 22, - 144, - 99, - 189, - 32, - 90, - 144, - 144, + 16, 97, - 4, - 149, - 144, - 133, - 144, - 135, - 144, - 96, - 4, - 1, + 9, + 92, + 87, 97, - 19, - 10, + 9, + 92, + 97, + 24, + 17, 86, 91, 96, 32, + 2, 96, - 64, + 32, + 1, + 1, 81, - 128, - 131, - 3, - 129, - 134, - 90, - 250, - 21, - 128, - 21, - 97, - 4, - 178, - 87, - 61, 96, - 0, - 128, - 62, - 61, + 96, + 1, + 81, + 81, 96, 0, - 253, + 20, + 21, 91, - 80, - 80, - 80, - 80, + 97, + 9, + 197, + 87, 96, 64, 81, - 61, + 98, + 70, + 27, + 205, 96, - 31, - 25, + 229, + 27, + 129, + 82, 96, - 31, + 32, + 96, + 4, 130, 1, - 22, + 82, + 96, + 34, + 96, + 36, 130, 1, - 128, - 96, - 64, 82, - 80, - 129, - 1, - 144, - 97, - 4, - 214, - 145, - 144, - 97, - 19, - 97, - 86, - 91, - 144, - 80, - 91, - 146, - 145, - 80, - 80, - 86, - 91, - 97, - 4, - 231, - 97, - 11, - 126, - 86, - 91, + 127, + 73, + 110, + 118, 97, - 4, - 241, - 96, - 0, + 108, + 105, + 100, + 32, + 112, + 114, + 111, + 111, + 102, + 32, + 111, + 102, + 32, 97, - 11, - 216, - 86, - 91, - 86, - 91, + 100, + 100, + 114, + 101, + 115, + 115, + 32, + 111, + 119, + 110, + 101, + 114, + 115, + 104, 96, + 68, + 130, 1, - 129, - 129, - 84, - 129, - 16, + 82, 97, - 5, - 3, - 87, + 6, + 151, 96, - 0, - 128, - 253, - 91, - 144, + 244, + 27, 96, - 0, + 100, + 130, + 1, 82, 96, - 32, - 96, - 0, - 32, - 144, - 96, - 4, - 2, + 132, 1, - 96, - 0, - 145, + 97, + 2, + 97, + 86, + 91, 80, - 144, 80, 128, - 96, - 0, - 1, 128, - 84, 97, - 5, - 38, + 9, + 210, 144, 97, - 19, - 131, + 25, + 140, 86, 91, - 128, - 96, - 31, - 1, - 96, - 32, - 128, 145, - 4, - 2, + 80, + 80, + 97, + 7, + 127, + 86, + 91, + 80, + 127, + 56, + 35, + 21, + 212, + 213, + 106, 96, - 32, - 1, + 53, + 225, + 137, + 155, + 255, + 231, + 125, + 155, + 236, + 239, + 175, + 95, + 38, + 80, + 228, + 50, + 59, + 39, + 133, + 72, + 87, + 160, + 69, + 70, + 88, + 129, 96, 64, 81, + 97, + 10, + 10, + 145, 144, - 129, - 1, + 97, + 25, + 165, + 86, + 91, 96, 64, - 82, + 81, 128, - 146, 145, + 3, 144, - 129, - 129, - 82, - 96, - 32, - 1, - 130, - 128, - 84, - 97, - 5, - 82, - 144, - 97, - 19, - 131, + 161, + 80, 86, 91, - 128, - 21, - 97, - 5, - 159, - 87, - 128, 96, - 31, + 0, + 130, + 96, + 1, + 129, + 81, + 129, 16, 97, - 5, - 116, + 10, + 42, 87, 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, + 10, + 42, 97, - 5, - 159, + 24, + 17, 86, 91, - 130, - 1, - 145, - 144, - 96, - 0, - 82, 96, 32, + 2, 96, - 0, 32, - 144, - 91, - 129, - 84, - 129, - 82, - 144, - 96, 1, 1, - 144, + 81, 96, - 32, - 1, - 128, - 131, - 17, - 97, - 5, - 130, - 87, - 130, - 144, - 3, + 4, 96, - 31, - 22, - 130, - 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, - 144, - 128, + 0, + 132, + 129, + 82, 96, + 32, 1, - 1, - 128, - 84, - 97, - 5, - 180, 144, - 97, - 19, - 131, - 86, - 91, - 128, - 96, - 31, - 1, + 129, + 82, 96, 32, - 128, - 145, - 4, - 2, + 1, 96, + 0, 32, + 96, + 0, 1, + 84, + 20, + 97, + 10, + 137, + 87, 96, 64, 81, - 144, - 129, - 1, + 98, + 70, + 27, + 205, 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, + 229, + 27, 129, 82, 96, 32, + 96, + 4, + 130, 1, + 82, + 96, + 16, + 96, + 36, 130, - 128, + 1, + 82, + 111, + 18, + 91, + 157, + 152, + 91, + 26, + 89, + 8, + 19, 84, + 213, + 8, + 28, + 155, + 219, + 221, + 96, + 130, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, 97, - 5, - 224, - 144, + 2, 97, - 19, - 131, 86, 91, - 128, + 96, + 2, + 91, + 131, + 81, + 129, + 16, 21, 97, - 6, - 45, + 11, + 67, 87, - 128, - 96, - 31, + 131, + 129, + 129, + 81, + 129, 16, 97, - 6, - 2, + 10, + 167, 87, 97, - 1, - 0, - 128, - 131, - 84, - 4, + 10, + 167, + 97, + 24, + 17, + 86, + 91, + 96, + 32, 2, - 131, - 82, - 145, 96, 32, 1, - 145, - 97, - 6, - 45, - 86, - 91, - 130, 1, - 145, - 144, + 81, + 96, + 4, 96, 0, + 133, + 129, 82, 96, 32, - 96, - 0, - 32, + 1, 144, - 91, - 129, - 84, 129, 82, - 144, 96, + 32, 1, - 1, - 144, 96, + 0, 32, + 96, 1, - 128, + 1, + 96, + 2, 131, - 17, 97, - 6, - 16, - 87, - 130, - 144, - 3, - 96, - 31, - 22, - 130, - 1, + 10, + 210, 145, - 91, - 80, - 80, - 80, - 80, - 80, 144, - 128, - 96, - 2, - 1, - 128, + 97, + 23, + 248, + 86, + 91, + 129, 84, + 129, + 16, 97, - 6, - 66, - 144, + 10, + 226, + 87, 97, - 19, - 131, + 10, + 226, + 97, + 24, + 17, 86, 91, - 128, + 144, 96, - 31, - 1, + 0, + 82, 96, 32, - 128, - 145, - 4, - 2, 96, + 0, 32, 1, + 84, + 20, + 97, + 11, + 49, + 87, 96, 64, 81, - 144, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, + 82, + 96, + 32, + 96, + 4, + 130, 1, + 82, 96, - 64, + 20, + 96, + 36, + 130, + 1, 82, - 128, - 146, - 145, - 144, - 129, - 129, + 115, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 114, + 111, + 111, + 116, + 32, + 98, + 97, + 108, + 97, + 110, + 99, + 101, + 96, + 96, + 27, + 96, + 68, + 130, + 1, 82, 96, - 32, + 100, 1, - 130, - 128, - 84, 97, - 6, - 110, - 144, + 2, 97, - 19, - 131, 86, 91, 128, - 21, - 97, - 6, - 187, - 87, - 128, - 96, - 31, - 16, 97, - 6, - 144, - 87, + 11, + 59, + 129, 97, - 1, - 0, - 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, + 25, + 140, + 86, + 91, 145, + 80, + 80, 97, - 6, - 187, + 10, + 140, 86, 91, - 130, - 1, - 145, - 144, - 96, - 0, - 82, + 80, 96, - 32, + 64, + 81, + 99, + 11, + 210, + 5, + 169, 96, - 0, - 32, - 144, - 91, - 129, - 84, + 228, + 27, 129, 82, - 144, 96, 1, + 96, 1, - 144, 96, + 160, + 27, + 3, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 22, + 144, + 99, + 189, 32, - 1, - 128, - 131, - 17, + 90, + 144, + 144, 97, - 6, - 158, - 87, - 130, + 11, + 146, 144, - 3, - 96, - 31, - 22, - 130, - 1, - 145, - 91, - 80, - 80, - 80, - 80, - 80, + 134, + 144, + 136, 144, - 128, 96, - 3, + 4, 1, - 128, - 84, - 97, - 6, - 208, - 144, 97, - 19, - 131, + 26, + 66, 86, 91, - 128, - 96, - 31, - 1, - 96, - 32, - 128, - 145, - 4, - 2, 96, 32, - 1, 96, 64, 81, - 144, - 129, - 1, - 96, - 64, - 82, - 128, - 146, - 145, - 144, - 129, - 129, - 82, - 96, - 32, - 1, - 130, 128, - 84, - 97, - 6, - 252, - 144, - 97, - 19, 131, - 86, - 91, + 3, + 129, + 134, + 90, + 250, + 21, 128, 21, 97, - 7, - 73, + 11, + 175, 87, - 128, + 61, 96, - 31, - 16, - 97, - 7, - 30, - 87, - 97, - 1, 0, 128, - 131, - 84, - 4, - 2, - 131, - 82, - 145, - 96, - 32, - 1, - 145, - 97, - 7, - 73, - 86, - 91, - 130, - 1, - 145, - 144, - 96, - 0, - 82, - 96, - 32, + 62, + 61, 96, 0, - 32, - 144, + 253, 91, - 129, - 84, - 129, - 82, - 144, + 80, + 80, + 80, + 80, 96, - 1, - 1, - 144, + 64, + 81, + 61, 96, - 32, - 1, - 128, - 131, - 17, - 97, - 7, - 44, - 87, - 130, - 144, - 3, + 31, + 25, 96, 31, + 130, + 1, 22, 130, 1, + 128, + 96, + 64, + 82, + 80, + 129, + 1, + 144, + 97, + 11, + 211, 145, + 144, + 97, + 26, + 103, + 86, 91, + 148, + 147, 80, 80, 80, 80, - 80, - 144, - 80, - 132, 86, 91, 97, - 7, - 91, - 97, 11, - 126, + 227, + 97, + 16, + 32, 86, 91, + 131, 96, 0, - 91, - 129, - 81, - 129, - 16, - 21, + 3, 97, - 9, - 194, + 12, + 38, 87, 96, - 0, - 130, - 130, - 129, + 64, 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, 129, - 16, - 97, - 7, - 123, - 87, - 97, - 7, - 123, - 97, - 18, - 68, - 86, - 91, + 82, 96, 32, - 2, 96, - 32, - 1, + 4, + 130, 1, - 81, + 82, 96, - 0, + 16, + 96, + 36, + 130, 1, - 81, + 82, + 111, + 18, + 91, + 157, + 152, + 91, + 26, + 89, + 8, + 19, + 84, + 213, + 8, + 28, + 155, + 219, + 221, 96, - 64, - 81, + 130, + 27, 96, - 32, + 68, + 130, + 1, + 82, + 96, + 100, 1, 97, - 7, - 151, - 145, - 144, + 2, 97, - 19, - 189, 86, 91, - 96, - 64, - 128, - 81, - 96, - 31, - 25, - 129, - 132, - 3, - 1, - 129, - 82, - 145, - 129, - 82, 129, 81, - 96, - 32, - 146, 131, - 1, - 32, - 96, - 0, - 129, - 129, - 82, - 96, - 2, - 144, - 147, - 82, - 145, - 32, - 84, - 144, - 145, - 80, - 128, - 21, + 81, + 20, 97, - 8, - 13, + 12, + 149, 87, 96, 64, @@ -7909,281 +10581,280 @@ pub mod summa { 1, 82, 96, - 24, + 53, 96, 36, 130, 1, 82, 127, - 65, - 100, - 100, - 114, - 101, - 115, - 115, + 82, + 111, + 111, + 116, 32, + 108, + 105, 97, + 98, + 105, 108, - 114, + 105, + 116, + 105, 101, + 115, + 32, + 115, + 117, + 109, + 115, + 32, 97, + 110, 100, - 121, 32, - 118, - 101, - 114, + 108, 105, - 102, + 97, + 98, 105, - 101, + 108, + 96, + 68, + 130, + 1, + 82, + 116, + 13, + 46, + 141, + 44, + 174, 100, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 13, + 206, + 173, + 172, + 76, + 174, + 68, + 13, + 173, + 46, + 109, + 172, + 46, + 140, + 109, 96, - 68, + 91, + 27, + 96, + 100, 130, 1, 82, 96, - 100, + 132, 1, 97, 2, - 34, - 86, - 91, - 97, - 8, - 24, - 131, - 96, - 1, 97, - 18, - 49, 86, 91, 96, 0, - 131, - 129, - 82, - 96, - 2, - 96, - 32, - 82, - 96, - 64, - 144, - 32, - 85, - 131, + 130, 81, - 96, - 1, - 144, - 133, - 144, - 133, - 144, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 129, - 16, + 17, + 21, 97, - 8, - 62, + 12, + 177, 87, 97, - 8, - 62, + 12, + 177, 97, - 18, - 68, + 19, + 25, 86, 91, 96, - 32, + 64, + 81, 144, - 129, + 128, + 130, + 82, + 128, + 96, + 32, 2, - 145, - 144, - 145, - 1, - 129, + 96, + 32, 1, - 81, 130, - 84, - 96, 1, + 96, + 64, + 82, + 128, + 21, + 97, + 12, + 228, + 87, 129, + 96, + 32, 1, - 132, - 85, + 91, 96, - 0, - 147, - 132, + 96, + 129, 82, - 145, - 144, - 146, - 32, - 130, - 81, 96, - 4, + 32, + 1, 144, - 146, - 2, + 96, 1, 144, - 129, + 3, 144, + 129, 97, - 8, - 112, + 12, + 207, + 87, 144, - 130, - 97, - 20, - 31, - 86, + 80, 91, 80, + 144, + 80, 96, - 32, - 130, - 1, + 0, + 131, 81, - 96, - 1, - 130, - 1, - 144, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 21, 97, - 8, - 133, - 144, - 130, + 13, + 3, + 87, 97, - 20, - 31, + 13, + 3, + 97, + 19, + 25, 86, 91, - 80, 96, 64, - 130, - 1, 81, + 144, + 128, + 130, + 82, + 128, 96, + 32, 2, - 130, + 96, + 32, 1, - 144, - 97, - 8, - 154, - 144, 130, + 1, + 96, + 64, + 82, + 128, + 21, 97, - 20, - 31, - 86, + 13, + 54, + 87, + 129, + 96, + 32, + 1, 91, - 80, 96, 96, - 130, + 129, + 82, + 96, + 32, 1, - 81, + 144, 96, - 3, - 130, 1, 144, - 97, - 8, - 175, + 3, 144, - 130, - 97, - 20, - 31, - 86, - 91, - 80, - 80, - 80, - 131, - 131, - 129, - 81, 129, - 16, 97, - 8, - 196, + 13, + 33, 87, - 97, - 8, - 196, - 97, - 18, - 68, - 86, + 144, + 80, 91, - 96, - 32, - 2, - 96, - 32, - 1, - 1, - 81, + 80, + 144, + 80, 96, 0, - 1, - 81, + 91, + 132, 81, - 96, - 0, - 20, - 21, - 128, + 129, + 16, 21, 97, - 9, - 0, + 14, + 220, 87, - 80, - 131, - 131, + 132, + 129, 129, 81, 129, 16, 97, - 8, - 238, + 13, + 87, 87, 97, - 8, - 238, + 13, + 87, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -8203,30 +10874,29 @@ pub mod summa { 0, 20, 21, - 91, 128, 21, 97, - 9, - 43, + 13, + 147, 87, 80, - 131, - 131, + 132, + 129, 129, 81, 129, 16, 97, - 9, - 25, + 13, + 129, 87, 97, - 9, - 25, + 13, + 129, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -8238,7 +10908,7 @@ pub mod summa { 1, 81, 96, - 64, + 0, 1, 81, 81, @@ -8247,29 +10917,91 @@ pub mod summa { 20, 21, 91, - 128, - 21, 97, - 9, - 86, + 13, + 216, 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 22, + 96, + 36, + 130, + 1, + 82, + 117, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 99, + 114, + 121, + 112, + 116, + 111, + 99, + 117, + 114, + 114, + 101, + 110, + 99, + 121, + 96, 80, - 131, - 131, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 97, + 86, + 91, + 133, + 129, 129, 81, 129, 16, 97, - 9, - 68, + 13, + 234, 87, 97, - 9, - 68, + 13, + 234, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -8281,18 +11013,11 @@ pub mod summa { 1, 81, 96, - 96, - 1, - 81, - 81, - 96, 0, - 20, - 21, - 91, + 3, 97, - 9, - 173, + 14, + 83, 87, 96, 64, @@ -8314,55 +11039,62 @@ pub mod summa { 1, 82, 96, - 34, + 41, 96, 36, 130, 1, 82, 127, - 73, - 110, - 118, - 97, + 65, + 108, 108, - 105, - 100, 32, - 112, 114, 111, 111, - 102, - 32, - 111, - 102, + 116, 32, - 97, - 100, - 100, - 114, - 101, 115, + 117, + 109, 115, 32, + 115, + 104, 111, - 119, - 110, + 117, + 108, + 100, + 32, + 98, 101, + 32, + 103, 114, - 115, - 104, + 101, + 97, + 116, + 101, + 114, + 32, 96, 68, 130, 1, 82, + 104, + 116, + 104, 97, - 6, - 151, + 110, + 32, + 122, + 101, + 114, + 111, 96, - 244, + 184, 27, 96, 100, @@ -8374,108 +11106,55 @@ pub mod summa { 1, 97, 2, - 34, - 86, - 91, - 80, - 80, - 128, - 128, - 97, - 9, - 186, - 144, - 97, - 18, - 90, - 86, - 91, - 145, - 80, - 80, 97, - 7, - 94, 86, 91, - 80, - 127, - 56, - 35, - 21, - 212, - 213, - 106, - 96, - 53, - 225, - 137, - 155, - 255, - 231, - 125, - 155, - 236, - 239, - 175, - 95, - 38, - 80, - 228, - 50, - 59, - 39, - 133, - 72, - 87, - 160, - 69, - 70, - 88, + 132, + 129, 129, - 96, - 64, 81, + 129, + 16, 97, - 9, - 242, - 145, - 144, + 14, + 101, + 87, 97, - 20, - 223, + 14, + 101, + 97, + 24, + 17, 86, 91, 96, - 64, + 32, + 2, + 96, + 32, + 1, + 1, 81, - 128, - 145, - 3, - 144, - 161, - 80, - 86, - 91, 96, 0, - 130, - 96, 1, + 81, + 131, + 130, 129, 81, 129, 16, 97, - 10, - 18, + 14, + 131, 87, 97, - 10, - 18, + 14, + 131, 97, - 18, - 68, + 24, + 17, 86, 91, 96, @@ -8485,236 +11164,285 @@ pub mod summa { 32, 1, 1, + 129, + 144, + 82, + 80, + 132, + 129, + 129, 81, + 129, + 16, + 97, + 14, + 160, + 87, + 97, + 14, + 160, + 97, + 24, + 17, + 86, + 91, 96, - 3, + 32, + 2, 96, - 0, - 132, - 129, - 82, + 32, + 1, + 1, + 81, 96, 32, 1, - 144, + 81, + 130, + 130, 129, - 82, + 81, + 129, + 16, + 97, + 14, + 190, + 87, + 97, + 14, + 190, + 97, + 24, + 17, + 86, + 91, 96, 32, - 1, + 2, 96, - 0, 32, - 84, - 20, + 1, + 1, + 129, + 144, + 82, + 80, + 128, + 128, 97, - 10, - 110, - 87, + 14, + 212, + 144, + 97, + 25, + 140, + 86, + 91, + 145, + 80, + 80, + 97, + 13, + 60, + 86, + 91, + 80, 96, 64, + 128, 81, - 98, - 70, - 27, - 205, 96, - 229, - 27, + 128, + 129, + 1, + 130, + 82, + 135, 129, 82, 96, 32, - 96, - 4, + 128, 130, 1, + 136, + 129, 82, - 96, - 16, - 96, - 36, 130, + 132, 1, + 134, + 144, 82, - 111, - 18, - 91, - 157, - 152, - 91, - 26, - 89, - 8, - 19, - 84, - 213, - 8, - 28, - 155, - 219, - 221, 96, - 130, - 27, 96, - 68, - 130, + 131, 1, + 133, + 144, 82, 96, - 100, - 1, - 97, - 2, - 34, - 86, - 91, - 96, - 64, - 81, - 99, - 11, - 210, - 5, - 169, - 96, - 228, - 27, + 0, + 135, 129, 82, 96, - 1, - 96, - 1, - 96, - 160, - 27, - 3, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 22, - 144, - 99, - 189, - 32, - 90, - 144, + 4, + 131, + 82, + 147, 144, + 147, + 32, + 130, + 81, + 129, + 85, + 146, + 81, + 128, + 81, + 146, + 147, + 146, 97, - 10, - 188, - 144, - 134, - 144, - 136, - 144, + 15, + 39, + 146, 96, - 4, 1, + 133, + 1, + 146, + 1, + 144, 97, - 19, - 10, + 16, + 202, 86, 91, - 96, - 32, + 80, 96, 64, + 130, + 1, 81, 128, - 131, - 3, - 129, - 134, - 90, - 250, - 21, - 128, - 21, + 81, 97, - 10, - 217, - 87, - 61, + 15, + 67, + 145, 96, - 0, - 128, - 62, - 61, + 2, + 132, + 1, + 145, 96, - 0, - 253, + 32, + 144, + 145, + 1, + 144, + 97, + 17, + 21, + 86, 91, 80, - 80, - 80, - 80, 96, - 64, + 96, + 130, + 1, 81, - 61, + 128, + 81, + 97, + 15, + 95, + 145, 96, - 31, - 25, + 3, + 132, + 1, + 145, 96, - 31, - 130, + 32, + 144, + 145, 1, - 22, + 144, + 97, + 17, + 21, + 86, + 91, + 80, + 144, + 80, + 80, 130, - 1, + 127, + 136, + 191, + 199, + 56, + 156, + 184, + 49, + 234, + 2, + 8, + 255, + 16, + 109, + 166, + 245, + 201, + 248, 128, + 54, + 186, + 8, + 79, + 30, + 176, + 8, + 210, + 120, + 141, + 61, + 69, + 153, + 141, + 135, + 135, + 135, 96, 64, - 82, - 80, - 129, - 1, - 144, + 81, 97, - 10, - 253, + 15, + 151, + 147, + 146, 145, 144, 97, - 19, - 97, + 26, + 137, 86, 91, - 148, - 147, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 162, + 80, + 80, 80, 80, 80, @@ -8722,11 +11450,11 @@ pub mod summa { 86, 91, 97, - 11, - 13, + 15, + 175, 97, - 11, - 126, + 16, + 32, 86, 91, 96, @@ -8740,8 +11468,8 @@ pub mod summa { 129, 22, 97, - 11, - 114, + 16, + 20, 87, 96, 64, @@ -8827,16 +11555,16 @@ pub mod summa { 1, 97, 2, - 34, + 97, 86, 91, 97, - 11, - 123, + 16, + 29, 129, 97, - 11, - 216, + 16, + 122, 86, 91, 80, @@ -8857,8 +11585,8 @@ pub mod summa { 51, 20, 97, - 4, - 241, + 5, + 18, 87, 96, 64, @@ -8929,7 +11657,7 @@ pub mod summa { 1, 97, 2, - 34, + 97, 86, 91, 96, @@ -9012,789 +11740,708 @@ pub mod summa { 80, 86, 91, - 96, - 0, - 96, - 32, - 130, - 132, - 3, - 18, - 21, + 130, + 128, + 84, + 130, + 130, + 85, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 144, + 129, + 1, + 146, + 130, + 21, + 97, + 17, + 5, + 87, + 145, + 96, + 32, + 2, + 130, + 1, + 91, + 130, + 129, + 17, + 21, + 97, + 17, + 5, + 87, + 130, + 81, + 130, + 85, + 145, + 96, + 32, + 1, + 145, + 144, + 96, + 1, + 1, + 144, + 97, + 16, + 234, + 86, + 91, + 80, 97, - 12, - 58, - 87, - 96, - 0, - 128, - 253, + 17, + 17, + 146, + 145, + 80, + 97, + 17, + 103, + 86, 91, 80, - 53, - 145, 144, - 80, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, + 130, + 128, + 84, + 130, + 130, + 85, + 144, 96, 0, 82, 96, - 65, - 96, - 4, - 82, - 96, - 36, + 32, 96, 0, - 253, - 91, - 96, - 64, - 81, - 96, - 96, + 32, + 144, 129, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, + 146, + 130, + 21, + 97, 17, + 91, + 87, + 145, + 96, + 32, + 2, 130, + 1, + 91, 130, - 16, - 23, + 129, + 17, 21, 97, - 12, - 122, + 17, + 91, 87, + 130, + 81, + 130, + 144, 97, - 12, - 122, + 17, + 75, + 144, + 130, 97, - 12, - 65, + 24, + 204, 86, 91, + 80, + 145, 96, - 64, - 82, + 32, + 1, + 145, 144, - 86, - 91, - 96, - 64, - 81, 96, - 128, - 129, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, - 17, - 130, - 130, - 16, - 23, - 21, + 1, + 144, 97, - 12, - 122, - 87, + 17, + 53, + 86, + 91, + 80, 97, - 12, - 122, + 17, + 17, + 146, + 145, + 80, 97, - 12, - 65, + 17, + 124, 86, 91, - 96, - 64, - 81, - 96, - 31, + 91, + 128, 130, - 1, + 17, + 21, + 97, + 17, + 17, + 87, 96, - 31, - 25, - 22, + 0, 129, + 85, + 96, 1, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 129, + 1, + 97, 17, + 104, + 86, + 91, + 128, 130, - 130, - 16, - 23, + 17, 21, 97, - 12, - 204, + 17, + 17, 87, + 96, + 0, 97, - 12, - 204, + 17, + 144, + 130, + 130, 97, - 12, - 65, + 17, + 153, 86, 91, + 80, 96, - 64, - 82, - 145, - 144, + 1, + 1, + 97, + 17, + 124, + 86, + 91, 80, + 128, + 84, + 97, + 17, + 165, + 144, + 97, + 24, + 39, 86, 91, 96, 0, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, 130, - 17, - 21, + 85, + 128, + 96, + 31, + 16, 97, - 12, - 238, + 17, + 181, 87, - 97, - 12, - 238, - 97, - 12, - 65, + 80, + 80, 86, 91, - 80, 96, - 5, - 27, + 31, + 1, + 96, + 32, + 144, + 4, + 144, + 96, + 0, + 82, + 96, + 32, 96, + 0, 32, + 144, + 129, 1, 144, + 97, + 16, + 29, + 145, + 144, + 97, + 17, + 103, 86, 91, 96, 0, - 130, 96, - 31, - 131, - 1, + 32, + 130, + 132, + 3, 18, + 21, 97, - 13, - 9, + 17, + 229, 87, 96, 0, 128, 253, 91, - 129, + 80, 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, + 145, + 144, + 80, + 86, + 91, + 96, + 0, + 91, + 131, 129, - 17, + 16, 21, 97, - 13, - 35, + 18, + 7, 87, - 97, - 13, - 35, - 97, - 12, - 65, - 86, - 91, - 97, - 13, - 54, - 96, - 31, + 129, + 129, + 1, + 81, + 131, 130, 1, - 96, - 31, - 25, - 22, + 82, 96, 32, 1, 97, - 12, - 163, + 17, + 239, 86, 91, - 129, - 129, - 82, - 132, + 80, + 80, 96, - 32, - 131, - 134, - 1, + 0, + 145, 1, - 17, - 21, - 97, - 13, - 75, - 87, + 82, + 86, + 91, 96, 0, + 129, + 81, 128, - 253, - 91, + 132, + 82, + 97, + 18, + 40, 129, 96, 32, - 133, + 134, 1, 96, 32, - 131, + 134, 1, - 55, + 97, + 17, + 236, + 86, + 91, 96, - 0, - 145, - 129, + 31, + 1, + 96, + 31, + 25, + 22, + 146, + 144, + 146, 1, 96, 32, 1, - 145, - 144, - 145, - 82, - 147, 146, - 80, + 145, 80, 80, 86, 91, 96, 0, - 128, - 96, - 0, - 128, + 129, + 81, 96, 128, - 133, - 135, - 3, - 18, - 21, + 132, + 82, 97, - 13, - 126, - 87, + 18, + 81, 96, - 0, 128, - 253, - 91, - 132, - 53, - 147, - 80, - 96, - 32, 133, 1, - 53, - 103, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 255, - 128, 130, - 17, - 21, 97, - 13, - 157, - 87, - 96, - 0, - 128, - 253, + 18, + 16, + 86, 91, - 129, - 135, - 1, - 145, + 144, 80, - 135, 96, - 31, + 32, 131, 1, - 18, - 97, - 13, - 177, - 87, - 96, - 0, - 128, - 253, - 91, - 97, - 13, - 195, - 97, - 13, - 190, - 131, - 53, - 97, - 12, - 212, - 86, - 91, - 97, - 12, - 163, - 86, - 91, - 130, - 53, - 128, + 81, + 132, 130, - 82, + 3, 96, 32, - 128, - 131, + 134, 1, - 146, + 82, + 97, + 18, + 106, + 130, + 130, + 97, + 18, + 16, + 86, + 91, 145, + 80, + 80, 96, - 5, - 27, - 133, - 1, + 64, + 131, 1, - 138, - 129, - 17, - 21, - 97, - 13, - 226, - 87, - 96, - 0, - 128, - 253, - 91, + 81, + 132, + 130, + 3, 96, - 32, - 133, + 64, + 134, 1, - 91, - 129, - 129, - 16, - 21, + 82, 97, - 14, - 132, - 87, + 18, 132, - 129, - 53, - 17, - 21, + 130, + 130, 97, - 13, - 253, - 87, - 96, - 0, - 128, - 253, + 18, + 16, + 86, 91, - 128, - 53, - 134, - 1, + 145, + 80, + 80, 96, 96, - 129, - 142, + 131, + 1, + 81, + 132, + 130, 3, 96, - 31, - 25, + 96, + 134, 1, + 82, + 97, 18, - 21, + 158, + 130, + 130, 97, - 14, - 21, - 87, - 96, - 0, - 128, - 253, + 18, + 16, + 86, 91, - 97, - 14, - 29, - 97, - 12, - 87, + 149, + 148, + 80, + 80, + 80, + 80, + 80, 86, 91, 96, 32, - 130, - 1, - 53, - 135, 129, - 17, - 21, - 97, - 14, - 47, - 87, + 82, 96, 0, - 128, - 253, - 91, 97, - 14, - 62, - 143, + 18, + 186, 96, 32, 131, - 134, - 1, 1, + 132, 97, - 12, - 248, + 18, + 60, 86, 91, - 130, - 82, + 147, + 146, 80, + 80, + 80, + 86, + 91, 96, - 64, - 130, - 1, - 53, - 135, + 128, 129, - 17, - 21, - 97, - 14, - 83, - 87, + 82, 96, 0, - 128, - 253, - 91, 97, - 14, - 98, - 143, + 18, + 212, 96, - 32, + 128, 131, - 134, - 1, 1, + 135, 97, - 12, - 248, + 18, + 16, 86, 91, + 130, + 129, + 3, 96, 32, - 131, - 129, + 132, 1, - 145, - 144, - 145, 82, - 96, - 96, - 147, + 97, + 18, + 230, + 129, + 135, + 97, + 18, + 16, + 86, + 91, 144, - 147, - 1, - 53, + 80, + 130, + 129, + 3, 96, 64, - 131, - 1, - 82, - 80, - 133, - 82, - 147, 132, 1, - 147, - 1, + 82, 97, - 13, - 231, + 18, + 250, + 129, + 134, + 97, + 18, + 16, 86, 91, - 80, 144, - 150, - 80, - 80, - 80, - 96, - 64, - 135, - 1, - 53, - 145, 80, - 128, 130, - 17, - 21, - 97, - 14, - 158, - 87, + 129, + 3, 96, - 0, - 128, - 253, - 91, - 80, + 96, + 132, + 1, + 82, 97, + 19, 14, - 171, - 135, - 130, - 136, - 1, + 129, + 133, 97, - 12, - 248, + 18, + 16, 86, 91, - 148, 151, - 147, 150, 80, - 147, - 148, - 96, - 96, - 1, - 53, - 147, + 80, + 80, + 80, 80, 80, 80, 86, 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, 96, 0, - 130, + 82, 96, - 31, - 131, - 1, - 18, - 97, - 14, - 205, - 87, + 65, + 96, + 4, + 82, + 96, + 36, 96, 0, - 128, 253, 91, - 129, - 53, 96, - 32, + 64, + 81, + 96, + 128, + 129, + 1, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 129, + 17, + 130, + 130, + 16, + 23, + 21, 97, - 14, - 221, + 19, + 82, + 87, 97, - 13, - 190, - 131, + 19, + 82, 97, - 12, - 212, + 19, + 25, 86, 91, - 130, - 129, + 96, + 64, 82, + 144, + 86, + 91, 96, - 5, - 146, + 64, + 128, + 81, 144, - 146, - 27, - 132, - 1, 129, 1, - 145, - 129, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 129, - 1, - 144, - 134, - 132, 17, - 21, - 97, - 14, - 252, - 87, - 96, - 0, - 128, - 253, - 91, 130, - 134, - 1, - 91, - 132, - 129, + 130, 16, + 23, 21, 97, - 15, - 23, + 19, + 82, 87, - 128, - 53, - 131, + 97, + 19, 82, - 145, - 131, - 1, - 145, - 131, - 1, 97, - 15, - 0, - 86, - 91, - 80, - 150, - 149, - 80, - 80, - 80, - 80, - 80, - 80, + 19, + 25, 86, 91, 96, - 0, - 128, - 96, 64, - 131, - 133, - 3, - 18, - 21, - 97, - 15, - 53, - 87, + 81, 96, - 0, - 128, - 253, - 91, + 31, 130, - 53, + 1, + 96, + 31, + 25, + 22, + 129, + 1, 103, 255, 255, @@ -9804,229 +12451,176 @@ pub mod summa { 255, 255, 255, - 128, - 130, + 129, 17, + 130, + 130, + 16, + 23, 21, 97, - 15, - 77, + 19, + 164, 87, - 96, - 0, - 128, - 253, - 91, 97, - 15, - 89, - 134, - 131, - 135, - 1, + 19, + 164, 97, - 12, - 248, + 19, + 25, 86, 91, - 147, - 80, 96, - 32, - 133, - 1, - 53, + 64, + 82, 145, + 144, 80, - 128, + 86, + 91, + 96, + 0, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 130, 17, 21, 97, - 15, - 111, + 19, + 198, 87, - 96, - 0, - 128, - 253, - 91, - 80, 97, - 15, - 124, - 133, - 130, - 134, - 1, + 19, + 198, 97, - 14, - 188, + 19, + 25, 86, 91, - 145, - 80, - 80, - 146, 80, - 146, + 96, + 5, + 27, + 96, + 32, + 1, 144, - 80, 86, 91, 96, 0, - 129, - 81, - 128, - 132, - 82, + 130, + 96, + 31, + 131, + 1, + 18, + 97, + 19, + 225, + 87, 96, 0, + 128, + 253, 91, 129, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, 129, - 16, + 17, 21, 97, - 15, - 172, + 19, + 251, 87, - 96, - 32, - 129, - 133, - 1, - 129, - 1, - 81, - 134, - 131, - 1, - 130, - 1, - 82, - 1, 97, - 15, - 144, + 19, + 251, + 97, + 19, + 25, 86, 91, - 80, - 96, - 0, + 97, + 20, + 14, 96, - 32, + 31, 130, - 134, 1, - 1, - 82, - 96, - 32, 96, 31, 25, - 96, - 31, - 131, - 1, 22, - 133, - 1, + 96, + 32, 1, - 145, - 80, - 80, - 146, - 145, - 80, - 80, + 97, + 19, + 123, 86, 91, - 96, - 128, + 129, 129, 82, + 132, 96, - 0, - 97, - 15, - 223, - 96, - 128, + 32, 131, + 134, 1, - 135, + 1, + 17, + 21, 97, - 15, - 134, - 86, + 20, + 35, + 87, + 96, + 0, + 128, + 253, 91, - 130, 129, - 3, 96, 32, - 132, + 133, 1, - 82, - 97, - 15, - 241, - 129, - 135, - 97, - 15, - 134, - 86, - 91, - 144, - 80, - 130, - 129, - 3, 96, - 64, - 132, + 32, + 131, 1, - 82, - 97, - 16, - 5, - 129, - 134, - 97, - 15, - 134, - 86, - 91, - 144, - 80, - 130, - 129, - 3, + 55, 96, + 0, + 145, + 129, + 1, 96, - 132, + 32, 1, + 145, + 144, + 145, 82, - 97, - 16, - 25, - 129, - 133, - 97, - 15, - 134, - 86, - 91, - 151, - 150, - 80, - 80, - 80, - 80, + 147, + 146, 80, 80, 80, @@ -10043,8 +12637,8 @@ pub mod summa { 18, 21, 97, - 16, - 55, + 20, + 83, 87, 96, 0, @@ -10067,8 +12661,8 @@ pub mod summa { 17, 21, 97, - 16, - 79, + 20, + 107, 87, 96, 0, @@ -10087,8 +12681,8 @@ pub mod summa { 1, 18, 97, - 16, - 99, + 20, + 127, 87, 96, 0, @@ -10098,15 +12692,20 @@ pub mod summa { 129, 53, 97, - 16, - 113, + 20, + 146, 97, - 13, - 190, + 20, + 141, 130, 97, - 12, - 212, + 19, + 172, + 86, + 91, + 97, + 19, + 123, 86, 91, 129, @@ -10132,8 +12731,8 @@ pub mod summa { 17, 21, 97, - 16, - 144, + 20, + 177, 87, 96, 0, @@ -10149,8 +12748,8 @@ pub mod summa { 16, 21, 97, - 17, - 113, + 21, + 146, 87, 128, 53, @@ -10159,8 +12758,8 @@ pub mod summa { 17, 21, 97, - 16, - 171, + 20, + 204, 87, 96, 0, @@ -10181,8 +12780,8 @@ pub mod summa { 18, 21, 97, - 16, - 194, + 20, + 227, 87, 96, 0, @@ -10191,11 +12790,11 @@ pub mod summa { 253, 91, 97, - 16, - 202, + 20, + 235, 97, - 12, - 128, + 19, + 47, 86, 91, 136, @@ -10207,8 +12806,8 @@ pub mod summa { 17, 21, 97, - 16, - 220, + 20, + 253, 87, 96, 0, @@ -10217,8 +12816,8 @@ pub mod summa { 253, 91, 97, - 16, - 234, + 21, + 11, 141, 139, 131, @@ -10226,8 +12825,8 @@ pub mod summa { 1, 1, 97, - 12, - 248, + 19, + 208, 86, 91, 130, @@ -10244,8 +12843,8 @@ pub mod summa { 17, 21, 97, - 17, - 1, + 21, + 34, 87, 96, 0, @@ -10254,8 +12853,8 @@ pub mod summa { 253, 91, 97, - 17, - 15, + 21, + 48, 142, 140, 131, @@ -10263,8 +12862,8 @@ pub mod summa { 1, 1, 97, - 12, - 248, + 19, + 208, 86, 91, 139, @@ -10283,8 +12882,8 @@ pub mod summa { 17, 21, 97, - 17, - 40, + 21, + 73, 87, 96, 0, @@ -10293,8 +12892,8 @@ pub mod summa { 253, 91, 97, - 17, - 54, + 21, + 87, 143, 141, 131, @@ -10302,8 +12901,8 @@ pub mod summa { 1, 1, 97, - 12, - 248, + 19, + 208, 86, 91, 131, @@ -10323,8 +12922,8 @@ pub mod summa { 17, 21, 97, - 17, - 80, + 21, + 113, 87, 96, 0, @@ -10333,8 +12932,8 @@ pub mod summa { 253, 91, 97, - 17, - 94, + 21, + 127, 142, 140, 132, @@ -10342,8 +12941,8 @@ pub mod summa { 1, 1, 97, - 12, - 248, + 19, + 208, 86, 91, 144, @@ -10361,8 +12960,8 @@ pub mod summa { 134, 1, 97, - 16, - 148, + 20, + 181, 86, 91, 80, @@ -10380,6 +12979,108 @@ pub mod summa { 91, 96, 0, + 130, + 96, + 31, + 131, + 1, + 18, + 97, + 21, + 176, + 87, + 96, + 0, + 128, + 253, + 91, + 129, + 53, + 96, + 32, + 97, + 21, + 192, + 97, + 20, + 141, + 131, + 97, + 19, + 172, + 86, + 91, + 130, + 129, + 82, + 96, + 5, + 146, + 144, + 146, + 27, + 132, + 1, + 129, + 1, + 145, + 129, + 129, + 1, + 144, + 134, + 132, + 17, + 21, + 97, + 21, + 223, + 87, + 96, + 0, + 128, + 253, + 91, + 130, + 134, + 1, + 91, + 132, + 129, + 16, + 21, + 97, + 21, + 250, + 87, + 128, + 53, + 131, + 82, + 145, + 131, + 1, + 145, + 131, + 1, + 97, + 21, + 227, + 86, + 91, + 80, + 150, + 149, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 0, 128, 96, 0, @@ -10391,8 +13092,8 @@ pub mod summa { 18, 21, 97, - 17, - 147, + 22, + 26, 87, 96, 0, @@ -10415,8 +13116,8 @@ pub mod summa { 17, 21, 97, - 17, - 171, + 22, + 50, 87, 96, 0, @@ -10424,15 +13125,15 @@ pub mod summa { 253, 91, 97, - 17, - 183, + 22, + 62, 135, 131, 136, 1, 97, - 12, - 248, + 19, + 208, 86, 91, 148, @@ -10449,8 +13150,8 @@ pub mod summa { 17, 21, 97, - 17, - 205, + 22, + 84, 87, 96, 0, @@ -10459,15 +13160,15 @@ pub mod summa { 91, 80, 97, - 17, - 218, + 22, + 97, 134, 130, 135, 1, 97, - 14, - 188, + 21, + 159, 86, 91, 146, @@ -10489,370 +13190,323 @@ pub mod summa { 91, 96, 0, + 128, 96, - 32, - 130, - 132, + 0, + 128, + 96, + 128, + 133, + 135, 3, 18, 21, 97, - 17, - 253, + 22, + 136, 87, 96, 0, 128, 253, 91, - 129, + 132, 53, + 147, + 80, 96, + 32, + 133, 1, - 96, - 1, - 96, - 160, - 27, - 3, - 129, - 22, - 129, - 20, + 53, + 103, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 255, + 128, + 130, + 17, + 21, 97, - 18, - 20, + 22, + 167, 87, 96, 0, 128, 253, 91, - 147, - 146, - 80, - 80, - 80, + 97, + 22, + 179, + 136, + 131, + 137, + 1, + 97, + 21, + 159, 86, 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 17, - 96, - 4, - 82, - 96, - 36, + 148, + 80, 96, - 0, - 253, - 91, - 128, - 130, + 64, + 135, 1, + 53, + 145, + 80, 128, 130, 17, 21, 97, - 4, - 217, + 22, + 201, 87, - 97, - 4, - 217, - 97, - 18, - 27, - 86, - 91, - 99, - 78, - 72, - 123, - 113, - 96, - 224, - 27, - 96, - 0, - 82, - 96, - 50, - 96, - 4, - 82, - 96, - 36, 96, 0, + 128, 253, 91, - 96, - 0, - 96, + 129, + 135, 1, - 130, + 145, + 80, + 135, + 96, + 31, + 131, 1, - 97, 18, - 108, + 97, + 22, + 221, 87, + 96, + 0, + 128, + 253, + 91, 97, - 18, - 108, + 22, + 234, 97, - 18, - 27, - 86, - 91, - 80, - 96, - 1, - 1, - 144, + 20, + 141, + 131, + 53, + 97, + 19, + 172, 86, 91, - 96, - 0, - 96, - 64, + 130, + 53, 128, - 131, - 1, - 133, - 132, + 130, 82, 96, 32, - 130, - 129, - 134, - 1, - 82, - 129, - 134, - 81, 128, - 132, - 82, - 96, - 96, - 147, - 80, 131, - 135, 1, + 146, 145, - 80, - 131, - 129, 96, 5, 27, - 136, - 1, + 133, 1, - 131, - 137, 1, - 96, - 0, - 91, - 131, + 138, 129, - 16, + 17, 21, 97, - 18, - 250, + 23, + 9, 87, - 137, - 131, - 3, 96, - 95, - 25, - 1, - 133, - 82, - 129, - 81, + 0, 128, - 81, - 136, - 133, - 82, - 97, - 18, - 197, - 137, - 134, - 1, - 130, - 97, - 15, - 134, - 86, + 253, 91, - 144, - 80, - 135, - 130, - 1, - 81, + 96, + 32, 133, - 130, - 3, - 137, - 135, 1, - 82, + 91, + 129, + 129, + 16, + 21, 97, - 18, - 220, - 130, - 130, + 23, + 165, + 87, + 132, + 129, + 53, + 17, + 21, 97, - 15, - 134, - 86, + 23, + 36, + 87, + 96, + 0, + 128, + 253, 91, - 146, - 139, - 1, - 81, - 149, - 139, - 1, - 149, - 144, - 149, - 82, - 80, - 148, + 128, + 53, 134, 1, - 148, - 146, - 80, - 144, - 133, - 1, - 144, 96, + 64, + 129, + 142, + 3, + 96, + 31, + 25, 1, - 1, - 97, 18, - 161, - 86, + 21, + 97, + 23, + 60, + 87, + 96, + 0, + 128, + 253, 91, - 80, - 144, - 154, - 153, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, - 80, + 97, + 23, + 68, + 97, + 19, + 88, 86, 91, 96, - 64, - 128, - 130, - 82, - 131, - 81, - 144, + 32, 130, 1, + 53, + 135, 129, - 144, - 82, + 17, + 21, + 97, + 23, + 86, + 87, 96, 0, - 144, + 128, + 253, + 91, + 97, + 23, + 101, + 143, 96, 32, - 144, - 96, - 96, - 132, + 131, + 134, 1, - 144, - 130, - 135, 1, - 132, + 97, + 19, + 208, + 86, 91, 130, + 82, + 80, + 96, + 64, + 130, + 1, + 53, + 135, 129, - 16, + 17, 21, 97, - 19, - 67, + 23, + 122, 87, - 129, - 81, - 132, - 82, - 146, - 132, - 1, - 146, - 144, - 132, - 1, - 144, 96, + 0, + 128, + 253, + 91, + 97, + 23, + 137, + 143, + 96, + 32, + 131, + 134, 1, 1, 97, 19, - 39, + 208, 86, 91, + 96, + 32, + 131, + 1, + 82, 80, + 128, + 134, + 82, 80, 80, - 131, - 129, - 3, - 130, - 133, + 96, + 32, + 132, 1, - 82, - 97, - 19, - 87, + 147, + 80, + 96, + 32, 129, - 134, + 1, + 144, + 80, 97, - 15, - 134, + 23, + 14, 86, 91, + 80, + 151, + 154, + 150, + 153, + 80, + 151, + 96, + 96, + 1, + 53, 150, - 149, 80, 80, 80, @@ -10871,8 +13525,8 @@ pub mod summa { 18, 21, 97, - 19, - 115, + 23, + 203, 87, 96, 0, @@ -10880,21 +13534,97 @@ pub mod summa { 253, 91, 129, - 81, - 128, - 21, - 21, + 53, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 129, + 22, 129, 20, 97, 18, - 20, + 186, 87, 96, 0, 128, 253, 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 17, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, + 129, + 129, + 3, + 129, + 129, + 17, + 21, + 97, + 24, + 11, + 87, + 97, + 24, + 11, + 97, + 23, + 226, + 86, + 91, + 146, + 145, + 80, + 80, + 86, + 91, + 99, + 78, + 72, + 123, + 113, + 96, + 224, + 27, + 96, + 0, + 82, + 96, + 50, + 96, + 4, + 82, + 96, + 36, + 96, + 0, + 253, + 91, 96, 1, 129, @@ -10905,8 +13635,8 @@ pub mod summa { 22, 128, 97, - 19, - 151, + 24, + 59, 87, 96, 127, @@ -10922,8 +13652,8 @@ pub mod summa { 129, 3, 97, - 19, - 183, + 24, + 91, 87, 99, 78, @@ -10954,22 +13684,31 @@ pub mod summa { 86, 91, 96, - 32, - 129, - 82, - 96, 0, + 130, + 81, 97, - 4, - 214, + 24, + 115, + 129, + 132, 96, 32, - 131, + 135, 1, - 132, 97, - 15, - 134, + 17, + 236, + 86, + 91, + 145, + 144, + 145, + 1, + 146, + 145, + 80, + 80, 86, 91, 96, @@ -10978,8 +13717,8 @@ pub mod summa { 17, 21, 97, - 20, - 26, + 24, + 199, 87, 96, 0, @@ -11005,8 +13744,8 @@ pub mod summa { 16, 21, 97, - 19, - 247, + 24, + 164, 87, 80, 128, @@ -11028,8 +13767,8 @@ pub mod summa { 16, 21, 97, - 20, - 22, + 24, + 195, 87, 130, 129, @@ -11038,8 +13777,8 @@ pub mod summa { 1, 1, 97, - 20, - 3, + 24, + 176, 86, 91, 80, @@ -11066,35 +13805,35 @@ pub mod summa { 17, 21, 97, - 20, - 57, + 24, + 230, 87, 97, - 20, - 57, + 24, + 230, 97, - 12, - 65, + 19, + 25, 86, 91, 97, - 20, - 77, + 24, + 250, 129, 97, - 20, - 71, + 24, + 244, 132, 84, 97, - 19, - 131, + 24, + 39, 86, 91, 132, 97, - 19, - 208, + 24, + 125, 86, 91, 96, @@ -11109,16 +13848,16 @@ pub mod summa { 129, 20, 97, - 20, - 130, + 25, + 47, 87, 96, 0, 132, 21, 97, - 20, - 106, + 25, + 23, 87, 80, 133, @@ -11146,8 +13885,8 @@ pub mod summa { 133, 85, 97, - 20, - 22, + 24, + 195, 86, 91, 96, @@ -11166,118 +13905,392 @@ pub mod summa { 22, 145, 91, - 130, + 130, + 129, + 16, + 21, + 97, + 25, + 94, + 87, + 136, + 134, + 1, + 81, + 130, + 85, + 148, + 132, + 1, + 148, + 96, + 1, + 144, + 145, + 1, + 144, + 132, + 1, + 97, + 25, + 63, + 86, + 91, + 80, + 133, + 130, + 16, + 21, + 97, + 25, + 124, + 87, + 135, + 133, + 1, + 81, + 96, + 0, + 25, + 96, + 3, + 136, + 144, + 27, + 96, + 248, + 22, + 28, + 25, + 22, + 129, + 85, + 91, + 80, + 80, + 80, + 80, + 80, + 96, + 1, + 144, + 129, + 27, + 1, + 144, + 85, + 80, + 86, + 91, + 96, + 0, + 96, + 1, + 130, + 1, + 97, + 25, + 158, + 87, + 97, + 25, + 158, + 97, + 23, + 226, + 86, + 91, + 80, + 96, + 1, + 1, + 144, + 86, + 91, + 96, + 0, + 96, + 32, + 128, + 131, + 1, + 129, + 132, + 82, + 128, + 133, + 81, + 128, + 131, + 82, + 96, + 64, + 134, + 1, + 145, + 80, + 96, + 64, + 129, + 96, + 5, + 27, + 135, + 1, + 1, + 146, + 80, + 131, + 135, + 1, + 96, + 0, + 91, + 130, + 129, + 16, + 21, + 97, + 25, + 250, + 87, + 96, + 63, + 25, + 136, + 134, + 3, + 1, + 132, + 82, + 97, + 25, + 232, + 133, + 131, + 81, + 97, + 18, + 60, + 86, + 91, + 148, + 80, + 146, + 133, + 1, + 146, + 144, + 133, + 1, + 144, + 96, + 1, + 1, + 97, + 25, + 204, + 86, + 91, + 80, + 146, + 151, + 150, + 80, + 80, + 80, + 80, + 80, + 80, + 80, + 86, + 91, + 96, + 0, + 129, + 81, + 128, + 132, + 82, + 96, + 32, + 128, + 133, + 1, + 148, + 80, + 128, + 132, + 1, + 96, + 0, + 91, + 131, 129, 16, 21, 97, - 20, - 177, + 26, + 55, 87, - 136, - 134, - 1, + 129, 81, + 135, + 82, + 149, 130, - 85, - 148, - 132, - 1, - 148, - 96, 1, + 149, 144, - 145, + 130, 1, 144, - 132, + 96, + 1, 1, 97, - 20, - 146, + 26, + 27, 86, 91, 80, - 133, - 130, - 16, - 21, - 97, - 20, - 207, - 87, - 135, - 133, - 1, - 81, - 96, - 0, - 25, - 96, - 3, - 136, - 144, - 27, - 96, - 248, - 22, - 28, - 25, - 22, - 129, - 85, - 91, + 148, + 149, + 148, 80, 80, 80, 80, 80, + 86, + 91, + 96, + 64, + 129, + 82, + 96, + 0, + 97, + 26, + 85, 96, + 64, + 131, 1, - 144, + 133, + 97, + 26, + 7, + 86, + 91, + 130, 129, - 27, + 3, + 96, + 32, + 132, 1, - 144, - 85, - 80, + 82, + 97, + 18, + 158, + 129, + 133, + 97, + 18, + 16, 86, 91, 96, 0, 96, 32, - 128, - 131, - 1, - 129, + 130, 132, - 82, + 3, + 18, + 21, + 97, + 26, + 121, + 87, + 96, + 0, 128, - 133, + 253, + 91, + 129, 81, 128, + 21, + 21, + 129, + 20, + 97, + 18, + 186, + 87, + 96, + 0, + 128, + 253, + 91, 131, + 129, + 82, + 96, + 0, + 96, + 32, + 96, + 96, + 129, + 132, + 1, 82, + 97, + 26, + 163, + 96, + 96, + 132, + 1, + 134, + 97, + 26, + 7, + 86, + 91, 96, 64, - 146, - 80, + 132, 130, + 3, + 129, 134, 1, + 82, + 129, + 134, + 81, + 128, + 132, + 82, + 132, + 132, + 1, 145, 80, - 130, + 132, 129, 96, 5, 27, - 135, + 133, 1, 1, - 132, - 136, + 133, + 137, 1, 96, 0, @@ -11287,118 +14300,63 @@ pub mod summa { 16, 21, 97, + 27, 21, - 141, 87, + 134, + 131, + 3, 96, - 63, + 31, 25, - 137, - 132, - 3, 1, 133, 82, 129, 81, - 96, 128, - 129, 81, - 129, - 134, - 82, - 97, - 21, - 44, - 130, 135, - 1, - 130, - 97, - 15, - 134, - 86, - 91, - 145, - 80, - 80, - 136, - 130, - 1, - 81, 133, - 130, - 3, - 138, - 135, - 1, 82, 97, - 21, - 68, - 130, - 130, - 97, - 15, + 26, + 233, + 136, 134, - 86, - 91, - 145, - 80, - 80, - 135, - 130, 1, - 81, - 133, - 130, - 3, - 137, - 135, - 1, - 82, - 97, - 21, - 92, - 130, 130, 97, - 15, - 134, - 86, - 91, - 145, - 80, - 80, - 96, - 96, - 128, - 131, + 18, + 16, + 86, + 91, + 145, + 138, 1, 81, - 146, - 80, 133, - 130, + 131, 3, - 129, - 135, + 134, + 140, 1, 82, + 145, + 144, 80, 97, - 21, - 121, + 27, + 1, 129, 131, 97, - 15, - 134, + 18, + 16, 86, 91, 150, - 137, + 138, 1, 150, 148, @@ -11406,21 +14364,24 @@ pub mod summa { 80, 80, 144, - 134, + 135, 1, 144, 96, 1, 1, 97, - 21, - 6, + 26, + 197, 86, 91, 80, 144, - 152, - 151, + 155, + 154, + 80, + 80, + 80, 80, 80, 80, @@ -11441,38 +14402,38 @@ pub mod summa { 34, 18, 32, - 243, - 47, - 132, - 14, - 221, - 200, + 69, + 217, + 51, + 111, + 11, + 99, + 20, + 121, + 100, + 150, + 199, + 161, + 207, + 22, 12, - 236, - 130, - 235, - 143, - 5, - 195, - 78, - 49, - 31, + 25, + 180, + 42, + 97, + 148, + 58, + 144, + 251, + 91, + 190, 44, - 9, - 34, - 218, - 112, - 185, - 0, - 232, - 151, - 24, - 130, - 217, - 64, - 229, - 4, - 73, + 252, + 239, + 16, + 123, + 181, + 219, 100, 115, 111, @@ -11582,13 +14543,30 @@ pub mod summa { .method_hash([163, 196, 188, 248], p0) .expect("method not found (this should never happen)") } - ///Calls the contract's `mstRoots` (0x7f3bfb2e) function - pub fn mst_roots( + ///Calls the contract's `commitments` (0x49ce8997) function + pub fn commitments( &self, p0: ::ethers::core::types::U256, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([127, 59, 251, 46], p0) + .method_hash([73, 206, 137, 151], p0) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `config` (0x79502c55) function + pub fn config( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 80, 44, 85], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getAddressOwnershipProof` (0x19b33968) function + pub fn get_address_ownership_proof( + &self, + address_hash: [u8; 32], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([25, 179, 57, 104], address_hash) .expect("method not found (this should never happen)") } ///Calls the contract's `owner` (0x8da5cb5b) function @@ -11602,15 +14580,6 @@ pub mod summa { .method_hash([141, 165, 203, 91], ()) .expect("method not found (this should never happen)") } - ///Calls the contract's `ownershipProofByAddress` (0x23eb94a0) function - pub fn ownership_proof_by_address( - &self, - p0: [u8; 32], - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([35, 235, 148, 160], p0) - .expect("method not found (this should never happen)") - } ///Calls the contract's `renounceOwnership` (0x715018a6) function pub fn renounce_ownership( &self, @@ -11619,25 +14588,28 @@ pub mod summa { .method_hash([113, 80, 24, 166], ()) .expect("method not found (this should never happen)") } - ///Calls the contract's `submitProofOfAddressOwnership` (0xc7ddca0e) function - pub fn submit_proof_of_address_ownership( + ///Calls the contract's `submitCommitment` (0xda64a750) function + pub fn submit_commitment( &self, - address_ownership_proofs: ::std::vec::Vec, + mst_root: ::ethers::core::types::U256, + root_balances: ::std::vec::Vec<::ethers::core::types::U256>, + cryptocurrencies: ::std::vec::Vec, + timestamp: ::ethers::core::types::U256, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([199, 221, 202, 14], address_ownership_proofs) + .method_hash( + [218, 100, 167, 80], + (mst_root, root_balances, cryptocurrencies, timestamp), + ) .expect("method not found (this should never happen)") } - ///Calls the contract's `submitProofOfSolvency` (0x413a9f2d) function - pub fn submit_proof_of_solvency( + ///Calls the contract's `submitProofOfAddressOwnership` (0xc7ddca0e) function + pub fn submit_proof_of_address_ownership( &self, - mst_root: ::ethers::core::types::U256, - assets: ::std::vec::Vec, - proof: ::ethers::core::types::Bytes, - timestamp: ::ethers::core::types::U256, + address_ownership_proofs: ::std::vec::Vec, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([65, 58, 159, 45], (mst_root, assets, proof, timestamp)) + .method_hash([199, 221, 202, 14], address_ownership_proofs) .expect("method not found (this should never happen)") } ///Calls the contract's `transferOwnership` (0xf2fde38b) function @@ -11660,16 +14632,6 @@ pub mod summa { .method_hash([200, 229, 129, 71], (proof, public_inputs, timestamp)) .expect("method not found (this should never happen)") } - ///Calls the contract's `verifySolvencyProof` (0x6c7684fe) function - pub fn verify_solvency_proof( - &self, - proof: ::ethers::core::types::Bytes, - public_inputs: ::std::vec::Vec<::ethers::core::types::U256>, - ) -> ::ethers::contract::builders::ContractCall { - self.0 - .method_hash([108, 118, 132, 254], (proof, public_inputs)) - .expect("method not found (this should never happen)") - } ///Gets the contract's `AddressOwnershipProofSubmitted` event pub fn address_ownership_proof_submitted_filter( &self, @@ -11680,23 +14642,23 @@ pub mod summa { > { self.0.event() } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( + ///Gets the contract's `LiabilitiesCommitmentSubmitted` event + pub fn liabilities_commitment_submitted_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - OwnershipTransferredFilter, + LiabilitiesCommitmentSubmittedFilter, > { self.0.event() } - ///Gets the contract's `SolvencyProofSubmitted` event - pub fn solvency_proof_submitted_filter( + ///Gets the contract's `OwnershipTransferred` event + pub fn ownership_transferred_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - SolvencyProofSubmittedFilter, + OwnershipTransferredFilter, > { self.0.event() } @@ -11741,14 +14703,15 @@ pub mod summa { Hash )] #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" + name = "LiabilitiesCommitmentSubmitted", + abi = "LiabilitiesCommitmentSubmitted(uint256,uint256,uint256[],(string,string)[])" )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub previous_owner: ::ethers::core::types::Address, + pub struct LiabilitiesCommitmentSubmittedFilter { #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, + pub timestamp: ::ethers::core::types::U256, + pub mst_root: ::ethers::core::types::U256, + pub root_balances: ::std::vec::Vec<::ethers::core::types::U256>, + pub cryptocurrencies: ::std::vec::Vec, } #[derive( Clone, @@ -11761,21 +14724,21 @@ pub mod summa { Hash )] #[ethevent( - name = "SolvencyProofSubmitted", - abi = "SolvencyProofSubmitted(uint256,uint256,(string,string,uint256)[])" + name = "OwnershipTransferred", + abi = "OwnershipTransferred(address,address)" )] - pub struct SolvencyProofSubmittedFilter { + pub struct OwnershipTransferredFilter { #[ethevent(indexed)] - pub timestamp: ::ethers::core::types::U256, - pub mst_root: ::ethers::core::types::U256, - pub assets: ::std::vec::Vec, + pub previous_owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub new_owner: ::ethers::core::types::Address, } ///Container type for all of the contract's events #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] pub enum SummaEvents { AddressOwnershipProofSubmittedFilter(AddressOwnershipProofSubmittedFilter), + LiabilitiesCommitmentSubmittedFilter(LiabilitiesCommitmentSubmittedFilter), OwnershipTransferredFilter(OwnershipTransferredFilter), - SolvencyProofSubmittedFilter(SolvencyProofSubmittedFilter), } impl ::ethers::contract::EthLogDecode for SummaEvents { fn decode_log( @@ -11784,12 +14747,12 @@ pub mod summa { if let Ok(decoded) = AddressOwnershipProofSubmittedFilter::decode_log(log) { return Ok(SummaEvents::AddressOwnershipProofSubmittedFilter(decoded)); } + if let Ok(decoded) = LiabilitiesCommitmentSubmittedFilter::decode_log(log) { + return Ok(SummaEvents::LiabilitiesCommitmentSubmittedFilter(decoded)); + } if let Ok(decoded) = OwnershipTransferredFilter::decode_log(log) { return Ok(SummaEvents::OwnershipTransferredFilter(decoded)); } - if let Ok(decoded) = SolvencyProofSubmittedFilter::decode_log(log) { - return Ok(SummaEvents::SolvencyProofSubmittedFilter(decoded)); - } Err(::ethers::core::abi::Error::InvalidData) } } @@ -11799,10 +14762,10 @@ pub mod summa { Self::AddressOwnershipProofSubmittedFilter(element) => { ::core::fmt::Display::fmt(element, f) } - Self::OwnershipTransferredFilter(element) => { + Self::LiabilitiesCommitmentSubmittedFilter(element) => { ::core::fmt::Display::fmt(element, f) } - Self::SolvencyProofSubmittedFilter(element) => { + Self::OwnershipTransferredFilter(element) => { ::core::fmt::Display::fmt(element, f) } } @@ -11813,16 +14776,16 @@ pub mod summa { Self::AddressOwnershipProofSubmittedFilter(value) } } + impl ::core::convert::From for SummaEvents { + fn from(value: LiabilitiesCommitmentSubmittedFilter) -> Self { + Self::LiabilitiesCommitmentSubmittedFilter(value) + } + } impl ::core::convert::From for SummaEvents { fn from(value: OwnershipTransferredFilter) -> Self { Self::OwnershipTransferredFilter(value) } } - impl ::core::convert::From for SummaEvents { - fn from(value: SolvencyProofSubmittedFilter) -> Self { - Self::SolvencyProofSubmittedFilter(value) - } - } ///Container type for all input parameters for the `addressOwnershipProofs` function with signature `addressOwnershipProofs(uint256)` and selector `0xa3c4bcf8` #[derive( Clone, @@ -11836,7 +14799,7 @@ pub mod summa { )] #[ethcall(name = "addressOwnershipProofs", abi = "addressOwnershipProofs(uint256)")] pub struct AddressOwnershipProofsCall(pub ::ethers::core::types::U256); - ///Container type for all input parameters for the `mstRoots` function with signature `mstRoots(uint256)` and selector `0x7f3bfb2e` + ///Container type for all input parameters for the `commitments` function with signature `commitments(uint256)` and selector `0x49ce8997` #[derive( Clone, ::ethers::contract::EthCall, @@ -11847,9 +14810,9 @@ pub mod summa { Eq, Hash )] - #[ethcall(name = "mstRoots", abi = "mstRoots(uint256)")] - pub struct MstRootsCall(pub ::ethers::core::types::U256); - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` + #[ethcall(name = "commitments", abi = "commitments(uint256)")] + pub struct CommitmentsCall(pub ::ethers::core::types::U256); + ///Container type for all input parameters for the `config` function with signature `config()` and selector `0x79502c55` #[derive( Clone, ::ethers::contract::EthCall, @@ -11860,9 +14823,9 @@ pub mod summa { Eq, Hash )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `ownershipProofByAddress` function with signature `ownershipProofByAddress(bytes32)` and selector `0x23eb94a0` + #[ethcall(name = "config", abi = "config()")] + pub struct ConfigCall; + ///Container type for all input parameters for the `getAddressOwnershipProof` function with signature `getAddressOwnershipProof(bytes32)` and selector `0x19b33968` #[derive( Clone, ::ethers::contract::EthCall, @@ -11874,10 +14837,25 @@ pub mod summa { Hash )] #[ethcall( - name = "ownershipProofByAddress", - abi = "ownershipProofByAddress(bytes32)" + name = "getAddressOwnershipProof", + abi = "getAddressOwnershipProof(bytes32)" + )] + pub struct GetAddressOwnershipProofCall { + pub address_hash: [u8; 32], + } + ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash )] - pub struct OwnershipProofByAddressCall(pub [u8; 32]); + #[ethcall(name = "owner", abi = "owner()")] + pub struct OwnerCall; ///Container type for all input parameters for the `renounceOwnership` function with signature `renounceOwnership()` and selector `0x715018a6` #[derive( Clone, @@ -11891,7 +14869,7 @@ pub mod summa { )] #[ethcall(name = "renounceOwnership", abi = "renounceOwnership()")] pub struct RenounceOwnershipCall; - ///Container type for all input parameters for the `submitProofOfAddressOwnership` function with signature `submitProofOfAddressOwnership((string,string,bytes,bytes)[])` and selector `0xc7ddca0e` + ///Container type for all input parameters for the `submitCommitment` function with signature `submitCommitment(uint256,uint256[],(string,string)[],uint256)` and selector `0xda64a750` #[derive( Clone, ::ethers::contract::EthCall, @@ -11903,13 +14881,16 @@ pub mod summa { Hash )] #[ethcall( - name = "submitProofOfAddressOwnership", - abi = "submitProofOfAddressOwnership((string,string,bytes,bytes)[])" + name = "submitCommitment", + abi = "submitCommitment(uint256,uint256[],(string,string)[],uint256)" )] - pub struct SubmitProofOfAddressOwnershipCall { - pub address_ownership_proofs: ::std::vec::Vec, + pub struct SubmitCommitmentCall { + pub mst_root: ::ethers::core::types::U256, + pub root_balances: ::std::vec::Vec<::ethers::core::types::U256>, + pub cryptocurrencies: ::std::vec::Vec, + pub timestamp: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `submitProofOfSolvency` function with signature `submitProofOfSolvency(uint256,(string,string,uint256)[],bytes,uint256)` and selector `0x413a9f2d` + ///Container type for all input parameters for the `submitProofOfAddressOwnership` function with signature `submitProofOfAddressOwnership((string,string,bytes,bytes)[])` and selector `0xc7ddca0e` #[derive( Clone, ::ethers::contract::EthCall, @@ -11921,14 +14902,11 @@ pub mod summa { Hash )] #[ethcall( - name = "submitProofOfSolvency", - abi = "submitProofOfSolvency(uint256,(string,string,uint256)[],bytes,uint256)" + name = "submitProofOfAddressOwnership", + abi = "submitProofOfAddressOwnership((string,string,bytes,bytes)[])" )] - pub struct SubmitProofOfSolvencyCall { - pub mst_root: ::ethers::core::types::U256, - pub assets: ::std::vec::Vec, - pub proof: ::ethers::core::types::Bytes, - pub timestamp: ::ethers::core::types::U256, + pub struct SubmitProofOfAddressOwnershipCall { + pub address_ownership_proofs: ::std::vec::Vec, } ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` #[derive( @@ -11965,38 +14943,19 @@ pub mod summa { pub public_inputs: ::std::vec::Vec<::ethers::core::types::U256>, pub timestamp: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `verifySolvencyProof` function with signature `verifySolvencyProof(bytes,uint256[])` and selector `0x6c7684fe` - #[derive( - Clone, - ::ethers::contract::EthCall, - ::ethers::contract::EthDisplay, - Default, - Debug, - PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "verifySolvencyProof", - abi = "verifySolvencyProof(bytes,uint256[])" - )] - pub struct VerifySolvencyProofCall { - pub proof: ::ethers::core::types::Bytes, - pub public_inputs: ::std::vec::Vec<::ethers::core::types::U256>, - } ///Container type for all of the contract's call #[derive(Clone, ::ethers::contract::EthAbiType, Debug, PartialEq, Eq, Hash)] pub enum SummaCalls { AddressOwnershipProofs(AddressOwnershipProofsCall), - MstRoots(MstRootsCall), + Commitments(CommitmentsCall), + Config(ConfigCall), + GetAddressOwnershipProof(GetAddressOwnershipProofCall), Owner(OwnerCall), - OwnershipProofByAddress(OwnershipProofByAddressCall), RenounceOwnership(RenounceOwnershipCall), + SubmitCommitment(SubmitCommitmentCall), SubmitProofOfAddressOwnership(SubmitProofOfAddressOwnershipCall), - SubmitProofOfSolvency(SubmitProofOfSolvencyCall), TransferOwnership(TransferOwnershipCall), VerifyInclusionProof(VerifyInclusionProofCall), - VerifySolvencyProof(VerifySolvencyProofCall), } impl ::ethers::core::abi::AbiDecode for SummaCalls { fn decode( @@ -12010,18 +14969,22 @@ pub mod summa { return Ok(Self::AddressOwnershipProofs(decoded)); } if let Ok(decoded) - = ::decode(data) { - return Ok(Self::MstRoots(decoded)); + = ::decode(data) { + return Ok(Self::Commitments(decoded)); } if let Ok(decoded) - = ::decode(data) { - return Ok(Self::Owner(decoded)); + = ::decode(data) { + return Ok(Self::Config(decoded)); } if let Ok(decoded) - = ::decode( + = ::decode( data, ) { - return Ok(Self::OwnershipProofByAddress(decoded)); + return Ok(Self::GetAddressOwnershipProof(decoded)); + } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Owner(decoded)); } if let Ok(decoded) = ::decode( @@ -12030,16 +14993,16 @@ pub mod summa { return Ok(Self::RenounceOwnership(decoded)); } if let Ok(decoded) - = ::decode( + = ::decode( data, ) { - return Ok(Self::SubmitProofOfAddressOwnership(decoded)); + return Ok(Self::SubmitCommitment(decoded)); } if let Ok(decoded) - = ::decode( + = ::decode( data, ) { - return Ok(Self::SubmitProofOfSolvency(decoded)); + return Ok(Self::SubmitProofOfAddressOwnership(decoded)); } if let Ok(decoded) = ::decode( @@ -12053,12 +15016,6 @@ pub mod summa { ) { return Ok(Self::VerifyInclusionProof(decoded)); } - if let Ok(decoded) - = ::decode( - data, - ) { - return Ok(Self::VerifySolvencyProof(decoded)); - } Err(::ethers::core::abi::Error::InvalidData.into()) } } @@ -12068,20 +15025,21 @@ pub mod summa { Self::AddressOwnershipProofs(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::MstRoots(element) => { + Self::Commitments(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::OwnershipProofByAddress(element) => { + Self::Config(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GetAddressOwnershipProof(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::RenounceOwnership(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::SubmitProofOfAddressOwnership(element) => { + Self::SubmitCommitment(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::SubmitProofOfSolvency(element) => { + Self::SubmitProofOfAddressOwnership(element) => { ::ethers::core::abi::AbiEncode::encode(element) } Self::TransferOwnership(element) => { @@ -12090,9 +15048,6 @@ pub mod summa { Self::VerifyInclusionProof(element) => { ::ethers::core::abi::AbiEncode::encode(element) } - Self::VerifySolvencyProof(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } } } } @@ -12102,25 +15057,21 @@ pub mod summa { Self::AddressOwnershipProofs(element) => { ::core::fmt::Display::fmt(element, f) } - Self::MstRoots(element) => ::core::fmt::Display::fmt(element, f), - Self::Owner(element) => ::core::fmt::Display::fmt(element, f), - Self::OwnershipProofByAddress(element) => { + Self::Commitments(element) => ::core::fmt::Display::fmt(element, f), + Self::Config(element) => ::core::fmt::Display::fmt(element, f), + Self::GetAddressOwnershipProof(element) => { ::core::fmt::Display::fmt(element, f) } + Self::Owner(element) => ::core::fmt::Display::fmt(element, f), Self::RenounceOwnership(element) => ::core::fmt::Display::fmt(element, f), + Self::SubmitCommitment(element) => ::core::fmt::Display::fmt(element, f), Self::SubmitProofOfAddressOwnership(element) => { ::core::fmt::Display::fmt(element, f) } - Self::SubmitProofOfSolvency(element) => { - ::core::fmt::Display::fmt(element, f) - } Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), Self::VerifyInclusionProof(element) => { ::core::fmt::Display::fmt(element, f) } - Self::VerifySolvencyProof(element) => { - ::core::fmt::Display::fmt(element, f) - } } } } @@ -12129,9 +15080,19 @@ pub mod summa { Self::AddressOwnershipProofs(value) } } - impl ::core::convert::From for SummaCalls { - fn from(value: MstRootsCall) -> Self { - Self::MstRoots(value) + impl ::core::convert::From for SummaCalls { + fn from(value: CommitmentsCall) -> Self { + Self::Commitments(value) + } + } + impl ::core::convert::From for SummaCalls { + fn from(value: ConfigCall) -> Self { + Self::Config(value) + } + } + impl ::core::convert::From for SummaCalls { + fn from(value: GetAddressOwnershipProofCall) -> Self { + Self::GetAddressOwnershipProof(value) } } impl ::core::convert::From for SummaCalls { @@ -12139,26 +15100,21 @@ pub mod summa { Self::Owner(value) } } - impl ::core::convert::From for SummaCalls { - fn from(value: OwnershipProofByAddressCall) -> Self { - Self::OwnershipProofByAddress(value) - } - } impl ::core::convert::From for SummaCalls { fn from(value: RenounceOwnershipCall) -> Self { Self::RenounceOwnership(value) } } + impl ::core::convert::From for SummaCalls { + fn from(value: SubmitCommitmentCall) -> Self { + Self::SubmitCommitment(value) + } + } impl ::core::convert::From for SummaCalls { fn from(value: SubmitProofOfAddressOwnershipCall) -> Self { Self::SubmitProofOfAddressOwnership(value) } } - impl ::core::convert::From for SummaCalls { - fn from(value: SubmitProofOfSolvencyCall) -> Self { - Self::SubmitProofOfSolvency(value) - } - } impl ::core::convert::From for SummaCalls { fn from(value: TransferOwnershipCall) -> Self { Self::TransferOwnership(value) @@ -12169,11 +15125,6 @@ pub mod summa { Self::VerifyInclusionProof(value) } } - impl ::core::convert::From for SummaCalls { - fn from(value: VerifySolvencyProofCall) -> Self { - Self::VerifySolvencyProof(value) - } - } ///Container type for all return fields from the `addressOwnershipProofs` function with signature `addressOwnershipProofs(uint256)` and selector `0xa3c4bcf8` #[derive( Clone, @@ -12191,7 +15142,7 @@ pub mod summa { pub signature: ::ethers::core::types::Bytes, pub message: ::ethers::core::types::Bytes, } - ///Container type for all return fields from the `mstRoots` function with signature `mstRoots(uint256)` and selector `0x7f3bfb2e` + ///Container type for all return fields from the `commitments` function with signature `commitments(uint256)` and selector `0x49ce8997` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -12202,8 +15153,10 @@ pub mod summa { Eq, Hash )] - pub struct MstRootsReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` + pub struct CommitmentsReturn { + pub mst_root: ::ethers::core::types::U256, + } + ///Container type for all return fields from the `config` function with signature `config()` and selector `0x79502c55` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -12214,8 +15167,12 @@ pub mod summa { Eq, Hash )] - pub struct OwnerReturn(pub ::ethers::core::types::Address); - ///Container type for all return fields from the `ownershipProofByAddress` function with signature `ownershipProofByAddress(bytes32)` and selector `0x23eb94a0` + pub struct ConfigReturn { + pub mst_levels: u16, + pub currencies_count: u16, + pub balance_byte_range: u8, + } + ///Container type for all return fields from the `getAddressOwnershipProof` function with signature `getAddressOwnershipProof(bytes32)` and selector `0x19b33968` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -12226,8 +15183,8 @@ pub mod summa { Eq, Hash )] - pub struct OwnershipProofByAddressReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `verifyInclusionProof` function with signature `verifyInclusionProof(bytes,uint256[],uint256)` and selector `0xc8e58147` + pub struct GetAddressOwnershipProofReturn(pub AddressOwnershipProof); + ///Container type for all return fields from the `owner` function with signature `owner()` and selector `0x8da5cb5b` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -12238,8 +15195,8 @@ pub mod summa { Eq, Hash )] - pub struct VerifyInclusionProofReturn(pub bool); - ///Container type for all return fields from the `verifySolvencyProof` function with signature `verifySolvencyProof(bytes,uint256[])` and selector `0x6c7684fe` + pub struct OwnerReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `verifyInclusionProof` function with signature `verifyInclusionProof(bytes,uint256[],uint256)` and selector `0xc8e58147` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -12250,7 +15207,7 @@ pub mod summa { Eq, Hash )] - pub struct VerifySolvencyProofReturn(pub bool); + pub struct VerifyInclusionProofReturn(pub bool); ///`AddressOwnershipProof(string,string,bytes,bytes)` #[derive( Clone, @@ -12268,7 +15225,7 @@ pub mod summa { pub signature: ::ethers::core::types::Bytes, pub message: ::ethers::core::types::Bytes, } - ///`Asset(string,string,uint256)` + ///`Cryptocurrency(string,string)` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -12279,9 +15236,8 @@ pub mod summa { Eq, Hash )] - pub struct Asset { - pub asset_name: ::std::string::String, + pub struct Cryptocurrency { + pub name: ::std::string::String, pub chain: ::std::string::String, - pub amount: ::ethers::core::types::U256, } } diff --git a/backend/src/contracts/signer.rs b/backend/src/contracts/signer.rs index 3d1fd129..abab24ef 100644 --- a/backend/src/contracts/signer.rs +++ b/backend/src/contracts/signer.rs @@ -2,13 +2,13 @@ use ethers::{ prelude::SignerMiddleware, providers::{Http, Middleware, Provider}, signers::{LocalWallet, Signer}, - types::Address, + types::{Address, U256}, }; use serde_json::Value; use std::{error::Error, fs::File, io::BufReader, path::Path, str::FromStr, sync::Arc}; use tokio::sync::Mutex; -use super::generated::summa_contract::{AddressOwnershipProof, Asset}; +use super::generated::summa_contract::{AddressOwnershipProof, Cryptocurrency}; use crate::contracts::generated::summa_contract::Summa; pub enum AddressInput { @@ -104,21 +104,24 @@ impl SummaSigner { Ok(()) } - pub async fn submit_proof_of_solvency( + pub async fn submit_commitment( &self, - mst_root: ethers::types::U256, - assets: Vec, - proof: ethers::types::Bytes, - timestamp: ethers::types::U256, + mst_root: U256, + root_sums: Vec, + cryptocurrencies: Vec, + timestamp: U256, ) -> Result<(), Box> { let lock_guard = self.nonce_lock.lock().await; - let submit_proof_of_solvency_call = &self - .summa_contract - .submit_proof_of_solvency(mst_root, assets, proof, timestamp); + let submit_liability_commitment = &self.summa_contract.submit_commitment( + mst_root, + root_sums, + cryptocurrencies, + timestamp, + ); // To prevent nonce collision, we lock the nonce before sending the transaction - let tx = submit_proof_of_solvency_call.send().await?; + let tx = submit_liability_commitment.send().await?; // Wait for the pending transaction to be mined tx.await?; diff --git a/backend/src/lib.rs b/backend/src/lib.rs index 6c363179..534b1b65 100644 --- a/backend/src/lib.rs +++ b/backend/src/lib.rs @@ -2,3 +2,4 @@ pub mod apis; pub mod contracts; pub mod tests; +pub use summa_solvency::merkle_sum_tree; diff --git a/backend/src/tests.rs b/backend/src/tests.rs index aac59da5..dbf1980c 100644 --- a/backend/src/tests.rs +++ b/backend/src/tests.rs @@ -1,7 +1,8 @@ use std::{sync::Arc, time::Duration}; use ethers::{ - prelude::{ContractFactory, SignerMiddleware}, + abi::Token, + prelude::SignerMiddleware, providers::{Http, Middleware, Provider}, signers::{LocalWallet, Signer}, types::{H160, U256}, @@ -9,11 +10,7 @@ use ethers::{ }; use tokio::time; -use crate::contracts::generated::{ - inclusion_verifier::InclusionVerifier, solvency_verifier::SolvencyVerifier, - summa_contract::Summa, -}; -use crate::contracts::mock::mock_erc20::{MockERC20, MOCKERC20_ABI, MOCKERC20_BYTECODE}; +use crate::contracts::generated::{inclusion_verifier::InclusionVerifier, summa_contract::Summa}; // Setup test environment on the anvil instance pub async fn initialize_test_env( @@ -53,7 +50,6 @@ pub async fn initialize_test_env( )); // Send RPC requests with `anvil_setBalance` method via provider to set ETH balance of `cex_addr_1` and `cex_addr_2` - // This is for meeting `proof_of_solvency` test conditions for addr in [cex_addr_1, cex_addr_2].iter().copied() { let _res = client .provider() @@ -61,66 +57,43 @@ pub async fn initialize_test_env( .await; } - // Mock ERC20 contract deployment - // Creating a factory to deploy a mock ERC20 contract - let factory = ContractFactory::new( - MOCKERC20_ABI.to_owned(), - MOCKERC20_BYTECODE.to_owned(), - Arc::clone(&client), - ); - - // Deploy Mock ERC20 contract - let mock_erc20_deployment = factory.deploy(()).unwrap().send().await.unwrap(); - - // Creating an interface for the deployed mock ERC20 contract - let mock_erc20 = MockERC20::new(mock_erc20_deployment.address(), Arc::clone(&client)); - - // Mint some token to `cex_addr_2` - let mint_call = mock_erc20.mint(cex_addr_2, U256::from(556863)); - assert!(mint_call.send().await.is_ok()); - - time::sleep(Duration::from_millis(500)).await; - - if block_time != None { + if block_time.is_some() { time::sleep(Duration::from_secs(block_time.unwrap())).await; }; - // Deploy verifier contracts before deploy Summa contract - let solvency_verifer_contract = SolvencyVerifier::deploy(Arc::clone(&client), ()) + let inclusion_verifier_contract = InclusionVerifier::deploy(Arc::clone(&client), ()) .unwrap() .send() .await .unwrap(); - if block_time != None { + if block_time.is_some() { time::sleep(Duration::from_secs(block_time.unwrap())).await; }; - let inclusion_verifer_contract = InclusionVerifier::deploy(Arc::clone(&client), ()) + // The number of levels of the Merkle sum tree + let mst_levels = 4; + //The number of cryptocurrencies supported by the Merkle sum tree + let currencies_count = 2; + // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree + let balance_byte_range = 14; + + let args: &[Token] = &[ + Token::Address(inclusion_verifier_contract.address()), + Token::Uint(mst_levels.into()), + Token::Uint(currencies_count.into()), + Token::Uint(balance_byte_range.into()), + ]; + // Deploy Summa contract + let summa_contract = Summa::deploy(Arc::clone(&client), args) .unwrap() .send() .await .unwrap(); - if block_time != None { - time::sleep(Duration::from_secs(block_time.unwrap())).await; - }; - - // Deploy Summa contract - let summa_contract = Summa::deploy( - Arc::clone(&client), - ( - solvency_verifer_contract.address(), - inclusion_verifer_contract.address(), - ), - ) - .unwrap() - .send() - .await - .unwrap(); - time::sleep(Duration::from_secs(3)).await; + (anvil, cex_addr_1, cex_addr_2, client, summa_contract) } @@ -133,6 +106,7 @@ mod test { utils::to_checksum, }; use std::{convert::TryFrom, error::Error}; + use summa_solvency::merkle_sum_tree::MerkleSumTree; use tokio::{ join, time::{sleep, Duration}, @@ -141,8 +115,8 @@ mod test { use crate::apis::{address_ownership::AddressOwnership, round::Round}; use crate::contracts::{ generated::summa_contract::{ - AddressOwnershipProof, AddressOwnershipProofSubmittedFilter, Asset, - SolvencyProofSubmittedFilter, + AddressOwnershipProof, AddressOwnershipProofSubmittedFilter, Cryptocurrency, + LiabilitiesCommitmentSubmittedFilter, }, signer::{AddressInput, SummaSigner}, }; @@ -170,7 +144,7 @@ mod test { } #[tokio::test] - async fn test_concurrent_proof_submissions() -> Result<(), Box> { + async fn test_concurrent_sumbit_commitments() -> Result<(), Box> { let (anvil, _, _, _, summa_contract) = initialize_test_env(Some(1)).await; // This test ensures that two proofs, when dispatched concurrently, do not result in nonce collisions. @@ -183,32 +157,22 @@ mod test { ) .await?; - // At least one address ownership proof should be submitted before submitting solvency proof - let mut address_ownership_client = - AddressOwnership::new(&signer, "src/apis/csv/signatures.csv").unwrap(); - - address_ownership_client - .dispatch_proof_of_address_ownership() - .await?; - - // Do sumbit solvency proofs simultaneously - let asset_csv = "src/apis/csv/assets.csv"; - let entry_csv = "../zk_prover/src/merkle_sum_tree/csv/entry_16.csv"; let params_path = "ptau/hermez-raw-11"; + let entry_csv = "../csv/entry_16.csv"; + let mst = MerkleSumTree::from_csv(entry_csv).unwrap(); let mut round_one = - Round::<4, 2, 14>::new(&signer, entry_csv, asset_csv, params_path, 1).unwrap(); - let mut round_two = - Round::<4, 2, 14>::new(&signer, entry_csv, asset_csv, params_path, 2).unwrap(); + Round::<4, 2, 14>::new(&signer, Box::new(mst.clone()), params_path, 1).unwrap(); + let mut round_two = Round::<4, 2, 14>::new(&signer, Box::new(mst), params_path, 2).unwrap(); - // Checking block number before sending transaction of proof of solvency + // Checking block number before sending transaction of liability commitment let outer_provider: Provider = Provider::try_from(anvil.endpoint().as_str())?; let start_block_number = outer_provider.get_block_number().await?; - // Send two solvency proofs simultaneously + // Send two commitments simultaneously let (round_one_result, round_two_result) = join!( - round_one.dispatch_solvency_proof(), - round_two.dispatch_solvency_proof() + round_one.dispatch_commitment(), + round_two.dispatch_commitment() ); // Check two blocks has been mined @@ -239,7 +203,7 @@ mod test { .await?; let mut address_ownership_client = - AddressOwnership::new(&signer, "src/apis/csv/signatures.csv").unwrap(); + AddressOwnership::new(&signer, "../csv/signatures.csv").unwrap(); address_ownership_client .dispatch_proof_of_address_ownership() @@ -272,53 +236,47 @@ mod test { ); // Initialize round - let asset_csv = "src/apis/csv/assets.csv"; - let entry_csv = "../zk_prover/src/merkle_sum_tree/csv/entry_16.csv"; let params_path = "ptau/hermez-raw-11"; + let entry_csv = "../csv/entry_16.csv"; - let mut round = - Round::<4, 2, 14>::new(&signer, entry_csv, asset_csv, params_path, 1).unwrap(); + let mst = MerkleSumTree::from_csv(entry_csv).unwrap(); + let mut round = Round::<4, 2, 14>::new(&signer, Box::new(mst), params_path, 1).unwrap(); - // Verify solvency proof - let mut solvency_proof_logs = summa_contract - .solvency_proof_submitted_filter() + let mut liability_commitment_logs = summa_contract + .liabilities_commitment_submitted_filter() .query() .await?; - assert_eq!(solvency_proof_logs.len(), 0); - - // Dispatch solvency proof - let assets = [ - Asset { - asset_name: "ETH".to_string(), - chain: "ETH".to_string(), - amount: U256::from(556863), - }, - Asset { - asset_name: "USDT".to_string(), - chain: "ETH".to_string(), - amount: U256::from(556863), - }, - ]; - - // Send sovlecy proof to contract - round.dispatch_solvency_proof().await?; - - // After sending transaction of proof of solvency, logs should be updated - solvency_proof_logs = summa_contract - .solvency_proof_submitted_filter() + assert_eq!(liability_commitment_logs.len(), 0); + + // Send liability commitment transaction + round.dispatch_commitment().await?; + + // After sending transaction of liability commitment, logs should be updated + liability_commitment_logs = summa_contract + .liabilities_commitment_submitted_filter() .query() .await?; - assert_eq!(solvency_proof_logs.len(), 1); + assert_eq!(liability_commitment_logs.len(), 1); assert_eq!( - solvency_proof_logs[0], - SolvencyProofSubmittedFilter { + liability_commitment_logs[0], + LiabilitiesCommitmentSubmittedFilter { timestamp: U256::from(1), - mst_root: "0x2E021D9BF99C5BD7267488B6A7A5CF5F7D00222A41B6A9B971899C44089E0C5" + mst_root: "0x18d6ab953235a811edffa4cead74ea045e7cd2085771a2269d59dca054c955b1" .parse() .unwrap(), - assets: assets.to_vec() + root_balances: vec![U256::from(556862), U256::from(556862)], + cryptocurrencies: vec![ + Cryptocurrency { + name: "ETH".to_string(), + chain: "ETH".to_string(), + }, + Cryptocurrency { + name: "USDT".to_string(), + chain: "ETH".to_string(), + }, + ], } ); diff --git a/contracts/README.md b/contracts/README.md index ac63c987..fbeea6c1 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -1,22 +1,49 @@ -# Summa Smart contract +# Summa Smart Contract -Install dependencies: +The [Summa smart contract](src/Summa.sol) acts as a registrar for Centralized Exchanges (CEXs) to commit to their liabilities by submitting a Merkle sum tree (MST) root of all the CEX liabilities owed to its users. Users can then verify their inclusion into the liabilities commitment, and the public can compare the committed total sums with the assets owned by the CEX onchain. + +## Features + +- **Address Ownership Proofs**: CEXs should submit the proof of address ownership for all addresses that hold the assets included into the commitment by using `submitProofOfAddressOwnership` function. The proofs are accepted optimistically and subject to off-chain verification. + +- **Liabilities Commitments**: CEXs can submit commitments to its liabilities in the form of MST roots and the corresponding total sums that represent the snapshots of the liabilities at a given timestamp by using `submitCommitment` function. + +- **Inclusion Verification**: Users are able to verify the zero-knowledge proof of inclusion of their balances into the MST using `verifyInclusionProof` function. The function is calling the underlying smart contract [Verifier](src/InclusionVerifier.sol). The verifier is generated from the [zk_prover](./../zk_prover/) module (see module's [readme](./../zk_prover/README.md)). + +## Installation + +Ensure you have Node.js installed on your machine before proceeding. The smart contract is written in Solidity and uses the Hardhat environment for testing and deployment. + +To set up the project environment, install the necessary dependencies: ```shell npm install ``` -Testing: +## Testing ```shell npx hardhat node REPORT_GAS=true npx hardhat test ``` -Deploying: +### Test Coverage + +```shell +npx hardhat coverage +``` + +## Deploying ```shell npx hardhat run scripts/deploy.ts --network localhost ``` -The deployment script will copy the contract ABIs from the ./artifacts/src/ to the [backend subproject](./../backend/src/contracts/abi/). The backend buildscript will then be able to generate the updated contract interfaces (see the [backend readme](./../backend/README.md)). +The following Summa contract parameters are passed to its constructor inside the deployment script: + +- verifier contract address (set automatically after the script deploys the verifier); +- the number of levels of the Merkle sum tree; +- the number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree. + +The deployment script writes the latest deployment address for the chain to the [deployments](./../backend/src/contracts/deployments.json) file in the backend project. This data can later be used by the backend module to connect to the deployed contract. +The deployment script will copy the contract ABIs from the ./artifacts/src/ to the [backend](./../backend/src/contracts/abi/) module. The backend buildscript will then be able to generate the updated contract interfaces (see the backend [readme](./../backend/README.md)). diff --git a/contracts/scripts/deploy.ts b/contracts/scripts/deploy.ts index 4425c4dc..969517ab 100644 --- a/contracts/scripts/deploy.ts +++ b/contracts/scripts/deploy.ts @@ -10,19 +10,22 @@ type Deployments = { }; async function main() { - const solvencyVerifier = await ethers.deployContract( - "src/SolvencyVerifier.sol:Verifier" - ); - await solvencyVerifier.deployed(); - const inclusionVerifier = await ethers.deployContract( "src/InclusionVerifier.sol:Verifier" ); await inclusionVerifier.deployed(); + // The number of levels of the Merkle sum tree + const mstLevels = 4; + //The number of cryptocurrencies supported by the Merkle sum tree + const currenciesCount = 2; + // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree + const balanceByteRange = 14; const summa = await ethers.deployContract("Summa", [ - solvencyVerifier.address, inclusionVerifier.address, + mstLevels, + currenciesCount, + balanceByteRange, ]); await summa.deployed(); @@ -61,7 +64,6 @@ async function main() { //Copy the ABIs from `artifacts/src/*` to `backend/src/contracts/*` copyAbi(fs, "Summa", "Summa"); - copyAbi(fs, "SolvencyVerifier", "Verifier"); copyAbi(fs, "InclusionVerifier", "Verifier"); } diff --git a/contracts/src/InclusionVerifier.sol b/contracts/src/InclusionVerifier.sol index f6082fd5..cb77bddd 100644 --- a/contracts/src/InclusionVerifier.sol +++ b/contracts/src/InclusionVerifier.sol @@ -7,5 +7,5 @@ bytes memory proof ) public view returns (bool) { bool success = true; - bytes32[902] memory transcript; - assembly { let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 function validate_ec_point(x, y) -> valid { { let x_lt_p := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let y_lt_p := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) valid := and(x_lt_p, y_lt_p) } { let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let is_affine := eq(x_cube_plus_3, y_square) valid := and(valid, is_affine) } } mstore(add(transcript, 0x20), mod(mload(add(pubInputs, 0x20)), f_q))mstore(add(transcript, 0x40), mod(mload(add(pubInputs, 0x40)), f_q))mstore(add(transcript, 0x0), 20780565364750352931855234182745264522567546354850733883253409196481354617515) { let x := mload(add(proof, 0x20)) mstore(add(transcript, 0x60), x) let y := mload(add(proof, 0x40)) mstore(add(transcript, 0x80), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x60)) mstore(add(transcript, 0xa0), x) let y := mload(add(proof, 0x80)) mstore(add(transcript, 0xc0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0xa0)) mstore(add(transcript, 0xe0), x) let y := mload(add(proof, 0xc0)) mstore(add(transcript, 0x100), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x120), keccak256(add(transcript, 0x0), 288)){ let hash := mload(add(transcript, 0x120)) mstore(add(transcript, 0x140), mod(hash, f_q)) mstore(add(transcript, 0x160), hash) } { let x := mload(add(proof, 0xe0)) mstore(add(transcript, 0x180), x) let y := mload(add(proof, 0x100)) mstore(add(transcript, 0x1a0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x120)) mstore(add(transcript, 0x1c0), x) let y := mload(add(proof, 0x140)) mstore(add(transcript, 0x1e0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x200), keccak256(add(transcript, 0x160), 160)){ let hash := mload(add(transcript, 0x200)) mstore(add(transcript, 0x220), mod(hash, f_q)) mstore(add(transcript, 0x240), hash) }mstore8(add(transcript, 0x260), 1)mstore(add(transcript, 0x260), keccak256(add(transcript, 0x240), 33)){ let hash := mload(add(transcript, 0x260)) mstore(add(transcript, 0x280), mod(hash, f_q)) mstore(add(transcript, 0x2a0), hash) } { let x := mload(add(proof, 0x160)) mstore(add(transcript, 0x2c0), x) let y := mload(add(proof, 0x180)) mstore(add(transcript, 0x2e0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1a0)) mstore(add(transcript, 0x300), x) let y := mload(add(proof, 0x1c0)) mstore(add(transcript, 0x320), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1e0)) mstore(add(transcript, 0x340), x) let y := mload(add(proof, 0x200)) mstore(add(transcript, 0x360), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x220)) mstore(add(transcript, 0x380), x) let y := mload(add(proof, 0x240)) mstore(add(transcript, 0x3a0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x3c0), keccak256(add(transcript, 0x2a0), 288)){ let hash := mload(add(transcript, 0x3c0)) mstore(add(transcript, 0x3e0), mod(hash, f_q)) mstore(add(transcript, 0x400), hash) } { let x := mload(add(proof, 0x260)) mstore(add(transcript, 0x420), x) let y := mload(add(proof, 0x280)) mstore(add(transcript, 0x440), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2a0)) mstore(add(transcript, 0x460), x) let y := mload(add(proof, 0x2c0)) mstore(add(transcript, 0x480), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2e0)) mstore(add(transcript, 0x4a0), x) let y := mload(add(proof, 0x300)) mstore(add(transcript, 0x4c0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x320)) mstore(add(transcript, 0x4e0), x) let y := mload(add(proof, 0x340)) mstore(add(transcript, 0x500), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x360)) mstore(add(transcript, 0x520), x) let y := mload(add(proof, 0x380)) mstore(add(transcript, 0x540), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x560), keccak256(add(transcript, 0x400), 352)){ let hash := mload(add(transcript, 0x560)) mstore(add(transcript, 0x580), mod(hash, f_q)) mstore(add(transcript, 0x5a0), hash) }mstore(add(transcript, 0x5c0), mod(mload(add(proof, 0x3a0)), f_q))mstore(add(transcript, 0x5e0), mod(mload(add(proof, 0x3c0)), f_q))mstore(add(transcript, 0x600), mod(mload(add(proof, 0x3e0)), f_q))mstore(add(transcript, 0x620), mod(mload(add(proof, 0x400)), f_q))mstore(add(transcript, 0x640), mod(mload(add(proof, 0x420)), f_q))mstore(add(transcript, 0x660), mod(mload(add(proof, 0x440)), f_q))mstore(add(transcript, 0x680), mod(mload(add(proof, 0x460)), f_q))mstore(add(transcript, 0x6a0), mod(mload(add(proof, 0x480)), f_q))mstore(add(transcript, 0x6c0), mod(mload(add(proof, 0x4a0)), f_q))mstore(add(transcript, 0x6e0), mod(mload(add(proof, 0x4c0)), f_q))mstore(add(transcript, 0x700), mod(mload(add(proof, 0x4e0)), f_q))mstore(add(transcript, 0x720), mod(mload(add(proof, 0x500)), f_q))mstore(add(transcript, 0x740), mod(mload(add(proof, 0x520)), f_q))mstore(add(transcript, 0x760), mod(mload(add(proof, 0x540)), f_q))mstore(add(transcript, 0x780), mod(mload(add(proof, 0x560)), f_q))mstore(add(transcript, 0x7a0), mod(mload(add(proof, 0x580)), f_q))mstore(add(transcript, 0x7c0), mod(mload(add(proof, 0x5a0)), f_q))mstore(add(transcript, 0x7e0), mod(mload(add(proof, 0x5c0)), f_q))mstore(add(transcript, 0x800), mod(mload(add(proof, 0x5e0)), f_q))mstore(add(transcript, 0x820), mod(mload(add(proof, 0x600)), f_q))mstore(add(transcript, 0x840), mod(mload(add(proof, 0x620)), f_q))mstore(add(transcript, 0x860), mod(mload(add(proof, 0x640)), f_q))mstore(add(transcript, 0x880), mod(mload(add(proof, 0x660)), f_q))mstore(add(transcript, 0x8a0), mod(mload(add(proof, 0x680)), f_q))mstore(add(transcript, 0x8c0), mod(mload(add(proof, 0x6a0)), f_q))mstore(add(transcript, 0x8e0), mod(mload(add(proof, 0x6c0)), f_q))mstore(add(transcript, 0x900), mod(mload(add(proof, 0x6e0)), f_q))mstore(add(transcript, 0x920), mod(mload(add(proof, 0x700)), f_q))mstore(add(transcript, 0x940), mod(mload(add(proof, 0x720)), f_q))mstore(add(transcript, 0x960), mod(mload(add(proof, 0x740)), f_q))mstore(add(transcript, 0x980), mod(mload(add(proof, 0x760)), f_q))mstore(add(transcript, 0x9a0), mod(mload(add(proof, 0x780)), f_q))mstore(add(transcript, 0x9c0), mod(mload(add(proof, 0x7a0)), f_q))mstore(add(transcript, 0x9e0), mod(mload(add(proof, 0x7c0)), f_q))mstore(add(transcript, 0xa00), mod(mload(add(proof, 0x7e0)), f_q))mstore(add(transcript, 0xa20), keccak256(add(transcript, 0x5a0), 1152)){ let hash := mload(add(transcript, 0xa20)) mstore(add(transcript, 0xa40), mod(hash, f_q)) mstore(add(transcript, 0xa60), hash) }mstore8(add(transcript, 0xa80), 1)mstore(add(transcript, 0xa80), keccak256(add(transcript, 0xa60), 33)){ let hash := mload(add(transcript, 0xa80)) mstore(add(transcript, 0xaa0), mod(hash, f_q)) mstore(add(transcript, 0xac0), hash) } { let x := mload(add(proof, 0x800)) mstore(add(transcript, 0xae0), x) let y := mload(add(proof, 0x820)) mstore(add(transcript, 0xb00), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xb20), keccak256(add(transcript, 0xac0), 96)){ let hash := mload(add(transcript, 0xb20)) mstore(add(transcript, 0xb40), mod(hash, f_q)) mstore(add(transcript, 0xb60), hash) } { let x := mload(add(proof, 0x840)) mstore(add(transcript, 0xb80), x) let y := mload(add(proof, 0x860)) mstore(add(transcript, 0xba0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xbc0), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x580)), f_q))mstore(add(transcript, 0xbe0), mulmod(mload(add(transcript, 0xbc0)), mload(add(transcript, 0xbc0)), f_q))mstore(add(transcript, 0xc00), mulmod(mload(add(transcript, 0xbe0)), mload(add(transcript, 0xbe0)), f_q))mstore(add(transcript, 0xc20), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0xc00)), f_q))mstore(add(transcript, 0xc40), mulmod(mload(add(transcript, 0xc20)), mload(add(transcript, 0xc20)), f_q))mstore(add(transcript, 0xc60), mulmod(mload(add(transcript, 0xc40)), mload(add(transcript, 0xc40)), f_q))mstore(add(transcript, 0xc80), mulmod(mload(add(transcript, 0xc60)), mload(add(transcript, 0xc60)), f_q))mstore(add(transcript, 0xca0), mulmod(mload(add(transcript, 0xc80)), mload(add(transcript, 0xc80)), f_q))mstore(add(transcript, 0xcc0), mulmod(mload(add(transcript, 0xca0)), mload(add(transcript, 0xca0)), f_q))mstore(add(transcript, 0xce0), mulmod(mload(add(transcript, 0xcc0)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0xd00), mulmod(mload(add(transcript, 0xce0)), mload(add(transcript, 0xce0)), f_q))mstore(add(transcript, 0xd20), addmod(mload(add(transcript, 0xd00)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xd40), mulmod(mload(add(transcript, 0xd20)), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q))mstore(add(transcript, 0xd60), mulmod(mload(add(transcript, 0xd40)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0xd80), addmod(mload(add(transcript, 0x580)), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q))mstore(add(transcript, 0xda0), mulmod(mload(add(transcript, 0xd40)), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q))mstore(add(transcript, 0xdc0), addmod(mload(add(transcript, 0x580)), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q))mstore(add(transcript, 0xde0), mulmod(mload(add(transcript, 0xd40)), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q))mstore(add(transcript, 0xe00), addmod(mload(add(transcript, 0x580)), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q))mstore(add(transcript, 0xe20), mulmod(mload(add(transcript, 0xd40)), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q))mstore(add(transcript, 0xe40), addmod(mload(add(transcript, 0x580)), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q))mstore(add(transcript, 0xe60), mulmod(mload(add(transcript, 0xd40)), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q))mstore(add(transcript, 0xe80), addmod(mload(add(transcript, 0x580)), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q))mstore(add(transcript, 0xea0), mulmod(mload(add(transcript, 0xd40)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0xec0), addmod(mload(add(transcript, 0x580)), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q))mstore(add(transcript, 0xee0), mulmod(mload(add(transcript, 0xd40)), 1, f_q))mstore(add(transcript, 0xf00), addmod(mload(add(transcript, 0x580)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xf20), mulmod(mload(add(transcript, 0xd40)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0xf40), addmod(mload(add(transcript, 0x580)), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q)){ let prod := mload(add(transcript, 0xd80)) prod := mulmod(mload(add(transcript, 0xdc0)), prod, f_q) mstore(add(transcript, 0xf60), prod) prod := mulmod(mload(add(transcript, 0xe00)), prod, f_q) mstore(add(transcript, 0xf80), prod) prod := mulmod(mload(add(transcript, 0xe40)), prod, f_q) mstore(add(transcript, 0xfa0), prod) prod := mulmod(mload(add(transcript, 0xe80)), prod, f_q) mstore(add(transcript, 0xfc0), prod) prod := mulmod(mload(add(transcript, 0xec0)), prod, f_q) mstore(add(transcript, 0xfe0), prod) prod := mulmod(mload(add(transcript, 0xf00)), prod, f_q) mstore(add(transcript, 0x1000), prod) prod := mulmod(mload(add(transcript, 0xf40)), prod, f_q) mstore(add(transcript, 0x1020), prod) prod := mulmod(mload(add(transcript, 0xd20)), prod, f_q) mstore(add(transcript, 0x1040), prod) }mstore(add(transcript, 0x1080), 32)mstore(add(transcript, 0x10a0), 32)mstore(add(transcript, 0x10c0), 32)mstore(add(transcript, 0x10e0), mload(add(transcript, 0x1040)))mstore(add(transcript, 0x1100), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x1120), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x1080), 0xc0, add(transcript, 0x1060), 0x20), 1), success){ let inv := mload(add(transcript, 0x1060)) let v v := mload(add(transcript, 0xd20)) mstore(add(transcript, 0xd20), mulmod(mload(add(transcript, 0x1020)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf40)) mstore(add(transcript, 0xf40), mulmod(mload(add(transcript, 0x1000)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf00)) mstore(add(transcript, 0xf00), mulmod(mload(add(transcript, 0xfe0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xec0)) mstore(add(transcript, 0xec0), mulmod(mload(add(transcript, 0xfc0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe80)) mstore(add(transcript, 0xe80), mulmod(mload(add(transcript, 0xfa0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe40)) mstore(add(transcript, 0xe40), mulmod(mload(add(transcript, 0xf80)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe00)) mstore(add(transcript, 0xe00), mulmod(mload(add(transcript, 0xf60)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xdc0)) mstore(add(transcript, 0xdc0), mulmod(mload(add(transcript, 0xd80)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0xd80), inv) }mstore(add(transcript, 0x1140), mulmod(mload(add(transcript, 0xd60)), mload(add(transcript, 0xd80)), f_q))mstore(add(transcript, 0x1160), mulmod(mload(add(transcript, 0xda0)), mload(add(transcript, 0xdc0)), f_q))mstore(add(transcript, 0x1180), mulmod(mload(add(transcript, 0xde0)), mload(add(transcript, 0xe00)), f_q))mstore(add(transcript, 0x11a0), mulmod(mload(add(transcript, 0xe20)), mload(add(transcript, 0xe40)), f_q))mstore(add(transcript, 0x11c0), mulmod(mload(add(transcript, 0xe60)), mload(add(transcript, 0xe80)), f_q))mstore(add(transcript, 0x11e0), mulmod(mload(add(transcript, 0xea0)), mload(add(transcript, 0xec0)), f_q))mstore(add(transcript, 0x1200), mulmod(mload(add(transcript, 0xee0)), mload(add(transcript, 0xf00)), f_q))mstore(add(transcript, 0x1220), mulmod(mload(add(transcript, 0xf20)), mload(add(transcript, 0xf40)), f_q)){ let result := mulmod(mload(add(transcript, 0x1200)), mload(add(transcript, 0x20)), f_q)result := addmod(mulmod(mload(add(transcript, 0x1220)), mload(add(transcript, 0x40)), f_q), result, f_q)mstore(add(transcript, 0x1240), result) }mstore(add(transcript, 0x1260), addmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x6e0)), f_q))mstore(add(transcript, 0x1280), mulmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x1260)), f_q))mstore(add(transcript, 0x12a0), mulmod(mload(add(transcript, 0x1280)), mload(add(transcript, 0x1280)), f_q))mstore(add(transcript, 0x12c0), mulmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x12a0)), f_q))mstore(add(transcript, 0x12e0), mulmod(mload(add(transcript, 0x12c0)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x1300), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x700)), f_q))mstore(add(transcript, 0x1320), mulmod(mload(add(transcript, 0x1300)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x1340), mulmod(mload(add(transcript, 0x1320)), mload(add(transcript, 0x1320)), f_q))mstore(add(transcript, 0x1360), mulmod(mload(add(transcript, 0x1300)), mload(add(transcript, 0x1340)), f_q))mstore(add(transcript, 0x1380), mulmod(mload(add(transcript, 0x1360)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x13a0), addmod(mload(add(transcript, 0x12e0)), mload(add(transcript, 0x1380)), f_q))mstore(add(transcript, 0x13c0), addmod(mload(add(transcript, 0x13a0)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x13e0), mulmod(mload(add(transcript, 0x13c0)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x1400), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x13e0)), f_q))mstore(add(transcript, 0x1420), mulmod(mload(add(transcript, 0x12c0)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x1440), mulmod(mload(add(transcript, 0x1360)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x1460), addmod(mload(add(transcript, 0x1420)), mload(add(transcript, 0x1440)), f_q))mstore(add(transcript, 0x1480), addmod(mload(add(transcript, 0x1460)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x14a0), mulmod(mload(add(transcript, 0x1480)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x14c0), addmod(mload(add(transcript, 0x1400)), mload(add(transcript, 0x14a0)), f_q))mstore(add(transcript, 0x14e0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x14c0)), f_q))mstore(add(transcript, 0x1500), addmod(mload(add(transcript, 0x12c0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1520), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1540), addmod(mload(add(transcript, 0x14e0)), mload(add(transcript, 0x1520)), f_q))mstore(add(transcript, 0x1560), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1540)), f_q))mstore(add(transcript, 0x1580), mulmod(mload(add(transcript, 0x640)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x15a0), mulmod(mload(add(transcript, 0x1300)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x15c0), addmod(mload(add(transcript, 0x1580)), mload(add(transcript, 0x15a0)), f_q))mstore(add(transcript, 0x15e0), addmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x6a0)), f_q))mstore(add(transcript, 0x1600), mulmod(mload(add(transcript, 0x15e0)), mload(add(transcript, 0x15e0)), f_q))mstore(add(transcript, 0x1620), mulmod(mload(add(transcript, 0x1600)), mload(add(transcript, 0x1600)), f_q))mstore(add(transcript, 0x1640), mulmod(mload(add(transcript, 0x15e0)), mload(add(transcript, 0x1620)), f_q))mstore(add(transcript, 0x1660), mulmod(mload(add(transcript, 0x600)), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q))mstore(add(transcript, 0x1680), mulmod(mload(add(transcript, 0x620)), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q))mstore(add(transcript, 0x16a0), addmod(mload(add(transcript, 0x1660)), mload(add(transcript, 0x1680)), f_q))mstore(add(transcript, 0x16c0), addmod(mload(add(transcript, 0x1640)), sub(f_q, mload(add(transcript, 0x16a0))), f_q))mstore(add(transcript, 0x16e0), mulmod(mload(add(transcript, 0x16c0)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1700), addmod(mload(add(transcript, 0x1560)), mload(add(transcript, 0x16e0)), f_q))mstore(add(transcript, 0x1720), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1700)), f_q))mstore(add(transcript, 0x1740), mulmod(mload(add(transcript, 0x640)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x1760), mulmod(mload(add(transcript, 0x1300)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x1780), addmod(mload(add(transcript, 0x1740)), mload(add(transcript, 0x1760)), f_q))mstore(add(transcript, 0x17a0), addmod(mload(add(transcript, 0x1780)), mload(add(transcript, 0x6c0)), f_q))mstore(add(transcript, 0x17c0), mulmod(mload(add(transcript, 0x600)), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q))mstore(add(transcript, 0x17e0), mulmod(mload(add(transcript, 0x620)), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q))mstore(add(transcript, 0x1800), addmod(mload(add(transcript, 0x17c0)), mload(add(transcript, 0x17e0)), f_q))mstore(add(transcript, 0x1820), addmod(mload(add(transcript, 0x17a0)), sub(f_q, mload(add(transcript, 0x1800))), f_q))mstore(add(transcript, 0x1840), mulmod(mload(add(transcript, 0x1820)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1860), addmod(mload(add(transcript, 0x1720)), mload(add(transcript, 0x1840)), f_q))mstore(add(transcript, 0x1880), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1860)), f_q))mstore(add(transcript, 0x18a0), addmod(1, sub(f_q, mload(add(transcript, 0x760))), f_q))mstore(add(transcript, 0x18c0), mulmod(mload(add(transcript, 0x18a0)), mload(add(transcript, 0x760)), f_q))mstore(add(transcript, 0x18e0), addmod(2, sub(f_q, mload(add(transcript, 0x760))), f_q))mstore(add(transcript, 0x1900), mulmod(mload(add(transcript, 0x18e0)), mload(add(transcript, 0x18c0)), f_q))mstore(add(transcript, 0x1920), addmod(4, sub(f_q, mload(add(transcript, 0x760))), f_q))mstore(add(transcript, 0x1940), mulmod(mload(add(transcript, 0x1920)), mload(add(transcript, 0x1900)), f_q))mstore(add(transcript, 0x1960), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0x1980), addmod(mload(add(transcript, 0x1960)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x19a0), mulmod(mload(add(transcript, 0x1980)), mload(add(transcript, 0x1940)), f_q))mstore(add(transcript, 0x19c0), addmod(mload(add(transcript, 0x1880)), mload(add(transcript, 0x19a0)), f_q))mstore(add(transcript, 0x19e0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x19c0)), f_q))mstore(add(transcript, 0x1a00), addmod(mload(add(transcript, 0x660)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x1a20), mulmod(mload(add(transcript, 0x1a00)), mload(add(transcript, 0x1940)), f_q))mstore(add(transcript, 0x1a40), addmod(mload(add(transcript, 0x19e0)), mload(add(transcript, 0x1a20)), f_q))mstore(add(transcript, 0x1a60), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1a40)), f_q))mstore(add(transcript, 0x1a80), mulmod(mload(add(transcript, 0x13c0)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1aa0), addmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1ac0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1aa0)), f_q))mstore(add(transcript, 0x1ae0), mulmod(mload(add(transcript, 0x1480)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1b00), addmod(mload(add(transcript, 0x1ac0)), mload(add(transcript, 0x1ae0)), f_q))mstore(add(transcript, 0x1b20), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1b00)), f_q))mstore(add(transcript, 0x1b40), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1b60), addmod(mload(add(transcript, 0x1b20)), mload(add(transcript, 0x1b40)), f_q))mstore(add(transcript, 0x1b80), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1b60)), f_q))mstore(add(transcript, 0x1ba0), mulmod(mload(add(transcript, 0x16c0)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1bc0), addmod(mload(add(transcript, 0x1b80)), mload(add(transcript, 0x1ba0)), f_q))mstore(add(transcript, 0x1be0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1bc0)), f_q))mstore(add(transcript, 0x1c00), mulmod(mload(add(transcript, 0x1820)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1c20), addmod(mload(add(transcript, 0x1be0)), mload(add(transcript, 0x1c00)), f_q))mstore(add(transcript, 0x1c40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1c20)), f_q))mstore(add(transcript, 0x1c60), addmod(3, sub(f_q, mload(add(transcript, 0x760))), f_q))mstore(add(transcript, 0x1c80), mulmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x1900)), f_q))mstore(add(transcript, 0x1ca0), mulmod(mload(add(transcript, 0x1980)), mload(add(transcript, 0x1c80)), f_q))mstore(add(transcript, 0x1cc0), addmod(mload(add(transcript, 0x1c40)), mload(add(transcript, 0x1ca0)), f_q))mstore(add(transcript, 0x1ce0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1cc0)), f_q))mstore(add(transcript, 0x1d00), mulmod(mload(add(transcript, 0x1a00)), mload(add(transcript, 0x1c80)), f_q))mstore(add(transcript, 0x1d20), addmod(mload(add(transcript, 0x1ce0)), mload(add(transcript, 0x1d00)), f_q))mstore(add(transcript, 0x1d40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1d20)), f_q))mstore(add(transcript, 0x1d60), mulmod(mload(add(transcript, 0x18e0)), mload(add(transcript, 0x760)), f_q))mstore(add(transcript, 0x1d80), mulmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x1d60)), f_q))mstore(add(transcript, 0x1da0), mulmod(mload(add(transcript, 0x1920)), mload(add(transcript, 0x1d80)), f_q))mstore(add(transcript, 0x1dc0), mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x1da0)), f_q))mstore(add(transcript, 0x1de0), addmod(1, sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1e00), mulmod(mload(add(transcript, 0x1de0)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e20), addmod(mload(add(transcript, 0x1d40)), mload(add(transcript, 0x1e00)), f_q))mstore(add(transcript, 0x1e40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1e20)), f_q))mstore(add(transcript, 0x1e60), mulmod(2, mload(add(transcript, 0x640)), f_q))mstore(add(transcript, 0x1e80), addmod(mload(add(transcript, 0x5e0)), sub(f_q, mload(add(transcript, 0x5c0))), f_q))mstore(add(transcript, 0x1ea0), mulmod(mload(add(transcript, 0x1e80)), mload(add(transcript, 0x1e60)), f_q))mstore(add(transcript, 0x1ec0), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x5c0))), f_q))mstore(add(transcript, 0x1ee0), addmod(mload(add(transcript, 0x1ea0)), sub(f_q, mload(add(transcript, 0x1ec0))), f_q))mstore(add(transcript, 0x1f00), addmod(mload(add(transcript, 0x5e0)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x1f20), addmod(mload(add(transcript, 0x1ee0)), sub(f_q, mload(add(transcript, 0x1f00))), f_q))mstore(add(transcript, 0x1f40), mulmod(mload(add(transcript, 0x1f20)), mload(add(transcript, 0x1da0)), f_q))mstore(add(transcript, 0x1f60), addmod(mload(add(transcript, 0x1e40)), mload(add(transcript, 0x1f40)), f_q))mstore(add(transcript, 0x1f80), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1f60)), f_q))mstore(add(transcript, 0x1fa0), mulmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x18c0)), f_q))mstore(add(transcript, 0x1fc0), mulmod(mload(add(transcript, 0x1920)), mload(add(transcript, 0x1fa0)), f_q))mstore(add(transcript, 0x1fe0), addmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x5e0)), f_q))mstore(add(transcript, 0x2000), addmod(mload(add(transcript, 0x1fe0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x2020), mulmod(mload(add(transcript, 0x2000)), mload(add(transcript, 0x1fc0)), f_q))mstore(add(transcript, 0x2040), addmod(mload(add(transcript, 0x1f80)), mload(add(transcript, 0x2020)), f_q))mstore(add(transcript, 0x2060), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2040)), f_q))mstore(add(transcript, 0x2080), addmod(mload(add(transcript, 0x2060)), mload(add(transcript, 0x2020)), f_q))mstore(add(transcript, 0x20a0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2080)), f_q))mstore(add(transcript, 0x20c0), addmod(1, sub(f_q, mload(add(transcript, 0x8e0))), f_q))mstore(add(transcript, 0x20e0), mulmod(mload(add(transcript, 0x20c0)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2100), addmod(mload(add(transcript, 0x20a0)), mload(add(transcript, 0x20e0)), f_q))mstore(add(transcript, 0x2120), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2100)), f_q))mstore(add(transcript, 0x2140), mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x2160), addmod(mload(add(transcript, 0x2140)), sub(f_q, mload(add(transcript, 0x940))), f_q))mstore(add(transcript, 0x2180), mulmod(mload(add(transcript, 0x2160)), mload(add(transcript, 0x1140)), f_q))mstore(add(transcript, 0x21a0), addmod(mload(add(transcript, 0x2120)), mload(add(transcript, 0x2180)), f_q))mstore(add(transcript, 0x21c0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x21a0)), f_q))mstore(add(transcript, 0x21e0), addmod(mload(add(transcript, 0x940)), sub(f_q, mload(add(transcript, 0x920))), f_q))mstore(add(transcript, 0x2200), mulmod(mload(add(transcript, 0x21e0)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2220), addmod(mload(add(transcript, 0x21c0)), mload(add(transcript, 0x2200)), f_q))mstore(add(transcript, 0x2240), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2220)), f_q))mstore(add(transcript, 0x2260), addmod(1, sub(f_q, mload(add(transcript, 0x1140))), f_q))mstore(add(transcript, 0x2280), addmod(mload(add(transcript, 0x1160)), mload(add(transcript, 0x1180)), f_q))mstore(add(transcript, 0x22a0), addmod(mload(add(transcript, 0x2280)), mload(add(transcript, 0x11a0)), f_q))mstore(add(transcript, 0x22c0), addmod(mload(add(transcript, 0x22a0)), mload(add(transcript, 0x11c0)), f_q))mstore(add(transcript, 0x22e0), addmod(mload(add(transcript, 0x22c0)), mload(add(transcript, 0x11e0)), f_q))mstore(add(transcript, 0x2300), addmod(mload(add(transcript, 0x2260)), sub(f_q, mload(add(transcript, 0x22e0))), f_q))mstore(add(transcript, 0x2320), mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2340), addmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x2320)), f_q))mstore(add(transcript, 0x2360), addmod(mload(add(transcript, 0x2340)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2380), mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x23a0), addmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2380)), f_q))mstore(add(transcript, 0x23c0), addmod(mload(add(transcript, 0x23a0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x23e0), mulmod(mload(add(transcript, 0x23c0)), mload(add(transcript, 0x2360)), f_q))mstore(add(transcript, 0x2400), mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2420), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x2400)), f_q))mstore(add(transcript, 0x2440), addmod(mload(add(transcript, 0x2420)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2460), mulmod(mload(add(transcript, 0x2440)), mload(add(transcript, 0x23e0)), f_q))mstore(add(transcript, 0x2480), mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x24a0), addmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x2480)), f_q))mstore(add(transcript, 0x24c0), addmod(mload(add(transcript, 0x24a0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x24e0), mulmod(mload(add(transcript, 0x24c0)), mload(add(transcript, 0x2460)), f_q))mstore(add(transcript, 0x2500), mulmod(mload(add(transcript, 0x24e0)), mload(add(transcript, 0x900)), f_q))mstore(add(transcript, 0x2520), mulmod(1, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2540), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x2520)), f_q))mstore(add(transcript, 0x2560), addmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x2540)), f_q))mstore(add(transcript, 0x2580), addmod(mload(add(transcript, 0x2560)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x25a0), mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x25c0), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x25a0)), f_q))mstore(add(transcript, 0x25e0), addmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x25c0)), f_q))mstore(add(transcript, 0x2600), addmod(mload(add(transcript, 0x25e0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2620), mulmod(mload(add(transcript, 0x2600)), mload(add(transcript, 0x2580)), f_q))mstore(add(transcript, 0x2640), mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2660), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x2640)), f_q))mstore(add(transcript, 0x2680), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x2660)), f_q))mstore(add(transcript, 0x26a0), addmod(mload(add(transcript, 0x2680)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x26c0), mulmod(mload(add(transcript, 0x26a0)), mload(add(transcript, 0x2620)), f_q))mstore(add(transcript, 0x26e0), mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2700), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x26e0)), f_q))mstore(add(transcript, 0x2720), addmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x2700)), f_q))mstore(add(transcript, 0x2740), addmod(mload(add(transcript, 0x2720)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2760), mulmod(mload(add(transcript, 0x2740)), mload(add(transcript, 0x26c0)), f_q))mstore(add(transcript, 0x2780), mulmod(mload(add(transcript, 0x2760)), mload(add(transcript, 0x8e0)), f_q))mstore(add(transcript, 0x27a0), addmod(mload(add(transcript, 0x2500)), sub(f_q, mload(add(transcript, 0x2780))), f_q))mstore(add(transcript, 0x27c0), mulmod(mload(add(transcript, 0x27a0)), mload(add(transcript, 0x2300)), f_q))mstore(add(transcript, 0x27e0), addmod(mload(add(transcript, 0x2240)), mload(add(transcript, 0x27c0)), f_q))mstore(add(transcript, 0x2800), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x27e0)), f_q))mstore(add(transcript, 0x2820), mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2840), addmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x2820)), f_q))mstore(add(transcript, 0x2860), addmod(mload(add(transcript, 0x2840)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2880), mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x28a0), addmod(mload(add(transcript, 0x1240)), mload(add(transcript, 0x2880)), f_q))mstore(add(transcript, 0x28c0), addmod(mload(add(transcript, 0x28a0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x28e0), mulmod(mload(add(transcript, 0x28c0)), mload(add(transcript, 0x2860)), f_q))mstore(add(transcript, 0x2900), mulmod(mload(add(transcript, 0x28e0)), mload(add(transcript, 0x960)), f_q))mstore(add(transcript, 0x2920), mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2940), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x2920)), f_q))mstore(add(transcript, 0x2960), addmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x2940)), f_q))mstore(add(transcript, 0x2980), addmod(mload(add(transcript, 0x2960)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x29a0), mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x29c0), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x29a0)), f_q))mstore(add(transcript, 0x29e0), addmod(mload(add(transcript, 0x1240)), mload(add(transcript, 0x29c0)), f_q))mstore(add(transcript, 0x2a00), addmod(mload(add(transcript, 0x29e0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2a20), mulmod(mload(add(transcript, 0x2a00)), mload(add(transcript, 0x2980)), f_q))mstore(add(transcript, 0x2a40), mulmod(mload(add(transcript, 0x2a20)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x2a60), addmod(mload(add(transcript, 0x2900)), sub(f_q, mload(add(transcript, 0x2a40))), f_q))mstore(add(transcript, 0x2a80), mulmod(mload(add(transcript, 0x2a60)), mload(add(transcript, 0x2300)), f_q))mstore(add(transcript, 0x2aa0), addmod(mload(add(transcript, 0x2800)), mload(add(transcript, 0x2a80)), f_q))mstore(add(transcript, 0x2ac0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2aa0)), f_q))mstore(add(transcript, 0x2ae0), addmod(1, sub(f_q, mload(add(transcript, 0x980))), f_q))mstore(add(transcript, 0x2b00), mulmod(mload(add(transcript, 0x2ae0)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2b20), addmod(mload(add(transcript, 0x2ac0)), mload(add(transcript, 0x2b00)), f_q))mstore(add(transcript, 0x2b40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2b20)), f_q))mstore(add(transcript, 0x2b60), mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2b80), addmod(mload(add(transcript, 0x2b60)), sub(f_q, mload(add(transcript, 0x980))), f_q))mstore(add(transcript, 0x2ba0), mulmod(mload(add(transcript, 0x2b80)), mload(add(transcript, 0x1140)), f_q))mstore(add(transcript, 0x2bc0), addmod(mload(add(transcript, 0x2b40)), mload(add(transcript, 0x2ba0)), f_q))mstore(add(transcript, 0x2be0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2bc0)), f_q))mstore(add(transcript, 0x2c00), addmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2c20), mulmod(mload(add(transcript, 0x2c00)), mload(add(transcript, 0x9a0)), f_q))mstore(add(transcript, 0x2c40), addmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2c60), mulmod(mload(add(transcript, 0x2c40)), mload(add(transcript, 0x2c20)), f_q))mstore(add(transcript, 0x2c80), mulmod(256, mload(add(transcript, 0x600)), f_q))mstore(add(transcript, 0x2ca0), addmod(mload(add(transcript, 0x5c0)), sub(f_q, mload(add(transcript, 0x2c80))), f_q))mstore(add(transcript, 0x2cc0), mulmod(mload(add(transcript, 0x2ca0)), mload(add(transcript, 0x740)), f_q))mstore(add(transcript, 0x2ce0), addmod(mload(add(transcript, 0x2cc0)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2d00), mulmod(mload(add(transcript, 0x2ce0)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2d20), addmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2d40), mulmod(mload(add(transcript, 0x2d20)), mload(add(transcript, 0x2d00)), f_q))mstore(add(transcript, 0x2d60), addmod(mload(add(transcript, 0x2c60)), sub(f_q, mload(add(transcript, 0x2d40))), f_q))mstore(add(transcript, 0x2d80), mulmod(mload(add(transcript, 0x2d60)), mload(add(transcript, 0x2300)), f_q))mstore(add(transcript, 0x2da0), addmod(mload(add(transcript, 0x2be0)), mload(add(transcript, 0x2d80)), f_q))mstore(add(transcript, 0x2dc0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2da0)), f_q))mstore(add(transcript, 0x2de0), addmod(mload(add(transcript, 0x9c0)), sub(f_q, mload(add(transcript, 0xa00))), f_q))mstore(add(transcript, 0x2e00), mulmod(mload(add(transcript, 0x2de0)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2e20), addmod(mload(add(transcript, 0x2dc0)), mload(add(transcript, 0x2e00)), f_q))mstore(add(transcript, 0x2e40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2e20)), f_q))mstore(add(transcript, 0x2e60), mulmod(mload(add(transcript, 0x2de0)), mload(add(transcript, 0x2300)), f_q))mstore(add(transcript, 0x2e80), addmod(mload(add(transcript, 0x9c0)), sub(f_q, mload(add(transcript, 0x9e0))), f_q))mstore(add(transcript, 0x2ea0), mulmod(mload(add(transcript, 0x2e80)), mload(add(transcript, 0x2e60)), f_q))mstore(add(transcript, 0x2ec0), addmod(mload(add(transcript, 0x2e40)), mload(add(transcript, 0x2ea0)), f_q))mstore(add(transcript, 0x2ee0), mulmod(mload(add(transcript, 0xd00)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f00), mulmod(mload(add(transcript, 0x2ee0)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f20), mulmod(mload(add(transcript, 0x2f00)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f40), mulmod(mload(add(transcript, 0x2f20)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f60), mulmod(1, mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f80), mulmod(1, mload(add(transcript, 0x2ee0)), f_q))mstore(add(transcript, 0x2fa0), mulmod(1, mload(add(transcript, 0x2f00)), f_q))mstore(add(transcript, 0x2fc0), mulmod(1, mload(add(transcript, 0x2f20)), f_q))mstore(add(transcript, 0x2fe0), mulmod(mload(add(transcript, 0x2ec0)), mload(add(transcript, 0xd20)), f_q))mstore(add(transcript, 0x3000), mulmod(mload(add(transcript, 0xbc0)), mload(add(transcript, 0x580)), f_q))mstore(add(transcript, 0x3020), mulmod(mload(add(transcript, 0x580)), 1, f_q))mstore(add(transcript, 0x3040), addmod(mload(add(transcript, 0xb40)), sub(f_q, mload(add(transcript, 0x3020))), f_q))mstore(add(transcript, 0x3060), mulmod(mload(add(transcript, 0x580)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0x3080), addmod(mload(add(transcript, 0xb40)), sub(f_q, mload(add(transcript, 0x3060))), f_q))mstore(add(transcript, 0x30a0), mulmod(mload(add(transcript, 0x580)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0x30c0), addmod(mload(add(transcript, 0xb40)), sub(f_q, mload(add(transcript, 0x30a0))), f_q))mstore(add(transcript, 0x30e0), mulmod(mload(add(transcript, 0x580)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0x3100), addmod(mload(add(transcript, 0xb40)), sub(f_q, mload(add(transcript, 0x30e0))), f_q)){ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q)mstore(add(transcript, 0x3120), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q)mstore(add(transcript, 0x3140), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q)mstore(add(transcript, 0x3160), result) }mstore(add(transcript, 0x3180), mulmod(1, mload(add(transcript, 0x3040)), f_q))mstore(add(transcript, 0x31a0), mulmod(mload(add(transcript, 0x3180)), mload(add(transcript, 0x3080)), f_q))mstore(add(transcript, 0x31c0), mulmod(mload(add(transcript, 0x31a0)), mload(add(transcript, 0x3100)), f_q)){ let result := mulmod(mload(add(transcript, 0xb40)), 1, f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q)mstore(add(transcript, 0x31e0), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q)mstore(add(transcript, 0x3200), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q)mstore(add(transcript, 0x3220), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q)mstore(add(transcript, 0x3240), result) }mstore(add(transcript, 0x3260), mulmod(mload(add(transcript, 0x31a0)), mload(add(transcript, 0x30c0)), f_q)){ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0x580)), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0x580)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q)mstore(add(transcript, 0x3280), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0x580)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0x580)), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q)mstore(add(transcript, 0x32a0), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0x580)), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0x580)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q)mstore(add(transcript, 0x32c0), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0x580)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0x580)), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q)mstore(add(transcript, 0x32e0), result) }mstore(add(transcript, 0x3300), mulmod(mload(add(transcript, 0x3180)), mload(add(transcript, 0x3100)), f_q)){ let prod := mload(add(transcript, 0x3120)) prod := mulmod(mload(add(transcript, 0x3140)), prod, f_q) mstore(add(transcript, 0x3320), prod) prod := mulmod(mload(add(transcript, 0x3160)), prod, f_q) mstore(add(transcript, 0x3340), prod) prod := mulmod(mload(add(transcript, 0x31e0)), prod, f_q) mstore(add(transcript, 0x3360), prod) prod := mulmod(mload(add(transcript, 0x3180)), prod, f_q) mstore(add(transcript, 0x3380), prod) prod := mulmod(mload(add(transcript, 0x3200)), prod, f_q) mstore(add(transcript, 0x33a0), prod) prod := mulmod(mload(add(transcript, 0x3220)), prod, f_q) mstore(add(transcript, 0x33c0), prod) prod := mulmod(mload(add(transcript, 0x3240)), prod, f_q) mstore(add(transcript, 0x33e0), prod) prod := mulmod(mload(add(transcript, 0x3260)), prod, f_q) mstore(add(transcript, 0x3400), prod) prod := mulmod(mload(add(transcript, 0x3280)), prod, f_q) mstore(add(transcript, 0x3420), prod) prod := mulmod(mload(add(transcript, 0x32a0)), prod, f_q) mstore(add(transcript, 0x3440), prod) prod := mulmod(mload(add(transcript, 0x31a0)), prod, f_q) mstore(add(transcript, 0x3460), prod) prod := mulmod(mload(add(transcript, 0x32c0)), prod, f_q) mstore(add(transcript, 0x3480), prod) prod := mulmod(mload(add(transcript, 0x32e0)), prod, f_q) mstore(add(transcript, 0x34a0), prod) prod := mulmod(mload(add(transcript, 0x3300)), prod, f_q) mstore(add(transcript, 0x34c0), prod) }mstore(add(transcript, 0x3500), 32)mstore(add(transcript, 0x3520), 32)mstore(add(transcript, 0x3540), 32)mstore(add(transcript, 0x3560), mload(add(transcript, 0x34c0)))mstore(add(transcript, 0x3580), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x35a0), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3500), 0xc0, add(transcript, 0x34e0), 0x20), 1), success){ let inv := mload(add(transcript, 0x34e0)) let v v := mload(add(transcript, 0x3300)) mstore(add(transcript, 0x3300), mulmod(mload(add(transcript, 0x34a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32e0)) mstore(add(transcript, 0x32e0), mulmod(mload(add(transcript, 0x3480)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32c0)) mstore(add(transcript, 0x32c0), mulmod(mload(add(transcript, 0x3460)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x31a0)) mstore(add(transcript, 0x31a0), mulmod(mload(add(transcript, 0x3440)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32a0)) mstore(add(transcript, 0x32a0), mulmod(mload(add(transcript, 0x3420)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3280)) mstore(add(transcript, 0x3280), mulmod(mload(add(transcript, 0x3400)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3260)) mstore(add(transcript, 0x3260), mulmod(mload(add(transcript, 0x33e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3240)) mstore(add(transcript, 0x3240), mulmod(mload(add(transcript, 0x33c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3220)) mstore(add(transcript, 0x3220), mulmod(mload(add(transcript, 0x33a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3200)) mstore(add(transcript, 0x3200), mulmod(mload(add(transcript, 0x3380)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3180)) mstore(add(transcript, 0x3180), mulmod(mload(add(transcript, 0x3360)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x31e0)) mstore(add(transcript, 0x31e0), mulmod(mload(add(transcript, 0x3340)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3160)) mstore(add(transcript, 0x3160), mulmod(mload(add(transcript, 0x3320)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3140)) mstore(add(transcript, 0x3140), mulmod(mload(add(transcript, 0x3120)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x3120), inv) }{ let result := mload(add(transcript, 0x3120))result := addmod(mload(add(transcript, 0x3140)), result, f_q)result := addmod(mload(add(transcript, 0x3160)), result, f_q)mstore(add(transcript, 0x35c0), result) }mstore(add(transcript, 0x35e0), mulmod(mload(add(transcript, 0x31c0)), mload(add(transcript, 0x3180)), f_q)){ let result := mload(add(transcript, 0x31e0))mstore(add(transcript, 0x3600), result) }mstore(add(transcript, 0x3620), mulmod(mload(add(transcript, 0x31c0)), mload(add(transcript, 0x3260)), f_q)){ let result := mload(add(transcript, 0x3200))result := addmod(mload(add(transcript, 0x3220)), result, f_q)result := addmod(mload(add(transcript, 0x3240)), result, f_q)mstore(add(transcript, 0x3640), result) }mstore(add(transcript, 0x3660), mulmod(mload(add(transcript, 0x31c0)), mload(add(transcript, 0x31a0)), f_q)){ let result := mload(add(transcript, 0x3280))result := addmod(mload(add(transcript, 0x32a0)), result, f_q)mstore(add(transcript, 0x3680), result) }mstore(add(transcript, 0x36a0), mulmod(mload(add(transcript, 0x31c0)), mload(add(transcript, 0x3300)), f_q)){ let result := mload(add(transcript, 0x32c0))result := addmod(mload(add(transcript, 0x32e0)), result, f_q)mstore(add(transcript, 0x36c0), result) }{ let prod := mload(add(transcript, 0x35c0)) prod := mulmod(mload(add(transcript, 0x3600)), prod, f_q) mstore(add(transcript, 0x36e0), prod) prod := mulmod(mload(add(transcript, 0x3640)), prod, f_q) mstore(add(transcript, 0x3700), prod) prod := mulmod(mload(add(transcript, 0x3680)), prod, f_q) mstore(add(transcript, 0x3720), prod) prod := mulmod(mload(add(transcript, 0x36c0)), prod, f_q) mstore(add(transcript, 0x3740), prod) }mstore(add(transcript, 0x3780), 32)mstore(add(transcript, 0x37a0), 32)mstore(add(transcript, 0x37c0), 32)mstore(add(transcript, 0x37e0), mload(add(transcript, 0x3740)))mstore(add(transcript, 0x3800), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x3820), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3780), 0xc0, add(transcript, 0x3760), 0x20), 1), success){ let inv := mload(add(transcript, 0x3760)) let v v := mload(add(transcript, 0x36c0)) mstore(add(transcript, 0x36c0), mulmod(mload(add(transcript, 0x3720)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3680)) mstore(add(transcript, 0x3680), mulmod(mload(add(transcript, 0x3700)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3640)) mstore(add(transcript, 0x3640), mulmod(mload(add(transcript, 0x36e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3600)) mstore(add(transcript, 0x3600), mulmod(mload(add(transcript, 0x35c0)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x35c0), inv) }mstore(add(transcript, 0x3840), mulmod(mload(add(transcript, 0x35e0)), mload(add(transcript, 0x3600)), f_q))mstore(add(transcript, 0x3860), mulmod(mload(add(transcript, 0x3620)), mload(add(transcript, 0x3640)), f_q))mstore(add(transcript, 0x3880), mulmod(mload(add(transcript, 0x3660)), mload(add(transcript, 0x3680)), f_q))mstore(add(transcript, 0x38a0), mulmod(mload(add(transcript, 0x36a0)), mload(add(transcript, 0x36c0)), f_q))mstore(add(transcript, 0x38c0), mulmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x38e0), mulmod(mload(add(transcript, 0x38c0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3900), mulmod(mload(add(transcript, 0x38e0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3920), mulmod(mload(add(transcript, 0x3900)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3940), mulmod(mload(add(transcript, 0x3920)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3960), mulmod(mload(add(transcript, 0x3940)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3980), mulmod(mload(add(transcript, 0x3960)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x39a0), mulmod(mload(add(transcript, 0x3980)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x39c0), mulmod(mload(add(transcript, 0x39a0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x39e0), mulmod(mload(add(transcript, 0x39c0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a00), mulmod(mload(add(transcript, 0x39e0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a20), mulmod(mload(add(transcript, 0x3a00)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a40), mulmod(mload(add(transcript, 0x3a20)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a60), mulmod(mload(add(transcript, 0x3a40)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a80), mulmod(mload(add(transcript, 0x3a60)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3aa0), mulmod(mload(add(transcript, 0x3a80)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3ac0), mulmod(mload(add(transcript, 0x3aa0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3ae0), mulmod(mload(add(transcript, 0x3ac0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3b00), mulmod(mload(add(transcript, 0x3ae0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3b20), mulmod(mload(add(transcript, 0x3b00)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3b40), mulmod(mload(add(transcript, 0xaa0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x3b60), mulmod(mload(add(transcript, 0x3b40)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x3b80), mulmod(mload(add(transcript, 0x3b60)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x3ba0), mulmod(mload(add(transcript, 0x3b80)), mload(add(transcript, 0xaa0)), f_q)){ let result := mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x3120)), f_q)result := addmod(mulmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x3140)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x3160)), f_q), result, f_q)mstore(add(transcript, 0x3bc0), result) }mstore(add(transcript, 0x3be0), mulmod(mload(add(transcript, 0x3bc0)), mload(add(transcript, 0x35c0)), f_q))mstore(add(transcript, 0x3c00), mulmod(sub(f_q, mload(add(transcript, 0x3be0))), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x3120)), f_q)result := addmod(mulmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x3140)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x3160)), f_q), result, f_q)mstore(add(transcript, 0x3c20), result) }mstore(add(transcript, 0x3c40), mulmod(mload(add(transcript, 0x3c20)), mload(add(transcript, 0x35c0)), f_q))mstore(add(transcript, 0x3c60), mulmod(sub(f_q, mload(add(transcript, 0x3c40))), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3c80), mulmod(1, mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3ca0), addmod(mload(add(transcript, 0x3c00)), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x3cc0), mulmod(mload(add(transcript, 0x3ca0)), 1, f_q))mstore(add(transcript, 0x3ce0), mulmod(mload(add(transcript, 0x3c80)), 1, f_q))mstore(add(transcript, 0x3d00), mulmod(1, mload(add(transcript, 0x35e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3d20), result) }mstore(add(transcript, 0x3d40), mulmod(mload(add(transcript, 0x3d20)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3d60), mulmod(sub(f_q, mload(add(transcript, 0x3d40))), 1, f_q))mstore(add(transcript, 0x3d80), mulmod(mload(add(transcript, 0x3d00)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3da0), result) }mstore(add(transcript, 0x3dc0), mulmod(mload(add(transcript, 0x3da0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3de0), mulmod(sub(f_q, mload(add(transcript, 0x3dc0))), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3e00), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3e20), addmod(mload(add(transcript, 0x3d60)), mload(add(transcript, 0x3de0)), f_q)){ let result := mulmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3e40), result) }mstore(add(transcript, 0x3e60), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3e80), mulmod(sub(f_q, mload(add(transcript, 0x3e60))), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x3ea0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x3ec0), addmod(mload(add(transcript, 0x3e20)), mload(add(transcript, 0x3e80)), f_q)){ let result := mulmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3ee0), result) }mstore(add(transcript, 0x3f00), mulmod(mload(add(transcript, 0x3ee0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3f20), mulmod(sub(f_q, mload(add(transcript, 0x3f00))), mload(add(transcript, 0x38e0)), f_q))mstore(add(transcript, 0x3f40), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x38e0)), f_q))mstore(add(transcript, 0x3f60), addmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3f20)), f_q)){ let result := mulmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3f80), result) }mstore(add(transcript, 0x3fa0), mulmod(mload(add(transcript, 0x3f80)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3fc0), mulmod(sub(f_q, mload(add(transcript, 0x3fa0))), mload(add(transcript, 0x3900)), f_q))mstore(add(transcript, 0x3fe0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3900)), f_q))mstore(add(transcript, 0x4000), addmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3fc0)), f_q)){ let result := mulmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4020), result) }mstore(add(transcript, 0x4040), mulmod(mload(add(transcript, 0x4020)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4060), mulmod(sub(f_q, mload(add(transcript, 0x4040))), mload(add(transcript, 0x3920)), f_q))mstore(add(transcript, 0x4080), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3920)), f_q))mstore(add(transcript, 0x40a0), addmod(mload(add(transcript, 0x4000)), mload(add(transcript, 0x4060)), f_q)){ let result := mulmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x40c0), result) }mstore(add(transcript, 0x40e0), mulmod(mload(add(transcript, 0x40c0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4100), mulmod(sub(f_q, mload(add(transcript, 0x40e0))), mload(add(transcript, 0x3940)), f_q))mstore(add(transcript, 0x4120), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3940)), f_q))mstore(add(transcript, 0x4140), addmod(mload(add(transcript, 0x40a0)), mload(add(transcript, 0x4100)), f_q)){ let result := mulmod(mload(add(transcript, 0x740)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4160), result) }mstore(add(transcript, 0x4180), mulmod(mload(add(transcript, 0x4160)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x41a0), mulmod(sub(f_q, mload(add(transcript, 0x4180))), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x41c0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x41e0), addmod(mload(add(transcript, 0x4140)), mload(add(transcript, 0x41a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4200), result) }mstore(add(transcript, 0x4220), mulmod(mload(add(transcript, 0x4200)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4240), mulmod(sub(f_q, mload(add(transcript, 0x4220))), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4260), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4280), addmod(mload(add(transcript, 0x41e0)), mload(add(transcript, 0x4240)), f_q)){ let result := mulmod(mload(add(transcript, 0x780)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x42a0), result) }mstore(add(transcript, 0x42c0), mulmod(mload(add(transcript, 0x42a0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x42e0), mulmod(sub(f_q, mload(add(transcript, 0x42c0))), mload(add(transcript, 0x39a0)), f_q))mstore(add(transcript, 0x4300), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x39a0)), f_q))mstore(add(transcript, 0x4320), addmod(mload(add(transcript, 0x4280)), mload(add(transcript, 0x42e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x7a0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4340), result) }mstore(add(transcript, 0x4360), mulmod(mload(add(transcript, 0x4340)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4380), mulmod(sub(f_q, mload(add(transcript, 0x4360))), mload(add(transcript, 0x39c0)), f_q))mstore(add(transcript, 0x43a0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x39c0)), f_q))mstore(add(transcript, 0x43c0), addmod(mload(add(transcript, 0x4320)), mload(add(transcript, 0x4380)), f_q)){ let result := mulmod(mload(add(transcript, 0x7c0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x43e0), result) }mstore(add(transcript, 0x4400), mulmod(mload(add(transcript, 0x43e0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4420), mulmod(sub(f_q, mload(add(transcript, 0x4400))), mload(add(transcript, 0x39e0)), f_q))mstore(add(transcript, 0x4440), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x39e0)), f_q))mstore(add(transcript, 0x4460), addmod(mload(add(transcript, 0x43c0)), mload(add(transcript, 0x4420)), f_q)){ let result := mulmod(mload(add(transcript, 0x7e0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4480), result) }mstore(add(transcript, 0x44a0), mulmod(mload(add(transcript, 0x4480)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x44c0), mulmod(sub(f_q, mload(add(transcript, 0x44a0))), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x44e0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4500), addmod(mload(add(transcript, 0x4460)), mload(add(transcript, 0x44c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4520), result) }mstore(add(transcript, 0x4540), mulmod(mload(add(transcript, 0x4520)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4560), mulmod(sub(f_q, mload(add(transcript, 0x4540))), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x4580), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x45a0), addmod(mload(add(transcript, 0x4500)), mload(add(transcript, 0x4560)), f_q)){ let result := mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x45c0), result) }mstore(add(transcript, 0x45e0), mulmod(mload(add(transcript, 0x45c0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4600), mulmod(sub(f_q, mload(add(transcript, 0x45e0))), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x4620), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x4640), addmod(mload(add(transcript, 0x45a0)), mload(add(transcript, 0x4600)), f_q)){ let result := mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4660), result) }mstore(add(transcript, 0x4680), mulmod(mload(add(transcript, 0x4660)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x46a0), mulmod(sub(f_q, mload(add(transcript, 0x4680))), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x46c0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x46e0), addmod(mload(add(transcript, 0x4640)), mload(add(transcript, 0x46a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4700), result) }mstore(add(transcript, 0x4720), mulmod(mload(add(transcript, 0x4700)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4740), mulmod(sub(f_q, mload(add(transcript, 0x4720))), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4760), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4780), addmod(mload(add(transcript, 0x46e0)), mload(add(transcript, 0x4740)), f_q)){ let result := mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x47a0), result) }mstore(add(transcript, 0x47c0), mulmod(mload(add(transcript, 0x47a0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x47e0), mulmod(sub(f_q, mload(add(transcript, 0x47c0))), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4800), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4820), addmod(mload(add(transcript, 0x4780)), mload(add(transcript, 0x47e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4840), result) }mstore(add(transcript, 0x4860), mulmod(mload(add(transcript, 0x4840)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4880), mulmod(sub(f_q, mload(add(transcript, 0x4860))), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x48a0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x48c0), addmod(mload(add(transcript, 0x4820)), mload(add(transcript, 0x4880)), f_q))mstore(add(transcript, 0x48e0), mulmod(mload(add(transcript, 0x2f60)), mload(add(transcript, 0x35e0)), f_q))mstore(add(transcript, 0x4900), mulmod(mload(add(transcript, 0x2f80)), mload(add(transcript, 0x35e0)), f_q))mstore(add(transcript, 0x4920), mulmod(mload(add(transcript, 0x2fa0)), mload(add(transcript, 0x35e0)), f_q))mstore(add(transcript, 0x4940), mulmod(mload(add(transcript, 0x2fc0)), mload(add(transcript, 0x35e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x2fe0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4960), result) }mstore(add(transcript, 0x4980), mulmod(mload(add(transcript, 0x4960)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x49a0), mulmod(sub(f_q, mload(add(transcript, 0x4980))), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x49c0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x49e0), mulmod(mload(add(transcript, 0x48e0)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4a00), mulmod(mload(add(transcript, 0x4900)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4a20), mulmod(mload(add(transcript, 0x4920)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4a40), mulmod(mload(add(transcript, 0x4940)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4a60), addmod(mload(add(transcript, 0x48c0)), mload(add(transcript, 0x49a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x800)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4a80), result) }mstore(add(transcript, 0x4aa0), mulmod(mload(add(transcript, 0x4a80)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4ac0), mulmod(sub(f_q, mload(add(transcript, 0x4aa0))), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x4ae0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x4b00), addmod(mload(add(transcript, 0x4a60)), mload(add(transcript, 0x4ac0)), f_q))mstore(add(transcript, 0x4b20), mulmod(mload(add(transcript, 0x4b00)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4b40), mulmod(mload(add(transcript, 0x3d80)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4b60), mulmod(mload(add(transcript, 0x3e00)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4b80), mulmod(mload(add(transcript, 0x3ea0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4ba0), mulmod(mload(add(transcript, 0x3f40)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4bc0), mulmod(mload(add(transcript, 0x3fe0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4be0), mulmod(mload(add(transcript, 0x4080)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c00), mulmod(mload(add(transcript, 0x4120)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c20), mulmod(mload(add(transcript, 0x41c0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c40), mulmod(mload(add(transcript, 0x4260)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c60), mulmod(mload(add(transcript, 0x4300)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c80), mulmod(mload(add(transcript, 0x43a0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4ca0), mulmod(mload(add(transcript, 0x4440)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4cc0), mulmod(mload(add(transcript, 0x44e0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4ce0), mulmod(mload(add(transcript, 0x4580)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d00), mulmod(mload(add(transcript, 0x4620)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d20), mulmod(mload(add(transcript, 0x46c0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d40), mulmod(mload(add(transcript, 0x4760)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d60), mulmod(mload(add(transcript, 0x4800)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d80), mulmod(mload(add(transcript, 0x48a0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4da0), mulmod(mload(add(transcript, 0x49c0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4dc0), mulmod(mload(add(transcript, 0x49e0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4de0), mulmod(mload(add(transcript, 0x4a00)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4e00), mulmod(mload(add(transcript, 0x4a20)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4e20), mulmod(mload(add(transcript, 0x4a40)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4e40), mulmod(mload(add(transcript, 0x4ae0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4e60), addmod(mload(add(transcript, 0x3cc0)), mload(add(transcript, 0x4b20)), f_q))mstore(add(transcript, 0x4e80), mulmod(1, mload(add(transcript, 0x3620)), f_q)){ let result := mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x3200)), f_q)result := addmod(mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x3220)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x920)), mload(add(transcript, 0x3240)), f_q), result, f_q)mstore(add(transcript, 0x4ea0), result) }mstore(add(transcript, 0x4ec0), mulmod(mload(add(transcript, 0x4ea0)), mload(add(transcript, 0x3860)), f_q))mstore(add(transcript, 0x4ee0), mulmod(sub(f_q, mload(add(transcript, 0x4ec0))), 1, f_q))mstore(add(transcript, 0x4f00), mulmod(mload(add(transcript, 0x4e80)), 1, f_q))mstore(add(transcript, 0x4f20), mulmod(mload(add(transcript, 0x4ee0)), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4f40), mulmod(mload(add(transcript, 0x4f00)), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4f60), addmod(mload(add(transcript, 0x4e60)), mload(add(transcript, 0x4f20)), f_q))mstore(add(transcript, 0x4f80), mulmod(1, mload(add(transcript, 0x3660)), f_q)){ let result := mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x3280)), f_q)result := addmod(mulmod(mload(add(transcript, 0x960)), mload(add(transcript, 0x32a0)), f_q), result, f_q)mstore(add(transcript, 0x4fa0), result) }mstore(add(transcript, 0x4fc0), mulmod(mload(add(transcript, 0x4fa0)), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x4fe0), mulmod(sub(f_q, mload(add(transcript, 0x4fc0))), 1, f_q))mstore(add(transcript, 0x5000), mulmod(mload(add(transcript, 0x4f80)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x3280)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9a0)), mload(add(transcript, 0x32a0)), f_q), result, f_q)mstore(add(transcript, 0x5020), result) }mstore(add(transcript, 0x5040), mulmod(mload(add(transcript, 0x5020)), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x5060), mulmod(sub(f_q, mload(add(transcript, 0x5040))), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x5080), mulmod(mload(add(transcript, 0x4f80)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x50a0), addmod(mload(add(transcript, 0x4fe0)), mload(add(transcript, 0x5060)), f_q))mstore(add(transcript, 0x50c0), mulmod(mload(add(transcript, 0x50a0)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x50e0), mulmod(mload(add(transcript, 0x5000)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x5100), mulmod(mload(add(transcript, 0x5080)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x5120), addmod(mload(add(transcript, 0x4f60)), mload(add(transcript, 0x50c0)), f_q))mstore(add(transcript, 0x5140), mulmod(1, mload(add(transcript, 0x36a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x32c0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9e0)), mload(add(transcript, 0x32e0)), f_q), result, f_q)mstore(add(transcript, 0x5160), result) }mstore(add(transcript, 0x5180), mulmod(mload(add(transcript, 0x5160)), mload(add(transcript, 0x38a0)), f_q))mstore(add(transcript, 0x51a0), mulmod(sub(f_q, mload(add(transcript, 0x5180))), 1, f_q))mstore(add(transcript, 0x51c0), mulmod(mload(add(transcript, 0x5140)), 1, f_q))mstore(add(transcript, 0x51e0), mulmod(mload(add(transcript, 0x51a0)), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x5200), mulmod(mload(add(transcript, 0x51c0)), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x5220), addmod(mload(add(transcript, 0x5120)), mload(add(transcript, 0x51e0)), f_q))mstore(add(transcript, 0x5240), mulmod(1, mload(add(transcript, 0x31c0)), f_q))mstore(add(transcript, 0x5260), mulmod(1, mload(add(transcript, 0xb40)), f_q))mstore(add(transcript, 0x5280), 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(add(transcript, 0x52a0), 0x0000000000000000000000000000000000000000000000000000000000000002)mstore(add(transcript, 0x52c0), mload(add(transcript, 0x5220)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5280), 0x60, add(transcript, 0x5280), 0x40), 1), success)mstore(add(transcript, 0x52e0), mload(add(transcript, 0x5280))) mstore(add(transcript, 0x5300), mload(add(transcript, 0x52a0)))mstore(add(transcript, 0x5320), mload(add(transcript, 0x60))) mstore(add(transcript, 0x5340), mload(add(transcript, 0x80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x52e0), 0x80, add(transcript, 0x52e0), 0x40), 1), success)mstore(add(transcript, 0x5360), mload(add(transcript, 0xa0))) mstore(add(transcript, 0x5380), mload(add(transcript, 0xc0)))mstore(add(transcript, 0x53a0), mload(add(transcript, 0x3ce0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5360), 0x60, add(transcript, 0x5360), 0x40), 1), success)mstore(add(transcript, 0x53c0), mload(add(transcript, 0x52e0))) mstore(add(transcript, 0x53e0), mload(add(transcript, 0x5300)))mstore(add(transcript, 0x5400), mload(add(transcript, 0x5360))) mstore(add(transcript, 0x5420), mload(add(transcript, 0x5380)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x53c0), 0x80, add(transcript, 0x53c0), 0x40), 1), success)mstore(add(transcript, 0x5440), mload(add(transcript, 0xe0))) mstore(add(transcript, 0x5460), mload(add(transcript, 0x100)))mstore(add(transcript, 0x5480), mload(add(transcript, 0x4b40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5440), 0x60, add(transcript, 0x5440), 0x40), 1), success)mstore(add(transcript, 0x54a0), mload(add(transcript, 0x53c0))) mstore(add(transcript, 0x54c0), mload(add(transcript, 0x53e0)))mstore(add(transcript, 0x54e0), mload(add(transcript, 0x5440))) mstore(add(transcript, 0x5500), mload(add(transcript, 0x5460)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x54a0), 0x80, add(transcript, 0x54a0), 0x40), 1), success)mstore(add(transcript, 0x5520), mload(add(transcript, 0x1c0))) mstore(add(transcript, 0x5540), mload(add(transcript, 0x1e0)))mstore(add(transcript, 0x5560), mload(add(transcript, 0x4b60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5520), 0x60, add(transcript, 0x5520), 0x40), 1), success)mstore(add(transcript, 0x5580), mload(add(transcript, 0x54a0))) mstore(add(transcript, 0x55a0), mload(add(transcript, 0x54c0)))mstore(add(transcript, 0x55c0), mload(add(transcript, 0x5520))) mstore(add(transcript, 0x55e0), mload(add(transcript, 0x5540)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5580), 0x80, add(transcript, 0x5580), 0x40), 1), success)mstore(add(transcript, 0x5600), 0x291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db425290) mstore(add(transcript, 0x5620), 0x154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc)mstore(add(transcript, 0x5640), mload(add(transcript, 0x4b80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5600), 0x60, add(transcript, 0x5600), 0x40), 1), success)mstore(add(transcript, 0x5660), mload(add(transcript, 0x5580))) mstore(add(transcript, 0x5680), mload(add(transcript, 0x55a0)))mstore(add(transcript, 0x56a0), mload(add(transcript, 0x5600))) mstore(add(transcript, 0x56c0), mload(add(transcript, 0x5620)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5660), 0x80, add(transcript, 0x5660), 0x40), 1), success)mstore(add(transcript, 0x56e0), 0x176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d) mstore(add(transcript, 0x5700), 0x1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51)mstore(add(transcript, 0x5720), mload(add(transcript, 0x4ba0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x56e0), 0x60, add(transcript, 0x56e0), 0x40), 1), success)mstore(add(transcript, 0x5740), mload(add(transcript, 0x5660))) mstore(add(transcript, 0x5760), mload(add(transcript, 0x5680)))mstore(add(transcript, 0x5780), mload(add(transcript, 0x56e0))) mstore(add(transcript, 0x57a0), mload(add(transcript, 0x5700)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5740), 0x80, add(transcript, 0x5740), 0x40), 1), success)mstore(add(transcript, 0x57c0), 0x019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e20250759) mstore(add(transcript, 0x57e0), 0x0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea83)mstore(add(transcript, 0x5800), mload(add(transcript, 0x4bc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x57c0), 0x60, add(transcript, 0x57c0), 0x40), 1), success)mstore(add(transcript, 0x5820), mload(add(transcript, 0x5740))) mstore(add(transcript, 0x5840), mload(add(transcript, 0x5760)))mstore(add(transcript, 0x5860), mload(add(transcript, 0x57c0))) mstore(add(transcript, 0x5880), mload(add(transcript, 0x57e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5820), 0x80, add(transcript, 0x5820), 0x40), 1), success)mstore(add(transcript, 0x58a0), 0x0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af) mstore(add(transcript, 0x58c0), 0x24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c43)mstore(add(transcript, 0x58e0), mload(add(transcript, 0x4be0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x58a0), 0x60, add(transcript, 0x58a0), 0x40), 1), success)mstore(add(transcript, 0x5900), mload(add(transcript, 0x5820))) mstore(add(transcript, 0x5920), mload(add(transcript, 0x5840)))mstore(add(transcript, 0x5940), mload(add(transcript, 0x58a0))) mstore(add(transcript, 0x5960), mload(add(transcript, 0x58c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5900), 0x80, add(transcript, 0x5900), 0x40), 1), success)mstore(add(transcript, 0x5980), 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) mstore(add(transcript, 0x59a0), 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0)mstore(add(transcript, 0x59c0), mload(add(transcript, 0x4c00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5980), 0x60, add(transcript, 0x5980), 0x40), 1), success)mstore(add(transcript, 0x59e0), mload(add(transcript, 0x5900))) mstore(add(transcript, 0x5a00), mload(add(transcript, 0x5920)))mstore(add(transcript, 0x5a20), mload(add(transcript, 0x5980))) mstore(add(transcript, 0x5a40), mload(add(transcript, 0x59a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x59e0), 0x80, add(transcript, 0x59e0), 0x40), 1), success)mstore(add(transcript, 0x5a60), 0x0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed) mstore(add(transcript, 0x5a80), 0x286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf)mstore(add(transcript, 0x5aa0), mload(add(transcript, 0x4c20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5a60), 0x60, add(transcript, 0x5a60), 0x40), 1), success)mstore(add(transcript, 0x5ac0), mload(add(transcript, 0x59e0))) mstore(add(transcript, 0x5ae0), mload(add(transcript, 0x5a00)))mstore(add(transcript, 0x5b00), mload(add(transcript, 0x5a60))) mstore(add(transcript, 0x5b20), mload(add(transcript, 0x5a80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ac0), 0x80, add(transcript, 0x5ac0), 0x40), 1), success)mstore(add(transcript, 0x5b40), 0x14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5) mstore(add(transcript, 0x5b60), 0x0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2)mstore(add(transcript, 0x5b80), mload(add(transcript, 0x4c40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5b40), 0x60, add(transcript, 0x5b40), 0x40), 1), success)mstore(add(transcript, 0x5ba0), mload(add(transcript, 0x5ac0))) mstore(add(transcript, 0x5bc0), mload(add(transcript, 0x5ae0)))mstore(add(transcript, 0x5be0), mload(add(transcript, 0x5b40))) mstore(add(transcript, 0x5c00), mload(add(transcript, 0x5b60)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ba0), 0x80, add(transcript, 0x5ba0), 0x40), 1), success)mstore(add(transcript, 0x5c20), 0x0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36) mstore(add(transcript, 0x5c40), 0x2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890)mstore(add(transcript, 0x5c60), mload(add(transcript, 0x4c60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5c20), 0x60, add(transcript, 0x5c20), 0x40), 1), success)mstore(add(transcript, 0x5c80), mload(add(transcript, 0x5ba0))) mstore(add(transcript, 0x5ca0), mload(add(transcript, 0x5bc0)))mstore(add(transcript, 0x5cc0), mload(add(transcript, 0x5c20))) mstore(add(transcript, 0x5ce0), mload(add(transcript, 0x5c40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5c80), 0x80, add(transcript, 0x5c80), 0x40), 1), success)mstore(add(transcript, 0x5d00), 0x1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f) mstore(add(transcript, 0x5d20), 0x1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d)mstore(add(transcript, 0x5d40), mload(add(transcript, 0x4c80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5d00), 0x60, add(transcript, 0x5d00), 0x40), 1), success)mstore(add(transcript, 0x5d60), mload(add(transcript, 0x5c80))) mstore(add(transcript, 0x5d80), mload(add(transcript, 0x5ca0)))mstore(add(transcript, 0x5da0), mload(add(transcript, 0x5d00))) mstore(add(transcript, 0x5dc0), mload(add(transcript, 0x5d20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5d60), 0x80, add(transcript, 0x5d60), 0x40), 1), success)mstore(add(transcript, 0x5de0), 0x07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c) mstore(add(transcript, 0x5e00), 0x1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68)mstore(add(transcript, 0x5e20), mload(add(transcript, 0x4ca0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5de0), 0x60, add(transcript, 0x5de0), 0x40), 1), success)mstore(add(transcript, 0x5e40), mload(add(transcript, 0x5d60))) mstore(add(transcript, 0x5e60), mload(add(transcript, 0x5d80)))mstore(add(transcript, 0x5e80), mload(add(transcript, 0x5de0))) mstore(add(transcript, 0x5ea0), mload(add(transcript, 0x5e00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5e40), 0x80, add(transcript, 0x5e40), 0x40), 1), success)mstore(add(transcript, 0x5ec0), 0x0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701) mstore(add(transcript, 0x5ee0), 0x07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a)mstore(add(transcript, 0x5f00), mload(add(transcript, 0x4cc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5ec0), 0x60, add(transcript, 0x5ec0), 0x40), 1), success)mstore(add(transcript, 0x5f20), mload(add(transcript, 0x5e40))) mstore(add(transcript, 0x5f40), mload(add(transcript, 0x5e60)))mstore(add(transcript, 0x5f60), mload(add(transcript, 0x5ec0))) mstore(add(transcript, 0x5f80), mload(add(transcript, 0x5ee0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5f20), 0x80, add(transcript, 0x5f20), 0x40), 1), success)mstore(add(transcript, 0x5fa0), 0x2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d) mstore(add(transcript, 0x5fc0), 0x154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6)mstore(add(transcript, 0x5fe0), mload(add(transcript, 0x4ce0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5fa0), 0x60, add(transcript, 0x5fa0), 0x40), 1), success)mstore(add(transcript, 0x6000), mload(add(transcript, 0x5f20))) mstore(add(transcript, 0x6020), mload(add(transcript, 0x5f40)))mstore(add(transcript, 0x6040), mload(add(transcript, 0x5fa0))) mstore(add(transcript, 0x6060), mload(add(transcript, 0x5fc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6000), 0x80, add(transcript, 0x6000), 0x40), 1), success)mstore(add(transcript, 0x6080), 0x2402db4b1c7746dcd9fe7eab82ab3fa7ebb1bd352a9af94ef6811b2af9ab6f8e) mstore(add(transcript, 0x60a0), 0x2a0047ec08a254753c466648f0dc6e077e88e5495829c3a845873b9058bf4407)mstore(add(transcript, 0x60c0), mload(add(transcript, 0x4d00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6080), 0x60, add(transcript, 0x6080), 0x40), 1), success)mstore(add(transcript, 0x60e0), mload(add(transcript, 0x6000))) mstore(add(transcript, 0x6100), mload(add(transcript, 0x6020)))mstore(add(transcript, 0x6120), mload(add(transcript, 0x6080))) mstore(add(transcript, 0x6140), mload(add(transcript, 0x60a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x60e0), 0x80, add(transcript, 0x60e0), 0x40), 1), success)mstore(add(transcript, 0x6160), 0x0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a) mstore(add(transcript, 0x6180), 0x27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28)mstore(add(transcript, 0x61a0), mload(add(transcript, 0x4d20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6160), 0x60, add(transcript, 0x6160), 0x40), 1), success)mstore(add(transcript, 0x61c0), mload(add(transcript, 0x60e0))) mstore(add(transcript, 0x61e0), mload(add(transcript, 0x6100)))mstore(add(transcript, 0x6200), mload(add(transcript, 0x6160))) mstore(add(transcript, 0x6220), mload(add(transcript, 0x6180)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x61c0), 0x80, add(transcript, 0x61c0), 0x40), 1), success)mstore(add(transcript, 0x6240), 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) mstore(add(transcript, 0x6260), 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3)mstore(add(transcript, 0x6280), mload(add(transcript, 0x4d40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6240), 0x60, add(transcript, 0x6240), 0x40), 1), success)mstore(add(transcript, 0x62a0), mload(add(transcript, 0x61c0))) mstore(add(transcript, 0x62c0), mload(add(transcript, 0x61e0)))mstore(add(transcript, 0x62e0), mload(add(transcript, 0x6240))) mstore(add(transcript, 0x6300), mload(add(transcript, 0x6260)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x62a0), 0x80, add(transcript, 0x62a0), 0x40), 1), success)mstore(add(transcript, 0x6320), 0x1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a) mstore(add(transcript, 0x6340), 0x00b004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56)mstore(add(transcript, 0x6360), mload(add(transcript, 0x4d60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6320), 0x60, add(transcript, 0x6320), 0x40), 1), success)mstore(add(transcript, 0x6380), mload(add(transcript, 0x62a0))) mstore(add(transcript, 0x63a0), mload(add(transcript, 0x62c0)))mstore(add(transcript, 0x63c0), mload(add(transcript, 0x6320))) mstore(add(transcript, 0x63e0), mload(add(transcript, 0x6340)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6380), 0x80, add(transcript, 0x6380), 0x40), 1), success)mstore(add(transcript, 0x6400), 0x2903a763c1c6b78667f906b6fe2b4ad197b55587c90e14e8502446da8c45ef7d) mstore(add(transcript, 0x6420), 0x13ea57986f9295e92def3303aef53f2b4f625ba985531201ab53dc7307f46b69)mstore(add(transcript, 0x6440), mload(add(transcript, 0x4d80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6400), 0x60, add(transcript, 0x6400), 0x40), 1), success)mstore(add(transcript, 0x6460), mload(add(transcript, 0x6380))) mstore(add(transcript, 0x6480), mload(add(transcript, 0x63a0)))mstore(add(transcript, 0x64a0), mload(add(transcript, 0x6400))) mstore(add(transcript, 0x64c0), mload(add(transcript, 0x6420)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6460), 0x80, add(transcript, 0x6460), 0x40), 1), success)mstore(add(transcript, 0x64e0), mload(add(transcript, 0x420))) mstore(add(transcript, 0x6500), mload(add(transcript, 0x440)))mstore(add(transcript, 0x6520), mload(add(transcript, 0x4da0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x64e0), 0x60, add(transcript, 0x64e0), 0x40), 1), success)mstore(add(transcript, 0x6540), mload(add(transcript, 0x6460))) mstore(add(transcript, 0x6560), mload(add(transcript, 0x6480)))mstore(add(transcript, 0x6580), mload(add(transcript, 0x64e0))) mstore(add(transcript, 0x65a0), mload(add(transcript, 0x6500)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6540), 0x80, add(transcript, 0x6540), 0x40), 1), success)mstore(add(transcript, 0x65c0), mload(add(transcript, 0x460))) mstore(add(transcript, 0x65e0), mload(add(transcript, 0x480)))mstore(add(transcript, 0x6600), mload(add(transcript, 0x4dc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x65c0), 0x60, add(transcript, 0x65c0), 0x40), 1), success)mstore(add(transcript, 0x6620), mload(add(transcript, 0x6540))) mstore(add(transcript, 0x6640), mload(add(transcript, 0x6560)))mstore(add(transcript, 0x6660), mload(add(transcript, 0x65c0))) mstore(add(transcript, 0x6680), mload(add(transcript, 0x65e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6620), 0x80, add(transcript, 0x6620), 0x40), 1), success)mstore(add(transcript, 0x66a0), mload(add(transcript, 0x4a0))) mstore(add(transcript, 0x66c0), mload(add(transcript, 0x4c0)))mstore(add(transcript, 0x66e0), mload(add(transcript, 0x4de0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x66a0), 0x60, add(transcript, 0x66a0), 0x40), 1), success)mstore(add(transcript, 0x6700), mload(add(transcript, 0x6620))) mstore(add(transcript, 0x6720), mload(add(transcript, 0x6640)))mstore(add(transcript, 0x6740), mload(add(transcript, 0x66a0))) mstore(add(transcript, 0x6760), mload(add(transcript, 0x66c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6700), 0x80, add(transcript, 0x6700), 0x40), 1), success)mstore(add(transcript, 0x6780), mload(add(transcript, 0x4e0))) mstore(add(transcript, 0x67a0), mload(add(transcript, 0x500)))mstore(add(transcript, 0x67c0), mload(add(transcript, 0x4e00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6780), 0x60, add(transcript, 0x6780), 0x40), 1), success)mstore(add(transcript, 0x67e0), mload(add(transcript, 0x6700))) mstore(add(transcript, 0x6800), mload(add(transcript, 0x6720)))mstore(add(transcript, 0x6820), mload(add(transcript, 0x6780))) mstore(add(transcript, 0x6840), mload(add(transcript, 0x67a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x67e0), 0x80, add(transcript, 0x67e0), 0x40), 1), success)mstore(add(transcript, 0x6860), mload(add(transcript, 0x520))) mstore(add(transcript, 0x6880), mload(add(transcript, 0x540)))mstore(add(transcript, 0x68a0), mload(add(transcript, 0x4e20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6860), 0x60, add(transcript, 0x6860), 0x40), 1), success)mstore(add(transcript, 0x68c0), mload(add(transcript, 0x67e0))) mstore(add(transcript, 0x68e0), mload(add(transcript, 0x6800)))mstore(add(transcript, 0x6900), mload(add(transcript, 0x6860))) mstore(add(transcript, 0x6920), mload(add(transcript, 0x6880)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x68c0), 0x80, add(transcript, 0x68c0), 0x40), 1), success)mstore(add(transcript, 0x6940), mload(add(transcript, 0x380))) mstore(add(transcript, 0x6960), mload(add(transcript, 0x3a0)))mstore(add(transcript, 0x6980), mload(add(transcript, 0x4e40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6940), 0x60, add(transcript, 0x6940), 0x40), 1), success)mstore(add(transcript, 0x69a0), mload(add(transcript, 0x68c0))) mstore(add(transcript, 0x69c0), mload(add(transcript, 0x68e0)))mstore(add(transcript, 0x69e0), mload(add(transcript, 0x6940))) mstore(add(transcript, 0x6a00), mload(add(transcript, 0x6960)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x69a0), 0x80, add(transcript, 0x69a0), 0x40), 1), success)mstore(add(transcript, 0x6a20), mload(add(transcript, 0x2c0))) mstore(add(transcript, 0x6a40), mload(add(transcript, 0x2e0)))mstore(add(transcript, 0x6a60), mload(add(transcript, 0x4f40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6a20), 0x60, add(transcript, 0x6a20), 0x40), 1), success)mstore(add(transcript, 0x6a80), mload(add(transcript, 0x69a0))) mstore(add(transcript, 0x6aa0), mload(add(transcript, 0x69c0)))mstore(add(transcript, 0x6ac0), mload(add(transcript, 0x6a20))) mstore(add(transcript, 0x6ae0), mload(add(transcript, 0x6a40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6a80), 0x80, add(transcript, 0x6a80), 0x40), 1), success)mstore(add(transcript, 0x6b00), mload(add(transcript, 0x300))) mstore(add(transcript, 0x6b20), mload(add(transcript, 0x320)))mstore(add(transcript, 0x6b40), mload(add(transcript, 0x50e0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6b00), 0x60, add(transcript, 0x6b00), 0x40), 1), success)mstore(add(transcript, 0x6b60), mload(add(transcript, 0x6a80))) mstore(add(transcript, 0x6b80), mload(add(transcript, 0x6aa0)))mstore(add(transcript, 0x6ba0), mload(add(transcript, 0x6b00))) mstore(add(transcript, 0x6bc0), mload(add(transcript, 0x6b20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6b60), 0x80, add(transcript, 0x6b60), 0x40), 1), success)mstore(add(transcript, 0x6be0), mload(add(transcript, 0x340))) mstore(add(transcript, 0x6c00), mload(add(transcript, 0x360)))mstore(add(transcript, 0x6c20), mload(add(transcript, 0x5100)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6be0), 0x60, add(transcript, 0x6be0), 0x40), 1), success)mstore(add(transcript, 0x6c40), mload(add(transcript, 0x6b60))) mstore(add(transcript, 0x6c60), mload(add(transcript, 0x6b80)))mstore(add(transcript, 0x6c80), mload(add(transcript, 0x6be0))) mstore(add(transcript, 0x6ca0), mload(add(transcript, 0x6c00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6c40), 0x80, add(transcript, 0x6c40), 0x40), 1), success)mstore(add(transcript, 0x6cc0), mload(add(transcript, 0x180))) mstore(add(transcript, 0x6ce0), mload(add(transcript, 0x1a0)))mstore(add(transcript, 0x6d00), mload(add(transcript, 0x5200)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6cc0), 0x60, add(transcript, 0x6cc0), 0x40), 1), success)mstore(add(transcript, 0x6d20), mload(add(transcript, 0x6c40))) mstore(add(transcript, 0x6d40), mload(add(transcript, 0x6c60)))mstore(add(transcript, 0x6d60), mload(add(transcript, 0x6cc0))) mstore(add(transcript, 0x6d80), mload(add(transcript, 0x6ce0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6d20), 0x80, add(transcript, 0x6d20), 0x40), 1), success)mstore(add(transcript, 0x6da0), mload(add(transcript, 0xae0))) mstore(add(transcript, 0x6dc0), mload(add(transcript, 0xb00)))mstore(add(transcript, 0x6de0), sub(f_q, mload(add(transcript, 0x5240))))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6da0), 0x60, add(transcript, 0x6da0), 0x40), 1), success)mstore(add(transcript, 0x6e00), mload(add(transcript, 0x6d20))) mstore(add(transcript, 0x6e20), mload(add(transcript, 0x6d40)))mstore(add(transcript, 0x6e40), mload(add(transcript, 0x6da0))) mstore(add(transcript, 0x6e60), mload(add(transcript, 0x6dc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6e00), 0x80, add(transcript, 0x6e00), 0x40), 1), success)mstore(add(transcript, 0x6e80), mload(add(transcript, 0xb80))) mstore(add(transcript, 0x6ea0), mload(add(transcript, 0xba0)))mstore(add(transcript, 0x6ec0), mload(add(transcript, 0x5260)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6e80), 0x60, add(transcript, 0x6e80), 0x40), 1), success)mstore(add(transcript, 0x6ee0), mload(add(transcript, 0x6e00))) mstore(add(transcript, 0x6f00), mload(add(transcript, 0x6e20)))mstore(add(transcript, 0x6f20), mload(add(transcript, 0x6e80))) mstore(add(transcript, 0x6f40), mload(add(transcript, 0x6ea0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6ee0), 0x80, add(transcript, 0x6ee0), 0x40), 1), success)mstore(add(transcript, 0x6f60), mload(add(transcript, 0x6ee0))) mstore(add(transcript, 0x6f80), mload(add(transcript, 0x6f00)))mstore(add(transcript, 0x6fa0), 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(add(transcript, 0x6fc0), 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(add(transcript, 0x6fe0), 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(add(transcript, 0x7000), 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)mstore(add(transcript, 0x7020), mload(add(transcript, 0xb80))) mstore(add(transcript, 0x7040), mload(add(transcript, 0xba0)))mstore(add(transcript, 0x7060), 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) mstore(add(transcript, 0x7080), 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) mstore(add(transcript, 0x70a0), 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) mstore(add(transcript, 0x70c0), 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff)success := and(eq(staticcall(gas(), 0x8, add(transcript, 0x6f60), 0x180, add(transcript, 0x6f60), 0x20), 1), success)success := and(eq(mload(add(transcript, 0x6f60)), 1), success)} return success; } } + bytes32[916] memory transcript; + assembly { let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 function validate_ec_point(x, y) -> valid { { let x_lt_p := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let y_lt_p := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) valid := and(x_lt_p, y_lt_p) } { let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let is_affine := eq(x_cube_plus_3, y_square) valid := and(valid, is_affine) } } mstore(add(transcript, 0x20), mod(mload(add(pubInputs, 0x20)), f_q))mstore(add(transcript, 0x40), mod(mload(add(pubInputs, 0x40)), f_q))mstore(add(transcript, 0x60), mod(mload(add(pubInputs, 0x60)), f_q))mstore(add(transcript, 0x80), mod(mload(add(pubInputs, 0x80)), f_q))mstore(add(transcript, 0x0), 7290356956133308795219632317546298177560913853825373832110764139479796737523) { let x := mload(add(proof, 0x20)) mstore(add(transcript, 0xa0), x) let y := mload(add(proof, 0x40)) mstore(add(transcript, 0xc0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x60)) mstore(add(transcript, 0xe0), x) let y := mload(add(proof, 0x80)) mstore(add(transcript, 0x100), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0xa0)) mstore(add(transcript, 0x120), x) let y := mload(add(proof, 0xc0)) mstore(add(transcript, 0x140), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x160), keccak256(add(transcript, 0x0), 352)){ let hash := mload(add(transcript, 0x160)) mstore(add(transcript, 0x180), mod(hash, f_q)) mstore(add(transcript, 0x1a0), hash) } { let x := mload(add(proof, 0xe0)) mstore(add(transcript, 0x1c0), x) let y := mload(add(proof, 0x100)) mstore(add(transcript, 0x1e0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x120)) mstore(add(transcript, 0x200), x) let y := mload(add(proof, 0x140)) mstore(add(transcript, 0x220), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x240), keccak256(add(transcript, 0x1a0), 160)){ let hash := mload(add(transcript, 0x240)) mstore(add(transcript, 0x260), mod(hash, f_q)) mstore(add(transcript, 0x280), hash) }mstore8(add(transcript, 0x2a0), 1)mstore(add(transcript, 0x2a0), keccak256(add(transcript, 0x280), 33)){ let hash := mload(add(transcript, 0x2a0)) mstore(add(transcript, 0x2c0), mod(hash, f_q)) mstore(add(transcript, 0x2e0), hash) } { let x := mload(add(proof, 0x160)) mstore(add(transcript, 0x300), x) let y := mload(add(proof, 0x180)) mstore(add(transcript, 0x320), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1a0)) mstore(add(transcript, 0x340), x) let y := mload(add(proof, 0x1c0)) mstore(add(transcript, 0x360), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1e0)) mstore(add(transcript, 0x380), x) let y := mload(add(proof, 0x200)) mstore(add(transcript, 0x3a0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x220)) mstore(add(transcript, 0x3c0), x) let y := mload(add(proof, 0x240)) mstore(add(transcript, 0x3e0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x400), keccak256(add(transcript, 0x2e0), 288)){ let hash := mload(add(transcript, 0x400)) mstore(add(transcript, 0x420), mod(hash, f_q)) mstore(add(transcript, 0x440), hash) } { let x := mload(add(proof, 0x260)) mstore(add(transcript, 0x460), x) let y := mload(add(proof, 0x280)) mstore(add(transcript, 0x480), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2a0)) mstore(add(transcript, 0x4a0), x) let y := mload(add(proof, 0x2c0)) mstore(add(transcript, 0x4c0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2e0)) mstore(add(transcript, 0x4e0), x) let y := mload(add(proof, 0x300)) mstore(add(transcript, 0x500), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x320)) mstore(add(transcript, 0x520), x) let y := mload(add(proof, 0x340)) mstore(add(transcript, 0x540), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x360)) mstore(add(transcript, 0x560), x) let y := mload(add(proof, 0x380)) mstore(add(transcript, 0x580), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x5a0), keccak256(add(transcript, 0x440), 352)){ let hash := mload(add(transcript, 0x5a0)) mstore(add(transcript, 0x5c0), mod(hash, f_q)) mstore(add(transcript, 0x5e0), hash) }mstore(add(transcript, 0x600), mod(mload(add(proof, 0x3a0)), f_q))mstore(add(transcript, 0x620), mod(mload(add(proof, 0x3c0)), f_q))mstore(add(transcript, 0x640), mod(mload(add(proof, 0x3e0)), f_q))mstore(add(transcript, 0x660), mod(mload(add(proof, 0x400)), f_q))mstore(add(transcript, 0x680), mod(mload(add(proof, 0x420)), f_q))mstore(add(transcript, 0x6a0), mod(mload(add(proof, 0x440)), f_q))mstore(add(transcript, 0x6c0), mod(mload(add(proof, 0x460)), f_q))mstore(add(transcript, 0x6e0), mod(mload(add(proof, 0x480)), f_q))mstore(add(transcript, 0x700), mod(mload(add(proof, 0x4a0)), f_q))mstore(add(transcript, 0x720), mod(mload(add(proof, 0x4c0)), f_q))mstore(add(transcript, 0x740), mod(mload(add(proof, 0x4e0)), f_q))mstore(add(transcript, 0x760), mod(mload(add(proof, 0x500)), f_q))mstore(add(transcript, 0x780), mod(mload(add(proof, 0x520)), f_q))mstore(add(transcript, 0x7a0), mod(mload(add(proof, 0x540)), f_q))mstore(add(transcript, 0x7c0), mod(mload(add(proof, 0x560)), f_q))mstore(add(transcript, 0x7e0), mod(mload(add(proof, 0x580)), f_q))mstore(add(transcript, 0x800), mod(mload(add(proof, 0x5a0)), f_q))mstore(add(transcript, 0x820), mod(mload(add(proof, 0x5c0)), f_q))mstore(add(transcript, 0x840), mod(mload(add(proof, 0x5e0)), f_q))mstore(add(transcript, 0x860), mod(mload(add(proof, 0x600)), f_q))mstore(add(transcript, 0x880), mod(mload(add(proof, 0x620)), f_q))mstore(add(transcript, 0x8a0), mod(mload(add(proof, 0x640)), f_q))mstore(add(transcript, 0x8c0), mod(mload(add(proof, 0x660)), f_q))mstore(add(transcript, 0x8e0), mod(mload(add(proof, 0x680)), f_q))mstore(add(transcript, 0x900), mod(mload(add(proof, 0x6a0)), f_q))mstore(add(transcript, 0x920), mod(mload(add(proof, 0x6c0)), f_q))mstore(add(transcript, 0x940), mod(mload(add(proof, 0x6e0)), f_q))mstore(add(transcript, 0x960), mod(mload(add(proof, 0x700)), f_q))mstore(add(transcript, 0x980), mod(mload(add(proof, 0x720)), f_q))mstore(add(transcript, 0x9a0), mod(mload(add(proof, 0x740)), f_q))mstore(add(transcript, 0x9c0), mod(mload(add(proof, 0x760)), f_q))mstore(add(transcript, 0x9e0), mod(mload(add(proof, 0x780)), f_q))mstore(add(transcript, 0xa00), mod(mload(add(proof, 0x7a0)), f_q))mstore(add(transcript, 0xa20), mod(mload(add(proof, 0x7c0)), f_q))mstore(add(transcript, 0xa40), mod(mload(add(proof, 0x7e0)), f_q))mstore(add(transcript, 0xa60), keccak256(add(transcript, 0x5e0), 1152)){ let hash := mload(add(transcript, 0xa60)) mstore(add(transcript, 0xa80), mod(hash, f_q)) mstore(add(transcript, 0xaa0), hash) }mstore8(add(transcript, 0xac0), 1)mstore(add(transcript, 0xac0), keccak256(add(transcript, 0xaa0), 33)){ let hash := mload(add(transcript, 0xac0)) mstore(add(transcript, 0xae0), mod(hash, f_q)) mstore(add(transcript, 0xb00), hash) } { let x := mload(add(proof, 0x800)) mstore(add(transcript, 0xb20), x) let y := mload(add(proof, 0x820)) mstore(add(transcript, 0xb40), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xb60), keccak256(add(transcript, 0xb00), 96)){ let hash := mload(add(transcript, 0xb60)) mstore(add(transcript, 0xb80), mod(hash, f_q)) mstore(add(transcript, 0xba0), hash) } { let x := mload(add(proof, 0x840)) mstore(add(transcript, 0xbc0), x) let y := mload(add(proof, 0x860)) mstore(add(transcript, 0xbe0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xc00), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0xc20), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0xc00)), f_q))mstore(add(transcript, 0xc40), mulmod(mload(add(transcript, 0xc20)), mload(add(transcript, 0xc20)), f_q))mstore(add(transcript, 0xc60), mulmod(mload(add(transcript, 0xc40)), mload(add(transcript, 0xc40)), f_q))mstore(add(transcript, 0xc80), mulmod(mload(add(transcript, 0xc60)), mload(add(transcript, 0xc60)), f_q))mstore(add(transcript, 0xca0), mulmod(mload(add(transcript, 0xc80)), mload(add(transcript, 0xc80)), f_q))mstore(add(transcript, 0xcc0), mulmod(mload(add(transcript, 0xca0)), mload(add(transcript, 0xca0)), f_q))mstore(add(transcript, 0xce0), mulmod(mload(add(transcript, 0xcc0)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0xd00), mulmod(mload(add(transcript, 0xce0)), mload(add(transcript, 0xce0)), f_q))mstore(add(transcript, 0xd20), mulmod(mload(add(transcript, 0xd00)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0xd40), mulmod(mload(add(transcript, 0xd20)), mload(add(transcript, 0xd20)), f_q))mstore(add(transcript, 0xd60), addmod(mload(add(transcript, 0xd40)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xd80), mulmod(mload(add(transcript, 0xd60)), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q))mstore(add(transcript, 0xda0), mulmod(mload(add(transcript, 0xd80)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0xdc0), addmod(mload(add(transcript, 0x5c0)), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q))mstore(add(transcript, 0xde0), mulmod(mload(add(transcript, 0xd80)), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q))mstore(add(transcript, 0xe00), addmod(mload(add(transcript, 0x5c0)), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q))mstore(add(transcript, 0xe20), mulmod(mload(add(transcript, 0xd80)), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q))mstore(add(transcript, 0xe40), addmod(mload(add(transcript, 0x5c0)), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q))mstore(add(transcript, 0xe60), mulmod(mload(add(transcript, 0xd80)), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q))mstore(add(transcript, 0xe80), addmod(mload(add(transcript, 0x5c0)), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q))mstore(add(transcript, 0xea0), mulmod(mload(add(transcript, 0xd80)), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q))mstore(add(transcript, 0xec0), addmod(mload(add(transcript, 0x5c0)), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q))mstore(add(transcript, 0xee0), mulmod(mload(add(transcript, 0xd80)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0xf00), addmod(mload(add(transcript, 0x5c0)), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q))mstore(add(transcript, 0xf20), mulmod(mload(add(transcript, 0xd80)), 1, f_q))mstore(add(transcript, 0xf40), addmod(mload(add(transcript, 0x5c0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xf60), mulmod(mload(add(transcript, 0xd80)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0xf80), addmod(mload(add(transcript, 0x5c0)), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q))mstore(add(transcript, 0xfa0), mulmod(mload(add(transcript, 0xd80)), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q))mstore(add(transcript, 0xfc0), addmod(mload(add(transcript, 0x5c0)), 2507682784038009475131574039120954579123549720846755509306663987687515178116, f_q))mstore(add(transcript, 0xfe0), mulmod(mload(add(transcript, 0xd80)), 11322573621548282883955256084347882816245615123967859588024989498742209856615, f_q))mstore(add(transcript, 0x1000), addmod(mload(add(transcript, 0x5c0)), 10565669250290992338291149660909392272302749276448174755673214687833598639002, f_q)){ let prod := mload(add(transcript, 0xdc0)) prod := mulmod(mload(add(transcript, 0xe00)), prod, f_q) mstore(add(transcript, 0x1020), prod) prod := mulmod(mload(add(transcript, 0xe40)), prod, f_q) mstore(add(transcript, 0x1040), prod) prod := mulmod(mload(add(transcript, 0xe80)), prod, f_q) mstore(add(transcript, 0x1060), prod) prod := mulmod(mload(add(transcript, 0xec0)), prod, f_q) mstore(add(transcript, 0x1080), prod) prod := mulmod(mload(add(transcript, 0xf00)), prod, f_q) mstore(add(transcript, 0x10a0), prod) prod := mulmod(mload(add(transcript, 0xf40)), prod, f_q) mstore(add(transcript, 0x10c0), prod) prod := mulmod(mload(add(transcript, 0xf80)), prod, f_q) mstore(add(transcript, 0x10e0), prod) prod := mulmod(mload(add(transcript, 0xfc0)), prod, f_q) mstore(add(transcript, 0x1100), prod) prod := mulmod(mload(add(transcript, 0x1000)), prod, f_q) mstore(add(transcript, 0x1120), prod) prod := mulmod(mload(add(transcript, 0xd60)), prod, f_q) mstore(add(transcript, 0x1140), prod) }mstore(add(transcript, 0x1180), 32)mstore(add(transcript, 0x11a0), 32)mstore(add(transcript, 0x11c0), 32)mstore(add(transcript, 0x11e0), mload(add(transcript, 0x1140)))mstore(add(transcript, 0x1200), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x1220), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x1180), 0xc0, add(transcript, 0x1160), 0x20), 1), success){ let inv := mload(add(transcript, 0x1160)) let v v := mload(add(transcript, 0xd60)) mstore(add(transcript, 0xd60), mulmod(mload(add(transcript, 0x1120)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x1000)) mstore(add(transcript, 0x1000), mulmod(mload(add(transcript, 0x1100)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xfc0)) mstore(add(transcript, 0xfc0), mulmod(mload(add(transcript, 0x10e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf80)) mstore(add(transcript, 0xf80), mulmod(mload(add(transcript, 0x10c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf40)) mstore(add(transcript, 0xf40), mulmod(mload(add(transcript, 0x10a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf00)) mstore(add(transcript, 0xf00), mulmod(mload(add(transcript, 0x1080)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xec0)) mstore(add(transcript, 0xec0), mulmod(mload(add(transcript, 0x1060)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe80)) mstore(add(transcript, 0xe80), mulmod(mload(add(transcript, 0x1040)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe40)) mstore(add(transcript, 0xe40), mulmod(mload(add(transcript, 0x1020)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe00)) mstore(add(transcript, 0xe00), mulmod(mload(add(transcript, 0xdc0)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0xdc0), inv) }mstore(add(transcript, 0x1240), mulmod(mload(add(transcript, 0xda0)), mload(add(transcript, 0xdc0)), f_q))mstore(add(transcript, 0x1260), mulmod(mload(add(transcript, 0xde0)), mload(add(transcript, 0xe00)), f_q))mstore(add(transcript, 0x1280), mulmod(mload(add(transcript, 0xe20)), mload(add(transcript, 0xe40)), f_q))mstore(add(transcript, 0x12a0), mulmod(mload(add(transcript, 0xe60)), mload(add(transcript, 0xe80)), f_q))mstore(add(transcript, 0x12c0), mulmod(mload(add(transcript, 0xea0)), mload(add(transcript, 0xec0)), f_q))mstore(add(transcript, 0x12e0), mulmod(mload(add(transcript, 0xee0)), mload(add(transcript, 0xf00)), f_q))mstore(add(transcript, 0x1300), mulmod(mload(add(transcript, 0xf20)), mload(add(transcript, 0xf40)), f_q))mstore(add(transcript, 0x1320), mulmod(mload(add(transcript, 0xf60)), mload(add(transcript, 0xf80)), f_q))mstore(add(transcript, 0x1340), mulmod(mload(add(transcript, 0xfa0)), mload(add(transcript, 0xfc0)), f_q))mstore(add(transcript, 0x1360), mulmod(mload(add(transcript, 0xfe0)), mload(add(transcript, 0x1000)), f_q)){ let result := mulmod(mload(add(transcript, 0x1300)), mload(add(transcript, 0x20)), f_q)result := addmod(mulmod(mload(add(transcript, 0x1320)), mload(add(transcript, 0x40)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x1340)), mload(add(transcript, 0x60)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x1360)), mload(add(transcript, 0x80)), f_q), result, f_q)mstore(add(transcript, 0x1380), result) }mstore(add(transcript, 0x13a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x720)), f_q))mstore(add(transcript, 0x13c0), mulmod(mload(add(transcript, 0x13a0)), mload(add(transcript, 0x13a0)), f_q))mstore(add(transcript, 0x13e0), mulmod(mload(add(transcript, 0x13c0)), mload(add(transcript, 0x13c0)), f_q))mstore(add(transcript, 0x1400), mulmod(mload(add(transcript, 0x13a0)), mload(add(transcript, 0x13e0)), f_q))mstore(add(transcript, 0x1420), mulmod(mload(add(transcript, 0x1400)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x1440), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x740)), f_q))mstore(add(transcript, 0x1460), mulmod(mload(add(transcript, 0x1440)), mload(add(transcript, 0x1440)), f_q))mstore(add(transcript, 0x1480), mulmod(mload(add(transcript, 0x1460)), mload(add(transcript, 0x1460)), f_q))mstore(add(transcript, 0x14a0), mulmod(mload(add(transcript, 0x1440)), mload(add(transcript, 0x1480)), f_q))mstore(add(transcript, 0x14c0), mulmod(mload(add(transcript, 0x14a0)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x14e0), addmod(mload(add(transcript, 0x1420)), mload(add(transcript, 0x14c0)), f_q))mstore(add(transcript, 0x1500), addmod(mload(add(transcript, 0x14e0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1520), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1540), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1520)), f_q))mstore(add(transcript, 0x1560), mulmod(mload(add(transcript, 0x1400)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x1580), mulmod(mload(add(transcript, 0x14a0)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x15a0), addmod(mload(add(transcript, 0x1560)), mload(add(transcript, 0x1580)), f_q))mstore(add(transcript, 0x15c0), addmod(mload(add(transcript, 0x15a0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x15e0), mulmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1600), addmod(mload(add(transcript, 0x1540)), mload(add(transcript, 0x15e0)), f_q))mstore(add(transcript, 0x1620), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1600)), f_q))mstore(add(transcript, 0x1640), addmod(mload(add(transcript, 0x1400)), sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x1660), mulmod(mload(add(transcript, 0x1640)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1680), addmod(mload(add(transcript, 0x1620)), mload(add(transcript, 0x1660)), f_q))mstore(add(transcript, 0x16a0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1680)), f_q))mstore(add(transcript, 0x16c0), mulmod(mload(add(transcript, 0x680)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x16e0), mulmod(mload(add(transcript, 0x1440)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x1700), addmod(mload(add(transcript, 0x16c0)), mload(add(transcript, 0x16e0)), f_q))mstore(add(transcript, 0x1720), addmod(mload(add(transcript, 0x1700)), mload(add(transcript, 0x6e0)), f_q))mstore(add(transcript, 0x1740), mulmod(mload(add(transcript, 0x1720)), mload(add(transcript, 0x1720)), f_q))mstore(add(transcript, 0x1760), mulmod(mload(add(transcript, 0x1740)), mload(add(transcript, 0x1740)), f_q))mstore(add(transcript, 0x1780), mulmod(mload(add(transcript, 0x1720)), mload(add(transcript, 0x1760)), f_q))mstore(add(transcript, 0x17a0), mulmod(mload(add(transcript, 0x640)), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q))mstore(add(transcript, 0x17c0), mulmod(mload(add(transcript, 0x660)), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q))mstore(add(transcript, 0x17e0), addmod(mload(add(transcript, 0x17a0)), mload(add(transcript, 0x17c0)), f_q))mstore(add(transcript, 0x1800), addmod(mload(add(transcript, 0x1780)), sub(f_q, mload(add(transcript, 0x17e0))), f_q))mstore(add(transcript, 0x1820), mulmod(mload(add(transcript, 0x1800)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1840), addmod(mload(add(transcript, 0x16a0)), mload(add(transcript, 0x1820)), f_q))mstore(add(transcript, 0x1860), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1840)), f_q))mstore(add(transcript, 0x1880), mulmod(mload(add(transcript, 0x680)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x18a0), mulmod(mload(add(transcript, 0x1440)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x18c0), addmod(mload(add(transcript, 0x1880)), mload(add(transcript, 0x18a0)), f_q))mstore(add(transcript, 0x18e0), addmod(mload(add(transcript, 0x18c0)), mload(add(transcript, 0x700)), f_q))mstore(add(transcript, 0x1900), mulmod(mload(add(transcript, 0x640)), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q))mstore(add(transcript, 0x1920), mulmod(mload(add(transcript, 0x660)), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q))mstore(add(transcript, 0x1940), addmod(mload(add(transcript, 0x1900)), mload(add(transcript, 0x1920)), f_q))mstore(add(transcript, 0x1960), addmod(mload(add(transcript, 0x18e0)), sub(f_q, mload(add(transcript, 0x1940))), f_q))mstore(add(transcript, 0x1980), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x19a0), addmod(mload(add(transcript, 0x1860)), mload(add(transcript, 0x1980)), f_q))mstore(add(transcript, 0x19c0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x19a0)), f_q))mstore(add(transcript, 0x19e0), addmod(1, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a00), mulmod(mload(add(transcript, 0x19e0)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1a20), addmod(2, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a40), mulmod(mload(add(transcript, 0x1a20)), mload(add(transcript, 0x1a00)), f_q))mstore(add(transcript, 0x1a60), addmod(4, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a80), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x1a40)), f_q))mstore(add(transcript, 0x1aa0), addmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x600)), f_q))mstore(add(transcript, 0x1ac0), addmod(mload(add(transcript, 0x1aa0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1ae0), mulmod(mload(add(transcript, 0x1ac0)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1b00), addmod(mload(add(transcript, 0x19c0)), mload(add(transcript, 0x1ae0)), f_q))mstore(add(transcript, 0x1b20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1b00)), f_q))mstore(add(transcript, 0x1b40), addmod(mload(add(transcript, 0x6a0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x1b60), mulmod(mload(add(transcript, 0x1b40)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1b80), addmod(mload(add(transcript, 0x1b20)), mload(add(transcript, 0x1b60)), f_q))mstore(add(transcript, 0x1ba0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1b80)), f_q))mstore(add(transcript, 0x1bc0), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x800)), f_q))mstore(add(transcript, 0x1be0), addmod(mload(add(transcript, 0x1ba0)), mload(add(transcript, 0x1bc0)), f_q))mstore(add(transcript, 0x1c00), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1be0)), f_q))mstore(add(transcript, 0x1c20), mulmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x800)), f_q))mstore(add(transcript, 0x1c40), addmod(mload(add(transcript, 0x1c00)), mload(add(transcript, 0x1c20)), f_q))mstore(add(transcript, 0x1c60), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1c40)), f_q))mstore(add(transcript, 0x1c80), mulmod(mload(add(transcript, 0x1640)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1ca0), addmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x1c80)), f_q))mstore(add(transcript, 0x1cc0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1ca0)), f_q))mstore(add(transcript, 0x1ce0), mulmod(mload(add(transcript, 0x1800)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1d00), addmod(mload(add(transcript, 0x1cc0)), mload(add(transcript, 0x1ce0)), f_q))mstore(add(transcript, 0x1d20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1d00)), f_q))mstore(add(transcript, 0x1d40), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1d60), addmod(mload(add(transcript, 0x1d20)), mload(add(transcript, 0x1d40)), f_q))mstore(add(transcript, 0x1d80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1d60)), f_q))mstore(add(transcript, 0x1da0), addmod(3, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1dc0), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1a40)), f_q))mstore(add(transcript, 0x1de0), mulmod(mload(add(transcript, 0x1ac0)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e00), addmod(mload(add(transcript, 0x1d80)), mload(add(transcript, 0x1de0)), f_q))mstore(add(transcript, 0x1e20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1e00)), f_q))mstore(add(transcript, 0x1e40), mulmod(mload(add(transcript, 0x1b40)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e60), addmod(mload(add(transcript, 0x1e20)), mload(add(transcript, 0x1e40)), f_q))mstore(add(transcript, 0x1e80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1e60)), f_q))mstore(add(transcript, 0x1ea0), mulmod(mload(add(transcript, 0x1a20)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1ec0), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1ea0)), f_q))mstore(add(transcript, 0x1ee0), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x1ec0)), f_q))mstore(add(transcript, 0x1f00), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x1f20), addmod(1, sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x1f40), mulmod(mload(add(transcript, 0x1f20)), mload(add(transcript, 0x1f00)), f_q))mstore(add(transcript, 0x1f60), addmod(mload(add(transcript, 0x1e80)), mload(add(transcript, 0x1f40)), f_q))mstore(add(transcript, 0x1f80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1f60)), f_q))mstore(add(transcript, 0x1fa0), addmod(mload(add(transcript, 0x620)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x1fc0), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x1fa0)), f_q))mstore(add(transcript, 0x1fe0), addmod(mload(add(transcript, 0x1fc0)), mload(add(transcript, 0x600)), f_q))mstore(add(transcript, 0x2000), addmod(mload(add(transcript, 0x1fe0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x2020), mulmod(mload(add(transcript, 0x2000)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x2040), addmod(mload(add(transcript, 0x1f80)), mload(add(transcript, 0x2020)), f_q))mstore(add(transcript, 0x2060), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2040)), f_q))mstore(add(transcript, 0x2080), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x20a0), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x2080)), f_q))mstore(add(transcript, 0x20c0), addmod(mload(add(transcript, 0x20a0)), mload(add(transcript, 0x620)), f_q))mstore(add(transcript, 0x20e0), addmod(mload(add(transcript, 0x20c0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x2100), mulmod(mload(add(transcript, 0x20e0)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x2120), addmod(mload(add(transcript, 0x2060)), mload(add(transcript, 0x2100)), f_q))mstore(add(transcript, 0x2140), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2120)), f_q))mstore(add(transcript, 0x2160), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1a00)), f_q))mstore(add(transcript, 0x2180), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x21a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x620)), f_q))mstore(add(transcript, 0x21c0), addmod(mload(add(transcript, 0x21a0)), sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x21e0), mulmod(mload(add(transcript, 0x21c0)), mload(add(transcript, 0x2180)), f_q))mstore(add(transcript, 0x2200), addmod(mload(add(transcript, 0x2140)), mload(add(transcript, 0x21e0)), f_q))mstore(add(transcript, 0x2220), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2200)), f_q))mstore(add(transcript, 0x2240), addmod(mload(add(transcript, 0x2220)), mload(add(transcript, 0x21e0)), f_q))mstore(add(transcript, 0x2260), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2240)), f_q))mstore(add(transcript, 0x2280), addmod(1, sub(f_q, mload(add(transcript, 0x920))), f_q))mstore(add(transcript, 0x22a0), mulmod(mload(add(transcript, 0x2280)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x22c0), addmod(mload(add(transcript, 0x2260)), mload(add(transcript, 0x22a0)), f_q))mstore(add(transcript, 0x22e0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x22c0)), f_q))mstore(add(transcript, 0x2300), mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2320), addmod(mload(add(transcript, 0x2300)), sub(f_q, mload(add(transcript, 0x980))), f_q))mstore(add(transcript, 0x2340), mulmod(mload(add(transcript, 0x2320)), mload(add(transcript, 0x1240)), f_q))mstore(add(transcript, 0x2360), addmod(mload(add(transcript, 0x22e0)), mload(add(transcript, 0x2340)), f_q))mstore(add(transcript, 0x2380), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2360)), f_q))mstore(add(transcript, 0x23a0), addmod(mload(add(transcript, 0x980)), sub(f_q, mload(add(transcript, 0x960))), f_q))mstore(add(transcript, 0x23c0), mulmod(mload(add(transcript, 0x23a0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x23e0), addmod(mload(add(transcript, 0x2380)), mload(add(transcript, 0x23c0)), f_q))mstore(add(transcript, 0x2400), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x23e0)), f_q))mstore(add(transcript, 0x2420), addmod(1, sub(f_q, mload(add(transcript, 0x1240))), f_q))mstore(add(transcript, 0x2440), addmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x1280)), f_q))mstore(add(transcript, 0x2460), addmod(mload(add(transcript, 0x2440)), mload(add(transcript, 0x12a0)), f_q))mstore(add(transcript, 0x2480), addmod(mload(add(transcript, 0x2460)), mload(add(transcript, 0x12c0)), f_q))mstore(add(transcript, 0x24a0), addmod(mload(add(transcript, 0x2480)), mload(add(transcript, 0x12e0)), f_q))mstore(add(transcript, 0x24c0), addmod(mload(add(transcript, 0x2420)), sub(f_q, mload(add(transcript, 0x24a0))), f_q))mstore(add(transcript, 0x24e0), mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2500), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x24e0)), f_q))mstore(add(transcript, 0x2520), addmod(mload(add(transcript, 0x2500)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2540), mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2560), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x2540)), f_q))mstore(add(transcript, 0x2580), addmod(mload(add(transcript, 0x2560)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x25a0), mulmod(mload(add(transcript, 0x2580)), mload(add(transcript, 0x2520)), f_q))mstore(add(transcript, 0x25c0), mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x25e0), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x25c0)), f_q))mstore(add(transcript, 0x2600), addmod(mload(add(transcript, 0x25e0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2620), mulmod(mload(add(transcript, 0x2600)), mload(add(transcript, 0x25a0)), f_q))mstore(add(transcript, 0x2640), mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2660), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x2640)), f_q))mstore(add(transcript, 0x2680), addmod(mload(add(transcript, 0x2660)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x26a0), mulmod(mload(add(transcript, 0x2680)), mload(add(transcript, 0x2620)), f_q))mstore(add(transcript, 0x26c0), mulmod(mload(add(transcript, 0x26a0)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x26e0), mulmod(1, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2700), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x26e0)), f_q))mstore(add(transcript, 0x2720), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x2700)), f_q))mstore(add(transcript, 0x2740), addmod(mload(add(transcript, 0x2720)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2760), mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2780), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2760)), f_q))mstore(add(transcript, 0x27a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x2780)), f_q))mstore(add(transcript, 0x27c0), addmod(mload(add(transcript, 0x27a0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x27e0), mulmod(mload(add(transcript, 0x27c0)), mload(add(transcript, 0x2740)), f_q))mstore(add(transcript, 0x2800), mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2820), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2800)), f_q))mstore(add(transcript, 0x2840), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x2820)), f_q))mstore(add(transcript, 0x2860), addmod(mload(add(transcript, 0x2840)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2880), mulmod(mload(add(transcript, 0x2860)), mload(add(transcript, 0x27e0)), f_q))mstore(add(transcript, 0x28a0), mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x28c0), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x28a0)), f_q))mstore(add(transcript, 0x28e0), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x28c0)), f_q))mstore(add(transcript, 0x2900), addmod(mload(add(transcript, 0x28e0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2920), mulmod(mload(add(transcript, 0x2900)), mload(add(transcript, 0x2880)), f_q))mstore(add(transcript, 0x2940), mulmod(mload(add(transcript, 0x2920)), mload(add(transcript, 0x920)), f_q))mstore(add(transcript, 0x2960), addmod(mload(add(transcript, 0x26c0)), sub(f_q, mload(add(transcript, 0x2940))), f_q))mstore(add(transcript, 0x2980), mulmod(mload(add(transcript, 0x2960)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x29a0), addmod(mload(add(transcript, 0x2400)), mload(add(transcript, 0x2980)), f_q))mstore(add(transcript, 0x29c0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x29a0)), f_q))mstore(add(transcript, 0x29e0), mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2a00), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x29e0)), f_q))mstore(add(transcript, 0x2a20), addmod(mload(add(transcript, 0x2a00)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2a40), mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2a60), addmod(mload(add(transcript, 0x1380)), mload(add(transcript, 0x2a40)), f_q))mstore(add(transcript, 0x2a80), addmod(mload(add(transcript, 0x2a60)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2aa0), mulmod(mload(add(transcript, 0x2a80)), mload(add(transcript, 0x2a20)), f_q))mstore(add(transcript, 0x2ac0), mulmod(mload(add(transcript, 0x2aa0)), mload(add(transcript, 0x9a0)), f_q))mstore(add(transcript, 0x2ae0), mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2b00), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2ae0)), f_q))mstore(add(transcript, 0x2b20), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x2b00)), f_q))mstore(add(transcript, 0x2b40), addmod(mload(add(transcript, 0x2b20)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2b60), mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2b80), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2b60)), f_q))mstore(add(transcript, 0x2ba0), addmod(mload(add(transcript, 0x1380)), mload(add(transcript, 0x2b80)), f_q))mstore(add(transcript, 0x2bc0), addmod(mload(add(transcript, 0x2ba0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2be0), mulmod(mload(add(transcript, 0x2bc0)), mload(add(transcript, 0x2b40)), f_q))mstore(add(transcript, 0x2c00), mulmod(mload(add(transcript, 0x2be0)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2c20), addmod(mload(add(transcript, 0x2ac0)), sub(f_q, mload(add(transcript, 0x2c00))), f_q))mstore(add(transcript, 0x2c40), mulmod(mload(add(transcript, 0x2c20)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x2c60), addmod(mload(add(transcript, 0x29c0)), mload(add(transcript, 0x2c40)), f_q))mstore(add(transcript, 0x2c80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2c60)), f_q))mstore(add(transcript, 0x2ca0), addmod(1, sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2cc0), mulmod(mload(add(transcript, 0x2ca0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2ce0), addmod(mload(add(transcript, 0x2c80)), mload(add(transcript, 0x2cc0)), f_q))mstore(add(transcript, 0x2d00), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2ce0)), f_q))mstore(add(transcript, 0x2d20), mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x9c0)), f_q))mstore(add(transcript, 0x2d40), addmod(mload(add(transcript, 0x2d20)), sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2d60), mulmod(mload(add(transcript, 0x2d40)), mload(add(transcript, 0x1240)), f_q))mstore(add(transcript, 0x2d80), addmod(mload(add(transcript, 0x2d00)), mload(add(transcript, 0x2d60)), f_q))mstore(add(transcript, 0x2da0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2d80)), f_q))mstore(add(transcript, 0x2dc0), addmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2de0), mulmod(mload(add(transcript, 0x2dc0)), mload(add(transcript, 0x9e0)), f_q))mstore(add(transcript, 0x2e00), addmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2e20), mulmod(mload(add(transcript, 0x2e00)), mload(add(transcript, 0x2de0)), f_q))mstore(add(transcript, 0x2e40), mulmod(256, mload(add(transcript, 0x640)), f_q))mstore(add(transcript, 0x2e60), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x2e40))), f_q))mstore(add(transcript, 0x2e80), mulmod(mload(add(transcript, 0x2e60)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x2ea0), addmod(mload(add(transcript, 0x2e80)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2ec0), mulmod(mload(add(transcript, 0x2ea0)), mload(add(transcript, 0x9c0)), f_q))mstore(add(transcript, 0x2ee0), addmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2f00), mulmod(mload(add(transcript, 0x2ee0)), mload(add(transcript, 0x2ec0)), f_q))mstore(add(transcript, 0x2f20), addmod(mload(add(transcript, 0x2e20)), sub(f_q, mload(add(transcript, 0x2f00))), f_q))mstore(add(transcript, 0x2f40), mulmod(mload(add(transcript, 0x2f20)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x2f60), addmod(mload(add(transcript, 0x2da0)), mload(add(transcript, 0x2f40)), f_q))mstore(add(transcript, 0x2f80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2f60)), f_q))mstore(add(transcript, 0x2fa0), addmod(mload(add(transcript, 0xa00)), sub(f_q, mload(add(transcript, 0xa40))), f_q))mstore(add(transcript, 0x2fc0), mulmod(mload(add(transcript, 0x2fa0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2fe0), addmod(mload(add(transcript, 0x2f80)), mload(add(transcript, 0x2fc0)), f_q))mstore(add(transcript, 0x3000), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2fe0)), f_q))mstore(add(transcript, 0x3020), mulmod(mload(add(transcript, 0x2fa0)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x3040), addmod(mload(add(transcript, 0xa00)), sub(f_q, mload(add(transcript, 0xa20))), f_q))mstore(add(transcript, 0x3060), mulmod(mload(add(transcript, 0x3040)), mload(add(transcript, 0x3020)), f_q))mstore(add(transcript, 0x3080), addmod(mload(add(transcript, 0x3000)), mload(add(transcript, 0x3060)), f_q))mstore(add(transcript, 0x30a0), mulmod(mload(add(transcript, 0xd40)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x30c0), mulmod(mload(add(transcript, 0x30a0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x30e0), mulmod(mload(add(transcript, 0x30c0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3100), mulmod(mload(add(transcript, 0x30e0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3120), mulmod(1, mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3140), mulmod(1, mload(add(transcript, 0x30a0)), f_q))mstore(add(transcript, 0x3160), mulmod(1, mload(add(transcript, 0x30c0)), f_q))mstore(add(transcript, 0x3180), mulmod(1, mload(add(transcript, 0x30e0)), f_q))mstore(add(transcript, 0x31a0), mulmod(mload(add(transcript, 0x3080)), mload(add(transcript, 0xd60)), f_q))mstore(add(transcript, 0x31c0), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0x31e0), mulmod(mload(add(transcript, 0x5c0)), 1, f_q))mstore(add(transcript, 0x3200), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x31e0))), f_q))mstore(add(transcript, 0x3220), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0x3240), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x3220))), f_q))mstore(add(transcript, 0x3260), mulmod(mload(add(transcript, 0x5c0)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0x3280), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x3260))), f_q))mstore(add(transcript, 0x32a0), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0x32c0), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x32a0))), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q)mstore(add(transcript, 0x32e0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q)mstore(add(transcript, 0x3300), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q)mstore(add(transcript, 0x3320), result) }mstore(add(transcript, 0x3340), mulmod(1, mload(add(transcript, 0x3200)), f_q))mstore(add(transcript, 0x3360), mulmod(mload(add(transcript, 0x3340)), mload(add(transcript, 0x3240)), f_q))mstore(add(transcript, 0x3380), mulmod(mload(add(transcript, 0x3360)), mload(add(transcript, 0x32c0)), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), 1, f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q)mstore(add(transcript, 0x33a0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q)mstore(add(transcript, 0x33c0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q)mstore(add(transcript, 0x33e0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q)mstore(add(transcript, 0x3400), result) }mstore(add(transcript, 0x3420), mulmod(mload(add(transcript, 0x3360)), mload(add(transcript, 0x3280)), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q)mstore(add(transcript, 0x3440), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q)mstore(add(transcript, 0x3460), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q)mstore(add(transcript, 0x3480), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q)mstore(add(transcript, 0x34a0), result) }mstore(add(transcript, 0x34c0), mulmod(mload(add(transcript, 0x3340)), mload(add(transcript, 0x32c0)), f_q)){ let prod := mload(add(transcript, 0x32e0)) prod := mulmod(mload(add(transcript, 0x3300)), prod, f_q) mstore(add(transcript, 0x34e0), prod) prod := mulmod(mload(add(transcript, 0x3320)), prod, f_q) mstore(add(transcript, 0x3500), prod) prod := mulmod(mload(add(transcript, 0x33a0)), prod, f_q) mstore(add(transcript, 0x3520), prod) prod := mulmod(mload(add(transcript, 0x3340)), prod, f_q) mstore(add(transcript, 0x3540), prod) prod := mulmod(mload(add(transcript, 0x33c0)), prod, f_q) mstore(add(transcript, 0x3560), prod) prod := mulmod(mload(add(transcript, 0x33e0)), prod, f_q) mstore(add(transcript, 0x3580), prod) prod := mulmod(mload(add(transcript, 0x3400)), prod, f_q) mstore(add(transcript, 0x35a0), prod) prod := mulmod(mload(add(transcript, 0x3420)), prod, f_q) mstore(add(transcript, 0x35c0), prod) prod := mulmod(mload(add(transcript, 0x3440)), prod, f_q) mstore(add(transcript, 0x35e0), prod) prod := mulmod(mload(add(transcript, 0x3460)), prod, f_q) mstore(add(transcript, 0x3600), prod) prod := mulmod(mload(add(transcript, 0x3360)), prod, f_q) mstore(add(transcript, 0x3620), prod) prod := mulmod(mload(add(transcript, 0x3480)), prod, f_q) mstore(add(transcript, 0x3640), prod) prod := mulmod(mload(add(transcript, 0x34a0)), prod, f_q) mstore(add(transcript, 0x3660), prod) prod := mulmod(mload(add(transcript, 0x34c0)), prod, f_q) mstore(add(transcript, 0x3680), prod) }mstore(add(transcript, 0x36c0), 32)mstore(add(transcript, 0x36e0), 32)mstore(add(transcript, 0x3700), 32)mstore(add(transcript, 0x3720), mload(add(transcript, 0x3680)))mstore(add(transcript, 0x3740), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x3760), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x36c0), 0xc0, add(transcript, 0x36a0), 0x20), 1), success){ let inv := mload(add(transcript, 0x36a0)) let v v := mload(add(transcript, 0x34c0)) mstore(add(transcript, 0x34c0), mulmod(mload(add(transcript, 0x3660)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x34a0)) mstore(add(transcript, 0x34a0), mulmod(mload(add(transcript, 0x3640)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3480)) mstore(add(transcript, 0x3480), mulmod(mload(add(transcript, 0x3620)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3360)) mstore(add(transcript, 0x3360), mulmod(mload(add(transcript, 0x3600)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3460)) mstore(add(transcript, 0x3460), mulmod(mload(add(transcript, 0x35e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3440)) mstore(add(transcript, 0x3440), mulmod(mload(add(transcript, 0x35c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3420)) mstore(add(transcript, 0x3420), mulmod(mload(add(transcript, 0x35a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3400)) mstore(add(transcript, 0x3400), mulmod(mload(add(transcript, 0x3580)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33e0)) mstore(add(transcript, 0x33e0), mulmod(mload(add(transcript, 0x3560)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33c0)) mstore(add(transcript, 0x33c0), mulmod(mload(add(transcript, 0x3540)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3340)) mstore(add(transcript, 0x3340), mulmod(mload(add(transcript, 0x3520)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33a0)) mstore(add(transcript, 0x33a0), mulmod(mload(add(transcript, 0x3500)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3320)) mstore(add(transcript, 0x3320), mulmod(mload(add(transcript, 0x34e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3300)) mstore(add(transcript, 0x3300), mulmod(mload(add(transcript, 0x32e0)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x32e0), inv) }{ let result := mload(add(transcript, 0x32e0))result := addmod(mload(add(transcript, 0x3300)), result, f_q)result := addmod(mload(add(transcript, 0x3320)), result, f_q)mstore(add(transcript, 0x3780), result) }mstore(add(transcript, 0x37a0), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3340)), f_q)){ let result := mload(add(transcript, 0x33a0))mstore(add(transcript, 0x37c0), result) }mstore(add(transcript, 0x37e0), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3420)), f_q)){ let result := mload(add(transcript, 0x33c0))result := addmod(mload(add(transcript, 0x33e0)), result, f_q)result := addmod(mload(add(transcript, 0x3400)), result, f_q)mstore(add(transcript, 0x3800), result) }mstore(add(transcript, 0x3820), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3360)), f_q)){ let result := mload(add(transcript, 0x3440))result := addmod(mload(add(transcript, 0x3460)), result, f_q)mstore(add(transcript, 0x3840), result) }mstore(add(transcript, 0x3860), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x34c0)), f_q)){ let result := mload(add(transcript, 0x3480))result := addmod(mload(add(transcript, 0x34a0)), result, f_q)mstore(add(transcript, 0x3880), result) }{ let prod := mload(add(transcript, 0x3780)) prod := mulmod(mload(add(transcript, 0x37c0)), prod, f_q) mstore(add(transcript, 0x38a0), prod) prod := mulmod(mload(add(transcript, 0x3800)), prod, f_q) mstore(add(transcript, 0x38c0), prod) prod := mulmod(mload(add(transcript, 0x3840)), prod, f_q) mstore(add(transcript, 0x38e0), prod) prod := mulmod(mload(add(transcript, 0x3880)), prod, f_q) mstore(add(transcript, 0x3900), prod) }mstore(add(transcript, 0x3940), 32)mstore(add(transcript, 0x3960), 32)mstore(add(transcript, 0x3980), 32)mstore(add(transcript, 0x39a0), mload(add(transcript, 0x3900)))mstore(add(transcript, 0x39c0), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x39e0), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3940), 0xc0, add(transcript, 0x3920), 0x20), 1), success){ let inv := mload(add(transcript, 0x3920)) let v v := mload(add(transcript, 0x3880)) mstore(add(transcript, 0x3880), mulmod(mload(add(transcript, 0x38e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3840)) mstore(add(transcript, 0x3840), mulmod(mload(add(transcript, 0x38c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3800)) mstore(add(transcript, 0x3800), mulmod(mload(add(transcript, 0x38a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x37c0)) mstore(add(transcript, 0x37c0), mulmod(mload(add(transcript, 0x3780)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x3780), inv) }mstore(add(transcript, 0x3a00), mulmod(mload(add(transcript, 0x37a0)), mload(add(transcript, 0x37c0)), f_q))mstore(add(transcript, 0x3a20), mulmod(mload(add(transcript, 0x37e0)), mload(add(transcript, 0x3800)), f_q))mstore(add(transcript, 0x3a40), mulmod(mload(add(transcript, 0x3820)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3a60), mulmod(mload(add(transcript, 0x3860)), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x3a80), mulmod(mload(add(transcript, 0xa80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3aa0), mulmod(mload(add(transcript, 0x3a80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ac0), mulmod(mload(add(transcript, 0x3aa0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ae0), mulmod(mload(add(transcript, 0x3ac0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b00), mulmod(mload(add(transcript, 0x3ae0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b20), mulmod(mload(add(transcript, 0x3b00)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b40), mulmod(mload(add(transcript, 0x3b20)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b60), mulmod(mload(add(transcript, 0x3b40)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b80), mulmod(mload(add(transcript, 0x3b60)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ba0), mulmod(mload(add(transcript, 0x3b80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3bc0), mulmod(mload(add(transcript, 0x3ba0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3be0), mulmod(mload(add(transcript, 0x3bc0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c00), mulmod(mload(add(transcript, 0x3be0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c20), mulmod(mload(add(transcript, 0x3c00)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c40), mulmod(mload(add(transcript, 0x3c20)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c60), mulmod(mload(add(transcript, 0x3c40)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c80), mulmod(mload(add(transcript, 0x3c60)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ca0), mulmod(mload(add(transcript, 0x3c80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3cc0), mulmod(mload(add(transcript, 0x3ca0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ce0), mulmod(mload(add(transcript, 0x3cc0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3d00), mulmod(mload(add(transcript, 0xae0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d20), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d40), mulmod(mload(add(transcript, 0x3d20)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d60), mulmod(mload(add(transcript, 0x3d40)), mload(add(transcript, 0xae0)), f_q)){ let result := mulmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x32e0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x3300)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x3320)), f_q), result, f_q)mstore(add(transcript, 0x3d80), result) }mstore(add(transcript, 0x3da0), mulmod(mload(add(transcript, 0x3d80)), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x3dc0), mulmod(sub(f_q, mload(add(transcript, 0x3da0))), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x32e0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x3300)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x3320)), f_q), result, f_q)mstore(add(transcript, 0x3de0), result) }mstore(add(transcript, 0x3e00), mulmod(mload(add(transcript, 0x3de0)), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x3e20), mulmod(sub(f_q, mload(add(transcript, 0x3e00))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3e40), mulmod(1, mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3e60), addmod(mload(add(transcript, 0x3dc0)), mload(add(transcript, 0x3e20)), f_q))mstore(add(transcript, 0x3e80), mulmod(mload(add(transcript, 0x3e60)), 1, f_q))mstore(add(transcript, 0x3ea0), mulmod(mload(add(transcript, 0x3e40)), 1, f_q))mstore(add(transcript, 0x3ec0), mulmod(1, mload(add(transcript, 0x37a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x3ee0), result) }mstore(add(transcript, 0x3f00), mulmod(mload(add(transcript, 0x3ee0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x3f20), mulmod(sub(f_q, mload(add(transcript, 0x3f00))), 1, f_q))mstore(add(transcript, 0x3f40), mulmod(mload(add(transcript, 0x3ec0)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x3f60), result) }mstore(add(transcript, 0x3f80), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x3fa0), mulmod(sub(f_q, mload(add(transcript, 0x3f80))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3fc0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3fe0), addmod(mload(add(transcript, 0x3f20)), mload(add(transcript, 0x3fa0)), f_q)){ let result := mulmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4000), result) }mstore(add(transcript, 0x4020), mulmod(mload(add(transcript, 0x4000)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4040), mulmod(sub(f_q, mload(add(transcript, 0x4020))), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4060), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4080), addmod(mload(add(transcript, 0x3fe0)), mload(add(transcript, 0x4040)), f_q)){ let result := mulmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x40a0), result) }mstore(add(transcript, 0x40c0), mulmod(mload(add(transcript, 0x40a0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x40e0), mulmod(sub(f_q, mload(add(transcript, 0x40c0))), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4100), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4120), addmod(mload(add(transcript, 0x4080)), mload(add(transcript, 0x40e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4140), result) }mstore(add(transcript, 0x4160), mulmod(mload(add(transcript, 0x4140)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4180), mulmod(sub(f_q, mload(add(transcript, 0x4160))), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x41a0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x41c0), addmod(mload(add(transcript, 0x4120)), mload(add(transcript, 0x4180)), f_q)){ let result := mulmod(mload(add(transcript, 0x740)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x41e0), result) }mstore(add(transcript, 0x4200), mulmod(mload(add(transcript, 0x41e0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4220), mulmod(sub(f_q, mload(add(transcript, 0x4200))), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4240), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4260), addmod(mload(add(transcript, 0x41c0)), mload(add(transcript, 0x4220)), f_q)){ let result := mulmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4280), result) }mstore(add(transcript, 0x42a0), mulmod(mload(add(transcript, 0x4280)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x42c0), mulmod(sub(f_q, mload(add(transcript, 0x42a0))), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x42e0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x4300), addmod(mload(add(transcript, 0x4260)), mload(add(transcript, 0x42c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x780)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4320), result) }mstore(add(transcript, 0x4340), mulmod(mload(add(transcript, 0x4320)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4360), mulmod(sub(f_q, mload(add(transcript, 0x4340))), mload(add(transcript, 0x3b20)), f_q))mstore(add(transcript, 0x4380), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b20)), f_q))mstore(add(transcript, 0x43a0), addmod(mload(add(transcript, 0x4300)), mload(add(transcript, 0x4360)), f_q)){ let result := mulmod(mload(add(transcript, 0x7a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x43c0), result) }mstore(add(transcript, 0x43e0), mulmod(mload(add(transcript, 0x43c0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4400), mulmod(sub(f_q, mload(add(transcript, 0x43e0))), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4420), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4440), addmod(mload(add(transcript, 0x43a0)), mload(add(transcript, 0x4400)), f_q)){ let result := mulmod(mload(add(transcript, 0x7c0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4460), result) }mstore(add(transcript, 0x4480), mulmod(mload(add(transcript, 0x4460)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x44a0), mulmod(sub(f_q, mload(add(transcript, 0x4480))), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x44c0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x44e0), addmod(mload(add(transcript, 0x4440)), mload(add(transcript, 0x44a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x7e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4500), result) }mstore(add(transcript, 0x4520), mulmod(mload(add(transcript, 0x4500)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4540), mulmod(sub(f_q, mload(add(transcript, 0x4520))), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x4560), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x4580), addmod(mload(add(transcript, 0x44e0)), mload(add(transcript, 0x4540)), f_q)){ let result := mulmod(mload(add(transcript, 0x800)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x45a0), result) }mstore(add(transcript, 0x45c0), mulmod(mload(add(transcript, 0x45a0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x45e0), mulmod(sub(f_q, mload(add(transcript, 0x45c0))), mload(add(transcript, 0x3ba0)), f_q))mstore(add(transcript, 0x4600), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ba0)), f_q))mstore(add(transcript, 0x4620), addmod(mload(add(transcript, 0x4580)), mload(add(transcript, 0x45e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4640), result) }mstore(add(transcript, 0x4660), mulmod(mload(add(transcript, 0x4640)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4680), mulmod(sub(f_q, mload(add(transcript, 0x4660))), mload(add(transcript, 0x3bc0)), f_q))mstore(add(transcript, 0x46a0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3bc0)), f_q))mstore(add(transcript, 0x46c0), addmod(mload(add(transcript, 0x4620)), mload(add(transcript, 0x4680)), f_q)){ let result := mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x46e0), result) }mstore(add(transcript, 0x4700), mulmod(mload(add(transcript, 0x46e0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4720), mulmod(sub(f_q, mload(add(transcript, 0x4700))), mload(add(transcript, 0x3be0)), f_q))mstore(add(transcript, 0x4740), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3be0)), f_q))mstore(add(transcript, 0x4760), addmod(mload(add(transcript, 0x46c0)), mload(add(transcript, 0x4720)), f_q)){ let result := mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4780), result) }mstore(add(transcript, 0x47a0), mulmod(mload(add(transcript, 0x4780)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x47c0), mulmod(sub(f_q, mload(add(transcript, 0x47a0))), mload(add(transcript, 0x3c00)), f_q))mstore(add(transcript, 0x47e0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c00)), f_q))mstore(add(transcript, 0x4800), addmod(mload(add(transcript, 0x4760)), mload(add(transcript, 0x47c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4820), result) }mstore(add(transcript, 0x4840), mulmod(mload(add(transcript, 0x4820)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4860), mulmod(sub(f_q, mload(add(transcript, 0x4840))), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4880), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x48a0), addmod(mload(add(transcript, 0x4800)), mload(add(transcript, 0x4860)), f_q)){ let result := mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x48c0), result) }mstore(add(transcript, 0x48e0), mulmod(mload(add(transcript, 0x48c0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4900), mulmod(sub(f_q, mload(add(transcript, 0x48e0))), mload(add(transcript, 0x3c40)), f_q))mstore(add(transcript, 0x4920), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c40)), f_q))mstore(add(transcript, 0x4940), addmod(mload(add(transcript, 0x48a0)), mload(add(transcript, 0x4900)), f_q)){ let result := mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4960), result) }mstore(add(transcript, 0x4980), mulmod(mload(add(transcript, 0x4960)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x49a0), mulmod(sub(f_q, mload(add(transcript, 0x4980))), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x49c0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x49e0), addmod(mload(add(transcript, 0x4940)), mload(add(transcript, 0x49a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4a00), result) }mstore(add(transcript, 0x4a20), mulmod(mload(add(transcript, 0x4a00)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4a40), mulmod(sub(f_q, mload(add(transcript, 0x4a20))), mload(add(transcript, 0x3c80)), f_q))mstore(add(transcript, 0x4a60), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c80)), f_q))mstore(add(transcript, 0x4a80), addmod(mload(add(transcript, 0x49e0)), mload(add(transcript, 0x4a40)), f_q))mstore(add(transcript, 0x4aa0), mulmod(mload(add(transcript, 0x3120)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4ac0), mulmod(mload(add(transcript, 0x3140)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4ae0), mulmod(mload(add(transcript, 0x3160)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4b00), mulmod(mload(add(transcript, 0x3180)), mload(add(transcript, 0x37a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x31a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4b20), result) }mstore(add(transcript, 0x4b40), mulmod(mload(add(transcript, 0x4b20)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4b60), mulmod(sub(f_q, mload(add(transcript, 0x4b40))), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4b80), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4ba0), mulmod(mload(add(transcript, 0x4aa0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4bc0), mulmod(mload(add(transcript, 0x4ac0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4be0), mulmod(mload(add(transcript, 0x4ae0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4c00), mulmod(mload(add(transcript, 0x4b00)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4c20), addmod(mload(add(transcript, 0x4a80)), mload(add(transcript, 0x4b60)), f_q)){ let result := mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4c40), result) }mstore(add(transcript, 0x4c60), mulmod(mload(add(transcript, 0x4c40)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4c80), mulmod(sub(f_q, mload(add(transcript, 0x4c60))), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x4ca0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x4cc0), addmod(mload(add(transcript, 0x4c20)), mload(add(transcript, 0x4c80)), f_q))mstore(add(transcript, 0x4ce0), mulmod(mload(add(transcript, 0x4cc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d00), mulmod(mload(add(transcript, 0x3f40)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d20), mulmod(mload(add(transcript, 0x3fc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d40), mulmod(mload(add(transcript, 0x4060)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d60), mulmod(mload(add(transcript, 0x4100)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d80), mulmod(mload(add(transcript, 0x41a0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4da0), mulmod(mload(add(transcript, 0x4240)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4dc0), mulmod(mload(add(transcript, 0x42e0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4de0), mulmod(mload(add(transcript, 0x4380)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e00), mulmod(mload(add(transcript, 0x4420)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e20), mulmod(mload(add(transcript, 0x44c0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e40), mulmod(mload(add(transcript, 0x4560)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e60), mulmod(mload(add(transcript, 0x4600)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e80), mulmod(mload(add(transcript, 0x46a0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ea0), mulmod(mload(add(transcript, 0x4740)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ec0), mulmod(mload(add(transcript, 0x47e0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ee0), mulmod(mload(add(transcript, 0x4880)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f00), mulmod(mload(add(transcript, 0x4920)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f20), mulmod(mload(add(transcript, 0x49c0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f40), mulmod(mload(add(transcript, 0x4a60)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f60), mulmod(mload(add(transcript, 0x4b80)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f80), mulmod(mload(add(transcript, 0x4ba0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fa0), mulmod(mload(add(transcript, 0x4bc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fc0), mulmod(mload(add(transcript, 0x4be0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fe0), mulmod(mload(add(transcript, 0x4c00)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x5000), mulmod(mload(add(transcript, 0x4ca0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x5020), addmod(mload(add(transcript, 0x3e80)), mload(add(transcript, 0x4ce0)), f_q))mstore(add(transcript, 0x5040), mulmod(1, mload(add(transcript, 0x37e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x920)), mload(add(transcript, 0x33c0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x33e0)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x960)), mload(add(transcript, 0x3400)), f_q), result, f_q)mstore(add(transcript, 0x5060), result) }mstore(add(transcript, 0x5080), mulmod(mload(add(transcript, 0x5060)), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x50a0), mulmod(sub(f_q, mload(add(transcript, 0x5080))), 1, f_q))mstore(add(transcript, 0x50c0), mulmod(mload(add(transcript, 0x5040)), 1, f_q))mstore(add(transcript, 0x50e0), mulmod(mload(add(transcript, 0x50a0)), mload(add(transcript, 0x3d00)), f_q))mstore(add(transcript, 0x5100), mulmod(mload(add(transcript, 0x50c0)), mload(add(transcript, 0x3d00)), f_q))mstore(add(transcript, 0x5120), addmod(mload(add(transcript, 0x5020)), mload(add(transcript, 0x50e0)), f_q))mstore(add(transcript, 0x5140), mulmod(1, mload(add(transcript, 0x3820)), f_q)){ let result := mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x3440)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9a0)), mload(add(transcript, 0x3460)), f_q), result, f_q)mstore(add(transcript, 0x5160), result) }mstore(add(transcript, 0x5180), mulmod(mload(add(transcript, 0x5160)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x51a0), mulmod(sub(f_q, mload(add(transcript, 0x5180))), 1, f_q))mstore(add(transcript, 0x51c0), mulmod(mload(add(transcript, 0x5140)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x3440)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9e0)), mload(add(transcript, 0x3460)), f_q), result, f_q)mstore(add(transcript, 0x51e0), result) }mstore(add(transcript, 0x5200), mulmod(mload(add(transcript, 0x51e0)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x5220), mulmod(sub(f_q, mload(add(transcript, 0x5200))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x5240), mulmod(mload(add(transcript, 0x5140)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x5260), addmod(mload(add(transcript, 0x51a0)), mload(add(transcript, 0x5220)), f_q))mstore(add(transcript, 0x5280), mulmod(mload(add(transcript, 0x5260)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52a0), mulmod(mload(add(transcript, 0x51c0)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52c0), mulmod(mload(add(transcript, 0x5240)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52e0), addmod(mload(add(transcript, 0x5120)), mload(add(transcript, 0x5280)), f_q))mstore(add(transcript, 0x5300), mulmod(1, mload(add(transcript, 0x3860)), f_q)){ let result := mulmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x3480)), f_q)result := addmod(mulmod(mload(add(transcript, 0xa20)), mload(add(transcript, 0x34a0)), f_q), result, f_q)mstore(add(transcript, 0x5320), result) }mstore(add(transcript, 0x5340), mulmod(mload(add(transcript, 0x5320)), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x5360), mulmod(sub(f_q, mload(add(transcript, 0x5340))), 1, f_q))mstore(add(transcript, 0x5380), mulmod(mload(add(transcript, 0x5300)), 1, f_q))mstore(add(transcript, 0x53a0), mulmod(mload(add(transcript, 0x5360)), mload(add(transcript, 0x3d40)), f_q))mstore(add(transcript, 0x53c0), mulmod(mload(add(transcript, 0x5380)), mload(add(transcript, 0x3d40)), f_q))mstore(add(transcript, 0x53e0), addmod(mload(add(transcript, 0x52e0)), mload(add(transcript, 0x53a0)), f_q))mstore(add(transcript, 0x5400), mulmod(1, mload(add(transcript, 0x3380)), f_q))mstore(add(transcript, 0x5420), mulmod(1, mload(add(transcript, 0xb80)), f_q))mstore(add(transcript, 0x5440), 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(add(transcript, 0x5460), 0x0000000000000000000000000000000000000000000000000000000000000002)mstore(add(transcript, 0x5480), mload(add(transcript, 0x53e0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5440), 0x60, add(transcript, 0x5440), 0x40), 1), success)mstore(add(transcript, 0x54a0), mload(add(transcript, 0x5440))) mstore(add(transcript, 0x54c0), mload(add(transcript, 0x5460)))mstore(add(transcript, 0x54e0), mload(add(transcript, 0xa0))) mstore(add(transcript, 0x5500), mload(add(transcript, 0xc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x54a0), 0x80, add(transcript, 0x54a0), 0x40), 1), success)mstore(add(transcript, 0x5520), mload(add(transcript, 0xe0))) mstore(add(transcript, 0x5540), mload(add(transcript, 0x100)))mstore(add(transcript, 0x5560), mload(add(transcript, 0x3ea0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5520), 0x60, add(transcript, 0x5520), 0x40), 1), success)mstore(add(transcript, 0x5580), mload(add(transcript, 0x54a0))) mstore(add(transcript, 0x55a0), mload(add(transcript, 0x54c0)))mstore(add(transcript, 0x55c0), mload(add(transcript, 0x5520))) mstore(add(transcript, 0x55e0), mload(add(transcript, 0x5540)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5580), 0x80, add(transcript, 0x5580), 0x40), 1), success)mstore(add(transcript, 0x5600), mload(add(transcript, 0x120))) mstore(add(transcript, 0x5620), mload(add(transcript, 0x140)))mstore(add(transcript, 0x5640), mload(add(transcript, 0x4d00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5600), 0x60, add(transcript, 0x5600), 0x40), 1), success)mstore(add(transcript, 0x5660), mload(add(transcript, 0x5580))) mstore(add(transcript, 0x5680), mload(add(transcript, 0x55a0)))mstore(add(transcript, 0x56a0), mload(add(transcript, 0x5600))) mstore(add(transcript, 0x56c0), mload(add(transcript, 0x5620)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5660), 0x80, add(transcript, 0x5660), 0x40), 1), success)mstore(add(transcript, 0x56e0), mload(add(transcript, 0x200))) mstore(add(transcript, 0x5700), mload(add(transcript, 0x220)))mstore(add(transcript, 0x5720), mload(add(transcript, 0x4d20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x56e0), 0x60, add(transcript, 0x56e0), 0x40), 1), success)mstore(add(transcript, 0x5740), mload(add(transcript, 0x5660))) mstore(add(transcript, 0x5760), mload(add(transcript, 0x5680)))mstore(add(transcript, 0x5780), mload(add(transcript, 0x56e0))) mstore(add(transcript, 0x57a0), mload(add(transcript, 0x5700)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5740), 0x80, add(transcript, 0x5740), 0x40), 1), success)mstore(add(transcript, 0x57c0), 0x299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a90) mstore(add(transcript, 0x57e0), 0x21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95)mstore(add(transcript, 0x5800), mload(add(transcript, 0x4d40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x57c0), 0x60, add(transcript, 0x57c0), 0x40), 1), success)mstore(add(transcript, 0x5820), mload(add(transcript, 0x5740))) mstore(add(transcript, 0x5840), mload(add(transcript, 0x5760)))mstore(add(transcript, 0x5860), mload(add(transcript, 0x57c0))) mstore(add(transcript, 0x5880), mload(add(transcript, 0x57e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5820), 0x80, add(transcript, 0x5820), 0x40), 1), success)mstore(add(transcript, 0x58a0), 0x19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3) mstore(add(transcript, 0x58c0), 0x2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6)mstore(add(transcript, 0x58e0), mload(add(transcript, 0x4d60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x58a0), 0x60, add(transcript, 0x58a0), 0x40), 1), success)mstore(add(transcript, 0x5900), mload(add(transcript, 0x5820))) mstore(add(transcript, 0x5920), mload(add(transcript, 0x5840)))mstore(add(transcript, 0x5940), mload(add(transcript, 0x58a0))) mstore(add(transcript, 0x5960), mload(add(transcript, 0x58c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5900), 0x80, add(transcript, 0x5900), 0x40), 1), success)mstore(add(transcript, 0x5980), 0x17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e) mstore(add(transcript, 0x59a0), 0x1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b)mstore(add(transcript, 0x59c0), mload(add(transcript, 0x4d80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5980), 0x60, add(transcript, 0x5980), 0x40), 1), success)mstore(add(transcript, 0x59e0), mload(add(transcript, 0x5900))) mstore(add(transcript, 0x5a00), mload(add(transcript, 0x5920)))mstore(add(transcript, 0x5a20), mload(add(transcript, 0x5980))) mstore(add(transcript, 0x5a40), mload(add(transcript, 0x59a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x59e0), 0x80, add(transcript, 0x59e0), 0x40), 1), success)mstore(add(transcript, 0x5a60), 0x05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056) mstore(add(transcript, 0x5a80), 0x2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c)mstore(add(transcript, 0x5aa0), mload(add(transcript, 0x4da0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5a60), 0x60, add(transcript, 0x5a60), 0x40), 1), success)mstore(add(transcript, 0x5ac0), mload(add(transcript, 0x59e0))) mstore(add(transcript, 0x5ae0), mload(add(transcript, 0x5a00)))mstore(add(transcript, 0x5b00), mload(add(transcript, 0x5a60))) mstore(add(transcript, 0x5b20), mload(add(transcript, 0x5a80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ac0), 0x80, add(transcript, 0x5ac0), 0x40), 1), success)mstore(add(transcript, 0x5b40), 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) mstore(add(transcript, 0x5b60), 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0)mstore(add(transcript, 0x5b80), mload(add(transcript, 0x4dc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5b40), 0x60, add(transcript, 0x5b40), 0x40), 1), success)mstore(add(transcript, 0x5ba0), mload(add(transcript, 0x5ac0))) mstore(add(transcript, 0x5bc0), mload(add(transcript, 0x5ae0)))mstore(add(transcript, 0x5be0), mload(add(transcript, 0x5b40))) mstore(add(transcript, 0x5c00), mload(add(transcript, 0x5b60)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ba0), 0x80, add(transcript, 0x5ba0), 0x40), 1), success)mstore(add(transcript, 0x5c20), 0x19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8) mstore(add(transcript, 0x5c40), 0x0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78)mstore(add(transcript, 0x5c60), mload(add(transcript, 0x4de0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5c20), 0x60, add(transcript, 0x5c20), 0x40), 1), success)mstore(add(transcript, 0x5c80), mload(add(transcript, 0x5ba0))) mstore(add(transcript, 0x5ca0), mload(add(transcript, 0x5bc0)))mstore(add(transcript, 0x5cc0), mload(add(transcript, 0x5c20))) mstore(add(transcript, 0x5ce0), mload(add(transcript, 0x5c40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5c80), 0x80, add(transcript, 0x5c80), 0x40), 1), success)mstore(add(transcript, 0x5d00), 0x1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5) mstore(add(transcript, 0x5d20), 0x1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098)mstore(add(transcript, 0x5d40), mload(add(transcript, 0x4e00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5d00), 0x60, add(transcript, 0x5d00), 0x40), 1), success)mstore(add(transcript, 0x5d60), mload(add(transcript, 0x5c80))) mstore(add(transcript, 0x5d80), mload(add(transcript, 0x5ca0)))mstore(add(transcript, 0x5da0), mload(add(transcript, 0x5d00))) mstore(add(transcript, 0x5dc0), mload(add(transcript, 0x5d20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5d60), 0x80, add(transcript, 0x5d60), 0x40), 1), success)mstore(add(transcript, 0x5de0), 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) mstore(add(transcript, 0x5e00), 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097)mstore(add(transcript, 0x5e20), mload(add(transcript, 0x4e20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5de0), 0x60, add(transcript, 0x5de0), 0x40), 1), success)mstore(add(transcript, 0x5e40), mload(add(transcript, 0x5d60))) mstore(add(transcript, 0x5e60), mload(add(transcript, 0x5d80)))mstore(add(transcript, 0x5e80), mload(add(transcript, 0x5de0))) mstore(add(transcript, 0x5ea0), mload(add(transcript, 0x5e00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5e40), 0x80, add(transcript, 0x5e40), 0x40), 1), success)mstore(add(transcript, 0x5ec0), 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) mstore(add(transcript, 0x5ee0), 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd)mstore(add(transcript, 0x5f00), mload(add(transcript, 0x4e40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5ec0), 0x60, add(transcript, 0x5ec0), 0x40), 1), success)mstore(add(transcript, 0x5f20), mload(add(transcript, 0x5e40))) mstore(add(transcript, 0x5f40), mload(add(transcript, 0x5e60)))mstore(add(transcript, 0x5f60), mload(add(transcript, 0x5ec0))) mstore(add(transcript, 0x5f80), mload(add(transcript, 0x5ee0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5f20), 0x80, add(transcript, 0x5f20), 0x40), 1), success)mstore(add(transcript, 0x5fa0), 0x09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa) mstore(add(transcript, 0x5fc0), 0x13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289)mstore(add(transcript, 0x5fe0), mload(add(transcript, 0x4e60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5fa0), 0x60, add(transcript, 0x5fa0), 0x40), 1), success)mstore(add(transcript, 0x6000), mload(add(transcript, 0x5f20))) mstore(add(transcript, 0x6020), mload(add(transcript, 0x5f40)))mstore(add(transcript, 0x6040), mload(add(transcript, 0x5fa0))) mstore(add(transcript, 0x6060), mload(add(transcript, 0x5fc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6000), 0x80, add(transcript, 0x6000), 0x40), 1), success)mstore(add(transcript, 0x6080), 0x08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743) mstore(add(transcript, 0x60a0), 0x08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c)mstore(add(transcript, 0x60c0), mload(add(transcript, 0x4e80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6080), 0x60, add(transcript, 0x6080), 0x40), 1), success)mstore(add(transcript, 0x60e0), mload(add(transcript, 0x6000))) mstore(add(transcript, 0x6100), mload(add(transcript, 0x6020)))mstore(add(transcript, 0x6120), mload(add(transcript, 0x6080))) mstore(add(transcript, 0x6140), mload(add(transcript, 0x60a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x60e0), 0x80, add(transcript, 0x60e0), 0x40), 1), success)mstore(add(transcript, 0x6160), 0x25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe) mstore(add(transcript, 0x6180), 0x2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a)mstore(add(transcript, 0x61a0), mload(add(transcript, 0x4ea0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6160), 0x60, add(transcript, 0x6160), 0x40), 1), success)mstore(add(transcript, 0x61c0), mload(add(transcript, 0x60e0))) mstore(add(transcript, 0x61e0), mload(add(transcript, 0x6100)))mstore(add(transcript, 0x6200), mload(add(transcript, 0x6160))) mstore(add(transcript, 0x6220), mload(add(transcript, 0x6180)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x61c0), 0x80, add(transcript, 0x61c0), 0x40), 1), success)mstore(add(transcript, 0x6240), 0x07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad) mstore(add(transcript, 0x6260), 0x255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960)mstore(add(transcript, 0x6280), mload(add(transcript, 0x4ec0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6240), 0x60, add(transcript, 0x6240), 0x40), 1), success)mstore(add(transcript, 0x62a0), mload(add(transcript, 0x61c0))) mstore(add(transcript, 0x62c0), mload(add(transcript, 0x61e0)))mstore(add(transcript, 0x62e0), mload(add(transcript, 0x6240))) mstore(add(transcript, 0x6300), mload(add(transcript, 0x6260)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x62a0), 0x80, add(transcript, 0x62a0), 0x40), 1), success)mstore(add(transcript, 0x6320), 0x136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22) mstore(add(transcript, 0x6340), 0x0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac)mstore(add(transcript, 0x6360), mload(add(transcript, 0x4ee0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6320), 0x60, add(transcript, 0x6320), 0x40), 1), success)mstore(add(transcript, 0x6380), mload(add(transcript, 0x62a0))) mstore(add(transcript, 0x63a0), mload(add(transcript, 0x62c0)))mstore(add(transcript, 0x63c0), mload(add(transcript, 0x6320))) mstore(add(transcript, 0x63e0), mload(add(transcript, 0x6340)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6380), 0x80, add(transcript, 0x6380), 0x40), 1), success)mstore(add(transcript, 0x6400), 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) mstore(add(transcript, 0x6420), 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3)mstore(add(transcript, 0x6440), mload(add(transcript, 0x4f00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6400), 0x60, add(transcript, 0x6400), 0x40), 1), success)mstore(add(transcript, 0x6460), mload(add(transcript, 0x6380))) mstore(add(transcript, 0x6480), mload(add(transcript, 0x63a0)))mstore(add(transcript, 0x64a0), mload(add(transcript, 0x6400))) mstore(add(transcript, 0x64c0), mload(add(transcript, 0x6420)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6460), 0x80, add(transcript, 0x6460), 0x40), 1), success)mstore(add(transcript, 0x64e0), 0x1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e) mstore(add(transcript, 0x6500), 0x050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb)mstore(add(transcript, 0x6520), mload(add(transcript, 0x4f20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x64e0), 0x60, add(transcript, 0x64e0), 0x40), 1), success)mstore(add(transcript, 0x6540), mload(add(transcript, 0x6460))) mstore(add(transcript, 0x6560), mload(add(transcript, 0x6480)))mstore(add(transcript, 0x6580), mload(add(transcript, 0x64e0))) mstore(add(transcript, 0x65a0), mload(add(transcript, 0x6500)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6540), 0x80, add(transcript, 0x6540), 0x40), 1), success)mstore(add(transcript, 0x65c0), 0x1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0) mstore(add(transcript, 0x65e0), 0x0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391)mstore(add(transcript, 0x6600), mload(add(transcript, 0x4f40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x65c0), 0x60, add(transcript, 0x65c0), 0x40), 1), success)mstore(add(transcript, 0x6620), mload(add(transcript, 0x6540))) mstore(add(transcript, 0x6640), mload(add(transcript, 0x6560)))mstore(add(transcript, 0x6660), mload(add(transcript, 0x65c0))) mstore(add(transcript, 0x6680), mload(add(transcript, 0x65e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6620), 0x80, add(transcript, 0x6620), 0x40), 1), success)mstore(add(transcript, 0x66a0), mload(add(transcript, 0x460))) mstore(add(transcript, 0x66c0), mload(add(transcript, 0x480)))mstore(add(transcript, 0x66e0), mload(add(transcript, 0x4f60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x66a0), 0x60, add(transcript, 0x66a0), 0x40), 1), success)mstore(add(transcript, 0x6700), mload(add(transcript, 0x6620))) mstore(add(transcript, 0x6720), mload(add(transcript, 0x6640)))mstore(add(transcript, 0x6740), mload(add(transcript, 0x66a0))) mstore(add(transcript, 0x6760), mload(add(transcript, 0x66c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6700), 0x80, add(transcript, 0x6700), 0x40), 1), success)mstore(add(transcript, 0x6780), mload(add(transcript, 0x4a0))) mstore(add(transcript, 0x67a0), mload(add(transcript, 0x4c0)))mstore(add(transcript, 0x67c0), mload(add(transcript, 0x4f80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6780), 0x60, add(transcript, 0x6780), 0x40), 1), success)mstore(add(transcript, 0x67e0), mload(add(transcript, 0x6700))) mstore(add(transcript, 0x6800), mload(add(transcript, 0x6720)))mstore(add(transcript, 0x6820), mload(add(transcript, 0x6780))) mstore(add(transcript, 0x6840), mload(add(transcript, 0x67a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x67e0), 0x80, add(transcript, 0x67e0), 0x40), 1), success)mstore(add(transcript, 0x6860), mload(add(transcript, 0x4e0))) mstore(add(transcript, 0x6880), mload(add(transcript, 0x500)))mstore(add(transcript, 0x68a0), mload(add(transcript, 0x4fa0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6860), 0x60, add(transcript, 0x6860), 0x40), 1), success)mstore(add(transcript, 0x68c0), mload(add(transcript, 0x67e0))) mstore(add(transcript, 0x68e0), mload(add(transcript, 0x6800)))mstore(add(transcript, 0x6900), mload(add(transcript, 0x6860))) mstore(add(transcript, 0x6920), mload(add(transcript, 0x6880)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x68c0), 0x80, add(transcript, 0x68c0), 0x40), 1), success)mstore(add(transcript, 0x6940), mload(add(transcript, 0x520))) mstore(add(transcript, 0x6960), mload(add(transcript, 0x540)))mstore(add(transcript, 0x6980), mload(add(transcript, 0x4fc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6940), 0x60, add(transcript, 0x6940), 0x40), 1), success)mstore(add(transcript, 0x69a0), mload(add(transcript, 0x68c0))) mstore(add(transcript, 0x69c0), mload(add(transcript, 0x68e0)))mstore(add(transcript, 0x69e0), mload(add(transcript, 0x6940))) mstore(add(transcript, 0x6a00), mload(add(transcript, 0x6960)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x69a0), 0x80, add(transcript, 0x69a0), 0x40), 1), success)mstore(add(transcript, 0x6a20), mload(add(transcript, 0x560))) mstore(add(transcript, 0x6a40), mload(add(transcript, 0x580)))mstore(add(transcript, 0x6a60), mload(add(transcript, 0x4fe0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6a20), 0x60, add(transcript, 0x6a20), 0x40), 1), success)mstore(add(transcript, 0x6a80), mload(add(transcript, 0x69a0))) mstore(add(transcript, 0x6aa0), mload(add(transcript, 0x69c0)))mstore(add(transcript, 0x6ac0), mload(add(transcript, 0x6a20))) mstore(add(transcript, 0x6ae0), mload(add(transcript, 0x6a40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6a80), 0x80, add(transcript, 0x6a80), 0x40), 1), success)mstore(add(transcript, 0x6b00), mload(add(transcript, 0x3c0))) mstore(add(transcript, 0x6b20), mload(add(transcript, 0x3e0)))mstore(add(transcript, 0x6b40), mload(add(transcript, 0x5000)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6b00), 0x60, add(transcript, 0x6b00), 0x40), 1), success)mstore(add(transcript, 0x6b60), mload(add(transcript, 0x6a80))) mstore(add(transcript, 0x6b80), mload(add(transcript, 0x6aa0)))mstore(add(transcript, 0x6ba0), mload(add(transcript, 0x6b00))) mstore(add(transcript, 0x6bc0), mload(add(transcript, 0x6b20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6b60), 0x80, add(transcript, 0x6b60), 0x40), 1), success)mstore(add(transcript, 0x6be0), mload(add(transcript, 0x300))) mstore(add(transcript, 0x6c00), mload(add(transcript, 0x320)))mstore(add(transcript, 0x6c20), mload(add(transcript, 0x5100)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6be0), 0x60, add(transcript, 0x6be0), 0x40), 1), success)mstore(add(transcript, 0x6c40), mload(add(transcript, 0x6b60))) mstore(add(transcript, 0x6c60), mload(add(transcript, 0x6b80)))mstore(add(transcript, 0x6c80), mload(add(transcript, 0x6be0))) mstore(add(transcript, 0x6ca0), mload(add(transcript, 0x6c00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6c40), 0x80, add(transcript, 0x6c40), 0x40), 1), success)mstore(add(transcript, 0x6cc0), mload(add(transcript, 0x340))) mstore(add(transcript, 0x6ce0), mload(add(transcript, 0x360)))mstore(add(transcript, 0x6d00), mload(add(transcript, 0x52a0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6cc0), 0x60, add(transcript, 0x6cc0), 0x40), 1), success)mstore(add(transcript, 0x6d20), mload(add(transcript, 0x6c40))) mstore(add(transcript, 0x6d40), mload(add(transcript, 0x6c60)))mstore(add(transcript, 0x6d60), mload(add(transcript, 0x6cc0))) mstore(add(transcript, 0x6d80), mload(add(transcript, 0x6ce0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6d20), 0x80, add(transcript, 0x6d20), 0x40), 1), success)mstore(add(transcript, 0x6da0), mload(add(transcript, 0x380))) mstore(add(transcript, 0x6dc0), mload(add(transcript, 0x3a0)))mstore(add(transcript, 0x6de0), mload(add(transcript, 0x52c0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6da0), 0x60, add(transcript, 0x6da0), 0x40), 1), success)mstore(add(transcript, 0x6e00), mload(add(transcript, 0x6d20))) mstore(add(transcript, 0x6e20), mload(add(transcript, 0x6d40)))mstore(add(transcript, 0x6e40), mload(add(transcript, 0x6da0))) mstore(add(transcript, 0x6e60), mload(add(transcript, 0x6dc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6e00), 0x80, add(transcript, 0x6e00), 0x40), 1), success)mstore(add(transcript, 0x6e80), mload(add(transcript, 0x1c0))) mstore(add(transcript, 0x6ea0), mload(add(transcript, 0x1e0)))mstore(add(transcript, 0x6ec0), mload(add(transcript, 0x53c0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6e80), 0x60, add(transcript, 0x6e80), 0x40), 1), success)mstore(add(transcript, 0x6ee0), mload(add(transcript, 0x6e00))) mstore(add(transcript, 0x6f00), mload(add(transcript, 0x6e20)))mstore(add(transcript, 0x6f20), mload(add(transcript, 0x6e80))) mstore(add(transcript, 0x6f40), mload(add(transcript, 0x6ea0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6ee0), 0x80, add(transcript, 0x6ee0), 0x40), 1), success)mstore(add(transcript, 0x6f60), mload(add(transcript, 0xb20))) mstore(add(transcript, 0x6f80), mload(add(transcript, 0xb40)))mstore(add(transcript, 0x6fa0), sub(f_q, mload(add(transcript, 0x5400))))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6f60), 0x60, add(transcript, 0x6f60), 0x40), 1), success)mstore(add(transcript, 0x6fc0), mload(add(transcript, 0x6ee0))) mstore(add(transcript, 0x6fe0), mload(add(transcript, 0x6f00)))mstore(add(transcript, 0x7000), mload(add(transcript, 0x6f60))) mstore(add(transcript, 0x7020), mload(add(transcript, 0x6f80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6fc0), 0x80, add(transcript, 0x6fc0), 0x40), 1), success)mstore(add(transcript, 0x7040), mload(add(transcript, 0xbc0))) mstore(add(transcript, 0x7060), mload(add(transcript, 0xbe0)))mstore(add(transcript, 0x7080), mload(add(transcript, 0x5420)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x7040), 0x60, add(transcript, 0x7040), 0x40), 1), success)mstore(add(transcript, 0x70a0), mload(add(transcript, 0x6fc0))) mstore(add(transcript, 0x70c0), mload(add(transcript, 0x6fe0)))mstore(add(transcript, 0x70e0), mload(add(transcript, 0x7040))) mstore(add(transcript, 0x7100), mload(add(transcript, 0x7060)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x70a0), 0x80, add(transcript, 0x70a0), 0x40), 1), success)mstore(add(transcript, 0x7120), mload(add(transcript, 0x70a0))) mstore(add(transcript, 0x7140), mload(add(transcript, 0x70c0)))mstore(add(transcript, 0x7160), 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(add(transcript, 0x7180), 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(add(transcript, 0x71a0), 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(add(transcript, 0x71c0), 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)mstore(add(transcript, 0x71e0), mload(add(transcript, 0xbc0))) mstore(add(transcript, 0x7200), mload(add(transcript, 0xbe0)))mstore(add(transcript, 0x7220), 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) mstore(add(transcript, 0x7240), 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) mstore(add(transcript, 0x7260), 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) mstore(add(transcript, 0x7280), 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff)success := and(eq(staticcall(gas(), 0x8, add(transcript, 0x7120), 0x180, add(transcript, 0x7120), 0x20), 1), success)success := and(eq(mload(add(transcript, 0x7120)), 1), success)} return success; } } diff --git a/contracts/src/InclusionVerifier.yul b/contracts/src/InclusionVerifier.yul index 55fc481d..009e639b 100644 --- a/contracts/src/InclusionVerifier.yul +++ b/contracts/src/InclusionVerifier.yul @@ -33,15 +33,9 @@ } mstore(0x20, mod(calldataload(0x0), f_q)) mstore(0x40, mod(calldataload(0x20), f_q)) -mstore(0x0, 20780565364750352931855234182745264522567546354850733883253409196481354617515) - - { - let x := calldataload(0x40) - mstore(0x60, x) - let y := calldataload(0x60) - mstore(0x80, y) - success := and(validate_ec_point(x, y), success) - } +mstore(0x60, mod(calldataload(0x40), f_q)) +mstore(0x80, mod(calldataload(0x60), f_q)) +mstore(0x0, 7290356956133308795219632317546298177560913853825373832110764139479796737523) { let x := calldataload(0x80) @@ -58,20 +52,20 @@ mstore(0x0, 20780565364750352931855234182745264522567546354850733883253409196481 mstore(0x100, y) success := and(validate_ec_point(x, y), success) } -mstore(0x120, keccak256(0x0, 288)) -{ - let hash := mload(0x120) - mstore(0x140, mod(hash, f_q)) - mstore(0x160, hash) - } { let x := calldataload(0x100) - mstore(0x180, x) + mstore(0x120, x) let y := calldataload(0x120) - mstore(0x1a0, y) + mstore(0x140, y) success := and(validate_ec_point(x, y), success) } +mstore(0x160, keccak256(0x0, 352)) +{ + let hash := mload(0x160) + mstore(0x180, mod(hash, f_q)) + mstore(0x1a0, hash) + } { let x := calldataload(0x140) @@ -80,27 +74,27 @@ mstore(0x120, keccak256(0x0, 288)) mstore(0x1e0, y) success := and(validate_ec_point(x, y), success) } -mstore(0x200, keccak256(0x160, 160)) -{ - let hash := mload(0x200) - mstore(0x220, mod(hash, f_q)) - mstore(0x240, hash) - } -mstore8(608, 1) -mstore(0x260, keccak256(0x240, 33)) -{ - let hash := mload(0x260) - mstore(0x280, mod(hash, f_q)) - mstore(0x2a0, hash) - } { let x := calldataload(0x180) - mstore(0x2c0, x) + mstore(0x200, x) let y := calldataload(0x1a0) - mstore(0x2e0, y) + mstore(0x220, y) success := and(validate_ec_point(x, y), success) } +mstore(0x240, keccak256(0x1a0, 160)) +{ + let hash := mload(0x240) + mstore(0x260, mod(hash, f_q)) + mstore(0x280, hash) + } +mstore8(672, 1) +mstore(0x2a0, keccak256(0x280, 33)) +{ + let hash := mload(0x2a0) + mstore(0x2c0, mod(hash, f_q)) + mstore(0x2e0, hash) + } { let x := calldataload(0x1c0) @@ -125,20 +119,20 @@ mstore(0x260, keccak256(0x240, 33)) mstore(0x3a0, y) success := and(validate_ec_point(x, y), success) } -mstore(0x3c0, keccak256(0x2a0, 288)) -{ - let hash := mload(0x3c0) - mstore(0x3e0, mod(hash, f_q)) - mstore(0x400, hash) - } { let x := calldataload(0x280) - mstore(0x420, x) + mstore(0x3c0, x) let y := calldataload(0x2a0) - mstore(0x440, y) + mstore(0x3e0, y) success := and(validate_ec_point(x, y), success) } +mstore(0x400, keccak256(0x2e0, 288)) +{ + let hash := mload(0x400) + mstore(0x420, mod(hash, f_q)) + mstore(0x440, hash) + } { let x := calldataload(0x2c0) @@ -171,14 +165,20 @@ mstore(0x3c0, keccak256(0x2a0, 288)) mstore(0x540, y) success := and(validate_ec_point(x, y), success) } -mstore(0x560, keccak256(0x400, 352)) + + { + let x := calldataload(0x3c0) + mstore(0x560, x) + let y := calldataload(0x3e0) + mstore(0x580, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x5a0, keccak256(0x440, 352)) { - let hash := mload(0x560) - mstore(0x580, mod(hash, f_q)) - mstore(0x5a0, hash) + let hash := mload(0x5a0) + mstore(0x5c0, mod(hash, f_q)) + mstore(0x5e0, hash) } -mstore(0x5c0, mod(calldataload(0x3c0), f_q)) -mstore(0x5e0, mod(calldataload(0x3e0), f_q)) mstore(0x600, mod(calldataload(0x400), f_q)) mstore(0x620, mod(calldataload(0x420), f_q)) mstore(0x640, mod(calldataload(0x440), f_q)) @@ -212,44 +212,44 @@ mstore(0x9a0, mod(calldataload(0x7a0), f_q)) mstore(0x9c0, mod(calldataload(0x7c0), f_q)) mstore(0x9e0, mod(calldataload(0x7e0), f_q)) mstore(0xa00, mod(calldataload(0x800), f_q)) -mstore(0xa20, keccak256(0x5a0, 1152)) +mstore(0xa20, mod(calldataload(0x820), f_q)) +mstore(0xa40, mod(calldataload(0x840), f_q)) +mstore(0xa60, keccak256(0x5e0, 1152)) { - let hash := mload(0xa20) - mstore(0xa40, mod(hash, f_q)) - mstore(0xa60, hash) + let hash := mload(0xa60) + mstore(0xa80, mod(hash, f_q)) + mstore(0xaa0, hash) } -mstore8(2688, 1) -mstore(0xa80, keccak256(0xa60, 33)) +mstore8(2752, 1) +mstore(0xac0, keccak256(0xaa0, 33)) { - let hash := mload(0xa80) - mstore(0xaa0, mod(hash, f_q)) - mstore(0xac0, hash) + let hash := mload(0xac0) + mstore(0xae0, mod(hash, f_q)) + mstore(0xb00, hash) } { - let x := calldataload(0x820) - mstore(0xae0, x) - let y := calldataload(0x840) - mstore(0xb00, y) + let x := calldataload(0x860) + mstore(0xb20, x) + let y := calldataload(0x880) + mstore(0xb40, y) success := and(validate_ec_point(x, y), success) } -mstore(0xb20, keccak256(0xac0, 96)) +mstore(0xb60, keccak256(0xb00, 96)) { - let hash := mload(0xb20) - mstore(0xb40, mod(hash, f_q)) - mstore(0xb60, hash) + let hash := mload(0xb60) + mstore(0xb80, mod(hash, f_q)) + mstore(0xba0, hash) } { - let x := calldataload(0x860) - mstore(0xb80, x) - let y := calldataload(0x880) - mstore(0xba0, y) + let x := calldataload(0x8a0) + mstore(0xbc0, x) + let y := calldataload(0x8c0) + mstore(0xbe0, y) success := and(validate_ec_point(x, y), success) } -mstore(0xbc0, mulmod(mload(0x580), mload(0x580), f_q)) -mstore(0xbe0, mulmod(mload(0xbc0), mload(0xbc0), f_q)) -mstore(0xc00, mulmod(mload(0xbe0), mload(0xbe0), f_q)) +mstore(0xc00, mulmod(mload(0x5c0), mload(0x5c0), f_q)) mstore(0xc20, mulmod(mload(0xc00), mload(0xc00), f_q)) mstore(0xc40, mulmod(mload(0xc20), mload(0xc20), f_q)) mstore(0xc60, mulmod(mload(0xc40), mload(0xc40), f_q)) @@ -258,1172 +258,1182 @@ mstore(0xca0, mulmod(mload(0xc80), mload(0xc80), f_q)) mstore(0xcc0, mulmod(mload(0xca0), mload(0xca0), f_q)) mstore(0xce0, mulmod(mload(0xcc0), mload(0xcc0), f_q)) mstore(0xd00, mulmod(mload(0xce0), mload(0xce0), f_q)) -mstore(0xd20, addmod(mload(0xd00), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xd40, mulmod(mload(0xd20), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q)) -mstore(0xd60, mulmod(mload(0xd40), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) -mstore(0xd80, addmod(mload(0x580), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q)) -mstore(0xda0, mulmod(mload(0xd40), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q)) -mstore(0xdc0, addmod(mload(0x580), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q)) -mstore(0xde0, mulmod(mload(0xd40), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q)) -mstore(0xe00, addmod(mload(0x580), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q)) -mstore(0xe20, mulmod(mload(0xd40), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q)) -mstore(0xe40, addmod(mload(0x580), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q)) -mstore(0xe60, mulmod(mload(0xd40), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q)) -mstore(0xe80, addmod(mload(0x580), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q)) -mstore(0xea0, mulmod(mload(0xd40), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) -mstore(0xec0, addmod(mload(0x580), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q)) -mstore(0xee0, mulmod(mload(0xd40), 1, f_q)) -mstore(0xf00, addmod(mload(0x580), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xf20, mulmod(mload(0xd40), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) -mstore(0xf40, addmod(mload(0x580), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q)) +mstore(0xd20, mulmod(mload(0xd00), mload(0xd00), f_q)) +mstore(0xd40, mulmod(mload(0xd20), mload(0xd20), f_q)) +mstore(0xd60, addmod(mload(0xd40), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +mstore(0xd80, mulmod(mload(0xd60), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q)) +mstore(0xda0, mulmod(mload(0xd80), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) +mstore(0xdc0, addmod(mload(0x5c0), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q)) +mstore(0xde0, mulmod(mload(0xd80), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q)) +mstore(0xe00, addmod(mload(0x5c0), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q)) +mstore(0xe20, mulmod(mload(0xd80), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q)) +mstore(0xe40, addmod(mload(0x5c0), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q)) +mstore(0xe60, mulmod(mload(0xd80), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q)) +mstore(0xe80, addmod(mload(0x5c0), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q)) +mstore(0xea0, mulmod(mload(0xd80), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q)) +mstore(0xec0, addmod(mload(0x5c0), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q)) +mstore(0xee0, mulmod(mload(0xd80), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) +mstore(0xf00, addmod(mload(0x5c0), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q)) +mstore(0xf20, mulmod(mload(0xd80), 1, f_q)) +mstore(0xf40, addmod(mload(0x5c0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +mstore(0xf60, mulmod(mload(0xd80), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) +mstore(0xf80, addmod(mload(0x5c0), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q)) +mstore(0xfa0, mulmod(mload(0xd80), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q)) +mstore(0xfc0, addmod(mload(0x5c0), 2507682784038009475131574039120954579123549720846755509306663987687515178116, f_q)) +mstore(0xfe0, mulmod(mload(0xd80), 11322573621548282883955256084347882816245615123967859588024989498742209856615, f_q)) +mstore(0x1000, addmod(mload(0x5c0), 10565669250290992338291149660909392272302749276448174755673214687833598639002, f_q)) { - let prod := mload(0xd80) + let prod := mload(0xdc0) - prod := mulmod(mload(0xdc0), prod, f_q) - mstore(0xf60, prod) - prod := mulmod(mload(0xe00), prod, f_q) - mstore(0xf80, prod) + mstore(0x1020, prod) prod := mulmod(mload(0xe40), prod, f_q) - mstore(0xfa0, prod) + mstore(0x1040, prod) prod := mulmod(mload(0xe80), prod, f_q) - mstore(0xfc0, prod) + mstore(0x1060, prod) prod := mulmod(mload(0xec0), prod, f_q) - mstore(0xfe0, prod) + mstore(0x1080, prod) prod := mulmod(mload(0xf00), prod, f_q) - mstore(0x1000, prod) + mstore(0x10a0, prod) prod := mulmod(mload(0xf40), prod, f_q) - mstore(0x1020, prod) + mstore(0x10c0, prod) - prod := mulmod(mload(0xd20), prod, f_q) - mstore(0x1040, prod) + prod := mulmod(mload(0xf80), prod, f_q) + mstore(0x10e0, prod) + + prod := mulmod(mload(0xfc0), prod, f_q) + mstore(0x1100, prod) + + prod := mulmod(mload(0x1000), prod, f_q) + mstore(0x1120, prod) + + prod := mulmod(mload(0xd60), prod, f_q) + mstore(0x1140, prod) } -mstore(0x1080, 32) -mstore(0x10a0, 32) -mstore(0x10c0, 32) -mstore(0x10e0, mload(0x1040)) -mstore(0x1100, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x1120, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x1080, 0xc0, 0x1060, 0x20), 1), success) +mstore(0x1180, 32) +mstore(0x11a0, 32) +mstore(0x11c0, 32) +mstore(0x11e0, mload(0x1140)) +mstore(0x1200, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x1220, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x1180, 0xc0, 0x1160, 0x20), 1), success) { - let inv := mload(0x1060) + let inv := mload(0x1160) let v - v := mload(0xd20) - mstore(3360, mulmod(mload(0x1020), inv, f_q)) + v := mload(0xd60) + mstore(3424, mulmod(mload(0x1120), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x1000) + mstore(4096, mulmod(mload(0x1100), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0xfc0) + mstore(4032, mulmod(mload(0x10e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0xf80) + mstore(3968, mulmod(mload(0x10c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xf40) - mstore(3904, mulmod(mload(0x1000), inv, f_q)) + mstore(3904, mulmod(mload(0x10a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xf00) - mstore(3840, mulmod(mload(0xfe0), inv, f_q)) + mstore(3840, mulmod(mload(0x1080), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xec0) - mstore(3776, mulmod(mload(0xfc0), inv, f_q)) + mstore(3776, mulmod(mload(0x1060), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xe80) - mstore(3712, mulmod(mload(0xfa0), inv, f_q)) + mstore(3712, mulmod(mload(0x1040), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xe40) - mstore(3648, mulmod(mload(0xf80), inv, f_q)) + mstore(3648, mulmod(mload(0x1020), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xe00) - mstore(3584, mulmod(mload(0xf60), inv, f_q)) + mstore(3584, mulmod(mload(0xdc0), inv, f_q)) inv := mulmod(v, inv, f_q) - - v := mload(0xdc0) - mstore(3520, mulmod(mload(0xd80), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0xd80, inv) + mstore(0xdc0, inv) } -mstore(0x1140, mulmod(mload(0xd60), mload(0xd80), f_q)) -mstore(0x1160, mulmod(mload(0xda0), mload(0xdc0), f_q)) -mstore(0x1180, mulmod(mload(0xde0), mload(0xe00), f_q)) -mstore(0x11a0, mulmod(mload(0xe20), mload(0xe40), f_q)) -mstore(0x11c0, mulmod(mload(0xe60), mload(0xe80), f_q)) -mstore(0x11e0, mulmod(mload(0xea0), mload(0xec0), f_q)) -mstore(0x1200, mulmod(mload(0xee0), mload(0xf00), f_q)) -mstore(0x1220, mulmod(mload(0xf20), mload(0xf40), f_q)) +mstore(0x1240, mulmod(mload(0xda0), mload(0xdc0), f_q)) +mstore(0x1260, mulmod(mload(0xde0), mload(0xe00), f_q)) +mstore(0x1280, mulmod(mload(0xe20), mload(0xe40), f_q)) +mstore(0x12a0, mulmod(mload(0xe60), mload(0xe80), f_q)) +mstore(0x12c0, mulmod(mload(0xea0), mload(0xec0), f_q)) +mstore(0x12e0, mulmod(mload(0xee0), mload(0xf00), f_q)) +mstore(0x1300, mulmod(mload(0xf20), mload(0xf40), f_q)) +mstore(0x1320, mulmod(mload(0xf60), mload(0xf80), f_q)) +mstore(0x1340, mulmod(mload(0xfa0), mload(0xfc0), f_q)) +mstore(0x1360, mulmod(mload(0xfe0), mload(0x1000), f_q)) { - let result := mulmod(mload(0x1200), mload(0x20), f_q) -result := addmod(mulmod(mload(0x1220), mload(0x40), f_q), result, f_q) -mstore(4672, result) - } -mstore(0x1260, addmod(mload(0x5c0), mload(0x6e0), f_q)) -mstore(0x1280, mulmod(mload(0x1260), mload(0x1260), f_q)) -mstore(0x12a0, mulmod(mload(0x1280), mload(0x1280), f_q)) -mstore(0x12c0, mulmod(mload(0x1260), mload(0x12a0), f_q)) -mstore(0x12e0, mulmod(mload(0x12c0), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) -mstore(0x1300, addmod(mload(0x5e0), mload(0x700), f_q)) -mstore(0x1320, mulmod(mload(0x1300), mload(0x1300), f_q)) -mstore(0x1340, mulmod(mload(0x1320), mload(0x1320), f_q)) -mstore(0x1360, mulmod(mload(0x1300), mload(0x1340), f_q)) -mstore(0x1380, mulmod(mload(0x1360), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) -mstore(0x13a0, addmod(mload(0x12e0), mload(0x1380), f_q)) -mstore(0x13c0, addmod(mload(0x13a0), sub(f_q, mload(0x600)), f_q)) -mstore(0x13e0, mulmod(mload(0x13c0), mload(0x780), f_q)) -mstore(0x1400, mulmod(mload(0x3e0), mload(0x13e0), f_q)) -mstore(0x1420, mulmod(mload(0x12c0), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) -mstore(0x1440, mulmod(mload(0x1360), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) -mstore(0x1460, addmod(mload(0x1420), mload(0x1440), f_q)) -mstore(0x1480, addmod(mload(0x1460), sub(f_q, mload(0x620)), f_q)) -mstore(0x14a0, mulmod(mload(0x1480), mload(0x780), f_q)) -mstore(0x14c0, addmod(mload(0x1400), mload(0x14a0), f_q)) -mstore(0x14e0, mulmod(mload(0x3e0), mload(0x14c0), f_q)) -mstore(0x1500, addmod(mload(0x12c0), sub(f_q, mload(0x640)), f_q)) -mstore(0x1520, mulmod(mload(0x1500), mload(0x7a0), f_q)) -mstore(0x1540, addmod(mload(0x14e0), mload(0x1520), f_q)) -mstore(0x1560, mulmod(mload(0x3e0), mload(0x1540), f_q)) -mstore(0x1580, mulmod(mload(0x640), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) -mstore(0x15a0, mulmod(mload(0x1300), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) -mstore(0x15c0, addmod(mload(0x1580), mload(0x15a0), f_q)) -mstore(0x15e0, addmod(mload(0x15c0), mload(0x6a0), f_q)) -mstore(0x1600, mulmod(mload(0x15e0), mload(0x15e0), f_q)) -mstore(0x1620, mulmod(mload(0x1600), mload(0x1600), f_q)) -mstore(0x1640, mulmod(mload(0x15e0), mload(0x1620), f_q)) -mstore(0x1660, mulmod(mload(0x600), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q)) -mstore(0x1680, mulmod(mload(0x620), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q)) -mstore(0x16a0, addmod(mload(0x1660), mload(0x1680), f_q)) -mstore(0x16c0, addmod(mload(0x1640), sub(f_q, mload(0x16a0)), f_q)) -mstore(0x16e0, mulmod(mload(0x16c0), mload(0x7a0), f_q)) -mstore(0x1700, addmod(mload(0x1560), mload(0x16e0), f_q)) -mstore(0x1720, mulmod(mload(0x3e0), mload(0x1700), f_q)) -mstore(0x1740, mulmod(mload(0x640), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) -mstore(0x1760, mulmod(mload(0x1300), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) -mstore(0x1780, addmod(mload(0x1740), mload(0x1760), f_q)) -mstore(0x17a0, addmod(mload(0x1780), mload(0x6c0), f_q)) -mstore(0x17c0, mulmod(mload(0x600), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q)) -mstore(0x17e0, mulmod(mload(0x620), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q)) -mstore(0x1800, addmod(mload(0x17c0), mload(0x17e0), f_q)) -mstore(0x1820, addmod(mload(0x17a0), sub(f_q, mload(0x1800)), f_q)) -mstore(0x1840, mulmod(mload(0x1820), mload(0x7a0), f_q)) -mstore(0x1860, addmod(mload(0x1720), mload(0x1840), f_q)) -mstore(0x1880, mulmod(mload(0x3e0), mload(0x1860), f_q)) -mstore(0x18a0, addmod(1, sub(f_q, mload(0x760)), f_q)) -mstore(0x18c0, mulmod(mload(0x18a0), mload(0x760), f_q)) -mstore(0x18e0, addmod(2, sub(f_q, mload(0x760)), f_q)) -mstore(0x1900, mulmod(mload(0x18e0), mload(0x18c0), f_q)) -mstore(0x1920, addmod(4, sub(f_q, mload(0x760)), f_q)) -mstore(0x1940, mulmod(mload(0x1920), mload(0x1900), f_q)) -mstore(0x1960, addmod(mload(0x680), mload(0x5c0), f_q)) -mstore(0x1980, addmod(mload(0x1960), sub(f_q, mload(0x600)), f_q)) -mstore(0x19a0, mulmod(mload(0x1980), mload(0x1940), f_q)) -mstore(0x19c0, addmod(mload(0x1880), mload(0x19a0), f_q)) -mstore(0x19e0, mulmod(mload(0x3e0), mload(0x19c0), f_q)) -mstore(0x1a00, addmod(mload(0x660), sub(f_q, mload(0x620)), f_q)) -mstore(0x1a20, mulmod(mload(0x1a00), mload(0x1940), f_q)) -mstore(0x1a40, addmod(mload(0x19e0), mload(0x1a20), f_q)) -mstore(0x1a60, mulmod(mload(0x3e0), mload(0x1a40), f_q)) -mstore(0x1a80, mulmod(mload(0x13c0), mload(0x7c0), f_q)) -mstore(0x1aa0, addmod(mload(0x1a60), mload(0x1a80), f_q)) -mstore(0x1ac0, mulmod(mload(0x3e0), mload(0x1aa0), f_q)) -mstore(0x1ae0, mulmod(mload(0x1480), mload(0x7c0), f_q)) -mstore(0x1b00, addmod(mload(0x1ac0), mload(0x1ae0), f_q)) -mstore(0x1b20, mulmod(mload(0x3e0), mload(0x1b00), f_q)) -mstore(0x1b40, mulmod(mload(0x1500), mload(0x7e0), f_q)) -mstore(0x1b60, addmod(mload(0x1b20), mload(0x1b40), f_q)) -mstore(0x1b80, mulmod(mload(0x3e0), mload(0x1b60), f_q)) -mstore(0x1ba0, mulmod(mload(0x16c0), mload(0x7e0), f_q)) -mstore(0x1bc0, addmod(mload(0x1b80), mload(0x1ba0), f_q)) -mstore(0x1be0, mulmod(mload(0x3e0), mload(0x1bc0), f_q)) -mstore(0x1c00, mulmod(mload(0x1820), mload(0x7e0), f_q)) -mstore(0x1c20, addmod(mload(0x1be0), mload(0x1c00), f_q)) -mstore(0x1c40, mulmod(mload(0x3e0), mload(0x1c20), f_q)) -mstore(0x1c60, addmod(3, sub(f_q, mload(0x760)), f_q)) -mstore(0x1c80, mulmod(mload(0x1c60), mload(0x1900), f_q)) -mstore(0x1ca0, mulmod(mload(0x1980), mload(0x1c80), f_q)) -mstore(0x1cc0, addmod(mload(0x1c40), mload(0x1ca0), f_q)) -mstore(0x1ce0, mulmod(mload(0x3e0), mload(0x1cc0), f_q)) -mstore(0x1d00, mulmod(mload(0x1a00), mload(0x1c80), f_q)) -mstore(0x1d20, addmod(mload(0x1ce0), mload(0x1d00), f_q)) -mstore(0x1d40, mulmod(mload(0x3e0), mload(0x1d20), f_q)) -mstore(0x1d60, mulmod(mload(0x18e0), mload(0x760), f_q)) -mstore(0x1d80, mulmod(mload(0x1c60), mload(0x1d60), f_q)) -mstore(0x1da0, mulmod(mload(0x1920), mload(0x1d80), f_q)) -mstore(0x1dc0, mulmod(mload(0x640), mload(0x1da0), f_q)) -mstore(0x1de0, addmod(1, sub(f_q, mload(0x640)), f_q)) -mstore(0x1e00, mulmod(mload(0x1de0), mload(0x1dc0), f_q)) -mstore(0x1e20, addmod(mload(0x1d40), mload(0x1e00), f_q)) -mstore(0x1e40, mulmod(mload(0x3e0), mload(0x1e20), f_q)) -mstore(0x1e60, mulmod(2, mload(0x640), f_q)) -mstore(0x1e80, addmod(mload(0x5e0), sub(f_q, mload(0x5c0)), f_q)) -mstore(0x1ea0, mulmod(mload(0x1e80), mload(0x1e60), f_q)) -mstore(0x1ec0, addmod(mload(0x600), sub(f_q, mload(0x5c0)), f_q)) -mstore(0x1ee0, addmod(mload(0x1ea0), sub(f_q, mload(0x1ec0)), f_q)) -mstore(0x1f00, addmod(mload(0x5e0), sub(f_q, mload(0x620)), f_q)) -mstore(0x1f20, addmod(mload(0x1ee0), sub(f_q, mload(0x1f00)), f_q)) -mstore(0x1f40, mulmod(mload(0x1f20), mload(0x1da0), f_q)) -mstore(0x1f60, addmod(mload(0x1e40), mload(0x1f40), f_q)) -mstore(0x1f80, mulmod(mload(0x3e0), mload(0x1f60), f_q)) -mstore(0x1fa0, mulmod(mload(0x1c60), mload(0x18c0), f_q)) -mstore(0x1fc0, mulmod(mload(0x1920), mload(0x1fa0), f_q)) -mstore(0x1fe0, addmod(mload(0x5c0), mload(0x5e0), f_q)) + let result := mulmod(mload(0x1300), mload(0x20), f_q) +result := addmod(mulmod(mload(0x1320), mload(0x40), f_q), result, f_q) +result := addmod(mulmod(mload(0x1340), mload(0x60), f_q), result, f_q) +result := addmod(mulmod(mload(0x1360), mload(0x80), f_q), result, f_q) +mstore(4992, result) + } +mstore(0x13a0, addmod(mload(0x600), mload(0x720), f_q)) +mstore(0x13c0, mulmod(mload(0x13a0), mload(0x13a0), f_q)) +mstore(0x13e0, mulmod(mload(0x13c0), mload(0x13c0), f_q)) +mstore(0x1400, mulmod(mload(0x13a0), mload(0x13e0), f_q)) +mstore(0x1420, mulmod(mload(0x1400), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) +mstore(0x1440, addmod(mload(0x620), mload(0x740), f_q)) +mstore(0x1460, mulmod(mload(0x1440), mload(0x1440), f_q)) +mstore(0x1480, mulmod(mload(0x1460), mload(0x1460), f_q)) +mstore(0x14a0, mulmod(mload(0x1440), mload(0x1480), f_q)) +mstore(0x14c0, mulmod(mload(0x14a0), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) +mstore(0x14e0, addmod(mload(0x1420), mload(0x14c0), f_q)) +mstore(0x1500, addmod(mload(0x14e0), sub(f_q, mload(0x640)), f_q)) +mstore(0x1520, mulmod(mload(0x1500), mload(0x7c0), f_q)) +mstore(0x1540, mulmod(mload(0x420), mload(0x1520), f_q)) +mstore(0x1560, mulmod(mload(0x1400), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) +mstore(0x1580, mulmod(mload(0x14a0), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) +mstore(0x15a0, addmod(mload(0x1560), mload(0x1580), f_q)) +mstore(0x15c0, addmod(mload(0x15a0), sub(f_q, mload(0x660)), f_q)) +mstore(0x15e0, mulmod(mload(0x15c0), mload(0x7c0), f_q)) +mstore(0x1600, addmod(mload(0x1540), mload(0x15e0), f_q)) +mstore(0x1620, mulmod(mload(0x420), mload(0x1600), f_q)) +mstore(0x1640, addmod(mload(0x1400), sub(f_q, mload(0x680)), f_q)) +mstore(0x1660, mulmod(mload(0x1640), mload(0x7e0), f_q)) +mstore(0x1680, addmod(mload(0x1620), mload(0x1660), f_q)) +mstore(0x16a0, mulmod(mload(0x420), mload(0x1680), f_q)) +mstore(0x16c0, mulmod(mload(0x680), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) +mstore(0x16e0, mulmod(mload(0x1440), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) +mstore(0x1700, addmod(mload(0x16c0), mload(0x16e0), f_q)) +mstore(0x1720, addmod(mload(0x1700), mload(0x6e0), f_q)) +mstore(0x1740, mulmod(mload(0x1720), mload(0x1720), f_q)) +mstore(0x1760, mulmod(mload(0x1740), mload(0x1740), f_q)) +mstore(0x1780, mulmod(mload(0x1720), mload(0x1760), f_q)) +mstore(0x17a0, mulmod(mload(0x640), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q)) +mstore(0x17c0, mulmod(mload(0x660), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q)) +mstore(0x17e0, addmod(mload(0x17a0), mload(0x17c0), f_q)) +mstore(0x1800, addmod(mload(0x1780), sub(f_q, mload(0x17e0)), f_q)) +mstore(0x1820, mulmod(mload(0x1800), mload(0x7e0), f_q)) +mstore(0x1840, addmod(mload(0x16a0), mload(0x1820), f_q)) +mstore(0x1860, mulmod(mload(0x420), mload(0x1840), f_q)) +mstore(0x1880, mulmod(mload(0x680), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) +mstore(0x18a0, mulmod(mload(0x1440), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) +mstore(0x18c0, addmod(mload(0x1880), mload(0x18a0), f_q)) +mstore(0x18e0, addmod(mload(0x18c0), mload(0x700), f_q)) +mstore(0x1900, mulmod(mload(0x640), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q)) +mstore(0x1920, mulmod(mload(0x660), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q)) +mstore(0x1940, addmod(mload(0x1900), mload(0x1920), f_q)) +mstore(0x1960, addmod(mload(0x18e0), sub(f_q, mload(0x1940)), f_q)) +mstore(0x1980, mulmod(mload(0x1960), mload(0x7e0), f_q)) +mstore(0x19a0, addmod(mload(0x1860), mload(0x1980), f_q)) +mstore(0x19c0, mulmod(mload(0x420), mload(0x19a0), f_q)) +mstore(0x19e0, addmod(1, sub(f_q, mload(0x7a0)), f_q)) +mstore(0x1a00, mulmod(mload(0x19e0), mload(0x7a0), f_q)) +mstore(0x1a20, addmod(2, sub(f_q, mload(0x7a0)), f_q)) +mstore(0x1a40, mulmod(mload(0x1a20), mload(0x1a00), f_q)) +mstore(0x1a60, addmod(4, sub(f_q, mload(0x7a0)), f_q)) +mstore(0x1a80, mulmod(mload(0x1a60), mload(0x1a40), f_q)) +mstore(0x1aa0, addmod(mload(0x6c0), mload(0x600), f_q)) +mstore(0x1ac0, addmod(mload(0x1aa0), sub(f_q, mload(0x640)), f_q)) +mstore(0x1ae0, mulmod(mload(0x1ac0), mload(0x1a80), f_q)) +mstore(0x1b00, addmod(mload(0x19c0), mload(0x1ae0), f_q)) +mstore(0x1b20, mulmod(mload(0x420), mload(0x1b00), f_q)) +mstore(0x1b40, addmod(mload(0x6a0), sub(f_q, mload(0x660)), f_q)) +mstore(0x1b60, mulmod(mload(0x1b40), mload(0x1a80), f_q)) +mstore(0x1b80, addmod(mload(0x1b20), mload(0x1b60), f_q)) +mstore(0x1ba0, mulmod(mload(0x420), mload(0x1b80), f_q)) +mstore(0x1bc0, mulmod(mload(0x1500), mload(0x800), f_q)) +mstore(0x1be0, addmod(mload(0x1ba0), mload(0x1bc0), f_q)) +mstore(0x1c00, mulmod(mload(0x420), mload(0x1be0), f_q)) +mstore(0x1c20, mulmod(mload(0x15c0), mload(0x800), f_q)) +mstore(0x1c40, addmod(mload(0x1c00), mload(0x1c20), f_q)) +mstore(0x1c60, mulmod(mload(0x420), mload(0x1c40), f_q)) +mstore(0x1c80, mulmod(mload(0x1640), mload(0x820), f_q)) +mstore(0x1ca0, addmod(mload(0x1c60), mload(0x1c80), f_q)) +mstore(0x1cc0, mulmod(mload(0x420), mload(0x1ca0), f_q)) +mstore(0x1ce0, mulmod(mload(0x1800), mload(0x820), f_q)) +mstore(0x1d00, addmod(mload(0x1cc0), mload(0x1ce0), f_q)) +mstore(0x1d20, mulmod(mload(0x420), mload(0x1d00), f_q)) +mstore(0x1d40, mulmod(mload(0x1960), mload(0x820), f_q)) +mstore(0x1d60, addmod(mload(0x1d20), mload(0x1d40), f_q)) +mstore(0x1d80, mulmod(mload(0x420), mload(0x1d60), f_q)) +mstore(0x1da0, addmod(3, sub(f_q, mload(0x7a0)), f_q)) +mstore(0x1dc0, mulmod(mload(0x1da0), mload(0x1a40), f_q)) +mstore(0x1de0, mulmod(mload(0x1ac0), mload(0x1dc0), f_q)) +mstore(0x1e00, addmod(mload(0x1d80), mload(0x1de0), f_q)) +mstore(0x1e20, mulmod(mload(0x420), mload(0x1e00), f_q)) +mstore(0x1e40, mulmod(mload(0x1b40), mload(0x1dc0), f_q)) +mstore(0x1e60, addmod(mload(0x1e20), mload(0x1e40), f_q)) +mstore(0x1e80, mulmod(mload(0x420), mload(0x1e60), f_q)) +mstore(0x1ea0, mulmod(mload(0x1a20), mload(0x7a0), f_q)) +mstore(0x1ec0, mulmod(mload(0x1da0), mload(0x1ea0), f_q)) +mstore(0x1ee0, mulmod(mload(0x1a60), mload(0x1ec0), f_q)) +mstore(0x1f00, mulmod(mload(0x680), mload(0x1ee0), f_q)) +mstore(0x1f20, addmod(1, sub(f_q, mload(0x680)), f_q)) +mstore(0x1f40, mulmod(mload(0x1f20), mload(0x1f00), f_q)) +mstore(0x1f60, addmod(mload(0x1e80), mload(0x1f40), f_q)) +mstore(0x1f80, mulmod(mload(0x420), mload(0x1f60), f_q)) +mstore(0x1fa0, addmod(mload(0x620), sub(f_q, mload(0x600)), f_q)) +mstore(0x1fc0, mulmod(mload(0x680), mload(0x1fa0), f_q)) +mstore(0x1fe0, addmod(mload(0x1fc0), mload(0x600), f_q)) mstore(0x2000, addmod(mload(0x1fe0), sub(f_q, mload(0x640)), f_q)) -mstore(0x2020, mulmod(mload(0x2000), mload(0x1fc0), f_q)) +mstore(0x2020, mulmod(mload(0x2000), mload(0x1ee0), f_q)) mstore(0x2040, addmod(mload(0x1f80), mload(0x2020), f_q)) -mstore(0x2060, mulmod(mload(0x3e0), mload(0x2040), f_q)) -mstore(0x2080, addmod(mload(0x2060), mload(0x2020), f_q)) -mstore(0x20a0, mulmod(mload(0x3e0), mload(0x2080), f_q)) -mstore(0x20c0, addmod(1, sub(f_q, mload(0x8e0)), f_q)) -mstore(0x20e0, mulmod(mload(0x20c0), mload(0x1200), f_q)) -mstore(0x2100, addmod(mload(0x20a0), mload(0x20e0), f_q)) -mstore(0x2120, mulmod(mload(0x3e0), mload(0x2100), f_q)) -mstore(0x2140, mulmod(mload(0x940), mload(0x940), f_q)) -mstore(0x2160, addmod(mload(0x2140), sub(f_q, mload(0x940)), f_q)) -mstore(0x2180, mulmod(mload(0x2160), mload(0x1140), f_q)) -mstore(0x21a0, addmod(mload(0x2120), mload(0x2180), f_q)) -mstore(0x21c0, mulmod(mload(0x3e0), mload(0x21a0), f_q)) -mstore(0x21e0, addmod(mload(0x940), sub(f_q, mload(0x920)), f_q)) -mstore(0x2200, mulmod(mload(0x21e0), mload(0x1200), f_q)) -mstore(0x2220, addmod(mload(0x21c0), mload(0x2200), f_q)) -mstore(0x2240, mulmod(mload(0x3e0), mload(0x2220), f_q)) -mstore(0x2260, addmod(1, sub(f_q, mload(0x1140)), f_q)) -mstore(0x2280, addmod(mload(0x1160), mload(0x1180), f_q)) -mstore(0x22a0, addmod(mload(0x2280), mload(0x11a0), f_q)) -mstore(0x22c0, addmod(mload(0x22a0), mload(0x11c0), f_q)) -mstore(0x22e0, addmod(mload(0x22c0), mload(0x11e0), f_q)) -mstore(0x2300, addmod(mload(0x2260), sub(f_q, mload(0x22e0)), f_q)) -mstore(0x2320, mulmod(mload(0x820), mload(0x220), f_q)) -mstore(0x2340, addmod(mload(0x6a0), mload(0x2320), f_q)) -mstore(0x2360, addmod(mload(0x2340), mload(0x280), f_q)) -mstore(0x2380, mulmod(mload(0x840), mload(0x220), f_q)) -mstore(0x23a0, addmod(mload(0x5c0), mload(0x2380), f_q)) -mstore(0x23c0, addmod(mload(0x23a0), mload(0x280), f_q)) -mstore(0x23e0, mulmod(mload(0x23c0), mload(0x2360), f_q)) -mstore(0x2400, mulmod(mload(0x860), mload(0x220), f_q)) -mstore(0x2420, addmod(mload(0x5e0), mload(0x2400), f_q)) -mstore(0x2440, addmod(mload(0x2420), mload(0x280), f_q)) -mstore(0x2460, mulmod(mload(0x2440), mload(0x23e0), f_q)) -mstore(0x2480, mulmod(mload(0x880), mload(0x220), f_q)) -mstore(0x24a0, addmod(mload(0x6c0), mload(0x2480), f_q)) -mstore(0x24c0, addmod(mload(0x24a0), mload(0x280), f_q)) -mstore(0x24e0, mulmod(mload(0x24c0), mload(0x2460), f_q)) -mstore(0x2500, mulmod(mload(0x24e0), mload(0x900), f_q)) -mstore(0x2520, mulmod(1, mload(0x220), f_q)) -mstore(0x2540, mulmod(mload(0x580), mload(0x2520), f_q)) -mstore(0x2560, addmod(mload(0x6a0), mload(0x2540), f_q)) -mstore(0x2580, addmod(mload(0x2560), mload(0x280), f_q)) -mstore(0x25a0, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x220), f_q)) -mstore(0x25c0, mulmod(mload(0x580), mload(0x25a0), f_q)) -mstore(0x25e0, addmod(mload(0x5c0), mload(0x25c0), f_q)) -mstore(0x2600, addmod(mload(0x25e0), mload(0x280), f_q)) -mstore(0x2620, mulmod(mload(0x2600), mload(0x2580), f_q)) -mstore(0x2640, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x220), f_q)) -mstore(0x2660, mulmod(mload(0x580), mload(0x2640), f_q)) -mstore(0x2680, addmod(mload(0x5e0), mload(0x2660), f_q)) -mstore(0x26a0, addmod(mload(0x2680), mload(0x280), f_q)) -mstore(0x26c0, mulmod(mload(0x26a0), mload(0x2620), f_q)) -mstore(0x26e0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x220), f_q)) -mstore(0x2700, mulmod(mload(0x580), mload(0x26e0), f_q)) -mstore(0x2720, addmod(mload(0x6c0), mload(0x2700), f_q)) -mstore(0x2740, addmod(mload(0x2720), mload(0x280), f_q)) -mstore(0x2760, mulmod(mload(0x2740), mload(0x26c0), f_q)) -mstore(0x2780, mulmod(mload(0x2760), mload(0x8e0), f_q)) -mstore(0x27a0, addmod(mload(0x2500), sub(f_q, mload(0x2780)), f_q)) -mstore(0x27c0, mulmod(mload(0x27a0), mload(0x2300), f_q)) -mstore(0x27e0, addmod(mload(0x2240), mload(0x27c0), f_q)) -mstore(0x2800, mulmod(mload(0x3e0), mload(0x27e0), f_q)) -mstore(0x2820, mulmod(mload(0x8a0), mload(0x220), f_q)) -mstore(0x2840, addmod(mload(0x640), mload(0x2820), f_q)) -mstore(0x2860, addmod(mload(0x2840), mload(0x280), f_q)) -mstore(0x2880, mulmod(mload(0x8c0), mload(0x220), f_q)) -mstore(0x28a0, addmod(mload(0x1240), mload(0x2880), f_q)) -mstore(0x28c0, addmod(mload(0x28a0), mload(0x280), f_q)) -mstore(0x28e0, mulmod(mload(0x28c0), mload(0x2860), f_q)) -mstore(0x2900, mulmod(mload(0x28e0), mload(0x960), f_q)) -mstore(0x2920, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x220), f_q)) -mstore(0x2940, mulmod(mload(0x580), mload(0x2920), f_q)) -mstore(0x2960, addmod(mload(0x640), mload(0x2940), f_q)) -mstore(0x2980, addmod(mload(0x2960), mload(0x280), f_q)) -mstore(0x29a0, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x220), f_q)) -mstore(0x29c0, mulmod(mload(0x580), mload(0x29a0), f_q)) -mstore(0x29e0, addmod(mload(0x1240), mload(0x29c0), f_q)) -mstore(0x2a00, addmod(mload(0x29e0), mload(0x280), f_q)) -mstore(0x2a20, mulmod(mload(0x2a00), mload(0x2980), f_q)) -mstore(0x2a40, mulmod(mload(0x2a20), mload(0x940), f_q)) -mstore(0x2a60, addmod(mload(0x2900), sub(f_q, mload(0x2a40)), f_q)) -mstore(0x2a80, mulmod(mload(0x2a60), mload(0x2300), f_q)) -mstore(0x2aa0, addmod(mload(0x2800), mload(0x2a80), f_q)) -mstore(0x2ac0, mulmod(mload(0x3e0), mload(0x2aa0), f_q)) -mstore(0x2ae0, addmod(1, sub(f_q, mload(0x980)), f_q)) -mstore(0x2b00, mulmod(mload(0x2ae0), mload(0x1200), f_q)) -mstore(0x2b20, addmod(mload(0x2ac0), mload(0x2b00), f_q)) -mstore(0x2b40, mulmod(mload(0x3e0), mload(0x2b20), f_q)) -mstore(0x2b60, mulmod(mload(0x980), mload(0x980), f_q)) -mstore(0x2b80, addmod(mload(0x2b60), sub(f_q, mload(0x980)), f_q)) -mstore(0x2ba0, mulmod(mload(0x2b80), mload(0x1140), f_q)) -mstore(0x2bc0, addmod(mload(0x2b40), mload(0x2ba0), f_q)) -mstore(0x2be0, mulmod(mload(0x3e0), mload(0x2bc0), f_q)) -mstore(0x2c00, addmod(mload(0x9c0), mload(0x220), f_q)) -mstore(0x2c20, mulmod(mload(0x2c00), mload(0x9a0), f_q)) -mstore(0x2c40, addmod(mload(0xa00), mload(0x280), f_q)) -mstore(0x2c60, mulmod(mload(0x2c40), mload(0x2c20), f_q)) -mstore(0x2c80, mulmod(256, mload(0x600), f_q)) -mstore(0x2ca0, addmod(mload(0x5c0), sub(f_q, mload(0x2c80)), f_q)) -mstore(0x2cc0, mulmod(mload(0x2ca0), mload(0x740), f_q)) -mstore(0x2ce0, addmod(mload(0x2cc0), mload(0x220), f_q)) -mstore(0x2d00, mulmod(mload(0x2ce0), mload(0x980), f_q)) -mstore(0x2d20, addmod(mload(0x720), mload(0x280), f_q)) -mstore(0x2d40, mulmod(mload(0x2d20), mload(0x2d00), f_q)) -mstore(0x2d60, addmod(mload(0x2c60), sub(f_q, mload(0x2d40)), f_q)) -mstore(0x2d80, mulmod(mload(0x2d60), mload(0x2300), f_q)) -mstore(0x2da0, addmod(mload(0x2be0), mload(0x2d80), f_q)) -mstore(0x2dc0, mulmod(mload(0x3e0), mload(0x2da0), f_q)) -mstore(0x2de0, addmod(mload(0x9c0), sub(f_q, mload(0xa00)), f_q)) -mstore(0x2e00, mulmod(mload(0x2de0), mload(0x1200), f_q)) -mstore(0x2e20, addmod(mload(0x2dc0), mload(0x2e00), f_q)) -mstore(0x2e40, mulmod(mload(0x3e0), mload(0x2e20), f_q)) -mstore(0x2e60, mulmod(mload(0x2de0), mload(0x2300), f_q)) -mstore(0x2e80, addmod(mload(0x9c0), sub(f_q, mload(0x9e0)), f_q)) -mstore(0x2ea0, mulmod(mload(0x2e80), mload(0x2e60), f_q)) -mstore(0x2ec0, addmod(mload(0x2e40), mload(0x2ea0), f_q)) -mstore(0x2ee0, mulmod(mload(0xd00), mload(0xd00), f_q)) -mstore(0x2f00, mulmod(mload(0x2ee0), mload(0xd00), f_q)) -mstore(0x2f20, mulmod(mload(0x2f00), mload(0xd00), f_q)) -mstore(0x2f40, mulmod(mload(0x2f20), mload(0xd00), f_q)) -mstore(0x2f60, mulmod(1, mload(0xd00), f_q)) -mstore(0x2f80, mulmod(1, mload(0x2ee0), f_q)) -mstore(0x2fa0, mulmod(1, mload(0x2f00), f_q)) -mstore(0x2fc0, mulmod(1, mload(0x2f20), f_q)) -mstore(0x2fe0, mulmod(mload(0x2ec0), mload(0xd20), f_q)) -mstore(0x3000, mulmod(mload(0xbc0), mload(0x580), f_q)) -mstore(0x3020, mulmod(mload(0x580), 1, f_q)) -mstore(0x3040, addmod(mload(0xb40), sub(f_q, mload(0x3020)), f_q)) -mstore(0x3060, mulmod(mload(0x580), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) -mstore(0x3080, addmod(mload(0xb40), sub(f_q, mload(0x3060)), f_q)) -mstore(0x30a0, mulmod(mload(0x580), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) -mstore(0x30c0, addmod(mload(0xb40), sub(f_q, mload(0x30a0)), f_q)) -mstore(0x30e0, mulmod(mload(0x580), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) -mstore(0x3100, addmod(mload(0xb40), sub(f_q, mload(0x30e0)), f_q)) +mstore(0x2060, mulmod(mload(0x420), mload(0x2040), f_q)) +mstore(0x2080, addmod(mload(0x600), sub(f_q, mload(0x620)), f_q)) +mstore(0x20a0, mulmod(mload(0x680), mload(0x2080), f_q)) +mstore(0x20c0, addmod(mload(0x20a0), mload(0x620), f_q)) +mstore(0x20e0, addmod(mload(0x20c0), sub(f_q, mload(0x660)), f_q)) +mstore(0x2100, mulmod(mload(0x20e0), mload(0x1ee0), f_q)) +mstore(0x2120, addmod(mload(0x2060), mload(0x2100), f_q)) +mstore(0x2140, mulmod(mload(0x420), mload(0x2120), f_q)) +mstore(0x2160, mulmod(mload(0x1da0), mload(0x1a00), f_q)) +mstore(0x2180, mulmod(mload(0x1a60), mload(0x2160), f_q)) +mstore(0x21a0, addmod(mload(0x600), mload(0x620), f_q)) +mstore(0x21c0, addmod(mload(0x21a0), sub(f_q, mload(0x680)), f_q)) +mstore(0x21e0, mulmod(mload(0x21c0), mload(0x2180), f_q)) +mstore(0x2200, addmod(mload(0x2140), mload(0x21e0), f_q)) +mstore(0x2220, mulmod(mload(0x420), mload(0x2200), f_q)) +mstore(0x2240, addmod(mload(0x2220), mload(0x21e0), f_q)) +mstore(0x2260, mulmod(mload(0x420), mload(0x2240), f_q)) +mstore(0x2280, addmod(1, sub(f_q, mload(0x920)), f_q)) +mstore(0x22a0, mulmod(mload(0x2280), mload(0x1300), f_q)) +mstore(0x22c0, addmod(mload(0x2260), mload(0x22a0), f_q)) +mstore(0x22e0, mulmod(mload(0x420), mload(0x22c0), f_q)) +mstore(0x2300, mulmod(mload(0x980), mload(0x980), f_q)) +mstore(0x2320, addmod(mload(0x2300), sub(f_q, mload(0x980)), f_q)) +mstore(0x2340, mulmod(mload(0x2320), mload(0x1240), f_q)) +mstore(0x2360, addmod(mload(0x22e0), mload(0x2340), f_q)) +mstore(0x2380, mulmod(mload(0x420), mload(0x2360), f_q)) +mstore(0x23a0, addmod(mload(0x980), sub(f_q, mload(0x960)), f_q)) +mstore(0x23c0, mulmod(mload(0x23a0), mload(0x1300), f_q)) +mstore(0x23e0, addmod(mload(0x2380), mload(0x23c0), f_q)) +mstore(0x2400, mulmod(mload(0x420), mload(0x23e0), f_q)) +mstore(0x2420, addmod(1, sub(f_q, mload(0x1240)), f_q)) +mstore(0x2440, addmod(mload(0x1260), mload(0x1280), f_q)) +mstore(0x2460, addmod(mload(0x2440), mload(0x12a0), f_q)) +mstore(0x2480, addmod(mload(0x2460), mload(0x12c0), f_q)) +mstore(0x24a0, addmod(mload(0x2480), mload(0x12e0), f_q)) +mstore(0x24c0, addmod(mload(0x2420), sub(f_q, mload(0x24a0)), f_q)) +mstore(0x24e0, mulmod(mload(0x860), mload(0x260), f_q)) +mstore(0x2500, addmod(mload(0x6e0), mload(0x24e0), f_q)) +mstore(0x2520, addmod(mload(0x2500), mload(0x2c0), f_q)) +mstore(0x2540, mulmod(mload(0x880), mload(0x260), f_q)) +mstore(0x2560, addmod(mload(0x600), mload(0x2540), f_q)) +mstore(0x2580, addmod(mload(0x2560), mload(0x2c0), f_q)) +mstore(0x25a0, mulmod(mload(0x2580), mload(0x2520), f_q)) +mstore(0x25c0, mulmod(mload(0x8a0), mload(0x260), f_q)) +mstore(0x25e0, addmod(mload(0x620), mload(0x25c0), f_q)) +mstore(0x2600, addmod(mload(0x25e0), mload(0x2c0), f_q)) +mstore(0x2620, mulmod(mload(0x2600), mload(0x25a0), f_q)) +mstore(0x2640, mulmod(mload(0x8c0), mload(0x260), f_q)) +mstore(0x2660, addmod(mload(0x700), mload(0x2640), f_q)) +mstore(0x2680, addmod(mload(0x2660), mload(0x2c0), f_q)) +mstore(0x26a0, mulmod(mload(0x2680), mload(0x2620), f_q)) +mstore(0x26c0, mulmod(mload(0x26a0), mload(0x940), f_q)) +mstore(0x26e0, mulmod(1, mload(0x260), f_q)) +mstore(0x2700, mulmod(mload(0x5c0), mload(0x26e0), f_q)) +mstore(0x2720, addmod(mload(0x6e0), mload(0x2700), f_q)) +mstore(0x2740, addmod(mload(0x2720), mload(0x2c0), f_q)) +mstore(0x2760, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x260), f_q)) +mstore(0x2780, mulmod(mload(0x5c0), mload(0x2760), f_q)) +mstore(0x27a0, addmod(mload(0x600), mload(0x2780), f_q)) +mstore(0x27c0, addmod(mload(0x27a0), mload(0x2c0), f_q)) +mstore(0x27e0, mulmod(mload(0x27c0), mload(0x2740), f_q)) +mstore(0x2800, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x260), f_q)) +mstore(0x2820, mulmod(mload(0x5c0), mload(0x2800), f_q)) +mstore(0x2840, addmod(mload(0x620), mload(0x2820), f_q)) +mstore(0x2860, addmod(mload(0x2840), mload(0x2c0), f_q)) +mstore(0x2880, mulmod(mload(0x2860), mload(0x27e0), f_q)) +mstore(0x28a0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x260), f_q)) +mstore(0x28c0, mulmod(mload(0x5c0), mload(0x28a0), f_q)) +mstore(0x28e0, addmod(mload(0x700), mload(0x28c0), f_q)) +mstore(0x2900, addmod(mload(0x28e0), mload(0x2c0), f_q)) +mstore(0x2920, mulmod(mload(0x2900), mload(0x2880), f_q)) +mstore(0x2940, mulmod(mload(0x2920), mload(0x920), f_q)) +mstore(0x2960, addmod(mload(0x26c0), sub(f_q, mload(0x2940)), f_q)) +mstore(0x2980, mulmod(mload(0x2960), mload(0x24c0), f_q)) +mstore(0x29a0, addmod(mload(0x2400), mload(0x2980), f_q)) +mstore(0x29c0, mulmod(mload(0x420), mload(0x29a0), f_q)) +mstore(0x29e0, mulmod(mload(0x8e0), mload(0x260), f_q)) +mstore(0x2a00, addmod(mload(0x680), mload(0x29e0), f_q)) +mstore(0x2a20, addmod(mload(0x2a00), mload(0x2c0), f_q)) +mstore(0x2a40, mulmod(mload(0x900), mload(0x260), f_q)) +mstore(0x2a60, addmod(mload(0x1380), mload(0x2a40), f_q)) +mstore(0x2a80, addmod(mload(0x2a60), mload(0x2c0), f_q)) +mstore(0x2aa0, mulmod(mload(0x2a80), mload(0x2a20), f_q)) +mstore(0x2ac0, mulmod(mload(0x2aa0), mload(0x9a0), f_q)) +mstore(0x2ae0, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x260), f_q)) +mstore(0x2b00, mulmod(mload(0x5c0), mload(0x2ae0), f_q)) +mstore(0x2b20, addmod(mload(0x680), mload(0x2b00), f_q)) +mstore(0x2b40, addmod(mload(0x2b20), mload(0x2c0), f_q)) +mstore(0x2b60, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x260), f_q)) +mstore(0x2b80, mulmod(mload(0x5c0), mload(0x2b60), f_q)) +mstore(0x2ba0, addmod(mload(0x1380), mload(0x2b80), f_q)) +mstore(0x2bc0, addmod(mload(0x2ba0), mload(0x2c0), f_q)) +mstore(0x2be0, mulmod(mload(0x2bc0), mload(0x2b40), f_q)) +mstore(0x2c00, mulmod(mload(0x2be0), mload(0x980), f_q)) +mstore(0x2c20, addmod(mload(0x2ac0), sub(f_q, mload(0x2c00)), f_q)) +mstore(0x2c40, mulmod(mload(0x2c20), mload(0x24c0), f_q)) +mstore(0x2c60, addmod(mload(0x29c0), mload(0x2c40), f_q)) +mstore(0x2c80, mulmod(mload(0x420), mload(0x2c60), f_q)) +mstore(0x2ca0, addmod(1, sub(f_q, mload(0x9c0)), f_q)) +mstore(0x2cc0, mulmod(mload(0x2ca0), mload(0x1300), f_q)) +mstore(0x2ce0, addmod(mload(0x2c80), mload(0x2cc0), f_q)) +mstore(0x2d00, mulmod(mload(0x420), mload(0x2ce0), f_q)) +mstore(0x2d20, mulmod(mload(0x9c0), mload(0x9c0), f_q)) +mstore(0x2d40, addmod(mload(0x2d20), sub(f_q, mload(0x9c0)), f_q)) +mstore(0x2d60, mulmod(mload(0x2d40), mload(0x1240), f_q)) +mstore(0x2d80, addmod(mload(0x2d00), mload(0x2d60), f_q)) +mstore(0x2da0, mulmod(mload(0x420), mload(0x2d80), f_q)) +mstore(0x2dc0, addmod(mload(0xa00), mload(0x260), f_q)) +mstore(0x2de0, mulmod(mload(0x2dc0), mload(0x9e0), f_q)) +mstore(0x2e00, addmod(mload(0xa40), mload(0x2c0), f_q)) +mstore(0x2e20, mulmod(mload(0x2e00), mload(0x2de0), f_q)) +mstore(0x2e40, mulmod(256, mload(0x640), f_q)) +mstore(0x2e60, addmod(mload(0x600), sub(f_q, mload(0x2e40)), f_q)) +mstore(0x2e80, mulmod(mload(0x2e60), mload(0x780), f_q)) +mstore(0x2ea0, addmod(mload(0x2e80), mload(0x260), f_q)) +mstore(0x2ec0, mulmod(mload(0x2ea0), mload(0x9c0), f_q)) +mstore(0x2ee0, addmod(mload(0x760), mload(0x2c0), f_q)) +mstore(0x2f00, mulmod(mload(0x2ee0), mload(0x2ec0), f_q)) +mstore(0x2f20, addmod(mload(0x2e20), sub(f_q, mload(0x2f00)), f_q)) +mstore(0x2f40, mulmod(mload(0x2f20), mload(0x24c0), f_q)) +mstore(0x2f60, addmod(mload(0x2da0), mload(0x2f40), f_q)) +mstore(0x2f80, mulmod(mload(0x420), mload(0x2f60), f_q)) +mstore(0x2fa0, addmod(mload(0xa00), sub(f_q, mload(0xa40)), f_q)) +mstore(0x2fc0, mulmod(mload(0x2fa0), mload(0x1300), f_q)) +mstore(0x2fe0, addmod(mload(0x2f80), mload(0x2fc0), f_q)) +mstore(0x3000, mulmod(mload(0x420), mload(0x2fe0), f_q)) +mstore(0x3020, mulmod(mload(0x2fa0), mload(0x24c0), f_q)) +mstore(0x3040, addmod(mload(0xa00), sub(f_q, mload(0xa20)), f_q)) +mstore(0x3060, mulmod(mload(0x3040), mload(0x3020), f_q)) +mstore(0x3080, addmod(mload(0x3000), mload(0x3060), f_q)) +mstore(0x30a0, mulmod(mload(0xd40), mload(0xd40), f_q)) +mstore(0x30c0, mulmod(mload(0x30a0), mload(0xd40), f_q)) +mstore(0x30e0, mulmod(mload(0x30c0), mload(0xd40), f_q)) +mstore(0x3100, mulmod(mload(0x30e0), mload(0xd40), f_q)) +mstore(0x3120, mulmod(1, mload(0xd40), f_q)) +mstore(0x3140, mulmod(1, mload(0x30a0), f_q)) +mstore(0x3160, mulmod(1, mload(0x30c0), f_q)) +mstore(0x3180, mulmod(1, mload(0x30e0), f_q)) +mstore(0x31a0, mulmod(mload(0x3080), mload(0xd60), f_q)) +mstore(0x31c0, mulmod(mload(0xc00), mload(0x5c0), f_q)) +mstore(0x31e0, mulmod(mload(0x5c0), 1, f_q)) +mstore(0x3200, addmod(mload(0xb80), sub(f_q, mload(0x31e0)), f_q)) +mstore(0x3220, mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) +mstore(0x3240, addmod(mload(0xb80), sub(f_q, mload(0x3220)), f_q)) +mstore(0x3260, mulmod(mload(0x5c0), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) +mstore(0x3280, addmod(mload(0xb80), sub(f_q, mload(0x3260)), f_q)) +mstore(0x32a0, mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) +mstore(0x32c0, addmod(mload(0xb80), sub(f_q, mload(0x32a0)), f_q)) { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q) -mstore(12576, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q) +mstore(13024, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q) -mstore(12608, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q) +mstore(13056, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q) -mstore(12640, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q) +mstore(13088, result) } -mstore(0x3180, mulmod(1, mload(0x3040), f_q)) -mstore(0x31a0, mulmod(mload(0x3180), mload(0x3080), f_q)) -mstore(0x31c0, mulmod(mload(0x31a0), mload(0x3100), f_q)) +mstore(0x3340, mulmod(1, mload(0x3200), f_q)) +mstore(0x3360, mulmod(mload(0x3340), mload(0x3240), f_q)) +mstore(0x3380, mulmod(mload(0x3360), mload(0x32c0), f_q)) { - let result := mulmod(mload(0xb40), 1, f_q) -result := addmod(mulmod(mload(0x580), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) -mstore(12768, result) + let result := mulmod(mload(0xb80), 1, f_q) +result := addmod(mulmod(mload(0x5c0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) +mstore(13216, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q) -mstore(12800, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q) +mstore(13248, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q) -mstore(12832, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q) +mstore(13280, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q) -mstore(12864, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q) +mstore(13312, result) } -mstore(0x3260, mulmod(mload(0x31a0), mload(0x30c0), f_q)) +mstore(0x3420, mulmod(mload(0x3360), mload(0x3280), f_q)) { - let result := mulmod(mload(0xb40), mulmod(mload(0x580), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0x580), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q) -mstore(12928, result) + let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q) +mstore(13376, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0x580), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0x580), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q) -mstore(12960, result) + let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q) +mstore(13408, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0x580), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0x580), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q) -mstore(12992, result) + let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q) +mstore(13440, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0x580), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0x580), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q) -mstore(13024, result) + let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q) +mstore(13472, result) } -mstore(0x3300, mulmod(mload(0x3180), mload(0x3100), f_q)) +mstore(0x34c0, mulmod(mload(0x3340), mload(0x32c0), f_q)) { - let prod := mload(0x3120) + let prod := mload(0x32e0) - prod := mulmod(mload(0x3140), prod, f_q) - mstore(0x3320, prod) + prod := mulmod(mload(0x3300), prod, f_q) + mstore(0x34e0, prod) - prod := mulmod(mload(0x3160), prod, f_q) - mstore(0x3340, prod) + prod := mulmod(mload(0x3320), prod, f_q) + mstore(0x3500, prod) - prod := mulmod(mload(0x31e0), prod, f_q) - mstore(0x3360, prod) + prod := mulmod(mload(0x33a0), prod, f_q) + mstore(0x3520, prod) - prod := mulmod(mload(0x3180), prod, f_q) - mstore(0x3380, prod) + prod := mulmod(mload(0x3340), prod, f_q) + mstore(0x3540, prod) - prod := mulmod(mload(0x3200), prod, f_q) - mstore(0x33a0, prod) + prod := mulmod(mload(0x33c0), prod, f_q) + mstore(0x3560, prod) - prod := mulmod(mload(0x3220), prod, f_q) - mstore(0x33c0, prod) + prod := mulmod(mload(0x33e0), prod, f_q) + mstore(0x3580, prod) - prod := mulmod(mload(0x3240), prod, f_q) - mstore(0x33e0, prod) + prod := mulmod(mload(0x3400), prod, f_q) + mstore(0x35a0, prod) - prod := mulmod(mload(0x3260), prod, f_q) - mstore(0x3400, prod) + prod := mulmod(mload(0x3420), prod, f_q) + mstore(0x35c0, prod) - prod := mulmod(mload(0x3280), prod, f_q) - mstore(0x3420, prod) + prod := mulmod(mload(0x3440), prod, f_q) + mstore(0x35e0, prod) - prod := mulmod(mload(0x32a0), prod, f_q) - mstore(0x3440, prod) + prod := mulmod(mload(0x3460), prod, f_q) + mstore(0x3600, prod) - prod := mulmod(mload(0x31a0), prod, f_q) - mstore(0x3460, prod) + prod := mulmod(mload(0x3360), prod, f_q) + mstore(0x3620, prod) - prod := mulmod(mload(0x32c0), prod, f_q) - mstore(0x3480, prod) + prod := mulmod(mload(0x3480), prod, f_q) + mstore(0x3640, prod) - prod := mulmod(mload(0x32e0), prod, f_q) - mstore(0x34a0, prod) + prod := mulmod(mload(0x34a0), prod, f_q) + mstore(0x3660, prod) - prod := mulmod(mload(0x3300), prod, f_q) - mstore(0x34c0, prod) + prod := mulmod(mload(0x34c0), prod, f_q) + mstore(0x3680, prod) } -mstore(0x3500, 32) -mstore(0x3520, 32) -mstore(0x3540, 32) -mstore(0x3560, mload(0x34c0)) -mstore(0x3580, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x35a0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x3500, 0xc0, 0x34e0, 0x20), 1), success) +mstore(0x36c0, 32) +mstore(0x36e0, 32) +mstore(0x3700, 32) +mstore(0x3720, mload(0x3680)) +mstore(0x3740, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x3760, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x36c0, 0xc0, 0x36a0, 0x20), 1), success) { - let inv := mload(0x34e0) + let inv := mload(0x36a0) let v - v := mload(0x3300) - mstore(13056, mulmod(mload(0x34a0), inv, f_q)) + v := mload(0x34c0) + mstore(13504, mulmod(mload(0x3660), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32e0) - mstore(13024, mulmod(mload(0x3480), inv, f_q)) + v := mload(0x34a0) + mstore(13472, mulmod(mload(0x3640), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32c0) - mstore(12992, mulmod(mload(0x3460), inv, f_q)) + v := mload(0x3480) + mstore(13440, mulmod(mload(0x3620), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x31a0) - mstore(12704, mulmod(mload(0x3440), inv, f_q)) + v := mload(0x3360) + mstore(13152, mulmod(mload(0x3600), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32a0) - mstore(12960, mulmod(mload(0x3420), inv, f_q)) + v := mload(0x3460) + mstore(13408, mulmod(mload(0x35e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3280) - mstore(12928, mulmod(mload(0x3400), inv, f_q)) + v := mload(0x3440) + mstore(13376, mulmod(mload(0x35c0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3260) - mstore(12896, mulmod(mload(0x33e0), inv, f_q)) + v := mload(0x3420) + mstore(13344, mulmod(mload(0x35a0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3240) - mstore(12864, mulmod(mload(0x33c0), inv, f_q)) + v := mload(0x3400) + mstore(13312, mulmod(mload(0x3580), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3220) - mstore(12832, mulmod(mload(0x33a0), inv, f_q)) + v := mload(0x33e0) + mstore(13280, mulmod(mload(0x3560), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3200) - mstore(12800, mulmod(mload(0x3380), inv, f_q)) + v := mload(0x33c0) + mstore(13248, mulmod(mload(0x3540), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3180) - mstore(12672, mulmod(mload(0x3360), inv, f_q)) + v := mload(0x3340) + mstore(13120, mulmod(mload(0x3520), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x31e0) - mstore(12768, mulmod(mload(0x3340), inv, f_q)) + v := mload(0x33a0) + mstore(13216, mulmod(mload(0x3500), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3160) - mstore(12640, mulmod(mload(0x3320), inv, f_q)) + v := mload(0x3320) + mstore(13088, mulmod(mload(0x34e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3140) - mstore(12608, mulmod(mload(0x3120), inv, f_q)) + v := mload(0x3300) + mstore(13056, mulmod(mload(0x32e0), inv, f_q)) inv := mulmod(v, inv, f_q) - mstore(0x3120, inv) + mstore(0x32e0, inv) } { - let result := mload(0x3120) -result := addmod(mload(0x3140), result, f_q) -result := addmod(mload(0x3160), result, f_q) -mstore(13760, result) + let result := mload(0x32e0) +result := addmod(mload(0x3300), result, f_q) +result := addmod(mload(0x3320), result, f_q) +mstore(14208, result) } -mstore(0x35e0, mulmod(mload(0x31c0), mload(0x3180), f_q)) +mstore(0x37a0, mulmod(mload(0x3380), mload(0x3340), f_q)) { - let result := mload(0x31e0) -mstore(13824, result) + let result := mload(0x33a0) +mstore(14272, result) } -mstore(0x3620, mulmod(mload(0x31c0), mload(0x3260), f_q)) +mstore(0x37e0, mulmod(mload(0x3380), mload(0x3420), f_q)) { - let result := mload(0x3200) -result := addmod(mload(0x3220), result, f_q) -result := addmod(mload(0x3240), result, f_q) -mstore(13888, result) + let result := mload(0x33c0) +result := addmod(mload(0x33e0), result, f_q) +result := addmod(mload(0x3400), result, f_q) +mstore(14336, result) } -mstore(0x3660, mulmod(mload(0x31c0), mload(0x31a0), f_q)) +mstore(0x3820, mulmod(mload(0x3380), mload(0x3360), f_q)) { - let result := mload(0x3280) -result := addmod(mload(0x32a0), result, f_q) -mstore(13952, result) + let result := mload(0x3440) +result := addmod(mload(0x3460), result, f_q) +mstore(14400, result) } -mstore(0x36a0, mulmod(mload(0x31c0), mload(0x3300), f_q)) +mstore(0x3860, mulmod(mload(0x3380), mload(0x34c0), f_q)) { - let result := mload(0x32c0) -result := addmod(mload(0x32e0), result, f_q) -mstore(14016, result) + let result := mload(0x3480) +result := addmod(mload(0x34a0), result, f_q) +mstore(14464, result) } { - let prod := mload(0x35c0) + let prod := mload(0x3780) - prod := mulmod(mload(0x3600), prod, f_q) - mstore(0x36e0, prod) + prod := mulmod(mload(0x37c0), prod, f_q) + mstore(0x38a0, prod) - prod := mulmod(mload(0x3640), prod, f_q) - mstore(0x3700, prod) + prod := mulmod(mload(0x3800), prod, f_q) + mstore(0x38c0, prod) - prod := mulmod(mload(0x3680), prod, f_q) - mstore(0x3720, prod) + prod := mulmod(mload(0x3840), prod, f_q) + mstore(0x38e0, prod) - prod := mulmod(mload(0x36c0), prod, f_q) - mstore(0x3740, prod) + prod := mulmod(mload(0x3880), prod, f_q) + mstore(0x3900, prod) } -mstore(0x3780, 32) -mstore(0x37a0, 32) -mstore(0x37c0, 32) -mstore(0x37e0, mload(0x3740)) -mstore(0x3800, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x3820, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x3780, 0xc0, 0x3760, 0x20), 1), success) +mstore(0x3940, 32) +mstore(0x3960, 32) +mstore(0x3980, 32) +mstore(0x39a0, mload(0x3900)) +mstore(0x39c0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x39e0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x3940, 0xc0, 0x3920, 0x20), 1), success) { - let inv := mload(0x3760) + let inv := mload(0x3920) let v - v := mload(0x36c0) - mstore(14016, mulmod(mload(0x3720), inv, f_q)) + v := mload(0x3880) + mstore(14464, mulmod(mload(0x38e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3680) - mstore(13952, mulmod(mload(0x3700), inv, f_q)) + v := mload(0x3840) + mstore(14400, mulmod(mload(0x38c0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3640) - mstore(13888, mulmod(mload(0x36e0), inv, f_q)) + v := mload(0x3800) + mstore(14336, mulmod(mload(0x38a0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3600) - mstore(13824, mulmod(mload(0x35c0), inv, f_q)) + v := mload(0x37c0) + mstore(14272, mulmod(mload(0x3780), inv, f_q)) inv := mulmod(v, inv, f_q) - mstore(0x35c0, inv) + mstore(0x3780, inv) } -mstore(0x3840, mulmod(mload(0x35e0), mload(0x3600), f_q)) -mstore(0x3860, mulmod(mload(0x3620), mload(0x3640), f_q)) -mstore(0x3880, mulmod(mload(0x3660), mload(0x3680), f_q)) -mstore(0x38a0, mulmod(mload(0x36a0), mload(0x36c0), f_q)) -mstore(0x38c0, mulmod(mload(0xa40), mload(0xa40), f_q)) -mstore(0x38e0, mulmod(mload(0x38c0), mload(0xa40), f_q)) -mstore(0x3900, mulmod(mload(0x38e0), mload(0xa40), f_q)) -mstore(0x3920, mulmod(mload(0x3900), mload(0xa40), f_q)) -mstore(0x3940, mulmod(mload(0x3920), mload(0xa40), f_q)) -mstore(0x3960, mulmod(mload(0x3940), mload(0xa40), f_q)) -mstore(0x3980, mulmod(mload(0x3960), mload(0xa40), f_q)) -mstore(0x39a0, mulmod(mload(0x3980), mload(0xa40), f_q)) -mstore(0x39c0, mulmod(mload(0x39a0), mload(0xa40), f_q)) -mstore(0x39e0, mulmod(mload(0x39c0), mload(0xa40), f_q)) -mstore(0x3a00, mulmod(mload(0x39e0), mload(0xa40), f_q)) -mstore(0x3a20, mulmod(mload(0x3a00), mload(0xa40), f_q)) -mstore(0x3a40, mulmod(mload(0x3a20), mload(0xa40), f_q)) -mstore(0x3a60, mulmod(mload(0x3a40), mload(0xa40), f_q)) -mstore(0x3a80, mulmod(mload(0x3a60), mload(0xa40), f_q)) -mstore(0x3aa0, mulmod(mload(0x3a80), mload(0xa40), f_q)) -mstore(0x3ac0, mulmod(mload(0x3aa0), mload(0xa40), f_q)) -mstore(0x3ae0, mulmod(mload(0x3ac0), mload(0xa40), f_q)) -mstore(0x3b00, mulmod(mload(0x3ae0), mload(0xa40), f_q)) -mstore(0x3b20, mulmod(mload(0x3b00), mload(0xa40), f_q)) -mstore(0x3b40, mulmod(mload(0xaa0), mload(0xaa0), f_q)) -mstore(0x3b60, mulmod(mload(0x3b40), mload(0xaa0), f_q)) -mstore(0x3b80, mulmod(mload(0x3b60), mload(0xaa0), f_q)) -mstore(0x3ba0, mulmod(mload(0x3b80), mload(0xaa0), f_q)) +mstore(0x3a00, mulmod(mload(0x37a0), mload(0x37c0), f_q)) +mstore(0x3a20, mulmod(mload(0x37e0), mload(0x3800), f_q)) +mstore(0x3a40, mulmod(mload(0x3820), mload(0x3840), f_q)) +mstore(0x3a60, mulmod(mload(0x3860), mload(0x3880), f_q)) +mstore(0x3a80, mulmod(mload(0xa80), mload(0xa80), f_q)) +mstore(0x3aa0, mulmod(mload(0x3a80), mload(0xa80), f_q)) +mstore(0x3ac0, mulmod(mload(0x3aa0), mload(0xa80), f_q)) +mstore(0x3ae0, mulmod(mload(0x3ac0), mload(0xa80), f_q)) +mstore(0x3b00, mulmod(mload(0x3ae0), mload(0xa80), f_q)) +mstore(0x3b20, mulmod(mload(0x3b00), mload(0xa80), f_q)) +mstore(0x3b40, mulmod(mload(0x3b20), mload(0xa80), f_q)) +mstore(0x3b60, mulmod(mload(0x3b40), mload(0xa80), f_q)) +mstore(0x3b80, mulmod(mload(0x3b60), mload(0xa80), f_q)) +mstore(0x3ba0, mulmod(mload(0x3b80), mload(0xa80), f_q)) +mstore(0x3bc0, mulmod(mload(0x3ba0), mload(0xa80), f_q)) +mstore(0x3be0, mulmod(mload(0x3bc0), mload(0xa80), f_q)) +mstore(0x3c00, mulmod(mload(0x3be0), mload(0xa80), f_q)) +mstore(0x3c20, mulmod(mload(0x3c00), mload(0xa80), f_q)) +mstore(0x3c40, mulmod(mload(0x3c20), mload(0xa80), f_q)) +mstore(0x3c60, mulmod(mload(0x3c40), mload(0xa80), f_q)) +mstore(0x3c80, mulmod(mload(0x3c60), mload(0xa80), f_q)) +mstore(0x3ca0, mulmod(mload(0x3c80), mload(0xa80), f_q)) +mstore(0x3cc0, mulmod(mload(0x3ca0), mload(0xa80), f_q)) +mstore(0x3ce0, mulmod(mload(0x3cc0), mload(0xa80), f_q)) +mstore(0x3d00, mulmod(mload(0xae0), mload(0xae0), f_q)) +mstore(0x3d20, mulmod(mload(0x3d00), mload(0xae0), f_q)) +mstore(0x3d40, mulmod(mload(0x3d20), mload(0xae0), f_q)) +mstore(0x3d60, mulmod(mload(0x3d40), mload(0xae0), f_q)) { - let result := mulmod(mload(0x5c0), mload(0x3120), f_q) -result := addmod(mulmod(mload(0x600), mload(0x3140), f_q), result, f_q) -result := addmod(mulmod(mload(0x680), mload(0x3160), f_q), result, f_q) -mstore(15296, result) + let result := mulmod(mload(0x600), mload(0x32e0), f_q) +result := addmod(mulmod(mload(0x640), mload(0x3300), f_q), result, f_q) +result := addmod(mulmod(mload(0x6c0), mload(0x3320), f_q), result, f_q) +mstore(15744, result) } -mstore(0x3be0, mulmod(mload(0x3bc0), mload(0x35c0), f_q)) -mstore(0x3c00, mulmod(sub(f_q, mload(0x3be0)), 1, f_q)) -{ - let result := mulmod(mload(0x5e0), mload(0x3120), f_q) -result := addmod(mulmod(mload(0x620), mload(0x3140), f_q), result, f_q) -result := addmod(mulmod(mload(0x660), mload(0x3160), f_q), result, f_q) -mstore(15392, result) - } -mstore(0x3c40, mulmod(mload(0x3c20), mload(0x35c0), f_q)) -mstore(0x3c60, mulmod(sub(f_q, mload(0x3c40)), mload(0xa40), f_q)) -mstore(0x3c80, mulmod(1, mload(0xa40), f_q)) -mstore(0x3ca0, addmod(mload(0x3c00), mload(0x3c60), f_q)) -mstore(0x3cc0, mulmod(mload(0x3ca0), 1, f_q)) -mstore(0x3ce0, mulmod(mload(0x3c80), 1, f_q)) -mstore(0x3d00, mulmod(1, mload(0x35e0), f_q)) +mstore(0x3da0, mulmod(mload(0x3d80), mload(0x3780), f_q)) +mstore(0x3dc0, mulmod(sub(f_q, mload(0x3da0)), 1, f_q)) { - let result := mulmod(mload(0x640), mload(0x31e0), f_q) -mstore(15648, result) - } -mstore(0x3d40, mulmod(mload(0x3d20), mload(0x3840), f_q)) -mstore(0x3d60, mulmod(sub(f_q, mload(0x3d40)), 1, f_q)) -mstore(0x3d80, mulmod(mload(0x3d00), 1, f_q)) + let result := mulmod(mload(0x620), mload(0x32e0), f_q) +result := addmod(mulmod(mload(0x660), mload(0x3300), f_q), result, f_q) +result := addmod(mulmod(mload(0x6a0), mload(0x3320), f_q), result, f_q) +mstore(15840, result) + } +mstore(0x3e00, mulmod(mload(0x3de0), mload(0x3780), f_q)) +mstore(0x3e20, mulmod(sub(f_q, mload(0x3e00)), mload(0xa80), f_q)) +mstore(0x3e40, mulmod(1, mload(0xa80), f_q)) +mstore(0x3e60, addmod(mload(0x3dc0), mload(0x3e20), f_q)) +mstore(0x3e80, mulmod(mload(0x3e60), 1, f_q)) +mstore(0x3ea0, mulmod(mload(0x3e40), 1, f_q)) +mstore(0x3ec0, mulmod(1, mload(0x37a0), f_q)) { - let result := mulmod(mload(0xa00), mload(0x31e0), f_q) -mstore(15776, result) + let result := mulmod(mload(0x680), mload(0x33a0), f_q) +mstore(16096, result) } -mstore(0x3dc0, mulmod(mload(0x3da0), mload(0x3840), f_q)) -mstore(0x3de0, mulmod(sub(f_q, mload(0x3dc0)), mload(0xa40), f_q)) -mstore(0x3e00, mulmod(mload(0x3d00), mload(0xa40), f_q)) -mstore(0x3e20, addmod(mload(0x3d60), mload(0x3de0), f_q)) +mstore(0x3f00, mulmod(mload(0x3ee0), mload(0x3a00), f_q)) +mstore(0x3f20, mulmod(sub(f_q, mload(0x3f00)), 1, f_q)) +mstore(0x3f40, mulmod(mload(0x3ec0), 1, f_q)) { - let result := mulmod(mload(0x6a0), mload(0x31e0), f_q) -mstore(15936, result) + let result := mulmod(mload(0xa40), mload(0x33a0), f_q) +mstore(16224, result) } -mstore(0x3e60, mulmod(mload(0x3e40), mload(0x3840), f_q)) -mstore(0x3e80, mulmod(sub(f_q, mload(0x3e60)), mload(0x38c0), f_q)) -mstore(0x3ea0, mulmod(mload(0x3d00), mload(0x38c0), f_q)) -mstore(0x3ec0, addmod(mload(0x3e20), mload(0x3e80), f_q)) +mstore(0x3f80, mulmod(mload(0x3f60), mload(0x3a00), f_q)) +mstore(0x3fa0, mulmod(sub(f_q, mload(0x3f80)), mload(0xa80), f_q)) +mstore(0x3fc0, mulmod(mload(0x3ec0), mload(0xa80), f_q)) +mstore(0x3fe0, addmod(mload(0x3f20), mload(0x3fa0), f_q)) { - let result := mulmod(mload(0x6c0), mload(0x31e0), f_q) -mstore(16096, result) + let result := mulmod(mload(0x6e0), mload(0x33a0), f_q) +mstore(16384, result) } -mstore(0x3f00, mulmod(mload(0x3ee0), mload(0x3840), f_q)) -mstore(0x3f20, mulmod(sub(f_q, mload(0x3f00)), mload(0x38e0), f_q)) -mstore(0x3f40, mulmod(mload(0x3d00), mload(0x38e0), f_q)) -mstore(0x3f60, addmod(mload(0x3ec0), mload(0x3f20), f_q)) +mstore(0x4020, mulmod(mload(0x4000), mload(0x3a00), f_q)) +mstore(0x4040, mulmod(sub(f_q, mload(0x4020)), mload(0x3a80), f_q)) +mstore(0x4060, mulmod(mload(0x3ec0), mload(0x3a80), f_q)) +mstore(0x4080, addmod(mload(0x3fe0), mload(0x4040), f_q)) { - let result := mulmod(mload(0x6e0), mload(0x31e0), f_q) -mstore(16256, result) + let result := mulmod(mload(0x700), mload(0x33a0), f_q) +mstore(16544, result) } -mstore(0x3fa0, mulmod(mload(0x3f80), mload(0x3840), f_q)) -mstore(0x3fc0, mulmod(sub(f_q, mload(0x3fa0)), mload(0x3900), f_q)) -mstore(0x3fe0, mulmod(mload(0x3d00), mload(0x3900), f_q)) -mstore(0x4000, addmod(mload(0x3f60), mload(0x3fc0), f_q)) +mstore(0x40c0, mulmod(mload(0x40a0), mload(0x3a00), f_q)) +mstore(0x40e0, mulmod(sub(f_q, mload(0x40c0)), mload(0x3aa0), f_q)) +mstore(0x4100, mulmod(mload(0x3ec0), mload(0x3aa0), f_q)) +mstore(0x4120, addmod(mload(0x4080), mload(0x40e0), f_q)) { - let result := mulmod(mload(0x700), mload(0x31e0), f_q) -mstore(16416, result) + let result := mulmod(mload(0x720), mload(0x33a0), f_q) +mstore(16704, result) } -mstore(0x4040, mulmod(mload(0x4020), mload(0x3840), f_q)) -mstore(0x4060, mulmod(sub(f_q, mload(0x4040)), mload(0x3920), f_q)) -mstore(0x4080, mulmod(mload(0x3d00), mload(0x3920), f_q)) -mstore(0x40a0, addmod(mload(0x4000), mload(0x4060), f_q)) +mstore(0x4160, mulmod(mload(0x4140), mload(0x3a00), f_q)) +mstore(0x4180, mulmod(sub(f_q, mload(0x4160)), mload(0x3ac0), f_q)) +mstore(0x41a0, mulmod(mload(0x3ec0), mload(0x3ac0), f_q)) +mstore(0x41c0, addmod(mload(0x4120), mload(0x4180), f_q)) { - let result := mulmod(mload(0x720), mload(0x31e0), f_q) -mstore(16576, result) + let result := mulmod(mload(0x740), mload(0x33a0), f_q) +mstore(16864, result) } -mstore(0x40e0, mulmod(mload(0x40c0), mload(0x3840), f_q)) -mstore(0x4100, mulmod(sub(f_q, mload(0x40e0)), mload(0x3940), f_q)) -mstore(0x4120, mulmod(mload(0x3d00), mload(0x3940), f_q)) -mstore(0x4140, addmod(mload(0x40a0), mload(0x4100), f_q)) +mstore(0x4200, mulmod(mload(0x41e0), mload(0x3a00), f_q)) +mstore(0x4220, mulmod(sub(f_q, mload(0x4200)), mload(0x3ae0), f_q)) +mstore(0x4240, mulmod(mload(0x3ec0), mload(0x3ae0), f_q)) +mstore(0x4260, addmod(mload(0x41c0), mload(0x4220), f_q)) { - let result := mulmod(mload(0x740), mload(0x31e0), f_q) -mstore(16736, result) + let result := mulmod(mload(0x760), mload(0x33a0), f_q) +mstore(17024, result) } -mstore(0x4180, mulmod(mload(0x4160), mload(0x3840), f_q)) -mstore(0x41a0, mulmod(sub(f_q, mload(0x4180)), mload(0x3960), f_q)) -mstore(0x41c0, mulmod(mload(0x3d00), mload(0x3960), f_q)) -mstore(0x41e0, addmod(mload(0x4140), mload(0x41a0), f_q)) +mstore(0x42a0, mulmod(mload(0x4280), mload(0x3a00), f_q)) +mstore(0x42c0, mulmod(sub(f_q, mload(0x42a0)), mload(0x3b00), f_q)) +mstore(0x42e0, mulmod(mload(0x3ec0), mload(0x3b00), f_q)) +mstore(0x4300, addmod(mload(0x4260), mload(0x42c0), f_q)) { - let result := mulmod(mload(0x760), mload(0x31e0), f_q) -mstore(16896, result) + let result := mulmod(mload(0x780), mload(0x33a0), f_q) +mstore(17184, result) } -mstore(0x4220, mulmod(mload(0x4200), mload(0x3840), f_q)) -mstore(0x4240, mulmod(sub(f_q, mload(0x4220)), mload(0x3980), f_q)) -mstore(0x4260, mulmod(mload(0x3d00), mload(0x3980), f_q)) -mstore(0x4280, addmod(mload(0x41e0), mload(0x4240), f_q)) +mstore(0x4340, mulmod(mload(0x4320), mload(0x3a00), f_q)) +mstore(0x4360, mulmod(sub(f_q, mload(0x4340)), mload(0x3b20), f_q)) +mstore(0x4380, mulmod(mload(0x3ec0), mload(0x3b20), f_q)) +mstore(0x43a0, addmod(mload(0x4300), mload(0x4360), f_q)) { - let result := mulmod(mload(0x780), mload(0x31e0), f_q) -mstore(17056, result) + let result := mulmod(mload(0x7a0), mload(0x33a0), f_q) +mstore(17344, result) } -mstore(0x42c0, mulmod(mload(0x42a0), mload(0x3840), f_q)) -mstore(0x42e0, mulmod(sub(f_q, mload(0x42c0)), mload(0x39a0), f_q)) -mstore(0x4300, mulmod(mload(0x3d00), mload(0x39a0), f_q)) -mstore(0x4320, addmod(mload(0x4280), mload(0x42e0), f_q)) +mstore(0x43e0, mulmod(mload(0x43c0), mload(0x3a00), f_q)) +mstore(0x4400, mulmod(sub(f_q, mload(0x43e0)), mload(0x3b40), f_q)) +mstore(0x4420, mulmod(mload(0x3ec0), mload(0x3b40), f_q)) +mstore(0x4440, addmod(mload(0x43a0), mload(0x4400), f_q)) { - let result := mulmod(mload(0x7a0), mload(0x31e0), f_q) -mstore(17216, result) + let result := mulmod(mload(0x7c0), mload(0x33a0), f_q) +mstore(17504, result) } -mstore(0x4360, mulmod(mload(0x4340), mload(0x3840), f_q)) -mstore(0x4380, mulmod(sub(f_q, mload(0x4360)), mload(0x39c0), f_q)) -mstore(0x43a0, mulmod(mload(0x3d00), mload(0x39c0), f_q)) -mstore(0x43c0, addmod(mload(0x4320), mload(0x4380), f_q)) +mstore(0x4480, mulmod(mload(0x4460), mload(0x3a00), f_q)) +mstore(0x44a0, mulmod(sub(f_q, mload(0x4480)), mload(0x3b60), f_q)) +mstore(0x44c0, mulmod(mload(0x3ec0), mload(0x3b60), f_q)) +mstore(0x44e0, addmod(mload(0x4440), mload(0x44a0), f_q)) { - let result := mulmod(mload(0x7c0), mload(0x31e0), f_q) -mstore(17376, result) + let result := mulmod(mload(0x7e0), mload(0x33a0), f_q) +mstore(17664, result) } -mstore(0x4400, mulmod(mload(0x43e0), mload(0x3840), f_q)) -mstore(0x4420, mulmod(sub(f_q, mload(0x4400)), mload(0x39e0), f_q)) -mstore(0x4440, mulmod(mload(0x3d00), mload(0x39e0), f_q)) -mstore(0x4460, addmod(mload(0x43c0), mload(0x4420), f_q)) +mstore(0x4520, mulmod(mload(0x4500), mload(0x3a00), f_q)) +mstore(0x4540, mulmod(sub(f_q, mload(0x4520)), mload(0x3b80), f_q)) +mstore(0x4560, mulmod(mload(0x3ec0), mload(0x3b80), f_q)) +mstore(0x4580, addmod(mload(0x44e0), mload(0x4540), f_q)) { - let result := mulmod(mload(0x7e0), mload(0x31e0), f_q) -mstore(17536, result) + let result := mulmod(mload(0x800), mload(0x33a0), f_q) +mstore(17824, result) } -mstore(0x44a0, mulmod(mload(0x4480), mload(0x3840), f_q)) -mstore(0x44c0, mulmod(sub(f_q, mload(0x44a0)), mload(0x3a00), f_q)) -mstore(0x44e0, mulmod(mload(0x3d00), mload(0x3a00), f_q)) -mstore(0x4500, addmod(mload(0x4460), mload(0x44c0), f_q)) +mstore(0x45c0, mulmod(mload(0x45a0), mload(0x3a00), f_q)) +mstore(0x45e0, mulmod(sub(f_q, mload(0x45c0)), mload(0x3ba0), f_q)) +mstore(0x4600, mulmod(mload(0x3ec0), mload(0x3ba0), f_q)) +mstore(0x4620, addmod(mload(0x4580), mload(0x45e0), f_q)) { - let result := mulmod(mload(0x820), mload(0x31e0), f_q) -mstore(17696, result) + let result := mulmod(mload(0x820), mload(0x33a0), f_q) +mstore(17984, result) } -mstore(0x4540, mulmod(mload(0x4520), mload(0x3840), f_q)) -mstore(0x4560, mulmod(sub(f_q, mload(0x4540)), mload(0x3a20), f_q)) -mstore(0x4580, mulmod(mload(0x3d00), mload(0x3a20), f_q)) -mstore(0x45a0, addmod(mload(0x4500), mload(0x4560), f_q)) +mstore(0x4660, mulmod(mload(0x4640), mload(0x3a00), f_q)) +mstore(0x4680, mulmod(sub(f_q, mload(0x4660)), mload(0x3bc0), f_q)) +mstore(0x46a0, mulmod(mload(0x3ec0), mload(0x3bc0), f_q)) +mstore(0x46c0, addmod(mload(0x4620), mload(0x4680), f_q)) { - let result := mulmod(mload(0x840), mload(0x31e0), f_q) -mstore(17856, result) + let result := mulmod(mload(0x860), mload(0x33a0), f_q) +mstore(18144, result) } -mstore(0x45e0, mulmod(mload(0x45c0), mload(0x3840), f_q)) -mstore(0x4600, mulmod(sub(f_q, mload(0x45e0)), mload(0x3a40), f_q)) -mstore(0x4620, mulmod(mload(0x3d00), mload(0x3a40), f_q)) -mstore(0x4640, addmod(mload(0x45a0), mload(0x4600), f_q)) +mstore(0x4700, mulmod(mload(0x46e0), mload(0x3a00), f_q)) +mstore(0x4720, mulmod(sub(f_q, mload(0x4700)), mload(0x3be0), f_q)) +mstore(0x4740, mulmod(mload(0x3ec0), mload(0x3be0), f_q)) +mstore(0x4760, addmod(mload(0x46c0), mload(0x4720), f_q)) { - let result := mulmod(mload(0x860), mload(0x31e0), f_q) -mstore(18016, result) + let result := mulmod(mload(0x880), mload(0x33a0), f_q) +mstore(18304, result) } -mstore(0x4680, mulmod(mload(0x4660), mload(0x3840), f_q)) -mstore(0x46a0, mulmod(sub(f_q, mload(0x4680)), mload(0x3a60), f_q)) -mstore(0x46c0, mulmod(mload(0x3d00), mload(0x3a60), f_q)) -mstore(0x46e0, addmod(mload(0x4640), mload(0x46a0), f_q)) +mstore(0x47a0, mulmod(mload(0x4780), mload(0x3a00), f_q)) +mstore(0x47c0, mulmod(sub(f_q, mload(0x47a0)), mload(0x3c00), f_q)) +mstore(0x47e0, mulmod(mload(0x3ec0), mload(0x3c00), f_q)) +mstore(0x4800, addmod(mload(0x4760), mload(0x47c0), f_q)) { - let result := mulmod(mload(0x880), mload(0x31e0), f_q) -mstore(18176, result) + let result := mulmod(mload(0x8a0), mload(0x33a0), f_q) +mstore(18464, result) } -mstore(0x4720, mulmod(mload(0x4700), mload(0x3840), f_q)) -mstore(0x4740, mulmod(sub(f_q, mload(0x4720)), mload(0x3a80), f_q)) -mstore(0x4760, mulmod(mload(0x3d00), mload(0x3a80), f_q)) -mstore(0x4780, addmod(mload(0x46e0), mload(0x4740), f_q)) +mstore(0x4840, mulmod(mload(0x4820), mload(0x3a00), f_q)) +mstore(0x4860, mulmod(sub(f_q, mload(0x4840)), mload(0x3c20), f_q)) +mstore(0x4880, mulmod(mload(0x3ec0), mload(0x3c20), f_q)) +mstore(0x48a0, addmod(mload(0x4800), mload(0x4860), f_q)) { - let result := mulmod(mload(0x8a0), mload(0x31e0), f_q) -mstore(18336, result) + let result := mulmod(mload(0x8c0), mload(0x33a0), f_q) +mstore(18624, result) } -mstore(0x47c0, mulmod(mload(0x47a0), mload(0x3840), f_q)) -mstore(0x47e0, mulmod(sub(f_q, mload(0x47c0)), mload(0x3aa0), f_q)) -mstore(0x4800, mulmod(mload(0x3d00), mload(0x3aa0), f_q)) -mstore(0x4820, addmod(mload(0x4780), mload(0x47e0), f_q)) +mstore(0x48e0, mulmod(mload(0x48c0), mload(0x3a00), f_q)) +mstore(0x4900, mulmod(sub(f_q, mload(0x48e0)), mload(0x3c40), f_q)) +mstore(0x4920, mulmod(mload(0x3ec0), mload(0x3c40), f_q)) +mstore(0x4940, addmod(mload(0x48a0), mload(0x4900), f_q)) { - let result := mulmod(mload(0x8c0), mload(0x31e0), f_q) -mstore(18496, result) - } -mstore(0x4860, mulmod(mload(0x4840), mload(0x3840), f_q)) -mstore(0x4880, mulmod(sub(f_q, mload(0x4860)), mload(0x3ac0), f_q)) -mstore(0x48a0, mulmod(mload(0x3d00), mload(0x3ac0), f_q)) -mstore(0x48c0, addmod(mload(0x4820), mload(0x4880), f_q)) -mstore(0x48e0, mulmod(mload(0x2f60), mload(0x35e0), f_q)) -mstore(0x4900, mulmod(mload(0x2f80), mload(0x35e0), f_q)) -mstore(0x4920, mulmod(mload(0x2fa0), mload(0x35e0), f_q)) -mstore(0x4940, mulmod(mload(0x2fc0), mload(0x35e0), f_q)) -{ - let result := mulmod(mload(0x2fe0), mload(0x31e0), f_q) + let result := mulmod(mload(0x8e0), mload(0x33a0), f_q) mstore(18784, result) } -mstore(0x4980, mulmod(mload(0x4960), mload(0x3840), f_q)) -mstore(0x49a0, mulmod(sub(f_q, mload(0x4980)), mload(0x3ae0), f_q)) -mstore(0x49c0, mulmod(mload(0x3d00), mload(0x3ae0), f_q)) -mstore(0x49e0, mulmod(mload(0x48e0), mload(0x3ae0), f_q)) -mstore(0x4a00, mulmod(mload(0x4900), mload(0x3ae0), f_q)) -mstore(0x4a20, mulmod(mload(0x4920), mload(0x3ae0), f_q)) -mstore(0x4a40, mulmod(mload(0x4940), mload(0x3ae0), f_q)) -mstore(0x4a60, addmod(mload(0x48c0), mload(0x49a0), f_q)) +mstore(0x4980, mulmod(mload(0x4960), mload(0x3a00), f_q)) +mstore(0x49a0, mulmod(sub(f_q, mload(0x4980)), mload(0x3c60), f_q)) +mstore(0x49c0, mulmod(mload(0x3ec0), mload(0x3c60), f_q)) +mstore(0x49e0, addmod(mload(0x4940), mload(0x49a0), f_q)) { - let result := mulmod(mload(0x800), mload(0x31e0), f_q) -mstore(19072, result) - } -mstore(0x4aa0, mulmod(mload(0x4a80), mload(0x3840), f_q)) -mstore(0x4ac0, mulmod(sub(f_q, mload(0x4aa0)), mload(0x3b00), f_q)) -mstore(0x4ae0, mulmod(mload(0x3d00), mload(0x3b00), f_q)) -mstore(0x4b00, addmod(mload(0x4a60), mload(0x4ac0), f_q)) -mstore(0x4b20, mulmod(mload(0x4b00), mload(0xaa0), f_q)) -mstore(0x4b40, mulmod(mload(0x3d80), mload(0xaa0), f_q)) -mstore(0x4b60, mulmod(mload(0x3e00), mload(0xaa0), f_q)) -mstore(0x4b80, mulmod(mload(0x3ea0), mload(0xaa0), f_q)) -mstore(0x4ba0, mulmod(mload(0x3f40), mload(0xaa0), f_q)) -mstore(0x4bc0, mulmod(mload(0x3fe0), mload(0xaa0), f_q)) -mstore(0x4be0, mulmod(mload(0x4080), mload(0xaa0), f_q)) -mstore(0x4c00, mulmod(mload(0x4120), mload(0xaa0), f_q)) -mstore(0x4c20, mulmod(mload(0x41c0), mload(0xaa0), f_q)) -mstore(0x4c40, mulmod(mload(0x4260), mload(0xaa0), f_q)) -mstore(0x4c60, mulmod(mload(0x4300), mload(0xaa0), f_q)) -mstore(0x4c80, mulmod(mload(0x43a0), mload(0xaa0), f_q)) -mstore(0x4ca0, mulmod(mload(0x4440), mload(0xaa0), f_q)) -mstore(0x4cc0, mulmod(mload(0x44e0), mload(0xaa0), f_q)) -mstore(0x4ce0, mulmod(mload(0x4580), mload(0xaa0), f_q)) -mstore(0x4d00, mulmod(mload(0x4620), mload(0xaa0), f_q)) -mstore(0x4d20, mulmod(mload(0x46c0), mload(0xaa0), f_q)) -mstore(0x4d40, mulmod(mload(0x4760), mload(0xaa0), f_q)) -mstore(0x4d60, mulmod(mload(0x4800), mload(0xaa0), f_q)) -mstore(0x4d80, mulmod(mload(0x48a0), mload(0xaa0), f_q)) -mstore(0x4da0, mulmod(mload(0x49c0), mload(0xaa0), f_q)) -mstore(0x4dc0, mulmod(mload(0x49e0), mload(0xaa0), f_q)) -mstore(0x4de0, mulmod(mload(0x4a00), mload(0xaa0), f_q)) -mstore(0x4e00, mulmod(mload(0x4a20), mload(0xaa0), f_q)) -mstore(0x4e20, mulmod(mload(0x4a40), mload(0xaa0), f_q)) -mstore(0x4e40, mulmod(mload(0x4ae0), mload(0xaa0), f_q)) -mstore(0x4e60, addmod(mload(0x3cc0), mload(0x4b20), f_q)) -mstore(0x4e80, mulmod(1, mload(0x3620), f_q)) + let result := mulmod(mload(0x900), mload(0x33a0), f_q) +mstore(18944, result) + } +mstore(0x4a20, mulmod(mload(0x4a00), mload(0x3a00), f_q)) +mstore(0x4a40, mulmod(sub(f_q, mload(0x4a20)), mload(0x3c80), f_q)) +mstore(0x4a60, mulmod(mload(0x3ec0), mload(0x3c80), f_q)) +mstore(0x4a80, addmod(mload(0x49e0), mload(0x4a40), f_q)) +mstore(0x4aa0, mulmod(mload(0x3120), mload(0x37a0), f_q)) +mstore(0x4ac0, mulmod(mload(0x3140), mload(0x37a0), f_q)) +mstore(0x4ae0, mulmod(mload(0x3160), mload(0x37a0), f_q)) +mstore(0x4b00, mulmod(mload(0x3180), mload(0x37a0), f_q)) { - let result := mulmod(mload(0x8e0), mload(0x3200), f_q) -result := addmod(mulmod(mload(0x900), mload(0x3220), f_q), result, f_q) -result := addmod(mulmod(mload(0x920), mload(0x3240), f_q), result, f_q) -mstore(20128, result) - } -mstore(0x4ec0, mulmod(mload(0x4ea0), mload(0x3860), f_q)) -mstore(0x4ee0, mulmod(sub(f_q, mload(0x4ec0)), 1, f_q)) -mstore(0x4f00, mulmod(mload(0x4e80), 1, f_q)) -mstore(0x4f20, mulmod(mload(0x4ee0), mload(0x3b40), f_q)) -mstore(0x4f40, mulmod(mload(0x4f00), mload(0x3b40), f_q)) -mstore(0x4f60, addmod(mload(0x4e60), mload(0x4f20), f_q)) -mstore(0x4f80, mulmod(1, mload(0x3660), f_q)) + let result := mulmod(mload(0x31a0), mload(0x33a0), f_q) +mstore(19232, result) + } +mstore(0x4b40, mulmod(mload(0x4b20), mload(0x3a00), f_q)) +mstore(0x4b60, mulmod(sub(f_q, mload(0x4b40)), mload(0x3ca0), f_q)) +mstore(0x4b80, mulmod(mload(0x3ec0), mload(0x3ca0), f_q)) +mstore(0x4ba0, mulmod(mload(0x4aa0), mload(0x3ca0), f_q)) +mstore(0x4bc0, mulmod(mload(0x4ac0), mload(0x3ca0), f_q)) +mstore(0x4be0, mulmod(mload(0x4ae0), mload(0x3ca0), f_q)) +mstore(0x4c00, mulmod(mload(0x4b00), mload(0x3ca0), f_q)) +mstore(0x4c20, addmod(mload(0x4a80), mload(0x4b60), f_q)) { - let result := mulmod(mload(0x940), mload(0x3280), f_q) -result := addmod(mulmod(mload(0x960), mload(0x32a0), f_q), result, f_q) -mstore(20384, result) - } -mstore(0x4fc0, mulmod(mload(0x4fa0), mload(0x3880), f_q)) -mstore(0x4fe0, mulmod(sub(f_q, mload(0x4fc0)), 1, f_q)) -mstore(0x5000, mulmod(mload(0x4f80), 1, f_q)) + let result := mulmod(mload(0x840), mload(0x33a0), f_q) +mstore(19520, result) + } +mstore(0x4c60, mulmod(mload(0x4c40), mload(0x3a00), f_q)) +mstore(0x4c80, mulmod(sub(f_q, mload(0x4c60)), mload(0x3cc0), f_q)) +mstore(0x4ca0, mulmod(mload(0x3ec0), mload(0x3cc0), f_q)) +mstore(0x4cc0, addmod(mload(0x4c20), mload(0x4c80), f_q)) +mstore(0x4ce0, mulmod(mload(0x4cc0), mload(0xae0), f_q)) +mstore(0x4d00, mulmod(mload(0x3f40), mload(0xae0), f_q)) +mstore(0x4d20, mulmod(mload(0x3fc0), mload(0xae0), f_q)) +mstore(0x4d40, mulmod(mload(0x4060), mload(0xae0), f_q)) +mstore(0x4d60, mulmod(mload(0x4100), mload(0xae0), f_q)) +mstore(0x4d80, mulmod(mload(0x41a0), mload(0xae0), f_q)) +mstore(0x4da0, mulmod(mload(0x4240), mload(0xae0), f_q)) +mstore(0x4dc0, mulmod(mload(0x42e0), mload(0xae0), f_q)) +mstore(0x4de0, mulmod(mload(0x4380), mload(0xae0), f_q)) +mstore(0x4e00, mulmod(mload(0x4420), mload(0xae0), f_q)) +mstore(0x4e20, mulmod(mload(0x44c0), mload(0xae0), f_q)) +mstore(0x4e40, mulmod(mload(0x4560), mload(0xae0), f_q)) +mstore(0x4e60, mulmod(mload(0x4600), mload(0xae0), f_q)) +mstore(0x4e80, mulmod(mload(0x46a0), mload(0xae0), f_q)) +mstore(0x4ea0, mulmod(mload(0x4740), mload(0xae0), f_q)) +mstore(0x4ec0, mulmod(mload(0x47e0), mload(0xae0), f_q)) +mstore(0x4ee0, mulmod(mload(0x4880), mload(0xae0), f_q)) +mstore(0x4f00, mulmod(mload(0x4920), mload(0xae0), f_q)) +mstore(0x4f20, mulmod(mload(0x49c0), mload(0xae0), f_q)) +mstore(0x4f40, mulmod(mload(0x4a60), mload(0xae0), f_q)) +mstore(0x4f60, mulmod(mload(0x4b80), mload(0xae0), f_q)) +mstore(0x4f80, mulmod(mload(0x4ba0), mload(0xae0), f_q)) +mstore(0x4fa0, mulmod(mload(0x4bc0), mload(0xae0), f_q)) +mstore(0x4fc0, mulmod(mload(0x4be0), mload(0xae0), f_q)) +mstore(0x4fe0, mulmod(mload(0x4c00), mload(0xae0), f_q)) +mstore(0x5000, mulmod(mload(0x4ca0), mload(0xae0), f_q)) +mstore(0x5020, addmod(mload(0x3e80), mload(0x4ce0), f_q)) +mstore(0x5040, mulmod(1, mload(0x37e0), f_q)) { - let result := mulmod(mload(0x980), mload(0x3280), f_q) -result := addmod(mulmod(mload(0x9a0), mload(0x32a0), f_q), result, f_q) -mstore(20512, result) - } -mstore(0x5040, mulmod(mload(0x5020), mload(0x3880), f_q)) -mstore(0x5060, mulmod(sub(f_q, mload(0x5040)), mload(0xa40), f_q)) -mstore(0x5080, mulmod(mload(0x4f80), mload(0xa40), f_q)) -mstore(0x50a0, addmod(mload(0x4fe0), mload(0x5060), f_q)) -mstore(0x50c0, mulmod(mload(0x50a0), mload(0x3b60), f_q)) -mstore(0x50e0, mulmod(mload(0x5000), mload(0x3b60), f_q)) -mstore(0x5100, mulmod(mload(0x5080), mload(0x3b60), f_q)) -mstore(0x5120, addmod(mload(0x4f60), mload(0x50c0), f_q)) -mstore(0x5140, mulmod(1, mload(0x36a0), f_q)) + let result := mulmod(mload(0x920), mload(0x33c0), f_q) +result := addmod(mulmod(mload(0x940), mload(0x33e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x960), mload(0x3400), f_q), result, f_q) +mstore(20576, result) + } +mstore(0x5080, mulmod(mload(0x5060), mload(0x3a20), f_q)) +mstore(0x50a0, mulmod(sub(f_q, mload(0x5080)), 1, f_q)) +mstore(0x50c0, mulmod(mload(0x5040), 1, f_q)) +mstore(0x50e0, mulmod(mload(0x50a0), mload(0x3d00), f_q)) +mstore(0x5100, mulmod(mload(0x50c0), mload(0x3d00), f_q)) +mstore(0x5120, addmod(mload(0x5020), mload(0x50e0), f_q)) +mstore(0x5140, mulmod(1, mload(0x3820), f_q)) { - let result := mulmod(mload(0x9c0), mload(0x32c0), f_q) -result := addmod(mulmod(mload(0x9e0), mload(0x32e0), f_q), result, f_q) + let result := mulmod(mload(0x980), mload(0x3440), f_q) +result := addmod(mulmod(mload(0x9a0), mload(0x3460), f_q), result, f_q) mstore(20832, result) } -mstore(0x5180, mulmod(mload(0x5160), mload(0x38a0), f_q)) +mstore(0x5180, mulmod(mload(0x5160), mload(0x3a40), f_q)) mstore(0x51a0, mulmod(sub(f_q, mload(0x5180)), 1, f_q)) mstore(0x51c0, mulmod(mload(0x5140), 1, f_q)) -mstore(0x51e0, mulmod(mload(0x51a0), mload(0x3b80), f_q)) -mstore(0x5200, mulmod(mload(0x51c0), mload(0x3b80), f_q)) -mstore(0x5220, addmod(mload(0x5120), mload(0x51e0), f_q)) -mstore(0x5240, mulmod(1, mload(0x31c0), f_q)) -mstore(0x5260, mulmod(1, mload(0xb40), f_q)) -mstore(0x5280, 0x0000000000000000000000000000000000000000000000000000000000000001) - mstore(0x52a0, 0x0000000000000000000000000000000000000000000000000000000000000002) -mstore(0x52c0, mload(0x5220)) -success := and(eq(staticcall(gas(), 0x7, 0x5280, 0x60, 0x5280, 0x40), 1), success) -mstore(0x52e0, mload(0x5280)) - mstore(0x5300, mload(0x52a0)) -mstore(0x5320, mload(0x60)) - mstore(0x5340, mload(0x80)) -success := and(eq(staticcall(gas(), 0x6, 0x52e0, 0x80, 0x52e0, 0x40), 1), success) -mstore(0x5360, mload(0xa0)) - mstore(0x5380, mload(0xc0)) -mstore(0x53a0, mload(0x3ce0)) -success := and(eq(staticcall(gas(), 0x7, 0x5360, 0x60, 0x5360, 0x40), 1), success) -mstore(0x53c0, mload(0x52e0)) - mstore(0x53e0, mload(0x5300)) -mstore(0x5400, mload(0x5360)) - mstore(0x5420, mload(0x5380)) -success := and(eq(staticcall(gas(), 0x6, 0x53c0, 0x80, 0x53c0, 0x40), 1), success) -mstore(0x5440, mload(0xe0)) - mstore(0x5460, mload(0x100)) -mstore(0x5480, mload(0x4b40)) +{ + let result := mulmod(mload(0x9c0), mload(0x3440), f_q) +result := addmod(mulmod(mload(0x9e0), mload(0x3460), f_q), result, f_q) +mstore(20960, result) + } +mstore(0x5200, mulmod(mload(0x51e0), mload(0x3a40), f_q)) +mstore(0x5220, mulmod(sub(f_q, mload(0x5200)), mload(0xa80), f_q)) +mstore(0x5240, mulmod(mload(0x5140), mload(0xa80), f_q)) +mstore(0x5260, addmod(mload(0x51a0), mload(0x5220), f_q)) +mstore(0x5280, mulmod(mload(0x5260), mload(0x3d20), f_q)) +mstore(0x52a0, mulmod(mload(0x51c0), mload(0x3d20), f_q)) +mstore(0x52c0, mulmod(mload(0x5240), mload(0x3d20), f_q)) +mstore(0x52e0, addmod(mload(0x5120), mload(0x5280), f_q)) +mstore(0x5300, mulmod(1, mload(0x3860), f_q)) +{ + let result := mulmod(mload(0xa00), mload(0x3480), f_q) +result := addmod(mulmod(mload(0xa20), mload(0x34a0), f_q), result, f_q) +mstore(21280, result) + } +mstore(0x5340, mulmod(mload(0x5320), mload(0x3a60), f_q)) +mstore(0x5360, mulmod(sub(f_q, mload(0x5340)), 1, f_q)) +mstore(0x5380, mulmod(mload(0x5300), 1, f_q)) +mstore(0x53a0, mulmod(mload(0x5360), mload(0x3d40), f_q)) +mstore(0x53c0, mulmod(mload(0x5380), mload(0x3d40), f_q)) +mstore(0x53e0, addmod(mload(0x52e0), mload(0x53a0), f_q)) +mstore(0x5400, mulmod(1, mload(0x3380), f_q)) +mstore(0x5420, mulmod(1, mload(0xb80), f_q)) +mstore(0x5440, 0x0000000000000000000000000000000000000000000000000000000000000001) + mstore(0x5460, 0x0000000000000000000000000000000000000000000000000000000000000002) +mstore(0x5480, mload(0x53e0)) success := and(eq(staticcall(gas(), 0x7, 0x5440, 0x60, 0x5440, 0x40), 1), success) -mstore(0x54a0, mload(0x53c0)) - mstore(0x54c0, mload(0x53e0)) -mstore(0x54e0, mload(0x5440)) - mstore(0x5500, mload(0x5460)) +mstore(0x54a0, mload(0x5440)) + mstore(0x54c0, mload(0x5460)) +mstore(0x54e0, mload(0xa0)) + mstore(0x5500, mload(0xc0)) success := and(eq(staticcall(gas(), 0x6, 0x54a0, 0x80, 0x54a0, 0x40), 1), success) -mstore(0x5520, mload(0x1c0)) - mstore(0x5540, mload(0x1e0)) -mstore(0x5560, mload(0x4b60)) +mstore(0x5520, mload(0xe0)) + mstore(0x5540, mload(0x100)) +mstore(0x5560, mload(0x3ea0)) success := and(eq(staticcall(gas(), 0x7, 0x5520, 0x60, 0x5520, 0x40), 1), success) mstore(0x5580, mload(0x54a0)) mstore(0x55a0, mload(0x54c0)) mstore(0x55c0, mload(0x5520)) mstore(0x55e0, mload(0x5540)) success := and(eq(staticcall(gas(), 0x6, 0x5580, 0x80, 0x5580, 0x40), 1), success) -mstore(0x5600, 0x291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db425290) - mstore(0x5620, 0x154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc) -mstore(0x5640, mload(0x4b80)) +mstore(0x5600, mload(0x120)) + mstore(0x5620, mload(0x140)) +mstore(0x5640, mload(0x4d00)) success := and(eq(staticcall(gas(), 0x7, 0x5600, 0x60, 0x5600, 0x40), 1), success) mstore(0x5660, mload(0x5580)) mstore(0x5680, mload(0x55a0)) mstore(0x56a0, mload(0x5600)) mstore(0x56c0, mload(0x5620)) success := and(eq(staticcall(gas(), 0x6, 0x5660, 0x80, 0x5660, 0x40), 1), success) -mstore(0x56e0, 0x176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d) - mstore(0x5700, 0x1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51) -mstore(0x5720, mload(0x4ba0)) +mstore(0x56e0, mload(0x200)) + mstore(0x5700, mload(0x220)) +mstore(0x5720, mload(0x4d20)) success := and(eq(staticcall(gas(), 0x7, 0x56e0, 0x60, 0x56e0, 0x40), 1), success) mstore(0x5740, mload(0x5660)) mstore(0x5760, mload(0x5680)) mstore(0x5780, mload(0x56e0)) mstore(0x57a0, mload(0x5700)) success := and(eq(staticcall(gas(), 0x6, 0x5740, 0x80, 0x5740, 0x40), 1), success) -mstore(0x57c0, 0x019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e20250759) - mstore(0x57e0, 0x0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea83) -mstore(0x5800, mload(0x4bc0)) +mstore(0x57c0, 0x299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a90) + mstore(0x57e0, 0x21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95) +mstore(0x5800, mload(0x4d40)) success := and(eq(staticcall(gas(), 0x7, 0x57c0, 0x60, 0x57c0, 0x40), 1), success) mstore(0x5820, mload(0x5740)) mstore(0x5840, mload(0x5760)) mstore(0x5860, mload(0x57c0)) mstore(0x5880, mload(0x57e0)) success := and(eq(staticcall(gas(), 0x6, 0x5820, 0x80, 0x5820, 0x40), 1), success) -mstore(0x58a0, 0x0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af) - mstore(0x58c0, 0x24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c43) -mstore(0x58e0, mload(0x4be0)) +mstore(0x58a0, 0x19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3) + mstore(0x58c0, 0x2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6) +mstore(0x58e0, mload(0x4d60)) success := and(eq(staticcall(gas(), 0x7, 0x58a0, 0x60, 0x58a0, 0x40), 1), success) mstore(0x5900, mload(0x5820)) mstore(0x5920, mload(0x5840)) mstore(0x5940, mload(0x58a0)) mstore(0x5960, mload(0x58c0)) success := and(eq(staticcall(gas(), 0x6, 0x5900, 0x80, 0x5900, 0x40), 1), success) -mstore(0x5980, 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) - mstore(0x59a0, 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0) -mstore(0x59c0, mload(0x4c00)) +mstore(0x5980, 0x17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e) + mstore(0x59a0, 0x1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b) +mstore(0x59c0, mload(0x4d80)) success := and(eq(staticcall(gas(), 0x7, 0x5980, 0x60, 0x5980, 0x40), 1), success) mstore(0x59e0, mload(0x5900)) mstore(0x5a00, mload(0x5920)) mstore(0x5a20, mload(0x5980)) mstore(0x5a40, mload(0x59a0)) success := and(eq(staticcall(gas(), 0x6, 0x59e0, 0x80, 0x59e0, 0x40), 1), success) -mstore(0x5a60, 0x0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed) - mstore(0x5a80, 0x286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf) -mstore(0x5aa0, mload(0x4c20)) +mstore(0x5a60, 0x05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056) + mstore(0x5a80, 0x2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c) +mstore(0x5aa0, mload(0x4da0)) success := and(eq(staticcall(gas(), 0x7, 0x5a60, 0x60, 0x5a60, 0x40), 1), success) mstore(0x5ac0, mload(0x59e0)) mstore(0x5ae0, mload(0x5a00)) mstore(0x5b00, mload(0x5a60)) mstore(0x5b20, mload(0x5a80)) success := and(eq(staticcall(gas(), 0x6, 0x5ac0, 0x80, 0x5ac0, 0x40), 1), success) -mstore(0x5b40, 0x14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5) - mstore(0x5b60, 0x0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2) -mstore(0x5b80, mload(0x4c40)) +mstore(0x5b40, 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) + mstore(0x5b60, 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0) +mstore(0x5b80, mload(0x4dc0)) success := and(eq(staticcall(gas(), 0x7, 0x5b40, 0x60, 0x5b40, 0x40), 1), success) mstore(0x5ba0, mload(0x5ac0)) mstore(0x5bc0, mload(0x5ae0)) mstore(0x5be0, mload(0x5b40)) mstore(0x5c00, mload(0x5b60)) success := and(eq(staticcall(gas(), 0x6, 0x5ba0, 0x80, 0x5ba0, 0x40), 1), success) -mstore(0x5c20, 0x0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36) - mstore(0x5c40, 0x2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890) -mstore(0x5c60, mload(0x4c60)) +mstore(0x5c20, 0x19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8) + mstore(0x5c40, 0x0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78) +mstore(0x5c60, mload(0x4de0)) success := and(eq(staticcall(gas(), 0x7, 0x5c20, 0x60, 0x5c20, 0x40), 1), success) mstore(0x5c80, mload(0x5ba0)) mstore(0x5ca0, mload(0x5bc0)) mstore(0x5cc0, mload(0x5c20)) mstore(0x5ce0, mload(0x5c40)) success := and(eq(staticcall(gas(), 0x6, 0x5c80, 0x80, 0x5c80, 0x40), 1), success) -mstore(0x5d00, 0x1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f) - mstore(0x5d20, 0x1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d) -mstore(0x5d40, mload(0x4c80)) +mstore(0x5d00, 0x1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5) + mstore(0x5d20, 0x1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098) +mstore(0x5d40, mload(0x4e00)) success := and(eq(staticcall(gas(), 0x7, 0x5d00, 0x60, 0x5d00, 0x40), 1), success) mstore(0x5d60, mload(0x5c80)) mstore(0x5d80, mload(0x5ca0)) mstore(0x5da0, mload(0x5d00)) mstore(0x5dc0, mload(0x5d20)) success := and(eq(staticcall(gas(), 0x6, 0x5d60, 0x80, 0x5d60, 0x40), 1), success) -mstore(0x5de0, 0x07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c) - mstore(0x5e00, 0x1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68) -mstore(0x5e20, mload(0x4ca0)) +mstore(0x5de0, 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) + mstore(0x5e00, 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097) +mstore(0x5e20, mload(0x4e20)) success := and(eq(staticcall(gas(), 0x7, 0x5de0, 0x60, 0x5de0, 0x40), 1), success) mstore(0x5e40, mload(0x5d60)) mstore(0x5e60, mload(0x5d80)) mstore(0x5e80, mload(0x5de0)) mstore(0x5ea0, mload(0x5e00)) success := and(eq(staticcall(gas(), 0x6, 0x5e40, 0x80, 0x5e40, 0x40), 1), success) -mstore(0x5ec0, 0x0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701) - mstore(0x5ee0, 0x07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a) -mstore(0x5f00, mload(0x4cc0)) +mstore(0x5ec0, 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) + mstore(0x5ee0, 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd) +mstore(0x5f00, mload(0x4e40)) success := and(eq(staticcall(gas(), 0x7, 0x5ec0, 0x60, 0x5ec0, 0x40), 1), success) mstore(0x5f20, mload(0x5e40)) mstore(0x5f40, mload(0x5e60)) mstore(0x5f60, mload(0x5ec0)) mstore(0x5f80, mload(0x5ee0)) success := and(eq(staticcall(gas(), 0x6, 0x5f20, 0x80, 0x5f20, 0x40), 1), success) -mstore(0x5fa0, 0x2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d) - mstore(0x5fc0, 0x154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6) -mstore(0x5fe0, mload(0x4ce0)) +mstore(0x5fa0, 0x09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa) + mstore(0x5fc0, 0x13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289) +mstore(0x5fe0, mload(0x4e60)) success := and(eq(staticcall(gas(), 0x7, 0x5fa0, 0x60, 0x5fa0, 0x40), 1), success) mstore(0x6000, mload(0x5f20)) mstore(0x6020, mload(0x5f40)) mstore(0x6040, mload(0x5fa0)) mstore(0x6060, mload(0x5fc0)) success := and(eq(staticcall(gas(), 0x6, 0x6000, 0x80, 0x6000, 0x40), 1), success) -mstore(0x6080, 0x2402db4b1c7746dcd9fe7eab82ab3fa7ebb1bd352a9af94ef6811b2af9ab6f8e) - mstore(0x60a0, 0x2a0047ec08a254753c466648f0dc6e077e88e5495829c3a845873b9058bf4407) -mstore(0x60c0, mload(0x4d00)) +mstore(0x6080, 0x08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743) + mstore(0x60a0, 0x08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c) +mstore(0x60c0, mload(0x4e80)) success := and(eq(staticcall(gas(), 0x7, 0x6080, 0x60, 0x6080, 0x40), 1), success) mstore(0x60e0, mload(0x6000)) mstore(0x6100, mload(0x6020)) mstore(0x6120, mload(0x6080)) mstore(0x6140, mload(0x60a0)) success := and(eq(staticcall(gas(), 0x6, 0x60e0, 0x80, 0x60e0, 0x40), 1), success) -mstore(0x6160, 0x0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a) - mstore(0x6180, 0x27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28) -mstore(0x61a0, mload(0x4d20)) +mstore(0x6160, 0x25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe) + mstore(0x6180, 0x2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a) +mstore(0x61a0, mload(0x4ea0)) success := and(eq(staticcall(gas(), 0x7, 0x6160, 0x60, 0x6160, 0x40), 1), success) mstore(0x61c0, mload(0x60e0)) mstore(0x61e0, mload(0x6100)) mstore(0x6200, mload(0x6160)) mstore(0x6220, mload(0x6180)) success := and(eq(staticcall(gas(), 0x6, 0x61c0, 0x80, 0x61c0, 0x40), 1), success) -mstore(0x6240, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) - mstore(0x6260, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) -mstore(0x6280, mload(0x4d40)) +mstore(0x6240, 0x07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad) + mstore(0x6260, 0x255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960) +mstore(0x6280, mload(0x4ec0)) success := and(eq(staticcall(gas(), 0x7, 0x6240, 0x60, 0x6240, 0x40), 1), success) mstore(0x62a0, mload(0x61c0)) mstore(0x62c0, mload(0x61e0)) mstore(0x62e0, mload(0x6240)) mstore(0x6300, mload(0x6260)) success := and(eq(staticcall(gas(), 0x6, 0x62a0, 0x80, 0x62a0, 0x40), 1), success) -mstore(0x6320, 0x1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a) - mstore(0x6340, 0x00b004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56) -mstore(0x6360, mload(0x4d60)) +mstore(0x6320, 0x136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22) + mstore(0x6340, 0x0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac) +mstore(0x6360, mload(0x4ee0)) success := and(eq(staticcall(gas(), 0x7, 0x6320, 0x60, 0x6320, 0x40), 1), success) mstore(0x6380, mload(0x62a0)) mstore(0x63a0, mload(0x62c0)) mstore(0x63c0, mload(0x6320)) mstore(0x63e0, mload(0x6340)) success := and(eq(staticcall(gas(), 0x6, 0x6380, 0x80, 0x6380, 0x40), 1), success) -mstore(0x6400, 0x2903a763c1c6b78667f906b6fe2b4ad197b55587c90e14e8502446da8c45ef7d) - mstore(0x6420, 0x13ea57986f9295e92def3303aef53f2b4f625ba985531201ab53dc7307f46b69) -mstore(0x6440, mload(0x4d80)) +mstore(0x6400, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) + mstore(0x6420, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) +mstore(0x6440, mload(0x4f00)) success := and(eq(staticcall(gas(), 0x7, 0x6400, 0x60, 0x6400, 0x40), 1), success) mstore(0x6460, mload(0x6380)) mstore(0x6480, mload(0x63a0)) mstore(0x64a0, mload(0x6400)) mstore(0x64c0, mload(0x6420)) success := and(eq(staticcall(gas(), 0x6, 0x6460, 0x80, 0x6460, 0x40), 1), success) -mstore(0x64e0, mload(0x420)) - mstore(0x6500, mload(0x440)) -mstore(0x6520, mload(0x4da0)) +mstore(0x64e0, 0x1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e) + mstore(0x6500, 0x050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb) +mstore(0x6520, mload(0x4f20)) success := and(eq(staticcall(gas(), 0x7, 0x64e0, 0x60, 0x64e0, 0x40), 1), success) mstore(0x6540, mload(0x6460)) mstore(0x6560, mload(0x6480)) mstore(0x6580, mload(0x64e0)) mstore(0x65a0, mload(0x6500)) success := and(eq(staticcall(gas(), 0x6, 0x6540, 0x80, 0x6540, 0x40), 1), success) -mstore(0x65c0, mload(0x460)) - mstore(0x65e0, mload(0x480)) -mstore(0x6600, mload(0x4dc0)) +mstore(0x65c0, 0x1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0) + mstore(0x65e0, 0x0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391) +mstore(0x6600, mload(0x4f40)) success := and(eq(staticcall(gas(), 0x7, 0x65c0, 0x60, 0x65c0, 0x40), 1), success) mstore(0x6620, mload(0x6540)) mstore(0x6640, mload(0x6560)) mstore(0x6660, mload(0x65c0)) mstore(0x6680, mload(0x65e0)) success := and(eq(staticcall(gas(), 0x6, 0x6620, 0x80, 0x6620, 0x40), 1), success) -mstore(0x66a0, mload(0x4a0)) - mstore(0x66c0, mload(0x4c0)) -mstore(0x66e0, mload(0x4de0)) +mstore(0x66a0, mload(0x460)) + mstore(0x66c0, mload(0x480)) +mstore(0x66e0, mload(0x4f60)) success := and(eq(staticcall(gas(), 0x7, 0x66a0, 0x60, 0x66a0, 0x40), 1), success) mstore(0x6700, mload(0x6620)) mstore(0x6720, mload(0x6640)) mstore(0x6740, mload(0x66a0)) mstore(0x6760, mload(0x66c0)) success := and(eq(staticcall(gas(), 0x6, 0x6700, 0x80, 0x6700, 0x40), 1), success) -mstore(0x6780, mload(0x4e0)) - mstore(0x67a0, mload(0x500)) -mstore(0x67c0, mload(0x4e00)) +mstore(0x6780, mload(0x4a0)) + mstore(0x67a0, mload(0x4c0)) +mstore(0x67c0, mload(0x4f80)) success := and(eq(staticcall(gas(), 0x7, 0x6780, 0x60, 0x6780, 0x40), 1), success) mstore(0x67e0, mload(0x6700)) mstore(0x6800, mload(0x6720)) mstore(0x6820, mload(0x6780)) mstore(0x6840, mload(0x67a0)) success := and(eq(staticcall(gas(), 0x6, 0x67e0, 0x80, 0x67e0, 0x40), 1), success) -mstore(0x6860, mload(0x520)) - mstore(0x6880, mload(0x540)) -mstore(0x68a0, mload(0x4e20)) +mstore(0x6860, mload(0x4e0)) + mstore(0x6880, mload(0x500)) +mstore(0x68a0, mload(0x4fa0)) success := and(eq(staticcall(gas(), 0x7, 0x6860, 0x60, 0x6860, 0x40), 1), success) mstore(0x68c0, mload(0x67e0)) mstore(0x68e0, mload(0x6800)) mstore(0x6900, mload(0x6860)) mstore(0x6920, mload(0x6880)) success := and(eq(staticcall(gas(), 0x6, 0x68c0, 0x80, 0x68c0, 0x40), 1), success) -mstore(0x6940, mload(0x380)) - mstore(0x6960, mload(0x3a0)) -mstore(0x6980, mload(0x4e40)) +mstore(0x6940, mload(0x520)) + mstore(0x6960, mload(0x540)) +mstore(0x6980, mload(0x4fc0)) success := and(eq(staticcall(gas(), 0x7, 0x6940, 0x60, 0x6940, 0x40), 1), success) mstore(0x69a0, mload(0x68c0)) mstore(0x69c0, mload(0x68e0)) mstore(0x69e0, mload(0x6940)) mstore(0x6a00, mload(0x6960)) success := and(eq(staticcall(gas(), 0x6, 0x69a0, 0x80, 0x69a0, 0x40), 1), success) -mstore(0x6a20, mload(0x2c0)) - mstore(0x6a40, mload(0x2e0)) -mstore(0x6a60, mload(0x4f40)) +mstore(0x6a20, mload(0x560)) + mstore(0x6a40, mload(0x580)) +mstore(0x6a60, mload(0x4fe0)) success := and(eq(staticcall(gas(), 0x7, 0x6a20, 0x60, 0x6a20, 0x40), 1), success) mstore(0x6a80, mload(0x69a0)) mstore(0x6aa0, mload(0x69c0)) mstore(0x6ac0, mload(0x6a20)) mstore(0x6ae0, mload(0x6a40)) success := and(eq(staticcall(gas(), 0x6, 0x6a80, 0x80, 0x6a80, 0x40), 1), success) -mstore(0x6b00, mload(0x300)) - mstore(0x6b20, mload(0x320)) -mstore(0x6b40, mload(0x50e0)) +mstore(0x6b00, mload(0x3c0)) + mstore(0x6b20, mload(0x3e0)) +mstore(0x6b40, mload(0x5000)) success := and(eq(staticcall(gas(), 0x7, 0x6b00, 0x60, 0x6b00, 0x40), 1), success) mstore(0x6b60, mload(0x6a80)) mstore(0x6b80, mload(0x6aa0)) mstore(0x6ba0, mload(0x6b00)) mstore(0x6bc0, mload(0x6b20)) success := and(eq(staticcall(gas(), 0x6, 0x6b60, 0x80, 0x6b60, 0x40), 1), success) -mstore(0x6be0, mload(0x340)) - mstore(0x6c00, mload(0x360)) +mstore(0x6be0, mload(0x300)) + mstore(0x6c00, mload(0x320)) mstore(0x6c20, mload(0x5100)) success := and(eq(staticcall(gas(), 0x7, 0x6be0, 0x60, 0x6be0, 0x40), 1), success) mstore(0x6c40, mload(0x6b60)) @@ -1431,51 +1441,69 @@ mstore(0x6c40, mload(0x6b60)) mstore(0x6c80, mload(0x6be0)) mstore(0x6ca0, mload(0x6c00)) success := and(eq(staticcall(gas(), 0x6, 0x6c40, 0x80, 0x6c40, 0x40), 1), success) -mstore(0x6cc0, mload(0x180)) - mstore(0x6ce0, mload(0x1a0)) -mstore(0x6d00, mload(0x5200)) +mstore(0x6cc0, mload(0x340)) + mstore(0x6ce0, mload(0x360)) +mstore(0x6d00, mload(0x52a0)) success := and(eq(staticcall(gas(), 0x7, 0x6cc0, 0x60, 0x6cc0, 0x40), 1), success) mstore(0x6d20, mload(0x6c40)) mstore(0x6d40, mload(0x6c60)) mstore(0x6d60, mload(0x6cc0)) mstore(0x6d80, mload(0x6ce0)) success := and(eq(staticcall(gas(), 0x6, 0x6d20, 0x80, 0x6d20, 0x40), 1), success) -mstore(0x6da0, mload(0xae0)) - mstore(0x6dc0, mload(0xb00)) -mstore(0x6de0, sub(f_q, mload(0x5240))) +mstore(0x6da0, mload(0x380)) + mstore(0x6dc0, mload(0x3a0)) +mstore(0x6de0, mload(0x52c0)) success := and(eq(staticcall(gas(), 0x7, 0x6da0, 0x60, 0x6da0, 0x40), 1), success) mstore(0x6e00, mload(0x6d20)) mstore(0x6e20, mload(0x6d40)) mstore(0x6e40, mload(0x6da0)) mstore(0x6e60, mload(0x6dc0)) success := and(eq(staticcall(gas(), 0x6, 0x6e00, 0x80, 0x6e00, 0x40), 1), success) -mstore(0x6e80, mload(0xb80)) - mstore(0x6ea0, mload(0xba0)) -mstore(0x6ec0, mload(0x5260)) +mstore(0x6e80, mload(0x1c0)) + mstore(0x6ea0, mload(0x1e0)) +mstore(0x6ec0, mload(0x53c0)) success := and(eq(staticcall(gas(), 0x7, 0x6e80, 0x60, 0x6e80, 0x40), 1), success) mstore(0x6ee0, mload(0x6e00)) mstore(0x6f00, mload(0x6e20)) mstore(0x6f20, mload(0x6e80)) mstore(0x6f40, mload(0x6ea0)) success := and(eq(staticcall(gas(), 0x6, 0x6ee0, 0x80, 0x6ee0, 0x40), 1), success) -mstore(0x6f60, mload(0x6ee0)) - mstore(0x6f80, mload(0x6f00)) -mstore(0x6fa0, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) - mstore(0x6fc0, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) - mstore(0x6fe0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) - mstore(0x7000, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) -mstore(0x7020, mload(0xb80)) - mstore(0x7040, mload(0xba0)) -mstore(0x7060, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) - mstore(0x7080, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) - mstore(0x70a0, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) - mstore(0x70c0, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) -success := and(eq(staticcall(gas(), 0x8, 0x6f60, 0x180, 0x6f60, 0x20), 1), success) -success := and(eq(mload(0x6f60), 1), success) +mstore(0x6f60, mload(0xb20)) + mstore(0x6f80, mload(0xb40)) +mstore(0x6fa0, sub(f_q, mload(0x5400))) +success := and(eq(staticcall(gas(), 0x7, 0x6f60, 0x60, 0x6f60, 0x40), 1), success) +mstore(0x6fc0, mload(0x6ee0)) + mstore(0x6fe0, mload(0x6f00)) +mstore(0x7000, mload(0x6f60)) + mstore(0x7020, mload(0x6f80)) +success := and(eq(staticcall(gas(), 0x6, 0x6fc0, 0x80, 0x6fc0, 0x40), 1), success) +mstore(0x7040, mload(0xbc0)) + mstore(0x7060, mload(0xbe0)) +mstore(0x7080, mload(0x5420)) +success := and(eq(staticcall(gas(), 0x7, 0x7040, 0x60, 0x7040, 0x40), 1), success) +mstore(0x70a0, mload(0x6fc0)) + mstore(0x70c0, mload(0x6fe0)) +mstore(0x70e0, mload(0x7040)) + mstore(0x7100, mload(0x7060)) +success := and(eq(staticcall(gas(), 0x6, 0x70a0, 0x80, 0x70a0, 0x40), 1), success) +mstore(0x7120, mload(0x70a0)) + mstore(0x7140, mload(0x70c0)) +mstore(0x7160, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) + mstore(0x7180, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) + mstore(0x71a0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) + mstore(0x71c0, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) +mstore(0x71e0, mload(0xbc0)) + mstore(0x7200, mload(0xbe0)) +mstore(0x7220, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) + mstore(0x7240, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) + mstore(0x7260, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) + mstore(0x7280, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) +success := and(eq(staticcall(gas(), 0x8, 0x7120, 0x180, 0x7120, 0x20), 1), success) +success := and(eq(mload(0x7120), 1), success) if not(success) { revert(0, 0) } return(0, 0) } } - } + } \ No newline at end of file diff --git a/contracts/src/SolvencyVerifier.sol b/contracts/src/SolvencyVerifier.sol deleted file mode 100644 index d1e940a9..00000000 --- a/contracts/src/SolvencyVerifier.sol +++ /dev/null @@ -1,11 +0,0 @@ -// SPDX-License-Identifier: MIT - pragma solidity ^0.8.17; - - contract Verifier { - function verify( - uint256[] memory pubInputs, - bytes memory proof - ) public view returns (bool) { - bool success = true; - bytes32[846] memory transcript; - assembly { let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 function validate_ec_point(x, y) -> valid { { let x_lt_p := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let y_lt_p := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) valid := and(x_lt_p, y_lt_p) } { let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let is_affine := eq(x_cube_plus_3, y_square) valid := and(valid, is_affine) } } mstore(add(transcript, 0x20), mod(mload(add(pubInputs, 0x20)), f_q))mstore(add(transcript, 0x40), mod(mload(add(pubInputs, 0x40)), f_q))mstore(add(transcript, 0x60), mod(mload(add(pubInputs, 0x60)), f_q))mstore(add(transcript, 0x0), 308492134225063399814226381520525808113815168934209933683689315739401114858) { let x := mload(add(proof, 0x20)) mstore(add(transcript, 0x80), x) let y := mload(add(proof, 0x40)) mstore(add(transcript, 0xa0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x60)) mstore(add(transcript, 0xc0), x) let y := mload(add(proof, 0x80)) mstore(add(transcript, 0xe0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0xa0)) mstore(add(transcript, 0x100), x) let y := mload(add(proof, 0xc0)) mstore(add(transcript, 0x120), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x140), keccak256(add(transcript, 0x0), 320)){ let hash := mload(add(transcript, 0x140)) mstore(add(transcript, 0x160), mod(hash, f_q)) mstore(add(transcript, 0x180), hash) } { let x := mload(add(proof, 0xe0)) mstore(add(transcript, 0x1a0), x) let y := mload(add(proof, 0x100)) mstore(add(transcript, 0x1c0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x120)) mstore(add(transcript, 0x1e0), x) let y := mload(add(proof, 0x140)) mstore(add(transcript, 0x200), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x220), keccak256(add(transcript, 0x180), 160)){ let hash := mload(add(transcript, 0x220)) mstore(add(transcript, 0x240), mod(hash, f_q)) mstore(add(transcript, 0x260), hash) }mstore8(add(transcript, 0x280), 1)mstore(add(transcript, 0x280), keccak256(add(transcript, 0x260), 33)){ let hash := mload(add(transcript, 0x280)) mstore(add(transcript, 0x2a0), mod(hash, f_q)) mstore(add(transcript, 0x2c0), hash) } { let x := mload(add(proof, 0x160)) mstore(add(transcript, 0x2e0), x) let y := mload(add(proof, 0x180)) mstore(add(transcript, 0x300), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1a0)) mstore(add(transcript, 0x320), x) let y := mload(add(proof, 0x1c0)) mstore(add(transcript, 0x340), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1e0)) mstore(add(transcript, 0x360), x) let y := mload(add(proof, 0x200)) mstore(add(transcript, 0x380), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x220)) mstore(add(transcript, 0x3a0), x) let y := mload(add(proof, 0x240)) mstore(add(transcript, 0x3c0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x3e0), keccak256(add(transcript, 0x2c0), 288)){ let hash := mload(add(transcript, 0x3e0)) mstore(add(transcript, 0x400), mod(hash, f_q)) mstore(add(transcript, 0x420), hash) } { let x := mload(add(proof, 0x260)) mstore(add(transcript, 0x440), x) let y := mload(add(proof, 0x280)) mstore(add(transcript, 0x460), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2a0)) mstore(add(transcript, 0x480), x) let y := mload(add(proof, 0x2c0)) mstore(add(transcript, 0x4a0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2e0)) mstore(add(transcript, 0x4c0), x) let y := mload(add(proof, 0x300)) mstore(add(transcript, 0x4e0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x320)) mstore(add(transcript, 0x500), x) let y := mload(add(proof, 0x340)) mstore(add(transcript, 0x520), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x360)) mstore(add(transcript, 0x540), x) let y := mload(add(proof, 0x380)) mstore(add(transcript, 0x560), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x580), keccak256(add(transcript, 0x420), 352)){ let hash := mload(add(transcript, 0x580)) mstore(add(transcript, 0x5a0), mod(hash, f_q)) mstore(add(transcript, 0x5c0), hash) }mstore(add(transcript, 0x5e0), mod(mload(add(proof, 0x3a0)), f_q))mstore(add(transcript, 0x600), mod(mload(add(proof, 0x3c0)), f_q))mstore(add(transcript, 0x620), mod(mload(add(proof, 0x3e0)), f_q))mstore(add(transcript, 0x640), mod(mload(add(proof, 0x400)), f_q))mstore(add(transcript, 0x660), mod(mload(add(proof, 0x420)), f_q))mstore(add(transcript, 0x680), mod(mload(add(proof, 0x440)), f_q))mstore(add(transcript, 0x6a0), mod(mload(add(proof, 0x460)), f_q))mstore(add(transcript, 0x6c0), mod(mload(add(proof, 0x480)), f_q))mstore(add(transcript, 0x6e0), mod(mload(add(proof, 0x4a0)), f_q))mstore(add(transcript, 0x700), mod(mload(add(proof, 0x4c0)), f_q))mstore(add(transcript, 0x720), mod(mload(add(proof, 0x4e0)), f_q))mstore(add(transcript, 0x740), mod(mload(add(proof, 0x500)), f_q))mstore(add(transcript, 0x760), mod(mload(add(proof, 0x520)), f_q))mstore(add(transcript, 0x780), mod(mload(add(proof, 0x540)), f_q))mstore(add(transcript, 0x7a0), mod(mload(add(proof, 0x560)), f_q))mstore(add(transcript, 0x7c0), mod(mload(add(proof, 0x580)), f_q))mstore(add(transcript, 0x7e0), mod(mload(add(proof, 0x5a0)), f_q))mstore(add(transcript, 0x800), mod(mload(add(proof, 0x5c0)), f_q))mstore(add(transcript, 0x820), mod(mload(add(proof, 0x5e0)), f_q))mstore(add(transcript, 0x840), mod(mload(add(proof, 0x600)), f_q))mstore(add(transcript, 0x860), mod(mload(add(proof, 0x620)), f_q))mstore(add(transcript, 0x880), mod(mload(add(proof, 0x640)), f_q))mstore(add(transcript, 0x8a0), mod(mload(add(proof, 0x660)), f_q))mstore(add(transcript, 0x8c0), mod(mload(add(proof, 0x680)), f_q))mstore(add(transcript, 0x8e0), mod(mload(add(proof, 0x6a0)), f_q))mstore(add(transcript, 0x900), mod(mload(add(proof, 0x6c0)), f_q))mstore(add(transcript, 0x920), mod(mload(add(proof, 0x6e0)), f_q))mstore(add(transcript, 0x940), mod(mload(add(proof, 0x700)), f_q))mstore(add(transcript, 0x960), mod(mload(add(proof, 0x720)), f_q))mstore(add(transcript, 0x980), mod(mload(add(proof, 0x740)), f_q))mstore(add(transcript, 0x9a0), mod(mload(add(proof, 0x760)), f_q))mstore(add(transcript, 0x9c0), mod(mload(add(proof, 0x780)), f_q))mstore(add(transcript, 0x9e0), mod(mload(add(proof, 0x7a0)), f_q))mstore(add(transcript, 0xa00), keccak256(add(transcript, 0x5c0), 1088)){ let hash := mload(add(transcript, 0xa00)) mstore(add(transcript, 0xa20), mod(hash, f_q)) mstore(add(transcript, 0xa40), hash) }mstore8(add(transcript, 0xa60), 1)mstore(add(transcript, 0xa60), keccak256(add(transcript, 0xa40), 33)){ let hash := mload(add(transcript, 0xa60)) mstore(add(transcript, 0xa80), mod(hash, f_q)) mstore(add(transcript, 0xaa0), hash) } { let x := mload(add(proof, 0x7c0)) mstore(add(transcript, 0xac0), x) let y := mload(add(proof, 0x7e0)) mstore(add(transcript, 0xae0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xb00), keccak256(add(transcript, 0xaa0), 96)){ let hash := mload(add(transcript, 0xb00)) mstore(add(transcript, 0xb20), mod(hash, f_q)) mstore(add(transcript, 0xb40), hash) } { let x := mload(add(proof, 0x800)) mstore(add(transcript, 0xb60), x) let y := mload(add(proof, 0x820)) mstore(add(transcript, 0xb80), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xba0), mulmod(mload(add(transcript, 0x5a0)), mload(add(transcript, 0x5a0)), f_q))mstore(add(transcript, 0xbc0), mulmod(mload(add(transcript, 0xba0)), mload(add(transcript, 0xba0)), f_q))mstore(add(transcript, 0xbe0), mulmod(mload(add(transcript, 0xbc0)), mload(add(transcript, 0xbc0)), f_q))mstore(add(transcript, 0xc00), mulmod(mload(add(transcript, 0xbe0)), mload(add(transcript, 0xbe0)), f_q))mstore(add(transcript, 0xc20), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0xc00)), f_q))mstore(add(transcript, 0xc40), mulmod(mload(add(transcript, 0xc20)), mload(add(transcript, 0xc20)), f_q))mstore(add(transcript, 0xc60), mulmod(mload(add(transcript, 0xc40)), mload(add(transcript, 0xc40)), f_q))mstore(add(transcript, 0xc80), mulmod(mload(add(transcript, 0xc60)), mload(add(transcript, 0xc60)), f_q))mstore(add(transcript, 0xca0), mulmod(mload(add(transcript, 0xc80)), mload(add(transcript, 0xc80)), f_q))mstore(add(transcript, 0xcc0), mulmod(mload(add(transcript, 0xca0)), mload(add(transcript, 0xca0)), f_q))mstore(add(transcript, 0xce0), addmod(mload(add(transcript, 0xcc0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xd00), mulmod(mload(add(transcript, 0xce0)), 21866867634659744680037180739646672280844703888306253060159436409049855557633, f_q))mstore(add(transcript, 0xd20), mulmod(mload(add(transcript, 0xd00)), 9936069627611189518829255670237324269287146421271524553312532036927871056678, f_q))mstore(add(transcript, 0xd40), addmod(mload(add(transcript, 0x5a0)), 11952173244228085703417150075019950819261217979144509790385672149647937438939, f_q))mstore(add(transcript, 0xd60), mulmod(mload(add(transcript, 0xd00)), 1680739780407307830605919050682431078078760076686599579086116998224280619988, f_q))mstore(add(transcript, 0xd80), addmod(mload(add(transcript, 0x5a0)), 20207503091431967391640486694574844010469604323729434764612087188351527875629, f_q))mstore(add(transcript, 0xda0), mulmod(mload(add(transcript, 0xd00)), 14158528901797138466244491986759313854666262535363044392173788062030301470987, f_q))mstore(add(transcript, 0xdc0), addmod(mload(add(transcript, 0x5a0)), 7729713970042136756001913758497961233882101865052989951524416124545507024630, f_q))mstore(add(transcript, 0xde0), mulmod(mload(add(transcript, 0xd00)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0xe00), addmod(mload(add(transcript, 0x5a0)), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q))mstore(add(transcript, 0xe20), mulmod(mload(add(transcript, 0xd00)), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q))mstore(add(transcript, 0xe40), addmod(mload(add(transcript, 0x5a0)), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q))mstore(add(transcript, 0xe60), mulmod(mload(add(transcript, 0xd00)), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q))mstore(add(transcript, 0xe80), addmod(mload(add(transcript, 0x5a0)), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q))mstore(add(transcript, 0xea0), mulmod(mload(add(transcript, 0xd00)), 1, f_q))mstore(add(transcript, 0xec0), addmod(mload(add(transcript, 0x5a0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xee0), mulmod(mload(add(transcript, 0xd00)), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q))mstore(add(transcript, 0xf00), addmod(mload(add(transcript, 0x5a0)), 2507682784038009475131574039120954579123549720846755509306663987687515178116, f_q))mstore(add(transcript, 0xf20), mulmod(mload(add(transcript, 0xd00)), 6252951856119339508807713076978770803512896272623217303779254502899773638908, f_q))mstore(add(transcript, 0xf40), addmod(mload(add(transcript, 0x5a0)), 15635291015719935713438692668278504285035468127792817039918949683676034856709, f_q)){ let prod := mload(add(transcript, 0xd40)) prod := mulmod(mload(add(transcript, 0xd80)), prod, f_q) mstore(add(transcript, 0xf60), prod) prod := mulmod(mload(add(transcript, 0xdc0)), prod, f_q) mstore(add(transcript, 0xf80), prod) prod := mulmod(mload(add(transcript, 0xe00)), prod, f_q) mstore(add(transcript, 0xfa0), prod) prod := mulmod(mload(add(transcript, 0xe40)), prod, f_q) mstore(add(transcript, 0xfc0), prod) prod := mulmod(mload(add(transcript, 0xe80)), prod, f_q) mstore(add(transcript, 0xfe0), prod) prod := mulmod(mload(add(transcript, 0xec0)), prod, f_q) mstore(add(transcript, 0x1000), prod) prod := mulmod(mload(add(transcript, 0xf00)), prod, f_q) mstore(add(transcript, 0x1020), prod) prod := mulmod(mload(add(transcript, 0xf40)), prod, f_q) mstore(add(transcript, 0x1040), prod) prod := mulmod(mload(add(transcript, 0xce0)), prod, f_q) mstore(add(transcript, 0x1060), prod) }mstore(add(transcript, 0x10a0), 32)mstore(add(transcript, 0x10c0), 32)mstore(add(transcript, 0x10e0), 32)mstore(add(transcript, 0x1100), mload(add(transcript, 0x1060)))mstore(add(transcript, 0x1120), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x1140), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x10a0), 0xc0, add(transcript, 0x1080), 0x20), 1), success){ let inv := mload(add(transcript, 0x1080)) let v v := mload(add(transcript, 0xce0)) mstore(add(transcript, 0xce0), mulmod(mload(add(transcript, 0x1040)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf40)) mstore(add(transcript, 0xf40), mulmod(mload(add(transcript, 0x1020)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf00)) mstore(add(transcript, 0xf00), mulmod(mload(add(transcript, 0x1000)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xec0)) mstore(add(transcript, 0xec0), mulmod(mload(add(transcript, 0xfe0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe80)) mstore(add(transcript, 0xe80), mulmod(mload(add(transcript, 0xfc0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe40)) mstore(add(transcript, 0xe40), mulmod(mload(add(transcript, 0xfa0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe00)) mstore(add(transcript, 0xe00), mulmod(mload(add(transcript, 0xf80)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xdc0)) mstore(add(transcript, 0xdc0), mulmod(mload(add(transcript, 0xf60)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xd80)) mstore(add(transcript, 0xd80), mulmod(mload(add(transcript, 0xd40)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0xd40), inv) }mstore(add(transcript, 0x1160), mulmod(mload(add(transcript, 0xd20)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x1180), mulmod(mload(add(transcript, 0xd60)), mload(add(transcript, 0xd80)), f_q))mstore(add(transcript, 0x11a0), mulmod(mload(add(transcript, 0xda0)), mload(add(transcript, 0xdc0)), f_q))mstore(add(transcript, 0x11c0), mulmod(mload(add(transcript, 0xde0)), mload(add(transcript, 0xe00)), f_q))mstore(add(transcript, 0x11e0), mulmod(mload(add(transcript, 0xe20)), mload(add(transcript, 0xe40)), f_q))mstore(add(transcript, 0x1200), mulmod(mload(add(transcript, 0xe60)), mload(add(transcript, 0xe80)), f_q))mstore(add(transcript, 0x1220), mulmod(mload(add(transcript, 0xea0)), mload(add(transcript, 0xec0)), f_q))mstore(add(transcript, 0x1240), mulmod(mload(add(transcript, 0xee0)), mload(add(transcript, 0xf00)), f_q))mstore(add(transcript, 0x1260), mulmod(mload(add(transcript, 0xf20)), mload(add(transcript, 0xf40)), f_q)){ let result := mulmod(mload(add(transcript, 0x1220)), mload(add(transcript, 0x20)), f_q)result := addmod(mulmod(mload(add(transcript, 0x1240)), mload(add(transcript, 0x40)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x60)), f_q), result, f_q)mstore(add(transcript, 0x1280), result) }mstore(add(transcript, 0x12a0), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x720)), f_q))mstore(add(transcript, 0x12c0), mulmod(mload(add(transcript, 0x12a0)), mload(add(transcript, 0x12a0)), f_q))mstore(add(transcript, 0x12e0), mulmod(mload(add(transcript, 0x12c0)), mload(add(transcript, 0x12c0)), f_q))mstore(add(transcript, 0x1300), mulmod(mload(add(transcript, 0x12a0)), mload(add(transcript, 0x12e0)), f_q))mstore(add(transcript, 0x1320), mulmod(mload(add(transcript, 0x1300)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x1340), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x740)), f_q))mstore(add(transcript, 0x1360), mulmod(mload(add(transcript, 0x1340)), mload(add(transcript, 0x1340)), f_q))mstore(add(transcript, 0x1380), mulmod(mload(add(transcript, 0x1360)), mload(add(transcript, 0x1360)), f_q))mstore(add(transcript, 0x13a0), mulmod(mload(add(transcript, 0x1340)), mload(add(transcript, 0x1380)), f_q))mstore(add(transcript, 0x13c0), mulmod(mload(add(transcript, 0x13a0)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x13e0), addmod(mload(add(transcript, 0x1320)), mload(add(transcript, 0x13c0)), f_q))mstore(add(transcript, 0x1400), addmod(mload(add(transcript, 0x13e0)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x1420), mulmod(mload(add(transcript, 0x1400)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1440), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1420)), f_q))mstore(add(transcript, 0x1460), mulmod(mload(add(transcript, 0x1300)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x1480), mulmod(mload(add(transcript, 0x13a0)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x14a0), addmod(mload(add(transcript, 0x1460)), mload(add(transcript, 0x1480)), f_q))mstore(add(transcript, 0x14c0), addmod(mload(add(transcript, 0x14a0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x14e0), mulmod(mload(add(transcript, 0x14c0)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1500), addmod(mload(add(transcript, 0x1440)), mload(add(transcript, 0x14e0)), f_q))mstore(add(transcript, 0x1520), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1500)), f_q))mstore(add(transcript, 0x1540), addmod(mload(add(transcript, 0x1300)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x1560), mulmod(mload(add(transcript, 0x1540)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1580), addmod(mload(add(transcript, 0x1520)), mload(add(transcript, 0x1560)), f_q))mstore(add(transcript, 0x15a0), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1580)), f_q))mstore(add(transcript, 0x15c0), mulmod(mload(add(transcript, 0x660)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x15e0), mulmod(mload(add(transcript, 0x1340)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x1600), addmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x15e0)), f_q))mstore(add(transcript, 0x1620), addmod(mload(add(transcript, 0x1600)), mload(add(transcript, 0x6e0)), f_q))mstore(add(transcript, 0x1640), mulmod(mload(add(transcript, 0x1620)), mload(add(transcript, 0x1620)), f_q))mstore(add(transcript, 0x1660), mulmod(mload(add(transcript, 0x1640)), mload(add(transcript, 0x1640)), f_q))mstore(add(transcript, 0x1680), mulmod(mload(add(transcript, 0x1620)), mload(add(transcript, 0x1660)), f_q))mstore(add(transcript, 0x16a0), mulmod(mload(add(transcript, 0x620)), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q))mstore(add(transcript, 0x16c0), mulmod(mload(add(transcript, 0x640)), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q))mstore(add(transcript, 0x16e0), addmod(mload(add(transcript, 0x16a0)), mload(add(transcript, 0x16c0)), f_q))mstore(add(transcript, 0x1700), addmod(mload(add(transcript, 0x1680)), sub(f_q, mload(add(transcript, 0x16e0))), f_q))mstore(add(transcript, 0x1720), mulmod(mload(add(transcript, 0x1700)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1740), addmod(mload(add(transcript, 0x15a0)), mload(add(transcript, 0x1720)), f_q))mstore(add(transcript, 0x1760), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1740)), f_q))mstore(add(transcript, 0x1780), mulmod(mload(add(transcript, 0x660)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x17a0), mulmod(mload(add(transcript, 0x1340)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x17c0), addmod(mload(add(transcript, 0x1780)), mload(add(transcript, 0x17a0)), f_q))mstore(add(transcript, 0x17e0), addmod(mload(add(transcript, 0x17c0)), mload(add(transcript, 0x700)), f_q))mstore(add(transcript, 0x1800), mulmod(mload(add(transcript, 0x620)), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q))mstore(add(transcript, 0x1820), mulmod(mload(add(transcript, 0x640)), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q))mstore(add(transcript, 0x1840), addmod(mload(add(transcript, 0x1800)), mload(add(transcript, 0x1820)), f_q))mstore(add(transcript, 0x1860), addmod(mload(add(transcript, 0x17e0)), sub(f_q, mload(add(transcript, 0x1840))), f_q))mstore(add(transcript, 0x1880), mulmod(mload(add(transcript, 0x1860)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x18a0), addmod(mload(add(transcript, 0x1760)), mload(add(transcript, 0x1880)), f_q))mstore(add(transcript, 0x18c0), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x18a0)), f_q))mstore(add(transcript, 0x18e0), addmod(1, sub(f_q, mload(add(transcript, 0x780))), f_q))mstore(add(transcript, 0x1900), mulmod(mload(add(transcript, 0x18e0)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x1920), addmod(2, sub(f_q, mload(add(transcript, 0x780))), f_q))mstore(add(transcript, 0x1940), mulmod(mload(add(transcript, 0x1920)), mload(add(transcript, 0x1900)), f_q))mstore(add(transcript, 0x1960), addmod(3, sub(f_q, mload(add(transcript, 0x780))), f_q))mstore(add(transcript, 0x1980), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x1940)), f_q))mstore(add(transcript, 0x19a0), addmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x5e0)), f_q))mstore(add(transcript, 0x19c0), addmod(mload(add(transcript, 0x19a0)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x19e0), mulmod(mload(add(transcript, 0x19c0)), mload(add(transcript, 0x1980)), f_q))mstore(add(transcript, 0x1a00), addmod(mload(add(transcript, 0x18c0)), mload(add(transcript, 0x19e0)), f_q))mstore(add(transcript, 0x1a20), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1a00)), f_q))mstore(add(transcript, 0x1a40), addmod(mload(add(transcript, 0x680)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1a60), mulmod(mload(add(transcript, 0x1a40)), mload(add(transcript, 0x1980)), f_q))mstore(add(transcript, 0x1a80), addmod(mload(add(transcript, 0x1a20)), mload(add(transcript, 0x1a60)), f_q))mstore(add(transcript, 0x1aa0), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1ac0), mulmod(mload(add(transcript, 0x1920)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x1ae0), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x1ac0)), f_q))mstore(add(transcript, 0x1b00), addmod(4, sub(f_q, mload(add(transcript, 0x780))), f_q))mstore(add(transcript, 0x1b20), mulmod(mload(add(transcript, 0x1b00)), mload(add(transcript, 0x1ae0)), f_q))mstore(add(transcript, 0x1b40), mulmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x1b20)), f_q))mstore(add(transcript, 0x1b60), addmod(1, sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x1b80), mulmod(mload(add(transcript, 0x1b60)), mload(add(transcript, 0x1b40)), f_q))mstore(add(transcript, 0x1ba0), addmod(mload(add(transcript, 0x1aa0)), mload(add(transcript, 0x1b80)), f_q))mstore(add(transcript, 0x1bc0), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1ba0)), f_q))mstore(add(transcript, 0x1be0), mulmod(2, mload(add(transcript, 0x660)), f_q))mstore(add(transcript, 0x1c00), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x5e0))), f_q))mstore(add(transcript, 0x1c20), mulmod(mload(add(transcript, 0x1c00)), mload(add(transcript, 0x1be0)), f_q))mstore(add(transcript, 0x1c40), addmod(mload(add(transcript, 0x620)), sub(f_q, mload(add(transcript, 0x5e0))), f_q))mstore(add(transcript, 0x1c60), addmod(mload(add(transcript, 0x1c20)), sub(f_q, mload(add(transcript, 0x1c40))), f_q))mstore(add(transcript, 0x1c80), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1ca0), addmod(mload(add(transcript, 0x1c60)), sub(f_q, mload(add(transcript, 0x1c80))), f_q))mstore(add(transcript, 0x1cc0), mulmod(mload(add(transcript, 0x1ca0)), mload(add(transcript, 0x1b20)), f_q))mstore(add(transcript, 0x1ce0), addmod(mload(add(transcript, 0x1bc0)), mload(add(transcript, 0x1cc0)), f_q))mstore(add(transcript, 0x1d00), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1ce0)), f_q))mstore(add(transcript, 0x1d20), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x1900)), f_q))mstore(add(transcript, 0x1d40), mulmod(mload(add(transcript, 0x1b00)), mload(add(transcript, 0x1d20)), f_q))mstore(add(transcript, 0x1d60), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x600)), f_q))mstore(add(transcript, 0x1d80), addmod(mload(add(transcript, 0x1d60)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x1da0), mulmod(mload(add(transcript, 0x1d80)), mload(add(transcript, 0x1d40)), f_q))mstore(add(transcript, 0x1dc0), addmod(mload(add(transcript, 0x1d00)), mload(add(transcript, 0x1da0)), f_q))mstore(add(transcript, 0x1de0), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e00), addmod(mload(add(transcript, 0x1de0)), mload(add(transcript, 0x1da0)), f_q))mstore(add(transcript, 0x1e20), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1e00)), f_q))mstore(add(transcript, 0x1e40), mulmod(mload(add(transcript, 0x1b00)), mload(add(transcript, 0x1940)), f_q))mstore(add(transcript, 0x1e60), addmod(mload(add(transcript, 0x5e0)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x1e80), addmod(mload(add(transcript, 0x1e60)), 5192296858534827628530496329220096, f_q))mstore(add(transcript, 0x1ea0), addmod(mload(add(transcript, 0x1e80)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x1ec0), mulmod(mload(add(transcript, 0x1ea0)), mload(add(transcript, 0x1e40)), f_q))mstore(add(transcript, 0x1ee0), addmod(mload(add(transcript, 0x1e20)), mload(add(transcript, 0x1ec0)), f_q))mstore(add(transcript, 0x1f00), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x1f20), addmod(1, sub(f_q, mload(add(transcript, 0x8c0))), f_q))mstore(add(transcript, 0x1f40), mulmod(mload(add(transcript, 0x1f20)), mload(add(transcript, 0x1220)), f_q))mstore(add(transcript, 0x1f60), addmod(mload(add(transcript, 0x1f00)), mload(add(transcript, 0x1f40)), f_q))mstore(add(transcript, 0x1f80), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x1f60)), f_q))mstore(add(transcript, 0x1fa0), mulmod(mload(add(transcript, 0x920)), mload(add(transcript, 0x920)), f_q))mstore(add(transcript, 0x1fc0), addmod(mload(add(transcript, 0x1fa0)), sub(f_q, mload(add(transcript, 0x920))), f_q))mstore(add(transcript, 0x1fe0), mulmod(mload(add(transcript, 0x1fc0)), mload(add(transcript, 0x1160)), f_q))mstore(add(transcript, 0x2000), addmod(mload(add(transcript, 0x1f80)), mload(add(transcript, 0x1fe0)), f_q))mstore(add(transcript, 0x2020), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x2000)), f_q))mstore(add(transcript, 0x2040), addmod(mload(add(transcript, 0x920)), sub(f_q, mload(add(transcript, 0x900))), f_q))mstore(add(transcript, 0x2060), mulmod(mload(add(transcript, 0x2040)), mload(add(transcript, 0x1220)), f_q))mstore(add(transcript, 0x2080), addmod(mload(add(transcript, 0x2020)), mload(add(transcript, 0x2060)), f_q))mstore(add(transcript, 0x20a0), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x2080)), f_q))mstore(add(transcript, 0x20c0), addmod(1, sub(f_q, mload(add(transcript, 0x1160))), f_q))mstore(add(transcript, 0x20e0), addmod(mload(add(transcript, 0x1180)), mload(add(transcript, 0x11a0)), f_q))mstore(add(transcript, 0x2100), addmod(mload(add(transcript, 0x20e0)), mload(add(transcript, 0x11c0)), f_q))mstore(add(transcript, 0x2120), addmod(mload(add(transcript, 0x2100)), mload(add(transcript, 0x11e0)), f_q))mstore(add(transcript, 0x2140), addmod(mload(add(transcript, 0x2120)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2160), addmod(mload(add(transcript, 0x20c0)), sub(f_q, mload(add(transcript, 0x2140))), f_q))mstore(add(transcript, 0x2180), mulmod(mload(add(transcript, 0x800)), mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x21a0), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x2180)), f_q))mstore(add(transcript, 0x21c0), addmod(mload(add(transcript, 0x21a0)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x21e0), mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2200), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x21e0)), f_q))mstore(add(transcript, 0x2220), addmod(mload(add(transcript, 0x2200)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2240), mulmod(mload(add(transcript, 0x2220)), mload(add(transcript, 0x21c0)), f_q))mstore(add(transcript, 0x2260), mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2280), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x2260)), f_q))mstore(add(transcript, 0x22a0), addmod(mload(add(transcript, 0x2280)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x22c0), mulmod(mload(add(transcript, 0x22a0)), mload(add(transcript, 0x2240)), f_q))mstore(add(transcript, 0x22e0), mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2300), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x22e0)), f_q))mstore(add(transcript, 0x2320), addmod(mload(add(transcript, 0x2300)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2340), mulmod(mload(add(transcript, 0x2320)), mload(add(transcript, 0x22c0)), f_q))mstore(add(transcript, 0x2360), mulmod(mload(add(transcript, 0x2340)), mload(add(transcript, 0x8e0)), f_q))mstore(add(transcript, 0x2380), mulmod(1, mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x23a0), mulmod(mload(add(transcript, 0x5a0)), mload(add(transcript, 0x2380)), f_q))mstore(add(transcript, 0x23c0), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x23a0)), f_q))mstore(add(transcript, 0x23e0), addmod(mload(add(transcript, 0x23c0)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2400), mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2420), mulmod(mload(add(transcript, 0x5a0)), mload(add(transcript, 0x2400)), f_q))mstore(add(transcript, 0x2440), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x2420)), f_q))mstore(add(transcript, 0x2460), addmod(mload(add(transcript, 0x2440)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2480), mulmod(mload(add(transcript, 0x2460)), mload(add(transcript, 0x23e0)), f_q))mstore(add(transcript, 0x24a0), mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x24c0), mulmod(mload(add(transcript, 0x5a0)), mload(add(transcript, 0x24a0)), f_q))mstore(add(transcript, 0x24e0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x2500), addmod(mload(add(transcript, 0x24e0)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2520), mulmod(mload(add(transcript, 0x2500)), mload(add(transcript, 0x2480)), f_q))mstore(add(transcript, 0x2540), mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2560), mulmod(mload(add(transcript, 0x5a0)), mload(add(transcript, 0x2540)), f_q))mstore(add(transcript, 0x2580), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x2560)), f_q))mstore(add(transcript, 0x25a0), addmod(mload(add(transcript, 0x2580)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x25c0), mulmod(mload(add(transcript, 0x25a0)), mload(add(transcript, 0x2520)), f_q))mstore(add(transcript, 0x25e0), mulmod(mload(add(transcript, 0x25c0)), mload(add(transcript, 0x8c0)), f_q))mstore(add(transcript, 0x2600), addmod(mload(add(transcript, 0x2360)), sub(f_q, mload(add(transcript, 0x25e0))), f_q))mstore(add(transcript, 0x2620), mulmod(mload(add(transcript, 0x2600)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x2640), addmod(mload(add(transcript, 0x20a0)), mload(add(transcript, 0x2620)), f_q))mstore(add(transcript, 0x2660), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x2640)), f_q))mstore(add(transcript, 0x2680), mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x26a0), addmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x2680)), f_q))mstore(add(transcript, 0x26c0), addmod(mload(add(transcript, 0x26a0)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x26e0), mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2700), addmod(mload(add(transcript, 0x1280)), mload(add(transcript, 0x26e0)), f_q))mstore(add(transcript, 0x2720), addmod(mload(add(transcript, 0x2700)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2740), mulmod(mload(add(transcript, 0x2720)), mload(add(transcript, 0x26c0)), f_q))mstore(add(transcript, 0x2760), mulmod(mload(add(transcript, 0x2740)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x2780), mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x27a0), mulmod(mload(add(transcript, 0x5a0)), mload(add(transcript, 0x2780)), f_q))mstore(add(transcript, 0x27c0), addmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x27a0)), f_q))mstore(add(transcript, 0x27e0), addmod(mload(add(transcript, 0x27c0)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2800), mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2820), mulmod(mload(add(transcript, 0x5a0)), mload(add(transcript, 0x2800)), f_q))mstore(add(transcript, 0x2840), addmod(mload(add(transcript, 0x1280)), mload(add(transcript, 0x2820)), f_q))mstore(add(transcript, 0x2860), addmod(mload(add(transcript, 0x2840)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2880), mulmod(mload(add(transcript, 0x2860)), mload(add(transcript, 0x27e0)), f_q))mstore(add(transcript, 0x28a0), mulmod(mload(add(transcript, 0x2880)), mload(add(transcript, 0x920)), f_q))mstore(add(transcript, 0x28c0), addmod(mload(add(transcript, 0x2760)), sub(f_q, mload(add(transcript, 0x28a0))), f_q))mstore(add(transcript, 0x28e0), mulmod(mload(add(transcript, 0x28c0)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x2900), addmod(mload(add(transcript, 0x2660)), mload(add(transcript, 0x28e0)), f_q))mstore(add(transcript, 0x2920), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x2900)), f_q))mstore(add(transcript, 0x2940), addmod(1, sub(f_q, mload(add(transcript, 0x960))), f_q))mstore(add(transcript, 0x2960), mulmod(mload(add(transcript, 0x2940)), mload(add(transcript, 0x1220)), f_q))mstore(add(transcript, 0x2980), addmod(mload(add(transcript, 0x2920)), mload(add(transcript, 0x2960)), f_q))mstore(add(transcript, 0x29a0), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x2980)), f_q))mstore(add(transcript, 0x29c0), mulmod(mload(add(transcript, 0x960)), mload(add(transcript, 0x960)), f_q))mstore(add(transcript, 0x29e0), addmod(mload(add(transcript, 0x29c0)), sub(f_q, mload(add(transcript, 0x960))), f_q))mstore(add(transcript, 0x2a00), mulmod(mload(add(transcript, 0x29e0)), mload(add(transcript, 0x1160)), f_q))mstore(add(transcript, 0x2a20), addmod(mload(add(transcript, 0x29a0)), mload(add(transcript, 0x2a00)), f_q))mstore(add(transcript, 0x2a40), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x2a20)), f_q))mstore(add(transcript, 0x2a60), addmod(mload(add(transcript, 0x9a0)), mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2a80), mulmod(mload(add(transcript, 0x2a60)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2aa0), addmod(mload(add(transcript, 0x9e0)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2ac0), mulmod(mload(add(transcript, 0x2aa0)), mload(add(transcript, 0x2a80)), f_q))mstore(add(transcript, 0x2ae0), mulmod(256, mload(add(transcript, 0x6c0)), f_q))mstore(add(transcript, 0x2b00), addmod(mload(add(transcript, 0x660)), sub(f_q, mload(add(transcript, 0x2ae0))), f_q))mstore(add(transcript, 0x2b20), mulmod(mload(add(transcript, 0x2b00)), mload(add(transcript, 0x760)), f_q))mstore(add(transcript, 0x2b40), addmod(mload(add(transcript, 0x2b20)), mload(add(transcript, 0x240)), f_q))mstore(add(transcript, 0x2b60), mulmod(mload(add(transcript, 0x2b40)), mload(add(transcript, 0x960)), f_q))mstore(add(transcript, 0x2b80), addmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x2a0)), f_q))mstore(add(transcript, 0x2ba0), mulmod(mload(add(transcript, 0x2b80)), mload(add(transcript, 0x2b60)), f_q))mstore(add(transcript, 0x2bc0), addmod(mload(add(transcript, 0x2ac0)), sub(f_q, mload(add(transcript, 0x2ba0))), f_q))mstore(add(transcript, 0x2be0), mulmod(mload(add(transcript, 0x2bc0)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x2c00), addmod(mload(add(transcript, 0x2a40)), mload(add(transcript, 0x2be0)), f_q))mstore(add(transcript, 0x2c20), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x2c00)), f_q))mstore(add(transcript, 0x2c40), addmod(mload(add(transcript, 0x9a0)), sub(f_q, mload(add(transcript, 0x9e0))), f_q))mstore(add(transcript, 0x2c60), mulmod(mload(add(transcript, 0x2c40)), mload(add(transcript, 0x1220)), f_q))mstore(add(transcript, 0x2c80), addmod(mload(add(transcript, 0x2c20)), mload(add(transcript, 0x2c60)), f_q))mstore(add(transcript, 0x2ca0), mulmod(mload(add(transcript, 0x400)), mload(add(transcript, 0x2c80)), f_q))mstore(add(transcript, 0x2cc0), mulmod(mload(add(transcript, 0x2c40)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x2ce0), addmod(mload(add(transcript, 0x9a0)), sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2d00), mulmod(mload(add(transcript, 0x2ce0)), mload(add(transcript, 0x2cc0)), f_q))mstore(add(transcript, 0x2d20), addmod(mload(add(transcript, 0x2ca0)), mload(add(transcript, 0x2d00)), f_q))mstore(add(transcript, 0x2d40), mulmod(mload(add(transcript, 0xcc0)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0x2d60), mulmod(mload(add(transcript, 0x2d40)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0x2d80), mulmod(mload(add(transcript, 0x2d60)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0x2da0), mulmod(mload(add(transcript, 0x2d80)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0x2dc0), mulmod(1, mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0x2de0), mulmod(1, mload(add(transcript, 0x2d40)), f_q))mstore(add(transcript, 0x2e00), mulmod(1, mload(add(transcript, 0x2d60)), f_q))mstore(add(transcript, 0x2e20), mulmod(1, mload(add(transcript, 0x2d80)), f_q))mstore(add(transcript, 0x2e40), mulmod(mload(add(transcript, 0x2d20)), mload(add(transcript, 0xce0)), f_q))mstore(add(transcript, 0x2e60), mulmod(mload(add(transcript, 0xba0)), mload(add(transcript, 0x5a0)), f_q))mstore(add(transcript, 0x2e80), mulmod(mload(add(transcript, 0x5a0)), 1, f_q))mstore(add(transcript, 0x2ea0), addmod(mload(add(transcript, 0xb20)), sub(f_q, mload(add(transcript, 0x2e80))), f_q))mstore(add(transcript, 0x2ec0), mulmod(mload(add(transcript, 0x5a0)), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q))mstore(add(transcript, 0x2ee0), addmod(mload(add(transcript, 0xb20)), sub(f_q, mload(add(transcript, 0x2ec0))), f_q))mstore(add(transcript, 0x2f00), mulmod(mload(add(transcript, 0x5a0)), 9936069627611189518829255670237324269287146421271524553312532036927871056678, f_q))mstore(add(transcript, 0x2f20), addmod(mload(add(transcript, 0xb20)), sub(f_q, mload(add(transcript, 0x2f00))), f_q))mstore(add(transcript, 0x2f40), mulmod(mload(add(transcript, 0x5a0)), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q))mstore(add(transcript, 0x2f60), addmod(mload(add(transcript, 0xb20)), sub(f_q, mload(add(transcript, 0x2f40))), f_q)){ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0xba0)), 19470333053884630052643688193991482022807116448657043890197497819686199857828, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0xba0)), 2417909817954645169602717551265793065741247951758990453500706366889608637789, f_q), f_q), result, f_q)mstore(add(transcript, 0x2f80), result) }{ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0xba0)), 13686227242150003628673578706486473027501243666075718775893288845164412632930, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0xba0)), 10079503758141076467065204586507257535549232608832327988764044976944819876346, f_q), f_q), result, f_q)mstore(add(transcript, 0x2fa0), result) }{ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0xba0)), 18715936898160381416714524359517348601997944075114713669820885373469568354766, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0xba0)), 15375775075249615866494035504844970190233299190010037655541891534730124992278, f_q), f_q), result, f_q)mstore(add(transcript, 0x2fc0), result) }mstore(add(transcript, 0x2fe0), mulmod(1, mload(add(transcript, 0x2ea0)), f_q))mstore(add(transcript, 0x3000), mulmod(mload(add(transcript, 0x2fe0)), mload(add(transcript, 0x2f60)), f_q))mstore(add(transcript, 0x3020), mulmod(mload(add(transcript, 0x3000)), mload(add(transcript, 0x2ee0)), f_q)){ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0x5a0)), 2507682784038009475131574039120954579123549720846755509306663987687515178117, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0x5a0)), 19380560087801265747114831706136320509424814679569278834391540198888293317500, f_q), f_q), result, f_q)mstore(add(transcript, 0x3040), result) }{ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0x5a0)), 19380560087801265747114831706136320509424814679569278834391540198888293317500, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0x5a0)), 13127608231681926238307118629157549705911918406946061530612285695988519678593, f_q), f_q), result, f_q)mstore(add(transcript, 0x3060), result) }{ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0xba0)), 16140595808673403009154643164823336476463527776677864878778453135559733237044, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0xba0)), 5747647063165872213091762580433938612084836623738169464919751051016075258573, f_q), f_q), result, f_q)mstore(add(transcript, 0x3080), result) }{ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0xba0)), 17015964487361230672162623735654618573844832338054897787312333529290879253714, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0xba0)), 3176732791729641355588945816447819802711920387939493967460175841862547409845, f_q), f_q), result, f_q)mstore(add(transcript, 0x30a0), result) }{ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0xba0)), 19187508498431587163140984396833674282302409422288044257471288693049179355069, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0xba0)), 17472297497993506786357772047295541913219081564856233764575529621311665103799, f_q), f_q), result, f_q)mstore(add(transcript, 0x30c0), result) }mstore(add(transcript, 0x30e0), mulmod(mload(add(transcript, 0x3000)), mload(add(transcript, 0x2f20)), f_q)){ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0x5a0)), 16962650269846620577512114154870527443683566727810288380890833831998684679711, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0x5a0)), 4925592601992654644734291590386747644864797672605745962807370354577123815906, f_q), f_q), result, f_q)mstore(add(transcript, 0x3100), result) }{ let result := mulmod(mload(add(transcript, 0xb20)), mulmod(mload(add(transcript, 0x5a0)), 4925592601992654644734291590386747644864797672605745962807370354577123815906, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), mulmod(mload(add(transcript, 0x5a0)), 664623189640884330400307346618971907426870604454565164570654825418724962734, f_q), f_q), result, f_q)mstore(add(transcript, 0x3120), result) }mstore(add(transcript, 0x3140), mulmod(mload(add(transcript, 0x2fe0)), mload(add(transcript, 0x2ee0)), f_q)){ let result := mulmod(mload(add(transcript, 0xb20)), 1, f_q)result := addmod(mulmod(mload(add(transcript, 0x5a0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q)mstore(add(transcript, 0x3160), result) }{ let prod := mload(add(transcript, 0x2f80)) prod := mulmod(mload(add(transcript, 0x2fa0)), prod, f_q) mstore(add(transcript, 0x3180), prod) prod := mulmod(mload(add(transcript, 0x2fc0)), prod, f_q) mstore(add(transcript, 0x31a0), prod) prod := mulmod(mload(add(transcript, 0x3040)), prod, f_q) mstore(add(transcript, 0x31c0), prod) prod := mulmod(mload(add(transcript, 0x3060)), prod, f_q) mstore(add(transcript, 0x31e0), prod) prod := mulmod(mload(add(transcript, 0x3000)), prod, f_q) mstore(add(transcript, 0x3200), prod) prod := mulmod(mload(add(transcript, 0x3080)), prod, f_q) mstore(add(transcript, 0x3220), prod) prod := mulmod(mload(add(transcript, 0x30a0)), prod, f_q) mstore(add(transcript, 0x3240), prod) prod := mulmod(mload(add(transcript, 0x30c0)), prod, f_q) mstore(add(transcript, 0x3260), prod) prod := mulmod(mload(add(transcript, 0x30e0)), prod, f_q) mstore(add(transcript, 0x3280), prod) prod := mulmod(mload(add(transcript, 0x3100)), prod, f_q) mstore(add(transcript, 0x32a0), prod) prod := mulmod(mload(add(transcript, 0x3120)), prod, f_q) mstore(add(transcript, 0x32c0), prod) prod := mulmod(mload(add(transcript, 0x3140)), prod, f_q) mstore(add(transcript, 0x32e0), prod) prod := mulmod(mload(add(transcript, 0x3160)), prod, f_q) mstore(add(transcript, 0x3300), prod) prod := mulmod(mload(add(transcript, 0x2fe0)), prod, f_q) mstore(add(transcript, 0x3320), prod) }mstore(add(transcript, 0x3360), 32)mstore(add(transcript, 0x3380), 32)mstore(add(transcript, 0x33a0), 32)mstore(add(transcript, 0x33c0), mload(add(transcript, 0x3320)))mstore(add(transcript, 0x33e0), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x3400), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3360), 0xc0, add(transcript, 0x3340), 0x20), 1), success){ let inv := mload(add(transcript, 0x3340)) let v v := mload(add(transcript, 0x2fe0)) mstore(add(transcript, 0x2fe0), mulmod(mload(add(transcript, 0x3300)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3160)) mstore(add(transcript, 0x3160), mulmod(mload(add(transcript, 0x32e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3140)) mstore(add(transcript, 0x3140), mulmod(mload(add(transcript, 0x32c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3120)) mstore(add(transcript, 0x3120), mulmod(mload(add(transcript, 0x32a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3100)) mstore(add(transcript, 0x3100), mulmod(mload(add(transcript, 0x3280)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x30e0)) mstore(add(transcript, 0x30e0), mulmod(mload(add(transcript, 0x3260)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x30c0)) mstore(add(transcript, 0x30c0), mulmod(mload(add(transcript, 0x3240)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x30a0)) mstore(add(transcript, 0x30a0), mulmod(mload(add(transcript, 0x3220)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3080)) mstore(add(transcript, 0x3080), mulmod(mload(add(transcript, 0x3200)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3000)) mstore(add(transcript, 0x3000), mulmod(mload(add(transcript, 0x31e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3060)) mstore(add(transcript, 0x3060), mulmod(mload(add(transcript, 0x31c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3040)) mstore(add(transcript, 0x3040), mulmod(mload(add(transcript, 0x31a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x2fc0)) mstore(add(transcript, 0x2fc0), mulmod(mload(add(transcript, 0x3180)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x2fa0)) mstore(add(transcript, 0x2fa0), mulmod(mload(add(transcript, 0x2f80)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x2f80), inv) }{ let result := mload(add(transcript, 0x2f80))result := addmod(mload(add(transcript, 0x2fa0)), result, f_q)result := addmod(mload(add(transcript, 0x2fc0)), result, f_q)mstore(add(transcript, 0x3420), result) }mstore(add(transcript, 0x3440), mulmod(mload(add(transcript, 0x3020)), mload(add(transcript, 0x3000)), f_q)){ let result := mload(add(transcript, 0x3040))result := addmod(mload(add(transcript, 0x3060)), result, f_q)mstore(add(transcript, 0x3460), result) }mstore(add(transcript, 0x3480), mulmod(mload(add(transcript, 0x3020)), mload(add(transcript, 0x30e0)), f_q)){ let result := mload(add(transcript, 0x3080))result := addmod(mload(add(transcript, 0x30a0)), result, f_q)result := addmod(mload(add(transcript, 0x30c0)), result, f_q)mstore(add(transcript, 0x34a0), result) }mstore(add(transcript, 0x34c0), mulmod(mload(add(transcript, 0x3020)), mload(add(transcript, 0x3140)), f_q)){ let result := mload(add(transcript, 0x3100))result := addmod(mload(add(transcript, 0x3120)), result, f_q)mstore(add(transcript, 0x34e0), result) }mstore(add(transcript, 0x3500), mulmod(mload(add(transcript, 0x3020)), mload(add(transcript, 0x2fe0)), f_q)){ let result := mload(add(transcript, 0x3160))mstore(add(transcript, 0x3520), result) }{ let prod := mload(add(transcript, 0x3420)) prod := mulmod(mload(add(transcript, 0x3460)), prod, f_q) mstore(add(transcript, 0x3540), prod) prod := mulmod(mload(add(transcript, 0x34a0)), prod, f_q) mstore(add(transcript, 0x3560), prod) prod := mulmod(mload(add(transcript, 0x34e0)), prod, f_q) mstore(add(transcript, 0x3580), prod) prod := mulmod(mload(add(transcript, 0x3520)), prod, f_q) mstore(add(transcript, 0x35a0), prod) }mstore(add(transcript, 0x35e0), 32)mstore(add(transcript, 0x3600), 32)mstore(add(transcript, 0x3620), 32)mstore(add(transcript, 0x3640), mload(add(transcript, 0x35a0)))mstore(add(transcript, 0x3660), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x3680), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x35e0), 0xc0, add(transcript, 0x35c0), 0x20), 1), success){ let inv := mload(add(transcript, 0x35c0)) let v v := mload(add(transcript, 0x3520)) mstore(add(transcript, 0x3520), mulmod(mload(add(transcript, 0x3580)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x34e0)) mstore(add(transcript, 0x34e0), mulmod(mload(add(transcript, 0x3560)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x34a0)) mstore(add(transcript, 0x34a0), mulmod(mload(add(transcript, 0x3540)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3460)) mstore(add(transcript, 0x3460), mulmod(mload(add(transcript, 0x3420)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x3420), inv) }mstore(add(transcript, 0x36a0), mulmod(mload(add(transcript, 0x3440)), mload(add(transcript, 0x3460)), f_q))mstore(add(transcript, 0x36c0), mulmod(mload(add(transcript, 0x3480)), mload(add(transcript, 0x34a0)), f_q))mstore(add(transcript, 0x36e0), mulmod(mload(add(transcript, 0x34c0)), mload(add(transcript, 0x34e0)), f_q))mstore(add(transcript, 0x3700), mulmod(mload(add(transcript, 0x3500)), mload(add(transcript, 0x3520)), f_q))mstore(add(transcript, 0x3720), mulmod(mload(add(transcript, 0xa20)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3740), mulmod(mload(add(transcript, 0x3720)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3760), mulmod(mload(add(transcript, 0x3740)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3780), mulmod(mload(add(transcript, 0x3760)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x37a0), mulmod(mload(add(transcript, 0x3780)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x37c0), mulmod(mload(add(transcript, 0x37a0)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x37e0), mulmod(mload(add(transcript, 0x37c0)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3800), mulmod(mload(add(transcript, 0x37e0)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3820), mulmod(mload(add(transcript, 0x3800)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3840), mulmod(mload(add(transcript, 0x3820)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3860), mulmod(mload(add(transcript, 0x3840)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3880), mulmod(mload(add(transcript, 0x3860)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x38a0), mulmod(mload(add(transcript, 0x3880)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x38c0), mulmod(mload(add(transcript, 0x38a0)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x38e0), mulmod(mload(add(transcript, 0x38c0)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3900), mulmod(mload(add(transcript, 0x38e0)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3920), mulmod(mload(add(transcript, 0xa80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3940), mulmod(mload(add(transcript, 0x3920)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3960), mulmod(mload(add(transcript, 0x3940)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3980), mulmod(mload(add(transcript, 0x3960)), mload(add(transcript, 0xa80)), f_q)){ let result := mulmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x2f80)), f_q)result := addmod(mulmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x2fa0)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x2fc0)), f_q), result, f_q)mstore(add(transcript, 0x39a0), result) }mstore(add(transcript, 0x39c0), mulmod(mload(add(transcript, 0x39a0)), mload(add(transcript, 0x3420)), f_q))mstore(add(transcript, 0x39e0), mulmod(sub(f_q, mload(add(transcript, 0x39c0))), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x2f80)), f_q)result := addmod(mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x2fa0)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x2fc0)), f_q), result, f_q)mstore(add(transcript, 0x3a00), result) }mstore(add(transcript, 0x3a20), mulmod(mload(add(transcript, 0x3a00)), mload(add(transcript, 0x3420)), f_q))mstore(add(transcript, 0x3a40), mulmod(sub(f_q, mload(add(transcript, 0x3a20))), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3a60), mulmod(1, mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3a80), addmod(mload(add(transcript, 0x39e0)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x3aa0), mulmod(mload(add(transcript, 0x3a80)), 1, f_q))mstore(add(transcript, 0x3ac0), mulmod(mload(add(transcript, 0x3a60)), 1, f_q))mstore(add(transcript, 0x3ae0), mulmod(1, mload(add(transcript, 0x3440)), f_q)){ let result := mulmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x3040)), f_q)result := addmod(mulmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x3060)), f_q), result, f_q)mstore(add(transcript, 0x3b00), result) }mstore(add(transcript, 0x3b20), mulmod(mload(add(transcript, 0x3b00)), mload(add(transcript, 0x36a0)), f_q))mstore(add(transcript, 0x3b40), mulmod(sub(f_q, mload(add(transcript, 0x3b20))), 1, f_q))mstore(add(transcript, 0x3b60), mulmod(mload(add(transcript, 0x3ae0)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x920)), mload(add(transcript, 0x3040)), f_q)result := addmod(mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x3060)), f_q), result, f_q)mstore(add(transcript, 0x3b80), result) }mstore(add(transcript, 0x3ba0), mulmod(mload(add(transcript, 0x3b80)), mload(add(transcript, 0x36a0)), f_q))mstore(add(transcript, 0x3bc0), mulmod(sub(f_q, mload(add(transcript, 0x3ba0))), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3be0), mulmod(mload(add(transcript, 0x3ae0)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x3c00), addmod(mload(add(transcript, 0x3b40)), mload(add(transcript, 0x3bc0)), f_q)){ let result := mulmod(mload(add(transcript, 0x960)), mload(add(transcript, 0x3040)), f_q)result := addmod(mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x3060)), f_q), result, f_q)mstore(add(transcript, 0x3c20), result) }mstore(add(transcript, 0x3c40), mulmod(mload(add(transcript, 0x3c20)), mload(add(transcript, 0x36a0)), f_q))mstore(add(transcript, 0x3c60), mulmod(sub(f_q, mload(add(transcript, 0x3c40))), mload(add(transcript, 0x3720)), f_q))mstore(add(transcript, 0x3c80), mulmod(mload(add(transcript, 0x3ae0)), mload(add(transcript, 0x3720)), f_q))mstore(add(transcript, 0x3ca0), addmod(mload(add(transcript, 0x3c00)), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x3cc0), mulmod(mload(add(transcript, 0x3ca0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ce0), mulmod(mload(add(transcript, 0x3b60)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3d00), mulmod(mload(add(transcript, 0x3be0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3d20), mulmod(mload(add(transcript, 0x3c80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3d40), addmod(mload(add(transcript, 0x3aa0)), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x3d60), mulmod(1, mload(add(transcript, 0x3480)), f_q)){ let result := mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x3080)), f_q)result := addmod(mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x30a0)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x30c0)), f_q), result, f_q)mstore(add(transcript, 0x3d80), result) }mstore(add(transcript, 0x3da0), mulmod(mload(add(transcript, 0x3d80)), mload(add(transcript, 0x36c0)), f_q))mstore(add(transcript, 0x3dc0), mulmod(sub(f_q, mload(add(transcript, 0x3da0))), 1, f_q))mstore(add(transcript, 0x3de0), mulmod(mload(add(transcript, 0x3d60)), 1, f_q))mstore(add(transcript, 0x3e00), mulmod(mload(add(transcript, 0x3dc0)), mload(add(transcript, 0x3920)), f_q))mstore(add(transcript, 0x3e20), mulmod(mload(add(transcript, 0x3de0)), mload(add(transcript, 0x3920)), f_q))mstore(add(transcript, 0x3e40), addmod(mload(add(transcript, 0x3d40)), mload(add(transcript, 0x3e00)), f_q))mstore(add(transcript, 0x3e60), mulmod(1, mload(add(transcript, 0x34c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x9a0)), mload(add(transcript, 0x3100)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x3120)), f_q), result, f_q)mstore(add(transcript, 0x3e80), result) }mstore(add(transcript, 0x3ea0), mulmod(mload(add(transcript, 0x3e80)), mload(add(transcript, 0x36e0)), f_q))mstore(add(transcript, 0x3ec0), mulmod(sub(f_q, mload(add(transcript, 0x3ea0))), 1, f_q))mstore(add(transcript, 0x3ee0), mulmod(mload(add(transcript, 0x3e60)), 1, f_q))mstore(add(transcript, 0x3f00), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3940)), f_q))mstore(add(transcript, 0x3f20), mulmod(mload(add(transcript, 0x3ee0)), mload(add(transcript, 0x3940)), f_q))mstore(add(transcript, 0x3f40), addmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3f00)), f_q))mstore(add(transcript, 0x3f60), mulmod(1, mload(add(transcript, 0x3500)), f_q)){ let result := mulmod(mload(add(transcript, 0x9e0)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x3f80), result) }mstore(add(transcript, 0x3fa0), mulmod(mload(add(transcript, 0x3f80)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x3fc0), mulmod(sub(f_q, mload(add(transcript, 0x3fa0))), 1, f_q))mstore(add(transcript, 0x3fe0), mulmod(mload(add(transcript, 0x3f60)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4000), result) }mstore(add(transcript, 0x4020), mulmod(mload(add(transcript, 0x4000)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4040), mulmod(sub(f_q, mload(add(transcript, 0x4020))), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x4060), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0xa20)), f_q))mstore(add(transcript, 0x4080), addmod(mload(add(transcript, 0x3fc0)), mload(add(transcript, 0x4040)), f_q)){ let result := mulmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x40a0), result) }mstore(add(transcript, 0x40c0), mulmod(mload(add(transcript, 0x40a0)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x40e0), mulmod(sub(f_q, mload(add(transcript, 0x40c0))), mload(add(transcript, 0x3720)), f_q))mstore(add(transcript, 0x4100), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3720)), f_q))mstore(add(transcript, 0x4120), addmod(mload(add(transcript, 0x4080)), mload(add(transcript, 0x40e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4140), result) }mstore(add(transcript, 0x4160), mulmod(mload(add(transcript, 0x4140)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4180), mulmod(sub(f_q, mload(add(transcript, 0x4160))), mload(add(transcript, 0x3740)), f_q))mstore(add(transcript, 0x41a0), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3740)), f_q))mstore(add(transcript, 0x41c0), addmod(mload(add(transcript, 0x4120)), mload(add(transcript, 0x4180)), f_q)){ let result := mulmod(mload(add(transcript, 0x740)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x41e0), result) }mstore(add(transcript, 0x4200), mulmod(mload(add(transcript, 0x41e0)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4220), mulmod(sub(f_q, mload(add(transcript, 0x4200))), mload(add(transcript, 0x3760)), f_q))mstore(add(transcript, 0x4240), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3760)), f_q))mstore(add(transcript, 0x4260), addmod(mload(add(transcript, 0x41c0)), mload(add(transcript, 0x4220)), f_q)){ let result := mulmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4280), result) }mstore(add(transcript, 0x42a0), mulmod(mload(add(transcript, 0x4280)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x42c0), mulmod(sub(f_q, mload(add(transcript, 0x42a0))), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x42e0), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x4300), addmod(mload(add(transcript, 0x4260)), mload(add(transcript, 0x42c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x780)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4320), result) }mstore(add(transcript, 0x4340), mulmod(mload(add(transcript, 0x4320)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4360), mulmod(sub(f_q, mload(add(transcript, 0x4340))), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4380), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x43a0), addmod(mload(add(transcript, 0x4300)), mload(add(transcript, 0x4360)), f_q)){ let result := mulmod(mload(add(transcript, 0x7a0)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x43c0), result) }mstore(add(transcript, 0x43e0), mulmod(mload(add(transcript, 0x43c0)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4400), mulmod(sub(f_q, mload(add(transcript, 0x43e0))), mload(add(transcript, 0x37c0)), f_q))mstore(add(transcript, 0x4420), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x37c0)), f_q))mstore(add(transcript, 0x4440), addmod(mload(add(transcript, 0x43a0)), mload(add(transcript, 0x4400)), f_q)){ let result := mulmod(mload(add(transcript, 0x7c0)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4460), result) }mstore(add(transcript, 0x4480), mulmod(mload(add(transcript, 0x4460)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x44a0), mulmod(sub(f_q, mload(add(transcript, 0x4480))), mload(add(transcript, 0x37e0)), f_q))mstore(add(transcript, 0x44c0), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x37e0)), f_q))mstore(add(transcript, 0x44e0), addmod(mload(add(transcript, 0x4440)), mload(add(transcript, 0x44a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x800)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4500), result) }mstore(add(transcript, 0x4520), mulmod(mload(add(transcript, 0x4500)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4540), mulmod(sub(f_q, mload(add(transcript, 0x4520))), mload(add(transcript, 0x3800)), f_q))mstore(add(transcript, 0x4560), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3800)), f_q))mstore(add(transcript, 0x4580), addmod(mload(add(transcript, 0x44e0)), mload(add(transcript, 0x4540)), f_q)){ let result := mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x45a0), result) }mstore(add(transcript, 0x45c0), mulmod(mload(add(transcript, 0x45a0)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x45e0), mulmod(sub(f_q, mload(add(transcript, 0x45c0))), mload(add(transcript, 0x3820)), f_q))mstore(add(transcript, 0x4600), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3820)), f_q))mstore(add(transcript, 0x4620), addmod(mload(add(transcript, 0x4580)), mload(add(transcript, 0x45e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4640), result) }mstore(add(transcript, 0x4660), mulmod(mload(add(transcript, 0x4640)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4680), mulmod(sub(f_q, mload(add(transcript, 0x4660))), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x46a0), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x46c0), addmod(mload(add(transcript, 0x4620)), mload(add(transcript, 0x4680)), f_q)){ let result := mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x46e0), result) }mstore(add(transcript, 0x4700), mulmod(mload(add(transcript, 0x46e0)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4720), mulmod(sub(f_q, mload(add(transcript, 0x4700))), mload(add(transcript, 0x3860)), f_q))mstore(add(transcript, 0x4740), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3860)), f_q))mstore(add(transcript, 0x4760), addmod(mload(add(transcript, 0x46c0)), mload(add(transcript, 0x4720)), f_q)){ let result := mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4780), result) }mstore(add(transcript, 0x47a0), mulmod(mload(add(transcript, 0x4780)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x47c0), mulmod(sub(f_q, mload(add(transcript, 0x47a0))), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x47e0), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x4800), addmod(mload(add(transcript, 0x4760)), mload(add(transcript, 0x47c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4820), result) }mstore(add(transcript, 0x4840), mulmod(mload(add(transcript, 0x4820)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4860), mulmod(sub(f_q, mload(add(transcript, 0x4840))), mload(add(transcript, 0x38a0)), f_q))mstore(add(transcript, 0x4880), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x38a0)), f_q))mstore(add(transcript, 0x48a0), addmod(mload(add(transcript, 0x4800)), mload(add(transcript, 0x4860)), f_q))mstore(add(transcript, 0x48c0), mulmod(mload(add(transcript, 0x2dc0)), mload(add(transcript, 0x3500)), f_q))mstore(add(transcript, 0x48e0), mulmod(mload(add(transcript, 0x2de0)), mload(add(transcript, 0x3500)), f_q))mstore(add(transcript, 0x4900), mulmod(mload(add(transcript, 0x2e00)), mload(add(transcript, 0x3500)), f_q))mstore(add(transcript, 0x4920), mulmod(mload(add(transcript, 0x2e20)), mload(add(transcript, 0x3500)), f_q)){ let result := mulmod(mload(add(transcript, 0x2e40)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4940), result) }mstore(add(transcript, 0x4960), mulmod(mload(add(transcript, 0x4940)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4980), mulmod(sub(f_q, mload(add(transcript, 0x4960))), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x49a0), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x49c0), mulmod(mload(add(transcript, 0x48c0)), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x49e0), mulmod(mload(add(transcript, 0x48e0)), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x4a00), mulmod(mload(add(transcript, 0x4900)), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x4a20), mulmod(mload(add(transcript, 0x4920)), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x4a40), addmod(mload(add(transcript, 0x48a0)), mload(add(transcript, 0x4980)), f_q)){ let result := mulmod(mload(add(transcript, 0x7e0)), mload(add(transcript, 0x3160)), f_q)mstore(add(transcript, 0x4a60), result) }mstore(add(transcript, 0x4a80), mulmod(mload(add(transcript, 0x4a60)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x4aa0), mulmod(sub(f_q, mload(add(transcript, 0x4a80))), mload(add(transcript, 0x38e0)), f_q))mstore(add(transcript, 0x4ac0), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x38e0)), f_q))mstore(add(transcript, 0x4ae0), addmod(mload(add(transcript, 0x4a40)), mload(add(transcript, 0x4aa0)), f_q))mstore(add(transcript, 0x4b00), mulmod(mload(add(transcript, 0x4ae0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4b20), mulmod(mload(add(transcript, 0x3fe0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4b40), mulmod(mload(add(transcript, 0x4060)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4b60), mulmod(mload(add(transcript, 0x4100)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4b80), mulmod(mload(add(transcript, 0x41a0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4ba0), mulmod(mload(add(transcript, 0x4240)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4bc0), mulmod(mload(add(transcript, 0x42e0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4be0), mulmod(mload(add(transcript, 0x4380)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4c00), mulmod(mload(add(transcript, 0x4420)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4c20), mulmod(mload(add(transcript, 0x44c0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4c40), mulmod(mload(add(transcript, 0x4560)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4c60), mulmod(mload(add(transcript, 0x4600)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4c80), mulmod(mload(add(transcript, 0x46a0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4ca0), mulmod(mload(add(transcript, 0x4740)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4cc0), mulmod(mload(add(transcript, 0x47e0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4ce0), mulmod(mload(add(transcript, 0x4880)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4d00), mulmod(mload(add(transcript, 0x49a0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4d20), mulmod(mload(add(transcript, 0x49c0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4d40), mulmod(mload(add(transcript, 0x49e0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4d60), mulmod(mload(add(transcript, 0x4a00)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4d80), mulmod(mload(add(transcript, 0x4a20)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4da0), mulmod(mload(add(transcript, 0x4ac0)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x4dc0), addmod(mload(add(transcript, 0x3f40)), mload(add(transcript, 0x4b00)), f_q))mstore(add(transcript, 0x4de0), mulmod(1, mload(add(transcript, 0x3020)), f_q))mstore(add(transcript, 0x4e00), mulmod(1, mload(add(transcript, 0xb20)), f_q))mstore(add(transcript, 0x4e20), 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(add(transcript, 0x4e40), 0x0000000000000000000000000000000000000000000000000000000000000002)mstore(add(transcript, 0x4e60), mload(add(transcript, 0x4dc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x4e20), 0x60, add(transcript, 0x4e20), 0x40), 1), success)mstore(add(transcript, 0x4e80), mload(add(transcript, 0x4e20))) mstore(add(transcript, 0x4ea0), mload(add(transcript, 0x4e40)))mstore(add(transcript, 0x4ec0), mload(add(transcript, 0x80))) mstore(add(transcript, 0x4ee0), mload(add(transcript, 0xa0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x4e80), 0x80, add(transcript, 0x4e80), 0x40), 1), success)mstore(add(transcript, 0x4f00), mload(add(transcript, 0xc0))) mstore(add(transcript, 0x4f20), mload(add(transcript, 0xe0)))mstore(add(transcript, 0x4f40), mload(add(transcript, 0x3ac0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x4f00), 0x60, add(transcript, 0x4f00), 0x40), 1), success)mstore(add(transcript, 0x4f60), mload(add(transcript, 0x4e80))) mstore(add(transcript, 0x4f80), mload(add(transcript, 0x4ea0)))mstore(add(transcript, 0x4fa0), mload(add(transcript, 0x4f00))) mstore(add(transcript, 0x4fc0), mload(add(transcript, 0x4f20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x4f60), 0x80, add(transcript, 0x4f60), 0x40), 1), success)mstore(add(transcript, 0x4fe0), mload(add(transcript, 0x100))) mstore(add(transcript, 0x5000), mload(add(transcript, 0x120)))mstore(add(transcript, 0x5020), mload(add(transcript, 0x3ce0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x4fe0), 0x60, add(transcript, 0x4fe0), 0x40), 1), success)mstore(add(transcript, 0x5040), mload(add(transcript, 0x4f60))) mstore(add(transcript, 0x5060), mload(add(transcript, 0x4f80)))mstore(add(transcript, 0x5080), mload(add(transcript, 0x4fe0))) mstore(add(transcript, 0x50a0), mload(add(transcript, 0x5000)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5040), 0x80, add(transcript, 0x5040), 0x40), 1), success)mstore(add(transcript, 0x50c0), mload(add(transcript, 0x320))) mstore(add(transcript, 0x50e0), mload(add(transcript, 0x340)))mstore(add(transcript, 0x5100), mload(add(transcript, 0x3d00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x50c0), 0x60, add(transcript, 0x50c0), 0x40), 1), success)mstore(add(transcript, 0x5120), mload(add(transcript, 0x5040))) mstore(add(transcript, 0x5140), mload(add(transcript, 0x5060)))mstore(add(transcript, 0x5160), mload(add(transcript, 0x50c0))) mstore(add(transcript, 0x5180), mload(add(transcript, 0x50e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5120), 0x80, add(transcript, 0x5120), 0x40), 1), success)mstore(add(transcript, 0x51a0), mload(add(transcript, 0x360))) mstore(add(transcript, 0x51c0), mload(add(transcript, 0x380)))mstore(add(transcript, 0x51e0), mload(add(transcript, 0x3d20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x51a0), 0x60, add(transcript, 0x51a0), 0x40), 1), success)mstore(add(transcript, 0x5200), mload(add(transcript, 0x5120))) mstore(add(transcript, 0x5220), mload(add(transcript, 0x5140)))mstore(add(transcript, 0x5240), mload(add(transcript, 0x51a0))) mstore(add(transcript, 0x5260), mload(add(transcript, 0x51c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5200), 0x80, add(transcript, 0x5200), 0x40), 1), success)mstore(add(transcript, 0x5280), mload(add(transcript, 0x2e0))) mstore(add(transcript, 0x52a0), mload(add(transcript, 0x300)))mstore(add(transcript, 0x52c0), mload(add(transcript, 0x3e20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5280), 0x60, add(transcript, 0x5280), 0x40), 1), success)mstore(add(transcript, 0x52e0), mload(add(transcript, 0x5200))) mstore(add(transcript, 0x5300), mload(add(transcript, 0x5220)))mstore(add(transcript, 0x5320), mload(add(transcript, 0x5280))) mstore(add(transcript, 0x5340), mload(add(transcript, 0x52a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x52e0), 0x80, add(transcript, 0x52e0), 0x40), 1), success)mstore(add(transcript, 0x5360), mload(add(transcript, 0x1a0))) mstore(add(transcript, 0x5380), mload(add(transcript, 0x1c0)))mstore(add(transcript, 0x53a0), mload(add(transcript, 0x3f20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5360), 0x60, add(transcript, 0x5360), 0x40), 1), success)mstore(add(transcript, 0x53c0), mload(add(transcript, 0x52e0))) mstore(add(transcript, 0x53e0), mload(add(transcript, 0x5300)))mstore(add(transcript, 0x5400), mload(add(transcript, 0x5360))) mstore(add(transcript, 0x5420), mload(add(transcript, 0x5380)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x53c0), 0x80, add(transcript, 0x53c0), 0x40), 1), success)mstore(add(transcript, 0x5440), mload(add(transcript, 0x1e0))) mstore(add(transcript, 0x5460), mload(add(transcript, 0x200)))mstore(add(transcript, 0x5480), mload(add(transcript, 0x4b20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5440), 0x60, add(transcript, 0x5440), 0x40), 1), success)mstore(add(transcript, 0x54a0), mload(add(transcript, 0x53c0))) mstore(add(transcript, 0x54c0), mload(add(transcript, 0x53e0)))mstore(add(transcript, 0x54e0), mload(add(transcript, 0x5440))) mstore(add(transcript, 0x5500), mload(add(transcript, 0x5460)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x54a0), 0x80, add(transcript, 0x54a0), 0x40), 1), success)mstore(add(transcript, 0x5520), 0x0655d62979dc062dc1e8c15334bf17cf5c7e6352219c0bd0b0cc039598d9a669) mstore(add(transcript, 0x5540), 0x019589d3002f6a0ded46a69053f0c05e7a7ca45339b3d2bae85d00f26ac0f33e)mstore(add(transcript, 0x5560), mload(add(transcript, 0x4b40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5520), 0x60, add(transcript, 0x5520), 0x40), 1), success)mstore(add(transcript, 0x5580), mload(add(transcript, 0x54a0))) mstore(add(transcript, 0x55a0), mload(add(transcript, 0x54c0)))mstore(add(transcript, 0x55c0), mload(add(transcript, 0x5520))) mstore(add(transcript, 0x55e0), mload(add(transcript, 0x5540)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5580), 0x80, add(transcript, 0x5580), 0x40), 1), success)mstore(add(transcript, 0x5600), 0x1eab999592385208b42a12dcc047763ee5cf12052eb4b0d9a7a286e043f3df9f) mstore(add(transcript, 0x5620), 0x18887eb3c646ffd4961226c91bac9661004798b1fc6a39c43f9a6d1d03767194)mstore(add(transcript, 0x5640), mload(add(transcript, 0x4b60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5600), 0x60, add(transcript, 0x5600), 0x40), 1), success)mstore(add(transcript, 0x5660), mload(add(transcript, 0x5580))) mstore(add(transcript, 0x5680), mload(add(transcript, 0x55a0)))mstore(add(transcript, 0x56a0), mload(add(transcript, 0x5600))) mstore(add(transcript, 0x56c0), mload(add(transcript, 0x5620)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5660), 0x80, add(transcript, 0x5660), 0x40), 1), success)mstore(add(transcript, 0x56e0), 0x076806058b02e1b5e99b2f2e8eee613194f8df73481659f5938baacd64e4d7b8) mstore(add(transcript, 0x5700), 0x05ae81644b244dceea5350a84a79cbf0a199bbd6c1fad9887423f8c8048e6039)mstore(add(transcript, 0x5720), mload(add(transcript, 0x4b80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x56e0), 0x60, add(transcript, 0x56e0), 0x40), 1), success)mstore(add(transcript, 0x5740), mload(add(transcript, 0x5660))) mstore(add(transcript, 0x5760), mload(add(transcript, 0x5680)))mstore(add(transcript, 0x5780), mload(add(transcript, 0x56e0))) mstore(add(transcript, 0x57a0), mload(add(transcript, 0x5700)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5740), 0x80, add(transcript, 0x5740), 0x40), 1), success)mstore(add(transcript, 0x57c0), 0x0438873fc00231ae527efcf74d9092f5059dfa05275cbe7381e948fe3b7b61d8) mstore(add(transcript, 0x57e0), 0x03c0f314c93403792ba86ec3841b3080f2f7cd092c6bcb632cdbc2122a13cdef)mstore(add(transcript, 0x5800), mload(add(transcript, 0x4ba0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x57c0), 0x60, add(transcript, 0x57c0), 0x40), 1), success)mstore(add(transcript, 0x5820), mload(add(transcript, 0x5740))) mstore(add(transcript, 0x5840), mload(add(transcript, 0x5760)))mstore(add(transcript, 0x5860), mload(add(transcript, 0x57c0))) mstore(add(transcript, 0x5880), mload(add(transcript, 0x57e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5820), 0x80, add(transcript, 0x5820), 0x40), 1), success)mstore(add(transcript, 0x58a0), 0x2b12b132a6261ad60249147599cae0d5b3547e510deabba65526d130f04f2402) mstore(add(transcript, 0x58c0), 0x13e3c02ce00f6b7e00d5b099eda5f1155956ae83899a2d59cefcb00dad66a7f6)mstore(add(transcript, 0x58e0), mload(add(transcript, 0x4bc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x58a0), 0x60, add(transcript, 0x58a0), 0x40), 1), success)mstore(add(transcript, 0x5900), mload(add(transcript, 0x5820))) mstore(add(transcript, 0x5920), mload(add(transcript, 0x5840)))mstore(add(transcript, 0x5940), mload(add(transcript, 0x58a0))) mstore(add(transcript, 0x5960), mload(add(transcript, 0x58c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5900), 0x80, add(transcript, 0x5900), 0x40), 1), success)mstore(add(transcript, 0x5980), 0x0ed83370277e0fd35e8258dd5630ce0ce3491fdf7e166d293745635b0cc4eba5) mstore(add(transcript, 0x59a0), 0x03994e7e77ad58072b78757700ab0b79247f2e462b0cf6a5a18b607414c095db)mstore(add(transcript, 0x59c0), mload(add(transcript, 0x4be0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5980), 0x60, add(transcript, 0x5980), 0x40), 1), success)mstore(add(transcript, 0x59e0), mload(add(transcript, 0x5900))) mstore(add(transcript, 0x5a00), mload(add(transcript, 0x5920)))mstore(add(transcript, 0x5a20), mload(add(transcript, 0x5980))) mstore(add(transcript, 0x5a40), mload(add(transcript, 0x59a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x59e0), 0x80, add(transcript, 0x59e0), 0x40), 1), success)mstore(add(transcript, 0x5a60), 0x23ba4bc49baab563e9d5bf07da231a4496d35b6bc782dbbd76135fe44c31cbcf) mstore(add(transcript, 0x5a80), 0x28b88097e7edf1b2904f6c25c1e30ca0e38c74a52125b2995c4cf0a750683854)mstore(add(transcript, 0x5aa0), mload(add(transcript, 0x4c00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5a60), 0x60, add(transcript, 0x5a60), 0x40), 1), success)mstore(add(transcript, 0x5ac0), mload(add(transcript, 0x59e0))) mstore(add(transcript, 0x5ae0), mload(add(transcript, 0x5a00)))mstore(add(transcript, 0x5b00), mload(add(transcript, 0x5a60))) mstore(add(transcript, 0x5b20), mload(add(transcript, 0x5a80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ac0), 0x80, add(transcript, 0x5ac0), 0x40), 1), success)mstore(add(transcript, 0x5b40), 0x17dcbba0bbe2d24566de620998f62ff54ea5302ada6aeb18028b61b4dc19bbd3) mstore(add(transcript, 0x5b60), 0x0e1f908007a5c2cc934426c26de7206c53fa10c79d63ef52ee91bfb568c72fbd)mstore(add(transcript, 0x5b80), mload(add(transcript, 0x4c20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5b40), 0x60, add(transcript, 0x5b40), 0x40), 1), success)mstore(add(transcript, 0x5ba0), mload(add(transcript, 0x5ac0))) mstore(add(transcript, 0x5bc0), mload(add(transcript, 0x5ae0)))mstore(add(transcript, 0x5be0), mload(add(transcript, 0x5b40))) mstore(add(transcript, 0x5c00), mload(add(transcript, 0x5b60)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ba0), 0x80, add(transcript, 0x5ba0), 0x40), 1), success)mstore(add(transcript, 0x5c20), 0x2c7823f99cb2adb716becb960914ffa1d6e2f257875fdd03c2bee52ef571d41e) mstore(add(transcript, 0x5c40), 0x09ab83ebc6803e65b2e6831c8706d9a134f6b1cf6f6ec5c2697afee095320ee1)mstore(add(transcript, 0x5c60), mload(add(transcript, 0x4c40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5c20), 0x60, add(transcript, 0x5c20), 0x40), 1), success)mstore(add(transcript, 0x5c80), mload(add(transcript, 0x5ba0))) mstore(add(transcript, 0x5ca0), mload(add(transcript, 0x5bc0)))mstore(add(transcript, 0x5cc0), mload(add(transcript, 0x5c20))) mstore(add(transcript, 0x5ce0), mload(add(transcript, 0x5c40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5c80), 0x80, add(transcript, 0x5c80), 0x40), 1), success)mstore(add(transcript, 0x5d00), 0x2dc12c205152bfacc354c838225571172c215e01a64de6a2ca6665c70937ac58) mstore(add(transcript, 0x5d20), 0x0449eb529f0038a2bd2f6c0b6213a70488b69b479d90a953579e4c9d45621b85)mstore(add(transcript, 0x5d40), mload(add(transcript, 0x4c60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5d00), 0x60, add(transcript, 0x5d00), 0x40), 1), success)mstore(add(transcript, 0x5d60), mload(add(transcript, 0x5c80))) mstore(add(transcript, 0x5d80), mload(add(transcript, 0x5ca0)))mstore(add(transcript, 0x5da0), mload(add(transcript, 0x5d00))) mstore(add(transcript, 0x5dc0), mload(add(transcript, 0x5d20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5d60), 0x80, add(transcript, 0x5d60), 0x40), 1), success)mstore(add(transcript, 0x5de0), 0x09a2ab3913a4770fd50f6ba9ec4ce0b3178b54d7bfca5b42fe7e8e1ce5cf60a9) mstore(add(transcript, 0x5e00), 0x13ec31f94026569c4bb76e2c4ceaa3e6525438ffb4a7a69cde61f6d77b93bad7)mstore(add(transcript, 0x5e20), mload(add(transcript, 0x4c80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5de0), 0x60, add(transcript, 0x5de0), 0x40), 1), success)mstore(add(transcript, 0x5e40), mload(add(transcript, 0x5d60))) mstore(add(transcript, 0x5e60), mload(add(transcript, 0x5d80)))mstore(add(transcript, 0x5e80), mload(add(transcript, 0x5de0))) mstore(add(transcript, 0x5ea0), mload(add(transcript, 0x5e00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5e40), 0x80, add(transcript, 0x5e40), 0x40), 1), success)mstore(add(transcript, 0x5ec0), 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) mstore(add(transcript, 0x5ee0), 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3)mstore(add(transcript, 0x5f00), mload(add(transcript, 0x4ca0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5ec0), 0x60, add(transcript, 0x5ec0), 0x40), 1), success)mstore(add(transcript, 0x5f20), mload(add(transcript, 0x5e40))) mstore(add(transcript, 0x5f40), mload(add(transcript, 0x5e60)))mstore(add(transcript, 0x5f60), mload(add(transcript, 0x5ec0))) mstore(add(transcript, 0x5f80), mload(add(transcript, 0x5ee0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5f20), 0x80, add(transcript, 0x5f20), 0x40), 1), success)mstore(add(transcript, 0x5fa0), 0x02a9a77d8e6f6fd89f33ba56fe45f6f5c907e50ba28cdd4198acfb562eb21103) mstore(add(transcript, 0x5fc0), 0x23abee68d83c2d6632576e5e95ca01a61e5e3e6d9438c2ac6428c8b6edfe2aba)mstore(add(transcript, 0x5fe0), mload(add(transcript, 0x4cc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5fa0), 0x60, add(transcript, 0x5fa0), 0x40), 1), success)mstore(add(transcript, 0x6000), mload(add(transcript, 0x5f20))) mstore(add(transcript, 0x6020), mload(add(transcript, 0x5f40)))mstore(add(transcript, 0x6040), mload(add(transcript, 0x5fa0))) mstore(add(transcript, 0x6060), mload(add(transcript, 0x5fc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6000), 0x80, add(transcript, 0x6000), 0x40), 1), success)mstore(add(transcript, 0x6080), 0x2cf36d36bfacbe1a8d8c626aefa75ac0feb46b725989a8e6fabed074bf9f6af7) mstore(add(transcript, 0x60a0), 0x060fded3ed5ec56d9e0064d73c472245a4c4b6ec371e9808692bf7f259d3b730)mstore(add(transcript, 0x60c0), mload(add(transcript, 0x4ce0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6080), 0x60, add(transcript, 0x6080), 0x40), 1), success)mstore(add(transcript, 0x60e0), mload(add(transcript, 0x6000))) mstore(add(transcript, 0x6100), mload(add(transcript, 0x6020)))mstore(add(transcript, 0x6120), mload(add(transcript, 0x6080))) mstore(add(transcript, 0x6140), mload(add(transcript, 0x60a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x60e0), 0x80, add(transcript, 0x60e0), 0x40), 1), success)mstore(add(transcript, 0x6160), mload(add(transcript, 0x440))) mstore(add(transcript, 0x6180), mload(add(transcript, 0x460)))mstore(add(transcript, 0x61a0), mload(add(transcript, 0x4d00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6160), 0x60, add(transcript, 0x6160), 0x40), 1), success)mstore(add(transcript, 0x61c0), mload(add(transcript, 0x60e0))) mstore(add(transcript, 0x61e0), mload(add(transcript, 0x6100)))mstore(add(transcript, 0x6200), mload(add(transcript, 0x6160))) mstore(add(transcript, 0x6220), mload(add(transcript, 0x6180)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x61c0), 0x80, add(transcript, 0x61c0), 0x40), 1), success)mstore(add(transcript, 0x6240), mload(add(transcript, 0x480))) mstore(add(transcript, 0x6260), mload(add(transcript, 0x4a0)))mstore(add(transcript, 0x6280), mload(add(transcript, 0x4d20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6240), 0x60, add(transcript, 0x6240), 0x40), 1), success)mstore(add(transcript, 0x62a0), mload(add(transcript, 0x61c0))) mstore(add(transcript, 0x62c0), mload(add(transcript, 0x61e0)))mstore(add(transcript, 0x62e0), mload(add(transcript, 0x6240))) mstore(add(transcript, 0x6300), mload(add(transcript, 0x6260)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x62a0), 0x80, add(transcript, 0x62a0), 0x40), 1), success)mstore(add(transcript, 0x6320), mload(add(transcript, 0x4c0))) mstore(add(transcript, 0x6340), mload(add(transcript, 0x4e0)))mstore(add(transcript, 0x6360), mload(add(transcript, 0x4d40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6320), 0x60, add(transcript, 0x6320), 0x40), 1), success)mstore(add(transcript, 0x6380), mload(add(transcript, 0x62a0))) mstore(add(transcript, 0x63a0), mload(add(transcript, 0x62c0)))mstore(add(transcript, 0x63c0), mload(add(transcript, 0x6320))) mstore(add(transcript, 0x63e0), mload(add(transcript, 0x6340)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6380), 0x80, add(transcript, 0x6380), 0x40), 1), success)mstore(add(transcript, 0x6400), mload(add(transcript, 0x500))) mstore(add(transcript, 0x6420), mload(add(transcript, 0x520)))mstore(add(transcript, 0x6440), mload(add(transcript, 0x4d60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6400), 0x60, add(transcript, 0x6400), 0x40), 1), success)mstore(add(transcript, 0x6460), mload(add(transcript, 0x6380))) mstore(add(transcript, 0x6480), mload(add(transcript, 0x63a0)))mstore(add(transcript, 0x64a0), mload(add(transcript, 0x6400))) mstore(add(transcript, 0x64c0), mload(add(transcript, 0x6420)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6460), 0x80, add(transcript, 0x6460), 0x40), 1), success)mstore(add(transcript, 0x64e0), mload(add(transcript, 0x540))) mstore(add(transcript, 0x6500), mload(add(transcript, 0x560)))mstore(add(transcript, 0x6520), mload(add(transcript, 0x4d80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x64e0), 0x60, add(transcript, 0x64e0), 0x40), 1), success)mstore(add(transcript, 0x6540), mload(add(transcript, 0x6460))) mstore(add(transcript, 0x6560), mload(add(transcript, 0x6480)))mstore(add(transcript, 0x6580), mload(add(transcript, 0x64e0))) mstore(add(transcript, 0x65a0), mload(add(transcript, 0x6500)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6540), 0x80, add(transcript, 0x6540), 0x40), 1), success)mstore(add(transcript, 0x65c0), mload(add(transcript, 0x3a0))) mstore(add(transcript, 0x65e0), mload(add(transcript, 0x3c0)))mstore(add(transcript, 0x6600), mload(add(transcript, 0x4da0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x65c0), 0x60, add(transcript, 0x65c0), 0x40), 1), success)mstore(add(transcript, 0x6620), mload(add(transcript, 0x6540))) mstore(add(transcript, 0x6640), mload(add(transcript, 0x6560)))mstore(add(transcript, 0x6660), mload(add(transcript, 0x65c0))) mstore(add(transcript, 0x6680), mload(add(transcript, 0x65e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6620), 0x80, add(transcript, 0x6620), 0x40), 1), success)mstore(add(transcript, 0x66a0), mload(add(transcript, 0xac0))) mstore(add(transcript, 0x66c0), mload(add(transcript, 0xae0)))mstore(add(transcript, 0x66e0), sub(f_q, mload(add(transcript, 0x4de0))))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x66a0), 0x60, add(transcript, 0x66a0), 0x40), 1), success)mstore(add(transcript, 0x6700), mload(add(transcript, 0x6620))) mstore(add(transcript, 0x6720), mload(add(transcript, 0x6640)))mstore(add(transcript, 0x6740), mload(add(transcript, 0x66a0))) mstore(add(transcript, 0x6760), mload(add(transcript, 0x66c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6700), 0x80, add(transcript, 0x6700), 0x40), 1), success)mstore(add(transcript, 0x6780), mload(add(transcript, 0xb60))) mstore(add(transcript, 0x67a0), mload(add(transcript, 0xb80)))mstore(add(transcript, 0x67c0), mload(add(transcript, 0x4e00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6780), 0x60, add(transcript, 0x6780), 0x40), 1), success)mstore(add(transcript, 0x67e0), mload(add(transcript, 0x6700))) mstore(add(transcript, 0x6800), mload(add(transcript, 0x6720)))mstore(add(transcript, 0x6820), mload(add(transcript, 0x6780))) mstore(add(transcript, 0x6840), mload(add(transcript, 0x67a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x67e0), 0x80, add(transcript, 0x67e0), 0x40), 1), success)mstore(add(transcript, 0x6860), mload(add(transcript, 0x67e0))) mstore(add(transcript, 0x6880), mload(add(transcript, 0x6800)))mstore(add(transcript, 0x68a0), 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(add(transcript, 0x68c0), 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(add(transcript, 0x68e0), 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(add(transcript, 0x6900), 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)mstore(add(transcript, 0x6920), mload(add(transcript, 0xb60))) mstore(add(transcript, 0x6940), mload(add(transcript, 0xb80)))mstore(add(transcript, 0x6960), 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) mstore(add(transcript, 0x6980), 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) mstore(add(transcript, 0x69a0), 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) mstore(add(transcript, 0x69c0), 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff)success := and(eq(staticcall(gas(), 0x8, add(transcript, 0x6860), 0x180, add(transcript, 0x6860), 0x20), 1), success)success := and(eq(mload(add(transcript, 0x6860)), 1), success)} return success; } } diff --git a/contracts/src/SolvencyVerifier.yul b/contracts/src/SolvencyVerifier.yul deleted file mode 100644 index d72d7d0e..00000000 --- a/contracts/src/SolvencyVerifier.yul +++ /dev/null @@ -1,1418 +0,0 @@ - - object "plonk_verifier" { - code { - function allocate(size) -> ptr { - ptr := mload(0x40) - if eq(ptr, 0) { ptr := 0x60 } - mstore(0x40, add(ptr, size)) - } - let size := datasize("Runtime") - let offset := allocate(size) - datacopy(offset, dataoffset("Runtime"), size) - return(offset, size) - } - object "Runtime" { - code { - let success:bool := true - let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 - let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 - function validate_ec_point(x, y) -> valid:bool { - { - let x_lt_p:bool := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let y_lt_p:bool := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - valid := and(x_lt_p, y_lt_p) - } - { - let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) - let is_affine:bool := eq(x_cube_plus_3, y_square) - valid := and(valid, is_affine) - } - } - mstore(0x20, mod(calldataload(0x0), f_q)) -mstore(0x40, mod(calldataload(0x20), f_q)) -mstore(0x60, mod(calldataload(0x40), f_q)) -mstore(0x0, 308492134225063399814226381520525808113815168934209933683689315739401114858) - - { - let x := calldataload(0x60) - mstore(0x80, x) - let y := calldataload(0x80) - mstore(0xa0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0xa0) - mstore(0xc0, x) - let y := calldataload(0xc0) - mstore(0xe0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0xe0) - mstore(0x100, x) - let y := calldataload(0x100) - mstore(0x120, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x140, keccak256(0x0, 320)) -{ - let hash := mload(0x140) - mstore(0x160, mod(hash, f_q)) - mstore(0x180, hash) - } - - { - let x := calldataload(0x120) - mstore(0x1a0, x) - let y := calldataload(0x140) - mstore(0x1c0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x160) - mstore(0x1e0, x) - let y := calldataload(0x180) - mstore(0x200, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x220, keccak256(0x180, 160)) -{ - let hash := mload(0x220) - mstore(0x240, mod(hash, f_q)) - mstore(0x260, hash) - } -mstore8(640, 1) -mstore(0x280, keccak256(0x260, 33)) -{ - let hash := mload(0x280) - mstore(0x2a0, mod(hash, f_q)) - mstore(0x2c0, hash) - } - - { - let x := calldataload(0x1a0) - mstore(0x2e0, x) - let y := calldataload(0x1c0) - mstore(0x300, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x1e0) - mstore(0x320, x) - let y := calldataload(0x200) - mstore(0x340, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x220) - mstore(0x360, x) - let y := calldataload(0x240) - mstore(0x380, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x260) - mstore(0x3a0, x) - let y := calldataload(0x280) - mstore(0x3c0, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x3e0, keccak256(0x2c0, 288)) -{ - let hash := mload(0x3e0) - mstore(0x400, mod(hash, f_q)) - mstore(0x420, hash) - } - - { - let x := calldataload(0x2a0) - mstore(0x440, x) - let y := calldataload(0x2c0) - mstore(0x460, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x2e0) - mstore(0x480, x) - let y := calldataload(0x300) - mstore(0x4a0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x320) - mstore(0x4c0, x) - let y := calldataload(0x340) - mstore(0x4e0, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x360) - mstore(0x500, x) - let y := calldataload(0x380) - mstore(0x520, y) - success := and(validate_ec_point(x, y), success) - } - - { - let x := calldataload(0x3a0) - mstore(0x540, x) - let y := calldataload(0x3c0) - mstore(0x560, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0x580, keccak256(0x420, 352)) -{ - let hash := mload(0x580) - mstore(0x5a0, mod(hash, f_q)) - mstore(0x5c0, hash) - } -mstore(0x5e0, mod(calldataload(0x3e0), f_q)) -mstore(0x600, mod(calldataload(0x400), f_q)) -mstore(0x620, mod(calldataload(0x420), f_q)) -mstore(0x640, mod(calldataload(0x440), f_q)) -mstore(0x660, mod(calldataload(0x460), f_q)) -mstore(0x680, mod(calldataload(0x480), f_q)) -mstore(0x6a0, mod(calldataload(0x4a0), f_q)) -mstore(0x6c0, mod(calldataload(0x4c0), f_q)) -mstore(0x6e0, mod(calldataload(0x4e0), f_q)) -mstore(0x700, mod(calldataload(0x500), f_q)) -mstore(0x720, mod(calldataload(0x520), f_q)) -mstore(0x740, mod(calldataload(0x540), f_q)) -mstore(0x760, mod(calldataload(0x560), f_q)) -mstore(0x780, mod(calldataload(0x580), f_q)) -mstore(0x7a0, mod(calldataload(0x5a0), f_q)) -mstore(0x7c0, mod(calldataload(0x5c0), f_q)) -mstore(0x7e0, mod(calldataload(0x5e0), f_q)) -mstore(0x800, mod(calldataload(0x600), f_q)) -mstore(0x820, mod(calldataload(0x620), f_q)) -mstore(0x840, mod(calldataload(0x640), f_q)) -mstore(0x860, mod(calldataload(0x660), f_q)) -mstore(0x880, mod(calldataload(0x680), f_q)) -mstore(0x8a0, mod(calldataload(0x6a0), f_q)) -mstore(0x8c0, mod(calldataload(0x6c0), f_q)) -mstore(0x8e0, mod(calldataload(0x6e0), f_q)) -mstore(0x900, mod(calldataload(0x700), f_q)) -mstore(0x920, mod(calldataload(0x720), f_q)) -mstore(0x940, mod(calldataload(0x740), f_q)) -mstore(0x960, mod(calldataload(0x760), f_q)) -mstore(0x980, mod(calldataload(0x780), f_q)) -mstore(0x9a0, mod(calldataload(0x7a0), f_q)) -mstore(0x9c0, mod(calldataload(0x7c0), f_q)) -mstore(0x9e0, mod(calldataload(0x7e0), f_q)) -mstore(0xa00, keccak256(0x5c0, 1088)) -{ - let hash := mload(0xa00) - mstore(0xa20, mod(hash, f_q)) - mstore(0xa40, hash) - } -mstore8(2656, 1) -mstore(0xa60, keccak256(0xa40, 33)) -{ - let hash := mload(0xa60) - mstore(0xa80, mod(hash, f_q)) - mstore(0xaa0, hash) - } - - { - let x := calldataload(0x800) - mstore(0xac0, x) - let y := calldataload(0x820) - mstore(0xae0, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0xb00, keccak256(0xaa0, 96)) -{ - let hash := mload(0xb00) - mstore(0xb20, mod(hash, f_q)) - mstore(0xb40, hash) - } - - { - let x := calldataload(0x840) - mstore(0xb60, x) - let y := calldataload(0x860) - mstore(0xb80, y) - success := and(validate_ec_point(x, y), success) - } -mstore(0xba0, mulmod(mload(0x5a0), mload(0x5a0), f_q)) -mstore(0xbc0, mulmod(mload(0xba0), mload(0xba0), f_q)) -mstore(0xbe0, mulmod(mload(0xbc0), mload(0xbc0), f_q)) -mstore(0xc00, mulmod(mload(0xbe0), mload(0xbe0), f_q)) -mstore(0xc20, mulmod(mload(0xc00), mload(0xc00), f_q)) -mstore(0xc40, mulmod(mload(0xc20), mload(0xc20), f_q)) -mstore(0xc60, mulmod(mload(0xc40), mload(0xc40), f_q)) -mstore(0xc80, mulmod(mload(0xc60), mload(0xc60), f_q)) -mstore(0xca0, mulmod(mload(0xc80), mload(0xc80), f_q)) -mstore(0xcc0, mulmod(mload(0xca0), mload(0xca0), f_q)) -mstore(0xce0, addmod(mload(0xcc0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xd00, mulmod(mload(0xce0), 21866867634659744680037180739646672280844703888306253060159436409049855557633, f_q)) -mstore(0xd20, mulmod(mload(0xd00), 9936069627611189518829255670237324269287146421271524553312532036927871056678, f_q)) -mstore(0xd40, addmod(mload(0x5a0), 11952173244228085703417150075019950819261217979144509790385672149647937438939, f_q)) -mstore(0xd60, mulmod(mload(0xd00), 1680739780407307830605919050682431078078760076686599579086116998224280619988, f_q)) -mstore(0xd80, addmod(mload(0x5a0), 20207503091431967391640486694574844010469604323729434764612087188351527875629, f_q)) -mstore(0xda0, mulmod(mload(0xd00), 14158528901797138466244491986759313854666262535363044392173788062030301470987, f_q)) -mstore(0xdc0, addmod(mload(0x5a0), 7729713970042136756001913758497961233882101865052989951524416124545507024630, f_q)) -mstore(0xde0, mulmod(mload(0xd00), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) -mstore(0xe00, addmod(mload(0x5a0), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q)) -mstore(0xe20, mulmod(mload(0xd00), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q)) -mstore(0xe40, addmod(mload(0x5a0), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q)) -mstore(0xe60, mulmod(mload(0xd00), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q)) -mstore(0xe80, addmod(mload(0x5a0), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q)) -mstore(0xea0, mulmod(mload(0xd00), 1, f_q)) -mstore(0xec0, addmod(mload(0x5a0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xee0, mulmod(mload(0xd00), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q)) -mstore(0xf00, addmod(mload(0x5a0), 2507682784038009475131574039120954579123549720846755509306663987687515178116, f_q)) -mstore(0xf20, mulmod(mload(0xd00), 6252951856119339508807713076978770803512896272623217303779254502899773638908, f_q)) -mstore(0xf40, addmod(mload(0x5a0), 15635291015719935713438692668278504285035468127792817039918949683676034856709, f_q)) -{ - let prod := mload(0xd40) - - prod := mulmod(mload(0xd80), prod, f_q) - mstore(0xf60, prod) - - prod := mulmod(mload(0xdc0), prod, f_q) - mstore(0xf80, prod) - - prod := mulmod(mload(0xe00), prod, f_q) - mstore(0xfa0, prod) - - prod := mulmod(mload(0xe40), prod, f_q) - mstore(0xfc0, prod) - - prod := mulmod(mload(0xe80), prod, f_q) - mstore(0xfe0, prod) - - prod := mulmod(mload(0xec0), prod, f_q) - mstore(0x1000, prod) - - prod := mulmod(mload(0xf00), prod, f_q) - mstore(0x1020, prod) - - prod := mulmod(mload(0xf40), prod, f_q) - mstore(0x1040, prod) - - prod := mulmod(mload(0xce0), prod, f_q) - mstore(0x1060, prod) - - } -mstore(0x10a0, 32) -mstore(0x10c0, 32) -mstore(0x10e0, 32) -mstore(0x1100, mload(0x1060)) -mstore(0x1120, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x1140, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x10a0, 0xc0, 0x1080, 0x20), 1), success) -{ - - let inv := mload(0x1080) - let v - - v := mload(0xce0) - mstore(3296, mulmod(mload(0x1040), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xf40) - mstore(3904, mulmod(mload(0x1020), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xf00) - mstore(3840, mulmod(mload(0x1000), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xec0) - mstore(3776, mulmod(mload(0xfe0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xe80) - mstore(3712, mulmod(mload(0xfc0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xe40) - mstore(3648, mulmod(mload(0xfa0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xe00) - mstore(3584, mulmod(mload(0xf80), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xdc0) - mstore(3520, mulmod(mload(0xf60), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0xd80) - mstore(3456, mulmod(mload(0xd40), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0xd40, inv) - - } -mstore(0x1160, mulmod(mload(0xd20), mload(0xd40), f_q)) -mstore(0x1180, mulmod(mload(0xd60), mload(0xd80), f_q)) -mstore(0x11a0, mulmod(mload(0xda0), mload(0xdc0), f_q)) -mstore(0x11c0, mulmod(mload(0xde0), mload(0xe00), f_q)) -mstore(0x11e0, mulmod(mload(0xe20), mload(0xe40), f_q)) -mstore(0x1200, mulmod(mload(0xe60), mload(0xe80), f_q)) -mstore(0x1220, mulmod(mload(0xea0), mload(0xec0), f_q)) -mstore(0x1240, mulmod(mload(0xee0), mload(0xf00), f_q)) -mstore(0x1260, mulmod(mload(0xf20), mload(0xf40), f_q)) -{ - let result := mulmod(mload(0x1220), mload(0x20), f_q) -result := addmod(mulmod(mload(0x1240), mload(0x40), f_q), result, f_q) -result := addmod(mulmod(mload(0x1260), mload(0x60), f_q), result, f_q) -mstore(4736, result) - } -mstore(0x12a0, addmod(mload(0x5e0), mload(0x720), f_q)) -mstore(0x12c0, mulmod(mload(0x12a0), mload(0x12a0), f_q)) -mstore(0x12e0, mulmod(mload(0x12c0), mload(0x12c0), f_q)) -mstore(0x1300, mulmod(mload(0x12a0), mload(0x12e0), f_q)) -mstore(0x1320, mulmod(mload(0x1300), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) -mstore(0x1340, addmod(mload(0x600), mload(0x740), f_q)) -mstore(0x1360, mulmod(mload(0x1340), mload(0x1340), f_q)) -mstore(0x1380, mulmod(mload(0x1360), mload(0x1360), f_q)) -mstore(0x13a0, mulmod(mload(0x1340), mload(0x1380), f_q)) -mstore(0x13c0, mulmod(mload(0x13a0), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) -mstore(0x13e0, addmod(mload(0x1320), mload(0x13c0), f_q)) -mstore(0x1400, addmod(mload(0x13e0), sub(f_q, mload(0x620)), f_q)) -mstore(0x1420, mulmod(mload(0x1400), mload(0x7a0), f_q)) -mstore(0x1440, mulmod(mload(0x400), mload(0x1420), f_q)) -mstore(0x1460, mulmod(mload(0x1300), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) -mstore(0x1480, mulmod(mload(0x13a0), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) -mstore(0x14a0, addmod(mload(0x1460), mload(0x1480), f_q)) -mstore(0x14c0, addmod(mload(0x14a0), sub(f_q, mload(0x640)), f_q)) -mstore(0x14e0, mulmod(mload(0x14c0), mload(0x7a0), f_q)) -mstore(0x1500, addmod(mload(0x1440), mload(0x14e0), f_q)) -mstore(0x1520, mulmod(mload(0x400), mload(0x1500), f_q)) -mstore(0x1540, addmod(mload(0x1300), sub(f_q, mload(0x660)), f_q)) -mstore(0x1560, mulmod(mload(0x1540), mload(0x7c0), f_q)) -mstore(0x1580, addmod(mload(0x1520), mload(0x1560), f_q)) -mstore(0x15a0, mulmod(mload(0x400), mload(0x1580), f_q)) -mstore(0x15c0, mulmod(mload(0x660), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) -mstore(0x15e0, mulmod(mload(0x1340), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) -mstore(0x1600, addmod(mload(0x15c0), mload(0x15e0), f_q)) -mstore(0x1620, addmod(mload(0x1600), mload(0x6e0), f_q)) -mstore(0x1640, mulmod(mload(0x1620), mload(0x1620), f_q)) -mstore(0x1660, mulmod(mload(0x1640), mload(0x1640), f_q)) -mstore(0x1680, mulmod(mload(0x1620), mload(0x1660), f_q)) -mstore(0x16a0, mulmod(mload(0x620), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q)) -mstore(0x16c0, mulmod(mload(0x640), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q)) -mstore(0x16e0, addmod(mload(0x16a0), mload(0x16c0), f_q)) -mstore(0x1700, addmod(mload(0x1680), sub(f_q, mload(0x16e0)), f_q)) -mstore(0x1720, mulmod(mload(0x1700), mload(0x7c0), f_q)) -mstore(0x1740, addmod(mload(0x15a0), mload(0x1720), f_q)) -mstore(0x1760, mulmod(mload(0x400), mload(0x1740), f_q)) -mstore(0x1780, mulmod(mload(0x660), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) -mstore(0x17a0, mulmod(mload(0x1340), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) -mstore(0x17c0, addmod(mload(0x1780), mload(0x17a0), f_q)) -mstore(0x17e0, addmod(mload(0x17c0), mload(0x700), f_q)) -mstore(0x1800, mulmod(mload(0x620), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q)) -mstore(0x1820, mulmod(mload(0x640), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q)) -mstore(0x1840, addmod(mload(0x1800), mload(0x1820), f_q)) -mstore(0x1860, addmod(mload(0x17e0), sub(f_q, mload(0x1840)), f_q)) -mstore(0x1880, mulmod(mload(0x1860), mload(0x7c0), f_q)) -mstore(0x18a0, addmod(mload(0x1760), mload(0x1880), f_q)) -mstore(0x18c0, mulmod(mload(0x400), mload(0x18a0), f_q)) -mstore(0x18e0, addmod(1, sub(f_q, mload(0x780)), f_q)) -mstore(0x1900, mulmod(mload(0x18e0), mload(0x780), f_q)) -mstore(0x1920, addmod(2, sub(f_q, mload(0x780)), f_q)) -mstore(0x1940, mulmod(mload(0x1920), mload(0x1900), f_q)) -mstore(0x1960, addmod(3, sub(f_q, mload(0x780)), f_q)) -mstore(0x1980, mulmod(mload(0x1960), mload(0x1940), f_q)) -mstore(0x19a0, addmod(mload(0x6a0), mload(0x5e0), f_q)) -mstore(0x19c0, addmod(mload(0x19a0), sub(f_q, mload(0x620)), f_q)) -mstore(0x19e0, mulmod(mload(0x19c0), mload(0x1980), f_q)) -mstore(0x1a00, addmod(mload(0x18c0), mload(0x19e0), f_q)) -mstore(0x1a20, mulmod(mload(0x400), mload(0x1a00), f_q)) -mstore(0x1a40, addmod(mload(0x680), sub(f_q, mload(0x640)), f_q)) -mstore(0x1a60, mulmod(mload(0x1a40), mload(0x1980), f_q)) -mstore(0x1a80, addmod(mload(0x1a20), mload(0x1a60), f_q)) -mstore(0x1aa0, mulmod(mload(0x400), mload(0x1a80), f_q)) -mstore(0x1ac0, mulmod(mload(0x1920), mload(0x780), f_q)) -mstore(0x1ae0, mulmod(mload(0x1960), mload(0x1ac0), f_q)) -mstore(0x1b00, addmod(4, sub(f_q, mload(0x780)), f_q)) -mstore(0x1b20, mulmod(mload(0x1b00), mload(0x1ae0), f_q)) -mstore(0x1b40, mulmod(mload(0x660), mload(0x1b20), f_q)) -mstore(0x1b60, addmod(1, sub(f_q, mload(0x660)), f_q)) -mstore(0x1b80, mulmod(mload(0x1b60), mload(0x1b40), f_q)) -mstore(0x1ba0, addmod(mload(0x1aa0), mload(0x1b80), f_q)) -mstore(0x1bc0, mulmod(mload(0x400), mload(0x1ba0), f_q)) -mstore(0x1be0, mulmod(2, mload(0x660), f_q)) -mstore(0x1c00, addmod(mload(0x600), sub(f_q, mload(0x5e0)), f_q)) -mstore(0x1c20, mulmod(mload(0x1c00), mload(0x1be0), f_q)) -mstore(0x1c40, addmod(mload(0x620), sub(f_q, mload(0x5e0)), f_q)) -mstore(0x1c60, addmod(mload(0x1c20), sub(f_q, mload(0x1c40)), f_q)) -mstore(0x1c80, addmod(mload(0x600), sub(f_q, mload(0x640)), f_q)) -mstore(0x1ca0, addmod(mload(0x1c60), sub(f_q, mload(0x1c80)), f_q)) -mstore(0x1cc0, mulmod(mload(0x1ca0), mload(0x1b20), f_q)) -mstore(0x1ce0, addmod(mload(0x1bc0), mload(0x1cc0), f_q)) -mstore(0x1d00, mulmod(mload(0x400), mload(0x1ce0), f_q)) -mstore(0x1d20, mulmod(mload(0x1960), mload(0x1900), f_q)) -mstore(0x1d40, mulmod(mload(0x1b00), mload(0x1d20), f_q)) -mstore(0x1d60, addmod(mload(0x5e0), mload(0x600), f_q)) -mstore(0x1d80, addmod(mload(0x1d60), sub(f_q, mload(0x660)), f_q)) -mstore(0x1da0, mulmod(mload(0x1d80), mload(0x1d40), f_q)) -mstore(0x1dc0, addmod(mload(0x1d00), mload(0x1da0), f_q)) -mstore(0x1de0, mulmod(mload(0x400), mload(0x1dc0), f_q)) -mstore(0x1e00, addmod(mload(0x1de0), mload(0x1da0), f_q)) -mstore(0x1e20, mulmod(mload(0x400), mload(0x1e00), f_q)) -mstore(0x1e40, mulmod(mload(0x1b00), mload(0x1940), f_q)) -mstore(0x1e60, addmod(mload(0x5e0), sub(f_q, mload(0x600)), f_q)) -mstore(0x1e80, addmod(mload(0x1e60), 5192296858534827628530496329220096, f_q)) -mstore(0x1ea0, addmod(mload(0x1e80), sub(f_q, mload(0x660)), f_q)) -mstore(0x1ec0, mulmod(mload(0x1ea0), mload(0x1e40), f_q)) -mstore(0x1ee0, addmod(mload(0x1e20), mload(0x1ec0), f_q)) -mstore(0x1f00, mulmod(mload(0x400), mload(0x1ee0), f_q)) -mstore(0x1f20, addmod(1, sub(f_q, mload(0x8c0)), f_q)) -mstore(0x1f40, mulmod(mload(0x1f20), mload(0x1220), f_q)) -mstore(0x1f60, addmod(mload(0x1f00), mload(0x1f40), f_q)) -mstore(0x1f80, mulmod(mload(0x400), mload(0x1f60), f_q)) -mstore(0x1fa0, mulmod(mload(0x920), mload(0x920), f_q)) -mstore(0x1fc0, addmod(mload(0x1fa0), sub(f_q, mload(0x920)), f_q)) -mstore(0x1fe0, mulmod(mload(0x1fc0), mload(0x1160), f_q)) -mstore(0x2000, addmod(mload(0x1f80), mload(0x1fe0), f_q)) -mstore(0x2020, mulmod(mload(0x400), mload(0x2000), f_q)) -mstore(0x2040, addmod(mload(0x920), sub(f_q, mload(0x900)), f_q)) -mstore(0x2060, mulmod(mload(0x2040), mload(0x1220), f_q)) -mstore(0x2080, addmod(mload(0x2020), mload(0x2060), f_q)) -mstore(0x20a0, mulmod(mload(0x400), mload(0x2080), f_q)) -mstore(0x20c0, addmod(1, sub(f_q, mload(0x1160)), f_q)) -mstore(0x20e0, addmod(mload(0x1180), mload(0x11a0), f_q)) -mstore(0x2100, addmod(mload(0x20e0), mload(0x11c0), f_q)) -mstore(0x2120, addmod(mload(0x2100), mload(0x11e0), f_q)) -mstore(0x2140, addmod(mload(0x2120), mload(0x1200), f_q)) -mstore(0x2160, addmod(mload(0x20c0), sub(f_q, mload(0x2140)), f_q)) -mstore(0x2180, mulmod(mload(0x800), mload(0x240), f_q)) -mstore(0x21a0, addmod(mload(0x6e0), mload(0x2180), f_q)) -mstore(0x21c0, addmod(mload(0x21a0), mload(0x2a0), f_q)) -mstore(0x21e0, mulmod(mload(0x820), mload(0x240), f_q)) -mstore(0x2200, addmod(mload(0x5e0), mload(0x21e0), f_q)) -mstore(0x2220, addmod(mload(0x2200), mload(0x2a0), f_q)) -mstore(0x2240, mulmod(mload(0x2220), mload(0x21c0), f_q)) -mstore(0x2260, mulmod(mload(0x840), mload(0x240), f_q)) -mstore(0x2280, addmod(mload(0x600), mload(0x2260), f_q)) -mstore(0x22a0, addmod(mload(0x2280), mload(0x2a0), f_q)) -mstore(0x22c0, mulmod(mload(0x22a0), mload(0x2240), f_q)) -mstore(0x22e0, mulmod(mload(0x860), mload(0x240), f_q)) -mstore(0x2300, addmod(mload(0x700), mload(0x22e0), f_q)) -mstore(0x2320, addmod(mload(0x2300), mload(0x2a0), f_q)) -mstore(0x2340, mulmod(mload(0x2320), mload(0x22c0), f_q)) -mstore(0x2360, mulmod(mload(0x2340), mload(0x8e0), f_q)) -mstore(0x2380, mulmod(1, mload(0x240), f_q)) -mstore(0x23a0, mulmod(mload(0x5a0), mload(0x2380), f_q)) -mstore(0x23c0, addmod(mload(0x6e0), mload(0x23a0), f_q)) -mstore(0x23e0, addmod(mload(0x23c0), mload(0x2a0), f_q)) -mstore(0x2400, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x240), f_q)) -mstore(0x2420, mulmod(mload(0x5a0), mload(0x2400), f_q)) -mstore(0x2440, addmod(mload(0x5e0), mload(0x2420), f_q)) -mstore(0x2460, addmod(mload(0x2440), mload(0x2a0), f_q)) -mstore(0x2480, mulmod(mload(0x2460), mload(0x23e0), f_q)) -mstore(0x24a0, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x240), f_q)) -mstore(0x24c0, mulmod(mload(0x5a0), mload(0x24a0), f_q)) -mstore(0x24e0, addmod(mload(0x600), mload(0x24c0), f_q)) -mstore(0x2500, addmod(mload(0x24e0), mload(0x2a0), f_q)) -mstore(0x2520, mulmod(mload(0x2500), mload(0x2480), f_q)) -mstore(0x2540, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x240), f_q)) -mstore(0x2560, mulmod(mload(0x5a0), mload(0x2540), f_q)) -mstore(0x2580, addmod(mload(0x700), mload(0x2560), f_q)) -mstore(0x25a0, addmod(mload(0x2580), mload(0x2a0), f_q)) -mstore(0x25c0, mulmod(mload(0x25a0), mload(0x2520), f_q)) -mstore(0x25e0, mulmod(mload(0x25c0), mload(0x8c0), f_q)) -mstore(0x2600, addmod(mload(0x2360), sub(f_q, mload(0x25e0)), f_q)) -mstore(0x2620, mulmod(mload(0x2600), mload(0x2160), f_q)) -mstore(0x2640, addmod(mload(0x20a0), mload(0x2620), f_q)) -mstore(0x2660, mulmod(mload(0x400), mload(0x2640), f_q)) -mstore(0x2680, mulmod(mload(0x880), mload(0x240), f_q)) -mstore(0x26a0, addmod(mload(0x660), mload(0x2680), f_q)) -mstore(0x26c0, addmod(mload(0x26a0), mload(0x2a0), f_q)) -mstore(0x26e0, mulmod(mload(0x8a0), mload(0x240), f_q)) -mstore(0x2700, addmod(mload(0x1280), mload(0x26e0), f_q)) -mstore(0x2720, addmod(mload(0x2700), mload(0x2a0), f_q)) -mstore(0x2740, mulmod(mload(0x2720), mload(0x26c0), f_q)) -mstore(0x2760, mulmod(mload(0x2740), mload(0x940), f_q)) -mstore(0x2780, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x240), f_q)) -mstore(0x27a0, mulmod(mload(0x5a0), mload(0x2780), f_q)) -mstore(0x27c0, addmod(mload(0x660), mload(0x27a0), f_q)) -mstore(0x27e0, addmod(mload(0x27c0), mload(0x2a0), f_q)) -mstore(0x2800, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x240), f_q)) -mstore(0x2820, mulmod(mload(0x5a0), mload(0x2800), f_q)) -mstore(0x2840, addmod(mload(0x1280), mload(0x2820), f_q)) -mstore(0x2860, addmod(mload(0x2840), mload(0x2a0), f_q)) -mstore(0x2880, mulmod(mload(0x2860), mload(0x27e0), f_q)) -mstore(0x28a0, mulmod(mload(0x2880), mload(0x920), f_q)) -mstore(0x28c0, addmod(mload(0x2760), sub(f_q, mload(0x28a0)), f_q)) -mstore(0x28e0, mulmod(mload(0x28c0), mload(0x2160), f_q)) -mstore(0x2900, addmod(mload(0x2660), mload(0x28e0), f_q)) -mstore(0x2920, mulmod(mload(0x400), mload(0x2900), f_q)) -mstore(0x2940, addmod(1, sub(f_q, mload(0x960)), f_q)) -mstore(0x2960, mulmod(mload(0x2940), mload(0x1220), f_q)) -mstore(0x2980, addmod(mload(0x2920), mload(0x2960), f_q)) -mstore(0x29a0, mulmod(mload(0x400), mload(0x2980), f_q)) -mstore(0x29c0, mulmod(mload(0x960), mload(0x960), f_q)) -mstore(0x29e0, addmod(mload(0x29c0), sub(f_q, mload(0x960)), f_q)) -mstore(0x2a00, mulmod(mload(0x29e0), mload(0x1160), f_q)) -mstore(0x2a20, addmod(mload(0x29a0), mload(0x2a00), f_q)) -mstore(0x2a40, mulmod(mload(0x400), mload(0x2a20), f_q)) -mstore(0x2a60, addmod(mload(0x9a0), mload(0x240), f_q)) -mstore(0x2a80, mulmod(mload(0x2a60), mload(0x980), f_q)) -mstore(0x2aa0, addmod(mload(0x9e0), mload(0x2a0), f_q)) -mstore(0x2ac0, mulmod(mload(0x2aa0), mload(0x2a80), f_q)) -mstore(0x2ae0, mulmod(256, mload(0x6c0), f_q)) -mstore(0x2b00, addmod(mload(0x660), sub(f_q, mload(0x2ae0)), f_q)) -mstore(0x2b20, mulmod(mload(0x2b00), mload(0x760), f_q)) -mstore(0x2b40, addmod(mload(0x2b20), mload(0x240), f_q)) -mstore(0x2b60, mulmod(mload(0x2b40), mload(0x960), f_q)) -mstore(0x2b80, addmod(mload(0x720), mload(0x2a0), f_q)) -mstore(0x2ba0, mulmod(mload(0x2b80), mload(0x2b60), f_q)) -mstore(0x2bc0, addmod(mload(0x2ac0), sub(f_q, mload(0x2ba0)), f_q)) -mstore(0x2be0, mulmod(mload(0x2bc0), mload(0x2160), f_q)) -mstore(0x2c00, addmod(mload(0x2a40), mload(0x2be0), f_q)) -mstore(0x2c20, mulmod(mload(0x400), mload(0x2c00), f_q)) -mstore(0x2c40, addmod(mload(0x9a0), sub(f_q, mload(0x9e0)), f_q)) -mstore(0x2c60, mulmod(mload(0x2c40), mload(0x1220), f_q)) -mstore(0x2c80, addmod(mload(0x2c20), mload(0x2c60), f_q)) -mstore(0x2ca0, mulmod(mload(0x400), mload(0x2c80), f_q)) -mstore(0x2cc0, mulmod(mload(0x2c40), mload(0x2160), f_q)) -mstore(0x2ce0, addmod(mload(0x9a0), sub(f_q, mload(0x9c0)), f_q)) -mstore(0x2d00, mulmod(mload(0x2ce0), mload(0x2cc0), f_q)) -mstore(0x2d20, addmod(mload(0x2ca0), mload(0x2d00), f_q)) -mstore(0x2d40, mulmod(mload(0xcc0), mload(0xcc0), f_q)) -mstore(0x2d60, mulmod(mload(0x2d40), mload(0xcc0), f_q)) -mstore(0x2d80, mulmod(mload(0x2d60), mload(0xcc0), f_q)) -mstore(0x2da0, mulmod(mload(0x2d80), mload(0xcc0), f_q)) -mstore(0x2dc0, mulmod(1, mload(0xcc0), f_q)) -mstore(0x2de0, mulmod(1, mload(0x2d40), f_q)) -mstore(0x2e00, mulmod(1, mload(0x2d60), f_q)) -mstore(0x2e20, mulmod(1, mload(0x2d80), f_q)) -mstore(0x2e40, mulmod(mload(0x2d20), mload(0xce0), f_q)) -mstore(0x2e60, mulmod(mload(0xba0), mload(0x5a0), f_q)) -mstore(0x2e80, mulmod(mload(0x5a0), 1, f_q)) -mstore(0x2ea0, addmod(mload(0xb20), sub(f_q, mload(0x2e80)), f_q)) -mstore(0x2ec0, mulmod(mload(0x5a0), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q)) -mstore(0x2ee0, addmod(mload(0xb20), sub(f_q, mload(0x2ec0)), f_q)) -mstore(0x2f00, mulmod(mload(0x5a0), 9936069627611189518829255670237324269287146421271524553312532036927871056678, f_q)) -mstore(0x2f20, addmod(mload(0xb20), sub(f_q, mload(0x2f00)), f_q)) -mstore(0x2f40, mulmod(mload(0x5a0), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q)) -mstore(0x2f60, addmod(mload(0xb20), sub(f_q, mload(0x2f40)), f_q)) -{ - let result := mulmod(mload(0xb20), mulmod(mload(0xba0), 19470333053884630052643688193991482022807116448657043890197497819686199857828, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0xba0), 2417909817954645169602717551265793065741247951758990453500706366889608637789, f_q), f_q), result, f_q) -mstore(12160, result) - } -{ - let result := mulmod(mload(0xb20), mulmod(mload(0xba0), 13686227242150003628673578706486473027501243666075718775893288845164412632930, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0xba0), 10079503758141076467065204586507257535549232608832327988764044976944819876346, f_q), f_q), result, f_q) -mstore(12192, result) - } -{ - let result := mulmod(mload(0xb20), mulmod(mload(0xba0), 18715936898160381416714524359517348601997944075114713669820885373469568354766, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0xba0), 15375775075249615866494035504844970190233299190010037655541891534730124992278, f_q), f_q), result, f_q) -mstore(12224, result) - } -mstore(0x2fe0, mulmod(1, mload(0x2ea0), f_q)) -mstore(0x3000, mulmod(mload(0x2fe0), mload(0x2f60), f_q)) -mstore(0x3020, mulmod(mload(0x3000), mload(0x2ee0), f_q)) -{ - let result := mulmod(mload(0xb20), mulmod(mload(0x5a0), 2507682784038009475131574039120954579123549720846755509306663987687515178117, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0x5a0), 19380560087801265747114831706136320509424814679569278834391540198888293317500, f_q), f_q), result, f_q) -mstore(12352, result) - } -{ - let result := mulmod(mload(0xb20), mulmod(mload(0x5a0), 19380560087801265747114831706136320509424814679569278834391540198888293317500, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0x5a0), 13127608231681926238307118629157549705911918406946061530612285695988519678593, f_q), f_q), result, f_q) -mstore(12384, result) - } -{ - let result := mulmod(mload(0xb20), mulmod(mload(0xba0), 16140595808673403009154643164823336476463527776677864878778453135559733237044, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0xba0), 5747647063165872213091762580433938612084836623738169464919751051016075258573, f_q), f_q), result, f_q) -mstore(12416, result) - } -{ - let result := mulmod(mload(0xb20), mulmod(mload(0xba0), 17015964487361230672162623735654618573844832338054897787312333529290879253714, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0xba0), 3176732791729641355588945816447819802711920387939493967460175841862547409845, f_q), f_q), result, f_q) -mstore(12448, result) - } -{ - let result := mulmod(mload(0xb20), mulmod(mload(0xba0), 19187508498431587163140984396833674282302409422288044257471288693049179355069, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0xba0), 17472297497993506786357772047295541913219081564856233764575529621311665103799, f_q), f_q), result, f_q) -mstore(12480, result) - } -mstore(0x30e0, mulmod(mload(0x3000), mload(0x2f20), f_q)) -{ - let result := mulmod(mload(0xb20), mulmod(mload(0x5a0), 16962650269846620577512114154870527443683566727810288380890833831998684679711, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0x5a0), 4925592601992654644734291590386747644864797672605745962807370354577123815906, f_q), f_q), result, f_q) -mstore(12544, result) - } -{ - let result := mulmod(mload(0xb20), mulmod(mload(0x5a0), 4925592601992654644734291590386747644864797672605745962807370354577123815906, f_q), f_q) -result := addmod(mulmod(mload(0x5a0), mulmod(mload(0x5a0), 664623189640884330400307346618971907426870604454565164570654825418724962734, f_q), f_q), result, f_q) -mstore(12576, result) - } -mstore(0x3140, mulmod(mload(0x2fe0), mload(0x2ee0), f_q)) -{ - let result := mulmod(mload(0xb20), 1, f_q) -result := addmod(mulmod(mload(0x5a0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) -mstore(12640, result) - } -{ - let prod := mload(0x2f80) - - prod := mulmod(mload(0x2fa0), prod, f_q) - mstore(0x3180, prod) - - prod := mulmod(mload(0x2fc0), prod, f_q) - mstore(0x31a0, prod) - - prod := mulmod(mload(0x3040), prod, f_q) - mstore(0x31c0, prod) - - prod := mulmod(mload(0x3060), prod, f_q) - mstore(0x31e0, prod) - - prod := mulmod(mload(0x3000), prod, f_q) - mstore(0x3200, prod) - - prod := mulmod(mload(0x3080), prod, f_q) - mstore(0x3220, prod) - - prod := mulmod(mload(0x30a0), prod, f_q) - mstore(0x3240, prod) - - prod := mulmod(mload(0x30c0), prod, f_q) - mstore(0x3260, prod) - - prod := mulmod(mload(0x30e0), prod, f_q) - mstore(0x3280, prod) - - prod := mulmod(mload(0x3100), prod, f_q) - mstore(0x32a0, prod) - - prod := mulmod(mload(0x3120), prod, f_q) - mstore(0x32c0, prod) - - prod := mulmod(mload(0x3140), prod, f_q) - mstore(0x32e0, prod) - - prod := mulmod(mload(0x3160), prod, f_q) - mstore(0x3300, prod) - - prod := mulmod(mload(0x2fe0), prod, f_q) - mstore(0x3320, prod) - - } -mstore(0x3360, 32) -mstore(0x3380, 32) -mstore(0x33a0, 32) -mstore(0x33c0, mload(0x3320)) -mstore(0x33e0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x3400, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x3360, 0xc0, 0x3340, 0x20), 1), success) -{ - - let inv := mload(0x3340) - let v - - v := mload(0x2fe0) - mstore(12256, mulmod(mload(0x3300), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3160) - mstore(12640, mulmod(mload(0x32e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3140) - mstore(12608, mulmod(mload(0x32c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3120) - mstore(12576, mulmod(mload(0x32a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3100) - mstore(12544, mulmod(mload(0x3280), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x30e0) - mstore(12512, mulmod(mload(0x3260), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x30c0) - mstore(12480, mulmod(mload(0x3240), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x30a0) - mstore(12448, mulmod(mload(0x3220), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3080) - mstore(12416, mulmod(mload(0x3200), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3000) - mstore(12288, mulmod(mload(0x31e0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3060) - mstore(12384, mulmod(mload(0x31c0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3040) - mstore(12352, mulmod(mload(0x31a0), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2fc0) - mstore(12224, mulmod(mload(0x3180), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x2fa0) - mstore(12192, mulmod(mload(0x2f80), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0x2f80, inv) - - } -{ - let result := mload(0x2f80) -result := addmod(mload(0x2fa0), result, f_q) -result := addmod(mload(0x2fc0), result, f_q) -mstore(13344, result) - } -mstore(0x3440, mulmod(mload(0x3020), mload(0x3000), f_q)) -{ - let result := mload(0x3040) -result := addmod(mload(0x3060), result, f_q) -mstore(13408, result) - } -mstore(0x3480, mulmod(mload(0x3020), mload(0x30e0), f_q)) -{ - let result := mload(0x3080) -result := addmod(mload(0x30a0), result, f_q) -result := addmod(mload(0x30c0), result, f_q) -mstore(13472, result) - } -mstore(0x34c0, mulmod(mload(0x3020), mload(0x3140), f_q)) -{ - let result := mload(0x3100) -result := addmod(mload(0x3120), result, f_q) -mstore(13536, result) - } -mstore(0x3500, mulmod(mload(0x3020), mload(0x2fe0), f_q)) -{ - let result := mload(0x3160) -mstore(13600, result) - } -{ - let prod := mload(0x3420) - - prod := mulmod(mload(0x3460), prod, f_q) - mstore(0x3540, prod) - - prod := mulmod(mload(0x34a0), prod, f_q) - mstore(0x3560, prod) - - prod := mulmod(mload(0x34e0), prod, f_q) - mstore(0x3580, prod) - - prod := mulmod(mload(0x3520), prod, f_q) - mstore(0x35a0, prod) - - } -mstore(0x35e0, 32) -mstore(0x3600, 32) -mstore(0x3620, 32) -mstore(0x3640, mload(0x35a0)) -mstore(0x3660, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x3680, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x35e0, 0xc0, 0x35c0, 0x20), 1), success) -{ - - let inv := mload(0x35c0) - let v - - v := mload(0x3520) - mstore(13600, mulmod(mload(0x3580), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x34e0) - mstore(13536, mulmod(mload(0x3560), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x34a0) - mstore(13472, mulmod(mload(0x3540), inv, f_q)) - inv := mulmod(v, inv, f_q) - - v := mload(0x3460) - mstore(13408, mulmod(mload(0x3420), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0x3420, inv) - - } -mstore(0x36a0, mulmod(mload(0x3440), mload(0x3460), f_q)) -mstore(0x36c0, mulmod(mload(0x3480), mload(0x34a0), f_q)) -mstore(0x36e0, mulmod(mload(0x34c0), mload(0x34e0), f_q)) -mstore(0x3700, mulmod(mload(0x3500), mload(0x3520), f_q)) -mstore(0x3720, mulmod(mload(0xa20), mload(0xa20), f_q)) -mstore(0x3740, mulmod(mload(0x3720), mload(0xa20), f_q)) -mstore(0x3760, mulmod(mload(0x3740), mload(0xa20), f_q)) -mstore(0x3780, mulmod(mload(0x3760), mload(0xa20), f_q)) -mstore(0x37a0, mulmod(mload(0x3780), mload(0xa20), f_q)) -mstore(0x37c0, mulmod(mload(0x37a0), mload(0xa20), f_q)) -mstore(0x37e0, mulmod(mload(0x37c0), mload(0xa20), f_q)) -mstore(0x3800, mulmod(mload(0x37e0), mload(0xa20), f_q)) -mstore(0x3820, mulmod(mload(0x3800), mload(0xa20), f_q)) -mstore(0x3840, mulmod(mload(0x3820), mload(0xa20), f_q)) -mstore(0x3860, mulmod(mload(0x3840), mload(0xa20), f_q)) -mstore(0x3880, mulmod(mload(0x3860), mload(0xa20), f_q)) -mstore(0x38a0, mulmod(mload(0x3880), mload(0xa20), f_q)) -mstore(0x38c0, mulmod(mload(0x38a0), mload(0xa20), f_q)) -mstore(0x38e0, mulmod(mload(0x38c0), mload(0xa20), f_q)) -mstore(0x3900, mulmod(mload(0x38e0), mload(0xa20), f_q)) -mstore(0x3920, mulmod(mload(0xa80), mload(0xa80), f_q)) -mstore(0x3940, mulmod(mload(0x3920), mload(0xa80), f_q)) -mstore(0x3960, mulmod(mload(0x3940), mload(0xa80), f_q)) -mstore(0x3980, mulmod(mload(0x3960), mload(0xa80), f_q)) -{ - let result := mulmod(mload(0x5e0), mload(0x2f80), f_q) -result := addmod(mulmod(mload(0x620), mload(0x2fa0), f_q), result, f_q) -result := addmod(mulmod(mload(0x6a0), mload(0x2fc0), f_q), result, f_q) -mstore(14752, result) - } -mstore(0x39c0, mulmod(mload(0x39a0), mload(0x3420), f_q)) -mstore(0x39e0, mulmod(sub(f_q, mload(0x39c0)), 1, f_q)) -{ - let result := mulmod(mload(0x600), mload(0x2f80), f_q) -result := addmod(mulmod(mload(0x640), mload(0x2fa0), f_q), result, f_q) -result := addmod(mulmod(mload(0x680), mload(0x2fc0), f_q), result, f_q) -mstore(14848, result) - } -mstore(0x3a20, mulmod(mload(0x3a00), mload(0x3420), f_q)) -mstore(0x3a40, mulmod(sub(f_q, mload(0x3a20)), mload(0xa20), f_q)) -mstore(0x3a60, mulmod(1, mload(0xa20), f_q)) -mstore(0x3a80, addmod(mload(0x39e0), mload(0x3a40), f_q)) -mstore(0x3aa0, mulmod(mload(0x3a80), 1, f_q)) -mstore(0x3ac0, mulmod(mload(0x3a60), 1, f_q)) -mstore(0x3ae0, mulmod(1, mload(0x3440), f_q)) -{ - let result := mulmod(mload(0x660), mload(0x3040), f_q) -result := addmod(mulmod(mload(0x6c0), mload(0x3060), f_q), result, f_q) -mstore(15104, result) - } -mstore(0x3b20, mulmod(mload(0x3b00), mload(0x36a0), f_q)) -mstore(0x3b40, mulmod(sub(f_q, mload(0x3b20)), 1, f_q)) -mstore(0x3b60, mulmod(mload(0x3ae0), 1, f_q)) -{ - let result := mulmod(mload(0x920), mload(0x3040), f_q) -result := addmod(mulmod(mload(0x940), mload(0x3060), f_q), result, f_q) -mstore(15232, result) - } -mstore(0x3ba0, mulmod(mload(0x3b80), mload(0x36a0), f_q)) -mstore(0x3bc0, mulmod(sub(f_q, mload(0x3ba0)), mload(0xa20), f_q)) -mstore(0x3be0, mulmod(mload(0x3ae0), mload(0xa20), f_q)) -mstore(0x3c00, addmod(mload(0x3b40), mload(0x3bc0), f_q)) -{ - let result := mulmod(mload(0x960), mload(0x3040), f_q) -result := addmod(mulmod(mload(0x980), mload(0x3060), f_q), result, f_q) -mstore(15392, result) - } -mstore(0x3c40, mulmod(mload(0x3c20), mload(0x36a0), f_q)) -mstore(0x3c60, mulmod(sub(f_q, mload(0x3c40)), mload(0x3720), f_q)) -mstore(0x3c80, mulmod(mload(0x3ae0), mload(0x3720), f_q)) -mstore(0x3ca0, addmod(mload(0x3c00), mload(0x3c60), f_q)) -mstore(0x3cc0, mulmod(mload(0x3ca0), mload(0xa80), f_q)) -mstore(0x3ce0, mulmod(mload(0x3b60), mload(0xa80), f_q)) -mstore(0x3d00, mulmod(mload(0x3be0), mload(0xa80), f_q)) -mstore(0x3d20, mulmod(mload(0x3c80), mload(0xa80), f_q)) -mstore(0x3d40, addmod(mload(0x3aa0), mload(0x3cc0), f_q)) -mstore(0x3d60, mulmod(1, mload(0x3480), f_q)) -{ - let result := mulmod(mload(0x8c0), mload(0x3080), f_q) -result := addmod(mulmod(mload(0x8e0), mload(0x30a0), f_q), result, f_q) -result := addmod(mulmod(mload(0x900), mload(0x30c0), f_q), result, f_q) -mstore(15744, result) - } -mstore(0x3da0, mulmod(mload(0x3d80), mload(0x36c0), f_q)) -mstore(0x3dc0, mulmod(sub(f_q, mload(0x3da0)), 1, f_q)) -mstore(0x3de0, mulmod(mload(0x3d60), 1, f_q)) -mstore(0x3e00, mulmod(mload(0x3dc0), mload(0x3920), f_q)) -mstore(0x3e20, mulmod(mload(0x3de0), mload(0x3920), f_q)) -mstore(0x3e40, addmod(mload(0x3d40), mload(0x3e00), f_q)) -mstore(0x3e60, mulmod(1, mload(0x34c0), f_q)) -{ - let result := mulmod(mload(0x9a0), mload(0x3100), f_q) -result := addmod(mulmod(mload(0x9c0), mload(0x3120), f_q), result, f_q) -mstore(16000, result) - } -mstore(0x3ea0, mulmod(mload(0x3e80), mload(0x36e0), f_q)) -mstore(0x3ec0, mulmod(sub(f_q, mload(0x3ea0)), 1, f_q)) -mstore(0x3ee0, mulmod(mload(0x3e60), 1, f_q)) -mstore(0x3f00, mulmod(mload(0x3ec0), mload(0x3940), f_q)) -mstore(0x3f20, mulmod(mload(0x3ee0), mload(0x3940), f_q)) -mstore(0x3f40, addmod(mload(0x3e40), mload(0x3f00), f_q)) -mstore(0x3f60, mulmod(1, mload(0x3500), f_q)) -{ - let result := mulmod(mload(0x9e0), mload(0x3160), f_q) -mstore(16256, result) - } -mstore(0x3fa0, mulmod(mload(0x3f80), mload(0x3700), f_q)) -mstore(0x3fc0, mulmod(sub(f_q, mload(0x3fa0)), 1, f_q)) -mstore(0x3fe0, mulmod(mload(0x3f60), 1, f_q)) -{ - let result := mulmod(mload(0x6e0), mload(0x3160), f_q) -mstore(16384, result) - } -mstore(0x4020, mulmod(mload(0x4000), mload(0x3700), f_q)) -mstore(0x4040, mulmod(sub(f_q, mload(0x4020)), mload(0xa20), f_q)) -mstore(0x4060, mulmod(mload(0x3f60), mload(0xa20), f_q)) -mstore(0x4080, addmod(mload(0x3fc0), mload(0x4040), f_q)) -{ - let result := mulmod(mload(0x700), mload(0x3160), f_q) -mstore(16544, result) - } -mstore(0x40c0, mulmod(mload(0x40a0), mload(0x3700), f_q)) -mstore(0x40e0, mulmod(sub(f_q, mload(0x40c0)), mload(0x3720), f_q)) -mstore(0x4100, mulmod(mload(0x3f60), mload(0x3720), f_q)) -mstore(0x4120, addmod(mload(0x4080), mload(0x40e0), f_q)) -{ - let result := mulmod(mload(0x720), mload(0x3160), f_q) -mstore(16704, result) - } -mstore(0x4160, mulmod(mload(0x4140), mload(0x3700), f_q)) -mstore(0x4180, mulmod(sub(f_q, mload(0x4160)), mload(0x3740), f_q)) -mstore(0x41a0, mulmod(mload(0x3f60), mload(0x3740), f_q)) -mstore(0x41c0, addmod(mload(0x4120), mload(0x4180), f_q)) -{ - let result := mulmod(mload(0x740), mload(0x3160), f_q) -mstore(16864, result) - } -mstore(0x4200, mulmod(mload(0x41e0), mload(0x3700), f_q)) -mstore(0x4220, mulmod(sub(f_q, mload(0x4200)), mload(0x3760), f_q)) -mstore(0x4240, mulmod(mload(0x3f60), mload(0x3760), f_q)) -mstore(0x4260, addmod(mload(0x41c0), mload(0x4220), f_q)) -{ - let result := mulmod(mload(0x760), mload(0x3160), f_q) -mstore(17024, result) - } -mstore(0x42a0, mulmod(mload(0x4280), mload(0x3700), f_q)) -mstore(0x42c0, mulmod(sub(f_q, mload(0x42a0)), mload(0x3780), f_q)) -mstore(0x42e0, mulmod(mload(0x3f60), mload(0x3780), f_q)) -mstore(0x4300, addmod(mload(0x4260), mload(0x42c0), f_q)) -{ - let result := mulmod(mload(0x780), mload(0x3160), f_q) -mstore(17184, result) - } -mstore(0x4340, mulmod(mload(0x4320), mload(0x3700), f_q)) -mstore(0x4360, mulmod(sub(f_q, mload(0x4340)), mload(0x37a0), f_q)) -mstore(0x4380, mulmod(mload(0x3f60), mload(0x37a0), f_q)) -mstore(0x43a0, addmod(mload(0x4300), mload(0x4360), f_q)) -{ - let result := mulmod(mload(0x7a0), mload(0x3160), f_q) -mstore(17344, result) - } -mstore(0x43e0, mulmod(mload(0x43c0), mload(0x3700), f_q)) -mstore(0x4400, mulmod(sub(f_q, mload(0x43e0)), mload(0x37c0), f_q)) -mstore(0x4420, mulmod(mload(0x3f60), mload(0x37c0), f_q)) -mstore(0x4440, addmod(mload(0x43a0), mload(0x4400), f_q)) -{ - let result := mulmod(mload(0x7c0), mload(0x3160), f_q) -mstore(17504, result) - } -mstore(0x4480, mulmod(mload(0x4460), mload(0x3700), f_q)) -mstore(0x44a0, mulmod(sub(f_q, mload(0x4480)), mload(0x37e0), f_q)) -mstore(0x44c0, mulmod(mload(0x3f60), mload(0x37e0), f_q)) -mstore(0x44e0, addmod(mload(0x4440), mload(0x44a0), f_q)) -{ - let result := mulmod(mload(0x800), mload(0x3160), f_q) -mstore(17664, result) - } -mstore(0x4520, mulmod(mload(0x4500), mload(0x3700), f_q)) -mstore(0x4540, mulmod(sub(f_q, mload(0x4520)), mload(0x3800), f_q)) -mstore(0x4560, mulmod(mload(0x3f60), mload(0x3800), f_q)) -mstore(0x4580, addmod(mload(0x44e0), mload(0x4540), f_q)) -{ - let result := mulmod(mload(0x820), mload(0x3160), f_q) -mstore(17824, result) - } -mstore(0x45c0, mulmod(mload(0x45a0), mload(0x3700), f_q)) -mstore(0x45e0, mulmod(sub(f_q, mload(0x45c0)), mload(0x3820), f_q)) -mstore(0x4600, mulmod(mload(0x3f60), mload(0x3820), f_q)) -mstore(0x4620, addmod(mload(0x4580), mload(0x45e0), f_q)) -{ - let result := mulmod(mload(0x840), mload(0x3160), f_q) -mstore(17984, result) - } -mstore(0x4660, mulmod(mload(0x4640), mload(0x3700), f_q)) -mstore(0x4680, mulmod(sub(f_q, mload(0x4660)), mload(0x3840), f_q)) -mstore(0x46a0, mulmod(mload(0x3f60), mload(0x3840), f_q)) -mstore(0x46c0, addmod(mload(0x4620), mload(0x4680), f_q)) -{ - let result := mulmod(mload(0x860), mload(0x3160), f_q) -mstore(18144, result) - } -mstore(0x4700, mulmod(mload(0x46e0), mload(0x3700), f_q)) -mstore(0x4720, mulmod(sub(f_q, mload(0x4700)), mload(0x3860), f_q)) -mstore(0x4740, mulmod(mload(0x3f60), mload(0x3860), f_q)) -mstore(0x4760, addmod(mload(0x46c0), mload(0x4720), f_q)) -{ - let result := mulmod(mload(0x880), mload(0x3160), f_q) -mstore(18304, result) - } -mstore(0x47a0, mulmod(mload(0x4780), mload(0x3700), f_q)) -mstore(0x47c0, mulmod(sub(f_q, mload(0x47a0)), mload(0x3880), f_q)) -mstore(0x47e0, mulmod(mload(0x3f60), mload(0x3880), f_q)) -mstore(0x4800, addmod(mload(0x4760), mload(0x47c0), f_q)) -{ - let result := mulmod(mload(0x8a0), mload(0x3160), f_q) -mstore(18464, result) - } -mstore(0x4840, mulmod(mload(0x4820), mload(0x3700), f_q)) -mstore(0x4860, mulmod(sub(f_q, mload(0x4840)), mload(0x38a0), f_q)) -mstore(0x4880, mulmod(mload(0x3f60), mload(0x38a0), f_q)) -mstore(0x48a0, addmod(mload(0x4800), mload(0x4860), f_q)) -mstore(0x48c0, mulmod(mload(0x2dc0), mload(0x3500), f_q)) -mstore(0x48e0, mulmod(mload(0x2de0), mload(0x3500), f_q)) -mstore(0x4900, mulmod(mload(0x2e00), mload(0x3500), f_q)) -mstore(0x4920, mulmod(mload(0x2e20), mload(0x3500), f_q)) -{ - let result := mulmod(mload(0x2e40), mload(0x3160), f_q) -mstore(18752, result) - } -mstore(0x4960, mulmod(mload(0x4940), mload(0x3700), f_q)) -mstore(0x4980, mulmod(sub(f_q, mload(0x4960)), mload(0x38c0), f_q)) -mstore(0x49a0, mulmod(mload(0x3f60), mload(0x38c0), f_q)) -mstore(0x49c0, mulmod(mload(0x48c0), mload(0x38c0), f_q)) -mstore(0x49e0, mulmod(mload(0x48e0), mload(0x38c0), f_q)) -mstore(0x4a00, mulmod(mload(0x4900), mload(0x38c0), f_q)) -mstore(0x4a20, mulmod(mload(0x4920), mload(0x38c0), f_q)) -mstore(0x4a40, addmod(mload(0x48a0), mload(0x4980), f_q)) -{ - let result := mulmod(mload(0x7e0), mload(0x3160), f_q) -mstore(19040, result) - } -mstore(0x4a80, mulmod(mload(0x4a60), mload(0x3700), f_q)) -mstore(0x4aa0, mulmod(sub(f_q, mload(0x4a80)), mload(0x38e0), f_q)) -mstore(0x4ac0, mulmod(mload(0x3f60), mload(0x38e0), f_q)) -mstore(0x4ae0, addmod(mload(0x4a40), mload(0x4aa0), f_q)) -mstore(0x4b00, mulmod(mload(0x4ae0), mload(0x3960), f_q)) -mstore(0x4b20, mulmod(mload(0x3fe0), mload(0x3960), f_q)) -mstore(0x4b40, mulmod(mload(0x4060), mload(0x3960), f_q)) -mstore(0x4b60, mulmod(mload(0x4100), mload(0x3960), f_q)) -mstore(0x4b80, mulmod(mload(0x41a0), mload(0x3960), f_q)) -mstore(0x4ba0, mulmod(mload(0x4240), mload(0x3960), f_q)) -mstore(0x4bc0, mulmod(mload(0x42e0), mload(0x3960), f_q)) -mstore(0x4be0, mulmod(mload(0x4380), mload(0x3960), f_q)) -mstore(0x4c00, mulmod(mload(0x4420), mload(0x3960), f_q)) -mstore(0x4c20, mulmod(mload(0x44c0), mload(0x3960), f_q)) -mstore(0x4c40, mulmod(mload(0x4560), mload(0x3960), f_q)) -mstore(0x4c60, mulmod(mload(0x4600), mload(0x3960), f_q)) -mstore(0x4c80, mulmod(mload(0x46a0), mload(0x3960), f_q)) -mstore(0x4ca0, mulmod(mload(0x4740), mload(0x3960), f_q)) -mstore(0x4cc0, mulmod(mload(0x47e0), mload(0x3960), f_q)) -mstore(0x4ce0, mulmod(mload(0x4880), mload(0x3960), f_q)) -mstore(0x4d00, mulmod(mload(0x49a0), mload(0x3960), f_q)) -mstore(0x4d20, mulmod(mload(0x49c0), mload(0x3960), f_q)) -mstore(0x4d40, mulmod(mload(0x49e0), mload(0x3960), f_q)) -mstore(0x4d60, mulmod(mload(0x4a00), mload(0x3960), f_q)) -mstore(0x4d80, mulmod(mload(0x4a20), mload(0x3960), f_q)) -mstore(0x4da0, mulmod(mload(0x4ac0), mload(0x3960), f_q)) -mstore(0x4dc0, addmod(mload(0x3f40), mload(0x4b00), f_q)) -mstore(0x4de0, mulmod(1, mload(0x3020), f_q)) -mstore(0x4e00, mulmod(1, mload(0xb20), f_q)) -mstore(0x4e20, 0x0000000000000000000000000000000000000000000000000000000000000001) - mstore(0x4e40, 0x0000000000000000000000000000000000000000000000000000000000000002) -mstore(0x4e60, mload(0x4dc0)) -success := and(eq(staticcall(gas(), 0x7, 0x4e20, 0x60, 0x4e20, 0x40), 1), success) -mstore(0x4e80, mload(0x4e20)) - mstore(0x4ea0, mload(0x4e40)) -mstore(0x4ec0, mload(0x80)) - mstore(0x4ee0, mload(0xa0)) -success := and(eq(staticcall(gas(), 0x6, 0x4e80, 0x80, 0x4e80, 0x40), 1), success) -mstore(0x4f00, mload(0xc0)) - mstore(0x4f20, mload(0xe0)) -mstore(0x4f40, mload(0x3ac0)) -success := and(eq(staticcall(gas(), 0x7, 0x4f00, 0x60, 0x4f00, 0x40), 1), success) -mstore(0x4f60, mload(0x4e80)) - mstore(0x4f80, mload(0x4ea0)) -mstore(0x4fa0, mload(0x4f00)) - mstore(0x4fc0, mload(0x4f20)) -success := and(eq(staticcall(gas(), 0x6, 0x4f60, 0x80, 0x4f60, 0x40), 1), success) -mstore(0x4fe0, mload(0x100)) - mstore(0x5000, mload(0x120)) -mstore(0x5020, mload(0x3ce0)) -success := and(eq(staticcall(gas(), 0x7, 0x4fe0, 0x60, 0x4fe0, 0x40), 1), success) -mstore(0x5040, mload(0x4f60)) - mstore(0x5060, mload(0x4f80)) -mstore(0x5080, mload(0x4fe0)) - mstore(0x50a0, mload(0x5000)) -success := and(eq(staticcall(gas(), 0x6, 0x5040, 0x80, 0x5040, 0x40), 1), success) -mstore(0x50c0, mload(0x320)) - mstore(0x50e0, mload(0x340)) -mstore(0x5100, mload(0x3d00)) -success := and(eq(staticcall(gas(), 0x7, 0x50c0, 0x60, 0x50c0, 0x40), 1), success) -mstore(0x5120, mload(0x5040)) - mstore(0x5140, mload(0x5060)) -mstore(0x5160, mload(0x50c0)) - mstore(0x5180, mload(0x50e0)) -success := and(eq(staticcall(gas(), 0x6, 0x5120, 0x80, 0x5120, 0x40), 1), success) -mstore(0x51a0, mload(0x360)) - mstore(0x51c0, mload(0x380)) -mstore(0x51e0, mload(0x3d20)) -success := and(eq(staticcall(gas(), 0x7, 0x51a0, 0x60, 0x51a0, 0x40), 1), success) -mstore(0x5200, mload(0x5120)) - mstore(0x5220, mload(0x5140)) -mstore(0x5240, mload(0x51a0)) - mstore(0x5260, mload(0x51c0)) -success := and(eq(staticcall(gas(), 0x6, 0x5200, 0x80, 0x5200, 0x40), 1), success) -mstore(0x5280, mload(0x2e0)) - mstore(0x52a0, mload(0x300)) -mstore(0x52c0, mload(0x3e20)) -success := and(eq(staticcall(gas(), 0x7, 0x5280, 0x60, 0x5280, 0x40), 1), success) -mstore(0x52e0, mload(0x5200)) - mstore(0x5300, mload(0x5220)) -mstore(0x5320, mload(0x5280)) - mstore(0x5340, mload(0x52a0)) -success := and(eq(staticcall(gas(), 0x6, 0x52e0, 0x80, 0x52e0, 0x40), 1), success) -mstore(0x5360, mload(0x1a0)) - mstore(0x5380, mload(0x1c0)) -mstore(0x53a0, mload(0x3f20)) -success := and(eq(staticcall(gas(), 0x7, 0x5360, 0x60, 0x5360, 0x40), 1), success) -mstore(0x53c0, mload(0x52e0)) - mstore(0x53e0, mload(0x5300)) -mstore(0x5400, mload(0x5360)) - mstore(0x5420, mload(0x5380)) -success := and(eq(staticcall(gas(), 0x6, 0x53c0, 0x80, 0x53c0, 0x40), 1), success) -mstore(0x5440, mload(0x1e0)) - mstore(0x5460, mload(0x200)) -mstore(0x5480, mload(0x4b20)) -success := and(eq(staticcall(gas(), 0x7, 0x5440, 0x60, 0x5440, 0x40), 1), success) -mstore(0x54a0, mload(0x53c0)) - mstore(0x54c0, mload(0x53e0)) -mstore(0x54e0, mload(0x5440)) - mstore(0x5500, mload(0x5460)) -success := and(eq(staticcall(gas(), 0x6, 0x54a0, 0x80, 0x54a0, 0x40), 1), success) -mstore(0x5520, 0x0655d62979dc062dc1e8c15334bf17cf5c7e6352219c0bd0b0cc039598d9a669) - mstore(0x5540, 0x019589d3002f6a0ded46a69053f0c05e7a7ca45339b3d2bae85d00f26ac0f33e) -mstore(0x5560, mload(0x4b40)) -success := and(eq(staticcall(gas(), 0x7, 0x5520, 0x60, 0x5520, 0x40), 1), success) -mstore(0x5580, mload(0x54a0)) - mstore(0x55a0, mload(0x54c0)) -mstore(0x55c0, mload(0x5520)) - mstore(0x55e0, mload(0x5540)) -success := and(eq(staticcall(gas(), 0x6, 0x5580, 0x80, 0x5580, 0x40), 1), success) -mstore(0x5600, 0x1eab999592385208b42a12dcc047763ee5cf12052eb4b0d9a7a286e043f3df9f) - mstore(0x5620, 0x18887eb3c646ffd4961226c91bac9661004798b1fc6a39c43f9a6d1d03767194) -mstore(0x5640, mload(0x4b60)) -success := and(eq(staticcall(gas(), 0x7, 0x5600, 0x60, 0x5600, 0x40), 1), success) -mstore(0x5660, mload(0x5580)) - mstore(0x5680, mload(0x55a0)) -mstore(0x56a0, mload(0x5600)) - mstore(0x56c0, mload(0x5620)) -success := and(eq(staticcall(gas(), 0x6, 0x5660, 0x80, 0x5660, 0x40), 1), success) -mstore(0x56e0, 0x076806058b02e1b5e99b2f2e8eee613194f8df73481659f5938baacd64e4d7b8) - mstore(0x5700, 0x05ae81644b244dceea5350a84a79cbf0a199bbd6c1fad9887423f8c8048e6039) -mstore(0x5720, mload(0x4b80)) -success := and(eq(staticcall(gas(), 0x7, 0x56e0, 0x60, 0x56e0, 0x40), 1), success) -mstore(0x5740, mload(0x5660)) - mstore(0x5760, mload(0x5680)) -mstore(0x5780, mload(0x56e0)) - mstore(0x57a0, mload(0x5700)) -success := and(eq(staticcall(gas(), 0x6, 0x5740, 0x80, 0x5740, 0x40), 1), success) -mstore(0x57c0, 0x0438873fc00231ae527efcf74d9092f5059dfa05275cbe7381e948fe3b7b61d8) - mstore(0x57e0, 0x03c0f314c93403792ba86ec3841b3080f2f7cd092c6bcb632cdbc2122a13cdef) -mstore(0x5800, mload(0x4ba0)) -success := and(eq(staticcall(gas(), 0x7, 0x57c0, 0x60, 0x57c0, 0x40), 1), success) -mstore(0x5820, mload(0x5740)) - mstore(0x5840, mload(0x5760)) -mstore(0x5860, mload(0x57c0)) - mstore(0x5880, mload(0x57e0)) -success := and(eq(staticcall(gas(), 0x6, 0x5820, 0x80, 0x5820, 0x40), 1), success) -mstore(0x58a0, 0x2b12b132a6261ad60249147599cae0d5b3547e510deabba65526d130f04f2402) - mstore(0x58c0, 0x13e3c02ce00f6b7e00d5b099eda5f1155956ae83899a2d59cefcb00dad66a7f6) -mstore(0x58e0, mload(0x4bc0)) -success := and(eq(staticcall(gas(), 0x7, 0x58a0, 0x60, 0x58a0, 0x40), 1), success) -mstore(0x5900, mload(0x5820)) - mstore(0x5920, mload(0x5840)) -mstore(0x5940, mload(0x58a0)) - mstore(0x5960, mload(0x58c0)) -success := and(eq(staticcall(gas(), 0x6, 0x5900, 0x80, 0x5900, 0x40), 1), success) -mstore(0x5980, 0x0ed83370277e0fd35e8258dd5630ce0ce3491fdf7e166d293745635b0cc4eba5) - mstore(0x59a0, 0x03994e7e77ad58072b78757700ab0b79247f2e462b0cf6a5a18b607414c095db) -mstore(0x59c0, mload(0x4be0)) -success := and(eq(staticcall(gas(), 0x7, 0x5980, 0x60, 0x5980, 0x40), 1), success) -mstore(0x59e0, mload(0x5900)) - mstore(0x5a00, mload(0x5920)) -mstore(0x5a20, mload(0x5980)) - mstore(0x5a40, mload(0x59a0)) -success := and(eq(staticcall(gas(), 0x6, 0x59e0, 0x80, 0x59e0, 0x40), 1), success) -mstore(0x5a60, 0x23ba4bc49baab563e9d5bf07da231a4496d35b6bc782dbbd76135fe44c31cbcf) - mstore(0x5a80, 0x28b88097e7edf1b2904f6c25c1e30ca0e38c74a52125b2995c4cf0a750683854) -mstore(0x5aa0, mload(0x4c00)) -success := and(eq(staticcall(gas(), 0x7, 0x5a60, 0x60, 0x5a60, 0x40), 1), success) -mstore(0x5ac0, mload(0x59e0)) - mstore(0x5ae0, mload(0x5a00)) -mstore(0x5b00, mload(0x5a60)) - mstore(0x5b20, mload(0x5a80)) -success := and(eq(staticcall(gas(), 0x6, 0x5ac0, 0x80, 0x5ac0, 0x40), 1), success) -mstore(0x5b40, 0x17dcbba0bbe2d24566de620998f62ff54ea5302ada6aeb18028b61b4dc19bbd3) - mstore(0x5b60, 0x0e1f908007a5c2cc934426c26de7206c53fa10c79d63ef52ee91bfb568c72fbd) -mstore(0x5b80, mload(0x4c20)) -success := and(eq(staticcall(gas(), 0x7, 0x5b40, 0x60, 0x5b40, 0x40), 1), success) -mstore(0x5ba0, mload(0x5ac0)) - mstore(0x5bc0, mload(0x5ae0)) -mstore(0x5be0, mload(0x5b40)) - mstore(0x5c00, mload(0x5b60)) -success := and(eq(staticcall(gas(), 0x6, 0x5ba0, 0x80, 0x5ba0, 0x40), 1), success) -mstore(0x5c20, 0x2c7823f99cb2adb716becb960914ffa1d6e2f257875fdd03c2bee52ef571d41e) - mstore(0x5c40, 0x09ab83ebc6803e65b2e6831c8706d9a134f6b1cf6f6ec5c2697afee095320ee1) -mstore(0x5c60, mload(0x4c40)) -success := and(eq(staticcall(gas(), 0x7, 0x5c20, 0x60, 0x5c20, 0x40), 1), success) -mstore(0x5c80, mload(0x5ba0)) - mstore(0x5ca0, mload(0x5bc0)) -mstore(0x5cc0, mload(0x5c20)) - mstore(0x5ce0, mload(0x5c40)) -success := and(eq(staticcall(gas(), 0x6, 0x5c80, 0x80, 0x5c80, 0x40), 1), success) -mstore(0x5d00, 0x2dc12c205152bfacc354c838225571172c215e01a64de6a2ca6665c70937ac58) - mstore(0x5d20, 0x0449eb529f0038a2bd2f6c0b6213a70488b69b479d90a953579e4c9d45621b85) -mstore(0x5d40, mload(0x4c60)) -success := and(eq(staticcall(gas(), 0x7, 0x5d00, 0x60, 0x5d00, 0x40), 1), success) -mstore(0x5d60, mload(0x5c80)) - mstore(0x5d80, mload(0x5ca0)) -mstore(0x5da0, mload(0x5d00)) - mstore(0x5dc0, mload(0x5d20)) -success := and(eq(staticcall(gas(), 0x6, 0x5d60, 0x80, 0x5d60, 0x40), 1), success) -mstore(0x5de0, 0x09a2ab3913a4770fd50f6ba9ec4ce0b3178b54d7bfca5b42fe7e8e1ce5cf60a9) - mstore(0x5e00, 0x13ec31f94026569c4bb76e2c4ceaa3e6525438ffb4a7a69cde61f6d77b93bad7) -mstore(0x5e20, mload(0x4c80)) -success := and(eq(staticcall(gas(), 0x7, 0x5de0, 0x60, 0x5de0, 0x40), 1), success) -mstore(0x5e40, mload(0x5d60)) - mstore(0x5e60, mload(0x5d80)) -mstore(0x5e80, mload(0x5de0)) - mstore(0x5ea0, mload(0x5e00)) -success := and(eq(staticcall(gas(), 0x6, 0x5e40, 0x80, 0x5e40, 0x40), 1), success) -mstore(0x5ec0, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) - mstore(0x5ee0, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) -mstore(0x5f00, mload(0x4ca0)) -success := and(eq(staticcall(gas(), 0x7, 0x5ec0, 0x60, 0x5ec0, 0x40), 1), success) -mstore(0x5f20, mload(0x5e40)) - mstore(0x5f40, mload(0x5e60)) -mstore(0x5f60, mload(0x5ec0)) - mstore(0x5f80, mload(0x5ee0)) -success := and(eq(staticcall(gas(), 0x6, 0x5f20, 0x80, 0x5f20, 0x40), 1), success) -mstore(0x5fa0, 0x02a9a77d8e6f6fd89f33ba56fe45f6f5c907e50ba28cdd4198acfb562eb21103) - mstore(0x5fc0, 0x23abee68d83c2d6632576e5e95ca01a61e5e3e6d9438c2ac6428c8b6edfe2aba) -mstore(0x5fe0, mload(0x4cc0)) -success := and(eq(staticcall(gas(), 0x7, 0x5fa0, 0x60, 0x5fa0, 0x40), 1), success) -mstore(0x6000, mload(0x5f20)) - mstore(0x6020, mload(0x5f40)) -mstore(0x6040, mload(0x5fa0)) - mstore(0x6060, mload(0x5fc0)) -success := and(eq(staticcall(gas(), 0x6, 0x6000, 0x80, 0x6000, 0x40), 1), success) -mstore(0x6080, 0x2cf36d36bfacbe1a8d8c626aefa75ac0feb46b725989a8e6fabed074bf9f6af7) - mstore(0x60a0, 0x060fded3ed5ec56d9e0064d73c472245a4c4b6ec371e9808692bf7f259d3b730) -mstore(0x60c0, mload(0x4ce0)) -success := and(eq(staticcall(gas(), 0x7, 0x6080, 0x60, 0x6080, 0x40), 1), success) -mstore(0x60e0, mload(0x6000)) - mstore(0x6100, mload(0x6020)) -mstore(0x6120, mload(0x6080)) - mstore(0x6140, mload(0x60a0)) -success := and(eq(staticcall(gas(), 0x6, 0x60e0, 0x80, 0x60e0, 0x40), 1), success) -mstore(0x6160, mload(0x440)) - mstore(0x6180, mload(0x460)) -mstore(0x61a0, mload(0x4d00)) -success := and(eq(staticcall(gas(), 0x7, 0x6160, 0x60, 0x6160, 0x40), 1), success) -mstore(0x61c0, mload(0x60e0)) - mstore(0x61e0, mload(0x6100)) -mstore(0x6200, mload(0x6160)) - mstore(0x6220, mload(0x6180)) -success := and(eq(staticcall(gas(), 0x6, 0x61c0, 0x80, 0x61c0, 0x40), 1), success) -mstore(0x6240, mload(0x480)) - mstore(0x6260, mload(0x4a0)) -mstore(0x6280, mload(0x4d20)) -success := and(eq(staticcall(gas(), 0x7, 0x6240, 0x60, 0x6240, 0x40), 1), success) -mstore(0x62a0, mload(0x61c0)) - mstore(0x62c0, mload(0x61e0)) -mstore(0x62e0, mload(0x6240)) - mstore(0x6300, mload(0x6260)) -success := and(eq(staticcall(gas(), 0x6, 0x62a0, 0x80, 0x62a0, 0x40), 1), success) -mstore(0x6320, mload(0x4c0)) - mstore(0x6340, mload(0x4e0)) -mstore(0x6360, mload(0x4d40)) -success := and(eq(staticcall(gas(), 0x7, 0x6320, 0x60, 0x6320, 0x40), 1), success) -mstore(0x6380, mload(0x62a0)) - mstore(0x63a0, mload(0x62c0)) -mstore(0x63c0, mload(0x6320)) - mstore(0x63e0, mload(0x6340)) -success := and(eq(staticcall(gas(), 0x6, 0x6380, 0x80, 0x6380, 0x40), 1), success) -mstore(0x6400, mload(0x500)) - mstore(0x6420, mload(0x520)) -mstore(0x6440, mload(0x4d60)) -success := and(eq(staticcall(gas(), 0x7, 0x6400, 0x60, 0x6400, 0x40), 1), success) -mstore(0x6460, mload(0x6380)) - mstore(0x6480, mload(0x63a0)) -mstore(0x64a0, mload(0x6400)) - mstore(0x64c0, mload(0x6420)) -success := and(eq(staticcall(gas(), 0x6, 0x6460, 0x80, 0x6460, 0x40), 1), success) -mstore(0x64e0, mload(0x540)) - mstore(0x6500, mload(0x560)) -mstore(0x6520, mload(0x4d80)) -success := and(eq(staticcall(gas(), 0x7, 0x64e0, 0x60, 0x64e0, 0x40), 1), success) -mstore(0x6540, mload(0x6460)) - mstore(0x6560, mload(0x6480)) -mstore(0x6580, mload(0x64e0)) - mstore(0x65a0, mload(0x6500)) -success := and(eq(staticcall(gas(), 0x6, 0x6540, 0x80, 0x6540, 0x40), 1), success) -mstore(0x65c0, mload(0x3a0)) - mstore(0x65e0, mload(0x3c0)) -mstore(0x6600, mload(0x4da0)) -success := and(eq(staticcall(gas(), 0x7, 0x65c0, 0x60, 0x65c0, 0x40), 1), success) -mstore(0x6620, mload(0x6540)) - mstore(0x6640, mload(0x6560)) -mstore(0x6660, mload(0x65c0)) - mstore(0x6680, mload(0x65e0)) -success := and(eq(staticcall(gas(), 0x6, 0x6620, 0x80, 0x6620, 0x40), 1), success) -mstore(0x66a0, mload(0xac0)) - mstore(0x66c0, mload(0xae0)) -mstore(0x66e0, sub(f_q, mload(0x4de0))) -success := and(eq(staticcall(gas(), 0x7, 0x66a0, 0x60, 0x66a0, 0x40), 1), success) -mstore(0x6700, mload(0x6620)) - mstore(0x6720, mload(0x6640)) -mstore(0x6740, mload(0x66a0)) - mstore(0x6760, mload(0x66c0)) -success := and(eq(staticcall(gas(), 0x6, 0x6700, 0x80, 0x6700, 0x40), 1), success) -mstore(0x6780, mload(0xb60)) - mstore(0x67a0, mload(0xb80)) -mstore(0x67c0, mload(0x4e00)) -success := and(eq(staticcall(gas(), 0x7, 0x6780, 0x60, 0x6780, 0x40), 1), success) -mstore(0x67e0, mload(0x6700)) - mstore(0x6800, mload(0x6720)) -mstore(0x6820, mload(0x6780)) - mstore(0x6840, mload(0x67a0)) -success := and(eq(staticcall(gas(), 0x6, 0x67e0, 0x80, 0x67e0, 0x40), 1), success) -mstore(0x6860, mload(0x67e0)) - mstore(0x6880, mload(0x6800)) -mstore(0x68a0, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) - mstore(0x68c0, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) - mstore(0x68e0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) - mstore(0x6900, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) -mstore(0x6920, mload(0xb60)) - mstore(0x6940, mload(0xb80)) -mstore(0x6960, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) - mstore(0x6980, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) - mstore(0x69a0, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) - mstore(0x69c0, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) -success := and(eq(staticcall(gas(), 0x8, 0x6860, 0x180, 0x6860, 0x20), 1), success) -success := and(eq(mload(0x6860), 1), success) - - if not(success) { revert(0, 0) } - return(0, 0) - - } - } - } diff --git a/contracts/src/Summa.sol b/contracts/src/Summa.sol index 82159afc..82d8ccbd 100644 --- a/contracts/src/Summa.sol +++ b/contracts/src/Summa.sol @@ -4,13 +4,22 @@ pragma solidity ^0.8.18; // Uncomment this line to use console.log //import "hardhat/console.sol"; -import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "./interfaces/IVerifier.sol"; contract Summa is Ownable { + /** + * @dev Struct representing the configuration of the Summa instance + * @param mstLevels The number of levels of the Merkle sum tree + * @param currenciesCount The number of cryptocurrencies supported by the Merkle sum tree + * @param balanceByteRange The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree + */ + struct SummaConfig { + uint16 mstLevels; + uint16 currenciesCount; + uint8 balanceByteRange; + } /** * @dev Struct representing an address ownership proof submitted by the CEX * @param cexAddress The address owned by the CEX (submitted as a string, as it can be a non-EVM address) @@ -26,58 +35,78 @@ contract Summa is Ownable { } /** - * @dev Struct representing an asset owned by the CEX - * @param assetName The name of the asset - * @param chain The name of the chain name where the asset lives (e.g., ETH, BTC) - * @param amount The total amount of the asset that the CEX holds on a given chain + * @dev Struct identifying a cryptocurrency traded on the CEX + * @param name The name of the cryptocurrency + * @param chain The name of the chain name where the cryptocurrency lives (e.g., ETH, BTC) */ - struct Asset { - string assetName; + struct Cryptocurrency { + string name; string chain; - uint256 amount; } - // Verifier contracts - IVerifier private immutable solvencyVerifier; + /** + * @dev Struct representing a commitment submitted by the CEX. + * @param mstRoot Merkle sum tree root of the CEX's liabilities + * @param rootBalances The total sums of the liabilities included in the tree + * @param blockchainNames The names of the blockchains where the CEX holds the cryptocurrencies included into the tree + * @param cryptocurrencyNames The names of the cryptocurrencies included into the tree + */ + struct Commitment { + uint256 mstRoot; + uint256[] rootBalances; + string[] cryptocurrencyNames; + string[] blockchainNames; + } + + // Summa configuration + SummaConfig public config; + + // User inclusion proof verifier IVerifier private immutable inclusionVerifier; - // All address ownership proofs submitted by the CEX + // List of all address ownership proofs submitted by the CEX AddressOwnershipProof[] public addressOwnershipProofs; + function getAddressOwnershipProof( + bytes32 addressHash + ) public view returns (AddressOwnershipProof memory) { + require( + _ownershipProofByAddress[addressHash] > 0, + "Address not verified" + ); + // -1 comes from the fact that 0 is reserved to distinguish the case when the proof has not yet been submitted + return + addressOwnershipProofs[_ownershipProofByAddress[addressHash] - 1]; + } + // Convenience mapping to check if an address has already been verified - /* - Boolean type is better than uint256 for this mapping, at least more than 2,100 gas is saved per call - */ - mapping(bytes32 => uint256) public ownershipProofByAddress; + mapping(bytes32 => uint256) private _ownershipProofByAddress; - // MST roots corresponding to successfully verified solvency proofs by timestamp - mapping(uint256 => uint256) public mstRoots; + // Solvency commitments by timestamp submitted by the CEX + mapping(uint256 => Commitment) public commitments; event AddressOwnershipProofSubmitted( AddressOwnershipProof[] addressOwnershipProofs ); - event SolvencyProofSubmitted( + event LiabilitiesCommitmentSubmitted( uint256 indexed timestamp, uint256 mstRoot, - Asset[] assets + uint256[] rootBalances, + Cryptocurrency[] cryptocurrencies ); - constructor(IVerifier _solvencyVerifier, IVerifier _inclusionVerifier) { - solvencyVerifier = _solvencyVerifier; + constructor( + IVerifier _inclusionVerifier, + uint16 mstLevels, + uint16 currenciesCount, + uint8 balanceByteRange + ) { inclusionVerifier = _inclusionVerifier; + config = SummaConfig(mstLevels, currenciesCount, balanceByteRange); } - /* - // While this duplicate method might elevate deployment costs, the trade-off is a reduction in usage and maintenance costs. - function submitProofOfAddressOwnership( - AddressOwnershipProof memory _addressOwnershipProof - ) public onlyOwner { - ... - } - */ - /** - * @dev Submit an optimistic proof of address ownership for a CEX. The proof is subject to an off-chain verification as it's not feasible to verify the signatures of non-EVM chains in an Ethereum smart contract. + * @dev Submit an optimistic proof of multiple address ownership for a CEX. The proof is subject to an off-chain verification as it's not feasible to verify the signatures of non-EVM chains in an Ethereum smart contract. * @param _addressOwnershipProofs The list of address ownership proofs */ function submitProofOfAddressOwnership( @@ -85,15 +114,14 @@ contract Summa is Ownable { ) public onlyOwner { for (uint i = 0; i < _addressOwnershipProofs.length; i++) { bytes32 addressHash = keccak256( - abi.encode(_addressOwnershipProofs[i].cexAddress) + abi.encodePacked(_addressOwnershipProofs[i].cexAddress) ); - uint256 index = ownershipProofByAddress[addressHash]; - require(index == 0, "Address already verified"); - /* - Is there any reason to assign value `i + 1` to `ownershipProofByAddress[addressHash]`? - */ - ownershipProofByAddress[addressHash] = i + 1; + uint256 proofIndex = _ownershipProofByAddress[addressHash]; + require(proofIndex == 0, "Address already verified"); + addressOwnershipProofs.push(_addressOwnershipProofs[i]); + _ownershipProofByAddress[addressHash] = addressOwnershipProofs + .length; require( bytes(_addressOwnershipProofs[i].cexAddress).length != 0 && bytes(_addressOwnershipProofs[i].chain).length != 0 && @@ -107,53 +135,54 @@ contract Summa is Ownable { } /** - * @dev Submit proof of solvency for a CEX + * @dev Submit commitment for a CEX * @param mstRoot Merkle sum tree root of the CEX's liabilities - * @param assets The list of assets owned by the CEX - * @param proof The ZK proof + * @param rootBalances The total sums of the liabilities included into the Merkle sum tree + * @param cryptocurrencies The cryptocurrencies included into the Merkle sum tree * @param timestamp The timestamp at which the CEX took the snapshot of its assets and liabilities */ - function submitProofOfSolvency( + function submitCommitment( uint256 mstRoot, - Asset[] memory assets, - bytes memory proof, + uint256[] memory rootBalances, + Cryptocurrency[] memory cryptocurrencies, uint256 timestamp ) public onlyOwner { + require(mstRoot != 0, "Invalid MST root"); require( - addressOwnershipProofs.length != 0, - "The CEX has not submitted any address ownership proofs" + rootBalances.length == cryptocurrencies.length, + "Root liabilities sums and liabilities number mismatch" + ); + string[] memory cryptocurrencyNames = new string[]( + cryptocurrencies.length ); - uint256[] memory inputs = new uint256[](assets.length + 1); - inputs[0] = mstRoot; - for (uint i = 0; i < assets.length; i++) { + string[] memory blockchainNames = new string[](cryptocurrencies.length); + for (uint i = 0; i < cryptocurrencies.length; i++) { require( - bytes(assets[i].chain).length != 0 && - bytes(assets[i].assetName).length != 0, - "Invalid asset" + bytes(cryptocurrencies[i].chain).length != 0 && + bytes(cryptocurrencies[i].name).length != 0, + "Invalid cryptocurrency" ); - inputs[i + 1] = assets[i].amount; + require( + rootBalances[i] != 0, + "All root sums should be greater than zero" + ); + cryptocurrencyNames[i] = cryptocurrencies[i].name; + blockchainNames[i] = cryptocurrencies[i].chain; } - require(verifySolvencyProof(proof, inputs), "Invalid ZK proof"); - - mstRoots[timestamp] = mstRoot; - - emit SolvencyProofSubmitted(timestamp, inputs[0], assets); - } - /* - It would be helpful to provide a description of the public inputs for the `verifySolvencyProof` and `verifyInclusionProof` methods. - */ + commitments[timestamp] = Commitment( + mstRoot, + rootBalances, + cryptocurrencyNames, + blockchainNames + ); - /** - * Verify the proof of CEX solvency - * @param proof ZK proof - * @param publicInputs proof inputs - */ - function verifySolvencyProof( - bytes memory proof, - uint256[] memory publicInputs - ) public view returns (bool) { - return solvencyVerifier.verify(publicInputs, proof); + emit LiabilitiesCommitmentSubmitted( + timestamp, + mstRoot, + rootBalances, + cryptocurrencies + ); } /** @@ -166,7 +195,16 @@ contract Summa is Ownable { uint256[] memory publicInputs, uint256 timestamp ) public view returns (bool) { - require(mstRoots[timestamp] == publicInputs[1], "Invalid MST root"); + require( + commitments[timestamp].mstRoot == publicInputs[1], + "Invalid MST root" + ); + for (uint i = 2; i < publicInputs.length; i++) { + require( + commitments[timestamp].rootBalances[i - 2] == publicInputs[i], + "Invalid root balance" + ); + } return inclusionVerifier.verify(publicInputs, proof); } } diff --git a/contracts/test/Summa.ts b/contracts/test/Summa.ts index 2ab793f1..e7e9aa12 100644 --- a/contracts/test/Summa.ts +++ b/contracts/test/Summa.ts @@ -9,27 +9,25 @@ import * as fs from "fs"; import * as path from "path"; describe("Summa Contract", () => { - function submitProofOfSolvency( + function submitCommitment( summa: Summa, mstRoot: BigNumber, - proof: string, - assets = [ + rootBalances: BigNumber[], + cryptocurrencies = [ { chain: "ETH", - assetName: "ETH", - amount: BigNumber.from(556863), + name: "ETH", }, { - chain: "ETH", - assetName: "USDT", - amount: BigNumber.from(556863), + chain: "BTC", + name: "BTC", }, ] ): any { - return summa.submitProofOfSolvency( + return summa.submitCommitment( mstRoot, - assets, - proof, + rootBalances, + cryptocurrencies, BigNumber.from(1693559255) ); } @@ -38,11 +36,13 @@ describe("Summa Contract", () => { summa: Summa, inclusionProof: string, leafHash: BigNumber, - mstRoot: BigNumber + mstRoot: BigNumber, + balance1: BigNumber, + balance2: BigNumber ): any { return summa.verifyInclusionProof( inclusionProof, - [leafHash, mstRoot], + [leafHash, mstRoot, balance1, balance2], 1693559255 ); } @@ -52,19 +52,16 @@ describe("Summa Contract", () => { const [owner, addr1, addr2, addr3]: SignerWithAddress[] = await ethers.getSigners(); - const solvencyVerifier = await ethers.deployContract( - "src/SolvencyVerifier.sol:Verifier" - ); - await solvencyVerifier.deployed(); - const inclusionVerifier = await ethers.deployContract( "src/InclusionVerifier.sol:Verifier" ); await inclusionVerifier.deployed(); const summa = await ethers.deployContract("Summa", [ - solvencyVerifier.address, inclusionVerifier.address, + 4, // The number of levels of the Merkle sum tree + 2, // The number of cryptocurrencies supported by the Merkle sum tree + 14, // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree ]); await summa.deployed(); @@ -112,14 +109,14 @@ describe("Summa Contract", () => { ownedAddresses = [ { chain: "ETH", - cexAddress: defaultAbiCoder.encode(["address"], [account1.address]), + cexAddress: account1.address.toString(), signature: "0x089b32327d332c295dc3b8873c205b72153211de6dc1c51235782b091cefb9d06d6df2661b86a7d441cd322f125b84901486b150e684221a7b7636eb8182af551b", message: message, }, { chain: "ETH", - cexAddress: defaultAbiCoder.encode(["address"], [account2.address]), + cexAddress: account2.address.toString(), signature: "0xb17a9e25265d3b88de7bfad81e7accad6e3d5612308ff83cc0fef76a34152b0444309e8fc3dea5139e49b6fc83a8553071a7af3d0cfd3fb8c1aea2a4c171729c1c", message: message, @@ -133,38 +130,44 @@ describe("Summa Contract", () => { .withArgs((ownedAddresses: any) => { return ( ownedAddresses[0].chain == "ETH" && - ownedAddresses[0].cexAddress == - defaultAbiCoder.encode(["address"], [account1.address]) && + ownedAddresses[0].cexAddress == account1.address && ownedAddresses[0].signature == "0x089b32327d332c295dc3b8873c205b72153211de6dc1c51235782b091cefb9d06d6df2661b86a7d441cd322f125b84901486b150e684221a7b7636eb8182af551b" && ownedAddresses[0].message == message && ownedAddresses[1].chain == "ETH" && - ownedAddresses[1].cexAddress == - defaultAbiCoder.encode(["address"], [account2.address]) && + ownedAddresses[1].cexAddress == account2.address && ownedAddresses[1].signature == "0xb17a9e25265d3b88de7bfad81e7accad6e3d5612308ff83cc0fef76a34152b0444309e8fc3dea5139e49b6fc83a8553071a7af3d0cfd3fb8c1aea2a4c171729c1c" && ownedAddresses[1].message == message ); }); - let proofOfAddressOwnership0 = await summa.addressOwnershipProofs(0); - expect(proofOfAddressOwnership0.chain).to.be.equal("ETH"); - expect(proofOfAddressOwnership0.cexAddress).to.be.equal( - defaultAbiCoder.encode(["address"], [account1.address]) + const addr1Hash = ethers.utils.solidityKeccak256( + ["string"], + [account1.address] ); - expect(proofOfAddressOwnership0.signature).to.be.equal( - "0x089b32327d332c295dc3b8873c205b72153211de6dc1c51235782b091cefb9d06d6df2661b86a7d441cd322f125b84901486b150e684221a7b7636eb8182af551b" + let proofOfAddressOwnership1 = await summa.getAddressOwnershipProof( + addr1Hash ); - expect(proofOfAddressOwnership0.message).to.be.equal(message); - let proofOfAddressOwnership1 = await summa.addressOwnershipProofs(1); expect(proofOfAddressOwnership1.chain).to.be.equal("ETH"); - expect(proofOfAddressOwnership1.cexAddress).to.be.equal( - defaultAbiCoder.encode(["address"], [account2.address]) - ); + expect(proofOfAddressOwnership1.cexAddress).to.be.equal(account1.address); expect(proofOfAddressOwnership1.signature).to.be.equal( - "0xb17a9e25265d3b88de7bfad81e7accad6e3d5612308ff83cc0fef76a34152b0444309e8fc3dea5139e49b6fc83a8553071a7af3d0cfd3fb8c1aea2a4c171729c1c" + "0x089b32327d332c295dc3b8873c205b72153211de6dc1c51235782b091cefb9d06d6df2661b86a7d441cd322f125b84901486b150e684221a7b7636eb8182af551b" ); expect(proofOfAddressOwnership1.message).to.be.equal(message); + const addr2Hash = ethers.utils.solidityKeccak256( + ["string"], + [account2.address] + ); + let proofOfAddressOwnership2 = await summa.getAddressOwnershipProof( + addr2Hash + ); + expect(proofOfAddressOwnership2.chain).to.be.equal("ETH"); + expect(proofOfAddressOwnership2.cexAddress).to.be.equal(account2.address); + expect(proofOfAddressOwnership2.signature).to.be.equal( + "0xb17a9e25265d3b88de7bfad81e7accad6e3d5612308ff83cc0fef76a34152b0444309e8fc3dea5139e49b6fc83a8553071a7af3d0cfd3fb8c1aea2a4c171729c1c" + ); + expect(proofOfAddressOwnership2.message).to.be.equal(message); }); it("should revert if the caller is not the owner", async () => { @@ -207,14 +210,24 @@ describe("Summa Contract", () => { summa.submitProofOfAddressOwnership(ownedAddresses) ).to.be.revertedWith("Invalid proof of address ownership"); }); + + it("should revert if requesting proof for unverified address", async () => { + const addr1Hash = ethers.utils.solidityKeccak256( + ["string"], + [account1.address] + ); + await expect( + summa.getAddressOwnershipProof(addr1Hash) + ).to.be.revertedWith("Address not verified"); + }); }); - describe("verify proof of solvency", () => { + describe("submit commitment", () => { let mstRoot: BigNumber; + let rootBalances: BigNumber[]; let summa: Summa; let account1: SignerWithAddress; let account2: SignerWithAddress; - let proof: string; //let ethAccount3; let ownedAddresses: Summa.AddressOwnershipProofStruct[]; const message = ethers.utils.defaultAbiCoder.encode( @@ -231,49 +244,46 @@ describe("Summa Contract", () => { ownedAddresses = [ { chain: "ETH", - cexAddress: defaultAbiCoder.encode(["address"], [account1.address]), + cexAddress: account1.address.toString(), signature: "0x089b32327d332c295dc3b8873c205b72153211de6dc1c51235782b091cefb9d06d6df2661b86a7d441cd322f125b84901486b150e684221a7b7636eb8182af551b", message: message, }, { chain: "ETH", - cexAddress: defaultAbiCoder.encode(["address"], [account2.address]), + cexAddress: account2.address.toString(), signature: "0xb17a9e25265d3b88de7bfad81e7accad6e3d5612308ff83cc0fef76a34152b0444309e8fc3dea5139e49b6fc83a8553071a7af3d0cfd3fb8c1aea2a4c171729c1c", message: message, }, ]; - const jsonData = fs.readFileSync( + const commitmentCalldataJson = fs.readFileSync( path.resolve( __dirname, - "../../zk_prover/examples/solvency_proof_solidity_calldata.json" + "../../zk_prover/examples/commitment_solidity_calldata.json" ), "utf-8" ); - const calldata: any = JSON.parse(jsonData); + const commitmentCalldata: any = JSON.parse(commitmentCalldataJson); - mstRoot = calldata.public_inputs[0]; - proof = calldata.proof; + mstRoot = commitmentCalldata.root_hash; + rootBalances = commitmentCalldata.root_balances; }); - it("should verify the proof of solvency for the given public input", async () => { + it("should submit commitment for the given public input", async () => { await summa.submitProofOfAddressOwnership(ownedAddresses); - await expect(submitProofOfSolvency(summa, mstRoot, proof)) - .to.emit(summa, "SolvencyProofSubmitted") + await expect(submitCommitment(summa, mstRoot, rootBalances)) + .to.emit(summa, "LiabilitiesCommitmentSubmitted") .withArgs( BigNumber.from(1693559255), mstRoot, - (assets: Summa.AssetStruct[]) => { + rootBalances, + (cryptocurrencies: [Summa.CryptocurrencyStruct]) => { return ( - assets[0].chain == "ETH" && - assets[0].assetName == "ETH" && - BigNumber.from(556863).eq(assets[0].amount as BigNumber) && - assets[1].chain == "ETH" && - assets[1].assetName == "USDT" && - BigNumber.from(556863).eq(assets[1].amount as BigNumber) + cryptocurrencies[0].chain == "ETH" && + cryptocurrencies[0].name == "ETH" ); } ); @@ -281,93 +291,87 @@ describe("Summa Contract", () => { it("should revert if the caller is not the owner", async () => { await expect( - summa.connect(account2).submitProofOfSolvency( + summa.connect(account2).submitCommitment( mstRoot, + [BigNumber.from(1000000000)], [ { chain: "ETH", - assetName: "ETH", - amount: BigNumber.from(556863), - }, - { - chain: "ETH", - assetName: "USDT", - amount: BigNumber.from(556863), + name: "ETH", }, ], - proof, BigNumber.from(1693559255) ) ).to.be.revertedWith("Ownable: caller is not the owner"); }); - it("should not verify the proof of solvency if the CEX hasn't proven the address ownership", async () => { - await expect( - submitProofOfSolvency(summa, mstRoot, proof) - ).to.be.revertedWith( - "The CEX has not submitted any address ownership proofs" - ); - }); - - it("should revert with invalid MST root", async () => { - mstRoot = BigNumber.from(0); + it("should revert with invalid root sum", async () => { + rootBalances = [BigNumber.from(0), BigNumber.from(0)]; await summa.submitProofOfAddressOwnership(ownedAddresses); await expect( - submitProofOfSolvency(summa, mstRoot, proof) - ).to.be.revertedWith("Invalid ZK proof"); + submitCommitment(summa, mstRoot, rootBalances) + ).to.be.revertedWith("All root sums should be greater than zero"); }); - it("should revert with invalid assets", async () => { + it("should revert with invalid cryptocurrencies", async () => { await summa.submitProofOfAddressOwnership(ownedAddresses); await expect( - submitProofOfSolvency(summa, mstRoot, proof, [ + submitCommitment(summa, mstRoot, rootBalances, [ + { + chain: "BTC", + name: "BTC", + }, { chain: "", - assetName: "ETH", - amount: BigNumber.from(556863), + name: "ETH", }, ]) - ).to.be.revertedWith("Invalid asset"); + ).to.be.revertedWith("Invalid cryptocurrency"); await expect( - submitProofOfSolvency(summa, mstRoot, proof, [ + submitCommitment(summa, mstRoot, rootBalances, [ { chain: "ETH", - assetName: "", - amount: BigNumber.from(556863), + name: "ETH", + }, + { + chain: "BTC", + name: "", }, ]) - ).to.be.revertedWith("Invalid asset"); + ).to.be.revertedWith("Invalid cryptocurrency"); }); - it("should revert with invalid proof", async () => { - await summa.submitProofOfAddressOwnership(ownedAddresses); - - proof = proof.replace("1", "2"); - + it("should not submit invalid root", async () => { await expect( - submitProofOfSolvency(summa, mstRoot, proof) - ).to.be.revertedWith("Invalid ZK proof"); - - proof = "0x000000"; + submitCommitment(summa, BigNumber.from(0), rootBalances) + ).to.be.revertedWith("Invalid MST root"); + }); + it("should revert if cryptocurrency and liability counts don't match", async () => { + rootBalances = [BigNumber.from(10000000)]; await expect( - submitProofOfSolvency(summa, mstRoot, proof) - ).to.be.revertedWithoutReason(); + submitCommitment(summa, mstRoot, rootBalances) + ).to.be.revertedWith( + "Root liabilities sums and liabilities number mismatch" + ); }); }); describe("verify proof of inclusion", () => { - let mstRoot: BigNumber; + let commitmentMstRoot: BigNumber; + let rootBalances: BigNumber[]; + let inclusionMstRoot: BigNumber; let leafHash: BigNumber; + let balance1: BigNumber; + let balance2: BigNumber; let summa: Summa; let account1: SignerWithAddress; let account2: SignerWithAddress; let inclusionProof: string; - let solvencyProof: string; let ownedAddresses: Summa.AddressOwnershipProofStruct[]; const message = ethers.utils.defaultAbiCoder.encode( ["string"], @@ -397,63 +401,110 @@ describe("Summa Contract", () => { }, ]; - const solvencyJson = fs.readFileSync( + const inclusionJson = fs.readFileSync( path.resolve( __dirname, - "../../zk_prover/examples/solvency_proof_solidity_calldata.json" + "../../zk_prover/examples/inclusion_proof_solidity_calldata.json" ), "utf-8" ); - const solvencyCalldata: any = JSON.parse(solvencyJson); + const inclusionCalldata: any = JSON.parse(inclusionJson); - mstRoot = solvencyCalldata.public_inputs[0]; - solvencyProof = solvencyCalldata.proof; + inclusionProof = inclusionCalldata.proof; + leafHash = inclusionCalldata.public_inputs[0]; + inclusionMstRoot = inclusionCalldata.public_inputs[1]; + balance1 = inclusionCalldata.public_inputs[2]; + balance2 = inclusionCalldata.public_inputs[3]; - const inclusionJson = fs.readFileSync( + const commitmentCalldataJson = fs.readFileSync( path.resolve( __dirname, - "../../zk_prover/examples/inclusion_proof_solidity_calldata.json" + "../../zk_prover/examples/commitment_solidity_calldata.json" ), "utf-8" ); - const inclusionCalldata: any = JSON.parse(inclusionJson); + const commitmentCalldata: any = JSON.parse(commitmentCalldataJson); - leafHash = inclusionCalldata.public_inputs[0]; - mstRoot = inclusionCalldata.public_inputs[1]; - inclusionProof = inclusionCalldata.proof; + commitmentMstRoot = commitmentCalldata.root_hash; + rootBalances = commitmentCalldata.root_balances; }); it("should verify the proof of inclusion for the given public input", async () => { await summa.submitProofOfAddressOwnership(ownedAddresses); - await submitProofOfSolvency(summa, mstRoot, solvencyProof); + await submitCommitment(summa, commitmentMstRoot, rootBalances); expect( - await verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + await verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + balance1, + balance2 + ) ).to.be.equal(true); }); it("should not verify with invalid MST root", async () => { await summa.submitProofOfAddressOwnership(ownedAddresses); - await submitProofOfSolvency(summa, mstRoot, solvencyProof); - mstRoot = BigNumber.from(0); + await submitCommitment(summa, commitmentMstRoot, rootBalances); + inclusionMstRoot = BigNumber.from(0); await expect( - verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + balance1, + balance2 + ) ).to.be.revertedWith("Invalid MST root"); }); it("should not verify if the MST root lookup by timestamp returns an incorrect MST root", async () => { // The lookup will return a zero MST root as no MST root has been stored yet await expect( - verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + balance1, + balance2 + ) ).to.be.revertedWith("Invalid MST root"); }); + it("should not verify with invalid root balances", async () => { + balance1 = BigNumber.from(0); + + await summa.submitProofOfAddressOwnership(ownedAddresses); + await submitCommitment(summa, commitmentMstRoot, rootBalances); + await expect( + verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + balance1, + balance2 + ) + ).to.be.revertedWith("Invalid root balance"); + }); + it("should not verify with invalid leaf", async () => { leafHash = BigNumber.from(0); await summa.submitProofOfAddressOwnership(ownedAddresses); - await submitProofOfSolvency(summa, mstRoot, solvencyProof); + await submitCommitment(summa, commitmentMstRoot, rootBalances); expect( - await verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + await verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + balance1, + balance2 + ) ).to.be.equal(false); }); @@ -461,9 +512,16 @@ describe("Summa Contract", () => { inclusionProof = inclusionProof.replace("1", "2"); await summa.submitProofOfAddressOwnership(ownedAddresses); - await submitProofOfSolvency(summa, mstRoot, solvencyProof); + await submitCommitment(summa, commitmentMstRoot, rootBalances); expect( - await verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + await verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + balance1, + balance2 + ) ).to.be.equal(false); }); }); diff --git a/csv/entry_13.csv b/csv/entry_13.csv new file mode 100644 index 00000000..3294526a --- /dev/null +++ b/csv/entry_13.csv @@ -0,0 +1,14 @@ +username,balance_ETH_ETH,balance_USDT_ETH +dxGaEAii,11888,41163 +MBlfbBGI,67823,18651 +lAhWlEWZ,18651,2087 +nuZweYtO,22073,55683 +gbdSwiuY,34897,83296 +RZNneNuP,83296,16881 +YsscHXkp,31699,35479 +RkLzkDun,2087,79731 +HlQlnEYI,30605,11888 +RqkZOFYe,16881,14874 +NjCSRAfD,41163,67823 +pHniJMQY,14874,22073 +dOGIMzKR,10032,10032 \ No newline at end of file diff --git a/csv/entry_16.csv b/csv/entry_16.csv new file mode 100644 index 00000000..c0d4ebc9 --- /dev/null +++ b/csv/entry_16.csv @@ -0,0 +1,17 @@ +username,balance_ETH_ETH,balance_USDT_ETH +dxGaEAii,11888,41163 +MBlfbBGI,67823,18651 +lAhWlEWZ,18651,2087 +nuZweYtO,22073,55683 +gbdSwiuY,34897,83296 +RZNneNuP,83296,16881 +YsscHXkp,31699,35479 +RkLzkDun,2087,79731 +HlQlnEYI,30605,11888 +RqkZOFYe,16881,14874 +NjCSRAfD,41163,67823 +pHniJMQY,14874,22073 +dOGIMzKR,10032,10032 +HfMDmNLp,55683,34897 +xPLKzCBl,79731,30605 +AtwIxZHo,35479,31699 diff --git a/csv/entry_16_bigints.csv b/csv/entry_16_bigints.csv new file mode 100644 index 00000000..04e2e247 --- /dev/null +++ b/csv/entry_16_bigints.csv @@ -0,0 +1,17 @@ +username,balance_ETH_ETH,balance_USDT_ETH +dxGaEAii,18446744073709551616,79731 +MBlfbBGI,67823,55683 +lAhWlEWZ,18651,22073 +nuZweYtO,22073,35479 +gbdSwiuY,34897,10032 +RZNneNuP,83296,2087 +YsscHXkp,31699,34897 +RkLzkDun,2087,67823 +HlQlnEYI,30605,31699 +RqkZOFYe,16881,16881 +NjCSRAfD,41163,14874 +pHniJMQY,14874,18651 +dOGIMzKR,10032,41163 +HfMDmNLp,55683,83296 +xPLKzCBl,79731,18446744073709551616 +AtwIxZHo,35479,30605 diff --git a/csv/entry_16_modified.csv b/csv/entry_16_modified.csv new file mode 100644 index 00000000..b5496bf2 --- /dev/null +++ b/csv/entry_16_modified.csv @@ -0,0 +1,17 @@ +username,balance_ETH_ETH,balance_USDT_ETH +dxGaEAii,11888,41163 +MBlfbBGI,67823,18651 +lAhWlEWZ,18651,2087 +nuZweYtO,22073,55683 +gbdSwiuY,34897,83296 +RZNneNuP,83296,16881 +YsscHXkp,31699,35479 +RkLzkDun,2086,79732 +HlQlnEYI,30605,11888 +RqkZOFYe,16881,14874 +NjCSRAfD,41163,67823 +pHniJMQY,14874,22073 +dOGIMzKR,10032,10032 +HfMDmNLp,55683,34897 +xPLKzCBl,79731,30605 +AtwIxZHo,35479,31699 diff --git a/csv/entry_16_overflow.csv b/csv/entry_16_overflow.csv new file mode 100644 index 00000000..124d1623 --- /dev/null +++ b/csv/entry_16_overflow.csv @@ -0,0 +1,17 @@ +username,balance_ETH_ETH,balance_USDT_ETH +dxGaEAii,5192296858534827628530496329220096,41163 +MBlfbBGI,67823,18651 +lAhWlEWZ,18651,2087 +nuZweYtO,22073,55683 +gbdSwiuY,34897,83296 +RZNneNuP,83296,16881 +YsscHXkp,31699,35479 +RkLzkDun,2087,79731 +HlQlnEYI,30605,11888 +RqkZOFYe,16881,14874 +NjCSRAfD,41163,67823 +pHniJMQY,14874,22073 +dOGIMzKR,10032,10032 +HfMDmNLp,55683,34897 +xPLKzCBl,79731,30605 +AtwIxZHo,35479,31699 diff --git a/csv/entry_16_switched_order.csv b/csv/entry_16_switched_order.csv new file mode 100644 index 00000000..a83d2b46 --- /dev/null +++ b/csv/entry_16_switched_order.csv @@ -0,0 +1,17 @@ +username,balance_ETH_ETH,balance_USDT_ETH +dxGaEAii,11888,79731 +MBlfbBGI,67823,22073 +lAhWlEWZ,18651,18651 +nuZweYtO,22073,35479 +gbdSwiuY,34897,83296 +RZNneNuP,83296,34897 +YsscHXkp,31699,55683 +RkLzkDun,2087,30605 +HlQlnEYI,30605,10032 +RqkZOFYe,16881,16881 +NjCSRAfD,41163,41163 +pHniJMQY,14874,31699 +dOGIMzKR,10032,11888 +HfMDmNLp,55683,14874 +AtwIxZHo,35479,67823 +xPLKzCBl,79731,2087 diff --git a/csv/entry_17.csv b/csv/entry_17.csv new file mode 100644 index 00000000..ea4bb7a3 --- /dev/null +++ b/csv/entry_17.csv @@ -0,0 +1,19 @@ +username,balance_ETH_ETH,balance_USDT_ETH +dxGaEAii,11888,41163 +MBlfbBGI,67823,18651 +lAhWlEWZ,18651,2087 +nuZweYtO,22073,55683 +gbdSwiuY,34897,83296 +RZNneNuP,83296,16881 +YsscHXkp,31699,35479 +RkLzkDun,2087,79731 +HlQlnEYI,30605,11888 +RqkZOFYe,16881,14874 +NjCSRAfD,41163,67823 +pHniJMQY,14874,22073 +dOGIMzKR,10032,10032 +HfMDmNLp,55683,34897 +xPLKzCBl,79731,30605 +AtwIxZHo,35479,31699 +HuIIxzHo,1,1 + diff --git a/backend/src/apis/csv/signatures.csv b/csv/signatures.csv similarity index 100% rename from backend/src/apis/csv/signatures.csv rename to csv/signatures.csv diff --git a/zk_prover/examples/states/entry_16_1.csv b/csv/states/entry_16_1.csv similarity index 100% rename from zk_prover/examples/states/entry_16_1.csv rename to csv/states/entry_16_1.csv diff --git a/zk_prover/examples/states/entry_16_2.csv b/csv/states/entry_16_2.csv similarity index 100% rename from zk_prover/examples/states/entry_16_2.csv rename to csv/states/entry_16_2.csv diff --git a/zk_prover/examples/states/entry_16_3.csv b/csv/states/entry_16_3.csv similarity index 100% rename from zk_prover/examples/states/entry_16_3.csv rename to csv/states/entry_16_3.csv diff --git a/zk_prover/examples/states/entry_16_4.csv b/csv/states/entry_16_4.csv similarity index 100% rename from zk_prover/examples/states/entry_16_4.csv rename to csv/states/entry_16_4.csv diff --git a/zk_prover/examples/states/entry_16_5.csv b/csv/states/entry_16_5.csv similarity index 100% rename from zk_prover/examples/states/entry_16_5.csv rename to csv/states/entry_16_5.csv diff --git a/zk_prover/README.md b/zk_prover/README.md index af77f651..f2324f8a 100644 --- a/zk_prover/README.md +++ b/zk_prover/README.md @@ -24,39 +24,45 @@ cargo doc --no-deps --open For testing purposes, it's not necessary to download the `ptau` file. The `generate_setup_artifacts` function can manage this by generating a new setup from a randomly generated value. This automated generation process is intended for testing and development convenience, and it should not be used in production. For real-world situations, you must provide the path of a specific `ptau` file to the `generate_setup_artifacts`. The circuit will use the randomness from the given file. You can find an example that initializes a `Snapshot` instance [here](https://github.com/summa-dev/summa-solvency/blob/11d4fce5d18f6175804aa792fc9fc5ac27bf5c00/backend/src/apis/snapshot.rs#L115-L116) in the backend. -## Build a Solvency Verifier Contract - -A `gen_solvency_verifier.rs` script is provided to generate a solidity contract that can be used to verify the proof of solvency via a smart contract. Note that the function to verify such proof is a view function, which means that it can be called without spending gas and that it does not modify the state of the contract +## Build an Inclusion Verifier Contract -The script can be run as follows: +A `gen_inclusion_verifier.rs` script is provided to generate a solidity contract that can be used to verify the proof of user inclusion into CEX liabilites. The script can be run as follows: ``` -cargo run --release --example gen_solvency_verifier +cargo run --release --example gen_inclusion_verifier ``` -The script will generate a new `SolvencyVerifier.sol` and `SolvencyVerifier.yul` contracts in `contracts/src`. +The script will generate a new `InclusionVerifier.sol` and `InclusionVerifier.yul` contracts in `contracts/src`. -Note that the generic parameters of the circuits `N_ASSETS` and `N_BYTES` are set to `2` and `14`. This means that the circuit is tuned to verify the proof of solvency for an exchange with 2 assets and a balances in a range of 14 bytes. These parameters can be changed in the script. +Note that the generic parameters of the circuits `LEVELS`, `N_CURRENCIES` and `N_BYTES` are set to `4`, `2` and `14`. This means that the circuit is tuned to verify the proof of inclusion for an exchange with a userbase of 4 levels (2^4 = 16 users), 2 currencies and a balances in a range of 14 bytes. These parameters can be changed in the script. -Furthermore, the verifier is generated based on a specified `ptau` file, `hermez-raw-11`, for the generic parameters (`N_ASSETS`, `N_BYTES`), using the `generate_setup_artifacts` function. If you try to use different generic parameters, you may have to choose a different `ptau` file for that. +The verifier are generated based on a trusted setup located at `backend/ptau/hermez-raw-11`. Note that setting different generic parameters may require a bigger trusted setup. More details on how to generate a trusted setup can be found [here](https://summa.gitbook.io/summa-book/backend/summa-solvency#3.-generate-verifier-contract). -On top of that the script will also generate a `solvency_proof_solidity_calldata.json` file that contains some testing calldata to be used within `contracts` and `backend` to test the verifier. Again, in the example, the proof is generated based on the `src/merkle_sum_tree/csv/entry_16.csv` file. If you want to generate a proof for a different file, you can change the path in the script. +## Build a Commitment -## Build an Inclusion Verifier Contract +A `gen_commitment.rs` script is provided to generate a commitment out of a Merkle Sum Tree. In particular, the example takes a csv file located in "../csv/entry_16.csv", build a Merkle Sum Tree and extract a commitment out it. The commitment is made of the `root_hash` and the `root_balances`. -A `gen_inclusion_verifier.rs` script is provided to generate a solidity contract that can be used to verify the proof of user inclusion into CEX liabilites. The script can be run as follows: +The script will eventually generate a `commitment_solidity_calldata.json` file that contains some testing calldata to be used within `contracts` to test the publishing of the commitment to the Summa Smart Contract. + +The script can be run as follows: ``` -cargo run --release --example gen_inclusion_verifier +cargo run --release --example gen_commitment ``` -The script will generate a new `InclusionVerifier.sol` and `InclusionVerifier.yul` contracts in `contracts/src`. +Note that the generic parameters of the Merkle Sum Tree `N_CURRENCIES` and `N_BYTES` are set to `2` and `14`. This means that this should go in pair with a Inclusion Verifier Circuit tuned to the same generic parameters. + +## Build an Inclusion Proof + +A `gen_inclusion_proof.rs` script is provided to a proof of inclusion that can verified by the Smart Contract. The script can be run as follows: -Note that the generic parameters of the circuits `LEVELS`, `N_ASSETS` and `N_BYTES` are set to `4`, `2` and `14`. This means that the circuit is tuned to verify the proof of inclusion for an exchange with a userbase of 4 levels (2^4 = 16 users), 2 assets and a balances in a range of 14 bytes. These parameters can be changed in the script. +``` +cargo run --release --example gen_inclusion_proof +``` -The verifier are generated based on an unsafe setup. For a production ready verifier, the setup should be generated by providing a `ptau` file generated after a trusted setup ceremony to `generate_setup_artifacts` function. +This generated proof is saved in `inclusion_proof_solidity_calldata.json`. The file contains some testing calldata to be used within `contracts` to test the verifier. -On top of that the script will also generate a `inclusion_proof_solidity_calldata.json` file that contains some testing calldata to be used within `contracts` and `backend` to test the verifier. Again, in the example, the proof is generated based on the `src/merkle_sum_tree/csv/entry_16.csv` file for a specific `user_index`, which is set to 0 by default. If you want to generate a testing proof for a different file, you can change the path in the script. If you want to generate a proof for a different `user_index`, you can change the `user_index` in the script. +In the example, the proof is generated based on the `../csv/entry_16.csv` file for a specific `user_index`, which is set to 0 by default. The setup parameters are set to `LEVELS = 4`, `N_CURRENCIES = 2` and `N_BYTES = 14`. The ptau file is located at `backend/ptau/hermez-raw-11`. Note that these parameters should go in pair with the ones used to generate Inclusion Verifier Circuit and the Commtiment in order to generate a valid proof. ## Incremental Nova Verifier @@ -85,22 +91,17 @@ The benchmarking included the following areas: - Proving Key Gen for MstInclusion Circuit - ZK Proof Generation for MstInclusion Circuit - ZK Proof Verification for MstInclusion Circuit -- Verification Key Gen for Solvency Circuit -- Proving Key Gen for Solvency Circuit -- ZK Proof Generation for Solvency Circuit -- ZK Proof Verification for Solvency Circuit In order to run the benchmarking, we provide a set of dummy `username, balances` entries formatted in csv files. The csv files can be downloaded as follows -``` -cd benches -mkdir csv -cd csv -wget https://summa-solvency.s3.eu-central-1.amazonaws.com/csv_files.tar.bz2 -tar -xjf csv_files.tar.bz2 +```bash +mkdir -p benches/csv +cd benches/csv +wget https://summa-solvency.s3.eu-central-1.amazonaws.com/1_entry_2_20.zip +unzip 1_entry_2_20.zip ``` -The csv folder will contain two subfolder namely `one_asset` and `two_assets`. Each folders will contain files named as `one_asset_entry_2_17.csv` or `two_assets_entry_2_5.csv`. 2^17 or 2^5 is the number of entries in the file that will be used to feed the merkle sum tree and, eventually, the zk prover. These entries represent the number of users of the exchange. +The file naming convention, such as `1_entry_2_20.csv`, follows the pattern `[number of cryptocurrency]_entry_2_[power of 2]`. In this example, `1_entry` indicates a single currency, and the `2_20` part represents $2^{20}$ entries in the file. These entries, which are intended to populate the Merkle sum tree and feed the zk prover, correspond to the number of users on the exchange. To run the benches @@ -108,9 +109,9 @@ To run the benches You can set the following parameters to run the benches: -- `LEVELS` -> the number of entries in the merkle sum tree. By default it is set to 15, which means that the benches will run for 2^15 entries. +- `LEVELS` -> the number of entries in the merkle sum tree. By default it is set to 20, which means that the benches will run for 2^20 entries. - `SAMPLE_SIZE` -> the number of samples to run for each bench. By default it is set to 10, which is the minimum allowed by criterion.rs -- `N_ASSETS and PATH_NAME` -> the number of assets to be used in the benchmarking. By default it is set to 2. For now you can only switch it between 1 and 2 as these are the only csv folder available. More will be added soon. +- `N_CURRENCIES` -> the number of currencies to be used in the benchmarking. By default it is set to 1. Note that the `k` of the circuit may vary based on the LEVELS @@ -118,28 +119,20 @@ Furthermore the benchmarking function `verify_zk_proof_benchmark` will also prin ## Current Benches -Run on AWS EC2 instance `m7a.8xlarge` with 32 vcores and 128GB RAM +Run on AWS m7a.8xlarge with 32 vcores and 128GB RAM -Benches run after PR #80 (`add solidity verifier`). In order to achieve small proof size, to be cheap to verify on-chain. +2^20 entries (1048576) users, 1 currency -2^28 entries (268435456) users, one asset. Range is 14 bytes, considering SHIBA INU token supply (110 bits) as the upper bound. +| MST init | +| -------- | +| 24.272 s | -| MST init | -| -------- | -| 7143.9 s | +| MST init (sorted) | +| -------- | +| 25.480 s | For Merkle Sum Tree Proof of Inclusion circuit -| VK Gen | Pk Gen | Proof Generation | Proof Verification | Proof Size (bytes) | -| --------- | --------- | ---------------- | ------------------ | ------------------ | -| 88.92 ms | 135.96 ms | 369.31 ms | 3.65 ms | 1632 | - -For Proof of Solvency circuit - -| VK Gen | Pk Gen | Proof Generation | Proof Verification | Proof Size (bytes) | -| -------- | --------- | ---------------- | ------------------ | ------------------ | -| 32.86 ms | 31.76 ms | 139.60 ms | 4.09 ms | 1568 | - -Gas cost to verify proof of solvency - -395579 gas units (run `cargo run --release --example gen_solvency_verifier`) +| VK Gen | Pk Gen | Proof Generation | Proof Verification | Proof Size (bytes) | +| ------------------ | ------------------- | ------------------- | ------------------- | ------------------ | +| 87.78 ms | 123.86 ms | 380.86 ms | 3.7287 ms | 1632 | diff --git a/zk_prover/benches/full_solvency_flow.rs b/zk_prover/benches/full_solvency_flow.rs index 66164d70..bc467413 100644 --- a/zk_prover/benches/full_solvency_flow.rs +++ b/zk_prover/benches/full_solvency_flow.rs @@ -1,41 +1,31 @@ #![feature(generic_const_exprs)] use criterion::{criterion_group, criterion_main, Criterion}; -use halo2_proofs::{ - halo2curves::bn256::Fr as Fp, - plonk::{keygen_pk, keygen_vk}, -}; +use halo2_proofs::plonk::{keygen_pk, keygen_vk}; use snark_verifier_sdk::CircuitExt; use summa_solvency::{ circuits::merkle_sum_tree::MstInclusionCircuit, - circuits::{ - solvency::SolvencyCircuit, - utils::{full_prover, full_verifier, generate_setup_artifacts}, - }, - merkle_sum_tree::MerkleSumTree, + circuits::utils::{full_prover, full_verifier, generate_setup_artifacts}, + merkle_sum_tree::{MerkleSumTree, Tree}, }; const SAMPLE_SIZE: usize = 10; -const LEVELS: usize = 15; -const N_ASSETS: usize = 1; -const PATH_NAME: &str = "one_asset"; +const LEVELS: usize = 20; +const N_CURRENCIES: usize = 1; const N_BYTES: usize = 14; fn build_mstree(_c: &mut Criterion) { let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - let csv_file = format!( - "benches/csv/{}/{}_entry_2_{}.csv", - PATH_NAME, PATH_NAME, LEVELS - ); + let csv_file = format!("benches/csv/{}_entry_2_{}.csv", N_CURRENCIES, LEVELS); let bench_name = format!( - "build Merkle sum tree for 2 power of {} entries with {} assets", - LEVELS, N_ASSETS + "build Merkle sum tree for 2 power of {} entries with {} currencies", + LEVELS, N_CURRENCIES ); criterion.bench_function(&bench_name, |b| { b.iter(|| { - MerkleSumTree::::new(&csv_file).unwrap(); + MerkleSumTree::::from_csv(&csv_file).unwrap(); }) }); } @@ -43,19 +33,16 @@ fn build_mstree(_c: &mut Criterion) { fn build_sorted_mstree(_c: &mut Criterion) { let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - let csv_file = format!( - "benches/csv/{}/{}_entry_2_{}.csv", - PATH_NAME, PATH_NAME, LEVELS - ); + let csv_file = format!("benches/csv/{}_entry_2_{}.csv", N_CURRENCIES, LEVELS); let bench_name = format!( - "build sorted Merkle sum tree for 2 power of {} entries with {} assets", - LEVELS, N_ASSETS + "build sorted Merkle sum tree for 2 power of {} entries with {} currencies", + LEVELS, N_CURRENCIES ); criterion.bench_function(&bench_name, |b| { b.iter(|| { - MerkleSumTree::::new_sorted(&csv_file).unwrap(); + MerkleSumTree::::from_csv_sorted(&csv_file).unwrap(); }) }); } @@ -63,13 +50,13 @@ fn build_sorted_mstree(_c: &mut Criterion) { fn verification_key_gen_mst_inclusion_circuit(_c: &mut Criterion) { let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - let empty_circuit = MstInclusionCircuit::::init_empty(); + let empty_circuit = MstInclusionCircuit::::init_empty(); let (params, _, _) = generate_setup_artifacts(13, None, empty_circuit.clone()).unwrap(); let bench_name = format!( - "gen verification key for 2 power of {} entries with {} assets mst inclusion circuit", - LEVELS, N_ASSETS + "gen verification key for 2 power of {} entries with {} currencies mst inclusion circuit", + LEVELS, N_CURRENCIES ); criterion.bench_function(&bench_name, |b| { b.iter(|| { @@ -81,13 +68,13 @@ fn verification_key_gen_mst_inclusion_circuit(_c: &mut Criterion) { fn proving_key_gen_mst_inclusion_circuit(_c: &mut Criterion) { let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - let empty_circuit = MstInclusionCircuit::::init_empty(); + let empty_circuit = MstInclusionCircuit::::init_empty(); let (params, _, vk) = generate_setup_artifacts(13, None, empty_circuit.clone()).unwrap(); let bench_name = format!( - "gen proving key for 2 power of {} entries with {} assets mst inclusion circuit", - LEVELS, N_ASSETS + "gen proving key for 2 power of {} entries with {} currencies mst inclusion circuit", + LEVELS, N_CURRENCIES ); criterion.bench_function(&bench_name, |b| { b.iter(|| { @@ -99,155 +86,59 @@ fn proving_key_gen_mst_inclusion_circuit(_c: &mut Criterion) { fn generate_zk_proof_mst_inclusion_circuit(_c: &mut Criterion) { let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - let empty_circuit = MstInclusionCircuit::::init_empty(); + let empty_circuit = MstInclusionCircuit::::init_empty(); - let (params, pk, vk) = generate_setup_artifacts(13, None, empty_circuit).unwrap(); + let (params, pk, _) = generate_setup_artifacts(13, None, empty_circuit).unwrap(); - let csv_file = format!( - "benches/csv/{}/{}_entry_2_{}.csv", - PATH_NAME, PATH_NAME, LEVELS - ); + let csv_file = format!("benches/csv/{}_entry_2_{}.csv", N_CURRENCIES, LEVELS); - let merkle_sum_tree = MerkleSumTree::::new(&csv_file).unwrap(); + let merkle_sum_tree = MerkleSumTree::::from_csv(&csv_file).unwrap(); // Only now we can instantiate the circuit with the actual inputs - let circuit = MstInclusionCircuit::::init(merkle_sum_tree, 0); - - let bench_name = format!( - "generate zk proof - tree of 2 power of {} entries with {} assets mst inclusion circuit", - LEVELS, N_ASSETS - ); - criterion.bench_function(&bench_name, |b| { - b.iter(|| { - full_prover(¶ms, &pk, circuit.clone(), circuit.instances()); - }) - }); -} - -fn verify_zk_proof_mst_inclusion_circuit(_c: &mut Criterion) { - let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - - let empty_circuit = MstInclusionCircuit::::init_empty(); - - let (params, pk, vk) = generate_setup_artifacts(13, None, empty_circuit).unwrap(); - - let csv_file = format!( - "benches/csv/{}/{}_entry_2_{}.csv", - PATH_NAME, PATH_NAME, LEVELS - ); - - let merkle_sum_tree = MerkleSumTree::::new(&csv_file).unwrap(); - - // Only now we can instantiate the circuit with the actual inputs - let circuit = MstInclusionCircuit::::init(merkle_sum_tree, 0); - - let proof = full_prover(¶ms, &pk, circuit.clone(), circuit.instances()); - - println!("proof size in bytes: {}", proof.len()); - - let bench_name = format!( - "verify zk proof - tree of 2 power of {} entries with {} assets mst inclusion circuit", - LEVELS, N_ASSETS - ); - criterion.bench_function(&bench_name, |b| { - b.iter(|| { - full_verifier(¶ms, &vk, proof.clone(), circuit.instances()); - }) - }); -} -fn verification_key_gen_solvency_circuit(_c: &mut Criterion) { - let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); + let user_index = 0; - let empty_circuit = SolvencyCircuit::::init_empty(); + let merkle_proof = merkle_sum_tree.generate_proof(user_index).unwrap(); - let (params, _, _) = generate_setup_artifacts(11, None, empty_circuit.clone()).unwrap(); + let circuit = MstInclusionCircuit::::init(merkle_proof); let bench_name = format!( - "gen verification key for 2 power of {} entries with {} assets solvency circuit", - LEVELS, N_ASSETS + "generate zk proof - tree of 2 power of {} entries with {} currencies mst inclusion circuit", + LEVELS, N_CURRENCIES ); criterion.bench_function(&bench_name, |b| { b.iter(|| { - keygen_vk(¶ms, &empty_circuit).expect("vk generation should not fail"); - }) - }); -} - -fn proving_key_gen_solvency_circuit(_c: &mut Criterion) { - let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - - let empty_circuit = SolvencyCircuit::::init_empty(); - - let (params, _, vk) = generate_setup_artifacts(11, None, empty_circuit.clone()).unwrap(); - - let bench_name = format!( - "gen proving key for 2 power of {} entries with {} assets solvency circuit", - LEVELS, N_ASSETS - ); - criterion.bench_function(&bench_name, |b| { - b.iter(|| { - keygen_pk(¶ms, vk.clone(), &empty_circuit).expect("pk generation should not fail"); + full_prover(¶ms, &pk, circuit.clone(), circuit.instances()); }) }); } -fn generate_zk_proof_solvency_circuit(_c: &mut Criterion) { +fn verify_zk_proof_mst_inclusion_circuit(_c: &mut Criterion) { let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - let empty_circuit = SolvencyCircuit::::init_empty(); - - let (params, pk, vk) = generate_setup_artifacts(11, None, empty_circuit).unwrap(); + let empty_circuit = MstInclusionCircuit::::init_empty(); - let csv_file = format!( - "benches/csv/{}/{}_entry_2_{}.csv", - PATH_NAME, PATH_NAME, LEVELS - ); + let (params, pk, vk) = generate_setup_artifacts(13, None, empty_circuit).unwrap(); - let merkle_sum_tree = MerkleSumTree::::new(&csv_file).unwrap(); + let csv_file = format!("benches/csv/{}_entry_2_{}.csv", N_CURRENCIES, LEVELS); - let asset_sums = merkle_sum_tree.root().balances.map(|x| x + Fp::from(1)); + let merkle_sum_tree = MerkleSumTree::::from_csv(&csv_file).unwrap(); // Only now we can instantiate the circuit with the actual inputs - let circuit = SolvencyCircuit::::init(merkle_sum_tree, asset_sums); - - let bench_name = format!( - "generate zk proof - tree of 2 power of {} entries with {} assets solvency circuit", - LEVELS, N_ASSETS - ); - criterion.bench_function(&bench_name, |b| { - b.iter(|| { - full_prover(¶ms, &pk, circuit.clone(), circuit.instances()); - }) - }); -} -fn verify_zk_proof_solvency_circuit(_c: &mut Criterion) { - let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); + let user_index = 0; - let empty_circuit = SolvencyCircuit::::init_empty(); + let merkle_proof = merkle_sum_tree.generate_proof(user_index).unwrap(); - let (params, pk, vk) = generate_setup_artifacts(11, None, empty_circuit).unwrap(); - - let csv_file = format!( - "benches/csv/{}/{}_entry_2_{}.csv", - PATH_NAME, PATH_NAME, LEVELS - ); - - let merkle_sum_tree = MerkleSumTree::::new(&csv_file).unwrap(); - - let asset_sums = merkle_sum_tree.root().balances.map(|x| x + Fp::from(1)); - - // Only now we can instantiate the circuit with the actual inputs - let circuit = SolvencyCircuit::::init(merkle_sum_tree, asset_sums); + let circuit = MstInclusionCircuit::::init(merkle_proof); let proof = full_prover(¶ms, &pk, circuit.clone(), circuit.instances()); println!("proof size in bytes: {}", proof.len()); let bench_name = format!( - "verify zk proof - tree of 2 power of {} entries with {} assets solvency circuit", - LEVELS, N_ASSETS + "verify zk proof - tree of 2 power of {} entries with {} currencies mst inclusion circuit", + LEVELS, N_CURRENCIES ); criterion.bench_function(&bench_name, |b| { b.iter(|| { @@ -264,9 +155,5 @@ criterion_group!( proving_key_gen_mst_inclusion_circuit, generate_zk_proof_mst_inclusion_circuit, verify_zk_proof_mst_inclusion_circuit, - verification_key_gen_solvency_circuit, - proving_key_gen_solvency_circuit, - generate_zk_proof_solvency_circuit, - verify_zk_proof_solvency_circuit ); criterion_main!(benches); diff --git a/zk_prover/examples/commitment_solidity_calldata.json b/zk_prover/examples/commitment_solidity_calldata.json new file mode 100644 index 00000000..90faf8a9 --- /dev/null +++ b/zk_prover/examples/commitment_solidity_calldata.json @@ -0,0 +1,7 @@ +{ + "root_hash": "0x18d6ab953235a811edffa4cead74ea045e7cd2085771a2269d59dca054c955b1", + "root_balances": [ + "0x87f3e", + "0x87f3e" + ] +} \ No newline at end of file diff --git a/zk_prover/examples/gen_commitment.rs b/zk_prover/examples/gen_commitment.rs new file mode 100644 index 00000000..c805de2a --- /dev/null +++ b/zk_prover/examples/gen_commitment.rs @@ -0,0 +1,41 @@ +#![feature(generic_const_exprs)] + +use serde_json::to_string_pretty; +use std::{fs::File, io::Write}; +use summa_solvency::{ + circuits::types::CommitmentSolidityCallData, + circuits::utils::field_element_to_solidity_calldata, + merkle_sum_tree::{MerkleSumTree, Tree}, +}; + +const N_CURRENCIES: usize = 2; +const N_BYTES: usize = 14; + +fn main() { + let merkle_sum_tree = + MerkleSumTree::::from_csv("../csv/entry_16.csv").unwrap(); + + let root = merkle_sum_tree.root(); + + // The commitment to be published on-chain is made of (root_hash, root_balances) + let root_hash_hex_string = field_element_to_solidity_calldata(root.hash); + let root_balances_hex_strings: Vec = root + .balances + .iter() + .map(|balance| field_element_to_solidity_calldata(*balance)) + .collect(); + + let commitment = CommitmentSolidityCallData { + root_hash: root_hash_hex_string, + root_balances: root_balances_hex_strings, + }; + + // Serialize to a JSON string + let serialized_data = to_string_pretty(&commitment).expect("Failed to serialize data"); + + // Save the serialized data to a JSON file + let mut file = File::create("./examples/commitment_solidity_calldata.json") + .expect("Unable to create file"); + file.write_all(serialized_data.as_bytes()) + .expect("Unable to write data to file"); +} diff --git a/zk_prover/examples/gen_inclusion_proof.rs b/zk_prover/examples/gen_inclusion_proof.rs new file mode 100644 index 00000000..4d93e723 --- /dev/null +++ b/zk_prover/examples/gen_inclusion_proof.rs @@ -0,0 +1,77 @@ +#![feature(generic_const_exprs)] + +use serde_json::to_string_pretty; +use snark_verifier_sdk::{ + evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}, + CircuitExt, +}; +use std::{fs::File, io::Write, path::Path}; +use summa_solvency::{ + circuits::{ + merkle_sum_tree::MstInclusionCircuit, + types::ProofSolidityCallData, + utils::{gen_proof_solidity_calldata, generate_setup_artifacts}, + }, + merkle_sum_tree::{MerkleSumTree, Tree}, +}; + +const LEVELS: usize = 4; +const N_CURRENCIES: usize = 2; +const N_BYTES: usize = 14; + +fn main() { + let merkle_sum_tree = + MerkleSumTree::::from_csv("../csv/entry_16.csv").unwrap(); + + // In order to generate a proof for testing purpose we create the circuit using the init() method + // which takes as input the merkle sum tree and the index of the leaf we are generating the proof for. + let user_index = 0; + + let merkle_proof = merkle_sum_tree.generate_proof(user_index).unwrap(); + + // Generate the circuit with the actual inputs + let circuit = MstInclusionCircuit::::init(merkle_proof); + + // generate a universal trusted setup for testing, along with the verification key (vk) and the proving key (pk). + let (params, pk, _) = + generate_setup_artifacts(11, Some("../backend/ptau/hermez-raw-11"), circuit.clone()) + .unwrap(); + + let instances = circuit.instances(); + + let num_instances = circuit.num_instance(); + + let yul_output_path = "../contracts/src/InclusionVerifier.yul"; + + let deployment_code = + gen_evm_verifier_shplonk::>( + ¶ms, + pk.get_vk(), + num_instances, + Some(Path::new(yul_output_path)), + ); + + let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit.clone(), instances.clone()); + + let proof_solidity_calldata = gen_proof_solidity_calldata(¶ms, &pk, circuit.clone()); + + let proof_hex_string = format!("0x{}", hex::encode(&proof_solidity_calldata.clone().0 .0)); + + let data = ProofSolidityCallData { + proof: proof_hex_string, + public_inputs: proof_solidity_calldata.1, + }; + + // Serialize the data to a JSON string + let serialized_data = to_string_pretty(&data).expect("Failed to serialize data"); + + // Save the serialized data to a JSON file + let mut file = File::create("./examples/inclusion_proof_solidity_calldata.json") + .expect("Unable to create file"); + file.write_all(serialized_data.as_bytes()) + .expect("Unable to write data to file"); + + let gas_cost = evm_verify(deployment_code, instances, proof); + + print!("gas_cost: {:?}", gas_cost); +} diff --git a/zk_prover/examples/gen_inclusion_verifier.rs b/zk_prover/examples/gen_inclusion_verifier.rs index 9f439aba..1edbd46a 100644 --- a/zk_prover/examples/gen_inclusion_verifier.rs +++ b/zk_prover/examples/gen_inclusion_verifier.rs @@ -1,29 +1,25 @@ #![feature(generic_const_exprs)] -use serde_json::to_string_pretty; -use snark_verifier_sdk::{ - evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}, - CircuitExt, -}; -use std::{fs::File, io::Write, path::Path}; -use summa_solvency::{ - circuits::{ - merkle_sum_tree::MstInclusionCircuit, - types::ProofSolidityCallData, - utils::{ - gen_proof_solidity_calldata, generate_setup_artifacts, write_verifier_sol_from_yul, - }, - }, - merkle_sum_tree::MerkleSumTree, +use halo2_proofs::halo2curves::{bn256::Fr as Fp, ff::PrimeField}; +use num_bigint::BigInt; +use num_traits::Num; +use snark_verifier_sdk::{evm::gen_evm_verifier_shplonk, CircuitExt}; +use std::path::Path; +use summa_solvency::circuits::{ + merkle_sum_tree::MstInclusionCircuit, + utils::{generate_setup_artifacts, write_verifier_sol_from_yul}, }; const LEVELS: usize = 4; -const N_ASSETS: usize = 2; +const N_CURRENCIES: usize = 2; const N_BYTES: usize = 14; fn main() { + // Assert that there is no risk of overflow in the Merkle Root given the combination of `N_BYTES` and `LEVELS` + assert!(!is_there_risk_of_overflow(N_BYTES, LEVELS), "There is a risk of balance overflow in the Merkle Root, given the combination of `N_BYTES` and `LEVELS`"); + // In order to generate the verifier we create the circuit using the init_empty() method, which means that the circuit is not initialized with any data. - let circuit = MstInclusionCircuit::::init_empty(); + let circuit = MstInclusionCircuit::::init_empty(); // generate a universal trusted setup for testing, along with the verification key (vk) and the proving key (pk). let (params, pk, _) = @@ -35,7 +31,7 @@ fn main() { let yul_output_path = "../contracts/src/InclusionVerifier.yul"; let sol_output_path = "../contracts/src/InclusionVerifier.sol"; - let deployment_code = gen_evm_verifier_shplonk::>( + gen_evm_verifier_shplonk::>( ¶ms, pk.get_vk(), num_instances, @@ -43,37 +39,23 @@ fn main() { ); write_verifier_sol_from_yul(yul_output_path, sol_output_path).unwrap(); +} - let merkle_sum_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv").unwrap(); - - // In order to generate a proof for testing purpose we create the circuit using the init() method - // which takes as input the merkle sum tree and the index of the leaf we are generating the proof for. - let circuit = MstInclusionCircuit::::init(merkle_sum_tree, 0); - - let instances = circuit.instances(); - - let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit.clone(), instances.clone()); - - let proof_solidity_calldata = gen_proof_solidity_calldata(¶ms, &pk, circuit.clone()); - - let proof_hex_string = format!("0x{}", hex::encode(&proof_solidity_calldata.clone().0 .0)); - - let data = ProofSolidityCallData { - proof: proof_hex_string, - public_inputs: proof_solidity_calldata.1, - }; - - // Serialize the data to a JSON string - let serialized_data = to_string_pretty(&data).expect("Failed to serialize data"); +// Calculate the maximum value that the Merkle Root can have, given N_BYTES and LEVELS +fn calculate_max_root_balance(n_bytes: usize, n_levels: usize) -> BigInt { + // The max value that can be stored in a leaf node or a sibling node, according to the constraint set in the circuit + let max_leaf_value = BigInt::from(2).pow(n_bytes as u32 * 8) - 1; + max_leaf_value * (n_levels + 1) +} - // Save the serialized data to a JSON file - let mut file = File::create("./examples/inclusion_proof_solidity_calldata.json") - .expect("Unable to create file"); - file.write_all(serialized_data.as_bytes()) - .expect("Unable to write data to file"); +// Given a combination of `N_BYTES` and `LEVELS`, check if there is a risk of overflow in the Merkle Root +fn is_there_risk_of_overflow(n_bytes: usize, n_levels: usize) -> bool { + // Calculate the max root balance value + let max_root_balance = calculate_max_root_balance(n_bytes, n_levels); - let gas_cost = evm_verify(deployment_code, instances, proof); + // The modulus of the BN256 curve + let modulus = BigInt::from_str_radix(&Fp::MODULUS[2..], 16).unwrap(); - print!("gas_cost: {:?}", gas_cost); + // Check if the max balance value is greater than the prime + max_root_balance > modulus } diff --git a/zk_prover/examples/gen_solvency_verifier.rs b/zk_prover/examples/gen_solvency_verifier.rs deleted file mode 100644 index 2680fdd8..00000000 --- a/zk_prover/examples/gen_solvency_verifier.rs +++ /dev/null @@ -1,86 +0,0 @@ -#![feature(generic_const_exprs)] - -use halo2_proofs::halo2curves::bn256::Fr as Fp; -use serde_json::to_string_pretty; -use snark_verifier_sdk::{ - evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}, - CircuitExt, -}; -use std::{fs::File, io::Write, path::Path}; -use summa_solvency::{ - circuits::{ - solvency::SolvencyCircuit, - types::ProofSolidityCallData, - utils::{ - gen_proof_solidity_calldata, generate_setup_artifacts, write_verifier_sol_from_yul, - }, - }, - merkle_sum_tree::MerkleSumTree, -}; - -const N_ASSETS: usize = 2; -const N_BYTES: usize = 14; - -fn main() { - // In order to generate the verifier we create the circuit using the init_empty() method, which means that the circuit is not initialized with any data. - let circuit = SolvencyCircuit::::init_empty(); - - // generate a universal trusted setup for testing, along with the verification key (vk) and the proving key (pk). - let (params, pk, _) = - generate_setup_artifacts(10, Some("../backend/ptau/hermez-raw-11"), circuit.clone()) - .unwrap(); - - let num_instances = circuit.num_instance(); - - let yul_output_path = "../contracts/src/SolvencyVerifier.yul"; - let sol_output_path = "../contracts/src/SolvencyVerifier.sol"; - - let deployment_code = gen_evm_verifier_shplonk::>( - ¶ms, - pk.get_vk(), - num_instances, - Some(Path::new(yul_output_path)), - ); - - write_verifier_sol_from_yul(yul_output_path, sol_output_path).unwrap(); - - // In order to generate a proof for testing purpose we create the circuit using the init() method, which take as input the merkle sum tree and the asset sums. - let merkle_sum_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv").unwrap(); - - let asset_sums = [Fp::from(556863u64), Fp::from(556863u64)]; - - let circuit = SolvencyCircuit::::init(merkle_sum_tree, asset_sums); - - // generate a universal trusted setup for testing, along with the verification key (vk) and the proving key (pk). - let (params, pk, _) = - generate_setup_artifacts(10, Some("../backend/ptau/hermez-raw-11"), circuit.clone()) - .unwrap(); - - let num_instances = circuit.num_instance(); - let instances = circuit.instances(); - - let proof = gen_evm_proof_shplonk(¶ms, &pk, circuit.clone(), instances.clone()); - - let proof_solidity_calldata = gen_proof_solidity_calldata(¶ms, &pk, circuit.clone()); - - let proof_hex_string = format!("0x{}", hex::encode(&proof_solidity_calldata.clone().0 .0)); - - let data = ProofSolidityCallData { - proof: proof_hex_string, - public_inputs: proof_solidity_calldata.1, - }; - - // Serialize the data to a JSON string - let serialized_data = to_string_pretty(&data).expect("Failed to serialize data"); - - // Save the serialized data to a JSON file - let mut file = File::create("./examples/solvency_proof_solidity_calldata.json") - .expect("Unable to create file"); - file.write_all(serialized_data.as_bytes()) - .expect("Unable to write data to file"); - - let gas_cost = evm_verify(deployment_code, instances, proof); - - print!("gas_cost: {:?}", gas_cost); -} diff --git a/zk_prover/examples/inclusion_proof_solidity_calldata.json b/zk_prover/examples/inclusion_proof_solidity_calldata.json index 7aad7233..5bc919e9 100644 --- a/zk_prover/examples/inclusion_proof_solidity_calldata.json +++ b/zk_prover/examples/inclusion_proof_solidity_calldata.json @@ -1,7 +1,9 @@ { - "proof": "0x20915f0d4ee13b0f773e691621c4928b83b08ae6e3aed158976eb2ef1781cfa109afb66750a062a7a8cbacaf1149308efe1b274fd61a768101c72dff47370b7e0447eafd8e01e3775851f6ce2aa6458b5193449ddc80ee0ae08f8213d98bd121135193e6fc64182ce38da867ed9eb9b163c10bffdd0639200b8097e98da05e140ddf7ebeb2e40ecbcca43014f3fafe4c7512a76e1c936f4e34a3c681ffe6da7003ff5fafde2132aae22440d510ce903a712dfe29a1f308311a5d0f95a6eacdd904d4197fbba0c2c589c35456629393cfa0740657645c854973e4cb902c33155e0d30a3f1cab21461def7045cf5c1514a390ddc4f89d082304fbb9bb72cd2aa1a242239b3e980df0348ec3a3360cbf3e72d83d6a85fe9431752cb689395c926f81eb1a04b332a5d9573f2cb7b988d0fe49687fa232ab2472f1aae47432335ac710c1d210547ff2f93a0a233d80fe3f4c2a683cc3273bf90676656f0d69ed1ccf721484460a99e140de309cbcee7f5ed9d0e84f021d214457349797275e40c7fc92c578c4bf2d1d6b9c9f5134261bf26c79a6437be946d72ac368add653fc007610c5be8be22dd3c99cdb24e024206619bd072cc068ea4828288f9d075b91720ff1a02871f0707d48d8217a6572ae8e4164012c9de818226ccd1be7db9f43eb6bc1312184bd7e125b9ab4ed04442fffb17052faf8fb35a4d2603520bf11cf228720dc9c4b63c83bfed43104528fab3dab4d9524881a9e6cf20a731dcf6f0def235258a98fc0bef2dfb9bfceb6f270009473f9cfa6739ac47e9d3eb5eb7444079d007add1686645f019607dd33e3e16041aaee1c8cf0692d867c1166347e2b090ec1928f9dc9d73dc3a3a596824d124ecae398f45a84b6cbbedfec416f94b788fd2211584dc44dffb9cdb5b24fbb36b8e06265f2e61d9c16abe43850b0e100be2702caee065ba5353038939d221fbda5824d5ec8e68b06f0198fda4829b40f588fb27dc7295709f4cad4f02b90096e57dc300af3cfc644c14aae7a6201e5c0d2a2e0b73428b9bd5f10c9be516c1f850a557f013cf27cc357ecf6b1a6e445f5d75e8167ff43a7e19acc59c240ed1d918f9d13347099ba8864b08a3ea1b06dab64a9a26f92c5035287181bfbb82dcf96132c4c28b4faf2779c3907424bac9529140fd2f73787050de67a9eb4ca2549aa42db52fa6558ff5ee441e43a708d0b7182d25026c6c54fb1b3a9cd7823d6861ea065a32b63e1fe11cda017cd9a969e20b7e9f1f9933de26c02f4e6645773d37be67573574de0e967553eba8dfa6f4728be0d6009e1dd03ea2010912a9b01d6641591229c43440869ad4561fef86c26ae463a1210680cf3f0af0c0328903b1b1af1e23109ecca9a8bca6b7fbbf091f4bf112a40802cfd52b8c4d1e02b09b56afac0d6aeb894fcafd3856d36542bc744a0661b52f6a13ac9ba1dcb552ca1b2205815b10d364237fb83db626c02d8b6670fff96d13f40532806e6c7e8f0e3656a0e75741cc6c37d450e198ccf276670029a4bc9c15650226898a98f4763a459c5aa18d28d67775ddb13ac9ae1dc62a08dd0f592c15b18565f0b46f61a3c92e3d80a938aa4fc70ea71c418c368ae73410cded87ac0079d60ac04155d44ebd9d53aa5967409bd81a23c6141b86f0b955298272d81828f5a90f08e6ecc22286dc97208ebb36876b81a26da23ba09dc529f8ebf7294d0d557e14755c1cc8af10977ff0ee5f5826d13eaee84cd0dc08a7a494f144b26529e2b4b41eeead5b7318d28faf23962493b4d06dc51a40ec03892727c1133bde0a2f6ba7bfa8f9d261fdf0aaf303cd6cc4c1a5483d45ef8451c19d209d7fb63e1ae22a2652fa3696b09d6834f2cab4cc0749bcb0a8f9210242b2485e6adb5aef23d9a545d08d2f0fe8a84120ca2c5ad5d998536ba9d86836949a28e246f22059206ba16b68a7510ea6ea801ff3af65490be25cb32c6e2e3e958de49cfb8501852f61fe1af50471376e10db200eb89accaa2a400a8235cf0cb3f7bc6d69d1c67e15bb88c4e2d8e5d4e25a8d890fbb95e6f7bf082ea795df8f29f54d0b9ccbecb72d7c76019c25584553ecd518face907a19d91131439bb63df871b53685d631931322d656297616a4ba7382b51d1cbe5fb15b56e1ba5c4ec093bfd8994f618f891ebfad8b93e48c57781ac7394372036010454d433fca08292b444da888cd469614029fece429cd043352ef39bf2bee9a15a6f878238ef4622a9d84d47e138dd81af3a39ebfdeccf85e3dfb61195fb062fb3dd2affb8efa0259a2fbf9a9541c7118a845fe2f4847840a84444b7f8dec8e6bb649e145b6d4815cae4d17563763950729f96fafd5fba5f24021188df77ab4b443497d8990e58d4855d8939738187b2bf0629c7150c0ac31aed7b10635615110713bdd1286a0f57e531e21b127a18e1866688a312d558158bd65237ecfb43b5256ccc65b3a9024f1fb59f2c3d71cea2232820ad7bceb6d70dae830ee378f36f7f338e4cd908eb6c1720395ad3d7faa300d12109f274bffb2684364a1f709b4da6c093ccdc5b2ce6e2fae39238b0b35035975b59a763024eaecb62aaeaf1857ee9551f8654bd98efc649dbd52ae0df0040c540283a6a8a121121e18b8d3ea1cec896f8a7d6b787d2eae3cfc6e2991d70cc456c8431a329b9bd4d2eef293172386075d8ff091e816373048940a10d93703c06b81f510b1df541089a83fdfeaff914b4c3cdae8a8d990daa4d941565ccc0222d574fc693b505a223d81580221208c156a02603632f2093b1f1d896d36a3049a3e85d60e7017e04ef5d78a0964d63b50cabdcd27de0a31aad462553d208a1da12050832f76381b6830d8796a06c8bef43ab4b6934704c8ab69d001bd02762a74e5e360a97682f5720c914b318353dc521fc0dd7404b362c389f8a333e3901198585a9ba11454f9076dee844fdac101c409d75314e5f728507661fb96818f0edf6564266421ca1e980fed4e747113712b1431107456eba6bdc998c62bcdd6", + "proof": "0x27a0389c488b4cd73df50563432f8b89f206f018a19488ab25c21e9b7e49023118e9222b5e6b6066fe192856822cb6d6d9ee11129f1ce80cfab7d3a11ec22a490616a05a90bb684f6b71b207fe80a14007932294e9b88b19c0c4b2d26f7b4f3c135d03d9db7373a4bbdfccefd739ec0d076ba4db3f4e56c5e4699d6a7f985aa216c85ff78772031957a82b23340bef55918da7a2a79ba4c3808daade0a37e94e27bfa945476b83f0707e249aebf3cf1a46630e44192821182f2b7c6b2cceeb2312bcc52c3aa4c6a146c24a8a618f35277b8593b5cabe673152a2c57c6ccc57941487964d791890887e692872ca406b8d9e3679af1d1ca7f06e1ef8df1afc2cab18dc5f1578a3c1e0755075c8adcbf27f84cb6e83200114ea6373b8425144209b21acd82423286ffab3a661e24ce0deaf837a21e0d60d834862384626b0a79078110e999f5be5012862976925e99a21e5e70fddb8d0797981e6fbde334b593141204ee1faeca5ab60c87ada401c8398f597303f3d203c6fe40647c4e86af87ffa1fe140323d709995ce696237b3d1a9d0b0f2a6623986fb9bd73e965b77bf61d1242f9a0410ce837e0d0f9bc460e72c5c00b9cf42f2398d2a7f5a484ad13304bc002a522b3564c4f4e318bb20445e6fd17b32ee65038ff0bd143ea7aa9b3eccdd023c6c3171644f2270bd5a1fb5b403dd82c1bbba6cee706a44d4c0dbf676e4272e5fb662b3527fcaa4e93dbf39a2ca6d67cb34b121a4736c55e2792bdca9ca9226bebf7bf8fa2397aaa67970cdb8771dce8a32bec5945762e10df4a420e0ab94253785c19daceeaf8dfbdd67f16fae4aebf61a3ca136f5a02da7d22b6aa98c82064b756142f5eff6ec8cce7abe4365cf604720d5117343dcc3b3e725a5dfd5f92f8f464cac42b044a838ced0bb4ac6684871b146cf83fe19be4de2f333cac261100e7097d550c20d277bc1268d0202748e5228f53b48e591ca8467c0e9ef79fb2fcc88c26a7b7e77f0933777208cb6d5b61129f957b301ab9c0c53f32b8f3ae923b5bb54e14a60c31a712878538f0fc2b469dc839bf141485510eba3b2b4bc4c1d6a2e997cf7e88d41b10b20a5eac91440af9ddabcdd9080aeff6209304f804f2f949b48df7b651a71b6718d766ec75fb6804275e38c2babe2f462b8c8a081ec0178735ca0a7535769a9c0b897f6b8950daa2f874a79f7f750e66637eb23720b1717fe28c1500e746af296913a24ec757317ac6c7e116cc8e375b5d83b1acd1130485c298ff97780af993fa168af22d3b78fea364c88455b45c74f3feca3d3ff1286f2cc47cddcd53a659452a89fe2c3327a1570c951aecf79fefd864a4c1236031c0baf5b9296310e2ce67e015893c862be776ac3d062acf8197d19a872ed600a1227f2673b53d00af2a62bb62464140decf7acd8731d02f5ffbe0f764787d212a13a824b387f43db60aae835915c792ffe1df8e0f55cef8995be2105a1a238066ab16f09388e8632ca3413ca64bdc1f237a7166c2d4c49ee1d58a47a524a830a59f6428490b7004042f2bd45db1f1386f0928a4220a25b146dee083fa2d8ac040bab224980b0b04469172b55c63e756d80577e329df286d789f0ad062edcfa0d7530a9f867664e232c2479de285b6e9fca0a4e31421c6b5f36d0c33b0c28c909e7a6b2bcff35768eaa655658718ea40cc00d0da3328b69a600e19de579f6ae1e861a9b1f5f8c19d2fda694a82b99142a13d3ca201d1840cf57c24946a0e7461f3075917b3a63fa9297982cf5a7dd7510ad4de39d19f9613283bb5ee0a14156156eb77e59d39651a4e1405bdb8ab18ce0d2a60ebae62dbb74cc34523d1b07e7077611771f5b671e4278a2cca424ff0a573d0ea2165743d5d046205a7bfcd0d30ebe92205a348a7dccabe01d007d3aa76c9f87a16c4a020c580cc83a86fb90f428ad69b27b86b84d9e9e46797917d8049c99317eb4816b8c98467659d1eaa7922aa6c8756402422a99e3a133ad93e8ae16eb63e158932f7f56af43bca7c0458a1e0444dd989c86710e61b7081b9408d5ee0f770930930c47c3a5a8d56efe0e2606ef8e356f231615ce84be9a20c6c1012aad5fed4b5d9b4842e69e158a0187ff12ca825e4673ba41f316f2571f432990a3ec5f4ce870a89ead676eb42ef28f3614c1a396e19010cbd9fab6bdae5d7979597f4ce5970ad670c7764596d97674801ab93aafe3ce40b5326fb0828bec959509afbef5360759930528ea031aab4a0d187a672dcb8aabae366ef2beac81e3e50b8889eb723e578cae538091105143591c4fff0ffa2249df547d1e2383f30c6533db3f8f53cbb2b2c26cf49d1e6fb8eb17a49313c644522f5feb6bfc47e86ce56e95690ff3fdeb53d5d5cf21ea2ae8ca21658f93f7578f6dd157634d0de47d4ba3d359d2c21a9bbeac0e098a46289a6f15ac10406f5ad2792dc713680706c8e49a78162a344d6d26b4ec9407717d5af41fcaaa2745167587c19065297e457a2b2b698cd3bb094117cd4b911c4ef6bb581798b0a7052ebd9371f0783534aae77564f788a3c4418af7338bb861c32de8ca1990592ddf447ed8474f4354c3907fcb23df5c0ac295017aa11e154d6b745b6b0e74ed70fe3e89a773805cc9e61c2ac5c45863a94287dff7b8abaf1f3e4d53a302950cb4d19fa0ad57dfcc0c44542646f8e4d43895c6eb34a7ae5f6a5d756be92768544c25a4f70bbe2a9099771bb760c26d1df57a6e88ecb31190545fa3b355167389e575bfce42968df57b325c0705b7577c04b5ab86baa02d044dbe4b2ba00e22275dc34fa4f803828ac26546f532e21f0ffa914a7a935119f7b357978f9417ffbb75f43dfe11184b7578298982f4f253e328e537e270425f2c6bf19eb3ce2050498b02a27b14228a9a5f3d4cc9c5a9c5e091b00dd5e60a5ca204cb922b7c230fbb16da7a6f8f88603081bd2914f59211d7da836aa5def01c20e92ce3ccee12cd38296961933f47b13c3cd9d75af536986ebba0cff0ff96c8d176ed386b83", "public_inputs": [ "0xe113acd03b98f0bab0ef6f577245d5d008cbcc19ef2dab3608aa4f37f72a407", - "0x2e021d9bf99c5bd7267488b6a7a5cf5f7d00222a41b6a9b971899c44089e0c5" + "0x18d6ab953235a811edffa4cead74ea045e7cd2085771a2269d59dca054c955b1", + "0x87f3e", + "0x87f3e" ] -} +} \ No newline at end of file diff --git a/zk_prover/examples/nova_incremental_verifier.rs b/zk_prover/examples/nova_incremental_verifier.rs index 7ab36e43..a93e183e 100644 --- a/zk_prover/examples/nova_incremental_verifier.rs +++ b/zk_prover/examples/nova_incremental_verifier.rs @@ -13,9 +13,9 @@ use nova_scotia::{ use nova_snark::{provider, CompressedSNARK, PublicParams}; use num_bigint::BigUint; use serde_json::json; -use summa_solvency::merkle_sum_tree::big_intify_username; +use summa_solvency::merkle_sum_tree::utils::big_intify_username; -const N_ASSETS: usize = 2; +const N_CURRENCIES: usize = 2; /// In this scenario the Exchange is generating an incremental inclusion proof for a user after 3 rounds. /// It means that starting from this proof, the user can verify their correct inclusion in the Liabilities Tree for each round up to round 3 in a single proof. @@ -26,18 +26,15 @@ fn run_test(circuit_filepath: String, witness_gen_filepath: String) { let liabilities_state_0 = Fr::from_str("0").unwrap(); // Merkle Proof represents the inclusion proof for the user 0 for each state - let merkle_proof_1 = - build_merkle_proof("examples/states/entry_16_1.csv".to_string(), 0).unwrap(); + let merkle_proof_1 = build_merkle_proof("../csv/states/entry_16_1.csv".to_string(), 0).unwrap(); let liabilities_state_1 = build_liabilities_state_cur(liabilities_state_0, merkle_proof_1.root.hash); - let merkle_proof_2 = - build_merkle_proof("examples/states/entry_16_2.csv".to_string(), 0).unwrap(); + let merkle_proof_2 = build_merkle_proof("../csv/states/entry_16_2.csv".to_string(), 0).unwrap(); let liabilities_state_2 = build_liabilities_state_cur(liabilities_state_1, merkle_proof_2.root.hash); - let merkle_proof_3 = - build_merkle_proof("examples/states/entry_16_3.csv".to_string(), 0).unwrap(); + let merkle_proof_3 = build_merkle_proof("../csv/states/entry_16_3.csv".to_string(), 0).unwrap(); let liabilities_state_3 = build_liabilities_state_cur(liabilities_state_2, merkle_proof_3.root.hash); @@ -235,29 +232,33 @@ fn main() { run_test(circuit_filepath.clone(), witness_gen_filepath); } -use num_traits::{FromPrimitive, Num}; +use num_traits::Num; use poseidon_rs::{Fr, Poseidon}; // Note that we cannot reuse the MerkleSumTree implementation from zk_prover because it is not compatible with circom's Poseidon Hasher #[derive(Clone, Debug)] -struct Node { +struct Node { hash: Fr, - balance: [Fr; N_ASSETS], + balance: [Fr; N_CURRENCIES], } #[derive(Clone, Debug)] -struct MerkleProof { +struct MerkleProof { username: String, user_balances: Vec, path_element_hashes: Vec, path_element_balances: Vec>, path_indices: Vec, - root: Node, + root: Node, } -impl Node { +impl Node { /// Constructs a new Node given left and right child hashes. - fn new(left: &Node, right: &Node, hasher: &Poseidon) -> Node { + fn new( + left: &Node, + right: &Node, + hasher: &Poseidon, + ) -> Node { let mut input = vec![left.hash]; input.extend(left.balance); input.push(right.hash); @@ -265,8 +266,8 @@ impl Node { let mut balance = vec![]; - // iterate over N_ASSETS - for i in 0..N_ASSETS { + // iterate over N_CURRENCIES + for i in 0..N_CURRENCIES { let mut sum = Fr::from_str("0").unwrap(); sum.add_assign(&left.balance[i]); sum.add_assign(&right.balance[i]); @@ -282,7 +283,10 @@ impl Node { } /// Generates a Merkle proof of inclusion for a leaf at a given index -fn build_merkle_proof(csv_filepath: String, user_index: usize) -> Option> { +fn build_merkle_proof( + csv_filepath: String, + user_index: usize, +) -> Option> { let file = File::open(csv_filepath).expect("Unable to open file"); let reader = BufReader::new(file); @@ -310,7 +314,7 @@ fn build_merkle_proof(csv_filepath: String, user_index: usize) -> Optionf=sqU~;}b=TCoTUt?~wU%8`0-}anGFZ2z zmTIb0R~03-ZcAG#Q7HxlG9U_73Q-XefrNX60J+~YGiOb-YP0D zAWoLxafiXosX^1gCLz_^XT$Ec_u?_OwF%uW%gywCiL#kBH{npf=f_QHCo^)lzj7$> z>xGSJeLOb&@hYm^C@8A27WufMK5jB+4WRE|n%;PTnAx#&dc;if1R8mn`zj)f{1G>g zUp9``SU2=sB%5M?M*a(W*U~}|G_>wLg73O7bqz;VUyG2o&mjUtWAV6YhO)1qU89c| z4U1L!g`CXk5#!c;4w0ud9g`ech&(yvFmjgXvU75ZWv*|wU(bKOm1VBu>E&8SB}>1T zcLS}L;VJ$W05XZZNfvnWkxc3=8;|A&VTy}!^{$Ed{LR=VDMt&gXD5b@8p7teUIPxz?W zF?zjB-jN`86r$$jRCMsx@`T%Z_VVTH%YT2i4$SJB5<-=(0Bb*^?gK~CJ%hnJIllC; ziqTH_aIwVlO%%UEZ>mBSg*#F6whyGAzuN~+*U_g_2rw%&i0PHk85S)Do8O`YQz(Ga z6A%($+0C=hspYt^*2MmD-ian0?CtUj0TFk7!l=`2pv#jskDlkm1|^(cu(EDaATozz zIVI}J7TFJoQL}E-Pw%J%joj^M*Mis~K4DnJ&Ac%~)0Sae*j{ZYsTtVE+KI6+T!lCD zVur8muPG=#)cgsyKz<`1>(ye-w|YljPIPV!clI&t{T!E*%XR%GMLbX<4@ei}ZmUSD{eVoonlFdiHdHhg$`NF@I=M8 zKkR{@MtYI}HTlTZ<53Fynj{9-6FSps=0B|BLw6BNgxGoB>O2BJpJ{Y@6W`e&aWqIV zy~K7{Rbd_$u)?30!1;^}0^Ambn$;q`8sAhNUNIUk>J`rw5dz#17;8vgpS)p@wOfsV z&bbs84RN*u-hO&8t=5oB%ff1MXhNVQutT{-x9p%~P98eLbQ2bwF z*NL=~V5O86`eNm%f*8>A@ck-Tw!Wv1QPWF4t-}5*zf1^kAi@AKkR5;W+CC4HkH?7yxHztrMJ|=wBSd`ybgVOc7iQ*|7NCafJnL=& zW?=IW$4l`T6X=%)!NC<$!;tsLHr@Xqfd`xc8_b*|giC>`k#P=@PS_<*1<{4zYTU@N zN{GsbheYjc!cbV_DB&*(?$R>k#wga#{(~DV2C;Bdh3gnZx7hXDYbn(M9*Ot`G1ke# zd$qRT6`mH6T97z6k7u~W5S@S66oNNP96#00KyCRde42#PWo|-8IfPM5R4ZuX&T^jd z@m+BN$1sOcsefZpw!Jad!bjkT)xU%jc+YuCWxvaHzSQI5yFQ1_5<_{S2^sB?qAi=S zIK(tVVn1H1)Vf+^NJEkb*$eQUTuzSGm>ZvgjBa6JJ@iL!sdD`!nbf7vM;|`WY!STk#ds3loyxy{CI7N!^;z84~~1#&1kcKDphHC;_HrXLDj?!GrlZQqJ1lM%wI z(jDa;SDQ9U%pby0po{DR`FK5yqPY^MS?YiQ;Ii29F9AhvDdhBC)^O84{F~0TL4f@v z$ks+uN^8dF!Vg61_)Tp8x1j%GT&!bdWY?~tAl~3Lb^bIf;`~~iMfb2Bme{}Nx=dDT zxaEsN_bmXT)+}8*#5eDezFcUI7E4@b+0Gxi8O)wW(fDfjDTQ+5y4?0m4A4d6?dZss z*x~M6_i5j9bK-mGh{4BwS|A6j$#vhD^WZ)YKP4qm%Vn{vLf|b&h(?Z#Zy&H2` z&PukOya(UW!llF-`c?M-Y(OU#M)YK_6Ah$4ZdhWw#wNbyW<~boiAH>oK>^xZ5Zhm~ zH|<2Y_1EI=U1Q}8d9QcR9OdvSIbn>|ekxE-tRAB0)b3NdnmKlje6sB*$1w+-mUx9w zVhdJ%l)9;A-#)3mLR@9J^OMBZtaAO#vh7v4hWMiV_MErFdq&5{uWxBA+SR$Eb|1fD zuR1Av%RXm~t)7K%L2*t0OS{Ws$3Nxvdo8cFb~Ivja$#Io;n^mxphwXZlj7ATc^^!ooJ6l#uVYkKE^Ae?Ha2{ zEv;0Y?cO(b>R?m~%BZkhUKh>DKRC^rt$R&M)Tr>1Pq&pH>rAQ1V{QVs@X5g-Er=HC z8C0A}DOmXNf_00WMOvF3#q%TNYG+Ny>gqf7gpEPqd2%Z_b$x68!B-f%J_cfAW4)~K zMW8VMniRV(aov=B;-y-cNkUF_hnKxq$UW4AY+E0e25 zU{-2S(3{m0BB1o~f!~!cXlqkN8}QUywNTDv^uRwf?Pd zrqluvZdJl1J&eDcwrk^{NNT&mUi$XAa*L^0Y0pCmna2w-SGc#XD5o(nT(BS&u8nj0 z4t0(@&v0zn;XPI80!)qD82C6mH@+0@H4P^pGO{zT#fvTs-g5ZFYNAkeCxQc{myt;U zx32jxKln23PqxfknFIEYr%3=cKkiHcm&dcE0U~ zG)L1dKpT@pL(AS4Xa4qDtcDi5DJk8^Dzf})g-he~;^D=N%-@oPwRG1l6*j}8TDhS5 zN(5@nM$~X%_}Dexn^Z?B?ehAn^_ikrBc>vrTpIW1Yr(=#mh^~mxIp$riu&)}y(w&?XIczV1!DhKM0E>Y_)ffLf!vl))bR*2 zk2AcAZTvA#AMJjMTt=o-Mra~phO}ln zPmt^ZV+rBAx=YZzP0_;>Wig`xk-`pUj`pROS7{wZeAhrkcgt21OJ`$|S#TXTa|j4N zm#p$gg;D3-SKnQ@Uwub$8Dt%g+qE$hPEH32x;7PWm$zup=q@Q{ka(2IY2gHeOJFLy zrup2pMxmi2&N&e}q&V%eyAwYHo1$!=twp;-IuhW7(*D|vF!Csse@-d6LJ-v;135Foo>hWr= zd`ZL_)5b>3!eGSLrw(16I4(mnDndVpKkGbHSUShL4|O$hV7mH>q*-ZS$1x{C&}Bia zg5>$G)sL?#${ULsuhKRwNt*o`vkug)_hoHSC|)>Z-B^*@THbE(5GVzz1+GGUs;) zQ#V{%FBLE*mqzXW(&^Wqq1x{gxiNcTJQfdFQy(GTXa9_N*H(@o=fb3wpR0eZsjRH2 zyiVKBPf6jY7*2wicK^_TjDSb~cfEPpem^<$Fc4=3g}$Prnl=i^o;sOQ4I}fpp|XyH z?HlUT?|-X^97-=*r`k>4m|Y8>G`jfU!B@hf-)V1aO*%vaFJuPI@z3A1Ws4m4ll}0n zp%a1CzkxMV>7fgl-)TmMmo#RsDOOBZzdm#L_m?9w+<$wKZ_Ykp-@d1NdjpNUGx+X$ z=rlGVey4JTki>Cpbz@xO8{&PjNVl(3g3phSDK6w!T9}9?*~Z@uvuV7KFZ2T!Iwwq{ zq=2-^lue6gRgC;xf>&*Ye2$HA1X4iMi-XJ7M6ZB^&&1!3^)J&)ftwf7mPRR**$S^k zVEP7X*s)hVCmU=wk<$Sjau6=N%WyWtMi(Ks25~4 zajzeH>XhHm+fT75uOAy0J9?xUDgo9dw$-u+FY@eXIig0HYXCkTa6O@BN-vLqt7DWP z9x~%OGIc>@bk2YyGSe9EcYv7ign>C9y*_F6@}j{9kQ!k<=3;O&NuDfuOZRI&##;rORg{e5=xF`@5@$f)Wj4Qg8*>*C{vRj8v0$-&IUgo7>lwWh2N6KSRR zNGIYbhS_f7&|0zMYZ>BfZ4?t=?XwetDPMwFk&{9uh%IlMxT0e(i~6RB9(xZ`=$hX#h2`boJHNo0Zi~U-#^SZV$F6M ze4VV5p$r{RO{A?1Gk&W2#5rE2z#MGiI;2ealI21ON*vd7$AI<#H6-+B5^N?q_r*To z61}WXghULPy4kKves@EqchOvrPMA@CHJ9u~C;jNdnTy;H+3$uoouh<;Xjc4 zOyfKkk8xqu4@G5L^uESodKc1?oqlVV@O@k3Zd zHEL^ZMA`t}!@viaC!@=ag{Vc%bJ$hJIUM8bjfePY9p|{Hvy3yCFkb15*8LWzGAx#u zQn*=HcJR#eIJyGVv=ucLBKDVgme)9zbl%09GCjmc=2=?j>rx}^@&puDbF3Pk+1>Qx zYpe+fVt$Y3*vGLI@KOzTTKM>V2{Nok6mwYEcY{04J5i-i z7SgjeGGm03NQ5&`WC)%}W`UOkON;P3Rj~s?^uZhseu`&*kJnd%j^>fGta^PZrKb_; zU5z*+@jmj#a&=s+I!x|pd~~>SG(x0ra?>#GE`Lxg?-}@M3u;eB@OctzcmGQsrRdmt8R@FUX7}0of;;z<e3ab_q4T|vxHLAXaZYVa9=>O3jo6^W^U@aK` zh8{vm2e*Ek6!QGhMDx6iT$s;vMuiEwM6A@Y-NhNA;IJj*)}FjXA{)ixTkmXJDC^E* zu)*n?iA=ybN)4l}F;YRH+Gk}9jxmHn6|K9>$+Fi}w|L=fzA_;iO6(Fr3KpX-NE)IHuI(QMFi-SU`(Hu});?D%NzxjAC z{l5&ZX8(6^wT@&Q_pV>Pa6df*P$&~Zy?DKlh5|Qk`Ga>SAMX1u}JUEzWtcSEt%hnQembItn^19** z)f4>GhRg#uFVG@_{sWo71^Nt#VpCt7AfJ1xa>$c?5$N8S5W3Lo!R0IxDYcSlA>hsB z>CF=#{!LjUd8H-)li0$Ik%f8>VLQoLz?F#AH2_Vos;&WZ3T>iS=6ev z1-?Ih3Tp4zp$u>%rLdDv?C$Q(NhlE;7OJMi6^Id=v4eKw{~M*pd75)P?RA_{E`!>&nUaWZn+1QnV? zWvI&s+0}bxUgF13J;+t$*Q)Vl&L&hB$6U0b?{ys$aoEVDUUa2D1smr(D}ksZPGpLZ zH+2gn&JnhARu31~X$i3Tz{IHqH{}z9h&d2tBB$Mg5Mrw;#vM@71BdHrfnkZ#&&}JO zohMgEi72*XQsTNSySP08>PA!>2#BBt()u&M0s$gM6ga;uzzd|s`OJfIir4pG(-pec zKsau;oqI^-2a>kFX!0iC?{u>x8GUzck=CQzZQ3OtOslNQ3JtDuZdn@!hyi4 z4>4D7C_Na=e~U8N%UOkH-Th15BMPMY^=w*>N`Uuu3r=Y+J1km5mN@6mLXT9i_KM%sf@e=KC$V({ z5lRcD!d8QsUj~L3u+~fh?~DX^QGL3>%>IB`(@B~id8jgM^XqYhtx=H!?W*K_a1K%l zP)G0#TdEia7k;A#gB2_NW>K5>6trApc`k#}3y3N9T{vU=IWG^$mlr|OML$O7l&tVl z+@L6`-Ad>Lpyvl)rl+-Q_c%EGJ9RF_0XTgD(?MAcNVym!~ zWjmnYEs6&hJ_-naDCqogV{b3W?MIJ;y<_wsiWaO4nKbR#zA4^b-1@5zRSzcE{Ep{h zB);VIT@R9hS@w1<-!&p>8NztDJuueVD)+0&QRJ~6Cv_;Ggkznv7T&X0XS z@`8!R-HAhGavhB?baeA9`&Cv*Hs6Uy&H-;FCR9R6$5kKhI3I>OA(PXs!k5TLR*Q6S zeCnTs!S}%PT~quhDo}JkU^ejSr!qnHd};&&RWHIuPW;%>Gpb$^QHXRAD8vqsU@Yel zw-rPY%YK~gAT>d$;|R-ko#(hne#e`|tf%n~+^C86+sJrT%o)B8=mf5I%Z*wG#G zu`tmH6l_W^m+t%zAh*Gd6N*s~e9AX^O zX-838S)pzgF$tyFJ}RlBKd2s_OnfIlG!xz;e6jJooWQMLTz?4*58 zVPBkZti!oT)XoqF>k2rILbAinOHe})$-JfZx|9O!W)cMg8(Xe{fHKj_n%NURIB%^PCGM9@S%oIai{pH5&9*q5MWX(!s#Sc%01g4e1?X;)*wb zPm4E$qWONakzJ#`K z!5&8JD25I!kmF~x6=QO#<2K86LE=0DX=#=HAZq(wfsL~qKe6vs?Xtb5B1#Zl6msq+ zlzW@1uO*-jXIRcn<6xMNUzXT9B(76@n}wToZ%#_qje->T1>%s$K8Q{UDYiT(wM@~v z#`!i~obq?%C7>^+1%ge>d_A8TQLwDS4QAEfJQa$j7)v*qx4W~_=l=m$qLd4Z`@PCC zj{&4~N~q`lfy(LNR>tI4JWme2SXe-5Vp1|euY(@CIK1c1@D{G<_6`!`CTTkdFP=Kp zTpVL=NjrJDRGH=!)|R)QijMw(iv2>%eRq=LBR8EM1L^eKYYks9djiClr@<7+xsO47 zD;T(_b(X@YCUJB(R^NMVkHFfPHgY+uam-3-PZSt*n<3Jxpl&UYftcy7^p8ie8DJ-ysi*j$(f`1oPi|7AQ-Pv zyU0)_?=M7#{NePMWmUCjL4U=;CG97B+_nu++Z*6DYb|_Za=}R<=l-%aN5bttCM-(4 z2PZrx+;rlZqE-^6FY;u4Ak70@hBu2!S|AkuVIc~|YP9Rju{aG3j4UU_E&VE68wUbm z@+g>j&1dR@j9bxA?96Iz&+L%E80kF0CQiFU)McsdFwarR$v7IHeV`o*!wDcQEr>~x zfXz1Fso)o?*My~lUB4bP{TA1~Q-4KCe!Db{xz^aKSl%NhdbG##7W6O>EuUO$dPu#W z)V6!%*=$gI)H`H*v^ZXP5UdYBhxU}ojoEUjLE4%4*G-NO=`KCX)xEQF$ZJ{VHg$~B z`Zj8f<5&YZV=*lFnQSD@2#)*+krSF8Sh!N-ORT8fH>c)FSVcYs`^P@TK8?p_bhbiD#;rIgd{_4~Yu=q6^)2roF_uwnw zoqVrYAU)>mMZ41!3%Z1!&w84Lja$KHht~|?uk!m4a0OH^x~Tlv`bq421%BnzX%TD2 z!38BX1jO3Bydj@LrWjKzhwc|Z!eWRivRGB7g^6RPN{;_X{BWVnlOq(HTG8eRp*)1+1v@4O%e*Z6AMJ5}(xu-2Cq^-#l;}qW@T4 zJsu{ff|};2>K1Yl#7&S3CIuyxcAx5J%}A5nbq1p7kauwU%7;q*Z8p);uGenK{y&XfiOLwFkaS^*cbn z-tW0rM_{J0uK3XWtJvq8yQ+3&K;-Y{OVhqRG(*+*VrPBU$>!{*(~XU{* zz!dsS=A}IIvO=pX`PXCFVDg%iUA^eBxkZecg1Wy?1u5G+=OV^NAuAq>45%|2cZ!8F z9=@%OcyUk=DY!Ztu(A^O~TV9`JE*pnayxLfWuANVTmt^Bd-#QQ&A#f-EfiR={ zekYk=6RCfuJbm1hCju!?;^g+qL~(Sn`(KjlJV3l8=+3k#vlr zhq&4OE9cE*(i?}o*a@Z7BGOiu@JVU=>P}Z&({_#d2y)Qu_~Id(g||Wn2Ga7hug!x@ zPYmz#Z5Lo_g*{EVB6&}xOZ4CVw;58Lt(=Ga?@}cBwFu;Kiu6BaNEF1;Na)CC;pVuO z*u>|bBu^C7()92#n+8uX>lg?jl{ZG^40TptkI1=07uq)pkfOmqNIN%u=OEN-(TIRI zwpGP1-(d9MSl6M>ZEU9q@=s0-#(AYiej^WdI58Qj1JJ^xt?0kx%*g#aYK=lHoz?nA zR2`KQOk_QMA>^TTOHk`&sbLoEFZAQ-#iacv8;f_|L}b~m+>Dxd>^rgjytKkun(m5v z9?*GMn-;Nla|dBA7@lK}M~Q9$C&<>y!S>6tN)ATE>bc~bK6R*^=Nu;w4H|Ocn-V&v zyfM4Wu#{hht!0_N6m*-XKB6YMe}htS{2!z=0)2s#pH9ta8sT`}SRzm&R2h5mJ3gJF(gCBu)yt-d5%gk%f{5?Nr;Jw7L zdC&%KiLSq@zoK_OJt0?Q0gKhX!9L~QshD4J`(s%HdQ@YNLCO!c zdNbpv)I#|`QR=Do=bC)UVA=&&Uxz34`7RM2(`L-61XCb;W(ba$DC~EMXSq+ z5?DN9mOHM>}V z)RR(Y{DoE=EFOxOq0$n@B;PW*wD2)4mI!#9))g@Ck%NwYkg z8J8h2Yla_Q-sV1#cF8ArenNuJqAKY8tQ~G`%nV0O>Bv8geky!b#F`YSH(+(`B0Gbl zPm`qpbeDh7tJ&Fk8+km(V7UEfss3G(`nODBo6nP)y$f1=$Fi%nh3-ft5EG&WUL4v_;#GO0Q{J%}9i77vX{5Q3p@qm}vWLoYkkkEx z#m=*wZdau`NdKqXoO|!S(gXOz1`sXLqWar|JjCG>DGQe9SE)>^Io3R_8RzTOkTSDo zs3Nn6fpB0<*6ov12ZRquV4I_fbPdQv_1tDPro}8g0;oJJs|>#lE}Wed9K3JeoF38@muMMe`9WaoXCI)%2a5?V+&y-k}6 z7>B9B%)K&^MhtzL#GovviGdCtYmCM92=p-|1qH_)<=IxJ&VvL}G^RO}Syo}O; z5SICD%MnHu1T$pjef9c|p0kNVhif+qPIW4k9*Oq0MCvjq5A-yvM%oA$H=KaNT1@R0 zp6j&Ku#J6d{Z16ljXWHV;aylj68F6L{S8B&8H4fJ6MLZjAotS~8K>de6x%~n_8Tiz zWXMVDAZNY@%={>S-_UA;l4WN9+wI#^7UqJ?$~f${0-L4iU(Ck+Ne-LxfwVDFWQ?zb zT%r5p-mA5HNr^Y4Hj-Xt>)&P2a|I%6WKN?%xKC>PUh6!}vXu)mK)Vc+ab`|!qD1<7 z@XhbD?7@6}ugcZTGM90jX1+d{wap2AwPA=;hWvAS9vN!0&qQW%9<6iYmEiChpRlMk zMbVe4syJ`^Ez4Fd@;JF%xLqJXPK2gfivX?056UDWa&OMnP zh3aH*;p-_u3+T&sJMO`%fR|qG85LG}oG&Y@gzX&)OnpRl9Dyk{bTdvZx|UP0_m^NK z)vyAZ6cq|+Y+M4VBrCm3>y&Gl9BV6zK`^o5m=kMxjFLtWj#4C8n#La=S+KS<`l!n`13TObnK7Gv64)F?49HEBRg_w6MbTqP!hN zl2fPNe&|>oibqfb8GK0epufg5Y~FC`!YgV@IP_I@3$*(`-ChfgM@(y3GX`}l4@S1_ zZJur`%aM*+-qYGed`kpkvTBWsBu2PMZs8bcsN=NOdad=|Y!mc?PUxYdR-nShIQ?WW zR@xyHO%e?*kPnn_47bF>7vN&%_b6c`*EM1%SXo73{&@_*ssF!Yu;J4G;TS;D8a2Z) z5UTGD!4X}yrb`QzWnYi{YfG&Oix{!CedtiKe2A;;oe``5lnBc~X6v9nenQb$1l z8{vSxm&$tA`cbH}X20bcW?}X1Id(?P=z?hYXqcKSc?JKR zZ@9s>P7;e`r^5orC^G{FVVjY1tdr9VjrZjc%cHh|>zYJOxpH`3VqdxJZ&t7Q)Ua$4 z^YUCB9NTHF^C%G7VdW3?>L?)40HZfA9K9MQnfQE>@Vd-c`T)kDr26_9r| z)dV~OF-a@I%0-Z(S3AAh>6faqQ%6jT!PmWh)4}C8X-tqXK-1I5#!f}0^(_ad|2bI_ z2pLItb=n^l2=5W?U}hubZ}Y)t>O0nMk}Lq*w{NdsYAtxFa7QZITFf8d&Hi+0XOEZW zGHx0!%m9Di=o{)A^lkG}Tl<2uMa$A=$X;+Ul4xL2s^_z_9TN3H)d%D)*cTs>88tsb zt0t$7q-WCFh!?;p;`zeDewdbK9fpMgP!m>X_DA0Ra1!AcU%h=KKTz6!4uc}hf@(5cx$I;gtwcnT?*tPFAkOH z28+&4Sx9s6Uz4rK_nt?AHUMNFeFY$1r9TVy**$-uIk<7M_ne-76v{==dugJJN(9Mn zy*M$5La~6;dl}CI*KNvOnpu($R%d$t0DtWL8#Nq!M|kd`6P2VD^)5J!Pc8+4UX%a| z2EHtyKL>KMJ@@;Npn@|4>axi~pvdt&U(ot?09032Ob&P!8 zWz+OxXt*HlY)CXXYw>(x21XhMA<1<3GqswO#bJF!GhElq-;@0g&;ajueLWu2Wgh22 z*H>O)0s5!tsG4`CSkD0c6z_Mb>eE0^W2~eS%K>+<=d2*2G%~9!J`fjXF*E@Y)npswB9rS#e zz(~sKJz@?d=$gnUoK2Ebi2(0bV!lD6fK-hFlonZ$| z_e5)uaK@b#Bj|w%MG}xbT7}8XLaIO6QaBjD>-D#?y9Gq!O57SH*aP6SJ$#jXMk#b1 zEQ-ghhp!s9z{yMx0IT}koD1IoDwKJQ`5O zoNHtOD*ULTQCHK@BccZ{lU)G1(JH~lqPQ?2ha z)D3Xf5{hQo1}F50z3kGO-r!rF}h-)Cfxng_TSHrgoHILj%av@m0*{k z44Ga-HBSg7mYj?g#*o+kam@XfnYE9cA~yO;q&QM^&TXc9;x5a=-ARE8BcR!OWxH6AEUo@ua@~`s1on=KLcHLK&G=5HC6okUJ7g&w*+UW_RY) zCTz&=zAkZGP;FbNf_^bApmpMdEP9fB2}b)N;Iwv>I!2awRl(wI@<&52 z%ejU}Ky}_AHQg(Y)>}vzj#WzVZc-Y*59P`>Xgoxm?cBtL?Heq!Smwzp)5{#oBl}|a z9!(6(mdMiuz;^hS_ob6P;Oil_hi=8if3_>K?0W5nx9mT&?R&}kFEagSS#X{qh)3LF zTc$Aj(L%6^LYo18Uk?|m3v2wQBe&{C_Hhhj=ujaCpP?KyyQ@UCQAqEDRC686Zs8f5 zSp-=sOOkXXdsd5u<6jiQh?=JXo(X}6KX)vbms&E%AN$o>ogv?{f>7#YF@G_2r z>^nJ1q%o2(9Vm$68!ghBsw$!$CW@qzMSVXRr0wx$&dl}e61Kn6V}WQKRx*92hT4lq zMZd+F8^;-{i;gIKI0HTgxyR`5Q$BO6bL_T`U$V*O4gbV$vz@;&k)QIcLVEQ`2|D+M zLk0hiiyb+Z&$NholMq%&<3t;vtO*FD%miYMPq5b;Qs>Ph}pJOLzY8jx>Ou2DA9hQ)~%wkTe@XF(a@q~D?u~*erj!u zwU;TK_bx0PkJLozv8;(e0Y+vh)6jC3lPW!gL4V;ywg`@ooRQShgFV$NJB78 zJo+#i_`mRAbzlF_#53>eT-CRdMfcdm#mYbA>Sf@C4ZbgiGwT`}PWmPOjRXa+%-=<- zL>{Y18PPZg3P?~!3k!Yyb-1b`Pn>Eu!)iK8s&5t6Oad3?d4*A!1uKcopeUC*5g;#6 zgWf0i9ALP2F+krU!yb}H{_<4JhEbKExwk7Qac^q?H#;EBYR`1+gj)sh7L*pCXVGg0#?<9#xDYt*Th?XCn^ z_a)LmW9{(okJe3M+oSN0JlcBzuIrmh1}~R4&>p(k?mR6#X!q>;b=z@Ql>5+Mx_$Q( zK_ebxTv|Wl(o(%gT%7aV%ZWci4#mJG41x_6sgXpA`$v4np+lC01O_8nm z)SpTLZ{{#w0Xol#6Cg<0KG$zPIC6y^2vQxMfm45s<9yMy=%mWo!nYrXLc;F8JCniM zyFN_dw=uwXzMNEU16kIuFs#0&rrs(dWFMUSTw*_4*v-&!W615Ng`Z~a4 zObr2JpV7nSh+NPncU)o{GiOB$9X4`r1k%I%1Vv!lf)($Is9joer-T{c!oMjY49LXd z0$A-1;!4af>_pu=CV=mb_=g11ZE~&aT9tNr`)>1?YS2uY4RXP(e@+MiJ9yOKAZjid zys9CcvoT(UZ%ovZRcT-rd{J*Gb3Q6S2t-!(i4bEv7e6a;)hzSg*q~8l`Ko^hBaJ#DEjhw0v zwi9D2{I0p31L;4<83ZPv7G0|Kf>>BC6LyM^nxNQ4=NOlO50d@;pOF%dNZcky_8`O+ zrP3Z3GZIuedS!nVYK-E*QW;1&U)>G6MLtYtzHEinn0DWu1n9e04(*6_9N@ZIG0Z1B zTdi`|pqt8 zOLNt+TmurUgDo0}6E*d-U?H(_39l@X&6UXY-72i?QQ%P>dIA?@$x&1|ks_{6TJE{t z2Xq6<;fc?JwC%9Q-@iQ2Kj`3;+WqO-64Nc7GXk+$rMBnT4H)QU2Zl@!|L&m=j-2g&$LyQ+zyZe~~SY#RR;N;z2qAWk|mQ(I+9u zQVr4%w^v!hu@{oXbe!HZa>oHN;;l>zZ)%+ePu@%$lRVvF47GY~7Zh@OW`-XsqUws0C=YLOS zF6uI`l9-kwh6s-JOR4P>IMlOFPYRh4z2e-ARLsn%(v%jvOk8A4f)BHmnd*Y^O7$>U z@kzi`%3ko@0s1tG3*_>=LW48(MPya<;6)a!9?ZJ24j;LjK;U4r-FxbUhaVc&2~N!l z5>jDd%Gy!isnGTaRfu3_Bl4jAzeyCg<_3i>ge&mn(%8PWk!Vx4{1#;Qd8(YI^5|l+ z$~~(xKEq^1+S#!7fVkaTw-coO9KiI{z-s{dNkCBOjTyBOB1d*j7i3n*;%1bnLWbea z4TAeXpY9(7PQ_B0lxVQ>EqXYuX8aCFT;&@~jV=ba7EhSvX;o&Q25ASWL12@>(=Q|+ z@y)s2m^0Q}XMirUEo6axk?Y@`m0)eD@4_iL4d<*L62pgD>>`_ZKpN}-Wz07i+?*Q} zPR&>YHdXk9!tFjzmH39h-A1^xgP6+~$PHWU+J~7e>kUXmJkA0z?oM(&%{|zBEkQn( zEOHgg8{vZ9VTebD#a8PfaC#+m>T-yvX8bqJC4!@03SDCTD&rXHf0_kHtqX#Ph6rIR z8|z{fMep7YHm7)pc)|LK4VS>J0Y(s_P?wQ*CYk-T#PQj>Vlf6w`ba;H02}4HE{(BV z*V*@!9kvRwZG?2okz6V)>}Fs3Nr*!Q1uAkl+(_dL`PP(UaV4cvHnvlo)7GBx6WMC^ z0g!bMl0cQ)le1~I&)CkJ@uG5IyUVv-=VPBsPAHrq|Mf*9mkxm!UZpa_U@ec|e_jWx ziEL*;b*0aut=3K`|HNYHD&nBh^q$Dkh-i$l#!dv*$dtW3<|7}44$qiaD;Z7PK@A4C z%2CM3;t45l?u?c?jxSk@74)@_M!Fdkp2Vk;fzB5@qL3Y6KBTY#(a3Yq)I zRj`tDFlsN?@$dGS=q?O?H&|ZG=++|F0NQgA1l*?1oT;^>NbGrtt(9*-#=^f!ik@uy zhHLKy!j4GWWvTOPa5{fVFr;->;kQ5OEmXZiUA6j78a3=kR+)P_%-h59xb)#nH`Pfx#r*p6Thiz-z|vJ}!$mA$49XOvqQc+Bhm@$Eb6BcOo$e^FB1};e7<1OU8Tu zjKx$#(BONTW8Q+A-;mk^n$84)n!!%_T?ux*Up`=z(=(vy&_t^C%HEBMgjhsq|M(dc z$$h-36{>=nKTk!vv`2Yk^Kzm8(Bp?s`(CMmI~;kY!urqJm)?fry$agTVs|@2bUUTC z4`4!~t-?QVh2L6jlf3JUNF9k&D~yMnxr_|4LM2IY@&lbQR_dGHHp1t>F{9M4d6UPP9=?RoPETd|lUgu1O%KFM!=>%(z#d7`klt zNJC!q$2FCizL1_>pKR?izSPst!C$UaL4HP>+JVdo*YE7oy6ja$#)BkFUZE~3rmzUT z^g0|VwrG&l>@r2+P^P27rQ_4uM#Po86Gd(LyvqM}=9<6Up&F9;twTc>plGC3DP!BL zW$l@#1SHgDx}RfmrD}&Prs(nafW8^f==t5A{dBPD9ZDGWWGoO32ZZ>%B{lS|7@K76 z>{<^f+x-H;*R?+3)bz`smmd%~bNludHuQ>iqFIJB;m+?!J2Z6A_Gg;P4mG_sKRO@y z`*{Zg#rc4VK_W8B8;|l_G?JyzZRI)FcJbXiS4_xQvozjRHu)Y1@beDx{*FVmHd4Ue zc1j=>mXM}hfTf%V z-)WwM3;gp}d_rSasq5+tq#(vUrL;HmFeA&Ri?s6y5nUoCoU8ou1;3m~8BtS>H5}=z@p%m!- zlmkci0!lkQ1o=z&{ABtM6Jjja!gu1MXUVO(JVnE5T(>UPqS03Ok3tjmoaBWmBlb5m^e0K$hpw5;pq0JbB%}!kr&6UO_Ckxvt;%R85=Bhhxl^7%uP-^^7FaukvB?u=9{w z4^i8*aKjQz4Grr>d{~JK@yV;UpC<@Z+G33y82i`HT)d!-fhrS;|t)%4PzX7 zj>4MLU`2?eI8P!AF!lrlGoxl_giCdk_zq}4_z-Rdg%Z$}_;S}VU;4DkR*lmO8V6iu zC2g~;+2Fh{J(v;z7Vm^6@;QLLGich9In<2$$Q%_+^^z1yy*FPMTMKvo(9qyETD% z?@pPgEO=+fbP&GZKg0*7N6<@s@!jt=RiN%Zg-QCm!=?`C5yC_kVm7^XATpyhUJmnG zScgSlNMh&Oi7)yX*O7Z*oP@6Qhg)hC-2B}$NYOv08s3dS%ZY(Bt}Bh0@~bAmdNF8$ zH)-DM6M@+GeP?)9>W7wq3&*^tkwG%mk3Pd6a(0$FS@eU;_4R{IHCMI(-eh`cplUto z34RJB^Pyv}j>1IZMQuzJa>5e(b=8XpTVD&`(@%#L2GGe+1Pe$x#sYL}XmMWjXamD` zQ)Y)%WiNu7D+@T58cxqb5tPcUY zY7tUJP67$%$T0~a~81f8-lAbwUZkIt`A_Q>Ft4&&+ijxUo^o=VHQ^{zf^c zJxACl#yr1=U>hT@=SWoh1NHzhuENE~waoGU`P#KtK#y)2K;K5W`MeHw)`bc-+q~RSe#S|PEGZH-gtPK4oGSOkhR}cii)~! z_y}*N%b=Fou~U9U1#b)4hwC)yslR}mwE9f8@dl^U^h058Vf$h|Nl!#U$sYbwlG{9~ zFI8HQ-e_f(VvadnsoMrkZ4s#YxgWSbH}Pa_z$ayHOv?eTu`5bYBW@Mq#{--~6vkgr zfaBOHcoul)UAq57T840FcJrQ!%@dfx07R2`Xi)CA^vN#g3lBZMQ)_O3drub4cnMV{ z(`U_ze(6!)@he8?%WIF6VZ%~zedtOs@8BLDE?M2$1Spcjsv)#8#lvU*aF9RvdOs&b zai@a%15QDkj*vY5r)txPYCnETdH216YuI9&hW`2oY)KA{+mp^PqKr?+_!IBA zP%rfA6G7|`lkDBHnmv;B=OaOuPlH|rv=<)qt{ilD{Px3LAbigbEo$BiUovdHTW{-) z+y2oPV6RUpi-)gfhLyIqZhxN%MhVR+EZb7)*zJvkDpE#jHYWA&4J=ZIuFSW-qXtUC z4x8Xs+?7w>=$1l5y^YJ8n!X$jED@Mr04mI;_p7%0h2_Le4cc&3jXUgVPyYEGe%HvG z;7GLIJ8M}fk{&|ee#=-wyeClNZYSgGN=rkDYVqC;;m|CVZ`-`NYE1A|Eb|Yu+Xb%w z?upO-f{Va#H_v9rH!Y&r8=^qLP$gStC#C4DSl^!=G4dZUDZz_Q5u?uqciRonkLEl- zBI5E`XCJB)j2}+&ZSnEaB2c|73Q=W&LZ%x1^;Ozr;sBA`@KbTu13=fL&d&R7yUS5-)es>H$LDn7=q)UB~i|6~JU z9$I0|8u>enbA0P1H`q;mPNecie2-n1U__%YT7LCB2M#RkC*pkW=(YTDEgfp?P$%E? znnSRmo^R1{LLLuLl%J{!s;zJHthdbnl_5i{nd&-*hQ_V&@)n=J=Q5U_IX&KkP86Y< z`!0*dk8Vy+(9nbskEwrtdH}Q!^_|hyvjH~n^St|(hLhbNH#NzlKA`+j+mz&vGGd|f zx)(8zyX$;OC0maO8xvLNL6u#dC8^2f=x_6_=sUvMCxin!V8E-{gaoylr`F)L5D#vM z|5d#eh8F{xKR9MGQq{V62HWrrIU{*!zXC*_o<=-LR9kDg!W-o!tLvg3|I#Caz<@y< zCv;WN2szmV3d~4h&Ad50scAl__mmpEc9xm4U{S9$hInW*Ii@wZG^hh!niy6OO7l9I z-Z3H~rJ~bTA?@>Hw@;>keJ5T&Kxi05<+W>PaUJT^xlJ*u`+>wD6CCN}E&MsB7RT#W zi_CR8Q(L&AJzi-%qI{KQED~7`imbQuryT684B>Q@ajdY#1&X0oCQ%e=`I+S`gwYiS z|Nde?nb=Y{Z%!W_$6~;a@^lqY3{}7w8sdz1^u>r(uNlPyFB_^kTHwEwXB6v(FX6fK zzbid@(wfnxv7VEW;1*-@%#GAThE#>tE(i8TM~Fzn6ekFN@4L9#BNQL`i2fUms8U;h z0Y+E^h$Ztjgjhf?UMV+z9+L8)+Gd6toKV811E5SMH7H_S%X+XRDu=DlR~M;j_wR4k zsnn@Gt0{AK%C7LxdI9{i$4}b2GufOR4$cOx=H(+t{72`) ztaNdY!bMIaupo7N;d-J5ur9b#Csi|KTh0|E(b%2P3|m5I7DQ&V$E5xmBQfx8EitxE zZrFD#`aRkG;T%nwVz^mpS%F!#dlIkE+3-MDCPyc+dn>M+Bp`)X+iJOaCwlYEw=&2Z zk%ZhpwutWxVU;ytsEn65ZzeTCU5xy>VH(?>0BFO+vGsoJ1NieC+`kcfxtYtANSf*1^ ziJd+bcP<(F2Tv&;Rz`QG5WuW#{fawhfm|WBc!C$WG(=b)NVR}71E!M|;#y%JgYY*V zWf|{aR_5ZQ9$!S38m!0rnYPcwDNksxtV^{R2y=Ss{Uva#466pGb6mqqD^6^ud(C#hZMk0!wqH~w*JsP# z-cS!fw^T&wY)Q{yPS?$V>+#7IVygyp zc8$?$y<+p!I-p)EEsh*b(Pa+E@yyli{_<#Br_!j=+`D$|^%j9b1e`)AP3&i8*0$9rSt-FFYBYrmtuGnG$YnF;zb?_wZEUEQVPYFboyv@_@8y@!iO%n zT34@>X@KNlgqw?_RWgS!79m`49uo?`*Kg+%8uJXNU^)i3Aty!8PVQlGC&m%| zOYMz-+8g$vrj<*LOR!1#n+b;vgy%pX-KKfaeamUQ)& z+zFJ;`aI6 zJBpSS(cf4$gz|r=#dYnLf?(TkAm@;iaEplcyaM;~(hC7Z(n_9bQU18~@%`gAzMlbe zzPAoBI77)Tdc{L8p{~x>r`i3%TOd1G*0Kt)PZ_orbsE(9_wkH9tac&Ck|~4M)PMMF z)zAr^?qq4Mb47Vyee;R9mCN5=Hw zFs!Wq6qW<6IVLT-eWAiuN088&`kqsqsEuxcfwrtj>CX@INFbe?CZiUORezj;%`AdasD;m&wp2rka^CsQjgSmT~VPi^6`_V?VV*vRzgFvr*MV~Tu zWqgAnwOkHOwQi58Q%W%bUPRq)f3ISb^dU7U7ik)0S|8o(Oca;y>}lT;!Q2fZZt%ih zB`>G!gX(JigJ=ik&}q@d`mg(=nIZs(@p=Numy+*W`VGd zX(0~1`ue?k;7*3Y3$JiFy=i&<&YBfU)2zcs8U}8XGBP(XGLMG8pqE%MO540ba8S7YsU!Y{TuP5^j($lA_ z0eo9AZggEty@u5-YtXzj_w{sncjl+bf%GdoGINt(Lt}E>eJ7cQMbv4f@i5CQ2ig!-_Vw$zZU>(FB7}6@Y25h|JqOn(%ki6H$huF1it^x?Z zNrh8(5w|2f%^Uf@JToJW-@e*0+PsCe*Kj(91wc+m%=mbiE>lP0#d!39SAgS}6LC)) z_@IW_xP^sP&a}724H%Mnn(>#Fh7BA;JKLHo8os{-N@ab^+4qOji53Jy0Li)$Nj~Jg zm0W<5zwXblmIhmX1h5ZCg(d{0+(yC~=zKp&J)YTcc6Aidz!b{G7%4uau33wTCg)bT zC4vj+K0t{CR!*2(XlQ8L#YGES&T@xWVJ8~MZ(eF?Y57d0nyctqxP!1pq}E`wC4spz z2XraHwszq+VSI* zLn~M&AbYwUkG2#lF+aU_}BGA8=U zZaK8`U5!>bQOqN2Ge~$-cdq-$y3Sk0)EIpBl(6)3Vl!;uKXKoKjRH&Jgek?xU5avK?nsZVe9(N&CLxCl!sYtyc8b=762s zKZY<5D}!b#v>TKy0=8x@aPOoKYjczWXc--w@k8%b=zsDB=(g4+fVhg)B?ZlU^=0fX z|03mw3P+!yKJqsM`S7=9q;0+38Bhh>*OkUN$P_ez?8M3>(*{CSGdXd$)~d@cATLP`S3Wp-HSZ84|4 zn@^w`mZLX8Mp8F;jRR&g76XRm?B9PFPnmpHDcZx?s&iQZ`T~|^14M3c@ft`2Q=M&R z@7D>M`677;9{4j=+6Vb$5RkA%1fI~hvTXmj`JrwpyCXKbbB&@05vC=0E|ds8`-@+0 zPg&IX{+vbdT?=lL?BUI_-nVB(nkr(#+F4Sl3FUohhVJEn$LsfYT)qb1B34!bJad&Y zp|PES71GBA_0}(#rYS88xjKJP5G!M+)~WT;BKgQTK`lkJwXQ2(ygl!8C^zFW0a=^7 zsc;G=AmDn*BPiP=cw1&8Z{f#JszFR#xhx;$E*iIh0uI+C93E3;spFe`namSVJ=rY- z!TJU+^pH!&KHhHhKOaBc0F4QOQXd};j%?dfPEWr{`8K*61inrCdDrVKI+1TyE0bN^1N&0Q@fzjf{{3(y0R{4(N^p72@_7ls3pcP(wj?3;F#daBcL%4 zSeC`vn$E(t1oqAoj6@Lp&1(Ta>#&Q@fUsjacOT>ZAm%O^sm)03n5_w399kcqGJKgx z59^p&q=bouaC3Y85355o&p-XLzxYq>%MMRzTpBQVe0_piB2R=wgopbBhT33wBSx7| zROXvaOd8f1`Yw}MmvGC8qj;b8D|%h{35zTr@BulFZATBG1Y23u^ZJutb+wGJb{@X@ zITbGKDHj3)tY0-l+PZ{ox|LO>k$p2Gn}tE7M`uW|DiNX=9;p&@ZOTyo(Og>$xL@tI z53Q(OZZpQ=n(&-u@5J`wIcL80U`FeYj4wtl3u(|&FOEEQREB|bK>`py7$s1 z{;r7vigd73ZTiA}(fg0aKZ^b->^-!3A4LVRcsOaOWGqJ9j+*lyy%s=%6%ym}aOcaE)0Ml~y~6`gmthkuUM zJ)B>GDloQUH&Zvmv{umHlYR6oh)y!`seNS~J~!cBWw&0(FQ*9&u3_E{j9ht<{QlKrMBqNZWmcy>+%7?`N!z zZBna2;knQ--XTmfA@sGWH_dBf5M^$T77edQ!{h&#XmdLe)({B1AGHebCPh6o#Cf9XDB z25~!GU{*yMk>SETATv#n*aR*(|r5V{Z<1vMbv^KDS;$;F1Zt}JOcK#f4P3PxH6 zh(S+4pB1Dpskau`S|5JQD{7)zn6{Jq_bHwT`RJ9!aFbtf-T0BbVJg{9$XI?Z`Ck~)_n2-pJ=Wl zO}B1M7@gh7{~`upf|fQJFJW>3sgJX);y`K#zeazfv^8e{-L*PRngLpw0eD(W4P~(S zs{WYZQ?j9_i+8ZJwju2vN6*aggHtlMCrl=;+3qq^<-vs~N;9Zmc%O z;S3fNlQu;y{cW!v!?dx5-}=Aa9ng`E?vB>M&}{e|@(kp${n^^j0X7+#(heF`^xamv zH_=s{Jsc7#=;12k<$0irywotpV1eMFV^F8hxMEPOE8aB>i}fs#b~11H=NwX>C$^Ev z0;jP4ZG-@BcfJQ}p4oy*t~A}xvFXDNP0712Sm2*EA*p5QFk|P>(qC>2pg>)AGLkSW z6#~QRx2XZOkRPwBKj2~z_SXq_Z?*l0;_bS;32=o7KlFXC6ffX` zMe}Dee8ht3jGt+U`7zx)V6%??xKx@QCU7-=DNk18xrntwmiQO6FNQwJNweEI6`eZh zI%`%)VtW)!xHK`a1O`+91+fT2W}fw}XGU3A=1#c7$fM22mv!whT*N%60(1InqWk;% zoOJXOxh1t#PFZ*N++R^@DUtiwta2t+r+$pS-AI2odx8D5Tn;6rg|-2Diq`GQ!`Uk8w08ze89s|QlS!ZidglV@yf z$!T)S9i9wM11zn`A3hmO&IZOTrQt_PK51?7SLod^HWV=AY7X|QoXa;A@Kf?blG0&y z)5{AbL6>2{6e($Utgx>$x^@2ggvz~v;W)1?Dt8lGjsKC923o|VYcQU5(Yh`PlYWj4 z$n){LgjH6wOCJ!Q{Jb{rps9qDl7K3@bi33OQQ8--lV_Lo`mHC*fV$D3B-+|V+7(>g z=6u`9;G2$3pe*U-g^_kl>R_()27*G&WMb>`Aj`dAqXO>USn>^pWYay_pbIg?BnLDJc`7i_W3dx5|+XF1)FbJGsLZDFBAIe*z4uu&FS(iUJB{&Y0F8tKG zkP_Ri)iTWj8HM}%ell|emt4p_$w+K!w>|92V(CEcky1(=31PS4MYv(uI21`0Y%V`v zq^k-f0poKc^!&ipUSO&~5JVl9x^UP>-Owyi8?~|6$lZapq}W96I6Pbx?7hy=%=cqn zDBSz0W#`V*4xp->N(NqOZOnb^yfQGRnfa`{0vu|HzlYf*sIe?qwxt+ro>3iw*u9 z7>{iakrk3^%HcMi&*_*JtjELHz<^-Mk{p&zgGQT3)FH8=$7KsGQlhU9Bs zy80}5vn}aAylX+suB05k`J=}6D|ifz8J(%K{*FCZHIvA#0!EmPm2I=gbafyR&9HRv zfon3+7kzQn(Rut9yHEqPZziPa_m~_2Q|WFD?jiuJsKNO#c={>OM3gj7X9+5h$F*_3 z=*O=>F+XkkIB%!NpSZl-%G>-jX`u-;;XcbIjmAW2Vb$)v}X_mO#o zyj%RO#^n%=0Akq&;lp$`h3_lSqI~`E%`U9yDET$Fqy}4X@X)FKGRL}QR?YB^%LVW6 z*dx37VWvgUS1zoB@-LDn-s0e*(%M=2y<9`{^uK@Kuwy?X5so5))sS4)e;L4VOycf` z1*U1N!G)#3QCI@jZdqOEd1bG}g)JIwdZq*9D2V!<{ypRXs`s0N&BlOAEb-&yR3~#-h&KW$hcE9DRU68lmjx6avmz7U!*m1{*rcRv$ z`6}9J%;J5Pxf!)$Wr7;c9~VPro3&_pM0#!(>yxA6=T`jLa{i*{mkF3<~3-vxlimyn^R_lIa zgg?9~>&~(r9Q}y`kD>3UJF;P9!epOeT)kYDTEAOdBrrSE%9MR;ZLQc4ydG+5VI(E0IP~@@M1u)Wz3^l%b^?O z)93+M$$yS2g6Mwk&(>Vf-S6q1Zja+ZI7e@gms%A70;_!ABLD@pFvcPCc~2KC$oP>8 zooHD46s{9Q7xNzJGg#Q=I1kP1aGd1%BNbV78Y3bexx%S8#M2Ip3#7gI7i=la7Co^a znr`FZ9PY!>$Q+ygVrO#rAS)0jCm+5u4DF*3*XdN=pC!>5mrWTbFm94K8~3%HUg?-? z3q=U=}$Ef+Rj3-9y^Gm91gTdCj2VBsT)ZuIq z&avrmewqmwo%S>e{=n6zB5;V?QGywiV_4?=6D%i{A@K~F#vH$3##p;#J_YV->xb{> zG-)MDt;^2sxiwRaP^z?WZ2M&uFWFOtCXK}{p^vdy8>)l@KgeveiDdNZ6fe&yb-9}) zQ{Fm+1*Z;DD0U9^E4uaA(+%VG$518!E$Jh8`wLDu%nOZ|(`GuWF_R5xcRJ3Sg8h1l zFk-e{{Fj;pR4RPOnsNhSvTSWeT8qnbh?eO-dBVThkAbU6)Th!2mV^1~7R919oS=lNrbB8)9n}$AQd{AG9nH`103BdC zFZ>rC;1R$-Zt}&>az4(K8;766BVhYF1VWU3#lOgOXR%$A{*h% z&mUqRO-HEH zvTqhN^3$-s#x$K{jK!UJcyus}(ugA&0+9L70x`XI>bOv3)jKcD6ddvJ&o9J8&dR@eWw7HX|hjsN3dewcRFOglIPYsH!=6qW>4$zcApj{tEI~SiH9{toaX9|DE z#dtrTku4I|(g-VqFkDDiI^n8de|2_pAd*;Tvxm1t58VCtdno`?+2-u>Tq$UBnj$F$ zWaF&jvteRH!5nBBdUW(~e~*rH*`V%zPCb~-8!DEWkYAS0U`q>Oq{)nz0#hH96J=4t zvht?EZ+mNdTX7;>v`WuCuU>*yO?RH`j|Y3@PuSRCdYUzl{WqUhWO`)yj7b3862!S^ z?~D&e%tX4g)7j|ZV`!Skm_XFlLZ5+tD;ys+8<2Z}z{pjbV+C(wdOp~xzBtA3dQr?@^!PoXJbW$h?1}4J z&c0U12d{SLUZut>k%n=emG;x{ubi>=%+Yzrg%GWMlwgej=AR0@`qY0^Q13Fz`6}vr z6o$2jGxF*u;I9Ky(7ab@vzERGBK_=__r5)CAjGv@aTa3>bis=s$@Ni#9a``BSjq46 z>j;0u=gF3wk>>TWERPG}Kb3>VoNxq&)styD`l;2;4V}2_GHo`+Uxt=|n7{6-y7IO>C#hH0R9k6dMV5 zz`3uyygol7do})ZBv^|$Sv(Myq7L^l)>WM7)&D|#ftL`$e{RI-E%QFN@+*dt!yj~U z*5bF=zPhz(gyHpQ31TLGC|sXECVO>kQM6mwE0`@$ZNo)**lL9=8b4}fY{S`Iug}m z>g{`t(9F?^3*L1uq%$E2WjV9VcvfVPw1>tuWZvEX!lkVzf1=OFx-^b!F4X(^e&zcr zKu7QgxOy~?^J#E3@!tejyJ>)yy8tSJtz{e#p!79ENU5x)g46dMvsjD$YS?qujx&^S zbLjV_d#ZxO=|3@oU&ZT@*=-!t*@RI;Xw^EVw^yX~VLn+b6aIS5Hi(15l2-B+aj2@p z`8lEz>mxyE5y3H?kuA*H3xh17xyv$t)myXMveN(|E7UFEsDj`R@`;US7H!FMzS7+l z`(Exo%jvMau2;HG#AXi}V@jY%GmOKTUmVhLNQ>IAO9UZr{H6pY6H*22{h9^4BsmEO zDs1Lp(GYY`3kgGAfadrv~LzYq6w1hbmLD zcM{Y?0O~NHcOe=?O0P+i9bvCBlfHd!Q33eGK^aaj0Zu#HV1ba8Vy>+}pXfNlGxf?+ z+fu+z2cJtV`&(LuACL)of4T2tObiM$M&aT zonW#62Xn>kcAxBofgOm;b@oQPe{}UBj?=H$%;|Y`5$lJcl_~)kJdix{g-}jexVvsc zqzP0vU+`1Jez-F`e9MmoNO4^}OGD$*QY~WQI`ndfVae{cei#a@4ffj0Z|TzefHKXI zSc;WHYq)x$xOq5nbhyZP71&G%&dpM4R&Y&A*@OKkDA(1+2Ue+(JN^wV{M&zw_jVlpXm8=D%)})Ls-ti)O84DyM%-d5dq+Ap+O1^c&4U0Nc;VWt1J3-vc9GH&@#cv zy@KW_+t>?F7#jfeI`kWp8u9@lCA&RSYHtZEdr4)RoEp;F-P@Q%24WeXe+6CuDgg)n z*}&^cuC2f+U6T6cVP96@7V$7N@%Ze1=wN{9kQTVI4;21ZfMI;4dxsK-nKp zfEe>*z~%-DZl!3IZ#~T%0XLDX18|zrX&_+$k>|)+5e%-h#7%0<2_~RqTlNi?tYpaw z3yr5DEtffFQWg%C(nzwNw-|Z6={AXg8+K5m6647G1NvArH8qV#j)9(H2&E}h+E#D` zHfw<97|XEIe!hGdtQ|RD7&1!;gRvZk-<;27SeCay&D72=z#?JHk1V-#DGBCiNTP3) z)#3hO8B4?3GbMdOW`ylw~! zLxC=yCrSjmICQi|f^~5S71XcyVbNa-xa@}nhUmn5p1Umf@=d=8YbAO=K@*NEQ(C|6 z{ddO&4iWU+-~$MJi!Ll|xd;H3gl}KNO!YS*`}v`TxY^Y!?YEzy{h+^1Q44Ni;1Ru) zA#90~Uh^xdgT@FFz*XD^SFvI*iHQp8!5|TIFepzl8GXz_} z=Xs;7Y`IM9r}XoH%@KtK1v==u4#-Sd98E2cyo-JC)<>*#Jj$g-T5quIcysJH1~>|J z3U6U>w$kJx(^Q_lpKt5o*wtkf&<7?=F~o2$r{|1R5BhY+8)US2RkdRcjg3V$ZoUUw zald6B_L8Tn_(a+M{gAWvozjRKDcerr?rdwGVxaK%ElV5F-aYn=>3*eI8P<7|+p`I( z`2%3G1XE=tiA_j(dF`bYk|sZTV5GvK1P-rCX|3c5$vWsYLCM{UpW6b^XykI75isc& zm%T6$JF;!<+)N8;r(a0WCIf@@MyW0lRB{0rDeqWz0VBA?DQbzHX=?$EX**Z9FuL6z zOKgYkW(Yg;t-l(a4{n0flUxd+&21sFnstJX*4DG=*nKyDfN{bG0b&l40>$DLd9`~0 zT<(A|I+>zR8tsaD=;M9|E7k03NUdCwklH&+GHmM;`0Uds_gzgMkZyn=HPZtWyu)kq zpTkO_my7vB=OARQN+EV}Sh6H5GNtD<#y3bX_z)~2Nr@Mn%#X0x=yJ!WvOCfVmyt&6uN$-(gfkC_9}E+u;~JJHe>900C+i)e#2{^ z$j!MMk{+xcXcNK&zHUuG3qWMLf!woHe!7`F#4=Ti05%FXf08tirQ%b!60F8yv7jt6 zvf2s9lL@oVu`I1hAVYwd!;f@RwgQy&L2qQ-?=9nMAR)|VOnKu}SW@4%NJ;$3wRxR@ zgI}M}GgJ`B>At*ed*KOe(E7_<$i2$}yc@sISc{V)u!9F;8|jbT1!$0WYtQhN32a|N{n&>$=)cf`xqrr_MYvJ(1`-m%(TR?=xasMt&&1b09W$Qh zK00&3f=t|`=mj{o^U@Q8PH%cV>FL=21)Xbn>hP*j$#Fac8~v!#K1LA(Hapz-U5K?? zNid&jv{DP~J~+&&gv6({c<2QK&Lfy&1;+S}p#|F(jsTf}X_`T)7Xf9RZv z$fJtJL1{Xg6J7Qz$~8L8VvrFKvqt?zTo63YgN7!3HO7l}7D*P+UqvOpUV&(!iuS`8 znX_GK^xTc{rcBOFcRL~&aKFswyk0@shv_e(h4*M*FsL_1evyEmTo<9&Zny`c2Ak77 zdQdTPp`3P)Y+3?%bmuvA$27p~F@jOke&=~~h!~piH|O09Tg?dW{MCcblhJdL4Cl>K4s65^I0J_mnn?zT3d{ydvo?#Y02gcnz^xbRY3o>s=C(&iM9~0CMF_fP| z4KFqv(XtrxQLmG85!!Ea^rG_y(cMGNz2jugqqP-8TkN?WaE~J?fDVt_-qwsjbo+H$ z@FcOFu}aOuZt&3)av7>>q^)s%!dd^S0tGkGrjBv=D%V!`4sze;H6I-7#hLxTn+XSX6f>p56&O874mdOT>*$O%;%oi1i*v*q3EFa( z|Jy|#C?B=a7LHcHe&3ym{^wKmE<63O?MLd^lXO6|VYgENI-~ZOG6U*G)B>xiU7C?= z%lfRvl=LW^@o?X0CK@$S{7RYYbXpW3_NY@kilQ^Za_oP;g5!axmvH2_A|*(ZkFW%v zdJgOOqd&T=1}^d@Uz7Sow?6sjO5$hy7VGRIWzW=Vsdvz-`^;Bdw@s}ZH7Gz5!aAoTyW1Z!xH(Dc%7+_o{_=@=fq!SS{ z+d~C78N65aAYIy=CA{7%>0t=&qzi6BbEsXpsVL0YlP{!-)xtjoU+f%g$(5N&Oy?`b z5gjEp>vo1|4-waizdijF_C!NZYUdopD1q-+E*;8KCihA$yGAV$)N2qGMCfr+9EzAq z`;2fb#a3y9usrzZAM)Po<(L2?fc1=TKTeDqVe#ru;V2A6S3h^%G@C!>0%0<)V4x|8 ziF2uxRR3z_!0Bj1mb7=ZQ9TT(%ArL(>cM#JU$&St+2&p$Zad-J25Da`rw4c}c{Xt6 z4KD+)@j4U#O7HnVPy`a?2VD5T_I&z(tp4-G+2Cxo`h%IK@^BZX-UvavG}R&7d|zf$ zsL9W3&(-v3#CiU-B03Wj#{&)my-l40lB$d7_<6?{2r3Y|M^@lx*K!pp@|&4C3HJPY zkS(r~S=JGH&RRqcuev&psBPROBMp8x=1TItC)%UKQUCv;cSE)7s zED!sv0wWcB>V&3@j0sV>H4wK36ejAXh};jx#uW3N0t5Ah7-W#1n4e{7R+@96Hz%UH z+j&<_C;3V85c4rLRYOY7pyY-KX=93{;CuAS-#sVMw^pFEZ^rw-hQpp!LZBAqPy;-& zv$&)j8ss@8OEg#WS?!_ZPzF_tnI+gf*G{!|%QTl{z}hy@R8`G56$rBe^r+xH=A?Pd zl==#6Mtk5XG6w2QUAQp|>K5WY@CjlZ?6R9}qT$VT(Uun6*CJ82pVyz}$W$q8MFjFhUsdu0Q zl@W(Fb-7Loif_1kR{;%cKG`G}l%3|YO*<7`XSl#v6Z*c#HJ?>4I_d}s<+lkNsiYQ* zH{G3ZiSF*#(kSbW87Nj?AL;Cgg+I~m(7otJ=%)V-KwtgPr}w)8LM;dz5zpT-CYwH) z#G+WatwWvqKvklIxD@)zQ}xg(GK%-T=hQ}DOu`Q^D7W?15%(hmz2G1I%z~N8t@wbj z$!@|jpQZZ|_t+Z@I;Q0U54t?K8Ad^LYc{lpl=s}~2?JsI(kJD1db6Oe2)BMQQQ)0m z-J31vi>r3>cn)TNc={gv<5S1wmH<19FDj`JeLS~Fd028|DFNJ-UPyGE zej;LaP&^K@dmL_2@>h_Ef#OK5H8rU-ARXgM-{T;R_2;%Fn^&t#wC7@hJOF@l$hrV+ z&KD}}*FMBpK&>@7{8R_lSyOJ)UR47ow_AW@`Dq<-CMwm!PmpfAT0=8Da~fc$_%>6Av?d2bIb0f0oa zpX9D(wA(_sqK*G>XFc2Tb%0Rg|3Syso$dpjs1tNgH1D$Gn5Wyn#D8x8+L|KC0iRS; zdVk*zcK;9jqwV+i>PO?lhio>F3lQ;*Inx=IFZrCk$*K@SFDF`32ve49Adua%R5|8? zTPg^OegVQaC-s*I35f+Rcns)SBJGU%eBY7E#d4x-kz8I?^@3(8M}Gih(k`lC@}`Jw z!y)20Byx;B>R~ho;z50C_oOFmqSdx%XlhLnb`>{Xtbbo|g=Cv|gL|FvcH!^-iL<&ffT6ADZ+nPK#H8 z`*X4p%f*<~*Zhu)YRh@95fF~2gROsODi>eI;KTU0hIJ1 zPyjfIt=F4n8W*J%Vt(?l{>A_ph##t7>gzjY-p4YYs(qscgCcXb!R>`Qx4C?!T~3lE zGo@!Qj(s-Rn=1}Wm|FKv*x<2X0*vbT zd%J$#UaEUIntUK`8hk&kJeVW{!qkEf@&PEC1Ml=VH z9i#EsEr8^+ChesM^`cb)o+tnM@GFH*pma^tiG`Ip?9M9e>afA>dwL5*MMa!1>hk`! z_I&M8i=??x(A3Q5=t0>Ker{Vy=ZW%?#$rJ&jP?%?`UMPQ^;Aq%(;%AjEqz+}Gmq}+ zFJz9vsDQs&By}kQ#k!K4={Q@bmq!gVH-LbI-LX_UfJtzm{IVeBRgcLpVKr&f?y@pr ztB=%l=bLrF5m;Nic1h6ev!67dV*Il(1q4le$m9bk&!hXv9HiOg?u$fhm+d<`Zl8Yf znxkvk6@Ito&cZ;Ppze~8cx6g$83Zh@-#Eyo@w_t=W7kfKnvy;m zF7W7Qqt2o^tDIkPy%&0Z6ePm&LGe>)Hzph->zO1F#BY}?`RdovNckU%d16!XJ|jX80rwF|A8PSO3UQD6}dI7Fv`fm zO-t?AI*JD+!u}LRs)x{~#U8%XpEclSP#TCi3!(NT{k)brUA_%`w@52@n(CMwZbS0# zTz#A{WEFj8a(ZDLq!7?r{s*q!N%Sohh^1z{53!3 zYu~A^x1TuMAQt00rc8?^tRX^uq`Jsry}f#g+MLZx1spfpwAFpGV_$0snl{UE5}NfE z3~G6usP$Eb&(p5nYPO0@w7Yt}X)1fb=Lhy90NjSm{p1;-mUZb=!TsEqo$StL{PHV( z7OBohE$v-jS0g4+T}sE9U9A@Zrk4+pKMHQ;3P>a}EK+M;&euK&4tH%wLWKeR;akMQ z=Vs-i6O+#ZFGhSqy-C=MdWRz2}8dDyW)H*v;agMT5M^ zG^P2}KQqj=vFDTA4Jkz^r3|GMg#i488s5zAT0;Os_L5q~8s4NF1w2zUoF3c=$LIN1MRKJ9y*v&X%*$UB^l{@J}}?6b{kgmZHNQd0b1SvZn?kX{g`DmEB#t zN9L1qDBT9Ifm(==kC>D3-uf=5#LlRcaV;=_q-{Hy_}xHBJG;eE(XJ~}vPhdUu3@(9 z!Ey(1&e7gpS3NY8qeyCBQ3t^-X(*{E0u!XB$=l}#+uU2=nxeg*Uyie{i+Zar$xN}t z@IJN4IiCXK+pu~t8Lvv6$0{|yH zXwqbW^Rd3i(;owRxDaLknKsoKYnUGXyQvBd;uQb8Q+BC6D28w??u zBU4M$rEVMjAa&4sj6^Fl1|>wO?wQgE zm~rK>8z+2)rv}d`cb&W#oqWJ)w`6>Z8Jdj>lS za>DghqYBME4ZoMaR=5<_f2}<=Ank1eQzpPSf^i^UjJkO2Pj#E?YT`lD>99y%hvMF4 zc!mPK5Qn?b;GQH~0zwNN`l) z-UXV&98d~lXZjWZ7sFBEn3iyjUMwlNMnPY?c`AgHIP8X-H#@A!8AO@`;`ITkIGy5< zXC2l~--smdM+rdT*;OoQjGkRz&DSjIJFePnu1ARvMb=iO?vxNmYu6E`NKUT{2Y|{0$2f!g zWwnOp9kn!>1q`ddr8kE@8_Wf`jj*lYF~yw9bavkxK^Cl(C$N&XJyLG9{gckHfGH>iZ1xDjcYDBHJP581n}VE1ck+OIZoigK+>U z=V6(0m}Ec913Uwj7#pws4uB5p0ko{)vurf3`7}rK4VdOyVZ`|Yr#74xdv{HENSm#L zQj+ufVT?rt#vpG9lH<~$nxXwHqQu%;QdK-mo*JE%>_=&Pyrv>fjMFD{7Y8)oz|3Nd zxI&%LvAN^D2=0&b`+q!FaQe&Xt0KWEC$A_cZ=7?w$dPof@M*#G~OIc()S?-Lzk5TD5eO!Ttr(0 zp}Xq0vQl*k@3q6169r1GL*ZDO7s}V(2G30CniU%&N&(}E?}eYEdUOxhZ95~+uIR+;mjE_ZoU7Kgo713 zm}PqwH9Dlh{5&k7@9jE$$;Qj+n-*v7)X+a~-`#yrfP;EmhEZjr*VM3#7t1c3s$4W$ zizX%>ve=cM*qnN5t4_EG>}{8lI9Ud3uRW?hyBbD`u)t-PlH@M6nQ6!Uf?A<|9+n|h z+%_uJ`18Rj6@Cj^q`-9bD8`y9cHhOW}2g>&giuN?T?&; zKk^+2O_O3nD|P(Hk)8EjLYzW0z=t{+{>ZIYd{$>QJ%3A zAhxfqf8ohwnG(Tn$JbC{;M)aBaOm-O#rvLj^7Fn}-!@G=uyDe-v6&Z2pF`YJv`OMO ztDQaR_DzDaG%%?>#M{1kdgg>Z&msAnj?T`Qm8(UH3+^)~j2;#^O0r|4VodZ!&RD0+ zl09Ri85pxe!$o_$pVsN4invq8{Nr|<&N5u#C+vSxsrV(f{rKs$$B-WS#m>-`*4{1f zAj~VS>iTd*Wzt6#`s5C7@VfJL(}88`Lj92pH(-04<;zI87t zxfz&W*Pd^^$C9p)q68@Q7#j<)q8A4?7U>VPH0b-R1Cbz^XX+ zQg#p9DNAbngnfI8GPPfL6BH~@a3ydTPDJ1hcI8i*NO?S=2W`Y8;jq%XcYoZ1t@X0o zS+ebKTA7!^*2XNi%>;b*3HTb12}Fmeu}?MwfXO76lLHoYB6 ztWsS!EeGgd-Z}f2pM-iRd&Sy;J5%%Y+uzSW z_|B&lc4$7H)gSbWlvyk#vkdDH`L1&SUJN+VjA+#qhL7`wLdmr)sAa;W$<9NYS*~G7 z^R0)s#{^6&CDpbrZcxU1y_-6OnY1z=?|AcNo*60!omGCj!pH%&?p)mlV&wCu&W!Hy z2!p%euRvi_Q_XM%l;VB_*E*9mj6B|Q@#P%WW&or6Yq=#PNf#wRhSW1i6Ya5j1a$Pu3u75RL6&Dfy@@xvcw*67(1lWluXFA2 z7jxzzlptl+v~#T74|z zs9IeORUa{g&*J#mJ+a;WfEQjoT5@J{PG0h^|Wmk{vZg0I|KSMz8vg_YI0n z8uS-I3K5Xy3_ow%4qRHYnakx=0gG(Y>`fU@~x86K5ft23y}zehw8 zzLba~=sms5a|9O7kIq4rZ(_#@e(o&Sb~?Y^`3l7P<;wcf@uau}Qh@qq%e0#@+ewvO zEO*RE9RkDfGW84H_zMmcS;D|}rnFOjfa<$*lwLoyMKr8cChp!nv{Py62Fuu}9nnA; zRZy{=f$IZ93_=qqYw7smG%lD^_vBPI%k)h!jzFx~B``OmmH%*Ig~F2+`KF63bAiZm zy#Mr(9FG1xGf5eojHg9Pvz|j0aj75eTlg{9v`=I`8w@c?=G@HSLtfJZOb;1zQ7+G- zh-3)0F;q*etPSXSA6-$aYO_)kg{7QOL=<2BiSJ7PP^qgtPKBZ)FHzag+>< zF>|9#IJmv2%aoLFNYOWY=^@N_v+n42Ll` z#3mM!a$=xP))PYX%Vj;wg%DuYT_IFMTkYTeBoS=$s}-F+jZ#DPKKS|^iDG2RbRb^Rwe*7jQ$j(!RGN{~;vR%X=K} z70mrKXV~lDf6c7jJQ-={FnrM~aURYuI>I1VuV}b3Y8$+%yHx*moD9;J%(&ci5=!hv z{k17jK)H6r)yoA2s>som6N*;31WbG`yZUVNemL`ROc0E0Nj+%ykgIo8RfiDYICXfY zZb+s=2pk&{A^Z)|ARGuxa^x=IZ-s<5CejF4g6k;~WtKr;sE}#WAr|IzX?kkM66jYM zS=IriwH8hbrA?p7?b*UY1>TO{sOL+@R9ZZ``^$LWIbTKVXC|fr_7!5*fxW@n-M=>{ zQ3!6z0l;uZQz*r8-hfBt0{`H8TGfo~} zi&pizytsCJb~PVjitU9hj61+2+lG?NpJ}@Q2qA2!hrD zOs9Od^w+~NTNh<)w%lb|3mbPy7(m#|#Jf{2MsylBAw`6j$u( zy>h=r(!WGHusZwyVeZWXnmW_=f06)ESt7CuLR{L?)@rmas4S`Nw2pO@cAP1#3(;}Z zDr!Vjwj>AZtF(1AwN#&0l+>{;wN@i;0f8J8l`0~xAOZ=C>`MY6d(Jt(`w6(znfHCa z-}n3e@%yV5LO7h9bDrnE@9X+p5_`Dheq8mEe6VR2`2GygoqR1UE2Yi|FSxmS@EGz=`%ECD+{*b%&&`z{36{Ea*_UNoD31NuXHY^Y|r1-c-uuFc`Wt1_c z_XsALPD@JYOH?>EL8OZzYW<}1e!XVwPEAfzMPLsygcO|!pTL6NMwm0I*nKw9I|?mF zK9kwL9(76p3b8VtB_$t*$Y$>-TBnGIEM%9rUb|xqb*?g_Vt2UU(28g4j1?VLaNiC1 z`q;4tv;GA1fWD{=ipawB&VjyRed944XPoHGr)(XUt_P==c;Qz)i#e&3_kbM>Zo;r} zlOv(q0`sy{Co=q^a^b5OMP#V9|2()-h3xJ#t*uKh->K}nI0D|FKHY5XIZ}akke-47 zya7!77Dun7K8%64x!=+3)ATNyw8V4lEW@;Y_@>6yOw=O>J0A8;il6@HqUWMG;-{n7BOVjk#5we8s{cgZo)tJbwi5k-Az1I4(1}Z)qh}Wl z8!UM$*Ui+eHRQCx6cpB)BA2fLlKUBV7Cbba)q1KAIPpO(a)q;Xc`=lssf*B^IQH0o z`<|nVTn0mD4HMu^Q}5s?;I?y^|Kq%+r$&5_o8Xi@(EwF-lUVA-oZO^tc_eb2R6-!g zQ{oTvQG|9&kASYKMo05Ffo#F+82 z`~PXRqBA6r{kb}QfT9RQSn}tK5=ido!aeaK`>o)lIvpraVl|y!!tDji3`#TTXTrtC z-TXq7QRfqcKIrsu1#h77`5}q$GR}s}F0!83?fQnis^)7P_jCT{b5+SoK=W?6PCmx9 zh&9%PB}%V|>0ie6@f)AcTG-Cl;E3oYtxwrNjv3z%&dGj4DdL@ha)x!+EqxjVT50hJxK z>W*9-&apJD{6XA)+XA_JF*;nB8JBAed(n>1*o)EENv;9t1BoXWBq%Tb z;w|K05!Qq!AY)hz8W-#z$X{9;vdmNsOEe~`YPG_;+DM7cOze5`T3nF5S_1ve7fGk( zI5h=iI!2*&ox&i)6F)neddu4vy+4gTo2}Mi9&W&Jl8e32Mt&Ql;c|AdD6}%q!ym=` z-Nz%S;f%<-OZc^g(ptM>Ex#$(olLBO)G7w)8r}G=6l@I9hc`IBZpx21=EAHGw~s~w zqk9m?nC3utz8da_m?)po{%|$^?oF)6v`iuT;8nJtA2g;38vw0Wi}b~4yP4mAJ0t@Y zpXP)K(r;wxEFihsO+Y-&!o`KKq1Vy2*A&!i+Wy!0W+PCFbk|xPfFaS^kC1wFE0eqA ze{$#%&O`5lw0O#wq;d&Iexz8qG@)Rq0@Gulf2I8&Vw{)r)c`0iLZB2Q)JqU+ox5+y zdank+xhUf}JUu|?bI+zS&ev1t#2hqN$q8l=sARz1-<$0sYmQ^K&eSnYm0^`Y&tV0; z7d=E;9uz$?!%3>PaOu)#_Dk)nW)vBbdankEN$76xCMn_eNqz@1cQ7?}J zF~u*NG_{FrR;}T;dBRT%mPu>PvN_O1w{t~yf1!gC(y7>A?7S>&INOi!xGtELx*oJJ z=+;Cp5XAyFqzCzkhxrp&kSI*oUey7&oQ<=1fYH>LD{GBYH^JGib)E{2q%NGahZJ3( zm{@~3FaP%V?b6?tGPoWUGq&rX=`5EuL3XZ+pejiy)gQMJ%_ksRg|sao+QszXD<;!b zgqXS_rd#cVrmY^r*d(F%>n#a0M}8;I1o#?yIn>Q<%W zrZBy(SpzY#$$;`{%Os3(LcNE&!69~ByS}Q7HeHXE9Zv?KgtR$=z697QBLKY3%w0h- zq-ykPAe&GQIdUY^Ce2_X~vA5LumDA-yp9E#ar)P2?D&Etcr)LT*xfC?^5GcBYkr)!N(k+L+hm39crtTCSqIY6a&;|HNNGR_26KT0Ni~3YuPnlc zX9cW9R@pvE530UGNoTGG(k%XF=fp4u!Vdb-%>|Fo>;Z{kGK^rCf(SN-x)r$t5#6gu z14NRNe%2Y4>!tC!Y#G-Rs{i`Di_A^e#g%^Db^^?xXrj;!ps+soQq)?;Qd`iNMn z3z%+&q&Zts5kWW#QS4H0HzJ9|;j|RSy`>jbX3Kh15;j`>3fd^%u$i1Ev|KXh2$?Rz zmaCvZZnRCIA1*NdHjiCWExR1vpH z*S2+ga$w5cjVcyT-RPd9=-KN9TW$z3eeO-#)=pIzT!2(MuP#w5ZJy4OLymb$hPo>S zq*aTg)qO4s2V@sKJ@{~~AzERQ>9~Jy)m*w%EvYM`uKR(4G+bSsPE};(415RpAD7$7 zgS+wJ$^Q%09r1rw-IWYgclBEuFUNpHJt3zo8)O0JZdN@?8$(*)bSB282fIja!eyq2 z=}jb<`?+gcf9+DY1xhr+3`(ms_jTJU|h+qab3UavKrL^!wJ{Hjn!dv=@BasL1{Gg z_jOp*|EvznSh8T!E-va@>l%utZgmTK8pkm@s5hc3vH@aS2eix)Qd74CKly8~FD^qR zhq-|OR^6!W+m_S+xK`MBO#M^U<<$iBLpW>s$>k^ObT5a|dKC;2tsPprCziP;_Uw2$ ztnYJt)yC`mMST%Wccr?$Q02x0trnA`^&%!$|<^w1IF~3~Zf0vTdh07eV4x z@as2kj@Q|_%L%G<)5VT#qA7e+LGML*N^UaSc~~&bzG|KP<0hnH#{3lMLKr!W9E=m6oz zlQmu~>}7N2NTc2^8iuAGWsfD$pppzv*-Fx8{Q6NTep$&Z{H(+yH^VABu;1VTIPddv zfa^qWmz?N&ee4%)Tfsq)*IX;6)A%i5EQvq;AdRvt6-)CnW6tU3xCCA6TbHbXdOr`Z zeIx~RswszOCqi;wFGR@k9W5fd2FP624F_3XywQ!KGXyBucEfA+Q5&@Ibcx8B?dt=F zC{Op{vr{fP|4XFEHVCS__F4}U*N=c4r}fGg@a)NW_TFD-koxi=Q56)G#1=4t4R(s1 zu$73f^ZCz%cTdon`~RNJOvi~J+~VrM-tG;iv%TtcL6M=5ypv9pWE(`7_CXRySL6|DLlqq{vaNl=RvGJ;=FElnZ^1`Y0af^hcWrqK7fUEz}?Pt@?pCji~1hxsG%YhLcWXX_!2_m0SCr|+uyf^RUe zb}&H0oR@{SlgN{#bH(~N2a8sew}2#kfD5^J zV+18z3g}MQRze7Cna6<+xvfE&q6PK8+)^TF5$T}WJXpJeeTUbdKoU<&UdMuKiMB5V z^bSzV#HKRIOi^-*A=cI%OI5+lsDvzi?v3|sC|E`SIkEx5rR_j1%~Yk8%B7HCb&2?@ zWefE{WZQ|6bdZLswFNB zI2uI3jMmb)E7;fw>7U)hmziL?b03XM;skIim$#wB)jlty{bCp4-6|I2j%_UK!zs)~{lRpv?=txvtay6eUM}U$O&PU1+Mm z-;_@!=Yt0eA~`VMt^uQbg9b!z!p07W*HOJ~pipREtZsRJ z-gI!1u$v+uPgK*#MBOikZEtjF;vo4Pm(kAo3Z9;5p#R59X9U(Sl}tO|kt4G15vE7+ z^w0(EbwaaNWBt8U(~=Zp-Xnx&eM21ZE$yfHwl^^EHyy5gqKId?t@>ocO|_|r2ZYMOz@a z_J-Wipw#t*N&eG=d+~#eaek6}0?q%`2LJ%roBwk1ouezXaiUi+0n1uuF@q#ms|m1v z^y5LH+Lj&Ddq*yvVz!@?GuHrTT4rz&5B#L;pGX3V*^(vN+bvqTj9|QQVC;iv1w^> zeZq30xdVcDOyC`ZDG{i(64xvH*9-cvXNN~Tu5irD8d|}g4_yN0*HPLr;a{;`csf=2 zHr!GzFt>@HlD!rIO)-S?$DDEyyN#N|SvUDC8tLU8$cA8p|DlS{<<+MuzUah5+>gO- z!V2sAIUA;S1wxBno;q(bEU7kl5FXb`Z|;fydvY>?6?{V@rEo|VFM+WYXAHWN;vLEw z)B~bT$40t?bP{-w=Zjs`9g)J-c~fhP^BEX~JU%{S1<*EGVf5$OG7360m^TT*lZ~tm zr+!}E$O;1qme4v)({(vhT_JElump^FFNqx>B*A-w=?f#vW)cmB#PNm0ouLc~MYqba zS<#p*F;tF;R2x4Mo0o{`DkUos-I?MwX4DbD=n;Prc4gpRUL=ThC!@SouD-7%*|5@C z#5@pEgHy-rnGm`_ZK{4Sl--bAzVlQF`c=gV4eN)AD#DUIle>7}OCb$5EFNJ8nc`jq ziF|0spS@-wQ9Wn60J0zAr^B#&XS`usys3?_nU^Gh3|F2~r;Y9b4LeWN@*utmM&=)C z2WG@F2PN)7L8%TvZePbq8Zz9O*+V`q#r{tfLiymvkUIBBNzvYuBCjpNWO0Z(QPc61h)>+?kwrKNa z6FOc>l8Xf%f0uKmjtEIhgv9seB;LhM#bGh6S(=`0@l1^k%d!3WY#y@+!ij?eOFQM#1qdxMC zhHR=WB(7lsyAkV`;r=5^<0Qb6z6Y`pv_H%@jFpi!u42M4tgM5`g1#(A`slIM%hLOI zhg4$9DUDlg9HDI|d5zKlHQIso&FK3t-Td7%{{mAdJ(~I-BLiODmcAC$HG@AfvAA== z{Uz&PTlUfWTcu^3`%B`@ka-%|uv$dl!3*67%+9eT0NVqKBu+!JnDYi>8CXwu;ev;E z?yMgJ9we1Z$zYblvmLtmtn<~}Yl#pfyBUWp{ESXN=Dhy)Hh91tUtH$bBrBcLyL?WR zQ{nbx-j(>>AT1HwgP{z7`P$K;5fkg#8zDLAIdV z&x)a0l(`s8P$zPZs*v%B3Oh5ru;)>OVvj1^F>JB=<|xI=_l4nHZNG&XDU5yyDNYo zi!u4#s&x}sMeG#B$12VK^8Y3z?1`?&sqit9btvNl$)G!(1x;0Nf>PpWC?9c&wc{?B0HB)9Th=72d?SBIwStmVoonW z2k;${mbQUBvY2&1rwtMOx@G*;bpphHh0~W-e<~dHQQg=qke&jQaT3j@A7^krK#y*{6 ziPF48`E?WZeXjaYnpT zwFJvwu&(aEL*ge8NvnN63$W@nt7_z1xDqgw$6RxvamQ5NHB)Vk!GE}C# z%C@sSdwa6ucL@oX#FYPLAY#KKlGRYF?#r#cAH$UMVg_JJ#oQ1$?qI>B3lezy1`rUJ z0As!EVU#|WXl$)&nikWMjUC~7NI05AJ7W1vn9jaNK%J2nQ5Vv8VB-jIq0_$*Q@a(8 zDzW9bwTLO!(p`A#t~`&o=T+FAUeL`WbYj93PPAc{78I|3o13oOf+KP!9pK0Vh2u)C z_7CRz7&ETQw(r|01Ij`mbMg;(w*FkBW&td5Elw@plWT;&Y%SgsXmZNK%82#|P`|hZ zxPqbSAmj%R_a|UUIYUt|Z>H;dFVQ}Fn%`d~)?ZU@HSk2R10J~7R;gq0t%GACh+R8bg9SW^nPD4_x&qy1!efv=`z(!+y-@TZ4ACVwe(&x->g~ds8LYk zT_g=$SxZRKrF6<7Cu;C*tV!1PEUy*<`5QF0{T-Nco@l6$%T&qsn?gsaLRPMF=$CFv z?Zz|)FRfmRovkKtx}b6jHLURu4a8<^oKb9p$5N@dpd}9;9)HQXhe{$i!JJK#?MN|w z*u=lUI>e{i2)bNsJ;;}VAy^7dnqihJv5p0XFJ@HPs@lZ1j7Eq!9eV;p`Q%F@Tj(7YRhJ#G7Q61td>U5fP zas8t?-bFxu7`M6qu~!K`aWvr9TdN5wlO>ltE+^r8AGThh&}5|#-?!)kc)Ct+Xcp2l z3bZgDRBo<8Xubc~_oC$RH?-`?7R#nj@hq>F)+ZO5HA|TWo~#MK7y~XECuy4A;ZyB# zG(?4qRs?+nZD^sZ13blsrNs~Cg@wi2P+dNl;+(j5M4TEG{9eoB>#K0Y0M^ohVc#tS z`nA#4`KpDBPnkWRGq^2OV>O;Crv09K)WAcB0r#l~Fc7Y1 zmE}OTLhfK{L;30#Fb0DAP+%rq1O+(sE$U^p#Ul_?zAe5)vuK?9?9baN8E1H0$ z&<2G+9uOssaT3d|yb3Ve?Mpm-@f5q{e07XPzc~Tz5Q`4eaR!Rm)<3^v;ucUOzqWL)G)h>J@V7awQctywWRIbOg2e(X(Jal z!<`uc4k6n~P3Hs{?Fk2NewY2k-R%hk^}yh=`FAJqx0PS@K-<-l==6o z*K(ty}*JCB$7+UfZr ze0`pLotW|e0QOP=*sFx+`z+RAaHTaW9;-ZU9Q7anrvV5Db6A3KEFcn=DuliE{7&+V zVL&ZN?=HlIm*U@KR#bt%E!dyW$A9xU7P>u}^^Wh|S$}%+cMY!ki~uRAQEz!3xR!{2 z05@?9P|AmHSBdU2S$nnCwlIcimGbH?1Pabn0#R$ zMPtnzgp+S0I|^fV!EvWwStvG`lqW~RaSJ<+k$~&!Ovc;AmU6Y}m}XrYN82f<8^pr4 zd*lHkv#>XPyFU#K?Avp8=|1o!ZFLqrA1&lTk_$@`BVgyGEl(4WHJ`OqznABE& zx^c-#Z{~5VjD}37wbQbO#8u7Mj+l$`sys%If5F5=I5G(a)+_J*k>LSqlqWwN2 z#&D{-`jBYt$Urv{ZS|!Q>x}QqBY^BQ+y#sO*r>M2bING5oxEBamgtM)SAJ)WLf#$R zpkWoFXseuQ(4op(EIu1rJmAXm<$yg7eSdJo7^nG3Sf_g}_F@lymB!X1vhNf&^<>~? z-=S;JR~gje^Q4x&v9hL~XQ}FsAXQy5n5sT*D~yYHB$_&Q)EsugBsBLYR*(--ne1Rc z^){6m3?Mi62}F(FenGC-(S;ISIlja?=I*#>FZwqULk|@C--f9>ccXUbiv9@haY*7d zc8VQqloyN7K8au%dJqwpogG%pECZ`x6o|^+h}M`F;szsZ7mRTvj58!#^Ou}-?=}Da z|8wrGpZzNm{LC8jiAcE{2N9{k6Iz*X%z=-?+N+~piO@(Yu>095gTov1`H=6D3LRF9 zn5YVrltf5-1wWWRY`6XU;IxKX+UXy%CM}$^XI>SrN#-zD6qCa0t zog^PUJj_^uG4fNkG8Nm__*Pm}uZ>JQj--zZi>pHx*ihbIc)px<7nY&ERqkW{Ktne0 z=3cW?CEDr$%HvK8W@CcD#U8ovf`3{p0v^|ad-9-z(g(F4yJe-?*~wKi|6Y;RuIEX z%YePQ+Ob) zik|uun4S0I#!syi6=b(#dX!!cAObFkSps} zY1(H9|CV~L>CNzxXB3WmS3I_1SRY>>rl_Rob~CfD{3-ck#j-;`fw}Bfi1^}~qy$#c z&GP6@+?z-Zlc)A&y1-)MRgxC1?#m``EKkm%VDfpEC#e*qP!VZYod^}||G_>oR_PSS z4FNq>j}c=!D0Hz6P9+@cSI(O00C&B*WXi8Hh{GFZfyk&E8}JDyW?-XBZ3*t6I6C-LDUNr? zouf|tJWzu_`C1SJuz?xF;OOq&z!nZH7Uk#7#zF8RM@O>=dvHLq`gaTh;Y4*#<=HTw zZQX|R6Vd*M9RGz-t2>E$i-o48nBKvt`IdwC9`567=?h{@$GSrqxWEzL8vwCoNLlO# z5(ZF>kwu2C<>}OGgID4csW3yKM1M}myIJA#XqeM18mj)vU%+X^|BOj%Tg}VcV6=M? z_jterGAmvC?uz2D!c#egV#Gb2s>T$(;8DC6aC}>8oHIU8oXaSyO8n%tU2CVJ{fWau zh%7Fq#L526*be?);Nx6YTJ%R&WkZ=7ij(l%AO=sWZ)}`=`ePv60S|R2q--xboNqD% z`cu}KtHvUlY1*Fp7+-+vwI$2?fi$TE#H5T~P;@1M27ppGkGdV0f#caA(T-?ao6zN| zU#K03*mKp?+gnW7RV4NEyyCmfd?vHxZ+R7*C`Y5fFqorO^{9S(ZF9b2V{cqSB`2zV zuD}HP*qwkYr9jbJ0n$~i4YFRPAh1=;Sy+1O)^WaNN9DSWu0x;?cw&g>Z0{bx6}j4) zO|*aKIW1xcze)tXj&>a6`kvJ(Z?LBEsP^QBGkEG}*YhlQb&egCMLLZKzAtfw(7B=N zN&3{#9V42W)u4Qt-EszL)7=BILQijje`oDK{r*SKkMBhNE%A+0u^66D(OOx3oI_t; z+_Wm=R2Sd+TO8Q-Y%_B1VR^8lS4X#(N$ZkH%O3I?JZr0y>wnb+mhiy_so7G#stnyp z^!FpwA{W9j1ZX?sZ1+66M+dmz;*dI`wF2&Kzd-gRo|4HVEXA1g)@V%y>{~V{y2Osp z1Sy$Zq2(%JMPz8ZeKxo*9A_~=F8*{@xRQ{YEr&tK9Lv;esr`HR9)Zo7py3Q0l!!VP zo9=xK#9+dxl(Y{OH%J!}BQUTXI~^ugZv zj%cm9A|rz6s+M#v?sdRGwHdGI?3k9tvd4!KHnBjn*ORZUEv_%Cmzo#Dy{lPu=o+-L zZeq5}a(Lcv%5PkW`%IG7o0HJ@N4Vo&TK2+M0d=~fVIDECAYYqaT-{cDb*ZEs$v+?I z?*<(&QiO_*a7Ryv9Gc&}BBHuMB$^Gue5+%$Kc7EwzWL0b->1`#k_fsXInzN>7Z`@4Y%N0KsjbAsjw!y9IB1kf`Q_!E5dj@;?fBTF8GFdftJ1;ce z_s7IZ{=dmT+Kn1yG%zs>Yh%y|C;QJ_LPlWF^aKVZp}&#D!@V`RV7rh4-w^ z!z^z(6j&ptZYxP+w!{G+-s2}72Io^7_~5wa5%sLriq9`IxCqU}GlsPt8b1zAm-67^$B|nlCE*$H8eL z|2`(S(t1vuPQ}@8tJ3eqrWD6f-^;D1mHE)lazp}nT0}k25$5{XmUk}@078O2Hv`)> zf6F}~wF_4Hz2Px^vG@;s?pxb zc;JxWk^;B4MWeIqntA@gdMfM0!Q15Dg3@5_O1 zFj@+CpreG_%WmMK8s&nv{mS_#Hy)gUyZ=0B*J49L_MMl!d|$T(3uf$f>MO9RjBnG2 z;DHAL2A}~@gDJpdb4q8u21Nmbn2+3oIDm9TKEHD2aH^NkSw1_*afJ{QEpKac0x3Y( zmrSD_bs(i~FN+C6M~`{>dDB0>)38)chdWr#@R3)`!5*!4v<%CH!tJMwm)_9IZVL)rF z{jj-^-o3cw3*Sii8wpikI{@%}fdC9rUj=28+kO@ow;tjqlB(;ISr1sjdeDZ5IlEU{ z4u~A98Zej4*`;l0Xjf@_+{#%IR@ib&cdY!FGKraydT^gqh>aidQ&UnvWkrX;`c8a0 zCNqvOs?v`|qzQ+fsPegJqd$lL!X7Bl<$rMx#4h>2-vc?NOVnoq<}?V2F)j^va5ah0 zM)rz0tkDYDK>w}N={Fk_75%-ri@?&Qq^&%OPCyu{sVi8L=W=0((td+)y(hF~@~l6r z2uQ@fuLIdmW?WQ~p=aSMmEEQsmGnnj%c%LQsz z*Z{5)?>$@}2ZESFybY?}c7U7muvBdOOklqaW@SK2$qcv{ajI#gLj9!NyilQ<+Njmv zyEmPMH>%p7I?800h<%EOvbJQRG&!Zszq-(5Tl_+E&yIu#*dgzQ$A+Z?0pjozD)13N zDqN4fxDgAlx}}9hA7FG_M{nV+&`9+*J7gOJdoaez$FiW*- z)wPAvS5}08D9&@NTP21(qwh;S0s|qFn}_$N+!RZx2oH*Y8T{*c$hc2&_getL;C8%A zAUfc&86j)7Yph3v+YaqMa%8bk&r#faGz?^Agl_s?4A9=%{jdXs_O-~db zQ=EfzGG z0`myDwGY(Ir<8Ij;30v1A6?l2Bj#8cg_wb}YCR|3))Ho&02_0uwqi}F9{0j{(uaGS zr@Y&qCop|wSSz5e$Q`dt+2>oiYGzjkezr>5OE*0}gNKbN1Rh2LmC$qvub7T{EuDm` z-#$uf+(Q@xVq6xzSIWs-T}27n$|p05AhfC1V+`WG;kT9T@;&-$tnVT2 zpbiYcLQ?kt;$65vfMGNO!`(KM$%HPVz+eK*bQZZfI5#t@`x+MD7692MqJB$HtfO5V zpIi!FOl5@Za`Psz5zv<(JqRS=TpLBb+Vsj@nA*nMOnK#sFSa~VSng5e*mz$Oa{`VU;}6WCyblWde-ihtj}j^eei7U{JMjWUI~xpV z1a|kVg!}<6GkZLiZ=tB^UgJ>Z4)^r;wsod_)4+(vEHR(YIfr=(5ndOZp*8@0hVbKZ{bICI_^7A)6 z%WF359NOcB!*~Fv>&^jT*Awu-^lUQ-v&fvcv6yQ%JQ1!YeGOlOH(;egsTt}trnK98 z!L;I7Ff*bp8|wA&b+9`oq1ASY{KH+?DYfY|sOZ?t%p7Q%$H$~n@ z;lV5+5f@xGV`x{?23|SlFouyi31l#=U;#Rjetc4+UsZi#hn;%#6r(nQ@qW%|!TajJ z^j66A3D0N(FIX#9U~h$FPb_rO{u^%v2S&b3BR&>|#j;kjNPH@v@dO4923inVoItH!$ zV)zduxjXs2M!SNm;4Es$9p(25>@A@UXSXWo;&tmw zuo>Hl_m zdggMG2(QeT#!Xri2osD5PNTH%<~bT6&Lq7^mt8zi9@CG@er^9ok)c^=j0TNU#X-Cd z*Hz9zqKPd3Na@3QWHWA!tIO=_ngwL{1fHx*nE?tBc&vH5Xia;C^*@=cBGXX}CXJId z%AJ6`hmSNaXe7J=0nj1sAKEhsn@5ByK+!i}JFq}#&eR!cF-$vb7ITU=BE18~8a+Tm zmRv&8cHGUDbVWEGt7N6I6>XG`GKm-{ab+i43T5qQMw(C+ry4>tyf2a+l#7 zz8#K;eot(>fn664sAg!j&ZO#`$hyP!TTReyqyuc2M!xYwZCb?)UXx7q);~s7u|_NG z9a?wKQa#u-%1UA#zlpJUzY%O1XVZQuX9f3zionhW(JE-8#x;N>B3s*eGNxazzl+Fi z?x8610Gt2fzSZUM|Kh&YE#v=W-#YBcz7^GjE{A}j<4TaFVYv_PqZT(q|2AaPtYVUI z1qyV57EE8wF)j76M>ODYq6~bCMntzN?O))n32Ot#i3iRl26+7b55>$G0rNB7wb}NG zt)o}r7PV6%a`x=f_VWerOgt%{UM?AS1syN-=33v%H-Ii(km5#~|Y zoubp znR@8CUMB!5O@mS2D(D-fwBmNEaNr%0i#y<|0SL~9QQU`Hd;$aIgoBS$PZ5?i$vZn1N&39p%tAp?gb(4GTyEH^ub=D(Kx5rlu59uyB6f1$Ld@ITSJ6(Z>v4DOXV7cgmG!|@ z2g;;5K5S(&;_Zf4oPJ~2tElIF)>m9&0%S}mjp*nO-W$kqm(@Jm&h<(`S^%}e24K(-d5kZ58T%C?~ ztoI6Hb2HGT&v;YWE-C24?;-r^gI7lRvR(d&K2#11;?fV`w31b5Kka=A?W8&WZ1EO! z$J6~3hgv!ki9Tdq%^JJNm92e@-V(ww|BdbTIoBwj3j@~kXl}{yuEAdwk&31k`F63j zY*hId*3Y2|rU1^;xA@8!+{ZI7!8LAc(OT!gS^eNk4j*;zahu7%vHC)$aaOi@+03Wx zG-1vUAd8jHW{HgYmFn$izo z0C^+6AZCIntIJiD@97pf3yuA4`1lB1u0W_FmM=T680>PvSIn+aPbCjV<{?b{;1c`C z4^EXA{{5exfW7R7QuD?i-=zBoF^H{nx|JLsys9D<%qzVf~4f62Lyk9 zlrVSE@-n#ijmo}q(y$G`tDkt_5PvWth1o(vl?Df5Lw~H3<6kn4rOL@*XM3xvXK=Km z0{-1QjZasNTk3g$jb8Qh_e0(h{v!^a9U0(C9C1RTecXbL!qSd=)h|R1V$IgnvyB?A zpT7`GzTr~|da7RgE2C58d9xm~5LwRhK+2cc9v>LV3ZPa*Kl$A7Ng{C>nCtxTfP($r zml0_dyx*5+X_ubfcTEt4R{Hd(Y2xf$W;_eMao=P38`Chz&BE_E6YJG$?65P@y*&<-pf#Njz`E}bFI&e>c6{#9pNud7Rb6} z#!)FQdUPUmOlY5SAQ}cq;Ue=k)HPJB4XIqn3UoA_Gy7G*3~8y4#OL#th3S<838X1n zr}qx8?t1y@#xk)EyzY8-CFGaKTiTEo9gLA;MWk~Cx~VX=n8SCl?kTa4qM)q#la=6=ftiu7B@J-dm; zFp^1t3@oA#mh}0RDcATg+K50EX+xJ2$llaz1nH`Qw zvN@c1lc%qal{96eE316`eYAED^7K>%(+Sg$r7+6npcSipf>>5m*X|iSws%f)@3t7r zPNEm)t`+grgQsALp>qy6fFO)v-h}42c}`>})u8Qdp52o{W7iqW3{=w~Xlw%Ef5-4x zOS6FKH$SQ`)?MPszJM;LJjR@)Z3Wq*4Lv@^n&b*&m}s;^5zGS9I~p3&iN?UUZ6{#Pf25)!nfXVh zWrxW2as!66{It%dhRHeRwoHsNJlg|;qImcNXq zSRP=32(uc{b}9@I=L+xtpS+P7)Tn1O%UiU}Z}KS1?htkFJQ;|tY28K;cwOQb6@n2% z+ZT%Ox~DfgexfifNWR8r9($Pyjf`OnQ1%JWMz)Iu$$s^m;hihF!Gkfk`V!d1DvJ&# zx=%!!yBueVh}I3%e&25&Ia~mbgn4l%Nz2=FSNJa&SFRjKjs!bQ+FVSx1=zVkpi}-zu zbOWJ6!?coeVe8bAV|>So6$SCa9w3WVJ2H4P8)Sq&f=IfD`#!rvGBAe6_IYwzt`00R zZoPBTx37xP0yb;#uW6Q5O?GWzQTetL z55}R@!6_(DK8jDcZm?d1lH%!eO6ioPsSQhI zU@B|^WtTrkgf_k5KW(_nSl7YO9kgh^PcT|~fV=W7Z6)>6v{Z-Lgo z^(7GCHpRA|Eppj(eJMOCbp}Wii~+|XY2T=QE*JxEYm@+b?w>|bf#~Cj-1$y)_Q3@I zsa~ybj(Z|yf;7-ORqT`)a9KBga?{WW!G`}$X%&V;4!?sHM|b3>ysBRKn7A(J!z&)X z#JuRv1NqvWd`AG zlfH?9arvnSottB{4p?%|!#tIr2HA$*mTzLMjc~b}t?+3oAf!cm;At54(2A3I_@(In z4^_+1-XA>XBmGvNm#|0YmjcgkCr0n{>FWo|Uvyg~VTg6OPWi`#%I1ynZQK5Z8di=r zZT1fsm+*(pq$<6>I`kTZxH`&-Re4|fbm?- zz=Qanvk(p@W1zN7khN#NxL%L^j=hbYzX9>j`FxA?2S@n@_5o#aCJf91C6^*4pf0t+ zlA+?1AS#v}6xM47FW2_wS(1AZ(#QA#C25Y3S$b4L+03Q-D3q~tWPlq8oE;(Pws4r= z%b-kB>PLuen{=j6@RE(M&lyi=jDpvpt`Q6%Cm%cDmywImOWXY4V7nBd*ar4N^z~TZ zacKBtsg)&>EO&4RF7EhlBzf0lJ=qUVH zCXIo_xZ&-Ey=cW&|KJhF!Uo0;lJ$_j$TQHpesRv-2ag`ySpDNSsag^#vbn*o+11eC zUX;TQ47caT94L>WVdFH9=&6qB!E!Q9|0MawjlX-2qf4O>4e^hu{!_8!i=65|kNx-z zQXJwQWCO8mrOhoA6~F24?Y8Eun>iizMYG1CswR#vpqCkR;(K=RB*>P$N`-;!HuY?T z{d+(}iUEFLy#*JmKP>oUYt>Q)h-X#%%HMx&c?7zo_6&A2C)L2kTgG6K z7?AmLiyK4Km94GMh>FB$v|=5kap+u!9b9=6uKOr?q^?kR^9x_#{jnuxSQdG(gfrdH zOOwn@Z-dw@yzW_3JDDA2Ai z)cl}GLGuOtQMh1& z1r%3J;fX?A7HG&w0PeU4^|r zB`90mzO7tSU9rYNEU=v_gfo#|2Ewi;w|0A~R#Zm*F!;YLn@nSd9?4(P+&dmYXfDAHL$NHc;XzM}H+zd{=F@!} zvrRQ_*YKBEXFuo}5v1ZR_J5B(O8*=l0zc3BI|hqX1V!p_4@LM=NNr5I0bB%>w`63< zIMNN*Mb9M!O<+nvt^735hl5Vl0SB%2v~M6P*~)SqEqEOuW!e<|JEw@O2;#w47RB1Z z*d26w4Y1NWWiV37FhJS=&wrxc!#+FN*H)sh7W4dHz1~LXLW-|XByWPuw~~fD_vUKa zA&qI6ggv3SrFs6Kn7O4yE3G5_uzUw6aRvxlXG?1%sDXPqTiPJwM1}=4U8jWSzp(?x(X9dnOlJDSOK{RQV*+$9)(~%Ge&abF zMPvRlW`Lm?zp#SC_qV}1`Fws1Fyy6XczuEJf#Qhk)qm_(|2vOb4`F^;Xi~hzr_! z4J9~pzD#nrupWlq_={G(T$&5%Km1f{Tw3?yoD_QqX+1$hOk^*{C-p3!Ys9lC3*6XP9jw-eHYbB+X|kNws0_JpLXHb5WIz*cx3=wkx!WatcNoAtYD@& z`gM}fI4WZQXKiiIw;q@`T%GIB%JpsmL__-u<0Zb;Br;U+8SEp+aTyrTy?JZCtwAoa zE3K_^A~QLa!l6hwHK;+xBd#ojUiqTM9Qd2U!Z4M{I(yDCseYcCs+Jha$kM_h8edUn zX`28G``5?l$mVRqcIEmJRjR#OQ(w(6XzvaJAMrqTjCCRi(@w12W2#u zl7Io@f?*l32R5w8$*Mqu7sZ=My@mZ(cHkv6cae|(>J3%J`2ADQ0lHZFcn^8M)UM{l z8y|>91wHj`reoy~?;p*sl1dfh&^fM&9JkHXjn>wtLH=zaNwql}#F-=$hXHo)@MROs zU28)@4y;cGWvla|fA?*aIMx4Cc9am6oERAx#sVjUs2`kOI;=REk-ZJeqj6#bJwoaD z80Eb+EJy$@Ww#s{Cp#X9qWVA^t8jdxlXgE0FlYa32F6})KHB_-pC1yZu)Q%+eween zDB6wHwtw<_mhUhgEc$~X4XDq1r2mJ{(JtHmp8l~MR0u@G{0jx0r2M5Eel0ZE_Ptd6 zT&#k#$bowb*o^dA7zb7j_KgYO*HUEI#_|8L_oiV@oomB32}4xCfXpI9tCqG_qP2>a zA$8l9TC3E$Ev+cgx-Gk+My1LSlBKmutyOBN-dj;pYn5#&Mx+=Kl7&T~iinDU$Pfl0 zGKLT`59_<`;Jkg_?|t6qJ-*}n;hz>mva(3la9`7T_GZjY^FTq#UatoZ8yDEW;8uYn zwwnZdo6WvpyL|xhXRN>GmtUZ$$$6+c7~tOD+uXaf`F>^WPBh`Tqd#p=#`KJTpomO& zCzR{U82QF>P^K-k84Jiyu$GPS7lz1iC*unzIS)TF9JV}+#i;FQ-M^j32G&E{9}TCw z%+XiYwa*?<{(v7D4s-}-6uX>0fq0^Um5_2xk6mZfq9>7#7ASpC!xpv4?AuSk7Rf5M z75FICF~Sed-II4e_P0HigNwFsK}GPG=7{t_Vaxz7BayyB>|{OgWV-;B@?=*nbri1% z6amex_fn+ygwRPYH!f0s^;W*>Z&ROWXq79VuoolmI=U!smNi!hT|k&XtOx-#c_|h?6(30EzCr(n zMzq4(NO|7U43j2FMTsd=5NTSVJ?#&XRVAm(`g7WVEA5S?Hk;E#V(tJEn^WE~TFfS@M92KQv7wo3Cx8QSJ9Pj2m zYoAH*Xe^GWp2f0U3bJ-RPCuSm7GQydNo9&OOkga7R7w?oaSM`lF?{II0ti`1pV@4~ zkBR(4DA^K{TB@S~YhO4BNMIk%;6$=Rl@2h#r}nY_LE|(pQUWUiI?YY4ui+f6G~o{9 z)c$ONKT>UV@T2Ej&`rwO+ud&98S?;|{ubRAEgH}8rO}`i^!A8#xjQTR3ws*T{>`H& zqr87Q`JuPRdojJ<8`<(_p)|^PUu?mHywRx#eA1(pX4Eth4LLF)~Ie4O#Bb;0% z$Ku`g(AFpbe@JpNHKb|^VLT)8vcZy@F=9;nz z;~t=9|GJDH3`E>)3p844aQp~lfle4^WJL6q#&+(GGFR`|(S%cp1n@)9MbgbL2#na_ z8hCj;1u1XU^-z)L;_U!0F#Z~qaujkABL3y*R4`AW8|)E&<9;3nA~kKPTOu@OlUhh~ z`Y4Ol^I=Iog!V6IdZ8P?x%kqP;c$<4^7C0eJJn1$g$|g_l)U?@t(^YXw{w3-XN!7D;&Lj+JVdUoE{Z4@V*PAVkFK!-qk@u zBVXD$CCq3ddwfW$i0B$vIR{O@LHDw+IIcm{7ty@^VdXHo#e-v!#`b#!T5v0+oN6K= z3Q~oliyt}zscM>sH$6EJQNN7|w2w{fMp0jQdD;Ins~UZ9$!&rIUn#wTZtkUzAB$&X zoFckb%d`V44PIPoIv&T465i@tjuyS-HFb0ZK(Mw&8GhFZq0@K>ZC^wii9eCQs54?~!Cwci0UR*<-IT1I{VPf6aPh1XJ^$!LbJotSM09Px6O>G!-axx!>Mk!Z)^I!_rt~HfS-O z6to$sjghGuyrRJ^9$0tSfCBzTpZbsG=L)2>=k~8W_fPWoS9jd}?RnUzUxON*{&PD} zRW>h1t2&sTMDicqMj)u^{=!qRbP1ft5+EgcaABq1)_oi9Vs#}2GI4X8wpc^Mg1&rnC zcPULU;MkQ5Y~Y|nHR>%Ze+S1C?%zlU10+(;K}+r%!Y?W=rQDC<4< zSH{}4JbDc7hKy8mWa>hZN z|1IX@r-z~Nw*8Wgq*@US4M~_GYD?^TD-`bO#g69{r`09p#HHv2l7v2bIcgp0=0PaF z0*dnXbn06%SZr`_46vZ;D|0XNtlc7>a-CM7drM3WLLer09e$&tKEG!mAr_wcbGGUR zo>)&gUT6Nc>dvsA5Cmzq?YhgBXp+Ya;hjX3Dr^fho=UgM`Ewu;2s*=0K?KiCJJn^$lDXPN5bf0 zloQUD@2tSRBkjpyy{p)+N8Z}fJ}>ZWb7Pp(wJ-d03;6xXV+Wuvc(_ps4iNzMxu+-1 z=}&x=6Sqg(bqr5$%+!Gt{WDA^+wa~9%YJ4fvFe%fFB8;vc-BrGk0Q=S3NvFaht?_te;;sR<`|e~^79S2J!#*Px*F^onZ2d^4mf4YZS6_u zG!K&RHSf~{oS+Z;Py69^BKjg0hS&N!KQJDe)^C`K@(6oR`-|2=lo#df#i%lynJsgg z(1bTVJjTPkh!49L5YpiWh`es###9){RfRolQbIQn@akIPT}OH1Yq$ZXy0_z`g8r=7 z@=CuXWA0UNMp#hh6ys-bTEbHuZ-}Ta5Y-ZpTXd^hjc!^;dlO&e_ZP$}))2s+TRW?V zYp97$<;Sg#=hITF6NOhlUww|hiQ-Y+80|j%fjrEtk#I`;8uG7}7$4v~f)VcSfuV$J#9#p%g6FxM$+bJ=&U5WN_*T)fU9$C}(=5Fn1<_B-AzkdDYfq5LwPXA0bkdrN!fx&Q@JGctE zDOtK#mBQ{JVDNQ|s1luZFobA|N(I>|@h0T)4lwkXPtCC$C-jhpFkwuarJrZ5NldM% z`c>Vs((v4oo%mvH1*q=|<+Zg=|K0a}v#RTQXn*LYH#RG3vzr{DJI>WS5GA-7N>*mW zY#wzJ$_G47_hRu73`_Ihma~%r1!T+FkKf9wv{fo5;7SG5?Fi<5lcUb`A0>tkq3vld z_-RRt&K2T$VB64&Bc9fBLhef$p0s2%;hLMz%)^!5V$Cw;5CE9k^XuCnwLDcKiQ2IK zC=iu1tzYEbX>OA00KFi2)WKl!cSqBbVYNt{bUQ*X{s_(Mbq->5Bo|*=5aEIrr#g5b zr))QGS~@!R&M1GkMxh+*%2EMf{_!h%XeQe9&L|)6q(Je&)pUVGC(IzJhHTtWJ{t1h z@H<~u?gN5w%v1(mt(&2>pcq{|00e5_(zlLw@)<)=Xj&S&0cw%n5X03Ur$RLd}+!2#N9KlPb-wTEWdi(cpp8MCR!ep)SLP+AP(sAMNi}?6}tr&_7N(k-pQn2lG&529?#a&b60J%fc-Qe)6R66^iqy(=S&W2N3}Fa|Pf2MI^2*j=o9Gm$9B}4rBGJmxi~ty;Q6EC? ziSB-MzhjPehJ#>%J3t2Q=jUo$gxU*#FNq<6xLtMOi{9b zUjg#Kr2F7PwN4?s_s9i``YQ81-l4Lt3CtoDW=y~W1?LMzhAZ+n_Eyge+}e)E{ve_b zJ5&+ddVpnWW(|1bIW?0HF*tkv+jU+)Z!M_()A^&KW$~>vqS<;hRyjYN>{Ae(I^2M& zI~*S+ya~*>c(S>o2|gB)VK;P@vMjl$#RWMh4oXsr>QX>{p&A}8dSpr@6ZG91jYhMKvbg8rE{$^nwYekgqjEFdazvv52-*Y2YaiZ3@5 zcVaX3f9su+0dX3kiK6Z+@iaW{rsYB|a`0SSqZ+o8iGw}Eyoh@}VA5F(eK4Xy^XLR#@nRQY%MxUraYb5)%LjX!!QWV0;LO#26vxvJXFqK~$Eu{;u?Tl_-nt~3iY zji_^E-3=Q_{EGm`e*<3k9=h>&x*uH?hAz4@#-j1x+B=Nd7RfOl*ihIpJuMBz_IEUo zNJ7CW?tad7cOO)3VZ}PI%I(9Yyhonc1nhRq-33YOq-~py1os7E1u8aa?k)YQSMSX} zJgkQ8zHk*gGRszBhq%wWaoHeE#>FL^hH9T?8-X&S++X06g(NBnX3NN`*$*8(Wb>mR z)n~$gFUNrGz3pFtX~1UndGt%?nUC5Z|MuwjW(C*)5}=J0*KHgIHp4}iLnS=w@3WAb zz@lTR8Y<)c&LJ9gDhcO1w_oY*wsV!*JKU5TB3unwi7c8wZ8om*IMGnaOC!9OgM){W zY$%s89#?@T!h%WEje+KnY4d$fX4Uu6bK%uhP$9x?jq-O!Wr?2b2ejtnjzS>Hk-bhH z1bA)U{Q=u;hA$wGgHLL7_3WwXwdUwUWnU7?Zwcv_M-E2D$2!;^eON=L+#!Wes-ByL ze2|3fKvsQ#d@uvvf;+f}L!~K)4vKz!c)}Bp-7?jP*fKTSFvvDqC4%axf0aE<(;CTb(8wF|#L#?sOki&QWcJs`k1wrw znjB#3m1A2!W)l8jRex==o>irty{~x0y7bi#yC$vdpKWz53FH^!Xns~JPh_lsy@w`b zjA^TE?yeCT?}ge3WWpoNpQ<5ZcUXrMX*yBfh>-b;g1>syY0gw}LlD>LSc676W zhz;r=$UmOMMHvd;$|A#!b1{c`q!}-{5`{f%PTT6{Q$16j_@Z&Fr!yU9Q>`3RJ25+K z`E^A;mI$OsLsBnCS@FG1Yg#*%tpzOTP?bPlvsr&H-C~6JMqE4iIf$X>Mp2Er@UTxu z_v9(341~j=7^z)A6vw*O$&)&7^f3-!paIy}wa& z#kOD(a&tTIidJMzR)8i-~h@MKSjAzdLRu7bg-*EEM zaFSTEC0B0Te*Cz!V>5;O`9-SliP>-6jS1Fqa0^09%PpKVTU31}KcPE=V@R`h zem_60*F!2Tht(K2n`<*@I+foRi$~z|tfkxWtVf5rgq%n}DkZwNt11 z&a)gU15Kx31*%0i+Z@OG;>awUXbZ7`vuM+-9^#&f=)*HAsFe-f??2}``vjbqWBV<3 zsbIDnOrC}aHB}KkF!w7B6rr2zM)<5L>VHdD4X{JPSe{;_*5(&@_v>zFH>zNmc_Cp? zL>;L#;zP!C4$cX1BI(o|3%~mIHW;_lHIP2qkUM#x9Uxv&`m~rL+0!+b6XhOYU5U0*71O+XM{S!zO3Ytmz9lhGeEYQN`4 zSSQNH>W@TG=kN*x)79{pn0hZ)-5!=5*O(I0mQ{3}7%We18vLil9!M8>ArDts5tJlu z^;{7i`ZYSumBYBR$S_>5bFPR2m9@af#Dro9abXHg}2X-B8=)~MR8&6tcbqq z<|L?YD6ReJ!qSk``_S!*KIRqmK_){bhQt9dr~zuCYfJ!zP(O?iTL7>iyax?L6Z@sQ z+S8d9jGm55Ez1n=`;rhq8k&q{(W3ZwxpKa8#;#SGXSQHaCq`&a5rm*BToO307yqmQ zfcG(<;KmgnNc+ygWKlWUSuL_kpcn5p395mn#xSUhK-I5+b>tAK4&@92_Saq4%#W|D zw081@YVg`tev(rPXSc|Am)8KC(+6}-i4A3Cqld5Rmh^c*G5uThPdq&g>?L!J7r~7w z_{n3G58$c$E*QU!Y%;g9OpBD%1fBrY@3Cn5B!)L3#6^O!w?a})K>}d>>M?D7z>cL~ z#Z%*pEQa_efjq0V^*hDTc9wRQ$b3j?S){b?g5p*{;Au>;ztQP0vt&f{I7a|ctgWwK zs`xXVx*=|`Uf`K7VXS)UfoNiWuxTei*k%>r3%t36$#1~3{1yh*PVH3l5%-9j_t@k` zqJb}!w#+zd;219fU=)M}MIAnwijIu72SQAN7H!<=;`zb(uw@DL4B?%I)WJ9~YDi7~ zaNGhu&e$Y3=G1JqEQQVrk-kf5kg?1M4_P5z`;T{i@{Nh)MJy~fI3=<~;6I(;Frz;i zW>GEA+hzR1n-@pvf2vARD$N(GQg6&Vtq|gHdCmQ?= zx3=jI1x2y!BRcY%O`*iV3~G>_b>pOVq)3|uZ#bFp150VcUEB;~ly(yWwfykc7y zzR^&hFTq{PxqXn;mRtLk!n--ryAAb*6tOPwkO6LRjyOHttK=rRLOo!`aMjx=`W7jJ zX^ErBH|F?)BU~k`5d+6^f=a2fmGL{?ihu`YUGJ<3usP ztXk=mv3q5}q&F7!=~aDla}B4c52_<|{L<*B`h(#uX%f{sdK_&-7C$TY13{h-e@hE= zES7JB1Z85Y@LcjXJbtbaidAEIOeiX`2jEm}ZB%L-M0Uj;F+$&s5R=e%wcdaB^)=o1 zgNVT?1Plc#UX3z1x4>|Q`a#G^yd+uqi`#A*x_FD>?G-rqga5WigN^{wXcUXKpkvaJ z9`9$@ZUgoo1Ghv`n1i}@&NUwk7bvzuQ;4-~M?~*>t_j!_h_Et6);~f4!O9Zg(BNS& z_wdphhAXz;X7~lLSIkaIOBC$D#oRp{lL=$6WL=O)Xlm|Rhz9OEd%ss0o#cX6Bs5)# z3$ygsto>J&34YiR*mCL0`q(pYKY{+X-?@RgD6;2r8DRglUqX(a6_EQ$&Z-DyRaR5S zSwnF{(IvF^1QaJXrn`9g(M{2N<^R{rYdH=_Q>3fYh|Bn>zD z*n7S-GlpIQ{Qj^KO~?^h(kh;=?V`#f21}Z>cp_N9-HsM7aQ7qR8dou?x{V>U9F?j{ zUnaKRj3z1(u+eqrITs9_h33Q9*J6OA**-@2{ma{6c4g1yT7j;q%zoYaqbj44m0({k%7V+iR zuXm+!%nu!*a11~<&l*~A4q3Y(y?qGZ*lY>fiKZ0R<7QeXy|;!D6BH&6evxOkZ>enCjm@#tq`jyVOVXl%>b^a}tpNT<@WX(aaV z;9EcBE&?!8hW5d3T-3L=DoqD)9S^uO<#s0=bbM(@l4FC?bXsKE#In}l`DJrVxOOsY zt*MkVumGodiMDKjl}rW@YWOuR7!HvD8|tC?iGif|7I4Ps&jA~T&^KfY6d}|#Sc$bS z`007?Rn?V4_A*FC1N5sBM%~(}kbGlTpL8mQsrYUHw?zOa*J<3iahpEN96NA}ZTdH6 z9sppM7`t)f#!G6oH%~qG90!&hKp*H+kjhX(1@Qn9)<@Fh+JziwTrm9sgeH*z9A&Ay z2f-xTz!?&d=0AeuhRtIAr$7JnXMz!+Rp0Q8C)3T)zwR_&Y`Lo({E=I5W56j zKjr50#*ayX!!P@fS6w?4)7*75qFy`uG~B}FhaQxt(@^?Smv~2PIkTCX$NJ+$7tF}* z#HCO0j0A)t^N3m{47)D7vYczK33%7 zH*Z1>2-Lz#fU{kVIdX6xGea|d8!No~CKDR&l0sXKF-a9h<(LZ>h=I>``KdC+mYReV z$+jf=Zrbd=Iw4{ik5!Sd9KsHho1fV*tGA{7!}ZDb6$R;X~$_Xc+FxRfbMuV99P!aw;%nw z7s?JGM4ThGq_8QV1ZmB@mnGYq87?$p+_>JXaDD@ruYbgM6&9JdsrU9N|0H+7{7JwI zizO;a$3~CdT9qa3o4`z-9}EhTxZ)~P*w9>NiV6-{5>L0{^uqi}{b_c%>FxVpxz?lN zc1}5<987bSnw>BqZ~46lIHs5pJOqi!&gGhy^za?GPZZ*Gp4^BE&puOWm z+>aKPmT#=FfB&Ld{hrvcssw7qO}LL6SG)^(YTN@}0+R;fCyftLFKyyD-0A#{S~bZs z+`7q}cmyX{pd$CdY|^&5OEV|AG!hR?;|{Y zs<4gl+y4WAY)Qhi9kUmieJ=D|&(}34Y$v4a3S-mFPz{8@;;qw>0d<7hvK^9 z>#fJvRA^G}alah*GFm**(Qn1>5xCF3PS_D8Z=D*EEDZ!su67Dx9L-Zf^ZEJZkDM$| zg0HLE9}k@le*FZ7vDoej3?uvR=xUu~Anh;I1^;tst>kne=R1xQX7+~;=ht}H#peA);ZJ%$ovinmlobugT)oh=#xW!R#-U@Y?=tZ&&02jL$?q0Z zS4Dul?;;HqLF<+4irb517jd^NbU4)@YSz9oc^d*?orirmfM;O7 z)eCK$HZlm6Tz7ClXB?d-(@d!4Py1gyu)HPa={G?)OBf!L0$ZMA$mB2FTRQYmkeLfS z%^eI+v}Fm?=C=$(v^aR5y9NiQBWcRaHlw`jFt3O`D=6xcy{lttwIp>5T6M|Z%V7h* zOp3-gIC`Rw#(Fu>wxcs84Bv^kS=~-PsNopKiZySP;IaH>Xs$h-!=r-5P}yjrgMH!q zk)F)h_5yB-ZyDQCtPCjMZIYz7y4TUY{978xt~l_${)zj#HiJY!6kqWZ%@z&*3MH;=LMb8I z*=47sS97G7LP?WriqQC%)z0m{G~^6Aj+8S=2W%W;M; z6UBhU?c%zuj!+Vn=DGXYPe=|%b2FUYvd=EOhG@=iK2R(CZ(FYIpd$9bavk=ijd9?J z+v=Xh<`N*U(oF}kL{pPx*pKp9<$=d)08aYXr~q1~O_z!G;aeG{%|2U$*XKBteq|b+0N(>9{ zXAEE)nwzFFFKl?`b!TFk4>x-=UGNvw9J$uNnAW@g#W$zGjI_CvWA0nRb<)g?{Z64m ziw}+o$oT4v|FAD^hJ!RP=_Z<{VtS(aT1RIBCMbo5NI`X7n59QH7>Vac)vKW?a78rB zaGznR5plLFR6V3Qh_vPq#!Vt~zfGD{C^9yk&Uv^S_y0My3nuS6+IC90pe1C~_H0*V zgQ^4DyTf~1LufX9H_Sd=S;MBjOBWnM{Gs99CZ64Ixh7oxF9o2YR3CG6)uhf*q&bSO zXr$Sh_-oC>H-rx6V!NQIzG7(A>?$f&_~Y4|4ggb2IW3j67Phq)+E!HZfdle^>5{Pf z7c?n)Oew*`89kV`P-=Vn~?!75Ani}I+>@< z9-})B-|LDWzffl>z5?KmbuyIWW+i#g2PlLE8z^i}isiL7(vNuoYFX~;A8dl|?&Uv% zPiL40$uA`=ZevO2d1yRk=TyhcX%9sVN0`hpuDi9y|AUdu%*4QrM=(AQ7q+w)wzOdp?F(Dl3tQU%N47L)#|%kLkT<69TPO^%2N;N=v3>=hM@XsFlAtkTFT90mH!^RRqpnyOQ|LQF<5d8Pn4)d)Et0_zXZ%%ge`Cn zM<*#it9g?gW?dG(GhoJ^!@c--?}F)K*xT{&TIx&S?KQ(zE67;^@LyxBdKalidR`j+4~}*o34p6Xm9B}uKf~?7P5jVmuCbOU-2&W+O(=Yc z;~^%k?q?qn+{`Z5Jiz<`PPs@V)rzwOjNs+^Ux3{oS#E&IESa z0%ocHgh(fCpS`I*+n&pV3Md!^f$%M+F_(X#Bs&Or}w2da%9k zs6_de{>K|1HzOQRtMaV1;)|B%c7c3|A#78#j066_Z_hH`WDR!UvF*vWIw7aOlw2zf zRHC`QFeLZ)DI>g5)~PWsIV8%HwP?D+#oM{S347zg^$mr;i~n%Lhxk(=yepw4HYICu^{=@PI1@2sYxaiXu4{_an+!oon#^^e zPd+pQ2KifuRi+r`Otw^TdXE933Ny;&mOf5vvsI*qb39f>v z#^^ed=?H+=q&BoThUx7UWd_!85h=V1EJG~sPF@59yy*Hp$MHlZ=0d?ZZY0NWoCNYa zsm~_{ZnBIAdTKDg9!jcI*_$(4_QB-n0j~b|tTnlg=es)NKLN@4(XcHp=erKZXASA& ziglrcR%{s*y)pz~4UOL@Q8I)Em8boq0 zPd|IutBmBI$Ik+xD~9XPi!DXPfV*sA5=C5VpP0bTgdQ@rjW1Ql!TVD4zuA^yjB`+vMg=jeG{Kol||C!gHu`R7*eyNU~36X60eg+7(s1(nN9r{%C#QS zDzyQyyKlP^xu1ejv_r2OP=48)>rJfWgj|0zLvbM;f7|Nt^WGJWR(P&z&b~J&zmmxDGsXf}LVp;d{sFR{trpLfy7Ij^$Nnz^% zWE9D@tl{V{l{Z~gt2Zb$FWYL*2YIH$k}y4hyfGL87n6sO{ImX95C(XpIMah)z4Y2;JP`<}rn>c_Uq4DmOLg9y+mc zO~D7BTQ$~h2=Kyc)CuIk7thq&9z)w`92=h zk;mD|`uvFt3;Wb$?>sSB7R2U1S%Ri$>xeTp{xJdkV>xw{-2EgY*@j4#_gLg@0Af*L zH@p^RpZ@|5i;wHjh-;~2kp%_7eKDQGY}#<5{}z_7 z%t7w&yLu9bEBV0yqG6VZ#ffMBAcPtK!PY{Kz-kU0*w4}}vK=qLupK^L z7^EqL!C24&7>m<64AX)Zm<_f;b{j~Q4{zuTadCcra({0yl4=^rT1>(x`~8c7)>6y8 zn+k*2ZNL=3S1Aeg}>q=l6jVbKgWiS z;6iL4VQuGTm@t8B6q2G2|aKFB;OF?f$n6>D>Q?A>G#M zr0Pu4sNf91ow<^$ z^T0SB`#Vl(mC((fC@U%JJfc{Ysfde<^Uxm?8UNf{Y1pYoR_r5c12!C%2-({h!T-Sz z7M?5Q)-4TeS;Zu~oMpZ9s*W~UcC!qXn9FU%xE-CPL~^8Tt68s=0Fo@K+QAI%T*Azg zEK{p|w(xV)QMtdxRo;4(tGwG2^$cBB32fRajIr+>2}|z%GD@0ocv)^oub^o8*6yLa zAWqjg+?1BD>l^&r)LCDIWdp@L5jx9Yz}^|7Y3fbE^d8NfEt*C_QP{RhbpeWqa`DRu z-!sJto7}?opuBVT<6^>Y0J2=I2AqEiS*6u);xo58Z*{i3J2zqwz*h6Bjubv5R+N4OBI#o`0iwkDj_YmO zxYYZRq&>3Wez`QF1PK+))J}X2y|#yQFTXwy4D`i1K0!k^ydALO`~@A+)>aT^hqbx0 zDaqm?CMf7t=Hgp9ve^<|f+HyCtEw=u9_?>&)zB5+N-lowG>Yc-VC5ou$2P$aCiMMQ z$9V?_9o~0;9MRc+@@c`p+Ozlp5Ig}i%)coxLE|-iEBSLN6(0^L3!vu_%%^XF06i$a znJK;MF9rNy4Ydqkdb#Gy4@_@V1qNI?(b(3RHk&vV@ncfNBQxZ%zK)H>3bsbh2UH77 z^zr<;R)}h?T4&ekk9HI~J^^w7*0_ft&(|T|?m~o3IKn<`3vwYKpMnrPe2-RC1rh!=&Ia3ZBhc_)n#16;T>Gs>uu@4w* z)VRZO8r`l1jsC`Q<0BRQ++B`-XnYjIF(dfOR`fQw>xTDO3=Wfbz;nX1LvuF(sr?+~ z07CcyR7E+wI>GLT&da!)u^VaQoa~_6x9(%)w%x&-p70rZWxK;<z283<8nqQL9ij59|=(y5->?GI}Sl|rpvh*Bl=C>_| zP;Ma1Bre>jHcH0?5D=p zZypyE`;T*AMUt)ZH7E~uX;S{EB>u3CMNHXS`pn5reT)|0X1?w6<+!@xz*{5QgZ9@s zULyVy_NEB|z5B}-;pmo-rnPL7FsI`%Lywzzqxto^n5lJ*N*`gTE>^cR z;vdqn`a}Q{3!39n%L61$<@WzDO67)pdFNh^HC*1Budg#b@j`Q?9wW!=1P7R(fuf6; z+&)`yJzLPwL*7l3H39jyN7~I0TuT#NZc04bE?-p`rtcODsUoHDHTKz#!Im7-XiWZtU;vmxD$@-hVV!mnrL6qE~9qL^cl1;!$@;ss6Ucm=R&@5#kngh;^3A zdgD3Wf{1}!>wTtGJ3k@95@Sd_-*Y+$AVfqt5FOPo6+QVcR^REOEbRUb0PJGro=)tm z5JK{6oL!djHfaUp?Dw@NYq|#{xdF67I8w^22P! zkqA(mE@xzKwdIl4#DdBLQb!sHI?Dk2THeG0H;ig$$*&nYX#Uvd(;kWwr1uMiKEQ#5w3!{3^@s zbV?g1xX4JYuCvY_fF-m&*SwS^EZrM-zIRWAqG%hQ03n*9$843=@Ra^TL?wjCN3 z@D4`pDugzI6)-zHii*o2!pbfV9k?K7wa>N;rBk&TSsNR$pR%25?IOW$NGJkyG%TJq z4(%n>A*2T7eZusd#^m3rNYy10cd;W~ZRo@+dq|HEw*e>~2LmCHxA{_}T@60(7B0x6 zEhx+1>$TTOVCUQGA*lHmW*fE}4FBmSv#H5K2z3m4`+MNc?t5*7*XX-)4l}hvl6no} zZa1M-oi3ii3H3K`HbcadXu*8kqlpoQ_065fx$QHXg}$Ev%vCvSpFIjUTp_GLtD7TP zb#rt+-R+rilX{8pciJ_&7hR9>WTyV2K46OZpYO%;HBvHtol_Rw&jQ@nKJd^eQ|~H@ z<&a3EFFJAumKu7=_D>wz=yNRa1z?X^9dSES&@;0x>|2wxu|nF4KadDZ7h#&tQvZg7 zw0fPIX*$Du07#_lu*=6A$#1#dA#{Z4Cm;TmG>oN>7l$Ud-J3P=Fv=po zu^C)4unu+@=;Ud-@t05iSY--q$zxk@L?;)Ze@-ow?~z`bM|779d%(vz@nGbX-~@W{ zV2;#bW9MOyk~bF?e*`&3NLeXWhDK$&kW!xSJ;3doybVxdcFRwGnPOa`ELNS2$6BC@ z;>P1Rx$}cU^)DY{#6U}0quuXy?f#@8r*Vs-9_yz}B|7uhb;R-LR8wNI6l<9vf+75; zxs+nwm^}w{+6I^%*~MT)N~Z4{bB#8OYdD~Eb}8+a5T>+ku(0C^b0o&UAOZ&DrCg6g zxAxh^#vHQAUwYH@;C4;8AmBK%o(&o7z-Yg& ztd@SCR6|-{@4AS-Q;GZ9Z*S4;Yv^~}aK3fOYIQ%8H%B2%OUp?&{glYrlA^GYvs?It zA(QM6ifEZ9cRJ&m3K^-tMAn;})W0I77Mvl$*MRO&Sx4OW+xJ$^sUk{eRaN~LVip3# zv`*l62`f1ssQwubn~2IjDH{AEyYVuPHBRSX?whdMC$&B;E40Yu0jy&T8`FT-%cL}I z=grxRQJp-~E>YIWk#NTX-0MP)wv^mtzNE!NQnJ!e(yO_kPV{J9Vp|p%NjEg>^5;(biYrUON>SwjDc{!Jrh>54QA!c?RduW+znc&eyGQsO`z? z=`J*FO}5Ka#G|Uv5q@u|?6McJ_=6c6GEaUIKZh?5Mo)jJN_(soZoN3>ep~=L@Nts2 z+7>x3pPl?O&^ob->Vlsh=Np;SzY_1A1%@Jg93t~kw)s1ze9k$n8k!EOp`~``wRah; zz<&Ck%d>Pb!AzU~`_k@sFnnROVt0;AX^K!cHTTV+HK4u(jTdP zuLabK{Om8`_ClRpUB1YckH7_)tT_oYhF2t(v}2M_i)l@?8TuRPLPoF&-<_G%Hn!zD zOMlJOFCBnW?=Kt-UH>BBnMI5jT3$?hnI6nX6Wqplqr=6t&G;XqrL+%-a!XUS(BNYo zSQ=}Y%!Qez1jr&-Zz`$2I>BWo**GP_>HY=l{`AzHq%nuvKF0#P{+Ers+*mHq?IHE? z7&k7cs|0NXjA2o|QzcY z`*;McrIkrw=^D$hpJiwZN!p=+*n#FZ1s^DfM40E-n*=5S!nQ-6JIqQ zVf?#*4;it)5p6i$oF5YuDYoa`csp_AaI86T1dr0B;faF`Tz1ogZ6U zx;rCu`4@cY*v>tEs3}o-8JM$0rw6~Tj}`ASd|u`}ZC^D2pX*{1fAr~92)lK*Lum@x zx;ieue+j4GUkIep!9=Pz=J=(Qnb&+~SgYJ6XSO39=b@*3^ zEkFr(hKq@dz%TqY34N?_o+O!b%xfBL?FgKhpf=#x!MX#_Rd2&(U?#R-&}{?O(N}PF zn4Dx&0Negc$naCBx%k(%P{d{lrr9>3!4JZn@E9#yokD_yRd%1Is<)UVsadFaL<(A+*qQ#)&>faX!DKPU==YV~cl zwUJfa9+Ud#>*nA zG%=+j>dL_|&LQi+nbz+h?^R{_mTA5vw%%eDo31B>`Iq3DU~!GVuy=D|C$|e$no)S9 zdu!qH1T=RVIJ+T`fXIN5Jf6j-Mm(OY284Xvg1{C$oXs--&?CQB$(=dLn)Vr%a!{a= z1}O)peg|u_C9~L&v+EM^&7;kX{1iWjx$&z%)*gDiJt`$KGUwnGbwaE81SEEAL)`ck z(bPbCayAzrsTVf3jzP3A2k(*cNZdMLWNI?zek?%2RR9TfQ#v_$UR+}X(85hHxpZ%~ z9NfG=nb3qgOcvtp_HaaV?=n3`GO7ECckVW~oJFg?aC_68flH{?L_*C*kvW=an@P0l z1DcQboad?P@!NU&jA3g=1i}@)Bg%STM*;48MT?Tso3HoRt||i|{F=h{S;#8*vYTk}a`z>OZtvzD&{K0J*7bw~diGtH^h;u0 z(e}}v<7oqE|EFF)POIYi;ATRb2A#a8b9DzebkG2C`k;XTmeFGBN|fn{t_Z@Du;)!) zn~|!(Z3;@BLHDHn357kH_lPBK_(Y{Pp<|TuF4XcKW4tHae4vy(aW}4zS-(j)AFdsX zP}MTWN%r6@LaUa$dDAzN8F@RQn0}ezW4}yXj^+lrdZQH@Cm-+2YN!}I`C?p{G9g+H z&BH5meZMZ7Ff+MYM>+q?L}~(43Vu|I#Ry=Z!+zW-i=Kz)+Cbeu7qdq7G3YOfxaVj)v~>|b9(|~?l#cgiy#yQ2X^GG3Nj3z3S^nB1?IP$*f&ws zQRgX3$Xi%yuA(oWP3meuV1pNCu~X}oYYza|o@-2&CsZ{lwns)752hP_P0Sd=f0C|I z5SWCk-*^@mlnv)>RM;zA94Z>#4A+v zt4nZ1R-SsRD72(-f#z898 zC?;xnpiv_py`~vt648P#D5XRRFJ4&^N*dw`>j@DRo}N0i<6uRNM4-&JC-q*?cTm7p zmCC`(oCs|~wu9t&27C9|zyyw^A^3>gbed&+9d{z|!Btnx)ZdUmn$m1SS+BYJ5Kv>X zK$%Y!R#Gk)EFv#v7LP%eThKo6+})L@6>H=c%@Qm05)>~xUDz8WR8_zSOPS#`N+YZx zvM&hbfUVo0^T9L9iPi;F3+PO8WJ3&MAc$)cHQ#$srs>vfkqlP@3KqtD!3* zhO{a;x*o2^w(Uo+(LqK79~~Th26yA&ZTRZpTkTR1RTEj3pF1{d*2_&@Q2iRNtP%q{ zO0U2p))g3SPW6z3k;48uvO6DkjB2Y2tg=sS3?gAMb-T1#u_6L&r}`bB(Zb@~$y}9& zWr6zew0`JB8HnU+PH^r|Mf>F0RI*! z)olCy;BO6uvNCt5P;LSHq+`&c{sBAm_EIlT#0+y7F(Tw=tY)#4<8qEa;yN&9p=m~j zA6j{OjPJDQlp54RgNrKIi5oW!vk=-0pRK!gUcQ5sVo_SO+=WYW3L3ZegoklpA`o3X z>+a?HRIGto7PxqlZb-9hFWZdj|dSy^e4K}kSg3Rw3=EzrjiaD91#nJLuqggtQN@+jjK zw&rX)TII;_M$OLd<7jh`u*=;St-M2b08BR^t^1Dd#Xi*Y+6zl;d#vLR%o9^mxi#k@ zqQPgSO+7jyY0<2z9AGt|l^@Y;AB-R4R!;G35T*`a*FD^auj>bmE+3=TY&WlIR}+l= zJgSgm-9egKmDB;S5(tck+szANRR_51lK-%NU1huu=4cTGf5W_3K#Vlf$2$Ft<%(0$ zqHS)kEOV^tDk3ck8^$4xq@qtlXT`ea`6>5~ZzzPu1RtSRw;ixF!uDzSvB0ld|BOJn zb@o;5Ufhn$GiGF#=UE^bcz3;|*&Y%?t{l~`L1FE++440-2fLi!L8E_k@dyyfI%iWq zMyGc8fZ2;|$(O15GK+$M2<8VUC2bqU@Ih~HaUbcl0Yo_L+lVJ|nUt}=#(ShS5@-ar zBju*Y7;quPFc#9y#c1&!N1uZ&bcb1X*Nmf+%$zWbj!=k!7~Kv~A)@2lV;<(LU(#Z*Bp8t-^eny)6-EksEqI zY>cmH&}`L<+z&H67Q^BL8rZY}T-~ctGK)tvweaZ3+dyM)RKi`awI;Ux1hk4! zTKvaN3ct51Bn(jTvTGILz=#=~&oNubQAc2l7S2#^2%2!f#SiT}!Wf6$@~Ug2d@@Sn z9YSa;YZFUsNjWN%kQNr`&qoPCldeq;EI7Dql#Z`Lsdqx94gO|O+k$VPCS(6LND8Fe zw2h8OIElL}(6rY)J)Qfb<4>Kid;6h1GI(?#rHc}S5fZ2*_l^5(_rfvRZ$EP{G^6cV zjCaxAVEQPRz;jR-4&P!-`Xtv zgWs$Fq;Bckqq3^uQMhDE4LyR}wtMQ=uBAz)8U50Zi*;L8ID#IqUurUIuXmykf1$Iz zVSQOM`$KqvDr}tyHUr}G5vrHaz`G;HvkiXb_@u^r5O^+4GdojPJOT=Z;agL4dS26o zKC%mreH9~MdJlRq#(NKEz;W%+67u7D)&U%xaPFc_D;ZOm@1Dt<9=AiW;MSq|MFTJK z(Ly%eKSUtM7t{yyg$Yog$IuG9`EjS`T(rjxwm!X>&N0F$;{)oyjdtO5^H&uGVc^ZG zbsPV@EsphtZwOaw4Ex`N9sZ{cqH*`mzw$5I>p?Q0|3bqa3Tg36(^)i~1x)zPXQW zt*rz8dt+)v0jZDSmJ&Icyh5!H(G!o{vGvu*3qj#$W!(Se*r*A|Mq!-#&C);v`UmDw z$tT5}uA69Ep}!R}@&BiRkTY1o1SxSVhZE z8|q92Tx*6Tr8Ip-a9zelnHQmv@5Yg~QK`jMmX~?f-zKP7t&ccX^n;N->#ksB<+9Gl z0T4B<;`o+x_qdyJ*kcZYtNUppBZR2=L7xs;)d!oQ*`9;NmQ&S_w$~+DY-r$>zr_LFI8NEQRRXxOHw?}Fmn6O*=a zsRPh~3VL#=DsIOyjtu3^b{{{5g1%1U3b_$O%jVvi%9Qo5Xl~!TtU_$M$}0SWKTV{= z1TJH+((oQipX2V0{%Umzw=Y{|L>H&nkM&%xT`wQ1#$MNu#v~(dsD>xmYWNjRD-iSHYs?Po89 ze;jV^bGoJX8!u0(b1GA!z01na-#j>#hVWznkNDpoeyEu<5-5cqna9Ar0Gf|{?`$K zO?=l`A-rEM>|by$aaNY~c2UGV0eK&^&>aL`?kR+p9HF|-YJL<&=!89DS@!~BfI$p8 zFUq=WsN|Z|(DA5DzIUAU$MVxSyda*5FRJ7ACD;x;i1Gf5AVXy8l5Yj;8*W0S;b{jT zaVc=SdZozx|FHMwaZR1+-#-bP$`TOSM2OZ}YOO|V6_q9J*eSJEspGV?f<)`6Q&A(L zh9$|-v6fn^sb%clx{!9PGOfjkR09Qau&7iKqIE$95_V+GM)u^K-*pGH+Ua+G&-eR0 zuh;X(Gk?{F>^bK?*L_`|&->G=mR4%oTz|p(achxUyPRv7#?!%%K0x4KiGg*wPCr%0 zAvm1H6u}~Y?^8JwI*Mq#AD0u(j@w)7)^c_GAiE4UCb$KmH;}s9_S`%i=RFiNau2xv zfEEi5TGvJy|EZ?-k@He#WQ!9t1ZXIW za43&{4cF8oP>rr|tYOS)R^m#(DSs@xz>EPV-GK@ z28PBQ`Ubm_?iQ(5f-9v#n&5ONhZbw7aA}4bhUQ-eMVIz#q_$gf$6blYc1*zJ(06OZ z-Rs3&()hs)jhQHumYZWCtP#55Y>Ovv3l$@7?Q#~jmpxp{dKTF3TQbb zEqF(yO;k7=goYZjy1asdysB)l%ne^-u;Lfm#1qlkibD4vsroqE(UPl_(nhZH zrjn{+IetvCe1LK~CNo;nxvfFsUKkNHtA~~>o{GQUV!;;e9JV=w(8sF{do{*1!thPB zs4Iq;ZO;8NF~0YJeK4YMbXL>N0*FB4ZzQyi{>TZ!x*AcFRH!s#r$mD~u4j?dTBp92 zxuCq`4qIUnsM8qMVD92TL`IjKe!?ARR64CH3|= zP%aiK`m%N=QDA0x^yc$5)`Fy5((L|1rlzGOJv?Eso$AO{bO)*XDygnTNw#ZzYMtAI z^5Jd4sM!DWyG-JLZI{_Hvdi3Dwq>;x9A9&k?R7BgU$HKIQ~Uv*1HRqT!gxQogf2Kf zli21`lIUGNJM+$VwE<=`2c-I`Nu;5^A*%-sZa8Lyz^o$;*~fMtKQ6Ek-z3?FAmxcq z_ei_`sKo;=jb*A-KNPDG?uY&Q={xVL4M!6OB1lML0!K*;tQKF#G;g~(r$NifzL}hR z&h<1;K1&xkv%C`%HQGhep&mFG@b$LN=lmCSJEf5R6i@Vw<=oAgFuARhZTG#KTQ8-% zq?XaE%F^-=tP2?~Nia$j??>v>Z!#mp z{me&*KUY!T=NN)nRw2}O0{PyVH*N@f1+mN zW~v%O(V}35Z+|hqYZA-)J7 zfZ8I-ahX4%@xJY}()K-kkKNhZ&h0q2m241xiL4!FF=T+=lRArFs1h$cyVJ zNoaAWw0!#fsdJ}--Cmz6;tm%}j1Bqggv&!1RE)eW6-_;Go z5S0==_%AtkH&lupMRLX6h3xx+NH^bh%MY;{=r`QO7f8q^Y~2u6e{|jjccEG7Y+_M* z4&9$D?i9`?a=YOYBefn=-=mw=MJKeJd)&BGziN0`Ruo9}G>Qo2(Y>S6Jk-uiu6Z|H zg1InDm@lnUSwTL%UfeA(!8wyYwPMx(&mH2p=TV>Wvap`)sJ9QsX12WoOI8&{JbGt~ zs(6-%(T=bu=FS&94zr{p7B#UL=Uwv0k-=g0YiH|-!#GuWx2n%auw$?>BQG_MXmMq>$rV`<>sHT4x-ZRT``|t^IDtrdPL=_t~{%fK1xqWDmC5- z&8-pO@9e#~p5h6j&riNVM+z9vq4&QE4o3P3 zzN_%^(SkXJ#%5M4f1>g$_72Xk0kcO>GC*M=min_WD6{nqS}TH(wVj z1rDZmI*-ohgNX|Ug(p0;Frf@`uQ7z7)z1gTdb*l`XmAl@il=Kd{ao<>O1ZQ_qfhQ za+ld4g>V2z^I=xuOB7s@)@9yl7_4YV_%H z)>GlIqc!{;ccnofZMN(kkQ3bv!|$6>=RYBk`1M2DK9|)S40!Yz}@?eV*4(uAN`W1kV zv9d0A-mS^M{?TNDO}DBajoq37lg`SeIo6M5^n=*VT>D!* zy*t;sn0J1KKelZS4ezx4+}K)3_uho}Z7>4D^7PFjTeH+TRlW7`v10A#Y!k)P2lMC~ z9Mf1dh{YP{p5|53NO-A%7-ET)GRGxpe1SJ^9GhdZ@{`-n!q;U^ z(CFt&?U&dv>d>Bo;BZj`OBAvN`16(cT=y0}XncO|I!t(XjLd+VG(p_nbfrq5D;GZ~ z*(rq!u>*XP-%72AWEN1ueh9-{MPD9~;DgI-72V9$xF-y4I)6UIHAxy7l!;o`6Adte zv)|`iJz6%YJAzcLD|xg_OKgLUHXfgVM!Qz*2vxwFH}hdDEpDk!uth3bPZ9mU-BVi+ zO0EA`QzI``p=iVntgYH-{jscpl7iE@7J=)Fgaicl9W6bZ<7K zd*4jz6TT7yQZsbbE2Ggy~(~tu?^P5gpT7X z3b66*U_X|qZ3Ag`Z2LP+>Q)XdFW6=WZ!FB!;3?;w!$Q+6Y!%Go>eo@n7rCyGU3m|! z6~jH9$~OtBR0BetXP(LurwtZsMhra3&h=lzTDKL(a-1*fN`&a8L(K8+Pb)i7!E4Z% zo5}E;s~8{NxCgoVO@V9Qk`>3J|?#) z2AWGCr5rtcU0e!QAMSS}eDPzT2S)qbpMC;Be)9dc`A!%jUy;$hQt|MJx1$=%^yPgU zxP3eE!du??a>H*Qcc<^`huCskF$)SlM=jfWftR~GCg&2HKB#u&k)mEN9FVMwL)Z1J zO~m&N?wrFQb9h+>Y0{7z>&z{JB%vj7? zl@qUZ43!Z67A%>}i+4N&d;tv~yC%!}J9)Zd4q*JL-~RyRitY&50RSMr7pwjic;1MM z04OL}W#2#iUhyags|m0>U4+cS<7#Ie*>v|PiAzH_yok2mObDYQ6#9sSuFt(!%F|eE z!y=7ofsEcNQlsJ(0by*XiXx+!2ko0gpz{A5eGmie)^H~p(I^!O?k>R<+7pF*<@rq7-{*#XhrCU5BJbFOL zhi0n%q8L?(*gk6Vs2I_{Wbg%9Q0tDsplALG^SrE`U|#@T)Os;2wKQ&2?qWMH@Y=;1 zBgLn%IvW*#?iK8{@H>2Gq?i>P^6Zb5C669)D9t!!!}N3GW=xy%qoSPwvElX)WmP`f zvmE-buEP=iT<+cm)98#O&q#D8#n1N*F41JpxJ?8F#&J33yMjlCIqX0h4*w+=|FThK zIEqJI>WGnsm;quTr4_2|;c1b~E2;%zQHE7@mE%j*vhc@beVQ}Bmd83b^vNXn z{YIfv@E?yFsNYfDB)>^9^IM)wS_%AhOf|pdF~y$YDSI*7W|WKbC8S2R4{1LL`o#}! zvi}0<=tW>=*pI5{v0sk!1G3E3NVPqZyngchiXyrL^lvz{<{vsWB> z`&2bFR;9Fj(#NBJV1_*z*8yyqi;W5>2zunlnmw;DXNmVWWZ750BkDnl#(Dm!rjBUZ zY9{Dz?5G9HH@9QI+TxVUlkkup3kt)KISecg&lR8(klz9GJmuW8c0hfab^Vzqg=u~&*NBnv}~*YIA%^f8hD)%F-n%~ZjQ}( zF9O9E`c5CUu?TP`@Lc(uj)kJOlfJdcThP{E@u!16I z&X#+>5uo{%LJE+pv%VSHP->eWcRM75Cv@*icz`RXoqT|OlxY+`Y-*O~=d~Itfp3$) z)$Uot3>X9PDb65h-JS>SFu&!jJbEhQAIy!ZraaOt=i2j0FyR=)P_>Mim+>C98S;lt z${erqZC8`TZ37znW~m+O)x_AEx!j)Fs(tj^u2wECYe%HIQ@|&wcWK=|ga@(p2l)id z9xnOhx-?Af+@T1>pD->2ZNA|i?!8f!d5@yTqE`5yKN-5sJ0*@%K~7OaZdqvVUaqZ| zW52+)G?Vk^y~Bj3-LW$ME~Zti%*hjEJJr;FGV6FuZs)OMb+9g$^%tqBbKE!=MMpEs67Uv}^3>U{5xs;1wfn7b}F&t{N@u zk0u+j%>s;oKVe%F64xb~N(PJ6585d#9qaO5Y5tv$mEG!y+CnuAUZ4WC6kC6Xue~hW zW?=E`fCIXT7lfiBPjD9PmAg-A12yPNV+PF&)%3KvJo6^$Ho#l(>C3!DO}U!cRKHRj z=$4>$C-r`+7HGlLkp1}g(v)jVr~BBtj{v8D_3gA%T59b|Bpb^`U2Li~iR?@fTR?bk zs*ja|IR0Y5^TF7J4jOu{^C1wTd@$!ZMC}Ne;2wiSXxA_9prAU)3<=!@C%=R;aOqCD zu$F~+6$xNvfOgV)Sl$outo7K1KI4Sgm`v*?v#n!NP2B_qZJQDvy^L)vYDhIq95l;| z-}b-F7*E02Xj9cpUsAu1@O502IJ$6$Bx=G0r`&v=QOg()vj+udrtc}}#Ic!TT_{YP zRK1f~ERGW~#*CeSWS@CY{G-03xG>&WKjQCaRzbU}!0}Dv$!~A3s8`8rea=A@b#zeC z*Hqk|B3JL=V8haSP5G$r8`d=3&IBTW8-&`Rj6Zt^&4W=e)A@Zn0|f1`;xy02C6`ID z((UfOd)U-J0Zje9Bg2C$)w`!$S1tg>y!QDnY+)I{FhlPn}Qf}|DhhCkt%L^s()N1+>_@STsnXRv_+2wGYTcn0cKg1~oVHK$K?4>oo(HWtXxmg#yUz$8>NZ|TZpM$7$lwlJ&I=lPJvCO(*6K{9zb zDEhS1siybB07+(pF4#2;SMdO*Sh;WDM9=KIUDkUj;~q1F7_!vRlg_-e(E#POrPg7S z5t-oVv^xs-Z()xb)_klFVL! zykxG3*af{=&9Rd@IM9zAh>Uf<%{Lz8Q(f$wu4{E8wgvWw*wy{0D2D67*c*(9gQwW;E%=pwsA!HyHuw`g{*h#xv;PQXiSOi{OwhLQ0{>85b0Su>>7( zcuz&SA9;Snq(cgu{sf@9mpmCBOd=m;)Q;&3pr${J6|5x<+bh5&n&LMOEx8lmgUpSL z=h?rK3xeG?vidUSY8b!H1Bf_u!sIbC)M=ICXu@Bc{@7Pt@_tjWxhR+Y|sGPiEz z-oppt!?J;%=wc86B68WXl1Z4rQTI-uU*JR8hw%?1?+;~6^$Ye1t&1RwUFxx5q$&j2 z@5~POanbl_l(s6_W>Kn9{fY-rN#I<;_e%QQb|Y0~Dq zk`fs%?@wXbli`ZqzX?~A|2AClH=hEzwgU6decpGw%KZl%%qZ(8E_j>9;6 z$_TTq^*_uldOMHMM{{ZU)%%`5Fj*Cs)5)QkpI{S0?13PJAY$(sdD}@w5tB7urZZKa zvHijU3gv{-e);>885PU~H#Km*; z^Xr?cAO3z=GP%-7Hldvh{lYy-+rDTqI`hHUVDw6wXP`&-w(dwY^P2mlM6A)qrNdA@ z*OpT9F1VrW-fZXBJb-J$bzUQZiuH}~igo8;*K}oh4g9;T zYmtPwjJ_^ngoHtx%LxkFt89l#4JzW?4auebSUZb8UBL=L2W#C!pViE>?^fGuL0UzM z+Af+nw1cf^gf17?F>uplmMCnX#eufsRCHta*l_&1$oM^DA~C+PNdtzSsa1_+ZC@tI zqO@{*r<$^13kMYb(Tavxq6=P1`pPIvsU-KDF((`21C2ad1yf8}{Px}tNqf243ckrB zZ08LQwO4BSID#*HT00%I|KN$|zLV~qN;s?U^c}}_mIH_gvgT%cl%oY@Ioi>{E4~wb z%kTJ)APD0mpWD2`Ve2wXM4V1cn);AlxE7mDV~=cdbn+-@U<{_X3!068m)U=0Wy=NS zx)jp5hF_rzlp5x9%?!3SxC+eH(MY}MZ)EK>a)AWSyn~DMOkn?w; zfK6T@Flb^q&d9TO$B0khrZ<@BZ9T@B47O3HajcM;w~`J6F$7+L-ATfxqByR`l*ZTN z4GQ0SUX~4(DQHOyK^24NCuq~UV0Pe^dxgR~xnzGW_psgBC3BV`#y`dcp-HcMhr7E& zxqD-~`$W$&>&p$5XcFZS#GLsC;wCUdkg_Vk^J$oN`GeGb9?ZwYgRD)8)<$m6#VZ3Y zk=uO^-5Q-Rcn3{-8LAAv=1gDTVzOy64|jxOhyi6<+leR>IPX8=Ix0!gL)0LJeKskI zfpoE>P*DTom3w;F<4Yi^5Su6(kC4W6p+-Rc1e|e^3YktV7V59~tG;CK0V&ciLtr^c=x% zd~KzQo=!P{;sqPkbsXneNrm%#?kN)IFV(VhLg?n- z!DxW8e%vJ^OwmO5&4g|z>_o?HX}eet@5qHI#JoZ&?D5sFn41&K7!9}Mz$P&eE<)*| zS4N7Fk@MfV7$cZGOJU~l@ED;$u(vPNoma-9|laSxxyDuH@nWdj$mUFI1YeGdtUvJ69=L@XEB zuW=pKQgN-^p-tJG-H%Baerl}Ee12T$k9%ZvRq7Z>_WL^F`$Q~`!zJB zoF7*)1oiGQ(95V(Uw8J(sP@DJeQ;^Nl7=m-X+23DPv}jNm36(`q>&Hyc>;LQfsJE3 zSBHs#gc)YRU^xK{qT=Swvq2wgKXzgqzT9I}X@gb018FX>^zf2|FQ7yj`l@hDFV|VO zJk4<;3R6fiBmmfxO&V1$zxn+PT!6GBvO$WLxebv>|xnt8o(e44u1<@Wn6A^sQ|WH4Dnksua3~ z1yobGGlq+_PFJ-pWIG=uQ&(j|-m0*-NoOP1!vTJ7LrUfC#Hgq=8)_2?Mko$eR@I~%dEr!ky(07bf%$@Sve$EGMnW*uK2RcjLx-@KR)pfk?QEZTpr3 z4RGE(q6Z_suzSW1+T0f~^@0&){K6Z@x>7HmzkdkrIyg3X39v*lSkeIuog$2?Ak=_w zd4FS#gikcaIEG$aQib=n^7r9~r}no;pT`psZKTR-JY7kRdu*SBo3&ze&6*xDJR%)I)lO|c2tZbIoy5EiC{kM~P zOTT}V)SG(69g_*UzcW;V4-a^l)?}fjzPJv09S3k)FSF`gLxM%SCG?%=&zGsUW@|67 z9bm;zwcANLh-+NV!vc~oHKxtd(ZFt;IX!ryr{PSUp#<@WfKWmwp%<>Eq2Rwn*Qp#z5^6CXjn(7F^YGBylm}IAHJ1nBqCEmu7Cn9|@HO-4LgV&CCL^jRj zz1<6k|K=)tv4s6ItkT9)j)%7sbN)A=YI1<8Rk4D8WfJ18JJi?G4!N(*eU6u0@}bA9 zr}2L6xpDHN^E_sZ`JeI(KQCZ#qVZF6tEJpQducDZcN8!ra{J5i47c)U@d)URbFh?+ zzlBK*bUmE0FzAZ9x3$`tlyV0&B~GZ&f|Z&FB6&Z zpSEUK;c)x@#h{j!L(6^c@Zo4ng8GO~c0mmYSNc5d|F|~DJr!2Xy%N$`r_$dhJ5D8h zMsNO=fbc|8{iC4z9#{_l2SN3R3G!i5y<6PlN%a&qX5-Os?Tb&Yu5T%OR!d5IHmRs{ z!ENeR)A}a+Y_6`cyB@l(P+3uUUNfNT*-rM9C+vauoqKT!-(Zpz1;G2}_8cbxp4KbC z1!QNf!gO5qez&{2S3dB+5K@?(~4Vp3rtU;sQ{`XW;LGGNC z)99bnz);lcKQ7Dz zv|+v|!^1s@c%S}dl1m!qy3<;<`52jHUfKQQX$3I&Rj{c0pvcJ6Vh{jYFxO?UqFo`+ z&TGit53-NdVdRiOA(#;Ds!#0z)H{(b;~Ft)jPF<{gPHJ!k#l%tX(E2YA{!bLl9oLH5OFUyMxX3=N zRXoU4_*jmRLVaK5jcEyp6*w*|9Z+_ypfr=2W<;j`xJ~;t+vtzG@1^|$qE99sK(yt- zmUAoonlw6EJA~CWr4V)iZL3_Gm3;(r|GEi%sT#Dy_wOF1t)Kxsc|?|t#Qr8EiUMn54FVhsMRe3+9~3tGp&4%!TnlgnU8DS3nVq zH~EPoum*U!x(ia%``jJC7XlvxtwQ~szRv|(LB2nGCsgke>kmoxS+KxMzYYxbBp#ys z!q&PtOJ=|g$9sE+vQ1~ue1d|$yrBvvMm56wh0ZXL%9urW0C;q+ZyhMRrI_6v2M5pq z)cIn7$~46^VF-HHrUV<1xCio98v$#)xqaT2d-+mFH=bu@BAr)I81YZI5MP%%bzGq} zRIJ`dc2u(+*CQ}T#e_El2?hhV1%>jDP+Wl|Wh+P`8EjZhu~yc}eAO0KP4ed5l;;Vc;xeSTNO<~ZlyAvJQPT3-SM zCAW7L%Z6W%w3O5keP*$3CA@(isbv7(z`(%%6+Xy`oqxamD8%q*xhS#ShtUcf7s@u7 zqX+A~NMkP72@xqyJm~=pha|f=&jD>FD|V>HJ($$M<`z3QsV&R#A0|Xi5dH2KsM73K z_2N(!6}?bx!%v5wA1u=#wK-0=5zsC8pr+XdKtAhdrTxDdcH_*0G0>=pH)27bBvLKD zwI*r^$RUM2Q=ipk{CKo!B znzq%>iHMkuWwon|XXUoFOaH0^F|G&;a&lm)ax{{Hl8MP0Z7EJwA(9s zg4pyYxDZmS?g`71vtT{zX{X^_auh(T2)AH=C?;kR*5sUi*TRhvruckFfCL_lLxO$? zeMGQQ^iz9*ZW=V<*!n=e^h?-59Z+XBSQVPmjhUJLshQ1tp^+CYY>+$pi`yGrvrMXx zpk3ljd^F<|5OX5HA1Rl|_?slqxbbv}JK%RCw!;sX0i#_4gA8#e=kL*KYA@S(?&0}m zg<>7c1FUy6&LMbj;ap24tm(Jv*QE7N!as=xi_EaBt_E^au#|l|v|Y3<4}SMcRpT=w zni!J1n%a9M1aTREcD`n#qG?*34OdtAoluZ~AY7Dcsv#_bDt!3>c%sj1Iui_3`EK1g)v|+K^Mfc5A{F<%}0nn$Fmo#k895W10tFGuqQn*kk2u1<-_Dz zH!UgaCpKNhYBGW}Cs%6D=I7SU!H$-N;z+>87NfvvOvz9-hKC#$j^vo8FPGuXuNOsDLYW=n{ zV{s$Zd5~>6C$U}>lmp42Og)XfzZf*hq9L>MZuiu-^gv*D{Viqn2m6ihyH{y+!hds173D#3=-emhA$)a$5FJ{2w zL3d7FzNHnKYG4q&3Vu&^PNBf|ci5@pwi#H-Dg$-Uqf6!u{gI@=kGHuBU)J3pw%j_; z;-n7?-rQp~#{$7%J&po70tL~@SdBRDhYPRKQp!H?~@3Ry?< z%(-PKw;EhgQVM<+pQ&O{Y8YT-(D!h|?nnMMbBV)ePpZxyKb0xDKIJafs_+OKmzp))+&Q=05x9;2%ipSZYpuny$xpT;QPLm9#D<3|NYvwi>_i32r5bBusGfAtfY9MC9_ z*gUV2Bs`$4Rie1m%AK4Sr-$!LJ5HpEMS_?Cos*Gg^A7&uv(+A z`1Wbcd&%H7Hp%*)V`xp-W*4`lEL{^T7TOyXt%Zf}GqG5N zTyj(5)bb}lJ%B}<8g0EyFkmcvvLQm5?e%=?mn5|>TG5TtVG#Y>$dehd{|6&aYS%vT z^@5ugV~exSc-Y>pS$kq!!KGn=H}P*GPsDf>;X}4n3l40;q^?hZs2l8dy3%wZFR#4n zJ;)G)-8xXpWb-rH?&FdY90s=UV0lyu;S_uWWoyXyVVKpNer!^y!0m^aE>j&OwaA!8`IjV;^k}jr3iZY@}i{o2x@c&wOepp3h(R zmQPsX>2M$Sdi%^L-2(qfr+1C>n{@w4r~gkneXff)iJ4|DS0H-1{y*vT|4FC+Pdfd7 z%C@`zNvHo$+4f(TZ9MmXr>_iqOkWA@Snh2OUEh##o1TgK36GgkI6)}qpi|E|;+n6} zPVqw!*S6lFS@P@iJQ5jbeIf%~e;{m~dFsDb0M~Xxe8-TtMq!u$Ge$PX1;TRk z-@N2Nd6at~Q}&;9`v0fX>3>h(j)-hHp#Kch#9_59QSvCn536v#Lz7km?~`*D(jvOP z!_k4_rN@4B@k4m+=!PL6$e-@~*WtJP)3<|jCNVi@QE|Ob5W^(@QtEw(nLl+)peIbc zIcMb)t9@Ve3@1LkStuJ3Pd=tlpw`GU`k5!j%0J!e^BzOKw8^*bB{^$(@T<(R+FH^T zaX)fz8++HViWwE`WRCWcM&qo4%&VX`##YjZNiGpN-*F!r`>_?5qGb(}>1xMS0962x zBU;ja(H)&`0?=aPnV?WqwT{?I?zhkiJed>>Y>x)?MFf-gD$b(+7#07_44FiAailPJ z&_`F{^dM+l(^lNU-bDY*a@+?-0F8=Y^$tUGzGIA!KG+SiGi~BnpmPw;(QNCS_Ib@C z2*Y=Z@>aN)QXk#~y*ARxJ;pORW060@eY^*J9rKW?BQSdL{~c<3bFOla3*xAihzenF z!Oq6L_~ivz_6P`7f@~prP~x~2ILBm_430V%s4Gdo+v*fkIB zucgb~;WI@=Ve7qh{({usN5@qFD0xGIhHO7V*e+fhuUbbq=HF zLMB#ufsJg!mXQwQh0Gs+$aQmp!jH2Js|xb#Mh=P>kYX$IEoSHi^zzcc;I$j?RO08) z{z2RWBV9~Hw=3M!jJJ7X!yf6Oax4WSi4HjnF||KlG}#;oAKGQll_P2W+BG%yb9K`)_6vvo$zIkH`nt;>s} zG*W7e%<&E?erZ$~2kcj#z^z&Dz&JW+jY=KwYDE2aLw=9iwcooGZFzp&IKJxL>9UaqGC-Kr^8ms`tynmC^|d% z`KW!Xu*;kC5A4=HIu83sI6J?A!ETESdJM3$@e#&<;4D<`L$*c;#-DC4ulU%OJzp`PnI)Tfd@>YDguA0^h;S6!GilJJc|n zrC92o>D(zPzfnW+0D`11)M!Jb6=@O&vWz&$3CT(bkvxP23LQl%?HW`&ht9!ziidBC zJ|-S$P;^JCT03$oJ0K2bpW3!mvu#0%?hlY)%yZt>5a#BjPIWi*>QmG`$Cj?2OBIR1 znrS?y>e;q#BruYg^W-H09A9T{Z*5-DzRtxV&JXQ99a|3^FvpEOKFA^ffcCjJs7Q<` z9+BZZl;Y7pK8kqRdy4W-De_M_lC|^rap#@!oLewEf^m^G7FbP32)XM<+CMSTUNi?~ zxB7m9{O|Z|8~3jaUr!4PjAoAW!0mK2X+uEBIJe({`=EmwuNh1L^}M{+@8!{e^4ymf z-}X!ky84#qRJ1I^|Cx|m$JrOxVxmpA+;Qz(!?6V!8}jTrh zPO;)VC%zy-tkDrL)dERWy7Kw+w24pj!35ESy<_c2;6?6pQsNt5A#A?3AaXiZSaVoIzo7L81QXz;( z5;EEr!1uT;Js@Q60sF7w624(B+j%jX>Y=DTm6Zn2Wbw|dh;&|43hQzz<3zU0piNQY z2e%+ak9R0jsYHP>%+Prp>t}-8FHyELMp$iT0LE5~^ASV2`pIM`=vv#cYvx@U!djO> z4dsemh7AKhQ4SRWlM#R=8^`MGu37V7p(q0Bc6fv{OPuHi?GqB{ri~zNg(cZEBB&3P z&L8+_)&gc2S~}4?jKP3y!b>g;0Avz3p@Uofr=a4$f~W7LiNUPkS4X$}R92Z}dmwXS zIb5>vP-wdteGO;<^l75^sB!p+AA(;Lew+5e3THoPOlUO8>@^M>`NJ@aAD$~LWJcOu z`!0=j?F>6iHE-h_n-r-SGLr2cwbgybGEk~&y4zLYwaBxN-f zVT7XdVhz{bf=9PF|I7nqaNlyBH+l9#!nRMKvVOB7cSd=4L80?jlE?_!IXNhHffs7< zPUx>r>)M;-xVd|GGv9t5CK~NDxtB;YDJb3tBAMWlQ@13jqjXFZ0{=~X!MoUYuu>eRhAk+#fL_ZN7p}rxMuHHeP2MU z@A`)@oQTuy84?PJfWGr2m>e?F({=NurcK0;>w<&b{|f$w*Dpe{U#_O|I=Zo+IdMGJj(H{YtWlV>tE|C1 zdKMNnLX_b^Dq8wf@O1wKFqiF2vVLzC-veSL+O?E19%)|ljbg?XBDMzJbku2Jj9Ac( zr-MU@V4k(uA(%Jfiu^T=8Lp1eIF6hH#__i4YSSDpwOkE~;^vK3*dy22a}!tccyP_P zekarYiL|B<_c`H19yl%IIJZiKw;Qs)RYRIh?p~Aw?Vqd&$h_1+S_ki=>n!-iHgBGu z(4Mat-GePoNd*heqZ=KpU>`6a4IJ~E(Rg3wh61KBg6Hr-=hBGBlo!BtFV-g#22h)o z!{|-iXktNx4FIErO^HGyu4wSo7O)PXjVSUD%;|qgJ%6r}A-sS@U~7hXeP4{DLoTjP zs_S181W7XRMX9)$!~lI8YQ1 znCzQ2@!h0UnTE!K8f@${W=pLDTyLp)=$F2z zs6p|iWCv9pWqKh=tmlDA1gtU>Ct}aK0|y>rzyfi3c9gg9YN105+}{Wx#PYp{WPf0W zFetS87mzC)llgk1>nF!Vj>jScJILe)!GlARC7Cv$>l#?j>oU9Ro_;dR$NZ}!YU)>U zHZ182JbO7YoMcq-Tq|=xfl(p*c$yh$Af#@&k0+DZ4 zS+el?E%pKPN=N~NQ=?@q55l1h5d@-MWUCTQ{&R^=9)MhkYH_ODGj}Bd>paN|YoYhlMuEbo zJv**{HOKGhg6-`Kqt2?D;=Hb{izqsmJD5FQt7FrLn>3g`P}&c`f%$_1%CXX5y$q9c zceKmwJuU=$RW8;te&cm={q2>w!rweenqiLm{Y=AM03(?Bd}*)!USCChIW8Q1MqcWC zW0dmY@rga64=`0@8QQ z*dq5~g#dFY8{NqA5A!*ZoSpI2jy?8Go2R2u$K-7r0!p`eD4k+IxzN3qKs5`*?xDeEm?l)!}Uc;>rhO-Md6)b0E&SwYZ`7d7$ z@s5i=GR^iboR)A`&+8xvZO5+|1)MJE_D zW-m?3HZL!Pn1N*4L3k_7h_v>J+vf1P*OvA#lVo4VeyOB2r&ea)Uq0BzfN!B=(0kF}(F|@3*W=Qpeg-bOc zTBWQkp@u^k8k`pau3780GPz8B=Z=>a62A6C95MKGb6gZv%y#>Culu61r#^NtHsgh@ z-FFI`Jwfo|=g=mJZp4yxg+k!fVBj-IahJ)4u$=8BH76?yAiHP(w4k64ExYIwGzoy} zhbT%zuppe)Z2xW03devM}Bn=igw*3$E3-)lmv&{x$yp`KjY!1F?Z zZ+VYnWTQ#f0z&5;t_zVFS7?U7*wkKfuk8@eIvr?Mn>QVEQ}i66))n7XHCLKJ8ZB?= zn=;~JiU>qAv!PlfP6ixhR=kN8_WMM8cV<^yT%6#GmI*zAkXKkjWw zMg_Wn6Muj;)#~pRI+mGL9V6EDPh__O_&e-LGVk2Rk# z{emT5OmZlbuuNs!ji5s}o!|`~JomXm#(2lRXXp|qanK`;abNYE>%Wismmf|Cok|H82pNS)sT;ZN#x zp8+Ll_NP(e9Vg~I*@b#~1?97T3#g-y}EXMEn&KS)Hyc}Kaq zJ<;Nhm|eyVjy+OqWs>!-j0D|2E}6bRHzcYtWI@q3PTQ=eGUd%VO0aY%315NI<y7csR;N%7G)KDg=y8^Q6+d(o|GWl;rCGtPY3=4^qBxmi3 z5rO{bdo1w-WIQz2sW!+H~vy0*OgFsUol6Jr2@ zFIX8AGEQ$Hi5v_BTzleTL`BauHPCy|tN=Lt>NGy#C@V8~wvY8&4E9^<{N7!a|K_F% z;|&+1;~-1aq#62=w5JeOP%CF@tYZGwWA#~XJJPj_hoHb z>mjyX#ny&!0cBy~p(DWo27&Q8BVZtG2z;bkB} zI=LO2@Yl>Wp>8h;@7W^&ye@w8nTDZ|2xTD&9MYy1*FY0iN)1 zBv}pxL><=urNe#Q-h92{Qe#CI;Hb?1tyjthMSg-YiGHBLrU)#M<3TS{4*(7WJkJrl z*|S1wO5f%mdzK{$+oXEOt^2p{>yAQTcf}1<_h;sW@z^hN)sSVE(-t*kXFEY3_k&re zR03lE%^kt)AVJ+6){m_p<~cDo>6D_kaSMt65b60(z*cmi>wjj3GXe8?A<%m~n)s2s z$Jm{TT-%||Wu3F~@=)4fr)pFdnvoM2?$dDp;=_snr%%7}7XJm`c3{q8`4{;+NpRlt z7OdD`y{+F8!Z{3(H?SP^{&*FKW?f#rV25yD=*CB6d)$UxpbX64-wyd6Enpakt9tZDpE(C^Lf9hiK>p#;-yPlg z7Y&&(;sp53s~*~|u;_B>%n_<1h;Yb^!3oJuz?aKD2VufzZMyfp-2oUC5Cp!GYM|zS7Eu-h!x8zWt;W;-d{5tDa+{kR*k-pZl=#3CXfW$(Eu7Pitf??A<dtWwii*fB`i&JJzXsZ%b_*u`VBAXbhVg{FZQd6C_EL$^{nKdwhm3 z9sjN`2^kiSf3VG2dh~@M04vfw+&uZCj)I zwr|>FKQx}PnC*u-bSu~1PRxr-t?w=oh?Frol`+CgNff@end}>;b4*~jA5x0cx3^k4 zBu*RbZ)A7$?{TbWUQVK$%<*yW`1ciSrfK8VIv>)sm;hXSgF34V@(_{GnCNKLI0ux@ zAx%M9*Tv;hVU18l*4P#IBFKBE;Jl}*y(80O2%{40JVZNiJiyMBWck6Ib@BLSD-hQA zsBP!C5qH{ejW^q^Qmd0~rFh3qVocr@sa3_wzU!Bmcj|ZE>qjk&1l@7PpdyzuA-339 z3>ml_-Je+ANY~&K_KzUByfTXP<9Ew*W! z;T)HqP12Lq^r@S-07byH&Q{yu($NZJ_baY~Ma(Pe#FeF#%GR(0n=}vwa{+AjKsA!H z!R)>e`cG;4DZB{u^&!~A0$|wD3)_Fzgvf#E$j)|L;2G}AoHLp!ZmHVV}pS z9baIcrUmcv!6~nyFY_HoKC*zd;5*#Bw4UVK8o}(&cNVE_yN(~P?A%JP<(d4Xx=)CC z3+|`PFmo-t$*z``UvSfG7)6)QwdPU1Z_C8(_=W0^mRYgS)hg6QX>?`az0j~601&DM zuRyY2wZ7{J+tA9U;2FdDHqgE_6^ialn85kq!DY?V%rkE%6vf3OL?*ff=}!3WLy9v# zS%JyoR>{-Ak)~`x3HtQQ8Q@NY*{RpPuCrV^AI+kn0yUuKS6lU2Rxg zG)3Fa)gMW+`5=CL zQ?AnLtgJ?=W}h%7bSe~UnPG&I9@2>Jg^D$h&W*moi6qCl9n-K^xjm26B!i+l^27Hb z-WI|3%6U6Rcw3S-k4%2O$@EEX0ySAN-f}eQ|6}jXP*I{)Yg-kx zR>88wj%}&6%2>zJiW03=Mo|MY%9V*ee@Fyo@M3NB5%|IJ48Mv%@&# zl>&M>&)j<42)WaVKvJkB5))atCi4y{d!~~dbsH}bI!V>?KCjf3lAMy)&p_9=s z2I?lTT|}lDeM4M#adF?atHl)L#|YcNEi(-)KGhd8DU5W9O1Yg0nO1}V+R$VqhXGML zJO!{;zu2Jt-7^?9@gdqD2|`d2Eb*Dtga2C#rkm4Vz76Z%m-b!-vp^}?Q7N)Y;uX{* z5)fXE4M8v$fvH~}=j3rx6UZF^oQ9iTo*Z3MZtdU;HSZYD^Az&BY8$4UU|Zgca$l!JRXx`iUkaTT=! zydW^#0w^h_L;c#}jlF{1&LK_McHSpd-bkl^71vv@^UXIgt|;YbII+~%yiY_?3-j;| z-crO)u8${F{uB$=u)F&-$%uDyjOWC}6(aQ(m8~<*QJ?0=flr5^P}qrcDd^;A`|2QD&ns*Ey@<=Am6 z)N6lu@(RGE{zp^6CF2BK3KrIQe#^$|+<2`pMH@U*2oz?^Rf;xCIcwms*ot5pAADLKQ&y6 z%?&DDy~wVxJwiA>25J)K7tK$8|M;q|C*Z)FMS#yo`D&Qaxk)PT);!&Tz9d=y?=kxs zsQ4kv)5B-rYwuKTQqT3IKG`~-??k&A#G+m3v~;BVd)d{gkR-^$k|-L}1hy`^=SA^= z1tA2lc+1|9p6xuallQ?$ku9=b2?US)unC!PMAR#SYuon+= z0WW3_OR>zCbwVGZQQo~Ash>D|z6&N?7ql*}@lI3_)mOFk+X^%M#}1#Sn|HQHUWD}| zG1d4p&*wY}?Y?!p2jGKSphwS{eEy@H4I!$Etj6}s#=`o7o9N(K7*58dyLfozkR8kV z?Qna>{Jyte_&T|4CWG2EM+f zxZgd3YuXF?1<0lm@b;jU%iJaq3azV{?0 zp?zXn52k~8(m+XrL#Rrkr}k2GAIu9efNb8O9AJ9ft*#!KRjIAv_O#qe-W{(B6k1MT z4x$m7W`|h8Pj02c@c6*3YJt8HLJqf|Y7$07%uF?+zfQ0px8%yg#@Nz~6(_G9VqyN_ zIv6+h^$AMTd73j^(+mt-kZvJBt#r3J}~`}aE`^zdmI81a$>)I6IQzBy#| zvh>zLys+6C^bka}QNnGNSJs@g6RMMiFj6;*h1Mt`dv1qgg00=gOz_Ddlg1N}56?He zEG}H*iXY&ga3;L%cQwbNydN2U)aCT+z5;OGL1424}0egsWbL+q^_ews6pYhO~BB z@I76qunF1nTmTQvLejQn+_8qMz*8g)_1OZYKYb6w1D1XBXRlS!3DGnxQVHBnC1KJ- zV1w~Zzshq?g@a`wU44NSAwZjOnlx!r>?fHM)ers5KVYCfU@C}-F)=YWH5yO8X5v*Y zY&p6Lpq)ah0*QX82avEXl%dcq=Ynv-d{N zzx(D!oJq&0{|Rx5=@u|EJ1vC_R@J}}KjY&fiJ-oehW#{@Lduyme5d~!7sTcFd&1{1 z6SLK1<^rzPEK|+*TYF6j8V9EotCDO4`)jEc9_6!sre6`d|Kk|1*N-Il3_a`*kGgj} zLf&~Qq)r!b0hVyZ@u92MnugL>yF@##SvF@MR3A|e6TNYai5w((cob~91-rouIeEuk zu@ME)TRCIqdc=^QC>Z#ArmZTA79fnRA;w1JmgwfQI6~SO9SmkpA(Tto&$r{=JPvEd zJ)=Fgmq>uJG$~h-qUBllaVRIx3ety%fzOMez$%zrr1>#mn2C|VD4uG z^wtOw$8@@agzXS!13vill5r|$V1anxHNLitv`oe;OAt)`KY2edICJ}K&&&q?rCLZ1 zQ#7!~FZvR)JL;Plk?>)+rwN~E@LmqrC|5q-Cj2EW#Z`SmY&-~$E)*I-467yd{bH7Ssm4V3SngaSX7sTG)agh$K0qY(Icwr?yLgHTx?BwSch z8dGKeUa>~=uGqK%$nw87LSb8qC*JvdO(-!qzsM`4So|VME$pROu0t(|oHtCThNPS9 zX?H-}sXu&Evk{QcrH6gK#|+yfKhoQZd_d!4X0aT$TG&$A5o0&dMa_PFOJp+CH z&yg-@BEx?4GYRbsN!df^ZbrtmI5#F(^s62@FB~=eOj?40M*F)>di{52+iJQUGaIcJ zLmU3~zM7lW8#^h{t=6aXsnnF>Ek-LpXYNIdw~X0^*hj`_#$)ajUX4+icIYgx%E7th z7Id0$^zw%bZWV1{TZIH2!&j+SNA}L(!x(|0N~F>fy^xlCeEtjE^^FvlR%WM@K*+fB zJU>oZ?d`Ev`(O7 z{&7XJwh!lmmlqeGG*Vq7>@6Vsx~(Z2H>M5W1f!-x!}2sb zUF9$VS$kO9CHEggZwzrq*^fufBb+>@|Gtj*y3aFVz|GUL9JYltI{iMwoiUtvFSyN` zFk?Oagav-{HOrbxi8gyy!Oxh#GKl*s3q-QDhC(vN`E~vP=3P3m9MM@#gj&F_ z4#dIMAN1#GdSM&|yaH8>>0bW_A}+D?AzV3{Y(j3ffo?YPdQKza)EG~~OaV>HN8QMU zmX0otmjaxe1SmOj!;Nx|@gxYUy~^(8LhQy#tiWwgCfed)48xl}zd|lCyK_yMML1WF zZUQb_ccHaRQZ0lqzR89|9K$^hz0Yq^V%K;?73nQUdfC=5CDfIQL=q9VN+PVX*?1f!k5j{<@k$Jo z>$b`O(~eaG3q@DgT*#lj-8UJxbFs!aJ~1;aVor_S*9#HW+&Kln_x0;Z%4D~#N+>3$Md_u8&V@9Te#?N0?T z_8z{Wi_xDYbytj@iixka-_GHQPp69!IMLn)h3Y^XTorSZ|(%e0+H8t*`|`y z@{E=7g8DFttKIn-P(jxhz8q7YH#2oZuslw0{IKO#WXtKIY~sF|p)wp3F;hyy>G67V zoygLtPa*xyK&-uwKM(`{WQ?Ecz5sb$P&UX+*^Eel99uy$oGcpro?DR6AK3&q+LC<5 zH%(i1FD9oSd}&4Rg^5PQ4Y`I=(lZRqd>Af%4$NTm)w^9Ur3JJ z*fCr5>yx8e57n#eeW-6)ge`z_#EQ5&P+?TS%GT*NX=2e{&Q3~1-)a4*Y=i6xJy0Q1 zV`Q1;9X5(hb9A?fmk4$Ya1|k+@j9lj!v?+fkI9e$D;9IR6INi#Ct;nL9x*4)_;0$5 zOWfeow|PNrHgQ?)E^ULLAPD~O8Wwh(?{!o!R~TPCaImiL7KQsvVdoiGQ>Dfs$4X!k zR_*-O&qP}0X=VbG%5sY(sI8ajy2%DSdViVh5^(= zqW0DSeNUe}-eOq5HJ#xNfYfm^j?rNN?#SzaEi#T(`}oab>gv@Mb|58_`#_J1ySt}$ z0Tw1JfWh+j?bllm%{&zlJDD9rY1wdkWI>X_Ar9FA+tFnhGSqs2G}LegzD7x~t|!Io zWv5P6;tZdW!@YR=ZIpV9wHnP$9kZ5M(V6ji(oE*HZ5cU9Z)17P_;E&^h&}}a2aZX` zt7}*r)OCrSgo||#=8@^>=Q!p>&usA`hNVdl)+9>DqbwCr9Nu$QqvCFmmsNB_Q~`)% z5BEjmLEymKfWAGZuC} zBvAccEb&M7>67^CQCA@{imPu8vE<;?NuwmGXIaQ2T^iAZ;1)n}ZiZ1$`0poOLP_8D zrdx{q%s)ZwH5M@YCf`BA>F7eQ^915|Pn=a5PSml5*j=szKL9PJ-0WFsoE@(Q-)2#$}p$^cMZ!|SEeW_H=k#{WEMt~Z$DxRpXAQbV|7HH_= zjs;T&Q&|(os@nqBJ6GdH=nP}qvkAf?A)c6p#w}qoO?zbjrNyuAQx5hjtRoeJ%Q;2} zb9X&rE9++P2J-e`xjBtnKvr;Gz{^SWUT8<0R{?hZcmjSr4uC0Im^B7pM0J{fFl{K3`H;87R2i8@m?v zaOAM1r^sONEdvL~w`VMb9lGRK22_T&|U_{=r zv6wd%bMfc1_n?N(EKlmwg#@j=GqhSeh|29_!2dUi=x?aEffc zEJ;?@z$ryz^xg!}F*1r$LhPqQW$)*o`hDHcN*I||%DbzxfonK9iZJOEzBA;&pllL^ zsON;V31m;IvlRm9iyxl;WB2uRsx4lC?({qR5Z7_FbE$Ecwj`uua=zkIxxJTf4+Rdj ze|?Yjr}pw*sl2UQ))h*&cN2ek_~}Nh)B+O(%Qrb28ku}66cxwB^vI=f`+3mZ6=qd) z?3U(!Qej`H>y|dK1u8L~MhOjOV$-E>1pou3y2%H#g4*vuzpOK!Kvf)jPl5`gZ}RK= zOeQ?x2+H2O_W<59d99SU28SrmW%_6#nsQxO;$0rDfk2`~Z8`f0BlblV{`kh9q3p+l zSim=l2)v<(@#nv9eX0SeOLS!WYB`7}jDdJBlyG;I_3}4clNZ*1JbNL$*GqS(5Zy+y z`vd3>m*F`R?j)W6#spZkKDT!s!W;?SMKoCk<+D<;yS|lx3hD2cYAs*0jT4&|@HCUb zHmr!ARHM>Hik|9QmmtO(m*ubAnfn!1oj|lGRh_dTZzA0FTNt-v!Bz;H>{y?sCx2fs zx)M_BGV1vY{{CFs!Uhewp%ieLTy+L%*c2L?gQX{S&l(!^kqzV7>|--m^u>_N3RvrS z{tG(_M?8Dp$RD2lx~{l*K%mgZMFJVxx`f-+Yy7WWgoM*LrgO)2<74P{12sFo^GVDu z&E5;`LP%MB^Ubx5mhYkyQ^nSY921;`nRsyW`0<)TWuUO5&b*uG2q!PAX3;ORSY@~~ z2*auy6vpR14labKl>s|2W8g*zbg^y__LxsO{OpOJbzpX92`6#c`C{sYLs0g&&6Mx1 zEU)ohxY@F7^yp(zDyabzF{xvr-FWkOI9;~SyfoI@a2Bp52+=skN&s2-+$K=n>A=Av zY@5d0!}{2ly@RCsA;w{r+HX-nEigE*5@|tgGx8O%u@G)-t^IM8zxt&Y|LiZ5pLc`S z?go*60>BTS?DZLJf!iDLbZnmSUIUu}QXB|7BQ1fvQsNLkroHlR=lI_5-)RqJxE9r9w0AmQI&72Zk7LXWmzn$N$eQll`Jruvy1q z?c407A4d1$J*U|6MSAm3tgnY1x2e#cD*%JoAv!ojAE)R@w?2tV^?TLuIWMse3G9bU zRnglm!r_#9Q@g_WCKfdfnR^km$6iCrvz;fSH!3F5nCmrp@-uDIY#jZCh+z*F+7RNxIEux6VoJ%OI)TgKCm?twn0K}Mc8xyrR6i6r0e&Onp5yK zD4pR5Ad1P3~B7$?!32*=l%Ogpq8!f_n4=`td3K}_wT2*z+Ozwnw7}7B^4( zOcsRMdW`~#Im$tpzlEc1CxCGao^+BUZ3*+yBeznP2O5vYOdL6M5ZN1AP;(BP8W71l z5s`YQ38VfRZ3h9fNhiU3x#OI=Es;p>;SL|cc-^RBIZ5UhxakVp%$bmh|-o)RV zk+*v)`nlQF1-&U7<$^{^?VVl2pxun~?noG{SkTwG_Afb7{TwTW4lA8J2wAHxcld@n zxGASy4PjDCFupYsDp@rHM&b&PfN0}L>uS)R_rNL%gw=sL`UZhdLfaX>@!PN@$u=XH zg=X;jwHyk39T%OIdaP1=!lzAla@tRn2`yf-L3u$1QEMjdgr`uUG;A^N;$cf-YC2(V zizoK_C(iK20m3ScuSk>6vlMd&?8zh;%*Ru|Mls?+(QPKpNrvQI`oM-$OCYxjBMS<{1Zff8TQbj2!O-R!c1*nnx zSMyAJxdZbF9%v@3fh8H=7^lw{Q^&&W&zo(RFUPd>? z(;YdoHn0tzQGoE+R4P=@Byp-ac9r2^qb!c`xF1$snz88Gij4~?t??-X*ttHX6U1W* z@Ky-hScHJDCz}5A(HSy$F#zes8g59qCn_+=U|r!g`oDYu0?IY&j~_l;s1ySW8uvv9 zoL6K$1~jKx<40Lk#=|gI|2ODGxjhuwHcMtbqt_!5^{Qf^N--FlF6`NxugDfy{H>78 zo&_t2zW^qWFxe>SdT$>nMz*rN~0dXu@64WLEeE2jR%v06EF zAuPolos~BLp1=o?oTCUAbh53r6@oju`^0S(801nOD1~~Q@7e>LhSMs#3UBH@da@wW zyh+}2p4a*yU7#+I^=9)R@Bs(vhz7n76hdyA;k=?RPXU=m-FSA}z7+QOVYD3Af?usl z1~brp9D|f%n8xqmo|vA+#zy-W<)EMvoawAprkg`9nD{Tjve52h-tn}`BRsKcTmtCR z&+CH9(A1TTiS~aPSc~SSIlk$zBJOxOioG<#6RUaOI>wwhmJK$-OEbBhSBKMhcS7DO z1nau^_{;_y4FjrxsCnpc?1)K$K}FySa|T^Nql=}bf-1&xyq$G=K@Hr3!l*vXWG*N$ zw+8H5CvAO>|AbIjn389`2aepi3`ZyYRFjFTaCAYCAp4(dTy zxOaL-vDM!}?R!VmAL#`;aV+4cknpM_m+L(B+N>jlZD)E8#P`zMAawHSVKW4s$Gd zcyJ6)YAnaIT3J_g;W*IFZ)miijKqI){i|bAu=?ML8FiO^oONUUsDX6TIdP&XBj)nB zNjY2sWcD?LF-%B>(}Q@}$OA~Y4l5$jo^H37iR9W6KGUk!Lm3w)%_xhsdT`9I`{|$j zhu7{-md&eZUCnDfE9}cARL&vYfgBLm5=JlU*JV%NI#|;a8E~B?Ld;!dd}4*asZn7m zJ6LW^CWUkjJ6l+X=HTub@d8Pe$Cc(|Ud}u0@ zS!kEh`!(%E?!hN;M)3#Z(A-mF-3U#ofCKmtH<)2zg*DH*>8Zk+j-B2Y3g1M*^zx42 zicU~$Tb3A`AyZF+r!SXF>`+Ar1Cew$mI``(H2`N_V4c!J1W3PcO%>RnoRnZoty!b>co3bqr; zvXUrmE|#bk0`z$0s|So%L=>0iLl_-9UjlyrPZc%NLT%9Mis1`zieKLre%HLYB2Flc_ukCCQj zL_@`!hzCafKtXLN*^0v`WLTTOjO>}l7IuqMAvFYUbEEAPx`W)tb2=kH!(p#&!Xj^3 z-z>tR_NmjKP|^1lZ$C*ROwOQY67?@t3@+p9(^Oh3AChcL25d4-#(X2F;GO^I#s?EP z?xxbP6BM3r$D6&#o*6!OH(|N4IhSh;w86We2uXFHxf_ni3V!^%{6P@8LWOUYsdSRA zS&RqFahqUX_CI22fb@T$dC@=WZMJXo?!?ouE6l2Fj6W3!SuPNu?TGVCpcvZoOsrYd zVSJ4Iws}l=J*Wsk6(4z6di)<~o^L%Jb-&@>P#=cgAn{9dk~1cS44zT!DTDYH zYhMYsX&DKG7!B-Xf&gGJAX%t&>}5=X(Lb45hH(N~m~9`#@C$WAejp|b5V^|SnM_uK zFtT$s@1!J^aGK6^QYt~Y?25=ePJ=V(xVH-%HY&>Df(9kjzZ@+4c*mZ##OaJ7103?X z&3H0$Nd7~Gy@aNYAA96k%sZHy@NfPMH2*(hDI`y7(dj+x*~s#c(K-x2m7}-5X3l0Z ziqL7(Xdcrp20iF=jbYJS@dUIRoxTRX9QB*_PUxQ_$IM|~>p?5~U0-G9&qid;?LRhn05(xZtscy`tn$JrrmpJrFg`6mbD7!a#f?l*3lQxUaP$a zlfM%^aB;d|PeqJDyp@bwHg24v4K3!5cm;jRbo`Q~<-Y~H^*r=e(a7$hm-0_U^9tR& znF=PV_#5Mg$s){#BfiCF#;}lXI#!h7cI5xBiKRn|Kifs(_vnQW$>tvg-Q9cS5Vthx zL1DkQE%unV=k98H)gJ_Wr?GNRBcc}ptnnpai=h{lR`dj`B~}5N!sTzPE%?f{#p%2Q z!Gj}huu)?FO)9rpK9xa?S*s;hTm^<+)++o@pD7rdN1On2RWs`=;3a5#XG2fYRjkR@!`M-KsEp<*T|AwKy1g|ydzAgC_%k;z2IE=B*NYg7tp$-{Ctov&>?`XEZQ2H<@Uesu z-;s|lUJwpOkj>dU3Ony9Qy#EzSJYMAs~DUQhNq~ z6S}!T+M7*-<$pUtKf(NL8rrx6NZ~PVf;}8nM&fr<7D5(|74(D5Ldfz2tWXo1DBxLp z#RP6`cateC$x;nyWBll)|4dCcUki^ABVhhqL5ImP9_x({I8=+suwQ(w|8^)7N0Dhj zk-9f;cM(kLw@E`xxm@!tKYBp_xKXMqW()V1a;@pMNfYGanz~7=6i;!JyB@h>Riy?; zlwFPPO~q=GB*9G$7%5`LOmM*AV~EEC0#(dUE?&eDCN^`NuL)hN!(mssb+snnOkiB?nM{?lT zG}$A-4Q5NhrU!mQAd5e9mZZ;p$z7bKfPPF$lz&{AF9 z5(f@X96RZ0K;Qj)l*b3{ju6e2oavv?8g7Cy!$CfMP87*@SFhyI_r=;IKRp=6LwVFD zuHj~B<6Vsg5C3h&&@sOGge1rSz(j1o!`iGtq`2S$IjjP#|HOiTd<7z2Wq3NOaRr9l zoLt5aG3cNq3A7Fm==K5j%daG@#C$PbSjx3XNda{KaVOVBrEwiag;F%Tcp8z)zpyjL)0uIK?B zsO6x1@F<>i81IA?Qapj8H;w?w&fk@_9XO7$U-7=fun2v4*GaZPe0O9jOnE>GG;~(@ zom3PgY*67s9L%@ElH)w8oI~d2fxp*ItsiN1#za=i$-y$A7o&Fh3$NSnbOet!XnN7EY`9nunS(uVVRdTfd|6| zGs99c98g}Eo156zoXH zOx)_|mi2;RtHFwG;mIn&ZOEPTV-~T5P2sX)@4_08Vj}@u#Vv3Z%Xd)_0l!l<;48Ai zOyAvKVR`Z!d>+|;tW=JpWWf%o#8M9sbSLLG&`7q`ZIY+Fw=qNmM*M8JZE-EfB7BnJ z=FyHeEMZO}IxYj2Qk()H9WjUQ_cMd<=q3)y>-Sc8yTQ{Dd6zC}Fm4aT`CK&yrrKH) z$N0u(Ny9)bzRRVCS#EL?a890zwgT`0R{9rX_Rc;MTf4Y64MLgKQb8D_2wgX~>x@hb zDn|R8RHS5OrF|76gsZP4UB`dXj448pCV5zqqKqd>_U;8<&S?cUhn(4RGE(KrYd$aU z%X_*v9xA1*C>go!bn09Tv>SjJbZx+qw2!-2WCi4xQ`q!;{(Nf@4wq!k43pax!pExw z904CT#*%|yOJ$mwETSaPMvI>UBLf`;d0J)|3@`H@4tl05q;T0y|c_x z0>}ug(JPJZx}H=D$%Fn4F-ZhHqPF&A90}VroXaeFQ>w`%O-imBR_1b^-W}VX?Q5OT z2H_ZQ;x-UGPbxQLDx)Bb)^J*6x&afCeHvtKfo$CtU~rHCYqz(t*#5w26JE{d)vWeu zf=usDXIamZic^i$ewYto{-FsbO_ZK0lAOG~+hWj30R0eF>0kk2t}yc)$K0$45PoVt zrSPU)70su3s>j`7zoU4mfB`m(HSyh(L5V#u6pA}B6t=i__irbB1Am#baC1;L&?4hu zgp9j?*aBQ<_GNZ!hc&3F<(fPc66P`?Bly59r$c4$zZ!G^UAk&NDI(}s7y@cEe=-EL z^n_XOdkJr)sV3E@JYJ<5U;1PBYj$gsd-t;0@q2E4nrQ|aHKuFCwcN}j!7B>5CGBd3 zULZ2=Q0b1RZbuu&xJ-3m*9UQJP&NWX*?edN*8!6Ie44<|a-2tNRj1Bfs_p~uU@5gN zj$D)M(*$0vOCS~I6vj07;p9y#T;kPWj!`8m*SbDpOiFnYO4=h39#|UFh$19ZvQs+n zJ@noIZd-2MCFrRX>XX6dWW$I6lfzrk9&T;UkBbj#ar2`kD+k%oROz=ALbPyzgdgV! zO_hoY?E687n_RU_<(HD;&z(jw#=Icg8LI6MTOF4i8*q5f?OBgysD}1xf-2qdz{=rW za2!OZ{G`NA#n34tIpYV-m?SU2LbK=;S@XW zDKP0pQIX#Xf8j=a=2ElJibK$d2pH=$(+3}g_9b&WZ=vnQX!EmLw-Xf1lEcwsLm7@k z`7!VBbeM@M-*WI^hJS)w;eVLivB>Q{gF6&qLEc3<28UN!R48W1|3z}iZ=@RojXUb( z!8rTdgqa_mY(W~%Xv)n|#tiPQF+*&86=F~ESd6j`Fke9n9x}dW(eDm@BR)U7EJSbL z95WNuSsmsweG8B??GQ8c)KW;Pah%PxPX$L5%MUf|b)3tDN^SH%9b=v~SKj)lXopv)+I`*e39ze!0J+&; z)c|zQ!G3I5fNzG%!KpdtkJT_=L#1hs`_Ro^#yF;;?P!tX1(r!N1?*ktF;0^=57ba{NbL@0D7?Bv3n%x$lMkOc|b=HW0Ct> z4`yobhT!`h!FFFgMQK^mXQDgrF#N_zY=kU&F18B}pO8z@{d&e~mx@gg=HL@3tJ-z6 z4EZ%MCOO$1&9T;eh{o)3@MOk)f?nC7#@re6#Eea-tiOEFBm<8rPv1t=PX5m zpD-sJyXG*0t$TiQ!%4DD5<8mV>=5P7GtX{J;$2)Ws@;6zf|UpkLf_qusn|*J0!jf2k{+! za$A06dQi6QpNp{skA4G}-a!0Ri_x5#?!)wyx}B3|Mt*h`=<~7-E72aCW0d%;=@h0($uqRCjprf`{Re}Dc;hV$oE}Q0Z z^{YtpRzI^4G*m3GCz=|=lk4Xw;z3?szow}FjDXtDJIg-&98N!S-*T9RH^>UZVG^B;9{jU^39lgAWsn*HZe!$hZlY+hmUv^AiPal?4Df&)D>N92Cs|+d~ zIARAE^6AH;`v0=Ygp=Mut|8Pzt+QIz6V2@c+4p(t6Sh^iG%kdSFvef&zA%#>@FPlr zoTGWE;Kl#r^j;{)vS7zH;BCqebYOA45Sm|;?6ORcNUK~$eN}y~s!J_7KbeuwWY;A0 zBA+k%mvL3epw7IEj$E*RnV@IF_QPVul?b@wZ-I2m)<@bD3CLt<9ciKHECtwC6*R7X z_y3E|A1m3K=X=&-1Wt-lXwpO5=LGPkN_$~lrGm zoWB#?eij@?&!8+}V#b=kXIHr{7&DQs){Hd zFniEg^%bZJNH*QOq^G}@3g*JU+&|Wo6At@@lliC#z-@z&_)UXHd1>*VJTEt*@c1X>tar805zCSS7T}PG>)LG zm2U1NAw`BzPS!J&_Zt&Ug9izXKdD8RK4OoX%TBH>!$yk7?jplXjj;po?4dnEJOXfI zl%1__vqhxaSQBY(!W$zBWqEtNHk$-Ssl5S;ns2fDx7BC_!^K_wkl9YQGD;A43bhwQ3jjMa`Kn@j8JcT)Ar{Y75+vOc+cwprc zj{gXtS*nGH>`}1s4q>Gf^diZI2cvVDW4s{&zB8(?Ky_nCA0`q0%(%z&U>Yz6!rWKT zTLKQ{YtZSVa!JX&ZBALt2~;!Y(OKJ6DUX$f3TPxUSDdVct%gCe=Oc#}<{}Ed0Gt<5 zLp%x`n7XBHq54BV&3jE33hr;`^Xkj9)J+Y&e6PJ6|jNzx5(UfTOFy?&q3TZ_=34uuEBo z1({|r%zj=&oC!}c$0tfL{vIkA!h5bu3FbQ3bNi=}#{1B3VzELc^A3%@$5_ZS9#uJm zPg+8l(^6q$#~0>EOus<=3TPpP0heyA0fnX5k@JwRd{4ejxsH{a_OjdZifCdV99v^zTEE{;fR(v*8`rng^{`w~Ln+ zDTQfiIqBwa;<>w$lr}QG!b*$4x*A(bT{UWkH;HLZ%Dy3{z9JmK`K`dI- zS2%&af+$&7QSl!D*jPR61RU+4qBB04@30wEbo--%fh*Y!w{Wd-AqVp{gq2z0$iz?wtuxnbR+;zk7ahb%BtF>jv(Al#6$`Lh%elG|GS+fa7f71DWhH^6hdi%F z^lV>Z^TeAJDvV9{ekXCDwlXV8IXolJ@A+-&efz#O+wS4{!LB}#G2$K?ueo3` zcVFu6%7>}CU8XV`RRoTh@Or;p_6kn&K*o;Db00-7N>=!y-+rhndmP`^Ts-zk)MRw@ z!vs%_t#Vu&koX<=L@@II`UH@|n)liS+n0e=10RRTa>~#0FSY^{mQd%5a1V1!Lqj!b0^(KO0?=QHY2ZyBU+_*{h?k>X`cFUMeO zKQRLFzh!!Se8^naAX@;f=tLo7C;p$&QpWp4Db-jh1lc4& zCa4)aFb2j!7s2{KMfcVSZn4RRSs_kOu3HbMr|ct5IlR_I6s8>52zL#o0{sEf5RI{p zf|_!`^MW>%?wKPA+C8b}!=Qn~enfvuFn-@IU$qu#09g)MVU}EIPJQePXdp{xc5pAB zVBk_1hg$$9f@5s)PuQ!6elce;en?B&hfDEQm1H?~#e@ z2}>zAxol2)yJKMDfJvW_UXh66je`oRkyBS&o2b%TnZ9N?#wu7m{7rYomJ&!vOt?8M z(z+{Bxy~%Szgpte;5vorX-qsDE{Gi}TA!jF=(r5GbT3r#>bPA@-)^+h$Nj`#pB$BI z1PYe~P~4VhhqT`Z>@(L2%lEXVRUz%67xFtizpK7beaI|rtQRyi#&fk$8V8@-QV3l@ z;9Uu-;coxr3vVBtGpQ~I$-@Ae{T*{^@b7-Q6C#V8goB~vKh4sbWPv=Q@KzeuICS%A z9eW*gAVS)f$ojD13|fa~q`2-j;SD^FXox8(5jK0tjKB%%&>UP-uqM!V*4ckFo@D)y zmkb@T_$(0;)cHSMPiAAH@pvQ(ao)PE?arxJitSxWuElq%?=6_Q0yxCZyA!TWtS;G~ z5x919vUFm{feENFUUduDUIiBhKCg=ue_{Oew)5OWmEgmyiHtwuh4sUF+o=SC+Ko}U zeXF>A-a;Tc4aCzu5oc~DEx6}3-&)}&xwzYL6l3J@E}XkR3W zBZs?)%706K-R2N!k2u#|S4rlc85_N3T=>Mar+D4rZ;U>RX0LQy?D8<+!Z1IL>xJSb zGH#AOOx3a}Qv`XZR1vRw2d(gCJRsm_>4MG(QfuRO4Oe^nM_e$`UBv(vS}wP&Uecmy zejz3-0lMve!TtRb8Mb7il&a7HMep;!-FJ7;E2TQ#3Lr{=4$I2~9ZHhM)Ib<@gjn&^ z&j1_TL%DdQ@{eZ!8#5w5i*Jn8A)-0mckQ*C#Fc`+0CO2cKYIDDZFvWbtR@2wN|4DJA1_bGy;q6u|q;bb*V2&$~Loj6;<@->+3gl8Z?VhvN}n=N-% z1*%M0{1l*mpbeYHOt9~1_D54+wI7FGeIIUW=i5>9TP!cPCKZsF>||j79H)v1A|zARJHiIij3-?p>W;#Q z*&+bpb37SvDGuJhr1n!s*gyi?h;E0WgqZ#z-BcZYA#sd888`V+a=w3xsgl-h4Cz=+ zfK@$LrR3-~D26!_Gy`3X^6*5nC5$?P*1d|U%h>G$7w-UI`>a5N#cl2>!Wn4+FRNYIy?QNwH*!#?U4M^1UHb>EhiFA_Z7B= zG}+5rHTen-WmUx1;hZHquqrb?h^QRIXx7%{HQRQ~NkxhIq13|)YHCI6JU{E0Cb*^; zAB#)kNDcd04Wiotk)Tn9B~uOmhkfXtqP;*|9-17_77VX z*tMHj<6Qo*IU)Yb<^<4krba)*0K2}f4)>lXLGQT>8Vk;Fhwr4QY3nz}-KR#g!~ZAXez<0VOpp;j*KDk*iUYQf-NK3*oAW22uXi$&`ni<>YnrZYX5+%)fsXHQ zKU)P0m?n2h_RjdV;!RjI)w4VBE_UL&*n!0Wsi>%!=CfR4ZHYOQP{;H1N4Wz##p-W4 z^l6^TWU7V43z4N+p*acmFS^a9xaoH00=J>>Fn3@tS*>r}R?Q&InS}Azw8ntnr?IpK z^apJQn-N};(n5OP^)=&BD}hI`b_tI*ax6GP4r^ufP`yr6(CbJ;IMII-2eT-RiKpP@ zVDiYLzfY&G!v}RvWZkcDGJ)R-(tFyMaCT4gs|C{x_eqIDM}<5&FVrGBAv&)AG>00! z7I+Toc#f69Go9k9kAv!}8SXe=V>r|)iD$>?CyZGdXeBwW)j_%_z%RD&2f=EW2HlMQ zFGCA0I5A2`ogChk>_w?NJtiS;l*2!m&UR>?o}I}`xrHSPj_B~5Q62O!^P$B2xX@AJ(1E zQ)4fx>0HDG7_?F4-8%wyf!8nJe|>W@v5)r4Ku-K8uT! zx|zIf8x1Hz$5y061UBdGwJ$&4EYl)5Y#4|H!AJvUN&!dyCfW0ngSY49+Lo!3z6GO4 zj>x!JGzDPUjB%3pDjnUK!!&4WW@4+qCq5*SnK63j6jbq^y`$r5y5zlnB)>Rj#^~o< zJo50c7!!S+J;EWQaOa3f)*T3ZXW*v2O_1qeGt-NY;9fql6nFTC{z<3cKe6t`zfQ#x zO*T#dVP0+zSYhej1V4m*#dS>&Tn$Z$pOtBo+IW5u7iy*>aQ2z0e`4y3dCcTPtj8@~UmUep{DzZND z%Kc+OMGqeQv?;_ewT8TtNp5}5!p;p^6Sd4b11KHG;B7olGp0v8e;PpQM=is=kE+)> z&qGSIwmf8|@`iC4AfV5WX=^u4(XcJ~IO1wPdOqdl6tfBkfJAgc`(wwVVM-09G zq#2Q2Zb7gL-W6G(f6)k6KoOot*qo-w?R|&wsA(13VHO6UQy2JDU9u{FO6M^aPw%Vh zfA@SlHi!cX1W?xgiJEW$(x;q3>PWX$sCgpG6D@vu1k1}8QXYQ$>J9wi;)%m(LKllz z;~lGYPT-22dV}Tu1^{1eCMH7~Nj!%63QG-SoeZ1P2+FF&)c=$WJqu=(fBfA(^ww0i z=ZI{WghKi%MEd!*3Ot(=LkbAxJ1kVG?{@*^64LNP2B}`~g z;cXNT zp$Xbpdr|~=6&%Kj#OpjF{%_v_YRX}FkJ;~DU*zha_0foH)-Ni%tBMf8AM+aOIXcD* zy|akv#_+b?98gyL2$owp&*BK`^6wFmh%Y7LAo@t_JcSq@_u;cy@m`DYZ?@l^*qUiQiyfzBveVONs&PBMwWtvHcm-L8R+f zB*erFZdaH)L31>$XVcRLC3QSWFe>-ymPQji@Y`n}dT@sm( z^qx8hX&o2Xi3-0Yye(3gv|Ku$NB?AFApGQK+#|A_^#dBCDJR2kzsEEm;}g~#l*2d6 z!&t)pD7q<{Y)K>OQmzV5du`_qdh3e)L?0M&N!A6BKmi;4qzHC_dKj7|V%d;pCSlNL ztp5^p+1Z2{EYz4D@eCeeJ}aV2{`BZbc49Ya?#{OK^0z%;}$wzFvq zKc(C%Zw@Cq+1B#mzeuNVK=>HoscoDBz;PBsD*)GmR(O?Qj#&MEx&Vr!BPg|i z*8C1*qFA4-2~RwTEXesaW=zI=@vele1r;rWA#aaT_8B1ZI>V&hOXT_kkxJ+YNQ6`c z(N{xu`4hbrKxYsFC$+OosDiQDpME8wA*Q#=+Pmsy`pP}<_PK_~Vnefv?ytb>I>NLz zYYhPrnGIs1DvG!(vHIGe4TfuBLcJI9W16(0AmzSN*v}F{8gYr7UM6el=9++JxS>IX zU5^QO64>9HZ$^PdMH8rQB9@?~45dXAmnkGrqTxg;0O7hv!KCV(gqSrQ7=8 zf6b`gI05y~2IkG;SU1O4?BOO?E3dmYOf|Tr$*ui1mITP73AdY0K#M&eG7zAFQhdyi?aF(f$OclZ6U@ zMGRmNg35~8A^bIu=#L6BfUf;UvQ&|&7wDngm4?IdiqcZr0%2Zd;8^+;mTEXH6c97V z>)OOYmpp;n()A5%5+e>h_+`}i*+(O_GZIn(W>FvL4dx9_Oz*Dj1R+@P`t(g{k#sUi zg+IkC_~CQ}uaW&Hw`GN6+yWj8%x4WJvD$8@BWJ!ebUXbD#oQmW5@pP0dY~O~%yE+j z7l0?fuw@om3(+% zA!R`e%Ujs8G%Vrv`7p9rB z-1WN}w1y~-5-9a4<_Z|0Tc$z_^}FTFsgClqO8^km&l@v6J9q0%|oI5rYO z``PsGx?i&;IjRB6V{)8~RyMeLF>oTIkJn}aD+r+cppDhkWJVmocZ$Hou38jZ;NrPr zuUXm~DC=951+g$GkHTx#Tmzk7zWWal>Ud27%Swrj6bcttFMd-?alw=T>98rlf_(&y z_Y90{^8mbSt(kZd!AF-GnG-T@M*ARQ*9b4vl;Gyz&n)^`l?qh;N&@ntlH#KKV?~x7 zK#tP{ZJm=hu1}BUjqynme=K4J7GloKX$a`R=nJ2!}{KU~I0 z{qW!21*rHj!wa3<>ESgx$f^=WLWHH=Vu-MuY+Gff#z#{8!IuY8C0dpwxkj&}XVIXoU1I zFT0SFIxZ+1ehLADNtzn-4?`=J_ZR&-h-fO?EAGBN3Z9@bS#Rt;RgU(ME`FYP0~q@) zCcGuqhQQN2>TGpuc?Zo|<1!^cGyhqDV9+*pcPvy;ZXk(H?lF8+v$`+-A6F)(b=LOJ ziG1V3LSVPl+B{xAaXW8)gxLQwi`+wMb(|{(=wEdeTKvb51EI|+`QoUMHQpdK`s>G!l5J*r|RK$oV zh(N+3n=AoB$bR4Nc?DeC=l}kn=Y2lBANr{kLUQL`uk$>Q<9C3R8`L6~7+Y7BKpC30 z6jjC2C;jGoPAG-|UJR|%PlY#4s{;A_!H!=}&DpTiaY@e!`wln3?b2ijAR=1?Vh`%X zW@X!bzU_n@xMMhPoPZwwr_}pl+AY0YvZfXtKE+_uxi7;7vifnsvf_WCU@3AGERxf0 zfcxTJa{$5K#{M$LU3!t=t^c1^D?0sCp@|XFr;8HC6NXq|N`nrRCo!6b9=z>^EA?_C z=x0I&hEF*~D6_#k0KNOr+ZnuphNp)lyo(q?n^SB)_Ng<3b=7@^se)&3JXMvf0d!u% zHPr)Li(h~+1;_FCD?mz8vd|s0i-~esDHE^CspakUWpxeTnYt z3yo>Q0wEvk`28hlyOA?^D<~6{oMeP>Gp=XrOdz@XlrR9s3wj-CneHHLP3IU5 zU~|)5X}5uoMQc5z>PI)Tn9Khsn;z!a^zQr=9_07g^C0gcT)t0DX%%b^|Jc9$Bfvey@_SW!OOA%k*}SRmZ< zSkMgr4tl!*iuY$cxZHb)Xm|YvO?;W|L12HCq!QV0N$m|NL6;C=KPnVowMwcm5}(2g zG_~ClYj2m^&9UNZEZYOFxK3xU;X9IjSmXot!HBb9IvDQYTg+Ph)o9*Fg)7DNM#&;* zqFb4Ks~^v1=aFexdg?eWEEplov0dXXNZSNj7<6-n2Z&<9c+!i!1!MdOEJ);KXfNv^ z%Y`l(gdQa}UrO3zl`XKh>m9p-A!-O!S%ZqN%}B1pMxo!_eyjNE3JTYwkGXg)faq5c zcC`w4BM&-=)?-GaCq|ca3dj+1-Yl|)5ZEsX$aX8C>1YIwpUBc@~vm* zh6312%QGAmn1MSx6s~iQBTq@~H`TTqyo`ocjV^^J1TR=e7Ga3x^}8vXYy#VrYirBN z;cGFHqe2i$h+D(R3*cJ>U|^Mzy3H-oLUN}D5Xe%%)vBltv1XOZRskJJJA+USE!L3} zWCP=*;vTZ9suh$MI|PuBYHQ-!E{03M_*L8iMdoB-qvN)hB^%PZr!+{CY49x(DGb)IoXdRU%6Ov())(5B7@}T{1nI*Fv6;jvb z4InM8P}UPgb`1!@U@ovYrA}zOp)SUoX9izHcKIHAKdAbOL=W>c_8F>wSQ$~2p0I*G zG^y~x>0KZ(6auSp1&Cmy>^H-AAfjijNsHjeHRUMv%aqnE9(>KN zRt=2N2H%s4z0`mzq$QR28fjF27$mBKDY!^w%n?n;r@7Z; zt_xp4m=1s|muH3)Zm9g^sQx*=IBZkQ3JJ_T$~k4z{E@nAf%}SJH7vK5(1c zcz02EMxSxMT)&7J9S!-KW43y`6T6x+K-;4k0G&}6!0H3R!@ugp8D+;p@qM^#)HpTq z0$lBH2+nu?7@yzFAN)~1yvgzRZ_9?dv_ng@WHqmHS5qYjUOo5h(KKgAbydS*SHg4Z z06Sq$4vhz#-wg8hw78Ro1#exd;0>QL9^_G#yaAumEhYYBF5mQt(Drpqn&prX;>A>3 zW4n**vYVCuV+rSxh1J2wrO}*c>#&IbSsj+S{86G=Fq*T~CBXR+)O>6+m@IZ||!2Sv@g97b8qB_!whd~@1ssd+L2MC7+ zV9xq8-IC8Z4-&7!<6plzMQ3HMBJ5?G&v)ezEuotW`_4;K^MrKAX2CT3hLuF`6}tz_ zP)YEm3G!wR1Q8icH`EjJy5>Oi;0AFi6UMn@Vr+cu45zREYLVP@tSkKPj;VfrKjjVQ_Rl&v)Vwd3!X;Q`!} zyn6jwE0~Aj1{nQW1-P>!w~LN-zdY&lj;-JzIMrG&Ak#T*U@VC{c{kl|S|Jdh%8L3$ zx5z2r%D_gU2I~D&_}QnjgS~O~!G*~mGfjOmYaz$h222XDcA69R(>z!cn)#;*P_TUp zukDXW(8Ap%EO()gH*BIb!<$1-z2NvSkt#{x)^_hUA0)0F0yz%IJ>lMy`Q*L7%2f4N zJdRnm6I;Lp235p}UJT4*UlnjhtuYd_P`L*$!v2{<%>z+_j#*O6?(0byehgr&!r)0g zA0wjd-x)0z4?%6-t!1(Zvi!?S`p5JWYGH0t_X+Os9$hMY*UJgp>m!Y#hgPMIE$Yk~ zsq_)KnEB*zS+#!UON*X1kiiN5A7)wu#y#{7RrK+;0-gsBSQ|NBM zUSuiK%cSC#R@nvO%eF0$c4pa$J5~vC~1i&(|O)sBBW^G3p$(Djpq3I&i+VrHgKdM zl7eX%l3TkHG$4B8HK*`;>oWnmW8KC#Pt^?%%N$8}VVbS&Day{B4&gj_Gc4bNH=`d$ zm3ta=jsHgq3#PMsQHf90PX>82ik#;$2^|o*xDohTe}r;9>bS(&P1p$U7!{O7S%Q_# z#|Q`rd!FbFKxc>O@X-*a2u|Cl=*yB}EC`hhB4xtaiBF-T1D&FpAV3Yr)JtG0@iWo= zGHSF874fXglx?=1((r|`3jz%XrTYc%AmOBFXU7w$Ck^- z!KM+ce&~YsIb4_Pu>M}GX-kPR?&3kSz9|*}3D$g$%DLzcNp&YIt zOy!ck#pi_c3$&q&)S%>2Z)EU`acww6#ugoY{V ztWQXssl@c_Xi57nXhT}S37!x6Q^vE}!LgDa{c_Ju#BbGJ*38IA;z= zYD;ZRa$RqT=)c^!=MQ9*c`qEvU2Nn3=>Pyh67X2dDxr|*axDSY zk3l>rR9bSP`hcfB+i3koN?idSM!6oM(|(i>&QJl%$MhS_aq)1T1cKwM6k=T-!-4rZ z%O5DyQmr!KMkAawqoX7kuR8L0IMzaLouyBwAqk;n6yp(HMR>+r__H0s!bcrZQ^F zAjY3_D?scvei38itTV{V!<9|Xg<=c%-Twm>pVLc^ReX`j2bdp#-Gml0@KX*ffanCBc)IXFu{ay#za(=>KRNM(F3B*N4#7?Itf65 zvn5W-u5jMEQ*-J|3Md$aJUIH=>Qi%CX(8liIT&-j6$1+(D6W~7kpI)FW?BeHuz2RV zn(m9h&&Q$E7*c;hV1q;mfHPOkTM}MAA2{^H(IsOYT<-Ydn-$osXb_6@>WSe>!}|i` zasgQ*rzNAR*&Y+e9|Fi7@i)lU!o9rkl*+NQ(5bb~J};(Nu+o_i_;&lq)bU!D9VE<~ zYwrR9ov<+pVa3k;Aaq>82o4#9i7LX9y(j3^K*ts3ol!?f9$50>p1* z%;SC_XU5HgVfRj)+cXTsRpat_kl{*G8?=$VpkZh6+wR7-z{vbP?a*s6)P9j`KtP%e zm`&H@)I*sBcV@7%6#G9F2o-=Ela*mwQpzDUT5ONnQdgmBSqr)3A@<+iBB59v)}B@j z(D6HJ`;bnIXI;46%cU-IwtV<#C%_DrTZ$FqK2ChtCvlA4yzhNe! z*p=-9E8anPXd>6BF*s4nF{y0+tJ_ORP9O6E$~iFpeRmw9yhVj;7u)f1>PK__<>mjfvaXI78@;IXhe+Rp1 z9iObi54v}$os&u-EtfSFGEpFu*LW)OczIoM2kr4HoO`dTYSTpUASs+mhfjvU#OBEg z-FU|FYUWcxKIr5F#>;=)1~<5)%gTLQBxSSvRxOHfDBK>+yOO^hvD;&NFq8o>UpqWH zVtSG^6o;fL_eoy$W$6biGsv(M~hM3o=bLo z5uoqkODx1lb>iBUD+fJtAr?uKqH?J7Fn%3vTNUZps1eEEuGOQnC}Sh0tJmTw6cq)% zNc7Jft6>zw4jIk!Q~lpQGcQfO4!0@aoP>u>7tZJB!pE?Cs<^{Va?5RwNG&uSm(+kY z<`b-Jet8l*$_0$|1SG=ay4<`?^K6F!nSZ7 z7P8SC8n-;GcsFWNb`T{FC%a<`H8ACj7#^h_WmgHsU*xq%63HWuKjCkj_~N5|F|vlI z(DDiZ?=3vLAA~TBU+}_Q)(-VX3B0SV+woK4%NmDse(E_{a(5)Gpb5o|m2z~>EZtvM z(>;xPr?sGc^vzbHQ{T}pdk(MV4Rs6bFLDTN3A+&8QZcGL;Ag`>2<$a0plAw0f3I`- z)+-RK*k6Y$jp35ROA^m6hxYY`F%yvM-(0?QAk|5OQKH-M%X}P33vEtHas9r_FLc(k zSuzMoo4sFDwERdrL1zWZ2ZqZ|T5fZJggCLFN3n4#t(YF=qy;uridM{yvaQwZtvQbOUg_VY+|J;U#(I}+RlFguMK$&lNOmI(2%jXrccA|6kbtwv@Pn4xga;2Y{8%F{$U+G}?&Pnv6}c1wC?V@NM+v za!5DbTftzzq+4L!skK({?5!$s%cWs1W#cI8>m?SRt+#sEC{;oux*uBA(^1vV@e}ap zBExaoBqFfBL8k)~M`^vPqB}*!f}V!8O-oupp0Zy>RzN!}oM?xSlKp9nsX&@>){vft z5q1VXrNQp$$ZZclRauL)X7KLiK>L?Vel9b85hM`3&_5HzOBh@CK|FIM^b~5kkMOK# z_%?9m%OMFd#MXpTZLO&HPwtc4i)uVaF?bQu{T9~=&X1^kGl|L59})D{VZ&p1P9iSP zA3}q91w+_q_*!l~&q`AWiw3}ewN_9(;4RZH>FiT}r2+Zf?X)t1MmFR~01SSxKM5Dy@ejM+lx;#-$hN`E6 zcfg7VBZY|epK(5D@;l543>JcP~~oOyxs}pF_0-kKK@A zaDRWsvz0u--I0)31MAG*c!@1fSq@^zxTO_TiUOA9ge%Q&KP@t z4AIpE~ZMf zWH(;A%g^HFc@4Iw7xu6Soq!k)B|5OF3yN3Yq?SuJVT&B7Jj~3KK_Hy=PsYY5Bd*G} z?@5#ZWr0nd_!FM3Kh>yN43D@rhnDZrIYL4>HAL4sPEE(6k@z7(dpJ zfJe${yM0;`+0b`^^zJ7)gEfNwEAp*+79Uo?L)9H>9gSm7)(zpag*!ZcFxTihu)kpSu%!+=;OsYIY`_z}FaruQ`wx}1;_gsD zquKFIC&)1*1Gjq?c;ZVj1h527t-uAs?Q9cj`hMJmyF3rJG>_Mqa3u zTxQ`_Wi!}~O!s17r6o2;gXQs)(8%UAlO&xXbos;Y88joJ(lN7wgT`{JTGa{mwG zCJ^}PuwsSVES&DeeCHCJL7Bb{x-2CXo1pBgkHV*?mfWo>fH-qooy-~b+*lbOKlGFmXr7}Tb+bOtt{4KW{m4-0_8JlNWk!;?W8GnQ45Xas@ zkQD;+evSkT!D4XIj4@q`vF*U7I9NqfJvu<(EsQ80f=pPL@w#bOzGHtVCtIVV2K@?p z)D(D%hc~FmBT)}m$P3$FZ_p|Fx?KQ%XT#&g%ryZxKsCUG;b!JU1=rkFE#`}vri-G(w zIce~LM=9QMB=Ec1YYBT64Z;8`RPej^+ArDBEV(zwr}$mCyUuHB<&m!yYGFJmPpU&` zli#GbBBbyg+IHj!B=cswSKz?OBBN#n)x?st;1^@SMe|He%NrbfXDoSLF5<5acpuu( zJZBqtiuEf>?nZ}%#92^70hr<(yf8%Mj}LsS?ZLIRF&PgJVJ+PTUA;>t^lKx{Z!4B8 zJ9hS9i2$)TL9w&25dajhSOgMs9QOU))Cj%7xtD*eqp!Y=mXIq)Ni#iOraPTP2WNUr zps#!%v9^riFdyu|#C%!y-dzDNr~r_guwessP^FC2Uts4d^T;zArJ2AuFos906r&vy zFTW3I9LxO7M28ub9FmgFID(2l+{Q5!sm!rhd$`u&S;L-upyKV|SdMZV?j6KoRTwkH zCBI@>K_~huCNI!J4Bs#z7K|k4ox8se?btisZwa)dG2GAw9G4Rqmq2I%A+j-{Tq+>y z!)!zImXu;0pJF2%cyf1Z=sB$!0`7w~WHE~J25vf(1nqSL2Ew)M@?3!PNSBsV^yow5Ee4x+y2)q^n}pjfx7!y$C*%?PCVcVLk^SEPQsK zIb@KyX2p5S$G^UK<{NwzgH~Q+U^*U8ntG=aRL2b*k*U0RDiT8*6uvwlN}6LurkkfK z!ECoD`QZ6{dgv33E$KX+!cX+x7MVD*;UM;AJ=T?xC7YBj$h`}RghgDzN8hd%rI~WSx#skPKD7P zZ|KIiIgi}k?ttK82bRBm8|zapyP@q$+C;_d4(DHJ6SE{k;YoEIkV=Y8Oi`DREZv}i z`(Syo=?#tIeI>1jHt}YL%E(Tt!#vWj?`)_K(nB!kZV(;}FJol=PELB6jI!q8kh|K>%q{_AQ0{$i_fcj9e*FDk6WLMmo3uX%!1iN;2NZ|ETLU!M zQVx_}qiC?#p)(9}F8UJ*Sc+}N%qLy>2p)=C?lqZV0A^i6G%a)twHNzUTndnvh&3I> z+;wxuN~|$->hEaQ5942U<&DP&P{G>j>`luKEb~H1v1455GwjGKbj%-6!}so?D2H%4 z$|PrkEg#If&w%W{MjmI}m`JtUYb-=@q7SXkCWa;KKWAdD_|me!qd7w(dGB9nGwDtu zG-tL?9G&5W_RjW6VjAQifCbKfbNRRl^uivbebr|+{qqXsJ=bSC{XhjeBSxjcD>bpM3PqyEHF! zYoW6XG~@R!b(1q4RK9pIQj45VIzWH4C1{V0IUQwu=JFYx^3QAdE5OJ9;6ihz6WJ)a zVqCWuIrHhcTQPWuS9tiMB{g1d$XHK%h4X|)=jSw1Ow(3R%mYa@E>wvK^uw_8Y&LL) zuqJ49#)A)R%-|Klag^`kvQqJFrgP}a3a=ksUiMWST;M!z%v4?_EUQMZtS67KpQ%as zJ>duG@4a_sGKM2oe&Fr#I0M7*$I*{L$xM+=yQl_fHU*;9}E){@fr{tXWS3eE;ud@$Y5v?`84tW%2K2@$Y5v z?`84tW%2K2@$Y5v?`84tW%2)@EXF`L*jK|Vlkxhj1rJr9j{%rp zMo$q2pO##em{BGEHFs|T2Y=_uG<0hM?G2yX3;y!xdyO>1DK3)R$N#~7-<4$i2Uy!w zh*IBkxlHtwOFC<{mL*Z7GK2eA@95ZmJEg}#-SXknI>qw*v`mL$;w%!Y?ry2H3nB-Qu=w57txOO2KydNem=_2mst0W_!5a!gA> zfYUfzmyEm!P0TA8D{PDY;OSr8my3<~S6k9bcft4TS**33Pyow!{zyB<5(7g5D%L^4 zAVz2!o=+3`7%QQ5__LG;*9CC)ZzPUW`Z*@UW z5O*7~?;nJMSZdb>L?t)&tO4LzKZ5^VoJJmL+*V%4CqLnxPih{|JwT{T)#a2%K)nWJ zzv)7l%-H^zbAQuWGMi_!Vtq%&yk}dCe^+;{krs3%YRI#GfGGsur*$rG0F=1EzJl=r ziLGS4nyziCuA-<eMm$*?K5p00FTEyVNV<#)wj6Mo?x`9E|-NQ``}oMXNV!lvx^xp zrjj3NmQqbRq`pbx&_VeCuo52zP-D<{`^QamFhO_?y6G|Jd-1C@mR`PfC$FV96Kh}& zTmiYkh((_Nhwuoa zyn&z-0bZ+DA~nV(Sa$5-4 zN$LVaE*uVXpU(bbm_}5Ipk0Bq&}m={7%;Jl@%GqRX9M0A-7uQ z?5PIoi6F9TtRix-O5t#|y8+k^L$Z_l8V&)U%Jc|A?#DfuRdPc}81o_l&Ht)QpoB>d zo^(fx)kcx4W5f<@G2V7y#gVv8j(XbMU-mYGM`Ug$jIgBUUt+9t;07-{?9Fz0%uo+l z=K$UsA@?Pc$z*eePojkcnQyo2OBJGua?$-fdjPcdjbc!v@XmIx2lAl|hbTqB3DgV2 zE=etT&cYgS8dZB@lm#M@db8FTAYW#4>w=`ZY?-Y?OW9>9iUC(2AfMBe_8dvO(mHEo zWKe>3Jn(+y%&hOeqx)vUJI560l=V@zGSv=HU^Mcqiqga5Wb_GG&qek?bWWc5rgarj zHofW6=ZD}DQ7PUF@@=6<$|y6)ht(2$wD^u9E~Rp3ffjSm@eXRPmXQjMevaINM|5Hy zb&_Ru9lcYt0BAvdf*5@+4+-$hrkw)METkh80cRg(pA4K2=M1-{hT&n?{_FDL@pzEp zBp~0HlW;PaxaMLVEyUWw67PeVbIn&)oW(YjC+SgWI$z`cBkh-#S3^smz$vRQxoyJ? zdrp6dOl`-ZdV4A!12I>xJn$nhS8fIg&aY32rxo9*h33Kh0eCrvONX<>PhoxV3kVP>T1LIX_WwUM9x#XOFOy1T(p^ND-3f?5&3fg=d zKBpoIFum0CsNHyYH*ZfFxa8_fs)9;5BUiY+91R$mlb)M7 zxjm20{%_2jyq}*r(cpRkmgTReOn>~Zr%Wws`yFs5A>tkw;4lw-!O~T+x&oLMej2n? zr{mB7McF4zEkK7|nf@O#qJ|Qk>PxY(z}CgFmt~3W)MG)#Lwr9_0=DZ)00djA#;^7>Y1!K!MCY+st_TFRoErAiX12n&k zH@pHvEh#0(w7>e^9*&kgCopwwJdla!euC;D@E``2$0Vpgm)RU%tnXfxVV^#7CO(Ek z+flL~Bk0ZSP-!H{7nhC>MJt}8Ove3$0pwf3NeznU^H}--Y=i|F+Ba91gcRlH76}mZ zWSSDg7Q(vgZ3tm2_mwY7@jWq4K*u#U%N8zB)x@-R<{y(M$Cy^T>mz?|<8 zN(Lc-K@Q0a5^{0zrFarky;=5K>`WYc1xaB<$AeQ%xV^r$K$h4S8?Rm*9McZ<#zf~){w3To1dF!!4BZ!=IDgB%elaJB_p% zuKwAw&m-WG;zbDi_C!atwDA>h z8eKx^>|9xF`d#*@oN83NZQ*rbvFk26Sff^ zq1LFu=3*Q(T7YGv3FWk}#y@**!kG0Snp{qMV>( z9`L7ZoL}GM(tRGBiaDw1FRR=GJ^a3T0>+%Bn6#Z09Ov^x@;A>;qDembQ?1J%h#9+E z4~#C(Q@}7p+?12IM~H*zuK}t8w1OLCOSgc z(MkeVx=oG3+}1bGt<1-p(BBuXra8zCcv}EOIM*aS`P8rQn$@wH6>SIDbyE8+xyq0u zvcbW7@YEa=W{gw^u6g*q>$HNiEA>u1Bk?5K$qIT1o2FZNJ?nTZgYpDc4uBeT1+C|- zshNLK8NtS0Up!E*>IfJ4Q|UZ7v#q0?YMeC+4ZmzX&qyvDRCP zjOv)wl34q9Qu9f90jNA|;gH9~x8Kzf#>SYoH_s8k2Zl8_1pug>zVefU>xgPHgX-a|^m3PB@CBuD4}vd@}+rsPjRkYsS*`PLq+j9*od^f|Kt zo{v5pqC2Og?HF+_R{R3hIPzL_W{O9kb2U8VP}LNVxfA9Q19?)c!;5!Hh0EKd(V0G( zfA;Psd-k#YN2lP3C`+x@S|Y2u|I6}V67J$Qd}~|(;^PI#j%N1>GaN#jRw!Gw_Da>t zkP|g!SM4~4nuLcq7eya4%pN>gb8JmX;5(mVpnCuVqGGZ=FS1=gaT#huhY6QyE`S#q z?}WA;XZ(j52f&<16caim4_Ce5;q$U3ko($hhwT8fR&WS7)&Ua0#TWvUlnmGt`8x9z zC<-VUd#A_TInw%$yazXr&ztg#&m^)0kE+7U(_Y`atl>l+6aQqgc0K=}JIM zYliJw`(nkUFMO`!DE2G$tg?rIifFu&+;m!zcN8Sdz6_By%zi^`Ts7iD0Wxq}wPH;Z z>nhzB)XlxJB*=ajo3aQ7f;ebmSh1kp1=iL)kayZ~Zb^*wps|SjbXn==KH=~k3B^Ds zaN&I*7zZ4%GP^};`AJaHet?;*Qe2xwyGsk~2g`(j@#z}VKE7>j6UKEr#7j+0oeFKQ zO9d^=3`=hDjx`_HhXs^ZKR_8O1%~%IX{o7QpsEXk=R5Jy#H?7tpvX89md+c!qe@># ziGB>ub88^B)BoZch+g{NUjsQDJ@${e)JgEyVv0BxHffSUUF8vWP^0D1Arz-U*Pmoa zmJRmhEd|nvoHVmUIxeBFwO_(cHK%hs(`o zq(exQ2~#`#YKw*~%bsiQSrKm^J?O2_n2-zrBOZJdmU9S5gV$otCt^QRkGQD#T}(9Z z>MOb#9Io7Eh0It$@+S`~cR}5`+9+ z2N-Qz*T;stX}}pZi{GnFAThDDTKp|xpG*nHNfu3R_QW_{2}jpn zf#}+CPB{0gtZWsQk4Y-pE-;CHSSTm=f@(9yb|*%B*C^I*P}UcTUtApoUNQGcE^3^8 zguW|tW3wUan1$D-%v4huAL}O}O6T}l$PQ0+^<4~s%T~NfAiChT87679YRrdt+YWqs z=+H7=KSNf1e+;;-2;IEhI9FNjxhm!!5A zXYcV*ubtnWiSMnV&a%x9PGb#jDuFe+0P7#VfS;JQMlG3wtKR{;*075(uwz7rYKgR5 z878Px*nAvgxhKys!8zC^GbMf}+g6It?x>+PVS^uoi^jGy%9g0r?bJMsCCpOAd^X2Y zr7K;Btz*V!PX7;DGeedJR*(>V3oGqNSjOEt#g9Qgz)pweA0J*fz*box%k3?`c^{G5 z*AOgCy;PyP*vM1)$A+ZW9sf72mCNr|;00lY9;^N9<9++ZDU|6K}!^0%+fH zn0cP05)!(wLj5qLFJ-IN1?FW%^jyKd)ItEhhBa>Kjj?qK;)G>@D3XUsF1Bt4cRhLW z{#`Z!``W;%e)rC9pQ4ySMW1<16mrCn!z|q6tbK8faPFYJU^@>2kQ0Ejj%da zL96Y8>QA>}kqax(bi5=!>~JEa$sjfi5Dt+!Mq>lmi{Xa0cxEZQ?3vXV=mN3r>i=ak z=%d>)6K}^X7xhtH5jJ&kA>HZIMA!~k{z{Vc7ZJ2SF98Vo*8$%qQ15>PdsD?umL$ecEeU7`qOV zk5ldvoVO!*c}rK7!;0M?A9%#V@D&Ul;Ed!AQ(N#+dREA$$jzkZcq(dNV`#_w|JFNA z$xuvQ;l7WKUh?(xMV?`PZ{=ahUM{P z3!a%FQEuzd>!A!k_gQC7)Gj6suhuW{T!~6@-Gcs}XMVzOct%cY3w^$_P&EiCn_5tO z|5)(E-~stiBovaNeB(CM{n|5KZdD~Z9LiYu641A__V)#6Ppu5;mk-6Oh9hbMqh9XCpzyd5MGH6@8h>jgW(!f?U=Q*D8NoBlTEXr=Kr|+P0}`Y+!PN&Exc1u(3}$0x%2U1 z#7j783zFV-Balmr`#gF<4+?K_w*)}zM*!q?s)r;$DJjw8J9__69@U7df1 zF}UlyCcgU;@(!c>GZuw3A>KqkKR<|2(gEtkdURD-hE+lR%i&6Jw6NzxfSw9izqa0r zHnJ>a_*KF1dd@{Vq+VIWRr+js$?yf(eA#2Ko?!|^027DN;k(Wg5ZS~0h7NG`KOA-M zA(lZ&7Ei#+cz{JVy{%5Y!ht47N$m!4jhH>F_)-~%jE2RkKtER2eb2ehG&5@GbPt@=w@BEx z4Uz+iKIpqt#@X*aqp5{`zE|KCfa&C$(c2yFGw3OGXnTiy&n%d+J&d7-YDpMqwtyd| zYix|El}im8?>Cm{F0dq@!zxD_WlYhw!`Rb;9^}(zIzt&2iFWW^*t7OBp<<&fP(&^v z!K#-yzup9mr2h!4=cKKtwGbbFsB%93g#l1(Cw72YF933?z1MpOPK2mk@$Jx(n?P<; zm$b}KPI!EA?D`_x>qsD4DW%VW1E7#fVJLt$-(-wKN57=cBskR% zNjngXue!$^cK!ZZjO=I$9T)_Ir2>7mk$7piUGaZ(&|1S7gn-NPJPB17}RI?7hG6}A#Iz_!#B|;G5WoALrXaWOLarR zJpJ6#3SRr1(jy$(>eYpDyj}qA)k4V4{3Z#}A4a59V|U4?L7A9NW%*2)o~Hxnm`mTH zjO}Zqv_O-4dWArSM<7^0?*jdO(^xNG#4#{8O~5Nj8er&VkYEa~FDkCscI@tCv@S3e zosy2{5KaXhxp_3WEalhij=8jlrm3W`=Ujb=u>HmoM`IEDNSdZfARUd7`d}(Qq`=%B z%_uur{L~*dbI2xendHN5sT6meOQUUIn+i=LZL9R=E70D4G*dOm9b+k_euV_Qwkv26cBRGbGEX!;00S(ag3Hy$GJjbs zszdfVtsOGI_UKM}BnT4vo$y&G)&X2`!ID)c@cxDybaEuji{(Qt+?#;mZe~$GK=&A) zS}CVYXL;sqd=E>ji;f)ES+s|_;M5t0trEKS!&k19uxHtZ!RB&8sI{*exdht(F%XYU z*w_uXMJk!sUj}zdogP9qqrix(vL!YHu_)&^KA!Fet*2*9FO)_ zCqEixKuB&?4Lvmq-~-Jc-q1gUyiaInUn3yKiUc&EnL99EZpNKz-q0I-Cszo_3c=Z* z-@+3|cj(7cHGOcHm`>=uOKv_ybmYT*1=^h)TMIlNRdAcT*^z_0-NW@N`x`(Itf1q3 z)tZ{I08Q)?`0wg%Y|NmB1%x#>W3wIFW%+j>CPis+T=-e&r*P6C^3&7wb&R0p3bZ-N&wq0KpORFHjKiLA zcwhDaz(?mp!ORw22p7S0*#eIY1)~(%W9R`PeMYc2Zf{*6styxBz&9vSYna5;tKdoI zujr3JnLEAwT|nSq3qrSeV|=H>Q*8JaW#oJ9S_?rhJ-Wx2QS z-oJZ&-49=^6xo*bMVMVHODWS{@^r{9boRK1IW*Tt}l7j&(mf785d&)8i=G#Ml~%AA0U!b z=-7Akz?l%adf6TVWB0T(Vb9#^41vs^A@dFF?2 z`+~hGpxg?}tgidgScRFs80;?&}1H*KJsmjJTA=W2>HlCi*KtU{wtD(DGXB6f#-tZ zfzteAxIi`Uh1zr_#LGe9lXk%u7qYBdBSiU8&OBAM8A!BoKgCKuN2w~H=dRG$D%of1 z62U!tRA*J5^_|sS)c0e&yv^ks_4?Y%^)_O$CBF#vP+F!rVS8i3NI^Hc;dU0}ZbE?A zGaLNByuHp#Wy-y1;B{Kiq{8Ff78vZbxO7_6wES|__apzLSs-n+7S3h#dX-xMdYzz$ zpctCR*nr2yo3)KU|M9ww+NPNN$=DZYXWs37$W~mLH0CY3x9RB@U^u>F^5?El#;LXL zW8Ku*7~=;NlH`L9L`n9frOs%(gy}PFjie29N5R^`Y=)^wI)@9Q%@zJ%Y@bxI@@Xie04_(SX7^i1uc7vt|u0*vAu) zlt#Vipf2)ftbqJl#-kKAIK0})_$QC9*pbVY`U6g8qh5CWNo~cG1Ou}6dP3`hey49C z?v_0E&vVHWO~R}2lhKZg!}BP3DtK)wH4P+eh&bvteaVv?HHpfkCrnEP=IM1`u{S++ zN@+WuWU~zl3{S$-o++k|k#Z}V$Y4w)o*DrXC46feFYQ>E?OxlKN@^)?0_Z(;Nn1+d zwy0ngBoOBb7agigJ^Zw!RHuiT#|c=-=FJVF-iJ}S*0NN$bf@Ax5B)Y@wTM=tH>8xQf%Wu~#ceicfvhUM#zJoK(?|A`Fy!$`adaEX?aGdfD28dj!2FFO zEk`P8@u9X76mC#qS;z+`_DI?{DA$+7Xipd~lv(<^{XY$M&h~ZtJRM8Ha%HfN^79OvyfJc|eD5OU3Viv`-H{V2b^S)cE zx4`yLcC+1%^}JEWYNf{rgA~pDC!Ias&B?TzZ?CQ^rf>jxhvdFuf28+pH0Ox->toIV z#u@jM(cT;M7ofp);h#`lM}5ll_B-O7)ZCy66+`a?1}k=)sg$h3Fj0=57+;r`P>B@| zPO?xV8O|-bNua~mAgwSt!Hdnf45D28Mr<0J+hZ>^+FnKWt1R0?$RsL<{3R>ep@X3D z;O)*H`+a;TqT(!O0y^;zdYae&DWPHflZ1vrwG6WHh7-}@{a&*ZOCyDcFg#HYs#UG5 z(xNr(;{gGN{4q45uO`OylN^X0G8)`9#cI5qrvvNcj*RS*+hHAkIb0|D>xoDNwBKs1 z*|IMw`H18-}G7W0f*p)tYr_ccz)YX;5FdH5z|+bFks z1rR+r2`>@PwejrN0e1yiAv6wrREbv1M+E|GRNqvkMJQ?I;#q%**1RimlZ;x&Nr#ac z(FTvfZslNfW?R+Izd@=3)M4^0{JF}eiYQ1|?wzJI1W5*0K%7UrUa~gD|2Mwq?%if| ztI*A#$hhsZneppCl)$6+rzO35RnHs1VjYs(E^@?;vE&$tHQgo_ccF|2#{gN6p@-nU?+Bxvx>+GSZ(Zbitz)fEL=a|(hZ zi_xfkh20VT1Dt`o4LZEsb})$b`p=>@^oEq$G+-OG9K&oQSPdX;qPHK>k*_Z;CoaXN zs8m>6(cZ1>0k~KgVNffC^R3E^L$!n%*5NwWkq>Pg{&&VR9g}0E0;J-poiX-%f)YqB zyEORG<#ia~2DQat!Lzb(VJfPnjzF5wlOKNw!~C&*#-Th-TI-V9gv~QEQCeZN{kGaZ z*_Z+NvauL>l)3Rh>QcFF6PE`0h0e2=R3B1kg=M?*Ah6A~xM4<=e}R42im}^ph4r82 z8h_H7cdO9Zx9BfTK8OeCG|*xNWg5~&zuM4mC8+65y1$!KCdSreLPnM=`V0IW(dq}H z%SbOy zc$fgswWQAoyq*~=hauK{BFNjwe6wgRM)&j;c5H-wZj0Xn`+OH4_;{&;Tp5;%X2Me- z5RM+T`~W_DEwR7(((30vL2f>v`=u}qZYp}KLJ?!I_iT&nfI#K^iRx-4 zzQ%gw?cwUr%+0R!vma;RUZ%fGrasXU^SEg3fEow}PJ0YKRSClJiX zodhrz3$yvMb5rZFqFx4JV>{+<*uxtbtN!N7`$b!Hk?aB>MERHi`h0PBrTG&*B3l5% zhZ7G=O3I|xuZ6sA>5#N!P!lkZG3TiILY21er~}N-^Vb=o##n;9DkH0SB20s>P}+_F z^o)84vds;*(~?fw3S!cX%kn_%8cW%jN+VL4yCp5J#aY*7<{xVi#K$xK+nDUn8&QJPqda$}3y|=}i z9gO>x%pv>7R`K;bTR*hO;PA#O)o`=cZTWxLd-J%a&h+n}ge59qKx9#t)T*V{3fflD zvZU5d9cz_Z$I`lxTE{Yq8kH(bNDkC0b*xgQde@?)j#X+YMoKXvBnOL16#*3iktOVr zH3=bPKj*pb;8w?(=llGA&p*G{udmmT5+eV@O{#%r(7c%&@Tfr(hAu5;dcRij>At$8+<22rVb;`d(!k8=NJB%Q z^!!r0rykU+JM=(su^%<}IOmOz{_$aBx%iwO%fUctg_hMq_ctuMZ7K&{k7K@sxMSV@ z+_sP^fxO*YP8Si=##?%2=n@cP$A_gyC3Kd_8wBJv1q50XrZOT8txa{CfYO6JM?2;o zvBx{Ow;;gt))i-;jIkRgjAInHX37VfPnG8D*Cg)>NnGE8QpT{nAg%(iJCEi?aDSYT zHto%HVP4uXuAmzW17Q+Z$hCZvZZ(Ahn)G(C{`ZxO74Z=K?Cc3O5KjN%_@9mFUPlgO z%Dc+&-a3=WiAp}~4dO`QEoE|@gt`q{(-6zw>+0%~kE3w-cDHwORTTvaI$#tskgP4I z*hh^eO46pJD%fm9Cd04)?F*Zeba}*Zud2Ac4+Ab^X9yLVH}{v0KT#&XyP#4$RfaRu zG9gif!eZU*JpDEERS*5cnXvA(PpJWwhc=J>Ago}P1Id9mFuSxq8_ zZ6>~P$M06$HTOYV%`V=IFVV8`E)zVyv};zoD&nEStIv-wzT{gB1Nz`5rq`IM58DUs zSnX8f%(6wB{`}2-6I3y;v0fRUXi;!wkSyBz%lmDv0JBuVT@7vf%NS3Ta~SG!_m!+y zoz)ghbPmfF)iP|kq)2>YjH9PE!5p6i4ewmi0{W#weKHx+{tNneER?|S#(9o)TES~S zbwPo)y0ZKowiFw0Aook7Cpal>07{g1#A$+i3()7)fWRJ5Z#8b0sC`<{GEewpq(}Zx zTCboRiqU&%Zr&3Q^K@4rR--RQG$?(yedz17CIbfYL8>d7mFDI_Py_s|8|x+N>*+#( zZSTWI6yR7U9)oz;G4B+3Im`t`%8R=(JjO$_NlUa7%) zM~SH?II-c?0V6!o5?q*BCUFLLgftEPh&A7dBJ7<=SSlnzQs~Z_h@Sh>-eF>v;WD=~ zvDn%`Sb&6^E`kZqJ+KKXx78!6+KuB;1Tx>It)-=q4J9|O;OREQhYmmRcf7MdBw`RX zf>(l>5P*0exde=Zv8?qSY2)CxFk%kYZ|6G{qZ@x?PH>Lh-1cxoczBlUyVFA^?AfNe z-HNqEif5$v;MmQpYhT})ywAG=xj%33;q5%fJo&aj0yd5SVOfhFB6vA!s zK^(2^u0|BvOa|L!){5kz0S0kp;5e$JSOV*%b9Nb;pmC>#!$`2a-si|uAO&SiBwn}$%Tc#d24%jJRuH| z4VadfAootzcvMp9;J}2>`{6$vZ5nnztYJ4m*hNn;u%sb02N$Lxf}AMs&P~1l)(IQE zsO=ZhSRQC?LpM*jcru*OL6wuoti-F;Dyp4pFk7vquwBrLXlVlEthb4<`_kGereW-C zg}C0KPr+&&DID}ild2qiLa+)J`>zxu!J@Ezz6P1rG5@XQ2iJoY-TDOb^hA#Kp22wK zxN|bV`n@!{q0Yg!WeFv9h@+XMx}&q<)Sp=IOF3XrZ$K+7 z#DdEwKGmfsAmwn$TNZGm*Wfl4j6$st`r9U@YWY^^yf$wyq(O|i2ed?7KmYz2$jq@^ z;>B&<+6^rX=j;u4>*wjf>9BwRqlN~*PE2K^u4rd;K!9Q1V_ipRR-$8$b)-E0!VCyVN zp|cdjcwd067ekSj(NUpVVv=Q?d;kOTZsv?&s0k+QG9$l~(v= z$idOH4-{MbV52Acw}#iYcNrci;s{U-1D<2~EPwqj*OaOhdMK%D8A7*L^%; zs1_$FH&MTIyQUen4FNFmcAf+{yw4}YNRT3t>yw91`cSp(=-|m+-nQw6h591~;#GmM=1MOgJ z>96tKUzZaiy_D+lmG>-!7@O%+w+OC=b7*&-YjR~a(SYyv9)Z$SF1RR+S0zT6>b<%} z=DV$Gjgo6zC*P9zE0qfVdA$AkFd!HD%%TnPbf$c`?A45N5grR+moMZFS7)d5?lsY; zC05OiWYcmL&Z8pqb&>UrD^c#ZZll*2LrEi27-n-tswVG?XQ>KaL^tMP6aU+Ti%;Pi zMh*^i_i}TV21@tD+@@EvG;FYo^NUHM70urbd2`9&80^Bd1;Id}uI1x+EQ2Mrq1-_r zsk-Z%1+jG%R2N^Qg{aU9NO~jX(1qhk(o-OsPNI_OCzPH``r|X`Eyhr>=?*DZX02k6 z-HE?6?cp14LT@4HR5SQDxnT6uc1O|;MJiFxUqPy(+Oj18n$XP>>pgbm4TbSI$9R=* z`BI>gf%6<&){T%B`e{y0D_l;IE~R4(a1mXHP^Qi6)}=kz9hXf)H_KgprCF}_zcP?y zkBcW~!=~tzNaN3Xs*+>5k&&Iw5D$KY1py5ubInWwO4|#8fb~mBR7T!yj!E{E`+Ini&F6Rh;fy&30Zr2(r^k{3+5wct>R$Nia@#-tE6G;)56yVzeVfNb|RIDRHycV2R(VGwqD z=EkaTSqYaX^IJvf2^}+VC;UODC>+)``~Uj#M^Epx0G^-f5jPQVY$d(2*6C04aqT3= z*Mqf~)uA$-7jMZdZyr7#t@kB+781%3x((YhyY|)NY+zDpmeoT^9ghL|SHS(lyWyQ5 zl8_PACGxIZ^HTxzTm2IH_HnV1ERK{WXVy8KEd-wG&kM7vR}u1xSSEZDOrP5JQ%$?x zZ@a{n1tiEql6K?nE1;^6jKkKoggYns#*(1{0sWw?TAqb5QJz!oJt=zFuU7G5i|EaP?;UH)2QI@r`pN zqgTiEkN)_>bbX^x{!IdOl3rAILrS;JXK9CWI-Q>*pdK7k)eV!U1u1n2`=vDIP6UQ` zS3%F-+W^=4)`9pk|44^uz=dZiKZCG{;8XIu`(&@f6H)6*pjlM3mD>nPBz^|g z6OT0aN7{knhU;`ScM1nq?=W*57bq?{xQ1L4cfY0UiO~THS;;c z=OtECu)ds2r$rL?jt6T8(Bm2~eFKKlUd~QUTX<2C-k&R~NT=>2 ztnw?{6)^Nk2~5YXe9|j7Z)s+Li-}D zbg{=_8Ssw8#OvklWfJ2pj`a|9gjHDgq)Q9yIEC-S%}p|XjB*HM%D;?$__w>G@Ryk@ zm}Cu7NbSA7FukJuBp8)+=~nDD#N)E<^%-s(e30mni}yzZQ0?I@mbq0$AMWMPwcboq z%sr6t!@`K3BRI{VHHP3oR#T8~+Cwb106WOoKiAn;RppSii__bOmhjB&#E_ZL!?10g zl-u4Mm2k=%MP6}!$+KG^w<_V1q1w{qs;D_3-swqwyKq~<>y;^cmC71k@2RqFCcOCJ z5smq(gvx6WZ&P&xZi8zGCt=2EjpEX;k}MxBv)I^0;%sNd0FYGHL3*=@ zeJ;bhWh!s5AQkJJu~puRd-W8|@;w)YrT>Sg0pmFg`o)_Bes!>Tscwwy>FEVnk#Yi~ zb#$_n5I>7Zg9MQp)JkYJ!fZlHy`D5S_QB1kGAt@BKE;eJbqBZ5}AVUvV`j z$@8^?xL?Pi1~%Z5^o`t8M}D&pgTg>o4}ov^Ql^0TaSLy6+0>U(LB~mcBAV37w#F`imc~T7#Qfy<*ditWLf^9fX5$W8t*3|gLPpLNXMx>J zaTNq6eN^QP=}NtcDUp_6^%r$#;=x^8FP2-Si}%JS*M%gA*~$CZus~nbb;m29$v