From ccff3943b3912ec990bc8b18c824ca2294b2b8ee Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Wed, 22 Oct 2025 20:46:07 -0400 Subject: [PATCH 01/22] cleanup --- docs/docs/hello.md | 1 - docs/docs/index.md | 19 ---- docs/mkdocs.yml | 5 - hello/Makefile | 25 ----- hello/Nargo.toml | 7 -- hello/hello.md | 249 --------------------------------------------- hello/run.sh | 87 ---------------- hello/src/main.nr | 72 ------------- 8 files changed, 465 deletions(-) delete mode 120000 docs/docs/hello.md delete mode 100644 docs/docs/index.md delete mode 100644 docs/mkdocs.yml delete mode 100644 hello/Makefile delete mode 100644 hello/Nargo.toml delete mode 100644 hello/hello.md delete mode 100755 hello/run.sh delete mode 100644 hello/src/main.nr diff --git a/docs/docs/hello.md b/docs/docs/hello.md deleted file mode 120000 index 0c4d072..0000000 --- a/docs/docs/hello.md +++ /dev/null @@ -1 +0,0 @@ -../../hello/hello.md \ No newline at end of file diff --git a/docs/docs/index.md b/docs/docs/index.md deleted file mode 100644 index 0d0cf48..0000000 --- a/docs/docs/index.md +++ /dev/null @@ -1,19 +0,0 @@ -# Contents - -## Using examples - -To see all commands from within an example directory use: `make help` - -On linux, if you do not have `make`, you will need the package `build-essential`. - -Note: Examples assume you have aztec tools installed: `bash -i <(curl -s https://install.aztec.network)` - -Some commands require having a local network running (without its PXE): `NO_PXE=true aztec start --sandbox` -The Private eXecution Environment (PXE) within the `aztec-wallet` will be used. - - -## Contributions - -Examples in this repo are heavily curated to showcase and explain atomic functionality of Aztec, as well as slightly larger examples for broader concepts. - -Developers: Pull requests containing examples with code AND documentation that fit the brief will be considered. diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml deleted file mode 100644 index ecdcf24..0000000 --- a/docs/mkdocs.yml +++ /dev/null @@ -1,5 +0,0 @@ -site_name: My Docs -nav: - - Home: index.md - - Hello: hello.md -theme: readthedocs diff --git a/hello/Makefile b/hello/Makefile deleted file mode 100644 index 1d6d577..0000000 --- a/hello/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -.PHONY: all build gate-flamegraph clean - -# Default target -all: build - -# Build the project -build: - aztec-nargo compile - -# Generate gate flamegraph of a private function -gate-flamegraph: - @echo "Building gates flamegraph of $(filter-out $@,$(MAKECMDGOALS)) ..." - SERVE=1 aztec flamegraph target/hello-Hello.json $(filter-out $@,$(MAKECMDGOALS)) - -# Clean build artifacts -clean: - rm -rf target/ - -# Help command -help: - @echo "Available commands:" - @echo " make build - Compile the project" - @echo " make clean - Remove build artifacts" - @echo " make gate-flamegraph - Generate gate flamegraph for the given private function" - @echo " make help - Show this help message" diff --git a/hello/Nargo.toml b/hello/Nargo.toml deleted file mode 100644 index b43c9db..0000000 --- a/hello/Nargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "hello" -type = "contract" -authors = [""] - -[dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v0.87.9", directory = "noir-projects/aztec-nr/aztec" } diff --git a/hello/hello.md b/hello/hello.md deleted file mode 100644 index a1ea252..0000000 --- a/hello/hello.md +++ /dev/null @@ -1,249 +0,0 @@ -# Coding for Execution vs Proving - -In this intro example you will: - -- Create an Aztec contract from scratch -- Add Aztec dependencies and macros -- Appreciate different function types/considerations -- Measure proving cost -- Run a local node, deploy/interact with contract - -## Self Setup - -The steps in this section explain how to recreate a project like this from scratch. - -### Create project files and first contract - -The flow with Noir is much like that of Rust. - -```bash -# Create project dir and boilerplate files -aztec-nargo new --contract hello -``` - -```bash -# Add Aztec dependency to `hello/Nargo.toml` -cd hello -echo 'aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v0.87.9", directory = "noir-projects/aztec-nr/aztec" }' >> Nargo.toml -``` - -```bash -# Replace src/main.nr with empty Aztec contract -echo 'use dep::aztec::macros::aztec; // import aztec macro for use - -#[aztec] // use macro for contract -pub contract Hello { - // imports, storage struct, and functions go here -}' > src/main.nr -``` - -### Division example - -For demonstration purposes we'll show an implementation of division that is efficient for proving in private, but has an extra cost in public. - -Inside the empty contract, we'll add the same function as public and private; outside will have the helper function. - -```rust -#[aztec] -pub contract Hello { - use crate::divide; // Noir helper function outside of contract - - // import function types - use dep::aztec::macros::functions::{private, public}; - - #[private] // use macro to wrap for private execution - fn div_prv(dividend: u32, divisor: u32) -> u32 { - //Safety: constrain after - let (quotient, remainder) = unsafe { divide(dividend, divisor) }; - assert(quotient * divisor + remainder == dividend); - quotient - } - - #[public] // use macro to wrap for public execution - fn div_exe(dividend: u32, divisor: u32) -> u32 { - let (quotient, remainder) = divide(dividend, divisor); - quotient - } -} // contract Hello - -// iterative divide function -pub unconstrained fn divide(dividend: u32, divisor: u32) -> (u32, u32) { - let mut quotient: u32 = 0; - let mut remainder: u32 = dividend; - if divisor == 0 { - (0, 0) - } else { - while remainder >= divisor { - remainder = remainder - divisor; - quotient = quotient + 1; - } - (quotient, remainder) - } -} -``` - -## Understanding performance - -Since private functions are executed client side and the proof of execution is used to advance private state, the size of the circuit is important. The size of a circuit is measured in gates. - -Public functions are executed as part of the protocol, so the total cost of operations is important, which is measured in gas. - -We can compile and then calculate the gates required for the private function, `div_prv`. To see gas for the public function, we will deploy the contract and call `div_exe`. - -## Building the project -### Compile the contract - -For simplicity this project uses make, where `make build` calls `aztec-nargo compile`. Build is the default make target so for convenience simply compile the contract with: - -```bash -# From directory with Markefile & Nargo.toml -make -``` - -### Showing gate counts in a flamegraph - -The gate flamegraph of a specific function can be calculate and presented by passing the function name to: - -```bash -make gate-flamegraph div_prv -``` - -In the terminal you'll see: `Opcode count: 775, Total gates by opcodes: 5197, Circuit size: 5962` - -Also go to the URL in the command output to see the gate count total, and of each sub-section. The exported .svg file is in the `target` directory. - -### Unconstrained cost in private - -To assess the cost of the unconstrained function in private, lets replace its call with a result directly, eg `(2, 2)` - -```rust - #[private] // use macro to wrap for private execution - fn div_prv(dividend: u32, divisor: u32) -> u32 { - //Safety: constrain after - let (quotient, remainder) = (2, 2); //unsafe { divide(dividend, divisor) }; - assert(quotient * divisor + remainder == dividend); - quotient - } - -``` - -Now calculating the gates flamegraph again: -```bash -make gate-flamegraph div_prv -``` - -In the terminal you'll see the same counts: `Opcode count: 775, Total gates by opcodes: 5197, Circuit size: 5962` - -That is, the unconstrained function does NOT contribute to gate count in the private function. So the result from this unconstrained function must then be verified in the calling constrained function (via `assert`). - -## Using the project -### Deploy contract to Aztec dev node - -First we'll run a local dev environment, aka "sandbox", which includes: - -- an Aztec dev node -- a Private eXecution Environment (PXE) - -Both can be started together in a terminal with: `aztec start --sandbox` - -We will now use the `aztec-wallet` to interact with them. - -```bash -# Register test account contract addresses from sandbox, into the pxe -aztec-wallet import-test-accounts -aztec-wallet get-alias accounts # show account contract aliases -> addresses -``` - -Use the test account aliased to, `test0`, to deploy the compiled contract: - -```bash -aztec-wallet deploy --no-init target/hello-Hello.json --from test0 --alias hello -``` - -Note: - -- `no-init` is specified because we do not have or need a constructor/`initializer` for this example -- The last param requests the deployed contract address be aliased to `hello` - -### Command summary script - -For convenience/reference, these commands are consolidated in a script. To see them: -```bash -./run.sh --help -``` - -### Showing gas cost for a transaction - -With the sandbox running and contract deployed (see earlier section), we can now interact with the public function: - -```bash -./run.sh hello-fn div_exe 8 3 -``` - -```bash -Transaction has been mined - Tx fee: 39680550 - ... -``` - -Lets assess the cost of the unconstrained function in public by replacing the call with a result: - -```rust - let (quotient, remainder) = (2, 2); // divide(dividend, divisor); -``` - -Compiling, deploying, then calling: - -```bash -make -./run.sh hello-deploy -./run.sh hello-fn div_exe 8 3 -``` - -The result will show a lower gas cost: -```bash -Transaction has been mined - Tx fee: 33770160 -``` - -That is, the unconstrained function call from public contributes to the cost. - -### Comparison - -The above example highlights that coding things well in private may have unexpected costs if used in public. - -Another example of this is in the use of memory. This is cheaper in private circuits (witness values) and expensive in public (operations to read across different memory locations). - -## Further use - -### Testing output - -For a quick sneak peak into testing, see the functions after the Noir divide function: `setup()` and `test_funcs()`. Notice the more explicity way of calling a function from a private or public context. - -Tests are simply run with the command: `aztec test` - -Under the hood this does two things: -- Starts a Testing eXecution Environment - `aztec start --txe --port=8081` -- Runs nargo tests pointing to the txe as an oracle - `nargo test --silence-warnings --pedantic-solving --oracle-resolver http://127.0.0.1:8081` - -We'll modify the second command to show the `println` output: -- Start TXE - `aztec start --txe --port=8081` (in a separate terminal) -- Test - `nargo test --oracle-resolver http://127.0.0.1:8081 --show-output` - -### Profile gate count - -To see a breakdown of proving times and gate counts per inner-circuit: - -```bash -./run.sh gate-profile div_prv 8 3 -``` - -This command expects the contract in `hello.nr` to be deployed, and the contract address aliased to `hello`. - -This uses the deployed contract to provide a breakdown of time and gates for each inner function. This will become useful when comparing calls into contexts. - - -## Further reading - -- For more about optimisation, see [Thinking in Circuits](https://noir-lang.org/docs/explainers/explainer-writing-noir), and [aztec-examples](). -- To see a side-by-side comparison with Rust, see [noir_by_example](https://github.com/noir-lang/noir-examples/tree/master/noir_by_example#readme). diff --git a/hello/run.sh b/hello/run.sh deleted file mode 100755 index 4a99ee0..0000000 --- a/hello/run.sh +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env bash - -usage() { - cat < [options] - -Commands: - Setup: - sandbox Run Aztec node + pxe locally - import-test-accounts Import test accounts into aztec-wallet - deploy-hello Deploy the hello contract without initialization - gate-flamegraph Generate gate flamegraph for the specified private function - gate-profile [args...] Show total gates for the specified private function with optional arguments - hello-sim-fn [args...] Simulate a function call on deployed hello contract - hello-fn [args...] Call a function on deployed hello contract - -h, --help Show this help message - -Examples: - $0 sandbox - $0 import-test-accounts - $0 deploy-hello - $0 gate-flamegraph myFunction - $0 gate-profile myFunction 1 2 3 - $0 hello-sim-fn myFunction 1 2 3 - $0 hello-fn myFunction 1 2 3 -EOF -} - -if [[ $# -lt 1 ]] || [[ "$1" == "-h" ]] || [[ "$1" == "--help" ]]; then - usage - exit 0 -fi - -COMMAND="$1" -shift - -case "$COMMAND" in - sandbox) - aztec start --sandbox - ;; - import-test-accounts) - aztec-wallet import-test-accounts - ;; - deploy-hello) - aztec-wallet deploy --no-init target/hello-Hello.json --from test0 --alias hello - ;; - gate-flamegraph) - if [[ $# -lt 1 ]]; then - echo "Error: function_name required for flamegraph" - usage - exit 1 - fi - SERVE=1 aztec flamegraph target/hello-Hello.json "$1" - ;; - gate-profile) - if [[ $# -lt 1 ]]; then - echo "Error: function_name required for profile" - usage - exit 1 - fi - fn="$1"; shift - aztec-wallet profile "$fn" --args "$@" --contract-address hello -f test0 - ;; - hello-sim-fn) - if [[ $# -lt 1 ]]; then - echo "Error: function_name required for call" - usage - exit 1 - fi - fn="$1"; shift - aztec-wallet simulate "$fn" --args "$@" --contract-address hello -f test0 - ;; - hello-fn) - if [[ $# -lt 1 ]]; then - echo "Error: function_name required for call" - usage - exit 1 - fi - fn="$1"; shift - aztec-wallet send "$fn" --args "$@" --contract-address hello -f test0 - ;; - *) - echo "Unknown command: $COMMAND" - usage - exit 1 - ;; -esac diff --git a/hello/src/main.nr b/hello/src/main.nr deleted file mode 100644 index f6b1b69..0000000 --- a/hello/src/main.nr +++ /dev/null @@ -1,72 +0,0 @@ -use dep::aztec::macros::aztec; - -#[aztec] -pub contract Hello { - use crate::divide; - - // import function types - use dep::aztec::macros::functions::{private, public}; - - #[private] // use macro to wrap for private execution - fn div_prv(dividend: u32, divisor: u32) -> u32 { - //Safety: constrain after - let (quotient, remainder) = unsafe { divide(dividend, divisor) }; - assert(quotient * divisor + remainder == dividend); - quotient - } // tx fee: 567952000 (with unconstrained divide) - - #[public] // use macro to wrap for public execution - fn div_exe(dividend: u32, divisor: u32) -> u32 { - let (quotient, remainder) = divide(dividend, divisor); - quotient - } // tx fee: 1945438440 (with unconstrained divide) - -} - -pub unconstrained fn divide(dividend: u32, divisor: u32) -> (u32, u32) { - let mut quotient: u32 = 0; - let mut remainder: u32 = dividend; - if divisor == 0 { - (0, 0) - } else { - while remainder >= divisor { - remainder = remainder - divisor; - quotient = quotient + 1; - } - (quotient, remainder) - } -} - -//////TESTING////// -use dep::aztec::prelude::AztecAddress; -use dep::aztec::test::helpers::test_environment::TestEnvironment; - -#[test] -unconstrained fn test_funcs() { - let (env, hello_contract_address, user) = setup(); - env.advance_block_by(1); - - // let result = env.call_private(contract_address, Hello::interface().math_ops_3_prv(8)); - let result = Hello::at(hello_contract_address).div_prv(8, 3).call(&mut env.private()); - println(result); // can use println in txe tests, but not aztec functions called by tests. debug_log doesn't work. - assert(result == 2, "Expected 2 but got {result}"); - - let result = Hello::at(hello_contract_address).div_exe(8, 3).call(&mut env.public()); - println(result); // can use println in txe tests, but not aztec functions called by tests. debug_log doesn't work. - assert(result == 2, "Expected 2 but got {result}"); -} - -pub unconstrained fn setup() -> (&mut TestEnvironment, AztecAddress, AztecAddress) { - // Setup env, generate keys - let mut env = TestEnvironment::new(); - let user = env.create_account_contract(1); - - // Start the test in the account contract address - env.impersonate(user); - - // Deploy token contract - let hello_contract = env.deploy_self("Hello").without_initializer(); - let hello_contract_address = hello_contract.to_address(); - - (&mut env, hello_contract_address, user) -} From 58a638611cbd8e954a883d7ca832165006e10031 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Wed, 22 Oct 2025 20:47:45 -0400 Subject: [PATCH 02/22] Add initial implementation for recursive verification in Aztec contracts - Introduced .gitignore to exclude build artifacts and dependencies. - Added CLAUDE.md and EXPLAINER.md for project documentation and guidance. - Created data.json for proof data storage. - Implemented scripts for proof generation and contract interaction. - Developed the ValueNotEqual contract to verify Noir proofs. - Included tests for contract deployment, proof verification, and counter management. - Established project structure with necessary configurations and dependencies. --- recursive_verification/.gitignore | 4 + recursive_verification/CLAUDE.md | 96 +++ recursive_verification/EXPLAINER.md | 252 +++++++ recursive_verification/README.md | 236 +++++++ recursive_verification/bun.lockb | Bin 0 -> 106469 bytes recursive_verification/circuit/Nargo.toml | 6 + recursive_verification/circuit/Prover.toml | 2 + recursive_verification/circuit/src/main.nr | 11 + recursive_verification/contract/Nargo.toml | 9 + recursive_verification/contract/src/main.nr | 52 ++ recursive_verification/data.json | 632 ++++++++++++++++++ recursive_verification/package.json | 26 + recursive_verification/run-tests.sh | 50 ++ .../scripts/generate_data.ts | 28 + .../scripts/run_recursion.ts | 72 ++ recursive_verification/tests/README.md | 74 ++ .../tests/recursive_verification.test.ts | 149 +++++ recursive_verification/tsconfig.json | 18 + 18 files changed, 1717 insertions(+) create mode 100644 recursive_verification/.gitignore create mode 100644 recursive_verification/CLAUDE.md create mode 100644 recursive_verification/EXPLAINER.md create mode 100644 recursive_verification/README.md create mode 100755 recursive_verification/bun.lockb create mode 100644 recursive_verification/circuit/Nargo.toml create mode 100644 recursive_verification/circuit/Prover.toml create mode 100644 recursive_verification/circuit/src/main.nr create mode 100644 recursive_verification/contract/Nargo.toml create mode 100644 recursive_verification/contract/src/main.nr create mode 100644 recursive_verification/data.json create mode 100644 recursive_verification/package.json create mode 100755 recursive_verification/run-tests.sh create mode 100644 recursive_verification/scripts/generate_data.ts create mode 100644 recursive_verification/scripts/run_recursion.ts create mode 100644 recursive_verification/tests/README.md create mode 100644 recursive_verification/tests/recursive_verification.test.ts create mode 100644 recursive_verification/tsconfig.json diff --git a/recursive_verification/.gitignore b/recursive_verification/.gitignore new file mode 100644 index 0000000..e031eee --- /dev/null +++ b/recursive_verification/.gitignore @@ -0,0 +1,4 @@ +node_modules +**/target/ +**/codegenCache.json +**/artifacts/ \ No newline at end of file diff --git a/recursive_verification/CLAUDE.md b/recursive_verification/CLAUDE.md new file mode 100644 index 0000000..512f2c5 --- /dev/null +++ b/recursive_verification/CLAUDE.md @@ -0,0 +1,96 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is an Aztec-Noir project that demonstrates proof verification in Aztec contracts. It uses Aztec version 2.0.3 to verify Noir proofs within smart contracts on the Aztec network. + +The project consists of: +- A Noir circuit (`hello_circuit`) that proves x ≠ y +- An Aztec smart contract (`ValueNotEqual`) that verifies the proof on-chain +- Scripts to generate proof data and deploy/interact with the contract + +## Common Development Commands + +### Environment Setup +```bash +# Install dependencies +bun install + +# Install/update Aztec tools +aztec-up + +# Start Aztec Sandbox (required for contract deployment) +aztec start --sandbox +``` + +### Circuit Development +```bash +# Compile the Noir circuit +cd circuit && aztec-nargo compile + +# Execute the circuit (generate witness) +cd circuit && nargo execute + +# Run circuit tests +cd circuit && nargo test +``` + +### Contract Development +```bash +# Compile contract, postprocess, and generate TypeScript bindings +bun ccc +# This runs: cd contract && aztec-nargo compile && aztec-postprocess-contract && aztec codegen target -o artifacts + +# Generate proof data (vk, proof, public inputs) for contract verification +bun data +# This runs: bun run scripts/generate_data.ts + +# Deploy contract and run proof verification +bun recursion +# This runs: bun run scripts/run_recursion.ts +``` + +## Architecture + +### Circuit (`circuit/`) +- **`src/main.nr`**: Simple circuit that asserts two field values are not equal +- **`target/hello_circuit.json`**: Compiled circuit bytecode and ABI +- Uses UltraHonk proving system for proof generation + +### Contract (`contract/`) +- **`src/main.nr`**: Aztec smart contract with: + - `initialize()`: Sets up counter with initial value for an owner + - `increment()`: Verifies a Noir proof and increments the counter + - `get_counter()`: Reads current counter value for an owner +- Uses Honk proof verification (457 field elements for proof, 115 for verification key) +- Stores private counters using `EasyPrivateUint` from Aztec-nr libraries + +### Scripts (`scripts/`) +- **`generate_data.ts`**: + - Executes the circuit with inputs (x=1, y=2) + - Generates UltraHonk proof using Barretenberg backend + - Serializes proof, verification key, and public inputs to `data.json` + +- **`run_recursion.ts`**: + - Connects to Aztec PXE at localhost:8080 + - Deploys the ValueNotEqual contract + - Calls `increment()` with the generated proof data + - Verifies the proof on-chain and updates the counter + +### Data Flow +1. Circuit compilation produces bytecode (`hello_circuit.json`) +2. `generate_data.ts` creates proof data from circuit execution +3. Contract compilation produces Aztec contract artifact and TypeScript bindings +4. `run_recursion.ts` deploys contract and submits proof for on-chain verification + +## Key Dependencies +- `@aztec/aztec.js`: Aztec SDK for contract deployment and interaction +- `@aztec/bb.js`: Barretenberg backend for proof generation +- `@aztec/noir-noir_js`: Noir.js for circuit execution +- `bun`: JavaScript runtime and package manager + +## Testing +- Circuit tests: Use `nargo test` in the circuit directory +- Contract verification: Run the full flow with `bun recursion` after starting the sandbox \ No newline at end of file diff --git a/recursive_verification/EXPLAINER.md b/recursive_verification/EXPLAINER.md new file mode 100644 index 0000000..ac7862d --- /dev/null +++ b/recursive_verification/EXPLAINER.md @@ -0,0 +1,252 @@ +# Aztec-Noir Proof Verification: Complete Code Explanation + +## 🔍 Code Complexity Analysis + +**Project Type**: Zero-Knowledge Proof Verification System +**Complexity Level**: Intermediate-Advanced +**Key Technologies**: Noir (ZK DSL), Aztec (Private Smart Contracts), Barretenberg (Proving System) + +### Core Concepts Used: + +- Zero-knowledge proofs (ZK-SNARKs) +- Private smart contract execution +- Cryptographic proof generation and verification +- Cross-system integration (off-chain proving → on-chain verification) + +## 📊 Visual Architecture Diagram + +### System Flow Visualization + +```mermaid + +flowchart TB + subgraph "1. Circuit Definition" + NC[Noir Circuit
circuit/src/main.nr] + NC -->|Proves x ≠ y| PROOF_LOGIC[Assertion Logic] + end + + subgraph "2. Compilation Phase" + NC -->|aztec-nargo compile| BYTECODE[Circuit Bytecode
hello_circuit.json] + end + + subgraph "3. Proof Generation" + BYTECODE -->|Barretenberg| PROVER[UltraHonk Prover] + INPUTS[Inputs: x=1, y=2] --> PROVER + PROVER -->|Generates| PROOF_DATA[Proof Data
- Proof: 457 fields
- VK: 115 fields
- Public inputs] + PROOF_DATA -->|Saved to| JSON[data.json] + end + + subgraph "4. Smart Contract" + CONTRACT[ValueNotEqual Contract
contract/src/main.nr] + CONTRACT -->|Contains| VERIFY[verify_proof_with_type] + CONTRACT -->|Manages| STATE[Private Counter State] + end + + subgraph "5. On-chain Verification" + JSON -->|Submitted to| CONTRACT + VERIFY -->|Verifies| RESULT{Valid?} + RESULT -->|Yes| INCREMENT[Increment Counter] + RESULT -->|No| FAIL[Transaction Reverts] + end + + subgraph "6. Aztec Network" + SANDBOX[Aztec Sandbox
localhost:8080] + PXE[Private Execution
Environment] + SANDBOX --> PXE + CONTRACT -->|Deployed to| SANDBOX + end + + style NC fill:#e1f5fe + style CONTRACT fill:#c8e6c9 + style PROOF_DATA fill:#fff9c4 + style SANDBOX fill:#f3e5f5 +``` + +### Data Flow Sequence + +```mermaid +sequenceDiagram + participant Dev as Developer + participant Circuit as Noir Circuit + participant BB as Barretenberg + participant Contract as Aztec Contract + participant Sandbox as Aztec Sandbox + + Dev->>Circuit: 1. Define proof logic (x ≠ y) + Dev->>Circuit: 2. Compile circuit + Circuit->>Circuit: Generate bytecode + + Dev->>BB: 3. Execute circuit with inputs + BB->>BB: Generate UltraHonk proof + BB->>Dev: Return proof, VK, public inputs + + Dev->>Contract: 4. Compile smart contract + Dev->>Sandbox: 5. Start local network + + Dev->>Sandbox: 6. Deploy contract + Sandbox-->>Dev: Contract address + + Dev->>Contract: 7. Call increment() with proof + Contract->>Contract: Verify proof on-chain + Contract->>Contract: Update private state + Contract-->>Dev: Transaction success +``` + +## 🎓 Core Concepts Explained + +### 1. Zero-Knowledge Proofs (Simple Analogy) + +**Think of it like**: Proving you know a password without revealing the password itself. + +**In this project**: The circuit proves that two numbers are different (x ≠ y) without revealing what x is. Only y is public. + +``` +Regular Proof: "x is 1 and y is 2, so they're different" +Zero-Knowledge Proof: "I can prove x ≠ 2, but I won't tell you x" +``` + +### 2. Noir Circuit (The Proof Logic) + +**File**: `circuit/src/main.nr` + +```rust +fn main(x: Field, y: pub Field) { + assert(x != y); // This is the statement we're proving +} +``` + +**Key Points**: + +- `x: Field` - Private input (hidden) +- `y: pub Field` - Public input (visible to everyone) +- `assert(x != y)` - The condition that must be true + +**How it works**: + +1. Prover knows both x and y +2. Prover generates proof that x ≠ y +3. Verifier only sees y and the proof +4. Verifier confirms the proof is valid without learning x + +### 3. Aztec Smart Contract (The Verifier) + +**File**: `contract/src/main.nr` + +The contract has three main functions: + +```rust +// 1. Initialize with a starting counter value +fn initialize(headstart: u64, owner: AztecAddress) + +// 2. Verify proof and increment counter +fn increment( + owner: AztecAddress, + verification_key: [Field; 115], + proof: [Field; 457], + public_inputs: [Field; 1] +) + +// 3. Read current counter value +fn get_counter(owner: AztecAddress) -> Field +``` + +### 4. UltraHonk Proving System + +**What is it?** A high-performance proof generation system that creates compact, verifiable proofs. + +**Size breakdown**: + +- **Verification Key**: 115 field elements (~3.7KB) +- **Proof**: 457 field elements (~14.6KB) +- **Public Inputs**: 1 field element (the value of y) + +## 📝 Step-by-Step Code Breakdown + +### Step 1: Circuit Execution (`scripts/generate_data.ts`) + +```typescript +// 1. Load the compiled circuit +const helloWorld = new Noir(circuitJson); + +// 2. Execute circuit with specific inputs +const { witness } = await helloWorld.execute({ + x: 1, // Private: only prover knows + y: 2, // Public: everyone can see +}); + +// 3. Generate the proof +const backend = new UltraHonkBackend(circuitJson.bytecode); +const proofData = await backend.generateProof(witness); + +// 4. Extract verification key +const vk = await backend.getVerificationKey(); + +// 5. Convert to field elements for on-chain use +const proofAsFields = deflattenFields(new RawBuffer(proofData.proof)); +const vkAsFields = await barretenbergAPI.acirVkAsFieldsUltraHonk(vk); +``` + +**What happens here**: + +1. Circuit proves "1 ≠ 2" is true +2. Barretenberg creates cryptographic proof +3. Proof is serialized for blockchain storage + +### Step 2: Contract Verification (`contract/src/main.nr`) + +```rust +#[private] +fn increment( + owner: AztecAddress, + verification_key: [Field; HONK_VK_SIZE], // 115 elements + proof: [Field; HONK_PROOF_SIZE], // 457 elements + public_inputs: [Field; 1], // Just 'y' value +) { + // This is the magic line - on-chain proof verification! + std::verify_proof_with_type( + verification_key, + proof, + public_inputs, + 0x0, // Key hash (0 for self-verification) + HONK_IDENTIFIER // Proof system type (1 = UltraHonk) + ); + + // If proof is valid, increment the counter + let counters = storage.counters; + counters.at(owner).add(1, owner); +} +``` + +### Step 3: Deployment & Interaction (`scripts/run_recursion.ts`) + +```typescript +// 1. Connect to Aztec network +const pxe = await createPXEClient("http://localhost:8080"); + +// 2. Deploy the contract with initial counter = 10 +const contract = await Contract.deploy( + wallets.owner, + ValueNotEqualContractArtifact, + [10, wallets.owner.getAddress()], // Constructor args + "initialize" +) + .send() + .deployed(); + +// 3. Submit proof for verification +const tx = await contract.methods + .increment( + wallets.owner.getAddress(), + data.vkAsFields, // Verification key + data.proofAsFields, // The proof + data.publicInputs // Public input (y=2) + ) + .send() + .wait(); + +// 4. Check the counter increased +const counter = await contract.methods + .get_counter(wallets.owner.getAddress()) + .simulate(); +// Counter is now 11 (10 + 1) +``` diff --git a/recursive_verification/README.md b/recursive_verification/README.md new file mode 100644 index 0000000..3249d0a --- /dev/null +++ b/recursive_verification/README.md @@ -0,0 +1,236 @@ +# Verify Noir Proof in Aztec Contracts + +A demonstration of verifying Noir circuit proofs within Aztec smart contracts using the UltraHonk proving system. This project showcases how to generate zero-knowledge proofs off-chain with Noir and verify them on-chain in an Aztec private smart contract. + +## Overview + +This project implements: + +- **Noir Circuit**: A simple circuit that proves two field elements are not equal (x ≠ y) +- **Aztec Contract**: A private smart contract that verifies Noir proofs and maintains a counter +- **Proof Generation**: Scripts to generate UltraHonk proofs using Barretenberg +- **On-chain Verification**: Deployment and interaction scripts for proof verification on Aztec + +**Aztec Version**: `2.0.3` + +## Prerequisites + +- [Bun](https://bun.sh/) runtime (v1.0 or higher) +- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) (version 2.0.3) +- Linux/macOS (Windows users can use WSL2) +- 8GB+ RAM recommended for proof generation + +## Project Structure + +``` +. +├── circuit/ # Noir circuit that generates proofs +│ ├── src/main.nr # Circuit logic: proves x ≠ y +│ └── Nargo.toml # Circuit configuration +├── contract/ # Aztec smart contract +│ ├── src/main.nr # Contract that verifies Noir proofs +│ ├── artifacts/ # Generated TypeScript bindings +│ └── Nargo.toml # Contract configuration +├── scripts/ # TypeScript utilities +│ ├── generate_data.ts # Generates proof, VK, and public inputs +│ └── run_recursion.ts # Deploys contract and verifies proof +└── data.json # Generated proof data (created by `bun data`) +``` + +## Installation + +### Install dependencies: + +```bash +bun install +``` + +### Install Aztec CLI: + +```bash +bash -i <(curl -s https://install.aztec.network) +``` + +### Set Aztec to the correct version: + +```bash +aztec-up 2.0.3 +``` + +This ensures compatibility with the contract dependencies. + +## Build & Compile + +### 1. Compile the Noir Circuit + +```bash +cd circuit && aztec-nargo compile +``` + +This compiles `circuit/src/main.nr` and generates `target/hello_circuit.json` containing the circuit bytecode. + +### 2. Execute the Circuit (Optional) + +```bash +cd circuit && nargo execute +``` + +Generates a witness for testing the circuit with default inputs (defined in `circuit/Prover.toml`). + +### 3. Compile the Aztec Contract + +```bash +bun ccc +``` + +This command: + +- Compiles the Aztec contract (`contract/src/main.nr`) +- Post-processes for Aztec deployment +- Generates TypeScript bindings in `contract/artifacts/` + +## Generate Proof Data + +Generate the verification key, proof, and public inputs: + +```bash +bun data +``` + +This runs `scripts/generate_data.ts` which: + +- Executes the circuit with inputs x=1, y=2 +- Generates an UltraHonk proof using Barretenberg +- Saves proof data to `data.json` (457 field elements for proof, 115 for VK) + +## Deploy and Verify On-Chain + +### 1. Start Aztec Sandbox + +Start the local Aztec network: + +```bash +aztec start --sandbox +``` + +Keep this running in a separate terminal. The sandbox runs at `http://localhost:8080`. + +### 2. Deploy Contract and Verify Proof + +```bash +bun recursion +``` + +This runs `scripts/run_recursion.ts` which: + +- Connects to the Aztec PXE (Private eXecution Environment) +- Deploys the `ValueNotEqual` contract +- Submits the proof from `data.json` for on-chain verification +- Increments the counter if verification succeeds +- Displays the final counter value + +Expected output: + +``` +Contract Deployed at address 0x... +Tx hash: 0x... +Counter value: 11 +``` + +## Complete Workflow + +For a fresh setup, run these commands in order: + +```bash +# 1. Install dependencies +bun install + +# 2. Setup Aztec +aztec-up 2.0.3 + +# 3. Compile circuit +cd circuit && aztec-nargo compile && cd .. + +# 4. Compile contract +bun ccc + +# 5. Generate proof data +bun data + +# 6. Start sandbox (in a new terminal) +aztec start --sandbox + +# 7. Deploy and verify (in original terminal) +bun recursion +``` + +## Testing + +### Test the Circuit + +```bash +cd circuit && nargo test +``` + +This runs the tests defined in `circuit/src/main.nr`. The test verifies that the circuit correctly proves x ≠ y. + +## Troubleshooting + +### Common Issues + +1. **"Cannot find module './contract/artifacts/ValueNotEqual'"** + + - Run `bun ccc` to generate the contract artifacts + +2. **"Cannot find module './data.json'"** + + - Run `bun data` to generate the proof data + +3. **"Failed to connect to PXE"** + + - Ensure the Aztec sandbox is running: `aztec start --sandbox` + - Check it's accessible at `http://localhost:8080` + +4. **"Proof verification failed"** + + - Ensure you've run `bun data` after any circuit changes + - Verify the circuit was compiled with `cd circuit && aztec-nargo compile` + +5. **Memory issues during proof generation** + - The Barretenberg prover requires significant RAM + - Close other applications or use a machine with more memory + +### Clean Rebuild + +If you encounter issues, try a clean rebuild: + +```bash +# Remove generated files +rm -rf circuit/target contract/target contract/artifacts data.json + +# Rebuild everything +cd circuit && aztec-nargo compile && cd .. +bun ccc +bun data +``` + +## How It Works + +1. **Circuit**: The Noir circuit in `circuit/src/main.nr` creates a zero-knowledge proof that two values are not equal +2. **Proof Generation**: Barretenberg generates an UltraHonk proof from the circuit execution +3. **Contract**: The Aztec contract uses `std::verify_proof_with_type` to verify the proof on-chain +4. **Privacy**: The contract uses private state (`EasyPrivateUint`) to maintain counters secretly + +## Additional Scripts + +- `bun cli`: Run CLI interface (if `cli.ts` exists) +- `bun data`: Manually generate proof data +- `bun recursion`: Manually deploy and test + +## Resources + +- [Aztec Documentation](https://docs.aztec.network/) +- [Noir Language Documentation](https://noir-lang.org/) +- [Barretenberg Proving System](https://github.com/AztecProtocol/barretenberg) + +h/t @satyambnsal for the initial implementation. diff --git a/recursive_verification/bun.lockb b/recursive_verification/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..04173260dc00ce421d7ee0d1cfe813c0fa32b8e0 GIT binary patch literal 106469 zcmeFac{o;E|37}0+nh3nQX;dYC{r0TX9}T#jG5;lBpDNxIhluyDVZZQ$W$VwXfPBi zbCQ&hzH4!>^X%uj&NF@7L@7UhlQ`+H3Fo?s>Lz2z$D_37gwG z30paNZ8P_Dq5_AIgR_PGNm~aip_9&Tj%FT0Uc0E);&3?EPl45yO*?Lozb8BP;*z?i z{?+>CA3ZTwY1>(vhT<;K9nM$-tZ=xED}bX|uHpW`076}cfncy)XTaeC%q%UJKOX{r zVf`mSCV;O2(g7SJw7ZzuJA;onC2*_*?RFq6Du8AHDFHgVTf3N9*t>C&;Bd5{UWUiv zb^ts_KqG)VL460I{tMU%f%;Q`!T?JEZUd+RLZ=33;q2&O>tv7faCfjZ2R>bFotFK# z0B6kLyt|8ot%nE>R|@JIK|K{9jQc!5Mu4XP!uV|fZUA@;APqomfH3|81e5>>{p|z@ z`y&Q?LHozRm=)k<{fh1ffZ)FX4<8pRAzOD`FEEDuPJoc_XzOStWND7GaCY$# z@^A(yWbSO~gL5-Gwfx~Y5QFxm0HIDUKp2m^hna_`yOq1GlZ};|t%tj%m5U_^1*Z$n zL){%x*=!>T@PRZ?eqXC0mA;zgYysv0m67+1B7-KEGvGjomb+sF>`l5<%Gk{038^o z6F?Ah03G-P?MVs!dj*1k{!}-upaQ7Fc-sibwt2-5$`8s1$^$Jp5A9KY>j4kOMZaZb z-mU=%{knKMy1;xmJ6V7%;c%zi%v@Z2aJWfu9{P8*b+UD|b@#Ay_OWnw!r^SJ99)DP zt#F^%R&+i9gmL!(g#Aedeqj9;!QTylu)Ss5N?z*#!Z;kQJZzjT-Eo#y=APETuOnex zvI%?{&XxQ=00>eUU}5F~#@Wfb9MoZ+a{&U=fK-6cpSkDBlU8mxoUN6WmH6I0xFcLE z?Yjte+yJ597=pf+nH%UO=#QDZ%}zUa94pUCe>|NmZ7pnZxMEO;e$1WVSsc#Y#!M92 z`#LXAGn~D%8LZ-5%-r0qJl!0eog9|+_VTUxu>wnyt(&`t0HJQ-yljqR0(ID*1^yL% zTX!KhD{Cw72}1o1Ksc|c2s|UfmHeG_vvRiq62Ev?^uGb51a_8I?jCN=KDbFj-NM<~ z-WJSsdn+GnH(M959=Kb;5gq{N;e2=kkOAOFp%tAvP>23}9Nau%gk}~NRxTdyxPhH3 zenY_|fY*gBKsX-;gmE}9)B$Y(VLv=QZI=_GwtMCLB0xB=3`JJ>6QBU4)fXt>TrGxf$T!$-?I{rhua>wwBV5begcnw@5;C*0fhaC00_tFEI>HE_J9TZ z=>_UAKWoHS^uB<0XqOA>aNd}?`#4$H+j>}edssPv9=HfOfO+nLOOja8f!7W6FHG>u z1`zrymR!MXfY8rzsg?EP5J2dE2_S5@HuJW11|9t0eE9EMiObr<+1|G0e|dTiNnpxV|jv) zf;!AUjoeE9J3$?;XEgx9(iD(QsGGUD*`5S5xEc%&?57t%sDDRz1ucZ^eXT*9$qFm} zz>U}vT#oKs2UhgSK|37RMfnx~gl^%!gY$4)(-c?iq5(p?U;|s1;9Gso3Jm64+@wT-PI_YHT4CaFu4(DZS{=`5(frK=oq^XUxJ;MF z11!tS@mp!H%!g|Lp^k;S`?7y9cFX7S=Jw6E_Gs{O@f?3gQ^o7*>0JCd@0slJ%7^*g zAD#PWE|$b*>%}XwC^1QXahP0pzk`2s&xmUB$A>R);oQady54lJ_q}S+?AN_s(utnw zpxXBOGj1e?(wriXbzcQ4*&byrVJvDaTM9DL^=NNC^YnRWdDAuRzzJ!N-O=IAYxVst z8$xdtUv8x;ueEtsS({ZopP;&rt}(B{=7(PZUba%DawFG$D@zX<<&3_Tqxp#?r*GHmABld_KS`!&pY(uaB8O?y z!mXDta~ce9tY?)G7-X0znBU6ad$NgNg!jzr{f95xzdGH{Ax)VWbZ%dokf9;XvCC5T zWCv{H-k#llRc*9Sy-f0FHJhKa#oD}h#p{V`O|~WUDm)jiC{Hf6zjZ&cxFve-yuA65 z{J@frQ4+#y;;xuHHv8Jplr#OaIoD}OvwMN=^we0v<-ISjb2OKG?>X)tP{kdjnRHit zi0b0aQ!-Ol_Z^~l_FZg_p*AV+P({#yW%q(wTSnr7}QK*w}aCuZLQ)8*W zf7=fl&Ppb^%+HZW#*@7Hgi;C~?rqep`RK^(9emO;ZKj=O&Hd95mBce~@iSOi60p;w~ z=~98dNCNjmD^Gg8hMoHxtVSaA49HVs+O`LOyz1hzeq;ZB(WSCtvbYz!l`s61J@lyB z=1P*P>;=kj^>WI$L(0=jU(DGn$+PwIF=V$3PXCA2O6x}&7c}6KC zSM0$(wjT2NpwG|tpJR_Mex0Z_=2S*jY~!Xgu=7i7y&=jE$_L7W>}T32{)jy}D8D~j z@kQlymK54W&rVIgWZhe4eXGjcQLs?Cte!L|xzg-mi9%AMw;5Gq>gy-GeqIZ_YjTu* zD`mbU^~K*hbnfG>8EUVPZHzx+D@F&Cm$veZ+iLI?6_5BjKm0u9FW2(u6tniu@&j{y zyD5LgWSDvkta(B^Q!{wLOmxwwKB>fmtC!l#`fS(RCBY^=JS&T!ape1FbkR4(PE1Ay zYuMSQ=ote1$TM)Bbet>)mF3!$6nr`&CxJbrX~AG@lF zZ>;*k?r@HEVVv{aNrM`Lm&MxlHmNCIfm|R!uGPrh;PN#3KgDqcC_z$EMGjjc>Y0(<*A=0mb4v7_R=;H^I>P(PRdewDAGG6Bx>Y2+zVngF9if8NDCJWiw=zNmgXzx{h`EfitxQ8?9 zc>pP!gp$=&a}wrbv{61`7mX)vWRfh{xXr37PT!G~;mU2#`A+`G%e3-_(dle$b+emo zHdV^msSkJTRoAmv-z}JGQe`u485N}TL7hiaUQ&O9EvrXoO$*yPo=pq)>BE{#ozou4 zzG=IAKBc0fV9M{&ixr0_7P=@%_8z^ViX< ze@;!$*laoz6LM^$PTv9f-o8Wg*Eo8FO?XW>hM(DgTA~UHllUmCMDu?3YTAqYrfMG%y3S46yaPi4)_6|6(}!C&f6`EU%DwgR zRpU$BV^8F9=2)IMb5+Ax&+6xOsV$OcXGNHA@c8cb3p15kAWKQ}NM!hUbSxoya$QoF z#-VD%(75PtxtTRvNP_5Co35}tmFUh9=)d5p#;-1Qa^O``Wyk@fKYPUH0@cYkW{kdv zs?wq+i|Zx-Y7CleRtxu&(Z^)SUx9a;r&0VXT>N^4W*y6#w#3JY;rO?*Ug|1 z_0iMiD)~Df(;9VE8A}8Iyj_jnEd8win~!cS<^1uefjzGmHjVa>>UeC<&l=A7F3xDc z6EP+bYS!l^8|y3cLkDk_6KtTJ6d5q^cgp}6QRPq#kJ@ff%@$WUp*MC>LLpC}t$#sm5&u5cp z&9e}@xyt#1jnT5Ld)!z?mUbSD@@&3RnDWrw>nlZo*Z2!Vb+N_H>?vVgr@IvMCXt2W zLGMe*@oHzPBlkb97~QJz*}J@cGbc&Lq0BuWu9p6yTJY^Ym>)iA#bd^&(%aP+?EJm` z*O?3Ot{ze8PbY55H~rniYw_bAR#jT&x|&Ad2|?Ash8zh`TIQ7+hF_(qR@>?PlH z|CBrP=PEP~hEms0T%ucZrPx?;JN1>+vD2l;W6z%M`m~gsMRIp$V?A1b(R%DZ@>=y! zi`T}NQUW{t+hh_wTaV9eDe$J!KXTn6RuG?WTEBJekz1`+~#|7pWcuJEZ=GX6UUcLjbuJz?E`o_?Hj6B9RG;C8(>$!{L(sD0vMGPnbF2!>jj zuL1j(e^b^H$Y3kK{N4oB$%qt1_OZZT1?;C#9lT~CsvvuM&=IgT{KtG_zz19Af6UJW z{C^YwFyMnnf@S~UBhdx*pAUQhk4FDEeheOzmq}yemoB6^e^}tAmD$)uK|3wf8l=z z7`T7qKN;{{{)K-kavaX%U+~`pK6qXXfa4Cw1dR)^<7Y^L!+}Tf0LX)LXtn&yfDc|( z1b}IPgU4$5j{zUNYFYLVJ`#NmAU{6=3A}0u0Ph;$bM&hD{eWmd@DJ!j7vz5rcsK{I zfC5(2cjyH1Z2(`Nz=!QnhnRx+b%3u6_^?jwwGZ_Xe?3?()P6KX-wJR}Sz2{SQs}`F92RcOmds;~Q!tehJ{i z>kqcUKA?73|GR?hJ^?EJN z0P)QMAH@&WF`^6NCjmZO|51Il`RgF?VeXIyF+m{PO>{UMcm=-fAKe32!?y-}bpIoU zhis7ldw>t;59~K;LpFbh$d&|57&!tT+OIZ$2LK=S|DW(r{|_Ht1H=>*e>vdq!i+yL zTxf&%Lx2zGFKmOp!8?AU3gSzE7szr1|En1T#Pg9g?6SN4A>Zq!a}{8s=U`G*>-<-Z1e@D<$h{QD>IGk`D0 zGzfecGwKJi@t**Exc`DYV!2Qo^)vT>_{3@;{y5;n_4l9p=LZW0${&ntwf>y}U+!Pz zuNd&*`Um}@KEXJCSCH*nz=!J(sv{(p&%nB}|3m#=?e(J#_;CM@_`mau&Z9V!03YTb z)>or}_|FOa)y#bu1LD(wFQ4K26X<(2&oGF87{iBaFtG*kqXAzI_=kB%ZNz9G+ouFR z+`GU&5Sv59=LNr;LDvs4evu90TVeSBf-Kfv{KweyE;+sgWl^uTtMsDkX}xBch&jo92n2Z(oaQ?ykK|VZ)DJXs&&XxTyy!WHF)$m^ezAo^Ou3uuf&<6S9-~ONH z?|%}%8Q?1e|BwqcSDU|lz=!h>a*53yF#RL`alnW9NBtpo9YXfpTr2B096wlA8^1Z= zqxrjzfDhw`eTT6Vn*+pO1bjun#{({0`ymoj5MPe_KkE-MJY<9T{(ujD`uWHG zAD#alB7QmG|C{~O5a6Ty!`uGCc#1C_~+VT5{iT|IB|5pD0`2VX| z|EwLwe;n}P{SU@Y_GgBF(T4cv0UzFfQ0%DvFKB->BReXA|J*-_%^eg$d>z2Y?th8Z zK>YI<|5)8W0{x2*i2nre!JH33_0{^{B)BqukO!|}Vhi$T4)}2Yiu@w{oetus13p|o zpgmece#eF95&tPBe%QX+>u)`neCYm%)rFt`t|0%afREOH)b@8gbPn12|Bruk{&$G@ z)dc_09()zQ>g)d#CVpba4*Ej=xxmYJ`2G!XiM@sq-w5#KFnnU?AmS$iK74+IF+na| zM~EqiKMnYB{X}yQ_2YLMh%dbJ-@QLR4ftsPL2T?WHst?0;G_8m=RU>n0wC`1}3^|0m#^0X`bHb+98u6cn!sNWK!_!+jh0D)NuK z{!Rk%Eq1SrAIv-KJ8CDE9|!mfz(2fpS5uH58nAe(13tQLP#%7#h4^NG562%}x2T<1 zej4DbV*LM(ht4BE-vA%&KhZg25b;Gt|MUI|@=zXrr-AsMfDb|lAa>p&UBu4^e3(C2 zhjWP7g7}jJKCy8leZ=1f7GDia{Hq=RFu=#|KZ(r)@?S;Zqxrj9|HFW<0OCivL%OJ+ ze}%|S96bEU67moFvHTmhzv5uq5&s6@s{lS)dx;$f#Ge6tIlzb7aP3(wUlc6faR0~x zxF`ou>vskDKLz;mfDgIre@DWcNBnBQNAE9S?5mBR0lfT&^AG9~JN7UPUC|Ul@?V6#irVK)S!vKz0^@5AWabxuY2eR7UZ8^a^?Dkb#xC|Hu%jS#McLWZQviS9~;0yY#$K+ z0fCQr)W7kIP9r`YnEZ0UKa3q}ART1)SBUs7fUiTyKeR>df5k)X$nHMi!|@~5@Bi|t zz~)JgkiXT;A>>~j@ZtQ0{fBD^v2h@N7~sSG2U@#`odbyf4DjLo6Zt0g8bo{=Kt}5q z%*|@!R{?z3f8-x(5L1x<(|`}Q&;i88jkFQ}8i9}MtBrpe@Q(xkh=&mQ`71>Jj)BdW zG9iAr_7l4fAbu9$!~8+N@IdW<i_uQ;`1>x&M6s|4;byfRBCtLAt-wLUs!B zE7uRIuQvZ)fUg4jkNCun1G2vZ_+SYCF`rT4-|Da1l>lE3@KK#u4P+k*`0)OTVu#~EOhNnx0w3|fm z0TVwlzM&2Bp9}af|7h%2JO1ARAI@K-hwyiCAUl4w|K|UWht4DZF~A2~;N|NNo?C7F zR{$U0f6(|N{of(-{|xZq^E994vnSX8y|pKK%Zl76`)_R@;9Mzz46Om&cD8 z@XEL3YD{59bfc8_WSQ1@Za7%QtxaA^vLPKMMFe03Z5<+|`bMD&T|v zmi;8d%A#n3oB=CvN9qb$Grz_xN_usG|#1zE84){vIKdKYE zjw1Wdfd6lvKZL={Lv;N>O}K^;Q;>frz(?!XKjBvbKFl8ja0>ZI_jfTMyD38a=>EIf z{OtxWAL0EE&V5R75X*=0!D}5|?-1eGqiYz>MOgj}p)Kq$ELeo|j}aX3{AO^#vKoYZ zwq@3zBaDp~9MF!BV7D5CJbnW2&k&v$00$K~z&oww^$?8ha-YC7T`mw|jt_wYj-ehn zV1Wqv`mh2D7U9^y2UwV2V{pK_IXGY;2BEISvh|-MJZ}jOsB23=CxFnO8#rKr2>ay+ z4j8vTIAHlZgt}*!tyU270>J_MA3|t{2<<|_0ndjKFdQH(ScG;F%dP*7FwRIqJ4D!z zI6@tZkRMNIhe!jCEJ7WNFpg|+K>HlRd5Ex{OQ`=Fgz*&;bp8yXpX-G45MjPJVXll2C^T?LUEo0e*%R0&W0EOQ=JH{bB+L`OE;}DHiYt_H#3=5D6`>h1r zMri*tggV>7d6+L=f*lrN6Ca@+BAh=v0YZBbfbf(k{PPzGPwgR`|1*SoQs6u^*$4i> zcw`9n5aCBzLLDN^hay1OKV?EY7Gb+8;k-IPsHaJ=g9txr5$X_OKXeIoh|vBpp$-v# zG$5cMp&cUpXhf+08NxV@63#<}ACG}Q)BsNcgnsP+LOTa|l7R4|BcYB(Xzxm}cLxaL z^di{(9Z~|jvjjUV!lnR1`=24y4+iI;%#?GT~=%Y^nT0O6@b@P`6mCae&NP$!#U4-w9v0s`HvW760`u}``xIyg+y8IB z@_+l4|Nrb)mNqQG3H|?N0eWk2E4o-|d{n&XO?$pL(uDkLj4tsa>IuyY%umP)BhtrC zNrdmsm(3ynwMVr^(7Ma7&Gq2Ez6-8zvz+GZ9A(QT>^8)j9)5<=g=-foczJos#M|mK zA#qzyJ>4yx9AD6zl&Ad8oVRJwx@hNv$HsP#bSzVSQzxr}6-(kN93!qhZpaPkOg%VO z^&{Z0etQf?7v57)!H?J+`*=c_$>hQ(YqjJwcH!sq`*H%WTh{Crt>EdI_$cpBGd0G( zd9>HG$noH=tZgR>FHO8pc=VWShNgVKVNQ-UMi=fGP{E&V3As2YbEo@0@B0JOfh`l$ zPKSE+hu?nJC!d#NTsSQ1`|z&Uj$D;V_g}#-Uj~1$yY znW*4fHLP@e`9EDq%)5W1vfn4HfAEsnhT@m~>+Rk>ZQ0z{7A?XSuG7KD|iSK7F0vlFx5+ zy3V%yL-nE1jqR)f)ndstNPB~jcY=8KB= z*Ou+PO7?Q6z?us!VS=JkI9pLizn@)evadx3?IL%-hpT7kh$Ufty`JQ{RzZ7Ar)SoS zj1rpQ4=c}JEAtHQ`BA~Q?)sUES6dRB4SrX=;hEyx|4`wxS-(4!6ah9<`q4 z&aJXEuZ2l0ie$Q-H$0h@EBG=Mn%!j?!5Gvg&CuzoSo(oZy{qs8?`|QI;P)FTd#W+I zR7eycURRQltxu#dqaGg9^MvC zEzR`a-F-~+^|^I5`%T#DH|w3Yne+_EY=};&7gFeFl9Cu-C+NMbi=zktg6O#gYU5i} zx^1bA@&l#H4jwCgDv&nfx_%AY&*SSp4NfTXY_#LJ`JA7{Gj8x;+k+#ohuGI$t+Cr# z&Rm}o68YBf%Jns@@L3T2M*+VJgzv^s!MiQeoGJhMDK_4}$cg=Z4PSbnc4wW@fW*md zY-JVc%Nu(-*~Npz5E`<#`LmfT|E5%mHDsVnBy%N zsejz?Fv(P-NsNfFyk$(5vEV?$YEbFxd1&));T@GqzInIfwxk@XJ+9`xqj}GoPabv! zfuS4^CcRHgZ291*u&ldwSr@*0K?Uzmv-9zHk2M5vYd>k4sXgSdw0G` zIHEtxG?REVZ;XI%y(Nn?>$T%*>dfqb!e*L zx})14pRpR4-0Lzh5MurLj>eg~7dJQz!lHHZzN|cpuUv2RSl#jonHx;`xuUyN4c;&) zF_*HMeqxf?D4xTwwe=xI)(2T$o}nY!N7~CCG3T?UU*o)^C%NWI?l$Ekt?m!qKL-lH zcRJ{Pfu4JzJf7^;H~diKjIa1HjvupA>jF>jrXxLWcbicvhUMnR`p&V>seK-gXyylN zImx;Ac6(V}JIR`&Wxf=)5E04qgipQ_qYIy(QNiz{ORHlIukMVcXsF&R=_wr9rJP=x z;XwB8#JA9k^<%GsobO0qeO_9jyjJ~7-O~jN3GtW4DRo{Qml~3osHD=~V04*~C_sE> zjMMkPr_O_yz23*m-Tj=NRG9YTLdiSXR0?0`Eb`~Lkjx_4#P3)1^2P6GcFnkRNey%; zp4L5nHU4|&8v8x>dN8^hvAPHMW&bb=))I-5KOa$JmPdc)ZP9Cg%dcry>%UaJ$UijR zbhRO8_ob9i0Lx9un=EG zzpJkv`HS8m*~>KfYv8`v#dZEiOyD ziTz#r-FZgM&rb4FNZ3<8U2p2ou<|Z!WuCEObt?lZ4;Yy~+8h>il<8;aL=TNmjeA#E zYewySkmj78*|p?`sxRk8BkUc{<-RDGseSd|XXJM=@ovKEI{S|1 zisa48MwRLW(te;D%1YQ?)hE@yM?cSV;pJXB(>LoL56M3%(xVQ27-1h^!{BPiw1xA! zUj6s3nES6M>EOFmln3;F2Fl}4_en8r+%wS1i5x)8GY$@!QikN0e(mu~mnyz6FHEq%5np_YzJ zgIgNsE*0^Na{kjfSa=zAu=*Y)6SU<@$ zGTc^^ z&}d&+GG!~VP5s7Jw!Ju7#rN6Ey@zW31E0P;cl_EDiRvWDX}S;FWW*~M;{4*x*d8Cr z@4LNgii^CVd>y_4lZWkC-QHAZYJCsRg@?sT`n2aYMh@N)!KqAr(7D?9*7YpqoP&?E zvVr1$Gj3_4B8MAQ3To-WO?1y!vY)WOSH9a`p4CjVH%I15W9Y$AYbf73)@~hL==J`l>U$r93mImf{ zx`|4XqcmK1HfS+Ldv!LPUwNmyvhMI;b>(Rf9b`Fnt7$f^eX~7dPV`NK%lgk#79>9J zxfxTRdL)(NVH9h}sQkRVIc=F?m3YfLiuvfK=&r*F16ocx60Ey0@$zDIqv^hL1h+Yl z1eo|vb21Gd8(}tVh-(w9)Bikn=YGqv7tuwx$&<66-r{k&c}z1&pl0c)d5+KXPg)&i zl7~0krh1Oi<-_V~DXJIuFly70e{MNZ%@s9iRL;BO*`9|(uhP=8&Fy<{2Jp7ES zY@$Ps{{!P}b)2xy{5F}SV);#uQpPy9FBn~Ztgcsap|8HQo&2cF=-EJ}L)uKLQgW0p z@u%dddj>W$T@vOq2((yd**kvEg*!YxS?vXL%;#O@na*){?cGYxoV+HD(G|ezT8hay z{J7n|r|Cz8!VOaC)FQ@!fJA9&+Dd6nD>LW8j=LJK*#ZsXI@jMF*m84w@OFj$UrJm& zJ2oc>r*X9BU%7zM6~yY6%u3ug=`%kzX_V^HK-che;cBR!IYY&lH5HO-4hJaMPaeAP zB&ddV9~rIOU=;8D^A6gTbbGC&f+}@{^7Xt~u=k4{SlwRnqfEK7RzKy^V+R?);#nbDoS%BiKOBEB~3c}S0v-Sw~;%5s}6ib`8#WNSJe`xnRd>`xrR#4Ci= z<*#vm9p<^WbJlRy+kI_U^Q|x%lZfdX1?TQuPdr08Qz|$!@#s?Ho6)Ddvm_g+pT-1g z%h+^h^H*ea?QbAI9vt?c)vWNLMkEPvL8lQ7^}OnS8((9o8)34m%?HS zMz|lBRus-%H3>3EpC*5uW*g6J7+9Bm&!2zGo|NxWTiM!zAD>yGakzc-twHwt7s}5Q z)iAodu(}Mf4JRtE=RZ-8FgX^QGB+l>UGn3Iz)dxglk56Pl|9TB8;@!q@myE(=7Yqp z>#-L#=!VRHdZ|8m?`#p;ULQ=EkI@Cc8T_N*vs38zXK@98ekk`kY{=7NY54li8u!D) zmb&ahEIn_0d{5*}Z08^Spnmb}tEqY|1N{n>yIf8aAI>Xw6z!MMAy>rciu|Dp?(-@n za(&L#PVKu#pTx7a zQFHM(YgVcsf)f1$YHs>sYIb(1`g=;JZIT}oFZgZj9|gboazT5?^Ol^dNAy|_@0h0geT!QJdxo+<<8FJs-KF}oUXE(( zi42-dzaYJa#Wq_SV?hf|zM8Y5HO%Vrp3R%-F}mR2O#D&sW>#^LxHYQz!sS1@$%M5Z zHOumBe^l^pj%$6vEN}KJYG>7x*H6#~^}eT%i;%Os)u*5v5Eebh$i>C=dgGia?^}#6 z{Jjt=c&oE#PG3J%KgMX1W5?Jddsv;j`qqx57ob2K; z0spLPGtah;ybxdam4Ay|;Dxsb+Xf#DkHqEdqG=@HjI|wyDX4 zln7E}cbnw3*XshI z>#8cnZJyiqL_U{2P4#9>v?V!yz}JVtoE`jshNfEo)SecQs0~ym9hD`M(lWUJKqTn? zl3*ZTpdt1;2LC4HkAgpTb8x2#5ye&Eo?>xtW&uN7PlPRh7+&yNzL z3x0$6N5QM79d*+6i1_^ephU0D6<7Mv_Tky7*m|`$4QrU@Yg*L5gp!_peXsSt;jOL) z{>0PTl6={pi_iSRXJj6Xle~R%H%3?P4^Gt9JW-+OIdmq%y%WiRq1AIAMKvL1%F$C_Gj`~U8^OP zS2rAcSf1Z0bCx}6utQ;O@wdu12pA*J@G zp9c^0K-a2}Z`Ps2FQ`?xFR8DCFnj1U`{g`+UV09NmC!N=Dz4z#Ns3F4d zpS4Muxv|6ANv4{7Bv(J_!OyLMoiRT)hn{j)KkRU~flNjymR2q=;i<0SJag`cuce>5 zF}jLaT}B)7H|(N(ukyYb4NZ3EN9*-&F!e>t$AYi?eeM{JvfY$8RUInLxP!aqivZ8Ly?p%Yx!C=gGFG>APX?J3Gg*c- z&lf6=;jxBFF$&(4(kFAVJW}=)=dP|T%Hl`~62mV#FJ0*&?QII(|5BQxbv<=(uwT~O z#v|7{G4ZNkb@_tNri#eRGcz|Fpf=d3_>GG^(W$P0RF!OlLZKB)q$R~UitJe}jg9kT zF$zDJYTX`-IY|x`Jr_4o`ow5aB{YZ8RmJLBDa3>ozt=g63*RNA8T^{p+vPinYs))T z{782Cp*u3Zk4kvyBimgbZ=0`6K5G7ow@s?mjIr>nd*mqdo9})O${1ZWtZpa0{_M7> zyB4C`n2&7C);2y_<5h6_$g{65LDG-kl^twt?suE}%*tddx8_^|vJX$zGPk<%M+ zYbLASsY^0quQzq9?t-B7_e$xpWC=m``()7yg|yQ26Kb}k!3yiYeUF(7*<^OljWt+# z1b@B6JjL70*LQciTv9x*-h$h1$wRq0>5-Ut4`Ov0Ia?}ee+Bs}oabmfAN!>Kb*Suw zD3xhrOo!V<4@=X4cWsGd*_k7?6uY<_R1?F)!XL=pD4$c&xH8ZlK~*lOfzj2#>Q<$1 z*dNpUV*d1D>gh*1;onS;U36?ItjqN6IA#(YIbyb(;@jO{bN5cg#8w}(ZE>L%>i-ZB zu(SBaIH!)z!<37cF}j*q-6I9F?j$d{_N7Yk%-MV0=MbdgHkf_?;Of^4A2p&D%9<2Y zu8Y*WX6r`}Tq*vP+-ECjpgZv`)mZcXiyxtUuB_PiXIfa@L!unVi*>yvl(>(!_$c_? zPEs8$co}TGeni~H^_T95O^+(mk&@*7pZ!|v{f75WU)#Osz{4Z~5zzzE=h-{63|8LL zuBa$8*Lq7sYI$Y*8mmVo|jJ#>QxAEu)nOF-yZjos*H@f$YhZ(nt?EmRm zDZj01xH{lte12j7OZv@CQrChXVe+7Z)wSNA#+CnqEtTAUMCpTnO(HKt zF#5Y258G?f_~i^yc??!PLDhAuYl~#Mk}L5n(n){b7WUj z{cozgRcPkK=;|U-fcS;}2Nf>dM*BU|dOUdBs$`8rjOrM6G(Gft^onNu`~CNy*}vN2 zEx7&tH`DlN(9<|gxz!lcNt0IcFC@sBhZr5h=;~p01(KxIo!S$lVz#mljSOyFcgcA4 z3m+r3Qq_xtwxV?Q{1V+?$4oT_Zf<|v-wtDSCr6{SOoH(qmHt)nZ0 zW{B0b)l%dcqXSV%=&722g>M|N+Il< zj`lgQo5q=xO=r&quo{nG?-xc`-M$8o3Z9%88TPkQ(n>B5!*-t2S}@v>*ZPi2e#cvj zUhRIFY|mRGxZ^VRtcD|0Of}`I=DynLkHQa%<;&uorbsb)fWJpa1>gPDCz;7+QaeP0 z{?ggLQtk8h@H+L~f}=!#zoQc|ly!2k$&G)YuD8);5 z@8c#-(=gSie^*Si7`3fX~#ZyAIIv(cZUZ= z-8yiYPL7q$MIlU+B+B-bezVsRdVL0~OY4~AcG{??ztFzaI=7|c+xdsDYOJ4&?z`gr z;wB2BsRc~D@OS>G;ID*STioN|8}al0-Hox6z$Ms9oK23e0-FI9&?@V;KVsuTAC_wzxKr;8Nj-DHa*Ju1$ zI3l$b)G11uZx*GsTK-T~O3E)% z7~K|b+mgm0R z6;S6tRv~FVtuNhW%iiIypX&xt; zYO&iqPJV`j)BS+Mw!V8TpkttP!Ms$ev|N7a%ZR0 zyZY|UL-6^ zjB=aDZQ4fzrx-aWuWHV3=kOi&(50*PI<$9P33uH+%B>=5nr9!VJ5in>_29p0y-9P1 zIw{pT;f1`0EB1Y=6;_vHnxutlBd6rn<9AGq?+<3LXLKkS5PDOycrf-byYjC7R{b;M z-|+kUK7BveHoLb^ub;1Pc=K$1Q;g|U@R;0r?Ec{-R#*Fg>TN1(t?2`6M4j0B?K2nY z@y_Bmj_uqx#C-hh+1@@ArrUG%4MVqjhIW;1FiN9iRo*72)w>B_RndE_faBsPOdhPU zx`CN}QLaT#f<}BVY;x`Qh^Ey`_dZ4bl%;XcfV{dy>8yzH^DK*NJG*Zr@jLIY#Ki=* zcQ#~Z8HaXTuiJKULJ|A^*9NO=zR6`kR$+``G~jzc&*K}<%fo&1d>HmH#8iE**~}QM zBKEezCh;gxo+~u3|Y6`@>v=rKYFV~V)tjZSl!R>x~HWYs+)z4*#zys zWKGRK%6{r7Inz6qUFS{yU`8&V>T9;T@#Yu?u>t>k$7vN?rG>ja^bhEM*(cQJl$~$_ zlLtGjZuld)Ekkxa;pgb}T{!St`XX>)Iru`{eLhc3&k z+n_yL{*pu3qvp5`c)!tenh85@_E=p-hh0bgXzwbWu={ek$}yCsPNpd&tqt#zqW)<_ zLQkLOQ<9dMRePPG&-%f~rsj3mwRA^o<|w|}T#Y;?cd@&-028kRR(Irx`|XOymX42J z7q{zgkew=*A|Y;%YIANDMTFYy!C{KMPZYnp3iICWxfV%j zF+HuFQsJ6gSlZsvD^9vCQ?+|~68k&^f2WKJe!aI&eZ8XX1z}Uk`xLj#L`)M-`M#GN z5Dq$ebnvG6uUM-TPm0o$rH1>i)QL1vZc9*{{PNg&$#A-M<2Y&H$T0Rgc1EHA@uZdt zyIfoyBBB~IgxSVhb(w=AbG+Es`i4iXl-B50MxExL|b!D?~m|*-l-je*5#|)Z%0Q3d@J1x|S58bXNyjrSpu1H8RIr}HC8y)e_o!Ir+h}Nw+7@nlH~Z={wP+Wto!G!=W_DH7gnbj0fBBc$Ov8pF z+q-_f4~+@PvsS!H$4|$HiPs&gd%@DT?b(3`Ysh)I7%O79p1GQL3vJndkP3#*GOJZgSu_)90BR+6N6XZ8j47d*Qv;>6m$zkKf4RChtZX6R@-c7JvXtGi=8YZRsR zq1!43R27+Yr+7}xhs`*bUzx$zZJ{;ctz~WUYI$?%W%ZFoN1i(m>^PQ~^GjR;&R#$N zbU>q{mDeBpUd|hM_azs8O9_P;RJ}~Zd{mTwN6_2)OrB0YU_+WKg=Hl0j(|=d0`8xk)hse5sa}&GwuSJvf%9J%iCUzwZ*!_y#4)HNP8Vc%TBt1Qb;$Fi z;|63W_LVP`3%*$z3OF9mcyG9q+YMHj!9A04`L zeqD70{JoR7MzshV z`ZpoH_->og0gFpxn=kGi557}CYULcDDj2YIu)@*fOz8Gq&wR}bT5)g3K4$Q8Ej@px zs?U`vtWb;54Zy~Gu!W|nF6Ehgyr`9#qRfV@PnyFIDN|FZc~c%t7;I!!I~V$R`_NQ^ zO>iKS&UC!v#y%;j#?4oi*{?pM^2&S~iT%DM5UU%!S7_hfYY_W2?Rt2?*t zMj7R}(Ty`Um!9~f3T74eMmte%+u^+JNay(vB3G=0e<(g&px^b>u&Kzh)^&|-*3fA2 zoBeK&cTC)v&=x&7jmbkWR+nl=`aU|n#RNC;q>7H`Z%?eJr=a&e$S3+j%IY~)b^>i9 zi>dYt+lfPms5{fE&IMMUdHCJWFW*F1)ASRs(cscGjBW^4cjKZA_h{jVxuHi6^Hi~= z;~N~N*zB^;hEs3fbHp>9a(hZv298XlSoQ(QJ02%0TGpDY#s{Es`4l};7h@ZZ#-?*qcHx^@l4;(1M% z`KM2lZ+$)0An5CT>zJG0PA1V?F1Pok=S22_pZncS4XtLzui0EV=V$s^WLN9Ut#AB? zic${6&)>&>j|0BQ{G;II4ZeCjQK@sjY0pxW(zagAWGJE6&#T~s-kAos>snS1I`xBM z*NHS-xK|-mLUn<2e~7HpknJrCrq1a41g(wf*m)NIhbp+?h-8XW3$Ms|a;(A{)A6s1K+tZyf8u7foAzjX^|3P_syw-u1+oE?o2HP-s zh`{Q${0izgCm3P5TfT+zY*GYW*`^o0{ge!ej`CbSmz;b>bH}$_LrylzI8AnU z;p9xGKoh;)=M3+uS(F{-w#VpR!0L*K?cj62z3+BVnWb`*HT6;E(1N!Icz?zvdkbI8 z9Sr@He#R*3T6^u#fa|ZYS5fm{-wx2%G3y;KVj6oYev`Z$`~Ag5tgcul33-#ne%-d$ z#!PjdTN~ExXizpFy}BhR>ZLt+?Ji1-VqtNYWUX()g z6hDJR`Mkv@0jY%miQQ=~Zq^Hz#<1VxL}GQT=T#;Kue>{RJA^fU#L>d2yO7IH?*wz% zkKp(VBKm8oE7pp<@D?VS^47b#x#3{+5=)%tx<3DN%(C7mKIdFW{w+&O{NBhi*sL7Z<&iN^4x-VE?oP*e1Lvm=VQ^kd-lrn zocT;S`>>b)ASMsdSlza?Jo(_gUrI@(hD{6uV?%eJKTvV3ZT(1lrS$gM`aGxig(M;m zD9hs8nAta~B`evOtG$`+yLQ;qP`aBz_GLD9J&VEWigDe{O<(UjP*PmX%@S6Y@?!@_ z9A#D)ndG*lMg4qjW%}mCK>FaEV64ZUkZQRaIu!}C-ypy#p-H& zF}(i3jw#nD#WW#tVOZ8&B>SAM=)I@>jd|4%8YHVm*{=*vGLa>{9oG-Tq z&DO)Brfba=JxEHi`HjQszImX`Ep}zwxtN#hIk~snh^t!fj%?2D82&6HpvvhoO%;0N z)Pmc)ZK?9pWT{(i4LA6HzIDaz+NFTf-rj5S6q|T3`HjcwI`&-{zqd2oltJ{`ZR^AC zdpHEQdk=2j=gW3-zohQk@=KHo#Vxq1o`;<$^OZ>K$fPpwcbh4tN*6imDcSl#fD)DRK>1g`xT$U3)M3Y3x*7cTjEM~B$?h3`+i zE5LU1%cC5ZoKPK}j)vXGg>Nxcrl(818dEy^eY!b(lHwWs-wr_Q?-i`BFpJ~b0}WbA z3cD#L-)v1MH4yupnH`~QXEnn{ZDK?^WD!fs@4;JN8#8kLeM9Y&;;}~|GuyKtstNHv zv~nO(k;CXFVs+Cb#?IVVq8Cv2bSWMPcxuG^(dCwUO1qVZG5^{Ky?X*ptOmU**}wF0 zTi!dhFC5e>ZWIXD6k^IhFrr&6*6D(MzDUCAZv394(Q~dri>+CQ^GMy`_@4X1Kg@hL zCOGahO&ByAnwEYqb+KMD%ib+X+#tYc0~_Ocm9}R6x~k&1^@j?zi_|djCS!GPrgdg( zwYt8}<1Z}^%yyOMw4W@!tae25;4^_2C$8mI*i30B`eaVWtv_(8L0fzvc(i)h-0^bt zLXe4_llhMzV~lPJR(IR=4C|v3y8U8i>aW$KWD4CGZXAnzX;@w9 z0HIK^TParR&EuULTso+y%YJCzkf1rZ_WfeAT1?HN%pP27748K1`|Ce3?=< zE|Jqtg{o{qL9*mfZDwc68~%ownzF+w+^;y~o@~bMt23~=uRNV3Et`@P_(Qe}lMJ*8 zFiI8Lu|CkNwwJV{_i52Al-jiv>-%iWZI;5lJlB-9`Ir_$K6Nw*Qa*T)YU0@xLxPDn z6RR61wj*b^M3dz+E0PdV>O@6Z2~#b@J@ISWrDStzZtHqG<-Yz>xVMromMK|SOu=}n z?A7#W>ch)D{e}A*`)Fvfzq`u9>Rxwm?=*Pf^^-q&>^=Ua8oTd_jWcn=-~L~F?*Z4; zv$YEc1hETLCy6|r|k1yRI~*hK*wD)!zR*n3y(6&1f{ zO?JpeAo2Xqx!-;7d&tknUDm8MYu3!Hse6!I9=vtq(%W-Br0hy`m^ZI|%fPyQ10%ad zF5mRUxz+QG9xYe*kE{H4_@tLSeOL44zN(<8e`TNbhm*zP-`qA2tl8GXU_#lz}gO+1+5>M_LzT9sajc*vt z9%4OpV4ulLZ~LrRb-3Iz%Pc{=Hjjt@oO?TNdZM`HOp8Ol)&O+svtZ?nj=R80HmQ-E-M+ zZ{b0n9TNF+J1h)ra;n4IN5;R8ADOhjYFybbA@!D2iT5b?xUP@!EZx2qNukG2?u)p; zq0X~oIp_1tUu|nvSnp)p!T!ajcY@DPtyjrDwf@C#H`nv! z4sA5kB&SEWCtMd$;ChYFhLf>l>an9|a?#-Yx7`Qzgae7O~RMV~cUx&O@Ay2rmB5PyEU_+!%{1H<+X5w0=& ze&4O*N$2^|`@^N44**85%ueP1kh;7P@cc*>@vfZmUaKZ;Y^K&saOk zd}ql86J{jexLRX~`NYhmP{Wj$b{DRnYd>d=UDi9E+|7Ks+gCZg8MEQIThi^|rq7;# zG$>y6a`J*R9WK3#-tP6&%qsmuN?V=tMoH7lj_=-PhLu;$#tRLk7whedj5U5V%_{DC z51!mDe7V=7>fLKC=(O=sqoau*W?m}YdA$Fr@#R+k*iqq5mE|R_*1u!=psLND#Yc@k zxIdirai060Bgdw`^F4Z|R?NqxA6y5A@#Jph%WWDoJNaeIs||hbxojGmadckI;uT8z z9vPFpHN9@hGuerI?j1Hs&Ddjha)4*civvS4UcF8mFktxPxEf8yhP}M*GlK6QlK66^ zS?+aS_;tFxuX>#Ckt+#zzAbX{njSbibJeZ4ms2hJPl|DjnZ3^R^Pz>3U9)O~0@;u+5l+xc=$Ji_-}JlC`S zoy?n(OJyIrnLR#S$!cBl*r^LEeLi33nS9jfqxuy+=1-lwD*eg@<0_d0H@%tvQxIKq zl3&Yjr;WZ><;hLv%l&CEHd|J1K&tr1n-y10yB_U3d*aB3##5`+sM!mJY9i=oy>Iu3s{LB+ZSKXBo5GhnWmG>`;l?+nEsm|YB-}SR z;mi>`{d(m-B-y;|I?}z^=Cdm*SFB|)xRhi`=Z@)#bq-7)AAGR&ri#Bx-mPXEp1Sx( zIiB29zTDc$>sRTI>{<26Ij@IrFSRr+_cQiXllHg7W$gQJ>+hEpUT=@yj1Q9rj_nk` zsOqTR0|wNt<7#aqG21&c@_Xmw(gU76xjXoB+mu**bWF0(b;F)BpE}PuS?qb=*oli5 zo>@?Am%*09%W{Ujxcc~o_=rRIv~ef4yX**Y@u)I*``y%KM_x>PvwCvCLVmw*CtvQ| zb#DHTgOe%^^7}N^I_sLO%~_9I>ErMHZV>3#e{7ni*qrsToCVG>m+>n2@UwowU*yyG{>7M1r z{N6MArd}{l?jF8epE{FXXa2gj`p~87-R`g2R6lS)?DiTdJr6GKG;~$}ZSJxoS!NFs zt_ychbo4E0mbLX_w>h3iKP|~j3+;DlolRI%Tb|rBzFep0`i2XaeNGt|-?6EYtip3?Xp<_eLL>n4~R(@5h_?DrGAHU5k5i}8>CL~@znQ@6H zcQ0RVMDwksR}3w`EqTbMO-*E}Ce>EVkF7slwC{@E8|UYl&+b$=h|XFxF13PK=Ye&G zPQ{T^LhgAFo8_pNKEa@e+4RI5p4@$Wx!otl#h-gutystH3xh}Zz236ayGP4ymxX@c zD4ud{dwrer&ZB!gkKG3Zs{#E7jM=ZvMn@&7_a+dw6?Ynzq<#@)dkKN|{Xh)p+3s;4CN4?V}c5Szw zR8!Dz@Wfj!YI+X3!IPWLmpjKS`t9d78G}mmbrpur>9PIumW110)Ai+Dk16ywRD0{Q_tkBl+yi{M3+g*>KK0w>Nw4(u z+aK2(e&`pw>A~XzE0+q!iLBnvuQu*y*Q+lo99Kx^8kgGJV|%i@@`h1VNN=klBWY(ZXaBcKQDKf zFL%@|k4@Vhe#c&!SK**HR_2I)FB^XA;T&C2>h`_;O1ONub8yW>3-gP^pLA~dM!I>& z*IB2xtRK2c@hO@=jy=Yg+i;H6aChI@?e`vBc1b!;KP4fdU-HwIhNXfB?cH=QZehl) z+7E_bJZn|_XvJ5~Im6TU{W|nIqWq%RM#Tok*4UCbJ)$m zqx!uBkyZvBKOX4jd`8E2+1%y}hox{&WcZSq$UZ?Kj<_{Nc?dx%<&VjHY z5eZFC@$7JdFLz&3k7wVa$K4qBSl8KdX!P!B6?fdNAMs;U^Zh3ruQ;AD+#evXW^^;; zM0d9-#eC)*C}BB$*ZVsp6C^oXn;vUE!s$HauC z<4l{oPG31r_OjZ-w(n9~7w`C{^S&nQO6#A#;CHkBhxb*^BumoVa%LY%FWJ?)J5S$J ze7Tbco7b)L~6y9BmBqcFKDPJy{_)(XA7oHx!)vqd_ek@{mVS+uNxe)=jOc8 zoyH&A9@ICb+{1|T78}QO*mIxX9-rpRO{k}LsB*gNM%P$FL#ORW+AW_sO5bRbS*@2X zI(xb`AG_S&{MW~_Z_gOcS}JoX_x@XU-9TI6jYac2ojd)a=S}lv6?pod;mfV>bbFlB zT<=MIFYyYb|n<;$I7qGL~~Wp z+2|er@U>On?8h>12_%Wc1Y)s*22Y92PJB3~LdbiYpM1iztm`nz2|y~1=-v9La}evjPKtCbpG z`K`yrMWx~z*exjYyQgB*7I&lOPus8g^l2tf?ghTw^ppsLZHLS!U-5Rj(B!qvw3_jH z5v0WzCPDxE3d!X9n3#BF~cycfD z<=O{&7q4Ej!&2iD<1Kyaw|^G6Iq155Z1k9;9^DsiiwVkT_q<-+g9oR*Td`L+?&KET zX<5zdHL5gm&Y3S+C0Ar0bzaGndx6kJ7#*Lhhr3j`1>_3^W}bd`+B+A zCeOg{gKp`yAA6$0gqCca*i_^_9Ei^V;6Y_sZMiRp6|O3Wg& zdd|4kww>*I-Lo@H9gkHW+iI9^(r=-y;m69;1GZ<$d3LzUmpirnfcM?|&z?W*-QHsL z{GxvAFFLldf$>3|KK<@RT@Ylqa{jo$rD~ji=DJ4Ld`CQAT}?W(PMuz(F7L)ZJGSF-V9fIHR+FZB*6z>mPiFGv zPCM1}Lq@!K#-+O-d%BfaI`5TR8JW}X7mDYlceXnH@WA`T@H;g}I#)O(`j&BI|KZU` zW|Y>OH+MV7Iy^Ri@2}St2TCa&p64}bEi@T=917NVzFdvh)iJSyLpHREoO`IqSKwQW}Hop>sIW|>>% z8qDR%z0H?<=ho!I*Y|yN9XV@Sq|H6SshU+UR$utl^||Qslkl&v_PaIRzrV6i@qXhg ztUNaI%&?#rr=OR;Tw##>Qd)7dFoUqGX*{`i_;Lk5%e9&R$?|Ea&$;X!@$uEKjvwE- zQbhlsm7E%USoXf*w7QpKp34HCG+XSmcSqc;R;#m9Pb@KuX_Yy5&a@VZy&78blVW?sKls;>o?om+L=tip8zg{jO$5O|N_*A{Im0r^RcS9)9Qe!@z3o zOv}sbqwe;q|8sEp_x8`S9^9#E;2ksF_JV9q+fs?k`m8vybTCiueZE|aqx-*~pKG)# ze6h2e%Zdx9`#gRpykdB@;l9&#&$(NDyFIu2HMfJquT^UO@#b8&WzWXEP9SY^ z<9q4d8w87w^W;9@%MGtle8T%WiQ$#XCB=9iN!~xbLj@bJmv)u?jhC4ZT{vC;WZxC# zPga^K?fT+PWY((8A;A+erY6}OJ`n43u0uvzcYb^EkS}-L$OF5+uS$Qk=2xd#G46X_ zt(ufmdi~+SpC*rO8$GAemw>Z_W|Y1RGrs;pA_>-T@C7@aByvP)@Ea-c>S#z zJbfSWcYDu&c#*#z@R%=GCnlom(E~3|S+{)Bvz21CN&onUA0|9( z7qxfux?Q*JFAh7?V)8h1=Tg@)2X33arCjt%>((vngp6zbva0aenrENZX7TiW!k7E$ z=k=i`9`ip%Ppz^~|4!BPUoA$KsqS|;tYX5}>#dUfx>rBmEwk!POY4w~r(?gIdUkgG z%NUn*({mr4RupfUS>wYlp4_K=x$pbm8}$B+|30gGkHVX6DrXlptj7$~mNthzANIPD z93EFIKyE6Izjfl;+fA!xlv;eR`-!s2^PI1pd$fP$>n~@QHRJCGf5w;l#_#uAf0qDR zVD0|TB#l0oZgp^J$8J47>l}93e`C<-DPw*weAlMUN5^raEnP0|d|k0)QnzirFbgI+Chz>1& znT?%b{LcD9vU|dyp3fIGzAf22sIKDjCB50lzrW^xfANAZw_*KqB|_?t?w;AqZglcn z^PJWdzTCd@U|pvf&upAbdR|)8LALznH2pUnx_kd1p~=+Zv7*i7vgm)yS%Ys8Np+zD>nHhqk@6C^azA=dP#kqdo0HcO;bA z-u85_!A%-PzV#lSnrQH0O(TQj-;?s8~~_cdQ` zuUpA|bFMV5**Q?p^4se(CwCd=4Er+V{j5p%Ygb>f{>U8t=G~+3m{~^uGr?>mzG`2B}0zFfrvGqWzo*{P z1wPY~r>;rw_h|IvjA=dEwrh7v?%k_qLbi^1*?!Mv*D|OV(ulvm`VC+1vY1DP!`21N zePU7e>4fPgQw{F72{*g_{M2f_r46=BbeU+~SsdTcV8*hN-Q638JC^KzZo;>xiuuz! zcq~41-TL5>4Lm!%<;zWsudvg6(57|=MhflU)_W6tQ8I9*t^L`_FGoMT7SSTKZ?KW) z{0(2;Ja2Fz`j$oL-F%N7V z!-e~v_jP7QA6*us<2d(&@5^e7%J-@fm00nc^vc8V)Ddlh)Ag===sMeEW0T!szn*pd z#vdQQ=gXDs{k{H~Rjcn!dsVns-f2mn-lyYUx18TPHGaa|hRG`{?K6*Ta8l~MfbT=$2EN{l!hRjmq7?nl1d zJ;S1$JijdSdws@x_PXQqXYBU)d_!(J|NgY-X}-1GX4pF}^l{PxSQ_gvGzbILnQ zAP*Qd<MC|(3Tor)egSTF4>?_ zuiar`N$zLs26h*9AJJdr`eaL@P3F%f>k_TX&i&zW>sHfF-eq`lKlA0jeY>nuwV@}* zeZPBu@TP-DI!y{VYP!Y1X0N!|swEC3;z!qbk-BNv^~q;!lB&7gcr>N5B6Zau*VtVP zTc57}GrUu^t30`1_;Ob}EpOU&*$<&bimhE}D8ouDH z>F!Mfw^pw2w&2;xX$DIJOr~y*c+x!a`i#p5cej7Rllzq~S1-A#+ps=ESB0snUY3vv&q(PE0BGqyCSr6;l^HD0aebuxRueqX6Ft8@oCjD&=tU zp&w7~H@@8VV_mIQh~rlsuTkaxXB|;{i)tebDketkPxhKB+j8&TX3q)z`ny&BwsG|> z*F7V%8dtM0b>eG=Z%ccj9EpNZA z^rMDLjqDXJr42^Lil>AO|MIzH)B7#A&u};qImEQbxE}f~25r85t(I@#JP)4SY`$D8 zh0%kZ+g)`w--P8a?{sOys~oZWRt5w z^K&}P7`tuonJagbip_OfxWKr@CcU4hKhLRjyjJAq<(2o1A6u%w`}+@`yLI23OuG2B zMWfICCh6DX>HCW>cX!p@;ri3MAI-WKy!U2y?`p1JYs%l4yU*D$t-|J2W;ZrJuh1ZP zYE0_+4Wmz=-kFfpDca89~qaTTnDmeaa4IQz1j`#7@$ixSG3OWqsRYiHbe@W-6VgF>H<7iC*t>vxeS z_cvdz!LdWmr@rlPeY%d$#`2Eu&SyrvnB{&ur{bHsE0zXSJ1)4JBk8q!>-Hs{Z%W)e zy=&AF$(OOVAG*byY*+2ab;&0^{(PSRaj1TJhc>=Tj&trcrF{4@!|Wf!`qng=IKFt5 z5i5}Ftws#!A$N_wX}@}cAbeKSJ1sBua@d7 zl&00Izj1r}T}Pjmby~Q0TD-#bmTCLv6@GjB4Ys;+cj3g)2A_R?-znj8^Xk<}k?T*I zm%CPD$F5x~cyjgla>dW5zpQb5nSb*=k!MbH+S2yg?{$Y9A9S2nz4G@glQoTY>QsF5 zaL=GmuU%d^J^J>n=ckv4g0uRhd|J>Wdg6>Fp>_D@!%$yM_0x-fe|S{A(92WyfBfK( z_N{95wG+F3xAzPZg~vJ>k~_zlw%cK6VWY-I(+-W6zr>k3!@lYX5303AfO(Ka}?Tn*8g< zE(6bI&>r%krosb?Lcidil^x@BCCODp+)(ts~_x#5HX;aiOjHt)%~{W`JM+Ltf8 z2t#`uzn=DCY^%ek)@^<^Kdyt^#cIgR2|EweY%p|QtG7QpH2jfVvhBdnPGOq^8}Rg{ zZ#h*zy($u&^kxgZl3Ez1U3aQ&+-q7)?F-)flJDgN-Hbl6;7LZK332<^ER31I)1~jZ z<|T&?+}7COli>}M?>*i69L#X8I+-W8Bwubq^QMd5mYnkK<)ZUbqfRy$Sxx_oOY*4t zBTjez(D+CP*R`A04sdCkVP`O7tKiuBvxcEF%iq~CqVBe{-3;g1>}@?s#FJZ!FSp{C z8Rv%?7mH}y{@sHomdmf3+@E?k`EkO`x8~B!tsBi({M?i__n_h7^!qm|c=hdkR8qX{ zv6nl$`fWE^yJ$Ce*YTpPF}+0D1IX~l=P?@t+TTu!lK;`75ktC~Fyzh+&&H%pON(WG-f?YyqxOSK);R8*qX;}ZG|AcYgIl-mmc_0* z**w}avrfmJjxSE`FnK(rgiz9c{k4i6+E3Uo4xPep-)N3m_0wy(eUU zhZHS%`j+R*&G6OhX&w4#*x+H}TU%1k)r~rJc$$szsp3QSUi@-!X{h5D^PlZf0{35; zJSi}yo@P;-ut9uzeBgy>xb&B;?Hv#^5wR_64ktn)u_FGsJ`*=^Wmbf-@|eU12X zW8PYYK6R3=?JD{;?pUj{qx)yBPfI*upIP&0g`A`=HA^Ja6Mwl?X5o;~rmL%e@jCS) z>t>A?>jKOh?knbQdb&X(za1hUr26S~%KS8WWfgawzIP>~igj#I;p@Y4KPz7B`)l)K zm&7}9ZTc*x}r_xwX_0xMf z;%$vKz30{WV&J#DX^nNgi`h=QoaHp?@#HB@_dI%bea`xmw-bBne|DHvW8$~j_iN`^ zHhgit)v9f0PBnKO_`|g<|N8)%qf`C#?1w}}of^AE_dtrxr^eU)HyM|=TAWx_+PGPD zlQ+Gem5N^4qi)kvPnz^Q|Kxtc_jAsTe_L#?9^v-pveoXCiSgTtb>it;kuP`dFsYCI zk(shrpPvYCugJ=BpAvb==5vX+dS7KJt-FpB9CqaN^{pKGw3Dg|4BbxDC6N_HByeNDISdQ=b-)_{YaieG4?l!B75Lk<=>R|@93h( zF&F=Lgz$JNZGn;iDZTQL1SpNhqZi#4S)j-QMHcvPw*dLcL*>}t!;38PlmG3d;s0#< zsg0-h{Xf;l|DV;iNP3Y4{@=C$`Sze7i5I1!zb*UQK9O|)zxDUumfn9SAIVn!5`Qtt z@br@ujgS6CW0L*6Ljy%Jxmeb{75n>Ek^iEIqTodq_^+}6)tNh;1%gtTXL^RK;s3?? zrvEC#|1VE0jVsCksyW1elHC7cQ@#Hr2}L|b7AUenkp+q@P-KB33lv$P$O1(cD6&A2 z1&SKCEKp>DA`28*pvVG6 z7AUenkp+q@P-KB33lv$P$O1(cD6&A21&SY2U;?7-d#1azh!g~1V2f^OV9I**Uu(KlUF=>|VKOOI~# z0s0#t^i!UFt2|Reb><+QVMk;GKy~gMT`A5IfIr7eXS~sENkGcIqx0G5mJ)Ibpr7)5 zM|MVvU>%-Gj`ECa<#%UmIbJdv-IfK+xp#CP8QtQD6~=>$pc414Jno5y^fcw(;hRXo zSYp7hGWQPWd;d}jj?znMA>BzI(v9p)b|pKef_Dc%XJFI0 z$8?r3o%>5?^wN2{>eKo@|@jVsU{ zpz<;em=4SUsI1W6ESLkV1Xcm7f$9ib1E>kq0?dHgfH`0R)B!Akx2k02hHvz-55`_8a|OIr>|8dw@;AW?&1D2y6i8 z?`1CnVu8iL5+Dv(1}q0w0yBYGz#PC0=mF4K;md&qz#1R{pn8x9tOM#Hj0sQ?s05e- zl>wYFC#VXHM3_;)K!DC&902qO+<=}yFQ7Zn251Yk0~`QHpefJ{a02WBbAak7)yZIh z&T|g~!htaW)u(Yl1fT$3BmNh_bKohk5qJd52NnPsKqhbE3D^c~ z2aL>qaX%gy2aEwI&%}T~K>0%XGY}wq^a4m8)x~;1T|fvl2I>P1fd)V$pgZ6S zI004w(VGEHfhK@8-~iYIc7QEl12_WBfi^%Zpc~Km<9v;|rNM0eq?op2?(>OIMD;hrfjl`iCeC=FD*%s(Y$5P~9UN zdI3}?JOB|e0vHZZ9#g(jJ)!zy4h#a^fuX=K?m7zBkpS6B0{8-cKqwFb1ON&k5Rd~@ z=SBlkfZhcIK>*c3(s3*h0T9nJU@5Q!SPaAf6kjyp04xL+0P}$;U@p)Hm;sP3(|{?! zWMC4|7oa?*xTXTr0SZU?GY6o&m<`MXRCzXwyC-`StqVZ;H4mV;NRLH8ED#680}VMW z$F(9b0VodS0IGUX3inj@sm%5Ss6C{1@gDB)0xJMZ;0{m>SPiTKZUHxe8$c#-4Y&xL z2aW>=fdfD~un*V+;u(gek1NT1JqmHit83&FF>-k13Q6K zAO%PUb^v6XG=S1iw%85q0@?u1fXaS*aK9fo1CY+A0V)TFfkOcC()**p5#Sg=x>Nk8 z07}CNfOJ0zsN|f*J@FDq&N<)$;11XWmw`*%{Z(AA02DR@xDMO~C=OMg<#6}EaD4($ zK0O8~kNEj>AJ4?2diN0b4}eF&Yv2{|40sA~-T&V&asL8%4*USJf$zXa-~;d;cniD% zvVeEMSKtfq3HS_r1AYRZ_5?{Jd7>GudDzpt3_9+^gPM;QlUP2~ZnAeG)1^)Gwhn^P(C4!_S*KHu#ll zImFI!SWq(zr5tnn=(c%=Qmlt1r-%?qplFnoC>I)3yY;+t z+*3xeC9SDW8$sIaZ41`)iEdw6EsaVG#nYjp(+9t-G6&TZDx0uzI*Ad08d-%k=SO0c6+ zor7X8g)=A)Rt{FSXrJXifg;aQGK)jwWW@%wG6%)h%GTD(P9V}{J(0+aa!vup6}xpI zik%f1VI(M&b2l@}g|F^^d@LxARv^KW#aK@z((X*}>k~Ri2J7j#+ry%E@NuA+fhT)W z=N3js6OZWXGyw|;f{UP7gOak>_x_H(t9I+@5DVq@Z%~AwcpaItGb!eDDK(|B9_uYc z*0znBaa^}=gqkuC6f5vdNjbKm$As6d)Rd_l&%oY_bH~SByrQNgbCfFEOtu_N&Y7sD zxRzkOut?wUVGfpra6cbSF-}Ln^-hR{) zP?{>G#e+g+H2ZZ7YqHa?-D*nV>1kR{S>A3+lh*32KY1%=AnyGt#n z){08H!6>X$6>funlG0I95oM2{de+8T)s4caRH3{%qVR-Ey%nTDku+ zouH7XIB)nd?O{8SJ(I>-8P$o#zfS9INip&&K|IQ8UwAur7SbrU7rVU-NG_h_3!Wy- zT?+~?2iL)aA{V)3|M0AF9agN>)oBF_kau|k3jRgbofX?LE9cxjNTU`5l#h5#K4jD4 zF2^L>jL9cDDBB-TsnA2}6((38(Sgx7iGO8lk&01$+tos?!CtaNg@?v%lg4>{w-8=@Z zo3QQayk@#OoP%X2LJGY+1V@e~y#IB4ZGf(htyL3N;`LEU$vV4ub!Cf98uV&OXno;Q(wY@FL2u|rHaL~! zoaWWHr5UBvflMG63JTev`;zpgk4nwns`M04THqxPWR=cg?zXo3n)wB)DUtwRu}q?n z8^yget$gpQkCFmm0?dyqg5+ZPgKCFAO&+E5UP-Y9Wi8?%yWN?6e17RN212E7MA;4s zm5>nUx8j3-QC37@rWQ1=pyc^p)_g}rmzD2ybk92EUtqpV~R9b5MH# zD3lA9-D|Hr+WK|{Mq#by2v8`V4q?!g4gdv8LJ>&|h8qux zAt-gf$)(oUXs^7jme2SVfkJj$ zy5w}#(f+$ja}>mr4GOivRxOW+pU>>mpQAupNpwPpvdHqJILNpUdXOq?2&yvAaVqA@*%>sGi8JS!{9b#hYig;#Am&QfboV0u^? zEkrk@wD5Qe&$+_2E+ihRjO(6ke`7S5@YzXx7P0r=QWt=kN~@}cA;4T{tda^j9QH9;Gt3_>-oUy!-7KtI9ns4{GKm@ybDtL zuXw&SoKFA5^U;aKdE1|X)sJ89kEMero0)uHz@#xAe@TGEUm{m5xf8v!*VLyrppZXs#OxrVH$pu5M-qki{R4yi z1Ci;1j>(7gC&uj%v3OXC*QueDmh7{0mxq6&jiAs-0y$UsXv!Eol+qqsE`?-eR%rqr zN)K$11q%6)dO8Um!*@7;U|O@bL>l0U))ezj+uAN!94acsC~PbfA`=A$hGAS1f8%_; zvB5u3MkyeE1@f@|j+fXY$Oj?jP7*jgsCxQ1)7qYTo&I8luhdH}cznqyYOCY$EKURH zmcMmoonTJ*-jHR;Upd5udgJKMdb?aa| zFV`gMD>qd(+#W&R-eMW%^18I2T|fNLJf;B~>3L#iMkWdHF@7ueJ%8rZ7^VS>CmzzM zj4pZT`Y^`vEaeZ?;3nufa2jOHs9k27dA21-fx%NiAy3|-R%iF{1zo#=LgfwVISdLK zfXEAO$0vQ9HKi&jTraIa4Vc{q)lq6Npm)3==WX_BCXMB`L@X9JZQ>x9+%G7ncdho{ zxOkvJut&e{@M54(M*~>*==7vW&T_m^(Lp(#A)c= z!a7Xac~B}Ko;&T@+`iK*djoPCmZrM!02Jz1RU7ef{^TK*dU8A{qn=XfC<*$VD=rG^ zw=CoMnejN0ZiSRXxG2q#Ku~O*l%k4&v1w#Y~4V3e!Lu;KxeUq+90mu0-lrXIe8~#m-p|lKIID5A6Ez zeP|S?HEfW-=MC$y(R<+|iNZ^-SS<9G$m9ycd12FL56i+BkQzYpah_8Ahu@g}PR@1K zo}-qQS{aQVsgV9C^7Li{Wf}E-M^OZs@0%V-quzKhv_S?32w z8MCHGSJBq9&>A*ib-NG^V7J11C=$6)CiW4B?&`QE{$%4Oq#Jn`7@=@!h4-rp*She& za)JF`R_zBiQnvMq%V{U7m#GW?7D2THy5%pupfpp~(?7>^5nM?eB@XkENdg58Q&udA zzH5`sq%pfG!wQpIw*K@D^OgRrrB_zyG7DOfF zsdb04k3X-bc}ubzN=W{ZIO+m&sL(OGy@TL^l`^F={ZUV!yF|hFB7Wxi3ZKdPC$mNW z;@lwfe1&UJ_-uILvuuUW$P_;Bvc_8Jujlwhy)BWDNOKOcG0rO6||?NE-&RZ5fJNXN7ksr;!j&T;c5hc<`&%Do=ekY)H zQ!86i`vEBEtVY@yU9P&O-h)TVl4y&Ru0hG7vDw1UE1&Bdju-(R>e=CK8h`;+q~Gk% z6J0z$1~D5j%4Lox{#&?St5t($>*}<`DhBbq01Uxnu4~>rDp_wYc(|U!cTlL6`EBIu zI@vO(H7MviQBl-Gv8Q&fQtH};FZQ@%_6xbd`c-8?AzOUrEiRPf7ypwfQe?_O-8`mxuEo+_u1-_*a3deH|(r8=~^=0kKv>L@Qo`cqoR!&%3 z<>IOEbnweXQCVd`A@|Y*E2*GRF4&oFt{ZMUmikCsp8f>I2$Te`;p0}jO8clO`THSg zVAyW}EJPZJe{E`B!)ZMFE*O%qU*SAYz(etjX#S)4(q)Rps3jcFKanO^1bN88zvP;0 zuiXQtEQHov{yakYA>E9s9E+`du~~*XJ>mdQsTcanljp?ry+39C9ur#sQF>*W14}@2 z?+4eH?3mn+>mNW;10>m)tkdxBte`FpsLkTy5r-N(E5TTZQj&>|s?xO&NuBQh&6hwB_-az2Z_ zvr^5lsE&Rg*}9y|qLGbL<<{7?D^YoP(lpU{YEbynVw=XwFq zUw9wQkk36`slR<53OT>k^~Cnc7UmM%kR5CJAy*B-qyC@ zTwuML!gcG_T$$3g^PUC;t~MZ_NYW6`P*6+|Pp_ZH0z^|YXeJo%$y?@tLb`>GNbB0! z*^A}|3-@nCfzK(t{zSA;)`bkWj_Y2{d*A?RT)(Pt&sTsKBa0%Q!aY)cze8;!rRQJF zQ)Zo!AR15~PLZV+16 z1ch>Y{koOXH}wovmmDe(OY# z4?#(ki4|;`K!NIB46oF$eH zboz#9P`FZ6cu6e0KU#Q?xbS{&;nKXMXiI`I2HZY$!T2%P-jEHH^ASJWC~IT3``nF9 zCqCW=3e`DV8x3oR25ptSn#*h6TK5h}hxdm^qAs7H@Sf^FSzRu?Kk6wQ748F{n7zJI zRO{0YGF_cMoKA(?;GbxKzbi`(x;%E{(v$LFY*eDUz)~8A_^7;9ex761ZC((~4RYn6 zPCI2!C^Gof)d5`{vChP~H+UqmC)MF`g9gWiAL??O`!F%4{KI-F}31O|Ft#_gWlQrWYkwPJx)dnJ#reCzM* z@|z^+hfs@wc$$GiT3>8p(s$79PX;DB&aFsoJHaGSsHeJaMwYm)sD3BJ!?iL|9A)+P z-=%(pXDH|Fm`7R$iXnKanHO8pYo)^zrW>P31H=mY6MX}kZyG+wNGF!1hfxafyc(tAse=;mCZ*%gw8 zR#v~G(ubTW@uF^5x6@}q;cBB1M+qKaS7Xjtx6`0-tK~I7Aseh+wEVTc*$7&Z=4MVC zf{39r6oe2#pc#t=&?5Oq{s>-#41|Gj|%2Jit zykX;rv(6YVM9{1URLCC>C@i8vc#xp{T7!qJS`{wsPakihQ^QrMQ{n0Pv(_8t_SW;~ z0(=#l`pKUQpfE3%KNmnj87U||ps-oP{OM6i%kM+Tw^05}MY<}X^v)}FyJ=bfP#S%p zZ6;d5DJ2yO7_m_4MgG)sQ+lzvX=R_qtyyWLltx+?=#elR;rO2%eP9aXpNugIZ<+qH zd$Rt?PO`!^z+j5?((>=SEqw0jpX`hi_fYo9$GrAAH{JLZW-zES+SzLwpKbsT^%JXB zv^1Jv(dR677~5i~f}f{c&ODOS7e$%UVGHM@giyPHdb*9|CNpUq6tX`CfXY%mRdY?Wq@>a=^KiBd8lz+L7au#iM z<_^Q{SE@(+DgOoNs9lj+n@Sju_J8u@Px%VDC$qr8A0}&M(NQLlZ%yyY-(A!4O^wlM zm`N7PV2xo{%qH~q?)J^Hr_$P!n>9JB6Iw3kK4-!1D^!-G{ouBRZ3h>4cntRu2MiCC zNu}PyB>{m!3YJH5PfTPhTqwKb)*e9tE~0RS*wY%TWYVAjgw~ zG9mppe5Bl0p$L>Wx33<=$sE$?&pKuMKxp?@p z!OeeUV(du_KP*cI|Aoji*dL1VUy&5g;c(agLi{W|Ujz0+t;1i6Qd*fy2z&UKMQ{mH z>B2q!l^ELD4nDddJT*?R9xWfjuwG(of02YXb81ft%Y6u9S9Q$T>h3QJ@WOJnmj`vp zf<=BBWT^u|lKMeNEAMt%N=I%?V9mW3D)-21VO6a&fKzoVL{muZF^rM>3PVPj$W!5k zJz0KIk(V%+5Gcc@1c{%QoT_UsIrpt*`{hdE#PgNlUJ1!hvSLknBJ>Fh6teh)(m;ho z3ZE#Xj|N0OV!2B`X@9;DdWmEqk^rGd=I`k6_rXK|Dlook2nr?9e<3(G?7txS@3cVj z?CpdItD&U*g@Uz1WoIfYJrUmP`E4#>UD(;qfu@e>_Hw@%^V_;|h5p z=2TPv!|@erP=2LT$EmG0=hkmkJ%=aJ%0nM*DZK;TY4$zZgdwlA1rgHh9P`ayVsr-- zSSa)G)KC?8p&*_2#9E)faPp`Nqrl01LnWkb@Y=XoFCRSYig+*t)Y2l*R}WyIi_nS9 zG7^Ja8i298hg9k>_mhTTUxOE#1Cc^XBYL@?SPYL3Un~=k4w7K9(icx&LiBjVB7bzS zJjHUkFhnE^K<`x=AQXp6U@Ng`ln}dX#4IAY0>RNz;_#Dju}m%(d5gg=^6;Yzb$T(C z3DKTlk;?o<3Sm%ySneqb6nimtkq1ISAtC+`kkibShHNN=LzU+IvRISOItLo0DnB%W z5akUrhx&D}oCcnPQv?|W6Cjh;p)|`Z&~&6$K_*4YXh^JCVnG?CGS(mYCS&rQwf9P*mU_IR>~0 zu}mD~&pl#0FlxJcc;$_;mY0Y+c&hLL7(E3_CF&r4w&-jrB;Kg?s?iKGUm^9B`UxS9 zxr4vxyXWUY8uGtXr^Zj}MW1WI@hP}lPv4+`Q5s4Imjrd15QF+bE!hQMufey=h3V4vqT>_+Vo7SE|7%a<)Kwm(54s7&WHwy_(}`R+#MC znWf$ui0j~Ej8kIW@&v$<+FEyd1#()L$*rCL!2pX!$JX>0arKQwsg zqPCs}8>#b(V#>`plzjTCk8;zwl^IQn*qOC7v!~933qM zs$4fgEawWo)MF%#32@|JAg*}=`(ZLL&kKK1V4mj?bdK>(ld1WUbHV@AiF?h=$c*BN zvj^b-(6-V7FB((ytmRl0EPR$Sk5I1+c?QC=c`Zkow8Jg91FswFxmzg&95}7d`c~p2*}FwOeWM?!Ey^HxO4B- zmeUY-eyb=&{9!7V4sE{i4}(L{A8%M%v{ig)#Lq>gI{Y_GiZ)$%Wdss7&`4&Q4{6|)Yl%o))v;*2AEn2f7gO>*cad)IM*CEl6Sl*})th^^7Z3tAh z02n%pmGflYBDn%1!@w|h!_5J4^J#K1in5qxG8R$Ly{4JAK;<*i=8t~2rt(}sXqEx_ zWUxsXHWQ#BS^1P9S$`^s!mfQXhQ9hG%iyA(ZpO}aq12n3k<_3DeS8aMx*$8W=Z5k# zUT`RHz(eyrnrm|&UBH^>nZ>Go^r-wy8qBIMrol&(yP9KGes~Qo~-iPRLzn)=&t^uPSGIz^s0t1zl`WBCY8qxgV)q%r@^Sq{=T1HH{eZ z2886iFEAY9`p;T4)*jwm@nw=KeIm^Ov)t zr7djk6dPD_?`deLG;{!_M}+<&Pnq*>kS*hIUjr*k;m& z@}NLk(~yr25(kNeSaQMWMkF7lBx3B2Ptt{$b&+8>qiJ|vV0cx!Y0{K0hdBprf{*_B;u1EEX=8L_smf}N)y0UK~#W(;#xqK}2 zRrs?hKQ5!;0(^k&7BX+>Y-N8E8!lR{@aff$+i@QTy+K1W7gFV2cykYujbLD)G z%#>97Z^o~!%cbJyIeDHK-dk2GSVP3B>t8KgaXoGbZL??Z^hfOVP-vz!dBiF)ldiY5_XxE*Kk5uY|y<(nz(jYI0k;3|UNv=;gtQc|z#(3YneFz&U_v1l2ZX5}Pze>*v=^KX`p{ryA|uUo z5jI1K)n>Fjk$^GJGxjNR9S=5G@fIsQec^Ah`A~=*G~6^MEyIL{2~jWtl>Pa9FADxp zgC&9=7P04h$HpkEZZr8p8l7oKy*dztsUO%FQkx}6Yys-sA>wT8S<2Z9v!gW856Vh@QI+f;@TfE)u0O#}PJA4T&xwG}(;DjG+c~5;YIK{?Gv;RO-O=n0Wn5 zeo78_Sz*LB8m=62gL$?;OhZ!m!61bHNR5K_&Ookl!JT^#>*HJ*9utA&_jYwnu1G~pVS9WXn+(FKTVBB zLBZ9=$s>g|1lkH0PZNmYJ*le!^u*aY9{9Le<2*G#7)0?Okxx`)HJ3Bxu}hQ|c3K^b z1xH3am=aNT5j12XBk}t+kdyBnYp1jgJk?z+h)_R}SJgV1ovSHWbMH~)wNK_MPrahV zv*WK=Y}zUsPGSNB{%5V0_Ruspij$bs`f#feY?MTue(Z>#DN@vT4VEsP3E~SUDk~3V zC;qsxwWptipt(S?rCjwu1LFU9gLF61I#G(EgVGCT7z>Q>F}LWh=Fivofre%!oLAigd1(739m)J`?y1hJ}HwOHyZ+6YB{fxaRuTMa2? z$Av)xyDIZV#YL`&jUI3^1g5XBbgDs4-hdF8_XToFdry!yM58WKtE0L_jpXL?>2K6y z_$tSniIP5GtijmH=Lr;raW?}A}%>>dG9`rc_MIrd)!G{ixpwE!~ zG1tjHF-EhEvsr|)pa5k-55mzMG}=HwoZUlv8nNyRrT}pWzQWd&?FEE}UIn~Ww>}!| z;mcP9a`HUGqT1U*ezG8d{|E=6z2Rot#IQ01Ue&GAWvOaYAqU*>O$%QBBlDQKwXqO> zUM_*1_r&a`tsL>P8{E7n^>_h`_#PsR&M^5v=d@_Zgg-)(I(d232~rW*BJW>_RILl= z;rpwSp~?(sqq+qj^@LST2s`o5ip|EehJih6(23C@j$K)jwADIx)*m?7Rc!FOJFgIIs@uOR`O4Ex!KJ(rV%G|7 zDC8QSLW(=tV*F7(I9{wK?!ztWz5=im4+g?G!*?2nhBu{7J11;-q_Y94v^#2 zFq~~cCtzrZvtR~D%_9KHpt;vp=JGVpB!U*pRQ-{^8o}gUm4%4BFHl{ye}=)auvK2Q z1op@pIBiad0KLwj{JKmJ5h29v4VbwEOLx$uH2uXQgP)=x_ zUd^4X2Yc>4^EKLb)2T)~>hlpG0=cLIYOInk0oC*vW?f1ONN~00YGX+yDRo literal 0 HcmV?d00001 diff --git a/recursive_verification/circuit/Nargo.toml b/recursive_verification/circuit/Nargo.toml new file mode 100644 index 0000000..c5275a7 --- /dev/null +++ b/recursive_verification/circuit/Nargo.toml @@ -0,0 +1,6 @@ +[package] +name = "hello_circuit" +type = "bin" +authors = [""] + +[dependencies] \ No newline at end of file diff --git a/recursive_verification/circuit/Prover.toml b/recursive_verification/circuit/Prover.toml new file mode 100644 index 0000000..c55f1b4 --- /dev/null +++ b/recursive_verification/circuit/Prover.toml @@ -0,0 +1,2 @@ +x = "1" +y = "5" diff --git a/recursive_verification/circuit/src/main.nr b/recursive_verification/circuit/src/main.nr new file mode 100644 index 0000000..3c30bf0 --- /dev/null +++ b/recursive_verification/circuit/src/main.nr @@ -0,0 +1,11 @@ +fn main(x: Field, y: pub Field) { + assert(x != y); +} + +#[test] +fn test_main() { + main(1, 2); + + // Uncomment to make test fail + // main(1, 1); +} diff --git a/recursive_verification/contract/Nargo.toml b/recursive_verification/contract/Nargo.toml new file mode 100644 index 0000000..68b8b94 --- /dev/null +++ b/recursive_verification/contract/Nargo.toml @@ -0,0 +1,9 @@ +[package] +name = "ValueNotEqual" +type = "contract" +authors = ["Satyam Bansal"] + +[dependencies] +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.3", directory = "noir-projects/aztec-nr/aztec" } +value_note = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.3", directory = "noir-projects/aztec-nr/value-note" } +easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.3", directory = "noir-projects/aztec-nr/easy-private-state" } diff --git a/recursive_verification/contract/src/main.nr b/recursive_verification/contract/src/main.nr new file mode 100644 index 0000000..babb3f9 --- /dev/null +++ b/recursive_verification/contract/src/main.nr @@ -0,0 +1,52 @@ +use aztec::macros::aztec; + +#[aztec] +pub contract ValueNotEqual { + global HONK_VK_SIZE: u32 = 115; + global HONK_PROOF_SIZE: u32 = 457; + global HONK_IDENTIFIER: u32 = 1; + + use aztec::{ + macros::{functions::{initializer, private, public, utility}, storage::storage}, + oracle::debug_log::debug_log_format, + protocol_types::{address::AztecAddress, traits::ToField}, + state_vars::Map, + }; + use easy_private_state::EasyPrivateUint; + + #[storage] + struct Storage { + counters: Map, Context>, + } + + #[initializer] + #[private] + fn initialize(headstart: u64, owner: AztecAddress) { + let counters = storage.counters; + counters.at(owner).add(headstart, owner); + } + + #[private] + fn increment( + owner: AztecAddress, + verification_key: [Field; HONK_VK_SIZE], + proof: [Field; HONK_PROOF_SIZE], + public_inputs: [Field; 1], + ) { + debug_log_format("Incrementing counter for owner {0}", [owner.to_field()]); + std::verify_proof_with_type(verification_key, proof, public_inputs, 0x0, HONK_IDENTIFIER); + ValueNotEqual::at(context.this_address()).emit_in_public(12345).enqueue(&mut context); + let counters = storage.counters; + counters.at(owner).add(1, owner); + } + + #[public] + fn emit_in_public(n: Field) { + context.push_note_hash(n); + } + + #[utility] + unconstrained fn get_counter(owner: AztecAddress) -> Field { + storage.counters.at(owner).get_value() + } +} diff --git a/recursive_verification/data.json b/recursive_verification/data.json new file mode 100644 index 0000000..5fb6cdd --- /dev/null +++ b/recursive_verification/data.json @@ -0,0 +1,632 @@ +{ + "proofAsFields": [ + "0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf", + "0x00000000000000000000000000000000000000000000000b75c020998797da78", + "0x0000000000000000000000000000000000000000000000005a107acb64952eca", + "0x000000000000000000000000000000000000000000000000000031e97a575e9d", + "0x00000000000000000000000000000000000000000000000b5666547acf8bd5a4", + "0x00000000000000000000000000000000000000000000000c410db10a01750aeb", + "0x00000000000000000000000000000000000000000000000d722669117f9758a4", + "0x000000000000000000000000000000000000000000000000000178cbf4206471", + "0x000000000000000000000000000000000000000000000000e91b8a11e7842c38", + "0x000000000000000000000000000000000000000000000007fd51009034b3357f", + "0x000000000000000000000000000000000000000000000009889939f81e9c7402", + "0x0000000000000000000000000000000000000000000000000000f94656a2ca48", + "0x000000000000000000000000000000000000000000000006fb128b46c1ddb67f", + "0x0000000000000000000000000000000000000000000000093fe27776f50224bd", + "0x000000000000000000000000000000000000000000000004a0c80c0da527a081", + "0x0000000000000000000000000000000000000000000000000001b52c2020d746", + "0x000000000000000000000000000000521bc80a0da65f953bed055daab4a820d7", + "0x0000000000000000000000000000000000029ba8347e2905ca232fe175263e13", + "0x0000000000000000000000000000009f3e7e692f397504ca1eff3a8c123a3df1", + "0x000000000000000000000000000000000006e56e92ebbfea47411b0c3ff9fd62", + "0x000000000000000000000000000000b749f9205472dd97e63494b7e1a1fc218e", + "0x00000000000000000000000000000000001283f9222a98effed4faa5593543a6", + "0x000000000000000000000000000000fb73d37b5b246aa6e9aa005bce06cfbfa2", + "0x000000000000000000000000000000000010a731693ad5df45e4f473f9baaba7", + "0x0000000000000000000000000000003d00fc0d51a983b4799262eef90e34164b", + "0x000000000000000000000000000000000015946b35224e1c079ab64904ea5cd3", + "0x0000000000000000000000000000003ebe598a23ede7d467cd8d015094e3e5b7", + "0x0000000000000000000000000000000000098360065ec1fa7872eff49568b217", + "0x00000000000000000000000000000021101b9ddfd3ee23eb52071cf579ab7bb9", + "0x000000000000000000000000000000000024f31563348ee8cab64d97ab29085d", + "0x000000000000000000000000000000ddd116a5d4a2fc7c2ce407e9ad3f41c1dc", + "0x0000000000000000000000000000000000217b3d9c9df33563227107ca31c28f", + "0x0000000000000000000000000000009d9cc530a0c14d026948d908f1a9a4b254", + "0x00000000000000000000000000000000002f8fade6d407f36535f7fc2b4b24e3", + "0x00000000000000000000000000000014277d3b61ec1da518d04ea821e529db0a", + "0x00000000000000000000000000000000002975a99aec497192b789ebda6fd3a1", + "0x0000000000000000000000000000001ebe46683c45db62e347c66d372ec61557", + "0x000000000000000000000000000000000021bf44c4454b6d50804d3449da4c15", + "0x000000000000000000000000000000b875a92dd4ac0d2878c871aa52ed80314c", + "0x00000000000000000000000000000000001960541c5a908326c22ec678adc120", + "0x000000000000000000000000000000975ce704b43fb51bd3a0325ac6bc69ac62", + "0x00000000000000000000000000000000000350afcd1fa94407e60fc2ccb234e1", + "0x0000000000000000000000000000001eb7a960a92c9b6a7b8e004fc8270a03ed", + "0x000000000000000000000000000000000000202d5a02684246bbce0b3a25f191", + "0x000000000000000000000000000000e9f240d87f89fc2c6b6c281a27e02fb4c7", + "0x00000000000000000000000000000000001b03cee98db525ff2cbb6331a7b1a8", + "0x0000000000000000000000000000003dcb2857cca481c91472503c0d5f18e254", + "0x000000000000000000000000000000000014a4d2884656514449d7aa9a39ce8a", + "0x00000000000000000000000000000056c1be05a7ee9ff73eee782e7344f54922", + "0x00000000000000000000000000000000000e4b52770453ab95c0aa82de4ef7e7", + "0x000000000000000000000000000000b3b3a1e3edda25d000bf508af65288cf55", + "0x000000000000000000000000000000000006584f735e566690ded8fe540f8426", + "0x1321e8ff3ddcd41eacccb54501998c7a8286ec3ef4dce3b54a7a29b0b86a183b", + "0x0009fbe9c800f3dfe656b663ced6ddc4acf5e387e6ea86fe274e884e79dfcc35", + "0x2237e15e8189e6d49de468ea0aea9c288b286094466c4cdc441b861543749657", + "0x1ebb80064da1aca197b1cc4ce9307d8d3117a547d07afaf93b9dff1931d19ac2", + "0x12372186de19104fdd2122a7dc408d938a1855547db25502db235161d8144819", + "0x1c510dfe0c9a734a350d7d2a0209eec88ca9a102936257cab5bd27a51ed8c583", + "0x289b0ed2392e718b5e18f70ad4c1a42265abb671e2c10c7724b78b3b7abc8d44", + "0x03dbee5f236280c30faebc03aeafcbbfbc17047d947f95c26718fa85c2555d97", + "0x1da1410c559169eef967041de313741c95ac34c67f1090676faedfc777f38102", + "0x17a8cd2f25aa195f763645167ab18ab2e0d857c6a704003c6047e4ad76b02239", + "0x00befbaf023e346d4cb732f206b0e2c5806303d314366227ef185f80cdd159dd", + "0x0aa2322773e341ef2ce5973615b901a359b9783eb7a0c4671aa8499702e624d0", + "0x1fb5ba6994e8ab8ff34fd3774de438b63fa94d69066f3bf61f98d2a8a6071ed9", + "0x123d93ef18805a331844729b4f5e1f15bfd41b5944aa38e178c0802bf2d1d57e", + "0x0620fd6f92c3c3d2fefd8ecff485ea7a76a679bf829d9add35db09204b4b5366", + "0x2c9a5a99a1a6fe00a125309222a94694a25c46778e51cb6af597f400ae47a241", + "0x2cd4c7d00c8f4f553424d3ea5efd238fff26851f0b6c4ec8177de39f5833d732", + "0x22d257e4bce845b49eddb9a32d1e63e541b9f81c363c40860f5fb683fb4ac274", + "0x067f649cec98cbdafe4bd72cfeb87f81b1c538d8b6ed55082a97f85af88f85d2", + "0x2a5f92aa44297f90f0b91f669d36cb9a1ddab566d6d724c75562c9e5391a261d", + "0x0396b0fee426c4658aef7a31175e1cf8b2db1915f69205ba7628ce8d172044df", + "0x2356b2c9bbe20e695b090b0916e297bf8429cdec63d7008864027685fec9b921", + "0x2314bc93f98c18ffc27873f75b36c358b279998ccd3c4fb13a1cb26e279322f2", + "0x1b357e8a095878f95d83aff47bc7c369599ba47f4f9de50e96686b621d674d5a", + "0x1c827a0f3fe483f81c631224ff45b3a9f6f3362ec87a1f0c8b73866c3aa89837", + "0x21c3530f8c7cd15b6226e4bf1a2f159cccd9cf3cd060dfccc0bec4b6d9a86d26", + "0x13b4678262c6b285786c89997f5909bb76d02b8403f3503601ee0700afec5166", + "0x277ff04817b42b315e441f16db8cf72e37b8cbd2d7572caca9c90930096bd2f3", + "0x04d93e922f9a1695b967a2390ddbc903ba1fee0e9787ec8816115bdad7bedeb5", + "0x0a21e719e6b33840588bf1c737ae25bba95a3a5e2c9a3454aa9f8f3703a0e1b9", + "0x08d2e89740e428edcb4d10e961061412ee2f86f512cb424dd498f6d4212a990c", + "0x1a216353437f1ae9bb6752b32c7f5af71dac6abde2f0f7a32c85ac4a43be6035", + "0x016bf47066f8260c5bf8ccd4042b7c1307fcba3e7a3014c22401cba4db9d79f5", + "0x21ffd63380df73ed87a4b1d0417e2b1d46b05e27d7ec1e8fab03810b4b9f1c22", + "0x0972f431cb7448ee9edf470e2c28db52eb524ff86f5987fba522dd626d0ef170", + "0x06ef74b535fc710aa0286a800a477b225959a12fb46d1a4d315214b9a9f51fe7", + "0x2ab3c214a7d0dba9c2999c5b4fdf3c87ba20f148eaaf54dc1344208f61291681", + "0x1c4f06dca408c97d297c141a23dbc5664c94388c60dbaeb8052b973177e1b610", + "0x2e06b756f3025011864bd4a6c5551a6ec1573eaa14d19682c3c988335ff5c565", + "0x14661719aa8624811e8d21ec3cd5882d211cd77dd2ef11a3089f123ce40d5289", + "0x0c53e6e5f4e71c51fa9422c91bfafe5e53f4f9344ab9936e785479b17fdabbfd", + "0x27749f74a3ca16fbbbecc7439f76d9e492db7995611438bbc969c966ff6fcf64", + "0x2470790ae8e36e1bcf3dd5004f340f0090c6e596539ad8b2864cad3a2eca74be", + "0x2145580a17208ab200cba44c92ef62d41bb1a2390a94a66fcd471878b5e18d77", + "0x1a5ed5c08d04a560312493c3383ff5d378e157702c6d917a805e459706c3ee75", + "0x1db92d8d45f4a70b1b869a6d61d271b85be7caecbae1a7a2b9cd6991edbd6d92", + "0x27e95f6783f3710690a48fda5cab8879974482d102fa1a7b3a948de84bfad347", + "0x26657e328721d1ded14b12430610cdf3cdd9d7fabe006eeb3aab6b2b2cab65aa", + "0x1b0a76af23a14969980997a0b96f02e7aaf3c5c1cae7771287e6ec444651c250", + "0x0a25055786704e73110e8747d38a61f157e70b499e31f0b4a77d83135c3cd681", + "0x2eeb5f21ab574c25c54db27c503c16caad564b6f245b8e707684e02f7af5cb7f", + "0x0fd06608d1a8710b4461c5fbab1eef950da9cb90e084a719ee572559b75303f7", + "0x1403b0778c73d506903e76f563fc07172d54b62b863697f0192b53158f63adb7", + "0x176a5b513ce251c4cb803152796cc392968c8a635d84407bb7e037fd62957ba2", + "0x03a1b56e1efc1936b915acf0c8669a50390aad1aaa2a30fe0dfcf3374898fb58", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x03487ce8b908d825578fe164aaf9074eddc2f0966104fd7117ef77b60cf58eda", + "0x0771a1e0999a5e66892de6d4398dd25b9868204e6d21146882ebaccfc1d499f7", + "0x1f2f00595c05371cd4076c2389464b5912219551ea4c84c6a8c0e98762b12c18", + "0x2e3f793d0fd298551790d603f72d84a48a325db1e93951a0ff79c1a7c79eb471", + "0x05cedf981982debdb695f4f1b6a3f631527045217bc89015c05d0e3de26f5702", + "0x0b8c5a68606d551bce38a3f808eb36e4687eac2b1aaf7257ffae5cf173f77ccc", + "0x021476a8c907e630a73dbfb1b489ddca641a49e873a86d04f1a5c899f03f6fe3", + "0x2b9a6c69b7e736e154997f931c140a8b0b352ef50018fdb498fa333033a7bc83", + "0x00180e99dd78f15bcb1f2c0aafaa0903f364b5c7c8251a7e8410971721b29b74", + "0x1f24d5554a45bd2fa4a5e3c59db76a8f162b2b12197845e9f83baeb8ca46560b", + "0x0da89c6bd75078b35dbbe40abdd775776cdfe979a3d5057d904b34f94ef0b4c6", + "0x19e9832deb5d0daa5d652ca4768e83420b742d88acf6597f8b4d5d08187a63f8", + "0x01e299c19409067b4fc447bfe55cd24da83353972694b9c3d3fd6e71679466d0", + "0x142d648035f89b19ac82aef3231e56bc960fecba9e8a9189bad023f9f9c12d26", + "0x221b4d597a00869fe561943b200fbfe13f51fb5496053720b69bf34f8f89efb1", + "0x15f2b21dbdc637d80ea42ab13f5f97d8738a77adce08dd370fe86d711934b520", + "0x26076c10912a3f786f204a24fff26be1403c89278c84e5665e8a75a97b2f60bb", + "0x2049879ad2265e9294bb2b30c7c5be5f19558ae032ea1b06357b843e5c971d5e", + "0x09ba774f6d542845a76d84703bba16cd743132ca9b9f643c8e058934b1e19c9e", + "0x107d6527cd18aa9dc9ccaacee0491a370f178f91f6c085bbe682081e74fa21c9", + "0x116dc9e5460f8be753eb555e8ec6fe7b7ca3da943a3cfdcbb8ed735916fcecab", + "0x109373dd8ef2277cf3c2e70b679849bbf614f286480057dbb7f5bea5f24e1c70", + "0x1e8359fef5881670a8ff9b262cc4ad4550a50079fdcc22887f332ba1e81674a6", + "0x1e24aa21073be32db3ca7ce6e4c5824ccb67dd1801ef5f5af0ebafbb71b8212f", + "0x23143d0f24b41d5fd42472b5d51f3a089a9004f10a287781dfa96cb75b6d2e5c", + "0x2ecab79e30de2520984fdbc98a39605a2d15bec5218f1ce1809dda21278dc240", + "0x250f593b8efb3287fc6ca5068a6b8dfb3ed75bd815af7bcbb59fce5e79fc8efa", + "0x0dfaf2b3ede2c009f25d4df62cddc5fe806968b9dc5e4b0476e95766eb667d8c", + "0x0b4e4c7ababf245c580404677a6b4eaecc459b8a8be013736b824ce5a43ca065", + "0x03725aac59846236928f8aa820a30cc39ded109c6bf7fd71ad56b6d544a08718", + "0x2e3343b90ca0d0715ea07cf19efa5ed3e5f4effb33ca3c4f389ad78ad6d2c81d", + "0x0a03a7f29c89fa99fb76061dcf27117c9b72ef511c217a4c1d4becc295a61052", + "0x211b5d18196f5954feab5d50ecb879cf71716738dde5728c772885fad4085b35", + "0x0fba62127b7307495233453a141ab1865345b78cb725edfd4d15082be0572312", + "0x0fa4b9406c583272a90333961193ac062af05f41064796af336afb5e5fc56ad0", + "0x1080c890277668efb7023afd7654dc1874846f6cb6577038765fbd45870c0dda", + "0x21827fb2569a2d7e2cc2a0c856e0441af1094ebacef537cfe6a63ffabe123c22", + "0x300749dd279afd1513c2074fe5218f0c5c7973d78aee5ae3786e5a001487cb37", + "0x26bf945c05914b6e95a2fa8f5643756e1054805dca0f9ab512b212376d51ca60", + "0x2c5d84dc2cf1535a9b8d8c408597bbea145e9971f14c1d4bc8b696ac778e4c85", + "0x0884db12766220e1189a17e974131c78565a0d98891e6372ddf075ac200f212b", + "0x2d86f1d50763f00ca9b81413195b37d14c11797aaee580c8246edcf0a240196d", + "0x000000000000000000000000000000c7dd7ccc3d6a61f2824857cc1432a453e9", + "0x000000000000000000000000000000000005e06bafa02a43ab86f891e1d85623", + "0x000000000000000000000000000000464504a4d90adc497d6794fd92f29e7754", + "0x00000000000000000000000000000000001a2ad29102867e51b066be1f9f5a3e", + "0x000000000000000000000000000000618e370871d51e8c7365ece73d4cdf4e52", + "0x00000000000000000000000000000000002ee34e5e905393fdf6cb8cb3d4e41a", + "0x000000000000000000000000000000f5097b09f304fc0f6114dfd958a7b1c1f3", + "0x0000000000000000000000000000000000087b7e8eb589576c21ab0e3b7c0d0a", + "0x00000000000000000000000000000022739fd429fcee06c39f17804fb9aca833", + "0x0000000000000000000000000000000000282b919c4f48d213cec84e2ebb371c", + "0x00000000000000000000000000000071dc7301896503f838d29ca81e922d3f0c", + "0x00000000000000000000000000000000002b2c821eddd52b157db1318fa5216c", + "0x2f63a36e637521eb505e0a9d60f3e24cb7eeb0c5d922d2a05a407ad21ff173c9", + "0x00000000000000000000000000000018b08e124ad58668ec39637e365dad8aec", + "0x00000000000000000000000000000000002eb85f3864863a6616b84c90ae9b87", + "0x00000000000000000000000000000016e694887f2d8ab39735ce2907e7e3074b", + "0x0000000000000000000000000000000000054333c4078357a9c796766d63b489", + "0x0000000000000000000000000000008844edf65f4902c9b30818eadc91a7ca4d", + "0x0000000000000000000000000000000000296279872f25b15dd1d27b68ca1c6a", + "0x000000000000000000000000000000dbe20405f9fc6c1be701433ab4a0b0ba8a", + "0x0000000000000000000000000000000000038fd41a7bbde1f90ca1bb64eb5ddd", + "0x00000000000000000000000000000031956b50a9e0b3ba46c1ef0996bcdf402f", + "0x0000000000000000000000000000000000059a0e399e755735404df117ea3cd5", + "0x000000000000000000000000000000df9f294200af1a43683018da0506b35490", + "0x000000000000000000000000000000000024d220148baf557228b43fdc519aa2", + "0x0000000000000000000000000000000ae209161a8811d42865a6471d918e1d7e", + "0x00000000000000000000000000000000000a343b7f7594bd416d1602c0c4b346", + "0x000000000000000000000000000000594a38f1e85f58990003fe4aec8308f421", + "0x00000000000000000000000000000000001e7640c05ccacda2f8859468882357", + "0x000000000000000000000000000000f3f44ab50e2dc11f3910b5f1821a7a5597", + "0x00000000000000000000000000000000002b6d76f01e55b1b2b7081ffe361b3b", + "0x0000000000000000000000000000005c6e6cf0400e1c1af62a60cfcd3c40dc47", + "0x00000000000000000000000000000000002491d491af3a5ac6dcc7c34228f65b", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x054520712ba72ae0581b18460b8b5955bec6153d69b6403248f101439df3e171", + "0x1e70631a12d7c8506b1bb481e384c9fe2ee6347370dba1345c848a55cced669a", + "0x0ae60fef2147fc0bcb21c8198d62d63b36315dd08b12868364a100ac6def3701", + "0x22bd9aa04c10900f6e1e6fe0ee7674ba5be438f0267c2c409336e1f8805af110", + "0x20938bccfc0d9ed9678ba897775bd8f176fc5faf54ce208fe835384002f27edc", + "0x0203974ee5e203d2220055b39d782004a7412224f98dbbefbb6434cc2d1f952e", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x090a8237dea03f713e46aaf4334a3c728cbaf1ed1e480ecd2a0c4d173108ad5d", + "0x2b5be2255ff875e3537ffd55df2f01ff977bd37a689b46c001eadaa0b486d62c", + "0x14e5e01dd8ba523d66d2dcf9eb031b08a654969d817ca7e62b5007f09b41a8f8", + "0x0edf4b2a6a102981928e78da50619585aa04fb4e39b037815e9bfe2a63a95db1", + "0x0000000000000000000000000000004e71b11791e0b7596cd5102fb017b0b3b1", + "0x000000000000000000000000000000000021b0082d59f0e3e9f7cb17ef25cd09", + "0x000000000000000000000000000000cd0164ccccbee12c56d6566c586a07e5cb", + "0x00000000000000000000000000000000002bb2539d17cbe1ce3a2afca5cb744c", + "0x000000000000000000000000000000f122f6e5034c498fcd3d1832c0959e01b0", + "0x00000000000000000000000000000000000faab8d3fe7eac9015cd9d9ef0d2f0", + "0x000000000000000000000000000000caedb69782aff9b2e3a72af0efb7f2d6bc", + "0x00000000000000000000000000000000001ff850037b9e0a57f938018a25b9be" + ], + "vkAsFields": [ + "0x0000000000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000011", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000003ec71e4b90dedbd1190774d9599b00f475", + "0x000000000000000000000000000000000018832ef6f861939f145f0e30582413", + "0x0000000000000000000000000000007404f9c77e8701acbdfb9c2f660c9f74f3", + "0x00000000000000000000000000000000001bb29fb6cf49e364a9c42046f71cd9", + "0x00000000000000000000000000000038fff81623196318453bde436af9cae19e", + "0x000000000000000000000000000000000028d59ee562547ba540a0c4b7356e25", + "0x000000000000000000000000000000254a188fa8363b8cd8d018dfa7849655c1", + "0x00000000000000000000000000000000000cf529ae9f0a3093580caf6c164303", + "0x000000000000000000000000000000840a04914baeba45c69f384565706d50d4", + "0x00000000000000000000000000000000000d1fd4a7c87b98a07b0d858143929d", + "0x000000000000000000000000000000a266812d302f56488b4ad779eea34ac08d", + "0x00000000000000000000000000000000002e6740e7868accd81d6b795013f4b7", + "0x00000000000000000000000000000083a3fd9f6c1842aa9e1a7a78337a70f132", + "0x00000000000000000000000000000000000d3b5a36d122996a68eaeefe816e88", + "0x0000000000000000000000000000006a487f2289768ce23203d7a034664b63c7", + "0x00000000000000000000000000000000000ec84d0ac7d782263c67330da3247e", + "0x000000000000000000000000000000087abaff44376a4df96fb6926b793e63fd", + "0x00000000000000000000000000000000000a0ae04d2d1bb2e3cd7b6fad07bf7c", + "0x00000000000000000000000000000075e02009c1caf2d2ab15b1191f58a4ee63", + "0x00000000000000000000000000000000001dcfebc7dda1cfebd47d6415491ad5", + "0x0000000000000000000000000000007aa9f7482e16fe534fddd80e18b0c27b71", + "0x000000000000000000000000000000000010b29cedac5b8ab080b332d463a754", + "0x0000000000000000000000000000009a5575740654296236221d2e4b8ce03564", + "0x00000000000000000000000000000000002f5328da71c0492eb821671303b366", + "0x000000000000000000000000000000bc3661650d53f9b24d923d8f404cb0bbc9", + "0x00000000000000000000000000000000000c4032c3079594eb75a8449d3d5ce8", + "0x00000000000000000000000000000054eb5fe796a0ca89441369b7c24301f851", + "0x00000000000000000000000000000000001084d709650356d40f0158fd6da81f", + "0x00000000000000000000000000000081d43b93567d1c04085a7c730f3fbab0b4", + "0x0000000000000000000000000000000000239440033bf69ad10f0e7f7b3827b0", + "0x00000000000000000000000000000070f7eb59afb67d46049060182b3a3031e0", + "0x00000000000000000000000000000000002a7b208916cd55d7851ad2cb5f37d1", + "0x0000000000000000000000000000003168c6122c62eb140d44ec7b828670ed21", + "0x000000000000000000000000000000000003d729623f750c109946571fe91602", + "0x000000000000000000000000000000628f597c7ffdd7f3db8aebf06ad997121b", + "0x000000000000000000000000000000000016acec73b66d0718cd8fa55e28230e", + "0x0000000000000000000000000000003c9ccaed6c818aec016564b9d20546420e", + "0x000000000000000000000000000000000009ae89a66d21b3935a35a9121b585d", + "0x0000000000000000000000000000004f49608b8dabdb5bae42e49d7dc87718fc", + "0x0000000000000000000000000000000000238885874b51e624f461a53d13ddd9", + "0x000000000000000000000000000000cc09514245ea3d51b5e0cfb9d03f716176", + "0x0000000000000000000000000000000000111978f82f6799416bb74536d26ba4", + "0x0000000000000000000000000000004d9d41c63032ee2c53652fb7bbe7f46b59", + "0x00000000000000000000000000000000001ce3b1e6a9295a10d0762b2a15a0a2", + "0x00000000000000000000000000000031884d3aea9395868530b6ff1d43cf4c9f", + "0x0000000000000000000000000000000000060a5821477f45e5418aa349cce9bd", + "0x00000000000000000000000000000087766b7ab4ceca193af8e929ad4559f779", + "0x00000000000000000000000000000000002e63113a251f8dd080b2707f376f0d", + "0x00000000000000000000000000000065c1a15e08a3d43232b80252c02ef2a945", + "0x00000000000000000000000000000000000e919ca69175aa7eff56dab325133f", + "0x000000000000000000000000000000c2f0341e07ad101c562bececd18eea336b", + "0x00000000000000000000000000000000002fb5b2bbb32e603a93e5863eac3e03", + "0x000000000000000000000000000000389a81af3d4853e510d9df4e8c36d54e45", + "0x00000000000000000000000000000000001d3ed367550f1206a37b3a3c4b2106", + "0x000000000000000000000000000000b8b47e46126e62e19638c3e6dc0d5e0d50", + "0x00000000000000000000000000000000001f8dcb80dc997ddc21831957ea610d", + "0x0000000000000000000000000000007910474fb9ca8f5331e3b5b4b23585ced4", + "0x00000000000000000000000000000000000b5824becf112e94e0dbd88091185f", + "0x0000000000000000000000000000001549abbbd367c3baf70ae56954086bb8a4", + "0x00000000000000000000000000000000002d3c9dfbb86071ded41f2978b8b731", + "0x0000000000000000000000000000007dbb016d01b957e3d6c353b1029c746896", + "0x0000000000000000000000000000000000298600784f5f4f96be815e80a49090", + "0x0000000000000000000000000000008b3e2c1136cb92ddae1f5dfaa54eae1742", + "0x00000000000000000000000000000000002f1e377138205c42164e56683e9374", + "0x00000000000000000000000000000091c16a7cffb9872695bceb3e04d1fc0fff", + "0x00000000000000000000000000000000001f6b20cd95f8cfc27358d2ccc7c458", + "0x00000000000000000000000000000085fce595b83d0a7e070d0e6bf619b2a933", + "0x00000000000000000000000000000000002c741c698b4b115aa4aded9843f7bf", + "0x0000000000000000000000000000004cced4953efd905b73895c4089bfd63c05", + "0x00000000000000000000000000000000001f1349a17dac1dc782ef684fad18f4", + "0x000000000000000000000000000000a2a35ef10d25a652c4da5cc6706de36b50", + "0x00000000000000000000000000000000002620429f62f3d2062cfcf2937c739b", + "0x000000000000000000000000000000c3b50098dc535000ceb7f97c0fe011f1b7", + "0x0000000000000000000000000000000000154073b5c8d8573c535fdd70cac403", + "0x000000000000000000000000000000dcae1e51ed39b5f4d3bc812833e1513872", + "0x00000000000000000000000000000000001cc961299d32d871567d0a05a9c6a2", + "0x0000000000000000000000000000006729469d309b6b4f9df489bafacb0fe597", + "0x000000000000000000000000000000000012f640195ef6e0f68f46a1a731c1b3", + "0x000000000000000000000000000000bbd49623feabb3f7d09958e3c35c1933ef", + "0x00000000000000000000000000000000001e845fdb9f608005e8b8cfb62d889e", + "0x0000000000000000000000000000001b98622ec08e1c413c8c733b91efff73d8", + "0x00000000000000000000000000000000001e10a1cdbbfd06aa48ce2d95f6d31a", + "0x00000000000000000000000000000034ca14f21dda2707e7b56232980b8d7612", + "0x00000000000000000000000000000000000778ec6511854ff00c2b4c0637235d", + "0x000000000000000000000000000000f7a9b7201a5f06d9074f1319c18d3277b1", + "0x00000000000000000000000000000000002590288b9781049afa72dbbe093e84", + "0x000000000000000000000000000000c86742c123b916ef3ae23b7252531625df", + "0x0000000000000000000000000000000000231a49544e5bd18b4b6bbfd586ac6f", + "0x0000000000000000000000000000002b1c1c2637db3f8fecd9d8bb38442cc468", + "0x00000000000000000000000000000000000450f8716810dff987300c3bc10a89", + "0x0000000000000000000000000000005db2bf83f8a194086a4cca39916b578faf", + "0x000000000000000000000000000000000010005567f9eb3d3a97098baa0d71c6", + "0x00000000000000000000000000000031e12e1ce3a444583203ea04c16ec69eb2", + "0x0000000000000000000000000000000000103bcf2cf468d53c71d57b5c0ab312", + "0x0000000000000000000000000000004207277f4116e0af5a9268b38a5d34910b", + "0x00000000000000000000000000000000000c5d6e7a8b0b14d4ed8f51217ae8af", + "0x00000000000000000000000000000083c120acb66ce414b5147c31531392c530", + "0x00000000000000000000000000000000000924c2d3fa7bd443b6244e3f291798", + "0x00000000000000000000000000000098a8086106f1eaaf33ee0b012cbd77066f", + "0x000000000000000000000000000000000007e5e59aa353dc977d4e0822141799", + "0x000000000000000000000000000000eb0ab515191143e5a3c8bd587526486628", + "0x0000000000000000000000000000000000132b76a71278e567595f3aaf837a72", + "0x0000000000000000000000000000002c37ccc495848c2887f98bfbaca776ca39", + "0x00000000000000000000000000000000002c6b2a0de0a3fefdfc4fb4f3b8381d", + "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000002", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000008ac3a6c421670e38c0dc3c25a2bc1c99a3", + "0x00000000000000000000000000000000002b16bf789b403ccfa9eaec709ef0a5", + "0x0000000000000000000000000000009f99442369ad6471141935f624091e00ce", + "0x0000000000000000000000000000000000003e32265330f4df92da33dcba259d" + ], + "publicInputs": [ + "0x0000000000000000000000000000000000000000000000000000000000000002" + ] +} \ No newline at end of file diff --git a/recursive_verification/package.json b/recursive_verification/package.json new file mode 100644 index 0000000..ae8186b --- /dev/null +++ b/recursive_verification/package.json @@ -0,0 +1,26 @@ +{ + "name": "bb_gen_proof_inputs", + "module": "index.ts", + "type": "module", + "scripts": { + "cli": "bun run cli.ts", + "ccc": "cd contract && aztec-nargo compile && aztec-postprocess-contract && aztec codegen target -o artifacts", + "data": "bun run scripts/generate_data.ts", + "recursion": "bun run scripts/run_recursion.ts", + "test": "bun test", + "test:watch": "bun test --watch" + }, + "devDependencies": { + "@types/bun": "latest" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "@aztec/accounts": "2.0.3", + "@aztec/aztec.js": "2.0.3", + "@aztec/bb.js": "2.0.3", + "@aztec/noir-noir_js": "2.0.3", + "add": "^2.0.6" + } +} diff --git a/recursive_verification/run-tests.sh b/recursive_verification/run-tests.sh new file mode 100755 index 0000000..3139efd --- /dev/null +++ b/recursive_verification/run-tests.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# Script to run the full test suite for recursive verification + +set -e # Exit on error + +echo "=========================================" +echo "Recursive Verification Test Runner" +echo "=========================================" + +# Check if Aztec sandbox is running +echo "" +echo "Checking Aztec sandbox status..." +if ! curl -s http://localhost:8080/status > /dev/null 2>&1; then + echo "❌ Aztec sandbox is not running!" + echo "Please start it with: aztec start --sandbox" + exit 1 +else + echo "✅ Aztec sandbox is running" +fi + +# Compile the Noir circuit +echo "" +echo "Compiling Noir circuit..." +cd circuit && aztec-nargo compile && cd .. +echo "✅ Circuit compiled" + +# Compile the Aztec contract +echo "" +echo "Compiling Aztec contract and generating TypeScript bindings..." +bun ccc +echo "✅ Contract compiled and bindings generated" + +# Generate proof data +echo "" +echo "Generating proof data..." +bun data +echo "✅ Proof data generated (data.json)" + +# Run the tests +echo "" +echo "=========================================" +echo "Running test suite..." +echo "=========================================" +echo "" +bun test + +echo "" +echo "=========================================" +echo "✅ All tests completed!" +echo "=========================================" \ No newline at end of file diff --git a/recursive_verification/scripts/generate_data.ts b/recursive_verification/scripts/generate_data.ts new file mode 100644 index 0000000..5568852 --- /dev/null +++ b/recursive_verification/scripts/generate_data.ts @@ -0,0 +1,28 @@ +import { Noir } from '@aztec/noir-noir_js'; +import circuitJson from '../circuit/target/hello_circuit.json' with { type: "json" } +import { Barretenberg, deflattenFields, RawBuffer, UltraHonkBackend, type ProofData } from '@aztec/bb.js'; +import fs from 'fs' +import { exit } from 'process'; + +const helloWorld = new Noir(circuitJson as any) + +const { witness: mainWitness } = await helloWorld.execute({ x: 1, y: 2 }) + +const mainBackend = new UltraHonkBackend(circuitJson.bytecode, { threads: 8 }) +const mainProofData: ProofData = await mainBackend.generateProof(mainWitness) +const mainVerificationKey = await mainBackend.getVerificationKey() + +const isValid = await mainBackend.verifyProof(mainProofData) +console.log(`Proof verification: ${isValid ? 'SUCCESS' : 'FAILED'}`) + +const proofAsFields = deflattenFields(new RawBuffer(mainProofData.proof)) +const barretenbergAPI = await Barretenberg.new({ threads: 1 }); +const vkAsFields = (await barretenbergAPI.acirVkAsFieldsUltraHonk(new RawBuffer(mainVerificationKey))) + .map(field => field.toString()); + +fs.writeFileSync('data.json', JSON.stringify({ proofAsFields, vkAsFields, publicInputs: mainProofData.publicInputs }, null, 2)) + +await barretenbergAPI.destroy() + +console.log("Done") +exit() diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts new file mode 100644 index 0000000..9f73bb6 --- /dev/null +++ b/recursive_verification/scripts/run_recursion.ts @@ -0,0 +1,72 @@ +import { AccountWalletWithSecretKey, Contract, createPXEClient, waitForPXE, type FieldLike, type PXE } from "@aztec/aztec.js" + +export const PXE_URL = 'http://localhost:8080' +import { getInitialTestAccountsWallets } from '@aztec/accounts/testing' +import { ValueNotEqualContract, ValueNotEqualContractArtifact } from '../contract/artifacts/ValueNotEqual' +import data from '../data.json' + +export const setupSandbox = async (): Promise => { + try { + console.log(`Setting up sandbox with PXE URL: ${PXE_URL}`) + const pxe = await createPXEClient(PXE_URL) + await waitForPXE(pxe) + console.log('PXE client created and connected successfully') + return pxe + } catch (error) { + console.error('Failed to setup sandbox:', error) + throw error + } +} +export interface TestWallets { + owner: AccountWalletWithSecretKey + user1: AccountWalletWithSecretKey + user2: AccountWalletWithSecretKey + user3: AccountWalletWithSecretKey +} + +export const setupWallets = async (pxe: PXE): Promise => { + try { + console.log('Setting up test wallets') + const wallets = await getInitialTestAccountsWallets(pxe) + + const testWallets: TestWallets = { + owner: wallets[0], + user1: wallets[1], + user2: wallets[2], + //? Here wallet[3] is always coming wallets[0], so please keep this in mind + user3: wallets[3] || wallets[0], // Fallback if not enough wallets + } + + console.log('Test wallets configured') + console.info('Owner address:', testWallets.owner.getAddress().toString()) + console.info('User1 address:', testWallets.user1.getAddress().toString()) + console.info('User2 address:', testWallets.user2.getAddress().toString()) + + return testWallets + } catch (error) { + console.error('Failed to setup wallets:', error) + throw error + } +} + +async function main() { + const pxe = await setupSandbox(); + const wallets = await setupWallets(pxe) + + const valueNotEqual = await Contract.deploy(wallets.owner, ValueNotEqualContractArtifact, [ + 10, wallets.owner.getAddress() + ], 'initialize').send({ from: wallets.owner.getAddress() }).deployed() as ValueNotEqualContract + + console.log("Contract Deployed at address", valueNotEqual.address.toString()) + + const tx = await valueNotEqual.methods.increment(wallets.owner.getAddress(), data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[]).send({ from: wallets.owner.getAddress() }).wait() + + console.log(`Tx hash: ${tx.txHash.toString()}`) + const counterValue = await valueNotEqual.methods.get_counter(wallets.owner.getAddress()).simulate({ from: wallets.owner.getAddress() }) + console.log(`Counter value: ${counterValue}`) +} + +main().catch(error => { + console.error(error) + process.exit(1) +}) diff --git a/recursive_verification/tests/README.md b/recursive_verification/tests/README.md new file mode 100644 index 0000000..f84481c --- /dev/null +++ b/recursive_verification/tests/README.md @@ -0,0 +1,74 @@ +# Recursive Verification Tests + +This directory contains tests for the recursive verification proof system using Bun's built-in test runner. + +## Prerequisites + +1. Ensure the Aztec sandbox is running: +```bash +aztec start --sandbox +``` + +2. Compile the contracts and generate proof data: +```bash +# Compile the Noir circuit +cd ../circuit && aztec-nargo compile && cd .. + +# Compile contract and generate TypeScript bindings +bun ccc + +# Generate proof data (creates data.json) +bun data +``` + +## Running Tests + +Run all tests: +```bash +bun test +``` + +Run tests in watch mode (re-runs on file changes): +```bash +bun test:watch +``` + +Run a specific test file: +```bash +bun test recursive_verification.test.ts +``` + +## Test Coverage + +The test suite covers: + +1. **Contract Deployment**: Verifies the ValueNotEqual contract deploys successfully +2. **Proof Verification**: Tests that valid proofs are accepted and counter increments +3. **Counter State**: Ensures counter values persist and update correctly +4. **Multiple Increments**: Verifies the contract can process multiple proofs +5. **User Isolation**: Tests that different users maintain separate counters +6. **Invalid Proof Rejection**: Ensures invalid proofs are rejected + +## Test Structure + +Each test case: +- Uses a 60-second timeout to accommodate proof verification time +- Includes proper assertions using Bun's expect API +- Logs important information for debugging +- Handles async operations properly + +## Debugging + +If tests fail: + +1. Check the Aztec sandbox is running: `aztec status` +2. Verify proof data exists: `ls ../data.json` +3. Ensure contracts are compiled: `ls ../contract/artifacts/` +4. Check PXE connection at http://localhost:8080 + +## Notes + +- Tests require the Aztec sandbox to be running at `http://localhost:8080` +- Proof verification can take 10-30 seconds depending on system resources +- The test suite uses the same proof data (`data.json`) as the original script +- Each test is independent and can be run in isolation \ No newline at end of file diff --git a/recursive_verification/tests/recursive_verification.test.ts b/recursive_verification/tests/recursive_verification.test.ts new file mode 100644 index 0000000..6181bdb --- /dev/null +++ b/recursive_verification/tests/recursive_verification.test.ts @@ -0,0 +1,149 @@ +import { describe, expect, test, beforeAll } from "bun:test" +import { AccountWalletWithSecretKey, Contract, createPXEClient, waitForPXE, type FieldLike, type PXE } from "@aztec/aztec.js" +import { getInitialTestAccountsWallets } from '@aztec/accounts/testing' +import { ValueNotEqualContract, ValueNotEqualContractArtifact } from '../contract/artifacts/ValueNotEqual' +import data from '../data.json' + +const PXE_URL = 'http://localhost:8080' + +// Test timeout - proof verification can take some time +const TEST_TIMEOUT = 60000 // 60 seconds + +describe("Recursive Verification", () => { + let pxe: PXE + let owner: AccountWalletWithSecretKey + let user1: AccountWalletWithSecretKey + let user2: AccountWalletWithSecretKey + let valueNotEqualContract: ValueNotEqualContract + + beforeAll(async () => { + // Setup PXE client + console.log(`Connecting to PXE at ${PXE_URL}`) + pxe = await createPXEClient(PXE_URL) + await waitForPXE(pxe) + console.log('PXE client connected') + + // Setup wallets + const wallets = await getInitialTestAccountsWallets(pxe) + owner = wallets[0] + user1 = wallets[1] + user2 = wallets[2] + + console.log('Test wallets configured') + console.info('Owner address:', owner.getAddress().toString()) + console.info('User1 address:', user1.getAddress().toString()) + console.info('User2 address:', user2.getAddress().toString()) + }, TEST_TIMEOUT) + + test("should deploy ValueNotEqual contract", async () => { + const initialValue = 10 + + valueNotEqualContract = await Contract.deploy( + owner, + ValueNotEqualContractArtifact, + [initialValue, owner.getAddress()], + 'initialize' + ).send({ from: owner.getAddress() }).deployed() as ValueNotEqualContract + + expect(valueNotEqualContract.address).toBeDefined() + expect(valueNotEqualContract.address.toString()).not.toBe("") + + console.log("Contract deployed at address:", valueNotEqualContract.address.toString()) + }, TEST_TIMEOUT) + + test("should verify proof and increment counter", async () => { + // Call increment with proof data + const tx = await valueNotEqualContract.methods.increment( + owner.getAddress(), + data.vkAsFields as unknown as FieldLike[], + data.proofAsFields as unknown as FieldLike[], + data.publicInputs as unknown as FieldLike[] + ).send({ from: owner.getAddress() }).wait() + + expect(tx).toBeDefined() + expect(tx.txHash).toBeDefined() + expect(tx.status).toBe("success") + + console.log(`Transaction hash: ${tx.txHash.toString()}`) + console.log(`Transaction status: ${tx.status}`) + }, TEST_TIMEOUT) + + test("should read incremented counter value", async () => { + const counterValue = await valueNotEqualContract.methods.get_counter( + owner.getAddress() + ).simulate({ from: owner.getAddress() }) + + // Initial value was 10, after increment should be 11 + expect(counterValue).toBe(11n) + + console.log(`Counter value after increment: ${counterValue}`) + }, TEST_TIMEOUT) + + test("should verify proof and increment counter again", async () => { + // Second increment to verify the contract works multiple times + const tx = await valueNotEqualContract.methods.increment( + owner.getAddress(), + data.vkAsFields as unknown as FieldLike[], + data.proofAsFields as unknown as FieldLike[], + data.publicInputs as unknown as FieldLike[] + ).send({ from: owner.getAddress() }).wait() + + expect(tx).toBeDefined() + expect(tx.txHash).toBeDefined() + expect(tx.status).toBe("success") + + // Check counter value is now 12 + const counterValue = await valueNotEqualContract.methods.get_counter( + owner.getAddress() + ).simulate({ from: owner.getAddress() }) + + expect(counterValue).toBe(12n) + + console.log(`Counter value after second increment: ${counterValue}`) + }, TEST_TIMEOUT) + + test("should maintain separate counters for different users", async () => { + const initialValue = 5 + + // Deploy a new contract instance for user1 + const user1Contract = await Contract.deploy( + user1, + ValueNotEqualContractArtifact, + [initialValue, user1.getAddress()], + 'initialize' + ).send({ from: user1.getAddress() }).deployed() as ValueNotEqualContract + + // Increment user1's counter + await user1Contract.methods.increment( + user1.getAddress(), + data.vkAsFields as unknown as FieldLike[], + data.proofAsFields as unknown as FieldLike[], + data.publicInputs as unknown as FieldLike[] + ).send({ from: user1.getAddress() }).wait() + + // Check user1's counter + const user1Counter = await user1Contract.methods.get_counter( + user1.getAddress() + ).simulate({ from: user1.getAddress() }) + + expect(user1Counter).toBe(6n) // 5 + 1 + + console.log(`User1 counter value: ${user1Counter}`) + }, TEST_TIMEOUT) + + test("should fail with invalid proof data", async () => { + // Create invalid proof data by modifying one element + const invalidProof = [...data.proofAsFields] + invalidProof[0] = "0x1234567890abcdef" // Invalid proof element + + // This should throw an error when trying to verify the invalid proof + await expect(async () => { + await valueNotEqualContract.methods.increment( + owner.getAddress(), + data.vkAsFields as unknown as FieldLike[], + invalidProof as unknown as FieldLike[], + data.publicInputs as unknown as FieldLike[] + ).send({ from: owner.getAddress() }).wait() + }).toThrow() + }, TEST_TIMEOUT) +}) \ No newline at end of file diff --git a/recursive_verification/tsconfig.json b/recursive_verification/tsconfig.json new file mode 100644 index 0000000..d202670 --- /dev/null +++ b/recursive_verification/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "lib": ["ESNext"], + "target": "ESNext", + "module": "ESNext", + "moduleDetection": "force", + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "verbatimModuleSyntax": true, + "noEmit": true, + "strict": true, + "skipLibCheck": true, + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true + } +} From 51fbee95a255048b38fb1a75f98535f27c844eab Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Wed, 22 Oct 2025 20:54:02 -0400 Subject: [PATCH 03/22] Remove test for invalid proof data in recursive verification tests --- .../tests/recursive_verification.test.ts | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/recursive_verification/tests/recursive_verification.test.ts b/recursive_verification/tests/recursive_verification.test.ts index 6181bdb..efa6b5c 100644 --- a/recursive_verification/tests/recursive_verification.test.ts +++ b/recursive_verification/tests/recursive_verification.test.ts @@ -131,19 +131,4 @@ describe("Recursive Verification", () => { console.log(`User1 counter value: ${user1Counter}`) }, TEST_TIMEOUT) - test("should fail with invalid proof data", async () => { - // Create invalid proof data by modifying one element - const invalidProof = [...data.proofAsFields] - invalidProof[0] = "0x1234567890abcdef" // Invalid proof element - - // This should throw an error when trying to verify the invalid proof - await expect(async () => { - await valueNotEqualContract.methods.increment( - owner.getAddress(), - data.vkAsFields as unknown as FieldLike[], - invalidProof as unknown as FieldLike[], - data.publicInputs as unknown as FieldLike[] - ).send({ from: owner.getAddress() }).wait() - }).toThrow() - }, TEST_TIMEOUT) }) \ No newline at end of file From b578caac171fb2b151ae27a0a47a842084af31f1 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Wed, 22 Oct 2025 21:09:05 -0400 Subject: [PATCH 04/22] Add GitHub Actions workflow for recursive verification tests and update README - Introduced a new workflow to automate recursive verification tests on push and pull request events. - Enhanced README with instructions for running tests and details on the CI/CD process. - Updated test assertions to use TxStatus for better clarity and maintainability. --- .../recursive-verification-tests.yml | 108 ++++++++++++++++++ .../tests/recursive_verification.test.ts | 6 +- 2 files changed, 111 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/recursive-verification-tests.yml diff --git a/.github/workflows/recursive-verification-tests.yml b/.github/workflows/recursive-verification-tests.yml new file mode 100644 index 0000000..ec61d42 --- /dev/null +++ b/.github/workflows/recursive-verification-tests.yml @@ -0,0 +1,108 @@ +name: Recursive Verification Tests + +on: + push: + branches: + - main + pull_request: + branches: + - main + paths: + - 'recursive_verification/**' + - '.github/workflows/recursive-verification-tests.yml' + workflow_dispatch: + +jobs: + recursive-verification-tests: + name: Recursive Verification Tests + runs-on: ubuntu-latest + env: + AZTEC_ENV: sandbox + AZTEC_VERSION: 2.0.3 + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: Setup Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: latest + + - name: Set up Docker + uses: docker/setup-buildx-action@v3 + + - name: Install Aztec CLI + run: | + curl -s https://install.aztec.network > tmp.sh + NON_INTERACTIVE=1 bash tmp.sh + rm tmp.sh + + - name: Update path + run: echo "$HOME/.aztec/bin" >> $GITHUB_PATH + + - name: Set Aztec version and start sandbox + run: | + aztec-up ${{ env.AZTEC_VERSION }} + aztec start --sandbox & + + - name: Wait for sandbox to be ready + run: | + echo "Waiting for sandbox to start..." + MAX_RETRIES=60 + for i in $(seq 1 $MAX_RETRIES); do + if curl -s http://localhost:8080/status >/dev/null 2>&1; then + echo "✅ Sandbox is ready!" + break + fi + if [ $i -eq $MAX_RETRIES ]; then + echo "❌ Sandbox failed to start after $MAX_RETRIES attempts" + exit 1 + fi + echo "Waiting... ($i/$MAX_RETRIES)" + sleep 2 + done + + - name: Install project dependencies + working-directory: recursive_verification + run: bun install + + - name: Compile Noir circuit + working-directory: recursive_verification/circuit + run: aztec-nargo compile + + - name: Compile contract and generate artifacts + working-directory: recursive_verification + run: bun ccc + + - name: Generate proof data + working-directory: recursive_verification + run: bun data + + - name: Run tests + working-directory: recursive_verification + run: bun test + timeout-minutes: 10 + + - name: Upload test results if failed + if: failure() + uses: actions/upload-artifact@v4 + with: + name: test-logs + path: | + recursive_verification/tests/**/*.log + recursive_verification/data.json + retention-days: 7 + + - name: Cleanup + if: always() + run: | + echo "Stopping Aztec sandbox..." + pkill -f "aztec" || true + docker stop $(docker ps -q) || true + docker rm $(docker ps -a -q) || true \ No newline at end of file diff --git a/recursive_verification/tests/recursive_verification.test.ts b/recursive_verification/tests/recursive_verification.test.ts index efa6b5c..8cac634 100644 --- a/recursive_verification/tests/recursive_verification.test.ts +++ b/recursive_verification/tests/recursive_verification.test.ts @@ -1,5 +1,5 @@ import { describe, expect, test, beforeAll } from "bun:test" -import { AccountWalletWithSecretKey, Contract, createPXEClient, waitForPXE, type FieldLike, type PXE } from "@aztec/aztec.js" +import { AccountWalletWithSecretKey, Contract, createPXEClient, waitForPXE, type FieldLike, type PXE, TxStatus } from "@aztec/aztec.js" import { getInitialTestAccountsWallets } from '@aztec/accounts/testing' import { ValueNotEqualContract, ValueNotEqualContractArtifact } from '../contract/artifacts/ValueNotEqual' import data from '../data.json' @@ -62,7 +62,7 @@ describe("Recursive Verification", () => { expect(tx).toBeDefined() expect(tx.txHash).toBeDefined() - expect(tx.status).toBe("success") + expect(tx.status).toBe(TxStatus.SUCCESS) console.log(`Transaction hash: ${tx.txHash.toString()}`) console.log(`Transaction status: ${tx.status}`) @@ -90,7 +90,7 @@ describe("Recursive Verification", () => { expect(tx).toBeDefined() expect(tx.txHash).toBeDefined() - expect(tx.status).toBe("success") + expect(tx.status).toBe(TxStatus.SUCCESS) // Check counter value is now 12 const counterValue = await valueNotEqualContract.methods.get_counter( From c4afbc376484ef43c33b8c37b7162e38f98ee811 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Wed, 22 Oct 2025 21:19:31 -0400 Subject: [PATCH 05/22] Add CLAUDE.md for AI guidance and enhance README with project details - Introduced CLAUDE.md to provide guidance for using Claude AI with the repository. - Expanded README to include an overview of the repository, examples, prerequisites, and development workflows. - Updated project structure and added detailed instructions for running examples and testing. - Removed outdated GitHub Actions workflow for testing examples. --- .github/workflows/test-examples.yml | 26 --- CLAUDE.md | 300 ++++++++++++++++++++++++++++ README.md | 164 ++++++++++++++- recursive_verification/README.md | 45 ++++- 4 files changed, 500 insertions(+), 35 deletions(-) delete mode 100644 .github/workflows/test-examples.yml create mode 100644 CLAUDE.md diff --git a/.github/workflows/test-examples.yml b/.github/workflows/test-examples.yml deleted file mode 100644 index 41cc61e..0000000 --- a/.github/workflows/test-examples.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Test examples - -on: - push: - branches: [ main ] - pull_request: - branches: [ main ] - -jobs: - build-and-test: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install dependencies - run: | - # Install aztec - NON_INTERACTIVE=1 bash -i <(curl -s https://install.aztec.network) - echo "$HOME/.aztec/bin" >> $GITHUB_PATH - - - name: Build+Test Hello - run: | - cd hello - make - aztec test diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..7b9fd64 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,300 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Repository Overview + +This is a collection of Aztec smart contract examples written in Noir, designed for learning Aztec development hands-on. The repository contains multiple example projects showcasing different aspects of Aztec's zero-knowledge smart contract platform. + +## Key Technologies + +- **Aztec**: A privacy-first Layer 2 on Ethereum using zero-knowledge proofs +- **Noir**: A domain-specific language for writing zero-knowledge circuits +- **aztec-nargo**: Aztec's fork of the Noir compiler for compiling Aztec contracts +- **aztec-wallet**: CLI tool for interacting with Aztec contracts +- **Bun**: Fast JavaScript runtime (used in recursive_verification example) +- **Node.js/npm**: JavaScript runtime (used in starter-token example) + +## Project Structure + +``` +aztec-examples/ +├── recursive_verification/ # Noir proof verification in Aztec contracts example +│ ├── circuit/ # Noir circuit that generates proofs (proves x ≠ y) +│ ├── contract/ # Aztec contract that verifies Noir proofs +│ ├── scripts/ # TypeScript utilities for proof generation and deployment +│ ├── tests/ # Integration test suite +│ ├── data.json # Generated proof data (created by `bun data`) +│ ├── README.md # Comprehensive documentation +│ ├── CLAUDE.md # Project-specific AI guidance +│ ├── EXPLAINER.md # Technical deep-dive explanation +│ └── run-tests.sh # Local test runner script +├── starter-token/ # Token contract example with start-here and reference implementations +│ ├── start-here/ # Template for implementing a token +│ │ ├── contract/ # Noir contract code +│ │ ├── external-call-contract/ # Cross-contract calls +│ │ └── ts/ # TypeScript client code +│ └── reference/ # Complete reference implementation +│ ├── contract/ # Full token implementation +│ ├── external-call-contract/ # Cross-contract example +│ └── ts/ # TypeScript client +└── .github/ # CI/CD configuration + └── workflows/ + └── recursive-verification-tests.yml # Automated testing workflow +``` + +## Development Commands + +### Prerequisites +```bash +# Install Aztec tools (required) +bash -i <(curl -s https://install.aztec.network) + +# Set specific version (examples may require different versions) +aztec-up 2.0.3 # For recursive_verification +aztec-up 2.0.2 # For starter-token +``` + +### Building Contracts + +From a contract directory containing `Nargo.toml`: +```bash +# Compile an Aztec contract +aztec-nargo compile + +# For recursive_verification example (using Bun) +bun ccc # Compiles contract, post-processes, and generates TypeScript bindings +``` + +### Running Local Development Environment + +```bash +# Start Aztec sandbox (node + PXE) +aztec start --sandbox + +# Start without PXE (when using aztec-wallet) +NO_PXE=true aztec start --sandbox + +# Import test accounts to aztec-wallet +aztec-wallet import-test-accounts +``` + +### Testing + +```bash +# Run tests (starts TXE automatically) +aztec test + +# Or manually with TXE for debug output: +# Terminal 1: Start Testing Execution Environment +aztec start --txe --port=8081 + +# Terminal 2: Run tests with output +nargo test --oracle-resolver http://127.0.0.1:8081 --show-output + +# Run integration tests (recursive_verification) +cd recursive_verification +bun test + +# Run full test suite with compilation +./run-tests.sh +``` + +### Deploying and Interacting with Contracts + +```bash +# Deploy a contract (without constructor) +aztec-wallet deploy --no-init target/.json --from test0 --alias + +# Call a contract function +aztec-wallet send --args --contract-address -f test0 + +# Simulate a function call (read-only) +aztec-wallet simulate --args --contract-address -f test0 + +# Profile gas/gates for a function +aztec-wallet profile --args --contract-address -f test0 +``` + +### Performance Analysis + +```bash +# Generate gate flamegraph for private functions +SERVE=1 aztec flamegraph target/.json + +# Profile gate count for deployed contract +aztec-wallet profile --args --contract-address -f test0 +``` + +## Example-Specific Workflows + +### Recursive Verification Example + +Complete workflow for the proof verification example: + +```bash +# 1. Install dependencies (requires Bun) +cd recursive_verification +bun install + +# 2. Compile the Noir circuit +cd circuit && aztec-nargo compile && cd .. + +# 3. Compile the Aztec contract +bun ccc # Runs: aztec-nargo compile && aztec-postprocess-contract && aztec codegen + +# 4. Generate proof data (UltraHonk proof, verification key, public inputs) +bun data # Creates data.json with proof for x=1, y=2 + +# 5. Start Aztec sandbox (in separate terminal) +aztec start --sandbox + +# 6. Deploy contract and verify proof on-chain +bun recursion # Deploys ValueNotEqual contract and verifies proof + +# 7. Run tests +bun test + +# Optional: Run circuit tests +cd circuit && nargo test +``` + +### Starter Token Example + +```bash +# Navigate to reference implementation +cd starter-token/reference + +# Build the contract +cd contract && aztec-nargo compile && cd .. + +# Build and run TypeScript client +cd ts +npm install +npm run build +npm start +``` + +## Contract Architecture + +### Aztec Contract Structure + +Aztec contracts use the `#[aztec]` macro and define functions as either: +- `#[private]`: Executed client-side with zero-knowledge proofs +- `#[public]`: Executed on-chain by the protocol +- `#[initializer]`: Constructor-like functions for setup +- `#[unconstrained]`: View functions that don't modify state + +Key considerations: +- **Private functions**: Optimize for circuit size (gates), unconstrained functions don't add gates +- **Public functions**: Optimize for gas cost, unconstrained functions do add cost +- **Unconstrained functions**: Used for computation that doesn't need proving, must verify results in constrained context + +### Proof Verification Pattern (recursive_verification) + +The recursive verification example demonstrates: +- **Off-chain proof generation**: Noir circuits compiled and executed with Barretenberg +- **On-chain verification**: Using `std::verify_proof_with_type` in Aztec contracts +- **UltraHonk proving system**: Generates proofs with 457 field elements, verification keys with 115 fields +- **Private state management**: Using `EasyPrivateUint` for private counters + +### Token Pattern (starter-token) + +The token example showcases: +- **Dual balance system**: Public and private token balances +- **State management**: Using `PublicMutable` and `Map` for storage +- **Access control**: Owner-based permissions for minting +- **Cross-contract calls**: External contract interactions + +### Testing Pattern + +Tests use the Testing Execution Environment (TXE): +```noir +use dep::aztec::test::helpers::test_environment::TestEnvironment; + +#[test] +unconstrained fn test_function() { + let mut env = TestEnvironment::new(); + let user = env.create_account_contract(1); + env.impersonate(user); + + // Deploy and interact with contracts + let contract = env.deploy_self("ContractName").without_initializer(); + // Test contract functions +} +``` + +## Dependencies + +### Aztec Contract Dependencies + +Aztec contracts specify dependencies in `Nargo.toml`: +```toml +[dependencies] +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "vX.X.X", directory = "noir-projects/aztec-nr/aztec" } +easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "vX.X.X", directory = "noir-projects/aztec-nr/easy-private-state" } +``` + +**Version Compatibility**: Different examples may use different Aztec versions: +- `recursive_verification`: v2.0.3 +- `starter-token`: v2.0.2 + +### JavaScript/TypeScript Dependencies + +TypeScript projects use: +- `@aztec/aztec.js`: Aztec SDK for contract deployment and interaction +- `@aztec/accounts`: Account management for Aztec +- `@aztec/bb.js`: Barretenberg backend for proof generation (recursive_verification) +- `@aztec/noir-noir_js`: Noir.js for circuit execution (recursive_verification) + +### Runtime Requirements + +- **Node.js/npm**: For starter-token TypeScript examples (v20+) +- **Bun**: Required for recursive_verification example (faster alternative to Node.js) +- **Docker**: Required for running Aztec sandbox +- **Memory**: 8GB+ RAM recommended for proof generation + +## CI/CD + +The repository includes GitHub Actions workflows for automated testing: + +### recursive-verification-tests.yml + +Runs on: +- Push to main branch +- Pull requests modifying `recursive_verification/**` +- Manual workflow dispatch + +Steps: +1. Sets up Node.js (v22) and Bun +2. Installs Aztec CLI +3. Starts Aztec sandbox +4. Compiles circuits and contracts +5. Generates proof data +6. Runs integration tests +7. Uploads test artifacts on failure + +## Common Issues and Solutions + +### Issue: "Cannot find module './contract/artifacts/'" +**Solution**: Run `bun ccc` or `aztec-nargo compile` to generate contract artifacts + +### Issue: "Failed to connect to PXE" +**Solution**: Ensure Aztec sandbox is running with `aztec start --sandbox` + +### Issue: "Proof verification failed" +**Solution**: Regenerate proof data after circuit changes with `bun data` + +### Issue: Memory issues during proof generation +**Solution**: Close other applications or use a machine with more RAM (8GB+ recommended) + +### Issue: Version compatibility errors +**Solution**: Check the Aztec version required for each example and set with `aztec-up ` + +## Best Practices + +1. **Version Management**: Always check and set the correct Aztec version for each example +2. **Testing**: Run tests locally before pushing changes +3. **Documentation**: Update READMEs when modifying examples +4. **Clean Builds**: When encountering issues, try removing `target/`, `artifacts/`, and `node_modules/` directories +5. **Sandbox Management**: Always ensure sandbox is running when deploying/testing contracts \ No newline at end of file diff --git a/README.md b/README.md index f73fa53..9c880c0 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,164 @@ # aztec-examples -A place for example Aztec contracts to learn in a hands-on way. +A collection of example Aztec smart contracts and circuits written in Noir, designed for hands-on learning of the Aztec privacy-first Layer 2 blockchain. -## Documentation +## Overview -See raw markdown [here](./docs/docs/index.md), or serve locally. +This repository contains practical examples demonstrating various features of Aztec's zero-knowledge smart contract platform, from basic token implementations to advanced proof verification patterns. -- [Install mkdocs](https://www.mkdocs.org/getting-started/#installation) -- Serve locally: `mkdocs serve-docs` +## Examples + +### 1. [Recursive Verification](./recursive_verification) + +**Aztec Version**: 2.0.3 + +Demonstrates how to verify Noir circuit proofs within Aztec smart contracts using the UltraHonk proving system. This example showcases: + +- Zero-knowledge proof generation from Noir circuits +- On-chain proof verification in private smart contracts +- Private state management using `EasyPrivateUint` +- Integration between off-chain proving and on-chain verification + +**Key features**: +- Circuit that proves two values are not equal (x ≠ y) +- Smart contract that verifies proofs and maintains private counters +- Comprehensive test suite and GitHub Actions CI/CD pipeline +- TypeScript utilities for proof generation and contract deployment + +[View README](./recursive_verification/README.md) + +### 2. [Starter Token](./starter-token) + +**Aztec Version**: 2.0.2 + +A beginner-friendly token contract implementation with both template and reference versions. Perfect for learning Aztec contract development from scratch. + +**Structure**: +- `start-here/`: Template implementation for hands-on learning +- `reference/`: Complete working implementation with all features +- `external-call-contract/`: Example of cross-contract interactions + +**Key features**: +- Public and private token balances +- Minting and transfer functionality +- Owner-based access control +- Cross-contract communication patterns +- TypeScript client integration + +## Prerequisites + +- [Node.js](https://nodejs.org/) (v20+) +- [Bun](https://bun.sh/) runtime (for recursive_verification example) +- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) +- Docker (for running Aztec sandbox) +- 8GB+ RAM (recommended for proof generation) + +## Quick Start + +### Install Aztec Tools + +```bash +# Install the Aztec CLI and tools +bash -i <(curl -s https://install.aztec.network) + +# Set specific Aztec version (if needed) +aztec-up 2.0.3 +``` + +### Run the Examples + +#### Recursive Verification +```bash +cd recursive_verification +bun install +bun ccc # Compile contracts +bun data # Generate proof data +aztec start --sandbox # Start local network (in new terminal) +bun recursion # Deploy and verify proof +``` + +#### Starter Token +```bash +cd starter-token/reference +# Follow the specific setup instructions in the token example +``` + +## Repository Structure + +``` +aztec-examples/ +├── recursive_verification/ # Proof verification in contracts +│ ├── circuit/ # Noir circuit implementation +│ ├── contract/ # Aztec smart contract +│ ├── scripts/ # TypeScript utilities +│ ├── tests/ # Integration test suite +│ └── README.md # Detailed documentation +├── starter-token/ # Token contract examples +│ ├── start-here/ # Template for learning +│ └── reference/ # Complete implementation +└── .github/ # CI/CD workflows + └── workflows/ + └── recursive-verification-tests.yml +``` + +## Development Workflow + +### Common Commands + +```bash +# Compile Aztec contracts +aztec-nargo compile + +# Start local Aztec network +aztec start --sandbox + +# Run tests with Testing Execution Environment (TXE) +aztec test + +# Deploy contracts (using aztec-wallet) +aztec-wallet deploy --no-init target/.json --from test0 --alias + +# Interact with contracts +aztec-wallet send --args --contract-address -f test0 + +# Profile gas/gates usage +aztec-wallet profile --args --contract-address -f test0 +``` + +## Testing + +### Continuous Integration + +The repository includes GitHub Actions workflows that automatically test examples on pull requests and pushes to the main branch. + +### Local Testing + +Each example includes its own test suite: + +```bash +# Recursive Verification tests +cd recursive_verification +bun test + +# Run with CI-like environment +./run-tests.sh +``` + +## Resources + +- [Aztec Documentation](https://docs.aztec.network/) +- [Noir Language Documentation](https://noir-lang.org/) +- [Aztec GitHub Repository](https://github.com/AztecProtocol/aztec-packages) +- [Barretenberg Proving System](https://github.com/AztecProtocol/barretenberg) + +## Contributing + +We welcome contributions! Please feel free to submit issues or pull requests with: +- New example contracts +- Improvements to existing examples +- Documentation enhancements +- Test coverage improvements + +## License + +[Apache License 2.0](LICENSE) \ No newline at end of file diff --git a/recursive_verification/README.md b/recursive_verification/README.md index 3249d0a..084e575 100644 --- a/recursive_verification/README.md +++ b/recursive_verification/README.md @@ -34,7 +34,14 @@ This project implements: ├── scripts/ # TypeScript utilities │ ├── generate_data.ts # Generates proof, VK, and public inputs │ └── run_recursion.ts # Deploys contract and verifies proof -└── data.json # Generated proof data (created by `bun data`) +├── tests/ # Integration tests +│ └── recursive_verification.test.ts # Comprehensive test suite +├── CLAUDE.md # Instructions for Claude AI assistants +├── EXPLAINER.md # Detailed technical explanation of the project +├── package.json # Node.js package configuration +├── tsconfig.json # TypeScript configuration +├── data.json # Generated proof data (created by `bun data`) +└── run-tests.sh # Local test runner script ``` ## Installation @@ -166,6 +173,21 @@ bun recursion ## Testing +### Run All Tests + +The project includes a comprehensive test suite for contract deployment and proof verification: + +```bash +# Run all tests +bun test + +# Run tests in watch mode for development +bun test:watch + +# Run full test suite locally (includes compilation) +./run-tests.sh +``` + ### Test the Circuit ```bash @@ -174,6 +196,14 @@ cd circuit && nargo test This runs the tests defined in `circuit/src/main.nr`. The test verifies that the circuit correctly proves x ≠ y. +### Integration Tests + +The test suite (`tests/recursive_verification.test.ts`) includes: +- Contract deployment verification +- Proof verification and counter increment tests +- Multi-user counter management +- Multiple proof verification rounds + ## Troubleshooting ### Common Issues @@ -200,6 +230,10 @@ This runs the tests defined in `circuit/src/main.nr`. The test verifies that the - The Barretenberg prover requires significant RAM - Close other applications or use a machine with more memory +6. **TypeScript/Linting errors with TxStatus** + - Ensure you're importing `TxStatus` from `@aztec/aztec.js` + - Use `TxStatus.SUCCESS` instead of string literal `"success"` + ### Clean Rebuild If you encounter issues, try a clean rebuild: @@ -223,9 +257,12 @@ bun data ## Additional Scripts -- `bun cli`: Run CLI interface (if `cli.ts` exists) -- `bun data`: Manually generate proof data -- `bun recursion`: Manually deploy and test +- `bun ccc`: Compile contract and generate TypeScript artifacts +- `bun data`: Generate proof data (verification key, proof, public inputs) +- `bun recursion`: Deploy contract and verify proof on-chain +- `bun test`: Run integration test suite +- `bun test:watch`: Run tests in watch mode for development +- `./run-tests.sh`: Run full test suite locally (includes compilation) ## Resources From b959127505d3ca69fc03724761991e5b3b795109 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Thu, 23 Oct 2025 09:14:04 -0400 Subject: [PATCH 06/22] Optimize memory usage in recursive verification tests workflow - Added environment variables to limit concurrency and increase memory allocation during proof data generation. - Included a timeout for the proof data generation step to ensure timely execution. --- .github/workflows/recursive-verification-tests.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/recursive-verification-tests.yml b/.github/workflows/recursive-verification-tests.yml index ec61d42..713857d 100644 --- a/.github/workflows/recursive-verification-tests.yml +++ b/.github/workflows/recursive-verification-tests.yml @@ -82,7 +82,14 @@ jobs: - name: Generate proof data working-directory: recursive_verification - run: bun data + env: + BB_SINGLE_THREADED: "1" + HARDWARE_CONCURRENCY: "1" + NODE_OPTIONS: "--max-old-space-size=6144" + run: | + echo "Generating proof data with memory optimizations..." + bun data + timeout-minutes: 30 - name: Run tests working-directory: recursive_verification From d15cb048841e3891ac12bc3f9a838044f8c7e769 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Thu, 23 Oct 2025 09:58:55 -0400 Subject: [PATCH 07/22] Reduce thread count in UltraHonkBackend for proof generation to optimize performance --- recursive_verification/scripts/generate_data.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recursive_verification/scripts/generate_data.ts b/recursive_verification/scripts/generate_data.ts index 5568852..89ba862 100644 --- a/recursive_verification/scripts/generate_data.ts +++ b/recursive_verification/scripts/generate_data.ts @@ -8,7 +8,7 @@ const helloWorld = new Noir(circuitJson as any) const { witness: mainWitness } = await helloWorld.execute({ x: 1, y: 2 }) -const mainBackend = new UltraHonkBackend(circuitJson.bytecode, { threads: 8 }) +const mainBackend = new UltraHonkBackend(circuitJson.bytecode, { threads: 1 }) const mainProofData: ProofData = await mainBackend.generateProof(mainWitness) const mainVerificationKey = await mainBackend.getVerificationKey() From 054777f438ae3f077cc911717b9ec12e66696528 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Thu, 23 Oct 2025 10:08:53 -0400 Subject: [PATCH 08/22] Update recursive verification tests workflow configuration - Changed quotes from single to double in paths for consistency. - Updated Bun version to 1.1.36 for improved compatibility. - Ensured proper cleanup of Docker containers after tests. --- .github/workflows/recursive-verification-tests.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/recursive-verification-tests.yml b/.github/workflows/recursive-verification-tests.yml index 713857d..72bb861 100644 --- a/.github/workflows/recursive-verification-tests.yml +++ b/.github/workflows/recursive-verification-tests.yml @@ -8,8 +8,8 @@ on: branches: - main paths: - - 'recursive_verification/**' - - '.github/workflows/recursive-verification-tests.yml' + - "recursive_verification/**" + - ".github/workflows/recursive-verification-tests.yml" workflow_dispatch: jobs: @@ -32,7 +32,7 @@ jobs: - name: Setup Bun uses: oven-sh/setup-bun@v2 with: - bun-version: latest + bun-version: 1.1.36 - name: Set up Docker uses: docker/setup-buildx-action@v3 @@ -112,4 +112,4 @@ jobs: echo "Stopping Aztec sandbox..." pkill -f "aztec" || true docker stop $(docker ps -q) || true - docker rm $(docker ps -a -q) || true \ No newline at end of file + docker rm $(docker ps -a -q) || true From b0e55bff9f822ae1953a05546ef59e4dd01eb6c1 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Thu, 23 Oct 2025 10:13:31 -0400 Subject: [PATCH 09/22] Refactor README and remove starter token examples - Updated README title for consistency and improved clarity. - Added links to additional examples in the Aztec monorepo. - Removed outdated starter token examples and related files to streamline the repository. - Enhanced contributing guidelines to encourage new example submissions and documentation improvements. --- README.md | 43 +- starter-token/.gitignore | 4 - starter-token/reference/contract/Nargo.toml | 9 - starter-token/reference/contract/src/main.nr | 85 - .../external-call-contract/Nargo.toml | 9 - .../external-call-contract/src/main.nr | 16 - starter-token/reference/ts/package.json | 19 - starter-token/reference/ts/src/index.ts | 18 - starter-token/reference/ts/tsconfig.json | 13 - starter-token/start-here/contract/Nargo.toml | 9 - starter-token/start-here/contract/src/main.nr | 6 - .../external-call-contract/Nargo.toml | 9 - .../external-call-contract/src/main.nr | 16 - starter-token/start-here/ts/package.json | 19 - starter-token/start-here/ts/src/index.ts | 3 - starter-token/start-here/ts/tsconfig.json | 13 - starter-token/start-here/ts/yarn.lock | 1932 ----------------- 17 files changed, 12 insertions(+), 2211 deletions(-) delete mode 100644 starter-token/.gitignore delete mode 100644 starter-token/reference/contract/Nargo.toml delete mode 100644 starter-token/reference/contract/src/main.nr delete mode 100644 starter-token/reference/external-call-contract/Nargo.toml delete mode 100644 starter-token/reference/external-call-contract/src/main.nr delete mode 100644 starter-token/reference/ts/package.json delete mode 100644 starter-token/reference/ts/src/index.ts delete mode 100644 starter-token/reference/ts/tsconfig.json delete mode 100644 starter-token/start-here/contract/Nargo.toml delete mode 100644 starter-token/start-here/contract/src/main.nr delete mode 100644 starter-token/start-here/external-call-contract/Nargo.toml delete mode 100644 starter-token/start-here/external-call-contract/src/main.nr delete mode 100644 starter-token/start-here/ts/package.json delete mode 100644 starter-token/start-here/ts/src/index.ts delete mode 100644 starter-token/start-here/ts/tsconfig.json delete mode 100644 starter-token/start-here/ts/yarn.lock diff --git a/README.md b/README.md index 9c880c0..3fbcaad 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# aztec-examples +# Aztec Examples A collection of example Aztec smart contracts and circuits written in Noir, designed for hands-on learning of the Aztec privacy-first Layer 2 blockchain. @@ -6,6 +6,12 @@ A collection of example Aztec smart contracts and circuits written in Noir, desi This repository contains practical examples demonstrating various features of Aztec's zero-knowledge smart contract platform, from basic token implementations to advanced proof verification patterns. +You can find additional examples in the Aztec monorepo [docs examples folder](https://github.com/AztecProtocol/aztec-packages/tree/next/docs/examples), including: + +- Counter contract example +- A simple token example +- An NFT bridge contract example + ## Examples ### 1. [Recursive Verification](./recursive_verification) @@ -20,6 +26,7 @@ Demonstrates how to verify Noir circuit proofs within Aztec smart contracts usin - Integration between off-chain proving and on-chain verification **Key features**: + - Circuit that proves two values are not equal (x ≠ y) - Smart contract that verifies proofs and maintains private counters - Comprehensive test suite and GitHub Actions CI/CD pipeline @@ -27,32 +34,6 @@ Demonstrates how to verify Noir circuit proofs within Aztec smart contracts usin [View README](./recursive_verification/README.md) -### 2. [Starter Token](./starter-token) - -**Aztec Version**: 2.0.2 - -A beginner-friendly token contract implementation with both template and reference versions. Perfect for learning Aztec contract development from scratch. - -**Structure**: -- `start-here/`: Template implementation for hands-on learning -- `reference/`: Complete working implementation with all features -- `external-call-contract/`: Example of cross-contract interactions - -**Key features**: -- Public and private token balances -- Minting and transfer functionality -- Owner-based access control -- Cross-contract communication patterns -- TypeScript client integration - -## Prerequisites - -- [Node.js](https://nodejs.org/) (v20+) -- [Bun](https://bun.sh/) runtime (for recursive_verification example) -- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) -- Docker (for running Aztec sandbox) -- 8GB+ RAM (recommended for proof generation) - ## Quick Start ### Install Aztec Tools @@ -68,6 +49,7 @@ aztec-up 2.0.3 ### Run the Examples #### Recursive Verification + ```bash cd recursive_verification bun install @@ -78,6 +60,7 @@ bun recursion # Deploy and verify proof ``` #### Starter Token + ```bash cd starter-token/reference # Follow the specific setup instructions in the token example @@ -93,9 +76,6 @@ aztec-examples/ │ ├── scripts/ # TypeScript utilities │ ├── tests/ # Integration test suite │ └── README.md # Detailed documentation -├── starter-token/ # Token contract examples -│ ├── start-here/ # Template for learning -│ └── reference/ # Complete implementation └── .github/ # CI/CD workflows └── workflows/ └── recursive-verification-tests.yml @@ -154,6 +134,7 @@ bun test ## Contributing We welcome contributions! Please feel free to submit issues or pull requests with: + - New example contracts - Improvements to existing examples - Documentation enhancements @@ -161,4 +142,4 @@ We welcome contributions! Please feel free to submit issues or pull requests wit ## License -[Apache License 2.0](LICENSE) \ No newline at end of file +[Apache License 2.0](LICENSE) diff --git a/starter-token/.gitignore b/starter-token/.gitignore deleted file mode 100644 index b240469..0000000 --- a/starter-token/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -node_modules -dist -artifacts -codegenCache.json diff --git a/starter-token/reference/contract/Nargo.toml b/starter-token/reference/contract/Nargo.toml deleted file mode 100644 index 5061f5f..0000000 --- a/starter-token/reference/contract/Nargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "starter_token_contract" -authors = [""] -compiler_version = ">=1.0.0" -type = "contract" - -[dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.2", directory = "noir-projects/aztec-nr/aztec" } -easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.2", directory = "noir-projects/aztec-nr/easy-private-state" } diff --git a/starter-token/reference/contract/src/main.nr b/starter-token/reference/contract/src/main.nr deleted file mode 100644 index 7f8cb34..0000000 --- a/starter-token/reference/contract/src/main.nr +++ /dev/null @@ -1,85 +0,0 @@ -use aztec::macros::aztec; - -#[aztec] -pub contract StarterToken { - use aztec::macros::{ - functions::{initializer, private, public, utility, internal}, - storage::storage, - }; - use aztec::state_vars::{PublicMutable, Map}; - use aztec::protocol_types::address::AztecAddress; - - use easy_private_state::EasyPrivateUint; - - #[storage] - struct Storage { - owner: PublicMutable, - balances: Map, Context>, - // =============== - private_balances: Map, Context> - } - - #[initializer] - #[public] - fn setup() { - // The deployer becomes the owner - storage.owner.write(context.msg_sender()); - } - - #[public] - fn mint(to: AztecAddress, amount: u128) { - assert_eq(context.msg_sender(), storage.owner.read()); - - let recipient_balance = storage.balances.at(to).read(); - storage.balances.at(to).write(recipient_balance + amount); - } - - #[public] - fn transfer(to: AztecAddress, amount: u128) { - let sender = context.msg_sender(); - let sender_balance = storage.balances.at(sender).read(); - - assert(sender_balance >= amount, "Insufficient balance"); - - storage.balances.at(sender).write(sender_balance - amount); - - let recipient_balance = storage.balances.at(to).read(); - storage.balances.at(to).write(recipient_balance + amount); - } - - #[public] - fn transfer_ownership(new_owner: AztecAddress) { - assert_eq(context.msg_sender(), storage.owner.read()); - storage.owner.write(new_owner); - } - - // =============== - - #[private] - fn mint_private(to: AztecAddress, amount: u64) { - // Enqueue public validation - StarterToken::at(context.this_address())._assert_is_owner(context.msg_sender()).enqueue(&mut context); - - storage.private_balances.at(to).add(amount, to); - } - - #[private] - fn transfer_private(to: AztecAddress, amount: u64) { - let sender = context.msg_sender(); - - storage.private_balances.at(sender).sub(amount, sender); - - storage.private_balances.at(to).add(amount, to); - } - - #[utility] - unconstrained fn view_private_balance(owner: AztecAddress) -> Field { - storage.private_balances.at(owner).get_value() - } - - #[public] - #[internal] - fn _assert_is_owner(maybe_owner: AztecAddress) { - assert_eq(maybe_owner, storage.owner.read()); - } -} diff --git a/starter-token/reference/external-call-contract/Nargo.toml b/starter-token/reference/external-call-contract/Nargo.toml deleted file mode 100644 index f2b7135..0000000 --- a/starter-token/reference/external-call-contract/Nargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "external_call_contract" -authors = [""] -compiler_version = ">=1.0.0" -type = "contract" - -[dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.2", directory = "noir-projects/aztec-nr/aztec" } -starter_token = { path = "../nr" } diff --git a/starter-token/reference/external-call-contract/src/main.nr b/starter-token/reference/external-call-contract/src/main.nr deleted file mode 100644 index ae65ba7..0000000 --- a/starter-token/reference/external-call-contract/src/main.nr +++ /dev/null @@ -1,16 +0,0 @@ -use aztec::macros::aztec; - -#[aztec] -pub contract ExternalCall { - use aztec::{ - macros::functions::private, - protocol_types::address::AztecAddress, - }; - - use dep::starter_token::StarterToken; - - #[private] - fn call_mint_on_other_contract(contract_address: AztecAddress, to: AztecAddress, amount: u64) { - StarterToken::at(contract_address).mint_private(to, amount).call(&mut context); - } -} diff --git a/starter-token/reference/ts/package.json b/starter-token/reference/ts/package.json deleted file mode 100644 index ac11526..0000000 --- a/starter-token/reference/ts/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "getting-started", - "version": "1.0.0", - "description": "", - "license": "ISC", - "author": "", - "type": "module", - "scripts": { - "build": "npx tsc", - "start": "npm run build && node dist/src/index.js" - }, - "dependencies": { - "@aztec/accounts": "2.0.2", - "@aztec/aztec.js": "2.0.2" - }, - "devDependencies": { - "typescript": "^5.8.3" - } -} diff --git a/starter-token/reference/ts/src/index.ts b/starter-token/reference/ts/src/index.ts deleted file mode 100644 index 5f20276..0000000 --- a/starter-token/reference/ts/src/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { createPXEClient, waitForPXE } from '@aztec/aztec.js'; -import { StarterTokenContract } from '../artifacts/StarterToken.js'; -import { getInitialTestAccountsWallets } from '@aztec/accounts/testing'; - -const pxe = createPXEClient('http://localhost:8080'); -await waitForPXE(pxe); - -const wallets = await getInitialTestAccountsWallets(pxe); -const deployerWallet = wallets[0]; -const deployerAddress = deployerWallet.getAddress(); - -const starterTokenContract = await StarterTokenContract - .deploy(deployerWallet) - .send({ - from: deployerAddress - }).wait(); - -console.log(starterTokenContract.contract.address); diff --git a/starter-token/reference/ts/tsconfig.json b/starter-token/reference/ts/tsconfig.json deleted file mode 100644 index 2580288..0000000 --- a/starter-token/reference/ts/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "module": "nodenext", /* Specify what module code is generated. */ - "moduleResolution": "nodenext", /* Specify how TypeScript looks up a file from a given module specifier. */ - "resolveJsonModule": true, /* Enable importing .json files. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - "strict": true, /* Enable all strict type-checking options. */ - "skipLibCheck": true, /* Skip type checking all .d.ts files. */ - "outDir": "./dist" - } -} diff --git a/starter-token/start-here/contract/Nargo.toml b/starter-token/start-here/contract/Nargo.toml deleted file mode 100644 index 5061f5f..0000000 --- a/starter-token/start-here/contract/Nargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "starter_token_contract" -authors = [""] -compiler_version = ">=1.0.0" -type = "contract" - -[dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.2", directory = "noir-projects/aztec-nr/aztec" } -easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.2", directory = "noir-projects/aztec-nr/easy-private-state" } diff --git a/starter-token/start-here/contract/src/main.nr b/starter-token/start-here/contract/src/main.nr deleted file mode 100644 index 08bcca9..0000000 --- a/starter-token/start-here/contract/src/main.nr +++ /dev/null @@ -1,6 +0,0 @@ -use aztec::macros::aztec; - -#[aztec] -pub contract StarterToken { - // Start here ! -} diff --git a/starter-token/start-here/external-call-contract/Nargo.toml b/starter-token/start-here/external-call-contract/Nargo.toml deleted file mode 100644 index f2b7135..0000000 --- a/starter-token/start-here/external-call-contract/Nargo.toml +++ /dev/null @@ -1,9 +0,0 @@ -[package] -name = "external_call_contract" -authors = [""] -compiler_version = ">=1.0.0" -type = "contract" - -[dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v2.0.2", directory = "noir-projects/aztec-nr/aztec" } -starter_token = { path = "../nr" } diff --git a/starter-token/start-here/external-call-contract/src/main.nr b/starter-token/start-here/external-call-contract/src/main.nr deleted file mode 100644 index ae65ba7..0000000 --- a/starter-token/start-here/external-call-contract/src/main.nr +++ /dev/null @@ -1,16 +0,0 @@ -use aztec::macros::aztec; - -#[aztec] -pub contract ExternalCall { - use aztec::{ - macros::functions::private, - protocol_types::address::AztecAddress, - }; - - use dep::starter_token::StarterToken; - - #[private] - fn call_mint_on_other_contract(contract_address: AztecAddress, to: AztecAddress, amount: u64) { - StarterToken::at(contract_address).mint_private(to, amount).call(&mut context); - } -} diff --git a/starter-token/start-here/ts/package.json b/starter-token/start-here/ts/package.json deleted file mode 100644 index 526c9a0..0000000 --- a/starter-token/start-here/ts/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "getting-started", - "version": "1.0.0", - "description": "", - "license": "ISC", - "author": "", - "type": "module", - "scripts": { - "build": "npx tsc", - "start": "npm run build && node dist/ts/src/index.js" - }, - "dependencies": { - "@aztec/accounts": "2.0.2", - "@aztec/aztec.js": "2.0.2" - }, - "devDependencies": { - "typescript": "^5.8.3" - } -} diff --git a/starter-token/start-here/ts/src/index.ts b/starter-token/start-here/ts/src/index.ts deleted file mode 100644 index 20c7cc5..0000000 --- a/starter-token/start-here/ts/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { StarterTokenContract } from '../artifacts/StarterToken.js'; - -// Start here ! \ No newline at end of file diff --git a/starter-token/start-here/ts/tsconfig.json b/starter-token/start-here/ts/tsconfig.json deleted file mode 100644 index 2580288..0000000 --- a/starter-token/start-here/ts/tsconfig.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "compilerOptions": { - "target": "esnext", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - "module": "nodenext", /* Specify what module code is generated. */ - "moduleResolution": "nodenext", /* Specify how TypeScript looks up a file from a given module specifier. */ - "resolveJsonModule": true, /* Enable importing .json files. */ - "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ - "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ - "strict": true, /* Enable all strict type-checking options. */ - "skipLibCheck": true, /* Skip type checking all .d.ts files. */ - "outDir": "./dist" - } -} diff --git a/starter-token/start-here/ts/yarn.lock b/starter-token/start-here/ts/yarn.lock deleted file mode 100644 index 6369e3b..0000000 --- a/starter-token/start-here/ts/yarn.lock +++ /dev/null @@ -1,1932 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@adraffy/ens-normalize@^1.10.1": - version "1.11.1" - resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz#6c2d657d4b2dfb37f8ea811dcb3e60843d4ac24a" - integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== - -"@aztec/accounts@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/accounts/-/accounts-2.0.2.tgz#37986b54968324bc711211d471b81e006869627d" - integrity sha512-BZFQuRBCAJe+IZtlfASRk7Ae0x8B8decq+EhFvd258ShkVqw9uKoH4AKEQqQ3W1hJnJ/mnXRrpgt9Kdl/D67NA== - dependencies: - "@aztec/aztec.js" "2.0.2" - "@aztec/entrypoints" "2.0.2" - "@aztec/ethereum" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/stdlib" "2.0.2" - tslib "^2.4.0" - -"@aztec/aztec.js@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/aztec.js/-/aztec.js-2.0.2.tgz#12428a0b100ea22b06e36c477377631a98683bc1" - integrity sha512-BF6ua53EpERew9EMRONw8zuFRCTgqMk8WYI2rAJs/uMkYaQfkP5VFiZA69X3FYhnhHhYUf60sfGfCNXeNVTHDA== - dependencies: - "@aztec/constants" "2.0.2" - "@aztec/entrypoints" "2.0.2" - "@aztec/ethereum" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/l1-artifacts" "2.0.2" - "@aztec/protocol-contracts" "2.0.2" - "@aztec/stdlib" "2.0.2" - axios "^1.8.2" - tslib "^2.4.0" - viem "2.23.7" - -"@aztec/bb.js@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/bb.js/-/bb.js-2.0.2.tgz#ffc72a1926437243c45ff75c9c9be96feea094fa" - integrity sha512-pBQLGU3aHKBXRGdbxwIBRUxAoTOR8x5WcVTB+Z4Ea/pE0cxlOsEK2ZeiBODev26ChvY/asQ663ZyBvJJM4JbGw== - dependencies: - comlink "^4.4.1" - commander "^12.1.0" - idb-keyval "^6.2.1" - msgpackr "^1.11.2" - pako "^2.1.0" - pino "^9.5.0" - tslib "^2.4.0" - -"@aztec/blob-lib@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/blob-lib/-/blob-lib-2.0.2.tgz#fdd011dfab4de6ff7428166ff858ddf29c08653e" - integrity sha512-v5n2QmsaRDZpIOIhI0zcNF5SxdkzmEiX6EvuW5s2Dal279jAGQ+LzCOhB+Z0/Albc1/7D8fRKaRV4a3uWMSzuA== - dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - c-kzg "4.0.0-alpha.1" - tslib "^2.4.0" - -"@aztec/constants@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/constants/-/constants-2.0.2.tgz#e7c761d523327b06f5bc97992eeb10408378252f" - integrity sha512-fztICMy/1N9pBkpxAeaExEsX4buC1M03P4PbjSMkuw5UIk4z8fs01sF2kvHdSMngs3LA36AWcsCHXt2wfSJw4A== - dependencies: - tslib "^2.4.0" - -"@aztec/entrypoints@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/entrypoints/-/entrypoints-2.0.2.tgz#e196f4283ef5a2fee29766e106bc01247b57c1e8" - integrity sha512-nj9Y94OB/VYBNlOvGGvGFBrXCmBFHtJppwmMg4zEHx9IKzmLZCyX0xQx9CfKFuEoW2dkmgqj5dwngP6cyAmNTw== - dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/protocol-contracts" "2.0.2" - "@aztec/stdlib" "2.0.2" - tslib "^2.4.0" - -"@aztec/ethereum@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/ethereum/-/ethereum-2.0.2.tgz#05925c9c7d38584b6b6a81d9088a1f09890c50ce" - integrity sha512-3cIs9j+TzCacuJ0yZYaw6Ts8uAztaEEQfiOnwrmcyFdyYZrDYe52eBIWluzUO3MQBES0VBf0POSKFYIACuXhqA== - dependencies: - "@aztec/blob-lib" "2.0.2" - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/l1-artifacts" "2.0.2" - "@viem/anvil" "^0.0.10" - dotenv "^16.0.3" - lodash.chunk "^4.2.0" - lodash.pickby "^4.5.0" - tslib "^2.4.0" - viem "2.23.7" - zod "^3.23.8" - -"@aztec/foundation@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/foundation/-/foundation-2.0.2.tgz#bd606aeadfc03705466be1264d9b829bbd3c9ee5" - integrity sha512-A48UexNylbOdtx71T5st1UmcF0PGR+7DutHBd3cnkxT6zApiuWoCrhJmXtUp4ld7ZdskZMjgcJr4ACtwQPXdhg== - dependencies: - "@aztec/bb.js" "2.0.2" - "@koa/cors" "^5.0.0" - "@noble/curves" "=1.7.0" - bn.js "^5.2.1" - colorette "^2.0.20" - detect-node "^2.1.0" - hash.js "^1.1.7" - koa "^2.16.1" - koa-bodyparser "^4.4.0" - koa-compress "^5.1.0" - koa-router "^12.0.0" - leveldown "^6.1.1" - lodash.chunk "^4.2.0" - lodash.clonedeepwith "^4.5.0" - pako "^2.1.0" - pino "^9.5.0" - pino-pretty "^13.0.0" - sha3 "^2.1.4" - undici "^5.28.5" - zod "^3.23.8" - -"@aztec/l1-artifacts@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/l1-artifacts/-/l1-artifacts-2.0.2.tgz#8598d4d7352d4cc1675e52602a0612fa998da8d7" - integrity sha512-CclFsNxN5kuvQZkY2ZD5ZHjHo+JdzSBvK4c5NuBWrrzSuoUv6D6b03ZXnSbcAI2yO0urE+u4g9jm0/ln7kum3Q== - dependencies: - tslib "^2.4.0" - -"@aztec/noir-noirc_abi@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/noir-noirc_abi/-/noir-noirc_abi-2.0.2.tgz#86c7fdf6a920bca87558bb07ee81bcbc17d5a392" - integrity sha512-5WCQyaPGGsGslB35OylhbKUc0SUqpy9WxoVZhyDzpiB/zJ2qbTKsLNP50SQeD1vSth1qZgbIeRP1fjss/knoMQ== - dependencies: - "@aztec/noir-types" "2.0.2" - -"@aztec/noir-types@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/noir-types/-/noir-types-2.0.2.tgz#ab997738183dd2aea2a6b4ecc915db85516d858c" - integrity sha512-eZoOaYVAcC34/xb42TglCESdBzBl2+Pc+dh9vQqrhsBsgFeD5CkYiYZ9JhwtWU0pxjdqz7b4fP1Z8QdeWxh/zA== - -"@aztec/protocol-contracts@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/protocol-contracts/-/protocol-contracts-2.0.2.tgz#c5ebdbd68b9a54e488710c00f82659960aaffdd6" - integrity sha512-FTwvPLug3Eae9Y+olYB+ssvyzeXe7n247JS1dADjoKEwc3PC/tGlfn9vSzQtPswTrorFXVjE9DdIjMKZokV1Kg== - dependencies: - "@aztec/constants" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/stdlib" "2.0.2" - lodash.chunk "^4.2.0" - lodash.omit "^4.5.0" - tslib "^2.4.0" - -"@aztec/stdlib@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@aztec/stdlib/-/stdlib-2.0.2.tgz#b3114a0b139e7d0057cb81532e95e9c03695ca69" - integrity sha512-nsOZJwz2v+rzHUrGE2e6a+qRerK5EYaqX8IqJOngi6e5Uq1oTFhsthgYV45H2jM5aNYsf2WgU69zlFKgODXCXQ== - dependencies: - "@aztec/bb.js" "2.0.2" - "@aztec/blob-lib" "2.0.2" - "@aztec/constants" "2.0.2" - "@aztec/ethereum" "2.0.2" - "@aztec/foundation" "2.0.2" - "@aztec/l1-artifacts" "2.0.2" - "@aztec/noir-noirc_abi" "2.0.2" - "@google-cloud/storage" "^7.15.0" - axios "^1.9.0" - json-stringify-deterministic "1.0.12" - lodash.chunk "^4.2.0" - lodash.isequal "^4.5.0" - lodash.omit "^4.5.0" - lodash.times "^4.3.2" - msgpackr "^1.11.2" - pako "^2.1.0" - tslib "^2.4.0" - viem "2.23.7" - zod "^3.23.8" - -"@fastify/busboy@^2.0.0": - version "2.1.1" - resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" - integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== - -"@google-cloud/paginator@^5.0.0": - version "5.0.2" - resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-5.0.2.tgz#86ad773266ce9f3b82955a8f75e22cd012ccc889" - integrity sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg== - dependencies: - arrify "^2.0.0" - extend "^3.0.2" - -"@google-cloud/projectify@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-4.0.0.tgz#d600e0433daf51b88c1fa95ac7f02e38e80a07be" - integrity sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA== - -"@google-cloud/promisify@<4.1.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-4.0.0.tgz#a906e533ebdd0f754dca2509933334ce58b8c8b1" - integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g== - -"@google-cloud/storage@^7.15.0": - version "7.17.1" - resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-7.17.1.tgz#4f998c4b63e0537272ac44f5e7751e046ecaca1d" - integrity sha512-2FMQbpU7qK+OtBPaegC6n+XevgZksobUGo6mGKnXNmeZpvLiAo1gTAE3oTKsrMGDV4VtL8Zzpono0YsK/Q7Iqg== - dependencies: - "@google-cloud/paginator" "^5.0.0" - "@google-cloud/projectify" "^4.0.0" - "@google-cloud/promisify" "<4.1.0" - abort-controller "^3.0.0" - async-retry "^1.3.3" - duplexify "^4.1.3" - fast-xml-parser "^4.4.1" - gaxios "^6.0.2" - google-auth-library "^9.6.3" - html-entities "^2.5.2" - mime "^3.0.0" - p-limit "^3.0.1" - retry-request "^7.0.0" - teeny-request "^9.0.0" - uuid "^8.0.0" - -"@hapi/bourne@^3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-3.0.0.tgz#f11fdf7dda62fe8e336fa7c6642d9041f30356d7" - integrity sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w== - -"@koa/cors@^5.0.0": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@koa/cors/-/cors-5.0.0.tgz#0029b5f057fa0d0ae0e37dd2c89ece315a0daffd" - integrity sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw== - dependencies: - vary "^1.1.2" - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11" - integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== - -"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855" - integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb" - integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg== - -"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159" - integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw== - -"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3" - integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg== - -"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" - integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== - -"@noble/curves@1.8.1": - version "1.8.1" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.1.tgz#19bc3970e205c99e4bdb1c64a4785706bce497ff" - integrity sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ== - dependencies: - "@noble/hashes" "1.7.1" - -"@noble/curves@=1.7.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" - integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== - dependencies: - "@noble/hashes" "1.6.0" - -"@noble/curves@^1.6.0", "@noble/curves@~1.9.0": - version "1.9.7" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" - integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== - dependencies: - "@noble/hashes" "1.8.0" - -"@noble/curves@~1.8.1": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.8.2.tgz#8f24c037795e22b90ae29e222a856294c1d9ffc7" - integrity sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g== - dependencies: - "@noble/hashes" "1.7.2" - -"@noble/hashes@1.6.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" - integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== - -"@noble/hashes@1.7.1": - version "1.7.1" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" - integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ== - -"@noble/hashes@1.7.2", "@noble/hashes@~1.7.1": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.2.tgz#d53c65a21658fb02f3303e7ee3ba89d6754c64b4" - integrity sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ== - -"@noble/hashes@1.8.0", "@noble/hashes@^1.5.0", "@noble/hashes@~1.8.0": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" - integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== - -"@scure/base@~1.2.2", "@scure/base@~1.2.4", "@scure/base@~1.2.5": - version "1.2.6" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" - integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== - -"@scure/bip32@1.6.2": - version "1.6.2" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.6.2.tgz#093caa94961619927659ed0e711a6e4bf35bffd0" - integrity sha512-t96EPDMbtGgtb7onKKqxRLfE5g05k7uHnHRM2xdE6BP/ZmxaLtPek4J4KfVn/90IQNrU1IOAqMgiDtUdtbe3nw== - dependencies: - "@noble/curves" "~1.8.1" - "@noble/hashes" "~1.7.1" - "@scure/base" "~1.2.2" - -"@scure/bip32@^1.5.0": - version "1.7.0" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.7.0.tgz#b8683bab172369f988f1589640e53c4606984219" - integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== - dependencies: - "@noble/curves" "~1.9.0" - "@noble/hashes" "~1.8.0" - "@scure/base" "~1.2.5" - -"@scure/bip39@1.5.4": - version "1.5.4" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.5.4.tgz#07fd920423aa671be4540d59bdd344cc1461db51" - integrity sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA== - dependencies: - "@noble/hashes" "~1.7.1" - "@scure/base" "~1.2.4" - -"@scure/bip39@^1.4.0": - version "1.6.0" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.6.0.tgz#475970ace440d7be87a6086cbee77cb8f1a684f9" - integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== - dependencies: - "@noble/hashes" "~1.8.0" - "@scure/base" "~1.2.5" - -"@tootallnate/once@2": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" - integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== - -"@types/caseless@*": - version "0.12.5" - resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.5.tgz#db9468cb1b1b5a925b8f34822f1669df0c5472f5" - integrity sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg== - -"@types/node@*": - version "24.5.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.5.2.tgz#52ceb83f50fe0fcfdfbd2a9fab6db2e9e7ef6446" - integrity sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ== - dependencies: - undici-types "~7.12.0" - -"@types/request@^2.48.8": - version "2.48.13" - resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.13.tgz#abdf4256524e801ea8fdda54320f083edb5a6b80" - integrity sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg== - dependencies: - "@types/caseless" "*" - "@types/node" "*" - "@types/tough-cookie" "*" - form-data "^2.5.5" - -"@types/tough-cookie@*": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" - integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== - -"@viem/anvil@^0.0.10": - version "0.0.10" - resolved "https://registry.yarnpkg.com/@viem/anvil/-/anvil-0.0.10.tgz#aa64fd96017d6875c9e8bebc223d394a55bc3a72" - integrity sha512-9PzYXBRikfSUhhm8Bd0avv07agwcbMJ5FaSu2D2vbE0cxkvXGtolL3fW5nz2yefMqOqVQL4XzfM5nwY81x3ytw== - dependencies: - execa "^7.1.1" - get-port "^6.1.2" - http-proxy "^1.18.1" - ws "^8.13.0" - -abitype@1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.0.8.tgz#3554f28b2e9d6e9f35eb59878193eabd1b9f46ba" - integrity sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg== - -abitype@^1.0.6: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.1.tgz#b50ed400f8bfca5452eb4033445c309d3e1117c8" - integrity sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abstract-leveldown@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" - integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== - dependencies: - buffer "^6.0.3" - catering "^2.0.0" - is-buffer "^2.0.5" - level-concat-iterator "^3.0.0" - level-supports "^2.0.1" - queue-microtask "^1.2.3" - -accepts@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agent-base@^7.1.2: - version "7.1.4" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" - integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== - -arrify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== - -axios@^1.8.2, axios@^1.9.0: - version "1.12.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.12.2.tgz#6c307390136cf7a2278d09cec63b136dfc6e6da7" - integrity sha512-vMJzPewAlRyOgxV2dU0Cuz2O8zzzx9VYtbJOaBgXFeLc4IV/Eg50n4LowmehOOR61S8ZMpc2K5Sa7g6A4jfkUw== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.4" - proxy-from-env "^1.1.0" - -base64-js@^1.3.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bignumber.js@^9.0.0: - version "9.3.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" - integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== - -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - -bn.js@^5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" - integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== - -buffer-equal-constant-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - -buffer@6.0.3, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bytes@3.1.2, bytes@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -c-kzg@4.0.0-alpha.1: - version "4.0.0-alpha.1" - resolved "https://registry.yarnpkg.com/c-kzg/-/c-kzg-4.0.0-alpha.1.tgz#1fa4bd388cd69763e0199085938c77d683bccf89" - integrity sha512-I8S9+c6OEaF6mD5OQJ/PylPk8C3TENQqvMomzV4u+NyOTdVOwF/VFj/z2o5OOPt930qkms0AbzXZ+Qu4qQCYxg== - dependencies: - bindings "^1.5.0" - node-addon-api "^5.0.0" - -cache-content-type@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" - integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== - dependencies: - mime-types "^2.1.18" - ylru "^1.2.0" - -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bound@^1.0.2, call-bound@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -catering@^2.0.0, catering@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" - integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== - -co-body@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.2.0.tgz#afd776d60e5659f4eee862df83499698eb1aea1b" - integrity sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA== - dependencies: - "@hapi/bourne" "^3.0.0" - inflation "^2.0.0" - qs "^6.5.2" - raw-body "^2.3.3" - type-is "^1.6.16" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -colorette@^2.0.20, colorette@^2.0.7: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -comlink@^4.4.1: - version "4.4.2" - resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.2.tgz#cbbcd82742fbebc06489c28a183eedc5c60a2bca" - integrity sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g== - -commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -compressible@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -content-disposition@~0.5.2: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -cookies@~0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" - integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== - dependencies: - depd "~2.0.0" - keygrip "~1.1.0" - -copy-to@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" - integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w== - -cross-spawn@^7.0.3: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -dateformat@^4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" - integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== - -debug@4, debug@^4.3.2, debug@^4.3.4: - version "4.4.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" - integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== - dependencies: - ms "^2.1.3" - -deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0, depd@^2.0.0, depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -destroy@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.0.tgz#3ca811f60a7b504b0480e5008adacc660b0b8c4f" - integrity sha512-vEtk+OcP7VBRtQZ1EJ3bdgzSfBjgnEalLTp5zjJrS+2Z1w2KZly4SBdac/WDU3hhsNAZ9E8SC96ME4Ey8MZ7cg== - -detect-node@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -dotenv@^16.0.3: - version "16.6.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -duplexify@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" - integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA== - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.2" - -ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -encodeurl@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.5" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" - integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== - dependencies: - once "^1.4.0" - -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -escape-html@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -execa@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" - integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^4.3.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -extend@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -fast-copy@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" - integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== - -fast-redact@^3.1.1: - version "3.5.0" - resolved "https://registry.yarnpkg.com/fast-redact/-/fast-redact-3.5.0.tgz#e9ea02f7e57d0cd8438180083e93077e496285e4" - integrity sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A== - -fast-safe-stringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fast-xml-parser@^4.4.1: - version "4.5.3" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb" - integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig== - dependencies: - strnum "^1.1.1" - -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - -follow-redirects@^1.0.0, follow-redirects@^1.15.6: - version "1.15.11" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" - integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== - -form-data@^2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.5.tgz#a5f6364ad7e4e67e95b4a07e2d8c6f711c74f624" - integrity sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.35" - safe-buffer "^5.2.1" - -form-data@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" - integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" - -fresh@~0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gaxios@^6.0.0, gaxios@^6.0.2, gaxios@^6.1.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.1.tgz#ebd9f7093ede3ba502685e73390248bb5b7f71fb" - integrity sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ== - dependencies: - extend "^3.0.2" - https-proxy-agent "^7.0.1" - is-stream "^2.0.0" - node-fetch "^2.6.9" - uuid "^9.0.1" - -gcp-metadata@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-6.1.1.tgz#f65aa69f546bc56e116061d137d3f5f90bdec494" - integrity sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A== - dependencies: - gaxios "^6.1.1" - google-logging-utils "^0.0.2" - json-bigint "^1.0.0" - -get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-port@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-6.1.2.tgz#c1228abb67ba0e17fb346da33b15187833b9c08a" - integrity sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw== - -get-proto@^1.0.0, get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -google-auth-library@^9.6.3: - version "9.15.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.15.1.tgz#0c5d84ed1890b2375f1cd74f03ac7b806b392928" - integrity sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng== - dependencies: - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - gaxios "^6.1.1" - gcp-metadata "^6.1.0" - gtoken "^7.0.0" - jws "^4.0.0" - -google-logging-utils@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/google-logging-utils/-/google-logging-utils-0.0.2.tgz#5fd837e06fa334da450433b9e3e1870c1594466a" - integrity sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ== - -gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -gtoken@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.1.0.tgz#d61b4ebd10132222817f7222b1e6064bd463fc26" - integrity sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw== - dependencies: - gaxios "^6.0.0" - jws "^4.0.0" - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -help-me@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" - integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== - -html-entities@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" - integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== - -http-assert@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" - integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== - dependencies: - deep-equal "~1.0.1" - http-errors "~1.8.0" - -http-errors@2.0.0, http-errors@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@^1.6.3, http-errors@^1.8.1, http-errors@~1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -https-proxy-agent@^7.0.1: - version "7.0.6" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" - integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== - dependencies: - agent-base "^7.1.2" - debug "4" - -human-signals@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" - integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -idb-keyval@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.2.tgz#b0171b5f73944854a3291a5cdba8e12768c4854a" - integrity sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg== - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -inflation@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.1.0.tgz#9214db11a47e6f756d111c4f9df96971c60f886c" - integrity sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ== - -inherits@2.0.4, inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-buffer@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-generator-function@^1.0.7: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" - integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== - dependencies: - call-bound "^1.0.3" - get-proto "^1.0.0" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-regex@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" - integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== - dependencies: - call-bound "^1.0.2" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isows@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.6.tgz#0da29d706fa51551c663c627ace42769850f86e7" - integrity sha512-lPHCayd40oW98/I0uvgaHKWCSvkzY27LjWLbtzOm64yQ+G3Q5npjjbdppU65iZXkK1Zt+kH9pfegli0AYfwYYw== - -joycon@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== - -json-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" - integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== - dependencies: - bignumber.js "^9.0.0" - -json-stringify-deterministic@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz#aaa3f907466ed01e3afd77b898d0a2b3b132820a" - integrity sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g== - -jwa@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" - integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== - dependencies: - buffer-equal-constant-time "^1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" - integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== - dependencies: - jwa "^2.0.0" - safe-buffer "^5.0.1" - -keygrip@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" - integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== - dependencies: - tsscmp "1.0.6" - -koa-bodyparser@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz#a908d848e142cc57d9eece478e932bf00dce3029" - integrity sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w== - dependencies: - co-body "^6.0.0" - copy-to "^2.0.1" - type-is "^1.6.18" - -koa-compose@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" - integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== - -koa-compress@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/koa-compress/-/koa-compress-5.1.1.tgz#4f1599cfcaab23de1cd97d0a0ff9b5d05b0ffa52" - integrity sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg== - dependencies: - bytes "^3.1.2" - compressible "^2.0.18" - http-errors "^1.8.1" - koa-is-json "^1.0.0" - -koa-convert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" - integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== - dependencies: - co "^4.6.0" - koa-compose "^4.1.0" - -koa-is-json@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14" - integrity sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw== - -koa-router@^12.0.0: - version "12.0.1" - resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-12.0.1.tgz#a3c1c331032d442da786f0631d23e74d51b6882e" - integrity sha512-gaDdj3GtzoLoeosacd50kBBTnnh3B9AYxDThQUo4sfUyXdOhY6ku1qyZKW88tQCRgc3Sw6ChXYXWZwwgjOxE0w== - dependencies: - debug "^4.3.4" - http-errors "^2.0.0" - koa-compose "^4.1.0" - methods "^1.1.2" - path-to-regexp "^6.2.1" - -koa@^2.16.1: - version "2.16.2" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.16.2.tgz#1292a3b415a9b9f3dd6872c1835229630a4ecae3" - integrity sha512-+CCssgnrWKx9aI3OeZwroa/ckG4JICxvIFnSiOUyl2Uv+UTI+xIw0FfFrWS7cQFpoePpr9o8csss7KzsTzNL8Q== - dependencies: - accepts "^1.3.5" - cache-content-type "^1.0.0" - content-disposition "~0.5.2" - content-type "^1.0.4" - cookies "~0.9.0" - debug "^4.3.2" - delegates "^1.0.0" - depd "^2.0.0" - destroy "^1.0.4" - encodeurl "^1.0.2" - escape-html "^1.0.3" - fresh "~0.5.2" - http-assert "^1.3.0" - http-errors "^1.6.3" - is-generator-function "^1.0.7" - koa-compose "^4.1.0" - koa-convert "^2.0.0" - on-finished "^2.3.0" - only "~0.0.2" - parseurl "^1.3.2" - statuses "^1.5.0" - type-is "^1.6.16" - vary "^1.1.2" - -level-concat-iterator@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" - integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== - dependencies: - catering "^2.1.0" - -level-supports@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" - integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== - -leveldown@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.1.tgz#0f0e480fa88fd807abf94c33cb7e40966ea4b5ce" - integrity sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A== - dependencies: - abstract-leveldown "^7.2.0" - napi-macros "~2.0.0" - node-gyp-build "^4.3.0" - -lodash.chunk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" - integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== - -lodash.clonedeepwith@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" - integrity sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA== - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.omit@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" - integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== - -lodash.pickby@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" - integrity sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q== - -lodash.times@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.times/-/lodash.times-4.3.2.tgz#3e1f2565c431754d54ab57f2ed1741939285ca1d" - integrity sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A== - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -methods@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" - integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -"mime-db@>= 1.43.0 < 2": - version "1.54.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" - integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== - -mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -msgpackr-extract@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012" - integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== - dependencies: - node-gyp-build-optional-packages "5.2.2" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" - -msgpackr@^1.11.2: - version "1.11.5" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.5.tgz#edf0b9d9cb7d8ed6897dd0e42cfb865a2f4b602e" - integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== - optionalDependencies: - msgpackr-extract "^3.0.2" - -napi-macros@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" - integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -node-addon-api@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" - integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== - -node-fetch@^2.6.9: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build-optional-packages@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4" - integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== - dependencies: - detect-libc "^2.0.1" - -node-gyp-build@^4.3.0: - version "4.8.4" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" - integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== - -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - -object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -on-exit-leak-free@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" - integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== - -on-finished@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -only@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" - integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== - -ox@0.6.7: - version "0.6.7" - resolved "https://registry.yarnpkg.com/ox/-/ox-0.6.7.tgz#afd53f2ecef68b8526660e9d29dee6e6b599a832" - integrity sha512-17Gk/eFsFRAZ80p5eKqv89a57uXjd3NgIf1CaXojATPBuujVc/fQSVhBeAU9JCRB+k7J50WQAyWTxK19T9GgbA== - dependencies: - "@adraffy/ens-normalize" "^1.10.1" - "@noble/curves" "^1.6.0" - "@noble/hashes" "^1.5.0" - "@scure/bip32" "^1.5.0" - "@scure/bip39" "^1.4.0" - abitype "^1.0.6" - eventemitter3 "5.0.1" - -p-limit@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -pako@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - -parseurl@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-to-regexp@^6.2.1: - version "6.3.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" - integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== - -pino-abstract-transport@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" - integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== - dependencies: - split2 "^4.0.0" - -pino-pretty@^13.0.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-13.1.1.tgz#70130b9ff3737c8757f53e42d69e9f96835142b8" - integrity sha512-TNNEOg0eA0u+/WuqH0MH0Xui7uqVk9D74ESOpjtebSQYbNWJk/dIxCXIxFsNfeN53JmtWqYHP2OrIZjT/CBEnA== - dependencies: - colorette "^2.0.7" - dateformat "^4.6.3" - fast-copy "^3.0.2" - fast-safe-stringify "^2.1.1" - help-me "^5.0.0" - joycon "^3.1.1" - minimist "^1.2.6" - on-exit-leak-free "^2.1.0" - pino-abstract-transport "^2.0.0" - pump "^3.0.0" - secure-json-parse "^4.0.0" - sonic-boom "^4.0.1" - strip-json-comments "^5.0.2" - -pino-std-serializers@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" - integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== - -pino@^9.5.0: - version "9.11.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-9.11.0.tgz#7fc383f815cf6bf5979b4d791eafd2f2496c42a6" - integrity sha512-+YIodBB9sxcWeR8PrXC2K3gEDyfkUuVEITOcbqrfcj+z5QW4ioIcqZfYFbrLTYLsmAwunbS7nfU/dpBB6PZc1g== - dependencies: - atomic-sleep "^1.0.0" - fast-redact "^3.1.1" - on-exit-leak-free "^2.1.0" - pino-abstract-transport "^2.0.0" - pino-std-serializers "^7.0.0" - process-warning "^5.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.2.0" - safe-stable-stringify "^2.3.1" - sonic-boom "^4.0.1" - thread-stream "^3.0.0" - -process-warning@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" - integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA== - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pump@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" - integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -qs@^6.5.2: - version "6.14.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" - integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== - dependencies: - side-channel "^1.1.0" - -queue-microtask@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-format-unescaped@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" - integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== - -raw-body@^2.3.3: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -readable-stream@^3.1.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -real-require@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" - integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -retry-request@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-7.0.2.tgz#60bf48cfb424ec01b03fca6665dee91d06dd95f3" - integrity sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w== - dependencies: - "@types/request" "^2.48.8" - extend "^3.0.2" - teeny-request "^9.0.0" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" - integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-regex "^1.2.1" - -safe-stable-stringify@^2.3.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" - integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -secure-json-parse@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-4.0.0.tgz#2ee1b7581be38ab348bab5a3e49280ba80a89c85" - integrity sha512-dxtLJO6sc35jWidmLxo7ij+Eg48PM/kleBsxpC8QJE0qJICe+KawkDQmvCMZUr9u7WKVHgMW6vy3fQ7zMiFZMA== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -sonic-boom@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" - integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww== - dependencies: - atomic-sleep "^1.0.0" - -split2@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.5.0 < 2", statuses@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -stream-events@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" - integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== - dependencies: - stubs "^3.0.0" - -stream-shift@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" - integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.3.tgz#b7304249dd402ee67fd518ada993ab3593458bcf" - integrity sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw== - -strnum@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" - integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== - -stubs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" - integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== - -teeny-request@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-9.0.0.tgz#18140de2eb6595771b1b02203312dfad79a4716d" - integrity sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g== - dependencies: - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - node-fetch "^2.6.9" - stream-events "^1.0.5" - uuid "^9.0.0" - -thread-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" - integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== - dependencies: - real-require "^0.2.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -tslib@^2.4.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tsscmp@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - -type-is@^1.6.16, type-is@^1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typescript@^5.8.3: - version "5.9.2" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.9.2.tgz#d93450cddec5154a2d5cabe3b8102b83316fb2a6" - integrity sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== - -undici-types@~7.12.0: - version "7.12.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.12.0.tgz#15c5c7475c2a3ba30659529f5cdb4674b622fafb" - integrity sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ== - -undici@^5.28.5: - version "5.29.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" - integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== - dependencies: - "@fastify/busboy" "^2.0.0" - -unpipe@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@^8.0.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^9.0.0, uuid@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -vary@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -viem@2.23.7: - version "2.23.7" - resolved "https://registry.yarnpkg.com/viem/-/viem-2.23.7.tgz#6955206c36e9f4ba7fc65790167699178de697a7" - integrity sha512-Gbyz0uE3biWDPxECrEyzILWPsnIgDREgfRMuLSWHSSnM6ktefSC/lqQNImnxESdDEixa8/6EWXjmf2H6L9VV0A== - dependencies: - "@noble/curves" "1.8.1" - "@noble/hashes" "1.7.1" - "@scure/bip32" "1.6.2" - "@scure/bip39" "1.5.4" - abitype "1.0.8" - isows "1.0.6" - ox "0.6.7" - ws "8.18.0" - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@8.18.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" - integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== - -ws@^8.13.0: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== - -ylru@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.4.0.tgz#0cf0aa57e9c24f8a2cbde0cc1ca2c9592ac4e0f6" - integrity sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod@^3.23.8: - version "3.25.76" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" - integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== From 00d464aeba67b5c116f5c51ba9d1c3dc8e2170fb Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Thu, 23 Oct 2025 23:33:13 -0400 Subject: [PATCH 10/22] Update recursive verification scripts and dependencies - Modified `.gitignore` to include `store/` directory. - Updated `package.json` to change the `recursion` script to use `tsx` and added new dependencies for `@aztec/kv-store` and `@aztec/noir-contracts.js`. - Refined `README.md` to correct command for executing the circuit. - Enhanced `generate_data.ts` by removing unused imports and simplifying proof data handling. - Revamped `run_recursion.ts` to integrate a new sandbox setup and wallet deployment process, improving contract interaction. - Introduced `sponsored_fpc.ts` for managing Sponsored FPC instances and deployment logic. --- recursive_verification/.gitignore | 3 +- recursive_verification/README.md | 4 +- recursive_verification/bun.lockb | Bin 106469 -> 171527 bytes recursive_verification/package.json | 8 +- .../scripts/generate_data.ts | 8 +- .../scripts/run_recursion.ts | 93 ++++++++++-------- .../scripts/sponsored_fpc.ts | 42 ++++++++ 7 files changed, 106 insertions(+), 52 deletions(-) create mode 100644 recursive_verification/scripts/sponsored_fpc.ts diff --git a/recursive_verification/.gitignore b/recursive_verification/.gitignore index e031eee..b62bf2f 100644 --- a/recursive_verification/.gitignore +++ b/recursive_verification/.gitignore @@ -1,4 +1,5 @@ node_modules **/target/ **/codegenCache.json -**/artifacts/ \ No newline at end of file +**/artifacts/ +store/ \ No newline at end of file diff --git a/recursive_verification/README.md b/recursive_verification/README.md index 084e575..f092ac5 100644 --- a/recursive_verification/README.md +++ b/recursive_verification/README.md @@ -76,10 +76,10 @@ cd circuit && aztec-nargo compile This compiles `circuit/src/main.nr` and generates `target/hello_circuit.json` containing the circuit bytecode. -### 2. Execute the Circuit (Optional) +### 2. Execute the Circuit ```bash -cd circuit && nargo execute +cd circuit && aztec-nargo execute ``` Generates a witness for testing the circuit with default inputs (defined in `circuit/Prover.toml`). diff --git a/recursive_verification/bun.lockb b/recursive_verification/bun.lockb index 04173260dc00ce421d7ee0d1cfe813c0fa32b8e0..1e2e325e14ca46f71df260b860cc6cb8006423a5 100755 GIT binary patch delta 61577 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 delta 21219 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 Am;e9( diff --git a/recursive_verification/package.json b/recursive_verification/package.json index ae8186b..6589372 100644 --- a/recursive_verification/package.json +++ b/recursive_verification/package.json @@ -6,7 +6,7 @@ "cli": "bun run cli.ts", "ccc": "cd contract && aztec-nargo compile && aztec-postprocess-contract && aztec codegen target -o artifacts", "data": "bun run scripts/generate_data.ts", - "recursion": "bun run scripts/run_recursion.ts", + "recursion": "tsx scripts/run_recursion.ts", "test": "bun test", "test:watch": "bun test --watch" }, @@ -20,7 +20,11 @@ "@aztec/accounts": "2.0.3", "@aztec/aztec.js": "2.0.3", "@aztec/bb.js": "2.0.3", + "@aztec/kv-store": "^2.0.3", + "@aztec/noir-contracts.js": "^2.0.3", "@aztec/noir-noir_js": "2.0.3", - "add": "^2.0.6" + "@aztec/pxe": "^2.0.3", + "add": "^2.0.6", + "tsx": "^4.20.6" } } diff --git a/recursive_verification/scripts/generate_data.ts b/recursive_verification/scripts/generate_data.ts index 89ba862..b46a7ef 100644 --- a/recursive_verification/scripts/generate_data.ts +++ b/recursive_verification/scripts/generate_data.ts @@ -1,6 +1,6 @@ import { Noir } from '@aztec/noir-noir_js'; import circuitJson from '../circuit/target/hello_circuit.json' with { type: "json" } -import { Barretenberg, deflattenFields, RawBuffer, UltraHonkBackend, type ProofData } from '@aztec/bb.js'; +import { Barretenberg, deflattenFields, UltraHonkBackend } from '@aztec/bb.js'; import fs from 'fs' import { exit } from 'process'; @@ -9,15 +9,15 @@ const helloWorld = new Noir(circuitJson as any) const { witness: mainWitness } = await helloWorld.execute({ x: 1, y: 2 }) const mainBackend = new UltraHonkBackend(circuitJson.bytecode, { threads: 1 }) -const mainProofData: ProofData = await mainBackend.generateProof(mainWitness) +const mainProofData = await mainBackend.generateProof(mainWitness) const mainVerificationKey = await mainBackend.getVerificationKey() const isValid = await mainBackend.verifyProof(mainProofData) console.log(`Proof verification: ${isValid ? 'SUCCESS' : 'FAILED'}`) -const proofAsFields = deflattenFields(new RawBuffer(mainProofData.proof)) +const proofAsFields = deflattenFields(mainProofData.proof) const barretenbergAPI = await Barretenberg.new({ threads: 1 }); -const vkAsFields = (await barretenbergAPI.acirVkAsFieldsUltraHonk(new RawBuffer(mainVerificationKey))) +const vkAsFields = (await barretenbergAPI.acirVkAsFieldsUltraHonk(mainVerificationKey)) .map(field => field.toString()); fs.writeFileSync('data.json', JSON.stringify({ proofAsFields, vkAsFields, publicInputs: mainProofData.publicInputs }, null, 2)) diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index 9f73bb6..05d99e1 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -1,68 +1,75 @@ -import { AccountWalletWithSecretKey, Contract, createPXEClient, waitForPXE, type FieldLike, type PXE } from "@aztec/aztec.js" - +import { AccountWalletWithSecretKey, Contract, createAztecNodeClient, Fq, Fr, SponsoredFeePaymentMethod, waitForPXE, type FieldLike, type PXE } from "@aztec/aztec.js" +import { getSponsoredFPCInstance } from "./sponsored_fpc.js"; +import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC"; export const PXE_URL = 'http://localhost:8080' -import { getInitialTestAccountsWallets } from '@aztec/accounts/testing' import { ValueNotEqualContract, ValueNotEqualContractArtifact } from '../contract/artifacts/ValueNotEqual' import data from '../data.json' +import { createPXEService, getPXEServiceConfig } from "@aztec/pxe/server" +import { createStore } from "@aztec/kv-store/lmdb" +import { getSchnorrAccount } from "@aztec/accounts/schnorr" -export const setupSandbox = async (): Promise => { - try { - console.log(`Setting up sandbox with PXE URL: ${PXE_URL}`) - const pxe = await createPXEClient(PXE_URL) - await waitForPXE(pxe) - console.log('PXE client created and connected successfully') - return pxe - } catch (error) { - console.error('Failed to setup sandbox:', error) - throw error - } -} -export interface TestWallets { - owner: AccountWalletWithSecretKey - user1: AccountWalletWithSecretKey - user2: AccountWalletWithSecretKey - user3: AccountWalletWithSecretKey -} +const sponsoredFPC = await getSponsoredFPCInstance(); +const sponsoredPaymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address); -export const setupWallets = async (pxe: PXE): Promise => { +export const setupSandbox = async (): Promise => { try { - console.log('Setting up test wallets') - const wallets = await getInitialTestAccountsWallets(pxe) - - const testWallets: TestWallets = { - owner: wallets[0], - user1: wallets[1], - user2: wallets[2], - //? Here wallet[3] is always coming wallets[0], so please keep this in mind - user3: wallets[3] || wallets[0], // Fallback if not enough wallets + const nodeUrl = 'http://localhost:8080'; + const node = await createAztecNodeClient(nodeUrl); + + try { + await node.getNodeInfo(); + } catch (error) { + throw new Error(`Cannot connect to node at ${nodeUrl}. ${nodeUrl.includes('localhost') ? 'Please run: aztec start --sandbox' : 'Check your connection.'}`); } - console.log('Test wallets configured') - console.info('Owner address:', testWallets.owner.getAddress().toString()) - console.info('User1 address:', testWallets.user1.getAddress().toString()) - console.info('User2 address:', testWallets.user2.getAddress().toString()) + const l1Contracts = await node.getL1ContractAddresses(); + const config = getPXEServiceConfig(); + const fullConfig = { + ...config, + l1Contracts, + proverEnabled: true + }; + + const store = await createStore('recursive_verification', { + dataDirectory: 'store', + dataStoreMapSizeKB: 1e6, + }); - return testWallets + const pxe = await createPXEService(node, fullConfig, { store }); + await waitForPXE(pxe); + await pxe.registerContract({ instance: sponsoredFPC, artifact: SponsoredFPCContract.artifact }); + + return pxe; } catch (error) { - console.error('Failed to setup wallets:', error) + console.error('Failed to setup sandbox:', error) throw error } } +export async function deployWallet(pxe: PXE): Promise { + let secretKey = Fr.random(); + let signingKey = Fq.random(); + let salt = Fr.random(); + let schnorrAccount = await getSchnorrAccount(pxe, secretKey, signingKey, salt); + let tx = await schnorrAccount.deploy({ fee: { paymentMethod: sponsoredPaymentMethod } }).wait({ timeout: 120000 }); + let wallet = await schnorrAccount.getWallet(); + return wallet +} + async function main() { const pxe = await setupSandbox(); - const wallets = await setupWallets(pxe) + const wallet = await deployWallet(pxe) - const valueNotEqual = await Contract.deploy(wallets.owner, ValueNotEqualContractArtifact, [ - 10, wallets.owner.getAddress() - ], 'initialize').send({ from: wallets.owner.getAddress() }).deployed() as ValueNotEqualContract + const valueNotEqual = await Contract.deploy(wallet, ValueNotEqualContractArtifact, [ + 10, wallet.getAddress() + ], 'initialize').send({ from: wallet.getAddress(), fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() as ValueNotEqualContract console.log("Contract Deployed at address", valueNotEqual.address.toString()) - const tx = await valueNotEqual.methods.increment(wallets.owner.getAddress(), data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[]).send({ from: wallets.owner.getAddress() }).wait() + const tx = await valueNotEqual.methods.increment(wallet.getAddress(), data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[]).send({ from: wallet.getAddress(), fee: { paymentMethod: sponsoredPaymentMethod } }).wait() console.log(`Tx hash: ${tx.txHash.toString()}`) - const counterValue = await valueNotEqual.methods.get_counter(wallets.owner.getAddress()).simulate({ from: wallets.owner.getAddress() }) + const counterValue = await valueNotEqual.methods.get_counter(wallet.getAddress()).simulate({ from: wallet.getAddress() }) console.log(`Counter value: ${counterValue}`) } diff --git a/recursive_verification/scripts/sponsored_fpc.ts b/recursive_verification/scripts/sponsored_fpc.ts new file mode 100644 index 0000000..b3c6c6b --- /dev/null +++ b/recursive_verification/scripts/sponsored_fpc.ts @@ -0,0 +1,42 @@ +import { + type ContractInstanceWithAddress, + Fr, + type PXE, + type Wallet, + getContractInstanceFromInstantiationParams, +} from '@aztec/aztec.js'; +import type { LogFn } from '@aztec/foundation/log'; +import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; + +const SPONSORED_FPC_SALT = new Fr(0); + +export async function getSponsoredFPCInstance(): Promise { + return await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, { + salt: SPONSORED_FPC_SALT, + }); +} + +export async function getSponsoredFPCAddress() { + return (await getSponsoredFPCInstance()).address; +} + +export async function setupSponsoredFPC(deployer: Wallet, log: LogFn) { + const deployed = await SponsoredFPCContract.deploy(deployer) + .send({ + from: deployer.getAddress(), + contractAddressSalt: SPONSORED_FPC_SALT, + universalDeploy: true, + }) + .deployed(); + + log(`SponsoredFPC: ${deployed.address}`); +} + +export async function getDeployedSponsoredFPCAddress(pxe: PXE) { + const fpc = await getSponsoredFPCAddress(); + const contracts = await pxe.getContracts(); + if (!contracts.find(c => c.equals(fpc))) { + throw new Error('SponsoredFPC not deployed.'); + } + return fpc; +} \ No newline at end of file From 6612f4dc7ca98e44eed0afcc4d48afe21a68b120 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Thu, 23 Oct 2025 23:57:56 -0400 Subject: [PATCH 11/22] Update recursive verification workflow and scripts - Renamed the test step in the GitHub Actions workflow to "Run recursive verification script" and updated the command to execute the recursion script. - Increased the timeout for the recursive verification script from 10 to 15 minutes. - Added a new "clean" script in package.json to remove the store directory before running tests. - Modified the existing test script to include the clean step for better environment management. - Made minor adjustments to the run_recursion.ts script for improved readability. --- .github/workflows/recursive-verification-tests.yml | 6 +++--- recursive_verification/package.json | 3 ++- recursive_verification/scripts/run_recursion.ts | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/recursive-verification-tests.yml b/.github/workflows/recursive-verification-tests.yml index 72bb861..257947b 100644 --- a/.github/workflows/recursive-verification-tests.yml +++ b/.github/workflows/recursive-verification-tests.yml @@ -91,10 +91,10 @@ jobs: bun data timeout-minutes: 30 - - name: Run tests + - name: Run recursive verification script working-directory: recursive_verification - run: bun test - timeout-minutes: 10 + run: bun recursion + timeout-minutes: 15 - name: Upload test results if failed if: failure() diff --git a/recursive_verification/package.json b/recursive_verification/package.json index 6589372..28afd54 100644 --- a/recursive_verification/package.json +++ b/recursive_verification/package.json @@ -3,11 +3,12 @@ "module": "index.ts", "type": "module", "scripts": { + "clean": "rm -rf store", "cli": "bun run cli.ts", "ccc": "cd contract && aztec-nargo compile && aztec-postprocess-contract && aztec codegen target -o artifacts", "data": "bun run scripts/generate_data.ts", "recursion": "tsx scripts/run_recursion.ts", - "test": "bun test", + "test": "bun clean && bun test", "test:watch": "bun test --watch" }, "devDependencies": { diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index 05d99e1..9173f19 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -12,6 +12,7 @@ const sponsoredFPC = await getSponsoredFPCInstance(); const sponsoredPaymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address); export const setupSandbox = async (): Promise => { + try { const nodeUrl = 'http://localhost:8080'; const node = await createAztecNodeClient(nodeUrl); From 3a99f01b1aaa351502057bbbfa7404961ca96a25 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Fri, 24 Oct 2025 09:59:35 -0400 Subject: [PATCH 12/22] update to nightly --- recursive_verification/bun.lockb | Bin 171527 -> 225224 bytes recursive_verification/data.json | 512 +----------------- recursive_verification/package.json | 15 +- .../scripts/generate_data.ts | 10 +- .../scripts/run_recursion.ts | 77 +-- .../scripts/sponsored_fpc.ts | 36 +- 6 files changed, 51 insertions(+), 599 deletions(-) diff --git a/recursive_verification/bun.lockb b/recursive_verification/bun.lockb index 1e2e325e14ca46f71df260b860cc6cb8006423a5..932679ee2b4b30f2947c48b92e737a833564a97c 100755 GIT binary patch literal 225224 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�~dBtE?x6<1dt3|HDh|Hz?!fl=z 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 delta 43915 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 field.toString()); - -fs.writeFileSync('data.json', JSON.stringify({ proofAsFields, vkAsFields, publicInputs: mainProofData.publicInputs }, null, 2)) +// write recursive proof artifacts and public inputs to file, add pu +fs.writeFileSync('data.json', JSON.stringify({ ...recursiveProofArtifacts, publicInputs: mainProofData.publicInputs }, null, 2)) await barretenbergAPI.destroy() - console.log("Done") exit() diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index 9173f19..9cd6e4e 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -1,76 +1,53 @@ -import { AccountWalletWithSecretKey, Contract, createAztecNodeClient, Fq, Fr, SponsoredFeePaymentMethod, waitForPXE, type FieldLike, type PXE } from "@aztec/aztec.js" +import { Contract } from "@aztec/aztec.js/contracts" +import { createAztecNodeClient } from "@aztec/aztec.js/node" +import { SponsoredFeePaymentMethod } from "@aztec/aztec.js/fee" +import type { FieldLike } from "@aztec/aztec.js/abi" import { getSponsoredFPCInstance } from "./sponsored_fpc.js"; import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC"; export const PXE_URL = 'http://localhost:8080' import { ValueNotEqualContract, ValueNotEqualContractArtifact } from '../contract/artifacts/ValueNotEqual' import data from '../data.json' -import { createPXEService, getPXEServiceConfig } from "@aztec/pxe/server" -import { createStore } from "@aztec/kv-store/lmdb" -import { getSchnorrAccount } from "@aztec/accounts/schnorr" +import { getPXEConfig } from "@aztec/pxe/config" +import { TestWallet } from '@aztec/test-wallet/server'; +import { AztecAddress } from "@aztec/aztec.js/addresses" const sponsoredFPC = await getSponsoredFPCInstance(); const sponsoredPaymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address); -export const setupSandbox = async (): Promise => { - +export const setupSandbox = async (): Promise => { + try { const nodeUrl = 'http://localhost:8080'; - const node = await createAztecNodeClient(nodeUrl); - - try { - await node.getNodeInfo(); - } catch (error) { - throw new Error(`Cannot connect to node at ${nodeUrl}. ${nodeUrl.includes('localhost') ? 'Please run: aztec start --sandbox' : 'Check your connection.'}`); - } - - const l1Contracts = await node.getL1ContractAddresses(); - const config = getPXEServiceConfig(); - const fullConfig = { - ...config, - l1Contracts, - proverEnabled: true - }; - - const store = await createStore('recursive_verification', { - dataDirectory: 'store', - dataStoreMapSizeKB: 1e6, - }); - - const pxe = await createPXEService(node, fullConfig, { store }); - await waitForPXE(pxe); - await pxe.registerContract({ instance: sponsoredFPC, artifact: SponsoredFPCContract.artifact }); - - return pxe; + const aztecNode = await createAztecNodeClient(nodeUrl); + const config = getPXEConfig(); + config.dataDirectory = 'pxe'; + config.proverEnabled = true; + let wallet = await TestWallet.create(aztecNode, config); + await wallet.registerContract({ instance: sponsoredFPC, artifact: SponsoredFPCContract.artifact }); + + return wallet; } catch (error) { console.error('Failed to setup sandbox:', error) throw error } } -export async function deployWallet(pxe: PXE): Promise { - let secretKey = Fr.random(); - let signingKey = Fq.random(); - let salt = Fr.random(); - let schnorrAccount = await getSchnorrAccount(pxe, secretKey, signingKey, salt); - let tx = await schnorrAccount.deploy({ fee: { paymentMethod: sponsoredPaymentMethod } }).wait({ timeout: 120000 }); - let wallet = await schnorrAccount.getWallet(); - return wallet -} async function main() { - const pxe = await setupSandbox(); - const wallet = await deployWallet(pxe) - - const valueNotEqual = await Contract.deploy(wallet, ValueNotEqualContractArtifact, [ - 10, wallet.getAddress() - ], 'initialize').send({ from: wallet.getAddress(), fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() as ValueNotEqualContract + const testWallet = await setupSandbox(); + const account = await testWallet.createAccount(); + const manager = await account.getDeployMethod(); + await manager.send({ from: AztecAddress.ZERO, fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() + const accounts = await testWallet.getAccounts(); - console.log("Contract Deployed at address", valueNotEqual.address.toString()) + const valueNotEqual = await Contract.deploy(testWallet, ValueNotEqualContractArtifact, [ + 10, accounts[0].item + ], 'initialize').send({ from: accounts[0].item, fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() as ValueNotEqualContract - const tx = await valueNotEqual.methods.increment(wallet.getAddress(), data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[]).send({ from: wallet.getAddress(), fee: { paymentMethod: sponsoredPaymentMethod } }).wait() + const tx = await valueNotEqual.methods.increment(accounts[0].item, data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[]).send({ from: accounts[0].item, fee: { paymentMethod: sponsoredPaymentMethod } }).wait() console.log(`Tx hash: ${tx.txHash.toString()}`) - const counterValue = await valueNotEqual.methods.get_counter(wallet.getAddress()).simulate({ from: wallet.getAddress() }) + const counterValue = await valueNotEqual.methods.get_counter(accounts[0].item).simulate({ from: accounts[0].item }) console.log(`Counter value: ${counterValue}`) } diff --git a/recursive_verification/scripts/sponsored_fpc.ts b/recursive_verification/scripts/sponsored_fpc.ts index b3c6c6b..58ee137 100644 --- a/recursive_verification/scripts/sponsored_fpc.ts +++ b/recursive_verification/scripts/sponsored_fpc.ts @@ -1,14 +1,10 @@ -import { - type ContractInstanceWithAddress, - Fr, - type PXE, - type Wallet, - getContractInstanceFromInstantiationParams, -} from '@aztec/aztec.js'; +import { type ContractInstanceWithAddress, getContractInstanceFromInstantiationParams } from '@aztec/aztec.js/contracts'; +import { Fr } from '@aztec/aztec.js/fields'; +import type { Wallet } from '@aztec/aztec.js/wallet'; import type { LogFn } from '@aztec/foundation/log'; import { SponsoredFPCContract } from '@aztec/noir-contracts.js/SponsoredFPC'; -const SPONSORED_FPC_SALT = new Fr(0); +const SPONSORED_FPC_SALT = new Fr(BigInt(0)); export async function getSponsoredFPCInstance(): Promise { return await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, { @@ -20,23 +16,11 @@ export async function getSponsoredFPCAddress() { return (await getSponsoredFPCInstance()).address; } -export async function setupSponsoredFPC(deployer: Wallet, log: LogFn) { - const deployed = await SponsoredFPCContract.deploy(deployer) - .send({ - from: deployer.getAddress(), - contractAddressSalt: SPONSORED_FPC_SALT, - universalDeploy: true, - }) - .deployed(); +export async function setupSponsoredFPC(wallet: Wallet) { + const instance = await getContractInstanceFromInstantiationParams(SponsoredFPCContract.artifact, { + salt: new Fr(SPONSORED_FPC_SALT), + }); - log(`SponsoredFPC: ${deployed.address}`); + await wallet.registerContract({ instance, artifact: SponsoredFPCContract.artifact }); + return instance; } - -export async function getDeployedSponsoredFPCAddress(pxe: PXE) { - const fpc = await getSponsoredFPCAddress(); - const contracts = await pxe.getContracts(); - if (!contracts.find(c => c.equals(fpc))) { - throw new Error('SponsoredFPC not deployed.'); - } - return fpc; -} \ No newline at end of file From 37ed3096352f15c62caddfe155ed73be532e346a Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Fri, 24 Oct 2025 10:30:28 -0400 Subject: [PATCH 13/22] Update AZTEC_VERSION in recursive verification workflow to 3.0.0-nightly.20251024 --- .github/workflows/recursive-verification-tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/recursive-verification-tests.yml b/.github/workflows/recursive-verification-tests.yml index 257947b..fc010a6 100644 --- a/.github/workflows/recursive-verification-tests.yml +++ b/.github/workflows/recursive-verification-tests.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest env: AZTEC_ENV: sandbox - AZTEC_VERSION: 2.0.3 + AZTEC_VERSION: 3.0.0-nightly.20251024 steps: - name: Checkout repository From 032c644ba8bdcb4d5b871944d4811f8cf225155f Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Sat, 25 Oct 2025 20:42:17 -0400 Subject: [PATCH 14/22] syntax --- recursive_verification/scripts/run_recursion.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index 9cd6e4e..8da1093 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -40,9 +40,7 @@ async function main() { await manager.send({ from: AztecAddress.ZERO, fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() const accounts = await testWallet.getAccounts(); - const valueNotEqual = await Contract.deploy(testWallet, ValueNotEqualContractArtifact, [ - 10, accounts[0].item - ], 'initialize').send({ from: accounts[0].item, fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() as ValueNotEqualContract + const valueNotEqual = await ValueNotEqualContract.deploy(testWallet, 10, accounts[0].item).send({ from: accounts[0].item, fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() const tx = await valueNotEqual.methods.increment(accounts[0].item, data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[]).send({ from: accounts[0].item, fee: { paymentMethod: sponsoredPaymentMethod } }).wait() From 9ea86924fd77d21e65b68bd7fe3c92d62e3d9be2 Mon Sep 17 00:00:00 2001 From: thunkar Date: Mon, 27 Oct 2025 10:33:50 +0100 Subject: [PATCH 15/22] fixes --- .../recursive-verification-tests.yml | 2 +- recursive_verification/.gitignore | 5 +- recursive_verification/bun.lockb | Bin 225224 -> 229560 bytes recursive_verification/contract/Nargo.toml | 6 +- recursive_verification/contract/src/main.nr | 10 +- recursive_verification/data.json | 511 +++++++++++++++++- recursive_verification/package.json | 18 +- .../scripts/generate_data.ts | 2 +- .../scripts/run_recursion.ts | 89 ++- 9 files changed, 594 insertions(+), 49 deletions(-) diff --git a/.github/workflows/recursive-verification-tests.yml b/.github/workflows/recursive-verification-tests.yml index fc010a6..25a76ae 100644 --- a/.github/workflows/recursive-verification-tests.yml +++ b/.github/workflows/recursive-verification-tests.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest env: AZTEC_ENV: sandbox - AZTEC_VERSION: 3.0.0-nightly.20251024 + AZTEC_VERSION: 3.0.0-nightly.20251026 steps: - name: Checkout repository diff --git a/recursive_verification/.gitignore b/recursive_verification/.gitignore index b62bf2f..ac99b00 100644 --- a/recursive_verification/.gitignore +++ b/recursive_verification/.gitignore @@ -2,4 +2,7 @@ node_modules **/target/ **/codegenCache.json **/artifacts/ -store/ \ No newline at end of file +store/ +pxe/ +barretenberg-debug.* +recursive_verification/pxe \ No newline at end of file diff --git a/recursive_verification/bun.lockb b/recursive_verification/bun.lockb index 932679ee2b4b30f2947c48b92e737a833564a97c..2ae1328caa162dad4826bb93b08f4bf6c55856a3 100755 GIT binary patch delta 46096 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 MTKNg;Ce0`R0UNv$dH?_b delta 45506 zcmeFacUV+c*ET-q0KzCEGgc50#Re)!FDeR_2qJdH1`3FPN)uF2aj=VuiYL15EjFT9 zV{h1EH=0BviCAKfJtm3;{oU&nX0RmB^M2p&y1qYNE^pS^_g;JLwbx#IpM7QqXZQGu zC$DSfG-|-BRH`LM`rmz1{3_;FwCl)~-8)^s_HxA_>s4DOgugN=&MmxN;G2}&rGehP z3h638l~t;&wA6I5I5;(CWK3dOYB5Td;4?XuN(&j28Z{z**dSF^QX(u;$v3fV)hZzp@K6oFBxqM9m63Y6+mMXAGUkocE%5x=Nib6L8`vIitZax9EgfDEdr65evo`U>cb z>@I}2O&}9w*$UDH<;rsTF7%vH-UZndl0nvn^gwjTUIIEL`%#co?g5D|vw~#431m%_ zBh%xPQZWQ48?j$~mMtzwu@a;jvIgc2wzJ|QQ`nc7>UOzqW>r2hu`B%ec4{VhAm(b%M9L^cG*WW#G}Nse$Rmxp3Pd_s)#peR*j zYDQx8(D=0K@Pejt#E5utN@ijBL`X5Iu6IL;;yKMhV(XzyTB&IxqG;ST zP$uhB>Pqq~B)OY5+|wJ?D#iNv+ETl-^(3!6>Prb#50Zvs14(f+JM3ogRWSiRS3mQu+up7*izo}`%6GtSdRKY0IG*oex%$Y$_{dbU*25V&* zpBNW2JRUm$l2QXcDKT1fd(`mAdIpBx)VvCoO7kNb=DEvI=BnND7u2Bn7M3R|?J}NSYfCUXot1Z0~(@DY+)J5bfx* zq9fA~)x_9T5M(F@k_`2SBnO_M0hRASQgold5IK0erNkFP5`SKn2U|(}Hb`%mR zVV(#{QHf7=9v%}Llb(WdC6r&amnQuVB$YFU4IhDK9aM!N$k2I63QJ6k^Wga5scA>$ za4z}$LB4%UMtJ!?pEAUQHE&Ut7|hNWEQAgP0w-6d(! zOL8P!NKxDCAAzOGk@gK*;4x{mHDP~>k9HoMcmXD9G7rn{-|sDLDAoI_RE@zu?xRvQ zg8Uw`A>=YhN5~Aw`jA~9ogg=(eI>|QQIeNqAS>hMiyMsWezdef3_%5D$ve4BH)LAE zVN!!Es~DBa2IZ+}2LoC4A*ozxuu5eMIT4cdTY{%W%MFwqZin{d!0A|(sve{Z%GFhR z#0?kKK&a86CS+v1N`-q+RuCi^ehnU*R#tb};By$Hoop>6bvOb%8NNPL>Znkz&lw<% zbP?)nqkhH^Nsa_h4&F{ce|lW}0tE-iy^y#oW*wFdOopt3@+e4JN8ymTDQ2~k>pdYU zQnrxfXjqD5rv)TAb_*TRKxPkDsp>*nr%HMgA*tPukb0WiFNItM1Jv%YKkFkfD0L zG&1un$x}a6P}0~#k|VXoO9o9KDWoCL7d@XKInWuhGWdqzDXGlm`n%(#4!(yZeRJ5O z0jyNXJI`ckRrS+Pk&+|?lBU8Bl9I^*l0r8iTUxYfgW_XjQqxpX@rh}}V`5T|O_lUo zpq@r%4`~M(IYWwMAS8AC7<%NOqE`<*>0O>CIi$A$L0O*~lQ5E|!VHFJ z0ma~D7^eDd(4&#(Le_yiG)Ib<(vf1%J69U{u%yIT1VMFtt~g+Q)(+_+YmF@DLXyYh zAt_6fWmyZ7rlvO}g|Zza>3Kj_f*c74Xo`NDC$;O0azm6GKsrIHAR9n_jnIp$1q0Av z3(IPU3o?)z7wPWhtx^>%kg|RUWCif#E^XW^gsl~;>n#>bIsE4$`M?iJYvH6^{!T70 zha`8WK~kJXL(*CrCd+snY3U~g?$89LFOzy32uZ_hwp_A%2a9Vs3Br-oyPC5b~HvQFwaAwDraIWjeMJIZQw*aMRG z;}E%gaJ>}4x_RLBsAw%$90Eb18T_r(upA`a0IP108kC2mk@}ce!p4Dthg;w$KjCV&`3-N&2dLa$}A80 z-smrvXF-x(EL73qi`%3DR@siVOCyXDjU2_JO(rt;O>CSxp*G zj)@X#I|K;N>RAZM4yKx>Xl4p^03l_RqfoF*Z3#Y5R@Ml0 z92%1eE=S0%>qA$X8*)1|QP~Kg4LvjsVYeMxlrp+uVA?AT=n4YY+|?3futJIr-+kOr z6KIB$ei@zlV9K_-4komWPLpy*-H~NoDwq&OM|9xuYFA5;W&G5bn15`%Bbc(r7k;Ai zJDARjaUsXa)6(MOM&rP=FIAx+9S2i(92M0cyVD&^S)CKK@^rgX@~vO0ail!=gfIT#lVgcrs)_HisisTWF=FUCLTz|#WA7&fv(pX51B zg&Xy(xoClFQeFGGD%~=TO64ls!CtKDD0FSu)bSoz8X9F}1Arv`Tmz3$XB{}TCepd; z&#lP1b|4m-Gf0G$_C+auk)OIXsAz%;aMTLP4%<2&>kP{+3&~4MP{k2z*$FHboya2p zn^1zQXMk)C(o9J4_0gO|sky9TAufmH(P}LQtB}-(Xid`wte>n}PFXp+sbGC%mPS-g zpj0$cHCI$EUxCF9NOGsPLlYruklF%!usd-A=jx+NmP=%aMlKCw6W6+TMGvln^^jTYpppj~KO|oVnYE&g!*U`R>WEq^ zp;Vs$*$kwq@VuRmWs@3GDj7#xy%eM;RCpoM!$)@wrPi{Q((zi<#_{AUu);tOU&|B} zC?v)mS#AcYv{UlYA`r(jT6AJFh61@FHd8Y8B1kd01+KMk1>7~L7h}V^Xd{v;#Jo}G zffbEWrmLT#6hIAy@yyq&oRSP3^>d~~l+@<($D3$>~% z9Ny__X>Uk=Pi2ZUL&4Im2U;pqh1GonmNp;ku5|E_lVp8u$q~wS+IGYwQC|T|fl^b~ z>TY$UX%ttidM!#VP*;woLi;;Pw0=y{mLT5dE_6{_IY`@t;;zWkoi0E~@yDHRgW3Wb z;()|HE~C^Mb~r)T(#OKOu4EOhnhFC(l($5g`XpsdWVX3azk*HEHaG7+QQsGc+~ zmADZ5$|bc}HytJF%Un#RUr}l$+r}zaX~c#6Refo*G$ns@IVc4{2i0^ykQTe{99W7o za$npErEN-wy)}@mgVmNszZ+P}1sZ`_sRahMC0JspM#`H@U@6&6$UjSULuuDCLA|(S z298iy07vaWl`bQ0nxJdrBdo|)TcVc6M;4`x5=&eQvNK59PqF99U8OimEGM|t^U)Qc z6abxaR9~uN@1#<7q0Y!1E=f4tRy?Wb_JAjCvPjN}&g))-CFjY8xx%Ww8%Zf-PWL%o z7D_aoVm)+B#gOj@D~3o&+3Bm53*-hxM>KBf+E_A94VCSK8zgY;eT0J6Y75l5z$`D$ z@~X_?CQ#C+@$tF{DB?n=Wwu-elK1bIP=E$QSg1&v!Mj1LiKO#LV7JD^@%$Xp9S z*U?89xJqq-?ua%O*U@>Df2S3^(akcrUs8(#|)=pMw=3}}|1L|z%J)y`9EL6Q+=0HPbZ8a`4&(U7RdLUg$s zSTZ24O0Z%GxGBQLZqmx#k9u-mu_e~4%Of)>^TlmP+ZH8dNR;5E>mUmibU5P$u7{6i zA4-^caTBO0&cTHRY70MU7R4L7W(P{$FbC1zk@cVM}kd1^T3wB<|vxr6^Ii z=+ThBvOE9~E-LVnWC zSKI@+?gH0GnxkCQQyMF2Cwgr8r`$@O5%DN$>5cTHy8)R}dgIcBI(a@mJy<1DG(@oz-BGYeW6>T(qY`Dl zrCA%J8>4c5YXcIi2c6IpM}}OYM$)8j*{0TlRHj$F8H?+v9J-}BfToIiwielbU<1e; zn9`AOi-p4jd;|>C64kg3h^Z#62t3hLXeUP-ZImgpm;sVfmG*S?9TaHW73V{^G0;>4 zLL41sfS4T?!;x&XID}{IeASy!pbdeeJ;SmXB{8{-J8*9=k;u!Y!qa+c?Jy9y2Z*j~ zNt13IG?Dh`x|`fz>6k3%f`wht3(@NfE!A3Z%H)a>pqQw&!SbP_1rsKN~3g^OcdwIG!^mrkrYPG-d;oo)e2irb`PjwyAu0EvI(3iGYd z*)S7|v$_P3)SuXw*dHBVmV>3+gJg(e5YS$2X+%o%p$$|Eb%u$%h+{u20!*K{>|v+$ z=aZwuoNOB{bZPW7a>@&Fi?I9)EOlxLrqsWtU8P}B5)edH#~85C{`b!4gmDhat)WcK z4KF!ZVWrTyLrW~c30req%|YTumn9@8`f8@4;EaL=YAY#QuI@Xqw4G3BDv9lA>AVL^ zeTeH=9nf9wQG7jO0!ox=VlQYR4neaQtUFla+m_nAhcsW}T0hjfycT7}bxIy_nOOb| zHULd&&Y;;uz@wVrmLkrBx?@kNQapvIXQD*Q#YD(W^0kl);`yDcE_59(HnAAeOX@}J zb#|xnT9nCQu}7s>^?R`7u=w=Oxe6(%QioAt@?;7(NBRm}nvZ}D#vCMNqj1B;m#Zk` zg2m!(*xPVZhTYPiPjci&UmKy$h|eEVb$lPg#-xS~X-8?@S9-mLj2hT&U=!g-S+;gR z=>?dw>@=`LKGFRX?4VEBUj0?7VIQ;VBVcL6HxUxBS7S@IToh&4Wt5!O{s{6bsEPRu zAC$$fagCO?DyooPM}rOR5U`Z&pQ!Ieg_0f8O%RD-31>^Sm8{i_0ZSW!XhUIjr@$(X zP%?>Iyv8v`nk9p7K$N-yNJUl5Ir6N)NRzacfoPovOGjbRgi(cN5h_0MLwg@A?H%L; zC7ohN=N>DaL6r*8LG2Wc$JVOPtHH$`I z?2=X=FFlcdQt=xqunUMSj7{mBkyH^z6?k#e*HsIWhD>Hk(^dO7*wV=}a!1#0s3D-_ zj`%{Qb}`t`2I4g;ut|v4jeXIEB56O{!BSMv&PT>|fVikMm%$EH>?moY^-eHip({>T z)(*8LcqPixabQaewPm6qkfq0SU2m|1WW&^@II+6@V6kAcC@AE%w6d!u8GNQ1Y3zf+ zMj7cUIio#^3c9%{MoKG8lfMv@-l+H_C^u%Pt-!bbj3wP4s4$*t$@`2H!-cu=KN7ozdS5Oz7h8=O5b<4ndf+bJrmMf-&`bV(Xmkk@O+If^p6<*5V zH6aTSIItM06oP4P%xE3c-p z*^YwPD?F1L;*rI2>}T3(MuGjLXZ2;USiy#fX?kX=Q~_WNd6cDBTY$tqYozv0VM=>O zx~ZebsZ`OWdPr3Zy-I~_H8fP$%KB)IGznlzlR(*UG~2;ak{bL#2O9tJ(r!_fWnjao z7dTTIYxNVb;)IHKX57y#Cdgq{Zq@2DVA_{)uhK-73Y)r-!(+f0%+M&Wf{8Ap(`wR3 zI+_(=Izp$6qmCtDX{aV})cEIsgV+k!3+72dD{POK2!v$zh{7c4!c zX{t{*oU!qQA-%n>=>c{iRLEL=h1Gorwuj8tB9r3d{oEPSJ(qM1>@%=^KhfwR)a>V-?>J2tg^}d4wuX7&#t1i;fBNt=*Vm>Y)X9AcuJO+&dk&U6*H}nd@u?O1V1Z`* z0x5~fM(L@+@;unKvWKM;RcWCVTvAm?u8WYn@(ZRnL7$9JgiD{+)qjHZ0L#-`T-p|k zq&%Tvn37$31?)z$+G?@1F3RwDONDq!!7@A&R{P!O8c@aiFSY2n}v&HiEOD$ zNOa<9-aqbI=f2c1P99^Ba&@H4(!Q-kOT8DQ3v5`>>sgNXQA(FBLaX%WlQ}GyVxwJV zI31E#;xco*0ygSDu|Ri|;mZvNL`qZX0QM(XT2tby3|h|>(%{K!ab?haASmYG1E3{t z>JL$%C8xrVVPc(D%BOXD%~73-Qd`BWW*16yr=V_2vrPTCv<2SU(mAb?UzLCkjZh4u zdKy@Yy7&^L<_bz=mF!5jKIDq|H}VZfepyx50|fa;GsOeqK())kwkAtp)PS;GYagP5 zb}*_SC>6SftECJPy{1aKAz9{tRc^mf6%XG+?G2`;0k8q0sbCdYzQP*GCb>{L`&~g& z6vQ|7bW>4srxIBP#PMqOfTa=Ac4~-J30PmHrKQ(eX?)aD@j#sll7=U~s;=9ClJS_t zbWwBbq<4oZ2rDyvEl{8+i4(8ej}rAj{g!&8`wMJyuocJ~(WA&Ft`_U%dxJ2(vo94$ zqdaA_`VvaCJf)8S_~l8-WGcQ2JsG8Ds8hx(rQcbZwGiLUo+BLIf>-T3sI9)0@{N?K zV`WabCPLS((yLVyHc0+kh;Ne?phN>MCuU!{jZ#T`XVtPbO4PFj8B#tlG!|q4NHdV7 z1J;}dOW_A;2*0jkzSI?^jT8nXg03T2>auLerpatMV_oer*@D6<%@AxJsa z0W8f84PWutaT>_pAW6;m=acP%PIxzLVYgvIL@wSje*~?`ID&U7C8LkIO4%LUG;WdJ! zcFvHrOuZoSPvs}`Eg&sX4kA*Ncm$O${#{as9pr}pBuTHMtVfdawVNz^%Q8ZigY>wd z27@7K1ViO=0wnzyOPaiqGH)ztL=$BGzm@ubYCt(KQ#MSJLOUChC_&~)(j}ASVwopN z16wMWKPO?YqH2Y#K#~&@PFB~`jD91tB*cbsr0%|z>o>^tBuRgxEc0ca zBu&hANNTr3<{_n&Fd{?)JE1^^cFBq)sk|GK3>}1|_#BqyF-ZC`mZX1N=1G$NNm-te z`7@?+N)ka0&dL?Wk~}^y^Tv`g=qK=G_%dWg$lH*le^=Hwmc-u&PdDZlkkr1I772~$ zJtY3Ac(CM%2_!Wzlgs5u8$XJqYs>AKdq(~5rb3}G-etaArhxv_WY{>F| zHx-J+|86SM()@paQ*lM^{#Todp#CjQxb#~HhsT$zVVsGOaWzaxzp4?6u7+@Cf>Ti# zhtK!nx4BS=-xh+~wJ=UCWaD>v;U<1p5d5x(ah5_ZertpW_+3#5yb;D(2@COCD?G<< zoe+F8jH@K9#P7<&>ziRh@lA~o{(A^lRml52jH@Pax5Dtocpv<>7PjKIjiA0A#?=ra z@!M9|gWoj;-JLMbPKd|vTEb!cwij&fhH=4Al!ngpAcA-h`8j40b(M{umF*6 z0iuYA$;?R&!ch$(M-5^sDtWV7t@Af}ZE@tBAi%&!6n-wGg>RsfO19uRS# zh)_!qv)MvR5DP3pln{~2f;Aw5G$8UdAO!ZBh+-nbD}tEE@+yK@UlD}H3It<)tU&a( z;xziN&g!f0>!RD*A!qc?l}}2JFMHbI+_rKXgJ*O1iyID1O*|K4x+Bnh+pu{JPIMK{ zjd6@zT|A`mkoCpZ?dF>VUGzL-v~uz4XX%frWA4tND7H4^_x)}I-^E0Pk2v#UlSO90 z#`mW>K2O=ytZSbZ&DLD6c*Dke+sijoeh(|Dw$~*?y$<+Pk1j zlTTcqnR6=5zv|k`>pXV0w%Hoy^V5=-tDlYDH1GYJ1zvBDy02)yXOUB@Ni1K>Su;Bw z!nu^i>k!U39pZbAh~>w*ZX3nITRh@aSNB8rI!uLt51%c}=seLWDG`XGK` zed>egT_3~&A_|$h0SJo*AQBpY_>Ju$VmA?X4M7yK_=X_j8iF`S#C2xl2*TPCM5ZH% zo9q-3Cy8)&0&$CFIDtra0#QW79p=;sgkvKRIgLQvV}(RqA;P~ghzBgYF^Fl6K|Chn zA@gej!nX;CrA)qPHuE14O)LYBvxTZXgoeK)hvph}cbpojZsU7Vi!s&K<-# z5c~%ftKq@*V%8pDGCiQeu~QyUIZ1@GCkPXk;Rzz$6GRaaX3WV8grgUT94{^;)ErA) z`7y2O@hB=hp*xHHGnwl+?AWec^M}_ir{qN2Tp!qKNoL(a_OZ@a&pA8_8W8-V!_{N& z_jOP1wP1VJg{~83|5!e;NkCn8&I_yC-y0pNS++Min&yp;9)k$2VBFDw9~YiZYdql9 z$l7hqEUP{_RCHySZG+R}rs)pM{PumM#fNe|y`C4G9vHj#Jv%$x^ump}+%|_t>DJp6 zMq3}BF?r!c=In!xminM04SV2&j_&*5D%2N*6FVgc@qtb_<13&x$21^I!<_XAOx zy(XfVi1210sP5hsaoZUv$)%V-56y%mTe5TW&rV`Sef%yHMP zz7+y4g%4LB?VG=&s9LoZmyYXh1U*`4?@?<~hDYNGe{|+-rZ~)~T{!3I*L7nGYu4&` z%ya#bu;U3sEC0mo0yyiA&3}B^;kUHo&z}r7w-826AN_lJ#_e%qT!XHieil2!?Cyp~ zcYi7TYg}%fW9m)64mvvb;OXD%*i^UtVd9XwC-SPSB7Q25@1VBXbLcaAMgc z8nK%s8Z*Dv5KUMv31{|zgbNF71JRT%gkTHWV3;LsFm5*%+!jPoTM+qeL3ps&L=+Pd z-VTHp%WDT>eLE1EuR!>)K3{?8{S}AXvJ)TL0AWa$P5M%$W9S)k_hJxAlk5u4j|GyfG8rO9dp8=k2zAB<={xkwP%Gy zTp_~0BZy#@-4VpJjvyWr5yJdJLHLG(SQ-iIvieJ6Ef;d1#AExdG!lE09gl-`E zu{}iWCc>^eh;SC)9YkDr5a);(z-)SeuPsc8Z9TL^$^Z5zR7sf=KTPqKJqX z=F|&>V=oXny+FjWLL#mZ;U5Mfo@IxDn1%;6hDQP%Q<-0H5Wc-ZEbR>HMmjtD)o834k10Eo;1AjY#(M4TkT zc_4_1EMp*u^noCXh?vZrB0)Gtg2;&kF_je(afJx~C=l5!I|{_KC=ic{n8Ey_LHI_4 zSQ-r?hdm(TJ_vox2G2Ez9A9r+YkS&tW5&+2&KG~ZzjW=99|yd(TfF08rO2mO4yCR; zGTS2R>#6rn=#x8qKde`fbJXy|SF0o*dRcQ$pwVibZM>J{UJa`McJ9(f)hzw#HA(Oy2u8F_S%xfxqE{;qN?_HyHk|AB=!&VnHz0Cl*BSSP%z@Sjg0IAS~iQB*cMO z%=Qqmn+Usj5KCEnJczh>5a)=Y3viEthY;v1GR6h!(^5Jg0+ zVNSz9I1U4mGYrH!R!GDZBK#9TnB8rI!PXV!m<)wgFpTbpS6^C;j=&U*%MDO9y zI4~RcJV=bfFE+A`wJyTo}{y7uK?TJ)@E3@ z?SlrM{B?I^=5Cj?ykX0qH0{iMr@EH^o@qwl?pOZa=}Hw7T)d07y-&S7e_Yice&-hd z(aWX#j$Pe)HcB|W>+qV8Wi_^DEgU_;q2;v9<^3L5mz(hQ#T_TTy}NnzdfH}~k$Z>P zsSz0U$q@*H^GJl@D9acLB7G#M={VoDNr%yHIb&+gcw+Hbm)PDqcjLPwPL)Gjta|a| zTbmA>U7zi(*=cgGMdkN3F8b9f=T(b(D@N_f^zj;=M!~G(DD;yv z3jLg5g&??-%q<<_6w4-Yn%yLEhWTYcoMpKr&anq1&a=SL5I?Ym5NyF{7%CYJLl;@_ z7!W~Y;Bc1fokhVFhMn?1fBDW&bJpI@`MTr7hl8q=kGAYTd8*5XClTdlg*Vxhl~H+u zYYW$QKdxQlH*;7Y;YHzY={x1iIgg)*2$J!?= zzArcNWI3&Kly~aEz{7odU&vd$q_B2qNw?ci&07|2-gdV|VcoxLZ!ve&hZXnxeoz}D zvzJ)jSeRWu7Vc{@;r=hIPbP@onIH}jQOMNeKv;|ekuVO#Z)^_{yNR&VgD7J0dJu7X z5a)=v&TO(kSZ9IA%mQ(fog(5S5zga5++rEyL8OldQAETY<}?9>;{*^n6F}T!g+yE- z!ha%&2P}Ich-ni+JSO5H^P2?1cM^!DlR!LX4~V!=MCfD?PuarBAQnspQ9{IX7CZ$+ z&=e5)Q$W06uZbuoB77={zggZ?5bLLc&`bmIiuIWWqW3fq2Z(sh)Y%{`vOy$dgLupK z5V4yGyXhcGSp0MlannJZ1HpgbSdAI<2r&ap<_xHC?9>dXoFu||CI}OjF%v}kOb|sx zm@%gu5RN$@a&kbJvqB=S5aB-y$5=JJ!y*5e&Kt@ymg{r(^Xrnl`ZfH0P~~q&++h=| zjWO+9u>H(8KmXiic+wN6s`b2{Z&{Sz_ig!CjbFvj>^GIE{#>=6Z)^A0NR~MZFKGNV zj$6A+>$KM)uw%=<#hTi_Gj4AEDX8^^U7b%1on3M#ZEjK9*+Ztbv&%m2m-nbRWWt+APj=0Hzjdwo-}}4Fn{SridT;8Zd7V0T ze`4G8Oxuo0Ij{acXA>XVZ(7eM!9UD@xpaTz{jV0CS>X`dwpsTJ=FE9E_L;0}UDAJ9 z(C*UoT5V&RZ0lrMQa69jUt8mT{%cRBHC3Bfw(Ixi_bdJxdnz89^yj-qaqSapJ-ueL z;OO2>ar0eGj&-Tq_39X1=D4Frs_YowsSu`>2>sxc#@xm>m&%W+=Oa13XBljvB zyI1_M&)-!nzu7sf>$KZ7Iy=U8yYt(wK~LvQJD+0T!y)}peC4*b4WFlVvkBklKgwe4 zjJ)ex_tsmbpMCGI+)MMOIG$eAg*}FQ9d8{vvO8+qpxlUSCyJX-_(8v_PT`sIXEX&Z zJ#Q^aI5zJ}u1&3=(d*owM^&2=b#~s=7fFj|TGyL+%>Gh@OQ&0R+*%vCSC!?>#iXpC zi&@eLn5F8hj{u^#0OEkawJERM)@*oT_-~zrx(-$FM`Na}$=95P*#RsLOSW}AUiT($ zEOD1$y~3{CZ@I-LM5=A^X$@PID$AR>E#M{!gW7oRy6_!$mSbI(a&cm_+KV|09906B zaJPiy*mtsst~yz<}XJzq;6RTN1(cYII@AA8Aa1!*N4h>CKK9u|-P{GI6zaIb`CUZ!UB zu?qUDrRIXx#nCYKvqo|F-|PRg2nenY-qq6O|4DzQjkJ8rw@4ix?ZT?m=UrJqecqaT zzN=4tzB+u_JZJGnrE#^5GvxYM=FxyzgfIDrK^q1AlW(}{0bbq_S? z#}^v-NB>WQY9GsmhW~!Ks=3_Q4^;aD5&49hd@42W}!keh2!ZO+SDREa5-|FaQ_`L;_JjG%yH=0R{uH zKpYSc3;~7$^yHENBmzl5GT;cj#ZcEZ;ZtymvvKB|;ynrc;Ray0tE)5Lo~x6HVI~2| zKngG%=nwP+a7R#uu{|z)UH+K~`_+YSroRW5=|f3(fE-{Juo`OFFgXQi0ZatE0D5K^ z4`c!3fJ`6-7!ITYX}}2J9om-w2XRf$gayE1;0SOO$OFCwHgH&l8*z~j&$1N#8nOjNidsc;8UjRIx> zsX!V)n+2_G`Xmp1XwnQY2P^;%hzIi7Iaj`VAbq}W4v-7X1*XD_UceNXnF`>O{;G78 zcLUpj?|>aZd!P-_mN~icb@h2rI|p0xvl3uv>27F{r zsn?-=4iK1=2XEU~p_hVM1~6a&uo^oNZDL0N`XJ!n)SQ|+;MxU}%r*e%Ed_d&g>-NTQ!N1c0Ih*QAON6!m-b`Yr)f(U?;()&fVu$P zb?9#70yLq&NotA#sh zWecDk&=zO|v2F3y-fe`@h6~lpepdZi|hyw-zQNTc;KM((wp;TN?0LaPlKo&qd z5N&XzNBn4jwvsUbIh%t1#ShVv*O>r$I}T6`O~f@dCXk^?z!V?{m57p+l%|^IuzFeYk+TnRlsV1{3jpR1H==z8`uTx1a<&iWT zNaqM}7}y6;mj{3X;1F;S*bjiyi^2RJh2y|6;50x%I|ZBsP5>8y3&1(xEbs$BI_CjJ zCk)q@flI(oKri5D;1=*Z@Eh<8Ky_sASKtawD|KE7Tm?db>%dLm8c+n>0EnlBMRmmA z0F1egC{w-Co(Ay&cn?GXCBR#t7l?J$G{`t58wfC z2e<*;2f6~mz+K=5K%L){ue(E1U3-91?IA!Bc>+8G$o`*zo;o9MUjuIdQhEnacsZn* z89<}Jqr6HDSO6XEuEu7&@HQ0O%k|he|qJ(jk)$m-av{Ks>xb)&}YU)FJKp&r5HJj&Q|1sL z7U&G%(2t4^VRh|a2W)22k3y&9%v2t0d!jY3UCAH5aJ7j0^NYFKsz81 z2mo3F-hc<-3N!_1>;!kZHYzLEo)mOa@G`2T_n@eAQlbu_r1AmCuwsxnrA)@j(PmUn zpiUv1E7x+Fcw;@X?M92P6Q@NHb!NIS0n|v6F_Z9SBV;RN`a>cQ)I~j zYD19{9i;_0(1=E7L@6l_@cv4#i2bqo+>DfHK-H zC@XVHJmKRJDf-kQMNb*6k_Sp>ibJ9u=qXdC3;MC7u=_ z&AV{~h$lM~af&dt8AS6>E0mO#d7(y$fD%?3IfYgUAFUR}FpZSzDBG2Kr6YRAq)up; zAWpHX3{c!*s3H|m98i>$&M6OZcV2yOyEIX<$-YyDD(WKJRoD_ zG~KM)0+gJ}s-e}QP%@sI&^R% z!^APvtpk<-2Y~&+K41@!2doE{1K$9vfQ7&U;A?=KM0>qz9t!h;l>ix90W1R+1B(Fa zgg|v9ml~DHxN+I|T4_T%biEcJXIC4Q*U$~7`c*Xi(#I-`c-F#>S~La)`og z%#$M@^E7I5)R&k0H6e-`K7s~Lp8}`XhijgA*t>tgp$ysVgc!!}TTL58w{)3vd~@23!S- zfGbAVzv8-3F8>DkJ8%QI4&0F}zyshua1XdEUq6O?2s{Fw08asW$Dswq*&&pbuBKF@M1V+g}d@s1s9IG)XRR#a}B{%14B=`RMYBayl`D#ca@>0A8IU7 zbMj|ZcKywVE*WZK)xLpME5l)C|^VE+IrD|UFEEJL(Lo( z+JU$6UJKh*VEc&bN&5y5_yB`~^3B%qds?jbESGTCP;-`NOFHn@HE*CTg=i=lac)_y^(C|{eJ^SKHt=%!l2b~QXwN0dc8&z`j;AY%fX{hmJb|DzF@`c<{)!wPC z?5n&qC`7QXP~ei;P|{Pr(R-Td#<&5xX6XjK1#CGKyp^v27n(n+J0xe(G=l=YDNzId z?~OU=;$`3Kl%eLT340R4Tieoq-ayeg`7+CX?CPF^L4#*?I>L#ntU1L0D0h|bUhC5L z&4J^&XPO&QO8Exjnq!lq`L$oSHPn0|cYWdFmorrPCh;M+-MZbXu{*Llv;-n$PI}A;gZ)g3f;ASV&>N`dmYHnab(rSJ1(63%Uoug5AUl9n|2R{04)d@2Z#C}LYIw)T|9+$zl z+H>(HR(FJ_3oSZT6w_~jUIH7{iO;~tl%IFv>)?~}`Ys@wGw04|jPFDjx04a4`xo1- zPcP4NZZ1C577H!1Gd~_X*2S(+&tWA{$LCqAcYy;zECe=el`mKycfT;G>xq%o#MSIg zt)))9mGABKK60q$Z{}|%hzh=>pnTEpy6nd>4I&-e^Bg>Op*{6lMRvXm5>fe<_u1vI z`e+i;n~H7Suv@4qGmc!6N1%MW`!CHJH5qrdf8)_=!gY*cf@(uKpw;#{zJpPft zK_P*ygaST3ypQyhZ=jERJvPg<)eb~2!d(hqCH9mQly8`ywO4a*(Kjn}Qt)VGPOMHU zUxoQ}=l$>jyp--RT7k`guvNZ=zGA@qKWxWz?=2doc&pM`WIPncW9L9>WMzp~1X zo{pkXcNcHGe9dMj@*e!f8thsReDY#23+%y%a#Az?xh*S5P}nNwqD5KLR{5rSmlj83 z?oaRDOZF3apk}(B@XeYvCV@Zw=*d?zMUZ8qN>_66mL1#F6G`(~d*b~?v|uCq#H#e- zYv5DTO?&YkHI;8k7ye#x-%LAjAbg-)#JE4$vvIv(wR&yb(J}BP#iLFASN567b1ghw z#BsQ=t-au0OLhjrHW+$p=vDh}jqqSkN8}S$q8m+pH}(Nt*+xQvZXW{*Gu|I*Fqb0e z=i*HYX)H7hAsf#Yhr!+~cAyV$!_J5Cp0+jWNcZ76FW0QtYiB}h2r+l@!-<92^+vC5 zP|(7td-aVCM!SujYVbdhb?uGSx`aK3V7q(sHEgFjNXa~~+1ql9m!@I0Ag1Dvs1?dh zVa@ySq5RppY*!d{vd$bGV8>TB^_&zSOHP z?Sw~)B7c~C?JHZJYb2ZZV6C8l&jR%6i*bsXSIyMJOEr@nCjMV@uobiF$H&?RJ4zuA z>$XJo{^^_3a0CIS$?C>(`@v8I+dx7zTZIh>=gru)etZot`d-=!7(wgVcSj_zGQS}< z6lb{tYUqyF_1*Er$SIdAqXs-J=zQkfAI>_nG5s;NFHb}u+uUD_^R51TtZ~<6t|OQ} zoVVc%8nZ>=ygOgqgq?>(M7RhzT!q<2z{XnE8715AuuV|BS9x6Sw0zBLAK6>1iHc+FYuqbX$N;{M*O%{b%9p6W+#K8byAeZ%z_y(4 zE^OrhEQkUOozhtSA$R$}w3{3hXm@dURh@EY&j#=v`Jdfc%YnSLxAI;03p)LgxUJmg zIMI~2FrL5$ogUw19A3C3t=?4{fCtuso2uBI%|u)I?uAS^G!QYa$~2LPT~9V55>W_d zc@TVoJG&N%^*7p6GFH8_%l0$4NRAcIqhK5{d9=D}jkh~R z$3=IxvivBF?4+!)Eq3RwsD#GfiiX4_DD-6SqR`bXXwVAnoPTlD<6msNph3aGXtLPW zXiOibtwS_IAUEJ-`jIa?8;$nGxV6(B*|O2^l^?BtQw!~B_eXx3u@7kPRT&GH&I-T$ zvifM)#)>v_2T=I3_YN#{5R$?hO{=2mn@8^xUv4;j3QgUS`^bP0HXaK2gA9z)hL?Te z?=)u@2I0{93=gW5Om#0$KfH4FSR7msK5@;wZ_Z3(_>NqE)-?w0W7tp#+te14i_PtW zB1X^c5CVO=qhgnuz?R2gb2#6UJ&A$gLOfa1nmXRy)W*7T_$<+|81LIHnZsayaLsM4 zq~k@=%%H}gnv7xXI6;=VR4B931a{|*|I-={XW+&id8i`vxI(*;I9 z<1sBB%&)3*TgmEcjl+(r0V|&ITpO8rCreGW;=a#j-pCY3DF#xyzhSYs4Z+OxY9}T5 z$RFmc?AZC|pF};;cr4qDTXfA)P^bd89%!QL4lf+|PF6tr{??9FOvJL241Vcej#HD= z75>_e4D$bNGwDWM3mty;v>=AJ%$Rn04&`fcwu|u=D(yMJ8(g}K+?I)WDi4OMS;8

ea_v;BU(X(#w)i_)0ZF-Au4xb&=-0z4o>r86OF*9PANG%VdbB-z1`Y4?vJKyM zF{`3Xs`rBpT3VR3Le$Xnw(YhsaH5 zXx+b=KHNo+t8+(fiSC-H-& z1%mrjD0`QL`_%bP%rzN_(;R>8g^hX*J9ivg#U{2jnI9kjKY3dE!ZQ)Z`{hTX9c*z5 z#v?uP@C9AjA1QoW`H6;g8P0p+Pb?=7hlcc=Qj=l7qb=`(SCt-puKs0Sg=^_A?c*0K zvM0kaYtOq$8}+KKAIiTSeOcP%#K{m($R0JFadM%Iyxi%lbq{CX^u#2{d%&aaEIAdA z`Y*dnDcNP*u>DuJZr=zEJUY=nseEbq!EW(K`S(A~k=yzpmDqt)EM)5*QdW%&bGOSG z+lh`bUeXNLW6z<0zgw=5hC7-?FDVlOs$O5v?2rX*4DxOg&T^pO{pE+!FNgVlZ`No8 zP99xY_z3ut(FZS(VW2-R7_jaBh|c%viQi9r6kEn}p}>FNhix2zkUfSXf|9kxWbTx6 zQ{9dm6sxoAWXU{SdY$RWwgtIs9hd!14|Q-CTc17Ctiq`L@aJq0o!H715dByrmBz9$ z5H**haa~y7=+;Sp;>x{oJRY0;+~{fYNI2UvlDFpXhqL~x;D>pH`0=i+m$6RT(O+fa z6iu3*&~#xXWHE@%rrwg6+bD=^7D8ervs!||9ExCBqhRD3jNmMs6?H7Y-0VMwj*SSeLIy_TLwQNy4pw z@?bA&aJtO;F}UAyjq~(}VvPsY+#0}^rDIib>^i){pZH%SyPoVJgl)TlQXFIJ{x%`E z;Z1salMRM5`wS?If&!&?{qDuul)Mik3<{H(^HLaE%WlGJ{_sHd?i)m|a3DKB3G(?s z=DHfas@Y-kzdm~kYj}F;s)y*#{HH?1vGL;|MzGx35K~#oXoyAZ!)n;u8_BYk!Oky{ ztY9?c>qypV4eVL7bIYKGry&N>js;GG2xEa`AcnA;*>HJGl(b6@Og*+{i!LL};4-$X zG1yqFSrMs=-FvVbW3ib@*ZjL^HhL`bbr5sQ#Z%FnY`%t6F9%N^hU~cHvF*EPDTaUj z_4U@^?CF!`{*a7TOb;`XUs6Z^pe%atp*SZ;suCMY0h8QQ0ydHTFb>0z$%=JfM6mlZZ;Dl}RzW_faC19jjOW*G;aFw`VigyXz)rh$!TXCCM9EKm4D4y+ZHL(Uv<5iRsWBec$=-r zFnK!;V@;0W@(n~OWWaXxsknX`~0@*S$|tw3HV z#(C+X*eH``@_r~~n`}eAbI3Nz=BRA33R@{)TFT~(ocHq9D(8i?6P8&wHu&RBabJ@) z#qFpxXJjWNFPZ0DB)5EblxxbmAm?3~DA*QcNIR-mlI=LROC2xJ9n;s34#{N)Rn}CQ z(UdMW*-7K|EARQTKl1h^J7Vm9X~=_Ezj+APm#3ptv#gae4gMi}+pwGSanD0azMGHz zp-eF3dy%r07@I6z=ARDk-xFU+Cu4)kF#cfz%4|n+t}C$?*B$@;IJROf?$~!B7vk({ zu2-pQV+odw&=h1xSXmg3KMhfXSNpQcUpVQlE{F*<)P%6d3vnkO3I#gU4 zJP|1eHF=ukd(LNXQgRf{S;|Vxo!sEFnx8u|Dn~%<|HcQsvPV0`>SqsdWlnC&=}S6x z;eV~6!xjFcmH%gsP||W2cjbT29dXnAcQqV*uzA|p`r*7yuO_`neK3D>%!98Dw+9nu zPp6Ao?0O#V`rnVmi_o1XNT;_)JIhz%LK0MlIhQ9iitVE||1_chJN5s~=~>?C<)Hn0 zTt8mnw*Lp~xa{iu50*7^SVg&1C6a zk$Rr(SDol|rO5Cm>X%;`?~XQfF3B1DN3vORmYt!^mmjmg@ZK->$gD3vfk(>Dwek&O z%j%ZQFm!~c0`aAvPd~(wf;RMgT-&qakqYVuMsG}i<~;!VD}`!M{u+(w@D}`_sKYkD zlHG=m@?{sk+IynslQtXiT6sfsO>I8&<~eJ#fv;ox<=6DZH<}0NGw{lHeOUN%w7wh? zt0~eB)2^!DpTizo78v~b^4sAbg+%`^G5NQUd}iQsNF3lCy#d%f?7g<>rZaduMhTW5 zYAT_|B+z@fQ^?vEcqK=v3PF_?RVhuTKXJHL>1Xlaj2EHsCsoWopZC!JPr~%&{Af2- z@}!{Gt@xj-xwkYp5{4RjPvUlR+w`p01Yqt+pY%C*tz1w-Q$xUn;JA4poR`4 zEw@!He_b^ht4V3wnQ1oTRyPs~woth1KRPyj>Y*{Bf`>O=qRnN2P~f()eh@V;L(dv| zbyL1QIP1dK@1ch`KIrobPo}Xso8g36w)FWKF2k>P#o7mOI8rq1QDcX;)#D!LmvlY) zz);hI6;U4p*sINaXYvitMzpT-M9p1rLsUvea{?z1^2rA7g$iV>YekIgc1nBfXNSCDwd4N!_Tb1#A8tviQ@k z#dj>Q@5q7R56xlccjI9IIk;>OCeWK5KtoE!e~A;8K^HWjnWuQ+z3Wyx(BtQlR$MkJ zxd+8`X+tq(KIf_uCB;>_r_aPwncZ4*rE{$H=Dpg`7IDq~zgDg^rm7VgX-sIfxfsVE5ItEFI(R;|hpE3ek0D2rHQ3nbDieQvTqCWi;!>?OYN6lUc?3ew*wr+G_|F_Ok74AL%q+&IbG#MMW_)kwy67Bl^Xek|vVkdY1tPhFD|Yu2EXYZD zGoc-GnA0?6`Etb&%8YJmKEWnzsMswsInh?NMyCbIUUCXgPPpkI;UVF^eoxhpznC$y zOQI0?0ju0Jg`HR_>dHUKQdC9s+9}MOB#JnNnIkx6;-#Z1gTBJc;H}^@^Uc%iY*x9& z%=EW7Z44QH*r5;-e#qOl*}i{j`ECC$$x*t3PebYf;Of)1-#&J8pnmM$*8e^MHdr@+^P$W17X>IRL+_RHy#aBpb@qqDq5uL3DeOkR= z%tn_jQl4kXq(6Z$r2`j}s~$dVS+M|2sf~|s9`Ps*fMAiw*3djX7%u28z$JbPQbN{WzGNarudCQW)Jd>AO z3sPZZ4YL6GFS>>W1)EXCn+oE_4K#sMCt6}k&dzvT*ebIw1GzsQLzOj9H|dbbyy~5X zTb^7RdtFw?sYBqoJVf2jQ2_8sTQc}Ud&lJ8cxsmC=s%XuAPX zo7eXOZZ>2if~TdE=9p>aWp_RbK8b399g;D>J>mK1jyUAk{z7S6sUqW@2y zWv(#9>;$jR4sZC13niOc=9n0RBKHyr3u_GpHboX-cHj+Pc+2n{h-dWqyWSZowhLti zvTZj)!c_-aKfE(?sy*V_6ujXpE)-8|JY79+c+IGgYxdlc6L-*QYo}LE8t)! zYq|zNutTY6Wm!t#(WHCv1*piB!hQh>SFuR7&p7p;!c<6jdK{mM9yu?@L>dIZoB%_y zV?(XI+y=SbvSD~Cm-pPo8WnNe-GoKaS0?J;2QC!3PZ;o28I_-g@y)2>y@4u){CNoS z=k)Js<`~zP{iS!_U#7|_`)e~BhRGoa8pKO@>RFch;*TzNugT z@1)y#&>bMwl`sbNuS15f{V)xygR5FnE+)pNj*5ckLmgIQVwl$G3QDeHj&II_Mt)xD z_7fMGx%iS}vGVT+`mz}-uuZVcdUq_Q#CoKZ1iQXZQ?^%!aA6}e#xo7ztF@8B0-(sH z%ypW=z6|>*Ph>N*mBJdB2W$C}VjJW@nG=aYhyA*N1$q1MpXA`r=cIUwfAW{OdaWid zDan7WI(eNsjoKQR5C2cwjm&+L8vBATTHyV}-XT8Z*1hd0bN`fUJf7#WZ=3xdl=&4^ zz3OnDtG0Mo70TQT|1rOzZl!VHCl4mjiALrY-Wn!cXYs`f+aJ!mWc94)1?2ot(N=0@ zw3Umvx$XTYd%d?uZ>SjOx4ihCgu+Q zM`jbt*3E8a?t@ThX<;s88zos$?j`m%UQ}OVnX0k6376RuZxqM0vjlo$tmMH#mQ>l! z0=pF*I`}ub$sMfC70*Cd$wq}|gqw8JvK#D!;gYY#Sbxp(3{v?@PCD&yX`&x0|8<_! zDBkPJ=1YP2l&&t2h71mm%h0If16Idr64z0#k-3rWWst0gL`k8jeQuQGWGiZakR=Tu zZGz<8P1%(MDS#J;k)K-X0N!tzRNWs{-(4wPM)8+b(m|VUcx|RM3eu`fDG?8!^->%_ vIqRiJl>ilS9jYwJr`tDkvxE*0f>hS#L1@c30hzu*x Field { storage.counters.at(owner).get_value() } diff --git a/recursive_verification/data.json b/recursive_verification/data.json index e878e2e..faf3b25 100644 --- a/recursive_verification/data.json +++ b/recursive_verification/data.json @@ -1,5 +1,514 @@ { - "proofAsFields": [], + "proofAsFields": [ + "0x0000000000000000000000000000000000000000000000042ab5d6d1986846cf", + "0x00000000000000000000000000000000000000000000000b75c020998797da78", + "0x0000000000000000000000000000000000000000000000005a107acb64952eca", + "0x000000000000000000000000000000000000000000000000000031e97a575e9d", + "0x00000000000000000000000000000000000000000000000b5666547acf8bd5a4", + "0x00000000000000000000000000000000000000000000000c410db10a01750aeb", + "0x00000000000000000000000000000000000000000000000d722669117f9758a4", + "0x000000000000000000000000000000000000000000000000000178cbf4206471", + "0x000000000000000000000000000000000000000000000000e91b8a11e7842c38", + "0x000000000000000000000000000000000000000000000007fd51009034b3357f", + "0x000000000000000000000000000000000000000000000009889939f81e9c7402", + "0x0000000000000000000000000000000000000000000000000000f94656a2ca48", + "0x000000000000000000000000000000000000000000000006fb128b46c1ddb67f", + "0x0000000000000000000000000000000000000000000000093fe27776f50224bd", + "0x000000000000000000000000000000000000000000000004a0c80c0da527a081", + "0x0000000000000000000000000000000000000000000000000001b52c2020d746", + "0x0000000000000000000000000000009cb9e88435c5152e73ac9937c9df6ecdee", + "0x00000000000000000000000000000000001520e9110301d02a21e4e1aaa122f9", + "0x0000000000000000000000000000002e5735b54d4ee2a8f6076d3238b4c13edb", + "0x0000000000000000000000000000000000287b70f1d73255170ce58d225019d4", + "0x00000000000000000000000000000078a993c193e50e1dc715fda850acad48ec", + "0x000000000000000000000000000000000024fb32453a4f55a6bd14dd077f1f77", + "0x000000000000000000000000000000b3d9da48e450766cba03f10bc2b8efe9b6", + "0x000000000000000000000000000000000029191e0ff8b61331f80ea5f49fbade", + "0x0000000000000000000000000000003bec4b24531cbdc4024497e0d1a82f668d", + "0x00000000000000000000000000000000000be2d650e55e6b79c56af23afdd49c", + "0x0000000000000000000000000000000ac427b4c504936bc24733e432906522a7", + "0x0000000000000000000000000000000000146e1029bee9b3a8ffeb4588d41e53", + "0x000000000000000000000000000000306a3e40d91a9ffeb7e1933df6c8fecb52", + "0x00000000000000000000000000000000001bd37ae50a38231e12dafe2c4a6e10", + "0x000000000000000000000000000000ab4910dadfd7ba116d5e63a444059817fc", + "0x000000000000000000000000000000000018f89ee1540e872f639dd8ebe09904", + "0x00000000000000000000000000000027a371850ce2411293083bad809f9cbfd6", + "0x00000000000000000000000000000000001b66e83e5b620f187edfad42d3ce53", + "0x00000000000000000000000000000068abffb5218ebd9167f1028c7cc98c36f8", + "0x0000000000000000000000000000000000017af84203e6d515c040f476858cad", + "0x00000000000000000000000000000032030fc668ff4abde7a9f5f8b30b6a3361", + "0x000000000000000000000000000000000004cf86bbf56d189ee1f17532768e55", + "0x00000000000000000000000000000094ec8893c74a4cc1947c716e3197c778ec", + "0x00000000000000000000000000000000002381d5b1b0470c01d73cb2dcb65978", + "0x0000000000000000000000000000009d73b6b68fa98c11df561640690de54efe", + "0x000000000000000000000000000000000026151d007bd43e4f989f58c16a50b8", + "0x00000000000000000000000000000077c605a5bdf61b42ca4d01756242ba35a7", + "0x0000000000000000000000000000000000216381c727b55d4990d2628bcd61bf", + "0x000000000000000000000000000000b5bf4eaadb9c9f95341c6f73d6991eba00", + "0x000000000000000000000000000000000003c9b24293d796854b05cfe4b1c331", + "0x00000000000000000000000000000023b288f44fbde230522f5307c590435873", + "0x0000000000000000000000000000000000235c1f662f681b706f191217e425c5", + "0x00000000000000000000000000000067f49bd785465aefe9cb995fa44d096904", + "0x00000000000000000000000000000000002e707c9b0a2956b9d12b411a59ec82", + "0x000000000000000000000000000000983a23dea8ab4ce210c283bba634fac835", + "0x000000000000000000000000000000000024feb2eb4eb88b878dbec548b86d5a", + "0x0408e458690bdf63ff53053067dc60fea639074f252a0855fc52d853980e044e", + "0x0c01e85c05359aaf1ff88cf78aae7c540f33ca148ec6de9d895bbf2d8a9b30bd", + "0x22447ad119f60a553a8b2e98fb405d5f53b0a6f6c3c044ddd841cf5dc1b60f3e", + "0x2ad015fc03a98bf7342c037be969cf0c7a74b4a5e1dfb2288f30f21d8bfbe632", + "0x13b0d699a3a70ade1e110c1917981f2dde53726a099371fee74d8d0a347385ef", + "0x021c4522f529affc2ae29ccc79d98d47742736d5ada148f856043ce0717f0745", + "0x26de6af0c172f587d03724e39f111291beaae7743cfe7ad4d01bb02dbf13465c", + "0x0edd7cc2cce87522acc758a50003a811387eb7771a659ae0c24e6c99a0c6365b", + "0x1de0c9a02ed9cfd121f3f4e87a001e0baf6dc63366e6e114cf6011724d248174", + "0x12a6cc7433126ecf2c515a981b7134dbea19e45de013c2ad6fe74ce5d47a263d", + "0x0495d63f40c5d30fe710c0d0654220ca6cd9fb2e9137f5c5f7d9ec318ccd33ad", + "0x2a268b5b9e32c11b16da8d65ec35ad2c5281945d68b0d9d7eea2905e68dd51d0", + "0x0d0de6c342399c21c8b955bc4ddc1c639e7280f722d484fb5a493df07988ee89", + "0x223cbfe7a0905331bd05211270241b225cea8b7c0d898b6c655eb3f6903a1c92", + "0x3020164b5af80ca84c9af2efe2b1c3adabc6b3a433badcce7155fec57d76774c", + "0x0820774ec2e727ae24b22910a6a673b0e66bbd545659977c904b23cb0f1c8826", + "0x258428167cef1ae62feee90084e2d433da86d4938f0062a814e52933cf3c904a", + "0x24db3fc4b8736318548bea4a267172d4b9754e2ddb8f3df959dafeadcbd040da", + "0x281c35c5f2b0f7a1647c19e79fd9549ba5eafb6f0d3cb5588afc1e5b6945b286", + "0x2ec32950a011b9ded9011ddf3af62601776e61cc8aeb3c3e54c8fabef1b4f6fb", + "0x16e2ab7b29e6cb95006cc61e831d0e5edda7ffee6f7b540b90ed394da5cb9f74", + "0x212eb97be283eddece7517dc9b188d8b94ac72e4c21aa415a77ecb54fed43fe0", + "0x0f2c3f5f1616a46bcaf94658e250d0b03dde79fc9e038419b494f6734c2c2190", + "0x088524a29b36c38ef2d392842e07177e08fca665a1e4aab30736b56914aa1c36", + "0x1d9e6be0ef3ed575ed020bce89e211a2f11932961b00b27d150abb45afe83a13", + "0x26c22e776e8065ec7df7ca12b3f0c425754f9ae361655b44eb70a724c3d8912e", + "0x14acd86aacaf5deae2db23d6f099527afc58fc23ef5ed3072fd72bc179b3c21f", + "0x1ad5ed1077f4739e3b25ab259fde944686b255e004778e1a7364edbec5b9ded3", + "0x2a63e827b2f21d8d7b1aa96c1626ec03f6cfdff5332d38eb7f9cddba070d8635", + "0x19688e325b5e7a2e12a99a0f66d97e3e454fc7c658515a53372d69dfec1ae54c", + "0x07b81134a277bfdd5fcb2c415c50caeaed726b7059220aebbeb510af0f9aa57a", + "0x027c9b6b70f75ce8c422fa5de85efc6e72d035cf85f8b893c1944d1ff184d99d", + "0x1632801edfb44f73a2ed05b5739084367d6f432f44103189e2b369a2937634e1", + "0x2ccf3feacbf9b3027b525e1faa0fd77870dd7ad309f6fea784eef9cc30f58472", + "0x0cecf72fb96f49ac462be2dc596300401a1b35818298ec9924b335b052e209ba", + "0x2142dddba378bdd7ef1802ae904fc963fbb757e2422bbbeb51cc00488612a9f0", + "0x12d4160cc9eda0f1f2666f4f2cb965f6be85d14d7788c71f2d591111367166e3", + "0x0b7c7a779ace3423d6f6bb5a105a7528e2750fccf0d567bff834767c663fc41b", + "0x2999a8a62bb01015a3047b79fdc6f6de493b48c3764fabbece91c5cdea62b024", + "0x184a497fd8ccf5799ad0e2de4697a8ceb15e03a468ceaf44db4e22a6bc471ca7", + "0x2493ee60ecc61ac4f03bc68c2c3dce0c5eece1d5c15959c44f4475948a5f655a", + "0x1a3ca823d2e294503a7c2efc2bda6d602373658787d0279146824f58e9aef485", + "0x090303d2111cbedc864c998a3f587503be5c80727b1623a5beaf5c29bf00b82b", + "0x2b2aa9170623cc7f194de87be5458db16c5790bf32352de09ca3b66d1aaca820", + "0x0380c189aecff666ae9dc1d4ae54e5f7856e2ca423c1fc408503289c7855d67d", + "0x28144ab0b8c290ec1a0f53933fb82e8c79ed67b9494341996a8064292d2971ed", + "0x0762e702a7f618e51edfa52834c2ad50aaf88f948b9466954c3320c25dcf2e71", + "0x183ec17a857b6fab963971c0713acce7ebd70c9c74d2920b98de7449d6248386", + "0x1a0c8cfdcffc1b7aa08c096311d7f42dd24f62e6ffee9cd9fc1dcbf21ef542a1", + "0x0478805f251a0fd8bf1a10d8b18f398bdd59d8f7de8deba5bbf5509dc1c9a4c9", + "0x26e59896f1b356f0193e0f4f67b88f03a1c2aa2a6310003b37b058ae4a513f39", + "0x0937fc57ff6f1c734abdb5fa3bd42e235695f3c124c80ff9ca781bcad414e109", + "0x1690c394a15fafc00fdff62d867a5a24ba80a7a8118b189e64604064679973e3", + "0x24c462e77e124fc756cefead66f9729f27557a49a23acece843320b7b95ff73c", + "0x0199abd5777ccbb991d0d458153f31a122d78f966849f27a35c37b2a9cc1fc82", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x20ab5f464922ffd2b1e1ccc6d95d6ef4369cd7bb2d2b90787876264976ab0458", + "0x2cf4d6713bbbd1ce8add48ef77cfca7aa7ef6dac2f56f5be2d194fc58ae8bf3b", + "0x0b27a0fdf4040dc6823597e54ef60c653f1da03a3e0a33184cafbfe8cb8f8c9f", + "0x25fbc183f46abd75f9a4812886c2e57d3658cf85c8712fe2fd684ef79f8e4f39", + "0x0a55ff581c31bfc3e5632a31722ea711d95a5d87b92c4e5580a765b0fb210479", + "0x0d53e113cb0d8146f9db703ee4a075f6fa76d3d6bd78d3b6e728c446f436e62a", + "0x25f2df96e8fb3742a9385deaacc0fe8b1b004deb084cfea1bb34e288273f2a48", + "0x069986bbcd573851ba471592ea7b7abf0b1f8fe37166ae77ae32e18c30d78303", + "0x28c1661f3f10f1d8536d51a5d78335ae25877b74554bc594104e2306c9358d49", + "0x227b1ca77f61558614bb5ccae18aaf35c8d18d6312d31db2b6c83f423f9fbe4a", + "0x15eb7341adafdc2b09f5c01cf3577282533015727a8145164ada3594377f1e3b", + "0x065a4e6ba13eac9ced7c30eb94339ea81499dcd9e5b47b11fe7c5fba001625e2", + "0x300c4bf30a32bc9651592b3920fb555a094543b5351cb44b66e28e009aa4d0b2", + "0x2746f3598d94922fbd55b06fe0250df607f12640686d28ae248dd233dc5bd4de", + "0x08ed65858fd4c5b3c3d32d11acde963f30f0ad5253291f721b8aca25486126cb", + "0x04eee216580a2d63ef3c64728543bcfc3bce41095d3c097eaea1a121e96253ed", + "0x0644f41646889900249f6e2396ad45e61651feafb13789d58e492b7a5254f2cc", + "0x22c99a539a5a2b6fcf74b88aabe5fe792ff4ca8b084f18a4b3041e2f79f5dd96", + "0x294470e5af5de7efabfbfb395fc0444339c98c6a671daf372a7d81199c263f6a", + "0x023c9ae56ecd72d71c0473cd7b3d0e0f0d7810b4c49a5f15c0649c0c1c037409", + "0x1bac840f84f33ea197d26bc5db337884df78ab32acd309b35967375ed94e68be", + "0x0e06dea5431599ff26d041b27515a9fcd86dddc4f7a36b5a9f4b49396ce538cf", + "0x2e36020aa9caf4b8e83c7034d44c497f9f2a3409c2f8547fd460a9b0cd73b079", + "0x1994267db8460fc7962939b3d1415813166c047bd9d8831e3f9c9971d8413c93", + "0x2f1e523460dffa0a6cd3b60728b63fdec12ac4ce87d4ca48f5e727ffc2ccbb1a", + "0x21c675598ffdbb8d060176829e4280d43beaf5efc500dd1f8c8666c1b890ab92", + "0x1df3405dff0c82b574bc3bf4a702edb5ef80e9d0d67690c129c1fb1a457afeff", + "0x2ce37a192a85bba5341fd198c36d31e64b9aee6a85e8517f1713a8fc4f7fc715", + "0x2b0414c5cfd1b20ecc3942a3ad4eda5408f17579300d778fb9965f2a0f5f1800", + "0x22fac7fceaabd8c78730b7da478c0ffa7e6ff8bb0dc0925af4acb347b98fb3bb", + "0x0e8038c20509b0aa832fdac7df1925b80aac62adfb9632e9d349730ffd334153", + "0x03a2c761aa3f358f5b8d6a566a653d0060edc40dfe7951b38ea0a0137df0735d", + "0x116ca570db76bd18cbd7dc2adbe1ce659c7778ff7f49110caf6b6a04065b539d", + "0x1ecff123e5150dd779acb24a5c93e9b325ed03cc2ff615871605cccd80e418c0", + "0x0a05cb8b4542052bdbe141e0e4e48f89cf4849d8ae4c8895b0138196eea3fd4c", + "0x0dcbe34bdbd3d5274199f9a5fbaed31244eae6f4efd6b385b0c2a45b2e57e7a4", + "0x19a2b7b3d73009acb7254747d045bdd54aa6d5cb82ce7d865ed388561b91abd0", + "0x048884546f25bed63a888600ba28b86f190463fca22f2b5068e7f2543959ef34", + "0x0e8c75b299c99d47a1ee9cf88d66d2ba765e9a9cecf10af89c1946dd35899f03", + "0x233c5cd7b8b283b4f41dc8de3cc92224839a95379c5b3c1728c78fb3467eec7d", + "0x2b3d5f5c8dcbb59a84c1430b5e5a7af318a796ce2c6e6b3cb485de062ef319dc", + "0x08e4658d0be1c72b76638414e3fae2a40d82da087b0d34db42429cbffbdd4cd1", + "0x0000000000000000000000000000002ae6522894067fa50f64152d4a52cfa8ab", + "0x0000000000000000000000000000000000030ef6f6463756d70ee7420912e16e", + "0x00000000000000000000000000000091fe055a9b9eabf0b598852099269880d3", + "0x00000000000000000000000000000000002ba138f8beb9ce5bf4690082be90b2", + "0x0000000000000000000000000000004f37ba311b91da6039a3845554906cfb68", + "0x00000000000000000000000000000000000a555a0762a2bc5b37fb3785ed63f3", + "0x00000000000000000000000000000097769c35728dc89155ce81ae4acf942742", + "0x00000000000000000000000000000000002d2519bdb6364f12f34aacbe6071b3", + "0x0000000000000000000000000000002ef919f463010d3b7eeb503432ae1d81e2", + "0x0000000000000000000000000000000000266667b04b3e6277c2e5bccdfb4678", + "0x0000000000000000000000000000001032d42c19de94ebaa182256d12ae7be4a", + "0x00000000000000000000000000000000000706474e8360a1ff39de2e599ff9e0", + "0x2da61f42e62a644bb581e860069b462a32c17a54879eb45d5bb08418a1611903", + "0x00000000000000000000000000000076e447249d72ee38b14cb20a2c1a62a275", + "0x000000000000000000000000000000000001ebb94ad5fdaff8b319729a2a3c1c", + "0x00000000000000000000000000000074bc027cb3cfd7e7155c0e6bb571264f38", + "0x00000000000000000000000000000000000d2e402596fd49bff4e951ca59b570", + "0x000000000000000000000000000000f8d36e66725939cf4d7ee4c9838c5180dd", + "0x00000000000000000000000000000000000ea9d66502c39ed96f75c1ed3c97ee", + "0x0000000000000000000000000000006cbbb91e70188ada136f94106fb59fb89a", + "0x0000000000000000000000000000000000293bafd1905687a49241d2fa7dbfee", + "0x000000000000000000000000000000dd5f454774af5490b055ec5b81704407f5", + "0x00000000000000000000000000000000000512414d7747efc63b28dd023e3976", + "0x000000000000000000000000000000b3eb94aa08265959b467365d815cde4204", + "0x000000000000000000000000000000000003dd21a5e3e24cdbfa1376c4e59b69", + "0x00000000000000000000000000000050b392ddc75f607e74b9ad111646b662fd", + "0x0000000000000000000000000000000000243d6ea9816c96e4084821957e3cae", + "0x0000000000000000000000000000002035f7ed8239e8ee5e62242333c44e13db", + "0x00000000000000000000000000000000002113704f0be342eae2b7e9b92ea0a2", + "0x0000000000000000000000000000005f483fe555ab51babd9fcdcdda0f4b8bf6", + "0x000000000000000000000000000000000008bb2c0effce262bc5531362b7f1b8", + "0x0000000000000000000000000000008122c9d786e9938ea3bfc5407d1d69a238", + "0x00000000000000000000000000000000000484b0ae62ffdf61f5132bbf2e5e47", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x25c3e985f209c703a752788ddb98ccba923ee4d93faea9a3202e4a6ad900455a", + "0x05fe006c4ef80c602218ec432109de534468797d2a476257ecfa8067a19ca76c", + "0x0b25e96f9887fa252380eb742d87d3266d0b6cc40296a3114616337411379d0d", + "0x044b969f45211ac98a22051d821d112ba255724a67cf2a409a0e7ec2674d4a4a", + "0x1f4b116ede769d66acc7dcc460986e3a42f15451e99788fe815228151f9f3111", + "0x18150d4673702fa0e8002b60a8cc193ca524b4a7115adfa63e38132cf816d810", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x2f5dd84b1e60b112208d1a9434f266bd7882024c2899f0ba275ba30a4a94e443", + "0x155c00fef841d994bce0faea295c8bcf15ba3e034dc47479574f16488f30e3b7", + "0x185b6ca9834aea18ef12bbc161deca039d938933e7cbe91400f348609d71c124", + "0x13c7476e1678380db73bc6f26342bff8678039becd5c8ae5d1dbb50a5b8b72c4", + "0x0000000000000000000000000000005313c0c9d8b7d01e9cb4dba68cb5a731dc", + "0x0000000000000000000000000000000000079aface4d2403026bde4d7a8115ff", + "0x0000000000000000000000000000003a0c51d363e052614b9f275912673a61de", + "0x000000000000000000000000000000000013064bd9b67b71253de09bb47ca079", + "0x000000000000000000000000000000fd3d37045895604f10e5c76193b2a96836", + "0x00000000000000000000000000000000000453db771812a4777061dc38e0d3ed", + "0x0000000000000000000000000000009d39dd2e86c4bbd729cf381de2e6114dd2", + "0x00000000000000000000000000000000001a35c791071693ea92dd7e91585321" + ], "vkAsFields": [ "0x0000000000000000000000000000000000000000000000000000000000000006", "0x0000000000000000000000000000000000000000000000000000000000000011", diff --git a/recursive_verification/package.json b/recursive_verification/package.json index 79400c8..d4e6c88 100644 --- a/recursive_verification/package.json +++ b/recursive_verification/package.json @@ -6,6 +6,8 @@ "clean": "rm -rf store", "cli": "bun run cli.ts", "ccc": "cd contract && aztec-nargo compile && aztec-postprocess-contract && aztec codegen target -o artifacts", + "bb-download-debug": "curl -L https://github.com/AztecProtocol/aztec-packages/releases/download/v3.0.0-nightly.20251026/barretenberg-threads-debug-wasm.tar.gz -o barretenberg-debug.wasm.gz && tar -xzvf barretenberg-debug.wasm.gz", + "recursion:debug": "bun run bb-download-debug && BB_WASM_PATH=\"$(pwd)/barretenberg-debug.wasm\" LOG_LEVEL=verbose bun run recursion", "data": "bun run scripts/generate_data.ts", "recursion": "tsx scripts/run_recursion.ts", "test": "bun clean && bun test", @@ -18,14 +20,14 @@ "typescript": "^5.0.0" }, "dependencies": { - "@aztec/accounts": "3.0.0-nightly.20251024", - "@aztec/aztec.js": "3.0.0-nightly.20251024", - "@aztec/bb.js": "3.0.0-nightly.20251024", - "@aztec/kv-store": "3.0.0-nightly.20251024", - "@aztec/noir-contracts.js": "3.0.0-nightly.20251024", - "@aztec/noir-noir_js": "3.0.0-nightly.20251024", - "@aztec/pxe": "3.0.0-nightly.20251024", - "@aztec/test-wallet": "3.0.0-nightly.20251024", + "@aztec/accounts": "3.0.0-nightly.20251026", + "@aztec/aztec.js": "3.0.0-nightly.20251026", + "@aztec/bb.js": "3.0.0-nightly.20251026", + "@aztec/kv-store": "3.0.0-nightly.20251026", + "@aztec/noir-contracts.js": "3.0.0-nightly.20251026", + "@aztec/noir-noir_js": "3.0.0-nightly.20251026", + "@aztec/pxe": "3.0.0-nightly.20251026", + "@aztec/test-wallet": "3.0.0-nightly.20251026", "add": "^2.0.6", "tsx": "^4.20.6" } diff --git a/recursive_verification/scripts/generate_data.ts b/recursive_verification/scripts/generate_data.ts index 88dec49..6ef1858 100644 --- a/recursive_verification/scripts/generate_data.ts +++ b/recursive_verification/scripts/generate_data.ts @@ -20,7 +20,7 @@ const proofAsFields = deflattenFields(mainProofData.proof) const barretenbergAPI = await Barretenberg.new({ threads: 1 }); // write recursive proof artifacts and public inputs to file, add pu -fs.writeFileSync('data.json', JSON.stringify({ ...recursiveProofArtifacts, publicInputs: mainProofData.publicInputs }, null, 2)) +fs.writeFileSync('data.json', JSON.stringify({ ...recursiveProofArtifacts, proofAsFields, publicInputs: mainProofData.publicInputs }, null, 2)) await barretenbergAPI.destroy() console.log("Done") exit() diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index 8da1093..380aa2c 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -1,55 +1,86 @@ -import { Contract } from "@aztec/aztec.js/contracts" -import { createAztecNodeClient } from "@aztec/aztec.js/node" -import { SponsoredFeePaymentMethod } from "@aztec/aztec.js/fee" -import type { FieldLike } from "@aztec/aztec.js/abi" +import { createAztecNodeClient } from "@aztec/aztec.js/node"; +import { SponsoredFeePaymentMethod } from "@aztec/aztec.js/fee"; +import type { FieldLike } from "@aztec/aztec.js/abi"; import { getSponsoredFPCInstance } from "./sponsored_fpc.js"; import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC"; -export const PXE_URL = 'http://localhost:8080' -import { ValueNotEqualContract, ValueNotEqualContractArtifact } from '../contract/artifacts/ValueNotEqual' -import data from '../data.json' -import { getPXEConfig } from "@aztec/pxe/config" -import { TestWallet } from '@aztec/test-wallet/server'; -import { AztecAddress } from "@aztec/aztec.js/addresses" +export const PXE_URL = "http://localhost:8080"; +import { ValueNotEqualContract } from "../contract/artifacts/ValueNotEqual"; +import data from "../data.json"; +import { getPXEConfig } from "@aztec/pxe/config"; +import { TestWallet } from "@aztec/test-wallet/server"; +import { AztecAddress } from "@aztec/aztec.js/addresses"; +import { rm } from "node:fs/promises"; const sponsoredFPC = await getSponsoredFPCInstance(); -const sponsoredPaymentMethod = new SponsoredFeePaymentMethod(sponsoredFPC.address); +const sponsoredPaymentMethod = new SponsoredFeePaymentMethod( + sponsoredFPC.address +); export const setupSandbox = async (): Promise => { - try { - const nodeUrl = 'http://localhost:8080'; + const nodeUrl = "http://localhost:8080"; const aztecNode = await createAztecNodeClient(nodeUrl); const config = getPXEConfig(); - config.dataDirectory = 'pxe'; + await rm("pxe", { recursive: true, force: true }); + config.dataDirectory = "pxe"; config.proverEnabled = true; let wallet = await TestWallet.create(aztecNode, config); - await wallet.registerContract({ instance: sponsoredFPC, artifact: SponsoredFPCContract.artifact }); + await wallet.registerContract({ + instance: sponsoredFPC, + artifact: SponsoredFPCContract.artifact, + }); return wallet; } catch (error) { - console.error('Failed to setup sandbox:', error) - throw error + console.error("Failed to setup sandbox:", error); + throw error; } -} - +}; async function main() { const testWallet = await setupSandbox(); const account = await testWallet.createAccount(); const manager = await account.getDeployMethod(); - await manager.send({ from: AztecAddress.ZERO, fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() + await manager + .send({ + from: AztecAddress.ZERO, + fee: { paymentMethod: sponsoredPaymentMethod }, + }) + .deployed(); const accounts = await testWallet.getAccounts(); - const valueNotEqual = await ValueNotEqualContract.deploy(testWallet, 10, accounts[0].item).send({ from: accounts[0].item, fee: { paymentMethod: sponsoredPaymentMethod } }).deployed() + const valueNotEqual = await ValueNotEqualContract.deploy( + testWallet, + 10, + accounts[0].item + ) + .send({ + from: accounts[0].item, + fee: { paymentMethod: sponsoredPaymentMethod }, + }) + .deployed(); - const tx = await valueNotEqual.methods.increment(accounts[0].item, data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], data.publicInputs as unknown as FieldLike[]).send({ from: accounts[0].item, fee: { paymentMethod: sponsoredPaymentMethod } }).wait() + const tx = await valueNotEqual.methods + .increment( + accounts[0].item, + data.vkAsFields as unknown as FieldLike[], + data.proofAsFields as unknown as FieldLike[], + data.publicInputs as unknown as FieldLike[] + ) + .send({ + from: accounts[0].item, + fee: { paymentMethod: sponsoredPaymentMethod }, + }) + .wait(); - console.log(`Tx hash: ${tx.txHash.toString()}`) - const counterValue = await valueNotEqual.methods.get_counter(accounts[0].item).simulate({ from: accounts[0].item }) - console.log(`Counter value: ${counterValue}`) + console.log(`Tx hash: ${tx.txHash.toString()}`); + const counterValue = await valueNotEqual.methods + .get_counter(accounts[0].item) + .simulate({ from: accounts[0].item }); + console.log(`Counter value: ${counterValue}`); } -main().catch(error => { - console.error(error) - process.exit(1) -}) +main().catch((error) => { + console.error(error); + process.exit(1); +}); From 88838611cbe8f6b83715a9e5afd312d69ebdf1ef Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Tue, 28 Oct 2025 11:18:36 -0400 Subject: [PATCH 16/22] update versions in docs --- CLAUDE.md | 24 ++++++++++++++++++++---- README.md | 4 ++-- recursive_verification/CLAUDE.md | 2 +- recursive_verification/README.md | 8 ++++---- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 7b9fd64..2930e07 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -46,18 +46,20 @@ aztec-examples/ ## Development Commands ### Prerequisites + ```bash # Install Aztec tools (required) bash -i <(curl -s https://install.aztec.network) # Set specific version (examples may require different versions) -aztec-up 2.0.3 # For recursive_verification +aztec-up 3.0.0-nightly.20251026 # For recursive_verification aztec-up 2.0.2 # For starter-token ``` ### Building Contracts From a contract directory containing `Nargo.toml`: + ```bash # Compile an Aztec contract aztec-nargo compile @@ -180,12 +182,14 @@ npm start ### Aztec Contract Structure Aztec contracts use the `#[aztec]` macro and define functions as either: + - `#[private]`: Executed client-side with zero-knowledge proofs - `#[public]`: Executed on-chain by the protocol - `#[initializer]`: Constructor-like functions for setup - `#[unconstrained]`: View functions that don't modify state Key considerations: + - **Private functions**: Optimize for circuit size (gates), unconstrained functions don't add gates - **Public functions**: Optimize for gas cost, unconstrained functions do add cost - **Unconstrained functions**: Used for computation that doesn't need proving, must verify results in constrained context @@ -193,6 +197,7 @@ Key considerations: ### Proof Verification Pattern (recursive_verification) The recursive verification example demonstrates: + - **Off-chain proof generation**: Noir circuits compiled and executed with Barretenberg - **On-chain verification**: Using `std::verify_proof_with_type` in Aztec contracts - **UltraHonk proving system**: Generates proofs with 457 field elements, verification keys with 115 fields @@ -201,6 +206,7 @@ The recursive verification example demonstrates: ### Token Pattern (starter-token) The token example showcases: + - **Dual balance system**: Public and private token balances - **State management**: Using `PublicMutable` and `Map` for storage - **Access control**: Owner-based permissions for minting @@ -209,6 +215,7 @@ The token example showcases: ### Testing Pattern Tests use the Testing Execution Environment (TXE): + ```noir use dep::aztec::test::helpers::test_environment::TestEnvironment; @@ -229,6 +236,7 @@ unconstrained fn test_function() { ### Aztec Contract Dependencies Aztec contracts specify dependencies in `Nargo.toml`: + ```toml [dependencies] aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "vX.X.X", directory = "noir-projects/aztec-nr/aztec" } @@ -236,12 +244,13 @@ easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", ``` **Version Compatibility**: Different examples may use different Aztec versions: -- `recursive_verification`: v2.0.3 -- `starter-token`: v2.0.2 + +- `recursive_verification`: v3.0.0-nightly.20251026 ### JavaScript/TypeScript Dependencies TypeScript projects use: + - `@aztec/aztec.js`: Aztec SDK for contract deployment and interaction - `@aztec/accounts`: Account management for Aztec - `@aztec/bb.js`: Barretenberg backend for proof generation (recursive_verification) @@ -261,11 +270,13 @@ The repository includes GitHub Actions workflows for automated testing: ### recursive-verification-tests.yml Runs on: + - Push to main branch - Pull requests modifying `recursive_verification/**` - Manual workflow dispatch Steps: + 1. Sets up Node.js (v22) and Bun 2. Installs Aztec CLI 3. Starts Aztec sandbox @@ -277,18 +288,23 @@ Steps: ## Common Issues and Solutions ### Issue: "Cannot find module './contract/artifacts/'" + **Solution**: Run `bun ccc` or `aztec-nargo compile` to generate contract artifacts ### Issue: "Failed to connect to PXE" + **Solution**: Ensure Aztec sandbox is running with `aztec start --sandbox` ### Issue: "Proof verification failed" + **Solution**: Regenerate proof data after circuit changes with `bun data` ### Issue: Memory issues during proof generation + **Solution**: Close other applications or use a machine with more RAM (8GB+ recommended) ### Issue: Version compatibility errors + **Solution**: Check the Aztec version required for each example and set with `aztec-up ` ## Best Practices @@ -297,4 +313,4 @@ Steps: 2. **Testing**: Run tests locally before pushing changes 3. **Documentation**: Update READMEs when modifying examples 4. **Clean Builds**: When encountering issues, try removing `target/`, `artifacts/`, and `node_modules/` directories -5. **Sandbox Management**: Always ensure sandbox is running when deploying/testing contracts \ No newline at end of file +5. **Sandbox Management**: Always ensure sandbox is running when deploying/testing contracts diff --git a/README.md b/README.md index 3fbcaad..3ece0d8 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ You can find additional examples in the Aztec monorepo [docs examples folder](ht ### 1. [Recursive Verification](./recursive_verification) -**Aztec Version**: 2.0.3 +**Aztec Version**: 3.0.0-nightly.20251026 Demonstrates how to verify Noir circuit proofs within Aztec smart contracts using the UltraHonk proving system. This example showcases: @@ -43,7 +43,7 @@ Demonstrates how to verify Noir circuit proofs within Aztec smart contracts usin bash -i <(curl -s https://install.aztec.network) # Set specific Aztec version (if needed) -aztec-up 2.0.3 +aztec-up 3.0.0-nightly.20251026 ``` ### Run the Examples diff --git a/recursive_verification/CLAUDE.md b/recursive_verification/CLAUDE.md index 512f2c5..ab26fd9 100644 --- a/recursive_verification/CLAUDE.md +++ b/recursive_verification/CLAUDE.md @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -This is an Aztec-Noir project that demonstrates proof verification in Aztec contracts. It uses Aztec version 2.0.3 to verify Noir proofs within smart contracts on the Aztec network. +This is an Aztec-Noir project that demonstrates proof verification in Aztec contracts. It uses Aztec version 3.0.0-nightly.20251026 to verify Noir proofs within smart contracts on the Aztec network. The project consists of: - A Noir circuit (`hello_circuit`) that proves x ≠ y diff --git a/recursive_verification/README.md b/recursive_verification/README.md index f092ac5..5432638 100644 --- a/recursive_verification/README.md +++ b/recursive_verification/README.md @@ -11,12 +11,12 @@ This project implements: - **Proof Generation**: Scripts to generate UltraHonk proofs using Barretenberg - **On-chain Verification**: Deployment and interaction scripts for proof verification on Aztec -**Aztec Version**: `2.0.3` +**Aztec Version**: `3.0.0-nightly.20251026` ## Prerequisites - [Bun](https://bun.sh/) runtime (v1.0 or higher) -- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) (version 2.0.3) +- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) (version 3.0.0-nightly.20251026) - Linux/macOS (Windows users can use WSL2) - 8GB+ RAM recommended for proof generation @@ -61,7 +61,7 @@ bash -i <(curl -s https://install.aztec.network) ### Set Aztec to the correct version: ```bash -aztec-up 2.0.3 +aztec-up 3.0.0-nightly.20251026 ``` This ensures compatibility with the contract dependencies. @@ -153,7 +153,7 @@ For a fresh setup, run these commands in order: bun install # 2. Setup Aztec -aztec-up 2.0.3 +aztec-up 3.0.0-nightly.20251026 # 3. Compile circuit cd circuit && aztec-nargo compile && cd .. From 8371ce184cedb168853ecee05ffde5207fd2f73c Mon Sep 17 00:00:00 2001 From: thunkar Date: Wed, 5 Nov 2025 15:05:09 +0100 Subject: [PATCH 17/22] wip --- .../recursive-verification-tests.yml | 2 +- .gitignore | 3 +- recursive_verification/contract/Nargo.toml | 6 +- recursive_verification/data.json | 368 +- recursive_verification/package.json | 21 +- .../scripts/run_recursion.ts | 73 +- recursive_verification/yarn.lock | 4230 +++++++++++++++++ 7 files changed, 4485 insertions(+), 218 deletions(-) create mode 100644 recursive_verification/yarn.lock diff --git a/.github/workflows/recursive-verification-tests.yml b/.github/workflows/recursive-verification-tests.yml index 25a76ae..f2497f4 100644 --- a/.github/workflows/recursive-verification-tests.yml +++ b/.github/workflows/recursive-verification-tests.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest env: AZTEC_ENV: sandbox - AZTEC_VERSION: 3.0.0-nightly.20251026 + AZTEC_VERSION: 3.0.0-devnet.2 steps: - name: Checkout repository diff --git a/.gitignore b/.gitignore index 6ec4261..e47eed6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ target -.DS_Store \ No newline at end of file +.DS_Store +ivc \ No newline at end of file diff --git a/recursive_verification/contract/Nargo.toml b/recursive_verification/contract/Nargo.toml index cda516f..e5153f6 100644 --- a/recursive_verification/contract/Nargo.toml +++ b/recursive_verification/contract/Nargo.toml @@ -4,6 +4,6 @@ type = "contract" authors = ["Satyam Bansal"] [dependencies] -aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v3.0.0-nightly.20251026", directory = "noir-projects/aztec-nr/aztec" } -value_note = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v3.0.0-nightly.20251026", directory = "noir-projects/aztec-nr/value-note" } -easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v3.0.0-nightly.20251026", directory = "noir-projects/aztec-nr/easy-private-state" } +aztec = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v3.0.0-devnet.2", directory = "noir-projects/aztec-nr/aztec" } +value_note = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v3.0.0-devnet.2", directory = "noir-projects/aztec-nr/value-note" } +easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", tag = "v3.0.0-devnet.2", directory = "noir-projects/aztec-nr/easy-private-state" } diff --git a/recursive_verification/data.json b/recursive_verification/data.json index faf3b25..0dd9252 100644 --- a/recursive_verification/data.json +++ b/recursive_verification/data.json @@ -16,97 +16,97 @@ "0x0000000000000000000000000000000000000000000000093fe27776f50224bd", "0x000000000000000000000000000000000000000000000004a0c80c0da527a081", "0x0000000000000000000000000000000000000000000000000001b52c2020d746", - "0x0000000000000000000000000000009cb9e88435c5152e73ac9937c9df6ecdee", - "0x00000000000000000000000000000000001520e9110301d02a21e4e1aaa122f9", - "0x0000000000000000000000000000002e5735b54d4ee2a8f6076d3238b4c13edb", - "0x0000000000000000000000000000000000287b70f1d73255170ce58d225019d4", - "0x00000000000000000000000000000078a993c193e50e1dc715fda850acad48ec", - "0x000000000000000000000000000000000024fb32453a4f55a6bd14dd077f1f77", - "0x000000000000000000000000000000b3d9da48e450766cba03f10bc2b8efe9b6", - "0x000000000000000000000000000000000029191e0ff8b61331f80ea5f49fbade", - "0x0000000000000000000000000000003bec4b24531cbdc4024497e0d1a82f668d", - "0x00000000000000000000000000000000000be2d650e55e6b79c56af23afdd49c", - "0x0000000000000000000000000000000ac427b4c504936bc24733e432906522a7", - "0x0000000000000000000000000000000000146e1029bee9b3a8ffeb4588d41e53", - "0x000000000000000000000000000000306a3e40d91a9ffeb7e1933df6c8fecb52", - "0x00000000000000000000000000000000001bd37ae50a38231e12dafe2c4a6e10", - "0x000000000000000000000000000000ab4910dadfd7ba116d5e63a444059817fc", - "0x000000000000000000000000000000000018f89ee1540e872f639dd8ebe09904", - "0x00000000000000000000000000000027a371850ce2411293083bad809f9cbfd6", - "0x00000000000000000000000000000000001b66e83e5b620f187edfad42d3ce53", - "0x00000000000000000000000000000068abffb5218ebd9167f1028c7cc98c36f8", - "0x0000000000000000000000000000000000017af84203e6d515c040f476858cad", - "0x00000000000000000000000000000032030fc668ff4abde7a9f5f8b30b6a3361", - "0x000000000000000000000000000000000004cf86bbf56d189ee1f17532768e55", - "0x00000000000000000000000000000094ec8893c74a4cc1947c716e3197c778ec", - "0x00000000000000000000000000000000002381d5b1b0470c01d73cb2dcb65978", - "0x0000000000000000000000000000009d73b6b68fa98c11df561640690de54efe", - "0x000000000000000000000000000000000026151d007bd43e4f989f58c16a50b8", - "0x00000000000000000000000000000077c605a5bdf61b42ca4d01756242ba35a7", - "0x0000000000000000000000000000000000216381c727b55d4990d2628bcd61bf", - "0x000000000000000000000000000000b5bf4eaadb9c9f95341c6f73d6991eba00", - "0x000000000000000000000000000000000003c9b24293d796854b05cfe4b1c331", - "0x00000000000000000000000000000023b288f44fbde230522f5307c590435873", - "0x0000000000000000000000000000000000235c1f662f681b706f191217e425c5", - "0x00000000000000000000000000000067f49bd785465aefe9cb995fa44d096904", - "0x00000000000000000000000000000000002e707c9b0a2956b9d12b411a59ec82", - "0x000000000000000000000000000000983a23dea8ab4ce210c283bba634fac835", - "0x000000000000000000000000000000000024feb2eb4eb88b878dbec548b86d5a", - "0x0408e458690bdf63ff53053067dc60fea639074f252a0855fc52d853980e044e", - "0x0c01e85c05359aaf1ff88cf78aae7c540f33ca148ec6de9d895bbf2d8a9b30bd", - "0x22447ad119f60a553a8b2e98fb405d5f53b0a6f6c3c044ddd841cf5dc1b60f3e", - "0x2ad015fc03a98bf7342c037be969cf0c7a74b4a5e1dfb2288f30f21d8bfbe632", - "0x13b0d699a3a70ade1e110c1917981f2dde53726a099371fee74d8d0a347385ef", - "0x021c4522f529affc2ae29ccc79d98d47742736d5ada148f856043ce0717f0745", - "0x26de6af0c172f587d03724e39f111291beaae7743cfe7ad4d01bb02dbf13465c", - "0x0edd7cc2cce87522acc758a50003a811387eb7771a659ae0c24e6c99a0c6365b", - "0x1de0c9a02ed9cfd121f3f4e87a001e0baf6dc63366e6e114cf6011724d248174", - "0x12a6cc7433126ecf2c515a981b7134dbea19e45de013c2ad6fe74ce5d47a263d", - "0x0495d63f40c5d30fe710c0d0654220ca6cd9fb2e9137f5c5f7d9ec318ccd33ad", - "0x2a268b5b9e32c11b16da8d65ec35ad2c5281945d68b0d9d7eea2905e68dd51d0", - "0x0d0de6c342399c21c8b955bc4ddc1c639e7280f722d484fb5a493df07988ee89", - "0x223cbfe7a0905331bd05211270241b225cea8b7c0d898b6c655eb3f6903a1c92", - "0x3020164b5af80ca84c9af2efe2b1c3adabc6b3a433badcce7155fec57d76774c", - "0x0820774ec2e727ae24b22910a6a673b0e66bbd545659977c904b23cb0f1c8826", - "0x258428167cef1ae62feee90084e2d433da86d4938f0062a814e52933cf3c904a", - "0x24db3fc4b8736318548bea4a267172d4b9754e2ddb8f3df959dafeadcbd040da", - "0x281c35c5f2b0f7a1647c19e79fd9549ba5eafb6f0d3cb5588afc1e5b6945b286", - "0x2ec32950a011b9ded9011ddf3af62601776e61cc8aeb3c3e54c8fabef1b4f6fb", - "0x16e2ab7b29e6cb95006cc61e831d0e5edda7ffee6f7b540b90ed394da5cb9f74", - "0x212eb97be283eddece7517dc9b188d8b94ac72e4c21aa415a77ecb54fed43fe0", - "0x0f2c3f5f1616a46bcaf94658e250d0b03dde79fc9e038419b494f6734c2c2190", - "0x088524a29b36c38ef2d392842e07177e08fca665a1e4aab30736b56914aa1c36", - "0x1d9e6be0ef3ed575ed020bce89e211a2f11932961b00b27d150abb45afe83a13", - "0x26c22e776e8065ec7df7ca12b3f0c425754f9ae361655b44eb70a724c3d8912e", - "0x14acd86aacaf5deae2db23d6f099527afc58fc23ef5ed3072fd72bc179b3c21f", - "0x1ad5ed1077f4739e3b25ab259fde944686b255e004778e1a7364edbec5b9ded3", - "0x2a63e827b2f21d8d7b1aa96c1626ec03f6cfdff5332d38eb7f9cddba070d8635", - "0x19688e325b5e7a2e12a99a0f66d97e3e454fc7c658515a53372d69dfec1ae54c", - "0x07b81134a277bfdd5fcb2c415c50caeaed726b7059220aebbeb510af0f9aa57a", - "0x027c9b6b70f75ce8c422fa5de85efc6e72d035cf85f8b893c1944d1ff184d99d", - "0x1632801edfb44f73a2ed05b5739084367d6f432f44103189e2b369a2937634e1", - "0x2ccf3feacbf9b3027b525e1faa0fd77870dd7ad309f6fea784eef9cc30f58472", - "0x0cecf72fb96f49ac462be2dc596300401a1b35818298ec9924b335b052e209ba", - "0x2142dddba378bdd7ef1802ae904fc963fbb757e2422bbbeb51cc00488612a9f0", - "0x12d4160cc9eda0f1f2666f4f2cb965f6be85d14d7788c71f2d591111367166e3", - "0x0b7c7a779ace3423d6f6bb5a105a7528e2750fccf0d567bff834767c663fc41b", - "0x2999a8a62bb01015a3047b79fdc6f6de493b48c3764fabbece91c5cdea62b024", - "0x184a497fd8ccf5799ad0e2de4697a8ceb15e03a468ceaf44db4e22a6bc471ca7", - "0x2493ee60ecc61ac4f03bc68c2c3dce0c5eece1d5c15959c44f4475948a5f655a", - "0x1a3ca823d2e294503a7c2efc2bda6d602373658787d0279146824f58e9aef485", - "0x090303d2111cbedc864c998a3f587503be5c80727b1623a5beaf5c29bf00b82b", - "0x2b2aa9170623cc7f194de87be5458db16c5790bf32352de09ca3b66d1aaca820", - "0x0380c189aecff666ae9dc1d4ae54e5f7856e2ca423c1fc408503289c7855d67d", - "0x28144ab0b8c290ec1a0f53933fb82e8c79ed67b9494341996a8064292d2971ed", - "0x0762e702a7f618e51edfa52834c2ad50aaf88f948b9466954c3320c25dcf2e71", - "0x183ec17a857b6fab963971c0713acce7ebd70c9c74d2920b98de7449d6248386", - "0x1a0c8cfdcffc1b7aa08c096311d7f42dd24f62e6ffee9cd9fc1dcbf21ef542a1", - "0x0478805f251a0fd8bf1a10d8b18f398bdd59d8f7de8deba5bbf5509dc1c9a4c9", - "0x26e59896f1b356f0193e0f4f67b88f03a1c2aa2a6310003b37b058ae4a513f39", - "0x0937fc57ff6f1c734abdb5fa3bd42e235695f3c124c80ff9ca781bcad414e109", - "0x1690c394a15fafc00fdff62d867a5a24ba80a7a8118b189e64604064679973e3", - "0x24c462e77e124fc756cefead66f9729f27557a49a23acece843320b7b95ff73c", - "0x0199abd5777ccbb991d0d458153f31a122d78f966849f27a35c37b2a9cc1fc82", + "0x0000000000000000000000000000004f025549782cd971a6c1fb41c86dcffe84", + "0x00000000000000000000000000000000002ba0c6ccef1491de2460d78ed27b04", + "0x0000000000000000000000000000005bc2d3f297035e66f5efd10bdb8725212c", + "0x000000000000000000000000000000000017b7cd67af0964d7f35bb596990e2e", + "0x00000000000000000000000000000054e6c3e45efc9b0e827dac46f9c4eeca49", + "0x00000000000000000000000000000000002f723cdff348d179550df577e7cfd3", + "0x000000000000000000000000000000f652ef7889a8cbe5ef95ca369c4d815f77", + "0x00000000000000000000000000000000001df859059e7785efabf68b1b91bdd3", + "0x000000000000000000000000000000263ae89806e5913a1e72b6016b4146a9ec", + "0x000000000000000000000000000000000001b822cb2e188817e1a569edfa02ec", + "0x0000000000000000000000000000006fde846d95958402da041b646e492d1f98", + "0x00000000000000000000000000000000002880270dace3a4c88d104553cce10e", + "0x000000000000000000000000000000e19f2f83d80dfe43dda859ee2a2e81a514", + "0x0000000000000000000000000000000000051f012cb5a327c4606838b613b1e1", + "0x00000000000000000000000000000017ecff6d43e4583a4accae7435a93b6e6a", + "0x000000000000000000000000000000000020a9af449f6eb3f85adea6a69764e7", + "0x000000000000000000000000000000f6a59d43ad0df17ca3944929ec0107e55d", + "0x0000000000000000000000000000000000063ea0e2bad75ccd69134680ec255c", + "0x0000000000000000000000000000008dcd16628a7e4d100ce337720f33e83040", + "0x00000000000000000000000000000000000dd92bb47341f7f50c4a589d9f1f1f", + "0x000000000000000000000000000000dfdfb15879263e7cd71955b5fd5a7f13ac", + "0x0000000000000000000000000000000000137fbe29496981122e15b9d3810fd7", + "0x0000000000000000000000000000007896aaab5d27566559576d47a2162cb580", + "0x000000000000000000000000000000000026652e7214ce99129921f78358d9db", + "0x000000000000000000000000000000266dd3ca31213ed03b8c7ed799fc60be96", + "0x00000000000000000000000000000000002ee47992e370bfc6a29787af665219", + "0x000000000000000000000000000000b7b6796a9fb29f819e34837aa7bce562ca", + "0x0000000000000000000000000000000000233910ccceba5d51bf8e3a3e704ccd", + "0x000000000000000000000000000000c3a7d424d1326f55819758919fe78d03be", + "0x00000000000000000000000000000000002f9dc2ddb99fcdfa39b6550fed8940", + "0x000000000000000000000000000000103cd0c5d896ddb18a35a6e8d26c7554de", + "0x00000000000000000000000000000000001add3164f53e2bb4cc69befcd0934b", + "0x00000000000000000000000000000092424e0068ab9640b87cedad8d51fa6e5a", + "0x00000000000000000000000000000000000fce93bd4e32f9f8c042dccd1faec3", + "0x000000000000000000000000000000e7f37881c846b845a83853d890785ea242", + "0x00000000000000000000000000000000002a98e11b59ae0a3249fd02b40d09da", + "0x2b2de0490cca392719c2a5304402ed44e4ef57b52afc0d9f9a7313afde57e354", + "0x1f3c130d5e16ab6dcb8607810386035cd84091e379d2320afe541ed95cfe3b40", + "0x069376be62f4bf4e4b0e8cbf5016b9c338755e58b372a5a0a66baf598ca4d9e0", + "0x277402cc72565160b9f4610dbec0384f342a6f064e8a8775f994bb315702b25e", + "0x2a2c469f7b083b940a00191ad391fbe687ee69e8be86903923ea0b84a05f7ac5", + "0x02c3c5855868bef51e11cbd088897d5da24ca830ee025190c6c13c55aead1c51", + "0x05bf0dcf35ae17add9af81caeacc7fad0164fc8a00c4ee698e301a4a9e5c186e", + "0x2b4aa31380cb5bbb808d3cad04afe6312cc219c3bc3308d1a36b2f8b6498b9f9", + "0x0f5a72d655c5e93e81532403acbcc34dba38b68ac3d4ef90b69f0745c19305ea", + "0x0eeaf19c7173f280cc831b4032575ff14e4264e7e83c8aeb17c8556344ed10a5", + "0x251beaa666506dd344de011f55daa21d62640f290d0f96f11b28c558eee87eee", + "0x2eb879722af7392d6278a22bab36c7eb53a2e1757527935253d4959779b8c3c6", + "0x17102d729ae7ee0226db4fc3626f8d23066dbf1cb50bd35335d176c7eb4c397e", + "0x1909b1aa8469f0b134ebcb44c27f35bef23daed902e2384bdea1908294b9aca1", + "0x137fe5c3391673e846504c42a37fb796883c6007eedb151ffbe66189e346d4c7", + "0x201cbf0f32750d8645bb3b12041056a81baaf82541d270cb83457d5a4c0cec69", + "0x256d5445f951327d1c252f788a0d28235e67a777ea1b76f2dedc1f01db0ba35d", + "0x0dc4ab6202374331e2e9d1bc22e4a6c6da83b60be13f5710f703dac593e76d31", + "0x0b40efa53a42ef011d1775418c2d527bd9695fa266d791e5ad170737b0a0ee03", + "0x0eeeb498bda76fc9a99484f1f1039a8be4f75e3b38894f7bbcb032321bbbc8e0", + "0x1ca193e8bf07766e781967fa6865308fd9c2c23608a60c6250f94b686e35436c", + "0x05ffeeb28d2307c13df98884237c6fda481581008e2e0e15889ff97968247979", + "0x241a6612007fdd15b772e3810361d846affc01283b2677935739bac25d6a6edb", + "0x049ffe29563533c6b709f6154bccb008c041f07da562add701ac601bbae0e324", + "0x21184b15022e51bd998ed3c6f61e00686e8c6704a46ba6cafc631f150e1295f8", + "0x14d29f9a5764c6ae42fef14b16b279ed00deb734d36341f681092f9cde2c6eec", + "0x2ccb627a33cb826d2e162bd0f1b90359590441cd4aa7cb2238d837e1d1488caf", + "0x1f17d09fc06e4469cdcb7e2fa4fc6d13fa879c7d3af2717b42a22b319267e5db", + "0x1111043767468e6ec93fec4f736fcdea2c2463938974f0b0126384aac12bc216", + "0x1496aaf5a493856a26149833e0889c0d2c9d7629fd9c7cfd1f2935003c674a6a", + "0x1ba462e23f27ae5d71572cbbd5879125da89a76275ed9b27d0e0584f387c6f38", + "0x036e893ffafa1c89373ab2981d17deadb6e1803bc61b75bc4670c2663ddc8971", + "0x19fee5038bbc55144fb88b89b4484f88120cc2deefb6ce08446ff78e2498cf12", + "0x2b73097df1b5baefda2391b636718048ce9a34af9c78192c9ea3ef8c0b95bca9", + "0x2aef5e9d0c347543d5471f975537676eadaf8ba3b066b195be21c1972251bce2", + "0x229c99b32e8304bfda2ab4c8606925d0c5717dadaebc62f8629261afb2bf92af", + "0x1c625aa217e2c91e2ffa5db9901830db6b307f7ab80707c7140657bb13951b06", + "0x1f20da0e99c10b5ce80aa090dcbf0bb0071707e155d559beff1845f9fed4cf65", + "0x2c04509df49b910874c2163866029d86a553f72f6eb05214f33ce52dd9603f60", + "0x0c4ce63b018ab3749ee72ee3cb902a51cdd94e915168a51037df6f4aa640e91d", + "0x21d08cf16408711f54cac45ae3c2f20799698e36cef36d46cfbd21025d86fbc8", + "0x0f463815b0121bb24ad75a2955fb4f370ac2744e55254ef4c095c431a3502e99", + "0x0fbaae1c95b35e988ecc05ed2f74ca16e033229853e18c2ac8b38153a90b20d6", + "0x1b85b257c3c44325e689e714b9e1ef3105a7af05ade44fe6702521bcba829d8e", + "0x1e5c2b6aff288daed980dc7d86e47127045bb60ae3a98a6cb8188a3dc513532a", + "0x1380a41f1c12f826fb843b379c1bca19d2ede4fcee6f35a187c8c4b4df076819", + "0x2f0208ef9fc24982b8fd0d6e0c1f4e2e6a4b673c9cb15704dfaee4d0ad70d38c", + "0x037adee6ecfce3e180f51fbd0436016ed7b2706218111e96089190633664b2dd", + "0x0629a3caa31a29712a5d557f17029be6c0a16eb1b9f71c463df5c54abf617485", + "0x200288352b21819a6710bdc78d74dc69bba84f8803d0a8a096cb615e0113afc5", + "0x0dfc706b7613a67092afaddf99cf49c9b295095074448fb53f702b34786fce6a", + "0x2cdfd8d72443179284a667e0386f196e8d611059a9020b889c7be1a03a519ae5", + "0x07459357cbe653b3f658ee9a9cbe037aa91a41286f2dfe9b45bbc471c2a356e6", + "0x222e3c4c19403dac8f12b7abfeddf6cb561f3a16c9255a7ccd0212cd5b06ef9d", + "0x2f4b82a09ed39e11b145f980d4c93afc026c973a16924fefc16ed0245b90f8eb", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -305,81 +305,81 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x20ab5f464922ffd2b1e1ccc6d95d6ef4369cd7bb2d2b90787876264976ab0458", - "0x2cf4d6713bbbd1ce8add48ef77cfca7aa7ef6dac2f56f5be2d194fc58ae8bf3b", - "0x0b27a0fdf4040dc6823597e54ef60c653f1da03a3e0a33184cafbfe8cb8f8c9f", - "0x25fbc183f46abd75f9a4812886c2e57d3658cf85c8712fe2fd684ef79f8e4f39", - "0x0a55ff581c31bfc3e5632a31722ea711d95a5d87b92c4e5580a765b0fb210479", - "0x0d53e113cb0d8146f9db703ee4a075f6fa76d3d6bd78d3b6e728c446f436e62a", - "0x25f2df96e8fb3742a9385deaacc0fe8b1b004deb084cfea1bb34e288273f2a48", - "0x069986bbcd573851ba471592ea7b7abf0b1f8fe37166ae77ae32e18c30d78303", - "0x28c1661f3f10f1d8536d51a5d78335ae25877b74554bc594104e2306c9358d49", - "0x227b1ca77f61558614bb5ccae18aaf35c8d18d6312d31db2b6c83f423f9fbe4a", - "0x15eb7341adafdc2b09f5c01cf3577282533015727a8145164ada3594377f1e3b", - "0x065a4e6ba13eac9ced7c30eb94339ea81499dcd9e5b47b11fe7c5fba001625e2", - "0x300c4bf30a32bc9651592b3920fb555a094543b5351cb44b66e28e009aa4d0b2", - "0x2746f3598d94922fbd55b06fe0250df607f12640686d28ae248dd233dc5bd4de", - "0x08ed65858fd4c5b3c3d32d11acde963f30f0ad5253291f721b8aca25486126cb", - "0x04eee216580a2d63ef3c64728543bcfc3bce41095d3c097eaea1a121e96253ed", - "0x0644f41646889900249f6e2396ad45e61651feafb13789d58e492b7a5254f2cc", - "0x22c99a539a5a2b6fcf74b88aabe5fe792ff4ca8b084f18a4b3041e2f79f5dd96", - "0x294470e5af5de7efabfbfb395fc0444339c98c6a671daf372a7d81199c263f6a", - "0x023c9ae56ecd72d71c0473cd7b3d0e0f0d7810b4c49a5f15c0649c0c1c037409", - "0x1bac840f84f33ea197d26bc5db337884df78ab32acd309b35967375ed94e68be", - "0x0e06dea5431599ff26d041b27515a9fcd86dddc4f7a36b5a9f4b49396ce538cf", - "0x2e36020aa9caf4b8e83c7034d44c497f9f2a3409c2f8547fd460a9b0cd73b079", - "0x1994267db8460fc7962939b3d1415813166c047bd9d8831e3f9c9971d8413c93", - "0x2f1e523460dffa0a6cd3b60728b63fdec12ac4ce87d4ca48f5e727ffc2ccbb1a", - "0x21c675598ffdbb8d060176829e4280d43beaf5efc500dd1f8c8666c1b890ab92", - "0x1df3405dff0c82b574bc3bf4a702edb5ef80e9d0d67690c129c1fb1a457afeff", - "0x2ce37a192a85bba5341fd198c36d31e64b9aee6a85e8517f1713a8fc4f7fc715", - "0x2b0414c5cfd1b20ecc3942a3ad4eda5408f17579300d778fb9965f2a0f5f1800", - "0x22fac7fceaabd8c78730b7da478c0ffa7e6ff8bb0dc0925af4acb347b98fb3bb", - "0x0e8038c20509b0aa832fdac7df1925b80aac62adfb9632e9d349730ffd334153", - "0x03a2c761aa3f358f5b8d6a566a653d0060edc40dfe7951b38ea0a0137df0735d", - "0x116ca570db76bd18cbd7dc2adbe1ce659c7778ff7f49110caf6b6a04065b539d", - "0x1ecff123e5150dd779acb24a5c93e9b325ed03cc2ff615871605cccd80e418c0", - "0x0a05cb8b4542052bdbe141e0e4e48f89cf4849d8ae4c8895b0138196eea3fd4c", - "0x0dcbe34bdbd3d5274199f9a5fbaed31244eae6f4efd6b385b0c2a45b2e57e7a4", - "0x19a2b7b3d73009acb7254747d045bdd54aa6d5cb82ce7d865ed388561b91abd0", - "0x048884546f25bed63a888600ba28b86f190463fca22f2b5068e7f2543959ef34", - "0x0e8c75b299c99d47a1ee9cf88d66d2ba765e9a9cecf10af89c1946dd35899f03", - "0x233c5cd7b8b283b4f41dc8de3cc92224839a95379c5b3c1728c78fb3467eec7d", - "0x2b3d5f5c8dcbb59a84c1430b5e5a7af318a796ce2c6e6b3cb485de062ef319dc", - "0x08e4658d0be1c72b76638414e3fae2a40d82da087b0d34db42429cbffbdd4cd1", - "0x0000000000000000000000000000002ae6522894067fa50f64152d4a52cfa8ab", - "0x0000000000000000000000000000000000030ef6f6463756d70ee7420912e16e", - "0x00000000000000000000000000000091fe055a9b9eabf0b598852099269880d3", - "0x00000000000000000000000000000000002ba138f8beb9ce5bf4690082be90b2", - "0x0000000000000000000000000000004f37ba311b91da6039a3845554906cfb68", - "0x00000000000000000000000000000000000a555a0762a2bc5b37fb3785ed63f3", - "0x00000000000000000000000000000097769c35728dc89155ce81ae4acf942742", - "0x00000000000000000000000000000000002d2519bdb6364f12f34aacbe6071b3", - "0x0000000000000000000000000000002ef919f463010d3b7eeb503432ae1d81e2", - "0x0000000000000000000000000000000000266667b04b3e6277c2e5bccdfb4678", - "0x0000000000000000000000000000001032d42c19de94ebaa182256d12ae7be4a", - "0x00000000000000000000000000000000000706474e8360a1ff39de2e599ff9e0", - "0x2da61f42e62a644bb581e860069b462a32c17a54879eb45d5bb08418a1611903", - "0x00000000000000000000000000000076e447249d72ee38b14cb20a2c1a62a275", - "0x000000000000000000000000000000000001ebb94ad5fdaff8b319729a2a3c1c", - "0x00000000000000000000000000000074bc027cb3cfd7e7155c0e6bb571264f38", - "0x00000000000000000000000000000000000d2e402596fd49bff4e951ca59b570", - "0x000000000000000000000000000000f8d36e66725939cf4d7ee4c9838c5180dd", - "0x00000000000000000000000000000000000ea9d66502c39ed96f75c1ed3c97ee", - "0x0000000000000000000000000000006cbbb91e70188ada136f94106fb59fb89a", - "0x0000000000000000000000000000000000293bafd1905687a49241d2fa7dbfee", - "0x000000000000000000000000000000dd5f454774af5490b055ec5b81704407f5", - "0x00000000000000000000000000000000000512414d7747efc63b28dd023e3976", - "0x000000000000000000000000000000b3eb94aa08265959b467365d815cde4204", - "0x000000000000000000000000000000000003dd21a5e3e24cdbfa1376c4e59b69", - "0x00000000000000000000000000000050b392ddc75f607e74b9ad111646b662fd", - "0x0000000000000000000000000000000000243d6ea9816c96e4084821957e3cae", - "0x0000000000000000000000000000002035f7ed8239e8ee5e62242333c44e13db", - "0x00000000000000000000000000000000002113704f0be342eae2b7e9b92ea0a2", - "0x0000000000000000000000000000005f483fe555ab51babd9fcdcdda0f4b8bf6", - "0x000000000000000000000000000000000008bb2c0effce262bc5531362b7f1b8", - "0x0000000000000000000000000000008122c9d786e9938ea3bfc5407d1d69a238", - "0x00000000000000000000000000000000000484b0ae62ffdf61f5132bbf2e5e47", + "0x222a679f2763df29c1e7f086386172889ab0c69809c5305a98e79b0dc0103e8c", + "0x1b763d326d430427c3810d13d14ee782a72904d1751675377b557d064d367f56", + "0x1b08f5763f615f589eccf2be283090b780c1db8f586885d280747c8201526324", + "0x0e84696503e5b574aae3a580a1499dc7c9b366cb3e1641b112e8e891a2c2b924", + "0x2409b9ddf05e0ecafad965854aa2d5dbf27f08fa3d2be343a10fa2a1a4d3fa01", + "0x08fbf535c59829ea2d443941b5beeb572bb3ad5afd750aa6b192072a3075147d", + "0x051fc3fc0915da4c5bdda6ce15a968236c44d169558e75bf4e0ebf97c0ec5052", + "0x0bb3b256a7bcdae859361295391d2fafde69956a51779b8c3874b8631589b363", + "0x07ec649d52617f198c18427cdfef8f3c74af53d366c3731734e7338624d72aef", + "0x04975655a60284ccdd41fcdba28aaf9da2ab9c637a3eabd0dd5b5cb63d8e6b4c", + "0x0abd4bffc6a0a51fb427e5568b736fbe09f871bff496b9cc972d0975a5a1e593", + "0x0c5eb239a6448e71afddc142632f41f9bdbe0b50fa095faa1c59838555e2e9cc", + "0x13952e0f84236648fdb3cf2104c4f3bd68d9f87e1d9d2512495e4f93bd2a8784", + "0x2ac8464aa02fd5d29d6e3290b20084da3fcb33d41de4df29a27f959c8fe3fa45", + "0x045ef9779f3672424b3b006caa3089cdaf6fc8aee0ce738219bf9e8dd0371f2e", + "0x1c4220cdf07ed108bbcfde0e31e654f62a2f3e7126cfecc5e635005704f1f9a0", + "0x21da8a8229ccfe0f5229a657f862581d184c60daed9408cfb12553b0978f6411", + "0x297eb0ba41540250ed72a1c9082cff7c2b5f47b3000e4f2eb642e356caf60391", + "0x2ebadc589a529e9d3ef66d03fdbcebb5366512c6d74f8f132d2e63c9c7da658c", + "0x2d68844ada373f150a439b284fa56a53bb5a63e3819162f566d8b1d6ec6dab53", + "0x014f46c7e5c38b7e55002ca4c1dbef9474314b73f921c25aa7faee1be7aee394", + "0x06bf8c348c12702b17f782b4a6230a44e2699ca3a5cb273923d5c9617352d9ad", + "0x2bc0d924490827be8e331af9572b4d3afe5acdf74d0eb4b8aa3e1149c6b09a2f", + "0x0c8bc41890fd384cb34d09686c2c0315a1901eca9786ed8a39aa7aced8a91e88", + "0x0a7646305c2314674846a69236336e1cb1a60cf3fd51e59eb0551264e7c397cd", + "0x2500c507401f9fddbef9c9675fabbe2745b8f3659e238c2f777263100e6d09c3", + "0x2fdeaa798e12c4a6a2aed16e7c60ad4bc2bced05f618617b3a0b035d98363c68", + "0x069e59d3eea4637e2c8a3b6b5265e59130786213eebef7d7a96b0a837e21be05", + "0x10af5198b9aba2ec5e70393e23645dc2f7436f40291460c7868f9d96a7f637f4", + "0x104132d82642742dd62b21256b71b5b5b40367a03af0521c58da15fdf9d61724", + "0x11dd198ee300f9a56517242539565f581d54f94e5d51c646b6584421671cd998", + "0x233710872f6644a2efeca0c4713f6002f1b0a5976ada278d241ecf4494d26c6f", + "0x0725638676595925e9cbaeae67e6d700b7830c753abb1cb56fdeafcda70fda96", + "0x20b6816ba2efc7174bd981058dee66373a05c87ba2bc906c2f5d9c43e75960bd", + "0x05053b8027aa936d76148af69b16d3b584511b3b544e77a4a28c28a08aff6560", + "0x2b4593b2ba80b1ce37b8bc407d2a1d350a4ff3433a81264cceaf647756dceb05", + "0x1c0e3f6739c7c7feb4ccb2739bfe03fbbe242af7be7d7c2746ee88178807f7df", + "0x09ba12795f7670d3ed23ccd4e5a7ee4f8e433cc94f7611473002263dc3a5d6e7", + "0x21713d974c2017d90f91390768b95ed366065a600280fa2a4e88fdc0c7e02a44", + "0x2b21493bd8ec07da1cf2bca0c40f8282aa32a02378d7c84364e7bccb88318408", + "0x0412545d9ea7b47195727acf3ed7e8de343fa36d978b9bb63d3fec5f43c036c6", + "0x1b254b4de5b892b8d85a6e10434be9ea2b39015d444be379051af01887c4204f", + "0x0000000000000000000000000000004720fd2d48897e058265dbd9639a78316c", + "0x00000000000000000000000000000000000890973c3c8440aac7bb2aa3b3d360", + "0x0000000000000000000000000000003c9d5af8bfd8eb33028b8992014ba59a66", + "0x0000000000000000000000000000000000256ea278f2d582e90542fcf46ae2fa", + "0x000000000000000000000000000000a864768a780103f2ec6bd53b9117968320", + "0x0000000000000000000000000000000000155f07eee35925887d817f1765616e", + "0x000000000000000000000000000000294046e01ee36da7fc7fd74db8bf6d7742", + "0x0000000000000000000000000000000000145d39e9877ba2eb4752e009314104", + "0x000000000000000000000000000000697068a0dc635f8a72a61ccac6f87a9c5d", + "0x00000000000000000000000000000000001cdc7a821acbc49c84db32a25032d4", + "0x00000000000000000000000000000088d6564c119df38890c64be62feb936f72", + "0x000000000000000000000000000000000023af22186c54a331835f8a37b1a335", + "0x1eba94821d0405833575de63a4b06ff73499078f3b0271073828844868623bbb", + "0x00000000000000000000000000000004e9660e2e8ea9e944aac617641867168e", + "0x00000000000000000000000000000000001898996b34fcb1392aa703169ef5b3", + "0x0000000000000000000000000000005a7f0b6f27d4c9bc419086d7845a4398f9", + "0x00000000000000000000000000000000000d075f0118a8d77333fa192059cb8e", + "0x0000000000000000000000000000002e1dfd8c2f09dce7fb0a39cba51cc6393c", + "0x000000000000000000000000000000000028f698d2e540f1489d93ccd1b66b08", + "0x0000000000000000000000000000005d45b6600fc67f1a5e5d0ba34115b02cad", + "0x00000000000000000000000000000000002f65114a42654731b539e511e29508", + "0x000000000000000000000000000000f19491480d52dc37c54ee73ad2bd706f58", + "0x000000000000000000000000000000000005e8673c12bd3865ad4e01762fb87b", + "0x0000000000000000000000000000006d6ac0c637d97e48ac0c5337cbd574068d", + "0x00000000000000000000000000000000000157a5122e80207994a12acccef25d", + "0x0000000000000000000000000000004c044c41a0c7dcd7dcc477002bc7d2625b", + "0x00000000000000000000000000000000000e480c8b9d808628ba0ffca67efba9", + "0x0000000000000000000000000000005379c29abd4f603e37a2fcf4412ebdc340", + "0x00000000000000000000000000000000002526093f74231847909d99ff70534e", + "0x000000000000000000000000000000e93bf8bf574fb4cf4fa9c97ad96c90272d", + "0x00000000000000000000000000000000002ffbb35ba9e14f605d84b65e822679", + "0x00000000000000000000000000000027133cf07699f1f28aefec2cfe5dea1d4d", + "0x000000000000000000000000000000000013ec79d9891d5261494b330b5b685e", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -468,12 +468,12 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x25c3e985f209c703a752788ddb98ccba923ee4d93faea9a3202e4a6ad900455a", - "0x05fe006c4ef80c602218ec432109de534468797d2a476257ecfa8067a19ca76c", - "0x0b25e96f9887fa252380eb742d87d3266d0b6cc40296a3114616337411379d0d", - "0x044b969f45211ac98a22051d821d112ba255724a67cf2a409a0e7ec2674d4a4a", - "0x1f4b116ede769d66acc7dcc460986e3a42f15451e99788fe815228151f9f3111", - "0x18150d4673702fa0e8002b60a8cc193ca524b4a7115adfa63e38132cf816d810", + "0x29c0369aef0c1a831a3387ba6374247d3cdc8519c2daa23ad40dbd76ba81cc37", + "0x199ecddcbe91b56ae7e0deeffaf949c5fa8444fb1ea63593a11877b4bb61bdff", + "0x27c10538ef73d2e04750908ab69e942c24769e479e8ef27717ce0c6741a44099", + "0x204ee2de51d8d98fbcff75b2b0d9919f3752b889fe962eab9f6d3fde8e817120", + "0x213d6530cc1f874e85ce11b2adef509f5c8f196caa4d263a2323b68f0e60bf5b", + "0x14b8e360452215876ba4fb95ae16b7d0364aa978b8c866800169f45ca4b70579", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -496,18 +496,18 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x2f5dd84b1e60b112208d1a9434f266bd7882024c2899f0ba275ba30a4a94e443", - "0x155c00fef841d994bce0faea295c8bcf15ba3e034dc47479574f16488f30e3b7", - "0x185b6ca9834aea18ef12bbc161deca039d938933e7cbe91400f348609d71c124", - "0x13c7476e1678380db73bc6f26342bff8678039becd5c8ae5d1dbb50a5b8b72c4", - "0x0000000000000000000000000000005313c0c9d8b7d01e9cb4dba68cb5a731dc", - "0x0000000000000000000000000000000000079aface4d2403026bde4d7a8115ff", - "0x0000000000000000000000000000003a0c51d363e052614b9f275912673a61de", - "0x000000000000000000000000000000000013064bd9b67b71253de09bb47ca079", - "0x000000000000000000000000000000fd3d37045895604f10e5c76193b2a96836", - "0x00000000000000000000000000000000000453db771812a4777061dc38e0d3ed", - "0x0000000000000000000000000000009d39dd2e86c4bbd729cf381de2e6114dd2", - "0x00000000000000000000000000000000001a35c791071693ea92dd7e91585321" + "0x2d0910a08d8378fdfb83db65a9b6b29f8588c15b7258314e7cd7be0ca4c73027", + "0x219ad79e5676acfdef94a726c3f278ef932dd20d7609793a5dddb4ade78c405b", + "0x16b2b0ca378b675acc77c67b6cb3b6d153fcd05a17487b062aee5a33fa10c41c", + "0x277ea0d96f620ca873cb52fa85090e8906f5e9b16dc0978245c02ba724cacdc4", + "0x000000000000000000000000000000e5b232ce9dc92675634949e313b9a26ff5", + "0x000000000000000000000000000000000001423f83014c10058a021043945ba5", + "0x0000000000000000000000000000003d7368ccc106f06222aea64e33697d82bd", + "0x000000000000000000000000000000000020565eb1cd8a65bbd0f47c4b31fb53", + "0x000000000000000000000000000000b9e1a9366f7db333bad38d7affeedb1f1d", + "0x000000000000000000000000000000000026c3be602cae622c1e4311fbbcf7d1", + "0x000000000000000000000000000000dfbdb80e8437ebf550900dae04c6b3f080", + "0x000000000000000000000000000000000007242b882e182de5187ed59bb476ca" ], "vkAsFields": [ "0x0000000000000000000000000000000000000000000000000000000000000006", diff --git a/recursive_verification/package.json b/recursive_verification/package.json index d4e6c88..a9de959 100644 --- a/recursive_verification/package.json +++ b/recursive_verification/package.json @@ -6,7 +6,7 @@ "clean": "rm -rf store", "cli": "bun run cli.ts", "ccc": "cd contract && aztec-nargo compile && aztec-postprocess-contract && aztec codegen target -o artifacts", - "bb-download-debug": "curl -L https://github.com/AztecProtocol/aztec-packages/releases/download/v3.0.0-nightly.20251026/barretenberg-threads-debug-wasm.tar.gz -o barretenberg-debug.wasm.gz && tar -xzvf barretenberg-debug.wasm.gz", + "bb-download-debug": "curl -L https://github.com/AztecProtocol/aztec-packages/releases/download/v3.0.0-devnet.2/barretenberg-threads-debug-wasm.tar.gz -o barretenberg-debug.wasm.gz && tar -xzvf barretenberg-debug.wasm.gz", "recursion:debug": "bun run bb-download-debug && BB_WASM_PATH=\"$(pwd)/barretenberg-debug.wasm\" LOG_LEVEL=verbose bun run recursion", "data": "bun run scripts/generate_data.ts", "recursion": "tsx scripts/run_recursion.ts", @@ -20,15 +20,16 @@ "typescript": "^5.0.0" }, "dependencies": { - "@aztec/accounts": "3.0.0-nightly.20251026", - "@aztec/aztec.js": "3.0.0-nightly.20251026", - "@aztec/bb.js": "3.0.0-nightly.20251026", - "@aztec/kv-store": "3.0.0-nightly.20251026", - "@aztec/noir-contracts.js": "3.0.0-nightly.20251026", - "@aztec/noir-noir_js": "3.0.0-nightly.20251026", - "@aztec/pxe": "3.0.0-nightly.20251026", - "@aztec/test-wallet": "3.0.0-nightly.20251026", + "@aztec/accounts": "3.0.0-devnet.2", + "@aztec/aztec.js": "3.0.0-devnet.2", + "@aztec/bb.js": "3.0.0-devnet.2", + "@aztec/kv-store": "3.0.0-devnet.2", + "@aztec/noir-contracts.js": "3.0.0-devnet.2", + "@aztec/noir-noir_js": "3.0.0-devnet.2", + "@aztec/pxe": "3.0.0-devnet.2", + "@aztec/test-wallet": "3.0.0-devnet.2", "add": "^2.0.6", "tsx": "^4.20.6" - } + }, + "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e" } diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index 380aa2c..10982da 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -10,12 +10,41 @@ import { getPXEConfig } from "@aztec/pxe/config"; import { TestWallet } from "@aztec/test-wallet/server"; import { AztecAddress } from "@aztec/aztec.js/addresses"; import { rm } from "node:fs/promises"; +import { join } from "node:path"; +import { mkdir, writeFile } from "node:fs/promises"; +import { serializePrivateExecutionSteps } from "@aztec/stdlib/kernel"; +import type { + ContractFunctionInteraction, + DeployMethod, + DeployOptions, + SendInteractionOptions, +} from "@aztec/aztec.js/contracts"; const sponsoredFPC = await getSponsoredFPCInstance(); const sponsoredPaymentMethod = new SponsoredFeePaymentMethod( sponsoredFPC.address ); +async function captureProfile( + interaction: ContractFunctionInteraction | DeployMethod, + opts: SendInteractionOptions | DeployOptions, + label: string +) { + const result = await interaction.profile({ + ...opts, + profileMode: "full", + skipProofGeneration: true, + }); + const ivcFolder = process.env.CAPTURE_IVC_FOLDER ?? "ivc"; + const resultsDirectory = join(ivcFolder, label); + await mkdir(resultsDirectory, { recursive: true }); + const ivcInputsPath = join(resultsDirectory, "ivc-inputs.msgpack"); + await writeFile( + ivcInputsPath, + serializePrivateExecutionSteps(result.executionSteps) + ); +} + export const setupSandbox = async (): Promise => { try { const nodeUrl = "http://localhost:8080"; @@ -49,31 +78,37 @@ async function main() { .deployed(); const accounts = await testWallet.getAccounts(); - const valueNotEqual = await ValueNotEqualContract.deploy( + const deploymentOptions = { + from: accounts[0].item, + fee: { paymentMethod: sponsoredPaymentMethod }, + }; + + const deploymentInteraction = await ValueNotEqualContract.deploy( testWallet, 10, accounts[0].item - ) - .send({ - from: accounts[0].item, - fee: { paymentMethod: sponsoredPaymentMethod }, - }) + ); + + await captureProfile(deploymentInteraction, deploymentOptions, "deployment"); + + const valueNotEqual = await deploymentInteraction + .send(deploymentOptions) .deployed(); - const tx = await valueNotEqual.methods - .increment( - accounts[0].item, - data.vkAsFields as unknown as FieldLike[], - data.proofAsFields as unknown as FieldLike[], - data.publicInputs as unknown as FieldLike[] - ) - .send({ - from: accounts[0].item, - fee: { paymentMethod: sponsoredPaymentMethod }, - }) - .wait(); + const opts = { + from: accounts[0].item, + fee: { paymentMethod: sponsoredPaymentMethod }, + }; + + const interaction = await valueNotEqual.methods.increment( + accounts[0].item, + data.vkAsFields as unknown as FieldLike[], + data.proofAsFields as unknown as FieldLike[], + data.publicInputs as unknown as FieldLike[] + ); + + await captureProfile(interaction, opts, "recursion"); - console.log(`Tx hash: ${tx.txHash.toString()}`); const counterValue = await valueNotEqual.methods .get_counter(accounts[0].item) .simulate({ from: accounts[0].item }); diff --git a/recursive_verification/yarn.lock b/recursive_verification/yarn.lock new file mode 100644 index 0000000..865ca30 --- /dev/null +++ b/recursive_verification/yarn.lock @@ -0,0 +1,4230 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@^1.11.0": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz#6c2d657d4b2dfb37f8ea811dcb3e60843d4ac24a" + integrity sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ== + +"@aws-crypto/crc32@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32/-/crc32-5.2.0.tgz#cfcc22570949c98c6689cfcbd2d693d36cdae2e1" + integrity sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/crc32c@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz#4e34aab7f419307821509a98b9b08e84e0c1917e" + integrity sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/sha1-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz#b0ee2d2821d3861f017e965ef3b4cb38e3b6a0f4" + integrity sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg== + dependencies: + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-browser@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz#153895ef1dba6f9fce38af550e0ef58988eb649e" + integrity sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw== + dependencies: + "@aws-crypto/sha256-js" "^5.2.0" + "@aws-crypto/supports-web-crypto" "^5.2.0" + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + "@aws-sdk/util-locate-window" "^3.0.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-crypto/sha256-js@5.2.0", "@aws-crypto/sha256-js@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz#c4fdb773fdbed9a664fc1a95724e206cf3860042" + integrity sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA== + dependencies: + "@aws-crypto/util" "^5.2.0" + "@aws-sdk/types" "^3.222.0" + tslib "^2.6.2" + +"@aws-crypto/supports-web-crypto@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz#a1e399af29269be08e695109aa15da0a07b5b5fb" + integrity sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg== + dependencies: + tslib "^2.6.2" + +"@aws-crypto/util@5.2.0", "@aws-crypto/util@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@aws-crypto/util/-/util-5.2.0.tgz#71284c9cffe7927ddadac793c14f14886d3876da" + integrity sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ== + dependencies: + "@aws-sdk/types" "^3.222.0" + "@smithy/util-utf8" "^2.0.0" + tslib "^2.6.2" + +"@aws-sdk/client-s3@^3.892.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-s3/-/client-s3-3.922.0.tgz#5752a59ad5cf4e370ede00774f1e09e9c0af6235" + integrity sha512-SZRaZUUAHCWfEyBf4SRSPd29ko4uFoJpfd0E/w1meE68XhFB52FTtz/71UqYcwqZmN+s7oUNFFZT+DE/dnQSEA== + dependencies: + "@aws-crypto/sha1-browser" "5.2.0" + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/credential-provider-node" "3.922.0" + "@aws-sdk/middleware-bucket-endpoint" "3.922.0" + "@aws-sdk/middleware-expect-continue" "3.922.0" + "@aws-sdk/middleware-flexible-checksums" "3.922.0" + "@aws-sdk/middleware-host-header" "3.922.0" + "@aws-sdk/middleware-location-constraint" "3.922.0" + "@aws-sdk/middleware-logger" "3.922.0" + "@aws-sdk/middleware-recursion-detection" "3.922.0" + "@aws-sdk/middleware-sdk-s3" "3.922.0" + "@aws-sdk/middleware-ssec" "3.922.0" + "@aws-sdk/middleware-user-agent" "3.922.0" + "@aws-sdk/region-config-resolver" "3.922.0" + "@aws-sdk/signature-v4-multi-region" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-endpoints" "3.922.0" + "@aws-sdk/util-user-agent-browser" "3.922.0" + "@aws-sdk/util-user-agent-node" "3.922.0" + "@aws-sdk/xml-builder" "3.921.0" + "@smithy/config-resolver" "^4.4.1" + "@smithy/core" "^3.17.2" + "@smithy/eventstream-serde-browser" "^4.2.4" + "@smithy/eventstream-serde-config-resolver" "^4.3.4" + "@smithy/eventstream-serde-node" "^4.2.4" + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/hash-blob-browser" "^4.2.5" + "@smithy/hash-node" "^4.2.4" + "@smithy/hash-stream-node" "^4.2.4" + "@smithy/invalid-dependency" "^4.2.4" + "@smithy/md5-js" "^4.2.4" + "@smithy/middleware-content-length" "^4.2.4" + "@smithy/middleware-endpoint" "^4.3.6" + "@smithy/middleware-retry" "^4.4.6" + "@smithy/middleware-serde" "^4.2.4" + "@smithy/middleware-stack" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-body-length-browser" "^4.2.0" + "@smithy/util-body-length-node" "^4.2.1" + "@smithy/util-defaults-mode-browser" "^4.3.5" + "@smithy/util-defaults-mode-node" "^4.2.7" + "@smithy/util-endpoints" "^3.2.4" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-retry" "^4.2.4" + "@smithy/util-stream" "^4.5.5" + "@smithy/util-utf8" "^4.2.0" + "@smithy/util-waiter" "^4.2.4" + "@smithy/uuid" "^1.1.0" + tslib "^2.6.2" + +"@aws-sdk/client-sso@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.922.0.tgz#5f19518fdf496e0d3cc55e98755132b7cc25d5d9" + integrity sha512-jdHs7uy7cSpiMvrxhYmqHyJxgK7hyqw4plG8OQ4YTBpq0SbfAxdoOuOkwJ1IVUUQho4otR1xYYjiX/8e8J8qwQ== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/middleware-host-header" "3.922.0" + "@aws-sdk/middleware-logger" "3.922.0" + "@aws-sdk/middleware-recursion-detection" "3.922.0" + "@aws-sdk/middleware-user-agent" "3.922.0" + "@aws-sdk/region-config-resolver" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-endpoints" "3.922.0" + "@aws-sdk/util-user-agent-browser" "3.922.0" + "@aws-sdk/util-user-agent-node" "3.922.0" + "@smithy/config-resolver" "^4.4.1" + "@smithy/core" "^3.17.2" + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/hash-node" "^4.2.4" + "@smithy/invalid-dependency" "^4.2.4" + "@smithy/middleware-content-length" "^4.2.4" + "@smithy/middleware-endpoint" "^4.3.6" + "@smithy/middleware-retry" "^4.4.6" + "@smithy/middleware-serde" "^4.2.4" + "@smithy/middleware-stack" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-body-length-browser" "^4.2.0" + "@smithy/util-body-length-node" "^4.2.1" + "@smithy/util-defaults-mode-browser" "^4.3.5" + "@smithy/util-defaults-mode-node" "^4.2.7" + "@smithy/util-endpoints" "^3.2.4" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-retry" "^4.2.4" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/core@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.922.0.tgz#6df3b04145202567a15e2b83cc83ef15590c828a" + integrity sha512-EvfP4cqJfpO3L2v5vkIlTkMesPtRwWlMfsaW6Tpfm7iYfBOuTi6jx60pMDMTyJNVfh6cGmXwh/kj1jQdR+w99Q== + dependencies: + "@aws-sdk/types" "3.922.0" + "@aws-sdk/xml-builder" "3.921.0" + "@smithy/core" "^3.17.2" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/signature-v4" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-env@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.922.0.tgz#c0f7a0ae77c4f9d1c6494aec4a149bbc74cc8578" + integrity sha512-WikGQpKkROJSK3D3E7odPjZ8tU7WJp5/TgGdRuZw3izsHUeH48xMv6IznafpRTmvHcjAbDQj4U3CJZNAzOK/OQ== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-http@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.922.0.tgz#d957bf8f2c0fb07a27eaee561e5bc94d6f86cb73" + integrity sha512-i72DgHMK7ydAEqdzU0Duqh60Q8W59EZmRJ73y0Y5oFmNOqnYsAI+UXyOoCsubp+Dkr6+yOwAn1gPt1XGE9Aowg== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/util-stream" "^4.5.5" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-ini@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.922.0.tgz#67348aa54e0548e7bcaea2a54eac6af18e84f0d7" + integrity sha512-bVF+pI5UCLNkvbiZr/t2fgTtv84s8FCdOGAPxQiQcw5qOZywNuuCCY3wIIchmQr6GJr8YFkEp5LgDCac5EC5aQ== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/credential-provider-env" "3.922.0" + "@aws-sdk/credential-provider-http" "3.922.0" + "@aws-sdk/credential-provider-process" "3.922.0" + "@aws-sdk/credential-provider-sso" "3.922.0" + "@aws-sdk/credential-provider-web-identity" "3.922.0" + "@aws-sdk/nested-clients" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/credential-provider-imds" "^4.2.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-node@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.922.0.tgz#279eb69f1b932556a8b94d52af13375baeaac4a2" + integrity sha512-agCwaD6mBihToHkjycL8ObIS2XOnWypWZZWhJSoWyHwFrhEKz1zGvgylK9Dc711oUfU+zU6J8e0JPKNJMNb3BQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.922.0" + "@aws-sdk/credential-provider-http" "3.922.0" + "@aws-sdk/credential-provider-ini" "3.922.0" + "@aws-sdk/credential-provider-process" "3.922.0" + "@aws-sdk/credential-provider-sso" "3.922.0" + "@aws-sdk/credential-provider-web-identity" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/credential-provider-imds" "^4.2.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-process@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.922.0.tgz#23f5b0923d9a9bb89dac3fa9aeb27c9eebf1a19c" + integrity sha512-1DZOYezT6okslpvMW7oA2q+y17CJd4fxjNFH0jtThfswdh9CtG62+wxenqO+NExttq0UMaKisrkZiVrYQBTShw== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-sso@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.922.0.tgz#64a2e8f44e4aa8fdacbaa6c536495971109926d2" + integrity sha512-nbD3G3hShTYxLCkKMqLkLPtKwAAfxdY/k9jHtZmVBFXek2T6tQrqZHKxlAu+fd23Ga4/Aik7DLQQx1RA1a5ipg== + dependencies: + "@aws-sdk/client-sso" "3.922.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/token-providers" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/credential-provider-web-identity@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.922.0.tgz#d7757693c8f7cec62a0c34b90fea45be4023cf23" + integrity sha512-wjGIhgMHGGQfQTdFaJphNOKyAL8wZs6znJdHADPVURmgR+EWLyN/0fDO1u7wx8xaLMZpbHIFWBEvf9TritR/cQ== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/nested-clients" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-bucket-endpoint@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.922.0.tgz#417efd18e8af948e694c5be751bde6d631138b3d" + integrity sha512-Dpr2YeOaLFqt3q1hocwBesynE3x8/dXZqXZRuzSX/9/VQcwYBFChHAm4mTAl4zuvArtDbLrwzWSxmOWYZGtq5w== + dependencies: + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-arn-parser" "3.893.0" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-config-provider" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-expect-continue@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.922.0.tgz#02f0b0402fcb8974765b3e7d20f43753bd05738c" + integrity sha512-xmnLWMtmHJHJBupSWMUEW1gyxuRIeQ1Ov2xa8Tqq77fPr4Ft2AluEwiDMaZIMHoAvpxWKEEt9Si59Li7GIA+bQ== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-flexible-checksums@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.922.0.tgz#41abb38c5baa8626a843aa57cfcb904a4d71427a" + integrity sha512-G363np7YcJhf+gBucskdv8cOTbs2TRwocEzRupuqDIooGDlLBlfJrvwehdgtWR8l53yjJR3zcHvGrVPTe2h8Nw== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@aws-crypto/crc32c" "5.2.0" + "@aws-crypto/util" "5.2.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/is-array-buffer" "^4.2.0" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-stream" "^4.5.5" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-host-header@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.922.0.tgz#f19621fd19764f7eb0a33795ce0f43402080e394" + integrity sha512-HPquFgBnq/KqKRVkiuCt97PmWbKtxQ5iUNLEc6FIviqOoZTmaYG3EDsIbuFBz9C4RHJU4FKLmHL2bL3FEId6AA== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-location-constraint@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.922.0.tgz#c455d40e3ab49014a1193fbcb2bf29885d345b7c" + integrity sha512-T4iqd7WQ2DDjCH/0s50mnhdoX+IJns83ZE+3zj9IDlpU0N2aq8R91IG890qTfYkUEdP9yRm0xir/CNed+v6Dew== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-logger@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.922.0.tgz#3a43e2b7ec72b043751a7fd45f0514db77756be9" + integrity sha512-AkvYO6b80FBm5/kk2E636zNNcNgjztNNUxpqVx+huyGn9ZqGTzS4kLqW2hO6CBe5APzVtPCtiQsXL24nzuOlAg== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-recursion-detection@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.922.0.tgz#cca89bd926ad05893f9b99b253fa50a6b6c7b829" + integrity sha512-TtSCEDonV/9R0VhVlCpxZbp/9sxQvTTRKzIf8LxW3uXpby6Wl8IxEciBJlxmSkoqxh542WRcko7NYODlvL/gDA== + dependencies: + "@aws-sdk/types" "3.922.0" + "@aws/lambda-invoke-store" "^0.1.1" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-sdk-s3@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.922.0.tgz#11875f1b848070413815ca34f1b8e93a36fa351a" + integrity sha512-ygg8lME1oFAbsH42ed2wtGqfHLoT5irgx6VC4X98j79fV1qXEwwwbqMsAiMQ/HJehpjqAFRVsHox3MHLN48Z5A== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-arn-parser" "3.893.0" + "@smithy/core" "^3.17.2" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/signature-v4" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/util-config-provider" "^4.2.0" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-stream" "^4.5.5" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/middleware-ssec@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-ssec/-/middleware-ssec-3.922.0.tgz#1c56b2619cdd604e97203148030f299980494008" + integrity sha512-eHvSJZTSRJO+/tjjGD6ocnPc8q9o3m26+qbwQTu/4V6yOJQ1q+xkDZNqwJQphL+CodYaQ7uljp8g1Ji/AN3D9w== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/middleware-user-agent@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.922.0.tgz#b1e109ce3a0c30d44360bf0f707013a3a36d3f78" + integrity sha512-N4Qx/9KP3oVQBJOrSghhz8iZFtUC2NNeSZt88hpPhbqAEAtuX8aD8OzVcpnAtrwWqy82Yd2YTxlkqMGkgqnBsQ== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-endpoints" "3.922.0" + "@smithy/core" "^3.17.2" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/nested-clients@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/nested-clients/-/nested-clients-3.922.0.tgz#1b66f1505fb0d6442e67239c5596159ba871cfff" + integrity sha512-uYvKCF1TGh/MuJ4TMqmUM0Csuao02HawcseG4LUDyxdUsd/EFuxalWq1Cx4fKZQ2K8F504efZBjctMAMNY+l7A== + dependencies: + "@aws-crypto/sha256-browser" "5.2.0" + "@aws-crypto/sha256-js" "5.2.0" + "@aws-sdk/core" "3.922.0" + "@aws-sdk/middleware-host-header" "3.922.0" + "@aws-sdk/middleware-logger" "3.922.0" + "@aws-sdk/middleware-recursion-detection" "3.922.0" + "@aws-sdk/middleware-user-agent" "3.922.0" + "@aws-sdk/region-config-resolver" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@aws-sdk/util-endpoints" "3.922.0" + "@aws-sdk/util-user-agent-browser" "3.922.0" + "@aws-sdk/util-user-agent-node" "3.922.0" + "@smithy/config-resolver" "^4.4.1" + "@smithy/core" "^3.17.2" + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/hash-node" "^4.2.4" + "@smithy/invalid-dependency" "^4.2.4" + "@smithy/middleware-content-length" "^4.2.4" + "@smithy/middleware-endpoint" "^4.3.6" + "@smithy/middleware-retry" "^4.4.6" + "@smithy/middleware-serde" "^4.2.4" + "@smithy/middleware-stack" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-body-length-browser" "^4.2.0" + "@smithy/util-body-length-node" "^4.2.1" + "@smithy/util-defaults-mode-browser" "^4.3.5" + "@smithy/util-defaults-mode-node" "^4.2.7" + "@smithy/util-endpoints" "^3.2.4" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-retry" "^4.2.4" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@aws-sdk/region-config-resolver@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.922.0.tgz#55bf45c6d4d344b8393528c7e33576f923bb1b1d" + integrity sha512-44Y/rNNwhngR2KHp6gkx//TOr56/hx6s4l+XLjOqH7EBCHL7XhnrT1y92L+DLiroVr1tCSmO8eHQwBv0Y2+mvw== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/config-resolver" "^4.4.1" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/signature-v4-multi-region@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.922.0.tgz#37e30499d805ac0cffbd14b448f7d2a58bbea132" + integrity sha512-mmsgEEL5pE+A7gFYiJMDBCLVciaXq4EFI5iAP7bPpnHvOplnNOYxVy2IreKMllGvrfjVyLnwxzZYlo5zZ65FWg== + dependencies: + "@aws-sdk/middleware-sdk-s3" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/protocol-http" "^5.3.4" + "@smithy/signature-v4" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/token-providers@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.922.0.tgz#0ae050e9b713b942397fa290ce269df91013c8cc" + integrity sha512-/inmPnjZE0ZBE16zaCowAvouSx05FJ7p6BQYuzlJ8vxEU0sS0Hf8fvhuiRnN9V9eDUPIBY+/5EjbMWygXL4wlQ== + dependencies: + "@aws-sdk/core" "3.922.0" + "@aws-sdk/nested-clients" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/types@3.922.0", "@aws-sdk/types@^3.222.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.922.0.tgz#e92daf55272171caac8dba9d425786646466d935" + integrity sha512-eLA6XjVobAUAMivvM7DBL79mnHyrm+32TkXNWZua5mnxF+6kQCfblKKJvxMZLGosO53/Ex46ogim8IY5Nbqv2w== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/util-arn-parser@3.893.0": + version "3.893.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-arn-parser/-/util-arn-parser-3.893.0.tgz#fcc9b792744b9da597662891c2422dda83881d8d" + integrity sha512-u8H4f2Zsi19DGnwj5FSZzDMhytYF/bCh37vAtBsn3cNDL3YG578X5oc+wSX54pM3tOxS+NY7tvOAo52SW7koUA== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-endpoints@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.922.0.tgz#817457d6a78ce366bdb7b201c638dba5ffdbfe60" + integrity sha512-4ZdQCSuNMY8HMlR1YN4MRDdXuKd+uQTeKIr5/pIM+g3TjInZoj8imvXudjcrFGA63UF3t92YVTkBq88mg58RXQ== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-endpoints" "^3.2.4" + tslib "^2.6.2" + +"@aws-sdk/util-locate-window@^3.0.0": + version "3.893.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.893.0.tgz#5df15f24e1edbe12ff1fe8906f823b51cd53bae8" + integrity sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg== + dependencies: + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-browser@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.922.0.tgz#734bbe74d34c3fbdb96aca80a151d3d7e7e87c30" + integrity sha512-qOJAERZ3Plj1st7M4Q5henl5FRpE30uLm6L9edZqZXGR6c7ry9jzexWamWVpQ4H4xVAVmiO9dIEBAfbq4mduOA== + dependencies: + "@aws-sdk/types" "3.922.0" + "@smithy/types" "^4.8.1" + bowser "^2.11.0" + tslib "^2.6.2" + +"@aws-sdk/util-user-agent-node@3.922.0": + version "3.922.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.922.0.tgz#52dd951b314a3e7097d181664a3f79a1e56921ce" + integrity sha512-NrPe/Rsr5kcGunkog0eBV+bY0inkRELsD2SacC4lQZvZiXf8VJ2Y7j+Yq1tB+h+FPLsdt3v9wItIvDf/laAm0Q== + dependencies: + "@aws-sdk/middleware-user-agent" "3.922.0" + "@aws-sdk/types" "3.922.0" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@aws-sdk/xml-builder@3.921.0": + version "3.921.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/xml-builder/-/xml-builder-3.921.0.tgz#e4d4d21b09341648b598d720c602ee76d7a84594" + integrity sha512-LVHg0jgjyicKKvpNIEMXIMr1EBViESxcPkqfOlT+X1FkmUMTNZEEVF18tOJg4m4hV5vxtkWcqtr4IEeWa1C41Q== + dependencies: + "@smithy/types" "^4.8.1" + fast-xml-parser "5.2.5" + tslib "^2.6.2" + +"@aws/lambda-invoke-store@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@aws/lambda-invoke-store/-/lambda-invoke-store-0.1.1.tgz#2e67f17040b930bde00a79ffb484eb9e77472b06" + integrity sha512-RcLam17LdlbSOSp9VxmUu1eI6Mwxp+OwhD2QhiSNmNCzoDb0EeUXTD2n/WbcnrAYMGlmf05th6QYq23VqvJqpA== + +"@aztec/accounts@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/accounts/-/accounts-3.0.0-devnet.2.tgz#b66bbed52795e6d871cc6544bf610a2327050bde" + integrity sha512-xmhQYvkIR3KMhpTJoTPCSrOwdOOEbNUF4mXkQh0JWfWRPCw8DWqJr0dJcECS+PlxABIFE/OcLdUq7gNXmhhxWg== + dependencies: + "@aztec/aztec.js" "3.0.0-devnet.2" + "@aztec/entrypoints" "3.0.0-devnet.2" + "@aztec/ethereum" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + tslib "^2.4.0" + +"@aztec/aztec.js@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/aztec.js/-/aztec.js-3.0.0-devnet.2.tgz#ac9d048a2ab77b7e61342ac8bc2ebaf19160bccd" + integrity sha512-3suXrSKeZUq9rMWgyYLxOUDKwxcbcnX1PX82dBRqlsAagThwHi3NPD+9QiEO/7vU2G27oQzrb6YRmARnVqL6aQ== + dependencies: + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/entrypoints" "3.0.0-devnet.2" + "@aztec/ethereum" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/l1-artifacts" "3.0.0-devnet.2" + "@aztec/protocol-contracts" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + axios "^1.12.0" + tslib "^2.4.0" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" + zod "^3.23.8" + +"@aztec/bb-prover@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/bb-prover/-/bb-prover-3.0.0-devnet.2.tgz#764ac37d922043500cf00e127c013e54dedd609a" + integrity sha512-b/uNARAQcrOFH3WGbdQB5+zZyu3rA5uX61L2Au//GAu2pLPAq9BjJfHPhDXrNmV5q8vk0RiMX0jR+ITw73jfww== + dependencies: + "@aztec/bb.js" "3.0.0-devnet.2" + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/noir-noirc_abi" "3.0.0-devnet.2" + "@aztec/noir-protocol-circuits-types" "3.0.0-devnet.2" + "@aztec/noir-types" "3.0.0-devnet.2" + "@aztec/simulator" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + "@aztec/telemetry-client" "3.0.0-devnet.2" + "@aztec/world-state" "3.0.0-devnet.2" + commander "^12.1.0" + pako "^2.1.0" + source-map-support "^0.5.21" + tslib "^2.4.0" + +"@aztec/bb.js@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/bb.js/-/bb.js-3.0.0-devnet.2.tgz#ecdd91bcbb2de525433ea3a6ff8ad17026422bf3" + integrity sha512-KRU8YuFuZ68J2I6woQ+NJsRZcr3WG2n1KaRKcT83l9fjG8OtNmPH77/SXio/cPOXjXvdzTDvfiNNt54o1olfLg== + dependencies: + comlink "^4.4.1" + commander "^12.1.0" + idb-keyval "^6.2.1" + msgpackr "^1.11.2" + pako "^2.1.0" + pino "^9.5.0" + tslib "^2.4.0" + +"@aztec/blob-lib@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/blob-lib/-/blob-lib-3.0.0-devnet.2.tgz#9a3bae3b7dd9724aea9126c5d128f0bcfe6c6f56" + integrity sha512-cRyjcgljsQ8ChNxufo4AdAasgS7IFzAgZw2pdkOkRyP/nXh1TyUx1QtrmgDU2R5oam+7HtUDck28gI0u2O80SA== + dependencies: + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@crate-crypto/node-eth-kzg" "^0.10.0" + tslib "^2.4.0" + +"@aztec/builder@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/builder/-/builder-3.0.0-devnet.2.tgz#3afa554f26a8ac96d4f162b4cb986c8bc028eac0" + integrity sha512-zSSG3nDsHAlyUI8Ct3rpWmEOjc7MGQo7MSb9znPLa8mxZoLrXA0lP6R0M1srwjdhNxgTMod+VceAXocvka+sDQ== + dependencies: + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + commander "^12.1.0" + +"@aztec/constants@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/constants/-/constants-3.0.0-devnet.2.tgz#4444eceb6071ee90411a2316c0e43da6b47a1470" + integrity sha512-uM9kD87JDPwsSjb9ty6CO65I14G3J44FB90Btyf61Cv1Vi21hcTjWDLlExLdvm2EXSPyry/c3IM8hV7xMV5ZGA== + dependencies: + tslib "^2.4.0" + +"@aztec/entrypoints@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/entrypoints/-/entrypoints-3.0.0-devnet.2.tgz#04bcdb957a504d882f7c45f30c83bb552906fe06" + integrity sha512-7A/CbOj8ACKkKi2Fet5Ddl44Pfohp3j8RewFR4j8ZyT55EKJBabM3SdGcQ9aGA9TaNAoMoqmOqp1R3yRCVj5Vw== + dependencies: + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/protocol-contracts" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + tslib "^2.4.0" + +"@aztec/ethereum@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/ethereum/-/ethereum-3.0.0-devnet.2.tgz#16e5c5161214d1ef8d2476f4db123e66a6f48e4c" + integrity sha512-BkY6jt10LifQkATtaeyenXBSMbVAWcH95dPaQbeQMykMlmT4c2sNISn8O69IQDY8zAoET61+ivBbT7hP108FpQ== + dependencies: + "@aztec/blob-lib" "3.0.0-devnet.2" + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/l1-artifacts" "3.0.0-devnet.2" + "@viem/anvil" "^0.0.10" + dotenv "^16.0.3" + lodash.chunk "^4.2.0" + lodash.pickby "^4.5.0" + tslib "^2.4.0" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" + zod "^3.23.8" + +"@aztec/foundation@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/foundation/-/foundation-3.0.0-devnet.2.tgz#b4a409c80c0bc31ae3e1270802f1b660db2d6433" + integrity sha512-EYtzdsr8R+tIBjQWSKA/Z91ElCPSUobdcP9RmXmnNi5ByOs+3gpRIbrIz1mBb+9dG+jq0iVNadq/2raUz+e4pQ== + dependencies: + "@aztec/bb.js" "3.0.0-devnet.2" + "@koa/cors" "^5.0.0" + "@noble/curves" "=1.7.0" + bn.js "^5.2.1" + colorette "^2.0.20" + detect-node "^2.1.0" + hash.js "^1.1.7" + koa "^2.16.1" + koa-bodyparser "^4.4.0" + koa-compress "^5.1.0" + koa-router "^13.1.1" + leveldown "^6.1.1" + lodash.chunk "^4.2.0" + lodash.clonedeepwith "^4.5.0" + pako "^2.1.0" + pino "^9.5.0" + pino-pretty "^13.0.0" + sha3 "^2.1.4" + undici "^5.28.5" + zod "^3.23.8" + +"@aztec/key-store@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/key-store/-/key-store-3.0.0-devnet.2.tgz#ca784739b46d765933508a55c204f578f33cdf8e" + integrity sha512-gCrhwzGx9/fXHRF+x/6r2BrmCMvz6QkLGeROjNu9Fr5xcLxrxIiPrqzShaHTgSBzYCBiZRbdd7VQB6GUR9e59w== + dependencies: + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/kv-store" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + tslib "^2.4.0" + +"@aztec/kv-store@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/kv-store/-/kv-store-3.0.0-devnet.2.tgz#40b5883c30595f4f9b9c3ce11bc04f3d8fd36c6b" + integrity sha512-U2VvPiZVwNIXNWCNu2h+3kfSXH6MoMjWQb1dNlm6CWh7O3PBxnJ+96YUWm1oY1kmQA5YcbU31kjYa0s93HntZA== + dependencies: + "@aztec/ethereum" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/native" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + idb "^8.0.0" + lmdb "^3.2.0" + msgpackr "^1.11.2" + ohash "^2.0.11" + ordered-binary "^1.5.3" + +"@aztec/l1-artifacts@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/l1-artifacts/-/l1-artifacts-3.0.0-devnet.2.tgz#0365bc7a25ee9dd1dafa455b18b7c1a45cc7e489" + integrity sha512-F/zs3JlV6tA09OgxvrLZkphG+f+GvLPRqgPGD0JxHqYpcyHhj6oF91sCoUNmja/L1WhY9PBblI5/Sz2yftEySw== + dependencies: + tslib "^2.4.0" + +"@aztec/merkle-tree@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/merkle-tree/-/merkle-tree-3.0.0-devnet.2.tgz#34d659573cbbec596eec6840e50ca5e4370f3597" + integrity sha512-E5A5ZRKz1k/R8IG37e6o3rFHysmeC1uBg+TxYKyi07P6TgFeBTb9J+F2fCCDyPHAQSWU5yQbEbGaexVwuqzkXw== + dependencies: + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/kv-store" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + sha256 "^0.2.0" + tslib "^2.4.0" + +"@aztec/native@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/native/-/native-3.0.0-devnet.2.tgz#2088a29907137adb06234b87f42807e910bb1fb4" + integrity sha512-FF67c8s8Wgu6s8Qvfg3Aq2RvLDFZZvwyHz4+mwI5aXbI2//xo65jPxz3HozjaLWz/CRiYC9Dkg9faZ9wUiG+Iw== + dependencies: + "@aztec/foundation" "3.0.0-devnet.2" + msgpackr "^1.11.2" + +"@aztec/noir-acvm_js@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/noir-acvm_js/-/noir-acvm_js-3.0.0-devnet.2.tgz#88bca6f04282709af7102f4980ddc193b1191a21" + integrity sha512-CyKCYq32w0gWN14Vc7SwAAsjMqKmQD5G2ssy6MW0UNJ5mVXusUTdq90LfFZFIAh139tLcpxG2lOOd7jYhzNZ/A== + +"@aztec/noir-contracts.js@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/noir-contracts.js/-/noir-contracts.js-3.0.0-devnet.2.tgz#ce81bfe678428d4c1f113dccb149dc947bf64416" + integrity sha512-GDItJIjO5AGuWKbS8mAbgEI+PrT1ZWafvf7BY+OXKjLAdRZ8lzLx9ftug9/iic6S1v3wHKC1R79YJj30YxQpLw== + dependencies: + "@aztec/aztec.js" "3.0.0-devnet.2" + tslib "^2.4.0" + +"@aztec/noir-noir_codegen@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/noir-noir_codegen/-/noir-noir_codegen-3.0.0-devnet.2.tgz#846f2a5fb12ec7df1f2a4543661d213ae76ff79f" + integrity sha512-4H4QGvqXpyk6pV7khu88D2WDDkXUn6SxVMA6686qvJCK11I17g49f1Kg6+94XKWTAQ+BWFJgm0Ff3k7S3gppkA== + dependencies: + "@aztec/noir-types" "3.0.0-devnet.2" + glob "^11.0.3" + ts-command-line-args "^2.5.1" + +"@aztec/noir-noir_js@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/noir-noir_js/-/noir-noir_js-3.0.0-devnet.2.tgz#5a97af83d03a2edf66c857ad4455c11d526c9645" + integrity sha512-pobJnsRAceSOTePUVxHCSEojjzQ7wQGlcFdSXU0onn8f2XE1M5HNYKv4kZ86O+WDgaJjBJwBBuiTvYRDxhYjTg== + dependencies: + "@aztec/noir-acvm_js" "3.0.0-devnet.2" + "@aztec/noir-noirc_abi" "3.0.0-devnet.2" + "@aztec/noir-types" "3.0.0-devnet.2" + pako "^2.1.0" + +"@aztec/noir-noirc_abi@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/noir-noirc_abi/-/noir-noirc_abi-3.0.0-devnet.2.tgz#8d0be9b9b15572dbb59cf9c10af2f642eee59362" + integrity sha512-stPneUeYTdGBzzt21oPJv3+8/QpjiI/3rvmet3k1ZFvGZFyPq0GL87kTKOQdStE4shc8ypOEG00isGTGNtTRmg== + dependencies: + "@aztec/noir-types" "3.0.0-devnet.2" + +"@aztec/noir-protocol-circuits-types@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/noir-protocol-circuits-types/-/noir-protocol-circuits-types-3.0.0-devnet.2.tgz#92b969122ddf1aeb8bf819fc77ad29c9c2a05de9" + integrity sha512-jOHgAMoOH52QDeEW8lIH+Fy9+rOf90DPNSO65DHgVt+n/VZG7ln7FxQl3lxHA2cjMv8moKD/wtTusAy77MXQuw== + dependencies: + "@aztec/blob-lib" "3.0.0-devnet.2" + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/noir-acvm_js" "3.0.0-devnet.2" + "@aztec/noir-noir_codegen" "3.0.0-devnet.2" + "@aztec/noir-noirc_abi" "3.0.0-devnet.2" + "@aztec/noir-types" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + change-case "^5.4.4" + tslib "^2.4.0" + +"@aztec/noir-types@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/noir-types/-/noir-types-3.0.0-devnet.2.tgz#fa5ea3fd29bd507e3d8fd38cadb51842790c92d5" + integrity sha512-XXOfS9flhEStIJOneZJJlIQjgegWvmfeqSpGzSPHBBvYUAWSZVbjfl+8AEJcamVo311EyqQWiwScJh+1xvM4lw== + +"@aztec/protocol-contracts@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/protocol-contracts/-/protocol-contracts-3.0.0-devnet.2.tgz#0d3a329f2c8782b05af32b1b5a9b72f0098b1dc2" + integrity sha512-W4bcAv2c5FwxzA9JLm8aQx5J0aH7hEWGICK/lMGTr0AotuXsg3mzixg27JB2T4XHSmL7jVX589ci72FdBv4/nQ== + dependencies: + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + lodash.chunk "^4.2.0" + lodash.omit "^4.5.0" + tslib "^2.4.0" + +"@aztec/pxe@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/pxe/-/pxe-3.0.0-devnet.2.tgz#fe834deec85f30602cba85daf3a01aad58bbef7d" + integrity sha512-DmY5j3YxJhdVnd2Ri2bqcOY4s996xmPcRCoIvg2kJwobKzaWTCHub0fdmHb8fJOJyiw5JVQhRrFYw0bY6ftyEA== + dependencies: + "@aztec/bb-prover" "3.0.0-devnet.2" + "@aztec/bb.js" "3.0.0-devnet.2" + "@aztec/builder" "3.0.0-devnet.2" + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/ethereum" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/key-store" "3.0.0-devnet.2" + "@aztec/kv-store" "3.0.0-devnet.2" + "@aztec/noir-protocol-circuits-types" "3.0.0-devnet.2" + "@aztec/noir-types" "3.0.0-devnet.2" + "@aztec/protocol-contracts" "3.0.0-devnet.2" + "@aztec/simulator" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + koa "^2.16.1" + koa-router "^13.1.1" + lodash.omit "^4.5.0" + sha3 "^2.1.4" + tslib "^2.4.0" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" + +"@aztec/simulator@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/simulator/-/simulator-3.0.0-devnet.2.tgz#7c8423218d4f3d851d27fcb2c703ab207e75f654" + integrity sha512-WjLeQRSLkuE3HqTDBO2j9rUGKjDTxv0pUOa3BSmF+WtatZsjX5YjcBmnJO+Oca6wXYy3Asmif3L2k42rAOqCuA== + dependencies: + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/native" "3.0.0-devnet.2" + "@aztec/noir-acvm_js" "3.0.0-devnet.2" + "@aztec/noir-noirc_abi" "3.0.0-devnet.2" + "@aztec/noir-protocol-circuits-types" "3.0.0-devnet.2" + "@aztec/noir-types" "3.0.0-devnet.2" + "@aztec/protocol-contracts" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + "@aztec/telemetry-client" "3.0.0-devnet.2" + "@aztec/world-state" "3.0.0-devnet.2" + lodash.clonedeep "^4.5.0" + lodash.merge "^4.6.2" + tslib "^2.4.0" + +"@aztec/stdlib@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/stdlib/-/stdlib-3.0.0-devnet.2.tgz#efe4a0874ab4eba3b5da0408c375da28fef8f989" + integrity sha512-YTepOqs+0aPK6pXj1LqPiYFJHcq2pyYDvUXaNaLG5FdxghdhepZQd1KjG4V7zm2cXIqASlgVyzsBJ2mTZKhaXQ== + dependencies: + "@aws-sdk/client-s3" "^3.892.0" + "@aztec/bb.js" "3.0.0-devnet.2" + "@aztec/blob-lib" "3.0.0-devnet.2" + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/ethereum" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/l1-artifacts" "3.0.0-devnet.2" + "@aztec/noir-noirc_abi" "3.0.0-devnet.2" + "@google-cloud/storage" "^7.15.0" + axios "^1.12.0" + json-stringify-deterministic "1.0.12" + lodash.chunk "^4.2.0" + lodash.isequal "^4.5.0" + lodash.omit "^4.5.0" + lodash.times "^4.3.2" + msgpackr "^1.11.2" + pako "^2.1.0" + tslib "^2.4.0" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" + zod "^3.23.8" + +"@aztec/telemetry-client@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/telemetry-client/-/telemetry-client-3.0.0-devnet.2.tgz#8fc9aa023e7692f0ef3d4297ad78434dff3897a2" + integrity sha512-SAIg2ANvVzUDWbP00+2lN35dBRdJQPMcQ8QZ2M+aQBMKvRbyClgVy9800UVGRplPiiirClkN57kkwW+TWX9rrQ== + dependencies: + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + "@opentelemetry/api" "^1.9.0" + "@opentelemetry/api-logs" "^0.55.0" + "@opentelemetry/core" "^1.28.0" + "@opentelemetry/exporter-logs-otlp-http" "^0.55.0" + "@opentelemetry/exporter-metrics-otlp-http" "^0.55.0" + "@opentelemetry/exporter-trace-otlp-http" "^0.55.0" + "@opentelemetry/host-metrics" "^0.36.2" + "@opentelemetry/otlp-exporter-base" "^0.55.0" + "@opentelemetry/resource-detector-gcp" "^0.32.0" + "@opentelemetry/resources" "^1.28.0" + "@opentelemetry/sdk-logs" "^0.55.0" + "@opentelemetry/sdk-metrics" "^1.28.0" + "@opentelemetry/sdk-trace-node" "^1.28.0" + "@opentelemetry/semantic-conventions" "^1.28.0" + prom-client "^15.1.3" + viem "npm:@spalladino/viem@2.38.2-eip7594.0" + +"@aztec/test-wallet@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/test-wallet/-/test-wallet-3.0.0-devnet.2.tgz#01f7d2997629215335cceb9aff9e71a0b2ab59d4" + integrity sha512-IhAqs9b1gZebciUCqNyU89SvvqfHLJYocoPk53cHGKvz3X5vDUbwx/GwQhePhzanyh2R4onVMfD9qX5BVn1xGg== + dependencies: + "@aztec/accounts" "3.0.0-devnet.2" + "@aztec/aztec.js" "3.0.0-devnet.2" + "@aztec/entrypoints" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/noir-contracts.js" "3.0.0-devnet.2" + "@aztec/pxe" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + +"@aztec/world-state@3.0.0-devnet.2": + version "3.0.0-devnet.2" + resolved "https://registry.yarnpkg.com/@aztec/world-state/-/world-state-3.0.0-devnet.2.tgz#711d875c58ec71c23abaf3635c8e4e41b0788ed2" + integrity sha512-YGcKr49SYgDrcUBiXLfbuAog9vzvv5+u6VDBeowBRbfjOrk5oEsujD+DvwwICl+y/vDEFV+uAtJF+QsjP3fBfQ== + dependencies: + "@aztec/constants" "3.0.0-devnet.2" + "@aztec/foundation" "3.0.0-devnet.2" + "@aztec/kv-store" "3.0.0-devnet.2" + "@aztec/merkle-tree" "3.0.0-devnet.2" + "@aztec/native" "3.0.0-devnet.2" + "@aztec/protocol-contracts" "3.0.0-devnet.2" + "@aztec/stdlib" "3.0.0-devnet.2" + "@aztec/telemetry-client" "3.0.0-devnet.2" + tslib "^2.4.0" + zod "^3.23.8" + +"@crate-crypto/node-eth-kzg-darwin-arm64@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-darwin-arm64/-/node-eth-kzg-darwin-arm64-0.10.0.tgz#bdc363b21d91b54bccfb5df513527cfaddcb3f60" + integrity sha512-cKhqkrRdnWhgPycHkcdwfu/w41PuCvAERkX5yYDR3cSYR4h87Gn4t/infE6UNsPDBCN7yYV42YmZfQDfEt2xrw== + +"@crate-crypto/node-eth-kzg-darwin-x64@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-darwin-x64/-/node-eth-kzg-darwin-x64-0.10.0.tgz#f036979451f05e1b15f48aa6c4b4734824526db0" + integrity sha512-8fn4+UBP01ZBxVARTZvxPBGrmcUbYFM/b5z0wZkEevQ9Sz5GYk8hursgpqbhekj+xTCxmwa9pPkzDbtG6oZGQg== + +"@crate-crypto/node-eth-kzg-linux-arm64-gnu@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-linux-arm64-gnu/-/node-eth-kzg-linux-arm64-gnu-0.10.0.tgz#f08670152db67b4b56302a0e7c545e3ce3339dcc" + integrity sha512-euuqBTDLOpI9wNx0jO7AD24BdiCs9sz8cBybsdGJvyZ8QLUIezTnA/aXcrZBzsA5ZOrHYjaWS2NJpgDdAjLLuQ== + +"@crate-crypto/node-eth-kzg-linux-x64-gnu@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-linux-x64-gnu/-/node-eth-kzg-linux-x64-gnu-0.10.0.tgz#4beea66c650cbc62b6605f1e20c7e77a7cd73ecd" + integrity sha512-b4klE/jp98PBZ7PWuFE1OscWBILSS8jP+JMbIJ+qE7y42s/6ImWH5bWmVdFOfh6u0o95cb9hCS0xIECM80SqBg== + +"@crate-crypto/node-eth-kzg-win32-arm64-msvc@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-win32-arm64-msvc/-/node-eth-kzg-win32-arm64-msvc-0.10.0.tgz#9da2998eb80ae240441ac3ef099aff916efadd25" + integrity sha512-tFKv02TG/JYsD4gvV0gTvjLqd09/4g/B37fCPXIuEFzq5LgIuWHu37hhQ6K8eIfoXZOTY3wqqkY1jTXYhs2sTA== + +"@crate-crypto/node-eth-kzg-win32-x64-msvc@0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg-win32-x64-msvc/-/node-eth-kzg-win32-x64-msvc-0.10.0.tgz#13c07c99dc8b4070d7b32d0063ad744bf9af6470" + integrity sha512-mYieW1mBesbLFRB2j4LdodpCkwIxZ8ZHZzzwV+MXqapI61B2SbH+FyMYQ5lJYqQeMHCY0ojq5ScW1zZj1uNGjA== + +"@crate-crypto/node-eth-kzg@^0.10.0": + version "0.10.0" + resolved "https://registry.yarnpkg.com/@crate-crypto/node-eth-kzg/-/node-eth-kzg-0.10.0.tgz#69167c4ab5dd2858afa70ef7added99f6097c560" + integrity sha512-sGDPH1nW2EhJzjzHyINvTQwDNGRzdq/2vVzFwwrmFOHtIBaRjXGqo7wKj/JoJoNjuRSGeXz/EmaahRq0pgxzqw== + optionalDependencies: + "@crate-crypto/node-eth-kzg-darwin-arm64" "0.10.0" + "@crate-crypto/node-eth-kzg-darwin-x64" "0.10.0" + "@crate-crypto/node-eth-kzg-linux-arm64-gnu" "0.10.0" + "@crate-crypto/node-eth-kzg-linux-x64-gnu" "0.10.0" + "@crate-crypto/node-eth-kzg-win32-arm64-msvc" "0.10.0" + "@crate-crypto/node-eth-kzg-win32-x64-msvc" "0.10.0" + +"@esbuild/aix-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz#80fcbe36130e58b7670511e888b8e88a259ed76c" + integrity sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA== + +"@esbuild/android-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz#8aa4965f8d0a7982dc21734bf6601323a66da752" + integrity sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg== + +"@esbuild/android-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.12.tgz#300712101f7f50f1d2627a162e6e09b109b6767a" + integrity sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg== + +"@esbuild/android-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.12.tgz#87dfb27161202bdc958ef48bb61b09c758faee16" + integrity sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg== + +"@esbuild/darwin-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz#79197898ec1ff745d21c071e1c7cc3c802f0c1fd" + integrity sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg== + +"@esbuild/darwin-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz#146400a8562133f45c4d2eadcf37ddd09718079e" + integrity sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA== + +"@esbuild/freebsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz#1c5f9ba7206e158fd2b24c59fa2d2c8bb47ca0fe" + integrity sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg== + +"@esbuild/freebsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz#ea631f4a36beaac4b9279fa0fcc6ca29eaeeb2b3" + integrity sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ== + +"@esbuild/linux-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz#e1066bce58394f1b1141deec8557a5f0a22f5977" + integrity sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ== + +"@esbuild/linux-arm@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz#452cd66b20932d08bdc53a8b61c0e30baf4348b9" + integrity sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw== + +"@esbuild/linux-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz#b24f8acc45bcf54192c7f2f3be1b53e6551eafe0" + integrity sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA== + +"@esbuild/linux-loong64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz#f9cfffa7fc8322571fbc4c8b3268caf15bd81ad0" + integrity sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng== + +"@esbuild/linux-mips64el@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz#575a14bd74644ffab891adc7d7e60d275296f2cd" + integrity sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw== + +"@esbuild/linux-ppc64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz#75b99c70a95fbd5f7739d7692befe60601591869" + integrity sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA== + +"@esbuild/linux-riscv64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz#2e3259440321a44e79ddf7535c325057da875cd6" + integrity sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w== + +"@esbuild/linux-s390x@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz#17676cabbfe5928da5b2a0d6df5d58cd08db2663" + integrity sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg== + +"@esbuild/linux-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz#0583775685ca82066d04c3507f09524d3cd7a306" + integrity sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw== + +"@esbuild/netbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz#f04c4049cb2e252fe96b16fed90f70746b13f4a4" + integrity sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg== + +"@esbuild/netbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz#77da0d0a0d826d7c921eea3d40292548b258a076" + integrity sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ== + +"@esbuild/openbsd-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz#6296f5867aedef28a81b22ab2009c786a952dccd" + integrity sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A== + +"@esbuild/openbsd-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz#f8d23303360e27b16cf065b23bbff43c14142679" + integrity sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw== + +"@esbuild/openharmony-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz#49e0b768744a3924be0d7fd97dd6ce9b2923d88d" + integrity sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg== + +"@esbuild/sunos-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz#a6ed7d6778d67e528c81fb165b23f4911b9b13d6" + integrity sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w== + +"@esbuild/win32-arm64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz#9ac14c378e1b653af17d08e7d3ce34caef587323" + integrity sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg== + +"@esbuild/win32-ia32@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz#918942dcbbb35cc14fca39afb91b5e6a3d127267" + integrity sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ== + +"@esbuild/win32-x64@0.25.12": + version "0.25.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz#9bdad8176be7811ad148d1f8772359041f46c6c5" + integrity sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA== + +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@google-cloud/paginator@^5.0.0": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@google-cloud/paginator/-/paginator-5.0.2.tgz#86ad773266ce9f3b82955a8f75e22cd012ccc889" + integrity sha512-DJS3s0OVH4zFDB1PzjxAsHqJT6sKVbRwwML0ZBP9PbU7Yebtu/7SWMRzvO2J3nUi9pRNITCfu4LJeooM2w4pjg== + dependencies: + arrify "^2.0.0" + extend "^3.0.2" + +"@google-cloud/projectify@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/projectify/-/projectify-4.0.0.tgz#d600e0433daf51b88c1fa95ac7f02e38e80a07be" + integrity sha512-MmaX6HeSvyPbWGwFq7mXdo0uQZLGBYCwziiLIGq5JVX+/bdI3SAq6bP98trV5eTWfLuvsMcIC1YJOF2vfteLFA== + +"@google-cloud/promisify@<4.1.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@google-cloud/promisify/-/promisify-4.0.0.tgz#a906e533ebdd0f754dca2509933334ce58b8c8b1" + integrity sha512-Orxzlfb9c67A15cq2JQEyVc7wEsmFBmHjZWZYQMUyJ1qivXyMwdyNOs9odi79hze+2zqdTtu1E19IM/FtqZ10g== + +"@google-cloud/storage@^7.15.0": + version "7.17.3" + resolved "https://registry.yarnpkg.com/@google-cloud/storage/-/storage-7.17.3.tgz#56006864e47514e7c1cfd12575ee98591f669afe" + integrity sha512-gOnCAbFgAYKRozywLsxagdevTF7Gm+2Ncz5u5CQAuOv/2VCa0rdGJWvJFDOftPx1tc+q8TXiC2pEJfFKu+yeMQ== + dependencies: + "@google-cloud/paginator" "^5.0.0" + "@google-cloud/projectify" "^4.0.0" + "@google-cloud/promisify" "<4.1.0" + abort-controller "^3.0.0" + async-retry "^1.3.3" + duplexify "^4.1.3" + fast-xml-parser "^4.4.1" + gaxios "^6.0.2" + google-auth-library "^9.6.3" + html-entities "^2.5.2" + mime "^3.0.0" + p-limit "^3.0.1" + retry-request "^7.0.0" + teeny-request "^9.0.0" + uuid "^8.0.0" + +"@hapi/bourne@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@hapi/bourne/-/bourne-3.0.0.tgz#f11fdf7dda62fe8e336fa7c6642d9041f30356d7" + integrity sha512-Waj1cwPXJDucOib4a3bAISsKJVb15MKi9IvmTI/7ssVEm6sywXGjVJDhl6/umt1pK1ZS7PacXU3A1PmFKHEZ2w== + +"@isaacs/balanced-match@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz#3081dadbc3460661b751e7591d7faea5df39dd29" + integrity sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ== + +"@isaacs/brace-expansion@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz#4b3dabab7d8e75a429414a96bd67bf4c1d13e0f3" + integrity sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA== + dependencies: + "@isaacs/balanced-match" "^4.0.1" + +"@isaacs/cliui@^8.0.2": + version "8.0.2" + resolved "https://registry.yarnpkg.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550" + integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== + dependencies: + string-width "^5.1.2" + string-width-cjs "npm:string-width@^4.2.0" + strip-ansi "^7.0.1" + strip-ansi-cjs "npm:strip-ansi@^6.0.1" + wrap-ansi "^8.1.0" + wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" + +"@koa/cors@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@koa/cors/-/cors-5.0.0.tgz#0029b5f057fa0d0ae0e37dd2c89ece315a0daffd" + integrity sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw== + dependencies: + vary "^1.1.2" + +"@lmdb/lmdb-darwin-arm64@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-arm64/-/lmdb-darwin-arm64-3.4.3.tgz#dc344d7c5af6355ce4c739533971c0dcd9e3ce7c" + integrity sha512-zR6Y45VNtW5s+A+4AyhrJk0VJKhXdkLhrySCpCu7PSdnakebsOzNxf58p5Xoq66vOSuueGAxlqDAF49HwdrSTQ== + +"@lmdb/lmdb-darwin-x64@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.4.3.tgz#4657af3c309f41038a312cddc16bf9b2b8e5092c" + integrity sha512-nfGm5pQksBGfaj9uMbjC0YyQreny/Pl7mIDtHtw6g7WQuCgeLullr9FNRsYyKplaEJBPrCVpEjpAznxTBIrXBw== + +"@lmdb/lmdb-linux-arm64@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.4.3.tgz#6bd3ec6707e489a8863054c77c99575492cbd662" + integrity sha512-uX9eaPqWb740wg5D3TCvU/js23lSRSKT7lJrrQ8IuEG/VLgpPlxO3lHDywU44yFYdGS7pElBn6ioKFKhvALZlw== + +"@lmdb/lmdb-linux-arm@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.4.3.tgz#7c417f96eaeadd860ff310860b7e918bb19915d3" + integrity sha512-Kjqomp7i0rgSbYSUmv9JnXpS55zYT/YcW3Bdf9oqOTjcH0/8tFAP8MLhu/i9V2pMKIURDZk63Ww49DTK0T3c/Q== + +"@lmdb/lmdb-linux-x64@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.4.3.tgz#231836e23e8d8f53532a47b5756b8096abb1dc57" + integrity sha512-7/8l20D55CfwdMupkc3fNxNJdn4bHsti2X0cp6PwiXlLeSFvAfWs5kCCx+2Cyje4l4GtN//LtKWjTru/9hDJQg== + +"@lmdb/lmdb-win32-arm64@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-arm64/-/lmdb-win32-arm64-3.4.3.tgz#d2b91a43b5ca3cb30af941a222b7eeeef433ac6e" + integrity sha512-yWVR0e5Gl35EGJBsAuqPOdjtUYuN8CcTLKrqpQFoM+KsMadViVCulhKNhkcjSGJB88Am5bRPjMro4MBB9FS23Q== + +"@lmdb/lmdb-win32-x64@3.4.3": + version "3.4.3" + resolved "https://registry.yarnpkg.com/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.4.3.tgz#bb4fbcdddfbb4683ecf7bb28045414bfed90afb0" + integrity sha512-1JdBkcO0Vrua4LUgr4jAe4FUyluwCeq/pDkBrlaVjX3/BBWP1TzVjCL+TibWNQtPAL1BITXPAhlK5Ru4FBd/hg== + +"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz#9edec61b22c3082018a79f6d1c30289ddf3d9d11" + integrity sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw== + +"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz#33677a275204898ad8acbf62734fc4dc0b6a4855" + integrity sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw== + +"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz#19edf7cdc2e7063ee328403c1d895a86dd28f4bb" + integrity sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg== + +"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz#94fb0543ba2e28766c3fc439cabbe0440ae70159" + integrity sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw== + +"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz#4a0609ab5fe44d07c9c60a11e4484d3c38bbd6e3" + integrity sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg== + +"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz#0aa5502d547b57abfc4ac492de68e2006e417242" + integrity sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ== + +"@noble/ciphers@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@noble/ciphers/-/ciphers-1.3.0.tgz#f64b8ff886c240e644e5573c097f86e5b43676dc" + integrity sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw== + +"@noble/curves@1.9.1": + version "1.9.1" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.1.tgz#9654a0bc6c13420ae252ddcf975eaf0f58f0a35c" + integrity sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/curves@=1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.7.0.tgz#0512360622439256df892f21d25b388f52505e45" + integrity sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw== + dependencies: + "@noble/hashes" "1.6.0" + +"@noble/curves@~1.9.0": + version "1.9.7" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.9.7.tgz#79d04b4758a43e4bca2cbdc62e7771352fa6b951" + integrity sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw== + dependencies: + "@noble/hashes" "1.8.0" + +"@noble/hashes@1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.6.0.tgz#d4bfb516ad6e7b5111c216a5cc7075f4cf19e6c5" + integrity sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ== + +"@noble/hashes@1.8.0", "@noble/hashes@^1.8.0", "@noble/hashes@~1.8.0": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.8.0.tgz#cee43d801fcef9644b11b8194857695acd5f815a" + integrity sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A== + +"@opentelemetry/api-logs@0.55.0", "@opentelemetry/api-logs@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.55.0.tgz#5cd7461820d864600250deb3803c32367a6bb2d2" + integrity sha512-3cpa+qI45VHYcA5c0bHM6VHo9gicv3p5mlLHNG3rLyjQU8b7e0st1rWtrUn3JbZ3DwwCfhKop4eQ9UuYlC6Pkg== + dependencies: + "@opentelemetry/api" "^1.3.0" + +"@opentelemetry/api@^1.3.0", "@opentelemetry/api@^1.4.0", "@opentelemetry/api@^1.9.0": + version "1.9.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" + integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== + +"@opentelemetry/context-async-hooks@1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz#4f76280691a742597fd0bf682982126857622948" + integrity sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA== + +"@opentelemetry/core@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.28.0.tgz#e97290a3e36c59480ffb2287fe2713c66749274c" + integrity sha512-ZLwRMV+fNDpVmF2WYUdBHlq0eOWtEaUJSusrzjGnBt7iSRvfjFE3RXYUZJrqou/wIDWV0DwQ5KIfYe9WXg9Xqw== + dependencies: + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/core@1.30.1", "@opentelemetry/core@^1.0.0", "@opentelemetry/core@^1.28.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.30.1.tgz#a0b468bb396358df801881709ea38299fc30ab27" + integrity sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ== + dependencies: + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/exporter-logs-otlp-http@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.55.0.tgz#d9879d36cdf5a114fae662a7f83ef832bdee4cf0" + integrity sha512-fpFObWWq+DoLVrBU2dyMEaVkibByEkmKQZIUIjW/4j7lwIsTgW7aJCoD9RYFVB/tButcqov5Es2C0J2wTjM2tg== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/sdk-logs" "0.55.0" + +"@opentelemetry/exporter-metrics-otlp-http@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-metrics-otlp-http/-/exporter-metrics-otlp-http-0.55.0.tgz#461aa311899df3f6221b3d9bc231040a378ec6d8" + integrity sha512-3MqDNZzgXmLaiVo9gs9kCw/zPEaZYKIT0+jeMWscWHL/jrA9BNArTOYWUHEPabAQmWQ2BbvgNC7yzlqjoynQwA== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-metrics" "1.28.0" + +"@opentelemetry/exporter-trace-otlp-http@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.55.0.tgz#275e458aa3bd33c52d77f4357706bcfa53d27f28" + integrity sha512-lMiNic63EVHpW+eChmLD2CieDmwQBFi72+LFbh8+5hY0ShrDGrsGP/zuT5MRh7M/vM/UZYO/2A/FYd7CMQGR7A== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-exporter-base" "0.55.0" + "@opentelemetry/otlp-transformer" "0.55.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + +"@opentelemetry/host-metrics@^0.36.2": + version "0.36.2" + resolved "https://registry.yarnpkg.com/@opentelemetry/host-metrics/-/host-metrics-0.36.2.tgz#c609ca3564c824b99fb3f6440835fadbd8a855f6" + integrity sha512-eMdea86cfIqx3cdFpcKU3StrjqFkQDIVp7NANVnVWO8O6hDw/DBwGwu4Gi1wJCuoQ2JVwKNWQxUTSRheB6O29Q== + dependencies: + systeminformation "5.23.8" + +"@opentelemetry/otlp-exporter-base@0.55.0", "@opentelemetry/otlp-exporter-base@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.55.0.tgz#db17332497e4a97e4ca85d394fb91cbbcfd76d84" + integrity sha512-iHQI0Zzq3h1T6xUJTVFwmFl5Dt5y1es+fl4kM+k5T/3YvmVyeYkSiF+wHCg6oKrlUAJfk+t55kaAu3sYmt7ZYA== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/otlp-transformer" "0.55.0" + +"@opentelemetry/otlp-transformer@0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/otlp-transformer/-/otlp-transformer-0.55.0.tgz#316b9325983e660cb4f18cb76fa84ce1c0cdad42" + integrity sha512-kVqEfxtp6mSN2Dhpy0REo1ghP4PYhC1kMHQJ2qVlO99Pc+aigELjZDfg7/YKmL71gR6wVGIeJfiql/eXL7sQPA== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/sdk-logs" "0.55.0" + "@opentelemetry/sdk-metrics" "1.28.0" + "@opentelemetry/sdk-trace-base" "1.28.0" + protobufjs "^7.3.0" + +"@opentelemetry/propagator-b3@1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-b3/-/propagator-b3-1.30.1.tgz#b73321e5f30f062a9229887a4aa80c771107fdd2" + integrity sha512-oATwWWDIJzybAZ4pO76ATN5N6FFbOA1otibAVlS8v90B4S1wClnhRUk7K+2CHAwN1JKYuj4jh/lpCEG5BAqFuQ== + dependencies: + "@opentelemetry/core" "1.30.1" + +"@opentelemetry/propagator-jaeger@1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/propagator-jaeger/-/propagator-jaeger-1.30.1.tgz#c06c9dacbe818b80cfb13c4dbf0b57df1ad26b71" + integrity sha512-Pj/BfnYEKIOImirH76M4hDaBSx6HyZ2CXUqk+Kj02m6BB80c/yo4BdWkn/1gDFfU+YPY+bPR2U0DKBfdxCKwmg== + dependencies: + "@opentelemetry/core" "1.30.1" + +"@opentelemetry/resource-detector-gcp@^0.32.0": + version "0.32.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resource-detector-gcp/-/resource-detector-gcp-0.32.0.tgz#4b0fcf8dd09891945250a3f8b0e87fc7c3e6bd49" + integrity sha512-+WdWSG4sZAfsk5DvRj/OUmatsHc+7Rdz8xdmxQdr1jpfUWjcKwOkGA4rondIf2ou/qPLOeYCs6hLLexsRdZaUw== + dependencies: + "@opentelemetry/core" "^1.0.0" + "@opentelemetry/resources" "^1.10.0" + "@opentelemetry/semantic-conventions" "^1.27.0" + gcp-metadata "^6.0.0" + +"@opentelemetry/resources@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.28.0.tgz#c8c27ae7559c817f9d117f1bf96d76f893fb29f5" + integrity sha512-cIyXSVJjGeTICENN40YSvLDAq4Y2502hGK3iN7tfdynQLKWb3XWZQEkPc+eSx47kiy11YeFAlYkEfXwR1w8kfw== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/resources@1.30.1", "@opentelemetry/resources@^1.10.0", "@opentelemetry/resources@^1.28.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.30.1.tgz#a4eae17ebd96947fdc7a64f931ca4b71e18ce964" + integrity sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/sdk-logs@0.55.0", "@opentelemetry/sdk-logs@^0.55.0": + version "0.55.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-logs/-/sdk-logs-0.55.0.tgz#78844e502167723a258c75a6b4f3de3900c13ea3" + integrity sha512-TSx+Yg/d48uWW6HtjS1AD5x6WPfLhDWLl/WxC7I2fMevaiBuKCuraxTB8MDXieCNnBI24bw9ytyXrDCswFfWgA== + dependencies: + "@opentelemetry/api-logs" "0.55.0" + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + +"@opentelemetry/sdk-metrics@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.28.0.tgz#257b5295bbe9de1ad31c5e8cb43a660c25911d20" + integrity sha512-43tqMK/0BcKTyOvm15/WQ3HLr0Vu/ucAl/D84NO7iSlv6O4eOprxSHa3sUtmYkaZWHqdDJV0AHVz/R6u4JALVQ== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + +"@opentelemetry/sdk-metrics@^1.28.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.30.1.tgz#70e2bcd275b9df6e7e925e3fe53cfe71329b5fc8" + integrity sha512-q9zcZ0Okl8jRgmy7eNW3Ku1XSgg3sDLa5evHZpCwjspw7E8Is4K/haRPDJrBcX3YSn/Y7gUvFnByNYEKQNbNog== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + +"@opentelemetry/sdk-trace-base@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.28.0.tgz#6195dc8cd78bd74394cf54c67c5cbd8d1528516c" + integrity sha512-ceUVWuCpIao7Y5xE02Xs3nQi0tOGmMea17ecBdwtCvdo9ekmO+ijc9RFDgfifMl7XCBf41zne/1POM3LqSTZDA== + dependencies: + "@opentelemetry/core" "1.28.0" + "@opentelemetry/resources" "1.28.0" + "@opentelemetry/semantic-conventions" "1.27.0" + +"@opentelemetry/sdk-trace-base@1.30.1": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz#41a42234096dc98e8f454d24551fc80b816feb34" + integrity sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg== + dependencies: + "@opentelemetry/core" "1.30.1" + "@opentelemetry/resources" "1.30.1" + "@opentelemetry/semantic-conventions" "1.28.0" + +"@opentelemetry/sdk-trace-node@^1.28.0": + version "1.30.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-1.30.1.tgz#bd7d68fcfb4d4ae76ea09810df9668b7dd09a2e5" + integrity sha512-cBjYOINt1JxXdpw1e5MlHmFRc5fgj4GW/86vsKFxJCJ8AL4PdVtYH41gWwl4qd4uQjqEL1oJVrXkSy5cnduAnQ== + dependencies: + "@opentelemetry/context-async-hooks" "1.30.1" + "@opentelemetry/core" "1.30.1" + "@opentelemetry/propagator-b3" "1.30.1" + "@opentelemetry/propagator-jaeger" "1.30.1" + "@opentelemetry/sdk-trace-base" "1.30.1" + semver "^7.5.2" + +"@opentelemetry/semantic-conventions@1.27.0": + version "1.27.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.27.0.tgz#1a857dcc95a5ab30122e04417148211e6f945e6c" + integrity sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg== + +"@opentelemetry/semantic-conventions@1.28.0": + version "1.28.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz#337fb2bca0453d0726696e745f50064411f646d6" + integrity sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA== + +"@opentelemetry/semantic-conventions@^1.27.0", "@opentelemetry/semantic-conventions@^1.28.0": + version "1.37.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.37.0.tgz#aa2b4fa0b910b66a050c5ddfcac1d262e91a321a" + integrity sha512-JD6DerIKdJGmRp4jQyX5FlrQjA4tjOw1cvfsPAZXfOOEErMUHjPcPSICS+6WnM0nB0efSFARh0KAZss+bvExOA== + +"@pinojs/redact@^0.4.0": + version "0.4.0" + resolved "https://registry.yarnpkg.com/@pinojs/redact/-/redact-0.4.0.tgz#c3de060dd12640dcc838516aa2a6803cc7b2e9d6" + integrity sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg== + +"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf" + integrity sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ== + +"@protobufjs/base64@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/base64/-/base64-1.1.2.tgz#4c85730e59b9a1f1f349047dbf24296034bb2735" + integrity sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg== + +"@protobufjs/codegen@^2.0.4": + version "2.0.4" + resolved "https://registry.yarnpkg.com/@protobufjs/codegen/-/codegen-2.0.4.tgz#7ef37f0d010fb028ad1ad59722e506d9262815cb" + integrity sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg== + +"@protobufjs/eventemitter@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz#355cbc98bafad5978f9ed095f397621f1d066b70" + integrity sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q== + +"@protobufjs/fetch@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/fetch/-/fetch-1.1.0.tgz#ba99fb598614af65700c1619ff06d454b0d84c45" + integrity sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ== + dependencies: + "@protobufjs/aspromise" "^1.1.1" + "@protobufjs/inquire" "^1.1.0" + +"@protobufjs/float@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@protobufjs/float/-/float-1.0.2.tgz#5e9e1abdcb73fc0a7cb8b291df78c8cbd97b87d1" + integrity sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ== + +"@protobufjs/inquire@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/inquire/-/inquire-1.1.0.tgz#ff200e3e7cf2429e2dcafc1140828e8cc638f089" + integrity sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q== + +"@protobufjs/path@^1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@protobufjs/path/-/path-1.1.2.tgz#6cc2b20c5c9ad6ad0dccfd21ca7673d8d7fbf68d" + integrity sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA== + +"@protobufjs/pool@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/pool/-/pool-1.1.0.tgz#09fd15f2d6d3abfa9b65bc366506d6ad7846ff54" + integrity sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw== + +"@protobufjs/utf8@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@protobufjs/utf8/-/utf8-1.1.0.tgz#a777360b5b39a1a2e5106f8e858f2fd2d060c570" + integrity sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw== + +"@scure/base@~1.2.5": + version "1.2.6" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.2.6.tgz#ca917184b8231394dd8847509c67a0be522e59f6" + integrity sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg== + +"@scure/bip32@1.7.0", "@scure/bip32@^1.7.0": + version "1.7.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.7.0.tgz#b8683bab172369f988f1589640e53c4606984219" + integrity sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw== + dependencies: + "@noble/curves" "~1.9.0" + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + +"@scure/bip39@1.6.0", "@scure/bip39@^1.6.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.6.0.tgz#475970ace440d7be87a6086cbee77cb8f1a684f9" + integrity sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A== + dependencies: + "@noble/hashes" "~1.8.0" + "@scure/base" "~1.2.5" + +"@smithy/abort-controller@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/abort-controller/-/abort-controller-4.2.4.tgz#8031d32aea69c714eae49c1f43ce0ea60481d2d3" + integrity sha512-Z4DUr/AkgyFf1bOThW2HwzREagee0sB5ycl+hDiSZOfRLW8ZgrOjDi6g8mHH19yyU5E2A/64W3z6SMIf5XiUSQ== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader-native@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz#380266951d746b522b4ab2b16bfea6b451147b41" + integrity sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ== + dependencies: + "@smithy/util-base64" "^4.3.0" + tslib "^2.6.2" + +"@smithy/chunked-blob-reader@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz#776fec5eaa5ab5fa70d0d0174b7402420b24559c" + integrity sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA== + dependencies: + tslib "^2.6.2" + +"@smithy/config-resolver@^4.4.1", "@smithy/config-resolver@^4.4.2": + version "4.4.2" + resolved "https://registry.yarnpkg.com/@smithy/config-resolver/-/config-resolver-4.4.2.tgz#0a8017f5691cbb7505e4dbcfc5db5a41321ed4d7" + integrity sha512-4Jys0ni2tB2VZzgslbEgszZyMdTkPOFGA8g+So/NjR8oy6Qwaq4eSwsrRI+NMtb0Dq4kqCzGUu/nGUx7OM/xfw== + dependencies: + "@smithy/node-config-provider" "^4.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-config-provider" "^4.2.0" + "@smithy/util-endpoints" "^3.2.4" + "@smithy/util-middleware" "^4.2.4" + tslib "^2.6.2" + +"@smithy/core@^3.17.2": + version "3.17.2" + resolved "https://registry.yarnpkg.com/@smithy/core/-/core-3.17.2.tgz#bd27762dfd9f61e60b2789a20fa0dfd647827e98" + integrity sha512-n3g4Nl1Te+qGPDbNFAYf+smkRVB+JhFsGy9uJXXZQEufoP4u0r+WLh6KvTDolCswaagysDc/afS1yvb2jnj1gQ== + dependencies: + "@smithy/middleware-serde" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-body-length-browser" "^4.2.0" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-stream" "^4.5.5" + "@smithy/util-utf8" "^4.2.0" + "@smithy/uuid" "^1.1.0" + tslib "^2.6.2" + +"@smithy/credential-provider-imds@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.4.tgz#eb2ab999136c97d942e69638e6126a3c4d8cf79d" + integrity sha512-YVNMjhdz2pVto5bRdux7GMs0x1m0Afz3OcQy/4Yf9DH4fWOtroGH7uLvs7ZmDyoBJzLdegtIPpXrpJOZWvUXdw== + dependencies: + "@smithy/node-config-provider" "^4.3.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + tslib "^2.6.2" + +"@smithy/eventstream-codec@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-codec/-/eventstream-codec-4.2.4.tgz#f9cc680b156d3fac4cc631a8b0159f5e87205143" + integrity sha512-aV8blR9RBDKrOlZVgjOdmOibTC2sBXNiT7WA558b4MPdsLTV6sbyc1WIE9QiIuYMJjYtnPLciefoqSW8Gi+MZQ== + dependencies: + "@aws-crypto/crc32" "5.2.0" + "@smithy/types" "^4.8.1" + "@smithy/util-hex-encoding" "^4.2.0" + tslib "^2.6.2" + +"@smithy/eventstream-serde-browser@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.4.tgz#6aa94f14dd4d3376cb3389a0f6f245994e9e97c7" + integrity sha512-d5T7ZS3J/r8P/PDjgmCcutmNxnSRvPH1U6iHeXjzI50sMr78GLmFcrczLw33Ap92oEKqa4CLrkAPeSSOqvGdUA== + dependencies: + "@smithy/eventstream-serde-universal" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/eventstream-serde-config-resolver@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.4.tgz#6ddd88c57274a6fe72e11bfd5ac858977573dc46" + integrity sha512-lxfDT0UuSc1HqltOGsTEAlZ6H29gpfDSdEPTapD5G63RbnYToZ+ezjzdonCCH90j5tRRCw3aLXVbiZaBW3VRVg== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/eventstream-serde-node@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.4.tgz#61934c44c511bec5b07cfbbf59a2282806cd2ff8" + integrity sha512-TPhiGByWnYyzcpU/K3pO5V7QgtXYpE0NaJPEZBCa1Y5jlw5SjqzMSbFiLb+ZkJhqoQc0ImGyVINqnq1ze0ZRcQ== + dependencies: + "@smithy/eventstream-serde-universal" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/eventstream-serde-universal@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.4.tgz#7c19762047b429d53af4664dc1168482706b4ee7" + integrity sha512-GNI/IXaY/XBB1SkGBFmbW033uWA0tj085eCxYih0eccUe/PFR7+UBQv9HNDk2fD9TJu7UVsCWsH99TkpEPSOzQ== + dependencies: + "@smithy/eventstream-codec" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/fetch-http-handler@^5.3.5": + version "5.3.5" + resolved "https://registry.yarnpkg.com/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.5.tgz#5cfea38d9a1519741c7147fea10a4a064de03f66" + integrity sha512-mg83SM3FLI8Sa2ooTJbsh5MFfyMTyNRwxqpKHmE0ICRIa66Aodv80DMsTQI02xBLVJ0hckwqTRr5IGAbbWuFLQ== + dependencies: + "@smithy/protocol-http" "^5.3.4" + "@smithy/querystring-builder" "^4.2.4" + "@smithy/types" "^4.8.1" + "@smithy/util-base64" "^4.3.0" + tslib "^2.6.2" + +"@smithy/hash-blob-browser@^4.2.5": + version "4.2.5" + resolved "https://registry.yarnpkg.com/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.5.tgz#c82e032747b72811f735c2c1f0ed0c1aeb4de910" + integrity sha512-kCdgjD2J50qAqycYx0imbkA9tPtyQr1i5GwbK/EOUkpBmJGSkJe4mRJm+0F65TUSvvui1HZ5FFGFCND7l8/3WQ== + dependencies: + "@smithy/chunked-blob-reader" "^5.2.0" + "@smithy/chunked-blob-reader-native" "^4.2.1" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/hash-node@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/hash-node/-/hash-node-4.2.4.tgz#45bd19999625166825eb29aafb007819de031894" + integrity sha512-kKU0gVhx/ppVMntvUOZE7WRMFW86HuaxLwvqileBEjL7PoILI8/djoILw3gPQloGVE6O0oOzqafxeNi2KbnUJw== + dependencies: + "@smithy/types" "^4.8.1" + "@smithy/util-buffer-from" "^4.2.0" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/hash-stream-node@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/hash-stream-node/-/hash-stream-node-4.2.4.tgz#553fa9a8fe567b0018cf99be3dafb920bc241a7f" + integrity sha512-amuh2IJiyRfO5MV0X/YFlZMD6banjvjAwKdeJiYGUbId608x+oSNwv3vlyW2Gt6AGAgl3EYAuyYLGRX/xU8npQ== + dependencies: + "@smithy/types" "^4.8.1" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/invalid-dependency@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/invalid-dependency/-/invalid-dependency-4.2.4.tgz#ff957d711b72f432803fdee1e247f0dd4c98251d" + integrity sha512-z6aDLGiHzsMhbS2MjetlIWopWz//K+mCoPXjW6aLr0mypF+Y7qdEh5TyJ20Onf9FbWHiWl4eC+rITdizpnXqOw== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/is-array-buffer@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz#f84f0d9f9a36601a9ca9381688bd1b726fd39111" + integrity sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA== + dependencies: + tslib "^2.6.2" + +"@smithy/is-array-buffer@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz#b0f874c43887d3ad44f472a0f3f961bcce0550c2" + integrity sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ== + dependencies: + tslib "^2.6.2" + +"@smithy/md5-js@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/md5-js/-/md5-js-4.2.4.tgz#e012464383ffde0bd423d38ef9b5caf720ee90eb" + integrity sha512-h7kzNWZuMe5bPnZwKxhVbY1gan5+TZ2c9JcVTHCygB14buVGOZxLl+oGfpY2p2Xm48SFqEWdghpvbBdmaz3ncQ== + dependencies: + "@smithy/types" "^4.8.1" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/middleware-content-length@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-content-length/-/middleware-content-length-4.2.4.tgz#8b625cb264c13c54440ecae59a3e6b1996dfd7b5" + integrity sha512-hJRZuFS9UsElX4DJSJfoX4M1qXRH+VFiLMUnhsWvtOOUWRNvvOfDaUSdlNbjwv1IkpVjj/Rd/O59Jl3nhAcxow== + dependencies: + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/middleware-endpoint@^4.3.6": + version "4.3.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-endpoint/-/middleware-endpoint-4.3.6.tgz#dce57120e72ffeb2d45f1d09d424a9bed1571a21" + integrity sha512-PXehXofGMFpDqr933rxD8RGOcZ0QBAWtuzTgYRAHAL2BnKawHDEdf/TnGpcmfPJGwonhginaaeJIKluEojiF/w== + dependencies: + "@smithy/core" "^3.17.2" + "@smithy/middleware-serde" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + "@smithy/url-parser" "^4.2.4" + "@smithy/util-middleware" "^4.2.4" + tslib "^2.6.2" + +"@smithy/middleware-retry@^4.4.6": + version "4.4.6" + resolved "https://registry.yarnpkg.com/@smithy/middleware-retry/-/middleware-retry-4.4.6.tgz#b3c781b42b8f1ab22ee71358c0e81303cb00d737" + integrity sha512-OhLx131znrEDxZPAvH/OYufR9d1nB2CQADyYFN4C3V/NQS7Mg4V6uvxHC/Dr96ZQW8IlHJTJ+vAhKt6oxWRndA== + dependencies: + "@smithy/node-config-provider" "^4.3.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/service-error-classification" "^4.2.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-retry" "^4.2.4" + "@smithy/uuid" "^1.1.0" + tslib "^2.6.2" + +"@smithy/middleware-serde@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-serde/-/middleware-serde-4.2.4.tgz#43da8ac40e2bcdd30e705a6047a3a667ce44433c" + integrity sha512-jUr3x2CDhV15TOX2/Uoz4gfgeqLrRoTQbYAuhLS7lcVKNev7FeYSJ1ebEfjk+l9kbb7k7LfzIR/irgxys5ZTOg== + dependencies: + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/middleware-stack@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/middleware-stack/-/middleware-stack-4.2.4.tgz#9c833c3c8f2ddda1e2e31c9315ffa31f0f0aa85d" + integrity sha512-Gy3TKCOnm9JwpFooldwAboazw+EFYlC+Bb+1QBsSi5xI0W5lX81j/P5+CXvD/9ZjtYKRgxq+kkqd/KOHflzvgA== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/node-config-provider@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@smithy/node-config-provider/-/node-config-provider-4.3.4.tgz#9e41d45167568dbd2e1bc2c24a25cb26c3fd847f" + integrity sha512-3X3w7qzmo4XNNdPKNS4nbJcGSwiEMsNsRSunMA92S4DJLLIrH5g1AyuOA2XKM9PAPi8mIWfqC+fnfKNsI4KvHw== + dependencies: + "@smithy/property-provider" "^4.2.4" + "@smithy/shared-ini-file-loader" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/node-http-handler@^4.4.4": + version "4.4.4" + resolved "https://registry.yarnpkg.com/@smithy/node-http-handler/-/node-http-handler-4.4.4.tgz#e0ccaae333960df7e9387e9487554b98674b7720" + integrity sha512-VXHGfzCXLZeKnFp6QXjAdy+U8JF9etfpUXD1FAbzY1GzsFJiDQRQIt2CnMUvUdz3/YaHNqT3RphVWMUpXTIODA== + dependencies: + "@smithy/abort-controller" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/querystring-builder" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/property-provider@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/property-provider/-/property-provider-4.2.4.tgz#ea36ed8f1e282060aaf5cd220f2b428682d52775" + integrity sha512-g2DHo08IhxV5GdY3Cpt/jr0mkTlAD39EJKN27Jb5N8Fb5qt8KG39wVKTXiTRCmHHou7lbXR8nKVU14/aRUf86w== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/protocol-http@^5.3.4": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@smithy/protocol-http/-/protocol-http-5.3.4.tgz#2773de28d0b7e8b0ab83e94673fee0966fc8c68c" + integrity sha512-3sfFd2MAzVt0Q/klOmjFi3oIkxczHs0avbwrfn1aBqtc23WqQSmjvk77MBw9WkEQcwbOYIX5/2z4ULj8DuxSsw== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/querystring-builder@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/querystring-builder/-/querystring-builder-4.2.4.tgz#9f57301a895bb986cf7740edd70a91df335e6109" + integrity sha512-KQ1gFXXC+WsbPFnk7pzskzOpn4s+KheWgO3dzkIEmnb6NskAIGp/dGdbKisTPJdtov28qNDohQrgDUKzXZBLig== + dependencies: + "@smithy/types" "^4.8.1" + "@smithy/util-uri-escape" "^4.2.0" + tslib "^2.6.2" + +"@smithy/querystring-parser@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/querystring-parser/-/querystring-parser-4.2.4.tgz#c0cc9b13855e9fc45a0c75ae26482eab6891a25e" + integrity sha512-aHb5cqXZocdzEkZ/CvhVjdw5l4r1aU/9iMEyoKzH4eXMowT6M0YjBpp7W/+XjkBnY8Xh0kVd55GKjnPKlCwinQ== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/service-error-classification@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/service-error-classification/-/service-error-classification-4.2.4.tgz#acace7208270c8a9c4f2218092866b4d650d4719" + integrity sha512-fdWuhEx4+jHLGeew9/IvqVU/fxT/ot70tpRGuOLxE3HzZOyKeTQfYeV1oaBXpzi93WOk668hjMuuagJ2/Qs7ng== + dependencies: + "@smithy/types" "^4.8.1" + +"@smithy/shared-ini-file-loader@^4.3.4": + version "4.3.4" + resolved "https://registry.yarnpkg.com/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.3.4.tgz#ba0707daba05d7705ae120abdc27dbfa5b5b9049" + integrity sha512-y5ozxeQ9omVjbnJo9dtTsdXj9BEvGx2X8xvRgKnV+/7wLBuYJQL6dOa/qMY6omyHi7yjt1OA97jZLoVRYi8lxA== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/signature-v4@^5.3.4": + version "5.3.4" + resolved "https://registry.yarnpkg.com/@smithy/signature-v4/-/signature-v4-5.3.4.tgz#d2233c39ce0b02041a11c5cfd210f3e61982931a" + integrity sha512-ScDCpasxH7w1HXHYbtk3jcivjvdA1VICyAdgvVqKhKKwxi+MTwZEqFw0minE+oZ7F07oF25xh4FGJxgqgShz0A== + dependencies: + "@smithy/is-array-buffer" "^4.2.0" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-hex-encoding" "^4.2.0" + "@smithy/util-middleware" "^4.2.4" + "@smithy/util-uri-escape" "^4.2.0" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/smithy-client@^4.9.2": + version "4.9.2" + resolved "https://registry.yarnpkg.com/@smithy/smithy-client/-/smithy-client-4.9.2.tgz#6f9d916da362de7ac8e685112e3f68a9eba56b94" + integrity sha512-gZU4uAFcdrSi3io8U99Qs/FvVdRxPvIMToi+MFfsy/DN9UqtknJ1ais+2M9yR8e0ASQpNmFYEKeIKVcMjQg3rg== + dependencies: + "@smithy/core" "^3.17.2" + "@smithy/middleware-endpoint" "^4.3.6" + "@smithy/middleware-stack" "^4.2.4" + "@smithy/protocol-http" "^5.3.4" + "@smithy/types" "^4.8.1" + "@smithy/util-stream" "^4.5.5" + tslib "^2.6.2" + +"@smithy/types@^4.8.1": + version "4.8.1" + resolved "https://registry.yarnpkg.com/@smithy/types/-/types-4.8.1.tgz#0ecad4e329340c8844e38a18c7608d84cc1c853c" + integrity sha512-N0Zn0OT1zc+NA+UVfkYqQzviRh5ucWwO7mBV3TmHHprMnfcJNfhlPicDkBHi0ewbh+y3evR6cNAW0Raxvb01NA== + dependencies: + tslib "^2.6.2" + +"@smithy/url-parser@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/url-parser/-/url-parser-4.2.4.tgz#36336ea90529ff00de473a2c82d1487d87a588b1" + integrity sha512-w/N/Iw0/PTwJ36PDqU9PzAwVElo4qXxCC0eCTlUtIz/Z5V/2j/cViMHi0hPukSBHp4DVwvUlUhLgCzqSJ6plrg== + dependencies: + "@smithy/querystring-parser" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-base64@^4.3.0": + version "4.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-base64/-/util-base64-4.3.0.tgz#5e287b528793aa7363877c1a02cd880d2e76241d" + integrity sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ== + dependencies: + "@smithy/util-buffer-from" "^4.2.0" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/util-body-length-browser@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz#04e9fc51ee7a3e7f648a4b4bcdf96c350cfa4d61" + integrity sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg== + dependencies: + tslib "^2.6.2" + +"@smithy/util-body-length-node@^4.2.1": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz#79c8a5d18e010cce6c42d5cbaf6c1958523e6fec" + integrity sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-buffer-from@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz#6fc88585165ec73f8681d426d96de5d402021e4b" + integrity sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA== + dependencies: + "@smithy/is-array-buffer" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-buffer-from@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz#7abd12c4991b546e7cee24d1e8b4bfaa35c68a9d" + integrity sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew== + dependencies: + "@smithy/is-array-buffer" "^4.2.0" + tslib "^2.6.2" + +"@smithy/util-config-provider@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz#2e4722937f8feda4dcb09672c59925a4e6286cfc" + integrity sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q== + dependencies: + tslib "^2.6.2" + +"@smithy/util-defaults-mode-browser@^4.3.5": + version "4.3.5" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.5.tgz#c74f357b048d20c95aa636fa79d33bcfa799e2d0" + integrity sha512-GwaGjv/QLuL/QHQaqhf/maM7+MnRFQQs7Bsl6FlaeK6lm6U7mV5AAnVabw68cIoMl5FQFyKK62u7RWRzWL25OQ== + dependencies: + "@smithy/property-provider" "^4.2.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-defaults-mode-node@^4.2.7": + version "4.2.8" + resolved "https://registry.yarnpkg.com/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.8.tgz#3a52ae1a064b85b019aa2ccbe9b61a91e6cc605f" + integrity sha512-gIoTf9V/nFSIZ0TtgDNLd+Ws59AJvijmMDYrOozoMHPJaG9cMRdqNO50jZTlbM6ydzQYY8L/mQ4tKSw/TB+s6g== + dependencies: + "@smithy/config-resolver" "^4.4.2" + "@smithy/credential-provider-imds" "^4.2.4" + "@smithy/node-config-provider" "^4.3.4" + "@smithy/property-provider" "^4.2.4" + "@smithy/smithy-client" "^4.9.2" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-endpoints@^3.2.4": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@smithy/util-endpoints/-/util-endpoints-3.2.4.tgz#d68a4692a55b14f2060de75715bd4664b93a4353" + integrity sha512-f+nBDhgYRCmUEDKEQb6q0aCcOTXRDqH5wWaFHJxt4anB4pKHlgGoYP3xtioKXH64e37ANUkzWf6p4Mnv1M5/Vg== + dependencies: + "@smithy/node-config-provider" "^4.3.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-hex-encoding@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz#1c22ea3d1e2c3a81ff81c0a4f9c056a175068a7b" + integrity sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw== + dependencies: + tslib "^2.6.2" + +"@smithy/util-middleware@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/util-middleware/-/util-middleware-4.2.4.tgz#d66d6b67c4c90be7bf0659f57000122b1a6bbf82" + integrity sha512-fKGQAPAn8sgV0plRikRVo6g6aR0KyKvgzNrPuM74RZKy/wWVzx3BMk+ZWEueyN3L5v5EDg+P582mKU+sH5OAsg== + dependencies: + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-retry@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/util-retry/-/util-retry-4.2.4.tgz#1f466d3bc5b5f114994ac2298e859815f3a8deec" + integrity sha512-yQncJmj4dtv/isTXxRb4AamZHy4QFr4ew8GxS6XLWt7sCIxkPxPzINWd7WLISEFPsIan14zrKgvyAF+/yzfwoA== + dependencies: + "@smithy/service-error-classification" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/util-stream@^4.5.5": + version "4.5.5" + resolved "https://registry.yarnpkg.com/@smithy/util-stream/-/util-stream-4.5.5.tgz#a3fd73775c65dd23370d021b8818914a2c44f28e" + integrity sha512-7M5aVFjT+HPilPOKbOmQfCIPchZe4DSBc1wf1+NvHvSoFTiFtauZzT+onZvCj70xhXd0AEmYnZYmdJIuwxOo4w== + dependencies: + "@smithy/fetch-http-handler" "^5.3.5" + "@smithy/node-http-handler" "^4.4.4" + "@smithy/types" "^4.8.1" + "@smithy/util-base64" "^4.3.0" + "@smithy/util-buffer-from" "^4.2.0" + "@smithy/util-hex-encoding" "^4.2.0" + "@smithy/util-utf8" "^4.2.0" + tslib "^2.6.2" + +"@smithy/util-uri-escape@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz#096a4cec537d108ac24a68a9c60bee73fc7e3a9e" + integrity sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA== + dependencies: + tslib "^2.6.2" + +"@smithy/util-utf8@^2.0.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-2.3.0.tgz#dd96d7640363259924a214313c3cf16e7dd329c5" + integrity sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A== + dependencies: + "@smithy/util-buffer-from" "^2.2.0" + tslib "^2.6.2" + +"@smithy/util-utf8@^4.2.0": + version "4.2.0" + resolved "https://registry.yarnpkg.com/@smithy/util-utf8/-/util-utf8-4.2.0.tgz#8b19d1514f621c44a3a68151f3d43e51087fed9d" + integrity sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw== + dependencies: + "@smithy/util-buffer-from" "^4.2.0" + tslib "^2.6.2" + +"@smithy/util-waiter@^4.2.4": + version "4.2.4" + resolved "https://registry.yarnpkg.com/@smithy/util-waiter/-/util-waiter-4.2.4.tgz#a28b7835aacd82ae2d10da5af5bf21b3c21b34ac" + integrity sha512-roKXtXIC6fopFvVOju8VYHtguc/jAcMlK8IlDOHsrQn0ayMkHynjm/D2DCMRf7MJFXzjHhlzg2edr3QPEakchQ== + dependencies: + "@smithy/abort-controller" "^4.2.4" + "@smithy/types" "^4.8.1" + tslib "^2.6.2" + +"@smithy/uuid@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@smithy/uuid/-/uuid-1.1.0.tgz#9fd09d3f91375eab94f478858123387df1cda987" + integrity sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw== + dependencies: + tslib "^2.6.2" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@types/bun@latest": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@types/bun/-/bun-1.3.1.tgz#275836f9dfcb2f9b1a1d4144026e404b4d42a766" + integrity sha512-4jNMk2/K9YJtfqwoAa28c8wK+T7nvJFOjxI4h/7sORWcypRNxBpr+TPNaCfVWq70tLCJsqoFwcf0oI0JU/fvMQ== + dependencies: + bun-types "1.3.1" + +"@types/caseless@*": + version "0.12.5" + resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.5.tgz#db9468cb1b1b5a925b8f34822f1669df0c5472f5" + integrity sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg== + +"@types/node@*", "@types/node@>=13.7.0": + version "24.10.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.0.tgz#6b79086b0dfc54e775a34ba8114dcc4e0221f31f" + integrity sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A== + dependencies: + undici-types "~7.16.0" + +"@types/request@^2.48.8": + version "2.48.13" + resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.13.tgz#abdf4256524e801ea8fdda54320f083edb5a6b80" + integrity sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg== + dependencies: + "@types/caseless" "*" + "@types/node" "*" + "@types/tough-cookie" "*" + form-data "^2.5.5" + +"@types/tough-cookie@*": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== + +"@viem/anvil@^0.0.10": + version "0.0.10" + resolved "https://registry.yarnpkg.com/@viem/anvil/-/anvil-0.0.10.tgz#aa64fd96017d6875c9e8bebc223d394a55bc3a72" + integrity sha512-9PzYXBRikfSUhhm8Bd0avv07agwcbMJ5FaSu2D2vbE0cxkvXGtolL3fW5nz2yefMqOqVQL4XzfM5nwY81x3ytw== + dependencies: + execa "^7.1.1" + get-port "^6.1.2" + http-proxy "^1.18.1" + ws "^8.13.0" + +abitype@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.0.tgz#510c5b3f92901877977af5e864841f443bf55406" + integrity sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A== + +abitype@^1.0.9: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.1.tgz#b50ed400f8bfca5452eb4033445c309d3e1117c8" + integrity sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q== + +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +abstract-leveldown@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" + integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== + dependencies: + buffer "^6.0.3" + catering "^2.0.0" + is-buffer "^2.0.5" + level-concat-iterator "^3.0.0" + level-supports "^2.0.1" + queue-microtask "^1.2.3" + +accepts@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +add@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235" + integrity sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^7.1.2: + version "7.1.4" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" + integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-regex@^6.0.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" + integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^6.1.0: + version "6.2.3" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" + integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +arrify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + +async-retry@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" + integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== + dependencies: + retry "0.13.1" + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +atomic-sleep@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" + integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== + +axios@^1.12.0: + version "1.13.2" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" + integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.4" + proxy-from-env "^1.1.0" + +base64-js@^1.3.0, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +bignumber.js@^9.0.0: + version "9.3.1" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" + integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== + +bintrees@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" + integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== + +bn.js@^5.2.1: + version "5.2.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" + integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== + +bowser@^2.11.0: + version "2.12.1" + resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.12.1.tgz#f9ad78d7aebc472feb63dd9635e3ce2337e0e2c1" + integrity sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw== + +buffer-equal-constant-time@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@6.0.3, buffer@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" + integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.2.1" + +bun-types@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/bun-types/-/bun-types-1.3.1.tgz#15857727b1030960538a0485983044af8696c81d" + integrity sha512-NMrcy7smratanWJ2mMXdpatalovtxVggkj11bScuWuiOoXTiKIu2eVS1/7qbyI/4yHedtsn175n4Sm4JcdHLXw== + dependencies: + "@types/node" "*" + +bytes@3.1.2, bytes@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cache-content-type@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" + integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== + dependencies: + mime-types "^2.1.18" + ylru "^1.2.0" + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bound@^1.0.2, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +catering@^2.0.0, catering@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" + integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +change-case@^5.4.4: + version "5.4.4" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-5.4.4.tgz#0d52b507d8fb8f204343432381d1a6d7bff97a02" + integrity sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w== + +co-body@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.2.0.tgz#afd776d60e5659f4eee862df83499698eb1aea1b" + integrity sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA== + dependencies: + "@hapi/bourne" "^3.0.0" + inflation "^2.0.0" + qs "^6.5.2" + raw-body "^2.3.3" + type-is "^1.6.16" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colorette@^2.0.20, colorette@^2.0.7: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +comlink@^4.4.1: + version "4.4.2" + resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.2.tgz#cbbcd82742fbebc06489c28a183eedc5c60a2bca" + integrity sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g== + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@^12.1.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + +compressible@^2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +content-disposition@~0.5.2: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-hex@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/convert-hex/-/convert-hex-0.1.0.tgz#08c04568922c27776b8a2e81a95d393362ea0b65" + integrity sha512-w20BOb1PiR/sEJdS6wNrUjF5CSfscZFUp7R9NSlXH8h2wynzXVEPFPJECAnkNylZ+cvf3p7TyRUHggDmrwXT9A== + +convert-string@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/convert-string/-/convert-string-0.1.0.tgz#79ce41a9bb0d03bcf72cdc6a8f3c56fbbc64410a" + integrity sha512-1KX9ESmtl8xpT2LN2tFnKSbV4NiarbVi8DVb39ZriijvtTklyrT+4dT1wsGMHKD3CJUjXgvJzstm9qL9ICojGA== + +cookies@~0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" + integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== + dependencies: + depd "~2.0.0" + keygrip "~1.1.0" + +copy-to@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" + integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w== + +cross-spawn@^7.0.3, cross-spawn@^7.0.6: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +dateformat@^4.6.3: + version "4.6.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" + integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== + +debug@4, debug@^4.3.2, debug@^4.4.1: + version "4.4.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" + integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== + dependencies: + ms "^2.1.3" + +deep-equal@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" + integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0, depd@^2.0.0, depd@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +destroy@^1.0.4: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-libc@^2.0.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" + integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== + +detect-node@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +dotenv@^16.0.3: + version "16.6.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" + integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +duplexify@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" + integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA== + dependencies: + end-of-stream "^1.4.1" + inherits "^2.0.3" + readable-stream "^3.1.1" + stream-shift "^1.0.2" + +eastasianwidth@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" + integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== + +ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emoji-regex@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" + integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== + +encodeurl@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +end-of-stream@^1.1.0, end-of-stream@^1.4.1: + version "1.4.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" + integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== + dependencies: + once "^1.4.0" + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +esbuild@~0.25.0: + version "0.25.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5" + integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.12" + "@esbuild/android-arm" "0.25.12" + "@esbuild/android-arm64" "0.25.12" + "@esbuild/android-x64" "0.25.12" + "@esbuild/darwin-arm64" "0.25.12" + "@esbuild/darwin-x64" "0.25.12" + "@esbuild/freebsd-arm64" "0.25.12" + "@esbuild/freebsd-x64" "0.25.12" + "@esbuild/linux-arm" "0.25.12" + "@esbuild/linux-arm64" "0.25.12" + "@esbuild/linux-ia32" "0.25.12" + "@esbuild/linux-loong64" "0.25.12" + "@esbuild/linux-mips64el" "0.25.12" + "@esbuild/linux-ppc64" "0.25.12" + "@esbuild/linux-riscv64" "0.25.12" + "@esbuild/linux-s390x" "0.25.12" + "@esbuild/linux-x64" "0.25.12" + "@esbuild/netbsd-arm64" "0.25.12" + "@esbuild/netbsd-x64" "0.25.12" + "@esbuild/openbsd-arm64" "0.25.12" + "@esbuild/openbsd-x64" "0.25.12" + "@esbuild/openharmony-arm64" "0.25.12" + "@esbuild/sunos-x64" "0.25.12" + "@esbuild/win32-arm64" "0.25.12" + "@esbuild/win32-ia32" "0.25.12" + "@esbuild/win32-x64" "0.25.12" + +escape-html@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + +eventemitter3@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" + integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +execa@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" + integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== + dependencies: + cross-spawn "^7.0.3" + get-stream "^6.0.1" + human-signals "^4.3.0" + is-stream "^3.0.0" + merge-stream "^2.0.0" + npm-run-path "^5.1.0" + onetime "^6.0.0" + signal-exit "^3.0.7" + strip-final-newline "^3.0.0" + +extend@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-copy@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" + integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== + +fast-safe-stringify@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" + integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== + +fast-xml-parser@5.2.5: + version "5.2.5" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz#4809fdfb1310494e341098c25cb1341a01a9144a" + integrity sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ== + dependencies: + strnum "^2.1.0" + +fast-xml-parser@^4.4.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb" + integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig== + dependencies: + strnum "^1.1.1" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +follow-redirects@^1.0.0, follow-redirects@^1.15.6: + version "1.15.11" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" + integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== + +foreground-child@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" + integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== + dependencies: + cross-spawn "^7.0.6" + signal-exit "^4.0.1" + +form-data@^2.5.5: + version "2.5.5" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.5.tgz#a5f6364ad7e4e67e95b4a07e2d8c6f711c74f624" + integrity sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.35" + safe-buffer "^5.2.1" + +form-data@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +fresh@~0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +gaxios@^6.0.0, gaxios@^6.0.2, gaxios@^6.1.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.1.tgz#ebd9f7093ede3ba502685e73390248bb5b7f71fb" + integrity sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ== + dependencies: + extend "^3.0.2" + https-proxy-agent "^7.0.1" + is-stream "^2.0.0" + node-fetch "^2.6.9" + uuid "^9.0.1" + +gcp-metadata@^6.0.0, gcp-metadata@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-6.1.1.tgz#f65aa69f546bc56e116061d137d3f5f90bdec494" + integrity sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A== + dependencies: + gaxios "^6.1.1" + google-logging-utils "^0.0.2" + json-bigint "^1.0.0" + +generator-function@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" + integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== + +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-port@^6.1.2: + version "6.1.2" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-6.1.2.tgz#c1228abb67ba0e17fb346da33b15187833b9c08a" + integrity sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw== + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-stream@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-tsconfig@^4.7.5: + version "4.13.0" + resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7" + integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ== + dependencies: + resolve-pkg-maps "^1.0.0" + +glob@^11.0.3: + version "11.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6" + integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA== + dependencies: + foreground-child "^3.3.1" + jackspeak "^4.1.1" + minimatch "^10.0.3" + minipass "^7.1.2" + package-json-from-dist "^1.0.0" + path-scurry "^2.0.0" + +google-auth-library@^9.6.3: + version "9.15.1" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.15.1.tgz#0c5d84ed1890b2375f1cd74f03ac7b806b392928" + integrity sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng== + dependencies: + base64-js "^1.3.0" + ecdsa-sig-formatter "^1.0.11" + gaxios "^6.1.1" + gcp-metadata "^6.1.0" + gtoken "^7.0.0" + jws "^4.0.0" + +google-logging-utils@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/google-logging-utils/-/google-logging-utils-0.0.2.tgz#5fd837e06fa334da450433b9e3e1870c1594466a" + integrity sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ== + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +gtoken@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.1.0.tgz#d61b4ebd10132222817f7222b1e6064bd463fc26" + integrity sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw== + dependencies: + gaxios "^6.0.0" + jws "^4.0.0" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +help-me@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" + integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== + +html-entities@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" + integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== + +http-assert@^1.3.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" + integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== + dependencies: + deep-equal "~1.0.1" + http-errors "~1.8.0" + +http-errors@2.0.0, http-errors@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@^1.6.3, http-errors@^1.8.1, http-errors@~1.8.0: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== + dependencies: + depd "~1.1.2" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.1" + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +https-proxy-agent@^7.0.1: + version "7.0.6" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" + integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== + dependencies: + agent-base "^7.1.2" + debug "4" + +human-signals@^4.3.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" + integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +idb-keyval@^6.2.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.2.tgz#b0171b5f73944854a3291a5cdba8e12768c4854a" + integrity sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg== + +idb@^8.0.0: + version "8.0.3" + resolved "https://registry.yarnpkg.com/idb/-/idb-8.0.3.tgz#c91e558f15a8d53f1d7f53a094d226fc3ad71fd9" + integrity sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg== + +ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +inflation@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.1.0.tgz#9214db11a47e6f756d111c4f9df96971c60f886c" + integrity sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ== + +inherits@2.0.4, inherits@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-buffer@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-function@^1.0.7: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" + integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== + dependencies: + call-bound "^1.0.4" + generator-function "^2.0.0" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" + integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isows@1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915" + integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== + +jackspeak@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" + integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== + dependencies: + "@isaacs/cliui" "^8.0.2" + +joycon@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" + integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== + +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" + +json-stringify-deterministic@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz#aaa3f907466ed01e3afd77b898d0a2b3b132820a" + integrity sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g== + +jwa@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" + integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== + dependencies: + buffer-equal-constant-time "^1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" + integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== + dependencies: + jwa "^2.0.0" + safe-buffer "^5.0.1" + +keygrip@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" + integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== + dependencies: + tsscmp "1.0.6" + +koa-bodyparser@^4.4.0: + version "4.4.1" + resolved "https://registry.yarnpkg.com/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz#a908d848e142cc57d9eece478e932bf00dce3029" + integrity sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w== + dependencies: + co-body "^6.0.0" + copy-to "^2.0.1" + type-is "^1.6.18" + +koa-compose@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" + integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== + +koa-compress@^5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/koa-compress/-/koa-compress-5.1.1.tgz#4f1599cfcaab23de1cd97d0a0ff9b5d05b0ffa52" + integrity sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg== + dependencies: + bytes "^3.1.2" + compressible "^2.0.18" + http-errors "^1.8.1" + koa-is-json "^1.0.0" + +koa-convert@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" + integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== + dependencies: + co "^4.6.0" + koa-compose "^4.1.0" + +koa-is-json@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14" + integrity sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw== + +koa-router@^13.1.1: + version "13.1.1" + resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-13.1.1.tgz#7b7d08b1aba82c4cc50ad71164b0d6d33d368784" + integrity sha512-3GxRi7CxEgsfGhdFf4OW4OLv0DFdyNl2drcOCtoezi+LDSnkg0mhr1Iq5Q25R4FJt3Gw6dcAKrcpaCJ7WJfhYg== + dependencies: + debug "^4.4.1" + http-errors "^2.0.0" + koa-compose "^4.1.0" + path-to-regexp "^6.3.0" + +koa@^2.16.1: + version "2.16.3" + resolved "https://registry.yarnpkg.com/koa/-/koa-2.16.3.tgz#dd3a250472862cf7a3ef6e25bf325cc9db620ab5" + integrity sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g== + dependencies: + accepts "^1.3.5" + cache-content-type "^1.0.0" + content-disposition "~0.5.2" + content-type "^1.0.4" + cookies "~0.9.0" + debug "^4.3.2" + delegates "^1.0.0" + depd "^2.0.0" + destroy "^1.0.4" + encodeurl "^1.0.2" + escape-html "^1.0.3" + fresh "~0.5.2" + http-assert "^1.3.0" + http-errors "^1.6.3" + is-generator-function "^1.0.7" + koa-compose "^4.1.0" + koa-convert "^2.0.0" + on-finished "^2.3.0" + only "~0.0.2" + parseurl "^1.3.2" + statuses "^1.5.0" + type-is "^1.6.16" + vary "^1.1.2" + +level-concat-iterator@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" + integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== + dependencies: + catering "^2.1.0" + +level-supports@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" + integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== + +leveldown@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.1.tgz#0f0e480fa88fd807abf94c33cb7e40966ea4b5ce" + integrity sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A== + dependencies: + abstract-leveldown "^7.2.0" + napi-macros "~2.0.0" + node-gyp-build "^4.3.0" + +lmdb@^3.2.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-3.4.3.tgz#47b1875ff67efce752c10bf892b563c1307cf0b3" + integrity sha512-GWV1kVi6uhrXWqe+3NXWO73OYe8fto6q8JMo0HOpk1vf8nEyFWgo4CSNJpIFzsOxOrysVUlcO48qRbQfmKd1gA== + dependencies: + msgpackr "^1.11.2" + node-addon-api "^6.1.0" + node-gyp-build-optional-packages "5.2.2" + ordered-binary "^1.5.3" + weak-lru-cache "^1.2.2" + optionalDependencies: + "@lmdb/lmdb-darwin-arm64" "3.4.3" + "@lmdb/lmdb-darwin-x64" "3.4.3" + "@lmdb/lmdb-linux-arm" "3.4.3" + "@lmdb/lmdb-linux-arm64" "3.4.3" + "@lmdb/lmdb-linux-x64" "3.4.3" + "@lmdb/lmdb-win32-arm64" "3.4.3" + "@lmdb/lmdb-win32-x64" "3.4.3" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.chunk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" + integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.clonedeepwith@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" + integrity sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.omit@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" + integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== + +lodash.pickby@^4.5.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" + integrity sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q== + +lodash.times@^4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/lodash.times/-/lodash.times-4.3.2.tgz#3e1f2565c431754d54ab57f2ed1741939285ca1d" + integrity sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A== + +long@^5.0.0: + version "5.3.2" + resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" + integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== + +lru-cache@^11.0.0: + version "11.2.2" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.2.tgz#40fd37edffcfae4b2940379c0722dc6eeaa75f24" + integrity sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +"mime-db@>= 1.43.0 < 2": + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" + integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== + +mimic-fn@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" + integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== + +minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@^10.0.3: + version "10.1.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" + integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== + dependencies: + "@isaacs/brace-expansion" "^5.0.0" + +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass@^7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" + integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +msgpackr-extract@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012" + integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== + dependencies: + node-gyp-build-optional-packages "5.2.2" + optionalDependencies: + "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" + "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" + +msgpackr@^1.11.2: + version "1.11.5" + resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.5.tgz#edf0b9d9cb7d8ed6897dd0e42cfb865a2f4b602e" + integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== + optionalDependencies: + msgpackr-extract "^3.0.2" + +napi-macros@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" + integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +node-addon-api@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" + integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== + +node-fetch@^2.6.9: + version "2.7.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== + dependencies: + whatwg-url "^5.0.0" + +node-gyp-build-optional-packages@5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4" + integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== + dependencies: + detect-libc "^2.0.1" + +node-gyp-build@^4.3.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +npm-run-path@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" + integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== + dependencies: + path-key "^4.0.0" + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +ohash@^2.0.11: + version "2.0.11" + resolved "https://registry.yarnpkg.com/ohash/-/ohash-2.0.11.tgz#60b11e8cff62ca9dee88d13747a5baa145f5900b" + integrity sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ== + +on-exit-leak-free@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" + integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== + +on-finished@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +once@^1.3.1, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" + integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== + dependencies: + mimic-fn "^4.0.0" + +only@~0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" + integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== + +ordered-binary@^1.5.3: + version "1.6.0" + resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.6.0.tgz#9c490dadc0b1336ca6917d8d41dd474b8c0bff32" + integrity sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ== + +ox@0.9.6: + version "0.9.6" + resolved "https://registry.yarnpkg.com/ox/-/ox-0.9.6.tgz#5cf02523b6db364c10ee7f293ff1e664e0e1eab7" + integrity sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg== + dependencies: + "@adraffy/ens-normalize" "^1.11.0" + "@noble/ciphers" "^1.3.0" + "@noble/curves" "1.9.1" + "@noble/hashes" "^1.8.0" + "@scure/bip32" "^1.7.0" + "@scure/bip39" "^1.6.0" + abitype "^1.0.9" + eventemitter3 "5.0.1" + +p-limit@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +package-json-from-dist@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" + integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== + +pako@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" + integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== + +parseurl@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-key@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" + integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== + +path-scurry@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" + integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== + dependencies: + lru-cache "^11.0.0" + minipass "^7.1.2" + +path-to-regexp@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" + integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== + +pino-abstract-transport@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" + integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== + dependencies: + split2 "^4.0.0" + +pino-pretty@^13.0.0: + version "13.1.2" + resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-13.1.2.tgz#4e7484f2c5d02cce03159b96aa04697bf9e84ff6" + integrity sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ== + dependencies: + colorette "^2.0.7" + dateformat "^4.6.3" + fast-copy "^3.0.2" + fast-safe-stringify "^2.1.1" + help-me "^5.0.0" + joycon "^3.1.1" + minimist "^1.2.6" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^2.0.0" + pump "^3.0.0" + secure-json-parse "^4.0.0" + sonic-boom "^4.0.1" + strip-json-comments "^5.0.2" + +pino-std-serializers@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" + integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== + +pino@^9.5.0: + version "9.14.0" + resolved "https://registry.yarnpkg.com/pino/-/pino-9.14.0.tgz#673d9711c2d1e64d18670c1ec05ef7ba14562556" + integrity sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w== + dependencies: + "@pinojs/redact" "^0.4.0" + atomic-sleep "^1.0.0" + on-exit-leak-free "^2.1.0" + pino-abstract-transport "^2.0.0" + pino-std-serializers "^7.0.0" + process-warning "^5.0.0" + quick-format-unescaped "^4.0.3" + real-require "^0.2.0" + safe-stable-stringify "^2.3.1" + sonic-boom "^4.0.1" + thread-stream "^3.0.0" + +process-warning@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" + integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA== + +prom-client@^15.1.3: + version "15.1.3" + resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.3.tgz#69fa8de93a88bc9783173db5f758dc1c69fa8fc2" + integrity sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g== + dependencies: + "@opentelemetry/api" "^1.4.0" + tdigest "^0.1.1" + +protobufjs@^7.3.0: + version "7.5.4" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" + integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/node" ">=13.7.0" + long "^5.0.0" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +pump@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" + integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +qs@^6.5.2: + version "6.14.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== + dependencies: + side-channel "^1.1.0" + +queue-microtask@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +quick-format-unescaped@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" + integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== + +raw-body@^2.3.3: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@^3.1.1: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +real-require@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" + integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-pkg-maps@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" + integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== + +retry-request@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-7.0.2.tgz#60bf48cfb424ec01b03fca6665dee91d06dd95f3" + integrity sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w== + dependencies: + "@types/request" "^2.48.8" + extend "^3.0.2" + teeny-request "^9.0.0" + +retry@0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + +safe-stable-stringify@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" + integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +secure-json-parse@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-4.1.0.tgz#4f1ab41c67a13497ea1b9131bb4183a22865477c" + integrity sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA== + +semver@^7.5.2: + version "7.7.3" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" + integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha256@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/sha256/-/sha256-0.2.0.tgz#73a0b418daab7035bff86e8491e363412fc2ab05" + integrity sha512-kTWMJUaez5iiT9CcMv8jSq6kMhw3ST0uRdcIWl3D77s6AsLXNXRp3heeqqfu5+Dyfu4hwpQnMzhqHh8iNQxw0w== + dependencies: + convert-hex "~0.1.0" + convert-string "~0.1.0" + +sha3@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" + integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== + dependencies: + buffer "6.0.3" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +signal-exit@^4.0.1: + version "4.1.0" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" + integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== + +sonic-boom@^4.0.1: + version "4.2.0" + resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" + integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww== + dependencies: + atomic-sleep "^1.0.0" + +source-map-support@^0.5.21: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +split2@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" + integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.5.0 < 2", statuses@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stream-events@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" + integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== + dependencies: + stubs "^3.0.0" + +stream-shift@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" + integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^5.0.1, string-width@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" + integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== + dependencies: + eastasianwidth "^0.2.0" + emoji-regex "^9.2.2" + strip-ansi "^7.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^7.0.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba" + integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== + dependencies: + ansi-regex "^6.0.1" + +strip-final-newline@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" + integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== + +strip-json-comments@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.3.tgz#b7304249dd402ee67fd518ada993ab3593458bcf" + integrity sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw== + +strnum@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" + integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== + +strnum@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.1.1.tgz#cf2a6e0cf903728b8b2c4b971b7e36b4e82d46ab" + integrity sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw== + +stubs@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" + integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +systeminformation@5.23.8: + version "5.23.8" + resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.23.8.tgz#b8efa73b36221cbcb432e3fe83dc1878a43f986a" + integrity sha512-Osd24mNKe6jr/YoXLLK3k8TMdzaxDffhpCxgkfgBHcapykIkd50HXThM3TCEuHO2pPuCsSx2ms/SunqhU5MmsQ== + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +tdigest@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" + integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== + dependencies: + bintrees "1.0.2" + +teeny-request@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-9.0.0.tgz#18140de2eb6595771b1b02203312dfad79a4716d" + integrity sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g== + dependencies: + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + node-fetch "^2.6.9" + stream-events "^1.0.5" + uuid "^9.0.0" + +thread-stream@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" + integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== + dependencies: + real-require "^0.2.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== + +ts-command-line-args@^2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +tslib@^2.4.0, tslib@^2.6.2: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tsscmp@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" + integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== + +tsx@^4.20.6: + version "4.20.6" + resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.20.6.tgz#8fb803fd9c1f70e8ccc93b5d7c5e03c3979ccb2e" + integrity sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg== + dependencies: + esbuild "~0.25.0" + get-tsconfig "^4.7.5" + optionalDependencies: + fsevents "~2.3.3" + +type-is@^1.6.16, type-is@^1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +undici-types@~7.16.0: + version "7.16.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" + integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== + +undici@^5.28.5: + version "5.29.0" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" + integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== + dependencies: + "@fastify/busboy" "^2.0.0" + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^8.0.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^9.0.0, uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +vary@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +"viem@npm:@spalladino/viem@2.38.2-eip7594.0": + version "2.38.2-eip7594.0" + resolved "https://registry.yarnpkg.com/@spalladino/viem/-/viem-2.38.2-eip7594.0.tgz#d875366821c5fb07b8ed6f52610c21e0e3a761cd" + integrity sha512-1gwcB0wxqUoSuzbwTafhqLOeNPWOaIKkSUUvzgsg5gBDOXDxA8tPJWUXBFFdr640maizWRjTbP9GLuLzgMeSuQ== + dependencies: + "@noble/curves" "1.9.1" + "@noble/hashes" "1.8.0" + "@scure/bip32" "1.7.0" + "@scure/bip39" "1.6.0" + abitype "1.1.0" + isows "1.0.7" + ox "0.9.6" + ws "8.18.3" + +weak-lru-cache@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" + integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== + +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== + +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" + integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== + dependencies: + ansi-styles "^6.1.0" + string-width "^5.0.1" + strip-ansi "^7.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@8.18.3, ws@^8.13.0: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + +ylru@^1.2.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.4.0.tgz#0cf0aa57e9c24f8a2cbde0cc1ca2c9592ac4e0f6" + integrity sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zod@^3.23.8: + version "3.25.76" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" + integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== From c228c0cb7a2654a09a1d2fad8b2ba33b7a6f2a52 Mon Sep 17 00:00:00 2001 From: thunkar Date: Wed, 5 Nov 2025 15:12:49 +0100 Subject: [PATCH 18/22] debug script --- CLAUDE.md | 4 +- README.md | 4 +- recursive_verification/CLAUDE.md | 15 +- recursive_verification/README.md | 10 +- recursive_verification/bun.lockb | Bin 229560 -> 229311 bytes recursive_verification/data.json | 368 +-- recursive_verification/debug.sh | 13 + recursive_verification/yarn.lock | 4230 ------------------------------ 8 files changed, 220 insertions(+), 4424 deletions(-) create mode 100755 recursive_verification/debug.sh delete mode 100644 recursive_verification/yarn.lock diff --git a/CLAUDE.md b/CLAUDE.md index 2930e07..8abf721 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,7 +52,7 @@ aztec-examples/ bash -i <(curl -s https://install.aztec.network) # Set specific version (examples may require different versions) -aztec-up 3.0.0-nightly.20251026 # For recursive_verification +aztec-up 3.0.0-devnet.2 # For recursive_verification aztec-up 2.0.2 # For starter-token ``` @@ -245,7 +245,7 @@ easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", **Version Compatibility**: Different examples may use different Aztec versions: -- `recursive_verification`: v3.0.0-nightly.20251026 +- `recursive_verification`: v3.0.0-devnet.2 ### JavaScript/TypeScript Dependencies diff --git a/README.md b/README.md index 3ece0d8..caf4f62 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ You can find additional examples in the Aztec monorepo [docs examples folder](ht ### 1. [Recursive Verification](./recursive_verification) -**Aztec Version**: 3.0.0-nightly.20251026 +**Aztec Version**: 3.0.0-devnet.2 Demonstrates how to verify Noir circuit proofs within Aztec smart contracts using the UltraHonk proving system. This example showcases: @@ -43,7 +43,7 @@ Demonstrates how to verify Noir circuit proofs within Aztec smart contracts usin bash -i <(curl -s https://install.aztec.network) # Set specific Aztec version (if needed) -aztec-up 3.0.0-nightly.20251026 +aztec-up 3.0.0-devnet.2 ``` ### Run the Examples diff --git a/recursive_verification/CLAUDE.md b/recursive_verification/CLAUDE.md index ab26fd9..03ec756 100644 --- a/recursive_verification/CLAUDE.md +++ b/recursive_verification/CLAUDE.md @@ -4,9 +4,10 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -This is an Aztec-Noir project that demonstrates proof verification in Aztec contracts. It uses Aztec version 3.0.0-nightly.20251026 to verify Noir proofs within smart contracts on the Aztec network. +This is an Aztec-Noir project that demonstrates proof verification in Aztec contracts. It uses Aztec version 3.0.0-devnet.2 to verify Noir proofs within smart contracts on the Aztec network. The project consists of: + - A Noir circuit (`hello_circuit`) that proves x ≠ y - An Aztec smart contract (`ValueNotEqual`) that verifies the proof on-chain - Scripts to generate proof data and deploy/interact with the contract @@ -14,6 +15,7 @@ The project consists of: ## Common Development Commands ### Environment Setup + ```bash # Install dependencies bun install @@ -26,6 +28,7 @@ aztec start --sandbox ``` ### Circuit Development + ```bash # Compile the Noir circuit cd circuit && aztec-nargo compile @@ -38,6 +41,7 @@ cd circuit && nargo test ``` ### Contract Development + ```bash # Compile contract, postprocess, and generate TypeScript bindings bun ccc @@ -55,11 +59,13 @@ bun recursion ## Architecture ### Circuit (`circuit/`) + - **`src/main.nr`**: Simple circuit that asserts two field values are not equal - **`target/hello_circuit.json`**: Compiled circuit bytecode and ABI - Uses UltraHonk proving system for proof generation ### Contract (`contract/`) + - **`src/main.nr`**: Aztec smart contract with: - `initialize()`: Sets up counter with initial value for an owner - `increment()`: Verifies a Noir proof and increments the counter @@ -68,7 +74,9 @@ bun recursion - Stores private counters using `EasyPrivateUint` from Aztec-nr libraries ### Scripts (`scripts/`) + - **`generate_data.ts`**: + - Executes the circuit with inputs (x=1, y=2) - Generates UltraHonk proof using Barretenberg backend - Serializes proof, verification key, and public inputs to `data.json` @@ -80,17 +88,20 @@ bun recursion - Verifies the proof on-chain and updates the counter ### Data Flow + 1. Circuit compilation produces bytecode (`hello_circuit.json`) 2. `generate_data.ts` creates proof data from circuit execution 3. Contract compilation produces Aztec contract artifact and TypeScript bindings 4. `run_recursion.ts` deploys contract and submits proof for on-chain verification ## Key Dependencies + - `@aztec/aztec.js`: Aztec SDK for contract deployment and interaction - `@aztec/bb.js`: Barretenberg backend for proof generation - `@aztec/noir-noir_js`: Noir.js for circuit execution - `bun`: JavaScript runtime and package manager ## Testing + - Circuit tests: Use `nargo test` in the circuit directory -- Contract verification: Run the full flow with `bun recursion` after starting the sandbox \ No newline at end of file +- Contract verification: Run the full flow with `bun recursion` after starting the sandbox diff --git a/recursive_verification/README.md b/recursive_verification/README.md index 5432638..b89e45d 100644 --- a/recursive_verification/README.md +++ b/recursive_verification/README.md @@ -11,12 +11,12 @@ This project implements: - **Proof Generation**: Scripts to generate UltraHonk proofs using Barretenberg - **On-chain Verification**: Deployment and interaction scripts for proof verification on Aztec -**Aztec Version**: `3.0.0-nightly.20251026` +**Aztec Version**: `3.0.0-devnet.2` ## Prerequisites - [Bun](https://bun.sh/) runtime (v1.0 or higher) -- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) (version 3.0.0-nightly.20251026) +- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) (version 3.0.0-devnet.2) - Linux/macOS (Windows users can use WSL2) - 8GB+ RAM recommended for proof generation @@ -61,7 +61,7 @@ bash -i <(curl -s https://install.aztec.network) ### Set Aztec to the correct version: ```bash -aztec-up 3.0.0-nightly.20251026 +aztec-up 3.0.0-devnet.2 ``` This ensures compatibility with the contract dependencies. @@ -153,7 +153,7 @@ For a fresh setup, run these commands in order: bun install # 2. Setup Aztec -aztec-up 3.0.0-nightly.20251026 +aztec-up 3.0.0-devnet.2 # 3. Compile circuit cd circuit && aztec-nargo compile && cd .. @@ -199,6 +199,7 @@ This runs the tests defined in `circuit/src/main.nr`. The test verifies that the ### Integration Tests The test suite (`tests/recursive_verification.test.ts`) includes: + - Contract deployment verification - Proof verification and counter increment tests - Multi-user counter management @@ -227,6 +228,7 @@ The test suite (`tests/recursive_verification.test.ts`) includes: - Verify the circuit was compiled with `cd circuit && aztec-nargo compile` 5. **Memory issues during proof generation** + - The Barretenberg prover requires significant RAM - Close other applications or use a machine with more memory diff --git a/recursive_verification/bun.lockb b/recursive_verification/bun.lockb index 2ae1328caa162dad4826bb93b08f4bf6c55856a3..9858dafd7dca8946cc2ea5a216a45972e8819409 100755 GIT binary patch delta 53043 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 delta 52667 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.7.0": - version "24.10.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-24.10.0.tgz#6b79086b0dfc54e775a34ba8114dcc4e0221f31f" - integrity sha512-qzQZRBqkFsYyaSWXuEHc2WR9c0a0CXwiE5FWUvn7ZM+vdy1uZLfCunD38UzhuB7YN/J11ndbDBcTmOdxJo9Q7A== - dependencies: - undici-types "~7.16.0" - -"@types/request@^2.48.8": - version "2.48.13" - resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.13.tgz#abdf4256524e801ea8fdda54320f083edb5a6b80" - integrity sha512-FGJ6udDNUCjd19pp0Q3iTiDkwhYup7J8hpMW9c4k53NrccQFFWKRho6hvtPPEhnXWKvukfwAlB6DbDz4yhH5Gg== - dependencies: - "@types/caseless" "*" - "@types/node" "*" - "@types/tough-cookie" "*" - form-data "^2.5.5" - -"@types/tough-cookie@*": - version "4.0.5" - resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" - integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== - -"@viem/anvil@^0.0.10": - version "0.0.10" - resolved "https://registry.yarnpkg.com/@viem/anvil/-/anvil-0.0.10.tgz#aa64fd96017d6875c9e8bebc223d394a55bc3a72" - integrity sha512-9PzYXBRikfSUhhm8Bd0avv07agwcbMJ5FaSu2D2vbE0cxkvXGtolL3fW5nz2yefMqOqVQL4XzfM5nwY81x3ytw== - dependencies: - execa "^7.1.1" - get-port "^6.1.2" - http-proxy "^1.18.1" - ws "^8.13.0" - -abitype@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.0.tgz#510c5b3f92901877977af5e864841f443bf55406" - integrity sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A== - -abitype@^1.0.9: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abitype/-/abitype-1.1.1.tgz#b50ed400f8bfca5452eb4033445c309d3e1117c8" - integrity sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q== - -abort-controller@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" - integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== - dependencies: - event-target-shim "^5.0.0" - -abstract-leveldown@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz#08d19d4e26fb5be426f7a57004851b39e1795a2e" - integrity sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ== - dependencies: - buffer "^6.0.3" - catering "^2.0.0" - is-buffer "^2.0.5" - level-concat-iterator "^3.0.0" - level-supports "^2.0.1" - queue-microtask "^1.2.3" - -accepts@^1.3.5: - version "1.3.8" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" - integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== - dependencies: - mime-types "~2.1.34" - negotiator "0.6.3" - -add@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235" - integrity sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q== - -agent-base@6: - version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" - integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== - dependencies: - debug "4" - -agent-base@^7.1.2: - version "7.1.4" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-7.1.4.tgz#e3cd76d4c548ee895d3c3fd8dc1f6c5b9032e7a8" - integrity sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ== - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1" - integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.3" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041" - integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg== - -array-back@^3.0.1, array-back@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" - integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== - -array-back@^4.0.1, array-back@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" - integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== - -arrify@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" - integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== - -async-retry@^1.3.3: - version "1.3.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.3.tgz#0e7f36c04d8478e7a58bdbed80cedf977785f280" - integrity sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw== - dependencies: - retry "0.13.1" - -asynckit@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" - integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== - -atomic-sleep@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/atomic-sleep/-/atomic-sleep-1.0.0.tgz#eb85b77a601fc932cfe432c5acd364a9e2c9075b" - integrity sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ== - -axios@^1.12.0: - version "1.13.2" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.13.2.tgz#9ada120b7b5ab24509553ec3e40123521117f687" - integrity sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA== - dependencies: - follow-redirects "^1.15.6" - form-data "^4.0.4" - proxy-from-env "^1.1.0" - -base64-js@^1.3.0, base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -bignumber.js@^9.0.0: - version "9.3.1" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.3.1.tgz#759c5aaddf2ffdc4f154f7b493e1c8770f88c4d7" - integrity sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ== - -bintrees@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bintrees/-/bintrees-1.0.2.tgz#49f896d6e858a4a499df85c38fb399b9aff840f8" - integrity sha512-VOMgTMwjAaUG580SXn3LacVgjurrbMme7ZZNYGSSV7mmtY6QQRh0Eg3pwIcntQ77DErK1L0NxkbetjcoXzVwKw== - -bn.js@^5.2.1: - version "5.2.2" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.2.tgz#82c09f9ebbb17107cd72cb7fd39bd1f9d0aaa566" - integrity sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw== - -bowser@^2.11.0: - version "2.12.1" - resolved "https://registry.yarnpkg.com/bowser/-/bowser-2.12.1.tgz#f9ad78d7aebc472feb63dd9635e3ce2337e0e2c1" - integrity sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw== - -buffer-equal-constant-time@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" - integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@6.0.3, buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -bun-types@1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/bun-types/-/bun-types-1.3.1.tgz#15857727b1030960538a0485983044af8696c81d" - integrity sha512-NMrcy7smratanWJ2mMXdpatalovtxVggkj11bScuWuiOoXTiKIu2eVS1/7qbyI/4yHedtsn175n4Sm4JcdHLXw== - dependencies: - "@types/node" "*" - -bytes@3.1.2, bytes@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" - integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== - -cache-content-type@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-content-type/-/cache-content-type-1.0.1.tgz#035cde2b08ee2129f4a8315ea8f00a00dba1453c" - integrity sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA== - dependencies: - mime-types "^2.1.18" - ylru "^1.2.0" - -call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" - integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== - dependencies: - es-errors "^1.3.0" - function-bind "^1.1.2" - -call-bound@^1.0.2, call-bound@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" - integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== - dependencies: - call-bind-apply-helpers "^1.0.2" - get-intrinsic "^1.3.0" - -catering@^2.0.0, catering@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" - integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== - -chalk@^2.4.2: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -change-case@^5.4.4: - version "5.4.4" - resolved "https://registry.yarnpkg.com/change-case/-/change-case-5.4.4.tgz#0d52b507d8fb8f204343432381d1a6d7bff97a02" - integrity sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w== - -co-body@^6.0.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/co-body/-/co-body-6.2.0.tgz#afd776d60e5659f4eee862df83499698eb1aea1b" - integrity sha512-Kbpv2Yd1NdL1V/V4cwLVxraHDV6K8ayohr2rmH0J87Er8+zJjcTa6dAn9QMPC9CRgU8+aNajKbSf1TzDB1yKPA== - dependencies: - "@hapi/bourne" "^3.0.0" - inflation "^2.0.0" - qs "^6.5.2" - raw-body "^2.3.3" - type-is "^1.6.16" - -co@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" - integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorette@^2.0.20, colorette@^2.0.7: - version "2.0.20" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" - integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== - -combined-stream@^1.0.8: - version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" - integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== - dependencies: - delayed-stream "~1.0.0" - -comlink@^4.4.1: - version "4.4.2" - resolved "https://registry.yarnpkg.com/comlink/-/comlink-4.4.2.tgz#cbbcd82742fbebc06489c28a183eedc5c60a2bca" - integrity sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g== - -command-line-args@^5.1.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" - integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== - dependencies: - array-back "^3.1.0" - find-replace "^3.0.0" - lodash.camelcase "^4.3.0" - typical "^4.0.0" - -command-line-usage@^6.1.0: - version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" - integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== - dependencies: - array-back "^4.0.2" - chalk "^2.4.2" - table-layout "^1.0.2" - typical "^5.2.0" - -commander@^12.1.0: - version "12.1.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" - integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== - -compressible@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" - integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== - dependencies: - mime-db ">= 1.43.0 < 2" - -content-disposition@~0.5.2: - version "0.5.4" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" - integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== - dependencies: - safe-buffer "5.2.1" - -content-type@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" - integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== - -convert-hex@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/convert-hex/-/convert-hex-0.1.0.tgz#08c04568922c27776b8a2e81a95d393362ea0b65" - integrity sha512-w20BOb1PiR/sEJdS6wNrUjF5CSfscZFUp7R9NSlXH8h2wynzXVEPFPJECAnkNylZ+cvf3p7TyRUHggDmrwXT9A== - -convert-string@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/convert-string/-/convert-string-0.1.0.tgz#79ce41a9bb0d03bcf72cdc6a8f3c56fbbc64410a" - integrity sha512-1KX9ESmtl8xpT2LN2tFnKSbV4NiarbVi8DVb39ZriijvtTklyrT+4dT1wsGMHKD3CJUjXgvJzstm9qL9ICojGA== - -cookies@~0.9.0: - version "0.9.1" - resolved "https://registry.yarnpkg.com/cookies/-/cookies-0.9.1.tgz#3ffed6f60bb4fb5f146feeedba50acc418af67e3" - integrity sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw== - dependencies: - depd "~2.0.0" - keygrip "~1.1.0" - -copy-to@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/copy-to/-/copy-to-2.0.1.tgz#2680fbb8068a48d08656b6098092bdafc906f4a5" - integrity sha512-3DdaFaU/Zf1AnpLiFDeNCD4TOWe3Zl2RZaTzUvWiIk5ERzcCodOE20Vqq4fzCbNoHURFHT4/us/Lfq+S2zyY4w== - -cross-spawn@^7.0.3, cross-spawn@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -dateformat@^4.6.3: - version "4.6.3" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" - integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== - -debug@4, debug@^4.3.2, debug@^4.4.1: - version "4.4.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a" - integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA== - dependencies: - ms "^2.1.3" - -deep-equal@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" - integrity sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw== - -deep-extend@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - -delayed-stream@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" - integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== - -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== - -depd@2.0.0, depd@^2.0.0, depd@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - -depd@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" - integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== - -destroy@^1.0.4: - version "1.2.0" - resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" - integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== - -detect-libc@^2.0.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad" - integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ== - -detect-node@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - -dotenv@^16.0.3: - version "16.6.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.6.1.tgz#773f0e69527a8315c7285d5ee73c4459d20a8020" - integrity sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow== - -dunder-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" - integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== - dependencies: - call-bind-apply-helpers "^1.0.1" - es-errors "^1.3.0" - gopd "^1.2.0" - -duplexify@^4.1.3: - version "4.1.3" - resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-4.1.3.tgz#a07e1c0d0a2c001158563d32592ba58bddb0236f" - integrity sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA== - dependencies: - end-of-stream "^1.4.1" - inherits "^2.0.3" - readable-stream "^3.1.1" - stream-shift "^1.0.2" - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: - version "1.0.11" - resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" - integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== - dependencies: - safe-buffer "^5.0.1" - -ee-first@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" - integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -encodeurl@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" - integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== - -end-of-stream@^1.1.0, end-of-stream@^1.4.1: - version "1.4.5" - resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.5.tgz#7344d711dea40e0b74abc2ed49778743ccedb08c" - integrity sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg== - dependencies: - once "^1.4.0" - -es-define-property@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" - integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== - -es-errors@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" - integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== - -es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" - integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== - dependencies: - es-errors "^1.3.0" - -es-set-tostringtag@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" - integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== - dependencies: - es-errors "^1.3.0" - get-intrinsic "^1.2.6" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -esbuild@~0.25.0: - version "0.25.12" - resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.12.tgz#97a1d041f4ab00c2fce2f838d2b9969a2d2a97a5" - integrity sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg== - optionalDependencies: - "@esbuild/aix-ppc64" "0.25.12" - "@esbuild/android-arm" "0.25.12" - "@esbuild/android-arm64" "0.25.12" - "@esbuild/android-x64" "0.25.12" - "@esbuild/darwin-arm64" "0.25.12" - "@esbuild/darwin-x64" "0.25.12" - "@esbuild/freebsd-arm64" "0.25.12" - "@esbuild/freebsd-x64" "0.25.12" - "@esbuild/linux-arm" "0.25.12" - "@esbuild/linux-arm64" "0.25.12" - "@esbuild/linux-ia32" "0.25.12" - "@esbuild/linux-loong64" "0.25.12" - "@esbuild/linux-mips64el" "0.25.12" - "@esbuild/linux-ppc64" "0.25.12" - "@esbuild/linux-riscv64" "0.25.12" - "@esbuild/linux-s390x" "0.25.12" - "@esbuild/linux-x64" "0.25.12" - "@esbuild/netbsd-arm64" "0.25.12" - "@esbuild/netbsd-x64" "0.25.12" - "@esbuild/openbsd-arm64" "0.25.12" - "@esbuild/openbsd-x64" "0.25.12" - "@esbuild/openharmony-arm64" "0.25.12" - "@esbuild/sunos-x64" "0.25.12" - "@esbuild/win32-arm64" "0.25.12" - "@esbuild/win32-ia32" "0.25.12" - "@esbuild/win32-x64" "0.25.12" - -escape-html@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" - integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== - -event-target-shim@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" - integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== - -eventemitter3@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-5.0.1.tgz#53f5ffd0a492ac800721bb42c66b841de96423c4" - integrity sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA== - -eventemitter3@^4.0.0: - version "4.0.7" - resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" - integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== - -execa@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-7.2.0.tgz#657e75ba984f42a70f38928cedc87d6f2d4fe4e9" - integrity sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.1" - human-signals "^4.3.0" - is-stream "^3.0.0" - merge-stream "^2.0.0" - npm-run-path "^5.1.0" - onetime "^6.0.0" - signal-exit "^3.0.7" - strip-final-newline "^3.0.0" - -extend@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -fast-copy@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/fast-copy/-/fast-copy-3.0.2.tgz#59c68f59ccbcac82050ba992e0d5c389097c9d35" - integrity sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ== - -fast-safe-stringify@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884" - integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA== - -fast-xml-parser@5.2.5: - version "5.2.5" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz#4809fdfb1310494e341098c25cb1341a01a9144a" - integrity sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ== - dependencies: - strnum "^2.1.0" - -fast-xml-parser@^4.4.1: - version "4.5.3" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz#c54d6b35aa0f23dc1ea60b6c884340c006dc6efb" - integrity sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig== - dependencies: - strnum "^1.1.1" - -find-replace@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" - integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== - dependencies: - array-back "^3.0.1" - -follow-redirects@^1.0.0, follow-redirects@^1.15.6: - version "1.15.11" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340" - integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ== - -foreground-child@^3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f" - integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw== - dependencies: - cross-spawn "^7.0.6" - signal-exit "^4.0.1" - -form-data@^2.5.5: - version "2.5.5" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.5.tgz#a5f6364ad7e4e67e95b4a07e2d8c6f711c74f624" - integrity sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.35" - safe-buffer "^5.2.1" - -form-data@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" - integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.8" - es-set-tostringtag "^2.1.0" - hasown "^2.0.2" - mime-types "^2.1.12" - -fresh@~0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" - integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== - -fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -gaxios@^6.0.0, gaxios@^6.0.2, gaxios@^6.1.1: - version "6.7.1" - resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-6.7.1.tgz#ebd9f7093ede3ba502685e73390248bb5b7f71fb" - integrity sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ== - dependencies: - extend "^3.0.2" - https-proxy-agent "^7.0.1" - is-stream "^2.0.0" - node-fetch "^2.6.9" - uuid "^9.0.1" - -gcp-metadata@^6.0.0, gcp-metadata@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-6.1.1.tgz#f65aa69f546bc56e116061d137d3f5f90bdec494" - integrity sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A== - dependencies: - gaxios "^6.1.1" - google-logging-utils "^0.0.2" - json-bigint "^1.0.0" - -generator-function@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2" - integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g== - -get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" - integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== - dependencies: - call-bind-apply-helpers "^1.0.2" - es-define-property "^1.0.1" - es-errors "^1.3.0" - es-object-atoms "^1.1.1" - function-bind "^1.1.2" - get-proto "^1.0.1" - gopd "^1.2.0" - has-symbols "^1.1.0" - hasown "^2.0.2" - math-intrinsics "^1.1.0" - -get-port@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-6.1.2.tgz#c1228abb67ba0e17fb346da33b15187833b9c08a" - integrity sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw== - -get-proto@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" - integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== - dependencies: - dunder-proto "^1.0.1" - es-object-atoms "^1.0.0" - -get-stream@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" - integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== - -get-tsconfig@^4.7.5: - version "4.13.0" - resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.13.0.tgz#fcdd991e6d22ab9a600f00e91c318707a5d9a0d7" - integrity sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ== - dependencies: - resolve-pkg-maps "^1.0.0" - -glob@^11.0.3: - version "11.0.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-11.0.3.tgz#9d8087e6d72ddb3c4707b1d2778f80ea3eaefcd6" - integrity sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA== - dependencies: - foreground-child "^3.3.1" - jackspeak "^4.1.1" - minimatch "^10.0.3" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^2.0.0" - -google-auth-library@^9.6.3: - version "9.15.1" - resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-9.15.1.tgz#0c5d84ed1890b2375f1cd74f03ac7b806b392928" - integrity sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng== - dependencies: - base64-js "^1.3.0" - ecdsa-sig-formatter "^1.0.11" - gaxios "^6.1.1" - gcp-metadata "^6.1.0" - gtoken "^7.0.0" - jws "^4.0.0" - -google-logging-utils@^0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/google-logging-utils/-/google-logging-utils-0.0.2.tgz#5fd837e06fa334da450433b9e3e1870c1594466a" - integrity sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ== - -gopd@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" - integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== - -gtoken@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-7.1.0.tgz#d61b4ebd10132222817f7222b1e6064bd463fc26" - integrity sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw== - dependencies: - gaxios "^6.0.0" - jws "^4.0.0" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has-symbols@^1.0.3, has-symbols@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" - integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== - -has-tostringtag@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" - integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== - dependencies: - has-symbols "^1.0.3" - -hash.js@^1.1.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" - integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== - dependencies: - inherits "^2.0.3" - minimalistic-assert "^1.0.1" - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -help-me@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/help-me/-/help-me-5.0.0.tgz#b1ebe63b967b74060027c2ac61f9be12d354a6f6" - integrity sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg== - -html-entities@^2.5.2: - version "2.6.0" - resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" - integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== - -http-assert@^1.3.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/http-assert/-/http-assert-1.5.0.tgz#c389ccd87ac16ed2dfa6246fd73b926aa00e6b8f" - integrity sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w== - dependencies: - deep-equal "~1.0.1" - http-errors "~1.8.0" - -http-errors@2.0.0, http-errors@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - -http-errors@^1.6.3, http-errors@^1.8.1, http-errors@~1.8.0: - version "1.8.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" - integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== - dependencies: - depd "~1.1.2" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses ">= 1.5.0 < 2" - toidentifier "1.0.1" - -http-proxy-agent@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" - integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== - dependencies: - "@tootallnate/once" "2" - agent-base "6" - debug "4" - -http-proxy@^1.18.1: - version "1.18.1" - resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" - integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== - dependencies: - eventemitter3 "^4.0.0" - follow-redirects "^1.0.0" - requires-port "^1.0.0" - -https-proxy-agent@^5.0.0: - version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" - integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== - dependencies: - agent-base "6" - debug "4" - -https-proxy-agent@^7.0.1: - version "7.0.6" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz#da8dfeac7da130b05c2ba4b59c9b6cd66611a6b9" - integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw== - dependencies: - agent-base "^7.1.2" - debug "4" - -human-signals@^4.3.0: - version "4.3.1" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-4.3.1.tgz#ab7f811e851fca97ffbd2c1fe9a958964de321b2" - integrity sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ== - -iconv-lite@0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -idb-keyval@^6.2.1: - version "6.2.2" - resolved "https://registry.yarnpkg.com/idb-keyval/-/idb-keyval-6.2.2.tgz#b0171b5f73944854a3291a5cdba8e12768c4854a" - integrity sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg== - -idb@^8.0.0: - version "8.0.3" - resolved "https://registry.yarnpkg.com/idb/-/idb-8.0.3.tgz#c91e558f15a8d53f1d7f53a094d226fc3ad71fd9" - integrity sha512-LtwtVyVYO5BqRvcsKuB2iUMnHwPVByPCXFXOpuU96IZPPoPN6xjOGxZQ74pgSVVLQWtUOYgyeL4GE98BY5D3wg== - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -inflation@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/inflation/-/inflation-2.1.0.tgz#9214db11a47e6f756d111c4f9df96971c60f886c" - integrity sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ== - -inherits@2.0.4, inherits@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -is-buffer@^2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" - integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-generator-function@^1.0.7: - version "1.1.2" - resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5" - integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA== - dependencies: - call-bound "^1.0.4" - generator-function "^2.0.0" - get-proto "^1.0.1" - has-tostringtag "^1.0.2" - safe-regex-test "^1.1.0" - -is-regex@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" - integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== - dependencies: - call-bound "^1.0.2" - gopd "^1.2.0" - has-tostringtag "^1.0.2" - hasown "^2.0.2" - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-stream@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac" - integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -isows@1.0.7: - version "1.0.7" - resolved "https://registry.yarnpkg.com/isows/-/isows-1.0.7.tgz#1c06400b7eed216fbba3bcbd68f12490fc342915" - integrity sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg== - -jackspeak@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-4.1.1.tgz#96876030f450502047fc7e8c7fcf8ce8124e43ae" - integrity sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ== - dependencies: - "@isaacs/cliui" "^8.0.2" - -joycon@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/joycon/-/joycon-3.1.1.tgz#bce8596d6ae808f8b68168f5fc69280996894f03" - integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw== - -json-bigint@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" - integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== - dependencies: - bignumber.js "^9.0.0" - -json-stringify-deterministic@1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/json-stringify-deterministic/-/json-stringify-deterministic-1.0.12.tgz#aaa3f907466ed01e3afd77b898d0a2b3b132820a" - integrity sha512-q3PN0lbUdv0pmurkBNdJH3pfFvOTL/Zp0lquqpvcjfKzt6Y0j49EPHAmVHCAS4Ceq/Y+PejWTzyiVpoY71+D6g== - -jwa@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.1.tgz#bf8176d1ad0cd72e0f3f58338595a13e110bc804" - integrity sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg== - dependencies: - buffer-equal-constant-time "^1.0.1" - ecdsa-sig-formatter "1.0.11" - safe-buffer "^5.0.1" - -jws@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" - integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== - dependencies: - jwa "^2.0.0" - safe-buffer "^5.0.1" - -keygrip@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/keygrip/-/keygrip-1.1.0.tgz#871b1681d5e159c62a445b0c74b615e0917e7226" - integrity sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ== - dependencies: - tsscmp "1.0.6" - -koa-bodyparser@^4.4.0: - version "4.4.1" - resolved "https://registry.yarnpkg.com/koa-bodyparser/-/koa-bodyparser-4.4.1.tgz#a908d848e142cc57d9eece478e932bf00dce3029" - integrity sha512-kBH3IYPMb+iAXnrxIhXnW+gXV8OTzCu8VPDqvcDHW9SQrbkHmqPQtiZwrltNmSq6/lpipHnT7k7PsjlVD7kK0w== - dependencies: - co-body "^6.0.0" - copy-to "^2.0.1" - type-is "^1.6.18" - -koa-compose@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/koa-compose/-/koa-compose-4.1.0.tgz#507306b9371901db41121c812e923d0d67d3e877" - integrity sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw== - -koa-compress@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/koa-compress/-/koa-compress-5.1.1.tgz#4f1599cfcaab23de1cd97d0a0ff9b5d05b0ffa52" - integrity sha512-UgMIN7ZoEP2DuoSQmD6CYvFSLt0NReGlc2qSY4bO4Oq0L56OiD9pDG41Kj/zFmVY/A3Wvmn4BqKcfq5H30LGIg== - dependencies: - bytes "^3.1.2" - compressible "^2.0.18" - http-errors "^1.8.1" - koa-is-json "^1.0.0" - -koa-convert@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/koa-convert/-/koa-convert-2.0.0.tgz#86a0c44d81d40551bae22fee6709904573eea4f5" - integrity sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA== - dependencies: - co "^4.6.0" - koa-compose "^4.1.0" - -koa-is-json@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/koa-is-json/-/koa-is-json-1.0.0.tgz#273c07edcdcb8df6a2c1ab7d59ee76491451ec14" - integrity sha512-+97CtHAlWDx0ndt0J8y3P12EWLwTLMXIfMnYDev3wOTwH/RpBGMlfn4bDXlMEg1u73K6XRE9BbUp+5ZAYoRYWw== - -koa-router@^13.1.1: - version "13.1.1" - resolved "https://registry.yarnpkg.com/koa-router/-/koa-router-13.1.1.tgz#7b7d08b1aba82c4cc50ad71164b0d6d33d368784" - integrity sha512-3GxRi7CxEgsfGhdFf4OW4OLv0DFdyNl2drcOCtoezi+LDSnkg0mhr1Iq5Q25R4FJt3Gw6dcAKrcpaCJ7WJfhYg== - dependencies: - debug "^4.4.1" - http-errors "^2.0.0" - koa-compose "^4.1.0" - path-to-regexp "^6.3.0" - -koa@^2.16.1: - version "2.16.3" - resolved "https://registry.yarnpkg.com/koa/-/koa-2.16.3.tgz#dd3a250472862cf7a3ef6e25bf325cc9db620ab5" - integrity sha512-zPPuIt+ku1iCpFBRwseMcPYQ1cJL8l60rSmKeOuGfOXyE6YnTBmf2aEFNL2HQGrD0cPcLO/t+v9RTgC+fwEh/g== - dependencies: - accepts "^1.3.5" - cache-content-type "^1.0.0" - content-disposition "~0.5.2" - content-type "^1.0.4" - cookies "~0.9.0" - debug "^4.3.2" - delegates "^1.0.0" - depd "^2.0.0" - destroy "^1.0.4" - encodeurl "^1.0.2" - escape-html "^1.0.3" - fresh "~0.5.2" - http-assert "^1.3.0" - http-errors "^1.6.3" - is-generator-function "^1.0.7" - koa-compose "^4.1.0" - koa-convert "^2.0.0" - on-finished "^2.3.0" - only "~0.0.2" - parseurl "^1.3.2" - statuses "^1.5.0" - type-is "^1.6.16" - vary "^1.1.2" - -level-concat-iterator@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz#5235b1f744bc34847ed65a50548aa88d22e881cf" - integrity sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ== - dependencies: - catering "^2.1.0" - -level-supports@^2.0.1: - version "2.1.0" - resolved "https://registry.yarnpkg.com/level-supports/-/level-supports-2.1.0.tgz#9af908d853597ecd592293b2fad124375be79c5f" - integrity sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA== - -leveldown@^6.1.1: - version "6.1.1" - resolved "https://registry.yarnpkg.com/leveldown/-/leveldown-6.1.1.tgz#0f0e480fa88fd807abf94c33cb7e40966ea4b5ce" - integrity sha512-88c+E+Eizn4CkQOBHwqlCJaTNEjGpaEIikn1S+cINc5E9HEvJ77bqY4JY/HxT5u0caWqsc3P3DcFIKBI1vHt+A== - dependencies: - abstract-leveldown "^7.2.0" - napi-macros "~2.0.0" - node-gyp-build "^4.3.0" - -lmdb@^3.2.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-3.4.3.tgz#47b1875ff67efce752c10bf892b563c1307cf0b3" - integrity sha512-GWV1kVi6uhrXWqe+3NXWO73OYe8fto6q8JMo0HOpk1vf8nEyFWgo4CSNJpIFzsOxOrysVUlcO48qRbQfmKd1gA== - dependencies: - msgpackr "^1.11.2" - node-addon-api "^6.1.0" - node-gyp-build-optional-packages "5.2.2" - ordered-binary "^1.5.3" - weak-lru-cache "^1.2.2" - optionalDependencies: - "@lmdb/lmdb-darwin-arm64" "3.4.3" - "@lmdb/lmdb-darwin-x64" "3.4.3" - "@lmdb/lmdb-linux-arm" "3.4.3" - "@lmdb/lmdb-linux-arm64" "3.4.3" - "@lmdb/lmdb-linux-x64" "3.4.3" - "@lmdb/lmdb-win32-arm64" "3.4.3" - "@lmdb/lmdb-win32-x64" "3.4.3" - -lodash.camelcase@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" - integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== - -lodash.chunk@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.chunk/-/lodash.chunk-4.2.0.tgz#66e5ce1f76ed27b4303d8c6512e8d1216e8106bc" - integrity sha512-ZzydJKfUHJwHa+hF5X66zLFCBrWn5GeF28OHEr4WVWtNDXlQ/IjWKPBiikqKo2ne0+v6JgCgJ0GzJp8k8bHC7w== - -lodash.clonedeep@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" - integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== - -lodash.clonedeepwith@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz#6ee30573a03a1a60d670a62ef33c10cf1afdbdd4" - integrity sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA== - -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash.omit@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" - integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== - -lodash.pickby@^4.5.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/lodash.pickby/-/lodash.pickby-4.6.0.tgz#7dea21d8c18d7703a27c704c15d3b84a67e33aff" - integrity sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q== - -lodash.times@^4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/lodash.times/-/lodash.times-4.3.2.tgz#3e1f2565c431754d54ab57f2ed1741939285ca1d" - integrity sha512-FfaJzl0SA35CRPDh5SWe2BTght6y5KSK7yJv166qIp/8q7qOwBDCvuDZE2RUSMRpBkLF6rZKbLEUoTmaP3qg6A== - -long@^5.0.0: - version "5.3.2" - resolved "https://registry.yarnpkg.com/long/-/long-5.3.2.tgz#1d84463095999262d7d7b7f8bfd4a8cc55167f83" - integrity sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA== - -lru-cache@^11.0.0: - version "11.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-11.2.2.tgz#40fd37edffcfae4b2940379c0722dc6eeaa75f24" - integrity sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg== - -math-intrinsics@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" - integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== - -media-typer@0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" - integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== - -merge-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" - integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== - -mime-db@1.52.0: - version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" - integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== - -"mime-db@>= 1.43.0 < 2": - version "1.54.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" - integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== - -mime-types@^2.1.12, mime-types@^2.1.18, mime-types@^2.1.35, mime-types@~2.1.24, mime-types@~2.1.34: - version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" - integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== - dependencies: - mime-db "1.52.0" - -mime@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/mime/-/mime-3.0.0.tgz#b374550dca3a0c18443b0c950a6a58f1931cf7a7" - integrity sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A== - -mimic-fn@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc" - integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw== - -minimalistic-assert@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" - integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== - -minimatch@^10.0.3: - version "10.1.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.1.1.tgz#e6e61b9b0c1dcab116b5a7d1458e8b6ae9e73a55" - integrity sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ== - dependencies: - "@isaacs/brace-expansion" "^5.0.0" - -minimist@^1.2.6: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -msgpackr-extract@^3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.3.tgz#e9d87023de39ce714872f9e9504e3c1996d61012" - integrity sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA== - dependencies: - node-gyp-build-optional-packages "5.2.2" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.3" - "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.3" - -msgpackr@^1.11.2: - version "1.11.5" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.11.5.tgz#edf0b9d9cb7d8ed6897dd0e42cfb865a2f4b602e" - integrity sha512-UjkUHN0yqp9RWKy0Lplhh+wlpdt9oQBYgULZOiFhV3VclSF1JnSQWZ5r9gORQlNYaUKQoR8itv7g7z1xDDuACA== - optionalDependencies: - msgpackr-extract "^3.0.2" - -napi-macros@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/napi-macros/-/napi-macros-2.0.0.tgz#2b6bae421e7b96eb687aa6c77a7858640670001b" - integrity sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg== - -negotiator@0.6.3: - version "0.6.3" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" - integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== - -node-addon-api@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-6.1.0.tgz#ac8470034e58e67d0c6f1204a18ae6995d9c0d76" - integrity sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA== - -node-fetch@^2.6.9: - version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" - integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== - dependencies: - whatwg-url "^5.0.0" - -node-gyp-build-optional-packages@5.2.2: - version "5.2.2" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.2.2.tgz#522f50c2d53134d7f3a76cd7255de4ab6c96a3a4" - integrity sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw== - dependencies: - detect-libc "^2.0.1" - -node-gyp-build@^4.3.0: - version "4.8.4" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" - integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== - -npm-run-path@^5.1.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f" - integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ== - dependencies: - path-key "^4.0.0" - -object-inspect@^1.13.3: - version "1.13.4" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" - integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== - -ohash@^2.0.11: - version "2.0.11" - resolved "https://registry.yarnpkg.com/ohash/-/ohash-2.0.11.tgz#60b11e8cff62ca9dee88d13747a5baa145f5900b" - integrity sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ== - -on-exit-leak-free@^2.1.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz#fed195c9ebddb7d9e4c3842f93f281ac8dadd3b8" - integrity sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA== - -on-finished@^2.3.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" - integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== - dependencies: - ee-first "1.1.1" - -once@^1.3.1, once@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== - dependencies: - wrappy "1" - -onetime@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4" - integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ== - dependencies: - mimic-fn "^4.0.0" - -only@~0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/only/-/only-0.0.2.tgz#2afde84d03e50b9a8edc444e30610a70295edfb4" - integrity sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ== - -ordered-binary@^1.5.3: - version "1.6.0" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.6.0.tgz#9c490dadc0b1336ca6917d8d41dd474b8c0bff32" - integrity sha512-IQh2aMfMIDbPjI/8a3Edr+PiOpcsB7yo8NdW7aHWVaoR/pcDldunMvnnwbk/auPGqmKeAdxtZl7MHX/QmPwhvQ== - -ox@0.9.6: - version "0.9.6" - resolved "https://registry.yarnpkg.com/ox/-/ox-0.9.6.tgz#5cf02523b6db364c10ee7f293ff1e664e0e1eab7" - integrity sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg== - dependencies: - "@adraffy/ens-normalize" "^1.11.0" - "@noble/ciphers" "^1.3.0" - "@noble/curves" "1.9.1" - "@noble/hashes" "^1.8.0" - "@scure/bip32" "^1.7.0" - "@scure/bip39" "^1.6.0" - abitype "^1.0.9" - eventemitter3 "5.0.1" - -p-limit@^3.0.1: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -pako@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/pako/-/pako-2.1.0.tgz#266cc37f98c7d883545d11335c00fbd4062c9a86" - integrity sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug== - -parseurl@^1.3.2: - version "1.3.3" - resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" - integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-key@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18" - integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ== - -path-scurry@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-2.0.0.tgz#9f052289f23ad8bf9397a2a0425e7b8615c58580" - integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg== - dependencies: - lru-cache "^11.0.0" - minipass "^7.1.2" - -path-to-regexp@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.3.0.tgz#2b6a26a337737a8e1416f9272ed0766b1c0389f4" - integrity sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ== - -pino-abstract-transport@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz#de241578406ac7b8a33ce0d77ae6e8a0b3b68a60" - integrity sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw== - dependencies: - split2 "^4.0.0" - -pino-pretty@^13.0.0: - version "13.1.2" - resolved "https://registry.yarnpkg.com/pino-pretty/-/pino-pretty-13.1.2.tgz#4e7484f2c5d02cce03159b96aa04697bf9e84ff6" - integrity sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ== - dependencies: - colorette "^2.0.7" - dateformat "^4.6.3" - fast-copy "^3.0.2" - fast-safe-stringify "^2.1.1" - help-me "^5.0.0" - joycon "^3.1.1" - minimist "^1.2.6" - on-exit-leak-free "^2.1.0" - pino-abstract-transport "^2.0.0" - pump "^3.0.0" - secure-json-parse "^4.0.0" - sonic-boom "^4.0.1" - strip-json-comments "^5.0.2" - -pino-std-serializers@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz#7c625038b13718dbbd84ab446bd673dc52259e3b" - integrity sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA== - -pino@^9.5.0: - version "9.14.0" - resolved "https://registry.yarnpkg.com/pino/-/pino-9.14.0.tgz#673d9711c2d1e64d18670c1ec05ef7ba14562556" - integrity sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w== - dependencies: - "@pinojs/redact" "^0.4.0" - atomic-sleep "^1.0.0" - on-exit-leak-free "^2.1.0" - pino-abstract-transport "^2.0.0" - pino-std-serializers "^7.0.0" - process-warning "^5.0.0" - quick-format-unescaped "^4.0.3" - real-require "^0.2.0" - safe-stable-stringify "^2.3.1" - sonic-boom "^4.0.1" - thread-stream "^3.0.0" - -process-warning@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/process-warning/-/process-warning-5.0.0.tgz#566e0bf79d1dff30a72d8bbbe9e8ecefe8d378d7" - integrity sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA== - -prom-client@^15.1.3: - version "15.1.3" - resolved "https://registry.yarnpkg.com/prom-client/-/prom-client-15.1.3.tgz#69fa8de93a88bc9783173db5f758dc1c69fa8fc2" - integrity sha512-6ZiOBfCywsD4k1BN9IX0uZhF+tJkV8q8llP64G5Hajs4JOeVLPCwpPVcpXy3BwYiUGgyJzsJJQeOIv7+hDSq8g== - dependencies: - "@opentelemetry/api" "^1.4.0" - tdigest "^0.1.1" - -protobufjs@^7.3.0: - version "7.5.4" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-7.5.4.tgz#885d31fe9c4b37f25d1bb600da30b1c5b37d286a" - integrity sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/node" ">=13.7.0" - long "^5.0.0" - -proxy-from-env@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" - integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== - -pump@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.3.tgz#151d979f1a29668dc0025ec589a455b53282268d" - integrity sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA== - dependencies: - end-of-stream "^1.1.0" - once "^1.3.1" - -qs@^6.5.2: - version "6.14.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" - integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== - dependencies: - side-channel "^1.1.0" - -queue-microtask@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-format-unescaped@^4.0.3: - version "4.0.4" - resolved "https://registry.yarnpkg.com/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz#93ef6dd8d3453cbc7970dd614fad4c5954d6b5a7" - integrity sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg== - -raw-body@^2.3.3: - version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" - integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== - dependencies: - bytes "3.1.2" - http-errors "2.0.0" - iconv-lite "0.4.24" - unpipe "1.0.0" - -readable-stream@^3.1.1: - version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" - integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -real-require@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/real-require/-/real-require-0.2.0.tgz#209632dea1810be2ae063a6ac084fee7e33fba78" - integrity sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg== - -reduce-flatten@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" - integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== - -requires-port@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" - integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== - -resolve-pkg-maps@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz#616b3dc2c57056b5588c31cdf4b3d64db133720f" - integrity sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw== - -retry-request@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/retry-request/-/retry-request-7.0.2.tgz#60bf48cfb424ec01b03fca6665dee91d06dd95f3" - integrity sha512-dUOvLMJ0/JJYEn8NrpOaGNE7X3vpI5XlZS/u0ANjqtcZVKnIxP7IgCFwrKTxENw29emmwug53awKtaMm4i9g5w== - dependencies: - "@types/request" "^2.48.8" - extend "^3.0.2" - teeny-request "^9.0.0" - -retry@0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" - integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== - -safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.2.1, safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -safe-regex-test@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" - integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - is-regex "^1.2.1" - -safe-stable-stringify@^2.3.1: - version "2.5.0" - resolved "https://registry.yarnpkg.com/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz#4ca2f8e385f2831c432a719b108a3bf7af42a1dd" - integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA== - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -secure-json-parse@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-4.1.0.tgz#4f1ab41c67a13497ea1b9131bb4183a22865477c" - integrity sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA== - -semver@^7.5.2: - version "7.7.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946" - integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q== - -setprototypeof@1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" - integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== - -sha256@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/sha256/-/sha256-0.2.0.tgz#73a0b418daab7035bff86e8491e363412fc2ab05" - integrity sha512-kTWMJUaez5iiT9CcMv8jSq6kMhw3ST0uRdcIWl3D77s6AsLXNXRp3heeqqfu5+Dyfu4hwpQnMzhqHh8iNQxw0w== - dependencies: - convert-hex "~0.1.0" - convert-string "~0.1.0" - -sha3@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/sha3/-/sha3-2.1.4.tgz#000fac0fe7c2feac1f48a25e7a31b52a6492cc8f" - integrity sha512-S8cNxbyb0UGUM2VhRD4Poe5N58gJnJsLJ5vC7FYWGUmGhcsj4++WaIOBFVDxlG0W3To6xBuiRh+i0Qp2oNCOtg== - dependencies: - buffer "6.0.3" - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -side-channel-list@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" - integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - -side-channel-map@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" - integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - -side-channel-weakmap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" - integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== - dependencies: - call-bound "^1.0.2" - es-errors "^1.3.0" - get-intrinsic "^1.2.5" - object-inspect "^1.13.3" - side-channel-map "^1.0.1" - -side-channel@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" - integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== - dependencies: - es-errors "^1.3.0" - object-inspect "^1.13.3" - side-channel-list "^1.0.0" - side-channel-map "^1.0.1" - side-channel-weakmap "^1.0.2" - -signal-exit@^3.0.7: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sonic-boom@^4.0.1: - version "4.2.0" - resolved "https://registry.yarnpkg.com/sonic-boom/-/sonic-boom-4.2.0.tgz#e59a525f831210fa4ef1896428338641ac1c124d" - integrity sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww== - dependencies: - atomic-sleep "^1.0.0" - -source-map-support@^0.5.21: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -split2@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4" - integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg== - -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - -"statuses@>= 1.5.0 < 2", statuses@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" - integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== - -stream-events@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/stream-events/-/stream-events-1.0.5.tgz#bbc898ec4df33a4902d892333d47da9bf1c406d5" - integrity sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg== - dependencies: - stubs "^3.0.0" - -stream-shift@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.3.tgz#85b8fab4d71010fc3ba8772e8046cc49b8a3864b" - integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ== - -string-format@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" - integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba" - integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA== - dependencies: - ansi-regex "^6.0.1" - -strip-final-newline@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd" - integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw== - -strip-json-comments@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-5.0.3.tgz#b7304249dd402ee67fd518ada993ab3593458bcf" - integrity sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw== - -strnum@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-1.1.2.tgz#57bca4fbaa6f271081715dbc9ed7cee5493e28e4" - integrity sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA== - -strnum@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/strnum/-/strnum-2.1.1.tgz#cf2a6e0cf903728b8b2c4b971b7e36b4e82d46ab" - integrity sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw== - -stubs@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/stubs/-/stubs-3.0.0.tgz#e8d2ba1fa9c90570303c030b6900f7d5f89abe5b" - integrity sha512-PdHt7hHUJKxvTCgbKX9C1V/ftOcjJQgz8BZwNfV5c4B6dcGqlpelTbJ999jBGZ2jYiPAwcX5dP6oBwVlBlUbxw== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -systeminformation@5.23.8: - version "5.23.8" - resolved "https://registry.yarnpkg.com/systeminformation/-/systeminformation-5.23.8.tgz#b8efa73b36221cbcb432e3fe83dc1878a43f986a" - integrity sha512-Osd24mNKe6jr/YoXLLK3k8TMdzaxDffhpCxgkfgBHcapykIkd50HXThM3TCEuHO2pPuCsSx2ms/SunqhU5MmsQ== - -table-layout@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" - integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== - dependencies: - array-back "^4.0.1" - deep-extend "~0.6.0" - typical "^5.2.0" - wordwrapjs "^4.0.0" - -tdigest@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/tdigest/-/tdigest-0.1.2.tgz#96c64bac4ff10746b910b0e23b515794e12faced" - integrity sha512-+G0LLgjjo9BZX2MfdvPfH+MKLCrxlXSYec5DaPYP1fe6Iyhf0/fSmJ0bFiZ1F8BT6cGXl2LpltQptzjXKWEkKA== - dependencies: - bintrees "1.0.2" - -teeny-request@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/teeny-request/-/teeny-request-9.0.0.tgz#18140de2eb6595771b1b02203312dfad79a4716d" - integrity sha512-resvxdc6Mgb7YEThw6G6bExlXKkv6+YbuzGg9xuXxSgxJF7Ozs+o8Y9+2R3sArdWdW8nOokoQb1yrpFB0pQK2g== - dependencies: - http-proxy-agent "^5.0.0" - https-proxy-agent "^5.0.0" - node-fetch "^2.6.9" - stream-events "^1.0.5" - uuid "^9.0.0" - -thread-stream@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/thread-stream/-/thread-stream-3.1.0.tgz#4b2ef252a7c215064507d4ef70c05a5e2d34c4f1" - integrity sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A== - dependencies: - real-require "^0.2.0" - -toidentifier@1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" - integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== - -tr46@~0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" - integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== - -ts-command-line-args@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" - integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== - dependencies: - chalk "^4.1.0" - command-line-args "^5.1.1" - command-line-usage "^6.1.0" - string-format "^2.0.0" - -tslib@^2.4.0, tslib@^2.6.2: - version "2.8.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -tsscmp@1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" - integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== - -tsx@^4.20.6: - version "4.20.6" - resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.20.6.tgz#8fb803fd9c1f70e8ccc93b5d7c5e03c3979ccb2e" - integrity sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg== - dependencies: - esbuild "~0.25.0" - get-tsconfig "^4.7.5" - optionalDependencies: - fsevents "~2.3.3" - -type-is@^1.6.16, type-is@^1.6.18: - version "1.6.18" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" - integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== - dependencies: - media-typer "0.3.0" - mime-types "~2.1.24" - -typical@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" - integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== - -typical@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" - integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== - -undici-types@~7.16.0: - version "7.16.0" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.16.0.tgz#ffccdff36aea4884cbfce9a750a0580224f58a46" - integrity sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw== - -undici@^5.28.5: - version "5.29.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.29.0.tgz#419595449ae3f2cdcba3580a2e8903399bd1f5a3" - integrity sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg== - dependencies: - "@fastify/busboy" "^2.0.0" - -unpipe@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" - integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== - -util-deprecate@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -uuid@^8.0.0: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -uuid@^9.0.0, uuid@^9.0.1: - version "9.0.1" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" - integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== - -vary@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" - integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== - -"viem@npm:@spalladino/viem@2.38.2-eip7594.0": - version "2.38.2-eip7594.0" - resolved "https://registry.yarnpkg.com/@spalladino/viem/-/viem-2.38.2-eip7594.0.tgz#d875366821c5fb07b8ed6f52610c21e0e3a761cd" - integrity sha512-1gwcB0wxqUoSuzbwTafhqLOeNPWOaIKkSUUvzgsg5gBDOXDxA8tPJWUXBFFdr640maizWRjTbP9GLuLzgMeSuQ== - dependencies: - "@noble/curves" "1.9.1" - "@noble/hashes" "1.8.0" - "@scure/bip32" "1.7.0" - "@scure/bip39" "1.6.0" - abitype "1.1.0" - isows "1.0.7" - ox "0.9.6" - ws "8.18.3" - -weak-lru-cache@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" - integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== - -webidl-conversions@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" - integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== - -whatwg-url@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" - integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== - dependencies: - tr46 "~0.0.3" - webidl-conversions "^3.0.0" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -wordwrapjs@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" - integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== - dependencies: - reduce-flatten "^2.0.0" - typical "^5.2.0" - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== - -ws@8.18.3, ws@^8.13.0: - version "8.18.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" - integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== - -ylru@^1.2.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/ylru/-/ylru-1.4.0.tgz#0cf0aa57e9c24f8a2cbde0cc1ca2c9592ac4e0f6" - integrity sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zod@^3.23.8: - version "3.25.76" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.25.76.tgz#26841c3f6fd22a6a2760e7ccb719179768471e34" - integrity sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ== From 810445af0adbdfb1fb95c017adaa7603f67de8e5 Mon Sep 17 00:00:00 2001 From: federicobarbacovi <171914500+federicobarbacovi@users.noreply.github.com> Date: Fri, 7 Nov 2025 09:50:45 +0000 Subject: [PATCH 19/22] Fixes: bump to devnet.4; move to HONK_ZK --- .../recursive-verification-tests.yml | 2 +- CLAUDE.md | 4 +- README.md | 4 +- recursive_verification/CLAUDE.md | 2 +- recursive_verification/README.md | 8 +- recursive_verification/bun.lockb | Bin 229311 -> 229311 bytes recursive_verification/contract/Nargo.toml | 6 +- recursive_verification/contract/src/main.nr | 7 +- recursive_verification/data.json | 368 +++++++++--------- recursive_verification/debug.sh | 4 +- recursive_verification/package.json | 20 +- .../scripts/run_recursion.ts | 3 +- .../tests/recursive_verification.test.ts | 9 +- 13 files changed, 221 insertions(+), 216 deletions(-) diff --git a/.github/workflows/recursive-verification-tests.yml b/.github/workflows/recursive-verification-tests.yml index f2497f4..577c966 100644 --- a/.github/workflows/recursive-verification-tests.yml +++ b/.github/workflows/recursive-verification-tests.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest env: AZTEC_ENV: sandbox - AZTEC_VERSION: 3.0.0-devnet.2 + AZTEC_VERSION: 3.0.0-devnet.4 steps: - name: Checkout repository diff --git a/CLAUDE.md b/CLAUDE.md index 8abf721..682c8ed 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,7 +52,7 @@ aztec-examples/ bash -i <(curl -s https://install.aztec.network) # Set specific version (examples may require different versions) -aztec-up 3.0.0-devnet.2 # For recursive_verification +aztec-up 3.0.0-devnet.4 # For recursive_verification aztec-up 2.0.2 # For starter-token ``` @@ -245,7 +245,7 @@ easy_private_state = { git = "https://github.com/AztecProtocol/aztec-packages/", **Version Compatibility**: Different examples may use different Aztec versions: -- `recursive_verification`: v3.0.0-devnet.2 +- `recursive_verification`: v3.0.0-devnet.4 ### JavaScript/TypeScript Dependencies diff --git a/README.md b/README.md index caf4f62..caac00e 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ You can find additional examples in the Aztec monorepo [docs examples folder](ht ### 1. [Recursive Verification](./recursive_verification) -**Aztec Version**: 3.0.0-devnet.2 +**Aztec Version**: 3.0.0-devnet.4 Demonstrates how to verify Noir circuit proofs within Aztec smart contracts using the UltraHonk proving system. This example showcases: @@ -43,7 +43,7 @@ Demonstrates how to verify Noir circuit proofs within Aztec smart contracts usin bash -i <(curl -s https://install.aztec.network) # Set specific Aztec version (if needed) -aztec-up 3.0.0-devnet.2 +aztec-up 3.0.0-devnet.4 ``` ### Run the Examples diff --git a/recursive_verification/CLAUDE.md b/recursive_verification/CLAUDE.md index 03ec756..a46307c 100644 --- a/recursive_verification/CLAUDE.md +++ b/recursive_verification/CLAUDE.md @@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co ## Project Overview -This is an Aztec-Noir project that demonstrates proof verification in Aztec contracts. It uses Aztec version 3.0.0-devnet.2 to verify Noir proofs within smart contracts on the Aztec network. +This is an Aztec-Noir project that demonstrates proof verification in Aztec contracts. It uses Aztec version 3.0.0-devnet.4 to verify Noir proofs within smart contracts on the Aztec network. The project consists of: diff --git a/recursive_verification/README.md b/recursive_verification/README.md index b89e45d..b02a15a 100644 --- a/recursive_verification/README.md +++ b/recursive_verification/README.md @@ -11,12 +11,12 @@ This project implements: - **Proof Generation**: Scripts to generate UltraHonk proofs using Barretenberg - **On-chain Verification**: Deployment and interaction scripts for proof verification on Aztec -**Aztec Version**: `3.0.0-devnet.2` +**Aztec Version**: `3.0.0-devnet.4` ## Prerequisites - [Bun](https://bun.sh/) runtime (v1.0 or higher) -- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) (version 3.0.0-devnet.2) +- [Aztec CLI](https://docs.aztec.network/getting_started/quickstart) (version 3.0.0-devnet.4) - Linux/macOS (Windows users can use WSL2) - 8GB+ RAM recommended for proof generation @@ -61,7 +61,7 @@ bash -i <(curl -s https://install.aztec.network) ### Set Aztec to the correct version: ```bash -aztec-up 3.0.0-devnet.2 +aztec-up 3.0.0-devnet.4 ``` This ensures compatibility with the contract dependencies. @@ -153,7 +153,7 @@ For a fresh setup, run these commands in order: bun install # 2. Setup Aztec -aztec-up 3.0.0-devnet.2 +aztec-up 3.0.0-devnet.4 # 3. Compile circuit cd circuit && aztec-nargo compile && cd .. diff --git a/recursive_verification/bun.lockb b/recursive_verification/bun.lockb index 9858dafd7dca8946cc2ea5a216a45972e8819409..de340352c3490449fa44ec9615d55a206e891ed1 100755 GIT binary patch delta 3032 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 afa_4IvHOkyEuJwL5d8}yUJnMmq5lUZvqu{M delta 3037 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 R06!H;0>r { owner.getAddress(), data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], - data.publicInputs as unknown as FieldLike[] + data.publicInputs as unknown as FieldLike[], + data.vkHash as unknown as FieldLike, ).send({ from: owner.getAddress() }).wait() expect(tx).toBeDefined() @@ -85,7 +86,8 @@ describe("Recursive Verification", () => { owner.getAddress(), data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], - data.publicInputs as unknown as FieldLike[] + data.publicInputs as unknown as FieldLike[], + data.vkHash as unknown as FieldLike ).send({ from: owner.getAddress() }).wait() expect(tx).toBeDefined() @@ -118,7 +120,8 @@ describe("Recursive Verification", () => { user1.getAddress(), data.vkAsFields as unknown as FieldLike[], data.proofAsFields as unknown as FieldLike[], - data.publicInputs as unknown as FieldLike[] + data.publicInputs as unknown as FieldLike[], + data.vkHash as unknown as FieldLike ).send({ from: user1.getAddress() }).wait() // Check user1's counter From ef10c24465045455e5547827afc48c71da3a90ce Mon Sep 17 00:00:00 2001 From: thunkar Date: Fri, 7 Nov 2025 11:33:06 +0100 Subject: [PATCH 20/22] workign --- recursive_verification/data.json | 368 +++++++++--------- recursive_verification/debug.sh | 9 +- recursive_verification/package.json | 2 - .../scripts/run_recursion.ts | 40 +- 4 files changed, 209 insertions(+), 210 deletions(-) diff --git a/recursive_verification/data.json b/recursive_verification/data.json index ef324d1..5815770 100644 --- a/recursive_verification/data.json +++ b/recursive_verification/data.json @@ -16,97 +16,97 @@ "0x0000000000000000000000000000000000000000000000093fe27776f50224bd", "0x000000000000000000000000000000000000000000000004a0c80c0da527a081", "0x0000000000000000000000000000000000000000000000000001b52c2020d746", - "0x000000000000000000000000000000e286aa5b9a1ccb7c5c3e64ba62ceff93d4", - "0x0000000000000000000000000000000000124139b8c7a9de894566f83ed4f61a", - "0x000000000000000000000000000000b8f781ae48902ac4396d5ff997fd9bae69", - "0x00000000000000000000000000000000001a0f88c0b74ddb27e285a1e3209810", - "0x000000000000000000000000000000778ac4f975557416992b983d67bef8d232", - "0x0000000000000000000000000000000000135b81fb9dc5cbd1ed4a57f7f9bdb8", - "0x000000000000000000000000000000d26298b8d8948f401490d99c421770ad96", - "0x000000000000000000000000000000000022f612d49a003ae3d1d9efeefa1a9b", - "0x0000000000000000000000000000007f6a5fb9fbf89089795cc00bc73ec68d17", - "0x000000000000000000000000000000000005fb8ba52d3c512370120c27ba9df8", - "0x0000000000000000000000000000004c1c8fbd57d8c0e5a48555f7d9953bbd04", - "0x000000000000000000000000000000000014db1c0e487aac6dd59522dedaffdb", - "0x000000000000000000000000000000cf942ba24fc7d4c4e5fd75459d46e88348", - "0x00000000000000000000000000000000002cb135bbc36aa04d0e7db152f23891", - "0x0000000000000000000000000000009414da6814f784559b3df96969bd804226", - "0x00000000000000000000000000000000001035250f1c597af2933f1be5fd51e8", - "0x0000000000000000000000000000008becaf8c0d916b22215ce14ff87647d9b8", - "0x00000000000000000000000000000000001c8eff524441b6bc83bc555c63e87e", - "0x000000000000000000000000000000bba704a5718dff7448f5f7f7a4b6742bfe", - "0x0000000000000000000000000000000000293391c20afa07149c75ab6442f2c6", - "0x00000000000000000000000000000065de2b4040567611ed0cae5de0fd6536d1", - "0x00000000000000000000000000000000001bc62f3f7c6aabaa0529849f38599a", - "0x0000000000000000000000000000001870927552830dcdd2d0b98cf9729fbeed", - "0x000000000000000000000000000000000001c790302a083cbde7c4422dc48567", - "0x000000000000000000000000000000c24425178a9cfd8e3f46c2bd128141740b", - "0x000000000000000000000000000000000002f7c5b8212751f1f878e3dba466ef", - "0x0000000000000000000000000000005d794f18b6081f8fa21cb597a038994d35", - "0x000000000000000000000000000000000009baf7ae5e9fdbfb687b5ce7c134a8", - "0x000000000000000000000000000000dd85daf708cf980354972ccc3bcdd6a13b", - "0x0000000000000000000000000000000000072f3af0f7d01d8535a3b8d9b94250", - "0x000000000000000000000000000000153e2d6dfa399c1231d3511434821b1292", - "0x0000000000000000000000000000000000062ff7ff0c1b8364849d74c2ada021", - "0x000000000000000000000000000000035920703d1a71dc7d24250e9b083289a6", - "0x00000000000000000000000000000000000c60c0f9cbf2e309ac4cf86223e36c", - "0x000000000000000000000000000000930a7fc2f88fc376a0f3621d3c88259d7e", - "0x000000000000000000000000000000000014b78544e6324f09bb35d0738d0fd0", - "0x08e8c56f46e365b37e8bbf0bf724ec994fa4ea297581d3174dd336558aa1e1d1", - "0x2d416c7c8b01bc479948bec67b800277fa175de1ab62eddaed32a303663f57af", - "0x05fbd17a70e9e840bc28f81c6fcff89ce266e15b1fb2acf54d6917cc7a4658c7", - "0x170dfb259b322fbe0171716bf49cee7d18e904f25ebc01163f33f1640ce42297", - "0x0be92c2c8ab02420bedd27541739c9e923b1707498533da2b2fcfbc248257c18", - "0x2041d1600aee976e433a071252c4025b022f49301f72da720ad29bb0604cc6e5", - "0x139fe3bb88e30a894229ad48a96dbd50bd6632b5fb3fd257f10d1d55ed3fdc0f", - "0x2f6a9e6d59349a52c6b91a9b5a414b0def702ece5afa3d86bc5430062600dbed", - "0x0b42a8e7001721593fb500843716c1fde725a604da6cf2ad6403f7c73dbe11c9", - "0x249c5297ccfe7eaaa055344e8e579449156ecda78a46241f71375ba24b1f69df", - "0x1169016ab76036ab747b2d02f22ff4d3e1659daf74001256f61b21708c72eab1", - "0x0676de742dbcd1581ce5c8fcc3659b3b56b53cfc23221301bf145bed8463d963", - "0x135b9bff146a8111a51469548099731d235131d071d88616719c76e302ddd151", - "0x189940a2e633a2fa5b3b4124c1e83ff72485d5e07848f56083f6653ec45022d9", - "0x1658abf8ea9f928015a3a2434593edc63dedfc5bf023e940b18479707c4bbf93", - "0x1e2cb5fa0b3374b39b887077d33bd5e2503918b225c8753d0f3acdb95ae20cbf", - "0x11c7310f2c1c5e5ea8d91955a447e470a61d4548ecac5c851dd5ea6a135ff07e", - "0x29e6b81f83a4498a967bdf70c92d8a8a1c139cebef49f3ebeeedff3463ef939f", - "0x0c0241de25452f4445ce40a1fc3407d043a6f1cf45e33411352f8fa8d25becb7", - "0x0d4429addeb3abdd1132540a1f6580037e6201c006b1b02cae35a5eb8f303446", - "0x268c7fc7de9dd1ba12fc46a6d1fd6f941827ce90cb5a79c5f7ab70bc540ea149", - "0x2dd2c289be1792439653bd1dc19fbbc7be240c75d8e97a28390c27183941d731", - "0x1fef02bc6cddf6775e8d2e6bfd986cabb95e991360e70c27cd345eabe8e5ab4b", - "0x280c8f59563a411132ade8d7ed94a2deb7f8198eb402188576ed5d4e8bdaa65c", - "0x2192b7071746422d6855019781d880a0b21de3a6ac1616e8e308791cfb92627a", - "0x0ebb1c042c2d6cb6f5caf82f5cccd708ffa7be9d2a7bcf2f96d903c4ee7f3b74", - "0x23846b3b8b41685c2894b2f05af246dc3a97fb7eaa175872fe4fc799612cca0f", - "0x0ca1bfeb2a470161c79fde89ddce25a95dd6848ca00817a9b1d677c2934e26dc", - "0x19d8c26ecf01652783a7773f37668455e3f27934879b923e0d23b139aae168bd", - "0x1a1126fb589f08c7e0aab37b1b065c125870c2c9cc613ff3e3ab9dc4a0d4014c", - "0x289f5518a4d9809fa9e6a06404284d2b084d746ecd71b6a4c2e73abf7ebbfa8d", - "0x0d47b306d98fcb5bf637da2401f84429bfdf1e37049fc74b4629f35771242f42", - "0x149946bfac349fc1d5f5c3680064e1a0c01c4c37ac900a6988ef3b17dbce41bd", - "0x08d5823a8ee8e1b182a39db270f01eb26c8ca2ea4a156a47f8a102721b28164a", - "0x0743c03c27790dfa9429c47cfdbc08c8f1a8a6c1af0e82042b4832db3339729a", - "0x06e3963534a9b565c9d14b41e789fc6cd2cff33cedbacd6ca3565323e5f081fc", - "0x12a0280e2b7acd639566cd6843d7880a81d631fa71dfbcad4f5a5a09daa6fa67", - "0x2be0a73a0df84de00aa8b232367591ba64e519ce65496cb77f42a696d5461b42", - "0x1a71b0095835911f1c4ff3f48c4fd72ccd7f5cd8ee3dab47b7f49a9cd1a28680", - "0x1be0b00ab57c1e5c9de6453e3a4718832fca7fc380dafe09a966cba72c6a948e", - "0x10c881bd63fd22407d619cb8d69e4dbdbcdc919b3b70e0c9e20d27dbcbf8aa16", - "0x2300118a2427a1887c51374e9aaa444adea6e5e6be0c94077d47096cd6c2fc6e", - "0x20df45054453c305129bc40958378e80a4c9b47681506388c46c2185e494e8fe", - "0x23379407eab3490125baf3f808711b6442b278cf8a671ab06d88bd8b7e424ea0", - "0x1d12ccafe5810d194d947175146b772e1a6ad9647472607d13735d0523b53ecb", - "0x1ab08c4b08c1ccf8a618bb23a5f442a0c7215e176aefd85a65e6ad74c32d4d71", - "0x007a795eed07b703d47df7e40d19c3c1dee7a18b66053fd0684f1674dd786b08", - "0x0f078efe9e7a90375bc6f1dc769a7b474c68d2e1e520914f2b4a8aefd9d491aa", - "0x26eff811ad0d0e6bd88388ad200d98440db7f1c9b7e9cdd75c549bbc9731adc5", - "0x110d8e59a69fabb34493d3be2495655d29b6c3f6f345067201226ca9d66f0e13", - "0x1744ffa717b9635a92c6937f0959585e6d5a599b7dac431f97f8c8aedfc14b0c", - "0x2ed4e926800d14f001077579ce112b803c28b062e30ecea4d873d45c336e1c24", - "0x004e7e58bbbb3502567172b4d2e7dd63960a0e00ed571053270ce8f5d7906002", - "0x1fb2dce6c563a5e458c7bd39b1b1e858ca4601b7dc9674c1dc19cc0796e3ff0b", - "0x2b166dbea7dc400626b0a4ac9a689a92d4aeb74d7a684281b1ed6805b9008993", + "0x0000000000000000000000000000007da35ee71f093e8a686fb63afc293d3340", + "0x0000000000000000000000000000000000118c0bdfb52290472f7227208b0e03", + "0x0000000000000000000000000000008e0249748fb305ae568630c5c5f89e133f", + "0x0000000000000000000000000000000000082b40a4a8f0fbb0656c7d9da5a63d", + "0x00000000000000000000000000000016a1777219b13f0eddd5e1575181ddb480", + "0x0000000000000000000000000000000000238b943c5eed4d57ef1c39e4e01274", + "0x000000000000000000000000000000e6f9d5aefdaf69607c51311d9a4fcfbc66", + "0x00000000000000000000000000000000001183840ad47b9355f2785863a1bea1", + "0x0000000000000000000000000000003247f79675516135f50116bea04e377728", + "0x00000000000000000000000000000000000dd319bc0d6f75ed1a0ce01b091083", + "0x00000000000000000000000000000016d5c6c1ff3e9e8640790450fb7b18e9fc", + "0x0000000000000000000000000000000000147bf280dea77d3840c16f4aaa48aa", + "0x000000000000000000000000000000fbb88f412b793a8a096ebb5aa4182f2c6c", + "0x000000000000000000000000000000000020efc14052cf7c48604ad20fb21b1b", + "0x000000000000000000000000000000d7831d83cfc5acda1d86824ca5f9120ff3", + "0x000000000000000000000000000000000008ec0aa734083c765833e90c06ef88", + "0x0000000000000000000000000000004011b5671e32c5a9f8e5b34f1d70c40675", + "0x00000000000000000000000000000000001905e56da53a561a801f6d98efdd43", + "0x000000000000000000000000000000690dd31a14a50190fb40f4539b876839e0", + "0x0000000000000000000000000000000000151234623fe83369173c7aba368139", + "0x000000000000000000000000000000bfcad0267150620dcb1d61eaba5db4289e", + "0x00000000000000000000000000000000001f13e7e07e3e93b78f2b19f169acb6", + "0x00000000000000000000000000000003d203d8ea874488366c0fded9fbb9833a", + "0x00000000000000000000000000000000000f8f2d1266894d305a120b6e53c77e", + "0x0000000000000000000000000000001251e7510eaa1e2f72bb74ec1ebf98a41c", + "0x000000000000000000000000000000000028aa685d48860af7134378954559cf", + "0x000000000000000000000000000000a68e5edb40273c5cc9f41beafc1ca28f33", + "0x000000000000000000000000000000000016a9eb9b599e06be73b678727bf643", + "0x0000000000000000000000000000008ef642f2f2c9a28c9c6acf4074dd334f4e", + "0x00000000000000000000000000000000000ebc1b94cb1d3ae29bf84a252e680f", + "0x0000000000000000000000000000000f2e4f98d73e3d631ca270a372fc43221e", + "0x000000000000000000000000000000000003eca95b7b464717fe10806825d729", + "0x000000000000000000000000000000baf007a4122cc019c3b9f0a75a6acd06b7", + "0x0000000000000000000000000000000000156a76a8b7b39ac6eacf31b5d0dcd8", + "0x000000000000000000000000000000ae46131b14d6aa85d1feb546b9634036dd", + "0x0000000000000000000000000000000000106592dd589732d1fc3db20ac8e393", + "0x0015a0dd83160cca11aed7996f89204dc78a2c7530eeac82051ab6feb1207bf8", + "0x0cba72a697c7b5f18411f934d839b70c84e9b84d491d8bdf9dbc767d16ca717a", + "0x1013fcf37ba5be20df871b31e7a51feff363b58a0b25742ed34bab85886cfb63", + "0x2483b96a35add82cf095fb2dd851ef91b59194ed7ceaa487a11d00b066754287", + "0x089ba062d6bffb00bd5a1d48ef65833ab526665a3676ae087cf0f74a81c62fb0", + "0x30006c8bbdbaf04096b222a63714e340c79ae786058398cf05ed1dcc85861fba", + "0x279431ce4ff3eb1bb285b3fc4e6af7e20cea19e5e1cec472e5be0faff9f147b2", + "0x1673af3be72c8a5b6e61479f9ea464ddbc33d9aecdfbdb7ebff0afed9af8fe60", + "0x03313d6bebf9ad9e2480acfff9e4286ebf8e6397a7206d7867cd7cc3f118e29e", + "0x2638a13e2771a8a6052eb4211afd0de326a8fff4241c6a9d3a2b7783dd70de80", + "0x193de64af33012c2665b0ff2d5d12b4e8da8141aa394f2ca565db077aca74c89", + "0x00bb7a8360a3f0fc92a24be7740633c459aaef7abeb9f4f0fb3873f6112689bf", + "0x2cbc3372f19ffd7f64f1c585f2f2c491e6de8f37a76642c6f106b5f578f9c6cd", + "0x18fe8b960e4be354faf85950275d1fa94658f5de9ba006a4090222344e794d14", + "0x20141ab47582df0e1460bb92c4522150126750acf3515697c42f6626160f9392", + "0x2f68b247b4a92f0be18bf03923851dc9ddf78e42e511423cd644110be76c518c", + "0x1b3904f5fdbc974c2542438e6cfc8bbe9acb7335b8f6fa6076788e7bc3b91fcc", + "0x2678f3abe28b515f57a2b7f4878a395e59ec94058d8bc75566401bf90ed65298", + "0x2b2616dc348e6d366402966661ad2bfd29abfaad01726b7f7b6d187e63494aa4", + "0x2b2cd73144694012a71be830387e9c561f29334b81a393e5d60671597d07a8ae", + "0x2506c90f400292dfa35c40a32af459df853bc8ed620ce02e88cba6db950feba3", + "0x1bbe61277e74bd4e9b763c0f7ba86571844815f0d11b2161c8c6526d909dcf09", + "0x225b416518af0485608b6fc4d6b56db214976a0a13f186274c67c5cefe96e8a6", + "0x133c437ea2d693d8202cf2fa01953b967c4972da68f2ac295abc9f1e0a46f4ea", + "0x08bf7dd9dcba4733cd9187899bb826b650bb232a8191be50b15e5bec2fa4375c", + "0x1769f43092b9b54bdea9b56bff0821779904d98dff8830b302f8225a7a854d30", + "0x04f77a3ca0e22158677393c6d5b5e368330dba485118472c39f1cb064e8636ee", + "0x2f8b4f863de520e28db83eaa43610d9b0ed1811516c9d6913e5c7e1cbeb440ac", + "0x264124f810b7ac7b528dc029638a16bfcad4510072c2a170bbc40482a1eab4bd", + "0x2df0a296d9ac1ebf59e30b65f8d0978db256177eff78db9b9ddfe424430376d9", + "0x17f8baf2a78dfaa4dfbf349a01d05773e9e621465110cb707d1c1a9c0e09ff99", + "0x1f6302a445a0b6d53e8ac12b152fa6aa9771ffe13fb6bb18d51221716c144c28", + "0x26872d7e96f5693b067c5ae4491429a8b0bb2ac8b2f3d6fab914384eeb441f19", + "0x2854ad86f46dff7c372a8b56c32761ef4c523410de7c6406f53b843a461a8317", + "0x0e4cb3685f3be2de6ebfbc1e7fa0b57f4866cc2b7091c8018abaf78693e77a81", + "0x1b83d02e975058732cee923bbefb6bdc8bd4950dac27e9594ca0b24f5facdee9", + "0x0ade28ddb36c69db4e2de6d2233a31283389df12844ee55e5b9180b9da69872d", + "0x1efa64859a01c8c88617d66eaae0b3053487d871022904be7a7f9d314e6d83f1", + "0x284fc2a55882b6442c2c9244019989e50a5f3ddc2d23bde7bcb8c417a80b2d7b", + "0x21f28c46655005a7d5bdfd8ac3bb9370a32bd1f493a9363e1ba9c06f274c5d72", + "0x243f7c8327f11837b9cfaa8d5c3bbdb45b67e04ca89e4274c36d3f22742c7803", + "0x207f574ab247b4bff47799451acf428f103246797b4dea8e6a01731c203a7fa1", + "0x10a5b739e7b340c4d8cd4db28f82a308cdc0f10e659f6f7ef1de367477181dc0", + "0x22c730ac611323bb1c9be31759248756243ac02c8c47bac5f0e8c953072719cb", + "0x18f8365143a2876c7e8d7ac0b9886c46b8540225228c0ecb62f2e81b29a3d3e4", + "0x2ff1c391d162f3243d4087cfdfa102b38bff5677e63b90befb1bf84f0f6eec67", + "0x09b528184417c9e638d6750ef5ae386056f00e607eb7dfd551b3ec1d3829ac43", + "0x2f366049a13bc41caa5159ce7aa2a7c57844f3069ebc7216698948abae2b07f3", + "0x29130d59d89dbe8c01f64b0a32310f5ee1021ac45442f778bd432936554546ab", + "0x224301e05de8f1aacd0046e4c456af64b5ef930be0debdbb9a9c4d15d8a1c705", + "0x262f3596c5856e4ab353c2c8bb7250ef832e291cc9d0c9d0b344bc59cbfe9e53", + "0x02b6661850c0c839331b54df7ca3d21723cfd2f121dce2b8874ba9153bc021ce", + "0x1095578a8ca3d1879a8628cfcd62661299132a2070296f2045f2473329a54ebf", + "0x1debefe212c78497f49693df515dc849bcb861a10292971ecfa3452e0db298d7", + "0x24dc05e5f1ffe0886d7ea532e70f77ab067fd1d01967ef7308de29641723343f", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -305,81 +305,81 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x1e2f9027b9f712b3a2e32efa0f2374d5b90d7f8f94b40e7d69615e4c271b637c", - "0x0c5e5187e256a053550e74fda61d96365abd42e35b379af7154aad73a06d6e38", - "0x0c74b588454de6aae49868568b6eff7d9a7a7c32e83518ed48ad5a120dd7bf83", - "0x047d57d5f5cefe7e3d80b43b923fc3c1753222b2eac70b32e0ac5329ade20c59", - "0x060fa7f36587b8f7058533491f253e12151c22abd34f1aa90b058e80c5b80d79", - "0x0cfe4b09ff748b8fdb21f5f3a31e05025131f45bf3ffcf68ced790722dc9ddd8", - "0x0dc85b67b86158b0c87757e28f5efccc5ed7b887e89d95362672eacf2b7b21a4", - "0x078f41195732267a97bf7597695dbdc3e7bd0db3d9bfcf94d99f3b5b2e023fdc", - "0x112f7f5363800960653de76230de38f6a660cf07a7b6829af71ca9bf9a3e52f6", - "0x0006de87d42257ab0bc7c8fd5fc2b00b0ce2944c8e98521f656ca114d7af8f6c", - "0x296f1b2c0a1d87a5be74185acbe77569185cd9f22af4fb065927dc8775701a18", - "0x0664f2bdbcc83c91cf1f9c6a8495b49bf4e52dd93581963634cd3933c23345a7", - "0x00a93001896fe3e2884bbffe6f350d406cf7fd41006a9105cf3e8f5a0ad56c47", - "0x30625a90f0ce57a6abfaefd720f0379a98dfd853bbea796646561d76f4c2f875", - "0x2863a2b0214d45019a884f4f5991a7b88edca1468d3bc7d62112c33075aca73b", - "0x0cfacc9861801512102dc0a11a2c96c5ee7dfa688104b4baf0aa9e848cdc5ec0", - "0x10c62fd2050f1543a761488ecc98312669953b13d34b61c3eb1f69de23c4f23f", - "0x2849ef0949a0284810d32b32712aeae1a592f445ad056b612d8c49c224d4bf6c", - "0x2c78e6517e9b7e59ab5c0def8959d627aa7da09af10ce708e66b370ea970218a", - "0x201b487a318b1f1e4f0fc7f7c3ddc237ed2224acacb02d3fc87d30484ddabaf5", - "0x07591796a6c7c46861695fb0bc5b07719694401451d8cd023aeecfceffb550c1", - "0x1bc9a37e9e2b4bc428b5a806f28f9179f5d75d2f97a2a44ea9fae27437bbd64a", - "0x0b6ba598e66a9ace581bfc3d5f12bf3cad338b9ef28c66cc70ace5ccd7cfd5e1", - "0x104b925e53aca9eeb45226d8dd0d9a192a3d552be390d54ee2a1a4c4d07a0997", - "0x22eef33538ff9bab4b46be081258534a2d530bdd3c1148ebdeaf17bf5ca6ae01", - "0x05b70e36b978bbd6e2e16254a5c4cb622d56486d537c57077c1efa0a4d44505e", - "0x1956e215a0bd4f615c8f8d67705810c9a020394d9434ab885815c22ff786a50a", - "0x0797cc4bf53e3c986988e5dfd43caafffe26f6bddb66a1448fc104fef784103c", - "0x04937c392e2565cde8ab4237f144f8e29a478039039547a00aacc8de01160625", - "0x08d8e3ffbe589073fa2346eb33c30910f94c3ee2188de663a5e548fa05159e18", - "0x1eb3bf0ad1eefe0a4d88dd28f0af3f955b33bb75a342d12ca8d37c1f6d20ae5b", - "0x00821853267359dd4cbf92583d9be72607765819fee025ea0cbded4e2f0f725d", - "0x28f26b59af838c1272174670f0419ea7e6f2d5f686bd20bce061139dd6e502ee", - "0x0bd760c0cc6277b1fddc63173faa4c5a5c97cd9b1a29c58beee586d2a76be899", - "0x12e4051e4ce2f38e684f666bc89f5547e0c10bbb70ab5332d083cf94b0144195", - "0x0914bcfe52ea082e16db6f81f2d00d99983a8ad2f63fbe53ea3d128c80ad1dfc", - "0x2bd2e0d60bf2290b44ae744c3ab832d2cf0a8dca067d0bdc3f971056c9c71795", - "0x1b345c2f557fa27742dbcf7b48f7b99418e3b384316d555043ea9554d21e0b48", - "0x188257dc2a53915afbe9a8fb22d27936e28a8a9dcac113f009c92dbe61a045db", - "0x052e3bb43e1f539660460eff001de8c1f202feee7a729cb13ede6313cb87febd", - "0x131d26656ca1a93f4560480caec25b448dc8329fcca45ff3bd902f3e2e213131", - "0x21e7da9dbb5b88357330740506176d48054753bafc54e50aa2e825625995684b", - "0x0000000000000000000000000000006dbc43eff7cc4a57a177877e5aada0c074", - "0x00000000000000000000000000000000000587d19e845a1dc0918d1e4cb1815e", - "0x00000000000000000000000000000041d9018b26461df38ae002106f9e05fb65", - "0x00000000000000000000000000000000002c7f6b44dfa617067099fef0fda23e", - "0x000000000000000000000000000000fc0f44607bfbeb6be81fa15a87016624f2", - "0x000000000000000000000000000000000019ea7113908704498732fa232b573a", - "0x0000000000000000000000000000005cc61a7e5d82ecc744cb03a9840842c8d1", - "0x00000000000000000000000000000000000132ec790e71a86055f93f4821edbb", - "0x000000000000000000000000000000b48f00f4c664031ba21ee38cec18b0177d", - "0x000000000000000000000000000000000003be8107a68f3fb7ff61e13f7ebaad", - "0x0000000000000000000000000000005228d5d9f65d422e05ef20e1728a84c2ed", - "0x000000000000000000000000000000000014a90e90b42401b5e49ef847c68160", - "0x14b1136b04635bea7a01fc3901999900ce13a9483ec0f117c351c73a2e0268fd", - "0x00000000000000000000000000000004255eaf42683f55beecf5082bb7f81773", - "0x00000000000000000000000000000000002955ba27ad10f55c12df3bd173c837", - "0x000000000000000000000000000000ca62a30d4a2d98605b46ccbda830a39589", - "0x00000000000000000000000000000000002ddc8faa3e3d92d929d2c43c615d9e", - "0x000000000000000000000000000000e16ffb45b6a81c588a679c5cd19032a0f5", - "0x00000000000000000000000000000000002310c07235f36c2a740c49b6418962", - "0x000000000000000000000000000000fd10cb68c652e6f56ea3579750601bdbf5", - "0x00000000000000000000000000000000001fb19aae15d75c1166084f47e45aea", - "0x000000000000000000000000000000055f331cf2e4685367eb945310a26ae5dc", - "0x00000000000000000000000000000000001aecc818f6d1f229657ff5f17265b8", - "0x000000000000000000000000000000f4dbd700357920ecda177dbe20e3ca08f1", - "0x00000000000000000000000000000000002b9ed5f60b42f43543ba4bed541185", - "0x000000000000000000000000000000a3ff5c3f535381da0d01d3921d53eb4dd4", - "0x00000000000000000000000000000000001673d223d87ccd21a00340a1bed69a", - "0x000000000000000000000000000000e4f59a26a361d489c43744cb220af1fb89", - "0x0000000000000000000000000000000000133ff5dcb11c36d526b8d52d62c80d", - "0x0000000000000000000000000000009ff6fbca94730ef08ee61e5317ecf0df2d", - "0x000000000000000000000000000000000023e25773765f7b0949a9ef76a7f12e", - "0x000000000000000000000000000000430424006535163aea739b3309364e957c", - "0x0000000000000000000000000000000000103ab1b70115e458e90520daa1457a", + "0x25e666f9bf6c6620847e372379a5a34ef6c2307e89e5cfee21277808f7a12862", + "0x230f362c2e6655052e21638c775341d6ad763217a31c1d1439ec80c464a30a0c", + "0x2834fb1c14bd9f7cc60a95d5b00dffcdda051f816b8dc97ef2654e65ebf8811c", + "0x2c2c3875ee79f7440d4b7bc1bfd06dd5e9d75c174f18f9091be67c10df0107f0", + "0x277b50117215ca93a24f36cf5ff8b662c8e99dcd6d2ab7c77d9d196d8cb784c8", + "0x1e3351da5560646b1d647e3c16e6bd296bb3a023d2a3d3513a541a5cc00eb77b", + "0x1b55898141641950c28efaee355e5e22e0a5957483d53838feecd2476bc548c5", + "0x2d062650294bc9feb938d47ec2b69aa40bfb355a0639b1acce5e0929b78e1ff2", + "0x2202c338275fb0e69facdea810407db28b731047d8287b8e459543cce6ca651d", + "0x23b81f93dff90e51c04976db97e315399ffd785b4abd7e07de65edb06fd82ea4", + "0x05285385df0c4ba869d50d852d5753ed85ccd95b8af6e24f23fae89bf4e9de56", + "0x122603e5b20cad6e28c3837aaa759f2e0b79485ad97238f2b5384cd30206bb46", + "0x2937e1d1c86fd2e492aeee4ffb47344c8c5f16a33c861a5212cf523ff34ba80c", + "0x0b44c33af931bb7d6a1069788636aa3c2b5416114e72dac6653239fea216198a", + "0x2c124d721b9450da44d29072b5e2e3e4499e9597121613761ea437cf1b1b760c", + "0x0812ac3f77950562a57d0102a31aaf6404c5a1a6a800b1cefcae9d73b68ddfc3", + "0x132833e4f679c418c78d7098317094c732a805d6db8c418cf406cf34de5e6140", + "0x237828774cc2144e3752d22485bf994bbf122a20cdcc47da83c25a9375ab5d52", + "0x0f72ee1596a4e6e329c21492ccadc586061cc02a3c2edcff72722d2dda26711e", + "0x13de05b7e80e13f33e6476e8af339f014a00d2396d6aa9eee9fb34a8dac5d2ce", + "0x10dc91a9be51eda8f0c721418b48ac66f4d1ababf55d0efced47199253abfb04", + "0x2d80bd8022077fbf7937c22e603bd2f313fd731025f12992fa8b5b9666d5bce2", + "0x203dca9ff43fbb542755667740b737383245de97288d372aad1c75ae689254b3", + "0x205d4e65731a6ecea7257ae262314942e407fc2a4faa48f8958ed95039dcab9a", + "0x1d90fc5d0977df29f5496bff70310f478cbe09b3bee47ec1a46adf477eafd287", + "0x06d808bc75fab95de4b678904cd39576c89ac1983a5d01b97fc28528f514e911", + "0x27e69aa121a30cd3998771549ace5082fc36ab51af55e70904f82b0674b98120", + "0x0ee4ac59d9984f0b85f1fbd0dd79e8ec1275251fde9c23dba2da88901742b7e0", + "0x261a072d012f94cfe81c2294ec35dd16de2b2b70f15187bf037c336b95c1f713", + "0x1baef56d9dfa8b6a80647a5746a6aa0bb97c076d449fd97797ca80a217e105c8", + "0x0b85db7191a4738f847879ee5e415e9eefe8fabe237fe031844759fb97d0bbef", + "0x276fafdf1cc5df690031c0dee3a11cdeab84e193cd5b0893c042a01298008a42", + "0x02483619dc78d723f054ef6d1fea4583d1166b637f2b83d756d1f71455cfc000", + "0x232fe82203791429ae1671c6a4629c23bee2a3b89e3cadb6eae7dd0240796199", + "0x1acc20c0176e2b6aa39ec9869798d62fb8d0b04e03517b5d4549733fd5fc9525", + "0x0ac25158b159ad41f1382433a2fe3140e1e959045c530967c2f26c362355d4b1", + "0x2ed4201a1b2d10c05a6bd464e9aab5e8522cf61dd1ddb43b42b4298fbfde4ae0", + "0x123059eb11eb5291029cc9c4ae6805ee8260ac6b6a6001de8e0d3a01996b54d8", + "0x219a91d5069702ca16a66eb4ab95d93578ec1aae0a9f2898652caad7866b7b62", + "0x1e456aadecdf8e1e2dbe4f12c96d708565878ba2d336a07e39687414be63b86f", + "0x2cbd90b82282aa05870c82e7e991159f8e3d66befdc42ade35114013a96bf7cf", + "0x01946494dc70a4d04426cadaf3b69bf08cb1c39c7ba36bf4ab449a3fe141a443", + "0x0000000000000000000000000000009dbf588713e6c1beec75b75a59415eed9e", + "0x00000000000000000000000000000000002ef1b5b92d3b6ead064836399dfe1a", + "0x0000000000000000000000000000005aeda262299b4f0e5254f5add280f0189d", + "0x000000000000000000000000000000000004f456ea09ba4e3c79c68d5ab9fd67", + "0x00000000000000000000000000000010a913c27027bcaee936498724c3fc22c5", + "0x00000000000000000000000000000000000bb9a02ed6e3761ff0096495cd29b4", + "0x00000000000000000000000000000096cafca3b5e3f45dc8b9bb4b72ecdf4c44", + "0x0000000000000000000000000000000000130bc0b83fa6788bb506b2a1147cc6", + "0x00000000000000000000000000000017c121ba26c268177d2b5f66f2555438e4", + "0x000000000000000000000000000000000007aaaeb8ae54e9c8cd4d2fdbfecb2e", + "0x000000000000000000000000000000235eaa9dde3057c044fc4a3da3c3fa8862", + "0x00000000000000000000000000000000000a208da4fff3841731ec250be8b969", + "0x147e96a18632ac1d1e0de083b2a9aeb338645c3f154b96e4a7af6eb5b1f153c4", + "0x00000000000000000000000000000042f03bb9dec28a91553ca889551d70ce23", + "0x00000000000000000000000000000000002b1cef3182242e4b540a725a38dbcc", + "0x000000000000000000000000000000d075b1cfb6fbd3684a85162480decc97fb", + "0x00000000000000000000000000000000001024211a9d91fa9382e683b70c947d", + "0x0000000000000000000000000000001f8134e717d0e68ab497d70da253380874", + "0x00000000000000000000000000000000000033abce2d06579156008ab808faa4", + "0x000000000000000000000000000000b7a54404cd2ebd403464c2a3d6a36f3c31", + "0x00000000000000000000000000000000002d353edb5b62fe421cc3cb0f6dfcd3", + "0x000000000000000000000000000000ef05825e0a53f9da354e7f5a1b2c6faa69", + "0x000000000000000000000000000000000012c4fbd830ff88ce3db137b4cd2641", + "0x000000000000000000000000000000fe89befd1e0ba858b37b7b6ee9dbce7836", + "0x0000000000000000000000000000000000024ba6fa786dfbabe1da474e5be127", + "0x000000000000000000000000000000b3f67684d59a8642b8522db5c017f48a06", + "0x000000000000000000000000000000000001be61c87bb9f2a9fab10822396753", + "0x00000000000000000000000000000067726edc30c8e21e00b916294f7b7d04a7", + "0x00000000000000000000000000000000001e1108f4128df29608e16eef14b237", + "0x00000000000000000000000000000009b4100769505d9fbb355d32efb9caf4a5", + "0x000000000000000000000000000000000014b1ebc0be478ee0ba0e9c00cabfd2", + "0x000000000000000000000000000000025755b6fdb279846a0c4df06e98fba2cb", + "0x00000000000000000000000000000000000f0ba88bdf0879986b0a0991de5a3b", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -468,12 +468,12 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x0e7ecc0be513b34fde81c9b708cb8bf851523252a342022a81845b96b5811b39", - "0x0efe6ae136260870c7ba932f99f9ef25ea9a33c12086a450c22bd9f5de563378", - "0x1725b0c1a498f5e2b4edceb4a0b8a0fcde27a59b681dc846bcee754098586244", - "0x016293087d2ba463989b0a3c7ffb74f84af063ffb83d2a8f65a1b2f2cd5745c1", - "0x123edf4a25074436c45f902c13604df9357dcffa0a0cf3dd58a2b7a220437bbd", - "0x2cf1f02d4539b1e316e693cba51bad8d4925069f474126bd339ff63733583555", + "0x0aa1f61d762d56a759501f2622cb146d49e4c42fdf3565e99090af3e48c1bae2", + "0x07d69367dc2862f2905bb620e35b00eb0cd697359d15940c0c0a1a973fc11940", + "0x2ad880174ad13ecc05c2f0f96e01b8da8b16d8078fca5876a38b1599206139ec", + "0x100e5f56ed5d727942c7e8b82307e4ef6d28acdb86581d73b179dc70da0b584e", + "0x233adc6792b9b400ca5b99e6ee4f9f83b5d52fdf3f9229de1a09177a4ffcb3ae", + "0x2b73fa7f1d3c5681f7b27a914c1261b2c53a068964ca839f4d70900214f95fda", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", @@ -496,18 +496,18 @@ "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000000000000000000000000000000000000000000000", - "0x1cbcae3fc36e1705937799cd038ed068685e12dfa86d0f9895296bb2a442de7c", - "0x16c43cb778755dc6d17073e832c592f8d6cc83ebef4840b76f1bebfcea6f4789", - "0x05f818bc0e2c744a10f2d2e37eaf62374461ada09f4bab60e383032b2b08d3b3", - "0x1e4a3a8dda09e3747fe634426cb4e6ea76e2464677e876848ff25a455490c529", - "0x0000000000000000000000000000006a6f77eadd7cf83b82f8bd172c354b9bf1", - "0x00000000000000000000000000000000001d7bc3d3dd8baffa34ed72e914a87c", - "0x000000000000000000000000000000c8a50981ff055d9fab8efccea7717ec6a5", - "0x000000000000000000000000000000000018ab8f5b711b2f9238a9db29ce76c6", - "0x00000000000000000000000000000047ad2ca98eab49f413d95f00f1d887ab6a", - "0x000000000000000000000000000000000021fc5a5e0fc30d48330b37313f129f", - "0x0000000000000000000000000000006d18cd6b126ab4b34e0cf4e2ee5bbe4218", - "0x00000000000000000000000000000000000226e74c799353435cf7363e1b611a" + "0x18ebd81885a0412d1d3dfab05494aa49fe09b752f8435abf17a50d6ff237a3aa", + "0x198e58c3124434167e49dc6738fa6bb1a67fe79498acdc6bc0257246a02a2db8", + "0x01eed9c370ade9ded9ce7e38c7f273ec09ce40ebc4b1e6c6ff40df2509995e56", + "0x00a5cae3b504f5816e58319da868ef508be79ce83ffe9639d2fa18321ae4e307", + "0x000000000000000000000000000000ba5fbf9efa91012112a3ab3a1ddf7add94", + "0x00000000000000000000000000000000000569e796165bc70bde9c2815fec95e", + "0x000000000000000000000000000000cf229d07cd4d0a91142ff87fb085288ee1", + "0x00000000000000000000000000000000002e92b58c2163690a3b6e6bf9124fe7", + "0x0000000000000000000000000000005b93372f0cea6494ee8301cb67e60c3214", + "0x000000000000000000000000000000000005104dd2686d16b5630a80c6d733c2", + "0x000000000000000000000000000000f2bc890c4db91fca6fb2e1d667a3750b5b", + "0x0000000000000000000000000000000000056d78e2f79ebce1c00919f0e30533" ], "vkAsFields": [ "0x0000000000000000000000000000000000000000000000000000000000000006", diff --git a/recursive_verification/debug.sh b/recursive_verification/debug.sh index d6b00ce..62b0060 100755 --- a/recursive_verification/debug.sh +++ b/recursive_verification/debug.sh @@ -1,13 +1,10 @@ #!/bin/bash -cd recursive_verification +rm -rf contract/artifacts contract/codegenCache.json ~/.bb/00000000.00000000.00000000/vk_cache ivc bun install -bash -i <(curl -s https://install.aztec.network) +bash -i <(curl -s https://install.aztec.network) aztec-up 3.0.0-devnet.4 docker tag aztecprotocol/aztec:3.0.0-devnet.4 aztecprotocol/aztec:latest cd circuit && aztec-nargo compile && aztec-nargo execute && cd .. bun data -bun ccc -aztec start --sandbox & -bun recursion:debug -docker container kill $(docker ps | awk '/aztec-start/ {print $1}') \ No newline at end of file +bun ccc \ No newline at end of file diff --git a/recursive_verification/package.json b/recursive_verification/package.json index de1546d..d2394c4 100644 --- a/recursive_verification/package.json +++ b/recursive_verification/package.json @@ -6,8 +6,6 @@ "clean": "rm -rf store", "cli": "bun run cli.ts", "ccc": "cd contract && aztec-nargo compile && aztec-postprocess-contract && aztec codegen target -o artifacts", - "bb-download-debug": "curl -L https://github.com/AztecProtocol/aztec-packages/releases/download/v3.0.0-devnet.4/barretenberg-threads-debug-wasm.tar.gz -o barretenberg-debug.wasm.gz && tar -xzvf barretenberg-debug.wasm.gz", - "recursion:debug": "LOG_LEVEL=verbose bun run recursion", "data": "bun run scripts/generate_data.ts", "recursion": "tsx scripts/run_recursion.ts", "test": "bun clean && bun test", diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index d53d807..80e76ec 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -3,7 +3,6 @@ import { SponsoredFeePaymentMethod } from "@aztec/aztec.js/fee"; import type { FieldLike } from "@aztec/aztec.js/abi"; import { getSponsoredFPCInstance } from "./sponsored_fpc.js"; import { SponsoredFPCContract } from "@aztec/noir-contracts.js/SponsoredFPC"; -export const PXE_URL = "http://localhost:8080"; import { ValueNotEqualContract } from "../contract/artifacts/ValueNotEqual"; import data from "../data.json"; import { getPXEConfig } from "@aztec/pxe/config"; @@ -19,6 +18,9 @@ import type { DeployOptions, SendInteractionOptions, } from "@aztec/aztec.js/contracts"; +import assert from "node:assert"; + +export const NODE_URL = "http://localhost:8080"; const sponsoredFPC = await getSponsoredFPCInstance(); const sponsoredPaymentMethod = new SponsoredFeePaymentMethod( @@ -45,10 +47,9 @@ async function captureProfile( ); } -export const setupSandbox = async (): Promise => { +export const setupWallet = async (): Promise => { try { - const nodeUrl = "http://localhost:8080"; - const aztecNode = await createAztecNodeClient(nodeUrl); + const aztecNode = await createAztecNodeClient(NODE_URL); const config = getPXEConfig(); await rm("pxe", { recursive: true, force: true }); config.dataDirectory = "pxe"; @@ -67,7 +68,7 @@ export const setupSandbox = async (): Promise => { }; async function main() { - const testWallet = await setupSandbox(); + const testWallet = await setupWallet(); const account = await testWallet.createAccount(); const manager = await account.getDeployMethod(); await manager @@ -78,21 +79,15 @@ async function main() { .deployed(); const accounts = await testWallet.getAccounts(); - const deploymentOptions = { - from: accounts[0].item, - fee: { paymentMethod: sponsoredPaymentMethod }, - }; - - const deploymentInteraction = await ValueNotEqualContract.deploy( + const valueNotEqual = await ValueNotEqualContract.deploy( testWallet, 10, accounts[0].item - ); - - await captureProfile(deploymentInteraction, deploymentOptions, "deployment"); - - const valueNotEqual = await deploymentInteraction - .send(deploymentOptions) + ) + .send({ + from: accounts[0].item, + fee: { paymentMethod: sponsoredPaymentMethod }, + }) .deployed(); const opts = { @@ -110,10 +105,19 @@ async function main() { await captureProfile(interaction, opts, "recursion"); - const counterValue = await valueNotEqual.methods + let counterValue = await valueNotEqual.methods + .get_counter(accounts[0].item) + .simulate({ from: accounts[0].item }); + console.log(`Counter value: ${counterValue}`); + + await interaction.send(opts).wait(); + + counterValue = await valueNotEqual.methods .get_counter(accounts[0].item) .simulate({ from: accounts[0].item }); console.log(`Counter value: ${counterValue}`); + + assert(counterValue === 11); } main().catch((error) => { From a61dda30632cd1951799ed1ecf31767840578287 Mon Sep 17 00:00:00 2001 From: thunkar Date: Fri, 7 Nov 2025 11:35:22 +0100 Subject: [PATCH 21/22] bigint --- recursive_verification/scripts/run_recursion.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recursive_verification/scripts/run_recursion.ts b/recursive_verification/scripts/run_recursion.ts index 80e76ec..5642256 100644 --- a/recursive_verification/scripts/run_recursion.ts +++ b/recursive_verification/scripts/run_recursion.ts @@ -117,7 +117,7 @@ async function main() { .simulate({ from: accounts[0].item }); console.log(`Counter value: ${counterValue}`); - assert(counterValue === 11); + assert(counterValue === 11n); } main().catch((error) => { From d8a7c3c545841c9be1e8e1c6b1f8763b1d6ec3f7 Mon Sep 17 00:00:00 2001 From: Josh Crites Date: Fri, 7 Nov 2025 09:06:22 -0500 Subject: [PATCH 22/22] update bun lock --- recursive_verification/bun.lockb | Bin 229311 -> 224675 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/recursive_verification/bun.lockb b/recursive_verification/bun.lockb index de340352c3490449fa44ec9615d55a206e891ed1..f5a453498795137cb0226eee1f8bfb018fbcf894 100755 GIT binary patch delta 55885 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 {d!5%~ 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 C(!fOk delta 56891 zcmeFad0dQd^#4E8q8XK%qy=dqT9l&IT7*(mwo0N>6s287Ok^p9+;ZDOw#vS|E!p>d z$sXB4$ew-oeVw`QsR^I&yy!}Rbfm{5ncB%VBqoe1X^Y788Vb%^!C37WNg8S20 zAjsT+rwyT#lhR~xWK!g~$g#;uE<%Ao1N;EAHgsfCcuI6kgkX@0K%j$kcWAoa7Frj& zInR}#na4R(aWhSS`N7_Uu35rly9q9t*vapS$4T@4K1DZ<3Gh!uUu@O?# z+MgMFC1dFg_(^R%1pZS9eej3c+8Ua!ISq}C2W}J0-=(L?^cw2yP%v zJ$?ilO_8|?8j)r$gQjqEp{d=Z(1<8A5t_mr2~F+};k6$$HB)@pm^eftn2o{|_WL&6 zPZh{*7iQK%_4 ziRu#w#`4!yqj9LmW6=l{(TK3*$i(QeqlO_(k@!KQX#33GctRD0r;HpKnJ5rMM@B|E zJ30td&}zghU%b=;kp^T}jzT~(a7f{OBi0Bc~0>Kc*OSO&k2AYy88`goVBs$3^ zF>+L7nlGR30!>aGL%GJ#=Nvej+mI%n9+Q|tL99iZnso^@)fpLSGcr0cDS0lR9wBR7 zfnX}1e(fY{9G%Q`9>hbF^P?DH181p~E7x`-6C;zNU_NeaOgdE)rpb+^VAO@DnI|xj zG2Sw_LQ@ziDbcc7VAGk)e*jIRp;H&mUK!Ff3(p`;{1{&@DLExP3HD2oMxTw&Jk^!E zK(iYcXL6zgJQfJ#6`1fBYPxZ4JrSDPXDl>z)(B{72VZx7xFJp9RUxedeFK`xxxwxTO|?9PCO#@GEjkWy{26vQQ>bPv z-PfC2zH2&hbtfe!j!lUb2%aHLzA1TeR^EGZ`KyqoakPNfcTtXNON>lTq~5rIG&N>T zAFeTXAx%r!a%fs)XYlE;#Kh>4=~$AM^1Za#hr1vFT}a{OfK#Ki8NfN93r$?upXpV>TsyWl1=Xt*r#<67h% zF3>@GM4&*>3i=e%WOy4iEi$W6zB%-_Ab|j@RAwc#A@qFY8$-Y3?ahQHN4r5cgKmU; z9q6>7sE0PlM7}_4R7@S#0R>E;TLp7k3!EyRIE9{FZS4}ivUm^p;Mz6G=?(%R6} zMW5t>K$8O(pe4}%L6f6z!vq2;8M=-q8~T50 z^2NSf#RFi+66M-MlSALZX&L@=jNS7^`%?rRQGhBgf~H8H_T~C`6Q(&`co3XgBs?xP zi59n1q{(p+bW`Y{(OiUqNK@0BK~uz){R9Fm#F>?2xb!Kcsr*WwPwt2Irwf7sT0`H# z$k%~(L7G~i39moEA&NvLo{MZHG&y<&oW{%^XfnJzfwQ*^np*U69Ow9VI86>cgQh`w z7@Wq`N-1A}G*vL1Pp^bQx}d)%H|@q_HfSMjGmfh$Bvl}=M!EyE6|@F4Mfw=|7SM;F z&7l`UQ&*Iya4mWPnx<=N66Pu%(wyUvwV6sG*vX2*UTg?fM?Kj9bcYt){ux(Q3eZaW;o-o zVJvMhne#;MVqBWcQ$ZED9!lMWZUim&P<~dCpIs7>PadUYaUP81(_!J!baE3!<19qc z$Dm2cPAD{${|dL@u{4ukF9pMkzO&ItLQZ}8N7rFX}-?P zPVS5IIn7^CTmB3}H%ZJE za~*Xb+7uU9F6Cx(k7e9KD?m9~6;hB-9qj;3hI65tLJxzcRiQVpU2z=+6caag6t(2+ z6{r_0PG$x@p$uLJL6ad*XzDm;URN#WmKS5BsX`6D+&6F~*b4~sbn#RU8W}CLYbna#@H5FPNbUJFI_Kt<7k@t!p z0C#!qy_IuwCp2}~dT6@t67tC^)+bs2py_1!Cfm6wFanzFjYvw8EiEeHV@~dJ@DaCJ zVV>F6dRk=o4nN6Tb&;Bi*Tg+@I-lF&W^`IbC}eALg}oU+GY!qoxKo3|FzW;4uGAR1{kJ@g4{%ygyfk4pr zud*?qfBUcl)cdcpzd--?p@-VPYMTxEcWt-+S=LM>5cvL8TLS3c77l{`?XM~p$-g7+ z2l}_a%s!?I)h>k$Q})tLT6|3cF?Y%0?e{n3x;n&@uIIb4EZ%J z5kMQpZ=_g5TfrDp*|v6$i6fBXM3=I;8->oyJZG_pCk>cNJFbedwqk8S#hI&$OlNU> zEb`=y66$fLSX5_%crbVEI>@6FUj%VO86j5z3W*zGNtGGnP+728R7)f?h5F1}TMO|d zAUj3dhMPesO0GQw0(pBGa8a6xw3V^2QC;%xWFFYLhldUH$xO%-cn zai?J??-5O=($-lV4%%IIwY(R#!^I-(6NCRWsT~d~E2`kEcnx63de>9!_dsd9$!iC) z!ZzMZRspHf`OTbG=x*qDU5kP-Do(8|qS$O{goNoj^5e z$J)Fgu{KUPt_t<2!wF}}Oi8ZpQ zmGyw8F%GQupx8?On4ik6xOr2%2#JG0X!zB2zqY+t1UQgj?dVgj1nSQe^sF0f9n86D zttKCA+F2kpLgn6&_gsv(BrRgGfN;X`yHQRBWBJWnl#KuL^1CR{Jp(?G8k|I!QEqM!wWSiUz zP}!81&n2-X2AU(vas52cQ>+C*gHLWwHhSlP&}fiDM3~_$z6sioXzejV(;Vx8%p66{ zn0iu2$+m1sG;*j@<#EcIS+Wk478d!mkgZITa!~T2t}J$FLlFuRl@C;GLb8Vsg29Oj z9pQo!h_LoLZR%j{7ohz?<<85Ni`Wi-?ZO^nEkMNyLhUPlQCm{+SYeOeq4B|=(Wv%` zK-3((TLPTNY@M}lfKrpoBb3?HMH|u8buA|j1)}KcO>fCOP&cA-qul5KRb08b(`h60 zkfQh8K<)*q(B;`;H2@6mOx9$k&_%X2Z{>^B?W71t`~{TeaGj452WQS!oi}J-aU!T} z0M;%6^OlO$cqre*wVwbedPlD_Ra<~KDIQZK1BswkdAwp8&ElCnrI2dpzT_|{O_Dly z@Jd1QL0*j|pH*DjH5s=eV4^|*+qa1`hFRM76A;@T-%148wx z)=o2VPs}8Wra^6!Q;$ss^`wHem)-`EO*%P|=wmF9`8o%&+=zofsU2z$bmCbcRD%*` zdTon~FY~mn24n1WG?JBTol_kH#5dnF7d!D%N}`0gwuJZ`5ILcy=zf!CZrr}9#J2}7 z!WvR(W-XiB^N`yc*QoHh+&Xy^6#p{iP(wC9^xe6!X24_FAkqv5#XqhW7}LRZYtu4d z8o~0KRmqC#XHcJdYjqDe-3#S}^6F@4iC9n?1@fUTt^mLwq~ipC@}T2L4{os5+bG4o zL20D|AbBD$iuRe~qV2_nUDuR!i0B7OR+V|H^g`WP zycHB}toVu)FW+jR!Z}9U1qBaqhuT)cAre%s6dk%Q(OW{)4XmRD0$agA?8gG zi$JIh*EsWBWq^8s1GHM)c zJAM=k-!4i_*gzK%AkBrk(|K8ln4qj=y;Gd-Aa0|sD@q=OgDQF;+rGs|K}R92LCi#v3l1jRoEXDP4_0snA8don0>k}7XOHVDoEQv1sxwh3EjiE&{4 z^PQ}{Br`yx{;W*$29ypab?rq%wo4G-i?yu?s+|Lh;N+%%FKU>>--YJ(|8 zD|0~mB^L-CV*17b(Im_4cZ-)uB@GU;;*0-E@<5gc(GR`*Jbsn4hu?WBKc65U%NDE zUqeM3LYdDx#h_To|7E2HS-p@YpRmlzo-PvSQT)2fo0jdhI%7aF z;%lwcEt5JYk%fWyudJ4s;L>v8C^Sl_bWHk55jNDS4PnrqH@|R!4m?l!UsW9^jWY=J%*IKKq zUB`5c!Zq+fAuADCasRwZ^((Rl$c`@TvW-Fu1{!&W;8`59 z@UPbCx_*nV z2Zp#o0zW8gX9%4V0BPFPIXrKo3}O{mfS7lhc9<8~h`1zYa@0$IKPzKHB?Ko*ACpY|wAH~F7cQC14F{?%T{D*qp@V#T5qZVRl7AEw09 zKxwAbo@T^Ve-hQ+kXS_`YBZi(18ZNwtNMYsa%c9a33g%zNgG5U!W-SSi=?C+lomeu5mSfuKuNa= z+~zE&c)<|lEXo0;Ww!RTe~t(8r4cW`GMu$FGq|%{1AdW^y|vO4usyD=|JK0N3eh?1_<>!#X`o03x1sB(yUT^Z{YTsd&=uhHy5%~%v^H4H~r)s>1 z+^31FKxv7ty;}ScgaYQ=E1N8)n<=PDxjET_EzSX@*y=t-DeEK_)j|qw-b@*wt*b%Z zOBl;c?j+0E*X}MB0XR_^?&S;45&-pLlw1aJL=kNP_h>*JW@kK^n>tE7ZOv zUasC75pO}M^{7|45l&q;mFpaNMY0hfjt2EW(YgaV2V; z+(-J<>LefqSbwc-I9G8g(DoIJ0Jwpv=t(B1tf#r2!HG&6&3ad1|uFvO4-Et=O1tQ<*6VKW)pq&Fsm8$X{%l5sSfYg_0-nthd zl4c9Jda)$S9os*g59RYzR#bACH=sbVbZfEv8p509cFzD%Zk#B1E6xX{ zxmCNmNUHd9a{n>H@y=VzMcgE)Ehjz%5~z5k#(^ccp^k#Yg9**I<38URB-U7}aJXO! z^Qo<5AN*)cL(b4Yub5{cRtG2B^)2D38M=%gTe6(6g|((Mk0B=%m&oQWQ>c*BvOwV! z!zf-8iyXJwYveiD0yL08Ba<^G&%h$C(QrA}wtsr25%xc1NJ@~Q*qvAgG4GbG;NGy6 zw=%cMoCl?{^*0XD%70L84>=`Q@Q{tO%$5AQRy!my^XYo(d4<(HT`Ve;Lxtg>-4(Q# zJa95#R~}PTnJp{(w=q8fk?=ftK8hjFEq4;QkQx)!b`p z*##??@}mfQ?G$8$D)?s3RN{>K5VVg1Z9yjz&9-Y4$}0A`WHxf#{wyy!4=P);s8&2= zRwR?wa_?9PImpvHptRZ6r%vnsWnm_0|G&ysgF1l9XE;`POk1NOZYuJX30lcEzid!% zl$8$@ec4A=S3zqBXsy4d#oVVPTD%F_{v`;j!A;}Ps4k)A~cSCkF=o(NvGR9NdPMsxFH}H#1 zJ$eyT=3G76eB-~$js*R??0^3(`wP_PFCY4B;upqxwJiaah00TI$GgWOh@@S~fjont8Rum^pvkL`wGdA&2}p08QzWe98ZtCX1)|>(21yNz>EwJiiD{ zG@h?pVEO`S~d^ys@t)a<~Jv6nC1FxN->7l5pybI4sQ~6FR)UZsK zQ~FZM?#5>;YI4t==l{};knf9p9q2GFE`p{t zXfrf9x`pT4pz%+zlTYua1RkX6x>7z(n(XeU6_hd#LX)9Gd;!ul1I|E`Ll>cG%HHJj zNz-+=_%vy1sVYAG|Ei_`F9oThr@Z0+ns)}8&Is~{idDAXv9>QP9a>L| zzj5u$(L>4awlDssH+p=B&Coa82hchC0%AALi~f zb?)u)c$$CYfhy)!ka&9Drk+_lcc1ScbLhRaPm<}WIhsxay4^dUlh9R>@C277pd$i35Kxx;m%I+Xe(Qwb1(#(G3q)=(NQWNz zLuL7nT`;`YznOwcQ?c8xKl}${SAFxPWRMXYq{n?>M zr<~5+UGQ$=H+8e(Fzt7l*QQUE8OAXK5B?Q^?77Ou#~ypGXiqNA`+m*Vsn_F^Pb!Lz z>2$h%(J4mjNn%lAO3tTWBYI3p&`W&%$nJ{A=g+5R9lSLlZH@GzB-N}#qdSL=@E)7M z938vl4;9hoa3O+KT=zAqOti zDCG}6T{eCFc`u(^7kLdh1A4fP6f$oCFTB$zH3Yqa)y=2sDv{s`>WET{qw;p^TSgDdRe!h6!X%! zgxz5M=(0(tHDg1+U*9LOuv0!D6@+9(XRI7OqyJK0!+C?&*%#S$>+{w9(+qQiPlt;* z!!mE_RgwImV)P?($-3}Q58TEoE$TLO`kpzjyd?UEr+>MB_P^yDs*1E5?MQh#>Uhk| zT-f&BWsGG<=gI3X)%(jbLx!;M+U%&t4zTA-RA-+p{ zel-a;S6Uj}?n9d$g#%7EYX0)9bWynZM2D*93AaVh&5CrJ?OC+1)0?&9_J?+m85YT! zQ%})wzvwerhkXn_7w(wfXQSEkGZEL7zAVqbxbunANjvH0o9Om-Z)q*!y|S8aNS|YJw0ifOPBObHGQ0Zt)r4BpD%}qWE}V_*FWHi6u6p&b9p}ErM7pJQp7_&=w?M+0* zg5P^$V%DzT_jb;J9iG-91naZN0uwcJqAu$I-qC$pOSEIl8c^(HtYRd;WA z#WS5qyQ#ke?x(8HeirN2v*f|Ak)P*$soCMR_4&keJG5L1Pd)o!b)kKcYrgYISxZQ< zo|ECGiiR78uiiXv`onx`pc@VKUU%$wVYXVQvjV%#Nk_P4S0JK=x0#~dZ~E2u+Z-7^z+}~hGeWD8+zKb6^aJ^gcoaC};HA@{v4M`!)q_SWvl z!^|lGUA0R;2BZY`SAQz~Z|08Zm5=x)rVZIh(QqHplDOIKvp+g^&pK|lX7_O8yxRdg z_H{pN(%WFd`r*3{j_vPP_Y4ucg`DY`t)_Frv+GUvrC5Sv4!GKXz#I z$?ko*#ne3+#?uU^H~2Ox_5BS~nPKh(VXSC)@AQ2szFE5y%D24;n^zD~y&^E>$fJJ$ zEq#2w{fl+OBiH1=lNcCu4KmuMF>L%Sy}?JMlls48F9qejJ}N9b^I(40rZU5sve#QC ziiU^X4RJY;y7b(Cfxc$zhE6oy_2iqxt&{u40V6(F_K4CLb1S@8=bR6#&aE4p6cl)( zX5aRYQ*ZrvF7}#Mly`JRL1=54UG98ks$iG-aLtEVbX}9_d)-^ul39EmN3I(O>dzkQ*twa2`txSG|Rn()=W@&03*7k$s9n+h7sQi zVD=ytd&^tcjwwYd>b53hblY2K&qUu2U<@iWnF~mDU<@k)nA1p2tnd~(GG~xVyQ9h2 z-0{X2r_=8QFcx<;nY&22GM0A(m~y0Y?|KV6F}IM)zNg7_x#unH!sOfwU|jBNGOv*8 z#<<=OV4fjWaNk?#&Qv3{=mFw;;4SRIEPjCaDiI%2JsGb`#D~?m2a##G|(aK`m{fH0KF!{0Eb8h^tX_ZI=e5zOKji0dWddf_dMWV~J?E~GZS z^cId{z9Lop3UR&i7Dh8AuMpR3#P!-+IED#&jkw+*E~H`^@f*a2RO}mXVH{J6RMcC< z_10UMz(l`ATs4RbsU*g*25})ZvBq1N!kj@W?H%HJ=PgWS(%&Jj_lOIrbjI>M;zBC- zy|-`za|@~L59qfK-olAY&Ik0{NAw#~QpWWo`VFaqkKV$`Of^!AKB3<}c?+|c#h(!0 zXT*opG{);Q;zMfFXK&#Q<||UgUl89HZ($Bo@&)mIMSNeqg|nETuZZs(;zKHz5r0E` zNX35h7S3f#k&60`_`Z7!^O)%Gi0=pDLyBPxe;_`jCjRgi<}+uIO8bfUetHX8CjBSk z`-S+BTFhAfLVQT&{_++sWo{vr{TuQ9_7)Z}IllvNYDauXt;ly32IM~zYUURRy@iGO z)xrRFkx;0~_7x(%nq4de@Kgf$NnkDOr3CPWz$PVtBK9kRVr763Wq=a4L>VAZ1wc~; zU;`VZ0w7WaI6z<%D^>;ALm*ZaU<+GHAgTd?Q3HT&Y;*$v12upP1a`27Y5=DROjHBd z$(|vQCIYY#0qkbeMF19JfV%`rSxYfMIe}a;z&`dCf$W9=T^a%$U~?J*xTp&?eO@$9 zwz#^#-MiDu%U<6xi*M0AT&?6=)yp+1JC>ID=B>(}5w7|}+`9OAa9Q@6pFW08nFmAf zC!V|ewXo5Qpyl_*Z&6sr4zaH4F#8N<*#dRcbA+uXut)=-uLi&|cCiM4rzXHp0w-86 zO@J>1HfaK!V!sk7ZUhk02;dA`(g+|>3qVr~;2ayI1t8J}I6&Y6E7k_sLm*Zg;1XL( zAWDMpx@RvLs_dU>Q4-TwPgO{oe8Lp8b)n zH{LRHSyN@UHR|*=1E&RBGkOK|Q3&rc8!drZ10B?JL4ta&vW7YUrwL5d0l3bdA&}M> zz@{<4O*XwTfQ2r=T>`gQOI?6+0=c>X73?hn*-ZetGy%BF<}?9t(F1rz;6CfB2k?wQ zfgV65TTNh*K0sf6fJf|NeE?4bfS&}aST6&BF9bFj06b;C5-2tV2r&exW=jkK0-FM8 zHU)UW1~ml`H3K+6;1w%w2C#=fY%_p2Y$<`L<^V>`0czOj<^Tpp02c_nXAO-2P7|1D z1n`kPLm;gMfK3a4&un@N01IP)y9BH^7i=7 zCfASdxTND)IAHm=3Y9ZHC3^SUZ@!@C>%GzOOSNBhW@XZdq92lmLp+zbtNHdkdSm%E zH|sS!75eTcn_~jAE~Y|F>C@_KzkeTpa@a^~U+VOWwnyJGLFxl~AC0$Gp5nRGy|+=b z5rG>U<@z0#b~>Q5|M}ORZFNugS+A@dIsWAPZ_7f$w<(zYt*~*cbk9@QPP|xStv&em z+%IQTGFvxp5^I@XS$yHUb3#GJ-FYKEce$?a#~R-JVWWF=@52?PW19u7&h4MJedk8q z*wnG3jM%%TLIa-@;XmzvH+y|Wb&oiD_6Gm12`_q|xV}Z@(c`P-oj%w_d>?w*e9x}hV$?2A!95{cZHlNDnW1(2nxS=-*~Ml6o-NV3 z-&WT2@tnHp+1qQ{q7Zj?ulKGejc#w+|FL~cWX$22qvMZ_yzbFs#}&)Cp6)hHO79M9 z`PE=WAEmziw>vvTZg}G}K%pL0)~hAVet}tbQ%j+DUo~XPA1Zbl=DW5YxiZ-O$D~8$ z7k$l+>UgVpJ~cCa<}_LD_6NNoT~-*qyL_kW*P8RKK2P{>>7{Y!$6H;xb7W{`+K9jl z8M(1+K`S&%+p6vcmRs$M1N|;tx}0?_^?RmpI8Ga;McY->Zp@uMJ4n&8?p3?=`-1#V5V)!|hoG zv+9aL$B9;Uvy7Yh&A+YX!O$(9PgOj_?LEBA4tCbG%o0p z745h7$wG6pu+8ocTic(Uv}XF2-t13vp@DS4jvECfE!F!Rxb$dKPI}jmjmvVfE-1}< zRX*+5ot9s0dlaQ!jqZQG-|X`#ea7n!Y;keZ!TTeZ?@Lg&@zI&B+vy^Ac;yb6nu_i@ z`NSwo1|L24vU^+AW+OVZ`S5+u)bT>)u*B;3kW+1y4~+0aVg@#V$S;Vzq1 z)5f?Pl=aI!dP162_}_th?55Um?+~-pYT)v>9~U&Ynwm3l#koMuL&X-e8clsX_mcBS zHY*|cSF;vZ^_M6mmkf1T$nGC+Q<87B`Q`ZdNlWKn3{4RjE3}@LqI*$oYW%9=%Gw?= z>*;v8)6#KD^G_|!J7oXiMNZS~8oi7w?JQpOUH5vAVfioBZh@gLK`q^KlwJ4UH*q~{ zSJL9_?$rm_kT!77xxHgrQ+KbxIir7T2G|TQuI@jn`-42sYyF0p`dbKeB)6M{IuBhm zYn*l5=yzH#pU3sHtA6ro*7RHM)7>I=6r_&q=Zw=$L)=`+&Cw{zs2%JqSBDA}hWuP}T8c)JoU* z=Bq!LztfAFceAjl{oSj-cki*fSEAq^J{YWhs3fiKmhfP}(usJb6FvEhwqW7bJL_)S zKJK$j`1PX63FeZHKm=wf}n7JBz~uj!v@5o77`w!R~I6IzJ*- zrAZ%GKlj-DLUhdikUG6_EPn&JiK2ViW9GDW|9<_`Tqot#zf?DCN9;ZMq3QOf-bX@H zTG&6oF`#cwKt=ZaYQxCEl_^(WYwn-OX0BwtFWGL6+^K&hD)r?WHr5jEdCopNsMGP% z%Y)7LyN%v_zkJN4doJU2oB%iFupa(uVunVVd; zS}3?@sOa9iMw+GFHP_B)e$s^Pu+;JA@XfXrF>i0`KYF1h*;nr76j3=|oY8T#;ZvJw zJ@lXW9qO{f%6#0i3+FW@pVE@X-Rx7qUVwW(0aKfon>BlUN}xL9c2hG08`t7rKQv7? z-xxY)NYl@gQ?EB4r+2Y~T04{Tp2yyvnLF@6cjeh*ew}F0YlHn2rLrCj_r?RauryRg#CZa!(xhsLF^t6LqG+|)4a9k}7~Z|U*sq9kMckZ-Rqf4UZ08njC5jvi~%R%pP! zvc~2_tB(AkQas1k+`RO5>FZsyIyVUVu|mbL*Ro=-#^afhtItkTb2!mq@#q=L9(G@5 zuim<9{8Hw8yPgrv=duYIchz1mIcl|N0DG707PN(3dJ97SP|;}3#x`6wYF0mob8k|+ z?MOI$ydqdVVZYwW+dDdMi;UbDd&BRQOW#fTL;Stf8oMlcWNzMgTDeO2q*I$FMYWCY z^MTE^!65p%A;9+dkGC-mcYaH6eW2kEzxiY4u2p+z(koqa^DeC`M)B=t*)_lMA@q^Q z0p}JDt3x8fW6r!;Sf21Bc&~Zvv1@4x&Dm1XyQi<4`E~c3_1-_r*{#YvV82HD{a(i| z&oi@jOg+70Z}L6&X2+LVG;d)z>ddx~6r0qh2en#6Jo7fS>Z{*o--G>GSC+9|Y~h~x z(%{FPl}n%8)b3!}adBFGsIaE!JAn-zZPb zdVPPT;g^-!n{qA9q$l<4I{tiTY5dTy;EQWt*G|=JK|2hZkajqcS+XVV=qzG~$y3^} znX7|U`QVb$mTMP{xiQTVY(WV%Mv`#j<+iyx(z+U*}7IPqdDcbD_I?{_ng@|}An z3^jhJ;IFHqzf0}Yg}1BSQ=L4kGYi+WXff}^)=kqJ7dD7@Q%b8SmROGMoVz*n>{!D+ zR}D6KuNapoXlb?5DsW@j^@N;aw{D%cB-XwDdsZV&Z`Co0SgZrVng9CjV~u0_zL zU0MxlI?vErd3B=eOrI3J=Vfia7X6N#;ycvm=JclVnM+nZJ$GaI>8$Cazf%*+_jP(h zU;a?JmUsNg#o1cS*`~9eoT^Eg&^OF~cg*jhyN91W_GQe&U#j^N%Uzde?K6yMvteyB zy~#fw>~CqPemy*KrhD<_qZa$uM6eT`;9kRswFBBMmrOq`$x3&g@W$O?`1-r%tp~P> zRuxH~n_YZ;B&O4*D@!_LxEwKjYMk(K#jA_E!mV9eO*Sdfx+?x=6s6!^7e)6r9@pJ? z!9z5u)uP$vO@|LubBm41*gNuJLEw-9dWtk_ohlutqdJq(zSEr0-Fbwd4*Z8 zSox+yQU7QC7Y{V>V{M$#+pnCk6LnKGJn7}N_H(uk*!`bF^CQY@${q|dzR@suY$Lms zx?942`1d+$Y!xwk#r=EvDNi3BR;lW~g;n)ioKx|9`Q5bxeNP8Jbz|?suFpEx9T#0y z=FjgJ=gRDAn$va5rJISx4#87r{YdXTb?y13y$j#wCYj$GsM6)Cb@{Dp9sLvTKMnDp zG5p;wv+d5d%=9SowN7)-3rd@#BN@tbE3<$Lsri!ZaemTdEs_B@b!%Jr#_Ptt(%EddlY)D_72RvkCijV(WN`0lgTkVbnv;@W`;Dq;6xv(4 z-<-3PzO~>UsSy<8Q9M<8JMK&T`N^YtzLIm!-Tc()!wcMfCU=`->8N20wbf_OjOG z)gL7bI~AHYAJnFEfrEm3UW)FCbp5k7m^Y6PREpgz9NBG++YD>(>z%$0Ym^l>(xii5 zMOyB#{7JWM4CkCb-sY~$n!-6-4*hu6=GMuwqHgh1cBK2wX8U%+RMG5&sp73@xahz0 zHVdV5nPBxpcP{Pko2B#qM`ih5;}rV`i<8?Fv~F8?Z~yoy)hBihAC}!|%#0_Ur+0E_ ztde|TitV&}CG7_6zsUZCUFo94mxGfo6=ko#r}Sy1+mOZIhDq!PUD;UUk-ltMo8#Tm z#*QA85jwnOY{I(3Z|APc*K+F^9BS7){QB*cmO(S!7SgI9U%>h*dRNo&{F?F0cKci% z9q>u?bF+&}?vI+EZ9luKuj-Ncu}|6isWuK@OzrO(ZanWfZSvIY)svp}v*@j|y2Fn_ zKJi%(lbUa0H+6=41B1?8^E@@H;i}snDIbpBob74QpejGxI@4m?eBFp08UE659wnnA z$GDmXuRs3yeRH+ZQmxas%Ca*1?tP(uOz9b&BjxV-D!R8z)Oo_;HUrf*T-j}sK4zKj ziq{VJ_VxYmp+@Sl@9i6PE-JaaeCLvF#|;Y~{~mr~n?cqZok@DnlPnk8n$0@)<@S!) zWo$?n^omgzY*+qlbQjwFyW%)-fxrOPuq(i60O^!BJ-%LA@S|gjVCB#NJvE2hhWZs* zk3@$pGgnV;nfkh`O{0@L4j*Zszw4Im;9A zHxs72cv@Ax2p(45v*AdqX=9?}Jvs)?S@1M9E@aQJU{Bk<_l-6B2N^E%{{G+U#;rx$ z;|wOWN=@E0O8vtEO|8Rk3)$FiXkVSzTL1M_zji+Fz+Ua;GfP8@9Y$3gUT$+I;mNys z%l6(}7L_-6V6x`jStIS6U#dLoRyMqJsGsew4L7fweM$b>BjUG0`vxew=N131(KoM~ zRZCah=+QQR=fc(BCQn`x^2uwnu>a6mi)WAfUiEIdqk)!Tp6c%-^X~S4yLH^Y=7$V7 zonB&HG^R;-kLLSXBR9C0W29R6{chJwomQ_l&A9reY}mr{Et-tFWq(8O&Eggno_=dy zhnOU7+mn&lFKc$_?O>&K6;u1})xY!R``gD(jhvS-3ho6dy5}_7LV01@uO27NE84GI zq+zV!Jxnay?yJHY_amOGEVRPJt_~?$UBsH9M z?G6>n=8+0xt4W2k?meJJu!~7Wur;J2SuYP5`r-jYn>?^+j8Y7|X7K%>nsc%HZSOxC z@3Ns$`*|V0Ir^RLj(j{CacledCB|cu^dpy5oVxyILt#$CMfdxj(%e3`>-7td4y=6n z>3o4pH@2WBhJ8p+I2g^A^h8C0y-<;6FMu&@P%i*cZ-4^?Vp(x-fIS3adjrI=r39ip z0gOBW64+=@00S?83j~r_Loa~S1SWa`q_AfQr1b%?=>w3;ruPA`@CLX`Af2_u=bx*5__S3xfyD>MXi6V|E0G3y{US z_XF_s1z6h;U>aLP;0u94z5p}WLSKMlKeFKmki+`>0R;L3>?AOY75W2+`U6Dz1LU&X z2<#!yq(8cbUS-H1D*KNnb$KbsZ$2lh$+(ohO8dIZdEfc{sq29|xA%)O&~Nha&Vy-E zokqzkraU`3s?g=}`0MQq+p|vA3zocYl=;y4@c=et0J`P`>mCH)IRs#B5WrfthQJpBgN6VUv4ukb zih}`Eg8@od|6qW?p#VDxY+!{$0Yo7HkwXDCvD*mjA7kQNGX9iZ=S#jY{=l=5QN{Habsey9AI&CAXR^zN)0B57q)LA`g!Gqe;DIkC6Jn8m2&fWD}s+v~ehWJq3k7v!>$!EK&icjRW|~UM5gZz%doz zJ3BcQAUh49ioj3SJ`JXRu{orEvz1Uv0wuO%x^S?PP>G!n4ON|vTxHgMJd_H%n3O78 zL#hGmH33SEEreo=GhkRX1BS({e+EF{M1Y+H)LG#~0MR6X$cX@&>^1^>2sD`lpv8tw z0*I0VoFE`!B~k!`On?+AKx6g@fzt%cGXa{g37G(ClL4+1&}U6216WJ}m^K-}ki9$^ zch)pE)1{wz5;4zgHQ3oxgc_l`%S>Pkb8t^dtI=(lw>GVIC(jfb2!*qE z=gvYa3L7$&j_r2M5q4H4GY#ec1!c$1?65rHYo(5zclVnw9Id2k?}uNquzxSZR zZe0MU{>b_vvm}ngt&X_6Ix~Iuv44=&bP7}JFh{FzvkjD-8yHk$!cUfmmurTI^4?4))Wex ziRJ&v)Fd{xM0i!4yIvssU$tb-A%(%yWKbL)ZZje#S|F%l3pNOQYr5jw%(xXgvlle_ zI#0;%#?Q+w9y$N4y^b6IpCAvkA}-!GCOJW2MH@J$&(Rd=}lN|BlMy@ttRM^W;ScdGLd0baVVt{@R~B zqZ`}l#z=Z_pA~WUq)+1+cM#@oCtu7lbQrACbGjGYjxQ(#qsr(uZhA>e4`rUw9oPf8 z``rbq{IztW^Dv$@;2GWc9Lh5_F!Gh|Ssu=_hBAAopT3P7%tH^URcE zQrXwn89;iN0a7JxAoR^A>KYpV6qE&ozC26a(3)qKc%I3#HaxQeTMtGzR9o=O8qZC@ z=wZpTws@|hg8rumO)jd~1~L*t{bj=!w8isKJg5G${f8BN$aoPB}wU%iw1W1a0|p zE_^v>Fk7B=OLzcA z+e)-JLSDhQ(nAg$1^^Z^xpW=tP$(sx@f!_FmTti@$`vO}4@XQHZE8L=B=%-HS@- zhMr~6O9gCKBPBg4-G9^&G8F6%g8U)5j9X21pU)0OTxdYOJI$HOEsWh%!V4q6(qg9OlAA4rC^z z0n$RqCPcRxLO(pR4HApINJs?a93&qRM1i+~SV9IOJptEcKw=>tkVr@bBp!nIdHW0c z;fWiBKFF8~BN>n^2>oirK}Z$k3B(FQKakNH(hSlZq7N~E7((Z&;~#YKCSPTkQNXlhz>*(LTh&yNN0!>q$|W2 zq6OKG7%#%rWzY=tS?I%%MR*41gFJt9%MEI z3#3%G(B>jBi--TGz3&dI;^_Y8?xKJZsnYI6nl&nNY4)H-u{Z2k5wW6T?}A1XdzT|d z1x>L=)TmgZVmC3?7*p)V7%Q>F5)<|NIXk=TrQGDz=lwmuf8IRL$K9QC=FFKhXU?46 znM)SnIv+>{xQk1Gr2tpraoYtjjT_ksWC2@&F99CwEdZNkGq4HB1ik>;0<6$_U@fo) z_?)}=DQ?mM9@I|&9>7&V2A~b}O7)({h-p07JjkB`tAUEZI$#69jcf$CK~{JhupMBY z9YAkDn+eI5(~1X+r%p#)TLZIkKMUvzSWdUULHi5%6W9yv0iFR*fhWLY;304ixC2}V zE&>;TpMf8NZ-Hzec_02c4jcsz0|$Zq0Gs!KdOc)ue+2i(fY>FP*%E@{+Bs&V1~p9uNhD0yTL2dEb_oGCqLf3-|!M zg&hXG3vhZ?4k!zh0ZIeBnHmUq00DqEP!ix2&ko>p&K-CSWj%2%3K#)@zz^WG&7`PHMYi8pHcqrJ! zY+6=;E3>7TrU_ymHb2+b8e)^PWtq#gPoT4S0*T!9vhv@y9)uR~1*Df-Fl|Em;sa zn(;hlLJfe&)Y1Z6&VtzFY+_A0p0doV4GY)d%v7@~_na-OS&wInCYL)}g6BVbyT+h3 z^d8E%kvh0?nI>54p{8tI&@=@!9<6cq2X0*RBbKKr&T)oiC2IwmU~a4dplMkc-ICXm zkB6`cz(b}f$USE3Xngq;O3u}YD``EoY=C=cDS&&$O2y*Z3FruP0NMgA0G7ei*%i>H zBlELDEdi$Mv}7TyH40k+%*3%f8mJGjv(y8)QVl>0)moV5h*uUU4Fm#j9FBSXE#onp zhr_Yv51RSeI+pi56IkIkK#WRbdVAb+C)xpddn)SZw?eX|iT*!WA-T|1DZdq1YiqsH z{J_!&v~jlP2P{i0Rv3R*Jg|3a(}t&u<}g~LnnUIv0?qu(c`B*(Ch`^F6fObRuE1{G zmjyU&V;S0WH?GtRhzEKCaX=5CJ1`JP1o{Gf01i_8-vHeA2l@fyfpNfCU^p-g7z!i- zgMmT75MVSg3K#*51jYapfaDMH&s1PK@DVTrmRu&HrTj)=eYnD5Sd(G0^@uxigT#1=aqu?I!6YwK& z2Y3QJ2JQoAfZM<=;5XnVa0)mNd=LBpoCTPVWpOz_^Zn22vnE^P|Bn9-m&VM6=hO;Z zS-aP+T0d8fh)je;1X~V;J2d-xHA70HiIVkJKX2*fu^x# zIlm3DrPxAj5pJBH@2dCO^^scs5Z4F5??4WqDa>_}waP3^tH=Z{|3kfMjcFC1q5L_( zQIE%88+)E&T4Z~Hdu_a#hxb8wsF{a{+X2t7dHi3YptFULzwz8fW#V#X=Bqs_#N*0z zJKXaIY!Sc~P&RFGH2^jM@2|cCaKl=onqtFI#^td zPI*(6D{4;5!r03-59j?*9$(%A7#p2^ z`e1PB>Ay<`UzC(UNez_}b*gq$gG0bz(~+)Kl{~AOZTiD%?qE4)*NUQV4Lo3L zP-K|RHWNYd043(V(-lp=E~|CQBC1kNsk{a(CBd@77_#fT+wrkF3;!K;?r%uFrQNfN zI!QX^G)+KdU$e5qz%3uJ$!S>jwp2%Fc|n`OQq62rTo%e*_@H;RIrZoLI*UIjEPvJ7 ziT!iz%be9IVRCA9$pbxW3>HtYoLTAYd#L>FmO4uhRqVU2<--g!e_5$hhEwzEigLWg z$IA8e_}jtB&;6;+vVtao1@ie%m2>AS4e+#ke6WAC&T<$OR&JW@hQ8fhYK+z?Khh~w zM$d9o`3q~_3+g|6=`@{%w>NxHc~`>T;0V9=U+WZ;EtRT)JtVWT4WJC#(-gn)pSD}5 z^VCCaZra}Ey^1>wi@wz zGv{sQR9}d5fjHCn!ST}Pi|XsHJ_Zz4u2t-dJ%{HXuc=cC&MC|S!*VIWt&q7(eQHW! zQe{V4R#U2xT&VVn@-gTX2ZY;qtC#NVQeN~+p~Qj0Gv>SOYb|U&w~f*jd1K`<%Tk6w z91q8hW_L?GYrLnZE^Z1a-k>zTeW}To>MwVIqI3%f*Gp-@MG9 zFm=O&LwV|2@75bBPXV>1A0oP-83#1;G_y~=tt0yPM>7Z@+)RQ>ad!deAXi=Q6?B7tatSj zGyyxMe6gqd{Rs`yKa&i#&B0Y!yG`_xo7hX9QBofq$xV*J(`rhKlEMt9=>$Jrq~D^X zj}f_qnqOzWx2sp%TK*CO94r}*4}C7QqK?$tkVLN=fPXys)s?&>pTQ5=@P9f6ZYxPlWxMR&@sCwUpGV{)>ik32PRWwVy& zzEe0At2UwCXv7!`2A;sT9pi(B{?y}dl_3-fAq}Y~c}uE9!!f#6Uvjq#4UWL~93kBx zWT5Z=!r4rdV*C_wibpvqsf5SnT4Ar$=FCWRah4u^-+?ppQ0p-GcwPk8I+$>4MjIT9 zRC)-$b2Jxx#$Uj|^VBPST-xk4Z9{cIPpEr+$)gB*ps6loYC1^4UR0?*Y*T0(ift4T zxm~9P^(7xwF`WNo>9&xr7$lcTv$*8uLm>^MP}2p3P9CGE2hMXV%n1J!3bNOltMO=0 zY#@2z2rM;_x;qRq3dTHxPg|lS*CIhCcpVwHOTN@QTI!2K@u#BUrn6AY{{Hj%5@T1j zKQbPoBQYakoM@yI&Y*-IkNI&@gML^ByM^&oL5@kj4N>(G7^;Bb%iVpiZri zVOZY-N-0}wDZLI(-JZGln_@bp1r0z|<5(~Rqw3Tz53g-G>0WJ}VGX6T>~mnK1P1R- z?q3|*@@lfqFenhI87O`K9G_wvwXLCM3w+L?`>1M&rKrZZ^rnDDxD2J5xEPazL~0Z? zd1~eTj_0eR7Ec&>`D_}@e9OqG3HZJMAG>f^PTSr^>kmi+A7&==?Wa8~=sXxWf0&Yf zt*q0&u^qtxG2H8W^so`;soJj4BEm|%sfrA+oG`p+%iu5He}2iV2#RDuM`$*8;1sQH zj3^)!Gbqx%sa_Mf&vohwT@7k~AJcq(I!WuBNRuQuL~v6$#B%z*1xnXYTvI8`cpA23 zqcxq@Xx)h|b7ml^Vh2LEE>LDu@ZF}bn@Y`%4J(T&m3F<^^~I6jMnEa%!!&J0=4RmQ zMosxLkP@0*OPe9q93n$=l*VQmn@gXRY8V%PBKW z@}zpLrAT$SOgWLlDTbfjb<|Y6tPjSCO@`TsaoyM&rdAdOk0N2=Ht$xakQiySmKe~D z7_=tV*$C^all5h(2Q_bl*NQ}BAXuPM`i_yJcAmM0bRQ1R>9@^TP&khIgzY*rrT_D7 z`m+CD%sdj&z;rakgZ6aJ4;Aj5T=oPigauct4o|e6d3=mI2;(W+j;%g_bMWQIx^kOT zN=hHwz&7LB9fh>2!DjB!VQSqLBlr;wz{R+trg+auob_aKot}?JC>>Yk$aYExL&OO% zIHQR`DX_-8Ew;NAwG@U+ps<6!cIn$}N|{$tpqPWhcrM?f``pAsvTKL=VpEH1wZn?) zR*TxVlbV_QYl%$YNvFOui}n6FPEk#fSh*JM1qXg%@=kl`c2H$>yBT{Yb>98rN(0Kg zJWWwxFkGch?a@HZ+BB!V6p9~&>_@5gNF_SJHI7n+4pMW;F^WcakU}NVf|t>;ju>zE zv8}U~&%K`s(V@ZN)q<Dt825 zOKR9rYA(Fm!!|6!<~U`dJo0>9QL*Kyche)zWNOQFHGJ#ozy$Vacwx3V&!31 z(^gxNC=?A1#=H;{$vC~9s_*ED#?l#Am#I?(l_pSfC#jFo7HblRoenX}Y+n8T;v2%R{Viu>@q z8z>kc4r147c`W+dlkT!KF;Ex>zs_PD+IGfl6>Vsjh4edG#E*m=x?uXBq}qIWOhdY0 zsHDa;s|!YM5$(gHaTR7T&%#w<=Ub$I_GeX9Aq0Zs^q8wXq;g%Q=58CCiJWZKrUjq0 zSybOkOSp|0&4o7~*s^5)=jB&imkbdi(YDz^wLgFsXX)W|Tz;b=A0RH7BVqPG@XIR6 zJz2Rg*+MzOlTvM;Z%+Am`bxs$Ufs+qW;KFHWU zDj-4RI!u`aiXSMoEAhJNp@R~iKhGLe)%$Cn=}dU;EZUMG!)jAVYygtkI@1@5PZS}hvcWp_6?2ERce)U*Mm0w`x2cTRV#JmaoHQG(ETP`HCZN4mTp zCx1FXud@^sHgVft9*>?>3ZD#01OgY9!L2k24OYY53GiTrPU+Tq@RARH4vf}oUj~Iu z+9&A3ve zvMF=E@O#m{#ZGt_`WVJpNGvGaqI)sFh%S}p)leu{p0H;@t>chOqs1B2eX6)yMML_D zySM;PfkmDait@L=0Qo{~o?*lGcI*k7)n%g(Vo+7H1=868Bg&19Y}+C55}KNNSD z@k2Io_kbQk0;eBx8`_j0d70eXh$$$4mT7454q`5Xpz;^^$yy*8M z#chQOfBdm%bK~hVrm8B0VB3MJj6qc6-Xud;>x`nmp+@Vy5hLaY4c508e(|{IkcIQ? z<4zXrF?UkyF;5#)2TJKJHPebnF~S=NWErBfp{Dqb%HC1Rr7^B|4{z`~`|qviF}-j` z3quNJu94ql;R7$oFb6)MTUuerqk7&4i||moGx^VzO0xUwPOpnD;OauO2rBq!X??=! zlSx?3LOom9M))la8Ks-uQnYNg(dVVESb?6hnbn!cT@W+G5JpMylF2l>i-=K2EAP6t zchZrJf3~}@Y5`?Mv93%327RP+XFM_{ZKf8OpOQKY4SKJHxh)K2(JQqtDz^m>8*u`) z9)y)Re}qu$P>-RKG1o~7jwDZV3oS&)O2LZO{k4D)))SRi{KZ6FCN1ljHiM17S4M9C^4QRi7PPg(X2SPc7qGd;9oX~onfFCKnNp>( z0Y%8ugDQS>Kj|Zk>i}y05n`@*;)o~>N1nHsB8DrGxF0TgJCaAk|EwdL0M_Fn4IF`2 z`FvT8MN(s#pcEdJsMbilFj%IBmUTo@W2Yo9B7|U`7w#hHH77%MN;0JO%VJvaWEXC) zO%TB!pzvEyjB;DeKl@mq(1h>4pw{C=Y%SpN7Smmw=Iq_77pv=ILATe3*`ktIW4x5L zE&(H3NS6&EbbX8zX|$f5TG}^%2lCImLIy?{tW$rn97hZ`PBeet>@?@3)vEKWPay`& z-wGS7fSI_%YIxG)L*8JBj`(I)SDllKseT3?~*~` zRKDAfCsRr}{D4;kjgq0(c{#!{dwMq~Y%6P&Y*0$0PO;O+A|0|5>gtpmYMrvi&r*Wp zo5rh@Qt)HjB=L^3w#E0ao7LIfO0Q%&-WJ)Ao&yy~I)pn|4p;`QoUFaASx(4*6;jwM zwRnxT{^I*KZ@1QCdchY}2krINvM2xiJ}N@G#RL{%1G~c3-w&+69g26r7=)Goz3J&G z6)!O&Wa`sdOAbV;;BA!Kh;(B{@pX>PuXMvZobnYO0pcv3;*??;&7F@+7Rl4_1?m>H zo~F62aA$w3$aYXEd9QE8_3ltXXfoG8MWoDe;%TeHL6*L^}MotCX;XSl6w`W&MknZZAFMD>Tuwc$qIG z#k7nT7HNy}kqNnm9?kwKe&q(PwezJ0ymR$nzElH$oT}miWL4I;rhcUEV2HE60rf^_ zM6hL10*OZVIj7cijNXs!b@*%a`a={w#xA*!4L)tHd|6Q$qPO_@satkUbQP7 zUx*c8I(aX`%Vah+UxW>pZ^nuao{n&D+v(yTcJ7AvYV+}zP@9tD#D3H2>Gu=L#+B#2 zbHq0Is7>HFTDAxuJFASN?Te()h@R166Xkr1=+$@UUJC~&Z|;M0)OfK)S^nYW--mfV z$N~jk&MEpN@?DH!oCOBn4BH#i@1XSRyLoC=YjiWjxuPmvt&z?`FsGHWeC?FNx{)7gn!f=59~8t zuzP`z*yiABtg21#N#Z!fh;O<)_gyo(7*mvkHa0_PPpUKtXAYwX8VSR-v~IY#p8bZ8 zNlLJ3+i88`f{M1Qp$hNIRxhjxP?R=?(rlJ3lr$Ao5`2o5CCAZ4!uRDLpe*}kr3=-2 zCfupJPH98gxB8WwmOzrCY)L;}jS5QBx;%pBgV$J)VWP?*7@*dA@bL+gBTJ-r9m-A- zDTgo!xu!`zk+F4z56n$#*!PifT@_`3aB2d7|6r<6bE+GAqCWXcQmkxlbliS)sw0}50R|8d@VE=-rX02~;zwz-o zDpMN=aKb;9Dyh-W{~u1AiOu|E>zn!3ZFcHIF+#J)-$^Qxl!A}q+Tmd9ooS~UAm0&S zoN!OM1aZ!|mJV;Y>S&7}FX`f}2h00vov3P!XhqP=nR=a z{V%RQY*Op}Sr6shz|o*&^+$>Ki)ZWRv3|&5FY54SkW-G?=J%GvEsmP@NgUi0=CJAA zVRnvBrxp!(u9E)>si?`i1`VfCy%jiVeQKJB3hxiRp8EdY4YsHop`3-Zxk__aAS6Aa zwJY$garShvCYVC%j~E6scSut`qjl8*C7Rv55o{6gK+A?QAh0iQH<25n5oGTL{h z7@rnZ4y^M2=Ab(ShKW;Y!$4toXmBt-{zSRQLlu>jC^?D#f(ZQG(kdAcm_v;-@HCqy z;K?{~wpa*4*Ig;uC&`VEeX7gZ4BE`>v*|c4rb5~c7bg;i%}iYhi=@vIYfaA~rEAxD z$BEAq@tTB=YCU#$myKY5)P2!`~oNr&^+6xOwrxldt3#DWrNaj z9xa1#DQ+H}UWt`p6gb&Cr#g2@Oq^oiT|{-^%O-i16c%xOzBmNle#gwBH7kC83JmJ` z){q6_c$(|rm~Cf2bRDfUqUiT64Ok_4_jg+;Eb%hYuqi39{?AHPGoNRO1cm4L^B3d# z9_YB}Gs)nG5>J#w)d92h9^e;nC>T>EMACP8mfcLo1Z z$g%F#(v|Yw#~%A7LuL3LXWgFo*$Gdn&|ZB8Rz24t1XjQiFdWh<81SQVdt}8x5EBS- zY=zF7>^mm(o07=lf~)gjho{k|&*2UY!NEOyKH}c@JHwYu2M5k;@u{oLXsP(dYWDN+n_Kzh_XN6@}?O6VN87MWy)kEs<(3(-nbDljc|BVIAo z>RJU!Ev~+d?xB7zxnUaluSGB{Xf91&p7u@eFB8Wzq&-!h^sGM>eN~NSleb+}Z3#Ad z0Qsi;L+NbT3Q3#@YKs0l=f890wOJvJ{@R5UdaO*v(?wcgJT_xo$cw-|VBl2+IgcMGUZ}dX_n7a}oU+%d zRpHH5)9EsVM>Yb73pidszByysllSret%7jn6kI1&>aA+=!zwIzgb(~mv#6VxPL(!5 zvGL&G0Mu;hj2d-%JmuFo^<`leb>9F7il;FfuvGs_U*O4PU0^;NS|9K?c16|LChNZT zpNhm`Qk*e#_g9vra7<7)^xSE2v+Y(k7R6iq`(Wa$s)M+yuvd zqdw|$Tj`|rMh32?y_*n^^ytAA)HVy5kJ<#re5|usN_neQydBmqjy(C^z))g+eYdhm zH9;lQTHzMi?SJWa&Li|aeXTBR-L<;xDz8kmZj0p8(0T%5UG+i~q<6lQ21mS2o^yyY zzm&Ygt-r(;(i)7)2?h1|Qu6Wn7rNmbHQkDsB!1$8A2x7vk=NG=5w1&H4c;|#Wvnuh zLpioS0EL(NpwkmK6=^!UEdNdgXBE+;-FiB?6;r^pUZlIHZ_KOIDahlA&JhBN2kH); zb8E--4}S31Dbef6v<(w1R^D{vU6Y!rD-JNttdeA)~QQhqI~ z9HE{|A8h-_&nnhO?2Vj_Jh$V=yW-bGZ}q9ddTVd?od83W3~O3{tF@lGHr*s9N~&{8 z-LS43`5hTaMsTRv#`+s~VN(d%7<*bFpB+>mTt_prkl}4Zd;CUl*3BOR7#Ic1cUz`Sb6v_@VuhhWG3@sLJqR!xDy$B$pHTn0F^p4#;xc zEwwio%vrs@lG;c#FLJmp}bak&(D(_=as=N>1Ms=2?eUi!IaoawrlEq`OY>3jC z+hj|nEgmzn^N7cz9i84I6`{x3l1DC|6II)v=W)V*3k{s;$bJhcPL#|7ybehCe>154 zaH1{;EYxtK^#}6Qczyt%d^P3@xp%HK^PuFG`{+Q8z9dE2{2rmXnHvDaGAgWKXK^A}Nv^v^x8$PL?weDIi-YLoI1Kf z3J$uu$}{t~Qr-%4ZC&4x%amz4X_WRqN; zd_2+c$&#|kLK4c}Azu$Uh_1ho0;q>0RPE;>8`Yld^^kq&6A!s%-YVrS9{YRBE<%2~ zqg;gMc%zY1p0XY7_LNgB_{tZPooJ{Rx*b9@yyPF~th-#9*(c;SZO1CUL+|-$rdKSt z*hhBHmE%BXedLO{kM{JenCwguMj2ZVJXlJN5k_dOKV})_cd5LK>_`qK*)7XplEVx< z*1o9J+*eK#_x%lFSrtmjTMd#qoX!Nufou%BRA1SZCbH@k{N)OY&{Tg&?^+B!T1@-jx$D z3!N*<*ZA>KC3&2XSdr%0LBExiWjCz=0&82`yHnR-IUrBL-e5T>PeDKxg#+Tvlx-(F zWKF0dw=7}^$vP1(Un)xb!qJ&$HzZ@$x|;HQ*$|plD@sl*ZinA&Dn`E6RQAj|(p3J_ UCAEXxILp49yt@QFoNZY0f1MU{djJ3c