From c1f680a192aad28d570aada3e0dba6bc4531e7c2 Mon Sep 17 00:00:00 2001 From: Bohdan Ohorodnii <35969035+varex83@users.noreply.github.com> Date: Tue, 17 Sep 2024 11:18:36 +0300 Subject: [PATCH] feat(ci): add native dependencies to the CI (dynamic docker) (#726) * fix: ci * fix: return back old images in the CI * fix: add native deps to some CI jobs * chore: update feature contracts * fix: add LLVM deps to the Dockerfile * fix: add LLVM to `install_build_tools.sh` * fix: make larger runner * fix: make ubuntu latest runner * fix: update build tools, add env vars * fix: update build tools, add env vars * fix: add clean up of the native artifacts * fix: add clean up of the native artifacts * fix: native artifacts push CI * fix: native artifacts push CI * fix: native artifacts push CI * fix: add -y arg to apt * fix: add env to ignore interactive env * fix: increase size of the runners * fix: update runner version * fix: remove native and rust dependencies * fix: update sequencer-ci.Dockerfile * fix: update sequencer-ci.Dockerfile * fix: update sequencer-ci.Dockerfile * fix: increase runner size * fix: try to fix Dockerfile with adding musl-g++ * fix: try to fix Dockerfile with adding musl-g++ #2 * fix: try to fix Dockerfile with adding musl-g++ #2 * fix: try to fix Dockerfile with adding musl-g++ #4 * fix: try to fix Dockerfile with adding musl-g++ #4 * fix: try to fix Dockerfile * fix: try to fix Dockerfile finally? * fix: try to fix Dockerfile * fix: add hard option for sym link creation * fix: make Dockerfile dynamic * Merge remote-tracking branch 'origin/main' into fix/native-dynamic-ci * feat: add script to install native deps * feat: add script to install native deps * fix: add sudo for running the script * fix: add sudo for running the script * fix: add sudo for running the script * fix: fix llvm paths * fix: script * fix: script * fix: script * fix: script * fix: script * fix: script * fix: script * fix: script * fix: script * fix: verify_cairo_file_dependencies ci * fix: cairo native runtime library path * Merge branch 'main' into fix/native-dynamic-ci # Conflicts: # Cargo.lock # Cargo.toml * fix: conflicts after merge * fix: update feature contracts * fix: update gas in secp tests * fix: increase merge-gatekeeper timeout to 25 minutes (1500 seconds) --- .github/actions/setup-native-deps/action.yml | 28 + .github/workflows/blockifier_ci.yml | 12 +- .../workflows/blockifier_compiled_cairo.yml | 4 + .github/workflows/blockifier_post-merge.yml | 4 + .github/workflows/committer_ci.yml | 3 +- .github/workflows/main.yml | 26 +- .github/workflows/papyrus_benchmark.yaml | 2 +- .github/workflows/papyrus_ci.yml | 26 +- .github/workflows/papyrus_docker-publish.yml | 6 +- .../workflows/papyrus_nightly-tests-call.yml | 3 + .github/workflows/papyrus_nightly-tests.yml | 16 + .github/workflows/verify-deps.yml | 3 + Cargo.lock | 478 +- Cargo.toml | 16 +- Dockerfile | 63 +- crates/blockifier/Cargo.toml | 1 + .../cairo1/compiled/account_faulty.casm.json | 2 +- .../account_with_dummy_validate.casm.json | 2 +- .../account_with_long_validate.casm.json | 2 +- .../cairo1/compiled/empty_contract.casm.json | 2 +- .../cairo1/compiled/test_contract.casm.json | 5170 ++++++++++++----- .../src/execution/contract_class.rs | 2 + .../execution/syscalls/syscall_tests/secp.rs | 4 +- scripts/build_native_blockifier.sh | 3 + scripts/install_build_tools.sh | 11 + scripts/sequencer-ci.Dockerfile | 12 +- scripts/setup_native_deps.sh | 115 + 27 files changed, 4571 insertions(+), 1445 deletions(-) create mode 100644 .github/actions/setup-native-deps/action.yml create mode 100755 scripts/setup_native_deps.sh diff --git a/.github/actions/setup-native-deps/action.yml b/.github/actions/setup-native-deps/action.yml new file mode 100644 index 0000000000..4b9e1f4d0a --- /dev/null +++ b/.github/actions/setup-native-deps/action.yml @@ -0,0 +1,28 @@ +name: "Setup Cairo Native Dependencies" +description: "Sets up LLVM and GMP libraries" + +outputs: + cairo-native-runtime-library: + description: "The path to the cairo native runtime library" + value: ${{ steps.set-env-vars.outputs.cairo-native-runtime-library }} + +runs: + using: "composite" + steps: + - name: Make script executable + shell: bash + run: chmod +x ./scripts/setup_native_deps.sh + + - name: Install Cairo Native Runtime Dependencies + id: set-runtime-deps + shell: bash + run: | + sudo ./scripts/setup_native_deps.sh + + - name: Set Environment Variables + id: set-env-vars + shell: bash + run: | + echo "MLIR_SYS_180_PREFIX=/usr/lib/llvm-18/" >> $GITHUB_ENV && + echo "LLVM_SYS_181_PREFIX=/usr/lib/llvm-18/" >> $GITHUB_ENV && + echo "TABLEGEN_180_PREFIX=/usr/lib/llvm-18/" >> $GITHUB_ENV \ No newline at end of file diff --git a/.github/workflows/blockifier_ci.yml b/.github/workflows/blockifier_ci.yml index 3e124a87a3..9d19227a8a 100644 --- a/.github/workflows/blockifier_ci.yml +++ b/.github/workflows/blockifier_ci.yml @@ -46,19 +46,17 @@ jobs: - uses: Swatinem/rust-cache@v2 with: prefix-key: "v0-rust-ubuntu-20.04" + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - run: cargo build -p blockifier - run: cargo test -p blockifier native-blockifier-artifacts-push: - runs-on: starkware-ubuntu-20-04-medium + runs-on: starkware-ubuntu-latest-large steps: - uses: actions/checkout@v4 - - uses: ./.github/actions/install_rust - - - uses: Swatinem/rust-cache@v2 - with: - prefix-key: "v1-rust-ubuntu-20.04" - + - name: Build native blockifier run: ./build_native_in_docker.sh scripts/build_native_blockifier.sh diff --git a/.github/workflows/blockifier_compiled_cairo.yml b/.github/workflows/blockifier_compiled_cairo.yml index 9cc9d20394..315e31c245 100644 --- a/.github/workflows/blockifier_compiled_cairo.yml +++ b/.github/workflows/blockifier_compiled_cairo.yml @@ -40,6 +40,10 @@ jobs: with: prefix-key: "v0-rust-ubuntu-20.04" + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps + # Setup pypy and link to the location expected by .cargo/config.toml. - uses: actions/setup-python@v5 id: setup-pypy diff --git a/.github/workflows/blockifier_post-merge.yml b/.github/workflows/blockifier_post-merge.yml index 194fb23475..a8f5bf8d74 100644 --- a/.github/workflows/blockifier_post-merge.yml +++ b/.github/workflows/blockifier_post-merge.yml @@ -21,6 +21,10 @@ jobs: with: prefix-key: "v0-rust-ubuntu-20.04" + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps + # Setup pypy and link to the location expected by .cargo/config.toml. - uses: actions/setup-python@v5 id: setup-pypy diff --git a/.github/workflows/committer_ci.yml b/.github/workflows/committer_ci.yml index 5427a6d148..4c9889db97 100644 --- a/.github/workflows/committer_ci.yml +++ b/.github/workflows/committer_ci.yml @@ -76,7 +76,7 @@ jobs: # List the existing benchmarks. - run: | - cargo bench -p committer_cli -- --list | grep ': benchmark$' | sed -e "s/: benchmark$//" > benchmarks_list.txt + cargo bench -p committer_cli -- --list | grep ': benchmark$' | sed -e "s/: benchmark$//" > benchmarks_list.txt # Benchmark the old code. - run: cargo bench -p committer_cli @@ -119,6 +119,7 @@ jobs: owner: context.repo.owner, repo: context.repo.repo, body: fs.readFileSync('bench_new.txt', 'utf8'), + path: 'Commits' }) gcs-push: diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 763990d9c2..bd2f752c3b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -66,6 +66,11 @@ jobs: - uses: ./.github/actions/install_rust with: components: clippy + + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps + - uses: Swatinem/rust-cache@v2 with: prefix-key: "v0-rust-ubuntu-20.04" @@ -89,6 +94,9 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Swatinem/rust-cache@v2 - uses: Noelware/setup-protoc@1.1.0 with: @@ -100,17 +108,23 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Swatinem/rust-cache@v2 - run: cargo test -p workspace_tests run-tests: - runs-on: starkware-ubuntu-20-04-medium + runs-on: starkware-ubuntu-latest-large steps: - uses: actions/checkout@v4 with: # Fetch the entire history. fetch-depth: 0 - uses: ./.github/actions/install_rust + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Noelware/setup-protoc@1.1.0 - uses: Swatinem/rust-cache@v2 with: @@ -175,6 +189,9 @@ jobs: - uses: Noelware/setup-protoc@1.1.0 with: version: ${{env.PROTOC_VERSION}} + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - run: cargo check --workspace -r --all-features merge-gatekeeper: @@ -190,7 +207,7 @@ jobs: uses: upsidr/merge-gatekeeper@v1 with: token: ${{ secrets.GITHUB_TOKEN }} - timeout: 1200 + timeout: 1500 interval: 30 ignored: "code-review/reviewable" @@ -200,7 +217,7 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} ref: ${{github.ref}} - timeout: 1200 + timeout: 1500 interval: 30 ignored: "code-review/reviewable" @@ -216,6 +233,9 @@ jobs: run: | sudo apt-get update sudo apt-get install -y clang llvm libudev-dev + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Noelware/setup-protoc@1.1.0 with: version: ${{env.PROTOC_VERSION}} diff --git a/.github/workflows/papyrus_benchmark.yaml b/.github/workflows/papyrus_benchmark.yaml index b7912e4957..9409e4c6ad 100644 --- a/.github/workflows/papyrus_benchmark.yaml +++ b/.github/workflows/papyrus_benchmark.yaml @@ -4,7 +4,7 @@ on: workflow_dispatch: # TODO: Uncomment and run this automatically when the storage benchmark is fixed. # push: - # branches: [main] + # branches: [main] jobs: storage-benchmark: diff --git a/.github/workflows/papyrus_ci.yml b/.github/workflows/papyrus_ci.yml index 875c556c68..73e50d792b 100644 --- a/.github/workflows/papyrus_ci.yml +++ b/.github/workflows/papyrus_ci.yml @@ -2,7 +2,7 @@ name: Papyrus-CI on: push: - branches: [main] + branches: [ main ] paths: - '.github/workflows/papyrus_ci.yml' - 'Dockerfile' @@ -31,7 +31,7 @@ on: - 'crates/starknet_client/**' merge_group: - types: [checks_requested] + types: [ checks_requested ] # On PR events, cancel existing CI runs on this same PR for this workflow. concurrency: @@ -48,6 +48,9 @@ jobs: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust - uses: Swatinem/rust-cache@v2 + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Noelware/setup-protoc@1.1.0 with: version: ${{env.PROTOC_VERSION}} @@ -67,6 +70,9 @@ jobs: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust - uses: Swatinem/rust-cache@v2 + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Noelware/setup-protoc@1.1.0 with: version: ${{env.PROTOC_VERSION}} @@ -86,6 +92,9 @@ jobs: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Noelware/setup-protoc@1.1.0 with: version: ${{env.PROTOC_VERSION}} @@ -107,6 +116,9 @@ jobs: - uses: Noelware/setup-protoc@1.1.0 with: version: ${{env.PROTOC_VERSION}} + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - run: > cargo test -r --test latency_histogram @@ -122,6 +134,9 @@ jobs: - uses: ./.github/actions/install_rust - uses: Swatinem/rust-cache@v2 - uses: Noelware/setup-protoc@1.1.0 + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - run: | cargo test -p papyrus_node --no-default-features @@ -140,7 +155,9 @@ jobs: - uses: Noelware/setup-protoc@1.1.0 with: version: ${{env.PROTOC_VERSION}} - + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - name: Install cargo-llvm-cov uses: taiki-e/install-action@cargo-llvm-cov - uses: Swatinem/rust-cache@v2 @@ -197,6 +214,9 @@ jobs: target_directory: - 'crates/papyrus_storage/src/db/**' - uses: ./.github/actions/install_rust + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Swatinem/rust-cache@v2 # repeat this job 32 times. this is a random test for part of the code that may cause a corrupted database. - run: for run in {1..32}; do cargo test -r -p papyrus_storage -- --include-ignored common_prefix_compare_with_simple_table_random; done diff --git a/.github/workflows/papyrus_docker-publish.yml b/.github/workflows/papyrus_docker-publish.yml index 2035a801d0..9ddcdfb3b3 100644 --- a/.github/workflows/papyrus_docker-publish.yml +++ b/.github/workflows/papyrus_docker-publish.yml @@ -3,8 +3,8 @@ name: Papyrus-Docker-Publish on: workflow_dispatch: push: - branches: [main] - tags: ["v*.*.*"] + branches: [ main ] + tags: [ "v*.*.*" ] paths: - '.github/workflows/papyrus_docker-publish.yml' - 'crates/papyrus**/**' @@ -25,7 +25,7 @@ env: jobs: docker-build-push: - runs-on: starkware-ubuntu-latest-medium + runs-on: starkware-ubuntu-latest-large steps: - name: Checkout repository diff --git a/.github/workflows/papyrus_nightly-tests-call.yml b/.github/workflows/papyrus_nightly-tests-call.yml index 64980b6ab5..a88c6c40fe 100644 --- a/.github/workflows/papyrus_nightly-tests-call.yml +++ b/.github/workflows/papyrus_nightly-tests-call.yml @@ -22,6 +22,9 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Swatinem/rust-cache@v2 - run: sudo apt update; sudo apt -y install libclang-dev # Install libclang-dev that is not a part of the ubuntu vm in github actions. diff --git a/.github/workflows/papyrus_nightly-tests.yml b/.github/workflows/papyrus_nightly-tests.yml index a7a91d5687..efb3aa740b 100644 --- a/.github/workflows/papyrus_nightly-tests.yml +++ b/.github/workflows/papyrus_nightly-tests.yml @@ -44,6 +44,10 @@ jobs: - run: brew install protobuf@$PROTOC_VERSION + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps + - name: Build node run: cargo build -r -p papyrus_node @@ -58,6 +62,9 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - uses: Swatinem/rust-cache@v2 - run: npm install -g ganache@7.4.3 @@ -75,6 +82,9 @@ jobs: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust - uses: Swatinem/rust-cache@v2 + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - run: cargo build -r -p papyrus_load_test integration-test: @@ -84,6 +94,9 @@ jobs: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust - uses: Swatinem/rust-cache@v2 + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - run: > cargo test -r --test latency_histogram @@ -100,4 +113,7 @@ jobs: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust - uses: Swatinem/rust-cache@v2 + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - run: for run in {1..100}; do cargo test -r -p papyrus_storage -- --include-ignored common_prefix_compare_with_simple_table_random; done diff --git a/.github/workflows/verify-deps.yml b/.github/workflows/verify-deps.yml index e23ac29496..1890ee6c7a 100644 --- a/.github/workflows/verify-deps.yml +++ b/.github/workflows/verify-deps.yml @@ -12,6 +12,9 @@ jobs: steps: - uses: actions/checkout@v4 - uses: ./.github/actions/install_rust + - name: Set up Native Dependencies + uses: ./.github/actions/setup-native-deps + id: native-deps - name: Update Dependencies run: cargo update --verbose - name: Build diff --git a/Cargo.lock b/Cargo.lock index 060491b0e6..fdd2fea87c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -167,6 +167,20 @@ version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.61", +] + [[package]] name = "arc-swap" version = "1.7.1" @@ -892,12 +906,15 @@ dependencies = [ "itertools 0.12.1", "lazy_static", "lazycell", + "log", + "prettyplease", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", "syn 2.0.61", + "which", ] [[package]] @@ -981,6 +998,7 @@ dependencies = [ "cairo-lang-runner", "cairo-lang-starknet-classes", "cairo-lang-utils", + "cairo-native", "cairo-vm", "criterion", "derive_more", @@ -1166,9 +1184,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0db1ae47b4918a894b60160fac42e6fbcb5a8c0023dd6c290ba03a1bcdf5a554" +checksum = "5852668d1c6966b34d6e4fe249732769ab9cb2012c201e3889d8119f206760a0" dependencies = [ "anyhow", "cairo-lang-defs", @@ -1364,9 +1382,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be1227ee50d291f4221f2befab3c107720bd9eb1a4da3783f61481a05ac055e2" +checksum = "528a247ac59cb35b2f99d64605a81de815fa5fb0b0e7f7ece1d4e7fcf267d4ea" dependencies = [ "ark-ff", "ark-secp256k1", @@ -1421,9 +1439,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bdb0c2cc419f45ab7e413322502ca02c2a2c56aeabdd0885e3740f378d8b269" +checksum = "891488c1a3184ce91679f5bdb63015a1d24769a48bd07e5d51a1779d0031dfbe" dependencies = [ "anyhow", "cairo-lang-utils", @@ -1448,9 +1466,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7224cd827ccf69e742c90a60278876865a96b545a101248d9472d2e02f9190b3" +checksum = "ea7752cd48c86b2cde8603b753a6df4da086dacd16a73d288854d5f040b51171" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -1464,9 +1482,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e379e3010827fe983e66aa38a0d25fe24cfc11eaf8cadf4dc7bcb31fff031de" +checksum = "340892a09c9421414b2ac45b03c705f16e2bd737e4559dfd98ee1d20718dec9e" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -1480,9 +1498,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6b353930676c06bb885a16ec3b120109aa15539c49f41b3370a5a6314dc29dc" +checksum = "c5cc616e8df44c4d685fe3c5f81f35ebbda57225098b35cea8602457c45c9e96" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -1504,9 +1522,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83873751d489aae4674f3d755a4897429a664bdc4b0847283e13889f0b0c2a44" +checksum = "1c22ff7e8113a46a907f82f191096c96935cc48247e3079971ddf536ccc2f4f8" dependencies = [ "assert_matches", "cairo-lang-casm", @@ -1525,9 +1543,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd84b445715326e44832836732b6bda76a119116b296ac9b6b87e2a4177634a" +checksum = "5bf41941776e7410a8853a8e2a116292fc24d219df1989a92ffe5ab0e98037eb" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -1535,9 +1553,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8df3086f909d27a49d6706be835725df4e21fb50efe699cd763d1f782a31dea" +checksum = "b5508fa5ee8d24adf7d2c65505d0ac35efc892eac16d1449c6f7e314a0288cb8" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1565,9 +1583,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet-classes" -version = "2.8.0" +version = "2.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41bcab650779b3431389dc52f1e643a7c9690a1aa2b072c8f01955503d094007" +checksum = "482b8f9d7f8cc7140f1260ee71f3308a66d15bd228a06281067ca3f8f4410db2" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", @@ -1612,6 +1630,33 @@ dependencies = [ "xshell", ] +[[package]] +name = "cairo-lang-test-plugin" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f1597b8229a3649183ff33b19f0aeca5d86505253ebbbce377b271d1732835" +dependencies = [ + "anyhow", + "cairo-lang-compiler", + "cairo-lang-debug", + "cairo-lang-defs", + "cairo-lang-filesystem", + "cairo-lang-lowering", + "cairo-lang-semantic", + "cairo-lang-sierra", + "cairo-lang-sierra-generator", + "cairo-lang-starknet", + "cairo-lang-starknet-classes", + "cairo-lang-syntax", + "cairo-lang-utils", + "indoc 2.0.5", + "itertools 0.12.1", + "num-bigint 0.4.5", + "num-traits 0.2.19", + "serde", + "starknet-types-core", +] + [[package]] name = "cairo-lang-test-utils" version = "2.8.2" @@ -1641,6 +1686,71 @@ dependencies = [ "serde", ] +[[package]] +name = "cairo-native" +version = "0.2.0" +source = "git+https://github.com/lambdaclass/cairo_native?rev=2be717cba74c63628cb68b619ff2022c70d0cdd2#2be717cba74c63628cb68b619ff2022c70d0cdd2" +dependencies = [ + "anyhow", + "aquamarine", + "bumpalo", + "cairo-lang-compiler", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-runner", + "cairo-lang-semantic", + "cairo-lang-sierra", + "cairo-lang-sierra-ap-change", + "cairo-lang-sierra-gas", + "cairo-lang-sierra-generator", + "cairo-lang-starknet", + "cairo-lang-starknet-classes", + "cairo-lang-test-plugin", + "cairo-lang-utils", + "cairo-native-runtime", + "cc", + "clap", + "colored", + "educe", + "itertools 0.13.0", + "k256", + "keccak", + "lazy_static", + "libc", + "libloading", + "llvm-sys", + "melior", + "mlir-sys", + "num-bigint 0.4.5", + "num-traits 0.2.19", + "p256", + "sec1", + "serde", + "serde_json", + "sha2", + "starknet-types-core", + "stats_alloc", + "tempfile", + "thiserror", + "tracing", + "tracing-subscriber", +] + +[[package]] +name = "cairo-native-runtime" +version = "0.2.0" +source = "git+https://github.com/lambdaclass/cairo_native?rev=2be717cba74c63628cb68b619ff2022c70d0cdd2#2be717cba74c63628cb68b619ff2022c70d0cdd2" +dependencies = [ + "cairo-lang-sierra-gas", + "lazy_static", + "libc", + "rand 0.8.5", + "starknet-crypto 0.7.1", + "starknet-curve 0.5.0", + "starknet-types-core", +] + [[package]] name = "cairo-vm" version = "1.0.1" @@ -1710,6 +1820,16 @@ dependencies = [ "thiserror", ] +[[package]] +name = "caseless" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808dab3318747be122cb31d36de18d4d1c81277a76f8332a02b81a3d73463d7f" +dependencies = [ + "regex", + "unicode-normalization", +] + [[package]] name = "cast" version = "0.3.0" @@ -1718,13 +1838,13 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.97" +version = "1.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" +checksum = "2d74707dde2ba56f86ae90effb3b43ddd369504387e718014de010cec7959800" dependencies = [ "jobserver", "libc", - "once_cell", + "shlex", ] [[package]] @@ -1982,6 +2102,23 @@ dependencies = [ "tracing-subscriber", ] +[[package]] +name = "comrak" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d061c6d53fe98c25efda0d91b7f6b4b4020a51dad78a3eac5028710aa26f8e7" +dependencies = [ + "caseless", + "derive_builder", + "entities", + "memchr", + "once_cell", + "regex", + "slug", + "typed-arena", + "unicode_categories", +] + [[package]] name = "concurrent-queue" version = "2.5.0" @@ -2356,6 +2493,20 @@ dependencies = [ "syn 2.0.61", ] +[[package]] +name = "dashmap" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" +dependencies = [ + "cfg-if", + "crossbeam-utils", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "data-encoding" version = "2.6.0" @@ -2405,6 +2556,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] @@ -2442,6 +2594,37 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive_builder" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" +dependencies = [ + "darling 0.20.8", + "proc-macro2", + "quote", + "syn 2.0.61", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" +dependencies = [ + "derive_builder_core", + "syn 2.0.61", +] + [[package]] name = "derive_more" version = "0.99.17" @@ -2455,6 +2638,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "deunicode" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" + [[package]] name = "diff" version = "0.1.13" @@ -2613,6 +2802,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "educe" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4bd92664bf78c4d3dba9b7cdafce6fa15b13ed3ed16175218196942e99168a8" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.61", +] + [[package]] name = "either" version = "1.11.0" @@ -2631,6 +2832,7 @@ dependencies = [ "ff", "generic-array", "group", + "pem-rfc7468", "pkcs8", "rand_core 0.6.4", "sec1", @@ -2680,6 +2882,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "entities" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" + [[package]] name = "enum-as-inner" version = "0.6.0" @@ -2723,6 +2931,26 @@ dependencies = [ "syn 2.0.61", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.61", +] + [[package]] name = "env_filter" version = "0.1.0" @@ -4158,6 +4386,25 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "include_dir" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +dependencies = [ + "proc-macro2", + "quote", +] + [[package]] name = "indent" version = "0.1.1" @@ -4323,6 +4570,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -4639,11 +4895,11 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" dependencies = [ - "spin 0.5.2", + "spin 0.9.8", ] [[package]] @@ -4654,9 +4910,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.154" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libloading" @@ -5175,6 +5431,20 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +[[package]] +name = "llvm-sys" +version = "181.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320f9d2723c97d4b78f9190a61ed25cc7cfbe456668c08e6e7dd8e50ceb8500" +dependencies = [ + "anyhow", + "cc", + "lazy_static", + "libc", + "regex-lite", + "semver", +] + [[package]] name = "lock_api" version = "0.4.12" @@ -5278,6 +5548,35 @@ dependencies = [ "libc", ] +[[package]] +name = "melior" +version = "0.18.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3085c0169aa3b735d8e7df582baee23c2aeb280ea62cc7f71effda28d8e281" +dependencies = [ + "dashmap", + "melior-macro", + "mlir-sys", + "once_cell", +] + +[[package]] +name = "melior-macro" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d58c356ebaa7855da67aad1306a0d032b68919d3c65b0b5dcecf10d9bdf6a9" +dependencies = [ + "comrak", + "convert_case 0.6.0", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn 2.0.61", + "tblgen-alt", + "unindent 0.2.3", +] + [[package]] name = "memchr" version = "2.7.2" @@ -5434,6 +5733,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "mlir-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1b5806a63bc959cd5c4e5db8cadd20e40045d41969d325132748db8af11b7f" +dependencies = [ + "bindgen 0.69.4", +] + [[package]] name = "mockall" version = "0.12.1" @@ -6103,6 +6411,18 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2", +] + [[package]] name = "page_size" version = "0.6.0" @@ -6718,6 +7038,15 @@ dependencies = [ "serde", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -7029,6 +7358,15 @@ dependencies = [ "syn 2.0.61", ] +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "primitive-types" version = "0.12.2" @@ -7264,7 +7602,7 @@ dependencies = [ "pyo3-build-config", "pyo3-ffi", "pyo3-macros", - "unindent", + "unindent 0.1.11", ] [[package]] @@ -7683,9 +8021,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -7713,6 +8051,12 @@ dependencies = [ "regex-syntax 0.8.3", ] +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + [[package]] name = "regex-syntax" version = "0.6.29" @@ -8318,11 +8662,12 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -8548,6 +8893,16 @@ dependencies = [ "autocfg 1.3.0", ] +[[package]] +name = "slug" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" +dependencies = [ + "deunicode", + "wasm-bindgen", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -9204,6 +9559,12 @@ dependencies = [ "rand 0.6.5", ] +[[package]] +name = "stats_alloc" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e04424e733e69714ca1bbb9204c1a57f09f5493439520f9f68c132ad25eec" + [[package]] name = "string_cache" version = "0.8.7" @@ -9395,6 +9756,18 @@ version = "0.12.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +[[package]] +name = "tblgen-alt" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ae726d43658a13a9cd479de814be1311fea69236cd821e931a4fb9ca4d70e50" +dependencies = [ + "bindgen 0.69.4", + "cc", + "paste", + "thiserror", +] + [[package]] name = "tempfile" version = "3.10.1" @@ -9510,18 +9883,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.60" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.60" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", @@ -9902,6 +10275,16 @@ dependencies = [ "tracing-core", ] +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + [[package]] name = "tracing-subscriber" version = "0.3.18" @@ -9912,12 +10295,15 @@ dependencies = [ "nu-ansi-term", "once_cell", "regex", + "serde", + "serde_json", "sharded-slab", "smallvec", "thread_local", "tracing", "tracing-core", "tracing-log", + "tracing-serde", ] [[package]] @@ -9977,6 +10363,12 @@ dependencies = [ "utf-8", ] +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + [[package]] name = "typenum" version = "1.17.0" @@ -10043,12 +10435,24 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + [[package]] name = "unindent" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c" +[[package]] +name = "unindent" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" + [[package]] name = "universal-hash" version = "0.5.1" diff --git a/Cargo.toml b/Cargo.toml index 2682f0ed12..1b3de802cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -77,12 +77,14 @@ byteorder = "1.4.3" bytes = "1" cached = "0.44.0" cairo-felt = "0.9.1" -cairo-lang-casm = "2.8.0" -cairo-lang-runner = "2.8.0" -cairo-lang-sierra = "=2.8.0" -cairo-lang-sierra-to-casm = "2.8.0" -cairo-lang-starknet-classes = "2.8.0" -cairo-lang-utils = "2.8.0" +cairo-lang-casm = "2.8.2" +cairo-lang-runner = "2.8.2" +cairo-lang-sierra = "=2.8.2" +cairo-lang-sierra-to-casm = "2.8.2" +cairo-lang-starknet-classes = "2.8.2" +cairo-lang-utils = "2.8.2" +# This is a temporary dependency, will be removed once the new version of cairo-native is released to main. +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev = "2be717cba74c63628cb68b619ff2022c70d0cdd2" } cairo-vm = "=1.0.1" camelpaste = "0.1.0" chrono = "0.4.26" @@ -116,7 +118,7 @@ itertools = "0.12.1" jsonrpsee = "0.20.3" jsonschema = "0.17.0" keccak = "0.1.3" -lazy_static = "1.4.0" +lazy_static = "1.5.0" libmdbx = "0.3.5" libp2p = "0.53.2" libp2p-swarm-test = "0.3.0" diff --git a/Dockerfile b/Dockerfile index c362597fc2..9e82860e0a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,22 +7,51 @@ # More info on Cargo Chef: https://github.com/LukeMathWalker/cargo-chef # We start by creating a base image using 'clux/muslrust' with additional required tools. -FROM clux/muslrust:1.80.0-stable AS chef +FROM ubuntu:22.04 AS base WORKDIR /app -RUN apt update && apt install -y clang unzip + +RUN apt update -y && apt install -y lsb-release \ + wget \ + curl \ + git \ + build-essential \ + libclang-dev \ + libz-dev \ + libzstd-dev \ + libssl-dev \ + pkg-config \ + gnupg \ + unzip + +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --default-toolchain stable -y +ENV PATH="/root/.cargo/bin:${PATH}" + RUN cargo install cargo-chef + ENV PROTOC_VERSION=25.1 RUN curl -L "https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOC_VERSION/protoc-$PROTOC_VERSION-linux-x86_64.zip" -o protoc.zip && unzip ./protoc.zip -d $HOME/.local && rm ./protoc.zip ENV PROTOC=/root/.local/bin/protoc -# Add the x86_64-unknown-linux-musl target to rustup for compiling statically linked binaries. -# This enables the creation of fully self-contained binaries that do not depend on the system's dynamic libraries, -# resulting in more portable executables that can run on any Linux distribution. -RUN rustup target add x86_64-unknown-linux-musl + +# Install LLVM 18 +RUN echo "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main" > /etc/apt/sources.list.d/llvm-18.list +RUN echo "deb-src http://apt.llvm.org/jammy/ llvm-toolchain-jammy-18 main" >> /etc/apt/sources.list.d/llvm-18.list +RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - + +RUN apt update -y && apt install -y --ignore-missing --allow-downgrades \ + libmlir-18-dev \ + libpolly-18-dev \ + llvm-18-dev \ + mlir-18-tools \ + clang-18 + +ENV MLIR_SYS_180_PREFIX=/usr/lib/llvm-18/ +ENV LLVM_SYS_181_PREFIX=/usr/lib/llvm-18/ +ENV TABLEGEN_180_PREFIX=/usr/lib/llvm-18/ ##################### # Stage 1 (planer): # ##################### -FROM chef AS planner +FROM base AS planner COPY . . # * Running Cargo Chef prepare that will generate recipe.json which will be used in the next stage. RUN cargo chef prepare @@ -31,43 +60,39 @@ RUN cargo chef prepare # Stage 2 (cacher): # ##################### # Compile all the dependecies using Cargo Chef cook. -FROM chef AS cacher +FROM base AS cacher # Copy recipe.json from planner stage COPY --from=planner /app/recipe.json recipe.json # Build dependencies - this is the caching Docker layer! -RUN cargo chef cook --target x86_64-unknown-linux-musl --release --package papyrus_node +RUN cargo chef cook --release --package papyrus_node ###################### # Stage 3 (builder): # ###################### -FROM chef AS builder +FROM base AS builder COPY . . COPY --from=cacher /app/target target # Disable incremental compilation for a cleaner build. ENV CARGO_INCREMENTAL=0 # Compile the papyrus_node crate for the x86_64-unknown-linux-musl target in release mode, ensuring dependencies are locked. -RUN cargo build --target x86_64-unknown-linux-musl --release --package papyrus_node --locked +RUN cargo build --release --package papyrus_node --locked ########################### # Stage 4 (papyrus_node): # ########################### -# Uses Alpine Linux to run a lightweight and secure container. -FROM alpine:3.17.0 AS papyrus_node +FROM base AS papyrus_node ENV ID=1000 WORKDIR /app # Copy the node executable and its configuration. -COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/papyrus_node /app/target/release/papyrus_node +COPY --from=builder /app/target/release/papyrus_node /app/target/release/papyrus_node COPY config config # Install tini, a lightweight init system, to call our executable. -RUN set -ex; \ - apk update; \ - apk add --no-cache tini; \ - mkdir data +RUN apt install tini # Create a new user "papyrus". RUN set -ex; \ @@ -82,4 +107,4 @@ EXPOSE 8080 8081 USER ${ID} # Set the entrypoint to use tini to manage the process. -ENTRYPOINT ["/sbin/tini", "--", "/app/target/release/papyrus_node"] +ENTRYPOINT ["tini", "--", "/app/target/release/papyrus_node"] \ No newline at end of file diff --git a/crates/blockifier/Cargo.toml b/crates/blockifier/Cargo.toml index b789bd51f9..672df1e6f6 100644 --- a/crates/blockifier/Cargo.toml +++ b/crates/blockifier/Cargo.toml @@ -28,6 +28,7 @@ cairo-lang-casm = { workspace = true, features = ["parity-scale-codec"] } cairo-lang-runner.workspace = true cairo-lang-starknet-classes.workspace = true cairo-lang-utils.workspace = true +cairo-native.workspace = true cairo-vm.workspace = true derive_more.workspace = true indexmap.workspace = true diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/account_faulty.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/account_faulty.casm.json index be48e8ab57..5d1bb9be09 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/account_faulty.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/account_faulty.casm.json @@ -1,6 +1,6 @@ { "prime": "0x800000000000011000000000000000000000000000000000000000000000001", - "compiler_version": "2.7.0", + "compiler_version": "2.8.2", "bytecode": [ "0xa0680017fff8000", "0x7", diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/account_with_dummy_validate.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/account_with_dummy_validate.casm.json index 50f2daba4d..7b6b3673ca 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/account_with_dummy_validate.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/account_with_dummy_validate.casm.json @@ -1,6 +1,6 @@ { "prime": "0x800000000000011000000000000000000000000000000000000000000000001", - "compiler_version": "2.7.0", + "compiler_version": "2.8.2", "bytecode": [ "0xa0680017fff8000", "0x7", diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/account_with_long_validate.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/account_with_long_validate.casm.json index a546fc058b..27ba33d097 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/account_with_long_validate.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/account_with_long_validate.casm.json @@ -1,6 +1,6 @@ { "prime": "0x800000000000011000000000000000000000000000000000000000000000001", - "compiler_version": "2.7.0", + "compiler_version": "2.8.2", "bytecode": [ "0xa0680017fff8000", "0x7", diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.casm.json index 147375e76c..10caa8a487 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/empty_contract.casm.json @@ -1,6 +1,6 @@ { "prime": "0x800000000000011000000000000000000000000000000000000000000000001", - "compiler_version": "2.7.0", + "compiler_version": "2.8.2", "bytecode": [], "bytecode_segment_lengths": 0, "hints": [], diff --git a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json index c470c611c6..ae5ce4d90f 100644 --- a/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json +++ b/crates/blockifier/feature_contracts/cairo1/compiled/test_contract.casm.json @@ -1,6 +1,6 @@ { "prime": "0x800000000000011000000000000000000000000000000000000000000000001", - "compiler_version": "2.7.0", + "compiler_version": "2.8.2", "bytecode": [ "0xa0680017fff8000", "0x7", @@ -100,9 +100,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4529", + "0x4795", "0x482480017fff8000", - "0x4528", + "0x4794", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -275,9 +275,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x447a", + "0x46e6", "0x482480017fff8000", - "0x4479", + "0x46e5", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -588,9 +588,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4341", + "0x45ad", "0x482480017fff8000", - "0x4340", + "0x45ac", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -922,9 +922,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x41f3", + "0x445f", "0x482480017fff8000", - "0x41f2", + "0x445e", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1128,9 +1128,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x4125", + "0x4391", "0x482480017fff8000", - "0x4124", + "0x4390", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1344,9 +1344,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x404d", + "0x42b9", "0x482480017fff8000", - "0x404c", + "0x42b8", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1682,9 +1682,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3efb", + "0x4167", "0x482480017fff8000", - "0x3efa", + "0x4166", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -1969,9 +1969,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3ddc", + "0x4048", "0x482480017fff8000", - "0x3ddb", + "0x4047", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2186,9 +2186,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3d03", + "0x3f6f", "0x482480017fff8000", - "0x3d02", + "0x3f6e", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2402,9 +2402,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3c2b", + "0x3e97", "0x482480017fff8000", - "0x3c2a", + "0x3e96", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2541,9 +2541,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3ba0", + "0x3e0c", "0x482480017fff8000", - "0x3b9f", + "0x3e0b", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2814,9 +2814,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3a8f", + "0x3cfb", "0x482480017fff8000", - "0x3a8e", + "0x3cfa", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -2992,9 +2992,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x39dd", + "0x3c49", "0x482480017fff8000", - "0x39dc", + "0x3c48", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3096,9 +3096,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3975", + "0x3be1", "0x482480017fff8000", - "0x3974", + "0x3be0", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3201,15 +3201,15 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x390c", + "0x3b78", "0x482480017fff8000", - "0x390b", + "0x3b77", "0x480080007fff8000", "0x480080017fff8000", "0x484480017fff8000", "0x8", "0x482480017fff8000", - "0x4142e", + "0x40312", "0xa0680017fff8000", "0x8", "0x48307ffe80007ff5", @@ -3313,21 +3313,21 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x389c", + "0x3b08", "0x482480017fff8000", - "0x389b", + "0x3b07", "0x480080007fff8000", "0xa0680017fff8000", "0x9", "0x4824800180007ff8", - "0x382d4", + "0x371b8", "0x482480017fff8000", "0x100000000000000000000000000000000", "0x400080007ff77fff", "0x10780017fff7fff", "0x1f", "0x4824800180007ff8", - "0x382d4", + "0x371b8", "0x400080007ff87fff", "0x482480017ff88000", "0x1", @@ -3459,9 +3459,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x380a", + "0x3a76", "0x482480017fff8000", - "0x3809", + "0x3a75", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3661,9 +3661,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3740", + "0x39ac", "0x482480017fff8000", - "0x373f", + "0x39ab", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3783,9 +3783,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x36c6", + "0x3932", "0x482480017fff8000", - "0x36c5", + "0x3931", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -3897,9 +3897,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3654", + "0x38c0", "0x482480017fff8000", - "0x3653", + "0x38bf", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -4036,9 +4036,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x35c9", + "0x3835", "0x482480017fff8000", - "0x35c8", + "0x3834", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -4241,9 +4241,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x34fc", + "0x3768", "0x482480017fff8000", - "0x34fb", + "0x3767", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -4485,9 +4485,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3408", + "0x3674", "0x482480017fff8000", - "0x3407", + "0x3673", "0x480080007fff8000", "0x480080007fff8000", "0x484480017fff8000", @@ -4653,9 +4653,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3360", + "0x35cc", "0x482480017fff8000", - "0x335f", + "0x35cb", "0x480080007fff8000", "0x480080007fff8000", "0x484480017fff8000", @@ -4844,9 +4844,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x32a1", + "0x350d", "0x482480017fff8000", - "0x32a0", + "0x350c", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -5001,9 +5001,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3204", + "0x3470", "0x482480017fff8000", - "0x3203", + "0x346f", "0x480080007fff8000", "0x480080027fff8000", "0x482480017fff8000", @@ -5133,9 +5133,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3180", + "0x33ec", "0x482480017fff8000", - "0x317f", + "0x33eb", "0x480080007fff8000", "0x480080007fff8000", "0x484480017fff8000", @@ -5282,9 +5282,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x30eb", + "0x3357", "0x482480017fff8000", - "0x30ea", + "0x3356", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -5420,9 +5420,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x3061", + "0x32cd", "0x482480017fff8000", - "0x3060", + "0x32cc", "0x480080007fff8000", "0x480080047fff8000", "0x484480017fff8000", @@ -5546,9 +5546,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x2fe3", + "0x324f", "0x482480017fff8000", - "0x2fe2", + "0x324e", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -5710,9 +5710,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x2f3f", + "0x31ab", "0x482480017fff8000", - "0x2f3e", + "0x31aa", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -5916,9 +5916,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x2e71", + "0x30dd", "0x482480017fff8000", - "0x2e70", + "0x30dc", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -6121,9 +6121,9 @@ "0x1", "0x208b7fff7fff7ffe", "0x1104800180018000", - "0x2da4", + "0x3010", "0x482480017fff8000", - "0x2da3", + "0x300f", "0x480080007fff8000", "0xa0680017fff8000", "0x9", @@ -8702,9 +8702,9 @@ "0x20680017fff7ffd", "0x37", "0x1104800180018000", - "0x2373", + "0x25df", "0x482480017fff8000", - "0x2372", + "0x25de", "0x48127ff97fff8000", "0x480a7ffc7fff8000", "0x480a7ffd7fff8000", @@ -9146,15 +9146,15 @@ "0x20680017fff7ffc", "0x12", "0x40780017fff7fff", - "0x327", + "0x30c", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x53686f756c64206265206e6f6e65", "0x400080007ffe7fff", "0x480a7ffb7fff8000", - "0x48127cd47fff8000", - "0x48127cd47fff8000", + "0x48127cef7fff8000", + "0x48127cef7fff8000", "0x480680017fff8000", "0x1", "0x48127ffa7fff8000", @@ -9181,15 +9181,15 @@ "0x20680017fff7fff", "0x13", "0x40780017fff7fff", - "0x321", + "0x306", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x53686f756c64206661696c", "0x400080007ffe7fff", "0x480a7ffb7fff8000", - "0x480080067cd58000", - "0x482480017cd48000", + "0x480080067cf08000", + "0x482480017cef8000", "0xa", "0x480680017fff8000", "0x1", @@ -9271,7 +9271,7 @@ "0x10780017fff7fff", "0x6", "0x40780017fff7fff", - "0x301", + "0x2e6", "0x10780017fff7fff", "0xa", "0x4824800180007ffa", @@ -9281,7 +9281,7 @@ "0x10780017fff7fff", "0x6", "0x40780017fff7fff", - "0x300", + "0x2e5", "0x10780017fff7fff", "0x14", "0x4824800180007ffc", @@ -9291,7 +9291,7 @@ "0x10780017fff7fff", "0x6", "0x40780017fff7fff", - "0x2ff", + "0x2e4", "0x10780017fff7fff", "0xa", "0x4824800180007ffc", @@ -9301,15 +9301,15 @@ "0x10780017fff7fff", "0x12", "0x40780017fff7fff", - "0x2fe", + "0x2e3", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x556e657870656374656420636f6f7264696e61746573", "0x400080007ffe7fff", - "0x48127ce97fff8000", - "0x48127cf77fff8000", - "0x48127cf77fff8000", + "0x48127d047fff8000", + "0x48127d127fff8000", + "0x48127d127fff8000", "0x480680017fff8000", "0x1", "0x48127ffa7fff8000", @@ -9404,15 +9404,15 @@ "0x48127ffa7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x2ea", + "0x2cf", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x4f7074696f6e3a3a756e77726170206661696c65642e", "0x400080007ffe7fff", - "0x48127d0d7fff8000", - "0x48127d117fff8000", - "0x48127d117fff8000", + "0x48127d287fff8000", + "0x48127d2c7fff8000", + "0x48127d2c7fff8000", "0x480680017fff8000", "0x1", "0x48127ffa7fff8000", @@ -9420,37 +9420,37 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x2f0", - "0x48127d0d7fff8000", - "0x480080067cf88000", - "0x482480017cf78000", + "0x2d5", + "0x48127d287fff8000", + "0x480080067d138000", + "0x482480017d128000", "0xa", "0x480680017fff8000", "0x1", - "0x480080087cf58000", - "0x480080097cf48000", + "0x480080087d108000", + "0x480080097d0f8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x30a", - "0x48127ce97fff8000", - "0x480080037cf28000", - "0x482480017cf18000", + "0x2ef", + "0x48127d047fff8000", + "0x480080037d0d8000", + "0x482480017d0c8000", "0x7", "0x480680017fff8000", "0x1", - "0x480080057cef8000", - "0x480080067cee8000", + "0x480080057d0a8000", + "0x480080067d098000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x30a", + "0x2ef", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x4f7074696f6e3a3a756e77726170206661696c65642e", "0x400080007ffe7fff", - "0x48127ce97fff8000", - "0x48127cf17fff8000", - "0x48127cf17fff8000", + "0x48127d047fff8000", + "0x48127d0c7fff8000", + "0x48127d0c7fff8000", "0x480680017fff8000", "0x1", "0x48127ffa7fff8000", @@ -9458,26 +9458,26 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x310", - "0x48127ce97fff8000", - "0x480080067ce08000", - "0x482480017cdf8000", + "0x2f5", + "0x48127d047fff8000", + "0x480080067cfb8000", + "0x482480017cfa8000", "0xa", "0x480680017fff8000", "0x1", - "0x480080087cdd8000", - "0x480080097cdc8000", + "0x480080087cf88000", + "0x480080097cf78000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x314", + "0x2f9", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x57726f6e67206572726f72206d7367", "0x400080007ffe7fff", - "0x48127ce97fff8000", - "0x48127cdf7fff8000", - "0x48127cdf7fff8000", + "0x48127d047fff8000", + "0x48127cfa7fff8000", + "0x48127cfa7fff8000", "0x480680017fff8000", "0x1", "0x48127ffa7fff8000", @@ -9485,7 +9485,7 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x319", + "0x2fe", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -9493,8 +9493,8 @@ "0x400080007ffe7fff", "0x482680017ffb8000", "0x1", - "0x48127cdf7fff8000", - "0x48127cdf7fff8000", + "0x48127cfa7fff8000", + "0x48127cfa7fff8000", "0x480680017fff8000", "0x1", "0x48127ffa7fff8000", @@ -9502,7 +9502,7 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x32d", + "0x312", "0x480a7ffb7fff8000", "0x480280067ffd8000", "0x482680017ffd8000", @@ -11304,9 +11304,9 @@ "0x20680017fff7fff", "0x14d", "0x1104800180018000", - "0x1952", + "0x1bbe", "0x482480017fff8000", - "0x1951", + "0x1bbd", "0x480680017fff8000", "0x2", "0x482480017ffe8000", @@ -11388,7 +11388,7 @@ "0x480680017fff8000", "0x0", "0x1104800180018000", - "0xa11", + "0xbd4", "0x402580017fd38005", "0x1", "0x20680017fff7fff", @@ -11407,7 +11407,7 @@ "0x480680017fff8000", "0x1f", "0x1104800180018000", - "0xa1d", + "0xbe0", "0x20680017fff7ffb", "0x70", "0x48127ffa7fff8000", @@ -11420,7 +11420,7 @@ "0x480680017fff8000", "0x1f", "0x1104800180018000", - "0xa10", + "0xbd3", "0x20680017fff7ffb", "0x59", "0x48127ffa7fff8000", @@ -11433,7 +11433,7 @@ "0x480680017fff8000", "0x1f", "0x1104800180018000", - "0xa03", + "0xbc6", "0x20680017fff7ffb", "0x42", "0x48127ffa7fff8000", @@ -11446,7 +11446,7 @@ "0x480680017fff8000", "0x2", "0x1104800180018000", - "0x9f6", + "0xbb9", "0x20680017fff7ffb", "0x2b", "0x40780017fff7fff", @@ -11468,7 +11468,7 @@ "0x482480017ff88000", "0x2", "0x1104800180018000", - "0xe50", + "0x1013", "0x20680017fff7ffd", "0x9", "0x400180007fff8003", @@ -11925,7 +11925,7 @@ "0x480a7ff97fff8000", "0x480a7ffa7fff8000", "0x1104800180018000", - "0xcc9", + "0xe8c", "0x20680017fff7ffc", "0x11", "0x400280007ffc7ffd", @@ -12295,7 +12295,7 @@ "0x480080007ffc8000", "0x480080017ffb8000", "0x1104800180018000", - "0xc07", + "0xdca", "0x20680017fff7ffd", "0xb", "0x48127ffc7fff8000", @@ -12544,7 +12544,7 @@ "0x48127ffa7fff8000", "0x48127ffb7fff8000", "0x1104800180018000", - "0xbab", + "0xd6e", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x1", @@ -12750,7 +12750,7 @@ "0x48127ff27fff8000", "0x48307ffc80007ffd", "0x1104800180018000", - "0xb30", + "0xcf3", "0x484480017f9b8000", "0x20", "0xa0680017fff8000", @@ -13079,7 +13079,7 @@ "0x480a7ffb7fff8000", "0x480a7ffc7fff8000", "0x1104800180018000", - "0xad6", + "0xc99", "0x20680017fff7ffd", "0x3e", "0x20680017fff7ffe", @@ -13090,7 +13090,7 @@ "0x48127ff97fff8000", "0x48127ffb7fff8000", "0x1104800180018000", - "0xd8d", + "0x1112", "0x20680017fff7ffd", "0x1b", "0x48317fff80007ffd", @@ -13188,7 +13188,7 @@ "0x20680017fff7fff", "0x4", "0x10780017fff7fff", - "0x2fd", + "0x4c0", "0x480680017fff8000", "0xffffffff00000000ffffffffffffffff", "0x48317fff80017ffa", @@ -13209,10 +13209,10 @@ "0x10780017fff7fff", "0x7", "0x40780017fff7fff", - "0x2d3", - "0x48127d2b7fff8000", + "0x2b8", + "0x48127d467fff8000", "0x10780017fff7fff", - "0x2e8", + "0x4ab", "0x480680017fff8000", "0xbce6faada7179e84f3b9cac2fc632551", "0x48317fff80017ff9", @@ -13225,11 +13225,11 @@ "0x9", "0x400080007ffb7fff", "0x40780017fff7fff", - "0x2d0", - "0x482480017d2b8000", + "0x2b5", + "0x482480017d468000", "0x1", "0x10780017fff7fff", - "0x2d7", + "0x49a", "0x482480017ffa8000", "0x1", "0x10780017fff7fff", @@ -13322,7 +13322,7 @@ "0x1", "0x48307ffe80007fff", "0x20680017fff7fff", - "0x272", + "0x435", "0x480680017fff8000", "0xbce6faada7179e84f3b9cac2fc632551", "0x480680017fff8000", @@ -13428,7 +13428,7 @@ "0x40317ff97ffb7ffc", "0x40307ffa7ffc7ff1", "0x10780017fff7fff", - "0x1bb", + "0x37e", "0x4824800180008002", "0xffffffffffffffff0000000000000000", "0x480080097fcb8001", @@ -13675,23 +13675,472 @@ "0x480a7ff87fff8000", "0x48127f597fff8000", "0x48127f597fff8000", + "0x1104800180018000", + "0xf8f", "0x480680017fff8000", "0xbce6faada7179e84f3b9cac2fc632551", "0x480680017fff8000", "0xffffffff00000000ffffffffffffffff", - "0x1104800180018000", - "0xc06", - "0x48127ffd7fff8000", + "0x480080007ff98000", + "0x480080017ff88000", + "0x480080027ff78000", + "0x480080037ff68000", + "0x480080047ff58000", + "0x480080057ff48000", + "0x48307fff80007ff9", + "0x40780017fff7fff", + "0xc", + "0x20680017fff7ff3", + "0x8", + "0x40307ff17ff47feb", + "0x402480017ff57ff4", + "0x1", + "0x400080067fe67ff5", + "0x10780017fff7fff", + "0x3", + "0x400080067fe67ff3", + "0x48307ff17ff68000", + "0x48307fe680007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x40507fff7fff7fff", + "0x48307ff47fff8000", + "0x48307ff47fff8000", + "0x48307ff57fff8000", + "0x48307fec7fff8000", + "0x48307fe180007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080077fdd7fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x400080087fdc7fff", + "0x48307fef7ffe8000", + "0x48307ff07fff8000", + "0x48307ff07fff8000", + "0x48307ff17fff8000", + "0x48307fdb80007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080097fd67fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x4000800a7fd57fff", + "0xa0680017fff7fdf", + "0xc", + "0xa0680017fff8001", + "0x6", + "0x48127fd97fff7ffe", + "0x40127fdb7fff7ffe", + "0x10780017fff7fff", + "0x10", + "0x48127fdc7fff7ffe", + "0x40127fd87fff7ffe", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7fda", + "0x0", + "0xa0680017fff8000", + "0x6", + "0x40127fd77fff7ffd", + "0x40127fdc7fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x40127fdc7fff7ffd", + "0x40127fd77fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x4000800b7fd17fff", + "0x48507ffd7ffc8000", + "0x48307fe97ff98000", + "0x48307fe67fff8000", + "0x40307ffd7fff7fd2", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800800c7fcd8001", + "0x4800800d7fcc7ffe", + "0x4000800e7fcb7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fd3", + "0x48507fcf7ffc8000", + "0x48507fce7ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800800f7fc78001", + "0x480080107fc67fff", + "0x400080117fc57ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080127fc17fff", + "0x480080137fc07ffd", + "0x400080147fbf7fd7", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fd77ffe7fff", + "0x40307ffc7ff77fd8", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080157fbe8001", + "0x480080167fbd7ffe", + "0x400080177fbc7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fc3", + "0x48507fc17ffc8000", + "0x48507fc07ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080187fb88001", + "0x480080197fb77fff", + "0x4000801a7fb67ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800801b7fb27fff", + "0x4800801c7fb17ffd", + "0x4000801d7fb07fc6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fc67ffe7fff", + "0x40307ffc7ff77fc7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800801e7faf8001", + "0x4800801f7fae7ffe", + "0x400080207fad7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fb4", + "0x48507fb17ffc8000", + "0x48507fb07ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080217fa98001", + "0x480080227fa87fff", + "0x400080237fa77ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080247fa37fff", + "0x480080257fa27ffd", + "0x400080267fa17fb3", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fb37ffe7fff", + "0x40307ffc7ff77fb4", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080277fa08001", + "0x480080287f9f7ffe", + "0x400080297f9e7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fa4", + "0x48507fa37ffc8000", + "0x48507fa27ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800802a7f9a8001", + "0x4800802b7f997fff", + "0x4000802c7f987ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800802d7f947fff", + "0x4800802e7f937ffd", + "0x4000802f7f927fa6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fa67ffe7fff", + "0x40307ffc7ff77fa7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080307f918001", + "0x480080317f907ffe", + "0x400080327f8f7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7f95", + "0x48507f937ffc8000", + "0x48507f927ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080337f8b8001", + "0x480080347f8a7fff", + "0x400080357f897ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080367f857fff", + "0x480080377f847ffd", + "0x400080387f837f93", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307f937ffe7fff", + "0x40307ffc7ff77f94", + "0x482480017f838000", + "0x39", "0x480a7ff97fff8000", "0x480a7ffa7fff8000", - "0x48127e5d7fff8000", - "0x48127e5d7fff8000", + "0x48127e6b7fff8000", + "0x48127e6b7fff8000", + "0x1104800180018000", + "0xea3", "0x480680017fff8000", "0xbce6faada7179e84f3b9cac2fc632551", "0x480680017fff8000", "0xffffffff00000000ffffffffffffffff", - "0x1104800180018000", - "0xbfb", + "0x480080007ff98000", + "0x480080017ff88000", + "0x480080027ff78000", + "0x480080037ff68000", + "0x480080047ff58000", + "0x480080057ff48000", + "0x48307fff80007ff9", + "0x40780017fff7fff", + "0xc", + "0x20680017fff7ff3", + "0x8", + "0x40307ff17ff47feb", + "0x402480017ff57ff4", + "0x1", + "0x400080067fe67ff5", + "0x10780017fff7fff", + "0x3", + "0x400080067fe67ff3", + "0x48307ff17ff68000", + "0x48307fe680007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x40507fff7fff7fff", + "0x48307ff47fff8000", + "0x48307ff47fff8000", + "0x48307ff57fff8000", + "0x48307fec7fff8000", + "0x48307fe180007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080077fdd7fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x400080087fdc7fff", + "0x48307fef7ffe8000", + "0x48307ff07fff8000", + "0x48307ff07fff8000", + "0x48307ff17fff8000", + "0x48307fdb80007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080097fd67fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x4000800a7fd57fff", + "0xa0680017fff7fdf", + "0xc", + "0xa0680017fff8001", + "0x6", + "0x48127fd97fff7ffe", + "0x40127fdb7fff7ffe", + "0x10780017fff7fff", + "0x10", + "0x48127fdc7fff7ffe", + "0x40127fd87fff7ffe", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7fda", + "0x0", + "0xa0680017fff8000", + "0x6", + "0x40127fd77fff7ffd", + "0x40127fdc7fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x40127fdc7fff7ffd", + "0x40127fd77fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x4000800b7fd17fff", + "0x48507ffd7ffc8000", + "0x48307fe97ff98000", + "0x48307fe67fff8000", + "0x40307ffd7fff7fd2", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800800c7fcd8001", + "0x4800800d7fcc7ffe", + "0x4000800e7fcb7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fd3", + "0x48507fcf7ffc8000", + "0x48507fce7ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800800f7fc78001", + "0x480080107fc67fff", + "0x400080117fc57ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080127fc17fff", + "0x480080137fc07ffd", + "0x400080147fbf7fd7", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fd77ffe7fff", + "0x40307ffc7ff77fd8", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080157fbe8001", + "0x480080167fbd7ffe", + "0x400080177fbc7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fc3", + "0x48507fc17ffc8000", + "0x48507fc07ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080187fb88001", + "0x480080197fb77fff", + "0x4000801a7fb67ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800801b7fb27fff", + "0x4800801c7fb17ffd", + "0x4000801d7fb07fc6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fc67ffe7fff", + "0x40307ffc7ff77fc7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800801e7faf8001", + "0x4800801f7fae7ffe", + "0x400080207fad7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fb4", + "0x48507fb17ffc8000", + "0x48507fb07ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080217fa98001", + "0x480080227fa87fff", + "0x400080237fa77ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080247fa37fff", + "0x480080257fa27ffd", + "0x400080267fa17fb3", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fb37ffe7fff", + "0x40307ffc7ff77fb4", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080277fa08001", + "0x480080287f9f7ffe", + "0x400080297f9e7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fa4", + "0x48507fa37ffc8000", + "0x48507fa27ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800802a7f9a8001", + "0x4800802b7f997fff", + "0x4000802c7f987ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800802d7f947fff", + "0x4800802e7f937ffd", + "0x4000802f7f927fa6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fa67ffe7fff", + "0x40307ffc7ff77fa7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080307f918001", + "0x480080317f907ffe", + "0x400080327f8f7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7f95", + "0x48507f937ffc8000", + "0x48507f927ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080337f8b8001", + "0x480080347f8a7fff", + "0x400080357f897ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080367f857fff", + "0x480080377f847ffd", + "0x400080387f837f93", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307f937ffe7fff", + "0x40307ffc7ff77f94", "0x480680017fff8000", "0x77037d812deb33a0f4a13945d898c296", "0x480680017fff8000", @@ -13700,14 +14149,16 @@ "0x2bce33576b315ececbb6406837bf51f5", "0x480680017fff8000", "0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e16", + "0x482480017f7f8000", + "0x39", "0x480680017fff8000", "0x5365637032353672314e6577", "0x400280007ff67fff", "0x400380017ff67ff5", - "0x400280027ff67ffb", - "0x400280037ff67ffc", - "0x400280047ff67ffd", - "0x400280057ff67ffe", + "0x400280027ff67ffa", + "0x400280037ff67ffb", + "0x400280047ff67ffc", + "0x400280057ff67ffd", "0x480280077ff68000", "0x20680017fff7fff", "0x92", @@ -13723,8 +14174,8 @@ "0x400080007ffe7fff", "0x400080017ffe7ffd", "0x400080027ffe7ffc", - "0x400080037ffe7ef7", - "0x400080047ffe7ef8", + "0x400080037ffe7e94", + "0x400080047ffe7e95", "0x480080067ffe8000", "0x20680017fff7fff", "0x68", @@ -13735,8 +14186,8 @@ "0x400080087ffa7fff", "0x400080097ffa7ffd", "0x4001800a7ffa7ffd", - "0x4000800b7ffa7fef", - "0x4000800c7ffa7ff0", + "0x4000800b7ffa7f7e", + "0x4000800c7ffa7f7f", "0x4800800e7ffa8000", "0x20680017fff7fff", "0x51", @@ -13788,7 +14239,7 @@ "0x4", "0x480680017fff8000", "0x1", - "0x48127fde7fff8000", + "0x48127fe47fff8000", "0x48127ffa7fff8000", "0x48127ffa7fff8000", "0x480680017fff8000", @@ -13799,7 +14250,7 @@ "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x7", - "0x48127fde7fff8000", + "0x48127fe47fff8000", "0x4800801a7fe98000", "0x482480017fe88000", "0x1e", @@ -13810,7 +14261,7 @@ "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0xb", - "0x48127fde7fff8000", + "0x48127fe47fff8000", "0x480080147fe98000", "0x482480017fe88000", "0x18", @@ -13821,7 +14272,7 @@ "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0xf", - "0x48127fde7fff8000", + "0x48127fe47fff8000", "0x4800800d7fe98000", "0x482480017fe88000", "0x11", @@ -13832,7 +14283,7 @@ "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x13", - "0x48127fde7fff8000", + "0x48127fe47fff8000", "0x480080057fe98000", "0x482480017fe88000", "0x9", @@ -13862,7 +14313,7 @@ "0xa", "0x480280087ff68000", "0x480280097ff68000", - "0x48127fde7fff8000", + "0x48127fe47fff8000", "0x48127ffb7fff8000", "0x48127ffb7fff8000", "0x480680017fff8000", @@ -13871,22 +14322,22 @@ "0x48127ffa7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x28f", + "0x274", "0x4824800180008002", "0xffffffffffffffff0000000000000000", - "0x480080077d5c8001", - "0x480080087d5b7ffe", - "0x400080097d5a7ffe", + "0x480080077d778001", + "0x480080087d767ffe", + "0x400080097d757ffe", "0x484480017ffe8000", "0x10000000000000000", - "0x40307ffc7fff7d5f", - "0x48507d637ffc8000", - "0x48507d627ffc8000", + "0x40307ffc7fff7d7a", + "0x48507d7e7ffc8000", + "0x48507d7d7ffc8000", "0x4824800180018002", "0xffffffffffffffff0000000000000000", - "0x4800800a7d568001", - "0x4800800b7d557fff", - "0x4000800c7d547ffd", + "0x4800800a7d718001", + "0x4800800b7d707fff", + "0x4000800c7d6f7ffd", "0x484480017ffd8000", "0x10000000000000000", "0x40307ffd7fff7ffb", @@ -13895,28 +14346,28 @@ "0x48307fff7ff98003", "0x482480017fff8000", "0xfffffffffffffffe0000000000000000", - "0x4800800d7d507fff", - "0x4800800e7d4f7ffd", - "0x4000800f7d4e7d52", + "0x4800800d7d6b7fff", + "0x4800800e7d6a7ffd", + "0x4000800f7d697d6d", "0x404480017ffc7ffe", "0x100000000000000000000000000000000", - "0x40307d527ffe7fff", - "0x40307ffc7ff77d5c", + "0x40307d6d7ffe7fff", + "0x40307ffc7ff77d77", "0x4824800180008002", "0xffffffffffffffff0000000000000000", - "0x480080107d4d8001", - "0x480080117d4c7ffe", - "0x400080127d4b7ffe", + "0x480080107d688001", + "0x480080117d677ffe", + "0x400080127d667ffe", "0x484480017ffe8000", "0x10000000000000000", - "0x40307ffc7fff7d50", - "0x48507d527ffc8000", - "0x48507d517ffc8000", + "0x40307ffc7fff7d6b", + "0x48507d6d7ffc8000", + "0x48507d6c7ffc8000", "0x4824800180018002", "0xffffffffffffffff0000000000000000", - "0x480080137d478001", - "0x480080147d467fff", - "0x400080157d457ffd", + "0x480080137d628001", + "0x480080147d617fff", + "0x400080157d607ffd", "0x484480017ffd8000", "0x10000000000000000", "0x40307ffd7fff7ffb", @@ -13925,19 +14376,19 @@ "0x48307fff7ff98003", "0x482480017fff8000", "0xfffffffffffffffe0000000000000000", - "0x480080167d417fff", - "0x480080177d407ffd", - "0x400180187d3f7ffb", + "0x480080167d5c7fff", + "0x480080177d5b7ffd", + "0x400180187d5a7ffb", "0x404480017ffc7ffe", "0x100000000000000000000000000000000", "0x40287ffb7ffe7fff", - "0x40307ffc7ff77d4c", + "0x40307ffc7ff77d67", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x4f7074696f6e3a3a756e77726170206661696c65642e", "0x400080007ffe7fff", - "0x482480017d3d8000", + "0x482480017d588000", "0x19", "0x480a7ff57fff8000", "0x480a7ff67fff8000", @@ -13948,12 +14399,12 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x2bf", - "0x48127d3d7fff8000", + "0x2a4", + "0x48127d587fff8000", "0x10780017fff7fff", "0x5", "0x40780017fff7fff", - "0x2d8", + "0x2bd", "0x480a7ff47fff8000", "0x480a7ff57fff8000", "0x480a7ff67fff8000", @@ -14115,7 +14566,7 @@ "0x1", "0x48127ffe7fff8000", "0x1104800180018000", - "0xc7b", + "0xd24", "0x20680017fff7ffd", "0xb7", "0x20680017fff7fff", @@ -14190,7 +14641,7 @@ "0x7", "0x48127ffe7fff8000", "0x1104800180018000", - "0xc30", + "0xcd9", "0x20680017fff7ffd", "0x7", "0x48127ffc7fff8000", @@ -14225,7 +14676,7 @@ "0x6", "0x48127ff67fff8000", "0x1104800180018000", - "0xc0d", + "0xcb6", "0x20680017fff7ffd", "0x34", "0x48127ffc7fff8000", @@ -14367,7 +14818,7 @@ "0x48127ffd7fff8000", "0x48127fef7fff8000", "0x1104800180018000", - "0xb7f", + "0xc28", "0x20680017fff7ffd", "0xdd", "0x20680017fff7fff", @@ -14417,7 +14868,7 @@ "0x5", "0x48127ffe7fff8000", "0x1104800180018000", - "0xb4d", + "0xbf6", "0x20680017fff7ffd", "0x96", "0x480680017fff8000", @@ -14459,7 +14910,7 @@ "0x3", "0x48127ffe7fff8000", "0x1104800180018000", - "0xb23", + "0xbcc", "0x20680017fff7ffd", "0x7", "0x48127ffc7fff8000", @@ -14494,7 +14945,7 @@ "0x2", "0x48127ff67fff8000", "0x1104800180018000", - "0xb00", + "0xba9", "0x20680017fff7ffd", "0x34", "0x48127ffc7fff8000", @@ -14679,7 +15130,7 @@ "0x3", "0x48127ffe7fff8000", "0x1104800180018000", - "0xa47", + "0xaf0", "0x20680017fff7ffd", "0x7", "0x48127ffc7fff8000", @@ -14714,7 +15165,7 @@ "0x2", "0x48127ff87fff8000", "0x1104800180018000", - "0xa24", + "0xacd", "0x20680017fff7ffd", "0x3a", "0x48127ffc7fff8000", @@ -14849,7 +15300,7 @@ "0x2", "0x48127ffe7fff8000", "0x1104800180018000", - "0x99d", + "0xa46", "0x20680017fff7ffd", "0x7", "0x48127ffc7fff8000", @@ -14884,7 +15335,7 @@ "0x1", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x97a", + "0xa23", "0x20680017fff7ffd", "0x3c", "0x48127ffc7fff8000", @@ -14996,7 +15447,7 @@ "0x2", "0x48127ffe7fff8000", "0x1104800180018000", - "0x90a", + "0x9b3", "0x20680017fff7ffd", "0x7", "0x48127ffc7fff8000", @@ -15031,7 +15482,7 @@ "0x1", "0x480a7ffd7fff8000", "0x1104800180018000", - "0x8e7", + "0x990", "0x20680017fff7ffd", "0x2d", "0x48127ffc7fff8000", @@ -15861,14 +16312,14 @@ "0x400380047ff67ffd", "0x480280067ff68000", "0x20680017fff7fff", - "0x2af", + "0x471", "0x480280077ff68000", "0x480280087ff68000", "0x480280057ff68000", "0x482680017ff68000", "0x9", "0x20680017fff7ffc", - "0x29c", + "0x45e", "0x480680017fff8000", "0x29bfcdb2dce28d959f2815b16f81798", "0x480680017fff8000", @@ -15887,14 +16338,14 @@ "0x400080057ffa7ffe", "0x480080077ffa8000", "0x20680017fff7fff", - "0x27a", + "0x43c", "0x480080087ff98000", "0x480080097ff88000", "0x480080067ff78000", "0x482480017ff68000", "0xa", "0x20680017fff7ffc", - "0x265", + "0x427", "0x480680017fff8000", "0xbaaedce6af48a03bbfd25e8cd0364141", "0x480680017fff8000", @@ -16000,7 +16451,7 @@ "0x40317ff97ffb7ffa", "0x40307ffa7ffc7ff1", "0x10780017fff7fff", - "0x1ae", + "0x370", "0x4824800180008002", "0xffffffffffffffff0000000000000000", "0x480280097ff48001", @@ -16247,40 +16698,264 @@ "0x480a7ff87fff8000", "0x48127f597fff8000", "0x48127f597fff8000", + "0x1104800180018000", + "0x3c0", "0x480680017fff8000", "0xbaaedce6af48a03bbfd25e8cd0364141", "0x480680017fff8000", "0xfffffffffffffffffffffffffffffffe", - "0x1104800180018000", - "0x1fa", + "0x480080007ff98000", + "0x480080017ff88000", + "0x480080027ff78000", + "0x480080037ff68000", + "0x480080047ff58000", + "0x480080057ff48000", + "0x48307fff80007ff9", + "0x40780017fff7fff", + "0xc", + "0x20680017fff7ff3", + "0x8", + "0x40307ff17ff47feb", + "0x402480017ff57ff4", + "0x1", + "0x400080067fe67ff5", + "0x10780017fff7fff", + "0x3", + "0x400080067fe67ff3", + "0x48307ff17ff68000", + "0x48307fe680007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x40507fff7fff7fff", + "0x48307ff47fff8000", + "0x48307ff47fff8000", + "0x48307ff57fff8000", + "0x48307fec7fff8000", + "0x48307fe180007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080077fdd7fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x400080087fdc7fff", + "0x48307fef7ffe8000", + "0x48307ff07fff8000", + "0x48307ff07fff8000", + "0x48307ff17fff8000", + "0x48307fdb80007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080097fd67fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x4000800a7fd57fff", + "0xa0680017fff7fdf", + "0xc", + "0xa0680017fff8001", + "0x6", + "0x48127fd97fff7ffe", + "0x40127fdb7fff7ffe", + "0x10780017fff7fff", + "0x10", + "0x48127fdc7fff7ffe", + "0x40127fd87fff7ffe", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7fda", + "0x0", + "0xa0680017fff8000", + "0x6", + "0x40127fd77fff7ffd", + "0x40127fdc7fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x40127fdc7fff7ffd", + "0x40127fd77fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x4000800b7fd17fff", + "0x48507ffd7ffc8000", + "0x48307fe97ff98000", + "0x48307fe67fff8000", + "0x40307ffd7fff7fd2", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800800c7fcd8001", + "0x4800800d7fcc7ffe", + "0x4000800e7fcb7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fd3", + "0x48507fcf7ffc8000", + "0x48507fce7ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800800f7fc78001", + "0x480080107fc67fff", + "0x400080117fc57ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080127fc17fff", + "0x480080137fc07ffd", + "0x400080147fbf7fd7", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fd77ffe7fff", + "0x40307ffc7ff77fd8", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080157fbe8001", + "0x480080167fbd7ffe", + "0x400080177fbc7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fc3", + "0x48507fc17ffc8000", + "0x48507fc07ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080187fb88001", + "0x480080197fb77fff", + "0x4000801a7fb67ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800801b7fb27fff", + "0x4800801c7fb17ffd", + "0x4000801d7fb07fc6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fc67ffe7fff", + "0x40307ffc7ff77fc7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800801e7faf8001", + "0x4800801f7fae7ffe", + "0x400080207fad7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fb4", + "0x48507fb17ffc8000", + "0x48507fb07ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080217fa98001", + "0x480080227fa87fff", + "0x400080237fa77ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080247fa37fff", + "0x480080257fa27ffd", + "0x400080267fa17fb3", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fb37ffe7fff", + "0x40307ffc7ff77fb4", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080277fa08001", + "0x480080287f9f7ffe", + "0x400080297f9e7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fa4", + "0x48507fa37ffc8000", + "0x48507fa27ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800802a7f9a8001", + "0x4800802b7f997fff", + "0x4000802c7f987ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800802d7f947fff", + "0x4800802e7f937ffd", + "0x4000802f7f927fa6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fa67ffe7fff", + "0x40307ffc7ff77fa7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080307f918001", + "0x480080317f907ffe", + "0x400080327f8f7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7f95", + "0x48507f937ffc8000", + "0x48507f927ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080337f8b8001", + "0x480080347f8a7fff", + "0x400080357f897ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080367f857fff", + "0x480080377f847ffd", + "0x400080387f837f93", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307f937ffe7fff", + "0x40307ffc7ff77f94", "0x480680017fff8000", "0xfffffffffffffffffffffffffffffffe", - "0x48307ffe80017fff", + "0x48307f8e80017fff", "0xa0680017fff7fff", "0x7", "0x482480017fff8000", "0x100000000000000000000000000000000", - "0x400080007ff97fff", + "0x400080397f7f7fff", "0x10780017fff7fff", "0xc", - "0x400080007ffa7fff", + "0x400080397f807fff", "0x40780017fff7fff", "0x1", - "0x482480017ff98000", - "0x1", + "0x482480017f7f8000", + "0x3a", "0x48127ffd7fff8000", "0x480680017fff8000", "0x0", "0x10780017fff7fff", "0x7", - "0x482480017ff98000", - "0x1", + "0x482480017f7f8000", + "0x3a", "0x48127ffe7fff8000", "0x480680017fff8000", "0x1", "0x480680017fff8000", "0xbaaedce6af48a03bbfd25e8cd0364141", - "0x48307ff680017fff", + "0x48307f8680017fff", "0xa0680017fff7fff", "0x7", "0x482480017fff8000", @@ -16325,104 +17000,330 @@ "0x480680017fff8000", "0x1", "0x20680017fff7fff", - "0x59", + "0x13b", "0x48127ffc7fff8000", "0x480a7ffb7fff8000", "0x480a7ffc7fff8000", - "0x48127e4a7fff8000", - "0x48127e4a7fff8000", + "0x48127e587fff8000", + "0x48127e587fff8000", + "0x1104800180018000", + "0x28c", "0x480680017fff8000", "0xbaaedce6af48a03bbfd25e8cd0364141", "0x480680017fff8000", "0xfffffffffffffffffffffffffffffffe", - "0x1104800180018000", - "0x1a6", - "0x48127f017fff8000", - "0x48127f017fff8000", + "0x480080007ff98000", + "0x480080017ff88000", + "0x480080027ff78000", + "0x480080037ff68000", + "0x480080047ff58000", + "0x480080057ff48000", + "0x48307fff80007ff9", + "0x40780017fff7fff", + "0xc", + "0x20680017fff7ff3", + "0x8", + "0x40307ff17ff47feb", + "0x402480017ff57ff4", + "0x1", + "0x400080067fe67ff5", + "0x10780017fff7fff", + "0x3", + "0x400080067fe67ff3", + "0x48307ff17ff68000", + "0x48307fe680007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x40507fff7fff7fff", + "0x48307ff47fff8000", + "0x48307ff47fff8000", + "0x48307ff57fff8000", + "0x48307fec7fff8000", + "0x48307fe180007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080077fdd7fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x400080087fdc7fff", + "0x48307fef7ffe8000", + "0x48307ff07fff8000", + "0x48307ff07fff8000", + "0x48307ff17fff8000", + "0x48307fdb80007fff", + "0x4844800180007fff", + "0x100000000000000000000000000000000", + "0x400080097fd67fff", + "0x482480017fff8000", + "0xfffffffffffffffffffffffffffffffc", + "0x4000800a7fd57fff", + "0xa0680017fff7fdf", + "0xc", + "0xa0680017fff8001", + "0x6", + "0x48127fd97fff7ffe", + "0x40127fdb7fff7ffe", + "0x10780017fff7fff", + "0x10", + "0x48127fdc7fff7ffe", + "0x40127fd87fff7ffe", + "0x10780017fff7fff", + "0xc", + "0x480680017fff7fda", + "0x0", + "0xa0680017fff8000", + "0x6", + "0x40127fd77fff7ffd", + "0x40127fdc7fff7ffe", + "0x10780017fff7fff", + "0x4", + "0x40127fdc7fff7ffd", + "0x40127fd77fff7ffe", + "0x482480017ffd8000", + "0xffffffffffffffff0000000000000000", + "0x4000800b7fd17fff", + "0x48507ffd7ffc8000", + "0x48307fe97ff98000", + "0x48307fe67fff8000", + "0x40307ffd7fff7fd2", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800800c7fcd8001", + "0x4800800d7fcc7ffe", + "0x4000800e7fcb7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fd3", + "0x48507fcf7ffc8000", + "0x48507fce7ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800800f7fc78001", + "0x480080107fc67fff", + "0x400080117fc57ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080127fc17fff", + "0x480080137fc07ffd", + "0x400080147fbf7fd7", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fd77ffe7fff", + "0x40307ffc7ff77fd8", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080157fbe8001", + "0x480080167fbd7ffe", + "0x400080177fbc7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fc3", + "0x48507fc17ffc8000", + "0x48507fc07ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080187fb88001", + "0x480080197fb77fff", + "0x4000801a7fb67ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800801b7fb27fff", + "0x4800801c7fb17ffd", + "0x4000801d7fb07fc6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fc67ffe7fff", + "0x40307ffc7ff77fc7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x4800801e7faf8001", + "0x4800801f7fae7ffe", + "0x400080207fad7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fb4", + "0x48507fb17ffc8000", + "0x48507fb07ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080217fa98001", + "0x480080227fa87fff", + "0x400080237fa77ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080247fa37fff", + "0x480080257fa27ffd", + "0x400080267fa17fb3", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fb37ffe7fff", + "0x40307ffc7ff77fb4", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080277fa08001", + "0x480080287f9f7ffe", + "0x400080297f9e7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7fa4", + "0x48507fa37ffc8000", + "0x48507fa27ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x4800802a7f9a8001", + "0x4800802b7f997fff", + "0x4000802c7f987ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x4800802d7f947fff", + "0x4800802e7f937ffd", + "0x4000802f7f927fa6", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307fa67ffe7fff", + "0x40307ffc7ff77fa7", + "0x4824800180008002", + "0xffffffffffffffff0000000000000000", + "0x480080307f918001", + "0x480080317f907ffe", + "0x400080327f8f7ffe", + "0x484480017ffe8000", + "0x10000000000000000", + "0x40307ffc7fff7f95", + "0x48507f937ffc8000", + "0x48507f927ffc8000", + "0x4824800180018002", + "0xffffffffffffffff0000000000000000", + "0x480080337f8b8001", + "0x480080347f8a7fff", + "0x400080357f897ffd", + "0x484480017ffd8000", + "0x10000000000000000", + "0x40307ffd7fff7ffb", + "0x484480017ffd8000", + "0x10000000000000000", + "0x48307fff7ff98003", + "0x482480017fff8000", + "0xfffffffffffffffe0000000000000000", + "0x480080367f857fff", + "0x480080377f847ffd", + "0x400080387f837f93", + "0x404480017ffc7ffe", + "0x100000000000000000000000000000000", + "0x40307f937ffe7fff", + "0x40307ffc7ff77f94", + "0x48127f0f7fff8000", + "0x48127f0f7fff8000", + "0x482480017f818000", + "0x39", "0x480680017fff8000", "0x536563703235366b314d756c", - "0x400080007d497fff", - "0x400080017d497d48", - "0x400080027d497d47", - "0x400080037d497ffd", - "0x400080047d497ffe", - "0x480080067d498000", + "0x400080007d647fff", + "0x400080017d647d63", + "0x400080027d647d62", + "0x400080037d647ffc", + "0x400080047d647ffd", + "0x480080067d648000", "0x20680017fff7fff", "0x37", - "0x480080057d488000", - "0x480080077d478000", + "0x480080057d638000", + "0x480080077d628000", "0x480680017fff8000", "0x536563703235366b314d756c", - "0x400080087d457fff", - "0x400080097d457ffd", - "0x4000800a7d457d39", - "0x4000800b7d457ff7", - "0x4000800c7d457ff8", - "0x4800800e7d458000", + "0x400080087d607fff", + "0x400080097d607ffd", + "0x4000800a7d607d54", + "0x4000800b7d607f86", + "0x4000800c7d607f87", + "0x4800800e7d608000", "0x20680017fff7fff", "0x20", - "0x4800800d7d448000", - "0x4800800f7d438000", + "0x4800800d7d5f8000", + "0x4800800f7d5e8000", "0x480680017fff8000", "0x536563703235366b31416464", - "0x400080107d417fff", - "0x400080117d417ffd", - "0x400080127d417ffa", - "0x400080137d417ffe", - "0x480080157d418000", + "0x400080107d5c7fff", + "0x400080117d5c7ffd", + "0x400080127d5c7ffa", + "0x400080137d5c7ffe", + "0x480080157d5c8000", "0x20680017fff7fff", "0xc", - "0x48127ff17fff8000", - "0x480080147d3f8000", - "0x482480017d3e8000", + "0x48127ff57fff8000", + "0x480080147d5a8000", + "0x482480017d598000", "0x17", "0x480680017fff8000", "0x0", "0x480680017fff8000", "0x0", - "0x480080167d3b8000", + "0x480080167d568000", "0x208b7fff7fff7ffe", - "0x48127ff17fff8000", - "0x480080147d3f8000", - "0x482480017d3e8000", + "0x48127ff57fff8000", + "0x480080147d5a8000", + "0x482480017d598000", "0x18", "0x480680017fff8000", "0x1", - "0x480080167d3c8000", - "0x480080177d3b8000", + "0x480080167d578000", + "0x480080177d568000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x4", - "0x48127ff17fff8000", - "0x4800800d7d3f8000", - "0x482480017d3e8000", + "0x48127ff57fff8000", + "0x4800800d7d5a8000", + "0x482480017d598000", "0x11", "0x480680017fff8000", "0x1", - "0x4800800f7d3c8000", - "0x480080107d3b8000", + "0x4800800f7d578000", + "0x480080107d568000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", "0x8", - "0x48127ff17fff8000", - "0x480080057d3f8000", - "0x482480017d3e8000", + "0x48127ff57fff8000", + "0x480080057d5a8000", + "0x482480017d598000", "0x9", "0x480680017fff8000", "0x1", - "0x480080077d3c8000", - "0x480080087d3b8000", + "0x480080077d578000", + "0x480080087d568000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x106", + "0xf9", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x753235365f737562204f766572666c6f77", "0x400080007ffe7fff", - "0x48127ef47fff8000", - "0x48127d3e7fff8000", - "0x48127d3e7fff8000", + "0x48127f017fff8000", + "0x48127d597fff8000", + "0x48127d597fff8000", "0x480680017fff8000", "0x1", "0x48127ffa7fff8000", @@ -16430,7 +17331,7 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x28f", + "0x274", "0x4824800180008002", "0xffffffffffffffff0000000000000000", "0x480280077ff48001", @@ -16438,9 +17339,9 @@ "0x400280097ff47ffe", "0x484480017ffe8000", "0x10000000000000000", - "0x40307ffc7fff7d5f", - "0x48507d637ffc8000", - "0x48507d627ffc8000", + "0x40307ffc7fff7d7a", + "0x48507d7e7ffc8000", + "0x48507d7d7ffc8000", "0x4824800180018002", "0xffffffffffffffff0000000000000000", "0x4802800a7ff48001", @@ -16456,11 +17357,11 @@ "0xfffffffffffffffe0000000000000000", "0x4802800d7ff47fff", "0x4802800e7ff47ffd", - "0x4002800f7ff47d52", + "0x4002800f7ff47d6d", "0x404480017ffc7ffe", "0x100000000000000000000000000000000", - "0x40307d527ffe7fff", - "0x40307ffc7ff77d5c", + "0x40307d6d7ffe7fff", + "0x40307ffc7ff77d77", "0x4824800180008002", "0xffffffffffffffff0000000000000000", "0x480280107ff48001", @@ -16468,9 +17369,9 @@ "0x400280127ff47ffe", "0x484480017ffe8000", "0x10000000000000000", - "0x40307ffc7fff7d50", - "0x48507d527ffc8000", - "0x48507d517ffc8000", + "0x40307ffc7fff7d6b", + "0x48507d6d7ffc8000", + "0x48507d6c7ffc8000", "0x4824800180018002", "0xffffffffffffffff0000000000000000", "0x480280137ff48001", @@ -16490,7 +17391,7 @@ "0x404480017ffc7ffe", "0x100000000000000000000000000000000", "0x40287ff97ffe7fff", - "0x40307ffc7ff77d4c", + "0x40307ffc7ff77d67", "0x40780017fff7fff", "0x1", "0x480680017fff8000", @@ -16498,8 +17399,8 @@ "0x400080007ffe7fff", "0x482680017ff48000", "0x19", - "0x48127d3e7fff8000", - "0x48127d3e7fff8000", + "0x48127d597fff8000", + "0x48127d597fff8000", "0x480680017fff8000", "0x1", "0x48127ffa7fff8000", @@ -16507,26 +17408,26 @@ "0x1", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x2b9", + "0x29e", "0x40780017fff7fff", "0x1", "0x480680017fff8000", "0x4f7074696f6e3a3a756e77726170206661696c65642e", "0x400080007ffe7fff", - "0x48127d437fff8000", - "0x48127d437fff8000", + "0x48127d5e7fff8000", + "0x48127d5e7fff8000", "0x48127ffc7fff8000", "0x482480017ffb8000", "0x1", "0x10780017fff7fff", "0x9", "0x40780017fff7fff", - "0x2bf", - "0x480080067d3a8000", - "0x482480017d398000", + "0x2a4", + "0x480080067d558000", + "0x482480017d548000", "0xa", - "0x480080087d388000", - "0x480080097d378000", + "0x480080087d538000", + "0x480080097d528000", "0x480a7ff47fff8000", "0x48127ffb7fff8000", "0x48127ffb7fff8000", @@ -16536,10 +17437,10 @@ "0x48127ffa7fff8000", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x2c9", + "0x2ae", "0x480a7ff47fff8000", - "0x48127d347fff8000", - "0x48127d347fff8000", + "0x48127d4f7fff8000", + "0x48127d4f7fff8000", "0x480680017fff8000", "0x0", "0x480680017fff8000", @@ -16548,7 +17449,7 @@ "0x0", "0x208b7fff7fff7ffe", "0x40780017fff7fff", - "0x2cd", + "0x2b2", "0x480a7ff47fff8000", "0x480280057ff68000", "0x482680017ff68000", @@ -16589,7 +17490,7 @@ "0x402780017ffc8001", "0x9", "0x1104800180018000", - "0x354", + "0x23b", "0x40137ffa7fff8000", "0x20680017fff7ffb", "0x8e", @@ -16602,7 +17503,7 @@ "0x480680017fff8000", "0x0", "0x1104800180018000", - "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffef61", + "0x800000000000010ffffffffffffffffffffffffffffffffffffffffffffebdc", "0x20680017fff7ffd", "0x7b", "0x480680017fff8000", @@ -16761,19 +17662,19 @@ "0x2", "0x4824800180008002", "0xffffffffffffffff0000000000000000", - "0x480280007ff78001", - "0x480280017ff77ffe", - "0x400280027ff77ffe", + "0x480280007ff98001", + "0x480280017ff97ffe", + "0x400280027ff97ffe", "0x484480017ffe8000", "0x10000000000000000", - "0x40317ffc7fff7ff8", - "0x48487ffa7ffc8000", - "0x48487ffa7ffc8000", + "0x40317ffc7fff7ffa", + "0x48487ffc7ffc8000", + "0x48487ffc7ffc8000", "0x4824800180018002", "0xffffffffffffffff0000000000000000", - "0x480280037ff78001", - "0x480280047ff77fff", - "0x400280057ff77ffd", + "0x480280037ff98001", + "0x480280047ff97fff", + "0x400280057ff97ffd", "0x484480017ffd8000", "0x10000000000000000", "0x40307ffd7fff7ffb", @@ -16782,9 +17683,9 @@ "0x48307fff7ff98003", "0x482480017fff8000", "0xfffffffffffffffe0000000000000000", - "0x480280067ff77fff", - "0x480280077ff77ffd", - "0x400280087ff77ff0", + "0x480280067ff97fff", + "0x480280077ff97ffd", + "0x400280087ff97ff0", "0x404480017ffc7ffe", "0x100000000000000000000000000000000", "0x40307ff07ffe7fff", @@ -16793,19 +17694,19 @@ "0x2", "0x4824800180008002", "0xffffffffffffffff0000000000000000", - "0x480280097ff78001", - "0x4802800a7ff77ffe", - "0x4002800b7ff77ffe", + "0x480280097ff98001", + "0x4802800a7ff97ffe", + "0x4002800b7ff97ffe", "0x484480017ffe8000", "0x10000000000000000", - "0x40317ffc7fff7ff8", - "0x48487ffb7ffc8000", - "0x48487ffb7ffc8000", + "0x40317ffc7fff7ffa", + "0x48487ffd7ffc8000", + "0x48487ffd7ffc8000", "0x4824800180018002", "0xffffffffffffffff0000000000000000", - "0x4802800c7ff78001", - "0x4802800d7ff77fff", - "0x4002800e7ff77ffd", + "0x4802800c7ff98001", + "0x4802800d7ff97fff", + "0x4002800e7ff97ffd", "0x484480017ffd8000", "0x10000000000000000", "0x40307ffd7fff7ffb", @@ -16814,9 +17715,9 @@ "0x48307fff7ff98003", "0x482480017fff8000", "0xfffffffffffffffe0000000000000000", - "0x4802800f7ff77fff", - "0x480280107ff77ffd", - "0x400280117ff77ff0", + "0x4802800f7ff97fff", + "0x480280107ff97ffd", + "0x400280117ff97ff0", "0x404480017ffc7ffe", "0x100000000000000000000000000000000", "0x40307ff07ffe7fff", @@ -16826,20 +17727,20 @@ "0x7", "0x4824800180007fff", "0x100000000000000000000000000000000", - "0x400280127ff77fff", + "0x400280127ff97fff", "0x10780017fff7fff", "0xc", - "0x400280127ff77fff", + "0x400280127ff97fff", "0x40780017fff7fff", "0x1", - "0x482680017ff78000", + "0x482680017ff98000", "0x13", "0x48127ffd7fff8000", "0x480680017fff8000", "0x0", "0x10780017fff7fff", "0x7", - "0x482680017ff78000", + "0x482680017ff98000", "0x13", "0x48127ffe7fff8000", "0x480680017fff8000", @@ -16853,9 +17754,9 @@ "0x400080027ff87ffe", "0x484480017ffe8000", "0x10000000000000000", - "0x40317ffc7fff7ff9", - "0x48487ffa7ffc8000", - "0x48487ffa7ffc8000", + "0x40317ffc7fff7ffb", + "0x48487ffc7ffc8000", + "0x48487ffc7ffc8000", "0x4824800180018002", "0xffffffffffffffff0000000000000000", "0x480080037ff48001", @@ -16931,9 +17832,9 @@ "0x400080027ff87ffe", "0x484480017ffe8000", "0x10000000000000000", - "0x40317ffc7fff7ff9", - "0x48487ffb7ffc8000", - "0x48487ffb7ffc8000", + "0x40317ffc7fff7ffb", + "0x48487ffd7ffc8000", + "0x48487ffd7ffc8000", "0x4824800180018002", "0xffffffffffffffff0000000000000000", "0x480080037ff48001", @@ -16954,360 +17855,79 @@ "0x100000000000000000000000000000000", "0x40307ff07ffe7fff", "0x40307ffc7ff77fef", - "0x48307fee7fef8001", + "0x48307ff07fed8001", "0xa0680017fff7fff", "0x7", "0x4824800180007fff", "0x100000000000000000000000000000000", "0x400080097fe97fff", "0x10780017fff7fff", - "0xa", + "0xc", "0x400080097fea7fff", "0x40780017fff7fff", "0x1", "0x482480017fe98000", "0xa", "0x48127ffd7fff8000", - "0x10780017fff7fff", - "0x5", - "0x482480017fe98000", - "0xa", - "0x48127ffe7fff8000", - "0x48307feb7fe88001", - "0xa0680017fff7fff", - "0x7", - "0x4824800180007fff", - "0x100000000000000000000000000000000", - "0x400080007ffb7fff", - "0x10780017fff7fff", - "0xc", - "0x400080007ffc7fff", - "0x40780017fff7fff", - "0x1", - "0x482480017ffb8000", - "0x1", - "0x48127ffd7fff8000", "0x480680017fff8000", "0x0", "0x10780017fff7fff", "0x7", - "0x482480017ffb8000", - "0x1", - "0x48127ffe7fff8000", - "0x480680017fff8000", - "0x1", - "0x48307fff7ff98001", - "0xa0680017fff7fff", - "0x7", - "0x4824800180007fff", - "0x100000000000000000000000000000000", - "0x400080007ffa7fff", - "0x10780017fff7fff", + "0x482480017fe98000", "0xa", - "0x400080007ffb7fff", - "0x40780017fff7fff", - "0x1", - "0x482480017ffa8000", - "0x1", - "0x48127ffd7fff8000", - "0x10780017fff7fff", - "0x5", - "0x482480017ffa8000", - "0x1", "0x48127ffe7fff8000", - "0x48307fd87fc18001", - "0xa0680017fff7fff", - "0x7", - "0x4824800180007fff", - "0x100000000000000000000000000000000", - "0x400080007ffb7fff", - "0x10780017fff7fff", - "0xa", - "0x400080007ffc7fff", - "0x40780017fff7fff", - "0x1", - "0x482480017ffb8000", - "0x1", - "0x48127ffd7fff8000", - "0x10780017fff7fff", - "0x5", - "0x482480017ffb8000", + "0x480680017fff8000", "0x1", - "0x48127ffe7fff8000", - "0x48307fff7ff48001", + "0x48307fe27fcb8000", + "0x48307fff7ffd8001", "0xa0680017fff7fff", "0x7", "0x4824800180007fff", "0x100000000000000000000000000000000", - "0x400080007ffb7fff", + "0x400080007ff97fff", "0x10780017fff7fff", "0xc", - "0x400080007ffc7fff", + "0x400080007ffa7fff", "0x40780017fff7fff", "0x1", - "0x482480017ffb8000", + "0x482480017ff98000", "0x1", "0x48127ffd7fff8000", "0x480680017fff8000", "0x0", "0x10780017fff7fff", "0x7", - "0x482480017ffb8000", + "0x482480017ff98000", "0x1", "0x48127ffe7fff8000", "0x480680017fff8000", "0x1", - "0x48307fff7ff48001", + "0x48307ff87fe18000", + "0x48307ffe7fff8000", + "0x48307fff7fe08001", "0xa0680017fff7fff", "0x7", "0x4824800180007fff", "0x100000000000000000000000000000000", - "0x400080007ffa7fff", + "0x400080007ff87fff", "0x10780017fff7fff", "0xa", - "0x400080007ffb7fff", + "0x400080007ff97fff", "0x40780017fff7fff", "0x1", - "0x482480017ffa8000", + "0x482480017ff88000", "0x1", "0x48127ffd7fff8000", "0x10780017fff7fff", "0x5", - "0x482480017ffa8000", + "0x482480017ff88000", "0x1", "0x48127ffe7fff8000", - "0x48127f8b7fff8000", - "0x48127fc67fff8000", - "0x48127ff77fff8000", - "0x48127ffc7fff8000", - "0x480080007ffa8000", - "0x480080017ff98000", - "0x480080027ff88000", - "0x480080037ff78000", - "0x480080047ff68000", - "0x480080057ff58000", - "0x48317fff80007ffd", - "0x40780017fff7fff", - "0xc", - "0x20680017fff7ff3", - "0x8", - "0x40317ff17ff47ffc", - "0x402480017ff57ff4", - "0x1", - "0x400080067fe77ff5", - "0x10780017fff7fff", - "0x3", - "0x400080067fe77ff3", - "0x48307ff17ff68000", - "0x48307fe880007fff", - "0x4844800180007fff", - "0x100000000000000000000000000000000", - "0x40507fff7fff7fff", - "0x48307ff47fff8000", - "0x48307ff47fff8000", - "0x48307ff57fff8000", - "0x48307fec7fff8000", - "0x48307fe380007fff", - "0x4844800180007fff", - "0x100000000000000000000000000000000", - "0x400080077fde7fff", - "0x482480017fff8000", - "0xfffffffffffffffffffffffffffffffc", - "0x400080087fdd7fff", - "0x48307fef7ffe8000", - "0x48307ff07fff8000", - "0x48307ff07fff8000", - "0x48307ff17fff8000", - "0x48307fdd80007fff", - "0x4844800180007fff", - "0x100000000000000000000000000000000", - "0x400080097fd77fff", - "0x482480017fff8000", - "0xfffffffffffffffffffffffffffffffc", - "0x4000800a7fd67fff", - "0xa0680017fff7fdf", - "0xc", - "0xa0680017fff8001", - "0x6", - "0x480a7ffd7fff7ffe", - "0x40127fdb7fff7ffe", - "0x10780017fff7fff", - "0x10", - "0x48127fdc7fff7ffe", - "0x400a7ffd7fff7ffe", - "0x10780017fff7fff", - "0xc", - "0x480780017fff7ffd", - "0x0", - "0xa0680017fff8000", - "0x6", - "0x400a7ffc7fff7ffd", - "0x40127fdc7fff7ffe", - "0x10780017fff7fff", - "0x4", - "0x40127fdc7fff7ffd", - "0x400a7ffc7fff7ffe", - "0x482480017ffd8000", - "0xffffffffffffffff0000000000000000", - "0x4000800b7fd27fff", - "0x48507ffd7ffc8000", - "0x48307fe97ff98000", - "0x48307fe67fff8000", - "0x40307ffd7fff7fd4", - "0x4824800180008002", - "0xffffffffffffffff0000000000000000", - "0x4800800c7fce8001", - "0x4800800d7fcd7ffe", - "0x4000800e7fcc7ffe", - "0x484480017ffe8000", - "0x10000000000000000", - "0x40307ffc7fff7fd3", - "0x48487ffc7ffc8000", - "0x48487ffc7ffc8000", - "0x4824800180018002", - "0xffffffffffffffff0000000000000000", - "0x4800800f7fc88001", - "0x480080107fc77fff", - "0x400080117fc67ffd", - "0x484480017ffd8000", - "0x10000000000000000", - "0x40307ffd7fff7ffb", - "0x484480017ffd8000", - "0x10000000000000000", - "0x48307fff7ff98003", - "0x482480017fff8000", - "0xfffffffffffffffe0000000000000000", - "0x480080127fc27fff", - "0x480080137fc17ffd", - "0x400080147fc07fd7", - "0x404480017ffc7ffe", - "0x100000000000000000000000000000000", - "0x40307fd77ffe7fff", - "0x40307ffc7ff77fd8", - "0x4824800180008002", - "0xffffffffffffffff0000000000000000", - "0x480080157fbf8001", - "0x480080167fbe7ffe", - "0x400080177fbd7ffe", - "0x484480017ffe8000", - "0x10000000000000000", - "0x40307ffc7fff7fc3", - "0x48487ffd7ffc8000", - "0x48487ffd7ffc8000", - "0x4824800180018002", - "0xffffffffffffffff0000000000000000", - "0x480080187fb98001", - "0x480080197fb87fff", - "0x4000801a7fb77ffd", - "0x484480017ffd8000", - "0x10000000000000000", - "0x40307ffd7fff7ffb", - "0x484480017ffd8000", - "0x10000000000000000", - "0x48307fff7ff98003", - "0x482480017fff8000", - "0xfffffffffffffffe0000000000000000", - "0x4800801b7fb37fff", - "0x4800801c7fb27ffd", - "0x4000801d7fb17fc6", - "0x404480017ffc7ffe", - "0x100000000000000000000000000000000", - "0x40307fc67ffe7fff", - "0x40307ffc7ff77fc7", - "0x4824800180008002", - "0xffffffffffffffff0000000000000000", - "0x4800801e7fb08001", - "0x4800801f7faf7ffe", - "0x400080207fae7ffe", - "0x484480017ffe8000", - "0x10000000000000000", - "0x40307ffc7fff7fb4", - "0x48487ffc7ffc8000", - "0x48487ffc7ffc8000", - "0x4824800180018002", - "0xffffffffffffffff0000000000000000", - "0x480080217faa8001", - "0x480080227fa97fff", - "0x400080237fa87ffd", - "0x484480017ffd8000", - "0x10000000000000000", - "0x40307ffd7fff7ffb", - "0x484480017ffd8000", - "0x10000000000000000", - "0x48307fff7ff98003", - "0x482480017fff8000", - "0xfffffffffffffffe0000000000000000", - "0x480080247fa47fff", - "0x480080257fa37ffd", - "0x400080267fa27fb3", - "0x404480017ffc7ffe", - "0x100000000000000000000000000000000", - "0x40307fb37ffe7fff", - "0x40307ffc7ff77fb4", - "0x4824800180008002", - "0xffffffffffffffff0000000000000000", - "0x480080277fa18001", - "0x480080287fa07ffe", - "0x400080297f9f7ffe", - "0x484480017ffe8000", - "0x10000000000000000", - "0x40307ffc7fff7fa4", - "0x48487ffd7ffc8000", - "0x48487ffd7ffc8000", - "0x4824800180018002", - "0xffffffffffffffff0000000000000000", - "0x4800802a7f9b8001", - "0x4800802b7f9a7fff", - "0x4000802c7f997ffd", - "0x484480017ffd8000", - "0x10000000000000000", - "0x40307ffd7fff7ffb", - "0x484480017ffd8000", - "0x10000000000000000", - "0x48307fff7ff98003", - "0x482480017fff8000", - "0xfffffffffffffffe0000000000000000", - "0x4800802d7f957fff", - "0x4800802e7f947ffd", - "0x4000802f7f937fa6", - "0x404480017ffc7ffe", - "0x100000000000000000000000000000000", - "0x40307fa67ffe7fff", - "0x40307ffc7ff77fa7", - "0x4824800180008002", - "0xffffffffffffffff0000000000000000", - "0x480080307f928001", - "0x480080317f917ffe", - "0x400080327f907ffe", - "0x484480017ffe8000", - "0x10000000000000000", - "0x40307ffc7fff7f95", - "0x48487ffc7ffc8000", - "0x48487ffc7ffc8000", - "0x4824800180018002", - "0xffffffffffffffff0000000000000000", - "0x480080337f8c8001", - "0x480080347f8b7fff", - "0x400080357f8a7ffd", - "0x484480017ffd8000", - "0x10000000000000000", - "0x40307ffd7fff7ffb", - "0x484480017ffd8000", - "0x10000000000000000", - "0x48307fff7ff98003", - "0x482480017fff8000", - "0xfffffffffffffffe0000000000000000", - "0x480080367f867fff", - "0x480080377f857ffd", - "0x400080387f847f93", - "0x404480017ffc7ffe", - "0x100000000000000000000000000000000", - "0x40307f937ffe7fff", - "0x40307ffc7ff77f94", - "0x482480017f848000", - "0x39", - "0x48127f8d7fff8000", - "0x48127f8d7fff8000", + "0x48127ffe7fff8000", + "0x48127f967fff8000", + "0x48127fd17fff8000", + "0x48127ff47fff8000", + "0x48127ffb7fff8000", "0x208b7fff7fff7ffe", "0xa0680017fff8000", "0x7", @@ -17869,7 +18489,7 @@ 258, 97, 220, - 791, + 1242, 31, 1136, 66, @@ -17877,9 +18497,9 @@ 157, 83, 239, - 706, + 1156, 199, - 552, + 271, 131, 104, 232, @@ -20651,7 +21271,7 @@ { "TestLessThanOrEqual": { "lhs": { - "Immediate": "0x382d4" + "Immediate": "0x371b8" }, "rhs": { "Deref": { @@ -28422,7 +29042,1275 @@ ] ], [ - 13706, + 13679, + [ + { + "Uint512DivModByUint256": { + "dividend0": { + "Deref": { + "register": "AP", + "offset": -6 + } + }, + "dividend1": { + "Deref": { + "register": "AP", + "offset": -5 + } + }, + "dividend2": { + "Deref": { + "register": "AP", + "offset": -4 + } + }, + "dividend3": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "quotient2": { + "register": "AP", + "offset": 2 + }, + "quotient3": { + "register": "AP", + "offset": 3 + }, + "remainder0": { + "register": "AP", + "offset": 4 + }, + "remainder1": { + "register": "AP", + "offset": 5 + } + } + } + ] + ], + [ + 13697, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { + "register": "AP", + "offset": -9 + }, + "low": { + "register": "AP", + "offset": -10 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { + "register": "AP", + "offset": -7 + }, + "low": { + "register": "AP", + "offset": -8 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -20 + } + }, + "high": { + "register": "AP", + "offset": -5 + }, + "low": { + "register": "AP", + "offset": -6 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -20 + } + }, + "high": { + "register": "AP", + "offset": -3 + }, + "low": { + "register": "AP", + "offset": -4 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -17 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { + "register": "AP", + "offset": -1 + }, + "low": { + "register": "AP", + "offset": -2 + } + } + } + ] + ], + [ + 13726, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -38 + } + }, + "dst": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 13738, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -40 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 13753, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -41 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 13763, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 13774, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -38 + } + } + } + ] + ], + [ + 13783, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -57 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 13793, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 13804, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -55 + } + } + } + ] + ], + [ + 13813, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -72 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 13823, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 13834, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -74 + } + } + } + ] + ], + [ + 13843, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -88 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 13853, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 13864, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -87 + } + } + } + ] + ], + [ + 13873, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -103 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 13883, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 13894, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -106 + } + } + } + ] + ], + [ + 13915, + [ + { + "Uint512DivModByUint256": { + "dividend0": { + "Deref": { + "register": "AP", + "offset": -6 + } + }, + "dividend1": { + "Deref": { + "register": "AP", + "offset": -5 + } + }, + "dividend2": { + "Deref": { + "register": "AP", + "offset": -4 + } + }, + "dividend3": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "quotient2": { + "register": "AP", + "offset": 2 + }, + "quotient3": { + "register": "AP", + "offset": 3 + }, + "remainder0": { + "register": "AP", + "offset": 4 + }, + "remainder1": { + "register": "AP", + "offset": 5 + } + } + } + ] + ], + [ + 13933, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { + "register": "AP", + "offset": -9 + }, + "low": { + "register": "AP", + "offset": -10 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { + "register": "AP", + "offset": -7 + }, + "low": { + "register": "AP", + "offset": -8 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -20 + } + }, + "high": { + "register": "AP", + "offset": -5 + }, + "low": { + "register": "AP", + "offset": -6 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -20 + } + }, + "high": { + "register": "AP", + "offset": -3 + }, + "low": { + "register": "AP", + "offset": -4 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -17 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { + "register": "AP", + "offset": -1 + }, + "low": { + "register": "AP", + "offset": -2 + } + } + } + ] + ], + [ + 13962, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -38 + } + }, + "dst": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 13974, + [ + { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -35 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -40 + } + }, + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 13989, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -41 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 13999, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 14010, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -38 + } + } + } + ] + ], + [ + 14019, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -57 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 14029, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 14040, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -55 + } + } + } + ] + ], + [ + 14049, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -72 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 14059, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 14070, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -74 + } + } + } + ] + ], + [ + 14079, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -88 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 14089, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 14100, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -87 + } + } + } + ] + ], + [ + 14109, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -103 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 14119, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 14130, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -106 + } + } + } + ] + ], + [ + 14157, [ { "SystemCall": { @@ -28437,7 +30325,7 @@ ] ], [ - 13723, + 14174, [ { "SystemCall": { @@ -28452,7 +30340,7 @@ ] ], [ - 13735, + 14186, [ { "SystemCall": { @@ -28473,7 +30361,7 @@ ] ], [ - 13746, + 14197, [ { "SystemCall": { @@ -28494,7 +30382,7 @@ ] ], [ - 13756, + 14207, [ { "SystemCall": { @@ -28515,7 +30403,7 @@ ] ], [ - 13841, + 14292, [ { "AllocSegment": { @@ -28528,14 +30416,14 @@ ] ], [ - 13870, + 14321, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -669 + "offset": -642 } }, "rhs": { @@ -28554,7 +30442,7 @@ ] ], [ - 13880, + 14331, [ { "DivMod": { @@ -28580,7 +30468,7 @@ ] ], [ - 13891, + 14342, [ { "DivMod": { @@ -28599,21 +30487,21 @@ }, "remainder": { "register": "AP", - "offset": -683 + "offset": -656 } } } ] ], [ - 13900, + 14351, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -684 + "offset": -657 } }, "rhs": { @@ -28632,7 +30520,7 @@ ] ], [ - 13910, + 14361, [ { "DivMod": { @@ -28658,7 +30546,7 @@ ] ], [ - 13921, + 14372, [ { "DivMod": { @@ -28684,7 +30572,7 @@ ] ], [ - 13930, + 14381, [ { "AllocSegment": { @@ -28697,7 +30585,7 @@ ] ], [ - 13999, + 14450, [ { "TestLessThan": { @@ -28728,7 +30616,7 @@ ] ], [ - 14014, + 14465, [ { "TestLessThan": { @@ -28750,7 +30638,7 @@ ] ], [ - 14033, + 14484, [ { "TestLessThan": { @@ -28772,7 +30660,7 @@ ] ], [ - 14052, + 14503, [ { "TestLessThan": { @@ -28794,7 +30682,7 @@ ] ], [ - 14062, + 14513, [ { "TestLessThan": { @@ -28816,7 +30704,7 @@ ] ], [ - 14064, + 14515, [ { "DivMod": { @@ -28842,7 +30730,7 @@ ] ], [ - 14101, + 14552, [ { "TestLessThan": { @@ -28864,7 +30752,7 @@ ] ], [ - 14120, + 14571, [ { "AllocSegment": { @@ -28877,7 +30765,7 @@ ] ], [ - 14131, + 14582, [ { "DivMod": { @@ -28906,7 +30794,7 @@ ] ], [ - 14137, + 14588, [ { "TestLessThan": { @@ -28928,7 +30816,7 @@ ] ], [ - 14151, + 14602, [ { "TestLessThan": { @@ -28950,7 +30838,7 @@ ] ], [ - 14165, + 14616, [ { "TestLessThan": { @@ -28972,7 +30860,7 @@ ] ], [ - 14176, + 14627, [ { "TestLessThan": { @@ -28994,7 +30882,7 @@ ] ], [ - 14205, + 14656, [ { "AllocSegment": { @@ -29007,7 +30895,7 @@ ] ], [ - 14230, + 14681, [ { "TestLessThan": { @@ -29029,7 +30917,7 @@ ] ], [ - 14234, + 14685, [ { "LinearSplit": { @@ -29058,7 +30946,7 @@ ] ], [ - 14244, + 14695, [ { "LinearSplit": { @@ -29087,7 +30975,7 @@ ] ], [ - 14264, + 14715, [ { "AllocSegment": { @@ -29100,7 +30988,7 @@ ] ], [ - 14285, + 14736, [ { "AllocSegment": { @@ -29113,7 +31001,7 @@ ] ], [ - 14306, + 14757, [ { "AllocSegment": { @@ -29126,7 +31014,7 @@ ] ], [ - 14326, + 14777, [ { "TestLessThan": { @@ -29148,7 +31036,7 @@ ] ], [ - 14328, + 14779, [ { "DivMod": { @@ -29174,7 +31062,7 @@ ] ], [ - 14372, + 14823, [ { "AllocSegment": { @@ -29187,7 +31075,7 @@ ] ], [ - 14383, + 14834, [ { "DivMod": { @@ -29216,7 +31104,7 @@ ] ], [ - 14389, + 14840, [ { "TestLessThan": { @@ -29238,7 +31126,7 @@ ] ], [ - 14403, + 14854, [ { "TestLessThan": { @@ -29260,7 +31148,7 @@ ] ], [ - 14421, + 14872, [ { "TestLessThan": { @@ -29282,7 +31170,7 @@ ] ], [ - 14434, + 14885, [ { "TestLessThan": { @@ -29304,7 +31192,7 @@ ] ], [ - 14445, + 14896, [ { "TestLessThan": { @@ -29326,7 +31214,7 @@ ] ], [ - 14474, + 14925, [ { "AllocSegment": { @@ -29339,7 +31227,7 @@ ] ], [ - 14499, + 14950, [ { "TestLessThan": { @@ -29361,7 +31249,7 @@ ] ], [ - 14503, + 14954, [ { "LinearSplit": { @@ -29390,7 +31278,7 @@ ] ], [ - 14513, + 14964, [ { "LinearSplit": { @@ -29419,7 +31307,7 @@ ] ], [ - 14533, + 14984, [ { "AllocSegment": { @@ -29432,7 +31320,7 @@ ] ], [ - 14554, + 15005, [ { "AllocSegment": { @@ -29445,7 +31333,7 @@ ] ], [ - 14575, + 15026, [ { "AllocSegment": { @@ -29458,7 +31346,7 @@ ] ], [ - 14604, + 15055, [ { "TestLessThan": { @@ -29480,7 +31368,7 @@ ] ], [ - 14606, + 15057, [ { "DivMod": { @@ -29506,7 +31394,7 @@ ] ], [ - 14643, + 15094, [ { "TestLessThan": { @@ -29528,7 +31416,7 @@ ] ], [ - 14654, + 15105, [ { "TestLessThan": { @@ -29550,7 +31438,7 @@ ] ], [ - 14665, + 15116, [ { "TestLessThan": { @@ -29572,7 +31460,7 @@ ] ], [ - 14694, + 15145, [ { "AllocSegment": { @@ -29585,7 +31473,7 @@ ] ], [ - 14719, + 15170, [ { "TestLessThan": { @@ -29607,7 +31495,7 @@ ] ], [ - 14723, + 15174, [ { "LinearSplit": { @@ -29636,7 +31524,7 @@ ] ], [ - 14733, + 15184, [ { "LinearSplit": { @@ -29665,7 +31553,7 @@ ] ], [ - 14759, + 15210, [ { "AllocSegment": { @@ -29678,7 +31566,7 @@ ] ], [ - 14780, + 15231, [ { "AllocSegment": { @@ -29691,7 +31579,7 @@ ] ], [ - 14802, + 15253, [ { "AllocSegment": { @@ -29704,7 +31592,7 @@ ] ], [ - 14824, + 15275, [ { "TestLessThan": { @@ -29726,7 +31614,7 @@ ] ], [ - 14835, + 15286, [ { "TestLessThan": { @@ -29748,7 +31636,7 @@ ] ], [ - 14864, + 15315, [ { "AllocSegment": { @@ -29761,7 +31649,7 @@ ] ], [ - 14889, + 15340, [ { "TestLessThan": { @@ -29783,7 +31671,7 @@ ] ], [ - 14893, + 15344, [ { "LinearSplit": { @@ -29812,7 +31700,7 @@ ] ], [ - 14903, + 15354, [ { "LinearSplit": { @@ -29841,7 +31729,7 @@ ] ], [ - 14926, + 15377, [ { "AllocSegment": { @@ -29854,7 +31742,7 @@ ] ], [ - 14971, + 15422, [ { "TestLessThan": { @@ -29876,7 +31764,7 @@ ] ], [ - 14982, + 15433, [ { "TestLessThan": { @@ -29898,7 +31786,7 @@ ] ], [ - 15011, + 15462, [ { "AllocSegment": { @@ -29911,7 +31799,7 @@ ] ], [ - 15034, + 15485, [ { "TestLessThan": { @@ -29942,7 +31830,7 @@ ] ], [ - 15058, + 15509, [ { "AllocSegment": { @@ -29955,7 +31843,7 @@ ] ], [ - 15102, + 15553, [ { "AllocSegment": { @@ -29968,7 +31856,7 @@ ] ], [ - 15129, + 15580, [ { "TestLessThanOrEqual": { @@ -29990,7 +31878,7 @@ ] ], [ - 15181, + 15632, [ { "AllocSegment": { @@ -30003,7 +31891,7 @@ ] ], [ - 15238, + 15689, [ { "TestLessThan": { @@ -30031,7 +31919,7 @@ ] ], [ - 15242, + 15693, [ { "LinearSplit": { @@ -30060,7 +31948,7 @@ ] ], [ - 15284, + 15735, [ { "TestLessThan": { @@ -30082,7 +31970,7 @@ ] ], [ - 15286, + 15737, [ { "DivMod": { @@ -30108,7 +31996,7 @@ ] ], [ - 15373, + 15824, [ { "DivMod": { @@ -30137,7 +32025,7 @@ ] ], [ - 15379, + 15830, [ { "TestLessThan": { @@ -30159,7 +32047,7 @@ ] ], [ - 15390, + 15841, [ { "TestLessThan": { @@ -30181,7 +32069,7 @@ ] ], [ - 15400, + 15851, [ { "TestLessThan": { @@ -30203,7 +32091,7 @@ ] ], [ - 15414, + 15865, [ { "DivMod": { @@ -30232,7 +32120,7 @@ ] ], [ - 15420, + 15871, [ { "TestLessThan": { @@ -30254,7 +32142,7 @@ ] ], [ - 15434, + 15885, [ { "TestLessThan": { @@ -30276,7 +32164,7 @@ ] ], [ - 15444, + 15895, [ { "TestLessThan": { @@ -30298,7 +32186,7 @@ ] ], [ - 15466, + 15917, [ { "AllocSegment": { @@ -30311,7 +32199,7 @@ ] ], [ - 15480, + 15931, [ { "AllocSegment": { @@ -30324,7 +32212,7 @@ ] ], [ - 15498, + 15949, [ { "AllocSegment": { @@ -30337,7 +32225,7 @@ ] ], [ - 15512, + 15963, [ { "AllocSegment": { @@ -30350,7 +32238,7 @@ ] ], [ - 15528, + 15979, [ { "TestLessThanOrEqual": { @@ -30372,7 +32260,7 @@ ] ], [ - 15555, + 16006, [ { "TestLessThan": { @@ -30394,7 +32282,7 @@ ] ], [ - 15572, + 16023, [ { "AllocSegment": { @@ -30407,7 +32295,7 @@ ] ], [ - 15597, + 16048, [ { "AllocSegment": { @@ -30420,7 +32308,7 @@ ] ], [ - 15857, + 16308, [ { "SystemCall": { @@ -30435,7 +32323,7 @@ ] ], [ - 15883, + 16334, [ { "SystemCall": { @@ -30450,7 +32338,7 @@ ] ], [ - 15897, + 16348, [ { "U256InvModN": { @@ -30507,7 +32395,7 @@ ] ], [ - 15915, + 16366, [ { "WideMul128": { @@ -30704,7 +32592,7 @@ ] ], [ - 15968, + 16419, [ { "WideMul128": { @@ -30757,7 +32645,7 @@ ] ], [ - 15972, + 16423, [ { "TestLessThan": { @@ -30779,7 +32667,7 @@ ] ], [ - 15986, + 16437, [ { "TestLessThan": { @@ -30801,7 +32689,7 @@ ] ], [ - 15999, + 16450, [ { "DivMod": { @@ -30827,7 +32715,319 @@ ] ], [ - 16009, + 16460, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 16471, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -35 + } + } + } + ] + ], + [ + 16480, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -62 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 16490, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 16501, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -52 + } + } + } + ] + ], + [ + 16510, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -78 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 16520, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 16531, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -69 + } + } + } + ] + ], + [ + 16540, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -93 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 16550, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 + } + } + } + ] + ], + [ + 16561, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -86 + } + } + } + ] + ], + [ + 16570, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -103 + } + }, + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 16580, [ { "DivMod": { @@ -30853,7 +33053,7 @@ ] ], [ - 16020, + 16591, [ { "DivMod": { @@ -30872,21 +33072,21 @@ }, "remainder": { "register": "AP", - "offset": -35 + "offset": -103 } } } ] ], [ - 16029, + 16600, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -62 + "offset": -118 } }, "rhs": { @@ -30905,7 +33105,7 @@ ] ], [ - 16039, + 16610, [ { "DivMod": { @@ -30931,7 +33131,7 @@ ] ], [ - 16050, + 16621, [ { "DivMod": { @@ -30950,21 +33150,21 @@ }, "remainder": { "register": "AP", - "offset": -52 + "offset": -120 } } } ] ], [ - 16059, + 16630, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -78 + "offset": -134 } }, "rhs": { @@ -30983,7 +33183,7 @@ ] ], [ - 16069, + 16640, [ { "DivMod": { @@ -31009,7 +33209,7 @@ ] ], [ - 16080, + 16651, [ { "DivMod": { @@ -31028,21 +33228,21 @@ }, "remainder": { "register": "AP", - "offset": -69 + "offset": -137 } } } ] ], [ - 16089, + 16660, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -93 + "offset": -149 } }, "rhs": { @@ -31061,7 +33261,7 @@ ] ], [ - 16099, + 16670, [ { "DivMod": { @@ -31087,7 +33287,7 @@ ] ], [ - 16110, + 16681, [ { "DivMod": { @@ -31106,135 +33306,224 @@ }, "remainder": { "register": "AP", - "offset": -86 + "offset": -154 } } } ] ], [ - 16119, + 16702, [ { - "DivMod": { - "lhs": { + "Uint512DivModByUint256": { + "dividend0": { "Deref": { "register": "AP", - "offset": -103 + "offset": -6 } }, - "rhs": { - "Immediate": "0x10000000000000000" + "dividend1": { + "Deref": { + "register": "AP", + "offset": -5 + } }, - "quotient": { + "dividend2": { + "Deref": { + "register": "AP", + "offset": -4 + } + }, + "dividend3": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "quotient0": { + "register": "AP", + "offset": 0 + }, + "quotient1": { "register": "AP", "offset": 1 }, - "remainder": { + "quotient2": { "register": "AP", - "offset": 0 + "offset": 2 + }, + "quotient3": { + "register": "AP", + "offset": 3 + }, + "remainder0": { + "register": "AP", + "offset": 4 + }, + "remainder1": { + "register": "AP", + "offset": 5 } } } ] ], [ - 16129, + 16720, [ { - "DivMod": { + "WideMul128": { "lhs": { "Deref": { "register": "AP", - "offset": -1 + "offset": -19 } }, "rhs": { - "Immediate": "0x10000000000000000" + "Deref": { + "register": "AP", + "offset": -21 + } }, - "quotient": { + "high": { "register": "AP", - "offset": 0 + "offset": -9 }, - "remainder": { + "low": { "register": "AP", - "offset": 1 + "offset": -10 } } - } - ] - ], - [ - 16140, - [ + }, { - "DivMod": { + "WideMul128": { "lhs": { "Deref": { "register": "AP", - "offset": 2 + "offset": -18 } }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "Deref": { + "register": "AP", + "offset": -21 + } }, - "quotient": { + "high": { "register": "AP", - "offset": -1 + "offset": -7 }, - "remainder": { + "low": { "register": "AP", - "offset": -103 + "offset": -8 } } - } - ] - ], - [ - 16149, - [ + }, { - "DivMod": { + "WideMul128": { "lhs": { "Deref": { "register": "AP", - "offset": -118 + "offset": -19 } }, "rhs": { - "Immediate": "0x10000000000000000" + "Deref": { + "register": "AP", + "offset": -20 + } }, - "quotient": { + "high": { "register": "AP", - "offset": 1 + "offset": -5 }, - "remainder": { + "low": { "register": "AP", - "offset": 0 + "offset": -6 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -20 + } + }, + "high": { + "register": "AP", + "offset": -3 + }, + "low": { + "register": "AP", + "offset": -4 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -17 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { + "register": "AP", + "offset": -1 + }, + "low": { + "register": "AP", + "offset": -2 } } } ] ], [ - 16159, + 16749, [ { - "DivMod": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": -1 + "offset": -35 } }, "rhs": { - "Immediate": "0x10000000000000000" - }, - "quotient": { - "register": "AP", - "offset": 0 + "Deref": { + "register": "AP", + "offset": -38 + } }, - "remainder": { + "dst": { "register": "AP", "offset": 1 } @@ -31243,40 +33532,39 @@ ] ], [ - 16170, + 16761, [ { - "DivMod": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": 2 + "offset": -35 } }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, - "quotient": { - "register": "AP", - "offset": -1 + "Deref": { + "register": "AP", + "offset": -40 + } }, - "remainder": { + "dst": { "register": "AP", - "offset": -120 + "offset": 0 } } } ] ], [ - 16179, + 16776, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -134 + "offset": -41 } }, "rhs": { @@ -31295,7 +33583,7 @@ ] ], [ - 16189, + 16786, [ { "DivMod": { @@ -31321,7 +33609,7 @@ ] ], [ - 16200, + 16797, [ { "DivMod": { @@ -31340,21 +33628,21 @@ }, "remainder": { "register": "AP", - "offset": -137 + "offset": -38 } } } ] ], [ - 16209, + 16806, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -149 + "offset": -57 } }, "rhs": { @@ -31373,7 +33661,7 @@ ] ], [ - 16219, + 16816, [ { "DivMod": { @@ -31399,7 +33687,7 @@ ] ], [ - 16230, + 16827, [ { "DivMod": { @@ -31418,157 +33706,99 @@ }, "remainder": { "register": "AP", - "offset": -154 + "offset": -55 } } } ] ], [ - 16254, + 16836, [ { - "TestLessThan": { + "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": 0 + "offset": -72 } }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "Immediate": "0x10000000000000000" }, - "dst": { + "quotient": { "register": "AP", - "offset": -1 - } - } - } - ] - ], - [ - 16279, - [ - { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": 0 - } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "offset": 1 }, - "dst": { + "remainder": { "register": "AP", - "offset": -1 + "offset": 0 } } } ] ], [ - 16299, + 16846, [ { - "TestLessThan": { + "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": 0 + "offset": -1 } }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "Immediate": "0x10000000000000000" }, - "dst": { + "quotient": { "register": "AP", - "offset": -1 + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 } } } ] ], [ - 16344, + 16857, [ { - "SystemCall": { - "system": { + "DivMod": { + "lhs": { "Deref": { - "register": "AP", - "offset": -695 - } - } - } - } - ] - ], - [ - 16356, - [ - { - "SystemCall": { - "system": { - "BinOp": { - "op": "Add", - "a": { - "register": "AP", - "offset": -699 - }, - "b": { - "Immediate": "0x8" - } - } - } - } - } - ] - ], - [ - 16367, - [ - { - "SystemCall": { - "system": { - "BinOp": { - "op": "Add", - "a": { - "register": "AP", - "offset": -703 - }, - "b": { - "Immediate": "0x10" - } - } - } - } - } - ] - ], - [ - 16413, - [ - { - "AllocSegment": { - "dst": { + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { "register": "AP", - "offset": 0 + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -74 } } } ] ], [ - 16429, + 16866, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -669 + "offset": -88 } }, "rhs": { @@ -31587,7 +33817,7 @@ ] ], [ - 16439, + 16876, [ { "DivMod": { @@ -31613,7 +33843,7 @@ ] ], [ - 16450, + 16887, [ { "DivMod": { @@ -31632,21 +33862,21 @@ }, "remainder": { "register": "AP", - "offset": -683 + "offset": -87 } } } ] ], [ - 16459, + 16896, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -684 + "offset": -103 } }, "rhs": { @@ -31665,7 +33895,7 @@ ] ], [ - 16469, + 16906, [ { "DivMod": { @@ -31691,7 +33921,7 @@ ] ], [ - 16480, + 16917, [ { "DivMod": { @@ -31709,187 +33939,332 @@ "offset": -1 }, "remainder": { - "register": "FP", - "offset": -7 + "register": "AP", + "offset": -106 } } } ] ], [ - 16489, + 16929, [ { - "AllocSegment": { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, "dst": { "register": "AP", - "offset": 0 + "offset": -1 } } } ] ], [ - 16506, + 16954, [ { - "AllocSegment": { + "TestLessThan": { + "lhs": { + "Deref": { + "register": "AP", + "offset": 0 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, "dst": { "register": "AP", - "offset": 0 + "offset": -1 } } } ] ], [ - 16563, + 16974, [ { - "SystemCall": { - "system": { + "TestLessThan": { + "lhs": { "Deref": { - "register": "FP", - "offset": -4 + "register": "AP", + "offset": 0 } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "dst": { + "register": "AP", + "offset": -1 } } } ] ], [ - 16570, + 17010, [ { - "AllocConstantSize": { - "size": { - "Immediate": "0x4" + "Uint512DivModByUint256": { + "dividend0": { + "Deref": { + "register": "AP", + "offset": -6 + } }, - "dst": { + "dividend1": { + "Deref": { + "register": "AP", + "offset": -5 + } + }, + "dividend2": { + "Deref": { + "register": "AP", + "offset": -4 + } + }, + "dividend3": { + "Deref": { + "register": "AP", + "offset": -3 + } + }, + "divisor0": { + "Deref": { + "register": "AP", + "offset": -2 + } + }, + "divisor1": { + "Deref": { + "register": "AP", + "offset": -1 + } + }, + "quotient0": { "register": "AP", "offset": 0 + }, + "quotient1": { + "register": "AP", + "offset": 1 + }, + "quotient2": { + "register": "AP", + "offset": 2 + }, + "quotient3": { + "register": "AP", + "offset": 3 + }, + "remainder0": { + "register": "AP", + "offset": 4 + }, + "remainder1": { + "register": "AP", + "offset": 5 } } } ] ], [ - 16574, + 17028, [ { - "AllocSegment": { - "dst": { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -19 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { "register": "AP", - "offset": 0 + "offset": -9 + }, + "low": { + "register": "AP", + "offset": -10 } } - } - ] - ], - [ - 16609, - [ + }, { - "SystemCall": { - "system": { + "WideMul128": { + "lhs": { "Deref": { - "register": "FP", - "offset": 1 + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 } + }, + "high": { + "register": "AP", + "offset": -7 + }, + "low": { + "register": "AP", + "offset": -8 } } - } - ] - ], - [ - 16682, - [ + }, { - "DivMod": { + "WideMul128": { "lhs": { "Deref": { "register": "AP", - "offset": -2 + "offset": -19 } }, "rhs": { "Deref": { "register": "AP", - "offset": -1 + "offset": -20 } }, - "quotient": { + "high": { "register": "AP", - "offset": 5 + "offset": -5 }, - "remainder": { + "low": { "register": "AP", - "offset": 6 + "offset": -6 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -18 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -20 + } + }, + "high": { + "register": "AP", + "offset": -3 + }, + "low": { + "register": "AP", + "offset": -4 + } + } + }, + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -17 + } + }, + "rhs": { + "Deref": { + "register": "AP", + "offset": -21 + } + }, + "high": { + "register": "AP", + "offset": -1 + }, + "low": { + "register": "AP", + "offset": -2 } } } ] ], [ - 16688, + 17057, [ { "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": 0 + "offset": -35 } }, "rhs": { - "Immediate": "0x10000000000000000" + "Deref": { + "register": "AP", + "offset": -38 + } }, "dst": { "register": "AP", - "offset": -3 + "offset": 1 } } } ] ], [ - 16755, + 17069, [ { - "WideMul128": { + "TestLessThan": { "lhs": { "Deref": { - "register": "FP", - "offset": -8 + "register": "AP", + "offset": -35 } }, "rhs": { "Deref": { - "register": "FP", - "offset": -6 + "register": "AP", + "offset": -40 } }, - "high": { + "dst": { "register": "AP", "offset": 0 - }, - "low": { - "register": "AP", - "offset": 1 } } } ] ], [ - 16757, + 17084, [ { "DivMod": { "lhs": { "Deref": { - "register": "FP", - "offset": -8 + "register": "AP", + "offset": -41 } }, "rhs": { @@ -31908,7 +34283,7 @@ ] ], [ - 16767, + 17094, [ { "DivMod": { @@ -31934,7 +34309,7 @@ ] ], [ - 16778, + 17105, [ { "DivMod": { @@ -31953,34 +34328,57 @@ }, "remainder": { "register": "AP", - "offset": -13 + "offset": -38 } } } ] ], [ - 16787, + 17114, [ { - "WideMul128": { + "DivMod": { "lhs": { "Deref": { - "register": "FP", - "offset": -8 + "register": "AP", + "offset": -57 } }, "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 17124, + [ + { + "DivMod": { + "lhs": { "Deref": { - "register": "FP", - "offset": -5 + "register": "AP", + "offset": -1 } }, - "high": { + "rhs": { + "Immediate": "0x10000000000000000" + }, + "quotient": { "register": "AP", "offset": 0 }, - "low": { + "remainder": { "register": "AP", "offset": 1 } @@ -31989,14 +34387,40 @@ ] ], [ - 16789, + 17135, [ { "DivMod": { "lhs": { "Deref": { - "register": "FP", - "offset": -8 + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -55 + } + } + } + ] + ], + [ + 17144, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -72 } }, "rhs": { @@ -32015,7 +34439,7 @@ ] ], [ - 16799, + 17154, [ { "DivMod": { @@ -32041,7 +34465,7 @@ ] ], [ - 16810, + 17165, [ { "DivMod": { @@ -32060,56 +34484,57 @@ }, "remainder": { "register": "AP", - "offset": -13 + "offset": -74 } } } ] ], [ - 16820, + 17174, [ { - "TestLessThan": { + "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": 0 + "offset": -88 } }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "Immediate": "0x10000000000000000" }, - "dst": { + "quotient": { "register": "AP", - "offset": -1 + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 } } } ] ], [ - 16842, + 17184, [ { - "WideMul128": { + "DivMod": { "lhs": { "Deref": { - "register": "FP", - "offset": -7 + "register": "AP", + "offset": -1 } }, "rhs": { - "Deref": { - "register": "FP", - "offset": -6 - } + "Immediate": "0x10000000000000000" }, - "high": { + "quotient": { "register": "AP", "offset": 0 }, - "low": { + "remainder": { "register": "AP", "offset": 1 } @@ -32118,14 +34543,40 @@ ] ], [ - 16844, + 17195, [ { "DivMod": { "lhs": { "Deref": { - "register": "FP", - "offset": -7 + "register": "AP", + "offset": 2 + } + }, + "rhs": { + "Immediate": "0x100000000000000000000000000000000" + }, + "quotient": { + "register": "AP", + "offset": -1 + }, + "remainder": { + "register": "AP", + "offset": -87 + } + } + } + ] + ], + [ + 17204, + [ + { + "DivMod": { + "lhs": { + "Deref": { + "register": "AP", + "offset": -103 } }, "rhs": { @@ -32144,7 +34595,7 @@ ] ], [ - 16854, + 17214, [ { "DivMod": { @@ -32170,7 +34621,7 @@ ] ], [ - 16865, + 17225, [ { "DivMod": { @@ -32189,94 +34640,169 @@ }, "remainder": { "register": "AP", - "offset": -13 + "offset": -106 } } } ] ], [ - 16875, + 17245, [ { - "TestLessThan": { + "SystemCall": { + "system": { + "Deref": { + "register": "AP", + "offset": -668 + } + } + } + } + ] + ], + [ + 17257, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "AP", + "offset": -672 + }, + "b": { + "Immediate": "0x8" + } + } + } + } + } + ] + ], + [ + 17268, + [ + { + "SystemCall": { + "system": { + "BinOp": { + "op": "Add", + "a": { + "register": "AP", + "offset": -676 + }, + "b": { + "Immediate": "0x10" + } + } + } + } + } + ] + ], + [ + 17314, + [ + { + "AllocSegment": { + "dst": { + "register": "AP", + "offset": 0 + } + } + } + ] + ], + [ + 17330, + [ + { + "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": 0 + "offset": -642 } }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "Immediate": "0x10000000000000000" }, - "dst": { + "quotient": { "register": "AP", - "offset": -1 + "offset": 1 + }, + "remainder": { + "register": "AP", + "offset": 0 } } } ] ], [ - 16898, + 17340, [ { - "TestLessThan": { + "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": 0 + "offset": -1 } }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "Immediate": "0x10000000000000000" }, - "dst": { + "quotient": { "register": "AP", - "offset": -1 + "offset": 0 + }, + "remainder": { + "register": "AP", + "offset": 1 } } } ] ], [ - 16920, + 17351, [ { - "WideMul128": { + "DivMod": { "lhs": { "Deref": { - "register": "FP", - "offset": -7 + "register": "AP", + "offset": 2 } }, "rhs": { - "Deref": { - "register": "FP", - "offset": -5 - } + "Immediate": "0x100000000000000000000000000000000" }, - "high": { + "quotient": { "register": "AP", - "offset": 0 + "offset": -1 }, - "low": { + "remainder": { "register": "AP", - "offset": 1 + "offset": -656 } } } ] ], [ - 16922, + 17360, [ { "DivMod": { "lhs": { "Deref": { - "register": "FP", - "offset": -7 + "register": "AP", + "offset": -657 } }, "rhs": { @@ -32295,7 +34821,7 @@ ] ], [ - 16932, + 17370, [ { "DivMod": { @@ -32321,7 +34847,7 @@ ] ], [ - 16943, + 17381, [ { "DivMod": { @@ -32339,247 +34865,158 @@ "offset": -1 }, "remainder": { - "register": "AP", - "offset": -13 + "register": "FP", + "offset": -7 } } } ] ], [ - 16953, + 17390, [ { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": 0 - } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, + "AllocSegment": { "dst": { "register": "AP", - "offset": -1 + "offset": 0 } } } ] ], [ - 16972, + 17407, [ { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": 0 - } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, + "AllocSegment": { "dst": { "register": "AP", - "offset": -1 + "offset": 0 } } } ] ], [ - 16995, + 17464, [ { - "TestLessThan": { - "lhs": { + "SystemCall": { + "system": { "Deref": { - "register": "AP", - "offset": 0 + "register": "FP", + "offset": -4 } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, - "dst": { - "register": "AP", - "offset": -1 } } } ] ], [ - 17014, + 17471, [ { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": 0 - } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "AllocConstantSize": { + "size": { + "Immediate": "0x4" }, "dst": { "register": "AP", - "offset": -1 + "offset": 0 } } } ] ], [ - 17033, + 17475, [ { - "TestLessThan": { - "lhs": { - "Deref": { - "register": "AP", - "offset": 0 - } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, + "AllocSegment": { "dst": { "register": "AP", - "offset": -1 + "offset": 0 } } } ] ], [ - 17056, + 17510, [ { - "TestLessThan": { - "lhs": { + "SystemCall": { + "system": { "Deref": { - "register": "AP", - "offset": 0 + "register": "FP", + "offset": 1 } - }, - "rhs": { - "Immediate": "0x100000000000000000000000000000000" - }, - "dst": { - "register": "AP", - "offset": -1 } } } ] ], [ - 17078, + 17583, [ { - "Uint512DivModByUint256": { - "dividend0": { - "Deref": { - "register": "AP", - "offset": -4 - } - }, - "dividend1": { - "Deref": { - "register": "AP", - "offset": -3 - } - }, - "dividend2": { + "DivMod": { + "lhs": { "Deref": { "register": "AP", "offset": -2 } }, - "dividend3": { + "rhs": { "Deref": { "register": "AP", "offset": -1 } }, - "divisor0": { - "Deref": { - "register": "FP", - "offset": -4 - } - }, - "divisor1": { - "Deref": { - "register": "FP", - "offset": -3 - } - }, - "quotient0": { - "register": "AP", - "offset": 0 - }, - "quotient1": { - "register": "AP", - "offset": 1 - }, - "quotient2": { - "register": "AP", - "offset": 2 - }, - "quotient3": { - "register": "AP", - "offset": 3 - }, - "remainder0": { + "quotient": { "register": "AP", - "offset": 4 + "offset": 5 }, - "remainder1": { + "remainder": { "register": "AP", - "offset": 5 + "offset": 6 } } } ] ], [ - 17096, + 17589, [ { - "WideMul128": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": -19 + "offset": 0 } }, "rhs": { - "Deref": { - "register": "FP", - "offset": -4 - } - }, - "high": { - "register": "AP", - "offset": -9 + "Immediate": "0x10000000000000000" }, - "low": { + "dst": { "register": "AP", - "offset": -10 + "offset": -3 } } - }, + } + ] + ], + [ + 17656, + [ { "WideMul128": { "lhs": { "Deref": { - "register": "AP", - "offset": -18 + "register": "FP", + "offset": -6 } }, "rhs": { @@ -32590,97 +35027,103 @@ }, "high": { "register": "AP", - "offset": -7 + "offset": 0 }, "low": { "register": "AP", - "offset": -8 + "offset": 1 } } - }, + } + ] + ], + [ + 17658, + [ { - "WideMul128": { + "DivMod": { "lhs": { "Deref": { - "register": "AP", - "offset": -19 + "register": "FP", + "offset": -6 } }, "rhs": { - "Deref": { - "register": "FP", - "offset": -3 - } + "Immediate": "0x10000000000000000" }, - "high": { + "quotient": { "register": "AP", - "offset": -5 + "offset": 1 }, - "low": { + "remainder": { "register": "AP", - "offset": -6 + "offset": 0 } } - }, + } + ] + ], + [ + 17668, + [ { - "WideMul128": { + "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -18 + "offset": -1 } }, "rhs": { - "Deref": { - "register": "FP", - "offset": -3 - } + "Immediate": "0x10000000000000000" }, - "high": { + "quotient": { "register": "AP", - "offset": -3 + "offset": 0 }, - "low": { + "remainder": { "register": "AP", - "offset": -4 + "offset": 1 } } - }, + } + ] + ], + [ + 17679, + [ { - "WideMul128": { + "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -17 + "offset": 2 } }, "rhs": { - "Deref": { - "register": "FP", - "offset": -4 - } + "Immediate": "0x100000000000000000000000000000000" }, - "high": { + "quotient": { "register": "AP", "offset": -1 }, - "low": { + "remainder": { "register": "AP", - "offset": -2 + "offset": -13 } } } ] ], [ - 17125, + 17688, [ { - "TestLessThan": { + "WideMul128": { "lhs": { "Deref": { - "register": "AP", - "offset": -35 + "register": "FP", + "offset": -6 } }, "rhs": { @@ -32689,7 +35132,11 @@ "offset": -3 } }, - "dst": { + "high": { + "register": "AP", + "offset": 0 + }, + "low": { "register": "AP", "offset": 1 } @@ -32698,23 +35145,24 @@ ] ], [ - 17137, + 17690, [ { - "TestLessThan": { + "DivMod": { "lhs": { "Deref": { - "register": "AP", - "offset": -35 + "register": "FP", + "offset": -6 } }, "rhs": { - "Deref": { - "register": "FP", - "offset": -4 - } + "Immediate": "0x10000000000000000" }, - "dst": { + "quotient": { + "register": "AP", + "offset": 1 + }, + "remainder": { "register": "AP", "offset": 0 } @@ -32723,14 +35171,14 @@ ] ], [ - 17152, + 17700, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -41 + "offset": -1 } }, "rhs": { @@ -32738,77 +35186,102 @@ }, "quotient": { "register": "AP", - "offset": 1 + "offset": 0 }, "remainder": { "register": "AP", - "offset": 0 + "offset": 1 } } } ] ], [ - 17162, + 17711, [ { "DivMod": { "lhs": { "Deref": { "register": "AP", - "offset": -1 + "offset": 2 } }, "rhs": { - "Immediate": "0x10000000000000000" + "Immediate": "0x100000000000000000000000000000000" }, "quotient": { "register": "AP", - "offset": 0 + "offset": -1 }, "remainder": { "register": "AP", - "offset": 1 + "offset": -13 } } } ] ], [ - 17173, + 17721, [ { - "DivMod": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": 2 + "offset": 0 } }, "rhs": { "Immediate": "0x100000000000000000000000000000000" }, - "quotient": { + "dst": { "register": "AP", "offset": -1 + } + } + } + ] + ], + [ + 17743, + [ + { + "WideMul128": { + "lhs": { + "Deref": { + "register": "FP", + "offset": -5 + } }, - "remainder": { + "rhs": { + "Deref": { + "register": "FP", + "offset": -4 + } + }, + "high": { "register": "AP", - "offset": -38 + "offset": 0 + }, + "low": { + "register": "AP", + "offset": 1 } } } ] ], [ - 17182, + 17745, [ { "DivMod": { "lhs": { "Deref": { - "register": "AP", - "offset": -57 + "register": "FP", + "offset": -5 } }, "rhs": { @@ -32827,7 +35300,7 @@ ] ], [ - 17192, + 17755, [ { "DivMod": { @@ -32853,7 +35326,7 @@ ] ], [ - 17203, + 17766, [ { "DivMod": { @@ -32872,99 +35345,94 @@ }, "remainder": { "register": "AP", - "offset": -55 + "offset": -13 } } } ] ], [ - 17212, + 17776, [ { - "DivMod": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": -72 + "offset": 0 } }, "rhs": { - "Immediate": "0x10000000000000000" - }, - "quotient": { - "register": "AP", - "offset": 1 + "Immediate": "0x100000000000000000000000000000000" }, - "remainder": { + "dst": { "register": "AP", - "offset": 0 + "offset": -1 } } } ] ], [ - 17222, + 17799, [ { - "DivMod": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": -1 + "offset": 0 } }, "rhs": { - "Immediate": "0x10000000000000000" - }, - "quotient": { - "register": "AP", - "offset": 0 + "Immediate": "0x100000000000000000000000000000000" }, - "remainder": { + "dst": { "register": "AP", - "offset": 1 + "offset": -1 } } } ] ], [ - 17233, + 17821, [ { - "DivMod": { + "WideMul128": { "lhs": { "Deref": { - "register": "AP", - "offset": 2 + "register": "FP", + "offset": -5 } }, "rhs": { - "Immediate": "0x100000000000000000000000000000000" + "Deref": { + "register": "FP", + "offset": -3 + } }, - "quotient": { + "high": { "register": "AP", - "offset": -1 + "offset": 0 }, - "remainder": { + "low": { "register": "AP", - "offset": -74 + "offset": 1 } } } ] ], [ - 17242, + 17823, [ { "DivMod": { "lhs": { "Deref": { - "register": "AP", - "offset": -88 + "register": "FP", + "offset": -5 } }, "rhs": { @@ -32983,7 +35451,7 @@ ] ], [ - 17252, + 17833, [ { "DivMod": { @@ -33009,7 +35477,7 @@ ] ], [ - 17263, + 17844, [ { "DivMod": { @@ -33028,92 +35496,80 @@ }, "remainder": { "register": "AP", - "offset": -87 + "offset": -13 } } } ] ], [ - 17272, + 17854, [ { - "DivMod": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": -103 + "offset": 0 } }, "rhs": { - "Immediate": "0x10000000000000000" - }, - "quotient": { - "register": "AP", - "offset": 1 + "Immediate": "0x100000000000000000000000000000000" }, - "remainder": { + "dst": { "register": "AP", - "offset": 0 + "offset": -1 } } } ] ], [ - 17282, + 17878, [ { - "DivMod": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": -1 + "offset": 0 } }, "rhs": { - "Immediate": "0x10000000000000000" - }, - "quotient": { - "register": "AP", - "offset": 0 + "Immediate": "0x100000000000000000000000000000000" }, - "remainder": { + "dst": { "register": "AP", - "offset": 1 + "offset": -1 } } } ] ], [ - 17293, + 17903, [ { - "DivMod": { + "TestLessThan": { "lhs": { "Deref": { "register": "AP", - "offset": 2 + "offset": 0 } }, "rhs": { "Immediate": "0x100000000000000000000000000000000" }, - "quotient": { + "dst": { "register": "AP", "offset": -1 - }, - "remainder": { - "register": "AP", - "offset": -106 } } } ] ], [ - 17307, + 17927, [ { "TestLessThan": { @@ -33135,7 +35591,7 @@ ] ], [ - 17425, + 18045, [ { "AllocSegment": { @@ -33148,7 +35604,7 @@ ] ], [ - 17448, + 18068, [ { "TestLessThanOrEqual": { @@ -33173,7 +35629,7 @@ ] ], [ - 17523, + 18143, [ { "AllocSegment": { @@ -33186,7 +35642,7 @@ ] ], [ - 17578, + 18198, [ { "DivMod": { @@ -33215,7 +35671,7 @@ ] ], [ - 17584, + 18204, [ { "TestLessThan": { @@ -33237,7 +35693,7 @@ ] ], [ - 17597, + 18217, [ { "TestLessThan": { @@ -33259,7 +35715,7 @@ ] ], [ - 17607, + 18227, [ { "TestLessThan": { @@ -33281,7 +35737,7 @@ ] ], [ - 17655, + 18275, [ { "DivMod": { @@ -33310,7 +35766,7 @@ ] ], [ - 17661, + 18281, [ { "TestLessThan": { @@ -33332,7 +35788,7 @@ ] ], [ - 17677, + 18297, [ { "TestLessThan": { @@ -33354,7 +35810,7 @@ ] ], [ - 17687, + 18307, [ { "TestLessThan": { @@ -33376,7 +35832,7 @@ ] ], [ - 17710, + 18330, [ { "AllocSegment": { @@ -33389,7 +35845,7 @@ ] ], [ - 17724, + 18344, [ { "AllocSegment": { @@ -33402,7 +35858,7 @@ ] ], [ - 17743, + 18363, [ { "AllocSegment": { @@ -33415,7 +35871,7 @@ ] ], [ - 17757, + 18377, [ { "AllocSegment": { diff --git a/crates/blockifier/src/execution/contract_class.rs b/crates/blockifier/src/execution/contract_class.rs index c43726c42d..3eed431985 100644 --- a/crates/blockifier/src/execution/contract_class.rs +++ b/crates/blockifier/src/execution/contract_class.rs @@ -6,6 +6,8 @@ use cairo_lang_casm; use cairo_lang_casm::hints::Hint; use cairo_lang_starknet_classes::casm_contract_class::{CasmContractClass, CasmContractEntryPoint}; use cairo_lang_starknet_classes::NestedIntList; +#[allow(unused_imports)] +use cairo_native::executor::AotNativeExecutor; use cairo_vm::serde::deserialize_program::{ ApTracking, FlowTrackingData, diff --git a/crates/blockifier/src/execution/syscalls/syscall_tests/secp.rs b/crates/blockifier/src/execution/syscalls/syscall_tests/secp.rs index bbdc695979..a8a363c66b 100644 --- a/crates/blockifier/src/execution/syscalls/syscall_tests/secp.rs +++ b/crates/blockifier/src/execution/syscalls/syscall_tests/secp.rs @@ -9,7 +9,7 @@ use crate::test_utils::contracts::FeatureContract; use crate::test_utils::initial_test_state::test_state; use crate::test_utils::{trivial_external_entry_point_new, CairoVersion, BALANCE}; -#[test_case(FeatureContract::TestContract(CairoVersion::Cairo1), 17040926; "VM")] +#[test_case(FeatureContract::TestContract(CairoVersion::Cairo1), 17036546; "VM")] fn test_secp256k1(test_contract: FeatureContract, expected_gas: u64) { let chain_info = &ChainInfo::create_for_testing(); let mut state = test_state(chain_info, BALANCE, &[(test_contract, 1)]); @@ -27,7 +27,7 @@ fn test_secp256k1(test_contract: FeatureContract, expected_gas: u64) { ); } -#[test_case(FeatureContract::TestContract(CairoVersion::Cairo1), 27570060; "VM")] +#[test_case(FeatureContract::TestContract(CairoVersion::Cairo1), 27565680; "VM")] fn test_secp256r1(test_contract: FeatureContract, expected_gas: u64) { let chain_info = &ChainInfo::create_for_testing(); let mut state = test_state(chain_info, BALANCE, &[(test_contract, 1)]); diff --git a/scripts/build_native_blockifier.sh b/scripts/build_native_blockifier.sh index db56e326c7..0df01b83a8 100755 --- a/scripts/build_native_blockifier.sh +++ b/scripts/build_native_blockifier.sh @@ -13,6 +13,9 @@ function build() { pushd crates/native_blockifier pypy3.9 -m venv venv source venv/bin/activate + export MLIR_SYS_180_PREFIX=/usr/lib/llvm-18/ + export LLVM_SYS_181_PREFIX=/usr/lib/llvm-18/ + export TABLEGEN_180_PREFIX=/usr/lib/llvm-18/ cargo build --release -p native_blockifier --features "testing" || clean clean popd diff --git a/scripts/install_build_tools.sh b/scripts/install_build_tools.sh index fd4e617598..216412d7dd 100644 --- a/scripts/install_build_tools.sh +++ b/scripts/install_build_tools.sh @@ -31,6 +31,17 @@ function install_rust () { curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path } +function install_llvm() { + echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main" > /etc/apt/sources.list.d/llvm-18.list + echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-18 main" >> /etc/apt/sources.list.d/llvm-18.list + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - + + apt update -y + apt install -y libmlir-18-dev libpolly-18-dev llvm-18-dev mlir-18-tools +} + +install_llvm + install_pypy & install_rust & wait diff --git a/scripts/sequencer-ci.Dockerfile b/scripts/sequencer-ci.Dockerfile index fc67b904be..4d15d11135 100644 --- a/scripts/sequencer-ci.Dockerfile +++ b/scripts/sequencer-ci.Dockerfile @@ -1,14 +1,24 @@ FROM ubuntu:20.04 +ENV DEBIAN_FRONTEND=noninteractive +ENV TZ=America/New_York + RUN apt update && apt -y install \ build-essential \ clang \ curl \ - python3-dev + python3-dev \ + libzstd-dev \ + wget \ + gnupg ENV RUSTUP_HOME=/opt/rust ENV CARGO_HOME=/opt/rust ENV PATH=$PATH:/opt/rust/bin +ENV MLIR_SYS_180_PREFIX=/usr/lib/llvm-18/ +ENV LLVM_SYS_181_PREFIX=/usr/lib/llvm-18/ +ENV TABLEGEN_180_PREFIX=/usr/lib/llvm-18/ + COPY install_build_tools.sh . RUN bash install_build_tools.sh diff --git a/scripts/setup_native_deps.sh b/scripts/setup_native_deps.sh new file mode 100755 index 0000000000..6c895ba8b4 --- /dev/null +++ b/scripts/setup_native_deps.sh @@ -0,0 +1,115 @@ +#!/bin/bash + +install_essential_deps_linux() { + apt-get update -y + apt-get install -y \ + curl \ + jq \ + ripgrep \ + wget \ + ca-certificates \ + gnupg \ + git +} + +setup_llvm_deps() { + case "$(uname)" in + Darwin) + brew update + brew install llvm@18 + + LIBRARY_PATH=/opt/homebrew/lib + MLIR_SYS_180_PREFIX="$(brew --prefix llvm@18)" + LLVM_SYS_181_PREFIX="$MLIR_SYS_180_PREFIX" + TABLEGEN_180_PREFIX="$MLIR_SYS_180_PREFIX" + + export LIBRARY_PATH + export MLIR_SYS_180_PREFIX + export LLVM_SYS_181_PREFIX + export TABLEGEN_180_PREFIX + ;; + Linux) + export DEBIAN_FRONTEND=noninteractive + export TZ=America/New_York + + CODENAME=$(grep VERSION_CODENAME /etc/os-release | cut -d= -f2) + [ -z "$CODENAME" ] && { echo "Error: Unable to determine OS codename"; exit 1; } + + echo "deb http://apt.llvm.org/$CODENAME/ llvm-toolchain-$CODENAME-18 main" > /etc/apt/sources.list.d/llvm-18.list + echo "deb-src http://apt.llvm.org/$CODENAME/ llvm-toolchain-$CODENAME-18 main" >> /etc/apt/sources.list.d/llvm-18.list + wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - + + apt-get update && apt-get upgrade -y + apt-get install -y zstd + apt-get install -y llvm-18 llvm-18-dev llvm-18-runtime clang-18 clang-tools-18 lld-18 libpolly-18-dev libmlir-18-dev mlir-18-tools + apt-get install -y libgmp3-dev + + MLIR_SYS_180_PREFIX=/usr/lib/llvm-18/ + LLVM_SYS_181_PREFIX=/usr/lib/llvm-18/ + TABLEGEN_180_PREFIX=/usr/lib/llvm-18/ + + export MLIR_SYS_180_PREFIX + export LLVM_SYS_181_PREFIX + export TABLEGEN_180_PREFIX + ;; + *) + echo "Error: Unsupported operating system" + exit 1 + ;; + esac + + # GitHub Actions specific + [ -n "$GITHUB_ACTIONS" ] && { + echo "MLIR_SYS_180_PREFIX=$MLIR_SYS_180_PREFIX" >> $GITHUB_ENV + echo "LLVM_SYS_181_PREFIX=$LLVM_SYS_181_PREFIX" >> $GITHUB_ENV + echo "TABLEGEN_180_PREFIX=$TABLEGEN_180_PREFIX" >> $GITHUB_ENV + } +} + +install_rust() { + if command -v cargo >/dev/null 2>&1; then + echo "Rust is already installed with cargo available in PATH." + return 0 + fi + + echo "cargo not found. Installing Rust..." + if ! curl -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path; then + echo >&2 "Failed to install Rust. Aborting." + return 1 + fi + + # shellcheck disable=SC1090 + source "$HOME/.cargo/env" || { + echo >&2 "Failed to source Rust environment. Aborting." + return 1 + } + + echo "Rust installed successfully." +} + +install_cairo_native_runtime() { + install_rust || { echo "Error: Failed to install Rust"; exit 1; } + + git clone https://github.com/lambdaclass/cairo_native.git + pushd ./cairo_native || exit 1 + cargo build -p cairo-native-runtime --release --all-features --quiet + popd || exit 1 + + mv ./cairo_native/target/release/libcairo_native_runtime.a ./libcairo_native_runtime.so + rm -rf ./cairo_native + + export CAIRO_NATIVE_RUNTIME_LIBRARY="$(pwd)/libcairo_native_runtime.so" + + [ -n "$GITHUB_ACTIONS" ] && echo "CAIRO_NATIVE_RUNTIME_LIBRARY=$CAIRO_NATIVE_RUNTIME_LIBRARY" >> $GITHUB_ENV +} + +main() { + [ "$(uname)" = "Linux" ] && install_essential_deps_linux + + setup_llvm_deps + install_cairo_native_runtime + + echo "LLVM and Cairo native runtime dependencies installed successfully." +} + +main "$@" \ No newline at end of file