diff --git a/.dockerignore b/.dockerignore index 960eb924e..f2ad3bebc 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,18 @@ target .github -.cargo \ No newline at end of file +.cargo + +# Compiler files +cache/ +out/ + +# Ignores development broadcast logs +!/broadcast +/broadcast/*/31337/ +/broadcast/**/dry-run/ + +# Docs +docs/ + +# Dotenv file +.env diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 4c5c7e90a..486f08ea6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,9 +15,11 @@ concurrency: env: CARGO_TERM_COLOR: always RUSTFLAGS: "-C link-args=-Wl,--allow-multiple-definition" + FOUNDRY_PROFILE: ci + jobs: - check: + check-rust: name: Check Workspace runs-on: ubuntu-latest steps: @@ -51,6 +53,7 @@ jobs: cargo +nightly check -p ismp-sync-committee --no-default-features --target=wasm32-unknown-unknown --locked + check-runtime-wasm: name: Check Runtime Wasm runs-on: ubuntu-latest @@ -100,7 +103,11 @@ jobs: echo "TUID=$UID" >> $GITHUB_ENV - name: Checkout sources - uses: actions/checkout@master + uses: actions/checkout@v2 + with: + token: ${{ secrets.GH_TOKEN }} + submodules: recursive + - name: Install rust stable toolchain uses: actions-rs/toolchain@v1 @@ -112,11 +119,17 @@ jobs: sudo apt update sudo apt install protobuf-compiler + - uses: webfactory/ssh-agent@v0.7.0 + with: + ssh-private-key: ${{ secrets.SSH_KEY }} + + - name: Run unit tests run: | cargo +nightly test -p pallet-ismp --all-targets --all-features --locked cargo +nightly test -p ismp-testsuite --all-targets --all-features --locked cargo +nightly test -p ethereum-trie --all-features --locked + cd evm/forge && cargo test - name: Clone eth-pos-devnet repository run: | @@ -129,3 +142,31 @@ jobs: - name: Run all tests run: | cargo +nightly test -p sync-committee-prover -- --nocapture + + + check-solidity: + strategy: + fail-fast: true + + name: Foundry project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Run Forge build + run: | + forge --version + forge build --sizes + id: build + + - name: Run Forge tests + run: | + forge test -vvv + id: test diff --git a/.gitignore b/.gitignore index 3a01158e2..bbfe28d66 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,9 @@ **/zombienet/zombienet /pallet-ismp/evm/solidity/out /pallet-ismp/evm/solidity/cache -.env +.env* + +evm/out/ +evm/cache/ +evm/broadcast/ +evm/forge/target/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..be58dc9bd --- /dev/null +++ b/.gitmodules @@ -0,0 +1,15 @@ +[submodule "evm/lib/ismp-solidity"] + path = evm/lib/ismp-solidity + url = https://github.com/polytope-labs/ismp-solidity +[submodule "evm/lib/solidity-merkle-trees"] + path = evm/lib/solidity-merkle-trees + url = https://github.com/polytope-labs/solidity-merkle-trees +[submodule "evm/lib/multi-chain-tokens"] + path = evm/lib/multi-chain-tokens + url = https://github.com/polytope-labs/multi-chain-tokens +[submodule "evm/lib/forge-std"] + path = evm/lib/forge-std + url = git@github.com:foundry-rs/forge-std +[submodule "evm/lib/openzeppelin-contracts"] + path = evm/lib/openzeppelin-contracts + url = https://github.com/openzeppelin/openzeppelin-contracts diff --git a/Cargo.toml b/Cargo.toml index 8f6454016..51d53e6f0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,4 +22,11 @@ members = [ "parachain/modules/consensus/sync-committee/prover", "parachain/modules/consensus/sync-committee/verifier", "parachain/modules/consensus/sync-committee/primitives", + + # evm tests +# "evm/forge" +] +exclude = [ +"evm/forge" ] + diff --git a/evm/forge/Cargo.lock b/evm/forge/Cargo.lock new file mode 100644 index 000000000..857006f7d --- /dev/null +++ b/evm/forge/Cargo.lock @@ -0,0 +1,9903 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "Inflector" +version = "0.11.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" +dependencies = [ + "lazy_static", + "regex", +] + +[[package]] +name = "addr2line" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +dependencies = [ + "gimli 0.26.2", +] + +[[package]] +name = "addr2line" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a76fd60b23679b7d19bd066031410fb7e458ccc5e958eb5c325888ce4baedc97" +dependencies = [ + "gimli 0.27.3", +] + +[[package]] +name = "addr2line" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +dependencies = [ + "gimli 0.27.3", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b613b8e1e3cf911a086f53f03bf286f52fd7a7258e4fa606f0ef220d39d8877" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "aes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e8b47f52ea9bae42228d07ec09eb676433d7c4ed1ebdf0f1d1c29ed446f1ab8" +dependencies = [ + "cfg-if", + "cipher 0.3.0", + "cpufeatures", + "opaque-debug 0.3.0", +] + +[[package]] +name = "aes" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +dependencies = [ + "cfg-if", + "cipher 0.4.4", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df5f85a83a7d8b0442b6aa7b504b8212c1733da07b98aae43d4bc21b2cb3cdf6" +dependencies = [ + "aead", + "aes 0.7.5", + "cipher 0.3.0", + "ctr 0.8.0", + "ghash", + "subtle", +] + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "version_check", +] + +[[package]] +name = "ahash" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +dependencies = [ + "cfg-if", + "getrandom 0.2.10", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloy-rlp" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f938f00332d63a5b0ac687bd6f46d03884638948921d9f8b50c59563d421ae25" +dependencies = [ + "arrayvec 0.7.4", + "bytes", + "smol_str", +] + +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anstream" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca84f3628370c59db74ee214b3263d58f9aadd9b4fe7e711fd87dc452b7f163" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is-terminal", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30da5c5f2d5e72842e00bcb57657162cdabef0931f40e2deb9b4140440cecd" + +[[package]] +name = "anstyle-parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "anstyle-wincon" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" +dependencies = [ + "anstyle", + "windows-sys 0.48.0", +] + +[[package]] +name = "anyhow" +version = "1.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "aquamarine" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df752953c49ce90719c7bf1fc587bc8227aed04732ea0c0f85e5397d7fdbd1a1" +dependencies = [ + "include_dir", + "itertools", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "arbitrary" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e" + +[[package]] +name = "ariadne" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "367fd0ad87307588d087544707bc5fbf4805ded96c7db922b70d368fa1cb5702" +dependencies = [ + "unicode-width", + "yansi 0.5.1", +] + +[[package]] +name = "ark-bls12-381" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c775f0d12169cba7aae4caeb547bb6a50781c7449a8aa53793827c9ec4abf488" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ec" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "defd9a439d56ac24968cca0571f598a61bc8c55f71d50a89cda591cb750670ba" +dependencies = [ + "ark-ff 0.4.2", + "ark-poly", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", + "itertools", + "num-traits", + "zeroize", +] + +[[package]] +name = "ark-ed-on-bls12-381-bandersnatch" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9cde0f2aa063a2a5c28d39b47761aa102bda7c13c84fc118a61b87c7b2f785c" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ff 0.4.2", + "ark-std 0.4.0", +] + +[[package]] +name = "ark-ff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b3235cc41ee7a12aaaf2c575a2ad7b46713a8a50bda2fc3b003a04845c05dd6" +dependencies = [ + "ark-ff-asm 0.3.0", + "ark-ff-macros 0.3.0", + "ark-serialize 0.3.0", + "ark-std 0.3.0", + "derivative", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.3.3", + "zeroize", +] + +[[package]] +name = "ark-ff" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec847af850f44ad29048935519032c33da8aa03340876d351dfab5660d2966ba" +dependencies = [ + "ark-ff-asm 0.4.2", + "ark-ff-macros 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "digest 0.10.7", + "itertools", + "num-bigint", + "num-traits", + "paste", + "rustc_version 0.4.0", + "zeroize", +] + +[[package]] +name = "ark-ff-asm" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db02d390bf6643fb404d3d22d31aee1c4bc4459600aef9113833d17e786c6e44" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-asm" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed4aa4fe255d0bc6d79373f7e31d2ea147bcf486cba1be5ba7ea85abdb92348" +dependencies = [ + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fd794a08ccb318058009eefdf15bcaaaaf6f8161eb3345f907222bac38b20" +dependencies = [ + "num-bigint", + "num-traits", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-ff-macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" +dependencies = [ + "num-bigint", + "num-traits", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-poly" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320bfc44ee185d899ccbadfa8bc31aab923ce1558716e1997a1e74057fe86bf" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "derivative", + "hashbrown 0.13.2", +] + +[[package]] +name = "ark-scale" +version = "0.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49b08346a3e38e2be792ef53ee168623c9244d968ff00cd70fb9932f6fe36393" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "parity-scale-codec", +] + +[[package]] +name = "ark-secret-scalar" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "ark-transcript", + "digest 0.10.7", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "ark-serialize" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d6c2b318ee6e10f8c2853e73a83adc0ccb88995aa978d8a3408d492ab2ee671" +dependencies = [ + "ark-std 0.3.0", + "digest 0.9.0", +] + +[[package]] +name = "ark-serialize" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb7b85a02b83d2f22f89bd5cac66c9c89474240cb6207cb1efc16d098e822a5" +dependencies = [ + "ark-serialize-derive", + "ark-std 0.4.0", + "digest 0.10.7", + "num-bigint", +] + +[[package]] +name = "ark-serialize-derive" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae3281bc6d0fd7e549af32b52511e1302185bd688fd3359fa36423346ff682ea" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "ark-std" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df2c09229cbc5a028b1d70e00fdb2acee28b1055dfb5ca73eea49c5a25c4e7c" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-std" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94893f1e0c6eeab764ade8dc4c0db24caf4fe7cbbaafc0eba0a9030f447b5185" +dependencies = [ + "num-traits", + "rand 0.8.5", +] + +[[package]] +name = "ark-transcript" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1" +dependencies = [ + "ark-ff 0.4.2", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "digest 0.10.7", + "rand_core 0.6.4", + "sha3", +] + +[[package]] +name = "array-bytes" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f52f63c5c1316a16a4b35eaac8b76a98248961a533f061684cb2a7cb0eafb6c6" + +[[package]] +name = "array-bytes" +version = "6.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b1c5a481ec30a5abd8dfbd94ab5cf1bb4e9a66be7f1b3b322f2f1170c200fd" + +[[package]] +name = "array-init" +version = "0.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23589ecb866b460d3a0f1278834750268c607e8e28a1b982c907219f3178cd72" +dependencies = [ + "nodrop", +] + +[[package]] +name = "arrayref" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" + +[[package]] +name = "arrayvec" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" +dependencies = [ + "nodrop", +] + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "arrayvec" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" + +[[package]] +name = "ascii-canvas" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8824ecca2e851cec16968d54a01dd372ef8f95b244fb84b84e70128be347c3c6" +dependencies = [ + "term", +] + +[[package]] +name = "async-channel" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-executor" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fa3dc5f2a8564f07759c008b9109dc0d39de92a88d5588b8a5036d286383afb" +dependencies = [ + "async-lock", + "async-task", + "concurrent-queue", + "fastrand 1.9.0", + "futures-lite", + "slab", +] + +[[package]] +name = "async-fs" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06" +dependencies = [ + "async-lock", + "autocfg", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-io" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +dependencies = [ + "async-lock", + "autocfg", + "cfg-if", + "concurrent-queue", + "futures-lite", + "log", + "parking", + "polling", + "rustix 0.37.23", + "slab", + "socket2", + "waker-fn", +] + +[[package]] +name = "async-lock" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa24f727524730b077666307f2734b4a1a1c57acb79193127dcc8914d5242dd7" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-net" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4051e67316bc7eff608fe723df5d32ed639946adcd69e07df41fd42a7b411f1f" +dependencies = [ + "async-io", + "autocfg", + "blocking", + "futures-lite", +] + +[[package]] +name = "async-process" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a9d28b1d97e08915212e2e45310d47854eafa69600756fc735fb788f75199c9" +dependencies = [ + "async-io", + "async-lock", + "autocfg", + "blocking", + "cfg-if", + "event-listener", + "futures-lite", + "rustix 0.37.23", + "signal-hook", + "windows-sys 0.48.0", +] + +[[package]] +name = "async-task" +version = "4.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc7ab41815b3c653ccd2978ec3255c81349336702dfdf62ee6f7069b12a3aae" + +[[package]] +name = "async-trait" +version = "0.1.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.0", +] + +[[package]] +name = "atomic" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" + +[[package]] +name = "atomic-waker" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1181e1e0d1fce796a03db1ae795d67167da795f9cf4a39c37589e85ef57f26d3" + +[[package]] +name = "auto_impl" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fee3da8ef1276b0bee5dd1c7258010d8fffd31801447323115a25560e1327b89" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +dependencies = [ + "addr2line 0.20.0", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object 0.31.1", + "rustc-demangle", +] + +[[package]] +name = "bandersnatch_vrfs" +version = "0.0.1" +source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1" +dependencies = [ + "ark-bls12-381", + "ark-ec", + "ark-ed-on-bls12-381-bandersnatch", + "ark-ff 0.4.2", + "ark-scale", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "dleq_vrf", + "fflonk", + "merlin 3.0.0", + "rand_chacha 0.3.1", + "rand_core 0.6.4", + "ring 0.1.0", + "sha2 0.10.7", + "zeroize", +] + +[[package]] +name = "base16ct" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c7f02d4ea65f2c1853089ffd8d2787bdbc63de2f0d29dedbcf8ccdfa0ccd4cf" + +[[package]] +name = "base58" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6107fe1be6682a68940da878d9e9f5e90ca5745b3dec9fd1bb393c8777d4f581" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "base64" +version = "0.21.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "604178f6c5c21f02dc555784810edfb88d34ac2c73b2eae109655649ee73ce3d" + +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + +[[package]] +name = "bech32" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dabbe35f96fb9507f7330793dc490461b2962659ac5d427181e451a623751d1" + +[[package]] +name = "beef" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8241f3ebb85c056b509d4327ad0358fbbba6ffb340bf388f26350aeda225b1" +dependencies = [ + "serde", +] + +[[package]] +name = "beefy-prover" +version = "0.1.0" +source = "git+ssh://git@github.com/polytope-labs/tesseract.git?branch=main#0a153d17ec41402bfe8c9571753669cb6fb255f4" +dependencies = [ + "anyhow", + "beefy-verifier-primitives", + "derive_more", + "frame-support", + "hex", + "mmr-rpc", + "pallet-beefy-mmr", + "pallet-mmr", + "parity-scale-codec", + "primitive-types", + "rs_merkle", + "serde_json", + "sp-consensus-beefy", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-mmr-primitives", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-storage 13.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "subxt", +] + +[[package]] +name = "beefy-verifier-primitives" +version = "0.1.0" +source = "git+ssh://git@github.com/polytope-labs/tesseract.git?branch=main#0a153d17ec41402bfe8c9571753669cb6fb255f4" +dependencies = [ + "derive_more", + "parity-scale-codec", + "serde", + "sp-consensus-beefy", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-mmr-primitives", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "binary-merkle-tree" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "hash-db 0.16.0", + "log", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bip39" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f2635620bf0b9d4576eb7bb9a38a55df78bd1205d26fa994b25911a69f212f" +dependencies = [ + "bitcoin_hashes", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitcoin_hashes" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90064b8dee6815a6470d60bad07bbbaee885c0e12d04177138fa3291a01b7bc4" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630be753d4e58660abd17930c71b647fe46c27ea6b63cc59e1e3851406972e42" + +[[package]] +name = "bitvec" +version = "0.17.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" +dependencies = [ + "either", + "radium 0.3.0", +] + +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium 0.7.0", + "serde", + "tap", + "wyz", +] + +[[package]] +name = "blake2" +version = "0.10.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46502ad458c9a52b69d4d4d32775c788b7a1b85e8bc9d482d92250fc0e3f8efe" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "blake2-rfc" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d6d530bdd2d52966a6d03b7a964add7ae1a288d25214066fd4b600f0f796400" +dependencies = [ + "arrayvec 0.4.12", + "constant_time_eq 0.1.5", +] + +[[package]] +name = "blake2b_simd" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c2f0dc9a68c6317d884f97cc36cf5a3d20ba14ce404227df55e1af708ab04bc" +dependencies = [ + "arrayref", + "arrayvec 0.7.4", + "constant_time_eq 0.2.6", +] + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding", + "byte-tools", + "byteorder", + "generic-array 0.12.4", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "blocking" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77231a1c8f801696fc0123ec6150ce92cffb8e164a02afb9c8ddee0e9b65ad65" +dependencies = [ + "async-channel", + "async-lock", + "async-task", + "atomic-waker", + "fastrand 1.9.0", + "futures-lite", + "log", +] + +[[package]] +name = "bounded-collections" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb5b05133427c07c4776906f673ccf36c21b102c9829c641a5b56bd151d44fd6" +dependencies = [ + "log", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" +dependencies = [ + "sha2 0.9.9", +] + +[[package]] +name = "bs58" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "bstr" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "build_const" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ae4235e6dac0694637c763029ecea1a2ec9e4e06ec2729bd21ba4d9c863eb7" + +[[package]] +name = "bumpalo" +version = "3.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" + +[[package]] +name = "byte-slice-cast" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3ac9f8b63eca6fd385229b3675f6cc0dc5c8a5c8a54a59d4f52ffd670d87b0c" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "bytemuck" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +dependencies = [ + "serde", +] + +[[package]] +name = "bzip2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +dependencies = [ + "bzip2-sys", + "libc", +] + +[[package]] +name = "bzip2-sys" +version = "0.1.11+1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "736a955f3fa7875102d57c82b8cac37ec45224a07fd32d58f9f7a186b6cd4cdc" +dependencies = [ + "cc", + "libc", + "pkg-config", +] + +[[package]] +name = "camino" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.18", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "cc" +version = "1.0.80" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f1226cd9da55587234753d1245dd5b132343ea240f26b6a9003d68706141ba" +dependencies = [ + "jobserver", + "libc", +] + +[[package]] +name = "cfg-expr" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03915af431787e6ffdcc74c645077518c6b6e01f80b761e0fbbfa288536311b3" +dependencies = [ + "smallvec 1.11.0", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chacha20" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c80e5460aa66fe3b91d40bcbdab953a597b60053e34d684ac6903f863b680a6" +dependencies = [ + "cfg-if", + "cipher 0.3.0", + "cpufeatures", + "zeroize", +] + +[[package]] +name = "chacha20poly1305" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18446b09be63d457bbec447509e85f662f32952b035ce892290396bc0b0cff5" +dependencies = [ + "aead", + "chacha20", + "cipher 0.3.0", + "poly1305", + "zeroize", +] + +[[package]] +name = "chrono" +version = "0.4.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +dependencies = [ + "android-tzdata", + "iana-time-zone", + "num-traits", + "winapi", +] + +[[package]] +name = "cipher" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ee52072ec15386f770805afd189a01c8841be8696bed250fa2f13c4c0d6dfb7" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "ckb-merkle-mountain-range" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ccb671c5921be8a84686e6212ca184cb1d7c51cadcdbfcbd1cc3f042f5dfb8" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ckb-merkle-mountain-range" +version = "0.5.2" +source = "git+https://github.com/polytope-labs/merkle-mountain-range?branch=seun/simplified-mmr#f1b48672f4dc4d593291506c3933de1dfb9b8461" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "clap" +version = "4.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd304a20bff958a57f04c4e96a2e7594cc4490a0e809cbd48bb6437edaa452d" +dependencies = [ + "clap_builder", + "clap_derive", + "once_cell", +] + +[[package]] +name = "clap_builder" +version = "4.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01c6a3f08f1fe5662a35cfe393aec09c4df95f60ee93b7556505260f75eee9e1" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size", + "unicase", + "unicode-width", +] + +[[package]] +name = "clap_derive" +version = "4.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "clap_lex" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" + +[[package]] +name = "coins-bip32" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b30a84aab436fcb256a2ab3c80663d8aec686e6bae12827bb05fef3e1e439c9f" +dependencies = [ + "bincode", + "bs58 0.4.0", + "coins-core", + "digest 0.10.7", + "getrandom 0.2.10", + "hmac 0.12.1", + "k256", + "lazy_static", + "serde", + "sha2 0.10.7", + "thiserror", +] + +[[package]] +name = "coins-bip39" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84f4d04ee18e58356accd644896aeb2094ddeafb6a713e056cef0c0a8e468c15" +dependencies = [ + "bitvec 0.17.4", + "coins-bip32", + "getrandom 0.2.10", + "hmac 0.12.1", + "once_cell", + "pbkdf2 0.12.2", + "rand 0.8.5", + "sha2 0.10.7", + "thiserror", +] + +[[package]] +name = "coins-core" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b949a1c63fb7eb591eb7ba438746326aedf0ae843e51ec92ba6bec5bb382c4f" +dependencies = [ + "base64 0.21.2", + "bech32", + "bs58 0.4.0", + "digest 0.10.7", + "generic-array 0.14.7", + "hex", + "ripemd", + "serde", + "serde_derive", + "sha2 0.10.7", + "sha3", + "thiserror", +] + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "comfy-table" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e959d788268e3bf9d35ace83e81b124190378e4c91c9067524675e33394b8ba" +dependencies = [ + "crossterm", + "strum 0.24.1", + "strum_macros 0.24.3", + "unicode-width", +] + +[[package]] +name = "common" +version = "0.1.0" +source = "git+https://github.com/w3f/ring-proof?rev=0e948f3#0e948f3c28cbacecdd3020403c4841c0eb339213" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-poly", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "fflonk", + "merlin 3.0.0", +] + +[[package]] +name = "common-path" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2382f75942f4b3be3690fe4f86365e9c853c1587d6ee58212cebf6e2a9ccd101" + +[[package]] +name = "concurrent-queue" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ec6771ecfa0762d24683ee5a32ad78487a3d3afdc0fb8cae19d2c5deb50b7c" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "const-oid" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747" + +[[package]] +name = "const-random" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" +dependencies = [ + "const-random-macro", + "proc-macro-hack", +] + +[[package]] +name = "const-random-macro" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" +dependencies = [ + "getrandom 0.2.10", + "once_cell", + "proc-macro-hack", + "tiny-keccak", +] + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "constant_time_eq" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a53c0a4d288377e7415b53dcfc3c04da5cdc2cc95c8d5ac178b58f0b861ad6" + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "cpp_demangle" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "cpufeatures" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +dependencies = [ + "libc", +] + +[[package]] +name = "cranelift-entity" +version = "0.88.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87a0f1b2fdc18776956370cf8d9b009ded3f855350c480c1c52142510961f352" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-entity" +version = "0.92.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a9e39cfc857e7e539aa623e03bb6bec11f54aef3dfdef41adcfa7b594af3b54" +dependencies = [ + "serde", +] + +[[package]] +name = "cranelift-entity" +version = "0.95.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40099d38061b37e505e63f89bab52199037a72b931ad4868d9089ff7268660b0" +dependencies = [ + "serde", +] + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset 0.9.0", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1cfb3ea8a53f37c40dea2c7bedcbd88bdfae54f5e2175d6ecaff1c988353add" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossterm" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a84cda67535339806297f1b331d6dd6320470d2a0fe65381e79ee9e156dd3d13" +dependencies = [ + "bitflags 1.3.2", + "crossterm_winapi", + "libc", + "mio", + "parking_lot", + "signal-hook", + "signal-hook-mio", + "winapi", +] + +[[package]] +name = "crossterm_winapi" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acdd7c62a3665c7f6830a51635d9ac9b23ed385797f70a83bb8bafe9c572ab2b" +dependencies = [ + "winapi", +] + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-bigint" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4c2f4e1afd912bc40bfd6fed5d9dc1f288e0ba01bfcc835cc5bc3eb13efe15" +dependencies = [ + "generic-array 0.14.7", + "rand_core 0.6.4", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array 0.14.7", + "subtle", +] + +[[package]] +name = "crypto-mac" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" +dependencies = [ + "generic-array 0.14.7", + "subtle", +] + +[[package]] +name = "ctr" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "049bb91fb4aaf0e3c7efa6cd5ef877dbbbd15b39dad06d9948de4ec8a75761ea" +dependencies = [ + "cipher 0.3.0", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher 0.4.4", +] + +[[package]] +name = "curve25519-dalek" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a9b85542f99a2dfa2a1b8e192662741c9859a846b296bef1c92ef9b58b5a216" +dependencies = [ + "byteorder", + "digest 0.8.1", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b9fdf9972b2bd6af2d913799d9ebc165ea4d2e65878e329d9c6b372c4491b61" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.5.1", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "digest 0.10.7", + "fiat-crypto", + "platforms", + "rustc_version 0.4.0", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "curve25519-dalek-ng" +version = "4.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c359b7249347e46fb28804470d071c921156ad62b3eef5d34e2ba867533dec8" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core 0.6.4", + "subtle-ng", + "zeroize", +] + +[[package]] +name = "darling" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850" +dependencies = [ + "darling_core 0.14.4", + "darling_macro 0.14.4", +] + +[[package]] +name = "darling" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" +dependencies = [ + "darling_core 0.20.3", + "darling_macro 0.20.3", +] + +[[package]] +name = "darling_core" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 1.0.109", +] + +[[package]] +name = "darling_core" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.32", +] + +[[package]] +name = "darling_macro" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e" +dependencies = [ + "darling_core 0.14.4", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "darling_macro" +version = "0.20.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" +dependencies = [ + "darling_core 0.20.3", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "data-encoding" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" + +[[package]] +name = "der" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946" +dependencies = [ + "const-oid", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8810e7e2cf385b1e9b50d68264908ec367ba642c96d02edfe61c39e88e2a3c01" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive-syn-parse" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e79116f119dd1dba1abf1f3405f03b9b0e79a27a3883864bfebded8a3dc768cd" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version 0.4.0", + "syn 1.0.109", +] + +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer 0.10.4", + "const-oid", + "crypto-common", + "subtle", +] + +[[package]] +name = "dirs" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.48.0", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "dleq_vrf" +version = "0.0.2" +source = "git+https://github.com/w3f/ring-vrf?rev=3119f51#3119f51b54b69308abfb0671f6176cb125ae1bf1" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-scale", + "ark-secret-scalar", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "ark-transcript", + "arrayvec 0.7.4", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "docify" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76ee528c501ddd15d5181997e9518e59024844eac44fd1e40cb20ddb2a8562fa" +dependencies = [ + "docify_macros", +] + +[[package]] +name = "docify_macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ca01728ab2679c464242eca99f94e2ce0514b52ac9ad950e2ed03fca991231c" +dependencies = [ + "common-path", + "derive-syn-parse", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn 2.0.32", + "termcolor", + "toml", + "walkdir", +] + +[[package]] +name = "downcast-rs" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" + +[[package]] +name = "dunce" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" + +[[package]] +name = "dyn-clonable" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e9232f0e607a262ceb9bd5141a3dfb3e4db6994b31989bbfd845878cba59fd4" +dependencies = [ + "dyn-clonable-impl", + "dyn-clone", +] + +[[package]] +name = "dyn-clonable-impl" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "558e40ea573c374cf53507fd240b7ee2f5477df7cfebdb97323ec61c719399c5" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "dyn-clone" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304e6508efa593091e97a9abbc10f90aa7ca635b6d2784feff3c89d41dd12272" + +[[package]] +name = "ecdsa" +version = "0.16.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +dependencies = [ + "der", + "digest 0.10.7", + "elliptic-curve", + "rfc6979", + "signature 2.1.0", + "spki", +] + +[[package]] +name = "ed25519" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91cff35c70bba8a626e3185d8cd48cc11b5437e1a5bcd15b9b5fa3c64b6dfee7" +dependencies = [ + "signature 1.6.4", +] + +[[package]] +name = "ed25519" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60f6d271ca33075c88028be6f04d502853d63a5ece419d269c15315d4fc1cf1d" +dependencies = [ + "signature 2.1.0", +] + +[[package]] +name = "ed25519-dalek" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" +dependencies = [ + "curve25519-dalek 3.2.0", + "ed25519 1.5.3", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "ed25519-dalek" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7277392b266383ef8396db7fdeb1e77b6c52fed775f5df15bb24f35b72156980" +dependencies = [ + "curve25519-dalek 4.1.1", + "ed25519 2.2.2", + "sha2 0.10.7", +] + +[[package]] +name = "ed25519-zebra" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c24f403d068ad0b359e577a77f92392118be3f3c927538f2bb544a5ecd828c6" +dependencies = [ + "curve25519-dalek 3.2.0", + "hashbrown 0.12.3", + "hex", + "rand_core 0.6.4", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "either" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" + +[[package]] +name = "elliptic-curve" +version = "0.13.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "968405c8fdc9b3bf4df0a6638858cc0b52462836ab6b1c87377785dd09cf1c0b" +dependencies = [ + "base16ct", + "crypto-bigint", + "digest 0.10.7", + "ff", + "generic-array 0.14.7", + "group", + "pkcs8", + "rand_core 0.6.4", + "sec1", + "subtle", + "zeroize", +] + +[[package]] +name = "ena" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c533630cf40e9caa44bd91aadc88a75d75a4c3a12b4cfde353cbed41daa1e1f1" +dependencies = [ + "log", +] + +[[package]] +name = "encoding_rs" +version = "0.8.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "enr" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0be7b2ac146c1f99fe245c02d16af0696450d8e06c135db75e10eeb9e642c20d" +dependencies = [ + "base64 0.21.2", + "bytes", + "hex", + "k256", + "log", + "rand 0.8.5", + "rlp", + "serde", + "serde-hex", + "sha3", + "zeroize", +] + +[[package]] +name = "enumn" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b893c4eb2dc092c811165f84dc7447fae16fb66521717968c34c509b39b1a5c5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "environmental" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48c92028aaa870e83d51c64e5d4e0b6981b360c522198c23959f219a4e1b15b" + +[[package]] +name = "envy" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965" +dependencies = [ + "serde", +] + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" +dependencies = [ + "errno-dragonfly", + "libc", + "winapi", +] + +[[package]] +name = "errno" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes 0.8.3", + "ctr 0.9.2", + "digest 0.10.7", + "hex", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "rand 0.8.5", + "scrypt", + "serde", + "serde_json", + "sha2 0.10.7", + "sha3", + "thiserror", + "uuid", +] + +[[package]] +name = "ethabi" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7413c5f74cc903ea37386a8965a936cbeb334bd270862fdece542c1b2dcbc898" +dependencies = [ + "ethereum-types", + "hex", + "once_cell", + "regex", + "serde", + "serde_json", + "sha3", + "thiserror", + "uint", +] + +[[package]] +name = "ethbloom" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c22d4b5885b6aa2fe5e8b9329fb8d232bf739e434e6b87347c63bdd00c120f60" +dependencies = [ + "crunchy", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "tiny-keccak", +] + +[[package]] +name = "ethereum-types" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02d215cbf040552efcbe99a38372fe80ab9d00268e20012b79fcd0f073edd8ee" +dependencies = [ + "ethbloom", + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "primitive-types", + "scale-info", + "uint", +] + +[[package]] +name = "ethers" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-signers", + "ethers-solc", +] + +[[package]] +name = "ethers-addressbook" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "ethers-core", + "once_cell", + "serde", + "serde_json", +] + +[[package]] +name = "ethers-contract" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "ethers-contract-abigen", + "ethers-contract-derive", + "ethers-core", + "ethers-providers", + "ethers-signers", + "futures-util", + "hex", + "once_cell", + "pin-project", + "serde", + "serde_json", + "thiserror", +] + +[[package]] +name = "ethers-contract-abigen" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "Inflector", + "dunce", + "ethers-core", + "ethers-etherscan", + "eyre", + "hex", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "reqwest", + "serde", + "serde_json", + "syn 2.0.32", + "toml", + "walkdir", +] + +[[package]] +name = "ethers-contract-derive" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "Inflector", + "ethers-contract-abigen", + "ethers-core", + "hex", + "proc-macro2", + "quote", + "serde_json", + "syn 2.0.32", +] + +[[package]] +name = "ethers-core" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "arrayvec 0.7.4", + "bytes", + "cargo_metadata", + "chrono", + "elliptic-curve", + "ethabi", + "generic-array 0.14.7", + "hex", + "k256", + "num_enum", + "once_cell", + "open-fastrlp", + "rand 0.8.5", + "rlp", + "serde", + "serde_json", + "strum 0.25.0", + "syn 2.0.32", + "tempfile", + "thiserror", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "ethers-etherscan" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "ethers-core", + "ethers-solc", + "reqwest", + "semver 1.0.18", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "ethers-middleware" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "async-trait", + "auto_impl", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-signers", + "futures-channel", + "futures-locks", + "futures-util", + "instant", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "tracing-futures", + "url", +] + +[[package]] +name = "ethers-providers" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "async-trait", + "auto_impl", + "base64 0.21.2", + "bytes", + "enr", + "ethers-core", + "futures-core", + "futures-timer", + "futures-util", + "hashers", + "hex", + "http", + "instant", + "once_cell", + "pin-project", + "reqwest", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-tungstenite", + "tracing", + "tracing-futures", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "ws_stream_wasm", +] + +[[package]] +name = "ethers-signers" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "async-trait", + "coins-bip32", + "coins-bip39", + "elliptic-curve", + "eth-keystore", + "ethers-core", + "hex", + "rand 0.8.5", + "sha2 0.10.7", + "thiserror", + "tracing", +] + +[[package]] +name = "ethers-solc" +version = "2.0.8" +source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8" +dependencies = [ + "cfg-if", + "dirs", + "dunce", + "ethers-core", + "futures-util", + "glob", + "hex", + "home", + "md-5", + "num_cpus", + "once_cell", + "path-slash", + "rayon", + "regex", + "semver 1.0.18", + "serde", + "serde_json", + "sha2 0.10.7", + "solang-parser", + "svm-rs", + "svm-rs-builds", + "thiserror", + "tiny-keccak", + "tokio", + "tracing", + "walkdir", + "yansi 0.5.1", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "expander" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f86a749cf851891866c10515ef6c299b5c69661465e9c3bbe7e07a2b77fb0f7" +dependencies = [ + "blake2", + "fs-err", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "eyre" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fastrand" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" +dependencies = [ + "instant", +] + +[[package]] +name = "fastrand" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" + +[[package]] +name = "fastrlp" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139834ddba373bbdd213dffe02c8d110508dcf1726c2be27e8d1f7d7e1856418" +dependencies = [ + "arrayvec 0.7.4", + "auto_impl", + "bytes", +] + +[[package]] +name = "ff" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ded41244b729663b1e574f1b4fb731469f69f79c17667b5d776b16cda0479449" +dependencies = [ + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "fflonk" +version = "0.1.0" +source = "git+https://github.com/w3f/fflonk#26a5045b24e169cffc1f9328ca83d71061145c40" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-poly", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "merlin 3.0.0", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0870c84016d4b481be5c9f323c24f65e31e901ae618f0e80f4308fb00de1d2d" + +[[package]] +name = "figment" +version = "0.10.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4547e226f4c9ab860571e070a9034192b3175580ecea38da34fcdb53a018c9a5" +dependencies = [ + "atomic", + "pear", + "serde", + "toml", + "uncased", + "version_check", +] + +[[package]] +name = "fixed-hash" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "835c052cb0c08c1acf6ffd71c022172e18723949c8282f2b9f27efbc51e64534" +dependencies = [ + "byteorder", + "rand 0.8.5", + "rustc-hex", + "static_assertions", +] + +[[package]] +name = "fixedbitset" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" + +[[package]] +name = "flate2" +version = "1.0.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "forge" +version = "0.2.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "comfy-table", + "ethers", + "eyre", + "foundry-common", + "foundry-config", + "foundry-evm", + "foundry-utils", + "glob", + "hex", + "once_cell", + "parking_lot", + "proptest", + "rayon", + "regex", + "rlp", + "semver 1.0.18", + "serde", + "serde_json", + "tokio", + "tracing", + "tracing-subscriber 0.3.17", + "yansi 0.5.1", +] + +[[package]] +name = "forge-fmt" +version = "0.2.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "ariadne", + "ethers-core", + "foundry-config", + "itertools", + "semver 1.0.18", + "solang-parser", + "thiserror", + "tracing", +] + +[[package]] +name = "form_urlencoded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "foundry-abi" +version = "0.1.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "ethers-contract", + "ethers-contract-abigen", + "ethers-core", + "ethers-providers", + "eyre", + "foundry-macros", + "syn 2.0.32", +] + +[[package]] +name = "foundry-common" +version = "0.1.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "auto_impl", + "clap", + "comfy-table", + "dunce", + "ethers-core", + "ethers-etherscan", + "ethers-middleware", + "ethers-providers", + "ethers-solc", + "eyre", + "foundry-config", + "foundry-macros", + "globset", + "once_cell", + "regex", + "reqwest", + "semver 1.0.18", + "serde", + "serde_json", + "tempfile", + "thiserror", + "tracing", + "walkdir", + "yansi 0.5.1", +] + +[[package]] +name = "foundry-config" +version = "0.2.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "Inflector", + "dirs-next", + "ethers-core", + "ethers-etherscan", + "ethers-solc", + "eyre", + "figment", + "globset", + "number_prefix", + "once_cell", + "open-fastrlp", + "path-slash", + "regex", + "reqwest", + "semver 1.0.18", + "serde", + "serde_json", + "serde_regex", + "thiserror", + "toml", + "toml_edit", + "tracing", + "walkdir", +] + +[[package]] +name = "foundry-evm" +version = "0.2.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "auto_impl", + "bytes", + "ethers", + "eyre", + "foundry-abi", + "foundry-common", + "foundry-config", + "foundry-macros", + "foundry-utils", + "futures", + "hashbrown 0.13.2", + "hex", + "itertools", + "jsonpath_lib", + "once_cell", + "ordered-float", + "parking_lot", + "proptest", + "revm", + "semver 1.0.18", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", + "url", + "walkdir", + "yansi 0.5.1", +] + +[[package]] +name = "foundry-macros" +version = "0.2.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "ethers-core", + "foundry-macros-impl", + "serde", + "serde_json", +] + +[[package]] +name = "foundry-macros-impl" +version = "0.0.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "foundry-utils" +version = "0.2.0" +source = "git+https://github.com/foundry-rs/foundry?rev=25d3ce7ca1eed4a9f1776103185e4221e8fa0a11#25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" +dependencies = [ + "dunce", + "ethers-addressbook", + "ethers-contract", + "ethers-core", + "ethers-etherscan", + "ethers-providers", + "ethers-solc", + "eyre", + "forge-fmt", + "futures", + "glob", + "hex", + "once_cell", + "rand 0.8.5", + "reqwest", + "rlp", + "rustc-hex", + "serde", + "serde_json", + "tokio", + "tracing", +] + +[[package]] +name = "frame-benchmarking" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-support", + "frame-support-procedural", + "frame-system", + "linregress", + "log", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime-interface 17.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-storage 13.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "static_assertions", +] + +[[package]] +name = "frame-metadata" +version = "15.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "878babb0b136e731cc77ec2fd883ff02745ff21e6fb662729953d44923df009c" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", +] + +[[package]] +name = "frame-metadata" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cf1549fba25a6fcac22785b61698317d958e96cac72a59102ea45b9ae64692" +dependencies = [ + "cfg-if", + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "frame-support" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "aquamarine", + "bitflags 1.3.2", + "docify", + "environmental", + "frame-metadata 16.0.0", + "frame-support-procedural", + "impl-trait-for-tuples", + "k256", + "log", + "macro_magic", + "parity-scale-codec", + "paste", + "scale-info", + "serde", + "serde_json", + "smallvec 1.11.0", + "sp-api", + "sp-arithmetic 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-core-hashing-proc-macro", + "sp-debug-derive 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-genesis-builder", + "sp-inherents", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-metadata-ir", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-staking", + "sp-state-machine 0.28.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-tracing 10.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-weights 20.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "static_assertions", + "tt-call", +] + +[[package]] +name = "frame-support-procedural" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "Inflector", + "cfg-expr", + "derive-syn-parse", + "expander", + "frame-support-procedural-tools", + "itertools", + "macro_magic", + "proc-macro-warning", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "frame-support-procedural-tools" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-support-procedural-tools-derive", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "frame-support-procedural-tools-derive" +version = "3.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "frame-system" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "cfg-if", + "frame-support", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-version", + "sp-weights 20.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "fs-err" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541" + +[[package]] +name = "fs2" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9564fc758e15025b46aa6643b1b77d047d1a56a1aea6e01002ac0c7026876213" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + +[[package]] +name = "futures" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" + +[[package]] +name = "futures-executor" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", + "num_cpus", +] + +[[package]] +name = "futures-io" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" + +[[package]] +name = "futures-lite" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +dependencies = [ + "fastrand 1.9.0", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite", + "waker-fn", +] + +[[package]] +name = "futures-locks" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ec6fe3675af967e67c5536c0b9d44e34e6c52f86bedc4ea49c5317b8e94d06" +dependencies = [ + "futures-channel", + "futures-task", +] + +[[package]] +name = "futures-macro" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "futures-sink" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" + +[[package]] +name = "futures-task" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" + +[[package]] +name = "futures-timer" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" +dependencies = [ + "gloo-timers", + "send_wrapper 0.4.0", +] + +[[package]] +name = "futures-util" +version = "0.3.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", + "zeroize", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "ghash" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1583cc1656d7839fd3732b80cf4f38850336cdb9b8ded1cd399ca62958de3c99" +dependencies = [ + "opaque-debug 0.3.0", + "polyval", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" +dependencies = [ + "fallible-iterator", + "stable_deref_trait", +] + +[[package]] +name = "gimli" +version = "0.27.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +dependencies = [ + "fallible-iterator", + "indexmap 1.9.3", + "stable_deref_trait", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aca8bbd8e0707c1887a8bbb7e6b40e228f251ff5d62c8220a4a7a53c73aff006" +dependencies = [ + "aho-corasick", + "bstr", + "fnv", + "log", + "regex", +] + +[[package]] +name = "gloo-timers" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "group" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0f9ef7462f7c099f518d754361858f86d8a07af53ba9af0fe635bbccb151a63" +dependencies = [ + "ff", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "h2" +version = "0.3.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97ec8491ebaf99c8eaa73058b045fe58073cd6be7f596ac993ced0b0a0c01049" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap 1.9.3", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hash-db" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23bd4e7b5eda0d0f3a307e8b381fdc8ba9000f26fbe912250c0a4cc3956364a" + +[[package]] +name = "hash-db" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e7d7786361d7425ae2fe4f9e407eb0efaa0840f5212d109cc018c40c35c6ab4" + +[[package]] +name = "hash256-std-hasher" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92c171d55b98633f4ed3860808f004099b36c1cc29c42cfc53aa8591b21efcf2" +dependencies = [ + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash 0.7.6", +] + +[[package]] +name = "hashbrown" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +dependencies = [ + "ahash 0.8.3", + "serde", +] + +[[package]] +name = "hashbrown" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +dependencies = [ + "serde", +] + +[[package]] +name = "hashers" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2bca93b15ea5a746f220e56587f71e73c6165eab783df9e26590069953e3c30" +dependencies = [ + "fxhash", +] + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +dependencies = [ + "serde", +] + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac 0.8.0", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" +dependencies = [ + "crypto-mac 0.11.1", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "hmac-drbg" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17ea0a1394df5b6574da6e0c1ade9e78868c9fb0a4e5ef4428e32da4676b85b1" +dependencies = [ + "digest 0.9.0", + "generic-array 0.14.7", + "hmac 0.8.1", +] + +[[package]] +name = "home" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "http" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +dependencies = [ + "http", + "hyper", + "log", + "rustls 0.20.8", + "rustls-native-certs", + "tokio", + "tokio-rustls 0.23.4", + "webpki-roots 0.22.6", +] + +[[package]] +name = "hyper-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +dependencies = [ + "futures-util", + "http", + "hyper", + "rustls 0.21.5", + "tokio", + "tokio-rustls 0.24.1", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "impl-codec" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba6a270039626615617f3f36d15fc827041df3b78c439da2cadfa47455a77f2f" +dependencies = [ + "parity-scale-codec", +] + +[[package]] +name = "impl-rlp" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f28220f89297a075ddc7245cd538076ee98b01f2a9c23a53a4f1105d5a322808" +dependencies = [ + "rlp", +] + +[[package]] +name = "impl-serde" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc88fc67028ae3db0c853baa36269d398d5f45b6982f95549ff5def78c935cd" +dependencies = [ + "serde", +] + +[[package]] +name = "impl-trait-for-tuples" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "include_dir" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" +dependencies = [ + "include_dir_macros", +] + +[[package]] +name = "include_dir_macros" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +dependencies = [ + "equivalent", + "hashbrown 0.14.0", +] + +[[package]] +name = "indexmap-nostd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e04e2fd2b8188ea827b32ef11de88377086d690286ab35747ef7f9bf3ccb590" + +[[package]] +name = "inlinable_string" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8fae54786f62fb2918dcfae3d568594e50eb9b5c25bf04371af6fe7516452fb" + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array 0.14.7", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "integer-sqrt" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "276ec31bcb4a9ee45f58bec6f9ec700ae4cf4f4f8f2fa7e06cb406bd5ffdd770" +dependencies = [ + "num-traits", +] + +[[package]] +name = "intx" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f38a50a899dc47a6d0ed5508e7f601a2e34c3a85303514b5d137f3c10a0c75" + +[[package]] +name = "io-lifetimes" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ce5ef949d49ee85593fc4d3f3f95ad61657076395cbbce23e2121fc5542074" + +[[package]] +name = "io-lifetimes" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.48.0", +] + +[[package]] +name = "ipnet" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi", + "rustix 0.38.4", + "windows-sys 0.48.0", +] + +[[package]] +name = "ismp" +version = "0.1.0" +dependencies = [ + "ckb-merkle-mountain-range 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "derive_more", + "frame-support", + "frame-system", + "parity-scale-codec", + "primitive-types", + "scale-info", + "serde", + "serde_json", + "sp-consensus-aura", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "ismp-solidity-test" +version = "0.1.0" +dependencies = [ + "anyhow", + "beefy-prover", + "beefy-verifier-primitives", + "bytes", + "ckb-merkle-mountain-range 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "ckb-merkle-mountain-range 0.5.2 (git+https://github.com/polytope-labs/merkle-mountain-range?branch=seun/simplified-mmr)", + "envy", + "ethers", + "forge", + "foundry-common", + "foundry-config", + "foundry-evm", + "futures", + "hex", + "hex-literal", + "ismp", + "libfuzzer-sys", + "once_cell", + "parity-scale-codec", + "primitive-types", + "rs_merkle", + "serde", + "sp-consensus-beefy", + "sp-core 17.0.0", + "sp-runtime 17.0.0", + "sp-trie 17.0.0", + "subxt", + "tokio", + "tracing", + "tracing-subscriber 0.3.17", + "trie-db 0.24.0", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" + +[[package]] +name = "jobserver" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +dependencies = [ + "libc", +] + +[[package]] +name = "js-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonpath_lib" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaa63191d68230cccb81c5aa23abd53ed64d83337cacbb25a7b8c7979523774f" +dependencies = [ + "log", + "serde", + "serde_json", +] + +[[package]] +name = "jsonrpsee" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d291e3a5818a2384645fd9756362e6d89cf0541b0b916fa7702ea4a9833608e" +dependencies = [ + "jsonrpsee-client-transport", + "jsonrpsee-core", + "jsonrpsee-http-client", + "jsonrpsee-proc-macros", + "jsonrpsee-server", + "jsonrpsee-types", + "tracing", +] + +[[package]] +name = "jsonrpsee-client-transport" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965de52763f2004bc91ac5bcec504192440f0b568a5d621c59d9dbd6f886c3fb" +dependencies = [ + "futures-util", + "http", + "jsonrpsee-core", + "jsonrpsee-types", + "pin-project", + "rustls-native-certs", + "soketto", + "thiserror", + "tokio", + "tokio-rustls 0.23.4", + "tokio-util", + "tracing", + "webpki-roots 0.22.6", +] + +[[package]] +name = "jsonrpsee-core" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e70b4439a751a5de7dd5ed55eacff78ebf4ffe0fc009cb1ebb11417f5b536b" +dependencies = [ + "anyhow", + "arrayvec 0.7.4", + "async-lock", + "async-trait", + "beef", + "futures-channel", + "futures-timer", + "futures-util", + "globset", + "hyper", + "jsonrpsee-types", + "parking_lot", + "rand 0.8.5", + "rustc-hash", + "serde", + "serde_json", + "soketto", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-http-client" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc345b0a43c6bc49b947ebeb936e886a419ee3d894421790c969cc56040542ad" +dependencies = [ + "async-trait", + "hyper", + "hyper-rustls 0.23.2", + "jsonrpsee-core", + "jsonrpsee-types", + "rustc-hash", + "serde", + "serde_json", + "thiserror", + "tokio", + "tracing", +] + +[[package]] +name = "jsonrpsee-proc-macros" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baa6da1e4199c10d7b1d0a6e5e8bd8e55f351163b6f4b3cbb044672a69bd4c1c" +dependencies = [ + "heck", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "jsonrpsee-server" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fb69dad85df79527c019659a992498d03f8495390496da2f07e6c24c2b356fc" +dependencies = [ + "futures-channel", + "futures-util", + "http", + "hyper", + "jsonrpsee-core", + "jsonrpsee-types", + "serde", + "serde_json", + "soketto", + "tokio", + "tokio-stream", + "tokio-util", + "tower", + "tracing", +] + +[[package]] +name = "jsonrpsee-types" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bd522fe1ce3702fd94812965d7bb7a3364b1c9aba743944c5a00529aae80f8c" +dependencies = [ + "anyhow", + "beef", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "k256" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cadb76004ed8e97623117f3df85b17aaa6626ab0b0831e6573f104df16cd1bcc" +dependencies = [ + "cfg-if", + "ecdsa", + "elliptic-curve", + "once_cell", + "sha2 0.10.7", + "signature 2.1.0", +] + +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + +[[package]] +name = "kvdb" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7d770dcb02bf6835887c3a979b5107a04ff4bbde97a5f0928d27404a155add9" +dependencies = [ + "smallvec 1.11.0", +] + +[[package]] +name = "lalrpop" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da4081d44f4611b66c6dd725e6de3169f9f63905421e8626fcb86b6a898998b8" +dependencies = [ + "ascii-canvas", + "bit-set", + "diff", + "ena", + "is-terminal", + "itertools", + "lalrpop-util", + "petgraph", + "regex", + "regex-syntax 0.7.4", + "string_cache", + "term", + "tiny-keccak", + "unicode-xid", +] + +[[package]] +name = "lalrpop-util" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f35c735096c0293d313e8f2a641627472b83d01b937177fe76e5e2708d31e0d" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +dependencies = [ + "spin 0.5.2", +] + +[[package]] +name = "libc" +version = "0.2.147" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" + +[[package]] +name = "libfuzzer-sys" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "beb09950ae85a0a94b27676cccf37da5ff13f27076aa1adbc6545dd0d0e1bd4e" +dependencies = [ + "arbitrary", + "cc", + "once_cell", +] + +[[package]] +name = "libm" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" + +[[package]] +name = "libsecp256k1" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95b09eff1b35ed3b33b877ced3a691fc7a481919c7e29c53c906226fcf55e2a1" +dependencies = [ + "arrayref", + "base64 0.13.1", + "digest 0.9.0", + "hmac-drbg", + "libsecp256k1-core", + "libsecp256k1-gen-ecmult", + "libsecp256k1-gen-genmult", + "rand 0.8.5", + "serde", + "sha2 0.9.9", + "typenum", +] + +[[package]] +name = "libsecp256k1-core" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be9b9bb642d8522a44d533eab56c16c738301965504753b03ad1de3425d5451" +dependencies = [ + "crunchy", + "digest 0.9.0", + "subtle", +] + +[[package]] +name = "libsecp256k1-gen-ecmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3038c808c55c87e8a172643a7d87187fc6c4174468159cb3090659d55bcb4809" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "libsecp256k1-gen-genmult" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db8d6ba2cec9eacc40e6e8ccc98931840301f1006e95647ceb2dd5c3aa06f7c" +dependencies = [ + "libsecp256k1-core", +] + +[[package]] +name = "linregress" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4de0b5f52a9f84544d268f5fabb71b38962d6aa3c6600b8bcd27d44ccf9c9c45" +dependencies = [ + "nalgebra", +] + +[[package]] +name = "linux-raw-sys" +version = "0.0.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" + +[[package]] +name = "linux-raw-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" + +[[package]] +name = "linux-raw-sys" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" + +[[package]] +name = "linux-raw-sys" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" + +[[package]] +name = "lock_api" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b06a4cde4c0f271a446782e3eff8de789548ce57dbc8eca9292c27f4a42004b4" + +[[package]] +name = "lru" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" + +[[package]] +name = "mach" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +dependencies = [ + "libc", +] + +[[package]] +name = "macro_magic" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aee866bfee30d2d7e83835a4574aad5b45adba4cc807f2a3bbba974e5d4383c9" +dependencies = [ + "macro_magic_core", + "macro_magic_macros", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "macro_magic_core" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e766a20fd9c72bab3e1e64ed63f36bd08410e75803813df210d1ce297d7ad00" +dependencies = [ + "const-random", + "derive-syn-parse", + "macro_magic_core_macros", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "macro_magic_core_macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c12469fc165526520dff2807c2975310ab47cf7190a45b99b49a7dc8befab17b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "macro_magic_macros" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fb85ec1620619edf2984a7693497d4ec88a9665d8b87e942856884c92dbf2a" +dependencies = [ + "macro_magic_core", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "matchers" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +dependencies = [ + "regex-automata 0.1.10", +] + +[[package]] +name = "matrixmultiply" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "090126dc04f95dc0d1c1c91f61bdd474b3930ca064c1edc8a849da2c6cbe1e77" +dependencies = [ + "autocfg", + "rawpointer", +] + +[[package]] +name = "maybe-uninit" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" + +[[package]] +name = "md-5" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memfd" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc89ccdc6e10d6907450f753537ebc5c5d3460d2e4e62ea74bd571db62c0f9e" +dependencies = [ + "rustix 0.37.23", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memory-db" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e0c7cba9ce19ac7ffd2053ac9f49843bbd3f4318feedfd74e85c19d5fb0ba66" +dependencies = [ + "hash-db 0.15.2", + "hashbrown 0.12.3", +] + +[[package]] +name = "memory-db" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808b50db46293432a45e63bc15ea51e0ab4c0a1647b8eb114e31a3e698dd6fbe" +dependencies = [ + "hash-db 0.16.0", +] + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "merlin" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.5.1", + "zeroize", +] + +[[package]] +name = "merlin" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58c38e2799fc0978b65dfff8023ec7843e2330bb462f19198840b34b6582397d" +dependencies = [ + "byteorder", + "keccak", + "rand_core 0.6.4", + "zeroize", +] + +[[package]] +name = "micromath" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39617bc909d64b068dcffd0e3e31679195b5576d0c83fadc52690268cc2b2b55" + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys 0.48.0", +] + +[[package]] +name = "mmr-rpc" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "anyhow", + "jsonrpsee", + "parity-scale-codec", + "serde", + "sp-api", + "sp-blockchain", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-mmr-primitives", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "nalgebra" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "307ed9b18cc2423f29e83f84fd23a8e73628727990181f18641a8b5dc2ab1caa" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91761aed67d03ad966ef783ae962ef9bbaca728d2dd7ceb7939ec110fffad998" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "no-std-net" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43794a0ace135be66a25d3ae77d41b91615fb68ae937f904090203e81f755b65" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "nohash-hasher" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + +[[package]] +name = "num" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af" +dependencies = [ + "num-bigint", + "num-complex", + "num-integer", + "num-iter", + "num-rational", + "num-traits", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-complex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-format" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a652d9771a63711fd3c3deb670acfbe5c30a4072e664d7a3bf5a9e1056ac72c3" +dependencies = [ + "arrayvec 0.7.4", + "itoa", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-iter" +version = "0.1.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-bigint", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +dependencies = [ + "autocfg", + "libm", +] + +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a015b430d3c108a207fd776d2e2196aaf8b1cf8cf93253e3a097ff3085076a1" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96667db765a921f7b295ffee8b60472b686a51d4f21c2ee4ffdb94c7013b65a6" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "number_prefix" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" + +[[package]] +name = "object" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +dependencies = [ + "crc32fast", + "hashbrown 0.12.3", + "indexmap 1.9.3", + "memchr", +] + +[[package]] +name = "object" +version = "0.30.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03b4680b86d9cfafba8fc491dc9b6df26b68cf40e9e6cd73909194759a63c385" +dependencies = [ + "crc32fast", + "hashbrown 0.13.2", + "indexmap 1.9.3", + "memchr", +] + +[[package]] +name = "object" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +dependencies = [ + "memchr", +] + +[[package]] +name = "once_cell" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "open-fastrlp" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "786393f80485445794f6043fd3138854dd109cc6c4bd1a6383db304c9ce9b9ce" +dependencies = [ + "arrayvec 0.7.4", + "auto_impl", + "bytes", + "ethereum-types", + "open-fastrlp-derive", +] + +[[package]] +name = "open-fastrlp-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "003b2be5c6c53c1cfeb0a238b8a1c3915cd410feb684457a36c10038f764bb1c" +dependencies = [ + "bytes", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "ordered-float" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fc2dbde8f8a79f2102cc474ceb0ad68e3b80b85289ea62389b60e66777e4213" +dependencies = [ + "num-traits", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "pallet-authorship" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "pallet-beefy" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-support", + "frame-system", + "log", + "pallet-authorship", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-consensus-beefy", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-session", + "sp-staking", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "pallet-beefy-mmr" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "array-bytes 6.1.0", + "binary-merkle-tree", + "frame-support", + "frame-system", + "log", + "pallet-beefy", + "pallet-mmr", + "pallet-session", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-consensus-beefy", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-state-machine 0.28.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "pallet-mmr" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-mmr-primitives", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "pallet-session" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-support", + "frame-system", + "impl-trait-for-tuples", + "log", + "pallet-timestamp", + "parity-scale-codec", + "scale-info", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-session", + "sp-staking", + "sp-state-machine 0.28.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "pallet-timestamp" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-benchmarking", + "frame-support", + "frame-system", + "log", + "parity-scale-codec", + "scale-info", + "sp-inherents", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-storage 13.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-timestamp", +] + +[[package]] +name = "parity-scale-codec" +version = "3.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd8e946cc0cc711189c0b0249fb8b599cbeeab9784d83c415719368bb8d4ac64" +dependencies = [ + "arrayvec 0.7.4", + "bitvec 1.0.1", + "byte-slice-cast", + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec-derive", + "serde", +] + +[[package]] +name = "parity-scale-codec-derive" +version = "3.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a296c3079b5fefbc499e1de58dc26c09b1b9a5952d26694ee89f04a43ebbb3e" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "parity-wasm" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1ad0aff30c1da14b1254fcb2af73e1fa9a28670e584a626f53a369d0e157304" + +[[package]] +name = "parking" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14f2252c834a40ed9bb5422029649578e63aa341ac401f74e719dd1afda8394e" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall 0.3.5", + "smallvec 1.11.0", + "windows-targets 0.48.1", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", +] + +[[package]] +name = "paste" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" + +[[package]] +name = "path-slash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" + +[[package]] +name = "pbkdf2" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95f5254224e617595d2cc3cc73ff0a5eaf2637519e25f03388154e9378b6ffa" +dependencies = [ + "crypto-mac 0.11.1", +] + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", + "password-hash", + "sha2 0.10.7", +] + +[[package]] +name = "pbkdf2" +version = "0.12.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" +dependencies = [ + "digest 0.10.7", + "hmac 0.12.1", +] + +[[package]] +name = "pear" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a386cd715229d399604b50d1361683fe687066f42d56f54be995bc6868f71c" +dependencies = [ + "inlinable_string", + "pear_codegen", + "yansi 1.0.0-rc", +] + +[[package]] +name = "pear_codegen" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da9f0f13dac8069c139e8300a6510e3f4143ecf5259c60b116a9b271b4ca0d54" +dependencies = [ + "proc-macro2", + "proc-macro2-diagnostics", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "percent-encoding" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" + +[[package]] +name = "pest" +version = "2.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a" +dependencies = [ + "thiserror", + "ucd-trie", +] + +[[package]] +name = "petgraph" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +dependencies = [ + "fixedbitset", + "indexmap 1.9.3", +] + +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + +[[package]] +name = "phf" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +dependencies = [ + "phf_macros", + "phf_shared 0.11.2", +] + +[[package]] +name = "phf_generator" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +dependencies = [ + "phf_shared 0.11.2", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" +dependencies = [ + "phf_generator", + "phf_shared 0.11.2", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkcs8" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" +dependencies = [ + "der", + "spki", +] + +[[package]] +name = "pkg-config" +version = "0.3.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" + +[[package]] +name = "platforms" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d7ddaed09e0eb771a79ab0fd64609ba0afb0a8366421957936ad14cbd13630" + +[[package]] +name = "polling" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +dependencies = [ + "autocfg", + "bitflags 1.3.2", + "cfg-if", + "concurrent-queue", + "libc", + "log", + "pin-project-lite", + "windows-sys 0.48.0", +] + +[[package]] +name = "poly1305" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "048aeb476be11a4b6ca432ca569e375810de9294ae78f4774e78ea98a9246ede" +dependencies = [ + "cpufeatures", + "opaque-debug 0.3.0", + "universal-hash", +] + +[[package]] +name = "polyval" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8419d2b623c7c0896ff2d5d96e2cb4ede590fed28fcc34934f4c33c036e620a1" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug 0.3.0", + "universal-hash", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" +dependencies = [ + "proc-macro2", + "syn 2.0.32", +] + +[[package]] +name = "primitive-types" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3486ccba82358b11a77516035647c34ba167dfa53312630de83b12bd4f3d66" +dependencies = [ + "fixed-hash", + "impl-codec", + "impl-rlp", + "impl-serde", + "scale-info", + "uint", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro-warning" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1eaa7fa0aa1929ffdf7eeb6eac234dde6268914a14ad44d23521ab6a9b258e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "proc-macro2" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "proc-macro2-diagnostics" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", + "version_check", + "yansi 1.0.0-rc", +] + +[[package]] +name = "proptest" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e35c06b98bf36aba164cc17cb25f7e232f5c4aeea73baa14b8a9f0d92dbfa65" +dependencies = [ + "bit-set", + "bitflags 1.3.2", + "byteorder", + "lazy_static", + "num-traits", + "rand 0.8.5", + "rand_chacha 0.3.1", + "rand_xorshift", + "regex-syntax 0.6.29", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "psm" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +dependencies = [ + "cc", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "radium" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" + +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.10", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_xorshift" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" +dependencies = [ + "rand_core 0.6.4", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +dependencies = [ + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_syscall" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +dependencies = [ + "bitflags 1.3.2", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.10", + "redox_syscall 0.2.16", + "thiserror", +] + +[[package]] +name = "ref-cast" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61ef7e18e8841942ddb1cf845054f8008410030a3997875d9e49b7a363063df1" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfaf0c85b766276c797f3791f5bc6d5bd116b41d53049af2789666b0c0bc9fa" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "regex" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata 0.3.4", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7b6d6190b7594385f61bd3911cd1be99dfddcfc365a4160cc2ab5bff4aed294" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.7.4", +] + +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + +[[package]] +name = "regex-syntax" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" + +[[package]] +name = "reqwest" +version = "0.11.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cde824a14b7c14f85caff81225f411faacc04a2013f41670f41443742b1c1c55" +dependencies = [ + "base64 0.21.2", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-rustls 0.24.1", + "ipnet", + "js-sys", + "log", + "mime", + "once_cell", + "percent-encoding", + "pin-project-lite", + "rustls 0.21.5", + "rustls-pemfile", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-rustls 0.24.1", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots 0.22.6", + "winreg", +] + +[[package]] +name = "revm" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f293f351c4c203d321744e54ed7eed3d2b6eef4c140228910dde3ac9a5ea8031" +dependencies = [ + "auto_impl", + "revm-interpreter", + "revm-precompile", + "serde", + "serde_json", +] + +[[package]] +name = "revm-interpreter" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a53980a26f9b5a66d13511c35074d4b53631e157850a1d7cf1af4efc2c2b72c9" +dependencies = [ + "derive_more", + "enumn", + "revm-primitives", + "serde", + "sha3", +] + +[[package]] +name = "revm-precompile" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41320af3bd6a65153d38eb1d3638ba89104cc9513c7feedb2d8510e8307dab29" +dependencies = [ + "k256", + "num", + "once_cell", + "revm-primitives", + "ripemd", + "sha2 0.10.7", + "sha3", + "substrate-bn", +] + +[[package]] +name = "revm-primitives" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "304d998f466ffef72d76c7f20b05bf08a96801736a6fb1fdef47d49a292618df" +dependencies = [ + "auto_impl", + "bitvec 1.0.1", + "bytes", + "derive_more", + "enumn", + "fixed-hash", + "hashbrown 0.13.2", + "hex", + "hex-literal", + "primitive-types", + "rlp", + "ruint", + "serde", + "sha3", +] + +[[package]] +name = "rfc6979" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" +dependencies = [ + "hmac 0.12.1", + "subtle", +] + +[[package]] +name = "ring" +version = "0.1.0" +source = "git+https://github.com/w3f/ring-proof?rev=0e948f3#0e948f3c28cbacecdd3020403c4841c0eb339213" +dependencies = [ + "ark-ec", + "ark-ff 0.4.2", + "ark-poly", + "ark-serialize 0.4.2", + "ark-std 0.4.0", + "common", + "fflonk", + "merlin 3.0.0", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin 0.5.2", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "ripemd" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd124222d17ad93a644ed9d011a40f4fb64aa54275c08cc216524a9ea82fb09f" +dependencies = [ + "digest 0.10.7", +] + +[[package]] +name = "rlp" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb919243f34364b6bd2fc10ef797edbfa75f33c252e7998527479c6d6b47e1ec" +dependencies = [ + "bytes", + "rlp-derive", + "rustc-hex", +] + +[[package]] +name = "rlp-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e33d7b2abe0c340d8797fe2907d3f20d3b5ea5908683618bfe80df7f621f672a" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "rs_merkle" +version = "1.2.0" +source = "git+https://github.com/polytope-labs/rs-merkle?branch=seun/2d-merkle-proofs#02750ca0b3a93dc9b53c826b58692b3c1cf7e2a7" +dependencies = [ + "micromath", + "sha2 0.10.7", +] + +[[package]] +name = "ruint" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95294d6e3a6192f3aabf91c38f56505a625aa495533442744185a36d75a790c4" +dependencies = [ + "alloy-rlp", + "ark-ff 0.3.0", + "ark-ff 0.4.2", + "bytes", + "fastrlp", + "num-bigint", + "parity-scale-codec", + "primitive-types", + "proptest", + "rand 0.8.5", + "rlp", + "ruint-macro", + "serde", + "valuable", + "zeroize", +] + +[[package]] +name = "ruint-macro" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09" + +[[package]] +name = "rustc-demangle" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustc-hash" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" + +[[package]] +name = "rustc-hex" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" + +[[package]] +name = "rustc_version" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0dfe2087c51c460008730de8b57e6a320782fbfb312e1f4d520e6c6fae155ee" +dependencies = [ + "semver 0.11.0", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver 1.0.18", +] + +[[package]] +name = "rustix" +version = "0.35.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6380889b07a03b5ecf1d44dc9ede6fd2145d84b502a2a9ca0b03c48e0cc3220f" +dependencies = [ + "bitflags 1.3.2", + "errno 0.2.8", + "io-lifetimes 0.7.5", + "libc", + "linux-raw-sys 0.0.46", + "windows-sys 0.42.0", +] + +[[package]] +name = "rustix" +version = "0.36.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c37f1bd5ef1b5422177b7646cba67430579cfe2ace80f284fee876bca52ad941" +dependencies = [ + "bitflags 1.3.2", + "errno 0.3.2", + "io-lifetimes 1.0.11", + "libc", + "linux-raw-sys 0.1.4", + "windows-sys 0.45.0", +] + +[[package]] +name = "rustix" +version = "0.37.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d69718bf81c6127a49dc64e44a742e8bb9213c0ff8869a22c308f84c1d4ab06" +dependencies = [ + "bitflags 1.3.2", + "errno 0.3.2", + "io-lifetimes 1.0.11", + "libc", + "linux-raw-sys 0.3.8", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustix" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a962918ea88d644592894bc6dc55acc6c0956488adcebbfb6e273506b7fd6e5" +dependencies = [ + "bitflags 2.3.3", + "errno 0.3.2", + "libc", + "linux-raw-sys 0.4.5", + "windows-sys 0.48.0", +] + +[[package]] +name = "rustls" +version = "0.20.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +dependencies = [ + "log", + "ring 0.16.20", + "sct", + "webpki", +] + +[[package]] +name = "rustls" +version = "0.21.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36" +dependencies = [ + "log", + "ring 0.16.20", + "rustls-webpki 0.101.2", + "sct", +] + +[[package]] +name = "rustls-native-certs" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" +dependencies = [ + "openssl-probe", + "rustls-pemfile", + "schannel", + "security-framework", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +dependencies = [ + "base64 0.21.2", +] + +[[package]] +name = "rustls-webpki" +version = "0.100.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b" +dependencies = [ + "ring 0.16.20", + "untrusted", +] + +[[package]] +name = "rustls-webpki" +version = "0.101.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513722fd73ad80a71f72b61009ea1b584bcfa1483ca93949c8f290298837fa59" +dependencies = [ + "ring 0.16.20", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" + +[[package]] +name = "rusty-fork" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb3dcc6e454c328bb824492db107ab7c0ae8fcffe4ad210136ef014458c1bc4f" +dependencies = [ + "fnv", + "quick-error", + "tempfile", + "wait-timeout", +] + +[[package]] +name = "ruzstd" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3ffab8f9715a0d455df4bbb9d21e91135aab3cd3ca187af0cd0c3c3f868fdc" +dependencies = [ + "byteorder", + "thiserror-core", + "twox-hash", +] + +[[package]] +name = "ryu" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" + +[[package]] +name = "safe_arch" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher 0.4.4", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "scale-bits" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd7aca73785181cc41f0bbe017263e682b585ca660540ba569133901d013ecf" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", +] + +[[package]] +name = "scale-decode" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0459d00b0dbd2e765009924a78ef36b2ff7ba116292d732f00eb0ed8e465d15" +dependencies = [ + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-decode-derive", + "scale-info", + "smallvec 1.11.0", + "thiserror", +] + +[[package]] +name = "scale-decode-derive" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4391f0dfbb6690f035f6d2a15d6a12f88cc5395c36bcc056db07ffa2a90870ec" +dependencies = [ + "darling 0.14.4", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-encode" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0401b7cdae8b8aa33725f3611a051358d5b32887ecaa0fda5953a775b2d4d76" +dependencies = [ + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-encode-derive", + "scale-info", + "smallvec 1.11.0", + "thiserror", +] + +[[package]] +name = "scale-encode-derive" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "316e0fb10ec0fee266822bd641bab5e332a4ab80ef8c5b5ff35e5401a394f5a6" +dependencies = [ + "darling 0.14.4", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-info" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0a159d0c45c12b20c5a844feb1fe4bea86e28f17b92a5f0c42193634d3782" +dependencies = [ + "bitvec 1.0.1", + "cfg-if", + "derive_more", + "parity-scale-codec", + "scale-info-derive", + "serde", +] + +[[package]] +name = "scale-info-derive" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "912e55f6d20e0e80d63733872b40e1227c0bce1e1ab81ba67d696339bfd7fd29" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "scale-value" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2096d36e94ce9bf87d8addb752423b6b19730dc88edd7cc452bb2b90573f7a7" +dependencies = [ + "base58", + "blake2", + "either", + "frame-metadata 15.1.0", + "parity-scale-codec", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "serde", + "thiserror", + "yap", +] + +[[package]] +name = "schannel" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +dependencies = [ + "windows-sys 0.48.0", +] + +[[package]] +name = "schnellru" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772575a524feeb803e5b0fcbc6dd9f367e579488197c94c6e4023aad2305774d" +dependencies = [ + "ahash 0.8.3", + "cfg-if", + "hashbrown 0.13.2", +] + +[[package]] +name = "schnorrkel" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "curve25519-dalek 2.1.3", + "getrandom 0.1.16", + "merlin 2.0.1", + "rand 0.7.3", + "rand_core 0.5.1", + "sha2 0.8.2", + "subtle", + "zeroize", +] + +[[package]] +name = "schnorrkel" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "844b7645371e6ecdf61ff246ba1958c29e802881a749ae3fb1993675d210d28d" +dependencies = [ + "arrayref", + "arrayvec 0.7.4", + "curve25519-dalek-ng", + "merlin 3.0.0", + "rand_core 0.6.4", + "sha2 0.9.9", + "subtle-ng", + "zeroize", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac 0.12.1", + "pbkdf2 0.11.0", + "salsa20", + "sha2 0.10.7", +] + +[[package]] +name = "sct" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +dependencies = [ + "ring 0.16.20", + "untrusted", +] + +[[package]] +name = "sec1" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" +dependencies = [ + "base16ct", + "der", + "generic-array 0.14.7", + "pkcs8", + "subtle", + "zeroize", +] + +[[package]] +name = "secp256k1" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b1629c9c557ef9b293568b338dddfc8208c98a18c59d722a9d53f859d9c9b62" +dependencies = [ + "secp256k1-sys", +] + +[[package]] +name = "secp256k1-sys" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83080e2c2fc1006e625be82e5d1eb6a43b7fd9578b617fcc55814daf286bba4b" +dependencies = [ + "cc", +] + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f301af10236f6df4160f7c3f04eec6dbc70ace82d23326abad5edee88801c6b6" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" +dependencies = [ + "serde", +] + +[[package]] +name = "semver-parser" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0bef5b7f9e0df16536d3961cfb6e84331c065b4066afb39768d0e319411f7" +dependencies = [ + "pest", +] + +[[package]] +name = "send_wrapper" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f638d531eccd6e23b980caf34876660d38e265409d8e99b397ab71eb3612fad0" + +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + +[[package]] +name = "serde" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-hex" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca37e3e4d1b39afd7ff11ee4e947efae85adfddf4841787bfa47c470e96dc26d" +dependencies = [ + "array-init", + "serde", + "smallvec 0.6.14", +] + +[[package]] +name = "serde_derive" +version = "1.0.188" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "serde_json" +version = "1.0.104" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c" +dependencies = [ + "indexmap 2.0.0", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_regex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8136f1a4ea815d7eac4101cfd0b16dc0cb5e1fe1b8609dfd728058656b7badf" +dependencies = [ + "regex", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "sha-1" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99cd6713db3cf16b6c84e06321e049a9b9f699826e16096d23bbcc44d15d51a6" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha1" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug 0.2.3", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if", + "cpufeatures", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha2" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest 0.10.7", +] + +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "signal-hook" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-mio" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29ad2e15f37ec9a6cc544097b78a1ec90001e9f71b81338ca39f430adaca99af" +dependencies = [ + "libc", + "mio", + "signal-hook", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" +dependencies = [ + "libc", +] + +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" + +[[package]] +name = "signature" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +dependencies = [ + "digest 0.10.7", + "rand_core 0.6.4", +] + +[[package]] +name = "simba" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "061507c94fc6ab4ba1c9a0305018408e312e17c041eb63bef8aa726fa33aceae" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "0.6.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" +dependencies = [ + "maybe-uninit", +] + +[[package]] +name = "smallvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" + +[[package]] +name = "smol" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13f2b548cd8447f8de0fdf1c592929f70f4fc7039a05e47404b0d096ec6987a1" +dependencies = [ + "async-channel", + "async-executor", + "async-fs", + "async-io", + "async-lock", + "async-net", + "async-process", + "blocking", + "futures-lite", +] + +[[package]] +name = "smol_str" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c" +dependencies = [ + "serde", +] + +[[package]] +name = "smoldot" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cce5e2881b30bad7ef89f383a816ad0b22c45915911f28499026de4a76d20ee" +dependencies = [ + "arrayvec 0.7.4", + "async-lock", + "atomic", + "base64 0.21.2", + "bip39", + "blake2-rfc", + "bs58 0.5.0", + "crossbeam-queue", + "derive_more", + "ed25519-zebra", + "either", + "event-listener", + "fnv", + "futures-channel", + "futures-util", + "hashbrown 0.14.0", + "hex", + "hmac 0.12.1", + "itertools", + "libsecp256k1", + "merlin 3.0.0", + "no-std-net", + "nom", + "num-bigint", + "num-rational", + "num-traits", + "pbkdf2 0.12.2", + "pin-project", + "rand 0.8.5", + "rand_chacha 0.3.1", + "ruzstd", + "schnorrkel 0.10.2", + "serde", + "serde_json", + "sha2 0.10.7", + "siphasher", + "slab", + "smallvec 1.11.0", + "smol", + "snow", + "soketto", + "tiny-keccak", + "twox-hash", + "wasmi 0.30.0", +] + +[[package]] +name = "smoldot-light" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b2f7b4687b83ff244ef6137735ed5716ad37dcdf3ee16c4eb1a32fb9808fa47" +dependencies = [ + "async-lock", + "blake2-rfc", + "derive_more", + "either", + "event-listener", + "fnv", + "futures-channel", + "futures-util", + "hashbrown 0.14.0", + "hex", + "itertools", + "log", + "lru", + "parking_lot", + "rand 0.8.5", + "serde", + "serde_json", + "siphasher", + "slab", + "smol", + "smoldot", +] + +[[package]] +name = "snow" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c9d1425eb528a21de2755c75af4c9b5d57f50a0d4c3b7f1828a4cd03f8ba155" +dependencies = [ + "aes-gcm", + "blake2", + "chacha20poly1305", + "curve25519-dalek 4.1.1", + "rand_core 0.6.4", + "rustc_version 0.4.0", + "sha2 0.10.7", + "subtle", +] + +[[package]] +name = "socket2" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "soketto" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" +dependencies = [ + "base64 0.13.1", + "bytes", + "futures", + "http", + "httparse", + "log", + "rand 0.8.5", + "sha-1", +] + +[[package]] +name = "solang-parser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c792fe9fae2a2f716846f214ca10d5a1e21133e0bf36cef34bcc4a852467b21" +dependencies = [ + "itertools", + "lalrpop", + "lalrpop-util", + "phf", + "thiserror", + "unicode-xid", +] + +[[package]] +name = "sp-api" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "hash-db 0.16.0", + "log", + "parity-scale-codec", + "scale-info", + "sp-api-proc-macro", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-externalities 0.19.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-metadata-ir", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-state-machine 0.28.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-version", + "thiserror", +] + +[[package]] +name = "sp-api-proc-macro" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "Inflector", + "blake2", + "expander", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "sp-application-crypto" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb3e48446bc776e1578811706c4ad22f263e9fcff92127ecd55375eedc31d560" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 15.0.0", + "sp-io 16.0.0", + "sp-std 6.0.0", +] + +[[package]] +name = "sp-application-crypto" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899492ea547816d5dfe9a5a2ecc32f65a7110805af6da3380aa4902371b31dc2" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 21.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-io 23.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sp-application-crypto" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "sp-arithmetic" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7796939f2e3b68a3b9410ea17a2063b78038cd366f57fa772dd3be0798bd3412" +dependencies = [ + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-std 6.0.0", + "static_assertions", +] + +[[package]] +name = "sp-arithmetic" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb6020576e544c6824a51d651bc8df8e6ab67cd59f1c9ac09868bb81a5199ded" +dependencies = [ + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", +] + +[[package]] +name = "sp-arithmetic" +version = "16.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "integer-sqrt", + "num-traits", + "parity-scale-codec", + "scale-info", + "serde", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "static_assertions", +] + +[[package]] +name = "sp-blockchain" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "futures", + "log", + "parity-scale-codec", + "parking_lot", + "schnellru", + "sp-api", + "sp-consensus", + "sp-database", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-state-machine 0.28.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + +[[package]] +name = "sp-consensus" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "async-trait", + "futures", + "log", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-inherents", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-state-machine 0.28.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + +[[package]] +name = "sp-consensus-aura" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "async-trait", + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-consensus-slots", + "sp-inherents", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-timestamp", +] + +[[package]] +name = "sp-consensus-beefy" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "lazy_static", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-mmr-primitives", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "strum 0.24.1", +] + +[[package]] +name = "sp-consensus-slots" +version = "0.10.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-timestamp", +] + +[[package]] +name = "sp-core" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b13a58a87e1ffbbf03a15425c001a036ad4d933e070807a60f73fa98a3bfdc8" +dependencies = [ + "array-bytes 4.2.0", + "base58", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "dyn-clonable", + "ed25519-zebra", + "futures", + "hash-db 0.15.2", + "hash256-std-hasher", + "impl-serde", + "lazy_static", + "libsecp256k1", + "log", + "merlin 2.0.1", + "parity-scale-codec", + "parking_lot", + "primitive-types", + "rand 0.8.5", + "regex", + "scale-info", + "schnorrkel 0.9.1", + "secp256k1", + "secrecy", + "serde", + "sp-core-hashing 6.0.0", + "sp-debug-derive 6.0.0", + "sp-externalities 0.17.0", + "sp-runtime-interface 12.0.0", + "sp-std 6.0.0", + "sp-storage 11.0.0", + "ss58-registry", + "substrate-bip39", + "thiserror", + "tiny-bip39", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f02a8ea5a2a18f4a1d493f0dbb0d83668a73e2431701de65cd19b60e85b0723" +dependencies = [ + "array-bytes 4.2.0", + "base58", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "dyn-clonable", + "ed25519-zebra", + "futures", + "hash-db 0.15.2", + "hash256-std-hasher", + "impl-serde", + "lazy_static", + "libsecp256k1", + "log", + "merlin 2.0.1", + "parity-scale-codec", + "parking_lot", + "primitive-types", + "rand 0.8.5", + "regex", + "scale-info", + "schnorrkel 0.9.1", + "secp256k1", + "secrecy", + "serde", + "sp-core-hashing 6.0.0", + "sp-debug-derive 6.0.0", + "sp-externalities 0.17.0", + "sp-runtime-interface 14.0.0", + "sp-std 6.0.0", + "sp-storage 11.0.0", + "ss58-registry", + "substrate-bip39", + "thiserror", + "tiny-bip39", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "21.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f18d9e2f67d8661f9729f35347069ac29d92758b59135176799db966947a7336" +dependencies = [ + "array-bytes 4.2.0", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58 0.4.0", + "dyn-clonable", + "ed25519-zebra", + "futures", + "hash-db 0.16.0", + "hash256-std-hasher", + "impl-serde", + "lazy_static", + "libsecp256k1", + "log", + "merlin 2.0.1", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types", + "rand 0.8.5", + "regex", + "scale-info", + "schnorrkel 0.9.1", + "secp256k1", + "secrecy", + "serde", + "sp-core-hashing 9.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-debug-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 17.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-storage 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ss58-registry", + "substrate-bip39", + "thiserror", + "tiny-bip39", + "zeroize", +] + +[[package]] +name = "sp-core" +version = "21.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "array-bytes 6.1.0", + "arrayvec 0.7.4", + "bandersnatch_vrfs", + "bitflags 1.3.2", + "blake2", + "bounded-collections", + "bs58 0.5.0", + "dyn-clonable", + "ed25519-zebra", + "futures", + "hash-db 0.16.0", + "hash256-std-hasher", + "impl-serde", + "lazy_static", + "libsecp256k1", + "log", + "merlin 2.0.1", + "parity-scale-codec", + "parking_lot", + "paste", + "primitive-types", + "rand 0.8.5", + "regex", + "scale-info", + "schnorrkel 0.9.1", + "secp256k1", + "secrecy", + "serde", + "sp-core-hashing 9.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-debug-derive 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-externalities 0.19.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime-interface 17.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-storage 13.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "ss58-registry", + "substrate-bip39", + "thiserror", + "tiny-bip39", + "tracing", + "zeroize", +] + +[[package]] +name = "sp-core-hashing" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbc2d1947252b7a4e403b0a260f596920443742791765ec111daa2bbf98eff25" +dependencies = [ + "blake2", + "byteorder", + "digest 0.10.7", + "sha2 0.10.7", + "sha3", + "sp-std 6.0.0", + "twox-hash", +] + +[[package]] +name = "sp-core-hashing" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee599a8399448e65197f9a6cee338ad192e9023e35e31f22382964c3c174c68" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.7", + "sha3", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "twox-hash", +] + +[[package]] +name = "sp-core-hashing" +version = "9.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "blake2b_simd", + "byteorder", + "digest 0.10.7", + "sha2 0.10.7", + "sha3", + "twox-hash", +] + +[[package]] +name = "sp-core-hashing-proc-macro" +version = "9.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "quote", + "sp-core-hashing 9.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "syn 2.0.32", +] + +[[package]] +name = "sp-database" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "kvdb", + "parking_lot", +] + +[[package]] +name = "sp-debug-derive" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66fb9dc63d54de7d7bed62a505b6e0bd66c122525ea1abb348f6564717c3df2d" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp-debug-derive" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f531814d2f16995144c74428830ccf7d94ff4a7749632b83ad8199b181140c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "sp-debug-derive" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "sp-externalities" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57052935c9c9b070ea6b339ef0da3bf241b7e065fc37f9c551669ee83ecfc3c1" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-std 6.0.0", + "sp-storage 11.0.0", +] + +[[package]] +name = "sp-externalities" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0f71c671e01a8ca60da925d43a1b351b69626e268b8837f8371e320cf1dd100" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-storage 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sp-externalities" +version = "0.19.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "environmental", + "parity-scale-codec", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-storage 13.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "sp-genesis-builder" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "serde_json", + "sp-api", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "sp-inherents" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "async-trait", + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + +[[package]] +name = "sp-io" +version = "16.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b89f9726b6473b096e52fd995f2886f9c579ebda51392d3cbe2068ec11bd28e" +dependencies = [ + "bytes", + "ed25519 1.5.3", + "ed25519-dalek 1.0.1", + "futures", + "libsecp256k1", + "log", + "parity-scale-codec", + "secp256k1", + "sp-core 15.0.0", + "sp-externalities 0.17.0", + "sp-keystore 0.21.0", + "sp-runtime-interface 12.0.0", + "sp-state-machine 0.21.0", + "sp-std 6.0.0", + "sp-tracing 8.0.0", + "sp-trie 15.0.0", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-io" +version = "23.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d597e35a9628fe7454b08965b2442e3ec0f264b0a90d41328e87422cec02e99" +dependencies = [ + "bytes", + "ed25519 1.5.3", + "ed25519-dalek 1.0.1", + "futures", + "libsecp256k1", + "log", + "parity-scale-codec", + "rustversion", + "secp256k1", + "sp-core 21.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-keystore 0.27.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface 17.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-state-machine 0.28.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-tracing 10.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-io" +version = "23.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "bytes", + "ed25519-dalek 2.0.0", + "libsecp256k1", + "log", + "parity-scale-codec", + "rustversion", + "secp256k1", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-externalities 0.19.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-keystore 0.27.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime-interface 17.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-state-machine 0.28.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-tracing 10.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "tracing", + "tracing-core", +] + +[[package]] +name = "sp-keystore" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85a4c5a3eb775dbe189e7bbb5f2990a2b19a989663281087f597e1fc1c6ecc50" +dependencies = [ + "async-trait", + "futures", + "merlin 2.0.1", + "parity-scale-codec", + "parking_lot", + "schnorrkel 0.9.1", + "sp-core 15.0.0", + "sp-externalities 0.17.0", + "thiserror", +] + +[[package]] +name = "sp-keystore" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9be3cdd67cc1d9c1db17c5cbc4ec4924054a8437009d167f21f6590797e4aa45" +dependencies = [ + "futures", + "parity-scale-codec", + "parking_lot", + "sp-core 21.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", +] + +[[package]] +name = "sp-keystore" +version = "0.27.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "parity-scale-codec", + "parking_lot", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-externalities 0.19.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + +[[package]] +name = "sp-metadata-ir" +version = "0.1.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "frame-metadata 16.0.0", + "parity-scale-codec", + "scale-info", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "sp-mmr-primitives" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "ckb-merkle-mountain-range 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", + "log", + "parity-scale-codec", + "scale-info", + "serde", + "sp-api", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-debug-derive 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + +[[package]] +name = "sp-panic-handler" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4abed79c3d5b3622f65ab065676addd9923b9b122cd257df23e2757ce487c6d2" +dependencies = [ + "backtrace", + "lazy_static", + "regex", +] + +[[package]] +name = "sp-panic-handler" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebd2de46003fa8212426838ca71cd42ee36a26480ba9ffea983506ce03131033" +dependencies = [ + "backtrace", + "lazy_static", + "regex", +] + +[[package]] +name = "sp-panic-handler" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "backtrace", + "lazy_static", + "regex", +] + +[[package]] +name = "sp-runtime" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccb45605ded381a581ab89d4d38db4f4c93ab29a627ca1ad124a6739acb5e762" +dependencies = [ + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand 0.8.5", + "scale-info", + "serde", + "sp-application-crypto 16.0.0", + "sp-arithmetic 12.0.0", + "sp-core 15.0.0", + "sp-io 16.0.0", + "sp-std 6.0.0", + "sp-weights 13.0.0", +] + +[[package]] +name = "sp-runtime" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21c5bfc764a1a8259d7e8f7cfd22c84006275a512c958d3ff966c92151e134d5" +dependencies = [ + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand 0.8.5", + "scale-info", + "serde", + "sp-application-crypto 23.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-arithmetic 16.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 21.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-io 23.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-weights 20.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sp-runtime" +version = "24.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "either", + "hash256-std-hasher", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "paste", + "rand 0.8.5", + "scale-info", + "serde", + "sp-application-crypto 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-arithmetic 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-io 23.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-weights 20.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "sp-runtime-interface" +version = "12.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b56d4f699cb1e5b96d49a7c732e03c02be56115149523488893e91b3ebb539c9" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "primitive-types", + "sp-externalities 0.17.0", + "sp-runtime-interface-proc-macro 8.0.0", + "sp-std 6.0.0", + "sp-storage 11.0.0", + "sp-tracing 8.0.0", + "sp-wasm-interface 9.0.0", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c11dfcd135a5cc6478ef68402ed80a5f6f1182587935fdc04ccefcddbe42ff47" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "primitive-types", + "sp-externalities 0.17.0", + "sp-runtime-interface-proc-macro 9.0.0", + "sp-std 6.0.0", + "sp-storage 11.0.0", + "sp-tracing 8.0.0", + "sp-wasm-interface 11.0.0", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e676128182f90015e916f806cba635c8141e341e7abbc45d25525472e1bbce8" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "primitive-types", + "sp-externalities 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime-interface-proc-macro 11.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-storage 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-tracing 10.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-wasm-interface 14.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface" +version = "17.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "bytes", + "impl-trait-for-tuples", + "parity-scale-codec", + "primitive-types", + "sp-externalities 0.19.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime-interface-proc-macro 11.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-storage 13.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-tracing 10.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-wasm-interface 14.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "static_assertions", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6f3d42d7ea6b34fc110dae7ca8aaecbe976ac86942bbcbd7caf2ef8bfad808e" +dependencies = [ + "Inflector", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2773c90e5765847c5e8b4a24b553d38a9ca52ded47c142cfcfb7948f42827af9" +dependencies = [ + "Inflector", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d5bd5566fe5633ec48dfa35ab152fd29f8a577c21971e1c6db9f28afb9bbb9" +dependencies = [ + "Inflector", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "sp-runtime-interface-proc-macro" +version = "11.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "Inflector", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "sp-session" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "parity-scale-codec", + "scale-info", + "sp-api", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-keystore 0.27.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-staking", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "sp-staking" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "impl-trait-for-tuples", + "parity-scale-codec", + "scale-info", + "serde", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "sp-state-machine" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b5a9ed0ba877ea0d3b2b7d720b225444151cc9060f098cb6d4dcc3a68bd3d2a" +dependencies = [ + "hash-db 0.15.2", + "log", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "smallvec 1.11.0", + "sp-core 15.0.0", + "sp-externalities 0.17.0", + "sp-panic-handler 6.0.0", + "sp-std 6.0.0", + "sp-trie 15.0.0", + "thiserror", + "tracing", +] + +[[package]] +name = "sp-state-machine" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ef45d31f9e7ac648f8899a0cd038a3608f8499028bff55b6c799702592325b6" +dependencies = [ + "hash-db 0.16.0", + "log", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "smallvec 1.11.0", + "sp-core 21.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-externalities 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-panic-handler 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-trie 22.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", + "tracing", +] + +[[package]] +name = "sp-state-machine" +version = "0.28.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "hash-db 0.16.0", + "log", + "parity-scale-codec", + "parking_lot", + "rand 0.8.5", + "smallvec 1.11.0", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-externalities 0.19.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-panic-handler 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-trie 22.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", + "tracing", + "trie-db 0.27.1", +] + +[[package]] +name = "sp-std" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af0ee286f98455272f64ac5bb1384ff21ac029fbb669afbaf48477faff12760e" + +[[package]] +name = "sp-std" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53458e3c57df53698b3401ec0934bea8e8cfce034816873c0b0abbd83d7bac0d" + +[[package]] +name = "sp-std" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" + +[[package]] +name = "sp-storage" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c20cb0c562d1a159ecb2c7ca786828c81e432c535474967d2df3a484977cea4" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive 6.0.0", + "sp-std 6.0.0", +] + +[[package]] +name = "sp-storage" +version = "13.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94294be83f11d4958cfea89ed5798f0b6605f5defc3a996948848458abbcc18e" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sp-storage" +version = "13.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "ref-cast", + "serde", + "sp-debug-derive 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "sp-timestamp" +version = "4.0.0-dev" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "async-trait", + "parity-scale-codec", + "sp-inherents", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", +] + +[[package]] +name = "sp-tracing" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e46bd547da89a9cda69b4ce4c91a5b7e1f86915190d83cd407b715d0c6bac042" +dependencies = [ + "parity-scale-codec", + "sp-std 6.0.0", + "tracing", + "tracing-core", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "sp-tracing" +version = "10.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357f7591980dd58305956d32f8f6646d0a8ea9ea0e7e868e46f53b68ddf00cec" +dependencies = [ + "parity-scale-codec", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tracing", + "tracing-core", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "sp-tracing" +version = "10.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "parity-scale-codec", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "tracing", + "tracing-core", + "tracing-subscriber 0.2.25", +] + +[[package]] +name = "sp-trie" +version = "15.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a003ea58d0e1d2944032a45625eedcc12f67612a3939152dc7e80252486b6751" +dependencies = [ + "ahash 0.8.3", + "hash-db 0.15.2", + "hashbrown 0.12.3", + "lazy_static", + "memory-db 0.31.0", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "scale-info", + "schnellru", + "sp-core 15.0.0", + "sp-std 6.0.0", + "thiserror", + "tracing", + "trie-db 0.24.0", + "trie-root 0.17.0", +] + +[[package]] +name = "sp-trie" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cba198d0450e16b2d3cd10f5d31560d3ebbd5c7b903184c18e337bb407d02175" +dependencies = [ + "ahash 0.8.3", + "hash-db 0.15.2", + "hashbrown 0.12.3", + "lazy_static", + "memory-db 0.31.0", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "scale-info", + "schnellru", + "sp-core 17.0.0", + "sp-std 6.0.0", + "thiserror", + "tracing", + "trie-db 0.24.0", + "trie-root 0.17.0", +] + +[[package]] +name = "sp-trie" +version = "22.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48e4eeb7ef23f79eba8609db79ef9cef242f994f1f87a3c0387b4b5f177fda74" +dependencies = [ + "ahash 0.8.3", + "hash-db 0.16.0", + "hashbrown 0.13.2", + "lazy_static", + "memory-db 0.32.0", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "scale-info", + "schnellru", + "sp-core 21.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", + "tracing", + "trie-db 0.27.1", + "trie-root 0.18.0", +] + +[[package]] +name = "sp-trie" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "ahash 0.8.3", + "hash-db 0.16.0", + "hashbrown 0.13.2", + "lazy_static", + "memory-db 0.32.0", + "nohash-hasher", + "parity-scale-codec", + "parking_lot", + "scale-info", + "schnellru", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "thiserror", + "tracing", + "trie-db 0.27.1", + "trie-root 0.18.0", +] + +[[package]] +name = "sp-version" +version = "22.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "impl-serde", + "parity-scale-codec", + "parity-wasm", + "scale-info", + "serde", + "sp-core-hashing-proc-macro", + "sp-runtime 24.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-version-proc-macro", + "thiserror", +] + +[[package]] +name = "sp-version-proc-macro" +version = "8.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "parity-scale-codec", + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "sp-wasm-interface" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e37c12659709ca8eb380d44c784368ca78dca58f2cd8e17c33371a2702b10e" +dependencies = [ + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "sp-std 6.0.0", + "wasmi 0.13.2", + "wasmtime 1.0.2", +] + +[[package]] +name = "sp-wasm-interface" +version = "11.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64b40073473be37185cd8f85852fa79c98908b44cc5a3137483a8be4d47acfd" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "sp-std 6.0.0", + "wasmi 0.13.2", + "wasmtime 5.0.1", +] + +[[package]] +name = "sp-wasm-interface" +version = "14.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a19c122609ca5d8246be6386888596320d03c7bc880959eaa2c36bcd5acd6846" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "wasmtime 8.0.1", +] + +[[package]] +name = "sp-wasm-interface" +version = "14.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "anyhow", + "impl-trait-for-tuples", + "log", + "parity-scale-codec", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "wasmtime 8.0.1", +] + +[[package]] +name = "sp-weights" +version = "13.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09e47b360be9c14f3f9f4c546ae4c39e89e1d33022798b46c8d84ea883a9dd87" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "smallvec 1.11.0", + "sp-arithmetic 12.0.0", + "sp-core 15.0.0", + "sp-debug-derive 6.0.0", + "sp-std 6.0.0", +] + +[[package]] +name = "sp-weights" +version = "20.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45d084c735544f70625b821c3acdbc7a2fc1893ca98b85f1942631284692c75b" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "smallvec 1.11.0", + "sp-arithmetic 16.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core 21.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-debug-derive 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-std 8.0.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "sp-weights" +version = "20.0.0" +source = "git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0#f60318f68687e601c47de5ad5ca88e2c3f8139a7" +dependencies = [ + "parity-scale-codec", + "scale-info", + "serde", + "smallvec 1.11.0", + "sp-arithmetic 16.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-core 21.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-debug-derive 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", + "sp-std 8.0.0 (git+https://github.com/paritytech/polkadot-sdk?branch=release-polkadot-v1.1.0)", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" + +[[package]] +name = "spki" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1e996ef02c474957d681f1b05213dfb0abab947b446a62d37770b23500184a" +dependencies = [ + "base64ct", + "der", +] + +[[package]] +name = "ss58-registry" +version = "1.41.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfc443bad666016e012538782d9e3006213a7db43e9fb1dda91657dc06a6fa08" +dependencies = [ + "Inflector", + "num-format", + "proc-macro2", + "quote", + "serde", + "serde_json", + "unicode-xid", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "string_cache" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f91138e76242f575eb1d3b38b4f1362f10d3a43f47d182a5b359af488a02293b" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "strum" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063e6045c0e62079840579a7e47a355ae92f60eb74daaf156fb1e84ba164e63f" +dependencies = [ + "strum_macros 0.24.3", +] + +[[package]] +name = "strum" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" +dependencies = [ + "strum_macros 0.25.1", +] + +[[package]] +name = "strum_macros" +version = "0.24.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 1.0.109", +] + +[[package]] +name = "strum_macros" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6069ca09d878a33f883cc06aaa9718ede171841d3832450354410b718b097232" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.32", +] + +[[package]] +name = "substrate-bip39" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49eee6965196b32f882dd2ee85a92b1dbead41b04e53907f269de3b0dc04733c" +dependencies = [ + "hmac 0.11.0", + "pbkdf2 0.8.0", + "schnorrkel 0.9.1", + "sha2 0.9.9", + "zeroize", +] + +[[package]] +name = "substrate-bn" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b5bbfa79abbae15dd642ea8176a21a635ff3c00059961d1ea27ad04e5b441c" +dependencies = [ + "byteorder", + "crunchy", + "lazy_static", + "rand 0.8.5", + "rustc-hex", +] + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "subtle-ng" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "734676eb262c623cec13c3155096e08d1f8f29adce39ba17948b18dad1e54142" + +[[package]] +name = "subxt" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba02ada83ba2640c46e200a1758cc83ce876a16326d2c52ca5db41b7d6645ce" +dependencies = [ + "base58", + "blake2", + "derivative", + "either", + "frame-metadata 16.0.0", + "futures", + "hex", + "impl-serde", + "jsonrpsee", + "parity-scale-codec", + "primitive-types", + "scale-bits", + "scale-decode", + "scale-encode", + "scale-info", + "scale-value", + "serde", + "serde_json", + "sp-core 21.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-core-hashing 9.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sp-runtime 24.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "subxt-lightclient", + "subxt-macro", + "subxt-metadata", + "thiserror", + "tracing", +] + +[[package]] +name = "subxt-codegen" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3213eb04567e710aa253b94de74337c7b663eea52114805b8723129763282779" +dependencies = [ + "frame-metadata 16.0.0", + "heck", + "hex", + "jsonrpsee", + "parity-scale-codec", + "proc-macro2", + "quote", + "scale-info", + "subxt-metadata", + "syn 2.0.32", + "thiserror", + "tokio", +] + +[[package]] +name = "subxt-lightclient" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439a235bedd0e460c110e5341d919ec3a27f9be3dd4c1c944daad8a9b54d396d" +dependencies = [ + "futures", + "futures-util", + "serde", + "serde_json", + "smoldot-light", + "thiserror", + "tokio", + "tokio-stream", + "tracing", +] + +[[package]] +name = "subxt-macro" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfda460cc5f701785973382c589e9bb12c23bb8d825bfc3ac547b7c672aba1c0" +dependencies = [ + "darling 0.20.3", + "proc-macro-error", + "subxt-codegen", + "syn 2.0.32", +] + +[[package]] +name = "subxt-metadata" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0283bd02163913fbd0a5153d0b179533e48b239b953fa4e43baa27c73f18861c" +dependencies = [ + "frame-metadata 16.0.0", + "parity-scale-codec", + "scale-info", + "sp-core-hashing 9.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thiserror", +] + +[[package]] +name = "svm-rs" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597e3a746727984cb7ea2487b6a40726cad0dbe86628e7d429aa6b8c4c153db4" +dependencies = [ + "dirs", + "fs2", + "hex", + "once_cell", + "reqwest", + "semver 1.0.18", + "serde", + "serde_json", + "sha2 0.10.7", + "thiserror", + "url", + "zip", +] + +[[package]] +name = "svm-rs-builds" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2271abd7d01895a3e5bfa4b578e32f09155002ce1ec239532e297f82aafad06b" +dependencies = [ + "build_const", + "hex", + "semver 1.0.18", + "serde_json", + "svm-rs", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "239814284fd6f1a4ffe4ca893952cdd93c224b6a1571c9a9eadd670295c0c9e2" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + +[[package]] +name = "target-lexicon" +version = "0.12.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d0e916b1148c8e263850e1ebcbd046f333e0683c724876bb0da63ea4373dc8a" + +[[package]] +name = "tempfile" +version = "3.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5486094ee78b2e5038a6382ed7645bc084dc2ec433426ca4c3cb61e2007b8998" +dependencies = [ + "cfg-if", + "fastrand 2.0.0", + "redox_syscall 0.3.5", + "rustix 0.38.4", + "windows-sys 0.48.0", +] + +[[package]] +name = "term" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" +dependencies = [ + "dirs-next", + "rustversion", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" +dependencies = [ + "rustix 0.37.23", + "windows-sys 0.48.0", +] + +[[package]] +name = "thiserror" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-core" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d97345f6437bb2004cd58819d8a9ef8e36cdd7661c2abc4bbde0a7c40d9f497" +dependencies = [ + "thiserror-core-impl", +] + +[[package]] +name = "thiserror-core-impl" +version = "1.0.38" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10ac1c5050e43014d16b2f94d0d2ce79e65ffdd8b38d8048f9c8f6a8a6da62ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "thread_local" +version = "1.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" +dependencies = [ + "cfg-if", + "once_cell", +] + +[[package]] +name = "time" +version = "0.3.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b79eabcd964882a646b3584543ccabeae7869e9ac32a46f6f22b7a5bd405308b" +dependencies = [ + "deranged", + "serde", + "time-core", +] + +[[package]] +name = "time-core" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb" + +[[package]] +name = "tiny-bip39" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62cc94d358b5a1e84a5cb9109f559aa3c4d634d2b1b4de3d0fa4adc7c78e2861" +dependencies = [ + "anyhow", + "hmac 0.12.1", + "once_cell", + "pbkdf2 0.11.0", + "rand 0.8.5", + "rustc-hash", + "sha2 0.10.7", + "thiserror", + "unicode-normalization", + "wasm-bindgen", + "zeroize", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532826ff75199d5833b9d2c5fe410f29235e25704ee5f0ef599fb51c21f4a4da" +dependencies = [ + "autocfg", + "backtrace", + "bytes", + "libc", + "mio", + "num_cpus", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "windows-sys 0.48.0", +] + +[[package]] +name = "tokio-macros" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "tokio-rustls" +version = "0.23.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" +dependencies = [ + "rustls 0.20.8", + "tokio", + "webpki", +] + +[[package]] +name = "tokio-rustls" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" +dependencies = [ + "rustls 0.21.5", + "tokio", +] + +[[package]] +name = "tokio-stream" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec509ac96e9a0c43427c74f003127d953a265737636129424288d27cb5c4b12c" +dependencies = [ + "futures-util", + "log", + "rustls 0.21.5", + "tokio", + "tokio-rustls 0.24.1", + "tungstenite", + "webpki-roots 0.23.1", +] + +[[package]] +name = "tokio-util" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +dependencies = [ + "bytes", + "futures-core", + "futures-io", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c17e963a819c331dcacd7ab957d80bc2b9a9c1e71c804826d2f283dd65306542" +dependencies = [ + "indexmap 2.0.0", + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.19.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a" +dependencies = [ + "indexmap 2.0.0", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", +] + +[[package]] +name = "tower" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +dependencies = [ + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tower-layer" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +dependencies = [ + "cfg-if", + "log", + "pin-project-lite", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "tracing-core" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-futures" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" +dependencies = [ + "pin-project", + "tracing", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "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.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71" +dependencies = [ + "ansi_term", + "chrono", + "lazy_static", + "matchers", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec 1.11.0", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec 1.11.0", + "thread_local", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "trie-db" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "004e1e8f92535694b4cb1444dc5a8073ecf0815e3357f729638b9f8fc4062908" +dependencies = [ + "hash-db 0.15.2", + "hashbrown 0.12.3", + "log", + "rustc-hex", + "smallvec 1.11.0", +] + +[[package]] +name = "trie-db" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "767abe6ffed88a1889671a102c2861ae742726f52e0a5a425b92c9fbfa7e9c85" +dependencies = [ + "hash-db 0.16.0", + "hashbrown 0.13.2", + "log", + "rustc-hex", + "smallvec 1.11.0", +] + +[[package]] +name = "trie-root" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a36c5ca3911ed3c9a5416ee6c679042064b93fc637ded67e25f92e68d783891" +dependencies = [ + "hash-db 0.15.2", +] + +[[package]] +name = "trie-root" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ed310ef5ab98f5fa467900ed906cb9232dd5376597e00fd4cba2a449d06c0b" +dependencies = [ + "hash-db 0.16.0", +] + +[[package]] +name = "try-lock" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" + +[[package]] +name = "tt-call" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4f195fd851901624eee5a58c4bb2b4f06399148fcd0ed336e6f1cb60a9881df" + +[[package]] +name = "tungstenite" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15fba1a6d6bb030745759a9a2a588bfe8490fc8b4751a277db3a0be1c9ebbf67" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand 0.8.5", + "rustls 0.21.5", + "sha1", + "thiserror", + "url", + "utf-8", + "webpki", +] + +[[package]] +name = "twox-hash" +version = "1.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" +dependencies = [ + "cfg-if", + "digest 0.10.7", + "rand 0.8.5", + "static_assertions", +] + +[[package]] +name = "typenum" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" + +[[package]] +name = "ucd-trie" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" + +[[package]] +name = "uint" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76f64bba2c53b04fcab63c01a7d7427eadc821e3bc48c34dc9ba29c501164b52" +dependencies = [ + "byteorder", + "crunchy", + "hex", + "static_assertions", +] + +[[package]] +name = "unarray" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaea85b334db583fe3274d12b4cd1880032beab409c0d774be044d4480ab9a94" + +[[package]] +name = "uncased" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b9bc53168a4be7402ab86c3aad243a84dd7381d09be0eddc81280c1da95ca68" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "unicode-xid" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" + +[[package]] +name = "universal-hash" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array 0.14.7", + "subtle", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom 0.2.10", + "serde", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.32", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + +[[package]] +name = "wasmi" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06c326c93fbf86419608361a2c925a31754cf109da1b8b55737070b4d6669422" +dependencies = [ + "parity-wasm", + "wasmi-validation", + "wasmi_core 0.2.1", +] + +[[package]] +name = "wasmi" +version = "0.30.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51fb5c61993e71158abf5bb863df2674ca3ec39ed6471c64f07aeaf751d67b4" +dependencies = [ + "intx", + "smallvec 1.11.0", + "spin 0.9.8", + "wasmi_arena", + "wasmi_core 0.12.0", + "wasmparser-nostd", +] + +[[package]] +name = "wasmi-validation" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ff416ad1ff0c42e5a926ed5d5fab74c0f098749aa0ad8b2a34b982ce0e867b" +dependencies = [ + "parity-wasm", +] + +[[package]] +name = "wasmi_arena" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "401c1f35e413fac1846d4843745589d9ec678977ab35a384db8ae7830525d468" + +[[package]] +name = "wasmi_core" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57d20cb3c59b788653d99541c646c561c9dd26506f25c0cebfe810659c54c6d7" +dependencies = [ + "downcast-rs", + "libm", + "memory_units", + "num-rational", + "num-traits", +] + +[[package]] +name = "wasmi_core" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624e6333e861ef49095d2d678b76ebf30b06bf37effca845be7e5b87c90071b7" +dependencies = [ + "downcast-rs", + "libm", + "num-traits", + "paste", +] + +[[package]] +name = "wasmparser" +version = "0.89.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5d3e08b13876f96dd55608d03cd4883a0545884932d5adf11925876c96daef" +dependencies = [ + "indexmap 1.9.3", +] + +[[package]] +name = "wasmparser" +version = "0.96.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adde01ade41ab9a5d10ec8ed0bb954238cf8625b5cd5a13093d6de2ad9c2be1a" +dependencies = [ + "indexmap 1.9.3", + "url", +] + +[[package]] +name = "wasmparser" +version = "0.102.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48134de3d7598219ab9eaf6b91b15d8e50d31da76b8519fe4ecfcec2cf35104b" +dependencies = [ + "indexmap 1.9.3", + "url", +] + +[[package]] +name = "wasmparser-nostd" +version = "0.100.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9157cab83003221bfd385833ab587a039f5d6fa7304854042ba358a3b09e0724" +dependencies = [ + "indexmap-nostd", +] + +[[package]] +name = "wasmtime" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ad5af6ba38311282f2a21670d96e78266e8c8e2f38cbcd52c254df6ccbc7731" +dependencies = [ + "anyhow", + "bincode", + "cfg-if", + "indexmap 1.9.3", + "libc", + "log", + "object 0.29.0", + "once_cell", + "paste", + "psm", + "serde", + "target-lexicon", + "wasmparser 0.89.1", + "wasmtime-environ 1.0.2", + "wasmtime-jit 1.0.2", + "wasmtime-runtime 1.0.2", + "windows-sys 0.36.1", +] + +[[package]] +name = "wasmtime" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49ffcc607adc9da024e87ca814592d4bc67f5c5b58e488f5608d5734a1ebc23e" +dependencies = [ + "anyhow", + "bincode", + "cfg-if", + "indexmap 1.9.3", + "libc", + "log", + "object 0.29.0", + "once_cell", + "paste", + "psm", + "serde", + "target-lexicon", + "wasmparser 0.96.0", + "wasmtime-environ 5.0.1", + "wasmtime-jit 5.0.1", + "wasmtime-runtime 5.0.1", + "windows-sys 0.42.0", +] + +[[package]] +name = "wasmtime" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f907fdead3153cb9bfb7a93bbd5b62629472dc06dee83605358c64c52ed3dda9" +dependencies = [ + "anyhow", + "bincode", + "cfg-if", + "indexmap 1.9.3", + "libc", + "log", + "object 0.30.4", + "once_cell", + "paste", + "psm", + "serde", + "target-lexicon", + "wasmparser 0.102.0", + "wasmtime-environ 8.0.1", + "wasmtime-jit 8.0.1", + "wasmtime-runtime 8.0.1", + "windows-sys 0.45.0", +] + +[[package]] +name = "wasmtime-asm-macros" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45de63ddfc8b9223d1adc8f7b2ee5f35d1f6d112833934ad7ea66e4f4339e597" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "wasmtime-asm-macros" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12cb5dc4d79cd7b2453c395f64e9013d2ad90bd083be556d5565cb224ebe8d57" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "wasmtime-asm-macros" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3b9daa7c14cd4fa3edbf69de994408d5f4b7b0959ac13fa69d465f6597f810d" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "wasmtime-environ" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebb881c61f4f627b5d45c54e629724974f8a8890d455bcbe634330cc27309644" +dependencies = [ + "anyhow", + "cranelift-entity 0.88.2", + "gimli 0.26.2", + "indexmap 1.9.3", + "log", + "object 0.29.0", + "serde", + "target-lexicon", + "thiserror", + "wasmparser 0.89.1", + "wasmtime-types 1.0.2", +] + +[[package]] +name = "wasmtime-environ" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9350c919553cddf14f78f9452119c8004d7ef6bfebb79a41a21819ed0c5604d8" +dependencies = [ + "anyhow", + "cranelift-entity 0.92.1", + "gimli 0.26.2", + "indexmap 1.9.3", + "log", + "object 0.29.0", + "serde", + "target-lexicon", + "thiserror", + "wasmparser 0.96.0", + "wasmtime-types 5.0.1", +] + +[[package]] +name = "wasmtime-environ" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a990198cee4197423045235bf89d3359e69bd2ea031005f4c2d901125955c949" +dependencies = [ + "anyhow", + "cranelift-entity 0.95.1", + "gimli 0.27.3", + "indexmap 1.9.3", + "log", + "object 0.30.4", + "serde", + "target-lexicon", + "thiserror", + "wasmparser 0.102.0", + "wasmtime-types 8.0.1", +] + +[[package]] +name = "wasmtime-jit" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1985c628011fe26adf5e23a5301bdc79b245e0e338f14bb58b39e4e25e4d8681" +dependencies = [ + "addr2line 0.17.0", + "anyhow", + "bincode", + "cfg-if", + "cpp_demangle", + "gimli 0.26.2", + "log", + "object 0.29.0", + "rustc-demangle", + "rustix 0.35.14", + "serde", + "target-lexicon", + "thiserror", + "wasmtime-environ 1.0.2", + "wasmtime-runtime 1.0.2", + "windows-sys 0.36.1", +] + +[[package]] +name = "wasmtime-jit" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90ba5779ea786386432b94c9fc9ad5597346c319e8239db0d98d5be5cc109a7e" +dependencies = [ + "addr2line 0.17.0", + "anyhow", + "bincode", + "cfg-if", + "cpp_demangle", + "gimli 0.26.2", + "log", + "object 0.29.0", + "rustc-demangle", + "serde", + "target-lexicon", + "wasmtime-environ 5.0.1", + "wasmtime-jit-icache-coherence 5.0.1", + "wasmtime-runtime 5.0.1", + "windows-sys 0.42.0", +] + +[[package]] +name = "wasmtime-jit" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de48df552cfca1c9b750002d3e07b45772dd033b0b206d5c0968496abf31244" +dependencies = [ + "addr2line 0.19.0", + "anyhow", + "bincode", + "cfg-if", + "cpp_demangle", + "gimli 0.27.3", + "log", + "object 0.30.4", + "rustc-demangle", + "serde", + "target-lexicon", + "wasmtime-environ 8.0.1", + "wasmtime-jit-icache-coherence 8.0.1", + "wasmtime-runtime 8.0.1", + "windows-sys 0.45.0", +] + +[[package]] +name = "wasmtime-jit-debug" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f671b588486f5ccec8c5a3dba6b4c07eac2e66ab8c60e6f4e53717c77f709731" +dependencies = [ + "once_cell", +] + +[[package]] +name = "wasmtime-jit-debug" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9841a44c82c74101c10ad4f215392761a2523b3c6c838597962bdb6de75fdb3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "wasmtime-jit-debug" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0554b84c15a27d76281d06838aed94e13a77d7bf604bbbaf548aa20eb93846" +dependencies = [ + "once_cell", +] + +[[package]] +name = "wasmtime-jit-icache-coherence" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd4356c2493002da3b111d470c2ecea65a3017009afce8adc46eaa5758739891" +dependencies = [ + "cfg-if", + "libc", + "windows-sys 0.42.0", +] + +[[package]] +name = "wasmtime-jit-icache-coherence" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aecae978b13f7f67efb23bd827373ace4578f2137ec110bbf6a4a7cde4121bbd" +dependencies = [ + "cfg-if", + "libc", + "windows-sys 0.45.0", +] + +[[package]] +name = "wasmtime-runtime" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee8f92ad4b61736339c29361da85769ebc200f184361959d1792832e592a1afd" +dependencies = [ + "anyhow", + "cc", + "cfg-if", + "indexmap 1.9.3", + "libc", + "log", + "mach", + "memoffset 0.6.5", + "paste", + "rand 0.8.5", + "rustix 0.35.14", + "thiserror", + "wasmtime-asm-macros 1.0.2", + "wasmtime-environ 1.0.2", + "wasmtime-jit-debug 1.0.2", + "windows-sys 0.36.1", +] + +[[package]] +name = "wasmtime-runtime" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd26efea7a790fcf430e663ba2519f0ab6eb8980adf8b0c58c62b727da77c2ec" +dependencies = [ + "anyhow", + "cc", + "cfg-if", + "indexmap 1.9.3", + "libc", + "log", + "mach", + "memfd", + "memoffset 0.6.5", + "paste", + "rand 0.8.5", + "rustix 0.36.15", + "wasmtime-asm-macros 5.0.1", + "wasmtime-environ 5.0.1", + "wasmtime-jit-debug 5.0.1", + "windows-sys 0.42.0", +] + +[[package]] +name = "wasmtime-runtime" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "658cf6f325232b6760e202e5255d823da5e348fdea827eff0a2a22319000b441" +dependencies = [ + "anyhow", + "cc", + "cfg-if", + "indexmap 1.9.3", + "libc", + "log", + "mach", + "memfd", + "memoffset 0.8.0", + "paste", + "rand 0.8.5", + "rustix 0.36.15", + "wasmtime-asm-macros 8.0.1", + "wasmtime-environ 8.0.1", + "wasmtime-jit-debug 8.0.1", + "windows-sys 0.45.0", +] + +[[package]] +name = "wasmtime-types" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d23d61cb4c46e837b431196dd06abb11731541021916d03476a178b54dc07aeb" +dependencies = [ + "cranelift-entity 0.88.2", + "serde", + "thiserror", + "wasmparser 0.89.1", +] + +[[package]] +name = "wasmtime-types" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86e1e4f66a2b9a114f9def450ab9971828c968db6ea6fccd613724b771fa4913" +dependencies = [ + "cranelift-entity 0.92.1", + "serde", + "thiserror", + "wasmparser 0.96.0", +] + +[[package]] +name = "wasmtime-types" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4f6fffd2a1011887d57f07654dd112791e872e3ff4a2e626aee8059ee17f06f" +dependencies = [ + "cranelift-entity 0.95.1", + "serde", + "thiserror", + "wasmparser 0.102.0", +] + +[[package]] +name = "web-sys" +version = "0.3.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +dependencies = [ + "ring 0.16.20", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" +dependencies = [ + "webpki", +] + +[[package]] +name = "webpki-roots" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" +dependencies = [ + "rustls-webpki 0.100.1", +] + +[[package]] +name = "wide" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa469ffa65ef7e0ba0f164183697b89b854253fd31aeb92358b7b6155177d62f" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.1", +] + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc 0.36.1", + "windows_i686_gnu 0.36.1", + "windows_i686_msvc 0.36.1", + "windows_x86_64_gnu 0.36.1", + "windows_x86_64_msvc 0.36.1", +] + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.48.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05d4b17490f70499f20b9e791dcf6a299785ce8af4d709018206dc5b4953e95f" +dependencies = [ + "windows_aarch64_gnullvm 0.48.0", + "windows_aarch64_msvc 0.48.0", + "windows_i686_gnu 0.48.0", + "windows_i686_msvc 0.48.0", + "windows_x86_64_gnu 0.48.0", + "windows_x86_64_gnullvm 0.48.0", + "windows_x86_64_msvc 0.48.0", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" + +[[package]] +name = "winnow" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46aab759304e4d7b2075a9aecba26228bb073ee8c50db796b2c72c676b5d807" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper 0.6.0", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + +[[package]] +name = "yansi" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09041cd90cf85f7f8b2df60c646f853b7f535ce68f85244eb6731cf89fa498ec" + +[[package]] +name = "yansi" +version = "1.0.0-rc" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ee746ad3851dd3bc40e4a028ab3b00b99278d929e48957bcb2d111874a7e43e" + +[[package]] +name = "yap" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2a7eb6d82a11e4d0b8e6bda8347169aff4ccd8235d039bba7c47482d977dcf7" + +[[package]] +name = "zeroize" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.32", +] + +[[package]] +name = "zip" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +dependencies = [ + "aes 0.8.3", + "byteorder", + "bzip2", + "constant_time_eq 0.1.5", + "crc32fast", + "crossbeam-utils", + "flate2", + "hmac 0.12.1", + "pbkdf2 0.11.0", + "sha1", + "time", + "zstd", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.8+zstd.1.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" +dependencies = [ + "cc", + "libc", + "pkg-config", +] diff --git a/evm/forge/Cargo.toml b/evm/forge/Cargo.toml new file mode 100644 index 000000000..57b9e9a7c --- /dev/null +++ b/evm/forge/Cargo.toml @@ -0,0 +1,46 @@ +[package] +name = "ismp-solidity-test" +version = "0.1.0" +edition = "2021" +resolver = "2" +authors = ["Polytope Labs"] + +[dependencies] +# crates.io +once_cell = "1.17.0" +hex-literal = "0.4.1" +hex = "0.4.3" +trie-db = "0.24.0" +primitive-types = "0.12.1" +codec = { package = "parity-scale-codec", version = "3.2.2" } +sp-core = "17.0.0" +anyhow = "1.0.72" +sp-runtime = "17.0.0" +sp-trie = "17.0.0" +libfuzzer-sys = "0.4.6" +futures = "0.3.27" +bytes = "1.4.0" +subxt = { version = "0.30.1", features = ["substrate-compat"] } +tokio = { version = "1.17.0", features = ["macros"] } +tracing = "0.1.34" +tracing-subscriber = "0.3.11" +merkle-mountain-range = { package = "ckb-merkle-mountain-range", version = "0.5.2" } +serde = "1.0.188" +envy = "0.4.2" + +# rust-evm tools +forge = { git = "https://github.com/foundry-rs/foundry", rev = "25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" } +foundry-common = { git = "https://github.com/foundry-rs/foundry", rev = "25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" } +foundry-config = { git = "https://github.com/foundry-rs/foundry", rev = "25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" } +foundry-evm = { git = "https://github.com/foundry-rs/foundry", rev = "25d3ce7ca1eed4a9f1776103185e4221e8fa0a11" } +ethers = { git = "https://github.com/gakonst/ethers-rs", features = ["ethers-solc"] } + +# polytope-labs +merkle-mountain-range-labs = { package = "ckb-merkle-mountain-range", git = "https://github.com/polytope-labs/merkle-mountain-range", branch = "seun/simplified-mmr" } +rs_merkle = { git = "https://github.com/polytope-labs/rs-merkle", branch = "seun/2d-merkle-proofs" } +ismp = { path = "../../parachain/modules/ismp/core" } +beefy-prover = { git = "ssh://git@github.com/polytope-labs/tesseract.git", branch = "main" } +beefy-verifier-primitives = { git = "ssh://git@github.com/polytope-labs/tesseract.git", branch = "main" } + +## substrate +beefy-primitives = { package = "sp-consensus-beefy", git = "https://github.com/paritytech/polkadot-sdk", branch = "release-polkadot-v1.1.0" } \ No newline at end of file diff --git a/evm/forge/src/abi.rs b/evm/forge/src/abi.rs new file mode 100644 index 000000000..2d07a70a7 --- /dev/null +++ b/evm/forge/src/abi.rs @@ -0,0 +1,178 @@ +use beefy_primitives::mmr::BeefyNextAuthoritySet; +use beefy_verifier_primitives::{ConsensusMessage, ConsensusState, MmrProof}; +use merkle_mountain_range::{leaf_index_to_mmr_size, leaf_index_to_pos}; +use merkle_mountain_range_labs::mmr_position_to_k_index; +use primitive_types::H256; + +ethers::contract::abigen!(BeefyV1, "./src/abi/BeefyV1.json",); +ethers::contract::abigen!(HandlerV1, "./src/abi/HandlerV1.json",); + +impl From for BeefyConsensusProof { + fn from(message: ConsensusMessage) -> Self { + BeefyConsensusProof { + relay: message.mmr.into(), + parachain: ParachainProof { + parachain: message + .parachain + .parachains + .into_iter() + .map(|parachain| Parachain { + index: parachain.index.into(), + id: parachain.para_id.into(), + header: parachain.header.into(), + }) + .collect::>()[0] + .clone(), + proof: message + .parachain + .proof + .into_iter() + .map(|layer| { + layer + .into_iter() + .map(|(index, node)| Node { k_index: index.into(), node: node.into() }) + .collect() + }) + .collect(), + }, + } + } +} + +impl From for RelayChainProof { + fn from(value: MmrProof) -> Self { + let leaf_index = value.mmr_proof.leaf_indices[0]; + let k_index = mmr_position_to_k_index( + vec![leaf_index_to_pos(leaf_index)], + leaf_index_to_mmr_size(leaf_index), + )[0] + .1; + + RelayChainProof { + signed_commitment: SignedCommitment { + commitment: Commitment { + payload: vec![Payload { + id: b"mh".clone(), + data: value + .signed_commitment + .commitment + .payload + .get_raw(b"mh") + .unwrap() + .clone() + .into(), + }], + block_number: value.signed_commitment.commitment.block_number.into(), + validator_set_id: value.signed_commitment.commitment.validator_set_id.into(), + }, + votes: value + .signed_commitment + .signatures + .into_iter() + .map(|a| Vote { + signature: a.signature.to_vec().into(), + authority_index: a.index.into(), + }) + .collect(), + }, + latest_mmr_leaf: BeefyMmrLeaf { + version: 0.into(), + parent_number: value.latest_mmr_leaf.parent_number_and_hash.0.into(), + parent_hash: value.latest_mmr_leaf.parent_number_and_hash.1.into(), + next_authority_set: value.latest_mmr_leaf.beefy_next_authority_set.into(), + extra: value.latest_mmr_leaf.leaf_extra.into(), + k_index: k_index.into(), + leaf_index: leaf_index.into(), + }, + mmr_proof: value.mmr_proof.items.into_iter().map(Into::into).collect(), + proof: value + .authority_proof + .into_iter() + .map(|layer| { + layer + .into_iter() + .map(|(index, node)| Node { k_index: index.into(), node: node.into() }) + .collect() + }) + .collect(), + } + } +} + +impl From> for AuthoritySetCommitment { + fn from(value: BeefyNextAuthoritySet) -> Self { + AuthoritySetCommitment { + id: value.id.into(), + len: value.len.into(), + root: value.keyset_commitment.into(), + } + } +} + +impl From for BeefyConsensusState { + fn from(value: ConsensusState) -> Self { + BeefyConsensusState { + latest_height: value.latest_beefy_height.into(), + beefy_activation_block: value.beefy_activation_block.into(), + current_authority_set: value.current_authorities.into(), + next_authority_set: value.next_authorities.into(), + } + } +} + +impl From for ConsensusState { + fn from(value: BeefyConsensusState) -> Self { + ConsensusState { + beefy_activation_block: value.beefy_activation_block.as_u32(), + latest_beefy_height: value.latest_height.as_u32(), + mmr_root_hash: Default::default(), + current_authorities: BeefyNextAuthoritySet { + id: value.current_authority_set.id.as_u64(), + len: value.current_authority_set.len.as_u32(), + keyset_commitment: value.current_authority_set.root.into(), + }, + next_authorities: BeefyNextAuthoritySet { + id: value.next_authority_set.id.as_u64(), + len: value.next_authority_set.len.as_u32(), + keyset_commitment: value.next_authority_set.root.into(), + }, + } + } +} + +impl From for local::IntermediateState { + fn from(value: IntermediateState) -> Self { + local::IntermediateState { + height: local::StateMachineHeight { + state_machine_id: value.state_machine_id.as_u32(), + height: value.height.as_u32(), + }, + commitment: local::StateCommitment { + timestamp: value.commitment.timestamp.as_u64(), + commitment: H256(value.commitment.state_root), + }, + } + } +} + +pub mod local { + use primitive_types::H256; + + #[derive(Debug)] + pub struct StateMachineHeight { + pub state_machine_id: u32, + pub height: u32, + } + + #[derive(Debug)] + pub struct StateCommitment { + pub timestamp: u64, + pub commitment: H256, + } + + #[derive(Debug)] + pub struct IntermediateState { + pub height: StateMachineHeight, + pub commitment: StateCommitment, + } +} diff --git a/evm/forge/src/abi/BeefyV1.json b/evm/forge/src/abi/BeefyV1.json new file mode 100644 index 000000000..c0c22ffe4 --- /dev/null +++ b/evm/forge/src/abi/BeefyV1.json @@ -0,0 +1,13185 @@ +{ + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "paraId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AURA_CONSENSUS_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "ISMP_CONSENSUS_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MMR_ROOT_PAYLOAD_ID", + "outputs": [ + { + "internalType": "bytes2", + "name": "", + "type": "bytes2" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SLOT_DURATION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "latestHeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beefyActivationBlock", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "currentAuthoritySet", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple" + } + ], + "internalType": "struct BeefyConsensusState", + "name": "trustedState", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "bytes2", + "name": "id", + "type": "bytes2" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "internalType": "struct Payload[]", + "name": "payload", + "type": "tuple[]" + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorSetId", + "type": "uint256" + } + ], + "internalType": "struct Commitment", + "name": "commitment", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "authorityIndex", + "type": "uint256" + } + ], + "internalType": "struct Vote[]", + "name": "votes", + "type": "tuple[]" + } + ], + "internalType": "struct SignedCommitment", + "name": "signedCommitment", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "parentNumber", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "extra", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "leafIndex", + "type": "uint256" + } + ], + "internalType": "struct BeefyMmrLeaf", + "name": "latestMmrLeaf", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "mmrProof", + "type": "bytes32[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "k_index", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "internalType": "struct Node[][]", + "name": "proof", + "type": "tuple[][]" + } + ], + "internalType": "struct RelayChainProof", + "name": "relay", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "header", + "type": "bytes" + } + ], + "internalType": "struct Parachain", + "name": "parachain", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "k_index", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ], + "internalType": "struct Node[][]", + "name": "proof", + "type": "tuple[][]" + } + ], + "internalType": "struct ParachainProof", + "name": "parachain", + "type": "tuple" + } + ], + "internalType": "struct BeefyConsensusProof", + "name": "proof", + "type": "tuple" + } + ], + "name": "verifyConsensus", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "latestHeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beefyActivationBlock", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "currentAuthoritySet", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ], + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple" + } + ], + "internalType": "struct BeefyConsensusState", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "overlayRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + } + ], + "internalType": "struct StateCommitment", + "name": "commitment", + "type": "tuple" + } + ], + "internalType": "struct IntermediateState", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedState", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "encodedProof", + "type": "bytes" + } + ], + "name": "verifyConsensus", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "overlayRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + } + ], + "internalType": "struct StateCommitment", + "name": "commitment", + "type": "tuple" + } + ], + "internalType": "struct IntermediateState", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x60806040523480156200001157600080fd5b5060405162003d9838038062003d9883398101604081905262000034916200003d565b60005562000057565b6000602082840312156200005057600080fd5b5051919050565b613d3180620000676000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80634e9fdbec146100675780635e399aea146100935780637d755598146100b4578063905c0511146100d5578063af8b91d6146100ec578063babb311814610111575b600080fd5b610075636175726160e01b81565b6040516001600160e01b031990911681526020015b60405180910390f35b6100a66100a1366004612bd4565b61011f565b60405161008a929190612d90565b6100c76100c2366004612dd8565b610164565b60405161008a929190612e8b565b6100de612ee081565b60405190815260200161008a565b6100f8610dad60f31b81565b6040516001600160f01b0319909116815260200161008a565b61007563049534d560e41b81565b610127612443565b61012f6124a6565b60008061014086866000015161025b565b915091506000610154828760200151610751565b92945091925050505b9250929050565b606061016e6124a6565b6000848060200190518101906101849190612f64565b90506000808580602001905181019061019d919061343d565b91509150600080306001600160a01b0316635e399aea866040518060400160405280888152602001878152506040518363ffffffff1660e01b81526004016101e69291906136fe565b6101a060405180830381865afa158015610204573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610228919061385e565b915091508160405160200161023d91906138f9565b60408051808303601f19018152919052999098509650505050505050565b610263612443565b815160208082015151915101518451600092919081116102e75760405162461bcd60e51b815260206004820152603460248201527f636f6e73656e73757320636c69656e7473206f6e6c79206163636570742070726044820152736f6f667320666f72206e6577206865616465727360601b60648201526084015b60405180910390fd5b6102f982876040015160200151610b5f565b80610311575061031182876060015160200151610b5f565b6103695760405162461bcd60e51b8152602060048201526024808201527f5375706572206d616a6f72697479207468726573686f6c64206e6f742072656160448201526318da195960e21b60648201526084016102de565b8451516040808801515190820151148061038b57506060870151516040820151145b6103cf5760405162461bcd60e51b8152602060048201526015602482015274155b9adb9bdddb88185d5d1a1bdc9a5d1e481cd95d605a1b60448201526064016102de565b60408088015151908201518251519114906000805b8281101561048f5784518051610dad60f31b91908390811061040857610408613908565b6020026020010151600001516001600160f01b03191614801561044b5750845180518290811061043a5761043a613908565b602002602001015160200151516020145b1561047d5761047a8560000151828151811061046957610469613908565b602002602001015160200151610b8d565b91505b8061048781613934565b9150506103e4565b50806104dd5760405162461bcd60e51b815260206004820152601760248201527f4d6d7220726f6f742068617368206e6f7420666f756e6400000000000000000060448201526064016102de565b60006104e885610bf5565b8051906020012090506000876001600160401b0381111561050b5761050b612572565b60405190808252806020026020018201604052801561055057816020015b60408051808201909152600080825260208201528152602001906001900390816105295790505b50905060005b8881101561061f5760008c6000015160200151828151811061057a5761057a613908565b602002602001015190506000610594858360000151610d95565b9050604051806040016040528083602001518152602001826040516020016105d4919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052805190602001208152508484815181106105ff576105ff613908565b60200260200101819052505050808061061790613934565b915050610556565b5084156106985761063d8c60400151604001518c6060015183610db9565b6106935760405162461bcd60e51b815260206004820152602160248201527f496e76616c69642063757272656e7420617574686f7269746965732070726f6f6044820152603360f91b60648201526084016102de565b6106fb565b6106af8c60600151604001518c6060015183610db9565b6106fb5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206e65787420617574686f7269746965732070726f6f66000060448201526064016102de565b6107068c8c85610dd1565b6060808d01515160208d015190910151511115610735576060808d01805160408f015260208d01519091015190525b5050509288525050505060209290920151608001519293915050565b6107596124a6565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610770575050835160005460208201519293509091146107e35760405162461bcd60e51b815260206004820152600e60248201526d155b9adb9bdddb881c185c98525960921b60448201526064016102de565b60006107f28260400151610f68565b905080602001516000036108545760405162461bcd60e51b8152602060048201526024808201527f47656e6573697320626c6f636b2073686f756c64206e6f7420626520696e636c6044820152631d59195960e21b60648201526084016102de565b60008060005b8360800151518110156109d0578360800151818151811061087d5761087d613908565b60200260200101516040015180156108d4575063049534d560e41b6001600160e01b031916846080015182815181106108b8576108b8613908565b602002602001015160600151600001516001600160e01b031916145b1561090a57610907846080015182815181106108f2576108f2613908565b60200260200101516060015160200151610b8d565b92505b8360800151818151811061092057610920613908565b60200260200101516000015180156109775750636175726160e01b6001600160e01b0319168460800151828151811061095b5761095b613908565b602002602001015160200151600001516001600160e01b031916145b156109be5760006109ac8560800151838151811061099757610997613908565b6020026020010151602001516020015161116a565b90506109ba612ee08261394d565b9250505b806109c881613934565b91505061085a565b5080600003610a185760405162461bcd60e51b815260206004820152601460248201527374696d657374616d70206e6f7420666f756e642160601b60448201526064016102de565b604051806040016040528085600001518152602001610a5c8660200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b610a6987604001516111ec565b604051602001610a7a929190613964565b6040516020818303038152906040528051906020012081525085600081518110610aa657610aa6613908565b6020026020010181905250600060405180606001604052808660200151815260200185602001518152602001604051806060016040528085815260200186815260200187604001518152508152509050610b0589896020015188610db9565b610b515760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642070617261636861696e732068656164732070726f6f66000060448201526064016102de565b955050505050505b92915050565b60006003610b6e83600261394d565b610b7891906139ab565b610b839060016139bf565b9092101592915050565b6000602082511015610bed5760405162461bcd60e51b8152602060048201526024808201527f42797465733a3a20746f427974657333323a206461746120697320746f20736860448201526337b93a1760e11b60648201526084016102de565b506020015190565b8051516040805160208101909152600080825260609291905b82811015610cc4578451805182908110610c2a57610c2a613908565b602002602001015160000151604051602001610c5691906001600160f01b031991909116815260020190565b604051602081830303815290604052610c8f86600001518381518110610c7e57610c7e613908565b6020026020010151602001516111ec565b604051602001610ca09291906139d2565b60405160208183030381529060405291508080610cbc90613934565b915050610c0e565b506000610cd083611220565b82604051602001610ce29291906139d2565b60405160208183030381529060405290506000610d248660200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b610d3187604001516114c3565b6040516001600160e01b031990921660208301526001600160c01b0319166024820152602c0160405160208183030381529060405290508181604051602001610d7b9291906139d2565b604051602081830303815290604052945050505050919050565b6000806000610da4858561152d565b91509150610db18161156f565b509392505050565b6000610dc583836116bc565b841490505b9392505050565b6000610de083602001516119ef565b8051906020012090506000610e018560200151856020015160200151611bb7565b610e0c9060016139bf565b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610e275790505090506040518060600160405280866020015160a001518152602001866020015160c0015181526020018481525081600081518110610e9457610e94613908565b6020908102919091010152604080860151905163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9163722e206d91610edf91889186908890600401613a01565b602060405180830381865af4158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f209190613aad565b610f605760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21026b6b910283937b7b360791b60448201526064016102de565b505050505050565b6040805160a08101825260008082526020808301829052828401829052606080840183905260808401528351808501909452848452838101829052919291610fba90610fb5908490611bd9565b610b8d565b90506000610fc783611c5a565b90506000610fd9610fb5856020611bd9565b90506000610feb610fb5866020611bd9565b90506000610ff886611c5a565b90506000816001600160401b0381111561101457611014612572565b60405190808252806020026020018201604052801561104d57816020015b61103a6124d9565b8152602001906001900390816110325790505b50905060005b8281101561113b57600061106689611e3f565b90506110706124d9565b60ff821661108457600160c0820152611108565b60031960ff8316016110aa57600160408201526110a08a611edb565b6060820152611108565b60041960ff8316016110d057600160808201526110c68a611edb565b60a0820152611108565b60051960ff8316016110f357600181526110e98a611edb565b6020820152611108565b60071960ff8316016111085760016101008201525b8084848151811061111b5761111b613908565b60200260200101819052505050808061113390613934565b915050611053565b506040805160a08101825296875260208701959095529385019290925260608401525060808201529392505050565b805160009081905b80156111e557611183600182613acf565b61118e90600861394d565b611199906002613bc6565b846111a5600184613acf565b815181106111b5576111b5613908565b01602001516111c7919060f81c61394d565b6111d190836139bf565b9150806111dd81613bd2565b915050611172565b5092915050565b60606111f88251611220565b8260405160200161120a9291906139d2565b6040516020818303038152906040529050919050565b6060604082101561124a576040516001600160f81b031960fa84901b16602082015260210161120a565b61400082101561129d5761127a611266600284901b60016139bf565b600881811b62ffff001691901c60ff161790565b60405160200161120a919060f09190911b6001600160f01b031916815260020190565b6340000000821015611301576112de6112ba600284811b906139bf565b600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1790565b60405160200161120a919060e09190911b6001600160e01b031916815260040190565b600061147561144f8460008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b60408277ffffffffffffffff0000000000000000ffffffffffffffff1916901c179050608081901b608082901c179050919050565b60405160200161146191815260200190565b604051602081830303815290604052611f48565b805190915060006002611489600484613acf565b611495911b60036139bf565b905080836040516020016114aa929190613be9565b6040516020818303038152906040529350505050919050565b600065ff000000ff00600883811b91821664ff000000ff9185901c91821617601090811b67ff000000ff0000009390931666ff000000ff00009290921691909117901c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b92915050565b60008082516041036115635760208301516040840151606085015160001a61155787828585611fb5565b9450945050505061015d565b5060009050600261015d565b600081600481111561158357611583613c18565b0361158b5750565b600181600481111561159f5761159f613c18565b036115ec5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102de565b600281600481111561160057611600613c18565b0361164d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102de565b600381600481111561166157611661613c18565b036116b95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016102de565b50565b604080516000808252602082019092528190816116fb565b60408051808201909152600080825260208201528152602001906001900390816116d45790505b509050611722838560008151811061171557611715613908565b6020026020010151612079565b8460008151811061173557611735613908565b6020908102919091010152835160005b818110156119b757604080516000808252602082019092528161178a565b60408051808201909152600080825260208201528152602001906001900390816117635790505b50905083516000036117b7578682815181106117a8576117a8613908565b602002602001015190506117dd565b6117da8783815181106117cc576117cc613908565b602002602001015185612079565b90505b6117e981516002612285565b6001600160401b0381111561180057611800612572565b60405190808252806020026020018201604052801561184557816020015b604080518082019091526000808252602082015281526020019060019003908161181e5790505b508151909450600090815b818110156119a057816118648260016139bf565b106118d857600084828151811061187d5761187d613908565b602002602001015190506118af85838151811061189c5761189c613908565b60200260200101516000015160026122ad565b8152875181908990869081106118c7576118c7613908565b60200260200101819052505061198e565b604080518082019091526000808252602082015261190185838151811061189c5761189c613908565b815284516119609086908490811061191b5761191b613908565b6020026020010151602001518684600161193591906139bf565b8151811061194557611945613908565b60200260200101516020015160009182526020526040902090565b60208201528751819089908690811061197b5761197b613908565b6020908102919091010152506001909201915b6119996002826139bf565b9050611850565b5050505080806119af90613934565b915050611745565b5081516001146119c657600080fd5b816000815181106119d9576119d9613908565b6020026020010151602001519250505092915050565b606060008260000151604051602001611a1b919060f89190911b6001600160f81b031916815260010190565b604051602081830303815290604052611a598460200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b604051602001611a6a929190613c2e565b60408051601f19818403018152828252858201516020840152925060009101604051602081830303815290604052611aa98560600151600001516114c3565b604051602001611aba929190613c5d565b60405160208183030381529060405290506000611b00856060015160200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b856060015160400151604051602001611b1b91815260200190565b60408051601f1981840301815290829052611b399291602001613964565b60405160208183030381529060405290508282604051602001611b5d9291906139d2565b60408051601f19818403018152828252608088015160208401529183910160408051601f1981840301815290829052611b9992916020016139d2565b60408051601f19818403018152908290526114aa92916020016139d2565b600082600003611bc8575080610b59565b611bd28383613acf565b9050610b59565b6060826000015151828460200151611bf191906139bf565b1115611bfc57600080fd5b81600003611c195750604080516020810190915260008152610b59565b8251602080850151910190600090611c3b90611c3590846139bf565b856122b9565b90508385602001818151611c4f91906139bf565b905250949350505050565b600080611c6683611e3f565b90506000611c75600483613c8c565b905060008160ff16600003611c925750603f600283901c16611e37565b8160ff16600103611cd7576000611ca886611e3f565b9050613fc0600682901b16611cc4603f600287901c1682613cae565b6001600160401b03169250611e37915050565b8160ff16600203611d4a576000611ced86611e3f565b90506000611cfa87611e3f565b90506000611d0788611e3f565b63ffffffff60089490941b61ff001660ff88161760109390931b62ff0000169290921760189290921b63ff000000169190911760021c919091169150611e379050565b8160ff16600303611def576000611d69603f600286901c166004613cce565b905060088160ff161115611dd05760405162461bcd60e51b815260206004820152602860248201527f756e657870656374656420707265666978206465636f64696e6720436f6d706160448201526731ba1e2ab4b73a1f60c11b60648201526084016102de565b611de5611de0878360ff16611bd9565b61116a565b9695505050505050565b60405162461bcd60e51b815260206004820152601a60248201527f436f64652073686f756c6420626520756e726561636861626c6500000000000060448201526064016102de565b949350505050565b805151602082015160009190611e569060016139bf565b1115611e935760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b60448201526064016102de565b60008260000151836020015181518110611eaf57611eaf613908565b602001015160f81c60f81b60f81c9050600183602001818151611ed291906139bf565b90525092915050565b6040805180820190915260008152606060208201526000611f07611f00846004611bd9565b600061230f565b90506000611f1484611c5a565b90506000611f228583611bd9565b604080518082019091526001600160e01b03199094168452602084015250909392505050565b8051606090600080611f5b600184613acf565b90505b848181518110611f7057611f70613908565b01602001516001600160f81b03191615611f8c57809150611f9e565b80611f9681613bd2565b915050611f5e565b50611e37846000611fb08460016139bf565b61236c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611fec5750600090506003612070565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612040573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661206957600060019250925050612070565b9150600090505b94509492505050565b81518151606091600091829182918261209282846139bf565b90506000816001600160401b038111156120ae576120ae612572565b6040519080825280602002602001820160405280156120f357816020015b60408051808201909152600080825260208201528152602001906001900390816120cc5790505b5090505b838710801561210557508286105b156121da5788868151811061211c5761211c613908565b6020026020010151600001518a888151811061213a5761213a613908565b60200260200101516000015110156121935789878151811061215e5761215e613908565b602002602001015181868151811061217857612178613908565b602090810291909101015260019687019694909401936120f7565b8886815181106121a5576121a5613908565b60200260200101518186815181106121bf576121bf613908565b602090810291909101015260019586019594909401936120f7565b83871015612229578987815181106121f4576121f4613908565b602002602001015181868151811061220e5761220e613908565b602090810291909101015260019687019694909401936121da565b828610156122785788868151811061224357612243613908565b602002602001015181868151811061225d5761225d613908565b60209081029190910101526001958601959490940193612229565b9998505050505050505050565b60008061229283856139ab565b905061229e8385613ce7565b15610dca576001019392505050565b6000610dca82846139ab565b6060816001600160401b038111156122d3576122d3612572565b6040519080825280601f01601f1916602001820160405280156122fd576020820181803683370190505b509050602081016111e58482856123c3565b60008060005b6004811015610db15761232981600861394d565b8561233483876139bf565b8151811061234457612344613908565b01602001516001600160f81b031916901c91909117908061236481613934565b915050612315565b825160609061237b83856139bf565b111561238657600080fd5b816000036123a35750604080516020810190915260008152610dca565b602084016123ba6123b485836139bf565b846122b9565b95945050505050565b602081106123fb57825182526123da6020836139bf565b91506123e76020846139bf565b92506123f4602082613acf565b90506123c3565b6000811561242b576001612410836020613acf565b61241c90610100613bc6565b6124269190613acf565b61242f565b6000195b935183518516941916939093179091525050565b6040518060800160405280600081526020016000815260200161248360405180606001604052806000815260200160008152602001600080191681525090565b815260408051606081018252600080825260208281018290529282015291015290565b60408051606080820183526000808352602080840182905284519283018552818352820181905281840152909182015290565b60405180610120016040528060001515815260200161250960408051808201909152600081526060602082015290565b81526000602082015260400161253060408051808201909152600081526060602082015290565b81526000602082015260400161255760408051808201909152600081526060602082015290565b81526000602082018190526060604083018190529091015290565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156125aa576125aa612572565b60405290565b604080519081016001600160401b03811182821017156125aa576125aa612572565b60405160e081016001600160401b03811182821017156125aa576125aa612572565b604051608081016001600160401b03811182821017156125aa576125aa612572565b604051601f8201601f191681016001600160401b038111828210171561263e5761263e612572565b604052919050565b60006060828403121561265857600080fd5b612660612588565b905081358152602082013560208201526040820135604082015292915050565b60006001600160401b0382111561269957612699612572565b5060051b60200190565b6001600160f01b0319811681146116b957600080fd5b60006001600160401b038211156126d2576126d2612572565b50601f01601f191660200190565b600082601f8301126126f157600080fd5b81356127046126ff826126b9565b612616565b81815284602083860101111561271957600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261274757600080fd5b813560206127576126ff83612680565b82815260059290921b8401810191818101908684111561277657600080fd5b8286015b848110156127f45780356001600160401b038082111561279a5760008081fd5b908801906040828b03601f19018113156127b45760008081fd5b6127bc6125b0565b87840135838111156127ce5760008081fd5b6127dc8d8a838801016126e0565b8252509201358683015250835291830191830161277a565b509695505050505050565b60006040828403121561281157600080fd5b6128196125b0565b905081356001600160401b038082111561283257600080fd5b908301906060828603121561284657600080fd5b61284e612588565b82358281111561285d57600080fd5b8301601f8101871361286e57600080fd5b8035602061287e6126ff83612680565b82815260059290921b8301810191818101908a84111561289d57600080fd5b8285015b8481101561291b578035888111156128b95760008081fd5b86016040818e03601f190112156128d05760008081fd5b6128d86125b0565b858201356128e5816126a3565b815260408201358a8111156128fa5760008081fd5b6129088f88838601016126e0565b82880152508452509183019183016128a1565b5080865250508086013581850152604086013560408501528387528088013595508486111561294957600080fd5b61295589878a01612736565b8188015250505050505092915050565b6000610120828403121561297857600080fd5b6129806125d2565b90508135815260208201356020820152604082013560408201526129a78360608401612646565b606082015260c0820135608082015260e082013560a082015261010082013560c082015292915050565b600082601f8301126129e257600080fd5b813560206129f26126ff83612680565b82815260059290921b84018101918181019086841115612a1157600080fd5b8286015b848110156127f45780358352918301918301612a15565b600082601f830112612a3d57600080fd5b81356020612a4d6126ff83612680565b82815260059290921b84018101918181019086841115612a6c57600080fd5b8286015b848110156127f45780356001600160401b03811115612a8f5760008081fd5b8701603f81018913612aa15760008081fd5b848101356040612ab36126ff83612680565b82815260069290921b8301810191878101908c841115612ad35760008081fd5b938201935b83851015612b135782858e031215612af05760008081fd5b612af86125b0565b85358152898601358a82015282529382019390880190612ad8565b875250505092840192508301612a70565b600060408284031215612b3657600080fd5b612b3e6125b0565b905081356001600160401b0380821115612b5757600080fd5b9083019060608286031215612b6b57600080fd5b612b73612588565b8235815260208301356020820152604083013582811115612b9357600080fd5b612b9f878286016126e0565b60408301525083526020840135915080821115612bbb57600080fd5b50612bc884828501612a2c565b60208301525092915050565b600080828403610120811215612be957600080fd5b61010080821215612bf957600080fd5b612c016125f4565b91508435825260208086013581840152612c1e8760408801612646565b6040840152612c308760a08801612646565b6060840152919350840135906001600160401b039081831115612c5257600080fd5b9185019160408388031215612c6657600080fd5b612c6e6125b0565b833583811115612c7d57600080fd5b8401610180818a031215612c9057600080fd5b612c986125f4565b813585811115612ca757600080fd5b612cb38b8285016127ff565b825250612cc28a858401612965565b8482015261014082013585811115612cd957600080fd5b612ce58b8285016129d1565b60408301525061016082013585811115612cfe57600080fd5b612d0a8b828501612a2c565b6060830152508252508382013583811115612d2457600080fd5b612d3089828701612b24565b8383015250809450505050509250929050565b805182526020808201518184015260408083015180518286015291820151606085015281015160808401525060600151805160a0830152602081015160c08301526040015160e090910152565b6101a08101612d9f8285612d43565b82516101008301526020808401516101208401526040808501518051610140860152918201516101608501520151610180830152610dca565b60008060408385031215612deb57600080fd5b82356001600160401b0380821115612e0257600080fd5b612e0e868387016126e0565b93506020850135915080821115612e2457600080fd5b50612e31858286016126e0565b9150509250929050565b60005b83811015612e56578181015183820152602001612e3e565b50506000910152565b60008151808452612e77816020860160208601612e3b565b601f01601f19169290920160200192915050565b60c081526000612e9e60c0830185612e5f565b9050610dca602083018480518252602080820151818401526040918201518051838501529081015160608401520151608090910152565b600060608284031215612ee757600080fd5b612eef612588565b905081518152602082015160208201526040820151604082015292915050565b60006101008284031215612f2257600080fd5b612f2a6125f4565b90508151815260208201516020820152612f478360408401612ed5565b6040820152612f598360a08401612ed5565b606082015292915050565b60006101008284031215612f7757600080fd5b610dca8383612f0f565b600082601f830112612f9257600080fd5b8151612fa06126ff826126b9565b818152846020838601011115612fb557600080fd5b611e37826020830160208701612e3b565b600082601f830112612fd757600080fd5b81516020612fe76126ff83612680565b82815260059290921b8401810191818101908684111561300657600080fd5b8286015b848110156127f45780516001600160401b038082111561302a5760008081fd5b908801906040828b03601f19018113156130445760008081fd5b61304c6125b0565b878401518381111561305e5760008081fd5b61306c8d8a83880101612f81565b8252509201518683015250835291830191830161300a565b60006040828403121561309657600080fd5b61309e6125b0565b905081516001600160401b03808211156130b757600080fd5b90830190606082860312156130cb57600080fd5b6130d3612588565b8251828111156130e257600080fd5b8301601f810187136130f357600080fd5b805160206131036126ff83612680565b82815260059290921b8301810191818101908a84111561312257600080fd5b8285015b848110156131a05780518881111561313e5760008081fd5b86016040818e03601f190112156131555760008081fd5b61315d6125b0565b8582015161316a816126a3565b815260408201518a81111561317f5760008081fd5b61318d8f8883860101612f81565b8288015250845250918301918301613126565b508086525050808601518185015260408601516040850152838752808801519550848611156131ce57600080fd5b61295589878a01612fc6565b600061012082840312156131ed57600080fd5b6131f56125d2565b905081518152602082015160208201526040820151604082015261321c8360608401612ed5565b606082015260c0820151608082015260e082015160a082015261010082015160c082015292915050565b600082601f83011261325757600080fd5b815160206132676126ff83612680565b82815260059290921b8401810191818101908684111561328657600080fd5b8286015b848110156127f4578051835291830191830161328a565b600082601f8301126132b257600080fd5b815160206132c26126ff83612680565b82815260059290921b840181019181810190868411156132e157600080fd5b8286015b848110156127f45780516001600160401b038111156133045760008081fd5b8701603f810189136133165760008081fd5b8481015160406133286126ff83612680565b82815260069290921b8301810191878101908c8411156133485760008081fd5b938201935b838510156133885782858e0312156133655760008081fd5b61336d6125b0565b85518152898601518a8201528252938201939088019061334d565b8752505050928401925083016132e5565b6000604082840312156133ab57600080fd5b6133b36125b0565b905081516001600160401b03808211156133cc57600080fd5b90830190606082860312156133e057600080fd5b6133e8612588565b825181526020830151602082015260408301518281111561340857600080fd5b61341487828601612f81565b6040830152508352602084015191508082111561343057600080fd5b50612bc8848285016132a1565b6000806040838503121561345057600080fd5b82516001600160401b038082111561346757600080fd5b90840190610180828703121561347c57600080fd5b6134846125f4565b82518281111561349357600080fd5b61349f88828601613084565b8252506134af87602085016131da565b6020820152610140830151828111156134c757600080fd5b6134d388828601613246565b604083015250610160830151828111156134ec57600080fd5b6134f8888286016132a1565b606083015250602086015190945091508082111561351557600080fd5b50612e3185828601613399565b600081518084526020808501808196508360051b8101915082860160005b8581101561358057828403895281516040815181875261356282880182612e5f565b92880151968801969096525098850198935090840190600101613540565b5091979650505050505050565b80518252602081015160208301526040810151604083015260608101516135cb60608401828051825260208082015190830152604090810151910152565b50608081015160c083015260a081015160e083015260c08101516101008301525050565b600081518084526020808501945080840160005b8381101561361f57815187529582019590820190600101613603565b509495945050505050565b600081518084526020808501808196508360051b810191508286016000805b868110156136a3578385038a52825180518087529087019087870190845b8181101561368e578351805184528a01518a84015292890192604090920191600101613667565b50509a87019a95505091850191600101613649565b509298975050505050505050565b6000815160408452805160408501526020810151606085015260408101519050606060808501526136e560a0850182612e5f565b9050602083015184820360208601526123ba828261362a565b600061012061370d8386612d43565b8061010084015283516040808386015281519250610180806101608701528351826102e08801526103808701815160606103208a01528181518084526103a09350838b019150838160051b8c010193506020808401935060005b828110156137b1578c860361039f19018452845180516001600160f01b03191687528201518287018a905261379e8a880182612e5f565b9650509381019392810192600101613767565b50858101516103408d0152878601516103608d0152988901518b85036102df19016103008d0152986137e3858b613522565b99508089015195506137f7878d018761358d565b87890151975061015f199650868c8b03016102a08d01526138188a896135ef565b995060608901519850868c8b03016102c08d01526138368a8a61362a565b9950808d01519850505050505050505061011f1984830301610140850152611de582826136b1565b6000808284036101a081121561387357600080fd5b61387d8585612f0f565b925060a060ff198201121561389157600080fd5b613899612588565b61010085015181526101208501516020820152606061013f19830112156138bf57600080fd5b6138c7612588565b915061014085015182526101608501516020830152610180850151604083015281604082015280925050509250929050565b6101008101610b598284612d43565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016139465761394661391e565b5060010190565b8082028115828204841417610b5957610b5961391e565b6001600160e01b0319831681528151600090613987816004850160208701612e3b565b919091016004019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826139ba576139ba613995565b500490565b80820180821115610b5957610b5961391e565b600083516139e4818460208801612e3b565b8351908301906139f8818360208801612e3b565b01949350505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015613a4257845183529383019391830191600101613a26565b50508481036040860152865180825290820192508187019060005b81811015613a9757613a848584518051825260208082015190830152604090810151910152565b6060949094019391830191600101613a5d565b5050505060609290920192909252949350505050565b600060208284031215613abf57600080fd5b81518015158114610dca57600080fd5b81810381811115610b5957610b5961391e565b600181815b80851115613b1d578160001904821115613b0357613b0361391e565b80851615613b1057918102915b93841c9390800290613ae7565b509250929050565b600082613b3457506001610b59565b81613b4157506000610b59565b8160018114613b575760028114613b6157613b7d565b6001915050610b59565b60ff841115613b7257613b7261391e565b50506001821b610b59565b5060208310610133831016604e8410600b8410161715613ba0575081810a610b59565b613baa8383613ae2565b8060001904821115613bbe57613bbe61391e565b029392505050565b6000610dca8383613b25565b600081613be157613be161391e565b506000190190565b60ff60f81b8360f81b16815260008251613c0a816001850160208701612e3b565b919091016001019392505050565b634e487b7160e01b600052602160045260246000fd5b60008351613c40818460208801612e3b565b6001600160e01b0319939093169190920190815260040192915050565b60008351613c6f818460208801612e3b565b6001600160c01b0319939093169190920190815260080192915050565b600060ff831680613c9f57613c9f613995565b8060ff84160691505092915050565b6001600160401b038181168382160190808211156111e5576111e561391e565b60ff8181168382160190811115610b5957610b5961391e565b600082613cf657613cf6613995565b50069056fea2646970667358221220d20bfac253c2198bb4f2670c538179920eab12667a4fee3856ac14331786021064736f6c63430008110033", + "sourceMap": "2491:8323:49:-:0;;;2941:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2979:7;:16;2491:8323;;14:184:66;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:66;;14:184;-1:-1:-1;14:184:66:o;:::-;2491:8323:49;;;;;;", + "linkReferences": { + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "MerkleMountainRange": [ + { + "start": 3866, + "length": 20 + } + ] + } + } + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80634e9fdbec146100675780635e399aea146100935780637d755598146100b4578063905c0511146100d5578063af8b91d6146100ec578063babb311814610111575b600080fd5b610075636175726160e01b81565b6040516001600160e01b031990911681526020015b60405180910390f35b6100a66100a1366004612bd4565b61011f565b60405161008a929190612d90565b6100c76100c2366004612dd8565b610164565b60405161008a929190612e8b565b6100de612ee081565b60405190815260200161008a565b6100f8610dad60f31b81565b6040516001600160f01b0319909116815260200161008a565b61007563049534d560e41b81565b610127612443565b61012f6124a6565b60008061014086866000015161025b565b915091506000610154828760200151610751565b92945091925050505b9250929050565b606061016e6124a6565b6000848060200190518101906101849190612f64565b90506000808580602001905181019061019d919061343d565b91509150600080306001600160a01b0316635e399aea866040518060400160405280888152602001878152506040518363ffffffff1660e01b81526004016101e69291906136fe565b6101a060405180830381865afa158015610204573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610228919061385e565b915091508160405160200161023d91906138f9565b60408051808303601f19018152919052999098509650505050505050565b610263612443565b815160208082015151915101518451600092919081116102e75760405162461bcd60e51b815260206004820152603460248201527f636f6e73656e73757320636c69656e7473206f6e6c79206163636570742070726044820152736f6f667320666f72206e6577206865616465727360601b60648201526084015b60405180910390fd5b6102f982876040015160200151610b5f565b80610311575061031182876060015160200151610b5f565b6103695760405162461bcd60e51b8152602060048201526024808201527f5375706572206d616a6f72697479207468726573686f6c64206e6f742072656160448201526318da195960e21b60648201526084016102de565b8451516040808801515190820151148061038b57506060870151516040820151145b6103cf5760405162461bcd60e51b8152602060048201526015602482015274155b9adb9bdddb88185d5d1a1bdc9a5d1e481cd95d605a1b60448201526064016102de565b60408088015151908201518251519114906000805b8281101561048f5784518051610dad60f31b91908390811061040857610408613908565b6020026020010151600001516001600160f01b03191614801561044b5750845180518290811061043a5761043a613908565b602002602001015160200151516020145b1561047d5761047a8560000151828151811061046957610469613908565b602002602001015160200151610b8d565b91505b8061048781613934565b9150506103e4565b50806104dd5760405162461bcd60e51b815260206004820152601760248201527f4d6d7220726f6f742068617368206e6f7420666f756e6400000000000000000060448201526064016102de565b60006104e885610bf5565b8051906020012090506000876001600160401b0381111561050b5761050b612572565b60405190808252806020026020018201604052801561055057816020015b60408051808201909152600080825260208201528152602001906001900390816105295790505b50905060005b8881101561061f5760008c6000015160200151828151811061057a5761057a613908565b602002602001015190506000610594858360000151610d95565b9050604051806040016040528083602001518152602001826040516020016105d4919060609190911b6bffffffffffffffffffffffff1916815260140190565b604051602081830303815290604052805190602001208152508484815181106105ff576105ff613908565b60200260200101819052505050808061061790613934565b915050610556565b5084156106985761063d8c60400151604001518c6060015183610db9565b6106935760405162461bcd60e51b815260206004820152602160248201527f496e76616c69642063757272656e7420617574686f7269746965732070726f6f6044820152603360f91b60648201526084016102de565b6106fb565b6106af8c60600151604001518c6060015183610db9565b6106fb5760405162461bcd60e51b815260206004820152601e60248201527f496e76616c6964206e65787420617574686f7269746965732070726f6f66000060448201526064016102de565b6107068c8c85610dd1565b6060808d01515160208d015190910151511115610735576060808d01805160408f015260208d01519091015190525b5050509288525050505060209290920151608001519293915050565b6107596124a6565b604080516001808252818301909252600091816020015b6040805180820190915260008082526020820152815260200190600190039081610770575050835160005460208201519293509091146107e35760405162461bcd60e51b815260206004820152600e60248201526d155b9adb9bdddb881c185c98525960921b60448201526064016102de565b60006107f28260400151610f68565b905080602001516000036108545760405162461bcd60e51b8152602060048201526024808201527f47656e6573697320626c6f636b2073686f756c64206e6f7420626520696e636c6044820152631d59195960e21b60648201526084016102de565b60008060005b8360800151518110156109d0578360800151818151811061087d5761087d613908565b60200260200101516040015180156108d4575063049534d560e41b6001600160e01b031916846080015182815181106108b8576108b8613908565b602002602001015160600151600001516001600160e01b031916145b1561090a57610907846080015182815181106108f2576108f2613908565b60200260200101516060015160200151610b8d565b92505b8360800151818151811061092057610920613908565b60200260200101516000015180156109775750636175726160e01b6001600160e01b0319168460800151828151811061095b5761095b613908565b602002602001015160200151600001516001600160e01b031916145b156109be5760006109ac8560800151838151811061099757610997613908565b6020026020010151602001516020015161116a565b90506109ba612ee08261394d565b9250505b806109c881613934565b91505061085a565b5080600003610a185760405162461bcd60e51b815260206004820152601460248201527374696d657374616d70206e6f7420666f756e642160601b60448201526064016102de565b604051806040016040528085600001518152602001610a5c8660200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b610a6987604001516111ec565b604051602001610a7a929190613964565b6040516020818303038152906040528051906020012081525085600081518110610aa657610aa6613908565b6020026020010181905250600060405180606001604052808660200151815260200185602001518152602001604051806060016040528085815260200186815260200187604001518152508152509050610b0589896020015188610db9565b610b515760405162461bcd60e51b815260206004820152601e60248201527f496e76616c69642070617261636861696e732068656164732070726f6f66000060448201526064016102de565b955050505050505b92915050565b60006003610b6e83600261394d565b610b7891906139ab565b610b839060016139bf565b9092101592915050565b6000602082511015610bed5760405162461bcd60e51b8152602060048201526024808201527f42797465733a3a20746f427974657333323a206461746120697320746f20736860448201526337b93a1760e11b60648201526084016102de565b506020015190565b8051516040805160208101909152600080825260609291905b82811015610cc4578451805182908110610c2a57610c2a613908565b602002602001015160000151604051602001610c5691906001600160f01b031991909116815260020190565b604051602081830303815290604052610c8f86600001518381518110610c7e57610c7e613908565b6020026020010151602001516111ec565b604051602001610ca09291906139d2565b60405160208183030381529060405291508080610cbc90613934565b915050610c0e565b506000610cd083611220565b82604051602001610ce29291906139d2565b60405160208183030381529060405290506000610d248660200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b610d3187604001516114c3565b6040516001600160e01b031990921660208301526001600160c01b0319166024820152602c0160405160208183030381529060405290508181604051602001610d7b9291906139d2565b604051602081830303815290604052945050505050919050565b6000806000610da4858561152d565b91509150610db18161156f565b509392505050565b6000610dc583836116bc565b841490505b9392505050565b6000610de083602001516119ef565b8051906020012090506000610e018560200151856020015160200151611bb7565b610e0c9060016139bf565b60408051600180825281830190925291925060009190816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610e275790505090506040518060600160405280866020015160a001518152602001866020015160c0015181526020018481525081600081518110610e9457610e94613908565b6020908102919091010152604080860151905163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9163722e206d91610edf91889186908890600401613a01565b602060405180830381865af4158015610efc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f209190613aad565b610f605760405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21026b6b910283937b7b360791b60448201526064016102de565b505050505050565b6040805160a08101825260008082526020808301829052828401829052606080840183905260808401528351808501909452848452838101829052919291610fba90610fb5908490611bd9565b610b8d565b90506000610fc783611c5a565b90506000610fd9610fb5856020611bd9565b90506000610feb610fb5866020611bd9565b90506000610ff886611c5a565b90506000816001600160401b0381111561101457611014612572565b60405190808252806020026020018201604052801561104d57816020015b61103a6124d9565b8152602001906001900390816110325790505b50905060005b8281101561113b57600061106689611e3f565b90506110706124d9565b60ff821661108457600160c0820152611108565b60031960ff8316016110aa57600160408201526110a08a611edb565b6060820152611108565b60041960ff8316016110d057600160808201526110c68a611edb565b60a0820152611108565b60051960ff8316016110f357600181526110e98a611edb565b6020820152611108565b60071960ff8316016111085760016101008201525b8084848151811061111b5761111b613908565b60200260200101819052505050808061113390613934565b915050611053565b506040805160a08101825296875260208701959095529385019290925260608401525060808201529392505050565b805160009081905b80156111e557611183600182613acf565b61118e90600861394d565b611199906002613bc6565b846111a5600184613acf565b815181106111b5576111b5613908565b01602001516111c7919060f81c61394d565b6111d190836139bf565b9150806111dd81613bd2565b915050611172565b5092915050565b60606111f88251611220565b8260405160200161120a9291906139d2565b6040516020818303038152906040529050919050565b6060604082101561124a576040516001600160f81b031960fa84901b16602082015260210161120a565b61400082101561129d5761127a611266600284901b60016139bf565b600881811b62ffff001691901c60ff161790565b60405160200161120a919060f09190911b6001600160f01b031916815260020190565b6340000000821015611301576112de6112ba600284811b906139bf565b600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1790565b60405160200161120a919060e09190911b6001600160e01b031916815260040190565b600061147561144f8460008190506008817eff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff16901b6008827fff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff00ff0016901c1790506010817dffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff16901b6010827fffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff0000ffff000016901c1790506020817bffffffff00000000ffffffff00000000ffffffff00000000ffffffff16901b6020827fffffffff00000000ffffffff00000000ffffffff00000000ffffffff0000000016901c17905060408177ffffffffffffffff0000000000000000ffffffffffffffff16901b60408277ffffffffffffffff0000000000000000ffffffffffffffff1916901c179050608081901b608082901c179050919050565b60405160200161146191815260200190565b604051602081830303815290604052611f48565b805190915060006002611489600484613acf565b611495911b60036139bf565b905080836040516020016114aa929190613be9565b6040516020818303038152906040529350505050919050565b600065ff000000ff00600883811b91821664ff000000ff9185901c91821617601090811b67ff000000ff0000009390931666ff000000ff00009290921691909117901c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b92915050565b60008082516041036115635760208301516040840151606085015160001a61155787828585611fb5565b9450945050505061015d565b5060009050600261015d565b600081600481111561158357611583613c18565b0361158b5750565b600181600481111561159f5761159f613c18565b036115ec5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016102de565b600281600481111561160057611600613c18565b0361164d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016102de565b600381600481111561166157611661613c18565b036116b95760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016102de565b50565b604080516000808252602082019092528190816116fb565b60408051808201909152600080825260208201528152602001906001900390816116d45790505b509050611722838560008151811061171557611715613908565b6020026020010151612079565b8460008151811061173557611735613908565b6020908102919091010152835160005b818110156119b757604080516000808252602082019092528161178a565b60408051808201909152600080825260208201528152602001906001900390816117635790505b50905083516000036117b7578682815181106117a8576117a8613908565b602002602001015190506117dd565b6117da8783815181106117cc576117cc613908565b602002602001015185612079565b90505b6117e981516002612285565b6001600160401b0381111561180057611800612572565b60405190808252806020026020018201604052801561184557816020015b604080518082019091526000808252602082015281526020019060019003908161181e5790505b508151909450600090815b818110156119a057816118648260016139bf565b106118d857600084828151811061187d5761187d613908565b602002602001015190506118af85838151811061189c5761189c613908565b60200260200101516000015160026122ad565b8152875181908990869081106118c7576118c7613908565b60200260200101819052505061198e565b604080518082019091526000808252602082015261190185838151811061189c5761189c613908565b815284516119609086908490811061191b5761191b613908565b6020026020010151602001518684600161193591906139bf565b8151811061194557611945613908565b60200260200101516020015160009182526020526040902090565b60208201528751819089908690811061197b5761197b613908565b6020908102919091010152506001909201915b6119996002826139bf565b9050611850565b5050505080806119af90613934565b915050611745565b5081516001146119c657600080fd5b816000815181106119d9576119d9613908565b6020026020010151602001519250505092915050565b606060008260000151604051602001611a1b919060f89190911b6001600160f81b031916815260010190565b604051602081830303815290604052611a598460200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b604051602001611a6a929190613c2e565b60408051601f19818403018152828252858201516020840152925060009101604051602081830303815290604052611aa98560600151600001516114c3565b604051602001611aba929190613c5d565b60405160208183030381529060405290506000611b00856060015160200151600881811c62ff00ff1663ff00ff009290911b9190911617601081811c91901b1760e01b90565b856060015160400151604051602001611b1b91815260200190565b60408051601f1981840301815290829052611b399291602001613964565b60405160208183030381529060405290508282604051602001611b5d9291906139d2565b60408051601f19818403018152828252608088015160208401529183910160408051601f1981840301815290829052611b9992916020016139d2565b60408051601f19818403018152908290526114aa92916020016139d2565b600082600003611bc8575080610b59565b611bd28383613acf565b9050610b59565b6060826000015151828460200151611bf191906139bf565b1115611bfc57600080fd5b81600003611c195750604080516020810190915260008152610b59565b8251602080850151910190600090611c3b90611c3590846139bf565b856122b9565b90508385602001818151611c4f91906139bf565b905250949350505050565b600080611c6683611e3f565b90506000611c75600483613c8c565b905060008160ff16600003611c925750603f600283901c16611e37565b8160ff16600103611cd7576000611ca886611e3f565b9050613fc0600682901b16611cc4603f600287901c1682613cae565b6001600160401b03169250611e37915050565b8160ff16600203611d4a576000611ced86611e3f565b90506000611cfa87611e3f565b90506000611d0788611e3f565b63ffffffff60089490941b61ff001660ff88161760109390931b62ff0000169290921760189290921b63ff000000169190911760021c919091169150611e379050565b8160ff16600303611def576000611d69603f600286901c166004613cce565b905060088160ff161115611dd05760405162461bcd60e51b815260206004820152602860248201527f756e657870656374656420707265666978206465636f64696e6720436f6d706160448201526731ba1e2ab4b73a1f60c11b60648201526084016102de565b611de5611de0878360ff16611bd9565b61116a565b9695505050505050565b60405162461bcd60e51b815260206004820152601a60248201527f436f64652073686f756c6420626520756e726561636861626c6500000000000060448201526064016102de565b949350505050565b805151602082015160009190611e569060016139bf565b1115611e935760405162461bcd60e51b815260206004820152600c60248201526b4f7574206f662072616e676560a01b60448201526064016102de565b60008260000151836020015181518110611eaf57611eaf613908565b602001015160f81c60f81b60f81c9050600183602001818151611ed291906139bf565b90525092915050565b6040805180820190915260008152606060208201526000611f07611f00846004611bd9565b600061230f565b90506000611f1484611c5a565b90506000611f228583611bd9565b604080518082019091526001600160e01b03199094168452602084015250909392505050565b8051606090600080611f5b600184613acf565b90505b848181518110611f7057611f70613908565b01602001516001600160f81b03191615611f8c57809150611f9e565b80611f9681613bd2565b915050611f5e565b50611e37846000611fb08460016139bf565b61236c565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611fec5750600090506003612070565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015612040573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661206957600060019250925050612070565b9150600090505b94509492505050565b81518151606091600091829182918261209282846139bf565b90506000816001600160401b038111156120ae576120ae612572565b6040519080825280602002602001820160405280156120f357816020015b60408051808201909152600080825260208201528152602001906001900390816120cc5790505b5090505b838710801561210557508286105b156121da5788868151811061211c5761211c613908565b6020026020010151600001518a888151811061213a5761213a613908565b60200260200101516000015110156121935789878151811061215e5761215e613908565b602002602001015181868151811061217857612178613908565b602090810291909101015260019687019694909401936120f7565b8886815181106121a5576121a5613908565b60200260200101518186815181106121bf576121bf613908565b602090810291909101015260019586019594909401936120f7565b83871015612229578987815181106121f4576121f4613908565b602002602001015181868151811061220e5761220e613908565b602090810291909101015260019687019694909401936121da565b828610156122785788868151811061224357612243613908565b602002602001015181868151811061225d5761225d613908565b60209081029190910101526001958601959490940193612229565b9998505050505050505050565b60008061229283856139ab565b905061229e8385613ce7565b15610dca576001019392505050565b6000610dca82846139ab565b6060816001600160401b038111156122d3576122d3612572565b6040519080825280601f01601f1916602001820160405280156122fd576020820181803683370190505b509050602081016111e58482856123c3565b60008060005b6004811015610db15761232981600861394d565b8561233483876139bf565b8151811061234457612344613908565b01602001516001600160f81b031916901c91909117908061236481613934565b915050612315565b825160609061237b83856139bf565b111561238657600080fd5b816000036123a35750604080516020810190915260008152610dca565b602084016123ba6123b485836139bf565b846122b9565b95945050505050565b602081106123fb57825182526123da6020836139bf565b91506123e76020846139bf565b92506123f4602082613acf565b90506123c3565b6000811561242b576001612410836020613acf565b61241c90610100613bc6565b6124269190613acf565b61242f565b6000195b935183518516941916939093179091525050565b6040518060800160405280600081526020016000815260200161248360405180606001604052806000815260200160008152602001600080191681525090565b815260408051606081018252600080825260208281018290529282015291015290565b60408051606080820183526000808352602080840182905284519283018552818352820181905281840152909182015290565b60405180610120016040528060001515815260200161250960408051808201909152600081526060602082015290565b81526000602082015260400161253060408051808201909152600081526060602082015290565b81526000602082015260400161255760408051808201909152600081526060602082015290565b81526000602082018190526060604083018190529091015290565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b03811182821017156125aa576125aa612572565b60405290565b604080519081016001600160401b03811182821017156125aa576125aa612572565b60405160e081016001600160401b03811182821017156125aa576125aa612572565b604051608081016001600160401b03811182821017156125aa576125aa612572565b604051601f8201601f191681016001600160401b038111828210171561263e5761263e612572565b604052919050565b60006060828403121561265857600080fd5b612660612588565b905081358152602082013560208201526040820135604082015292915050565b60006001600160401b0382111561269957612699612572565b5060051b60200190565b6001600160f01b0319811681146116b957600080fd5b60006001600160401b038211156126d2576126d2612572565b50601f01601f191660200190565b600082601f8301126126f157600080fd5b81356127046126ff826126b9565b612616565b81815284602083860101111561271957600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261274757600080fd5b813560206127576126ff83612680565b82815260059290921b8401810191818101908684111561277657600080fd5b8286015b848110156127f45780356001600160401b038082111561279a5760008081fd5b908801906040828b03601f19018113156127b45760008081fd5b6127bc6125b0565b87840135838111156127ce5760008081fd5b6127dc8d8a838801016126e0565b8252509201358683015250835291830191830161277a565b509695505050505050565b60006040828403121561281157600080fd5b6128196125b0565b905081356001600160401b038082111561283257600080fd5b908301906060828603121561284657600080fd5b61284e612588565b82358281111561285d57600080fd5b8301601f8101871361286e57600080fd5b8035602061287e6126ff83612680565b82815260059290921b8301810191818101908a84111561289d57600080fd5b8285015b8481101561291b578035888111156128b95760008081fd5b86016040818e03601f190112156128d05760008081fd5b6128d86125b0565b858201356128e5816126a3565b815260408201358a8111156128fa5760008081fd5b6129088f88838601016126e0565b82880152508452509183019183016128a1565b5080865250508086013581850152604086013560408501528387528088013595508486111561294957600080fd5b61295589878a01612736565b8188015250505050505092915050565b6000610120828403121561297857600080fd5b6129806125d2565b90508135815260208201356020820152604082013560408201526129a78360608401612646565b606082015260c0820135608082015260e082013560a082015261010082013560c082015292915050565b600082601f8301126129e257600080fd5b813560206129f26126ff83612680565b82815260059290921b84018101918181019086841115612a1157600080fd5b8286015b848110156127f45780358352918301918301612a15565b600082601f830112612a3d57600080fd5b81356020612a4d6126ff83612680565b82815260059290921b84018101918181019086841115612a6c57600080fd5b8286015b848110156127f45780356001600160401b03811115612a8f5760008081fd5b8701603f81018913612aa15760008081fd5b848101356040612ab36126ff83612680565b82815260069290921b8301810191878101908c841115612ad35760008081fd5b938201935b83851015612b135782858e031215612af05760008081fd5b612af86125b0565b85358152898601358a82015282529382019390880190612ad8565b875250505092840192508301612a70565b600060408284031215612b3657600080fd5b612b3e6125b0565b905081356001600160401b0380821115612b5757600080fd5b9083019060608286031215612b6b57600080fd5b612b73612588565b8235815260208301356020820152604083013582811115612b9357600080fd5b612b9f878286016126e0565b60408301525083526020840135915080821115612bbb57600080fd5b50612bc884828501612a2c565b60208301525092915050565b600080828403610120811215612be957600080fd5b61010080821215612bf957600080fd5b612c016125f4565b91508435825260208086013581840152612c1e8760408801612646565b6040840152612c308760a08801612646565b6060840152919350840135906001600160401b039081831115612c5257600080fd5b9185019160408388031215612c6657600080fd5b612c6e6125b0565b833583811115612c7d57600080fd5b8401610180818a031215612c9057600080fd5b612c986125f4565b813585811115612ca757600080fd5b612cb38b8285016127ff565b825250612cc28a858401612965565b8482015261014082013585811115612cd957600080fd5b612ce58b8285016129d1565b60408301525061016082013585811115612cfe57600080fd5b612d0a8b828501612a2c565b6060830152508252508382013583811115612d2457600080fd5b612d3089828701612b24565b8383015250809450505050509250929050565b805182526020808201518184015260408083015180518286015291820151606085015281015160808401525060600151805160a0830152602081015160c08301526040015160e090910152565b6101a08101612d9f8285612d43565b82516101008301526020808401516101208401526040808501518051610140860152918201516101608501520151610180830152610dca565b60008060408385031215612deb57600080fd5b82356001600160401b0380821115612e0257600080fd5b612e0e868387016126e0565b93506020850135915080821115612e2457600080fd5b50612e31858286016126e0565b9150509250929050565b60005b83811015612e56578181015183820152602001612e3e565b50506000910152565b60008151808452612e77816020860160208601612e3b565b601f01601f19169290920160200192915050565b60c081526000612e9e60c0830185612e5f565b9050610dca602083018480518252602080820151818401526040918201518051838501529081015160608401520151608090910152565b600060608284031215612ee757600080fd5b612eef612588565b905081518152602082015160208201526040820151604082015292915050565b60006101008284031215612f2257600080fd5b612f2a6125f4565b90508151815260208201516020820152612f478360408401612ed5565b6040820152612f598360a08401612ed5565b606082015292915050565b60006101008284031215612f7757600080fd5b610dca8383612f0f565b600082601f830112612f9257600080fd5b8151612fa06126ff826126b9565b818152846020838601011115612fb557600080fd5b611e37826020830160208701612e3b565b600082601f830112612fd757600080fd5b81516020612fe76126ff83612680565b82815260059290921b8401810191818101908684111561300657600080fd5b8286015b848110156127f45780516001600160401b038082111561302a5760008081fd5b908801906040828b03601f19018113156130445760008081fd5b61304c6125b0565b878401518381111561305e5760008081fd5b61306c8d8a83880101612f81565b8252509201518683015250835291830191830161300a565b60006040828403121561309657600080fd5b61309e6125b0565b905081516001600160401b03808211156130b757600080fd5b90830190606082860312156130cb57600080fd5b6130d3612588565b8251828111156130e257600080fd5b8301601f810187136130f357600080fd5b805160206131036126ff83612680565b82815260059290921b8301810191818101908a84111561312257600080fd5b8285015b848110156131a05780518881111561313e5760008081fd5b86016040818e03601f190112156131555760008081fd5b61315d6125b0565b8582015161316a816126a3565b815260408201518a81111561317f5760008081fd5b61318d8f8883860101612f81565b8288015250845250918301918301613126565b508086525050808601518185015260408601516040850152838752808801519550848611156131ce57600080fd5b61295589878a01612fc6565b600061012082840312156131ed57600080fd5b6131f56125d2565b905081518152602082015160208201526040820151604082015261321c8360608401612ed5565b606082015260c0820151608082015260e082015160a082015261010082015160c082015292915050565b600082601f83011261325757600080fd5b815160206132676126ff83612680565b82815260059290921b8401810191818101908684111561328657600080fd5b8286015b848110156127f4578051835291830191830161328a565b600082601f8301126132b257600080fd5b815160206132c26126ff83612680565b82815260059290921b840181019181810190868411156132e157600080fd5b8286015b848110156127f45780516001600160401b038111156133045760008081fd5b8701603f810189136133165760008081fd5b8481015160406133286126ff83612680565b82815260069290921b8301810191878101908c8411156133485760008081fd5b938201935b838510156133885782858e0312156133655760008081fd5b61336d6125b0565b85518152898601518a8201528252938201939088019061334d565b8752505050928401925083016132e5565b6000604082840312156133ab57600080fd5b6133b36125b0565b905081516001600160401b03808211156133cc57600080fd5b90830190606082860312156133e057600080fd5b6133e8612588565b825181526020830151602082015260408301518281111561340857600080fd5b61341487828601612f81565b6040830152508352602084015191508082111561343057600080fd5b50612bc8848285016132a1565b6000806040838503121561345057600080fd5b82516001600160401b038082111561346757600080fd5b90840190610180828703121561347c57600080fd5b6134846125f4565b82518281111561349357600080fd5b61349f88828601613084565b8252506134af87602085016131da565b6020820152610140830151828111156134c757600080fd5b6134d388828601613246565b604083015250610160830151828111156134ec57600080fd5b6134f8888286016132a1565b606083015250602086015190945091508082111561351557600080fd5b50612e3185828601613399565b600081518084526020808501808196508360051b8101915082860160005b8581101561358057828403895281516040815181875261356282880182612e5f565b92880151968801969096525098850198935090840190600101613540565b5091979650505050505050565b80518252602081015160208301526040810151604083015260608101516135cb60608401828051825260208082015190830152604090810151910152565b50608081015160c083015260a081015160e083015260c08101516101008301525050565b600081518084526020808501945080840160005b8381101561361f57815187529582019590820190600101613603565b509495945050505050565b600081518084526020808501808196508360051b810191508286016000805b868110156136a3578385038a52825180518087529087019087870190845b8181101561368e578351805184528a01518a84015292890192604090920191600101613667565b50509a87019a95505091850191600101613649565b509298975050505050505050565b6000815160408452805160408501526020810151606085015260408101519050606060808501526136e560a0850182612e5f565b9050602083015184820360208601526123ba828261362a565b600061012061370d8386612d43565b8061010084015283516040808386015281519250610180806101608701528351826102e08801526103808701815160606103208a01528181518084526103a09350838b019150838160051b8c010193506020808401935060005b828110156137b1578c860361039f19018452845180516001600160f01b03191687528201518287018a905261379e8a880182612e5f565b9650509381019392810192600101613767565b50858101516103408d0152878601516103608d0152988901518b85036102df19016103008d0152986137e3858b613522565b99508089015195506137f7878d018761358d565b87890151975061015f199650868c8b03016102a08d01526138188a896135ef565b995060608901519850868c8b03016102c08d01526138368a8a61362a565b9950808d01519850505050505050505061011f1984830301610140850152611de582826136b1565b6000808284036101a081121561387357600080fd5b61387d8585612f0f565b925060a060ff198201121561389157600080fd5b613899612588565b61010085015181526101208501516020820152606061013f19830112156138bf57600080fd5b6138c7612588565b915061014085015182526101608501516020830152610180850151604083015281604082015280925050509250929050565b6101008101610b598284612d43565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016139465761394661391e565b5060010190565b8082028115828204841417610b5957610b5961391e565b6001600160e01b0319831681528151600090613987816004850160208701612e3b565b919091016004019392505050565b634e487b7160e01b600052601260045260246000fd5b6000826139ba576139ba613995565b500490565b80820180821115610b5957610b5961391e565b600083516139e4818460208801612e3b565b8351908301906139f8818360208801612e3b565b01949350505050565b600060808201868352602060808185015281875180845260a086019150828901935060005b81811015613a4257845183529383019391830191600101613a26565b50508481036040860152865180825290820192508187019060005b81811015613a9757613a848584518051825260208082015190830152604090810151910152565b6060949094019391830191600101613a5d565b5050505060609290920192909252949350505050565b600060208284031215613abf57600080fd5b81518015158114610dca57600080fd5b81810381811115610b5957610b5961391e565b600181815b80851115613b1d578160001904821115613b0357613b0361391e565b80851615613b1057918102915b93841c9390800290613ae7565b509250929050565b600082613b3457506001610b59565b81613b4157506000610b59565b8160018114613b575760028114613b6157613b7d565b6001915050610b59565b60ff841115613b7257613b7261391e565b50506001821b610b59565b5060208310610133831016604e8410600b8410161715613ba0575081810a610b59565b613baa8383613ae2565b8060001904821115613bbe57613bbe61391e565b029392505050565b6000610dca8383613b25565b600081613be157613be161391e565b506000190190565b60ff60f81b8360f81b16815260008251613c0a816001850160208701612e3b565b919091016001019392505050565b634e487b7160e01b600052602160045260246000fd5b60008351613c40818460208801612e3b565b6001600160e01b0319939093169190920190815260040192915050565b60008351613c6f818460208801612e3b565b6001600160c01b0319939093169190920190815260080192915050565b600060ff831680613c9f57613c9f613995565b8060ff84160691505092915050565b6001600160401b038181168382160190808211156111e5576111e561391e565b60ff8181168382160190811115610b5957610b5961391e565b600082613cf657613cf6613995565b50069056fea2646970667358221220d20bfac253c2198bb4f2670c538179920eab12667a4fee3856ac14331786021064736f6c63430008110033", + "sourceMap": "2491:8323:49:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2847:57;;-1:-1:-1;;;2847:57:49;;;;;-1:-1:-1;;;;;;176:33:66;;;158:52;;146:2;131:18;2847:57:49;;;;;;;;3806:558;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;3008:643::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;2572:45::-;;2612:5;2572:45;;;;;16599:25:66;;;16587:2;16572:18;2572:45:49;16453:177:66;2663:57:49;;-1:-1:-1;;;2663:57:49;;;;;-1:-1:-1;;;;;;16797:28:66;;;16779:47;;16767:2;16752:18;2663:57:49;16635:197:66;2755:57:49;;-1:-1:-1;;;2755:57:49;;3806:558;3953:26;;:::i;:::-;3981:24;;:::i;:::-;4056:32;4090:17;4111:47;4132:12;4146:5;:11;;;4111:20;:47::i;:::-;4055:103;;;;4224:37;4264:54;4291:9;4302:5;:15;;;4264:26;:54::i;:::-;4337:5;;-1:-1:-1;4224:94:49;;-1:-1:-1;;;3806:558:49;;;;;;:::o;3008:643::-;3121:12;3135:24;;:::i;:::-;3175:41;3230:12;3219:47;;;;;;;;;;;;:::i;:::-;3175:91;;3277:28;3307:31;3365:12;3354:59;;;;;;;;;;;;:::i;:::-;3276:137;;;;3425:35;3462:37;3515:4;-1:-1:-1;;;;;3515:20:49;;3536:14;3552:37;;;;;;;;3572:5;3552:37;;;;3579:9;3552:37;;;3515:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3424:166;;;;3620:8;3609:20;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;3609:20:49;;;;;;;3631:12;;-1:-1:-1;3008:643:49;-1:-1:-1;;;;;;;3008:643:49:o;4798:3011::-;4950:26;;:::i;:::-;5029:27;;:33;;;;;:40;5102:38;;:50;;5186:25;;4978:7;;5029:40;5102:50;5171:40;;5163:105;;;;-1:-1:-1;;;5163:105:49;;35567:2:66;5163:105:49;;;35549:21:66;35606:2;35586:18;;;35579:30;35645:34;35625:18;;;35618:62;-1:-1:-1;;;35696:18:66;;;35689:50;35756:19;;5163:105:49;;;;;;;;;5299:84;5327:17;5346:12;:32;;;:36;;;5299:27;:84::i;:::-;:185;;;;5403:81;5431:17;5450:12;:29;;;:33;;;5403:27;:81::i;:::-;5278:268;;;;-1:-1:-1;;;5278:268:49;;35988:2:66;5278:268:49;;;35970:21:66;36027:2;36007:18;;;36000:30;36066:34;36046:18;;;36039:62;-1:-1:-1;;;36117:18:66;;;36110:34;36161:19;;5278:268:49;35786:400:66;5278:268:49;5588:27;;:38;5687:32;;;;;:35;5658:25;;;;:64;;:145;;-1:-1:-1;5771:29:49;;;;:32;5742:25;;;;:61;5658:145;5637:213;;;;-1:-1:-1;;;5637:213:49;;36393:2:66;5637:213:49;;;36375:21:66;36432:2;36412:18;;;36405:30;-1:-1:-1;;;36451:18:66;;;36444:51;36512:18;;5637:213:49;36191:345:66;5637:213:49;5920:32;;;;;:35;5891:25;;;;5988:18;;:25;5891:64;;;5861:27;;6049:248;6073:11;6069:1;:15;6049:248;;;6109:18;;:21;;-1:-1:-1;;;2708:12:49;6109:18;6128:1;;6109:21;;;;;;:::i;:::-;;;;;;;:24;;;-1:-1:-1;;;;;6109:47:49;;;:90;;;;-1:-1:-1;6160:18:49;;:21;;6179:1;;6160:21;;;;;;:::i;:::-;;;;;;;:26;;;:33;6197:2;6160:39;6109:90;6105:182;;;6229:43;6245:10;:18;;;6264:1;6245:21;;;;;;;;:::i;:::-;;;;;;;:26;;;6229:15;:43::i;:::-;6219:53;;6105:182;6086:3;;;;:::i;:::-;;;;6049:248;;;-1:-1:-1;6315:7:49;6307:57;;;;-1:-1:-1;;;6307:57:49;;37147:2:66;6307:57:49;;;37129:21:66;37186:2;37166:18;;;37159:30;37225:25;37205:18;;;37198:53;37268:18;;6307:57:49;36945:347:66;6307:57:49;6375:23;6411:24;6424:10;6411:12;:24::i;:::-;6401:35;;;;;;6375:61;;6446:25;6485:17;-1:-1:-1;;;;;6474:29:49;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;6474:29:49;;;;;;;;;;;;;;;;6446:57;;6556:9;6551:304;6575:17;6571:1;:21;6551:304;;;6613:16;6632:10;:27;;;:33;;;6666:1;6632:36;;;;;;;;:::i;:::-;;;;;;;6613:55;;6682:17;6702:46;6716:15;6733:4;:14;;;6702:13;:46::i;:::-;6682:66;;6779:65;;;;;;;;6784:4;:19;;;6779:65;;;;6832:9;6815:27;;;;;;;37446:2:66;37442:15;;;;-1:-1:-1;;37438:53:66;37426:66;;37517:2;37508:12;;37297:229;6815:27:49;;;;;;;;;;;;;6805:38;;;;;;6779:65;;;6762:11;6774:1;6762:14;;;;;;;;:::i;:::-;;;;;;:82;;;;6599:256;;6594:3;;;;;:::i;:::-;;;;6551:304;;;;6904:22;6900:458;;;6967:98;6996:12;:32;;;:37;;;7035:10;:16;;;7053:11;6967:28;:98::i;:::-;6942:190;;;;-1:-1:-1;;;6942:190:49;;37733:2:66;6942:190:49;;;37715:21:66;37772:2;37752:18;;;37745:30;37811:34;37791:18;;;37784:62;-1:-1:-1;;;37862:18:66;;;37855:31;37903:19;;6942:190:49;37531:397:66;6942:190:49;6900:458;;;7188:95;7217:12;:29;;;:34;;;7253:10;:16;;;7271:11;7188:28;:95::i;:::-;7163:184;;;;-1:-1:-1;;;7163:184:49;;38135:2:66;7163:184:49;;;38117:21:66;38174:2;38154:18;;;38147:30;38213:32;38193:18;;;38186:60;38263:18;;7163:184:49;37933:354:66;7163:184:49;7368:48;7382:12;7396:10;7408:7;7368:13;:48::i;:::-;7478:29;;;;;:32;7431:24;;;;:41;;;;:44;:79;7427:261;;;7561:29;;;;;;7526:32;;;:64;-1:-1:-1;7636:24:49;;;:41;;;;7604:73;;7427:261;-1:-1:-1;;;7698:40:49;;;-1:-1:-1;;;;7771:24:49;;;;;;:30;;;7698:40;;4798:3011;-1:-1:-1;;4798:3011:49:o;8561:1716::-;8691:24;;:::i;:::-;8754:13;;;8765:1;8754:13;;;;;;;;;8731:20;;8754:13;;;;-1:-1:-1;;;;;;;;;;;;;;;;;8754:13:49;;;;;;;;;;;;-1:-1:-1;;8801:15:49;;8777:21;8841:7;8830;;;;8731:36;;-1:-1:-1;8801:15:49;;8830:18;8826:73;;8864:24;;-1:-1:-1;;;8864:24:49;;38494:2:66;8864:24:49;;;38476:21:66;38533:2;38513:18;;;38506:30;-1:-1:-1;;;38552:18:66;;;38545:44;38606:18;;8864:24:49;38292:338:66;8826:73:49;8909:20;8932:31;8951:4;:11;;;8932:18;:31::i;:::-;8909:54;;8981:6;:13;;;8998:1;8981:18;8973:67;;;;-1:-1:-1;;;8973:67:49;;38837:2:66;8973:67:49;;;38819:21:66;38876:2;38856:18;;;38849:30;38915:34;38895:18;;;38888:62;-1:-1:-1;;;38966:18:66;;;38959:34;39010:19;;8973:67:49;38635:400:66;8973:67:49;9099:18;9127:17;9159:9;9154:581;9178:6;:14;;;:21;9174:1;:25;9154:581;;;9224:6;:14;;;9239:1;9224:17;;;;;;;;:::i;:::-;;;;;;;:29;;;:93;;;;;-1:-1:-1;;;;;;;;9257:60:49;;:6;:14;;;9272:1;9257:17;;;;;;;;:::i;:::-;;;;;;;:27;;;:39;;;-1:-1:-1;;;;;9257:60:49;;;9224:93;9220:233;;;9389:49;9405:6;:14;;;9420:1;9405:17;;;;;;;;:::i;:::-;;;;;;;:27;;;:32;;;9389:15;:49::i;:::-;9376:62;;9220:233;9471:6;:14;;;9486:1;9471:17;;;;;;;;:::i;:::-;;;;;;;:30;;;:95;;;;;-1:-1:-1;;;;;;;;9505:61:49;;:6;:14;;;9520:1;9505:17;;;;;;;;:::i;:::-;;;;;;;:28;;;:40;;;-1:-1:-1;;;;;9505:61:49;;;9471:95;9467:258;;;9586:12;9601:59;9626:6;:14;;;9641:1;9626:17;;;;;;;;:::i;:::-;;;;;;;:28;;;:33;;;9601:24;:59::i;:::-;9586:74;-1:-1:-1;9690:20:49;2612:5;9586:74;9690:20;:::i;:::-;9678:32;;9568:157;9467:258;9201:3;;;;:::i;:::-;;;;9154:581;;;;9752:9;9765:1;9752:14;9744:47;;;;-1:-1:-1;;;9744:47:49;;39415:2:66;9744:47:49;;;39397:21:66;39454:2;39434:18;;;39427:30;-1:-1:-1;;;39473:18:66;;;39466:50;39533:18;;9744:47:49;39213:344:66;9744:47:49;9814:150;;;;;;;;9832:4;:10;;;9814:150;;;;9879:36;9906:4;:7;;;7044:1:44;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;7724:24;;;7644:111;9879:36:49;9917:35;9940:4;:11;;;9917:22;:35::i;:::-;9866:87;;;;;;;;;:::i;:::-;;;;;;;;;;;;;9856:98;;;;;;9814:150;;;9802:6;9809:1;9802:9;;;;;;;;:::i;:::-;;;;;;:162;;;;9975:37;10027:99;;;;;;;;10045:4;:7;;;10027:99;;;;10054:6;:13;;;10027:99;;;;10069:56;;;;;;;;10085:9;10069:56;;;;10096:10;10069:56;;;;10108:6;:16;;;10069:56;;;10027:99;;;9975:151;;10145:60;10174:9;10185:5;:11;;;10198:6;10145:28;:60::i;:::-;10137:103;;;;-1:-1:-1;;;10137:103:49;;40153:2:66;10137:103:49;;;40135:21:66;40192:2;40172:18;;;40165:30;40231:32;40211:18;;;40204:60;40281:18;;10137:103:49;39951:354:66;10137:103:49;10258:12;-1:-1:-1;;;;;;8561:1716:49;;;;;:::o;10667:145::-;10754:4;10799:1;10786:9;10790:5;10786:1;:9;:::i;:::-;10785:15;;;;:::i;:::-;10784:21;;10804:1;10784:21;:::i;:::-;10777:28;;;;;10667:145;-1:-1:-1;;10667:145:49:o;3778:226:36:-;3839:11;3885:2;3870:4;:11;:17;;3862:66;;;;-1:-1:-1;;;3862:66:36;;40899:2:66;3862:66:36;;;40881:21:66;40938:2;40918:18;;;40911:30;40977:34;40957:18;;;40950:62;-1:-1:-1;;;41028:18:66;;;41021:34;41072:19;;3862:66:36;40697:400:66;3862:66:36;-1:-1:-1;3984:2:36;3974:13;3968:20;;3778:226::o;604:739:50:-;718:18;;:25;780:9;;;;;;;;;697:18;780:9;;;673:12;;718:25;780:9;799:218;823:10;819:1;:14;799:218;;;915:18;;:21;;934:1;;915:21;;;;;;:::i;:::-;;;;;;;:24;;;898:42;;;;;;;-1:-1:-1;;;;;;41241:28:66;;;;41229:41;;41295:1;41286:11;;41102:201;898:42:50;;;;;;;;;;;;;942:50;965:10;:18;;;984:1;965:21;;;;;;;;:::i;:::-;;;;;;;:26;;;942:22;:50::i;:::-;868:138;;;;;;;;;:::i;:::-;;;;;;;;;;;;;854:152;;835:3;;;;;:::i;:::-;;;;799:218;;;;1027:20;1063:40;1092:10;1063:28;:40::i;:::-;1105:11;1050:67;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1027:90;;1128:17;1174:51;1201:10;:22;;;7044:1:44;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;7724:24;;;7644:111;1174:51:50;1227:54;1254:10;:25;;;1227:19;:54::i;:::-;1148:143;;-1:-1:-1;;;;;;41970:33:66;;;1148:143:50;;;41958:46:66;-1:-1:-1;;;;;;42033:41:66;42020:11;;;42013:62;42091:12;;1148:143:50;;;;;;;;;;;;1128:163;;1322:7;1331:4;1309:27;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1302:34;;;;;;604:739;;;:::o;3661:227:30:-;3739:7;3759:17;3778:18;3800:27;3811:4;3817:9;3800:10;:27::i;:::-;3758:69;;;;3837:18;3849:5;3837:11;:18::i;:::-;-1:-1:-1;3872:9:30;3661:227;-1:-1:-1;;;3661:227:30:o;966:169:34:-;1069:4;1100:28;1114:5;1121:6;1100:13;:28::i;:::-;1092:4;:36;1085:43;;966:169;;;;;;:::o;7853:595:49:-;8007:12;8032:33;8045:5;:19;;;8032:12;:33::i;:::-;8022:44;;;;;;8007:59;;8076:17;8096:78;8106:12;:33;;;8141:5;:19;;;:32;;;8096:9;:78::i;:::-;:82;;8177:1;8096:82;:::i;:::-;8215:16;;;8229:1;8215:16;;;;;;;;;8076:102;;-1:-1:-1;8189:23:49;;8215:16;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;8215:16:49;;-1:-1:-1;;8215:16:49;;;;;;;;;;;8189:42;;8253:72;;;;;;;;8261:5;:19;;;:26;;;8253:72;;;;8289:5;:19;;;:29;;;8253:72;;;;8320:4;8253:72;;;8241:6;8248:1;8241:9;;;;;;;;:::i;:::-;;;;;;;;;;:84;8385:14;;;;;8344:75;;-1:-1:-1;;;8344:75:49;;:19;;:31;;:75;;8376:7;;8401:6;;8409:9;;8344:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8336:105;;;;-1:-1:-1;;;8336:105:49;;43996:2:66;8336:105:49;;;43978:21:66;44035:2;44015:18;;;44008:30;-1:-1:-1;;;44054:18:66;;;44047:47;44111:18;;8336:105:49;43794:341:66;8336:105:49;7997:451;;;7853:595;;;:::o;1993:1495:50:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2110:21:50;;;;;;;;;;;;;;;;;-1:-1:-1;;2110:21:50;2162:38;;2178:21;;2110;;2178:10;:21::i;:::-;2162:15;:38::i;:::-;2141:59;;2210:19;2232:35;2261:5;2232:28;:35::i;:::-;2210:57;;2277:17;2297:38;2313:21;2324:5;2331:2;2313:10;:21::i;2297:38::-;2277:58;;2345:22;2370:38;2386:21;2397:5;2404:2;2386:10;:21::i;2370:38::-;2345:63;;2419:14;2436:35;2465:5;2436:28;:35::i;:::-;2419:52;;2481:23;2520:6;-1:-1:-1;;;;;2507:20:50;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;2481:46;;2543:9;2538:859;2562:6;2558:1;:10;2538:859;;;2589:10;2602:21;2617:5;2602:14;:21::i;:::-;2589:34;;2637:20;;:::i;:::-;2675:25;;;2671:683;;2737:4;2720:14;;;:21;2671:683;;;-1:-1:-1;;2766:29:50;;;;2762:592;;2836:4;2815:18;;;:25;2877:23;2894:5;2877:16;:23::i;:::-;2858:16;;;:42;2762:592;;;-1:-1:-1;;2925:24:50;;;;2921:433;;2985:4;2969:13;;;:20;3021:23;3038:5;3021:16;:23::i;:::-;3007:11;;;:37;2921:433;;;-1:-1:-1;;3069:30:50;;;;3065:289;;3141:4;3119:26;;3183:23;3200:5;3183:16;:23::i;:::-;3163:17;;;:43;3065:289;;;-1:-1:-1;;3231:47:50;;;;3227:127;;3335:4;3298:34;;;:41;3227:127;3380:6;3367:7;3375:1;3367:10;;;;;;;;:::i;:::-;;;;;;:19;;;;2575:822;;2570:3;;;;;:::i;:::-;;;;2538:859;;;-1:-1:-1;3414:67:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3414:67:50;;;;;1993:1495;-1:-1:-1;;;1993:1495:50:o;232:272:44:-;357:11;;297:7;;;;340:135;370:5;;340:135;;456:5;460:1;456;:5;:::i;:::-;451:11;;:1;:11;:::i;:::-;445:18;;:1;:18;:::i;:::-;428:4;433:5;437:1;433;:5;:::i;:::-;428:11;;;;;;;;:::i;:::-;;;;;414:50;;;428:11;;414:50;:::i;:::-;405:59;;:6;:59;:::i;:::-;396:68;-1:-1:-1;377:3:44;;;;:::i;:::-;;;;340:135;;;-1:-1:-1;491:6:44;232:272;-1:-1:-1;;232:272:44:o;7878:158::-;7942:12;7990:31;8008:5;:12;7990:17;:31::i;:::-;8023:5;7973:56;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7966:63;;7878:158;;;:::o;3756:656::-;3817:12;3849:2;3845:1;:6;3841:565;;;3874:31;;-1:-1:-1;;;;;;45929:16:66;;;;45925:36;3874:31:44;;;45913:49:66;45978:11;;3874:31:44;45788:207:66;3841:565:44;3930:7;3926:1;:11;3922:484;;;3977:33;3995:12;4001:1;3996:6;;;4006:1;3995:12;:::i;:::-;7268:1;7263:6;;;;;7252;;;;;7251:19;;7129:148;3977:33;3960:51;;;;;;;46165:3:66;46143:16;;;;-1:-1:-1;;;;;;46139:38:66;46127:51;;46203:1;46194:11;;46000:211;3922:484:44;4036:7;4032:1;:11;4028:378;;;4083:33;4101:12;4107:1;4102:6;;;;4101:12;:::i;:::-;7044:1;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;;6875:248;4083:33;4066:51;;;;;;;46381:3:66;46359:16;;;;-1:-1:-1;;;;;;46355:43:66;46343:56;;46424:1;46415:11;;46216:216;4028:378:44;4148:23;4174:55;4214:13;4225:1;4890:9;4915:5;4911:9;;5128:1;5053;5057:66;5053:70;5052:77;;5034:1;4959;4963:66;4959:70;4958:77;;4957:173;4953:177;;5351:2;5276:1;5280:66;5276:70;5275:78;;5256:2;5181:1;5185:66;5181:70;5180:78;;5179:175;5175:179;;5575:2;5500:1;5504:66;5500:70;5499:78;;5480:2;5405:1;5409:66;5405:70;5404:78;;5403:175;5399:179;;5799:2;5724:1;5728:66;5724:70;5723:78;;5704:2;5629:1;-1:-1:-1;;5629:70:44;5628:78;;5627:175;5623:179;;5871:3;5866:1;:8;;5858:3;5853:1;:8;;5852:23;5848:27;;4832:1050;;;;4214:13;4197:31;;;;;;46566:19:66;;46610:2;46601:12;;46437:182;4197:31:44;;;;;;;;;;;;;4174:22;:55::i;:::-;4261:17;;4148:81;;-1:-1:-1;4244:14:44;4330:1;4315:10;4324:1;4261:17;4315:10;:::i;:::-;4313:23;;4314:17;4335:1;4313:23;:::i;:::-;4292:45;;4376:6;4384:10;4359:36;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4352:43;;;;;3756:656;;;:::o;7527:111::-;7582:6;6762:22;6674:1;6646:29;;;6762:22;;;;6612:29;;;;6762:22;;;;6789:2;6761:30;;;6727:22;;;;;;;;;;;;;;6726:30;;6725:67;6859:2;6854:7;;;;;6842;;;;;6841:21;7607:24;;;7527:111;-1:-1:-1;;7527:111:44:o;2145:730:30:-;2226:7;2235:12;2263:9;:16;2283:2;2263:22;2259:610;;2599:4;2584:20;;2578:27;2648:4;2633:20;;2627:27;2705:4;2690:20;;2684:27;2301:9;2676:36;2746:25;2757:4;2676:36;2578:27;2627;2746:10;:25::i;:::-;2739:32;;;;;;;;;2259:610;-1:-1:-1;2818:1:30;;-1:-1:-1;2822:35:30;2802:56;;570:511;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:441;;570:511;:::o;634:441::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:345;;788:34;;-1:-1:-1;;;788:34:30;;47348:2:66;788:34:30;;;47330:21:66;47387:2;47367:18;;;47360:30;47426:26;47406:18;;;47399:54;47470:18;;788:34:30;47146:348:66;730:345:30;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:236;;903:41;;-1:-1:-1;;;903:41:30;;47701:2:66;903:41:30;;;47683:21:66;47740:2;47720:18;;;47713:30;47779:33;47759:18;;;47752:61;47830:18;;903:41:30;47499:355:66;839:236:30;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:114;;1020:44;;-1:-1:-1;;;1020:44:30;;48061:2:66;1020:44:30;;;48043:21:66;48100:2;48080:18;;;48073:30;48139:34;48119:18;;;48112:62;-1:-1:-1;;;48190:18:66;;;48183:32;48232:19;;1020:44:30;47859:398:66;961:114:30;570:511;:::o;2157:1683:34:-;2352:13;;;2248:7;2352:13;;;;;;;;;2248:7;;;2352:13;;;-1:-1:-1;;;;;;;;;;;;;;;;;2352:13:34;;;;;;;;;;;;;;;;2325:40;;2411:27;2421:6;2429:5;2435:1;2429:8;;;;;;;;:::i;:::-;;;;;;;2411:9;:27::i;:::-;2400:5;2406:1;2400:8;;;;;;;;:::i;:::-;;;;;;;;;;:38;2472:12;;2449:20;2494:1211;2528:12;2519:6;:21;2494:1211;;;2596:13;;;2566:27;2596:13;;;;;;;;;2566:27;2596:13;;;-1:-1:-1;;;;;;;;;;;;;;;;;2596:13:34;;;;;;;;;;;;;;;;2566:43;;2628:10;:17;2649:1;2628:22;2624:181;;2686:5;2692:6;2686:13;;;;;;;;:::i;:::-;;;;;;;2670:29;;2624:181;;;2754:36;2764:5;2770:6;2764:13;;;;;;;;:::i;:::-;;;;;;;2779:10;2754:9;:36::i;:::-;2738:52;;2624:181;2843:33;2852:13;:20;2874:1;2843:8;:33::i;:::-;-1:-1:-1;;;;;2832:45:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;2832:45:34;;;;;;;;;;;;;;;-1:-1:-1;2950:20:34;;2819:58;;-1:-1:-1;2892:9:34;;;2984:711;3016:20;3008:5;:28;2984:711;;;3085:20;3072:9;:5;3080:1;3072:9;:::i;:::-;:33;3068:613;;3129:16;3148:13;3162:5;3148:20;;;;;;;;:::i;:::-;;;;;;;3129:39;;3205:42;3215:13;3229:5;3215:20;;;;;;;;:::i;:::-;;;;;;;:28;;;3245:1;3205:9;:42::i;:::-;3190:57;;3269:13;;3190:4;;3269:10;;3280:1;;3269:13;;;;;;:::i;:::-;;;;;;:20;;;;3107:201;3068:613;;;-1:-1:-1;;;;;;;;;;;;;;;;;3389:42:34;3399:13;3413:5;3399:20;;;;;;;;:::i;3389:42::-;3374:57;;3480:20;;3465:72;;3480:13;;3494:5;;3480:20;;;;;;:::i;:::-;;;;;;;:25;;;3507:13;3521:5;3529:1;3521:9;;;;:::i;:::-;3507:24;;;;;;;;:::i;:::-;;;;;;;:29;;;8091:12;8192:18;;;8230:4;8223:19;8278:4;8263:20;;;8014:285;3465:72;3453:9;;;:84;3559:13;;3453:4;;3559:10;;3570:1;;3559:13;;;;;;:::i;:::-;;;;;;;;;;:20;-1:-1:-1;3637:3:34;;;;;3068:613;3038:10;3047:1;3038:10;;:::i;:::-;;;2984:711;;;;2552:1153;;;2542:8;;;;;:::i;:::-;;;;2494:1211;;;;3774:10;:17;3795:1;3774:22;3766:31;;;;;;3815:10;3826:1;3815:13;;;;;;;;:::i;:::-;;;;;;;:18;;;3808:25;;;;2157:1683;;;;:::o;1349:638:50:-;1414:12;1438:18;1507:4;:12;;;1484:37;;;;;;;45951:3:66;45929:16;;;;-1:-1:-1;;;;;;45925:36:66;45913:49;;45987:1;45978:11;;45788:207;1484:37:50;;;;;;;;;;;;;1523:46;1550:4;:17;;;7044:1:44;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;7724:24;;;7644:111;1523:46:50;1471:99;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1471:99:50;;;;;;;;;1640:15;;;;1471:99;1627:29;;46566:19:66;1471:99:50;-1:-1:-1;1580:19:50;;46601:12:66;1627:29:50;;;;;;;;;;;;1658:53;1685:4;:21;;;:24;;;1658:19;:53::i;:::-;1614:98;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1580:132;;1722:18;1769:54;1796:4;:21;;;:25;;;7044:1:44;6998:21;;;7029:10;6998:21;7024;;;;;;;;;6997:49;7113:2;7096:7;;;7108;;;7095:21;7724:24;;;7644:111;1769:54:50;1838:4;:21;;;:26;;;1825:40;;;;;;46566:19:66;;46610:2;46601:12;;46437:182;1825:40:50;;;;-1:-1:-1;;1825:40:50;;;;;;;;;;1743:132;;;1825:40;1743:132;;:::i;:::-;;;;;;;;;;;;;1722:153;;1918:5;1925:6;1905:27;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1905:27:50;;;;;;;;;1967:10;;;;1905:27;1954:24;;46566:19:66;1905:27:50;1947:5;;46601:12:66;1954:24:50;;;-1:-1:-1;;1954:24:50;;;;;;;;;;1934:45;;;1954:24;1934:45;;:::i;:::-;;;;-1:-1:-1;;1934:45:50;;;;;;;;;;1892:88;;;1934:45;1892:88;;:::i;10363:251:49:-;10451:7;10474:15;10493:1;10474:20;10470:138;;-1:-1:-1;10517:12:49;10510:19;;10470:138;10567:30;10582:15;10567:12;:30;:::i;:::-;10560:37;;;;1466:377:36;1539:12;1592:4;:9;;;:16;1585:3;1571:4;:11;;;:17;;;;:::i;:::-;:37;;1563:46;;;;;;1623:3;1630:1;1623:8;1619:48;;-1:-1:-1;1647:9:36;;;;;;;;;-1:-1:-1;1647:9:36;;;;1619:48;1706:9;;1319:2:37;1769:11:36;;;;1288:34:37;;;1676:12:36;;1747:39;;1762:18;;1288:34:37;1762:18:36;:::i;:::-;1782:3;1747:14;:39::i;:::-;1726:60;;1811:3;1796:4;:11;;:18;;;;;;;:::i;:::-;;;-1:-1:-1;1831:5:36;1466:377;-1:-1:-1;;;;1466:377:36:o;566:1496:44:-;639:9;660:7;670:20;685:4;670:14;:20::i;:::-;660:30;-1:-1:-1;723:10:44;736:5;740:1;660:30;736:5;:::i;:::-;723:18;;773:13;800:4;:9;;808:1;800:9;796:1238;;-1:-1:-1;856:6:44;861:1;856:6;;;;796:1238;;;918:4;:9;;926:1;918:9;914:1120;;970:8;981:20;996:4;981:14;:20::i;:::-;970:31;-1:-1:-1;1087:7:44;1093:1;1087:7;;;;1129:11;1134:6;1139:1;1134:6;;;;1087:7;1129:11;:::i;:::-;-1:-1:-1;;;;;1189:9:44;;-1:-1:-1;914:1120:44;;-1:-1:-1;;914:1120:44;;1219:4;:9;;1227:1;1219:9;1215:819;;1279:8;1290:20;1305:4;1290:14;:20::i;:::-;1279:31;;1349:8;1360:20;1375:4;1360:14;:20::i;:::-;1349:31;;1394:8;1405:20;1420:4;1405:14;:20::i;:::-;1465:15;1479:1;1465:15;;;;;;:10;1452:9;;:29;1555:2;1541:16;;;;;;1535:23;;;;1604:2;1590:16;;;;;;1584:23;;;;1629:1;1622:8;1683:11;;;;;-1:-1:-1;1215:819:44;;-1:-1:-1;1215:819:44;;1715:4;:9;;1723:1;1715:9;1711:323;;1786:7;1796:12;1797:6;1802:1;1797:6;;;;1807:1;1796:12;:::i;:::-;1786:22;;1855:1;1850;:6;;;;1842:59;;;;-1:-1:-1;;;1842:59:44;;49979:2:66;1842:59:44;;;49961:21:66;50018:2;49998:18;;;49991:30;50057:34;50037:18;;;50030:62;-1:-1:-1;;;50108:18:66;;;50101:38;50156:19;;1842:59:44;49777:404:66;1842:59:44;1922:34;1936:19;1947:4;1953:1;1936:19;;:10;:19::i;:::-;1922:13;:34::i;:::-;1915:41;566:1496;-1:-1:-1;;;;;;566:1496:44:o;1711:323::-;1987:36;;-1:-1:-1;;;1987:36:44;;50388:2:66;1987:36:44;;;50370:21:66;50427:2;50407:18;;;50400:30;50466:28;50446:18;;;50439:56;50512:18;;1987:36:44;50186:350:66;1711:323:44;2050:5;566:1496;-1:-1:-1;;;;566:1496:44:o;956:269:36:-;1059:9;;:16;1041:11;;;;1020:5;;1059:16;1041:15;;1055:1;1041:15;:::i;:::-;:34;1037:87;;;1091:22;;-1:-1:-1;;;1091:22:36;;50743:2:66;1091:22:36;;;50725:21:66;50782:2;50762:18;;;50755:30;-1:-1:-1;;;50801:18:66;;;50794:42;50853:18;;1091:22:36;50541:336:66;1037:87:36;1134:7;1150:4;:9;;;1160:4;:11;;;1150:22;;;;;;;;:::i;:::-;;;;;;;;;1144:29;;1134:39;;1198:1;1183:4;:11;;:16;;;;;;;:::i;:::-;;;-1:-1:-1;1217:1:36;956:269;-1:-1:-1;;956:269:36:o;3494:308:50:-;-1:-1:-1;;;;;;;;;;;;;;;;;3596:9:50;3608:33;3623:14;3628:5;3635:1;3623:4;:14::i;:::-;3639:1;3608:14;:33::i;:::-;3596:45;;3651:14;3668:35;3697:5;3668:28;:35::i;:::-;3651:52;;3713:17;3733:25;3744:5;3751:6;3733:10;:25::i;:::-;3775:20;;;;;;;;;-1:-1:-1;;;;;;3775:20:50;;;;;;;;;-1:-1:-1;3775:20:50;;3494:308;-1:-1:-1;;;3494:308:50:o;5335:366:36:-;5444:11;;5403:12;;5427:14;;5513:10;5522:1;5444:11;5513:10;:::i;:::-;5501:22;;5496:152;5556:4;5561:1;5556:7;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;5556:7:36;:12;5552:86;;5599:1;5588:12;;5618:5;;5552:86;5533:3;;;;:::i;:::-;;;;5496:152;;;-1:-1:-1;5665:29:36;5672:4;5678:1;5681:12;:8;5692:1;5681:12;:::i;:::-;5665:6;:29::i;5009:1456:30:-;5097:7;;6021:66;6008:79;;6004:161;;;-1:-1:-1;6119:1:30;;-1:-1:-1;6123:30:30;6103:51;;6004:161;6276:24;;;6259:14;6276:24;;;;;;;;;51109:25:66;;;51182:4;51170:17;;51150:18;;;51143:45;;;;51204:18;;;51197:34;;;51247:18;;;51240:34;;;6276:24:30;;51081:19:66;;6276:24:30;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6276:24:30;;-1:-1:-1;;6276:24:30;;;-1:-1:-1;;;;;;;6314:20:30;;6310:101;;6366:1;6370:29;6350:50;;;;;;;6310:101;6429:6;-1:-1:-1;6437:20:30;;-1:-1:-1;5009:1456:30;;;;;;;;:::o;6710:1136:34:-;6940:11;;6983;;6792:13;;6849:9;;;;;;;7022:25;6983:11;6940;7022:25;:::i;:::-;7004:43;;7057:17;7088:7;-1:-1:-1;;;;;7077:19:34;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;7077:19:34;;;;;;;;;;;;;;;;7057:39;;7107:402;7118:11;7114:1;:15;:34;;;;;7137:11;7133:1;:15;7114:34;7107:402;;;7186:4;7191:1;7186:7;;;;;;;;:::i;:::-;;;;;;;:15;;;7168:4;7173:1;7168:7;;;;;;;;:::i;:::-;;;;;;;:15;;;:33;7164:335;;;7230:4;7235:1;7230:7;;;;;;;;:::i;:::-;;;;;;;7221:3;7225:1;7221:6;;;;;;;;:::i;:::-;;;;;;;;;;:16;7287:3;;;;;7312;;;;;7107:402;;7164:335;7381:4;7386:1;7381:7;;;;;;;;:::i;:::-;;;;;;;7372:3;7376:1;7372:6;;;;;;;;:::i;:::-;;;;;;;;;;:16;7438:3;;;;;7463;;;;;7107:402;;;7530:11;7526:1;:15;7519:145;;;7566:4;7571:1;7566:7;;;;;;;;:::i;:::-;;;;;;;7557:3;7561:1;7557:6;;;;;;;;:::i;:::-;;;;;;;;;;:16;7615:3;;;;;7636;;;;;7519:145;;;7685:11;7681:1;:15;7674:145;;;7721:4;7726:1;7721:7;;;;;;;;:::i;:::-;;;;;;;7712:3;7716:1;7712:6;;;;;;;;:::i;:::-;;;;;;;;;;:16;7770:3;;;;;7791;;;;;7674:145;;;7836:3;6710:1136;-1:-1:-1;;;;;;;;;6710:1136:34:o;6218:238::-;6281:7;;6317:5;6321:1;6317;:5;:::i;:::-;6300:22;-1:-1:-1;6336:5:34;6340:1;6336;:5;:::i;:::-;:10;6332:94;;6400:1;6390:11;6443:6;6218:238;-1:-1:-1;;;6218:238:34:o;6110:102::-;6174:7;6200:5;6204:1;6200;:5;:::i;1588:265:37:-;1655:16;1699:3;-1:-1:-1;;;;;1689:14:37;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1689:14:37;-1:-1:-1;1683:20:37;-1:-1:-1;1801:2:37;1770:34;;1823:23;1828:4;1770:34;1842:3;1823:4;:23::i;4462:247:36:-;4538:6;4556:10;4582:9;4577:106;4601:1;4597;:5;4577:106;;;4666:5;:1;4670;4666:5;:::i;:::-;4637:4;4642:10;4651:1;4642:6;:10;:::i;:::-;4637:16;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;4637:16:36;4630:42;;4623:49;;;;;4604:3;;;;:::i;:::-;;;;4577:106;;2616:319;2759:11;;2707:12;;2739:16;2752:3;2739:10;:16;:::i;:::-;:31;;2731:40;;;;;;2785:3;2792:1;2785:8;2781:48;;-1:-1:-1;2809:9:36;;;;;;;;;-1:-1:-1;2809:9:36;;;;2781:48;1319:2:37;1288:34;;2890:38:36;2905:17;2912:10;1288:34:37;2905:17:36;:::i;:::-;2924:3;2890:14;:38::i;:::-;2883:45;2616:319;-1:-1:-1;;;;;2616:319:36:o;2368:687:37:-;122:2;2503:3;:16;2496:193;;2593:10;;2580:24;;2631:17;122:2;2587:4;2631:17;:::i;:::-;;-1:-1:-1;2662:16:37;122:2;2662:16;;:::i;:::-;;-1:-1:-1;2521:16:37;122:2;2521:16;;:::i;:::-;;;2496:193;;;2731:12;2758:8;;:108;;2865:1;2846:15;2858:3;122:2;2846:15;:::i;:::-;2838:24;;:3;:24;:::i;:::-;:28;;;;:::i;:::-;2758:108;;;-1:-1:-1;;2758:108:37;2918:10;;2973:11;;2969:22;;2930:9;;2914:26;3017:21;;;;3004:35;;;-1:-1:-1;;2368:687:37:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;221:127:66:-;282:10;277:3;273:20;270:1;263:31;313:4;310:1;303:15;337:4;334:1;327:15;353:253;425:2;419:9;467:4;455:17;;-1:-1:-1;;;;;487:34:66;;523:22;;;484:62;481:88;;;549:18;;:::i;:::-;585:2;578:22;353:253;:::o;611:257::-;683:4;677:11;;;715:17;;-1:-1:-1;;;;;747:34:66;;783:22;;;744:62;741:88;;;809:18;;:::i;873:253::-;945:2;939:9;987:4;975:17;;-1:-1:-1;;;;;1007:34:66;;1043:22;;;1004:62;1001:88;;;1069:18;;:::i;1131:253::-;1203:2;1197:9;1245:4;1233:17;;-1:-1:-1;;;;;1265:34:66;;1301:22;;;1262:62;1259:88;;;1327:18;;:::i;1645:275::-;1716:2;1710:9;1781:2;1762:13;;-1:-1:-1;;1758:27:66;1746:40;;-1:-1:-1;;;;;1801:34:66;;1837:22;;;1798:62;1795:88;;;1863:18;;:::i;:::-;1899:2;1892:22;1645:275;;-1:-1:-1;1645:275:66:o;1925:362::-;1994:5;2042:4;2030:9;2025:3;2021:19;2017:30;2014:50;;;2060:1;2057;2050:12;2014:50;2082:22;;:::i;:::-;2073:31;;2140:9;2127:23;2120:5;2113:38;2211:2;2200:9;2196:18;2183:32;2178:2;2171:5;2167:14;2160:56;2276:2;2265:9;2261:18;2248:32;2243:2;2236:5;2232:14;2225:56;1925:362;;;;:::o;2292:190::-;2359:4;-1:-1:-1;;;;;2384:6:66;2381:30;2378:56;;;2414:18;;:::i;:::-;-1:-1:-1;2459:1:66;2455:14;2471:4;2451:25;;2292:190::o;2487:126::-;-1:-1:-1;;;;;;2561:27:66;;2551:38;;2541:66;;2603:1;2600;2593:12;2618:186;2666:4;-1:-1:-1;;;;;2691:6:66;2688:30;2685:56;;;2721:18;;:::i;:::-;-1:-1:-1;2787:2:66;2766:15;-1:-1:-1;;2762:29:66;2793:4;2758:40;;2618:186::o;2809:462::-;2851:5;2904:3;2897:4;2889:6;2885:17;2881:27;2871:55;;2922:1;2919;2912:12;2871:55;2958:6;2945:20;2989:48;3005:31;3033:2;3005:31;:::i;:::-;2989:48;:::i;:::-;3062:2;3053:7;3046:19;3108:3;3101:4;3096:2;3088:6;3084:15;3080:26;3077:35;3074:55;;;3125:1;3122;3115:12;3074:55;3190:2;3183:4;3175:6;3171:17;3164:4;3155:7;3151:18;3138:55;3238:1;3213:16;;;3231:4;3209:27;3202:38;;;;3217:7;2809:462;-1:-1:-1;;;2809:462:66:o;3276:1445::-;3334:5;3387:3;3380:4;3372:6;3368:17;3364:27;3354:55;;3405:1;3402;3395:12;3354:55;3441:6;3428:20;3467:4;3491:67;3507:50;3554:2;3507:50;:::i;3491:67::-;3592:15;;;3678:1;3674:10;;;;3662:23;;3658:32;;;3623:12;;;;3702:15;;;3699:35;;;3730:1;3727;3720:12;3699:35;3766:2;3758:6;3754:15;3778:914;3794:6;3789:3;3786:15;3778:914;;;3880:3;3867:17;-1:-1:-1;;;;;3957:2:66;3944:11;3941:19;3938:109;;;4001:1;4030:2;4026;4019:14;3938:109;4070:24;;;;4117:4;4145:12;;;-1:-1:-1;;4141:26:66;4137:35;-1:-1:-1;4134:125:66;;;4213:1;4242:2;4238;4231:14;4134:125;4285:22;;:::i;:::-;4357:2;4353;4349:11;4336:25;4390:2;4380:8;4377:16;4374:106;;;4434:1;4463:2;4459;4452:14;4374:106;4507:49;4552:3;4547:2;4536:8;4532:2;4528:17;4524:26;4507:49;:::i;:::-;4493:64;;-1:-1:-1;4606:11:66;;4593:25;4577:14;;;4570:49;-1:-1:-1;4632:18:66;;4670:12;;;;3811;;3778:914;;;-1:-1:-1;4710:5:66;3276:1445;-1:-1:-1;;;;;;3276:1445:66:o;4726:2301::-;4789:5;4837:4;4825:9;4820:3;4816:19;4812:30;4809:50;;;4855:1;4852;4845:12;4809:50;4877:22;;:::i;:::-;4868:31;;4935:9;4922:23;-1:-1:-1;;;;;5005:2:66;4997:6;4994:14;4991:34;;;5021:1;5018;5011:12;4991:34;5044:22;;;;5096:4;5082:12;;;5078:23;5075:43;;;5114:1;5111;5104:12;5075:43;5142:22;;:::i;:::-;5202:2;5189:16;5230:2;5220:8;5217:16;5214:36;;;5246:1;5243;5236:12;5214:36;5269:17;;5317:4;5309:13;;5305:23;-1:-1:-1;5295:51:66;;5342:1;5339;5332:12;5295:51;5378:2;5365:16;5400:4;5424:67;5440:50;5487:2;5440:50;:::i;5424:67::-;5525:15;;;5607:1;5603:10;;;;5595:19;;5591:28;;;5556:12;;;;5631:15;;;5628:35;;;5659:1;5656;5649:12;5628:35;5691:2;5687;5683:11;5703:934;5719:6;5714:3;5711:15;5703:934;;;5805:3;5792:17;5841:2;5828:11;5825:19;5822:109;;;5885:1;5914:2;5910;5903:14;5822:109;5954:20;;6022:4;5998:12;;;-1:-1:-1;;5994:26:66;5990:37;5987:127;;;6068:1;6097:2;6093;6086:14;5987:127;6142:22;;:::i;:::-;6213:2;6209;6205:11;6192:25;6230:32;6254:7;6230:32;:::i;:::-;6275:24;;6349:4;6341:13;;6328:27;6371:16;;;6368:106;;;6428:1;6457:2;6453;6446:14;6368:106;6512:49;6557:3;6552:2;6541:8;6537:2;6533:17;6529:26;6512:49;:::i;:::-;6494:16;;;6487:75;-1:-1:-1;6575:20:66;;-1:-1:-1;6615:12:66;;;;5736;;5703:934;;;5707:3;6662:5;6653:7;6646:22;;;6723:2;6719;6715:11;6702:25;6697:2;6688:7;6684:16;6677:51;6785:4;6781:2;6777:13;6764:27;6757:4;6748:7;6744:18;6737:55;6815:7;6808:5;6801:22;6876:2;6865:9;6861:18;6848:32;6832:48;;6905:2;6895:8;6892:16;6889:36;;;6921:1;6918;6911:12;6889:36;6957:63;7016:3;7005:8;6994:9;6990:24;6957:63;:::i;:::-;6952:2;6945:5;6941:14;6934:87;;;;;;;4726:2301;;;;:::o;7032:656::-;7091:5;7139:6;7127:9;7122:3;7118:19;7114:32;7111:52;;;7159:1;7156;7149:12;7111:52;7181:22;;:::i;:::-;7172:31;;7239:9;7226:23;7219:5;7212:38;7310:2;7299:9;7295:18;7282:32;7277:2;7270:5;7266:14;7259:56;7375:2;7364:9;7360:18;7347:32;7342:2;7335:5;7331:14;7324:56;7412:65;7473:3;7468:2;7457:9;7453:18;7412:65;:::i;:::-;7407:2;7400:5;7396:14;7389:89;7540:3;7529:9;7525:19;7512:33;7505:4;7498:5;7494:16;7487:59;7608:4;7597:9;7593:20;7580:34;7573:4;7566:5;7562:16;7555:60;7676:3;7665:9;7661:19;7648:33;7642:3;7635:5;7631:15;7624:58;7032:656;;;;:::o;7693:669::-;7747:5;7800:3;7793:4;7785:6;7781:17;7777:27;7767:55;;7818:1;7815;7808:12;7767:55;7854:6;7841:20;7880:4;7904:67;7920:50;7967:2;7920:50;:::i;7904:67::-;8005:15;;;8091:1;8087:10;;;;8075:23;;8071:32;;;8036:12;;;;8115:15;;;8112:35;;;8143:1;8140;8133:12;8112:35;8179:2;8171:6;8167:15;8191:142;8207:6;8202:3;8199:15;8191:142;;;8273:17;;8261:30;;8311:12;;;;8224;;8191:142;;8367:2008;8435:5;8488:3;8481:4;8473:6;8469:17;8465:27;8455:55;;8506:1;8503;8496:12;8455:55;8542:6;8529:20;8568:4;8592:67;8608:50;8655:2;8608:50;:::i;8592:67::-;8693:15;;;8779:1;8775:10;;;;8763:23;;8759:32;;;8724:12;;;;8803:15;;;8800:35;;;8831:1;8828;8821:12;8800:35;8867:2;8859:6;8855:15;8879:1467;8895:6;8890:3;8887:15;8879:1467;;;8981:3;8968:17;-1:-1:-1;;;;;9004:11:66;9001:35;8998:125;;;9077:1;9106:2;9102;9095:14;8998:125;9146:24;;9205:2;9197:11;;9193:21;-1:-1:-1;9183:119:66;;9256:1;9285:2;9281;9274:14;9183:119;9346:2;9342;9338:11;9325:25;9373:4;9403:67;9419:50;9466:2;9419:50;:::i;9403:67::-;9514:17;;;9612:1;9608:10;;;;9600:19;;9596:28;;;9553:14;;;;9640:17;;;9637:107;;;9698:1;9727:2;9723;9716:14;9637:107;9770:11;;;;9794:479;9812:8;9805:5;9802:19;9794:479;;;9904:2;9896:5;9891:3;9887:15;9883:24;9880:130;;;9956:1;9989:2;9985;9978:14;9880:130;10040:22;;:::i;:::-;10093:19;;10079:34;;10166:14;;;10153:28;10137:14;;;10130:52;10199:20;;9833:14;;;;10245;;;;9794:479;;;10286:18;;-1:-1:-1;;;10324:12:66;;;;-1:-1:-1;8912:12:66;;8879:1467;;10380:957;10441:5;10489:4;10477:9;10472:3;10468:19;10464:30;10461:50;;;10507:1;10504;10497:12;10461:50;10529:22;;:::i;:::-;10520:31;;10587:9;10574:23;-1:-1:-1;;;;;10657:2:66;10649:6;10646:14;10643:34;;;10673:1;10670;10663:12;10643:34;10696:22;;;;10748:4;10734:12;;;10730:23;10727:43;;;10766:1;10763;10756:12;10727:43;10794:22;;:::i;:::-;10854:2;10841:16;10832:7;10825:33;10913:2;10909;10905:11;10892:25;10887:2;10878:7;10874:16;10867:51;10964:4;10960:2;10956:13;10943:27;10995:2;10985:8;10982:16;10979:36;;;11011:1;11008;11001:12;10979:36;11051:40;11087:3;11076:8;11072:2;11068:17;11051:40;:::i;:::-;11044:4;11031:18;;11024:68;-1:-1:-1;11101:22:66;;11176:2;11161:18;;11148:32;;-1:-1:-1;11192:16:66;;;11189:36;;;11221:1;11218;11211:12;11189:36;;11257:73;11326:3;11315:8;11304:9;11300:24;11257:73;:::i;:::-;11252:2;11245:5;11241:14;11234:97;;10380:957;;;;:::o;11342:2128::-;11486:6;11494;11538:9;11529:7;11525:23;11568:3;11564:2;11560:12;11557:32;;;11585:1;11582;11575:12;11557:32;11608:6;11634:2;11630;11626:11;11623:31;;;11650:1;11647;11640:12;11623:31;11676:22;;:::i;:::-;11663:35;;11734:9;11721:23;11714:5;11707:38;11764:2;11826;11815:9;11811:18;11798:32;11793:2;11786:5;11782:14;11775:56;11863:69;11924:7;11919:2;11908:9;11904:18;11863:69;:::i;:::-;11858:2;11851:5;11847:14;11840:93;11967:70;12029:7;12023:3;12012:9;12008:19;11967:70;:::i;:::-;11960:4;11949:16;;11942:96;11953:5;;-1:-1:-1;12098:18:66;;12085:32;;-1:-1:-1;;;;;12136:18:66;12166:14;;;12163:34;;;12193:1;12190;12183:12;12163:34;12216:22;;;;12272:2;12254:16;;;12250:25;12247:45;;;12288:1;12285;12278:12;12247:45;12316:22;;:::i;:::-;12376:2;12363:16;12404:2;12394:8;12391:16;12388:36;;;12420:1;12417;12410:12;12388:36;12443:17;;12494:6;12476:16;;;12472:29;12469:49;;;12514:1;12511;12504:12;12469:49;12542:22;;:::i;:::-;12602:2;12589:16;12630:2;12620:8;12617:16;12614:36;;;12646:1;12643;12636:12;12614:36;12675:62;12729:7;12718:8;12714:2;12710:17;12675:62;:::i;:::-;12666:7;12659:79;;12772:52;12816:7;12811:2;12807;12803:11;12772:52;:::i;:::-;12767:2;12758:7;12754:16;12747:78;12871:3;12867:2;12863:12;12850:26;12901:2;12891:8;12888:16;12885:36;;;12917:1;12914;12907:12;12885:36;12955:56;13003:7;12992:8;12988:2;12984:17;12955:56;:::i;:::-;12950:2;12941:7;12937:16;12930:82;;13058:3;13054:2;13050:12;13037:26;13088:2;13078:8;13075:16;13072:36;;;13104:1;13101;13094:12;13072:36;13144:70;13206:7;13195:8;13191:2;13187:17;13144:70;:::i;:::-;13137:4;13124:18;;13117:98;-1:-1:-1;13224:24:66;;-1:-1:-1;13286:11:66;;;13273:25;13310:16;;;13307:36;;;13339:1;13336;13329:12;13307:36;13377:60;13429:7;13418:8;13414:2;13410:17;13377:60;:::i;:::-;13372:2;13363:7;13359:16;13352:86;;13457:7;13447:17;;;;;;11342:2128;;;;;:::o;13699:426::-;13784:12;;13772:25;;13846:4;13835:16;;;13829:23;13813:14;;;13806:47;13899:4;13888:16;;;13882:23;13563:12;;13969:14;;;13551:25;13614:16;;;13608:23;13592:14;;;13585:47;13670:16;;13664:23;13648:14;;;13641:47;-1:-1:-1;14032:4:66;14021:16;14015:23;13563:12;;14113:4;14104:14;;13551:25;13625:4;13614:16;;13608:23;13592:14;;;13585:47;13681:4;13670:16;13664:23;13648:14;;;;13641:47;13699:426::o;14520:458::-;14830:3;14815:19;;14843:56;14819:9;14881:6;14843:56;:::i;:::-;14213:12;;14967:3;14952:19;;14201:25;14275:4;14264:16;;;14258:23;14242:14;;;14235:47;14328:4;14317:16;;;14311:23;14366:19;;14350:14;;;14343:43;14422:23;;;14416:30;14402:12;;;14395:52;14484:23;14478:30;14463:13;;;14456:53;14908:64;14130:385;14983:539;15069:6;15077;15130:2;15118:9;15109:7;15105:23;15101:32;15098:52;;;15146:1;15143;15136:12;15098:52;15186:9;15173:23;-1:-1:-1;;;;;15256:2:66;15248:6;15245:14;15242:34;;;15272:1;15269;15262:12;15242:34;15295:49;15336:7;15327:6;15316:9;15312:22;15295:49;:::i;:::-;15285:59;;15397:2;15386:9;15382:18;15369:32;15353:48;;15426:2;15416:8;15413:16;15410:36;;;15442:1;15439;15432:12;15410:36;;15465:51;15508:7;15497:8;15486:9;15482:24;15465:51;:::i;:::-;15455:61;;;14983:539;;;;;:::o;15527:250::-;15612:1;15622:113;15636:6;15633:1;15630:13;15622:113;;;15712:11;;;15706:18;15693:11;;;15686:39;15658:2;15651:10;15622:113;;;-1:-1:-1;;15769:1:66;15751:16;;15744:27;15527:250::o;15782:270::-;15823:3;15861:5;15855:12;15888:6;15883:3;15876:19;15904:76;15973:6;15966:4;15961:3;15957:14;15950:4;15943:5;15939:16;15904:76;:::i;:::-;16034:2;16013:15;-1:-1:-1;;16009:29:66;16000:39;;;;16041:4;15996:50;;15782:270;-1:-1:-1;;15782:270:66:o;16057:391::-;16304:3;16293:9;16286:22;16267:4;16325:45;16365:3;16354:9;16350:19;16342:6;16325:45;:::i;:::-;16317:53;;16379:63;16438:2;16427:9;16423:18;16415:6;14213:12;;14201:25;;14275:4;14264:16;;;14258:23;14242:14;;;14235:47;14328:4;14317:16;;;14311:23;14366:19;;14350:14;;;14343:43;14422:23;;;14416:30;14411:2;14402:12;;14395:52;14484:23;14478:30;14472:3;14463:13;;;14456:53;14130:385;16837:352;16917:5;16965:4;16953:9;16948:3;16944:19;16940:30;16937:50;;;16983:1;16980;16973:12;16937:50;17005:22;;:::i;:::-;16996:31;;17056:9;17050:16;17043:5;17036:31;17120:2;17109:9;17105:18;17099:25;17094:2;17087:5;17083:14;17076:49;17178:2;17167:9;17163:18;17157:25;17152:2;17145:5;17141:14;17134:49;16837:352;;;;:::o;17194:514::-;17271:5;17319:6;17307:9;17302:3;17298:19;17294:32;17291:52;;;17339:1;17336;17329:12;17291:52;17361:22;;:::i;:::-;17352:31;;17412:9;17406:16;17399:5;17392:31;17476:2;17465:9;17461:18;17455:25;17450:2;17443:5;17439:14;17432:49;17513:76;17585:3;17580:2;17569:9;17565:18;17513:76;:::i;:::-;17508:2;17501:5;17497:14;17490:100;17624:77;17697:3;17691;17680:9;17676:19;17624:77;:::i;:::-;17617:4;17610:5;17606:16;17599:103;17194:514;;;;:::o;17713:275::-;17821:6;17874:3;17862:9;17853:7;17849:23;17845:33;17842:53;;;17891:1;17888;17881:12;17842:53;17914:68;17974:7;17963:9;17914:68;:::i;17993:441::-;18046:5;18099:3;18092:4;18084:6;18080:17;18076:27;18066:55;;18117:1;18114;18107:12;18066:55;18146:6;18140:13;18177:48;18193:31;18221:2;18193:31;:::i;18177:48::-;18250:2;18241:7;18234:19;18296:3;18289:4;18284:2;18276:6;18272:15;18268:26;18265:35;18262:55;;;18313:1;18310;18303:12;18262:55;18326:77;18400:2;18393:4;18384:7;18380:18;18373:4;18365:6;18361:17;18326:77;:::i;18439:1439::-;18508:5;18561:3;18554:4;18546:6;18542:17;18538:27;18528:55;;18579:1;18576;18569:12;18528:55;18608:6;18602:13;18634:4;18658:67;18674:50;18721:2;18674:50;:::i;18658:67::-;18759:15;;;18845:1;18841:10;;;;18829:23;;18825:32;;;18790:12;;;;18869:15;;;18866:35;;;18897:1;18894;18887:12;18866:35;18933:2;18925:6;18921:15;18945:904;18961:6;18956:3;18953:15;18945:904;;;19040:3;19034:10;-1:-1:-1;;;;;19117:2:66;19104:11;19101:19;19098:109;;;19161:1;19190:2;19186;19179:14;19098:109;19230:24;;;;19277:4;19305:12;;;-1:-1:-1;;19301:26:66;19297:35;-1:-1:-1;19294:125:66;;;19373:1;19402:2;19398;19391:14;19294:125;19445:22;;:::i;:::-;19510:2;19506;19502:11;19496:18;19543:2;19533:8;19530:16;19527:106;;;19587:1;19616:2;19612;19605:14;19527:106;19660:60;19716:3;19711:2;19700:8;19696:2;19692:17;19688:26;19660:60;:::i;:::-;19646:75;;-1:-1:-1;19763:11:66;;19757:18;19741:14;;;19734:42;-1:-1:-1;19789:18:66;;19827:12;;;;18978;;18945:904;;19883:2271;19957:5;20005:4;19993:9;19988:3;19984:19;19980:30;19977:50;;;20023:1;20020;20013:12;19977:50;20045:22;;:::i;:::-;20036:31;;20096:9;20090:16;-1:-1:-1;;;;;20166:2:66;20158:6;20155:14;20152:34;;;20182:1;20179;20172:12;20152:34;20205:22;;;;20257:4;20243:12;;;20239:23;20236:43;;;20275:1;20272;20265:12;20236:43;20303:22;;:::i;:::-;20356:2;20350:9;20384:2;20374:8;20371:16;20368:36;;;20400:1;20397;20390:12;20368:36;20423:17;;20471:4;20463:13;;20459:23;-1:-1:-1;20449:51:66;;20496:1;20493;20486:12;20449:51;20525:2;20519:9;20547:4;20571:67;20587:50;20634:2;20587:50;:::i;20571:67::-;20672:15;;;20754:1;20750:10;;;;20742:19;;20738:28;;;20703:12;;;;20778:15;;;20775:35;;;20806:1;20803;20796:12;20775:35;20838:2;20834;20830:11;20850:924;20866:6;20861:3;20858:15;20850:924;;;20945:3;20939:10;20981:2;20968:11;20965:19;20962:109;;;21025:1;21054:2;21050;21043:14;20962:109;21094:20;;21162:4;21138:12;;;-1:-1:-1;;21134:26:66;21130:37;21127:127;;;21208:1;21237:2;21233;21226:14;21127:127;21282:22;;:::i;:::-;21346:2;21342;21338:11;21332:18;21363:32;21387:7;21363:32;:::i;:::-;21408:24;;21475:4;21467:13;;21461:20;21497:16;;;21494:106;;;21554:1;21583:2;21579;21572:14;21494:106;21638:60;21694:3;21689:2;21678:8;21674:2;21670:17;21666:26;21638:60;:::i;:::-;21620:16;;;21613:86;-1:-1:-1;21712:20:66;;-1:-1:-1;21752:12:66;;;;20883;;20850:924;;;20854:3;21799:5;21790:7;21783:22;;;21853:2;21849;21845:11;21839:18;21834:2;21825:7;21821:16;21814:44;21908:4;21904:2;21900:13;21894:20;21887:4;21878:7;21874:18;21867:48;21938:7;21931:5;21924:22;21992:2;21981:9;21977:18;21971:25;21955:41;;22021:2;22011:8;22008:16;22005:36;;;22037:1;22034;22027:12;22005:36;22073:74;22143:3;22132:8;22121:9;22117:24;22073:74;:::i;22159:636::-;22229:5;22277:6;22265:9;22260:3;22256:19;22252:32;22249:52;;;22297:1;22294;22287:12;22249:52;22319:22;;:::i;:::-;22310:31;;22370:9;22364:16;22357:5;22350:31;22434:2;22423:9;22419:18;22413:25;22408:2;22401:5;22397:14;22390:49;22492:2;22481:9;22477:18;22471:25;22466:2;22459:5;22455:14;22448:49;22529:76;22601:3;22596:2;22585:9;22581:18;22529:76;:::i;:::-;22524:2;22517:5;22513:14;22506:100;22661:3;22650:9;22646:19;22640:26;22633:4;22626:5;22622:16;22615:52;22722:4;22711:9;22707:20;22701:27;22694:4;22687:5;22683:16;22676:53;22783:3;22772:9;22768:19;22762:26;22756:3;22749:5;22745:15;22738:51;22159:636;;;;:::o;22800:666::-;22865:5;22918:3;22911:4;22903:6;22899:17;22895:27;22885:55;;22936:1;22933;22926:12;22885:55;22965:6;22959:13;22991:4;23015:67;23031:50;23078:2;23031:50;:::i;23015:67::-;23116:15;;;23202:1;23198:10;;;;23186:23;;23182:32;;;23147:12;;;;23226:15;;;23223:35;;;23254:1;23251;23244:12;23223:35;23290:2;23282:6;23278:15;23302:135;23318:6;23313:3;23310:15;23302:135;;;23384:10;;23372:23;;23415:12;;;;23335;;23302:135;;23471:1984;23550:5;23603:3;23596:4;23588:6;23584:17;23580:27;23570:55;;23621:1;23618;23611:12;23570:55;23650:6;23644:13;23676:4;23700:67;23716:50;23763:2;23716:50;:::i;23700:67::-;23801:15;;;23887:1;23883:10;;;;23871:23;;23867:32;;;23832:12;;;;23911:15;;;23908:35;;;23939:1;23936;23929:12;23908:35;23975:2;23967:6;23963:15;23987:1439;24003:6;23998:3;23995:15;23987:1439;;;24082:3;24076:10;-1:-1:-1;;;;;24105:11:66;24102:35;24099:125;;;24178:1;24207:2;24203;24196:14;24099:125;24247:24;;24306:2;24298:11;;24294:21;-1:-1:-1;24284:119:66;;24357:1;24386:2;24382;24375:14;24284:119;24440:2;24436;24432:11;24426:18;24467:4;24497:67;24513:50;24560:2;24513:50;:::i;24497:67::-;24608:17;;;24706:1;24702:10;;;;24694:19;;24690:28;;;24647:14;;;;24734:17;;;24731:107;;;24792:1;24821:2;24817;24810:14;24731:107;24864:11;;;;24888:465;24906:8;24899:5;24896:19;24888:465;;;24998:2;24990:5;24985:3;24981:15;24977:24;24974:130;;;25050:1;25083:2;25079;25072:14;24974:130;25134:22;;:::i;:::-;25187:12;;25173:27;;25246:14;;;25240:21;25224:14;;;25217:45;25279:20;;24927:14;;;;25325;;;;24888:465;;;25366:18;;-1:-1:-1;;;25404:12:66;;;;-1:-1:-1;24020:12:66;;23987:1439;;25460:955;25532:5;25580:4;25568:9;25563:3;25559:19;25555:30;25552:50;;;25598:1;25595;25588:12;25552:50;25620:22;;:::i;:::-;25611:31;;25671:9;25665:16;-1:-1:-1;;;;;25741:2:66;25733:6;25730:14;25727:34;;;25757:1;25754;25747:12;25727:34;25780:22;;;;25832:4;25818:12;;;25814:23;25811:43;;;25850:1;25847;25840:12;25811:43;25878:22;;:::i;:::-;25931:2;25925:9;25916:7;25909:26;25983:2;25979;25975:11;25969:18;25964:2;25955:7;25951:16;25944:44;26027:4;26023:2;26019:13;26013:20;26058:2;26048:8;26045:16;26042:36;;;26074:1;26071;26064:12;26042:36;26114:51;26161:3;26150:8;26146:2;26142:17;26114:51;:::i;:::-;26107:4;26094:18;;26087:79;-1:-1:-1;26175:22:66;;26243:2;26228:18;;26222:25;;-1:-1:-1;26259:16:66;;;26256:36;;;26288:1;26285;26278:12;26256:36;;26324:84;26404:3;26393:8;26382:9;26378:24;26324:84;:::i;26420:1377::-;26566:6;26574;26627:2;26615:9;26606:7;26602:23;26598:32;26595:52;;;26643:1;26640;26633:12;26595:52;26676:9;26670:16;-1:-1:-1;;;;;26746:2:66;26738:6;26735:14;26732:34;;;26762:1;26759;26752:12;26732:34;26785:22;;;;26841:6;26823:16;;;26819:29;26816:49;;;26861:1;26858;26851:12;26816:49;26887:22;;:::i;:::-;26940:2;26934:9;26968:2;26958:8;26955:16;26952:36;;;26984:1;26981;26974:12;26952:36;27011:73;27076:7;27065:8;27061:2;27057:17;27011:73;:::i;:::-;27004:5;26997:88;;27117:63;27172:7;27167:2;27163;27159:11;27117:63;:::i;:::-;27112:2;27105:5;27101:14;27094:87;27220:3;27216:2;27212:12;27206:19;27250:2;27240:8;27237:16;27234:36;;;27266:1;27263;27256:12;27234:36;27302:67;27361:7;27350:8;27346:2;27342:17;27302:67;:::i;:::-;27297:2;27290:5;27286:14;27279:91;;27409:3;27405:2;27401:12;27395:19;27439:2;27429:8;27426:16;27423:36;;;27455:1;27452;27445:12;27423:36;27493:81;27566:7;27555:8;27551:2;27547:17;27493:81;:::i;:::-;27486:4;27475:16;;27468:107;-1:-1:-1;27645:2:66;27630:18;;27624:25;27479:5;;-1:-1:-1;27624:25:66;-1:-1:-1;27661:16:66;;;27658:36;;;27690:1;27687;27680:12;27658:36;;27713:78;27783:7;27772:8;27761:9;27757:24;27713:78;:::i;27802:849::-;27859:3;27897:5;27891:12;27924:6;27919:3;27912:19;27950:4;27991:2;27986:3;27982:12;28016:11;28043;28036:18;;28093:6;28090:1;28086:14;28079:5;28075:26;28063:38;;28135:2;28128:5;28124:14;28156:1;28166:459;28180:6;28177:1;28174:13;28166:459;;;28251:5;28245:4;28241:16;28236:3;28229:29;28287:6;28281:13;28317:4;28360:2;28354:9;28389:2;28383:4;28376:16;28419:45;28460:2;28454:4;28450:13;28436:12;28419:45;:::i;:::-;28505:11;;;28499:18;28484:13;;;28477:41;;;;-1:-1:-1;28603:12:66;;;;28405:59;-1:-1:-1;28568:15:66;;;;28202:1;28195:9;28166:459;;;-1:-1:-1;28641:4:66;;27802:849;-1:-1:-1;;;;;;;27802:849:66:o;28656:510::-;28740:5;28734:12;28729:3;28722:25;28796:4;28789:5;28785:16;28779:23;28772:4;28767:3;28763:14;28756:47;28852:4;28845:5;28841:16;28835:23;28828:4;28823:3;28819:14;28812:47;28905:4;28898:5;28894:16;28888:23;28920:70;28984:4;28979:3;28975:14;28961:12;13563;;13551:25;;13625:4;13614:16;;;13608:23;13592:14;;;13585:47;13681:4;13670:16;;;13664:23;13648:14;;13641:47;13475:219;28920:70;;29039:4;29032:5;29028:16;29022:23;29015:4;29010:3;29006:14;28999:47;29095:4;29088:5;29084:16;29078:23;29071:4;29066:3;29062:14;29055:47;29153:4;29146:5;29142:16;29136:23;29127:6;29122:3;29118:16;29111:49;28656:510;;:::o;29171:435::-;29224:3;29262:5;29256:12;29289:6;29284:3;29277:19;29315:4;29344:2;29339:3;29335:12;29328:19;;29381:2;29374:5;29370:14;29402:1;29412:169;29426:6;29423:1;29420:13;29412:169;;;29487:13;;29475:26;;29521:12;;;;29556:15;;;;29448:1;29441:9;29412:169;;;-1:-1:-1;29597:3:66;;29171:435;-1:-1:-1;;;;;29171:435:66:o;29611:1183::-;29678:3;29716:5;29710:12;29743:6;29738:3;29731:19;29769:4;29810:2;29805:3;29801:12;29835:11;29862;29855:18;;29912:6;29909:1;29905:14;29898:5;29894:26;29882:38;;29954:2;29947:5;29943:14;29975:1;29996;30006:762;30022:6;30017:3;30014:15;30006:762;;;30087:16;;;30075:29;;30127:13;;30199:9;;30221:22;;;30307:11;;;;30265:13;;;;30342:1;30356:306;30372:8;30367:3;30364:17;30356:306;;;30445:15;;30491:9;;30477:24;;30547:11;;30541:18;30525:14;;;30518:42;30631:17;;;;30597:4;30586:16;;;;30400:1;30391:11;30356:306;;;-1:-1:-1;;30746:12:66;;;;30683:5;-1:-1:-1;;30711:15:66;;;;30048:1;30039:11;30006:762;;;-1:-1:-1;30784:4:66;;29611:1183;-1:-1:-1;;;;;;;;29611:1183:66:o;30799:603::-;30856:3;30900:5;30894:12;30927:4;30922:3;30915:17;30970:12;30964:19;30957:4;30952:3;30948:14;30941:43;31040:4;31026:12;31022:23;31016:30;31009:4;31004:3;31000:14;30993:54;31102:4;31088:12;31084:23;31078:30;31056:52;;31139:4;31133:3;31128;31124:13;31117:27;31166:47;31208:3;31203;31199:13;31183:14;31166:47;:::i;:::-;31153:60;;31261:4;31254:5;31250:16;31244:23;31310:3;31303:5;31299:15;31292:4;31287:3;31283:14;31276:39;31331:65;31390:5;31374:14;31331:65;:::i;31407:2758::-;31679:4;31708:3;31720:56;31766:9;31758:6;31720:56;:::i;:::-;31813:2;31807:3;31796:9;31792:19;31785:31;31851:6;31845:13;31877:4;31917:2;31912;31901:9;31897:18;31890:30;31957:12;31951:19;31929:41;;31989:6;32032:2;32026:3;32015:9;32011:19;32004:31;32072:14;32066:21;32124:2;32118:3;32107:9;32103:19;32096:31;32165:3;32154:9;32150:19;32206:14;32200:21;32258:4;32252:3;32241:9;32237:19;32230:33;32283:6;32318:14;32312:21;32357:6;32349;32342:22;32383:3;32373:13;;32417:2;32406:9;32402:18;32395:25;;32479:2;32469:6;32466:1;32462:14;32451:9;32447:30;32443:39;32429:53;;32501:4;32548:2;32532:14;32528:23;32514:37;;32569:1;32579:454;32593:6;32590:1;32587:13;32579:454;;;32658:22;;;-1:-1:-1;;32654:37:66;32642:50;;32715:13;;32760:9;;-1:-1:-1;;;;;;32756:31:66;32741:47;;32829:11;;32823:18;32861:15;;;32854:27;;;32904:49;32937:15;;;32823:18;32904:49;:::i;:::-;32894:59;-1:-1:-1;;32976:15:66;;;;33011:12;;;;32615:1;32608:9;32579:454;;;-1:-1:-1;33076:23:66;;;33070:30;33064:3;33049:19;;33042:59;33144:23;;;33138:30;33132:3;33117:19;;33110:59;33206:23;;;33200:30;33271:22;;;-1:-1:-1;;33267:37:66;33261:3;33246:19;;33239:66;33200:30;33325:56;33275:6;33200:30;33325:56;:::i;:::-;33314:67;;33436:2;33422:12;33418:21;33412:28;33390:50;;33449:66;33511:2;33500:9;33496:18;33480:14;33449:66;:::i;:::-;33570:2;33556:12;33552:21;33546:28;33524:50;;33597:3;33593:8;33583:18;;33663:2;33651:9;33646:3;33642:19;33638:28;33632:3;33621:9;33617:19;33610:57;33690:49;33735:3;33719:14;33690:49;:::i;:::-;33676:63;;33794:4;33780:12;33776:23;33770:30;33748:52;;33865:2;33853:9;33845:6;33841:22;33837:31;33831:3;33820:9;33816:19;33809:60;33891:66;33950:6;33934:14;33891:66;:::i;:::-;33878:79;;34006:2;33998:6;33994:15;33988:22;33966:44;;;;;;;;;;34081:3;34077:8;34065:9;34058:5;34054:21;34050:36;34041:6;34030:9;34026:22;34019:68;34104:55;34153:5;34137:14;34104:55;:::i;34170:900::-;34323:6;34331;34375:9;34366:7;34362:23;34405:3;34401:2;34397:12;34394:32;;;34422:1;34419;34412:12;34394:32;34445:68;34505:7;34494:9;34445:68;:::i;:::-;34435:78;-1:-1:-1;34548:4:66;-1:-1:-1;;34529:17:66;;34525:28;34522:48;;;34566:1;34563;34556:12;34522:48;34592:22;;:::i;:::-;34658:3;34643:19;;34637:26;34623:41;;34717:3;34702:19;;34696:26;34691:2;34680:14;;34673:50;34758:4;-1:-1:-1;;34739:17:66;;34735:28;34732:48;;;34776:1;34773;34766:12;34732:48;34804:22;;:::i;:::-;34789:37;;34872:3;34861:9;34857:19;34851:26;34842:7;34835:43;34933:3;34922:9;34918:19;34912:26;34907:2;34898:7;34894:16;34887:52;34994:3;34983:9;34979:19;34973:26;34968:2;34959:7;34955:16;34948:52;35032:7;35027:2;35020:5;35016:14;35009:31;35059:5;35049:15;;;;34170:900;;;;;:::o;35075:285::-;35285:3;35270:19;;35298:56;35274:9;35336:6;35298:56;:::i;36541:127::-;36602:10;36597:3;36593:20;36590:1;36583:31;36633:4;36630:1;36623:15;36657:4;36654:1;36647:15;36673:127;36734:10;36729:3;36725:20;36722:1;36715:31;36765:4;36762:1;36755:15;36789:4;36786:1;36779:15;36805:135;36844:3;36865:17;;;36862:43;;36885:18;;:::i;:::-;-1:-1:-1;36932:1:66;36921:13;;36805:135::o;39040:168::-;39113:9;;;39144;;39161:15;;;39155:22;;39141:37;39131:71;;39182:18;;:::i;39562:384::-;-1:-1:-1;;;;;;39747:33:66;;39735:46;;39804:13;;39717:3;;39826:74;39804:13;39889:1;39880:11;;39873:4;39861:17;;39826:74;:::i;:::-;39920:16;;;;39938:1;39916:24;;39562:384;-1:-1:-1;;;39562:384:66:o;40310:127::-;40371:10;40366:3;40362:20;40359:1;40352:31;40402:4;40399:1;40392:15;40426:4;40423:1;40416:15;40442:120;40482:1;40508;40498:35;;40513:18;;:::i;:::-;-1:-1:-1;40547:9:66;;40442:120::o;40567:125::-;40632:9;;;40653:10;;;40650:36;;;40666:18;;:::i;41308:492::-;41483:3;41521:6;41515:13;41537:66;41596:6;41591:3;41584:4;41576:6;41572:17;41537:66;:::i;:::-;41666:13;;41625:16;;;;41688:70;41666:13;41625:16;41735:4;41723:17;;41688:70;:::i;:::-;41774:20;;41308:492;-1:-1:-1;;;;41308:492:66:o;42114:1393::-;42450:4;42498:3;42487:9;42483:19;42529:6;42518:9;42511:25;42555:2;42593:3;42588:2;42577:9;42573:18;42566:31;42617:6;42652;42646:13;42683:6;42675;42668:22;42721:3;42710:9;42706:19;42699:26;;42760:2;42752:6;42748:15;42734:29;;42781:1;42791:169;42805:6;42802:1;42799:13;42791:169;;;42866:13;;42854:26;;42935:15;;;;42900:12;;;;42827:1;42820:9;42791:169;;;-1:-1:-1;;42996:19:66;;;42991:2;42976:18;;42969:47;43066:13;;43088:21;;;43127:12;;;;-1:-1:-1;43164:15:66;;;;43199:1;43209:225;43225:8;43220:3;43217:17;43209:225;;;43280:64;43338:5;43327:8;43321:15;13563:12;;13551:25;;13625:4;13614:16;;;13608:23;13592:14;;;13585:47;13681:4;13670:16;;;13664:23;13648:14;;13641:47;13475:219;43280:64;43377:4;43366:16;;;;;43407:17;;;;43253:1;43244:11;43209:225;;;-1:-1:-1;;;;43487:4:66;43472:20;;;;43465:36;;;;43451:5;42114:1393;-1:-1:-1;;;;42114:1393:66:o;43512:277::-;43579:6;43632:2;43620:9;43611:7;43607:23;43603:32;43600:52;;;43648:1;43645;43638:12;43600:52;43680:9;43674:16;43733:5;43726:13;43719:21;43712:5;43709:32;43699:60;;43755:1;43752;43745:12;44140:128;44207:9;;;44228:11;;;44225:37;;;44242:18;;:::i;44273:422::-;44362:1;44405:5;44362:1;44419:270;44440:7;44430:8;44427:21;44419:270;;;44499:4;44495:1;44491:6;44487:17;44481:4;44478:27;44475:53;;;44508:18;;:::i;:::-;44558:7;44548:8;44544:22;44541:55;;;44578:16;;;;44541:55;44657:22;;;;44617:15;;;;44419:270;;;44423:3;44273:422;;;;;:::o;44700:806::-;44749:5;44779:8;44769:80;;-1:-1:-1;44820:1:66;44834:5;;44769:80;44868:4;44858:76;;-1:-1:-1;44905:1:66;44919:5;;44858:76;44950:4;44968:1;44963:59;;;;45036:1;45031:130;;;;44943:218;;44963:59;44993:1;44984:10;;45007:5;;;45031:130;45068:3;45058:8;45055:17;45052:43;;;45075:18;;:::i;:::-;-1:-1:-1;;45131:1:66;45117:16;;45146:5;;44943:218;;45245:2;45235:8;45232:16;45226:3;45220:4;45217:13;45213:36;45207:2;45197:8;45194:16;45189:2;45183:4;45180:12;45176:35;45173:77;45170:159;;;-1:-1:-1;45282:19:66;;;45314:5;;45170:159;45361:34;45386:8;45380:4;45361:34;:::i;:::-;45431:6;45427:1;45423:6;45419:19;45410:7;45407:32;45404:58;;;45442:18;;:::i;:::-;45480:20;;44700:806;-1:-1:-1;;;44700:806:66:o;45511:131::-;45571:5;45600:36;45627:8;45621:4;45600:36;:::i;45647:136::-;45686:3;45714:5;45704:39;;45723:18;;:::i;:::-;-1:-1:-1;;;45759:18:66;;45647:136::o;46624:385::-;46838:3;46833;46829:13;46820:6;46815:3;46811:16;46807:36;46802:3;46795:49;46777:3;46873:6;46867:13;46889:74;46956:6;46952:1;46947:3;46943:11;46936:4;46928:6;46924:17;46889:74;:::i;:::-;46983:16;;;;47001:1;46979:24;;46624:385;-1:-1:-1;;;46624:385:66:o;47014:127::-;47075:10;47070:3;47066:20;47063:1;47056:31;47106:4;47103:1;47096:15;47130:4;47127:1;47120:15;48262:405;48417:3;48455:6;48449:13;48471:66;48530:6;48525:3;48518:4;48510:6;48506:17;48471:66;:::i;:::-;-1:-1:-1;;;;;;48598:33:66;;;;48559:16;;;;48584:48;;;48659:1;48648:13;;48262:405;-1:-1:-1;;48262:405:66:o;48859:413::-;49014:3;49052:6;49046:13;49068:66;49127:6;49122:3;49115:4;49107:6;49103:17;49068:66;:::i;:::-;-1:-1:-1;;;;;;49195:41:66;;;;49156:16;;;;49181:56;;;49264:1;49253:13;;48859:413;-1:-1:-1;;48859:413:66:o;49277:157::-;49307:1;49341:4;49338:1;49334:12;49365:3;49355:37;;49372:18;;:::i;:::-;49424:3;49417:4;49414:1;49410:12;49406:22;49401:27;;;49277:157;;;;:::o;49439:180::-;-1:-1:-1;;;;;49544:10:66;;;49556;;;49540:27;;49579:11;;;49576:37;;;49593:18;;:::i;49624:148::-;49712:4;49691:12;;;49705;;;49687:31;;49730:13;;49727:39;;;49746:18;;:::i;51285:112::-;51317:1;51343;51333:35;;51348:18;;:::i;:::-;-1:-1:-1;51382:9:66;;51285:112::o", + "linkReferences": { + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "MerkleMountainRange": [ + { + "start": 3763, + "length": 20 + } + ] + } + } + }, + "methodIdentifiers": { + "AURA_CONSENSUS_ID()": "4e9fdbec", + "ISMP_CONSENSUS_ID()": "babb3118", + "MMR_ROOT_PAYLOAD_ID()": "af8b91d6", + "SLOT_DURATION()": "905c0511", + "verifyConsensus((uint256,uint256,(uint256,uint256,bytes32),(uint256,uint256,bytes32)),(((((bytes2,bytes)[],uint256,uint256),(bytes,uint256)[]),(uint256,uint256,bytes32,(uint256,uint256,bytes32),bytes32,uint256,uint256),bytes32[],(uint256,bytes32)[][]),((uint256,uint256,bytes),(uint256,bytes32)[][])))": "5e399aea", + "verifyConsensus(bytes,bytes)": "7d755598" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"paraId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AURA_CONSENSUS_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"ISMP_CONSENSUS_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MMR_ROOT_PAYLOAD_ID\",\"outputs\":[{\"internalType\":\"bytes2\",\"name\":\"\",\"type\":\"bytes2\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SLOT_DURATION\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"latestHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"beefyActivationBlock\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"currentAuthoritySet\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"nextAuthoritySet\",\"type\":\"tuple\"}],\"internalType\":\"struct BeefyConsensusState\",\"name\":\"trustedState\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"id\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"internalType\":\"struct Payload[]\",\"name\":\"payload\",\"type\":\"tuple[]\"},{\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorSetId\",\"type\":\"uint256\"}],\"internalType\":\"struct Commitment\",\"name\":\"commitment\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"authorityIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct Vote[]\",\"name\":\"votes\",\"type\":\"tuple[]\"}],\"internalType\":\"struct SignedCommitment\",\"name\":\"signedCommitment\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"version\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"parentNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"parentHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"nextAuthoritySet\",\"type\":\"tuple\"},{\"internalType\":\"bytes32\",\"name\":\"extra\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"kIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"leafIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct BeefyMmrLeaf\",\"name\":\"latestMmrLeaf\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"mmrProof\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"k_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"internalType\":\"struct Node[][]\",\"name\":\"proof\",\"type\":\"tuple[][]\"}],\"internalType\":\"struct RelayChainProof\",\"name\":\"relay\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"header\",\"type\":\"bytes\"}],\"internalType\":\"struct Parachain\",\"name\":\"parachain\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"k_index\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"node\",\"type\":\"bytes32\"}],\"internalType\":\"struct Node[][]\",\"name\":\"proof\",\"type\":\"tuple[][]\"}],\"internalType\":\"struct ParachainProof\",\"name\":\"parachain\",\"type\":\"tuple\"}],\"internalType\":\"struct BeefyConsensusProof\",\"name\":\"proof\",\"type\":\"tuple\"}],\"name\":\"verifyConsensus\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"latestHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"beefyActivationBlock\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"currentAuthoritySet\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"len\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"internalType\":\"struct AuthoritySetCommitment\",\"name\":\"nextAuthoritySet\",\"type\":\"tuple\"}],\"internalType\":\"struct BeefyConsensusState\",\"name\":\"\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"overlayRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct StateCommitment\",\"name\":\"commitment\",\"type\":\"tuple\"}],\"internalType\":\"struct IntermediateState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedState\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"encodedProof\",\"type\":\"bytes\"}],\"name\":\"verifyConsensus\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"overlayRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"stateRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct StateCommitment\",\"name\":\"commitment\",\"type\":\"tuple\"}],\"internalType\":\"struct IntermediateState\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"AURA_CONSENSUS_ID()\":{\"notice\":\"ConsensusID for aura\"},\"ISMP_CONSENSUS_ID()\":{\"notice\":\"ChainId for ethereum\"},\"MMR_ROOT_PAYLOAD_ID()\":{\"notice\":\"The PayloadId for the mmr root.\"},\"SLOT_DURATION()\":{\"notice\":\"Slot duration in milliseconds\"},\"verifyConsensus((uint256,uint256,(uint256,uint256,bytes32),(uint256,uint256,bytes32)),(((((bytes2,bytes)[],uint256,uint256),(bytes,uint256)[]),(uint256,uint256,bytes32,(uint256,uint256,bytes32),bytes32,uint256,uint256),bytes32[],(uint256,bytes32)[][]),((uint256,uint256,bytes),(uint256,bytes32)[][])))\":{\"notice\":\"Verify the consensus proof and return the new trusted consensus state and any intermediate states finalized by this consensus proof.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/beefy/BeefyV1.sol\":\"BeefyV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":ismp-solidity/=lib/ismp-solidity/\",\":ismp/=lib/ismp-solidity/src/\",\":multichain-token/=lib/multichain-native-tokens/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solidity-merkle-trees/=lib/solidity-merkle-trees/src/\"]},\"sources\":{\"lib/ismp-solidity/src/interfaces/IConsensusClient.sol\":{\"keccak256\":\"0x2be700e8c2c819144057e55622f3dac0a50763332aae22fba3fe90a0571028da\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e5b3e8d9a1e94252bcad307fb0ecb5e25401bcd01de9f5e5bab5fe2e53e167d8\",\"dweb:/ipfs/QmQf5Famyv2uBfmrKH2eGo8LvTBsaqjh3o8Fxry7EP9Xwb\"]},\"lib/ismp-solidity/src/interfaces/StateMachine.sol\":{\"keccak256\":\"0xe999a117a275624d4ca4c6bcdad53e0d365d5f1a556e46bf39cd695f5034e6ca\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0dc87653aa1ea514aaf3924d37139f72e3abdcd8876b3ad97396e4e11b5eb961\",\"dweb:/ipfs/QmYY1LyMVKAjvVXmcyotz9QVYycHkmUyduRRXGRT8Unqgo\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"lib/solidity-merkle-trees/src/MerkleMountainRange.sol\":{\"keccak256\":\"0x867f348fc7fce6f1e5cc5d41968389f7a832d99acddf9a544297e6ab27b9d823\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://27a91f509bc1d4b171d11722f30b35f5a8c456d42f07692865418a7fdb50a69a\",\"dweb:/ipfs/QmTKLoX2CV1Fo6nJo4f4ycdiUaw1y4FzpdqXHKkoVdG4BP\"]},\"lib/solidity-merkle-trees/src/MerkleMultiProof.sol\":{\"keccak256\":\"0x71a97fc3f97c50ac429f1109176f5eaffc34b4d1f291bb58da61baa8cdc348e0\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://f964717f4577e7081a23f6301058c461854151d156aae33beaa39588aba8ef8e\",\"dweb:/ipfs/QmbsadFursZrYUK6a3m55N5P5mZ2hWAtDpFsMZqoU2EV5L\"]},\"lib/solidity-merkle-trees/src/MerklePatricia.sol\":{\"keccak256\":\"0x452857f8e6c5b5878402bba1805bf4c3aef01c6c8f949dd72d20e07df8952bfc\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://c1007fe97775e37c9b6084e0ac98b249e7746ca531a04265291b0c57002f67b4\",\"dweb:/ipfs/QmYiqp6MHoGWgZAHvKjKBphczJY3t4zDuV9M4V1UzuC8ML\"]},\"lib/solidity-merkle-trees/src/trie/Bytes.sol\":{\"keccak256\":\"0x03ffca5abeb3f2665997059af505a8225f881c3d375dddfdef77e6d3aac67db8\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://d3a4e7d650143dbb64a61e492260e50053de9b89536d05c8007c43b25602f610\",\"dweb:/ipfs/QmbdyvPcHgcZsL4Sk2dS7s86qARePDyhcRPj5xtBko6e3t\"]},\"lib/solidity-merkle-trees/src/trie/Memory.sol\":{\"keccak256\":\"0x6d309ea24fca1313f1ac6ed57e31a94c44276006e233c46c7cf35e2ddcb88856\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://d2283a501d235201e1a18bb046ad713ce49dcaf287ae09d10025c786ab326648\",\"dweb:/ipfs/QmPNvWGoCTu8MwMco6qjfW4RcwrJJKJhxQtfCEbeyB9rx2\"]},\"lib/solidity-merkle-trees/src/trie/NibbleSlice.sol\":{\"keccak256\":\"0x284ad5142dfe57d2a67de0c3787469367821926488d04e532adc71108c48a07b\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://c1bf96fdff2fc0db8500261bc89f480cd09b38355750203f15f95f1bd3000392\",\"dweb:/ipfs/QmUd9iTH7U5pyezYqJVpET2es3uhjQmeGToEWywHUjXuNM\"]},\"lib/solidity-merkle-trees/src/trie/Node.sol\":{\"keccak256\":\"0x5e1b5dd46013b706ac86627c8a21a52a43ef151060479208abe0b6802e8c19b5\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://9b43ab483ff79c2fa9165b678b86a838bbf6fa60092cfe8e8d55023af0488c3d\",\"dweb:/ipfs/QmT8Sy3HoAc9xY6C6gPK3s5SsJJgYztGGUpin7g54GeRcB\"]},\"lib/solidity-merkle-trees/src/trie/Option.sol\":{\"keccak256\":\"0xd5b67f9fd3218d507923147eacc9d209f55ad211e9c7258a07d7bc2c4db386b0\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://6c134fcc01f84820fdea93e747b3f2a5ee47bac6eda2c43504e87201229cbc4f\",\"dweb:/ipfs/QmX1fQ32tyaR9EReyUbCfcSKGHzoEN88GPbwdwNAJQyVfL\"]},\"lib/solidity-merkle-trees/src/trie/TrieDB.sol\":{\"keccak256\":\"0xcf56409c430ebf1053edb199120c2961f0380b9fe93a36ccb5369e004dcafd64\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://5bdad30e72f8f29ba030db27881a08d63486544fb50abc99fa5a08902d7ad04a\",\"dweb:/ipfs/QmQAoC1G6SXdGzVuLUt6pDbnaWJyGcUzWwpVbrwN4eCmdn\"]},\"lib/solidity-merkle-trees/src/trie/ethereum/EthereumTrieDB.sol\":{\"keccak256\":\"0xc64596f6d1c23f153efe19c62f0f2631ba92e6ac0f67ca57d93c2c75af98b6cf\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://a95680e75f6ef869d81708f05e67bf6a34f6c4c0d91e189b57a314bdc1e61c03\",\"dweb:/ipfs/QmSuKZdDbjTGcUW6kVJ1Ghzb7zh3RdpdJpde5izk7fmZek\"]},\"lib/solidity-merkle-trees/src/trie/ethereum/RLPReader.sol\":{\"keccak256\":\"0xb8f4d1c02840086b3a9e81df93eebb120a40168681c119bee3f4c9849404538c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://96e41baf205786170f910596dd8aea91615c0a98bfb9771967f64f34b99bd8ca\",\"dweb:/ipfs/QmVqAFeCLzNhEM8yJoed2reQoGK1EiE72BVPyvgESEhgsm\"]},\"lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol\":{\"keccak256\":\"0x6fcfb3f4bb5ae07ab71aa9cf84bb19a8dda129a6f7ac8a35ae915858c4ef1a0f\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://2bbfb7e76afac849b15ba3285e73e463f85f2533c5ad9c1d40b35271359d2f7c\",\"dweb:/ipfs/QmWRgZRa4C32VMZnFLzUVTpqVggYD3wfPoiA5PtgHTiEve\"]},\"lib/solidity-merkle-trees/src/trie/substrate/SubstrateTrieDB.sol\":{\"keccak256\":\"0x01545b72eb381d0ec25de0155126efa429301f39f8854a41ed36811fb5d94069\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://ab7079de5a4f4af78fd0be8d90215787431711b0b7d2d9f6aefa7ed4db3a5f76\",\"dweb:/ipfs/QmNaSdtRNs3A5aUmT7ZbWmDU5sRE6iKsMPVc3EzHZFYhDB\"]},\"src/beefy/BeefyV1.sol\":{\"keccak256\":\"0xc0eb8db6877f82975c8cebac772d378e15ba27589d1052e2e484a3d48ba861ad\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e17d34d33e3afab86b4e9199b70477e9bc65f06e96302046f0cac25beaafcaf3\",\"dweb:/ipfs/QmXEK783wT4ahbQmmJcG9FxwTZe8bVjFygxQEcKTKCiSo1\"]},\"src/beefy/Codec.sol\":{\"keccak256\":\"0xe855c673e246e31a79993f989ee4eee8661393784ab19abc60fcc0e33844fe91\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://4d64a09ef5ae022ebf5f8dc29ca4d155c6b268a000904e20ad127469209b654e\",\"dweb:/ipfs/QmWtZzP8du44tpqRPAZY7vBYdqze51CgmeHTHJZeybcPyM\"]},\"src/beefy/Header.sol\":{\"keccak256\":\"0x262a776004145ef98344ba3951c7d37b8a125ba7c1de176a43f3aaa3d1a8c904\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://93de6b9f9e56997dda7ae5f0641a0e663d86cb98d3260b1589bdbed3196fb252\",\"dweb:/ipfs/QmQ4ePYXp166pcHVziK8JEJ7FznLMDrR3YkmTobicc8DEA\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.17+commit.8df45f5f" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "paraId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "AURA_CONSENSUS_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "ISMP_CONSENSUS_ID", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "MMR_ROOT_PAYLOAD_ID", + "outputs": [ + { + "internalType": "bytes2", + "name": "", + "type": "bytes2" + } + ] + }, + { + "inputs": [], + "stateMutability": "view", + "type": "function", + "name": "SLOT_DURATION", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ] + }, + { + "inputs": [ + { + "internalType": "struct BeefyConsensusState", + "name": "trustedState", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "latestHeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beefyActivationBlock", + "type": "uint256" + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "currentAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + } + ] + }, + { + "internalType": "struct BeefyConsensusProof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "struct RelayChainProof", + "name": "relay", + "type": "tuple", + "components": [ + { + "internalType": "struct SignedCommitment", + "name": "signedCommitment", + "type": "tuple", + "components": [ + { + "internalType": "struct Commitment", + "name": "commitment", + "type": "tuple", + "components": [ + { + "internalType": "struct Payload[]", + "name": "payload", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes2", + "name": "id", + "type": "bytes2" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ] + }, + { + "internalType": "uint256", + "name": "blockNumber", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validatorSetId", + "type": "uint256" + } + ] + }, + { + "internalType": "struct Vote[]", + "name": "votes", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "authorityIndex", + "type": "uint256" + } + ] + } + ] + }, + { + "internalType": "struct BeefyMmrLeaf", + "name": "latestMmrLeaf", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "version", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "parentNumber", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "parentHash", + "type": "bytes32" + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + }, + { + "internalType": "bytes32", + "name": "extra", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "leafIndex", + "type": "uint256" + } + ] + }, + { + "internalType": "bytes32[]", + "name": "mmrProof", + "type": "bytes32[]" + }, + { + "internalType": "struct Node[][]", + "name": "proof", + "type": "tuple[][]", + "components": [ + { + "internalType": "uint256", + "name": "k_index", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ] + } + ] + }, + { + "internalType": "struct ParachainProof", + "name": "parachain", + "type": "tuple", + "components": [ + { + "internalType": "struct Parachain", + "name": "parachain", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "header", + "type": "bytes" + } + ] + }, + { + "internalType": "struct Node[][]", + "name": "proof", + "type": "tuple[][]", + "components": [ + { + "internalType": "uint256", + "name": "k_index", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "node", + "type": "bytes32" + } + ] + } + ] + } + ] + } + ], + "stateMutability": "view", + "type": "function", + "name": "verifyConsensus", + "outputs": [ + { + "internalType": "struct BeefyConsensusState", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "latestHeight", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "beefyActivationBlock", + "type": "uint256" + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "currentAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + }, + { + "internalType": "struct AuthoritySetCommitment", + "name": "nextAuthoritySet", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "len", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + } + ] + } + ] + }, + { + "internalType": "struct IntermediateState", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "internalType": "struct StateCommitment", + "name": "commitment", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "overlayRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + } + ] + } + ] + } + ] + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "encodedState", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "encodedProof", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "verifyConsensus", + "outputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "struct IntermediateState", + "name": "", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + }, + { + "internalType": "struct StateCommitment", + "name": "commitment", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "overlayRoot", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "stateRoot", + "type": "bytes32" + } + ] + } + ] + } + ] + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "AURA_CONSENSUS_ID()": { + "notice": "ConsensusID for aura" + }, + "ISMP_CONSENSUS_ID()": { + "notice": "ChainId for ethereum" + }, + "MMR_ROOT_PAYLOAD_ID()": { + "notice": "The PayloadId for the mmr root." + }, + "SLOT_DURATION()": { + "notice": "Slot duration in milliseconds" + }, + "verifyConsensus((uint256,uint256,(uint256,uint256,bytes32),(uint256,uint256,bytes32)),(((((bytes2,bytes)[],uint256,uint256),(bytes,uint256)[]),(uint256,uint256,bytes32,(uint256,uint256,bytes32),bytes32,uint256,uint256),bytes32[],(uint256,bytes32)[][]),((uint256,uint256,bytes),(uint256,bytes32)[][])))": { + "notice": "Verify the consensus proof and return the new trusted consensus state and any intermediate states finalized by this consensus proof." + } + }, + "version": 1 + } + }, + "settings": { + "remappings": [ + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "ismp-solidity/=lib/ismp-solidity/", + "ismp/=lib/ismp-solidity/src/", + "multichain-token/=lib/multichain-native-tokens/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solidity-merkle-trees/=lib/solidity-merkle-trees/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/beefy/BeefyV1.sol": "BeefyV1" + }, + "libraries": {} + }, + "sources": { + "lib/ismp-solidity/src/interfaces/IConsensusClient.sol": { + "keccak256": "0x2be700e8c2c819144057e55622f3dac0a50763332aae22fba3fe90a0571028da", + "urls": [ + "bzz-raw://e5b3e8d9a1e94252bcad307fb0ecb5e25401bcd01de9f5e5bab5fe2e53e167d8", + "dweb:/ipfs/QmQf5Famyv2uBfmrKH2eGo8LvTBsaqjh3o8Fxry7EP9Xwb" + ], + "license": "UNLICENSED" + }, + "lib/ismp-solidity/src/interfaces/StateMachine.sol": { + "keccak256": "0xe999a117a275624d4ca4c6bcdad53e0d365d5f1a556e46bf39cd695f5034e6ca", + "urls": [ + "bzz-raw://0dc87653aa1ea514aaf3924d37139f72e3abdcd8876b3ad97396e4e11b5eb961", + "dweb:/ipfs/QmYY1LyMVKAjvVXmcyotz9QVYycHkmUyduRRXGRT8Unqgo" + ], + "license": "UNLICENSED" + }, + "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { + "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0", + "urls": [ + "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f", + "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol": { + "keccak256": "0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58", + "urls": [ + "bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2", + "dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { + "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3", + "urls": [ + "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c", + "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { + "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc", + "urls": [ + "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7", + "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6" + ], + "license": "MIT" + }, + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "keccak256": "0x867f348fc7fce6f1e5cc5d41968389f7a832d99acddf9a544297e6ab27b9d823", + "urls": [ + "bzz-raw://27a91f509bc1d4b171d11722f30b35f5a8c456d42f07692865418a7fdb50a69a", + "dweb:/ipfs/QmTKLoX2CV1Fo6nJo4f4ycdiUaw1y4FzpdqXHKkoVdG4BP" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/MerkleMultiProof.sol": { + "keccak256": "0x71a97fc3f97c50ac429f1109176f5eaffc34b4d1f291bb58da61baa8cdc348e0", + "urls": [ + "bzz-raw://f964717f4577e7081a23f6301058c461854151d156aae33beaa39588aba8ef8e", + "dweb:/ipfs/QmbsadFursZrYUK6a3m55N5P5mZ2hWAtDpFsMZqoU2EV5L" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/MerklePatricia.sol": { + "keccak256": "0x452857f8e6c5b5878402bba1805bf4c3aef01c6c8f949dd72d20e07df8952bfc", + "urls": [ + "bzz-raw://c1007fe97775e37c9b6084e0ac98b249e7746ca531a04265291b0c57002f67b4", + "dweb:/ipfs/QmYiqp6MHoGWgZAHvKjKBphczJY3t4zDuV9M4V1UzuC8ML" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Bytes.sol": { + "keccak256": "0x03ffca5abeb3f2665997059af505a8225f881c3d375dddfdef77e6d3aac67db8", + "urls": [ + "bzz-raw://d3a4e7d650143dbb64a61e492260e50053de9b89536d05c8007c43b25602f610", + "dweb:/ipfs/QmbdyvPcHgcZsL4Sk2dS7s86qARePDyhcRPj5xtBko6e3t" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Memory.sol": { + "keccak256": "0x6d309ea24fca1313f1ac6ed57e31a94c44276006e233c46c7cf35e2ddcb88856", + "urls": [ + "bzz-raw://d2283a501d235201e1a18bb046ad713ce49dcaf287ae09d10025c786ab326648", + "dweb:/ipfs/QmPNvWGoCTu8MwMco6qjfW4RcwrJJKJhxQtfCEbeyB9rx2" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/NibbleSlice.sol": { + "keccak256": "0x284ad5142dfe57d2a67de0c3787469367821926488d04e532adc71108c48a07b", + "urls": [ + "bzz-raw://c1bf96fdff2fc0db8500261bc89f480cd09b38355750203f15f95f1bd3000392", + "dweb:/ipfs/QmUd9iTH7U5pyezYqJVpET2es3uhjQmeGToEWywHUjXuNM" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Node.sol": { + "keccak256": "0x5e1b5dd46013b706ac86627c8a21a52a43ef151060479208abe0b6802e8c19b5", + "urls": [ + "bzz-raw://9b43ab483ff79c2fa9165b678b86a838bbf6fa60092cfe8e8d55023af0488c3d", + "dweb:/ipfs/QmT8Sy3HoAc9xY6C6gPK3s5SsJJgYztGGUpin7g54GeRcB" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Option.sol": { + "keccak256": "0xd5b67f9fd3218d507923147eacc9d209f55ad211e9c7258a07d7bc2c4db386b0", + "urls": [ + "bzz-raw://6c134fcc01f84820fdea93e747b3f2a5ee47bac6eda2c43504e87201229cbc4f", + "dweb:/ipfs/QmX1fQ32tyaR9EReyUbCfcSKGHzoEN88GPbwdwNAJQyVfL" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/TrieDB.sol": { + "keccak256": "0xcf56409c430ebf1053edb199120c2961f0380b9fe93a36ccb5369e004dcafd64", + "urls": [ + "bzz-raw://5bdad30e72f8f29ba030db27881a08d63486544fb50abc99fa5a08902d7ad04a", + "dweb:/ipfs/QmQAoC1G6SXdGzVuLUt6pDbnaWJyGcUzWwpVbrwN4eCmdn" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/ethereum/EthereumTrieDB.sol": { + "keccak256": "0xc64596f6d1c23f153efe19c62f0f2631ba92e6ac0f67ca57d93c2c75af98b6cf", + "urls": [ + "bzz-raw://a95680e75f6ef869d81708f05e67bf6a34f6c4c0d91e189b57a314bdc1e61c03", + "dweb:/ipfs/QmSuKZdDbjTGcUW6kVJ1Ghzb7zh3RdpdJpde5izk7fmZek" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/ethereum/RLPReader.sol": { + "keccak256": "0xb8f4d1c02840086b3a9e81df93eebb120a40168681c119bee3f4c9849404538c", + "urls": [ + "bzz-raw://96e41baf205786170f910596dd8aea91615c0a98bfb9771967f64f34b99bd8ca", + "dweb:/ipfs/QmVqAFeCLzNhEM8yJoed2reQoGK1EiE72BVPyvgESEhgsm" + ], + "license": "Apache-2.0" + }, + "lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol": { + "keccak256": "0x6fcfb3f4bb5ae07ab71aa9cf84bb19a8dda129a6f7ac8a35ae915858c4ef1a0f", + "urls": [ + "bzz-raw://2bbfb7e76afac849b15ba3285e73e463f85f2533c5ad9c1d40b35271359d2f7c", + "dweb:/ipfs/QmWRgZRa4C32VMZnFLzUVTpqVggYD3wfPoiA5PtgHTiEve" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/substrate/SubstrateTrieDB.sol": { + "keccak256": "0x01545b72eb381d0ec25de0155126efa429301f39f8854a41ed36811fb5d94069", + "urls": [ + "bzz-raw://ab7079de5a4f4af78fd0be8d90215787431711b0b7d2d9f6aefa7ed4db3a5f76", + "dweb:/ipfs/QmNaSdtRNs3A5aUmT7ZbWmDU5sRE6iKsMPVc3EzHZFYhDB" + ], + "license": "Apache2" + }, + "src/beefy/BeefyV1.sol": { + "keccak256": "0xc0eb8db6877f82975c8cebac772d378e15ba27589d1052e2e484a3d48ba861ad", + "urls": [ + "bzz-raw://e17d34d33e3afab86b4e9199b70477e9bc65f06e96302046f0cac25beaafcaf3", + "dweb:/ipfs/QmXEK783wT4ahbQmmJcG9FxwTZe8bVjFygxQEcKTKCiSo1" + ], + "license": "UNLICENSED" + }, + "src/beefy/Codec.sol": { + "keccak256": "0xe855c673e246e31a79993f989ee4eee8661393784ab19abc60fcc0e33844fe91", + "urls": [ + "bzz-raw://4d64a09ef5ae022ebf5f8dc29ca4d155c6b268a000904e20ad127469209b654e", + "dweb:/ipfs/QmWtZzP8du44tpqRPAZY7vBYdqze51CgmeHTHJZeybcPyM" + ], + "license": "UNLICENSED" + }, + "src/beefy/Header.sol": { + "keccak256": "0x262a776004145ef98344ba3951c7d37b8a125ba7c1de176a43f3aaa3d1a8c904", + "urls": [ + "bzz-raw://93de6b9f9e56997dda7ae5f0641a0e663d86cb98d3260b1589bdbed3196fb252", + "dweb:/ipfs/QmQ4ePYXp166pcHVziK8JEJ7FznLMDrR3YkmTobicc8DEA" + ], + "license": "UNLICENSED" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/beefy/BeefyV1.sol", + "id": 58245, + "exportedSymbols": { + "AuthoritySetCommitment": [ + 57392 + ], + "BeefyConsensusProof": [ + 57490 + ], + "BeefyConsensusState": [ + 57382 + ], + "BeefyMmrLeaf": [ + 57435 + ], + "BeefyV1": [ + 58244 + ], + "Branch": [ + 51859 + ], + "ByteSlice": [ + 50547 + ], + "Bytes": [ + 51191 + ], + "Codec": [ + 58968 + ], + "Commitment": [ + 57406 + ], + "ConsensusMessage": [ + 57494 + ], + "Digest": [ + 58997 + ], + "DigestItem": [ + 58975 + ], + "ECDSA": [ + 47004 + ], + "EthereumTrieDB": [ + 52585 + ], + "Extension": [ + 51850 + ], + "Header": [ + 59010 + ], + "IConsensusClient": [ + 45374 + ], + "IntermediateState": [ + 45360 + ], + "Iterator": [ + 47992 + ], + "Leaf": [ + 51889 + ], + "Math": [ + 47870 + ], + "Memory": [ + 51352 + ], + "MerkleMountainRange": [ + 49035 + ], + "MerkleMultiProof": [ + 49805 + ], + "MerklePatricia": [ + 50538 + ], + "MmrLeaf": [ + 47986 + ], + "NibbleSlice": [ + 51359 + ], + "NibbleSliceOps": [ + 51808 + ], + "NibbledBranch": [ + 51871 + ], + "Node": [ + 49043 + ], + "NodeHandle": [ + 51843 + ], + "NodeHandleOption": [ + 51882 + ], + "NodeKind": [ + 51834 + ], + "Option": [ + 51926 + ], + "Parachain": [ + 57474 + ], + "ParachainProof": [ + 57483 + ], + "PartialBeefyMmrLeaf": [ + 57445 + ], + "Payload": [ + 57397 + ], + "RLPReader": [ + 53393 + ], + "RelayChainProof": [ + 57464 + ], + "ScaleCodec": [ + 54317 + ], + "SignedCommitment": [ + 57419 + ], + "SignedMath": [ + 47975 + ], + "StateCommitment": [ + 45347 + ], + "StateMachine": [ + 46188 + ], + "StateMachineHeight": [ + 45352 + ], + "StorageValue": [ + 49818 + ], + "Strings": [ + 46638 + ], + "SubstrateTrieDB": [ + 55105 + ], + "TrieDB": [ + 52102 + ], + "TrieNode": [ + 51894 + ], + "ValueOption": [ + 51876 + ], + "Vote": [ + 57411 + ] + }, + "nodeType": "SourceUnit", + "src": "39:10776:49", + "nodes": [ + { + "id": 57358, + "nodeType": "PragmaDirective", + "src": "39:23:49", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".17" + ] + }, + { + "id": 57359, + "nodeType": "ImportDirective", + "src": "64:21:49", + "nodes": [], + "absolutePath": "src/beefy/Codec.sol", + "file": "./Codec.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 58969, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57360, + "nodeType": "ImportDirective", + "src": "86:42:49", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/StateMachine.sol", + "file": "ismp/interfaces/StateMachine.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 46189, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57361, + "nodeType": "ImportDirective", + "src": "129:46:49", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/IConsensusClient.sol", + "file": "ismp/interfaces/IConsensusClient.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 45375, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57362, + "nodeType": "ImportDirective", + "src": "177:52:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerkleMultiProof.sol", + "file": "solidity-merkle-trees/MerkleMultiProof.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 49806, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57363, + "nodeType": "ImportDirective", + "src": "230:55:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerkleMountainRange.sol", + "file": "solidity-merkle-trees/MerkleMountainRange.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 49036, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57364, + "nodeType": "ImportDirective", + "src": "286:50:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerklePatricia.sol", + "file": "solidity-merkle-trees/MerklePatricia.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 50539, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57365, + "nodeType": "ImportDirective", + "src": "337:61:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol", + "file": "solidity-merkle-trees/trie/substrate/ScaleCodec.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 54318, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57366, + "nodeType": "ImportDirective", + "src": "399:46:49", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/trie/Bytes.sol", + "file": "solidity-merkle-trees/trie/Bytes.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 51192, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57367, + "nodeType": "ImportDirective", + "src": "446:51:49", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol", + "file": "openzeppelin/utils/cryptography/ECDSA.sol", + "nameLocation": "-1:-1:-1", + "scope": 58245, + "sourceUnit": 47005, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57382, + "nodeType": "StructDefinition", + "src": "499:467:49", + "nodes": [], + "canonicalName": "BeefyConsensusState", + "members": [ + { + "constant": false, + "id": 57370, + "mutability": "mutable", + "name": "latestHeight", + "nameLocation": "590:12:49", + "nodeType": "VariableDeclaration", + "scope": 57382, + "src": "582:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "582:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57373, + "mutability": "mutable", + "name": "beefyActivationBlock", + "nameLocation": "769:20:49", + "nodeType": "VariableDeclaration", + "scope": 57382, + "src": "761:28:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "761:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57377, + "mutability": "mutable", + "name": "currentAuthoritySet", + "nameLocation": "860:19:49", + "nodeType": "VariableDeclaration", + "scope": 57382, + "src": "837:42:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + }, + "typeName": { + "id": 57376, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57375, + "name": "AuthoritySetCommitment", + "nameLocations": [ + "837:22:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57392, + "src": "837:22:49" + }, + "referencedDeclaration": 57392, + "src": "837:22:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57381, + "mutability": "mutable", + "name": "nextAuthoritySet", + "nameLocation": "947:16:49", + "nodeType": "VariableDeclaration", + "scope": 57382, + "src": "924:39:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + }, + "typeName": { + "id": 57380, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57379, + "name": "AuthoritySetCommitment", + "nameLocations": [ + "924:22:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57392, + "src": "924:22:49" + }, + "referencedDeclaration": 57392, + "src": "924:22:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + } + }, + "visibility": "internal" + } + ], + "name": "BeefyConsensusState", + "nameLocation": "506:19:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57392, + "nodeType": "StructDefinition", + "src": "968:204:49", + "nodes": [], + "canonicalName": "AuthoritySetCommitment", + "members": [ + { + "constant": false, + "id": 57385, + "mutability": "mutable", + "name": "id", + "nameLocation": "1035:2:49", + "nodeType": "VariableDeclaration", + "scope": 57392, + "src": "1027:10:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1027:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57388, + "mutability": "mutable", + "name": "len", + "nameLocation": "1092:3:49", + "nodeType": "VariableDeclaration", + "scope": 57392, + "src": "1084:11:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1084:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57391, + "mutability": "mutable", + "name": "root", + "nameLocation": "1165:4:49", + "nodeType": "VariableDeclaration", + "scope": 57392, + "src": "1157:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57390, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1157:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "AuthoritySetCommitment", + "nameLocation": "975:22:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57397, + "nodeType": "StructDefinition", + "src": "1174:49:49", + "nodes": [], + "canonicalName": "Payload", + "members": [ + { + "constant": false, + "id": 57394, + "mutability": "mutable", + "name": "id", + "nameLocation": "1202:2:49", + "nodeType": "VariableDeclaration", + "scope": 57397, + "src": "1195:9:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "typeName": { + "id": 57393, + "name": "bytes2", + "nodeType": "ElementaryTypeName", + "src": "1195:6:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57396, + "mutability": "mutable", + "name": "data", + "nameLocation": "1216:4:49", + "nodeType": "VariableDeclaration", + "scope": 57397, + "src": "1210:10:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57395, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1210:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "Payload", + "nameLocation": "1181:7:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57406, + "nodeType": "StructDefinition", + "src": "1225:97:49", + "nodes": [], + "canonicalName": "Commitment", + "members": [ + { + "constant": false, + "id": 57401, + "mutability": "mutable", + "name": "payload", + "nameLocation": "1259:7:49", + "nodeType": "VariableDeclaration", + "scope": 57406, + "src": "1249:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_storage_$dyn_storage_ptr", + "typeString": "struct Payload[]" + }, + "typeName": { + "baseType": { + "id": 57399, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57398, + "name": "Payload", + "nameLocations": [ + "1249:7:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57397, + "src": "1249:7:49" + }, + "referencedDeclaration": 57397, + "src": "1249:7:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Payload_$57397_storage_ptr", + "typeString": "struct Payload" + } + }, + "id": 57400, + "nodeType": "ArrayTypeName", + "src": "1249:9:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_storage_$dyn_storage_ptr", + "typeString": "struct Payload[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57403, + "mutability": "mutable", + "name": "blockNumber", + "nameLocation": "1280:11:49", + "nodeType": "VariableDeclaration", + "scope": 57406, + "src": "1272:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57402, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1272:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57405, + "mutability": "mutable", + "name": "validatorSetId", + "nameLocation": "1305:14:49", + "nodeType": "VariableDeclaration", + "scope": 57406, + "src": "1297:22:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57404, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1297:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Commitment", + "nameLocation": "1232:10:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57411, + "nodeType": "StructDefinition", + "src": "1324:64:49", + "nodes": [], + "canonicalName": "Vote", + "members": [ + { + "constant": false, + "id": 57408, + "mutability": "mutable", + "name": "signature", + "nameLocation": "1348:9:49", + "nodeType": "VariableDeclaration", + "scope": 57411, + "src": "1342:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57407, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1342:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57410, + "mutability": "mutable", + "name": "authorityIndex", + "nameLocation": "1371:14:49", + "nodeType": "VariableDeclaration", + "scope": 57411, + "src": "1363:22:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57409, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1363:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Vote", + "nameLocation": "1331:4:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57419, + "nodeType": "StructDefinition", + "src": "1390:72:49", + "nodes": [], + "canonicalName": "SignedCommitment", + "members": [ + { + "constant": false, + "id": 57414, + "mutability": "mutable", + "name": "commitment", + "nameLocation": "1431:10:49", + "nodeType": "VariableDeclaration", + "scope": 57419, + "src": "1420:21:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_storage_ptr", + "typeString": "struct Commitment" + }, + "typeName": { + "id": 57413, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57412, + "name": "Commitment", + "nameLocations": [ + "1420:10:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57406, + "src": "1420:10:49" + }, + "referencedDeclaration": 57406, + "src": "1420:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_storage_ptr", + "typeString": "struct Commitment" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57418, + "mutability": "mutable", + "name": "votes", + "nameLocation": "1454:5:49", + "nodeType": "VariableDeclaration", + "scope": 57419, + "src": "1447:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Vote_$57411_storage_$dyn_storage_ptr", + "typeString": "struct Vote[]" + }, + "typeName": { + "baseType": { + "id": 57416, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57415, + "name": "Vote", + "nameLocations": [ + "1447:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57411, + "src": "1447:4:49" + }, + "referencedDeclaration": 57411, + "src": "1447:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_storage_ptr", + "typeString": "struct Vote" + } + }, + "id": 57417, + "nodeType": "ArrayTypeName", + "src": "1447:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Vote_$57411_storage_$dyn_storage_ptr", + "typeString": "struct Vote[]" + } + }, + "visibility": "internal" + } + ], + "name": "SignedCommitment", + "nameLocation": "1397:16:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57435, + "nodeType": "StructDefinition", + "src": "1464:201:49", + "nodes": [], + "canonicalName": "BeefyMmrLeaf", + "members": [ + { + "constant": false, + "id": 57421, + "mutability": "mutable", + "name": "version", + "nameLocation": "1498:7:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1490:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1490:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57423, + "mutability": "mutable", + "name": "parentNumber", + "nameLocation": "1519:12:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1511:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57422, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1511:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57425, + "mutability": "mutable", + "name": "parentHash", + "nameLocation": "1545:10:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1537:18:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57424, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1537:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57428, + "mutability": "mutable", + "name": "nextAuthoritySet", + "nameLocation": "1584:16:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1561:39:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + }, + "typeName": { + "id": 57427, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57426, + "name": "AuthoritySetCommitment", + "nameLocations": [ + "1561:22:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57392, + "src": "1561:22:49" + }, + "referencedDeclaration": 57392, + "src": "1561:22:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57430, + "mutability": "mutable", + "name": "extra", + "nameLocation": "1614:5:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1606:13:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57429, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1606:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57432, + "mutability": "mutable", + "name": "kIndex", + "nameLocation": "1633:6:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1625:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1625:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57434, + "mutability": "mutable", + "name": "leafIndex", + "nameLocation": "1653:9:49", + "nodeType": "VariableDeclaration", + "scope": 57435, + "src": "1645:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57433, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1645:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "BeefyMmrLeaf", + "nameLocation": "1471:12:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57445, + "nodeType": "StructDefinition", + "src": "1667:146:49", + "nodes": [], + "canonicalName": "PartialBeefyMmrLeaf", + "members": [ + { + "constant": false, + "id": 57437, + "mutability": "mutable", + "name": "version", + "nameLocation": "1708:7:49", + "nodeType": "VariableDeclaration", + "scope": 57445, + "src": "1700:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1700:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57439, + "mutability": "mutable", + "name": "parentNumber", + "nameLocation": "1729:12:49", + "nodeType": "VariableDeclaration", + "scope": 57445, + "src": "1721:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1721:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57441, + "mutability": "mutable", + "name": "parentHash", + "nameLocation": "1755:10:49", + "nodeType": "VariableDeclaration", + "scope": 57445, + "src": "1747:18:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57440, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1747:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57444, + "mutability": "mutable", + "name": "nextAuthoritySet", + "nameLocation": "1794:16:49", + "nodeType": "VariableDeclaration", + "scope": 57445, + "src": "1771:39:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + }, + "typeName": { + "id": 57443, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57442, + "name": "AuthoritySetCommitment", + "nameLocations": [ + "1771:22:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57392, + "src": "1771:22:49" + }, + "referencedDeclaration": 57392, + "src": "1771:22:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_storage_ptr", + "typeString": "struct AuthoritySetCommitment" + } + }, + "visibility": "internal" + } + ], + "name": "PartialBeefyMmrLeaf", + "nameLocation": "1674:19:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57464, + "nodeType": "StructDefinition", + "src": "1815:292:49", + "nodes": [], + "canonicalName": "RelayChainProof", + "members": [ + { + "constant": false, + "id": 57449, + "mutability": "mutable", + "name": "signedCommitment", + "nameLocation": "1887:16:49", + "nodeType": "VariableDeclaration", + "scope": 57464, + "src": "1870:33:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_storage_ptr", + "typeString": "struct SignedCommitment" + }, + "typeName": { + "id": 57448, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57447, + "name": "SignedCommitment", + "nameLocations": [ + "1870:16:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57419, + "src": "1870:16:49" + }, + "referencedDeclaration": 57419, + "src": "1870:16:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_storage_ptr", + "typeString": "struct SignedCommitment" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57453, + "mutability": "mutable", + "name": "latestMmrLeaf", + "nameLocation": "1955:13:49", + "nodeType": "VariableDeclaration", + "scope": 57464, + "src": "1942:26:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_storage_ptr", + "typeString": "struct BeefyMmrLeaf" + }, + "typeName": { + "id": 57452, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57451, + "name": "BeefyMmrLeaf", + "nameLocations": [ + "1942:12:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57435, + "src": "1942:12:49" + }, + "referencedDeclaration": 57435, + "src": "1942:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_storage_ptr", + "typeString": "struct BeefyMmrLeaf" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57457, + "mutability": "mutable", + "name": "mmrProof", + "nameLocation": "2022:8:49", + "nodeType": "VariableDeclaration", + "scope": 57464, + "src": "2012:18:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 57455, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2012:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 57456, + "nodeType": "ArrayTypeName", + "src": "2012:9:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57463, + "mutability": "mutable", + "name": "proof", + "nameLocation": "2099:5:49", + "nodeType": "VariableDeclaration", + "scope": 57464, + "src": "2090:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Node[][]" + }, + "typeName": { + "baseType": { + "baseType": { + "id": 57460, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57459, + "name": "Node", + "nameLocations": [ + "2090:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "2090:4:49" + }, + "referencedDeclaration": 49043, + "src": "2090:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 57461, + "nodeType": "ArrayTypeName", + "src": "2090:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + }, + "id": 57462, + "nodeType": "ArrayTypeName", + "src": "2090:8:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Node[][]" + } + }, + "visibility": "internal" + } + ], + "name": "RelayChainProof", + "nameLocation": "1822:15:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57474, + "nodeType": "StructDefinition", + "src": "2109:159:49", + "nodes": [], + "canonicalName": "Parachain", + "members": [ + { + "constant": false, + "id": 57467, + "mutability": "mutable", + "name": "index", + "nameLocation": "2176:5:49", + "nodeType": "VariableDeclaration", + "scope": 57474, + "src": "2168:13:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57466, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2168:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57470, + "mutability": "mutable", + "name": "id", + "nameLocation": "2216:2:49", + "nodeType": "VariableDeclaration", + "scope": 57474, + "src": "2208:10:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2208:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57473, + "mutability": "mutable", + "name": "header", + "nameLocation": "2259:6:49", + "nodeType": "VariableDeclaration", + "scope": 57474, + "src": "2253:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57472, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2253:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "Parachain", + "nameLocation": "2116:9:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57483, + "nodeType": "StructDefinition", + "src": "2270:70:49", + "nodes": [], + "canonicalName": "ParachainProof", + "members": [ + { + "constant": false, + "id": 57477, + "mutability": "mutable", + "name": "parachain", + "nameLocation": "2308:9:49", + "nodeType": "VariableDeclaration", + "scope": 57483, + "src": "2298:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_storage_ptr", + "typeString": "struct Parachain" + }, + "typeName": { + "id": 57476, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57475, + "name": "Parachain", + "nameLocations": [ + "2298:9:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57474, + "src": "2298:9:49" + }, + "referencedDeclaration": 57474, + "src": "2298:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_storage_ptr", + "typeString": "struct Parachain" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57482, + "mutability": "mutable", + "name": "proof", + "nameLocation": "2332:5:49", + "nodeType": "VariableDeclaration", + "scope": 57483, + "src": "2323:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Node[][]" + }, + "typeName": { + "baseType": { + "baseType": { + "id": 57479, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57478, + "name": "Node", + "nameLocations": [ + "2323:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "2323:4:49" + }, + "referencedDeclaration": 49043, + "src": "2323:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 57480, + "nodeType": "ArrayTypeName", + "src": "2323:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + }, + "id": 57481, + "nodeType": "ArrayTypeName", + "src": "2323:8:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_storage_$dyn_storage_$dyn_storage_ptr", + "typeString": "struct Node[][]" + } + }, + "visibility": "internal" + } + ], + "name": "ParachainProof", + "nameLocation": "2277:14:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57490, + "nodeType": "StructDefinition", + "src": "2342:87:49", + "nodes": [], + "canonicalName": "BeefyConsensusProof", + "members": [ + { + "constant": false, + "id": 57486, + "mutability": "mutable", + "name": "relay", + "nameLocation": "2391:5:49", + "nodeType": "VariableDeclaration", + "scope": 57490, + "src": "2375:21:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + }, + "typeName": { + "id": 57485, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57484, + "name": "RelayChainProof", + "nameLocations": [ + "2375:15:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57464, + "src": "2375:15:49" + }, + "referencedDeclaration": 57464, + "src": "2375:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57489, + "mutability": "mutable", + "name": "parachain", + "nameLocation": "2417:9:49", + "nodeType": "VariableDeclaration", + "scope": 57490, + "src": "2402:24:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_storage_ptr", + "typeString": "struct ParachainProof" + }, + "typeName": { + "id": 57488, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57487, + "name": "ParachainProof", + "nameLocations": [ + "2402:14:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57483, + "src": "2402:14:49" + }, + "referencedDeclaration": 57483, + "src": "2402:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_storage_ptr", + "typeString": "struct ParachainProof" + } + }, + "visibility": "internal" + } + ], + "name": "BeefyConsensusProof", + "nameLocation": "2349:19:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 57494, + "nodeType": "StructDefinition", + "src": "2431:58:49", + "nodes": [], + "canonicalName": "ConsensusMessage", + "members": [ + { + "constant": false, + "id": 57493, + "mutability": "mutable", + "name": "proof", + "nameLocation": "2481:5:49", + "nodeType": "VariableDeclaration", + "scope": 57494, + "src": "2461:25:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_storage_ptr", + "typeString": "struct BeefyConsensusProof" + }, + "typeName": { + "id": 57492, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57491, + "name": "BeefyConsensusProof", + "nameLocations": [ + "2461:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57490, + "src": "2461:19:49" + }, + "referencedDeclaration": 57490, + "src": "2461:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_storage_ptr", + "typeString": "struct BeefyConsensusProof" + } + }, + "visibility": "internal" + } + ], + "name": "ConsensusMessage", + "nameLocation": "2438:16:49", + "scope": 58245, + "visibility": "public" + }, + { + "id": 58244, + "nodeType": "ContractDefinition", + "src": "2491:8323:49", + "nodes": [ + { + "id": 57500, + "nodeType": "VariableDeclaration", + "src": "2572:45:49", + "nodes": [], + "constant": true, + "documentation": { + "id": 57497, + "nodeType": "StructuredDocumentation", + "src": "2534:33:49", + "text": "Slot duration in milliseconds" + }, + "functionSelector": "905c0511", + "mutability": "constant", + "name": "SLOT_DURATION", + "nameLocation": "2596:13:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2572:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "3132303030", + "id": 57499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2612:5:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_12000_by_1", + "typeString": "int_const 12000" + }, + "value": "12000" + }, + "visibility": "public" + }, + { + "id": 57507, + "nodeType": "VariableDeclaration", + "src": "2663:57:49", + "nodes": [], + "constant": true, + "documentation": { + "id": 57501, + "nodeType": "StructuredDocumentation", + "src": "2623:35:49", + "text": "The PayloadId for the mmr root." + }, + "functionSelector": "af8b91d6", + "mutability": "constant", + "name": "MMR_ROOT_PAYLOAD_ID", + "nameLocation": "2686:19:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "typeName": { + "id": 57502, + "name": "bytes2", + "nodeType": "ElementaryTypeName", + "src": "2663:6:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "value": { + "arguments": [ + { + "hexValue": "6d68", + "id": 57505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2715:4:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c272cfafc32c3006284c607888060ab1d95fd1e4c38c914de5733a1802097ab9", + "typeString": "literal_string \"mh\"" + }, + "value": "mh" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c272cfafc32c3006284c607888060ab1d95fd1e4c38c914de5733a1802097ab9", + "typeString": "literal_string \"mh\"" + } + ], + "id": 57504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2708:6:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes2_$", + "typeString": "type(bytes2)" + }, + "typeName": { + "id": 57503, + "name": "bytes2", + "nodeType": "ElementaryTypeName", + "src": "2708:6:49", + "typeDescriptions": {} + } + }, + "id": 57506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2708:12:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "visibility": "public" + }, + { + "id": 57514, + "nodeType": "VariableDeclaration", + "src": "2755:57:49", + "nodes": [], + "constant": true, + "documentation": { + "id": 57508, + "nodeType": "StructuredDocumentation", + "src": "2726:24:49", + "text": "ChainId for ethereum" + }, + "functionSelector": "babb3118", + "mutability": "constant", + "name": "ISMP_CONSENSUS_ID", + "nameLocation": "2778:17:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 57509, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2755:6:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "arguments": [ + { + "hexValue": "49534d50", + "id": 57512, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2805:6:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_38d77dedb523a1dec8128a5ae07f9904c583f20fdfb3e2d1160e53bb2c3427f1", + "typeString": "literal_string \"ISMP\"" + }, + "value": "ISMP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_38d77dedb523a1dec8128a5ae07f9904c583f20fdfb3e2d1160e53bb2c3427f1", + "typeString": "literal_string \"ISMP\"" + } + ], + "id": 57511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2798:6:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 57510, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2798:6:49", + "typeDescriptions": {} + } + }, + "id": 57513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2798:14:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "public" + }, + { + "id": 57521, + "nodeType": "VariableDeclaration", + "src": "2847:57:49", + "nodes": [], + "constant": true, + "documentation": { + "id": 57515, + "nodeType": "StructuredDocumentation", + "src": "2818:24:49", + "text": "ConsensusID for aura" + }, + "functionSelector": "4e9fdbec", + "mutability": "constant", + "name": "AURA_CONSENSUS_ID", + "nameLocation": "2870:17:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 57516, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2847:6:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "arguments": [ + { + "hexValue": "61757261", + "id": 57519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2897:6:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a4b4020ae62dd6be388cb42ecee9d321188df83bddff6cc1011b59f7006d91f2", + "typeString": "literal_string \"aura\"" + }, + "value": "aura" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a4b4020ae62dd6be388cb42ecee9d321188df83bddff6cc1011b59f7006d91f2", + "typeString": "literal_string \"aura\"" + } + ], + "id": 57518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2890:6:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 57517, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2890:6:49", + "typeDescriptions": {} + } + }, + "id": 57520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2890:14:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "public" + }, + { + "id": 57523, + "nodeType": "VariableDeclaration", + "src": "2911:23:49", + "nodes": [], + "constant": false, + "mutability": "mutable", + "name": "_paraId", + "nameLocation": "2927:7:49", + "scope": 58244, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57522, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2911:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "id": 57533, + "nodeType": "FunctionDefinition", + "src": "2941:61:49", + "nodes": [], + "body": { + "id": 57532, + "nodeType": "Block", + "src": "2969:33:49", + "nodes": [], + "statements": [ + { + "expression": { + "id": 57530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 57528, + "name": "_paraId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57523, + "src": "2979:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 57529, + "name": "paraId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57525, + "src": "2989:6:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2979:16:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57531, + "nodeType": "ExpressionStatement", + "src": "2979:16:49" + } + ] + }, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "parameters": { + "id": 57526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57525, + "mutability": "mutable", + "name": "paraId", + "nameLocation": "2961:6:49", + "nodeType": "VariableDeclaration", + "scope": 57533, + "src": "2953:14:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57524, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2953:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2952:16:49" + }, + "returnParameters": { + "id": 57527, + "nodeType": "ParameterList", + "parameters": [], + "src": "2969:0:49" + }, + "scope": 58244, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "id": 57592, + "nodeType": "FunctionDefinition", + "src": "3008:643:49", + "nodes": [], + "body": { + "id": 57591, + "nodeType": "Block", + "src": "3165:486:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 57547 + ], + "declarations": [ + { + "constant": false, + "id": 57547, + "mutability": "mutable", + "name": "consensusState", + "nameLocation": "3202:14:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3175:41:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57546, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57545, + "name": "BeefyConsensusState", + "nameLocations": [ + "3175:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "3175:19:49" + }, + "referencedDeclaration": 57382, + "src": "3175:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + } + ], + "id": 57554, + "initialValue": { + "arguments": [ + { + "id": 57550, + "name": "encodedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57535, + "src": "3230:12:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 57551, + "name": "BeefyConsensusState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57382, + "src": "3245:19:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_BeefyConsensusState_$57382_storage_ptr_$", + "typeString": "type(struct BeefyConsensusState storage pointer)" + } + } + ], + "id": 57552, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3244:21:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_BeefyConsensusState_$57382_storage_ptr_$", + "typeString": "type(struct BeefyConsensusState storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_struct$_BeefyConsensusState_$57382_storage_ptr_$", + "typeString": "type(struct BeefyConsensusState storage pointer)" + } + ], + "expression": { + "id": 57548, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3219:3:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 57549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3223:6:49", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3219:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 57553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3219:47:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3175:91:49" + }, + { + "assignments": [ + 57557, + 57560 + ], + "declarations": [ + { + "constant": false, + "id": 57557, + "mutability": "mutable", + "name": "relay", + "nameLocation": "3300:5:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3277:28:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof" + }, + "typeName": { + "id": 57556, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57555, + "name": "RelayChainProof", + "nameLocations": [ + "3277:15:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57464, + "src": "3277:15:49" + }, + "referencedDeclaration": 57464, + "src": "3277:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57560, + "mutability": "mutable", + "name": "parachain", + "nameLocation": "3329:9:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3307:31:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof" + }, + "typeName": { + "id": 57559, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57558, + "name": "ParachainProof", + "nameLocations": [ + "3307:14:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57483, + "src": "3307:14:49" + }, + "referencedDeclaration": 57483, + "src": "3307:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_storage_ptr", + "typeString": "struct ParachainProof" + } + }, + "visibility": "internal" + } + ], + "id": 57568, + "initialValue": { + "arguments": [ + { + "id": 57563, + "name": "encodedProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57537, + "src": "3365:12:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "components": [ + { + "id": 57564, + "name": "RelayChainProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57464, + "src": "3380:15:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_RelayChainProof_$57464_storage_ptr_$", + "typeString": "type(struct RelayChainProof storage pointer)" + } + }, + { + "id": 57565, + "name": "ParachainProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57483, + "src": "3397:14:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_ParachainProof_$57483_storage_ptr_$", + "typeString": "type(struct ParachainProof storage pointer)" + } + } + ], + "id": 57566, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3379:33:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_type$_t_struct$_RelayChainProof_$57464_storage_ptr_$_$_t_type$_t_struct$_ParachainProof_$57483_storage_ptr_$_$", + "typeString": "tuple(type(struct RelayChainProof storage pointer),type(struct ParachainProof storage pointer))" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_tuple$_t_type$_t_struct$_RelayChainProof_$57464_storage_ptr_$_$_t_type$_t_struct$_ParachainProof_$57483_storage_ptr_$_$", + "typeString": "tuple(type(struct RelayChainProof storage pointer),type(struct ParachainProof storage pointer))" + } + ], + "expression": { + "id": 57561, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3354:3:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 57562, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3358:6:49", + "memberName": "decode", + "nodeType": "MemberAccess", + "src": "3354:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 57567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3354:59:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_RelayChainProof_$57464_memory_ptr_$_t_struct$_ParachainProof_$57483_memory_ptr_$", + "typeString": "tuple(struct RelayChainProof memory,struct ParachainProof memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3276:137:49" + }, + { + "assignments": [ + 57571, + 57574 + ], + "declarations": [ + { + "constant": false, + "id": 57571, + "mutability": "mutable", + "name": "newState", + "nameLocation": "3452:8:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3425:35:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57570, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57569, + "name": "BeefyConsensusState", + "nameLocations": [ + "3425:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "3425:19:49" + }, + "referencedDeclaration": 57382, + "src": "3425:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57574, + "mutability": "mutable", + "name": "intermediate", + "nameLocation": "3487:12:49", + "nodeType": "VariableDeclaration", + "scope": 57591, + "src": "3462:37:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57573, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57572, + "name": "IntermediateState", + "nameLocations": [ + "3462:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "3462:17:49" + }, + "referencedDeclaration": 45360, + "src": "3462:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "id": 57583, + "initialValue": { + "arguments": [ + { + "id": 57577, + "name": "consensusState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57547, + "src": "3536:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "arguments": [ + { + "id": 57579, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57557, + "src": "3572:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + { + "id": 57580, + "name": "parachain", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57560, + "src": "3579:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + }, + { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + ], + "id": 57578, + "name": "BeefyConsensusProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57490, + "src": "3552:19:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_BeefyConsensusProof_$57490_storage_ptr_$", + "typeString": "type(struct BeefyConsensusProof storage pointer)" + } + }, + "id": 57581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3552:37:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + }, + { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof memory" + } + ], + "expression": { + "id": 57575, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3515:4:49", + "typeDescriptions": { + "typeIdentifier": "t_contract$_BeefyV1_$58244", + "typeString": "contract BeefyV1" + } + }, + "id": 57576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3520:15:49", + "memberName": "verifyConsensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 57633, + "src": "3515:20:49", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_BeefyConsensusProof_$57490_memory_ptr_$returns$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "function (struct BeefyConsensusState memory,struct BeefyConsensusProof memory) view external returns (struct BeefyConsensusState memory,struct IntermediateState memory)" + } + }, + "id": 57582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3515:75:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "tuple(struct BeefyConsensusState memory,struct IntermediateState memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3424:166:49" + }, + { + "expression": { + "components": [ + { + "arguments": [ + { + "id": 57586, + "name": "newState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57571, + "src": "3620:8:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + ], + "expression": { + "id": 57584, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3609:3:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 57585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3613:6:49", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "3609:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 57587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3609:20:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 57588, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57574, + "src": "3631:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + } + ], + "id": 57589, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3608:36:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "tuple(bytes memory,struct IntermediateState memory)" + } + }, + "functionReturnParameters": 57544, + "id": 57590, + "nodeType": "Return", + "src": "3601:43:49" + } + ] + }, + "baseFunctions": [ + 45373 + ], + "functionSelector": "7d755598", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyConsensus", + "nameLocation": "3017:15:49", + "parameters": { + "id": 57538, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57535, + "mutability": "mutable", + "name": "encodedState", + "nameLocation": "3046:12:49", + "nodeType": "VariableDeclaration", + "scope": 57592, + "src": "3033:25:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57534, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3033:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57537, + "mutability": "mutable", + "name": "encodedProof", + "nameLocation": "3073:12:49", + "nodeType": "VariableDeclaration", + "scope": 57592, + "src": "3060:25:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57536, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3060:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3032:54:49" + }, + "returnParameters": { + "id": 57544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57540, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57592, + "src": "3121:12:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57539, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3121:5:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57543, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57592, + "src": "3135:24:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57542, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57541, + "name": "IntermediateState", + "nameLocations": [ + "3135:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "3135:17:49" + }, + "referencedDeclaration": 45360, + "src": "3135:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "src": "3120:40:49" + }, + "scope": 58244, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 57633, + "nodeType": "FunctionDefinition", + "src": "3806:558:49", + "nodes": [], + "body": { + "id": 57632, + "nodeType": "Block", + "src": "4011:353:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 57610, + 57612 + ], + "declarations": [ + { + "constant": false, + "id": 57610, + "mutability": "mutable", + "name": "state", + "nameLocation": "4083:5:49", + "nodeType": "VariableDeclaration", + "scope": 57632, + "src": "4056:32:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57609, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57608, + "name": "BeefyConsensusState", + "nameLocations": [ + "4056:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "4056:19:49" + }, + "referencedDeclaration": 57382, + "src": "4056:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57612, + "mutability": "mutable", + "name": "headsRoot", + "nameLocation": "4098:9:49", + "nodeType": "VariableDeclaration", + "scope": 57632, + "src": "4090:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57611, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4090:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 57618, + "initialValue": { + "arguments": [ + { + "id": 57614, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57596, + "src": "4132:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "expression": { + "id": 57615, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57599, + "src": "4146:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof memory" + } + }, + "id": 57616, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4152:5:49", + "memberName": "relay", + "nodeType": "MemberAccess", + "referencedDeclaration": 57486, + "src": "4146:11:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + }, + { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + ], + "id": 57613, + "name": "verifyMmrUpdateProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57920, + "src": "4111:20:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_RelayChainProof_$57464_memory_ptr_$returns$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_bytes32_$", + "typeString": "function (struct BeefyConsensusState memory,struct RelayChainProof memory) pure returns (struct BeefyConsensusState memory,bytes32)" + } + }, + "id": 57617, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4111:47:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(struct BeefyConsensusState memory,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4055:103:49" + }, + { + "assignments": [ + 57621 + ], + "declarations": [ + { + "constant": false, + "id": 57621, + "mutability": "mutable", + "name": "intermediate", + "nameLocation": "4249:12:49", + "nodeType": "VariableDeclaration", + "scope": 57632, + "src": "4224:37:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57620, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57619, + "name": "IntermediateState", + "nameLocations": [ + "4224:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "4224:17:49" + }, + "referencedDeclaration": 45360, + "src": "4224:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "id": 57627, + "initialValue": { + "arguments": [ + { + "id": 57623, + "name": "headsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57612, + "src": "4291:9:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57624, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57599, + "src": "4302:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof memory" + } + }, + "id": 57625, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4308:9:49", + "memberName": "parachain", + "nodeType": "MemberAccess", + "referencedDeclaration": 57489, + "src": "4302:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + ], + "id": 57622, + "name": "verifyParachainHeaderProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58197, + "src": "4264:26:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_ParachainProof_$57483_memory_ptr_$returns$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "function (bytes32,struct ParachainProof memory) view returns (struct IntermediateState memory)" + } + }, + "id": 57626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4264:54:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4224:94:49" + }, + { + "expression": { + "components": [ + { + "id": 57628, + "name": "state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57610, + "src": "4337:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "id": 57629, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57621, + "src": "4344:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + } + ], + "id": 57630, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4336:21:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "tuple(struct BeefyConsensusState memory,struct IntermediateState memory)" + } + }, + "functionReturnParameters": 57607, + "id": 57631, + "nodeType": "Return", + "src": "4329:28:49" + } + ] + }, + "documentation": { + "id": 57593, + "nodeType": "StructuredDocumentation", + "src": "3657:144:49", + "text": "Verify the consensus proof and return the new trusted consensus state and any intermediate states finalized\n by this consensus proof." + }, + "functionSelector": "5e399aea", + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyConsensus", + "nameLocation": "3815:15:49", + "parameters": { + "id": 57600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57596, + "mutability": "mutable", + "name": "trustedState", + "nameLocation": "3858:12:49", + "nodeType": "VariableDeclaration", + "scope": 57633, + "src": "3831:39:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57595, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57594, + "name": "BeefyConsensusState", + "nameLocations": [ + "3831:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "3831:19:49" + }, + "referencedDeclaration": 57382, + "src": "3831:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57599, + "mutability": "mutable", + "name": "proof", + "nameLocation": "3899:5:49", + "nodeType": "VariableDeclaration", + "scope": 57633, + "src": "3872:32:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_memory_ptr", + "typeString": "struct BeefyConsensusProof" + }, + "typeName": { + "id": 57598, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57597, + "name": "BeefyConsensusProof", + "nameLocations": [ + "3872:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57490, + "src": "3872:19:49" + }, + "referencedDeclaration": 57490, + "src": "3872:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusProof_$57490_storage_ptr", + "typeString": "struct BeefyConsensusProof" + } + }, + "visibility": "internal" + } + ], + "src": "3830:75:49" + }, + "returnParameters": { + "id": 57607, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57603, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57633, + "src": "3953:26:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57602, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57601, + "name": "BeefyConsensusState", + "nameLocations": [ + "3953:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "3953:19:49" + }, + "referencedDeclaration": 57382, + "src": "3953:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57606, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57633, + "src": "3981:24:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57605, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57604, + "name": "IntermediateState", + "nameLocations": [ + "3981:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "3981:17:49" + }, + "referencedDeclaration": 45360, + "src": "3981:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "src": "3952:54:49" + }, + "scope": 58244, + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "id": 57920, + "nodeType": "FunctionDefinition", + "src": "4798:3011:49", + "nodes": [], + "body": { + "id": 57919, + "nodeType": "Block", + "src": "4991:2818:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 57649 + ], + "declarations": [ + { + "constant": false, + "id": 57649, + "mutability": "mutable", + "name": "signatures_length", + "nameLocation": "5009:17:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5001:25:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57648, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5001:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57654, + "initialValue": { + "expression": { + "expression": { + "expression": { + "id": 57650, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "5029:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57651, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5040:16:49", + "memberName": "signedCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57449, + "src": "5029:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_memory_ptr", + "typeString": "struct SignedCommitment memory" + } + }, + "id": 57652, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5057:5:49", + "memberName": "votes", + "nodeType": "MemberAccess", + "referencedDeclaration": 57418, + "src": "5029:33:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Vote_$57411_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Vote memory[] memory" + } + }, + "id": 57653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5063:6:49", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5029:40:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5001:68:49" + }, + { + "assignments": [ + 57656 + ], + "declarations": [ + { + "constant": false, + "id": 57656, + "mutability": "mutable", + "name": "latestHeight", + "nameLocation": "5087:12:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5079:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57655, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5079:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57661, + "initialValue": { + "expression": { + "expression": { + "expression": { + "id": 57657, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "5102:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57658, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5113:16:49", + "memberName": "signedCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57449, + "src": "5102:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_memory_ptr", + "typeString": "struct SignedCommitment memory" + } + }, + "id": 57659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5130:10:49", + "memberName": "commitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57414, + "src": "5102:38:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57660, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5141:11:49", + "memberName": "blockNumber", + "nodeType": "MemberAccess", + "referencedDeclaration": 57403, + "src": "5102:50:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5079:73:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57663, + "name": "latestHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57656, + "src": "5171:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 57664, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5186:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57665, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5199:12:49", + "memberName": "latestHeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 57370, + "src": "5186:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5171:40:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "636f6e73656e73757320636c69656e7473206f6e6c79206163636570742070726f6f667320666f72206e65772068656164657273", + "id": 57667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5213:54:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_20ae10a3e75afa6779efe3986ec47cf449c331e896e0091bf30c183dee607d8a", + "typeString": "literal_string \"consensus clients only accept proofs for new headers\"" + }, + "value": "consensus clients only accept proofs for new headers" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_20ae10a3e75afa6779efe3986ec47cf449c331e896e0091bf30c183dee607d8a", + "typeString": "literal_string \"consensus clients only accept proofs for new headers\"" + } + ], + "id": 57662, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5163:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5163:105:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57669, + "nodeType": "ExpressionStatement", + "src": "5163:105:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 57672, + "name": "signatures_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57649, + "src": "5327:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "expression": { + "id": 57673, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5346:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57674, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5359:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "5346:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57675, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5379:3:49", + "memberName": "len", + "nodeType": "MemberAccess", + "referencedDeclaration": 57388, + "src": "5346:36:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57671, + "name": "checkParticipationThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58243, + "src": "5299:27:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 57676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5299:84:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 57678, + "name": "signatures_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57649, + "src": "5431:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "expression": { + "id": 57679, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5450:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57680, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5463:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "5450:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57681, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5480:3:49", + "memberName": "len", + "nodeType": "MemberAccess", + "referencedDeclaration": 57388, + "src": "5450:33:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57677, + "name": "checkParticipationThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58243, + "src": "5403:27:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256,uint256) pure returns (bool)" + } + }, + "id": 57682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5403:81:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5299:185:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "5375706572206d616a6f72697479207468726573686f6c64206e6f742072656163686564", + "id": 57684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5498:38:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_718bec4a0db58190091f05a867c5e0b576fa6685e317fcaac46d0c9887b1f216", + "typeString": "literal_string \"Super majority threshold not reached\"" + }, + "value": "Super majority threshold not reached" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_718bec4a0db58190091f05a867c5e0b576fa6685e317fcaac46d0c9887b1f216", + "typeString": "literal_string \"Super majority threshold not reached\"" + } + ], + "id": 57670, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5278:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5278:268:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57686, + "nodeType": "ExpressionStatement", + "src": "5278:268:49" + }, + { + "assignments": [ + 57689 + ], + "declarations": [ + { + "constant": false, + "id": 57689, + "mutability": "mutable", + "name": "commitment", + "nameLocation": "5575:10:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5557:28:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment" + }, + "typeName": { + "id": 57688, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57687, + "name": "Commitment", + "nameLocations": [ + "5557:10:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57406, + "src": "5557:10:49" + }, + "referencedDeclaration": 57406, + "src": "5557:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_storage_ptr", + "typeString": "struct Commitment" + } + }, + "visibility": "internal" + } + ], + "id": 57693, + "initialValue": { + "expression": { + "expression": { + "id": 57690, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "5588:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57691, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5599:16:49", + "memberName": "signedCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57449, + "src": "5588:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_memory_ptr", + "typeString": "struct SignedCommitment memory" + } + }, + "id": 57692, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5616:10:49", + "memberName": "commitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57414, + "src": "5588:38:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5557:69:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 57695, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "5658:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57696, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5669:14:49", + "memberName": "validatorSetId", + "nodeType": "MemberAccess", + "referencedDeclaration": 57405, + "src": "5658:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 57697, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5687:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5700:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "5687:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5720:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "5687:35:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5658:64:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 57701, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "5742:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57702, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5753:14:49", + "memberName": "validatorSetId", + "nodeType": "MemberAccess", + "referencedDeclaration": 57405, + "src": "5742:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 57703, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5771:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57704, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5784:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "5771:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57705, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5801:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "5771:32:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5742:61:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5658:145:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "556e6b6e6f776e20617574686f7269747920736574", + "id": 57708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5817:23:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_85138eb7183e676022ecaca0f5c99a8131c652851827f09f4ec938798897a322", + "typeString": "literal_string \"Unknown authority set\"" + }, + "value": "Unknown authority set" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_85138eb7183e676022ecaca0f5c99a8131c652851827f09f4ec938798897a322", + "typeString": "literal_string \"Unknown authority set\"" + } + ], + "id": 57694, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5637:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5637:213:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57710, + "nodeType": "ExpressionStatement", + "src": "5637:213:49" + }, + { + "assignments": [ + 57712 + ], + "declarations": [ + { + "constant": false, + "id": 57712, + "mutability": "mutable", + "name": "is_current_authorities", + "nameLocation": "5866:22:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5861:27:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 57711, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5861:4:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 57719, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 57713, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "5891:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57714, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5902:14:49", + "memberName": "validatorSetId", + "nodeType": "MemberAccess", + "referencedDeclaration": 57405, + "src": "5891:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "expression": { + "id": 57715, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "5920:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57716, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5933:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "5920:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57717, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5953:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "5920:35:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5891:64:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5861:94:49" + }, + { + "assignments": [ + 57721 + ], + "declarations": [ + { + "constant": false, + "id": 57721, + "mutability": "mutable", + "name": "payload_len", + "nameLocation": "5974:11:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "5966:19:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5966:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57725, + "initialValue": { + "expression": { + "expression": { + "id": 57722, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "5988:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57723, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5999:7:49", + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 57401, + "src": "5988:18:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Payload memory[] memory" + } + }, + "id": 57724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6007:6:49", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5988:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5966:47:49" + }, + { + "assignments": [ + 57727 + ], + "declarations": [ + { + "constant": false, + "id": 57727, + "mutability": "mutable", + "name": "mmrRoot", + "nameLocation": "6031:7:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "6023:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57726, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6023:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 57728, + "nodeType": "VariableDeclarationStatement", + "src": "6023:15:49" + }, + { + "body": { + "id": 57768, + "nodeType": "Block", + "src": "6091:206:49", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + }, + "id": 57745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 57739, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "6109:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57740, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6120:7:49", + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 57401, + "src": "6109:18:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Payload memory[] memory" + } + }, + "id": 57742, + "indexExpression": { + "id": 57741, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6128:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6109:21:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Payload_$57397_memory_ptr", + "typeString": "struct Payload memory" + } + }, + "id": 57743, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6131:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57394, + "src": "6109:24:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 57744, + "name": "MMR_ROOT_PAYLOAD_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57507, + "src": "6137:19:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes2", + "typeString": "bytes2" + } + }, + "src": "6109:47:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 57746, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "6160:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57747, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6171:7:49", + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 57401, + "src": "6160:18:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Payload memory[] memory" + } + }, + "id": 57749, + "indexExpression": { + "id": 57748, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6179:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6160:21:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Payload_$57397_memory_ptr", + "typeString": "struct Payload memory" + } + }, + "id": 57750, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6182:4:49", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 57396, + "src": "6160:26:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 57751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6187:6:49", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6160:33:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3332", + "id": 57752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6197:2:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "6160:39:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6109:90:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57767, + "nodeType": "IfStatement", + "src": "6105:182:49", + "trueBody": { + "id": 57766, + "nodeType": "Block", + "src": "6201:86:49", + "statements": [ + { + "expression": { + "id": 57764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 57755, + "name": "mmrRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57727, + "src": "6219:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 57758, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "6245:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + }, + "id": 57759, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6256:7:49", + "memberName": "payload", + "nodeType": "MemberAccess", + "referencedDeclaration": 57401, + "src": "6245:18:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Payload_$57397_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Payload memory[] memory" + } + }, + "id": 57761, + "indexExpression": { + "id": 57760, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6264:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6245:21:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Payload_$57397_memory_ptr", + "typeString": "struct Payload memory" + } + }, + "id": 57762, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6267:4:49", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 57396, + "src": "6245:26:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 57756, + "name": "Bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51191, + "src": "6229:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Bytes_$51191_$", + "typeString": "type(library Bytes)" + } + }, + "id": 57757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6235:9:49", + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 50869, + "src": "6229:15:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 57763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6229:43:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6219:53:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 57765, + "nodeType": "ExpressionStatement", + "src": "6219:53:49" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57733, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6069:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 57734, + "name": "payload_len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57721, + "src": "6073:11:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6069:15:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57769, + "initializationExpression": { + "assignments": [ + 57730 + ], + "declarations": [ + { + "constant": false, + "id": 57730, + "mutability": "mutable", + "name": "i", + "nameLocation": "6062:1:49", + "nodeType": "VariableDeclaration", + "scope": 57769, + "src": "6054:9:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6054:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57732, + "initialValue": { + "hexValue": "30", + "id": 57731, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6066:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6054:13:49" + }, + "loopExpression": { + "expression": { + "id": 57737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6086:3:49", + "subExpression": { + "id": 57736, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57730, + "src": "6086:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57738, + "nodeType": "ExpressionStatement", + "src": "6086:3:49" + }, + "nodeType": "ForStatement", + "src": "6049:248:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 57776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57771, + "name": "mmrRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57727, + "src": "6315:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 57774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6334:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 57773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6326:7:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 57772, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6326:7:49", + "typeDescriptions": {} + } + }, + "id": 57775, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6326:10:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6315:21:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4d6d7220726f6f742068617368206e6f7420666f756e64", + "id": 57777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6338:25:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f85b45fc9c42440e0b58ea97df3333abad81ec11c7f50158fd67032b15591a47", + "typeString": "literal_string \"Mmr root hash not found\"" + }, + "value": "Mmr root hash not found" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f85b45fc9c42440e0b58ea97df3333abad81ec11c7f50158fd67032b15591a47", + "typeString": "literal_string \"Mmr root hash not found\"" + } + ], + "id": 57770, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6307:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6307:57:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57779, + "nodeType": "ExpressionStatement", + "src": "6307:57:49" + }, + { + "assignments": [ + 57781 + ], + "declarations": [ + { + "constant": false, + "id": 57781, + "mutability": "mutable", + "name": "commitment_hash", + "nameLocation": "6383:15:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "6375:23:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57780, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6375:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 57788, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 57785, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57689, + "src": "6424:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Commitment_$57406_memory_ptr", + "typeString": "struct Commitment memory" + } + ], + "expression": { + "id": 57783, + "name": "Codec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58968, + "src": "6411:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Codec_$58968_$", + "typeString": "type(library Codec)" + } + }, + "id": 57784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6417:6:49", + "memberName": "Encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 58366, + "src": "6411:12:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_Commitment_$57406_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct Commitment memory) pure returns (bytes memory)" + } + }, + "id": 57786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6411:24:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 57782, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6401:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 57787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6401:35:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6375:61:49" + }, + { + "assignments": [ + 57793 + ], + "declarations": [ + { + "constant": false, + "id": 57793, + "mutability": "mutable", + "name": "authorities", + "nameLocation": "6460:11:49", + "nodeType": "VariableDeclaration", + "scope": 57919, + "src": "6446:25:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node[]" + }, + "typeName": { + "baseType": { + "id": 57791, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57790, + "name": "Node", + "nameLocations": [ + "6446:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "6446:4:49" + }, + "referencedDeclaration": 49043, + "src": "6446:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 57792, + "nodeType": "ArrayTypeName", + "src": "6446:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + }, + "visibility": "internal" + } + ], + "id": 57800, + "initialValue": { + "arguments": [ + { + "id": 57798, + "name": "signatures_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57649, + "src": "6485:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "6474:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct Node memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 57795, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57794, + "name": "Node", + "nameLocations": [ + "6478:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "6478:4:49" + }, + "referencedDeclaration": 49043, + "src": "6478:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 57796, + "nodeType": "ArrayTypeName", + "src": "6478:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + } + }, + "id": 57799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6474:29:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6446:57:49" + }, + { + "body": { + "id": 57844, + "nodeType": "Block", + "src": "6599:256:49", + "statements": [ + { + "assignments": [ + 57813 + ], + "declarations": [ + { + "constant": false, + "id": 57813, + "mutability": "mutable", + "name": "vote", + "nameLocation": "6625:4:49", + "nodeType": "VariableDeclaration", + "scope": 57844, + "src": "6613:16:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_memory_ptr", + "typeString": "struct Vote" + }, + "typeName": { + "id": 57812, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57811, + "name": "Vote", + "nameLocations": [ + "6613:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57411, + "src": "6613:4:49" + }, + "referencedDeclaration": 57411, + "src": "6613:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_storage_ptr", + "typeString": "struct Vote" + } + }, + "visibility": "internal" + } + ], + "id": 57819, + "initialValue": { + "baseExpression": { + "expression": { + "expression": { + "id": 57814, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "6632:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57815, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6643:16:49", + "memberName": "signedCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 57449, + "src": "6632:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_SignedCommitment_$57419_memory_ptr", + "typeString": "struct SignedCommitment memory" + } + }, + "id": 57816, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6660:5:49", + "memberName": "votes", + "nodeType": "MemberAccess", + "referencedDeclaration": 57418, + "src": "6632:33:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Vote_$57411_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Vote memory[] memory" + } + }, + "id": 57818, + "indexExpression": { + "id": 57817, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57802, + "src": "6666:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6632:36:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_memory_ptr", + "typeString": "struct Vote memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6613:55:49" + }, + { + "assignments": [ + 57821 + ], + "declarations": [ + { + "constant": false, + "id": 57821, + "mutability": "mutable", + "name": "authority", + "nameLocation": "6690:9:49", + "nodeType": "VariableDeclaration", + "scope": 57844, + "src": "6682:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 57820, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6682:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 57828, + "initialValue": { + "arguments": [ + { + "id": 57824, + "name": "commitment_hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57781, + "src": "6716:15:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57825, + "name": "vote", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57813, + "src": "6733:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_memory_ptr", + "typeString": "struct Vote memory" + } + }, + "id": 57826, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6738:9:49", + "memberName": "signature", + "nodeType": "MemberAccess", + "referencedDeclaration": 57408, + "src": "6733:14:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 57822, + "name": "ECDSA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47004, + "src": "6702:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ECDSA_$47004_$", + "typeString": "type(library ECDSA)" + } + }, + "id": 57823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6708:7:49", + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 46765, + "src": "6702:13:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 57827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6702:46:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6682:66:49" + }, + { + "expression": { + "id": 57842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 57829, + "name": "authorities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57793, + "src": "6762:11:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + }, + "id": 57831, + "indexExpression": { + "id": 57830, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57802, + "src": "6774:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6762:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 57833, + "name": "vote", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57813, + "src": "6784:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Vote_$57411_memory_ptr", + "typeString": "struct Vote memory" + } + }, + "id": 57834, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6789:14:49", + "memberName": "authorityIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 57410, + "src": "6784:19:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 57838, + "name": "authority", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57821, + "src": "6832:9:49", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 57836, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6815:3:49", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 57837, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6819:12:49", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "6815:16:49", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 57839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6815:27:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 57835, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6805:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 57840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6805:38:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 57832, + "name": "Node", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49043, + "src": "6779:4:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Node_$49043_storage_ptr_$", + "typeString": "type(struct Node storage pointer)" + } + }, + "id": 57841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6779:65:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "src": "6762:82:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "id": 57843, + "nodeType": "ExpressionStatement", + "src": "6762:82:49" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57805, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57802, + "src": "6571:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 57806, + "name": "signatures_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57649, + "src": "6575:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6571:21:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57845, + "initializationExpression": { + "assignments": [ + 57802 + ], + "declarations": [ + { + "constant": false, + "id": 57802, + "mutability": "mutable", + "name": "i", + "nameLocation": "6564:1:49", + "nodeType": "VariableDeclaration", + "scope": 57845, + "src": "6556:9:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57801, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6556:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57804, + "initialValue": { + "hexValue": "30", + "id": 57803, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6568:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6556:13:49" + }, + "loopExpression": { + "expression": { + "id": 57809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6594:3:49", + "subExpression": { + "id": 57808, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57802, + "src": "6594:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57810, + "nodeType": "ExpressionStatement", + "src": "6594:3:49" + }, + "nodeType": "ForStatement", + "src": "6551:304:49" + }, + { + "condition": { + "id": 57846, + "name": "is_current_authorities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57712, + "src": "6904:22:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 57874, + "nodeType": "Block", + "src": "7149:209:49", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "expression": { + "id": 57864, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7217:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57865, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7230:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "7217:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57866, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7247:4:49", + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 57391, + "src": "7217:34:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57867, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7253:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57868, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7264:5:49", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 57463, + "src": "7253:16:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + } + }, + { + "id": 57869, + "name": "authorities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57793, + "src": "7271:11:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + ], + "expression": { + "id": 57862, + "name": "MerkleMultiProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49805, + "src": "7188:16:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMultiProof_$49805_$", + "typeString": "type(library MerkleMultiProof)" + } + }, + "id": 57863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7205:11:49", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49069, + "src": "7188:28:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,struct Node memory[] memory[] memory,struct Node memory[] memory) pure returns (bool)" + } + }, + "id": 57870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7188:95:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c6964206e65787420617574686f7269746965732070726f6f66", + "id": 57871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7301:32:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_351215bf03b0ec969e47c532d8107b195bcf002d184289ae7aeca47373b19605", + "typeString": "literal_string \"Invalid next authorities proof\"" + }, + "value": "Invalid next authorities proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_351215bf03b0ec969e47c532d8107b195bcf002d184289ae7aeca47373b19605", + "typeString": "literal_string \"Invalid next authorities proof\"" + } + ], + "id": 57861, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7163:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7163:184:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57873, + "nodeType": "ExpressionStatement", + "src": "7163:184:49" + } + ] + }, + "id": 57875, + "nodeType": "IfStatement", + "src": "6900:458:49", + "trueBody": { + "id": 57860, + "nodeType": "Block", + "src": "6928:215:49", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "expression": { + "id": 57850, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "6996:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57851, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7009:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "6996:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57852, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7029:4:49", + "memberName": "root", + "nodeType": "MemberAccess", + "referencedDeclaration": 57391, + "src": "6996:37:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57853, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7035:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57854, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7046:5:49", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 57463, + "src": "7035:16:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + } + }, + { + "id": 57855, + "name": "authorities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57793, + "src": "7053:11:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + ], + "expression": { + "id": 57848, + "name": "MerkleMultiProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49805, + "src": "6967:16:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMultiProof_$49805_$", + "typeString": "type(library MerkleMultiProof)" + } + }, + "id": 57849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6984:11:49", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49069, + "src": "6967:28:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,struct Node memory[] memory[] memory,struct Node memory[] memory) pure returns (bool)" + } + }, + "id": 57856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6967:98:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c69642063757272656e7420617574686f7269746965732070726f6f66", + "id": 57857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7083:35:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a89a4f966f9e8a191ff9aac270a1bf6c51b751c1c14a698ced12332360e4e703", + "typeString": "literal_string \"Invalid current authorities proof\"" + }, + "value": "Invalid current authorities proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a89a4f966f9e8a191ff9aac270a1bf6c51b751c1c14a698ced12332360e4e703", + "typeString": "literal_string \"Invalid current authorities proof\"" + } + ], + "id": 57847, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6942:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6942:190:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57859, + "nodeType": "ExpressionStatement", + "src": "6942:190:49" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 57877, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7382:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "id": 57878, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7396:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + { + "id": 57879, + "name": "mmrRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57727, + "src": "7408:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + }, + { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 57876, + "name": "verifyMmrLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57993, + "src": "7368:13:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_struct$_RelayChainProof_$57464_memory_ptr_$_t_bytes32_$returns$__$", + "typeString": "function (struct BeefyConsensusState memory,struct RelayChainProof memory,bytes32) pure" + } + }, + "id": 57880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7368:48:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57881, + "nodeType": "ExpressionStatement", + "src": "7368:48:49" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "expression": { + "id": 57882, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7431:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7442:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "7431:24:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57884, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7456:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57428, + "src": "7431:41:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57885, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7473:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "7431:44:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "expression": { + "id": 57886, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7478:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57887, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7491:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "7478:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57888, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7508:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57385, + "src": "7478:32:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7431:79:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57906, + "nodeType": "IfStatement", + "src": "7427:261:49", + "trueBody": { + "id": 57905, + "nodeType": "Block", + "src": "7512:176:49", + "statements": [ + { + "expression": { + "id": 57895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 57890, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7526:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57892, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7539:19:49", + "memberName": "currentAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57377, + "src": "7526:32:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 57893, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7561:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57894, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7574:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "7561:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "src": "7526:64:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57896, + "nodeType": "ExpressionStatement", + "src": "7526:64:49" + }, + { + "expression": { + "id": 57903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 57897, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7604:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57899, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7617:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57381, + "src": "7604:29:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 57900, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7636:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57901, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7647:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "7636:24:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57902, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7661:16:49", + "memberName": "nextAuthoritySet", + "nodeType": "MemberAccess", + "referencedDeclaration": 57428, + "src": "7636:41:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "src": "7604:73:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AuthoritySetCommitment_$57392_memory_ptr", + "typeString": "struct AuthoritySetCommitment memory" + } + }, + "id": 57904, + "nodeType": "ExpressionStatement", + "src": "7604:73:49" + } + ] + } + }, + { + "expression": { + "id": 57911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 57907, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7698:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57909, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7711:12:49", + "memberName": "latestHeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 57370, + "src": "7698:25:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 57910, + "name": "latestHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57656, + "src": "7726:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7698:40:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57912, + "nodeType": "ExpressionStatement", + "src": "7698:40:49" + }, + { + "expression": { + "components": [ + { + "id": 57913, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57637, + "src": "7757:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + { + "expression": { + "expression": { + "id": 57914, + "name": "relayProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57640, + "src": "7771:10:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57915, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7782:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "7771:24:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57916, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7796:5:49", + "memberName": "extra", + "nodeType": "MemberAccess", + "referencedDeclaration": 57430, + "src": "7771:30:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 57917, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7756:46:49", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_struct$_BeefyConsensusState_$57382_memory_ptr_$_t_bytes32_$", + "typeString": "tuple(struct BeefyConsensusState memory,bytes32)" + } + }, + "functionReturnParameters": 57647, + "id": 57918, + "nodeType": "Return", + "src": "7749:53:49" + } + ] + }, + "documentation": { + "id": 57634, + "nodeType": "StructuredDocumentation", + "src": "4370:423:49", + "text": "Verifies a new Mmmr root update, the relay chain accumulates its blocks into a merkle mountain range tree\n which light clients can use as a source for log_2(n) ancestry proofs. This new mmr root hash is signed by\n the relay chain authority set and we can verify the membership of the authorities who signed this new root\n using a merkle multi proof and a merkle commitment to the total authorities." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyMmrUpdateProof", + "nameLocation": "4807:20:49", + "parameters": { + "id": 57641, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57637, + "mutability": "mutable", + "name": "trustedState", + "nameLocation": "4855:12:49", + "nodeType": "VariableDeclaration", + "scope": 57920, + "src": "4828:39:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57636, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57635, + "name": "BeefyConsensusState", + "nameLocations": [ + "4828:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "4828:19:49" + }, + "referencedDeclaration": 57382, + "src": "4828:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57640, + "mutability": "mutable", + "name": "relayProof", + "nameLocation": "4892:10:49", + "nodeType": "VariableDeclaration", + "scope": 57920, + "src": "4869:33:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof" + }, + "typeName": { + "id": 57639, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57638, + "name": "RelayChainProof", + "nameLocations": [ + "4869:15:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57464, + "src": "4869:15:49" + }, + "referencedDeclaration": 57464, + "src": "4869:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + } + }, + "visibility": "internal" + } + ], + "src": "4827:76:49" + }, + "returnParameters": { + "id": 57647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57644, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57920, + "src": "4950:26:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57643, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57642, + "name": "BeefyConsensusState", + "nameLocations": [ + "4950:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "4950:19:49" + }, + "referencedDeclaration": 57382, + "src": "4950:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57646, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 57920, + "src": "4978:7:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57645, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4978:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4949:37:49" + }, + "scope": 58244, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 57993, + "nodeType": "FunctionDefinition", + "src": "7853:595:49", + "nodes": [], + "body": { + "id": 57992, + "nodeType": "Block", + "src": "7997:451:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 57933 + ], + "declarations": [ + { + "constant": false, + "id": 57933, + "mutability": "mutable", + "name": "hash", + "nameLocation": "8015:4:49", + "nodeType": "VariableDeclaration", + "scope": 57992, + "src": "8007:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57932, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8007:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 57941, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 57937, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8045:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57938, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8051:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "8045:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + ], + "expression": { + "id": 57935, + "name": "Codec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58968, + "src": "8032:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Codec_$58968_$", + "typeString": "type(library Codec)" + } + }, + "id": 57936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8038:6:49", + "memberName": "Encode", + "nodeType": "MemberAccess", + "referencedDeclaration": 58465, + "src": "8032:12:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_BeefyMmrLeaf_$57435_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (struct BeefyMmrLeaf memory) pure returns (bytes memory)" + } + }, + "id": 57939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8032:33:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 57934, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "8022:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 57940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8022:44:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8007:59:49" + }, + { + "assignments": [ + 57943 + ], + "declarations": [ + { + "constant": false, + "id": 57943, + "mutability": "mutable", + "name": "leafCount", + "nameLocation": "8084:9:49", + "nodeType": "VariableDeclaration", + "scope": 57992, + "src": "8076:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8076:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57953, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "expression": { + "id": 57945, + "name": "trustedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57924, + "src": "8106:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState memory" + } + }, + "id": 57946, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8119:20:49", + "memberName": "beefyActivationBlock", + "nodeType": "MemberAccess", + "referencedDeclaration": 57373, + "src": "8106:33:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "expression": { + "id": 57947, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8141:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57948, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8147:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "8141:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57949, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8161:12:49", + "memberName": "parentNumber", + "nodeType": "MemberAccess", + "referencedDeclaration": 57423, + "src": "8141:32:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57944, + "name": "leafIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58220, + "src": "8096:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 57950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8096:78:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 57951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8177:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8096:82:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8076:102:49" + }, + { + "assignments": [ + 57958 + ], + "declarations": [ + { + "constant": false, + "id": 57958, + "mutability": "mutable", + "name": "leaves", + "nameLocation": "8206:6:49", + "nodeType": "VariableDeclaration", + "scope": 57992, + "src": "8189:23:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf[]" + }, + "typeName": { + "baseType": { + "id": 57956, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57955, + "name": "MmrLeaf", + "nameLocations": [ + "8189:7:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47986, + "src": "8189:7:49" + }, + "referencedDeclaration": 47986, + "src": "8189:7:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 57957, + "nodeType": "ArrayTypeName", + "src": "8189:9:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + }, + "visibility": "internal" + } + ], + "id": 57965, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 57963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8229:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 57962, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "8215:13:49", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct MmrLeaf memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 57960, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57959, + "name": "MmrLeaf", + "nameLocations": [ + "8219:7:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47986, + "src": "8219:7:49" + }, + "referencedDeclaration": 47986, + "src": "8219:7:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 57961, + "nodeType": "ArrayTypeName", + "src": "8219:9:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + } + }, + "id": 57964, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8215:16:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8189:42:49" + }, + { + "expression": { + "id": 57978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 57966, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57958, + "src": "8241:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "id": 57968, + "indexExpression": { + "hexValue": "30", + "id": 57967, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8248:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8241:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "expression": { + "id": 57970, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8261:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57971, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8267:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "8261:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57972, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8281:6:49", + "memberName": "kIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 57432, + "src": "8261:26:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "expression": { + "id": 57973, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8289:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57974, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8295:13:49", + "memberName": "latestMmrLeaf", + "nodeType": "MemberAccess", + "referencedDeclaration": 57453, + "src": "8289:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyMmrLeaf_$57435_memory_ptr", + "typeString": "struct BeefyMmrLeaf memory" + } + }, + "id": 57975, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8309:9:49", + "memberName": "leafIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 57434, + "src": "8289:29:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 57976, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57933, + "src": "8320:4:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 57969, + "name": "MmrLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47986, + "src": "8253:7:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MmrLeaf_$47986_storage_ptr_$", + "typeString": "type(struct MmrLeaf storage pointer)" + } + }, + "id": 57977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8253:72:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "src": "8241:84:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$47986_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "id": 57979, + "nodeType": "ExpressionStatement", + "src": "8241:84:49" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 57983, + "name": "mmrRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57929, + "src": "8376:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 57984, + "name": "relay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57927, + "src": "8385:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof memory" + } + }, + "id": 57985, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8391:8:49", + "memberName": "mmrProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 57457, + "src": "8385:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "id": 57986, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57958, + "src": "8401:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + { + "id": 57987, + "name": "leafCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57943, + "src": "8409:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 57981, + "name": "MerkleMountainRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49035, + "src": "8344:19:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMountainRange_$49035_$", + "typeString": "type(library MerkleMountainRange)" + } + }, + "id": 57982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8364:11:49", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 48019, + "src": "8344:31:49", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_struct$_MmrLeaf_$47986_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,struct MmrLeaf memory[] memory,uint256) pure returns (bool)" + } + }, + "id": 57988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8344:75:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c6964204d6d722050726f6f66", + "id": 57989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8421:19:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2bbb2c09e28047a7dbf50f4fb7f8a81eb1c8c14de832949b9c670eeb6cd55770", + "typeString": "literal_string \"Invalid Mmr Proof\"" + }, + "value": "Invalid Mmr Proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2bbb2c09e28047a7dbf50f4fb7f8a81eb1c8c14de832949b9c670eeb6cd55770", + "typeString": "literal_string \"Invalid Mmr Proof\"" + } + ], + "id": 57980, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8336:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8336:105:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57991, + "nodeType": "ExpressionStatement", + "src": "8336:105:49" + } + ] + }, + "documentation": { + "id": 57921, + "nodeType": "StructuredDocumentation", + "src": "7815:33:49", + "text": "Stack too deep, sigh solidity" + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyMmrLeaf", + "nameLocation": "7862:13:49", + "parameters": { + "id": 57930, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57924, + "mutability": "mutable", + "name": "trustedState", + "nameLocation": "7903:12:49", + "nodeType": "VariableDeclaration", + "scope": 57993, + "src": "7876:39:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_memory_ptr", + "typeString": "struct BeefyConsensusState" + }, + "typeName": { + "id": 57923, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57922, + "name": "BeefyConsensusState", + "nameLocations": [ + "7876:19:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57382, + "src": "7876:19:49" + }, + "referencedDeclaration": 57382, + "src": "7876:19:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BeefyConsensusState_$57382_storage_ptr", + "typeString": "struct BeefyConsensusState" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57927, + "mutability": "mutable", + "name": "relay", + "nameLocation": "7940:5:49", + "nodeType": "VariableDeclaration", + "scope": 57993, + "src": "7917:28:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_memory_ptr", + "typeString": "struct RelayChainProof" + }, + "typeName": { + "id": 57926, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57925, + "name": "RelayChainProof", + "nameLocations": [ + "7917:15:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57464, + "src": "7917:15:49" + }, + "referencedDeclaration": 57464, + "src": "7917:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RelayChainProof_$57464_storage_ptr", + "typeString": "struct RelayChainProof" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57929, + "mutability": "mutable", + "name": "mmrRoot", + "nameLocation": "7955:7:49", + "nodeType": "VariableDeclaration", + "scope": 57993, + "src": "7947:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57928, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7947:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7875:88:49" + }, + "returnParameters": { + "id": 57931, + "nodeType": "ParameterList", + "parameters": [], + "src": "7997:0:49" + }, + "scope": 58244, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 58197, + "nodeType": "FunctionDefinition", + "src": "8561:1716:49", + "nodes": [], + "body": { + "id": 58196, + "nodeType": "Block", + "src": "8721:1556:49", + "nodes": [], + "statements": [ + { + "assignments": [ + 58009 + ], + "declarations": [ + { + "constant": false, + "id": 58009, + "mutability": "mutable", + "name": "leaves", + "nameLocation": "8745:6:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "8731:20:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node[]" + }, + "typeName": { + "baseType": { + "id": 58007, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58006, + "name": "Node", + "nameLocations": [ + "8731:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "8731:4:49" + }, + "referencedDeclaration": 49043, + "src": "8731:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 58008, + "nodeType": "ArrayTypeName", + "src": "8731:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + }, + "visibility": "internal" + } + ], + "id": 58016, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 58014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8765:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 58013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "8754:10:49", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct Node memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 58011, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58010, + "name": "Node", + "nameLocations": [ + "8758:4:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49043, + "src": "8758:4:49" + }, + "referencedDeclaration": 49043, + "src": "8758:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_storage_ptr", + "typeString": "struct Node" + } + }, + "id": 58012, + "nodeType": "ArrayTypeName", + "src": "8758:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_storage_$dyn_storage_ptr", + "typeString": "struct Node[]" + } + } + }, + "id": 58015, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8754:13:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8731:36:49" + }, + { + "assignments": [ + 58019 + ], + "declarations": [ + { + "constant": false, + "id": 58019, + "mutability": "mutable", + "name": "para", + "nameLocation": "8794:4:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "8777:21:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain" + }, + "typeName": { + "id": 58018, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58017, + "name": "Parachain", + "nameLocations": [ + "8777:9:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57474, + "src": "8777:9:49" + }, + "referencedDeclaration": 57474, + "src": "8777:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_storage_ptr", + "typeString": "struct Parachain" + } + }, + "visibility": "internal" + } + ], + "id": 58022, + "initialValue": { + "expression": { + "id": 58020, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57999, + "src": "8801:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + }, + "id": 58021, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8807:9:49", + "memberName": "parachain", + "nodeType": "MemberAccess", + "referencedDeclaration": 57477, + "src": "8801:15:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8777:39:49" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58023, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "8830:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58024, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8835:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57470, + "src": "8830:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 58025, + "name": "_paraId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57523, + "src": "8841:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8830:18:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58032, + "nodeType": "IfStatement", + "src": "8826:73:49", + "trueBody": { + "id": 58031, + "nodeType": "Block", + "src": "8850:49:49", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "556e6b6e6f776e20706172614964", + "id": 58028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8871:16:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9f20dabc1079979935e6b023042a04ee01fec2cc5913c0a770bdf48173dd43b0", + "typeString": "literal_string \"Unknown paraId\"" + }, + "value": "Unknown paraId" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9f20dabc1079979935e6b023042a04ee01fec2cc5913c0a770bdf48173dd43b0", + "typeString": "literal_string \"Unknown paraId\"" + } + ], + "id": 58027, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "8864:6:49", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 58029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8864:24:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58030, + "nodeType": "ExpressionStatement", + "src": "8864:24:49" + } + ] + } + }, + { + "assignments": [ + 58035 + ], + "declarations": [ + { + "constant": false, + "id": 58035, + "mutability": "mutable", + "name": "header", + "nameLocation": "8923:6:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "8909:20:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header" + }, + "typeName": { + "id": 58034, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58033, + "name": "Header", + "nameLocations": [ + "8909:6:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 59010, + "src": "8909:6:49" + }, + "referencedDeclaration": 59010, + "src": "8909:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_storage_ptr", + "typeString": "struct Header" + } + }, + "visibility": "internal" + } + ], + "id": 58041, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58038, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "8951:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58039, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8956:6:49", + "memberName": "header", + "nodeType": "MemberAccess", + "referencedDeclaration": 57473, + "src": "8951:11:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58036, + "name": "Codec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58968, + "src": "8932:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Codec_$58968_$", + "typeString": "type(library Codec)" + } + }, + "id": 58037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8938:12:49", + "memberName": "DecodeHeader", + "nodeType": "MemberAccess", + "referencedDeclaration": 58657, + "src": "8932:18:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Header_$59010_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (struct Header memory)" + } + }, + "id": 58040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8932:31:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8909:54:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58043, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "8981:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58044, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8988:6:49", + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": 59001, + "src": "8981:13:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 58045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8998:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8981:18:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "47656e6573697320626c6f636b2073686f756c64206e6f7420626520696e636c75646564", + "id": 58047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9001:38:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9af7c094aeeabc375a360ac9adb5ac74d54b464117d01ecb49f0ed7c3b81a60b", + "typeString": "literal_string \"Genesis block should not be included\"" + }, + "value": "Genesis block should not be included" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9af7c094aeeabc375a360ac9adb5ac74d54b464117d01ecb49f0ed7c3b81a60b", + "typeString": "literal_string \"Genesis block should not be included\"" + } + ], + "id": 58042, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8973:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8973:67:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58049, + "nodeType": "ExpressionStatement", + "src": "8973:67:49" + }, + { + "assignments": [ + 58051 + ], + "declarations": [ + { + "constant": false, + "id": 58051, + "mutability": "mutable", + "name": "commitment", + "nameLocation": "9107:10:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "9099:18:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58050, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9099:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58052, + "nodeType": "VariableDeclarationStatement", + "src": "9099:18:49" + }, + { + "assignments": [ + 58054 + ], + "declarations": [ + { + "constant": false, + "id": 58054, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "9135:9:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "9127:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58053, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9127:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58055, + "nodeType": "VariableDeclarationStatement", + "src": "9127:17:49" + }, + { + "body": { + "id": 58130, + "nodeType": "Block", + "src": "9206:529:49", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58068, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9224:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58069, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9231:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9224:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58071, + "indexExpression": { + "id": 58070, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9239:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9224:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58072, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9242:11:49", + "memberName": "isConsensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 58982, + "src": "9224:29:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 58080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58073, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9257:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58074, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9264:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9257:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58076, + "indexExpression": { + "id": 58075, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9272:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9257:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58077, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9275:9:49", + "memberName": "consensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 58985, + "src": "9257:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DigestItem_$58975_memory_ptr", + "typeString": "struct DigestItem memory" + } + }, + "id": 58078, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9285:11:49", + "memberName": "consensusId", + "nodeType": "MemberAccess", + "referencedDeclaration": 58972, + "src": "9257:39:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 58079, + "name": "ISMP_CONSENSUS_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57514, + "src": "9300:17:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9257:60:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9224:93:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58095, + "nodeType": "IfStatement", + "src": "9220:233:49", + "trueBody": { + "id": 58094, + "nodeType": "Block", + "src": "9319:134:49", + "statements": [ + { + "expression": { + "id": 58092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 58082, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58051, + "src": "9376:10:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58085, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9405:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9412:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9405:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58088, + "indexExpression": { + "id": 58087, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9420:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9405:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58089, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9423:9:49", + "memberName": "consensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 58985, + "src": "9405:27:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DigestItem_$58975_memory_ptr", + "typeString": "struct DigestItem memory" + } + }, + "id": 58090, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9433:4:49", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 58974, + "src": "9405:32:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58083, + "name": "Bytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51191, + "src": "9389:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Bytes_$51191_$", + "typeString": "type(library Bytes)" + } + }, + "id": 58084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9395:9:49", + "memberName": "toBytes32", + "nodeType": "MemberAccess", + "referencedDeclaration": 50869, + "src": "9389:15:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 58091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9389:49:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "9376:62:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 58093, + "nodeType": "ExpressionStatement", + "src": "9376:62:49" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58096, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9471:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9478:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9471:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58099, + "indexExpression": { + "id": 58098, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9486:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9471:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58100, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9489:12:49", + "memberName": "isPreRuntime", + "nodeType": "MemberAccess", + "referencedDeclaration": 58977, + "src": "9471:30:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 58108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58101, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9505:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58102, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9512:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9505:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58104, + "indexExpression": { + "id": 58103, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9520:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9505:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58105, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9523:10:49", + "memberName": "preruntime", + "nodeType": "MemberAccess", + "referencedDeclaration": 58980, + "src": "9505:28:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DigestItem_$58975_memory_ptr", + "typeString": "struct DigestItem memory" + } + }, + "id": 58106, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9534:11:49", + "memberName": "consensusId", + "nodeType": "MemberAccess", + "referencedDeclaration": 58972, + "src": "9505:40:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 58107, + "name": "AURA_CONSENSUS_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57521, + "src": "9549:17:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "9505:61:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9471:95:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58129, + "nodeType": "IfStatement", + "src": "9467:258:49", + "trueBody": { + "id": 58128, + "nodeType": "Block", + "src": "9568:157:49", + "statements": [ + { + "assignments": [ + 58111 + ], + "declarations": [ + { + "constant": false, + "id": 58111, + "mutability": "mutable", + "name": "slot", + "nameLocation": "9594:4:49", + "nodeType": "VariableDeclaration", + "scope": 58128, + "src": "9586:12:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9586:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58121, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 58114, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9626:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58115, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9633:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9626:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58117, + "indexExpression": { + "id": 58116, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9641:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9626:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Digest_$58997_memory_ptr", + "typeString": "struct Digest memory" + } + }, + "id": 58118, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9644:10:49", + "memberName": "preruntime", + "nodeType": "MemberAccess", + "referencedDeclaration": 58980, + "src": "9626:28:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DigestItem_$58975_memory_ptr", + "typeString": "struct DigestItem memory" + } + }, + "id": 58119, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9655:4:49", + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 58974, + "src": "9626:33:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58112, + "name": "ScaleCodec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 54317, + "src": "9601:10:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ScaleCodec_$54317_$", + "typeString": "type(library ScaleCodec)" + } + }, + "id": 58113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9612:13:49", + "memberName": "decodeUint256", + "nodeType": "MemberAccess", + "referencedDeclaration": 53451, + "src": "9601:24:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (bytes memory) pure returns (uint256)" + } + }, + "id": 58120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9601:59:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9586:74:49" + }, + { + "expression": { + "id": 58126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 58122, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58054, + "src": "9678:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58123, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58111, + "src": "9690:4:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 58124, + "name": "SLOT_DURATION", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57500, + "src": "9697:13:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9690:20:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9678:32:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58127, + "nodeType": "ExpressionStatement", + "src": "9678:32:49" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58060, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9174:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "expression": { + "id": 58061, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "9178:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58062, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9185:7:49", + "memberName": "digests", + "nodeType": "MemberAccess", + "referencedDeclaration": 59009, + "src": "9178:14:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Digest_$58997_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Digest memory[] memory" + } + }, + "id": 58063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9193:6:49", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9178:21:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9174:25:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58131, + "initializationExpression": { + "assignments": [ + 58057 + ], + "declarations": [ + { + "constant": false, + "id": 58057, + "mutability": "mutable", + "name": "j", + "nameLocation": "9167:1:49", + "nodeType": "VariableDeclaration", + "scope": 58131, + "src": "9159:9:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58056, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9159:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58059, + "initialValue": { + "hexValue": "30", + "id": 58058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9171:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9159:13:49" + }, + "loopExpression": { + "expression": { + "id": 58066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9201:3:49", + "subExpression": { + "id": 58065, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58057, + "src": "9201:1:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58067, + "nodeType": "ExpressionStatement", + "src": "9201:3:49" + }, + "nodeType": "ForStatement", + "src": "9154:581:49" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58133, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58054, + "src": "9752:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 58134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9765:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9752:14:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "74696d657374616d70206e6f7420666f756e6421", + "id": 58136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9768:22:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9cfee08cd968873fafd45f0f97e173a4e35aa1b08034ae611658469c3b5c6960", + "typeString": "literal_string \"timestamp not found!\"" + }, + "value": "timestamp not found!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9cfee08cd968873fafd45f0f97e173a4e35aa1b08034ae611658469c3b5c6960", + "typeString": "literal_string \"timestamp not found!\"" + } + ], + "id": 58132, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9744:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9744:47:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58138, + "nodeType": "ExpressionStatement", + "src": "9744:47:49" + }, + { + "expression": { + "id": 58165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 58139, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58009, + "src": "9802:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + }, + "id": 58141, + "indexExpression": { + "hexValue": "30", + "id": 58140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9809:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9802:9:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 58143, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "9832:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58144, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9837:5:49", + "memberName": "index", + "nodeType": "MemberAccess", + "referencedDeclaration": 57467, + "src": "9832:10:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 58153, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "9906:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58154, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9911:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57470, + "src": "9906:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 58152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9899:6:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 58151, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "9899:6:49", + "typeDescriptions": {} + } + }, + "id": 58155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9899:15:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "expression": { + "id": 58149, + "name": "ScaleCodec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 54317, + "src": "9879:10:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ScaleCodec_$54317_$", + "typeString": "type(library ScaleCodec)" + } + }, + "id": 58150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9890:8:49", + "memberName": "encode32", + "nodeType": "MemberAccess", + "referencedDeclaration": 54284, + "src": "9879:19:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint32_$returns$_t_bytes4_$", + "typeString": "function (uint32) pure returns (bytes4)" + } + }, + "id": 58156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9879:36:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "arguments": [ + { + "expression": { + "id": 58159, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "9940:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58160, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9945:6:49", + "memberName": "header", + "nodeType": "MemberAccess", + "referencedDeclaration": 57473, + "src": "9940:11:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58157, + "name": "ScaleCodec", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 54317, + "src": "9917:10:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ScaleCodec_$54317_$", + "typeString": "type(library ScaleCodec)" + } + }, + "id": 58158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9928:11:49", + "memberName": "encodeBytes", + "nodeType": "MemberAccess", + "referencedDeclaration": 54316, + "src": "9917:22:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) pure returns (bytes memory)" + } + }, + "id": 58161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9917:35:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9866:5:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58146, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9866:5:49", + "typeDescriptions": {} + } + }, + "id": 58148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9872:6:49", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "9866:12:49", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9866:87:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 58145, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "9856:9:49", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 58163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9856:98:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58142, + "name": "Node", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49043, + "src": "9814:4:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Node_$49043_storage_ptr_$", + "typeString": "type(struct Node storage pointer)" + } + }, + "id": 58164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9814:150:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "src": "9802:162:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Node_$49043_memory_ptr", + "typeString": "struct Node memory" + } + }, + "id": 58166, + "nodeType": "ExpressionStatement", + "src": "9802:162:49" + }, + { + "assignments": [ + 58169 + ], + "declarations": [ + { + "constant": false, + "id": 58169, + "mutability": "mutable", + "name": "intermediate", + "nameLocation": "10000:12:49", + "nodeType": "VariableDeclaration", + "scope": 58196, + "src": "9975:37:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 58168, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58167, + "name": "IntermediateState", + "nameLocations": [ + "9975:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "9975:17:49" + }, + "referencedDeclaration": 45360, + "src": "9975:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "id": 58182, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58171, + "name": "para", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58019, + "src": "10045:4:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Parachain_$57474_memory_ptr", + "typeString": "struct Parachain memory" + } + }, + "id": 58172, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10050:2:49", + "memberName": "id", + "nodeType": "MemberAccess", + "referencedDeclaration": 57470, + "src": "10045:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 58173, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "10054:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58174, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10061:6:49", + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": 59001, + "src": "10054:13:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 58176, + "name": "timestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58054, + "src": "10085:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 58177, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58051, + "src": "10096:10:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 58178, + "name": "header", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58035, + "src": "10108:6:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Header_$59010_memory_ptr", + "typeString": "struct Header memory" + } + }, + "id": 58179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10115:9:49", + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 59003, + "src": "10108:16:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58175, + "name": "StateCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45347, + "src": "10069:15:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_StateCommitment_$45347_storage_ptr_$", + "typeString": "type(struct StateCommitment storage pointer)" + } + }, + "id": 58180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10069:56:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + ], + "id": 58170, + "name": "IntermediateState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45360, + "src": "10027:17:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_IntermediateState_$45360_storage_ptr_$", + "typeString": "type(struct IntermediateState storage pointer)" + } + }, + "id": 58181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10027:99:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9975:151:49" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58186, + "name": "headsRoot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57996, + "src": "10174:9:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 58187, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57999, + "src": "10185:5:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof memory" + } + }, + "id": 58188, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10191:5:49", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 57482, + "src": "10185:11:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + } + }, + { + "id": 58189, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58009, + "src": "10198:6:49", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr", + "typeString": "struct Node memory[] memory" + } + ], + "expression": { + "id": 58184, + "name": "MerkleMultiProof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49805, + "src": "10145:16:49", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMultiProof_$49805_$", + "typeString": "type(library MerkleMultiProof)" + } + }, + "id": 58185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10162:11:49", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49069, + "src": "10145:28:49", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_array$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Node_$49043_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes32,struct Node memory[] memory[] memory,struct Node memory[] memory) pure returns (bool)" + } + }, + "id": 58190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10145:60:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "496e76616c69642070617261636861696e732068656164732070726f6f66", + "id": 58191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10207:32:49", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3ea235ebff98b15d4c2bd1501f2018125feb0c921df3813efe38f7b4647f78fd", + "typeString": "literal_string \"Invalid parachains heads proof\"" + }, + "value": "Invalid parachains heads proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3ea235ebff98b15d4c2bd1501f2018125feb0c921df3813efe38f7b4647f78fd", + "typeString": "literal_string \"Invalid parachains heads proof\"" + } + ], + "id": 58183, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10137:7:49", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10137:103:49", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58193, + "nodeType": "ExpressionStatement", + "src": "10137:103:49" + }, + { + "expression": { + "id": 58194, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58169, + "src": "10258:12:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "functionReturnParameters": 58004, + "id": 58195, + "nodeType": "Return", + "src": "10251:19:49" + } + ] + }, + "documentation": { + "id": 57994, + "nodeType": "StructuredDocumentation", + "src": "8454:102:49", + "text": "Verifies that some parachain header has been finalized, given the current trusted consensus state." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyParachainHeaderProof", + "nameLocation": "8570:26:49", + "parameters": { + "id": 58000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57996, + "mutability": "mutable", + "name": "headsRoot", + "nameLocation": "8605:9:49", + "nodeType": "VariableDeclaration", + "scope": 58197, + "src": "8597:17:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57995, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8597:7:49", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57999, + "mutability": "mutable", + "name": "proof", + "nameLocation": "8638:5:49", + "nodeType": "VariableDeclaration", + "scope": 58197, + "src": "8616:27:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_memory_ptr", + "typeString": "struct ParachainProof" + }, + "typeName": { + "id": 57998, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57997, + "name": "ParachainProof", + "nameLocations": [ + "8616:14:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57483, + "src": "8616:14:49" + }, + "referencedDeclaration": 57483, + "src": "8616:14:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ParachainProof_$57483_storage_ptr", + "typeString": "struct ParachainProof" + } + }, + "visibility": "internal" + } + ], + "src": "8596:48:49" + }, + "returnParameters": { + "id": 58004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58003, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58197, + "src": "8691:24:49", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 58002, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58001, + "name": "IntermediateState", + "nameLocations": [ + "8691:17:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "8691:17:49" + }, + "referencedDeclaration": 45360, + "src": "8691:17:49", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "src": "8690:26:49" + }, + "scope": 58244, + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "id": 58220, + "nodeType": "FunctionDefinition", + "src": "10363:251:49", + "nodes": [], + "body": { + "id": 58219, + "nodeType": "Block", + "src": "10460:154:49", + "nodes": [], + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58207, + "name": "activationBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58200, + "src": "10474:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 58208, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10493:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10474:20:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 58217, + "nodeType": "Block", + "src": "10546:62:49", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58213, + "name": "parentNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58202, + "src": "10567:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 58214, + "name": "activationBlock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58200, + "src": "10582:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10567:30:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 58206, + "id": 58216, + "nodeType": "Return", + "src": "10560:37:49" + } + ] + }, + "id": 58218, + "nodeType": "IfStatement", + "src": "10470:138:49", + "trueBody": { + "id": 58212, + "nodeType": "Block", + "src": "10496:44:49", + "statements": [ + { + "expression": { + "id": 58210, + "name": "parentNumber", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58202, + "src": "10517:12:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 58206, + "id": 58211, + "nodeType": "Return", + "src": "10510:19:49" + } + ] + } + } + ] + }, + "documentation": { + "id": 58198, + "nodeType": "StructuredDocumentation", + "src": "10283:75:49", + "text": "Calculates the mmr leaf index for a block whose parent number is given." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "leafIndex", + "nameLocation": "10372:9:49", + "parameters": { + "id": 58203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58200, + "mutability": "mutable", + "name": "activationBlock", + "nameLocation": "10390:15:49", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "10382:23:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58199, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10382:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58202, + "mutability": "mutable", + "name": "parentNumber", + "nameLocation": "10415:12:49", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "10407:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10407:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10381:47:49" + }, + "returnParameters": { + "id": 58206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58205, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "10451:7:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58204, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10451:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10450:9:49" + }, + "scope": 58244, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "id": 58243, + "nodeType": "FunctionDefinition", + "src": "10667:145:49", + "nodes": [], + "body": { + "id": 58242, + "nodeType": "Block", + "src": "10760:52:49", + "nodes": [], + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58230, + "name": "len", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58223, + "src": "10777:3:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 58231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10786:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 58232, + "name": "total", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58225, + "src": "10790:5:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10786:9:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 58234, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10785:11:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "33", + "id": 58235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10799:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "10785:15:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 58237, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10784:17:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 58238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10804:1:49", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10784:21:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10777:28:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 58229, + "id": 58241, + "nodeType": "Return", + "src": "10770:35:49" + } + ] + }, + "documentation": { + "id": 58221, + "nodeType": "StructuredDocumentation", + "src": "10620:42:49", + "text": "Check for supermajority participation." + }, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkParticipationThreshold", + "nameLocation": "10676:27:49", + "parameters": { + "id": 58226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58223, + "mutability": "mutable", + "name": "len", + "nameLocation": "10712:3:49", + "nodeType": "VariableDeclaration", + "scope": 58243, + "src": "10704:11:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58222, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10704:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58225, + "mutability": "mutable", + "name": "total", + "nameLocation": "10725:5:49", + "nodeType": "VariableDeclaration", + "scope": 58243, + "src": "10717:13:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58224, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10717:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10703:28:49" + }, + "returnParameters": { + "id": 58229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58228, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 58243, + "src": "10754:4:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 58227, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10754:4:49", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10753:6:49" + }, + "scope": 58244, + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 57495, + "name": "IConsensusClient", + "nameLocations": [ + "2511:16:49" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45374, + "src": "2511:16:49" + }, + "id": 57496, + "nodeType": "InheritanceSpecifier", + "src": "2511:16:49" + } + ], + "canonicalName": "BeefyV1", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 58244, + 45374 + ], + "name": "BeefyV1", + "nameLocation": "2500:7:49", + "scope": 58245, + "usedErrors": [] + } + ], + "license": "UNLICENSED" + }, + "id": 49 +} \ No newline at end of file diff --git a/evm/forge/src/abi/HandlerV1.json b/evm/forge/src/abi/HandlerV1.json new file mode 100644 index 000000000..b4c3c9056 --- /dev/null +++ b/evm/forge/src/abi/HandlerV1.json @@ -0,0 +1,14772 @@ +{ + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "name": "StateMachineUpdated", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "bytes", + "name": "proof", + "type": "bytes" + } + ], + "name": "handleConsensus", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "internalType": "bytes[]", + "name": "proof", + "type": "bytes[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes[]", + "name": "keys", + "type": "bytes[]" + }, + { + "internalType": "uint64", + "name": "height", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct GetRequest[]", + "name": "requests", + "type": "tuple[]" + } + ], + "internalType": "struct GetResponseMessage", + "name": "message", + "type": "tuple" + } + ], + "name": "handleGetResponses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes[]", + "name": "keys", + "type": "bytes[]" + }, + { + "internalType": "uint64", + "name": "height", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct GetRequest[]", + "name": "timeouts", + "type": "tuple[]" + } + ], + "internalType": "struct GetTimeoutMessage", + "name": "message", + "type": "tuple" + } + ], + "name": "handleGetTimeouts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "multiproof", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "leafCount", + "type": "uint256" + } + ], + "internalType": "struct Proof", + "name": "proof", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct PostRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + } + ], + "internalType": "struct PostRequestLeaf[]", + "name": "requests", + "type": "tuple[]" + } + ], + "internalType": "struct PostRequestMessage", + "name": "request", + "type": "tuple" + } + ], + "name": "handlePostRequests", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple" + }, + { + "internalType": "bytes32[]", + "name": "multiproof", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "leafCount", + "type": "uint256" + } + ], + "internalType": "struct Proof", + "name": "proof", + "type": "tuple" + }, + { + "components": [ + { + "components": [ + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct PostRequest", + "name": "request", + "type": "tuple" + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ], + "internalType": "struct PostResponse", + "name": "response", + "type": "tuple" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + } + ], + "internalType": "struct PostResponseLeaf[]", + "name": "responses", + "type": "tuple[]" + } + ], + "internalType": "struct PostResponseMessage", + "name": "response", + "type": "tuple" + } + ], + "name": "handlePostResponses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "components": [ + { + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ], + "internalType": "struct PostRequest[]", + "name": "timeouts", + "type": "tuple[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple" + }, + { + "internalType": "bytes[]", + "name": "proof", + "type": "bytes[]" + } + ], + "internalType": "struct PostTimeoutMessage", + "name": "message", + "type": "tuple" + } + ], + "name": "handlePostTimeouts", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": { + "object": "0x608060405234801561001057600080fd5b50614031806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806320d71c7a14610067578063873ce1ce1461007c578063ac269bd61461008f578063bb1689be146100a2578063d95e4fbb146100b5578063fda626c3146100c8575b600080fd5b61007a610075366004612cdb565b6100db565b005b61007a61008a3660046130b4565b610819565b61007a61009d36600461316b565b610f43565b61007a6100b0366004613202565b6111e7565b61007a6100c3366004613251565b611a82565b61007a6100d6366004613378565b611f43565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014091906134d8565b156101665760405162461bcd60e51b815260040161015d90613501565b60405180910390fd5b815151604051631a880a9360e01b81526000916001600160a01b03861691631a880a93916101969160040161352b565b6020604051808303816000875af11580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023d9190613542565b6102479190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad9190613542565b81116102cb5760405162461bcd60e51b815260040161015d90613584565b6020830151516000816001600160401b038111156102eb576102eb612972565b60405190808252806020026020018201604052801561033657816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103095790505b50905060005b828110156105f95760008660200151828151811061035c5761035c6135c7565b602002602001015190506103db886001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af11580156103a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103d1919081019061364e565b8251515190612698565b6104365760405162461bcd60e51b815260206004820152602660248201527f4948616e646c65723a20496e76616c696420726573706f6e73652064657374696044820152653730ba34b7b760d11b606482015260840161015d565b805151600090610445906126ca565b604051630da2fd1960e21b8152600481018290529091506001600160a01b038a169063368bf464906024016020604051808303816000875af115801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b391906134d8565b6104cf5760405162461bcd60e51b815260040161015d90613682565b60006104de8360000151612721565b604051632211f1dd60e01b8152600481018290529091506001600160a01b038b1690632211f1dd906024016020604051808303816000875af1158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c91906134d8565b156105a35760405162461bcd60e51b815260206004820152602160248201527f4948616e646c65723a204475706c696361746520506f737420726573706f6e736044820152606560f81b606482015260840161015d565b60405180606001604052808460400151815260200184602001518152602001828152508585815181106105d8576105d86135c7565b602002602001018190525050505080806105f1906136b9565b91505061033c565b5084515160405163a70a8c4760e01b81526000916001600160a01b0389169163a70a8c479161062a9160040161352b565b6060604051808303816000875af1158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066d919061370c565b602001519050806106905760405162461bcd60e51b815260040161015d90613728565b85516020810151604091820151915163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9263722e206d926106d59286928891600401613769565b602060405180830381865af41580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906134d8565b61076c5760405162461bcd60e51b815260206004820152602160248201527f4948616e646c65723a20496e76616c696420726573706f6e73652070726f6f666044820152607360f81b606482015260840161015d565b60005b8381101561080f5760008760200151828151811061078f5761078f6135c7565b60200260200101519050886001600160a01b0316638cf66b9282600001516040518263ffffffff1660e01b81526004016107c99190613916565b600060405180830381600087803b1580156107e357600080fd5b505af11580156107f7573d6000803e3d6000fd5b50505050508080610807906136b9565b91505061076f565b5050505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e91906134d8565b1561089b5760405162461bcd60e51b815260040161015d90613501565b6020820151604051631a880a9360e01b81526000916001600160a01b03861691631a880a93916108cd9160040161352b565b6020604051808303816000875af11580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190613542565b61097e9190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156109c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e49190613542565b8111610a025760405162461bcd60e51b815260040161015d90613584565b602083015160405163a70a8c4760e01b81526000916001600160a01b0387169163a70a8c4791610a349160040161352b565b6060604051808303816000875af1158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a77919061370c565b604081015190915080610a9c5760405162461bcd60e51b815260040161015d90613728565b604085015151855160005b82811015610f3857600088604001518281518110610ac757610ac76135c7565b60200260200101519050610b448a6001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af1158015610b14573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3c919081019061364e565b825190612698565b610ba35760405162461bcd60e51b815260206004820152602a60248201527f4948616e646c65723a20496e76616c69642047455420726573706f6e7365206460448201526932b9ba34b730ba34b7b760b11b606482015260840161015d565b6000610bae82612764565b604051630da2fd1960e21b8152600481018290529091506001600160a01b038c169063368bf464906024016020604051808303816000875af1158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c91906134d8565b610c685760405162461bcd60e51b815260206004820152601d60248201527f4948616e646c65723a20556e6b6e6f776e204745542072657175657374000000604482015260640161015d565b60808201516001600160401b03161580610cf157508a6001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190613542565b82608001516001600160401b0316115b610d3d5760405162461bcd60e51b815260206004820152601f60248201527f4948616e646c65723a2047455420726571756573742074696d6564206f757400604482015260640161015d565b600073__$3557184f57f01f44bdc1609b323054fd0c$__6355028f6f88878660a0015186604051602001610d7391815260200190565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610da194939291906139a4565b600060405180830381865af4158015610dbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610de691908101906139ee565b60408051808201909152848152602081018290529091506001600160a01b038d16632211f1dd610e1583612836565b6040518263ffffffff1660e01b8152600401610e3391815260200190565b6020604051808303816000875af1158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7691906134d8565b15610ec35760405162461bcd60e51b815260206004820181905260248201527f4948616e646c65723a204475706c69636174652047455420726573706f6e7365604482015260640161015d565b60405163f073609160e01b81526001600160a01b038e169063f073609190610eef908490600401613bcb565b600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050505050508080610f30906136b9565b915050610aa7565b505050505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa891906134d8565b15610fc55760405162461bcd60e51b815260040161015d90613501565b81515160005b818110156111e057600084600001518281518110610feb57610feb6135c7565b60200260200101519050600061100082612764565b604051630da2fd1960e21b8152600481018290529091506001600160a01b0388169063368bf464906024016020604051808303816000875af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e91906134d8565b61108a5760405162461bcd60e51b815260040161015d90613682565b60808201516001600160401b031615801590611115575081608001516001600160401b0316876001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111139190613542565b115b61116d5760405162461bcd60e51b815260206004820152602360248201527f4948616e646c65723a204745542072657175657374206e6f742074696d6564206044820152621bdd5d60ea1b606482015260840161015d565b6040516384566a5d60e01b81526001600160a01b038816906384566a5d90611199908590600401613c71565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b50505050505080806111d8906136b9565b915050610fcb565b5050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c91906134d8565b156112695760405162461bcd60e51b815260040161015d90613501565b826001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190613542565b836001600160a01b0316639a8425bc6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113959190613542565b61139f9190613571565b116113bc5760405162461bcd60e51b815260040161015d90613584565b826001600160a01b031663d40784c76040518163ffffffff1660e01b81526004016020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190613542565b836001600160a01b0316639a8425bc6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114849190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e89190613542565b6114f29190613571565b10806115725750826001600160a01b031663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190613c84565b6001600160a01b0316336001600160a01b0316145b61158e5760405162461bcd60e51b815260040161015d90613584565b600080846001600160a01b0316632476132b6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190613c84565b6001600160a01b0316637d755598866001600160a01b031663bbad99d46040518163ffffffff1660e01b81526004016000604051808303816000875af1158015611643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261166b919081019061364e565b866040518363ffffffff1660e01b8152600401611689929190613ca1565b6000604051808303816000875af11580156116a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d09190810190613ccf565b604051630b4974cf60e41b815291935091506001600160a01b0386169063b4974cf090611701908590600401613d51565b600060405180830381600087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b50505050846001600160a01b031663d860cb47866001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a69190613542565b6040518263ffffffff1660e01b81526004016117c491815260200190565b600060405180830381600087803b1580156117de57600080fd5b505af11580156117f2573d6000803e3d6000fd5b50505050846001600160a01b03166356b655976040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a9190613542565b816020015111156111e05760408051808201825282518152602080840151818301908152848401518451632acf7f4f60e11b81528451600482015291516024830152805160448301529182015160648201529201516084830152906001600160a01b0387169063559efe9e9060a401600060405180830381600087803b1580156118e357600080fd5b505af11580156118f7573d6000803e3d6000fd5b50505050856001600160a01b03166314863dcb82886001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190613542565b6040516001600160e01b031960e085901b1681528251600482015260209092015160248301526044820152606401600060405180830381600087803b1580156119b757600080fd5b505af11580156119cb573d6000803e3d6000fd5b505050602082015160405163a0756ecd60e01b81526001600160a01b038916925063a0756ecd91611a029160040190815260200190565b600060405180830381600087803b158015611a1c57600080fd5b505af1158015611a30573d6000803e3d6000fd5b5050825160208401516040517ff12a80290a43822c9acabb2a766d41728f06fe4c0497e4a7bb3f54292e4cb0da9450611a729350918252602082015260400190565b60405180910390a1505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae791906134d8565b15611b045760405162461bcd60e51b815260040161015d90613501565b602082015160405163a70a8c4760e01b81526000916001600160a01b0386169163a70a8c4791611b369160040161352b565b6060604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061370c565b83515190915060005b81811015611f3b57600085600001518281518110611ba257611ba26135c7565b602002602001015190508060a001516001600160401b0316600014158015611bda57508060a001516001600160401b03168460000151115b611c1e5760405162461bcd60e51b815260206004820152601560248201527414995c5d595cdd081b9bdd081d1a5b5959081bdd5d605a1b604482015260640161015d565b6000611c29826126ca565b604051630da2fd1960e21b8152600481018290529091506001600160a01b0389169063368bf464906024016020604051808303816000875af1158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9791906134d8565b611cb35760405162461bcd60e51b815260040161015d90613682565b604080516001808252818301909252600091816020015b6060815260200190600190039081611cca57505060408051808201825260208082527f103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a818301528251908101869052929350910160408051601f1981840301815290829052611d3c9291602001613d64565b604051602081830303815290604052818581518110611d5d57611d5d6135c7565b6020026020010181905250600073__$3557184f57f01f44bdc1609b323054fd0c$__631475ff4588604001518b60400151856040518463ffffffff1660e01b8152600401611dad93929190613d93565b600060405180830381865af4158015611dca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611df291908101906139ee565b600081518110611e0457611e046135c7565b60200260200101519050611e6060006001600160401b03811115611e2a57611e2a612972565b6040519080825280601f01601f191660200182016040528015611e54576020820181803683370190505b50602083015190612698565b611ebb5760405162461bcd60e51b815260206004820152602660248201527f4948616e646c65723a20496e76616c6964206e6f6e2d6d656d6265727368697060448201526510383937b7b360d11b606482015260840161015d565b6040805160208101825285815290516312dde20360e11b81526001600160a01b038c16916325bbc40691611ef29190600401613dc8565b600060405180830381600087803b158015611f0c57600080fd5b505af1158015611f20573d6000803e3d6000fd5b50505050505050508080611f33906136b9565b915050611b82565b505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa891906134d8565b15611fc55760405162461bcd60e51b815260040161015d90613501565b815151604051631a880a9360e01b81526000916001600160a01b03861691631a880a9391611ff59160040161352b565b6020604051808303816000875af1158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613542565b6120a69190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210c9190613542565b811161212a5760405162461bcd60e51b815260040161015d90613584565b6020830151516000816001600160401b0381111561214a5761214a612972565b60405190808252806020026020018201604052801561219557816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816121685790505b50905060005b8281101561248c576000866020015182815181106121bb576121bb6135c7565b6020026020010151905061223c886001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af1158015612208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612230919081019061364e565b82516020015190612698565b6122965760405162461bcd60e51b815260206004820152602560248201527f4948616e646c65723a20496e76616c696420726571756573742064657374696e60448201526430ba34b7b760d91b606482015260840161015d565b805160a001516001600160401b031615806123215750876001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190613542565b815160a001516001600160401b0316115b61236d5760405162461bcd60e51b815260206004820152601b60248201527f4948616e646c65723a20526571756573742074696d6564206f75740000000000604482015260640161015d565b600061237c82600001516126ca565b604051630cb33d1f60e11b8152600481018290529091506001600160a01b038a16906319667a3e906024016020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea91906134d8565b156124375760405162461bcd60e51b815260206004820152601b60248201527f4948616e646c65723a204475706c696361746520726571756573740000000000604482015260640161015d565b604051806060016040528083604001518152602001836020015181526020018281525084848151811061246c5761246c6135c7565b602002602001018190525050508080612484906136b9565b91505061219b565b5084515160405163a70a8c4760e01b81526000916001600160a01b0389169163a70a8c47916124bd9160040161352b565b6060604051808303816000875af11580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612500919061370c565b602001519050806125235760405162461bcd60e51b815260040161015d90613728565b85516020810151604091820151915163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9263722e206d926125689286928891600401613769565b602060405180830381865af4158015612585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a991906134d8565b6125f55760405162461bcd60e51b815260206004820181905260248201527f4948616e646c65723a20496e76616c696420726571756573742070726f6f6673604482015260640161015d565b60005b8381101561080f57600087602001518281518110612618576126186135c7565b60200260200101519050886001600160a01b0316633b8c2bf782600001516040518263ffffffff1660e01b81526004016126529190613de3565b600060405180830381600087803b15801561266c57600080fd5b505af1158015612680573d6000803e3d6000fd5b50505050508080612690906136b9565b9150506125f8565b600081518351146126ab575060006126c4565b825160208381018281209186019283209091145b925050505b92915050565b805160208083015160408085015160a08601516060870151608088015160c089015160e08a01519551600099612704999098979101613df6565b604051602081830303815290604052805190602001209050919050565b8051805160208083015160408085015160a086015160c08701516060880151608090980151868a0151945160009961270499989596949593949093909101613e9e565b6040805160208101909152600080825260a083015151909190825b818110156127db57828560a00151828151811061279e5761279e6135c7565b60200260200101516040516020016127b7929190613d64565b604051602081830303815290604052925080806127d3906136b9565b91505061277f565b508360000151846020015185604001518660c0015187608001518860600151878a60e00151604051602001612817989796959493929190613f4c565b6040516020818303038152906040528051906020012092505050919050565b600080826000015160a001516040516020016128529190613fe8565b60408051601f19818403018152828252855180516020828101519483015160c08401516080850151606086015160e0909601519699506000986128a49895979596939592949193928b92909101613f4c565b60408051601f1981840301815291905260208501515190915060005b81811015612949576000866020015182815181106128e0576128e06135c7565b602002602001015190508381600001518260200151604051602001612906929190613d64565b60408051601f19818403018152908290526129249291602001613d64565b6040516020818303038152906040529350508080612941906136b9565b9150506128c0565b505080516020909101209392505050565b6001600160a01b038116811461296f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156129aa576129aa612972565b60405290565b604051606081016001600160401b03811182821017156129aa576129aa612972565b60405161010081016001600160401b03811182821017156129aa576129aa612972565b604051601f8201601f191681016001600160401b0381118282101715612a1d57612a1d612972565b604052919050565b600060408284031215612a3757600080fd5b612a3f612988565b9050813581526020820135602082015292915050565b60006001600160401b03821115612a6e57612a6e612972565b5060051b60200190565b600060808284031215612a8a57600080fd5b612a926129b0565b9050612a9e8383612a25565b815260408201356001600160401b03811115612ab957600080fd5b8201601f81018413612aca57600080fd5b80356020612adf612ada83612a55565b6129f5565b82815260059290921b83018101918181019087841115612afe57600080fd5b938201935b83851015612b1c57843582529382019390820190612b03565b808387015250505050506060820135604082015292915050565b60006001600160401b03821115612b4f57612b4f612972565b50601f01601f191660200190565b600082601f830112612b6e57600080fd5b8135612b7c612ada82612b36565b818152846020838601011115612b9157600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160401b0381168114612bc557600080fd5b919050565b60006101008284031215612bdd57600080fd5b612be56129d2565b905081356001600160401b0380821115612bfe57600080fd5b612c0a85838601612b5d565b83526020840135915080821115612c2057600080fd5b612c2c85838601612b5d565b6020840152612c3d60408501612bae565b60408401526060840135915080821115612c5657600080fd5b612c6285838601612b5d565b60608401526080840135915080821115612c7b57600080fd5b612c8785838601612b5d565b6080840152612c9860a08501612bae565b60a084015260c0840135915080821115612cb157600080fd5b50612cbe84828501612b5d565b60c083015250612cd060e08301612bae565b60e082015292915050565b60008060408385031215612cee57600080fd5b612cf8833561295a565b823591506001600160401b038060208501351115612d1557600080fd5b6020840135840160408187031215612d2c57600080fd5b612d34612988565b8282351115612d4257600080fd5b612d4f8783358401612a78565b81528260208301351115612d6257600080fd5b60208201358201915086601f830112612d7a57600080fd5b612d87612ada8335612a55565b82358082526020808301929160051b850101891015612da557600080fd5b602084015b6020853560051b860101811015612e9b578581351115612dc957600080fd5b601f196060823587018c0382011215612de157600080fd5b612de96129b0565b8760208435890101351115612dfd57600080fd5b823587016020810135016040818e0384011215612e1957600080fd5b612e21612988565b92508860208201351115612e3457600080fd5b612e468d602080840135840101612bca565b83528860408201351115612e5957600080fd5b612e6c8d60206040840135840101612b5d565b602084810191909152928252506040833588018181013583850152606001359082015284529283019201612daa565b506020830152509396939550929350505050565b600082601f830112612ec057600080fd5b81356020612ed0612ada83612a55565b82815260059290921b84018101918181019086841115612eef57600080fd5b8286015b84811015612f2e5780356001600160401b03811115612f125760008081fd5b612f208986838b0101612b5d565b845250918301918301612ef3565b509695505050505050565b600082601f830112612f4a57600080fd5b81356020612f5a612ada83612a55565b82815260059290921b84018101918181019086841115612f7957600080fd5b8286015b84811015612f2e5780356001600160401b0380821115612f9d5760008081fd5b90880190610100828b03601f1901811315612fb85760008081fd5b612fc06129d2565b8784013583811115612fd25760008081fd5b612fe08d8a83880101612b5d565b82525060408085013584811115612ff75760008081fd5b6130058e8b83890101612b5d565b8a840152506060613017818701612bae565b828401526080915081860135858111156130315760008081fd5b61303f8f8c838a0101612b5d565b82850152505060a0613052818701612bae565b8284015260c09150818601358581111561306c5760008081fd5b61307a8f8c838a0101612eaf565b82850152505060e0935061308f848601612bae565b9082015261309e848301612bae565b9281019290925250845250918301918301612f7d565b600080604083850312156130c757600080fd5b82356130d28161295a565b915060208301356001600160401b03808211156130ee57600080fd5b908401906080828703121561310257600080fd5b61310a6129b0565b82358281111561311957600080fd5b61312588828601612eaf565b8252506131358760208501612a25565b602082015260608301358281111561314c57600080fd5b61315888828601612f39565b6040830152508093505050509250929050565b6000806040838503121561317e57600080fd5b82356131898161295a565b915060208301356001600160401b03808211156131a557600080fd5b90840190602082870312156131b957600080fd5b6040516020810181811083821117156131d4576131d4612972565b6040528235828111156131e657600080fd5b6131f288828601612f39565b8252508093505050509250929050565b6000806040838503121561321557600080fd5b82356132208161295a565b915060208301356001600160401b0381111561323b57600080fd5b61324785828601612b5d565b9150509250929050565b6000806040838503121561326457600080fd5b823561326f8161295a565b91506020838101356001600160401b038082111561328c57600080fd5b90850190608082880312156132a057600080fd5b6132a86129b0565b8235828111156132b757600080fd5b8301601f810189136132c857600080fd5b80356132d6612ada82612a55565b81815260059190911b8201860190868101908b8311156132f557600080fd5b8784015b8381101561332d578035878111156133115760008081fd5b61331f8e8b83890101612bca565b8452509188019188016132f9565b508085525050505061334188858501612a25565b84820152606083013593508184111561335957600080fd5b61336588858501612eaf565b6040820152809450505050509250929050565b6000806040838503121561338b57600080fd5b82356133968161295a565b91506020838101356001600160401b03808211156133b357600080fd5b90850190604082880312156133c757600080fd5b6133cf612988565b8235828111156133de57600080fd5b6133ea89828601612a78565b82525083830135828111156133fe57600080fd5b80840193505087601f84011261341357600080fd5b8235613421612ada82612a55565b81815260059190911b8401850190858101908a83111561344057600080fd5b8686015b838110156134c15780358681111561345b57600080fd5b87016060818e03601f190112156134725760008081fd5b61347a6129b0565b898201358881111561348c5760008081fd5b61349a8f8c83860101612bca565b8252506040828101358b830152606090920135918101919091528352918701918701613444565b508087850152505050809450505050509250929050565b6000602082840312156134ea57600080fd5b815180151581146134fa57600080fd5b9392505050565b60208082526010908201526f24a430b7323632b91d10333937bd32b760811b604082015260600190565b8151815260208083015190820152604081016126c4565b60006020828403121561355457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156126c4576126c461355b565b60208082526023908201527f4948616e646c65723a207374696c6c20696e206368616c6c656e6765207065726040820152621a5bd960ea1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60005b838110156135f85781810151838201526020016135e0565b50506000910152565b600082601f83011261361257600080fd5b8151613620612ada82612b36565b81815284602083860101111561363557600080fd5b6136468260208301602087016135dd565b949350505050565b60006020828403121561366057600080fd5b81516001600160401b0381111561367657600080fd5b61364684828501613601565b60208082526019908201527f4948616e646c65723a20556e6b6e6f776e207265717565737400000000000000604082015260600190565b6000600182016136cb576136cb61355b565b5060010190565b6000606082840312156136e457600080fd5b6136ec6129b0565b905081518152602082015160208201526040820151604082015292915050565b60006060828403121561371e57600080fd5b6134fa83836136d2565b60208082526021908201527f4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e646040820152602160f81b606082015260800190565b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156137aa5784518352938301939183019160010161378e565b505060409250848103838601528087518083528383019150838901925060005b818110156137f957835180518452858101518685015286015186840152928401926060909201916001016137ca565b50508094505050505082606083015295945050505050565b600081518084526138298160208601602086016135dd565b601f01601f19169290920160200192915050565b6000610100825181855261385382860182613811565b9150506020830151848203602086015261386d8282613811565b915050604083015161388a60408601826001600160401b03169052565b50606083015184820360608601526138a28282613811565b915050608083015184820360808601526138bc8282613811565b91505060a08301516138d960a08601826001600160401b03169052565b5060c083015184820360c08601526138f18282613811565b91505060e083015161390e60e08601826001600160401b03169052565b509392505050565b602081526000825160406020840152613932606084018261383d565b90506020840151601f198483030160408501526126bf8282613811565b600081518084526020808501808196508360051b8101915082860160005b85811015613997578284038952613985848351613811565b9885019893509084019060010161396d565b5091979650505050505050565b8481526080602082015260006139bd608083018661394f565b82810360408401526139cf818661394f565b905082810360608401526139e38185613811565b979650505050505050565b60006020808385031215613a0157600080fd5b82516001600160401b0380821115613a1857600080fd5b818501915085601f830112613a2c57600080fd5b8151613a3a612ada82612a55565b81815260059190911b83018401908481019088831115613a5957600080fd5b8585015b83811015613aec57805185811115613a755760008081fd5b86016040818c03601f1901811315613a8d5760008081fd5b613a95612988565b8983015188811115613aa75760008081fd5b613ab58e8c83870101613601565b825250908201519087821115613acb5760008081fd5b613ad98d8b84860101613601565b818b015285525050918601918601613a5d565b5098975050505050505050565b60006101008251818552613b0f82860182613811565b91505060208301518482036020860152613b298282613811565b9150506040830151613b4660408601826001600160401b03169052565b5060608301518482036060860152613b5e8282613811565b9150506080830151613b7b60808601826001600160401b03169052565b5060a083015184820360a0860152613b93828261394f565b91505060c0830151613bb060c08601826001600160401b03169052565b5060e083015161390e60e08601826001600160401b03169052565b60006020808352835160408083860152613be86060860183613af9565b83870151601f1987830381018489015281518084529294509085019184860190600581901b8601870160005b82811015613c62578488830301845285518051888452613c3689850182613811565b918b0151848303858d0152919050613c4e8183613811565b978b0197958b019593505050600101613c14565b509a9950505050505050505050565b6020815260006134fa6020830184613af9565b600060208284031215613c9657600080fd5b81516134fa8161295a565b604081526000613cb46040830185613811565b8281036020840152613cc68185613811565b95945050505050565b60008082840360c0811215613ce357600080fd5b83516001600160401b03811115613cf957600080fd5b613d0586828701613601565b93505060a0601f1982011215613d1a57600080fd5b50613d236129b0565b6020840151815260408401516020820152613d4185606086016136d2565b6040820152809150509250929050565b6020815260006134fa6020830184613811565b60008351613d768184602088016135dd565b835190830190613d8a8183602088016135dd565b01949350505050565b838152606060208201526000613dac606083018561394f565b8281036040840152613dbe818561394f565b9695505050505050565b6020815260008251602080840152613646604084018261383d565b6020815260006134fa602083018461383d565b60008951613e08818460208e016135dd565b895190830190613e1c818360208e016135dd565b60c08a811b6001600160c01b03199081169390920192835289901b811660088301528751613e51816010850160208c016135dd565b8751920191613e67816010850160208b016135dd565b8651920191613e7d816010850160208a016135dd565b60c09590951b16930160108101939093525050601801979650505050505050565b600089516020613eb18285838f016135dd565b8a5191840191613ec48184848f016135dd565b60c08b811b6001600160c01b0319908116949092019384528a901b1660088301528751613ef78160108501848c016135dd565b8751920191613f0c8160108501848b016135dd565b8651920191613f218160108501848a016135dd565b8551920191613f3681601085018489016135dd565b919091016010019b9a5050505050505050505050565b60008951613f5e818460208e016135dd565b895190830190613f72818360208e016135dd565b60c08a811b6001600160c01b03199081169390920192835289811b8216600884015288901b811660108301528651613fb1816018850160208b016135dd565b8651920191613fc7816018850160208a016135dd565b60c09590951b16930160188101939093525050602001979650505050505050565b6020815260006134fa602083018461394f56fea2646970667358221220d48e8c1a6adeaba192c5a08e1f358c3cc2d259772f75677b2ad3497183a6f65464736f6c63430008110033", + "sourceMap": "340:9661:58:-:0;;;;;;;;;;;;;;;;;;;", + "linkReferences": { + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "MerkleMountainRange": [ + { + "start": 1739, + "length": 20 + }, + { + "start": 9566, + "length": 20 + } + ] + }, + "lib/solidity-merkle-trees/src/MerklePatricia.sol": { + "MerklePatricia": [ + { + "start": 3425, + "length": 20 + }, + { + "start": 7564, + "length": 20 + } + ] + } + } + }, + "deployedBytecode": { + "object": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806320d71c7a14610067578063873ce1ce1461007c578063ac269bd61461008f578063bb1689be146100a2578063d95e4fbb146100b5578063fda626c3146100c8575b600080fd5b61007a610075366004612cdb565b6100db565b005b61007a61008a3660046130b4565b610819565b61007a61009d36600461316b565b610f43565b61007a6100b0366004613202565b6111e7565b61007a6100c3366004613251565b611a82565b61007a6100d6366004613378565b611f43565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561011c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014091906134d8565b156101665760405162461bcd60e51b815260040161015d90613501565b60405180910390fd5b815151604051631a880a9360e01b81526000916001600160a01b03861691631a880a93916101969160040161352b565b6020604051808303816000875af11580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610219573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023d9190613542565b6102479190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610289573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ad9190613542565b81116102cb5760405162461bcd60e51b815260040161015d90613584565b6020830151516000816001600160401b038111156102eb576102eb612972565b60405190808252806020026020018201604052801561033657816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816103095790505b50905060005b828110156105f95760008660200151828151811061035c5761035c6135c7565b602002602001015190506103db886001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af11580156103a9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526103d1919081019061364e565b8251515190612698565b6104365760405162461bcd60e51b815260206004820152602660248201527f4948616e646c65723a20496e76616c696420726573706f6e73652064657374696044820152653730ba34b7b760d11b606482015260840161015d565b805151600090610445906126ca565b604051630da2fd1960e21b8152600481018290529091506001600160a01b038a169063368bf464906024016020604051808303816000875af115801561048f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104b391906134d8565b6104cf5760405162461bcd60e51b815260040161015d90613682565b60006104de8360000151612721565b604051632211f1dd60e01b8152600481018290529091506001600160a01b038b1690632211f1dd906024016020604051808303816000875af1158015610528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061054c91906134d8565b156105a35760405162461bcd60e51b815260206004820152602160248201527f4948616e646c65723a204475706c696361746520506f737420726573706f6e736044820152606560f81b606482015260840161015d565b60405180606001604052808460400151815260200184602001518152602001828152508585815181106105d8576105d86135c7565b602002602001018190525050505080806105f1906136b9565b91505061033c565b5084515160405163a70a8c4760e01b81526000916001600160a01b0389169163a70a8c479161062a9160040161352b565b6060604051808303816000875af1158015610649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061066d919061370c565b602001519050806106905760405162461bcd60e51b815260040161015d90613728565b85516020810151604091820151915163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9263722e206d926106d59286928891600401613769565b602060405180830381865af41580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906134d8565b61076c5760405162461bcd60e51b815260206004820152602160248201527f4948616e646c65723a20496e76616c696420726573706f6e73652070726f6f666044820152607360f81b606482015260840161015d565b60005b8381101561080f5760008760200151828151811061078f5761078f6135c7565b60200260200101519050886001600160a01b0316638cf66b9282600001516040518263ffffffff1660e01b81526004016107c99190613916565b600060405180830381600087803b1580156107e357600080fd5b505af11580156107f7573d6000803e3d6000fd5b50505050508080610807906136b9565b91505061076f565b5050505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561085a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087e91906134d8565b1561089b5760405162461bcd60e51b815260040161015d90613501565b6020820151604051631a880a9360e01b81526000916001600160a01b03861691631a880a93916108cd9160040161352b565b6020604051808303816000875af11580156108ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109109190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610950573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109749190613542565b61097e9190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156109c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e49190613542565b8111610a025760405162461bcd60e51b815260040161015d90613584565b602083015160405163a70a8c4760e01b81526000916001600160a01b0387169163a70a8c4791610a349160040161352b565b6060604051808303816000875af1158015610a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a77919061370c565b604081015190915080610a9c5760405162461bcd60e51b815260040161015d90613728565b604085015151855160005b82811015610f3857600088604001518281518110610ac757610ac76135c7565b60200260200101519050610b448a6001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af1158015610b14573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610b3c919081019061364e565b825190612698565b610ba35760405162461bcd60e51b815260206004820152602a60248201527f4948616e646c65723a20496e76616c69642047455420726573706f6e7365206460448201526932b9ba34b730ba34b7b760b11b606482015260840161015d565b6000610bae82612764565b604051630da2fd1960e21b8152600481018290529091506001600160a01b038c169063368bf464906024016020604051808303816000875af1158015610bf8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1c91906134d8565b610c685760405162461bcd60e51b815260206004820152601d60248201527f4948616e646c65723a20556e6b6e6f776e204745542072657175657374000000604482015260640161015d565b60808201516001600160401b03161580610cf157508a6001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190613542565b82608001516001600160401b0316115b610d3d5760405162461bcd60e51b815260206004820152601f60248201527f4948616e646c65723a2047455420726571756573742074696d6564206f757400604482015260640161015d565b600073__$3557184f57f01f44bdc1609b323054fd0c$__6355028f6f88878660a0015186604051602001610d7391815260200190565b6040516020818303038152906040526040518563ffffffff1660e01b8152600401610da194939291906139a4565b600060405180830381865af4158015610dbe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610de691908101906139ee565b60408051808201909152848152602081018290529091506001600160a01b038d16632211f1dd610e1583612836565b6040518263ffffffff1660e01b8152600401610e3391815260200190565b6020604051808303816000875af1158015610e52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e7691906134d8565b15610ec35760405162461bcd60e51b815260206004820181905260248201527f4948616e646c65723a204475706c69636174652047455420726573706f6e7365604482015260640161015d565b60405163f073609160e01b81526001600160a01b038e169063f073609190610eef908490600401613bcb565b600060405180830381600087803b158015610f0957600080fd5b505af1158015610f1d573d6000803e3d6000fd5b50505050505050508080610f30906136b9565b915050610aa7565b505050505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fa891906134d8565b15610fc55760405162461bcd60e51b815260040161015d90613501565b81515160005b818110156111e057600084600001518281518110610feb57610feb6135c7565b60200260200101519050600061100082612764565b604051630da2fd1960e21b8152600481018290529091506001600160a01b0388169063368bf464906024016020604051808303816000875af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e91906134d8565b61108a5760405162461bcd60e51b815260040161015d90613682565b60808201516001600160401b031615801590611115575081608001516001600160401b0316876001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156110ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111139190613542565b115b61116d5760405162461bcd60e51b815260206004820152602360248201527f4948616e646c65723a204745542072657175657374206e6f742074696d6564206044820152621bdd5d60ea1b606482015260840161015d565b6040516384566a5d60e01b81526001600160a01b038816906384566a5d90611199908590600401613c71565b600060405180830381600087803b1580156111b357600080fd5b505af11580156111c7573d6000803e3d6000fd5b50505050505080806111d8906136b9565b915050610fcb565b5050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611228573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061124c91906134d8565b156112695760405162461bcd60e51b815260040161015d90613501565b826001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156112a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cd9190613542565b836001600160a01b0316639a8425bc6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561130d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113319190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611371573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113959190613542565b61139f9190613571565b116113bc5760405162461bcd60e51b815260040161015d90613584565b826001600160a01b031663d40784c76040518163ffffffff1660e01b81526004016020604051808303816000875af11580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114209190613542565b836001600160a01b0316639a8425bc6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114849190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156114c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e89190613542565b6114f29190613571565b10806115725750826001600160a01b031663f851a4406040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611539573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155d9190613c84565b6001600160a01b0316336001600160a01b0316145b61158e5760405162461bcd60e51b815260040161015d90613584565b600080846001600160a01b0316632476132b6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156115d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115f59190613c84565b6001600160a01b0316637d755598866001600160a01b031663bbad99d46040518163ffffffff1660e01b81526004016000604051808303816000875af1158015611643573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261166b919081019061364e565b866040518363ffffffff1660e01b8152600401611689929190613ca1565b6000604051808303816000875af11580156116a8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116d09190810190613ccf565b604051630b4974cf60e41b815291935091506001600160a01b0386169063b4974cf090611701908590600401613d51565b600060405180830381600087803b15801561171b57600080fd5b505af115801561172f573d6000803e3d6000fd5b50505050846001600160a01b031663d860cb47866001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a69190613542565b6040518263ffffffff1660e01b81526004016117c491815260200190565b600060405180830381600087803b1580156117de57600080fd5b505af11580156117f2573d6000803e3d6000fd5b50505050846001600160a01b03166356b655976040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a9190613542565b816020015111156111e05760408051808201825282518152602080840151818301908152848401518451632acf7f4f60e11b81528451600482015291516024830152805160448301529182015160648201529201516084830152906001600160a01b0387169063559efe9e9060a401600060405180830381600087803b1580156118e357600080fd5b505af11580156118f7573d6000803e3d6000fd5b50505050856001600160a01b03166314863dcb82886001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af115801561194b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196f9190613542565b6040516001600160e01b031960e085901b1681528251600482015260209092015160248301526044820152606401600060405180830381600087803b1580156119b757600080fd5b505af11580156119cb573d6000803e3d6000fd5b505050602082015160405163a0756ecd60e01b81526001600160a01b038916925063a0756ecd91611a029160040190815260200190565b600060405180830381600087803b158015611a1c57600080fd5b505af1158015611a30573d6000803e3d6000fd5b5050825160208401516040517ff12a80290a43822c9acabb2a766d41728f06fe4c0497e4a7bb3f54292e4cb0da9450611a729350918252602082015260400190565b60405180910390a1505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611ac3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae791906134d8565b15611b045760405162461bcd60e51b815260040161015d90613501565b602082015160405163a70a8c4760e01b81526000916001600160a01b0386169163a70a8c4791611b369160040161352b565b6060604051808303816000875af1158015611b55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b79919061370c565b83515190915060005b81811015611f3b57600085600001518281518110611ba257611ba26135c7565b602002602001015190508060a001516001600160401b0316600014158015611bda57508060a001516001600160401b03168460000151115b611c1e5760405162461bcd60e51b815260206004820152601560248201527414995c5d595cdd081b9bdd081d1a5b5959081bdd5d605a1b604482015260640161015d565b6000611c29826126ca565b604051630da2fd1960e21b8152600481018290529091506001600160a01b0389169063368bf464906024016020604051808303816000875af1158015611c73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c9791906134d8565b611cb35760405162461bcd60e51b815260040161015d90613682565b604080516001808252818301909252600091816020015b6060815260200190600190039081611cca57505060408051808201825260208082527f103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a818301528251908101869052929350910160408051601f1981840301815290829052611d3c9291602001613d64565b604051602081830303815290604052818581518110611d5d57611d5d6135c7565b6020026020010181905250600073__$3557184f57f01f44bdc1609b323054fd0c$__631475ff4588604001518b60400151856040518463ffffffff1660e01b8152600401611dad93929190613d93565b600060405180830381865af4158015611dca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611df291908101906139ee565b600081518110611e0457611e046135c7565b60200260200101519050611e6060006001600160401b03811115611e2a57611e2a612972565b6040519080825280601f01601f191660200182016040528015611e54576020820181803683370190505b50602083015190612698565b611ebb5760405162461bcd60e51b815260206004820152602660248201527f4948616e646c65723a20496e76616c6964206e6f6e2d6d656d6265727368697060448201526510383937b7b360d11b606482015260840161015d565b6040805160208101825285815290516312dde20360e11b81526001600160a01b038c16916325bbc40691611ef29190600401613dc8565b600060405180830381600087803b158015611f0c57600080fd5b505af1158015611f20573d6000803e3d6000fd5b50505050505050508080611f33906136b9565b915050611b82565b505050505050565b81806001600160a01b031663054f7d9c6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015611f84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fa891906134d8565b15611fc55760405162461bcd60e51b815260040161015d90613501565b815151604051631a880a9360e01b81526000916001600160a01b03861691631a880a9391611ff59160040161352b565b6020604051808303816000875af1158015612014573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120389190613542565b846001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015612078573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209c9190613542565b6120a69190613571565b9050836001600160a01b031663f3f480d96040518163ffffffff1660e01b81526004016020604051808303816000875af11580156120e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210c9190613542565b811161212a5760405162461bcd60e51b815260040161015d90613584565b6020830151516000816001600160401b0381111561214a5761214a612972565b60405190808252806020026020018201604052801561219557816020015b60408051606081018252600080825260208083018290529282015282526000199092019101816121685790505b50905060005b8281101561248c576000866020015182815181106121bb576121bb6135c7565b6020026020010151905061223c886001600160a01b031663f437bc596040518163ffffffff1660e01b81526004016000604051808303816000875af1158015612208573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612230919081019061364e565b82516020015190612698565b6122965760405162461bcd60e51b815260206004820152602560248201527f4948616e646c65723a20496e76616c696420726571756573742064657374696e60448201526430ba34b7b760d91b606482015260840161015d565b805160a001516001600160401b031615806123215750876001600160a01b031663b80777ea6040518163ffffffff1660e01b81526004016020604051808303816000875af11580156122ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123109190613542565b815160a001516001600160401b0316115b61236d5760405162461bcd60e51b815260206004820152601b60248201527f4948616e646c65723a20526571756573742074696d6564206f75740000000000604482015260640161015d565b600061237c82600001516126ca565b604051630cb33d1f60e11b8152600481018290529091506001600160a01b038a16906319667a3e906024016020604051808303816000875af11580156123c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123ea91906134d8565b156124375760405162461bcd60e51b815260206004820152601b60248201527f4948616e646c65723a204475706c696361746520726571756573740000000000604482015260640161015d565b604051806060016040528083604001518152602001836020015181526020018281525084848151811061246c5761246c6135c7565b602002602001018190525050508080612484906136b9565b91505061219b565b5084515160405163a70a8c4760e01b81526000916001600160a01b0389169163a70a8c47916124bd9160040161352b565b6060604051808303816000875af11580156124dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612500919061370c565b602001519050806125235760405162461bcd60e51b815260040161015d90613728565b85516020810151604091820151915163722e206d60e01b815273__$2399d33eab5707eb5118077f9c67419cb4$__9263722e206d926125689286928891600401613769565b602060405180830381865af4158015612585573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125a991906134d8565b6125f55760405162461bcd60e51b815260206004820181905260248201527f4948616e646c65723a20496e76616c696420726571756573742070726f6f6673604482015260640161015d565b60005b8381101561080f57600087602001518281518110612618576126186135c7565b60200260200101519050886001600160a01b0316633b8c2bf782600001516040518263ffffffff1660e01b81526004016126529190613de3565b600060405180830381600087803b15801561266c57600080fd5b505af1158015612680573d6000803e3d6000fd5b50505050508080612690906136b9565b9150506125f8565b600081518351146126ab575060006126c4565b825160208381018281209186019283209091145b925050505b92915050565b805160208083015160408085015160a08601516060870151608088015160c089015160e08a01519551600099612704999098979101613df6565b604051602081830303815290604052805190602001209050919050565b8051805160208083015160408085015160a086015160c08701516060880151608090980151868a0151945160009961270499989596949593949093909101613e9e565b6040805160208101909152600080825260a083015151909190825b818110156127db57828560a00151828151811061279e5761279e6135c7565b60200260200101516040516020016127b7929190613d64565b604051602081830303815290604052925080806127d3906136b9565b91505061277f565b508360000151846020015185604001518660c0015187608001518860600151878a60e00151604051602001612817989796959493929190613f4c565b6040516020818303038152906040528051906020012092505050919050565b600080826000015160a001516040516020016128529190613fe8565b60408051601f19818403018152828252855180516020828101519483015160c08401516080850151606086015160e0909601519699506000986128a49895979596939592949193928b92909101613f4c565b60408051601f1981840301815291905260208501515190915060005b81811015612949576000866020015182815181106128e0576128e06135c7565b602002602001015190508381600001518260200151604051602001612906929190613d64565b60408051601f19818403018152908290526129249291602001613d64565b6040516020818303038152906040529350508080612941906136b9565b9150506128c0565b505080516020909101209392505050565b6001600160a01b038116811461296f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156129aa576129aa612972565b60405290565b604051606081016001600160401b03811182821017156129aa576129aa612972565b60405161010081016001600160401b03811182821017156129aa576129aa612972565b604051601f8201601f191681016001600160401b0381118282101715612a1d57612a1d612972565b604052919050565b600060408284031215612a3757600080fd5b612a3f612988565b9050813581526020820135602082015292915050565b60006001600160401b03821115612a6e57612a6e612972565b5060051b60200190565b600060808284031215612a8a57600080fd5b612a926129b0565b9050612a9e8383612a25565b815260408201356001600160401b03811115612ab957600080fd5b8201601f81018413612aca57600080fd5b80356020612adf612ada83612a55565b6129f5565b82815260059290921b83018101918181019087841115612afe57600080fd5b938201935b83851015612b1c57843582529382019390820190612b03565b808387015250505050506060820135604082015292915050565b60006001600160401b03821115612b4f57612b4f612972565b50601f01601f191660200190565b600082601f830112612b6e57600080fd5b8135612b7c612ada82612b36565b818152846020838601011115612b9157600080fd5b816020850160208301376000918101602001919091529392505050565b80356001600160401b0381168114612bc557600080fd5b919050565b60006101008284031215612bdd57600080fd5b612be56129d2565b905081356001600160401b0380821115612bfe57600080fd5b612c0a85838601612b5d565b83526020840135915080821115612c2057600080fd5b612c2c85838601612b5d565b6020840152612c3d60408501612bae565b60408401526060840135915080821115612c5657600080fd5b612c6285838601612b5d565b60608401526080840135915080821115612c7b57600080fd5b612c8785838601612b5d565b6080840152612c9860a08501612bae565b60a084015260c0840135915080821115612cb157600080fd5b50612cbe84828501612b5d565b60c083015250612cd060e08301612bae565b60e082015292915050565b60008060408385031215612cee57600080fd5b612cf8833561295a565b823591506001600160401b038060208501351115612d1557600080fd5b6020840135840160408187031215612d2c57600080fd5b612d34612988565b8282351115612d4257600080fd5b612d4f8783358401612a78565b81528260208301351115612d6257600080fd5b60208201358201915086601f830112612d7a57600080fd5b612d87612ada8335612a55565b82358082526020808301929160051b850101891015612da557600080fd5b602084015b6020853560051b860101811015612e9b578581351115612dc957600080fd5b601f196060823587018c0382011215612de157600080fd5b612de96129b0565b8760208435890101351115612dfd57600080fd5b823587016020810135016040818e0384011215612e1957600080fd5b612e21612988565b92508860208201351115612e3457600080fd5b612e468d602080840135840101612bca565b83528860408201351115612e5957600080fd5b612e6c8d60206040840135840101612b5d565b602084810191909152928252506040833588018181013583850152606001359082015284529283019201612daa565b506020830152509396939550929350505050565b600082601f830112612ec057600080fd5b81356020612ed0612ada83612a55565b82815260059290921b84018101918181019086841115612eef57600080fd5b8286015b84811015612f2e5780356001600160401b03811115612f125760008081fd5b612f208986838b0101612b5d565b845250918301918301612ef3565b509695505050505050565b600082601f830112612f4a57600080fd5b81356020612f5a612ada83612a55565b82815260059290921b84018101918181019086841115612f7957600080fd5b8286015b84811015612f2e5780356001600160401b0380821115612f9d5760008081fd5b90880190610100828b03601f1901811315612fb85760008081fd5b612fc06129d2565b8784013583811115612fd25760008081fd5b612fe08d8a83880101612b5d565b82525060408085013584811115612ff75760008081fd5b6130058e8b83890101612b5d565b8a840152506060613017818701612bae565b828401526080915081860135858111156130315760008081fd5b61303f8f8c838a0101612b5d565b82850152505060a0613052818701612bae565b8284015260c09150818601358581111561306c5760008081fd5b61307a8f8c838a0101612eaf565b82850152505060e0935061308f848601612bae565b9082015261309e848301612bae565b9281019290925250845250918301918301612f7d565b600080604083850312156130c757600080fd5b82356130d28161295a565b915060208301356001600160401b03808211156130ee57600080fd5b908401906080828703121561310257600080fd5b61310a6129b0565b82358281111561311957600080fd5b61312588828601612eaf565b8252506131358760208501612a25565b602082015260608301358281111561314c57600080fd5b61315888828601612f39565b6040830152508093505050509250929050565b6000806040838503121561317e57600080fd5b82356131898161295a565b915060208301356001600160401b03808211156131a557600080fd5b90840190602082870312156131b957600080fd5b6040516020810181811083821117156131d4576131d4612972565b6040528235828111156131e657600080fd5b6131f288828601612f39565b8252508093505050509250929050565b6000806040838503121561321557600080fd5b82356132208161295a565b915060208301356001600160401b0381111561323b57600080fd5b61324785828601612b5d565b9150509250929050565b6000806040838503121561326457600080fd5b823561326f8161295a565b91506020838101356001600160401b038082111561328c57600080fd5b90850190608082880312156132a057600080fd5b6132a86129b0565b8235828111156132b757600080fd5b8301601f810189136132c857600080fd5b80356132d6612ada82612a55565b81815260059190911b8201860190868101908b8311156132f557600080fd5b8784015b8381101561332d578035878111156133115760008081fd5b61331f8e8b83890101612bca565b8452509188019188016132f9565b508085525050505061334188858501612a25565b84820152606083013593508184111561335957600080fd5b61336588858501612eaf565b6040820152809450505050509250929050565b6000806040838503121561338b57600080fd5b82356133968161295a565b91506020838101356001600160401b03808211156133b357600080fd5b90850190604082880312156133c757600080fd5b6133cf612988565b8235828111156133de57600080fd5b6133ea89828601612a78565b82525083830135828111156133fe57600080fd5b80840193505087601f84011261341357600080fd5b8235613421612ada82612a55565b81815260059190911b8401850190858101908a83111561344057600080fd5b8686015b838110156134c15780358681111561345b57600080fd5b87016060818e03601f190112156134725760008081fd5b61347a6129b0565b898201358881111561348c5760008081fd5b61349a8f8c83860101612bca565b8252506040828101358b830152606090920135918101919091528352918701918701613444565b508087850152505050809450505050509250929050565b6000602082840312156134ea57600080fd5b815180151581146134fa57600080fd5b9392505050565b60208082526010908201526f24a430b7323632b91d10333937bd32b760811b604082015260600190565b8151815260208083015190820152604081016126c4565b60006020828403121561355457600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b818103818111156126c4576126c461355b565b60208082526023908201527f4948616e646c65723a207374696c6c20696e206368616c6c656e6765207065726040820152621a5bd960ea1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60005b838110156135f85781810151838201526020016135e0565b50506000910152565b600082601f83011261361257600080fd5b8151613620612ada82612b36565b81815284602083860101111561363557600080fd5b6136468260208301602087016135dd565b949350505050565b60006020828403121561366057600080fd5b81516001600160401b0381111561367657600080fd5b61364684828501613601565b60208082526019908201527f4948616e646c65723a20556e6b6e6f776e207265717565737400000000000000604082015260600190565b6000600182016136cb576136cb61355b565b5060010190565b6000606082840312156136e457600080fd5b6136ec6129b0565b905081518152602082015160208201526040820151604082015292915050565b60006060828403121561371e57600080fd5b6134fa83836136d2565b60208082526021908201527f4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e646040820152602160f81b606082015260800190565b600060808201868352602060808185015281875180845260a086019150828901935060005b818110156137aa5784518352938301939183019160010161378e565b505060409250848103838601528087518083528383019150838901925060005b818110156137f957835180518452858101518685015286015186840152928401926060909201916001016137ca565b50508094505050505082606083015295945050505050565b600081518084526138298160208601602086016135dd565b601f01601f19169290920160200192915050565b6000610100825181855261385382860182613811565b9150506020830151848203602086015261386d8282613811565b915050604083015161388a60408601826001600160401b03169052565b50606083015184820360608601526138a28282613811565b915050608083015184820360808601526138bc8282613811565b91505060a08301516138d960a08601826001600160401b03169052565b5060c083015184820360c08601526138f18282613811565b91505060e083015161390e60e08601826001600160401b03169052565b509392505050565b602081526000825160406020840152613932606084018261383d565b90506020840151601f198483030160408501526126bf8282613811565b600081518084526020808501808196508360051b8101915082860160005b85811015613997578284038952613985848351613811565b9885019893509084019060010161396d565b5091979650505050505050565b8481526080602082015260006139bd608083018661394f565b82810360408401526139cf818661394f565b905082810360608401526139e38185613811565b979650505050505050565b60006020808385031215613a0157600080fd5b82516001600160401b0380821115613a1857600080fd5b818501915085601f830112613a2c57600080fd5b8151613a3a612ada82612a55565b81815260059190911b83018401908481019088831115613a5957600080fd5b8585015b83811015613aec57805185811115613a755760008081fd5b86016040818c03601f1901811315613a8d5760008081fd5b613a95612988565b8983015188811115613aa75760008081fd5b613ab58e8c83870101613601565b825250908201519087821115613acb5760008081fd5b613ad98d8b84860101613601565b818b015285525050918601918601613a5d565b5098975050505050505050565b60006101008251818552613b0f82860182613811565b91505060208301518482036020860152613b298282613811565b9150506040830151613b4660408601826001600160401b03169052565b5060608301518482036060860152613b5e8282613811565b9150506080830151613b7b60808601826001600160401b03169052565b5060a083015184820360a0860152613b93828261394f565b91505060c0830151613bb060c08601826001600160401b03169052565b5060e083015161390e60e08601826001600160401b03169052565b60006020808352835160408083860152613be86060860183613af9565b83870151601f1987830381018489015281518084529294509085019184860190600581901b8601870160005b82811015613c62578488830301845285518051888452613c3689850182613811565b918b0151848303858d0152919050613c4e8183613811565b978b0197958b019593505050600101613c14565b509a9950505050505050505050565b6020815260006134fa6020830184613af9565b600060208284031215613c9657600080fd5b81516134fa8161295a565b604081526000613cb46040830185613811565b8281036020840152613cc68185613811565b95945050505050565b60008082840360c0811215613ce357600080fd5b83516001600160401b03811115613cf957600080fd5b613d0586828701613601565b93505060a0601f1982011215613d1a57600080fd5b50613d236129b0565b6020840151815260408401516020820152613d4185606086016136d2565b6040820152809150509250929050565b6020815260006134fa6020830184613811565b60008351613d768184602088016135dd565b835190830190613d8a8183602088016135dd565b01949350505050565b838152606060208201526000613dac606083018561394f565b8281036040840152613dbe818561394f565b9695505050505050565b6020815260008251602080840152613646604084018261383d565b6020815260006134fa602083018461383d565b60008951613e08818460208e016135dd565b895190830190613e1c818360208e016135dd565b60c08a811b6001600160c01b03199081169390920192835289901b811660088301528751613e51816010850160208c016135dd565b8751920191613e67816010850160208b016135dd565b8651920191613e7d816010850160208a016135dd565b60c09590951b16930160108101939093525050601801979650505050505050565b600089516020613eb18285838f016135dd565b8a5191840191613ec48184848f016135dd565b60c08b811b6001600160c01b0319908116949092019384528a901b1660088301528751613ef78160108501848c016135dd565b8751920191613f0c8160108501848b016135dd565b8651920191613f218160108501848a016135dd565b8551920191613f3681601085018489016135dd565b919091016010019b9a5050505050505050505050565b60008951613f5e818460208e016135dd565b895190830190613f72818360208e016135dd565b60c08a811b6001600160c01b03199081169390920192835289811b8216600884015288901b811660108301528651613fb1816018850160208b016135dd565b8651920191613fc7816018850160208a016135dd565b60c09590951b16930160188101939093525050602001979650505050505050565b6020815260006134fa602083018461394f56fea2646970667358221220d48e8c1a6adeaba192c5a08e1f358c3cc2d259772f75677b2ad3497183a6f65464736f6c63430008110033", + "sourceMap": "340:9661:58:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4425:1642;;;;;;:::i;:::-;;:::i;:::-;;7588:1595;;;;;;:::i;:::-;;:::i;9319:680::-;;;;;;:::i;:::-;;:::i;931:1517::-;;;;;;:::i;:::-;;:::i;6230:1159::-;;;;;;:::i;:::-;;:::i;2646:1577::-;;;;;;:::i;:::-;;:::i;4425:1642::-;4526:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;;;;;;;;;4615:14;;:21;4577:60:::1;::::0;-1:-1:-1;;;4577:60:58;;4542:13:::1;::::0;-1:-1:-1;;;;;4577:37:58;::::1;::::0;::::1;::::0;:60:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4558:4;-1:-1:-1::0;;;;;4558:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:79;;;;:::i;:::-;4542:95;;4663:4;-1:-1:-1::0;;;;;4663:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4655:5;:30;4647:78;;;;-1:-1:-1::0;;;4647:78:58::1;;;;;;;:::i;:::-;4762:18;::::0;::::1;::::0;:25;4736:23:::1;4762:25:::0;-1:-1:-1;;;;;4823:30:58;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;4823:30:58;;-1:-1:-1;;4823:30:58;;;;::::1;::::0;::::1;;;;;;4797:56;;4869:9;4864:663;4888:15;4884:1;:19;4864:663;;;4924:28;4955:8;:18;;;4974:1;4955:21;;;;;;;;:::i;:::-;;;;;;;4924:52;;4998:48;5034:4;-1:-1:-1::0;;;;;5034:9:58::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;5034:11:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;4998:13:::0;;:21;:28;;:35:::1;:48::i;:::-;4990:99;;;::::0;-1:-1:-1;;;4990:99:58;;21366:2:74;4990:99:58::1;::::0;::::1;21348:21:74::0;21405:2;21385:18;;;21378:30;21444:34;21424:18;;;21417:62;-1:-1:-1;;;21495:18:74;;;21488:36;21541:19;;4990:99:58::1;21164:402:74::0;4990:99:58::1;5145:13:::0;;:21;5104:25:::1;::::0;5132:35:::1;::::0;:12:::1;:35::i;:::-;5189:42;::::0;-1:-1:-1;;;5189:42:58;;::::1;::::0;::::1;21717:25:74::0;;;5104:63:58;;-1:-1:-1;;;;;;5189:23:58;::::1;::::0;::::1;::::0;21690:18:74;;5189:42:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5181:80;;;;-1:-1:-1::0;;;5181:80:58::1;;;;;;;:::i;:::-;5276:26;5305:27;5318:4;:13;;;5305:12;:27::i;:::-;5355:44;::::0;-1:-1:-1;;;5355:44:58;;::::1;::::0;::::1;21717:25:74::0;;;5276:56:58;;-1:-1:-1;;;;;;5355:24:58;::::1;::::0;::::1;::::0;21690:18:74;;5355:44:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5354:45;5346:91;;;::::0;-1:-1:-1;;;5346:91:58;;22309:2:74;5346:91:58::1;::::0;::::1;22291:21:74::0;22348:2;22328:18;;;22321:30;22387:34;22367:18;;;22360:62;-1:-1:-1;;;22438:18:74;;;22431:31;22479:19;;5346:91:58::1;22107:397:74::0;5346:91:58::1;5464:52;;;;;;;;5472:4;:11;;;5464:52;;;;5485:4;:10;;;5464:52;;;;5497:18;5464:52;;::::0;5452:6:::1;5459:1;5452:9;;;;;;;;:::i;:::-;;;;;;:64;;;;4910:617;;;4905:3;;;;;:::i;:::-;;;;4864:663;;;-1:-1:-1::0;5580:14:58;;:21;5552:50:::1;::::0;-1:-1:-1;;;5552:50:58;;5537:12:::1;::::0;-1:-1:-1;;;;;5552:27:58;::::1;::::0;::::1;::::0;:50:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;::::0;;-1:-1:-1;5552:62:58;5625:64:::1;;;;-1:-1:-1::0;;;5625:64:58::1;;;;;;;:::i;:::-;5758:14:::0;;:25:::1;::::0;::::1;::::0;5793:24:::1;::::0;;::::1;::::0;5720:98;;-1:-1:-1;;;5720:98:58;;:19:::1;::::0;:31:::1;::::0;:98:::1;::::0;5752:4;;5785:6;;5720:98:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5699:178;;;::::0;-1:-1:-1;;;5699:178:58;;25401:2:74;5699:178:58::1;::::0;::::1;25383:21:74::0;25440:2;25420:18;;;25413:30;25479:34;25459:18;;;25452:62;-1:-1:-1;;;25530:18:74;;;25523:31;25571:19;;5699:178:58::1;25199:397:74::0;5699:178:58::1;5893:9;5888:173;5912:15;5908:1;:19;5888:173;;;5948:28;5979:8;:18;;;5998:1;5979:21;;;;;;;;:::i;:::-;;;;;;;5948:52;;6014:4;-1:-1:-1::0;;;;;6014:21:58::1;;6036:4;:13;;;6014:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;5934:127;5929:3;;;;;:::i;:::-;;;;5888:173;;;;4532:1535;;;;4425:1642:::0;;;:::o;7588:1595::-;7686:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;7775:14:::1;::::0;::::1;::::0;7737:53:::1;::::0;-1:-1:-1;;;7737:53:58;;7702:13:::1;::::0;-1:-1:-1;;;;;7737:37:58;::::1;::::0;::::1;::::0;:53:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7718:4;-1:-1:-1::0;;;;;7718:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;;;:::i;:::-;7702:88;;7816:4;-1:-1:-1::0;;;;;7816:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7808:5;:30;7800:78;;;;-1:-1:-1::0;;;7800:78:58::1;;;;;;;:::i;:::-;7958:14;::::0;::::1;::::0;7930:43:::1;::::0;-1:-1:-1;;;7930:43:58;;7889:38:::1;::::0;-1:-1:-1;;;;;7930:27:58;::::1;::::0;::::1;::::0;:43:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7998:25;::::0;::::1;::::0;7889:84;;-1:-1:-1;7998:25:58;8033:64:::1;;;;-1:-1:-1::0;;;8033:64:58::1;;;;;;;:::i;:::-;8134:16;::::0;::::1;::::0;:23;8190:13;;8108:23:::1;8214:963;8238:15;8234:1;:19;8214:963;;;8274:25;8302:7;:16;;;8319:1;8302:19;;;;;;;;:::i;:::-;;;;;;;8274:47;;8343:34;8365:4;-1:-1:-1::0;;;;;8365:9:58::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8365:11:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;8343:14:::0;;;:21:::1;:34::i;:::-;8335:89;;;::::0;-1:-1:-1;;;8335:89:58;;27991:2:74;8335:89:58::1;::::0;::::1;27973:21:74::0;28030:2;28010:18;;;28003:30;28069:34;28049:18;;;28042:62;-1:-1:-1;;;28120:18:74;;;28113:40;28170:19;;8335:89:58::1;27789:406:74::0;8335:89:58::1;8439:25;8467:21;8480:7;8467:12;:21::i;:::-;8510:42;::::0;-1:-1:-1;;;8510:42:58;;::::1;::::0;::::1;21717:25:74::0;;;8439:49:58;;-1:-1:-1;;;;;;8510:23:58;::::1;::::0;::::1;::::0;21690:18:74;;8510:42:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8502:84;;;::::0;-1:-1:-1;;;8502:84:58;;28402:2:74;8502:84:58::1;::::0;::::1;28384:21:74::0;28441:2;28421:18;;;28414:30;28480:31;28460:18;;;28453:59;28529:18;;8502:84:58::1;28200:353:74::0;8502:84:58::1;8625:24;::::0;::::1;::::0;-1:-1:-1;;;;;8625:29:58::1;::::0;;:76:::1;;;8685:4;-1:-1:-1::0;;;;;8685:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8658:7;:24;;;-1:-1:-1::0;;;;;8658:43:58::1;;8625:76;8600:166;;;::::0;-1:-1:-1;;;8600:166:58;;28760:2:74;8600:166:58::1;::::0;::::1;28742:21:74::0;28799:2;28779:18;;;28772:30;28838:33;28818:18;;;28811:61;28889:18;;8600:166:58::1;28558:355:74::0;8600:166:58::1;8781:28;8828:14;:34;8863:4;8869:5;8876:7;:12;;;8903:17;8890:31;;;;;;29047:19:74::0;;29091:2;29082:12;;28918:182;8890:31:58::1;;;;;;;;;;;;;8828:94;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;8828:94:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;8966:47;::::0;;;;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;8781:141;;-1:-1:-1;;;;;;9036:24:58;::::1;;9061:22;8966:47:::0;9061:12:::1;:22::i;:::-;9036:48;;;;;;;;;;;;;21717:25:74::0;;21705:2;21690:18;;21571:177;9036:48:58::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9035:49;9027:94;;;::::0;-1:-1:-1;;;9027:94:58;;32554:2:74;9027:94:58::1;::::0;::::1;32536:21:74::0;;;32573:18;;;32566:30;32632:34;32612:18;;;32605:62;32684:18;;9027:94:58::1;32352:356:74::0;9027:94:58::1;9135:31;::::0;-1:-1:-1;;;9135:31:58;;-1:-1:-1;;;;;9135:21:58;::::1;::::0;::::1;::::0;:31:::1;::::0;9157:8;;9135:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8260:917;;;;8255:3;;;;;:::i;:::-;;;;8214:963;;;;7692:1491;;;;;7588:1595:::0;;;:::o;9319:680::-;9415:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;9456:16;;:23;9431:22:::1;9490:503;9514:14;9510:1;:18;9490:503;;;9549:25;9577:7;:16;;;9594:1;9577:19;;;;;;;;:::i;:::-;;;;;;;9549:47;;9610:25;9638:21;9651:7;9638:12;:21::i;:::-;9681:42;::::0;-1:-1:-1;;;9681:42:58;;::::1;::::0;::::1;21717:25:74::0;;;9610:49:58;;-1:-1:-1;;;;;;9681:23:58;::::1;::::0;::::1;::::0;21690:18:74;;9681:42:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9673:80;;;;-1:-1:-1::0;;;9673:80:58::1;;;;;;;:::i;:::-;9793:24;::::0;::::1;::::0;-1:-1:-1;;;;;9793:29:58::1;::::0;;::::1;::::0;:76:::1;;;9845:7;:24;;;-1:-1:-1::0;;;;;9826:43:58::1;:4;-1:-1:-1::0;;;;;9826:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:43;9793:76;9768:170;;;::::0;-1:-1:-1;;;9768:170:58;;35509:2:74;9768:170:58::1;::::0;::::1;35491:21:74::0;35548:2;35528:18;;;35521:30;35587:34;35567:18;;;35560:62;-1:-1:-1;;;35638:18:74;;;35631:33;35681:19;;9768:170:58::1;35307:399:74::0;9768:170:58::1;9952:30;::::0;-1:-1:-1;;;9952:30:58;;-1:-1:-1;;;;;9952:21:58;::::1;::::0;::::1;::::0;:30:::1;::::0;9974:7;;9952:30:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9535:458;;9530:3;;;;;:::i;:::-;;;;9490:503;;;;9421:578;9319:680:::0;;;:::o;931:1517::-;1011:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;1098:4:::1;-1:-1:-1::0;;;;;1098:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1068:4;-1:-1:-1::0;;;;;1068:24:58::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1049:4;-1:-1:-1::0;;;;;1049:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;;:::i;:::-;1048:72;1027:154;;;;-1:-1:-1::0;;;1027:154:58::1;;;;;;;:::i;:::-;1311:4;-1:-1:-1::0;;;;;1311:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1281:4;-1:-1:-1::0;;;;;1281:24:58::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1262:4;-1:-1:-1::0;;;;;1262:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;;;:::i;:::-;1261:72;:104;;;;1353:4;-1:-1:-1::0;;;;;1353:10:58::1;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1337:28:58::1;719:10:34::0;-1:-1:-1;;;;;1337:28:58::1;;1261:104;1240:186;;;;-1:-1:-1::0;;;1240:186:58::1;;;;;;;:::i;:::-;1438:26;1466:37:::0;1536:4:::1;-1:-1:-1::0;;;;;1536:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1519:56:58::1;;1576:4;-1:-1:-1::0;;;;;1576:19:58::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1576:21:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;1599:5;1519:86;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;1519:86:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;1615:39;::::0;-1:-1:-1;;;1615:39:58;;1437:168;;-1:-1:-1;1437:168:58;-1:-1:-1;;;;;;1615:24:58;::::1;::::0;::::1;::::0;:39:::1;::::0;1437:168;;1615:39:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1664:4;-1:-1:-1::0;;;;;1664:29:58::1;;1694:4;-1:-1:-1::0;;;;;1694:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1664:47;;;;;;;;;;;;;21717:25:74::0;;21705:2;21690:18;;21571:177;1664:47:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1748:4;-1:-1:-1::0;;;;;1748:29:58::1;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1726:12;:19;;;:53;1722:720;;;1858:94;::::0;;;;::::1;::::0;;1894:27;;1858:94;;::::1;1931:19:::0;;::::1;::::0;1858:94;;::::1;::::0;;;2019:23;;::::1;::::0;1966:77;;-1:-1:-1;;;1966:77:58;;18767:12:74;;1966:77:58::1;::::0;::::1;18755:25:74::0;18812:23;;18796:14;;;18789:47;38200:13;;38180:18;;;38173:41;38256:17;;;38250:24;38230:18;;;38223:52;38318:15;;38312:22;38291:19;;;38284:51;1858:94:58;-1:-1:-1;;;;;1966:32:58;::::1;::::0;::::1;::::0;38081:19:74;;1966:77:58::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2057:4;-1:-1:-1::0;;;;;2057:42:58::1;;2100:18;2120:4;-1:-1:-1::0;;;;;2120:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2057:80;::::0;-1:-1:-1;;;;;;2057:80:58::1;::::0;;;;;;18767:12:74;;2057:80:58::1;::::0;::::1;18755:25:74::0;18829:4;18818:16;;;18812:23;18796:14;;;18789:47;38665:18;;;38658:34;38567:18;;2057:80:58::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;;2186:25:58::1;::::0;::::1;::::0;2151:61:::1;::::0;-1:-1:-1;;;2151:61:58;;-1:-1:-1;;;;;2151:34:58;::::1;::::0;-1:-1:-1;2151:34:58::1;::::0;:61:::1;::::0;::::1;;21717:25:74::0;;;21705:2;21690:18;;21571:177;2151:61:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;2332:33:58;;2391:25:::1;::::0;::::1;::::0;2278:153:::1;::::0;::::1;::::0;-1:-1:-1;2278:153:58::1;::::0;-1:-1:-1;38877:25:74;;;38933:2;38918:18;;38911:34;38865:2;38850:18;;38703:248;2278:153:58::1;;;;;;;;1781:661;1017:1431;;931:1517:::0;;;:::o;6230:1159::-;6328:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;6441:14:::1;::::0;::::1;::::0;6413:43:::1;::::0;-1:-1:-1;;;6413:43:58;;6382:28:::1;::::0;-1:-1:-1;;;;;6413:27:58;::::1;::::0;::::1;::::0;:43:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6491:16:::0;;:23;6382:74;;-1:-1:-1;6466:22:58::1;6525:858;6549:14;6545:1;:18;6525:858;;;6584:26;6613:7;:16;;;6630:1;6613:19;;;;;;;;:::i;:::-;;;;;;;6584:48;;6671:7;:24;;;-1:-1:-1::0;;;;;6671:29:58::1;6699:1;6671:29;;:75;;;;;6722:7;:24;;;-1:-1:-1::0;;;;;6704:42:58::1;:5;:15;;;:42;6671:75;6646:139;;;::::0;-1:-1:-1;;;6646:139:58;;39158:2:74;6646:139:58::1;::::0;::::1;39140:21:74::0;39197:2;39177:18;;;39170:30;-1:-1:-1;;;39216:18:74;;;39209:51;39277:18;;6646:139:58::1;38956:345:74::0;6646:139:58::1;6800:25;6828:21;6841:7;6828:12;:21::i;:::-;6871:42;::::0;-1:-1:-1;;;6871:42:58;;::::1;::::0;::::1;21717:25:74::0;;;6800:49:58;;-1:-1:-1;;;;;;6871:23:58;::::1;::::0;::::1;::::0;21690:18:74;;6871:42:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6863:80;;;;-1:-1:-1::0;;;6863:80:58::1;;;;;;;:::i;:::-;6980:14;::::0;;6992:1:::1;6980:14:::0;;;;;::::1;::::0;;;6958:19:::1;::::0;6980:14:::1;;;;;;;;;;;;;;;;;-1:-1:-1::0;;7031:33:58::1;::::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;::::1;::::0;7066:31;;;;::::1;29047:19:74::0;;;6958:36:58;;-1:-1:-1;7031:33:58;29082:12:74;7066:31:58::1;::::0;;-1:-1:-1;;7066:31:58;;::::1;::::0;;;;;;;7018:80:::1;::::0;;7066:31:::1;7018:80;;:::i;:::-;;;;;;;;;;;;;7008:4;7013:1;7008:7;;;;;;;;:::i;:::-;;;;;;:90;;;;7113:25;7141:14;:35;7177:5;:15;;;7194:7;:13;;;7209:4;7141:73;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;7141:73:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;7215:1;7141:76;;;;;;;;:::i;:::-;;;;;;;7113:104;;7239:32;7268:1;-1:-1:-1::0;;;;;7258:12:58::1;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;7258:12:58::1;-1:-1:-1::0;7239:11:58::1;::::0;::::1;::::0;;:18:::1;:32::i;:::-;7231:83;;;::::0;-1:-1:-1;;;7231:83:58;;40586:2:74;7231:83:58::1;::::0;::::1;40568:21:74::0;40625:2;40605:18;;;40598:30;40664:34;40644:18;;;40637:62;-1:-1:-1;;;40715:18:74;;;40708:36;40761:19;;7231:83:58::1;40384:402:74::0;7231:83:58::1;7351:20;::::0;;::::1;::::0;::::1;::::0;;;;;7329:43;;-1:-1:-1;;;7329:43:58;;-1:-1:-1;;;;;7329:21:58;::::1;::::0;::::1;::::0;:43:::1;::::0;7351:20;7329:43:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6570:813;;;;6565:3;;;;;:::i;:::-;;;;6525:858;;;;6334:1055;;6230:1159:::0;;;:::o;2646:1577::-;2744:4;468;-1:-1:-1;;;;;468:11:58;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;467:14;459:43;;;;-1:-1:-1;;;459:43:58;;;;;;;:::i;:::-;2833:13;;:20;2795:59:::1;::::0;-1:-1:-1;;;2795:59:58;;2760:13:::1;::::0;-1:-1:-1;;;;;2795:37:58;::::1;::::0;::::1;::::0;:59:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2776:4;-1:-1:-1::0;;;;;2776:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:78;;;;:::i;:::-;2760:94;;2880:4;-1:-1:-1::0;;;;;2880:20:58::1;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2872:5;:30;2864:78;;;;-1:-1:-1::0;;;2864:78:58::1;;;;;;;:::i;:::-;2975:16;::::0;::::1;::::0;:23;2953:19:::1;2975:23:::0;-1:-1:-1;;;;;3034:26:58;::::1;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;3034:26:58;;-1:-1:-1;;3034:26:58;;;;::::1;::::0;::::1;;;;;;3008:52;;3076:9;3071:624;3095:11;3091:1;:15;3071:624;;;3127:27;3157:7;:16;;;3174:1;3157:19;;;;;;;;:::i;:::-;;;;;;;3127:49;;3199:37;3224:4;-1:-1:-1::0;;;;;3224:9:58::1;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;3224:11:58::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;3199:12:::0;;:17:::1;;::::0;;:24:::1;:37::i;:::-;3191:87;;;::::0;-1:-1:-1;;;3191:87:58;;41357:2:74;3191:87:58::1;::::0;::::1;41339:21:74::0;41396:2;41376:18;;;41369:30;41435:34;41415:18;;;41408:62;-1:-1:-1;;;41486:18:74;;;41479:35;41531:19;;3191:87:58::1;41155:401:74::0;3191:87:58::1;3317:12:::0;;:29:::1;;::::0;-1:-1:-1;;;;;3317:34:58::1;::::0;;:86:::1;;;3387:4;-1:-1:-1::0;;;;;3387:14:58::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3355:12:::0;;:29:::1;;::::0;-1:-1:-1;;;;;3355:48:58::1;;3317:86;3292:172;;;::::0;-1:-1:-1;;;3292:172:58;;41763:2:74;3292:172:58::1;::::0;::::1;41745:21:74::0;41802:2;41782:18;;;41775:30;41841:29;41821:18;;;41814:57;41888:18;;3292:172:58::1;41561:351:74::0;3292:172:58::1;3479:18;3500:26;3513:4;:12;;;3500;:26::i;:::-;3549:32;::::0;-1:-1:-1;;;3549:32:58;;::::1;::::0;::::1;21717:25:74::0;;;3479:47:58;;-1:-1:-1;;;;;;3549:20:58;::::1;::::0;::::1;::::0;21690:18:74;;3549:32:58::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3548:33;3540:73;;;::::0;-1:-1:-1;;;3540:73:58;;42119:2:74;3540:73:58::1;::::0;::::1;42101:21:74::0;42158:2;42138:18;;;42131:30;42197:29;42177:18;;;42170:57;42244:18;;3540:73:58::1;41917:351:74::0;3540:73:58::1;3640:44;;;;;;;;3648:4;:11;;;3640:44;;;;3661:4;:10;;;3640:44;;;;3673:10;3640:44;;::::0;3628:6:::1;3635:1;3628:9;;;;;;;;:::i;:::-;;;;;;:56;;;;3113:582;;3108:3;;;;;:::i;:::-;;;;3071:624;;;-1:-1:-1::0;3748:13:58;;:20;3720:49:::1;::::0;-1:-1:-1;;;3720:49:58;;3705:12:::1;::::0;-1:-1:-1;;;;;3720:27:58;::::1;::::0;::::1;::::0;:49:::1;::::0;::::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:61;;::::0;;-1:-1:-1;3720:61:58;3792:64:::1;;;;-1:-1:-1::0;;;3792:64:58::1;;;;;;;:::i;:::-;3925:13:::0;;:24:::1;::::0;::::1;::::0;3959:23:::1;::::0;;::::1;::::0;3887:96;;-1:-1:-1;;;3887:96:58;;:19:::1;::::0;:31:::1;::::0;:96:::1;::::0;3919:4;;3951:6;;3887:96:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3866:175;;;::::0;-1:-1:-1;;;3866:175:58;;42475:2:74;3866:175:58::1;::::0;::::1;42457:21:74::0;;;42494:18;;;42487:30;42553:34;42533:18;;;42526:62;42605:18;;3866:175:58::1;42273:356:74::0;3866:175:58::1;4057:9;4052:165;4076:11;4072:1;:15;4052:165;;;4108:27;4138:7;:16;;;4155:1;4138:19;;;;;;;;:::i;:::-;;;;;;;4108:49;;4171:4;-1:-1:-1::0;;;;;4171:21:58::1;;4193:4;:12;;;4171:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4094:123;4089:3;;;;;:::i;:::-;;;;4052:165;;529:421:45::0;607:10;648:5;:12;633:4;:11;:27;629:70;;-1:-1:-1;683:5:45;676:12;;629:70;931:11;;816:2;841:36;;;477:21:46;;;784:35:45;;;455:20:46;;;841:36:45;;452:47:46;904:39:45;896:47;;619:331;;529:421;;;;;:::o;5374:270:23:-;5518:10;;5530:8;;;;;5540:9;;;;;5551:20;;;;5573:8;;;;5583:6;;;;5591:8;;;;5601:12;;;;5484:143;;5435:7;;5484:143;;5518:10;;5530:8;5601:12;5484:143;;:::i;:::-;;;;;;;;;;;;;5461:176;;;;;;5454:183;;5374:270;;;:::o;4929:439::-;5074:11;;:18;;5110:16;;;;;5144:17;;;;;5179:28;;;;5225:16;;;;5259;;;;5293:14;;;;;5325:12;;;;5040:311;;4991:7;;5040:311;;5074:18;5144:17;;5179:28;;5225:16;;5259;;5325:12;;5040:311;;:::i;5650:486::-;5757:9;;;;;;;;;5710:7;5757:9;;;5790:8;;;;:15;5710:7;;5757:9;5710:7;5815:113;5839:3;5835:1;:7;5815:113;;;5891:12;5905:3;:8;;;5914:1;5905:11;;;;;;;;:::i;:::-;;;;;;;5878:39;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5863:54;;5844:3;;;;;:::i;:::-;;;;5815:113;;;;6002:3;:10;;;6014:3;:8;;;6024:3;:9;;;6035:3;:10;;;6047:3;:20;;;6069:3;:8;;;6079:12;6093:3;:12;;;5968:151;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5945:184;;;;;;5938:191;;;;5650:486;;;:::o;6142:736::-;6203:7;6222:25;6261:3;:11;;;:16;;;6250:28;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6250:28:23;;;;;;;;;6342:11;;:18;;6250:28;6374:16;;;;6404:17;;;;6435:18;;;;6467:28;;;;6509:16;;;;6565:20;;;;;6250:28;;-1:-1:-1;6288:21:23;;6312:283;;6342:18;;6374:16;;6404:17;;6435:18;;6467:28;;6509:16;6250:28;;6565:20;;6312:283;;:::i;:::-;;;;-1:-1:-1;;6312:283:23;;;;;;;;;;6619:10;;;:17;6312:283;;-1:-1:-1;6605:11:23;6646:189;6670:3;6666:1;:7;6646:189;;;6694:25;6722:3;:10;;;6733:1;6722:13;;;;;;;;:::i;:::-;;;;;;;6694:41;;6773:8;6800:5;:9;;;6811:5;:11;;;6783:40;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;6783:40:23;;;;;;;;;;6760:64;;;6783:40;6760:64;;:::i;:::-;;;;;;;;;;;;;6749:75;;6680:155;6675:3;;;;;:::i;:::-;;;;6646:189;;;-1:-1:-1;;6852:19:23;;;;;;;;6142:736;-1:-1:-1;;;6142:736:23:o;14:142:74:-;-1:-1:-1;;;;;100:31:74;;90:42;;80:70;;146:1;143;136:12;80:70;14:142;:::o;161:127::-;222:10;217:3;213:20;210:1;203:31;253:4;250:1;243:15;277:4;274:1;267:15;293:257;365:4;359:11;;;397:17;;-1:-1:-1;;;;;429:34:74;;465:22;;;426:62;423:88;;;491:18;;:::i;:::-;527:4;520:24;293:257;:::o;555:253::-;627:2;621:9;669:4;657:17;;-1:-1:-1;;;;;689:34:74;;725:22;;;686:62;683:88;;;751:18;;:::i;813:255::-;885:2;879:9;927:6;915:19;;-1:-1:-1;;;;;949:34:74;;985:22;;;946:62;943:88;;;1011:18;;:::i;1329:275::-;1400:2;1394:9;1465:2;1446:13;;-1:-1:-1;;1442:27:74;1430:40;;-1:-1:-1;;;;;1485:34:74;;1521:22;;;1482:62;1479:88;;;1547:18;;:::i;:::-;1583:2;1576:22;1329:275;;-1:-1:-1;1329:275:74:o;1609:293::-;1674:5;1722:4;1710:9;1705:3;1701:19;1697:30;1694:50;;;1740:1;1737;1730:12;1694:50;1762:22;;:::i;:::-;1753:31;;1820:9;1807:23;1800:5;1793:38;1891:2;1880:9;1876:18;1863:32;1858:2;1851:5;1847:14;1840:56;1609:293;;;;:::o;1907:183::-;1967:4;-1:-1:-1;;;;;1992:6:74;1989:30;1986:56;;;2022:18;;:::i;:::-;-1:-1:-1;2067:1:74;2063:14;2079:4;2059:25;;1907:183::o;2095:1056::-;2147:5;2195:4;2183:9;2178:3;2174:19;2170:30;2167:50;;;2213:1;2210;2203:12;2167:50;2235:22;;:::i;:::-;2226:31;;2280:52;2328:3;2317:9;2280:52;:::i;:::-;2273:5;2266:67;2384:2;2373:9;2369:18;2356:32;-1:-1:-1;;;;;2403:6:74;2400:30;2397:50;;;2443:1;2440;2433:12;2397:50;2466:22;;2519:4;2511:13;;2507:23;-1:-1:-1;2497:51:74;;2544:1;2541;2534:12;2497:51;2580:2;2567:16;2602:4;2626:60;2642:43;2682:2;2642:43;:::i;:::-;2626:60;:::i;:::-;2720:15;;;2802:1;2798:10;;;;2790:19;;2786:28;;;2751:12;;;;2826:15;;;2823:35;;;2854:1;2851;2844:12;2823:35;2878:11;;;;2898:142;2914:6;2909:3;2906:15;2898:142;;;2980:17;;2968:30;;2931:12;;;;3018;;;;2898:142;;;3072:5;3067:2;3060:5;3056:14;3049:29;;;;;;3138:4;3127:9;3123:20;3110:34;3105:2;3098:5;3094:14;3087:58;2095:1056;;;;:::o;3156:186::-;3204:4;-1:-1:-1;;;;;3229:6:74;3226:30;3223:56;;;3259:18;;:::i;:::-;-1:-1:-1;3325:2:74;3304:15;-1:-1:-1;;3300:29:74;3331:4;3296:40;;3156:186::o;3347:462::-;3389:5;3442:3;3435:4;3427:6;3423:17;3419:27;3409:55;;3460:1;3457;3450:12;3409:55;3496:6;3483:20;3527:48;3543:31;3571:2;3543:31;:::i;3527:48::-;3600:2;3591:7;3584:19;3646:3;3639:4;3634:2;3626:6;3622:15;3618:26;3615:35;3612:55;;;3663:1;3660;3653:12;3612:55;3728:2;3721:4;3713:6;3709:17;3702:4;3693:7;3689:18;3676:55;3776:1;3751:16;;;3769:4;3747:27;3740:38;;;;3755:7;3347:462;-1:-1:-1;;;3347:462:74:o;3814:171::-;3881:20;;-1:-1:-1;;;;;3930:30:74;;3920:41;;3910:69;;3975:1;3972;3965:12;3910:69;3814:171;;;:::o;3990:1317::-;4048:5;4096:6;4084:9;4079:3;4075:19;4071:32;4068:52;;;4116:1;4113;4106:12;4068:52;4138:22;;:::i;:::-;4129:31;;4196:9;4183:23;-1:-1:-1;;;;;4266:2:74;4258:6;4255:14;4252:34;;;4282:1;4279;4272:12;4252:34;4309:45;4350:3;4341:6;4330:9;4326:22;4309:45;:::i;:::-;4302:5;4295:60;4408:2;4397:9;4393:18;4380:32;4364:48;;4437:2;4427:8;4424:16;4421:36;;;4453:1;4450;4443:12;4421:36;4489:47;4532:3;4521:8;4510:9;4506:24;4489:47;:::i;:::-;4484:2;4477:5;4473:14;4466:71;4569:37;4602:2;4591:9;4587:18;4569:37;:::i;:::-;4564:2;4557:5;4553:14;4546:61;4660:2;4649:9;4645:18;4632:32;4616:48;;4689:2;4679:8;4676:16;4673:36;;;4705:1;4702;4695:12;4673:36;4741:47;4784:3;4773:8;4762:9;4758:24;4741:47;:::i;:::-;4736:2;4729:5;4725:14;4718:71;4842:3;4831:9;4827:19;4814:33;4798:49;;4872:2;4862:8;4859:16;4856:36;;;4888:1;4885;4878:12;4856:36;4925:47;4968:3;4957:8;4946:9;4942:24;4925:47;:::i;:::-;4919:3;4912:5;4908:15;4901:72;5006:38;5039:3;5028:9;5024:19;5006:38;:::i;:::-;5000:3;4993:5;4989:15;4982:63;5098:3;5087:9;5083:19;5070:33;5054:49;;5128:2;5118:8;5115:16;5112:36;;;5144:1;5141;5134:12;5112:36;;5181:47;5224:3;5213:8;5202:9;5198:24;5181:47;:::i;:::-;5175:3;5168:5;5164:15;5157:72;;5262:38;5295:3;5284:9;5280:19;5262:38;:::i;:::-;5256:3;5249:5;5245:15;5238:63;3990:1317;;;;:::o;5312:2576::-;5437:6;5445;5498:2;5486:9;5477:7;5473:23;5469:32;5466:52;;;5514:1;5511;5504:12;5466:52;5527:60;5576:9;5563:23;5527:60;:::i;:::-;5619:9;5606:23;5596:33;;-1:-1:-1;;;;;5715:2:74;5709;5698:9;5694:18;5681:32;5678:40;5675:60;;;5731:1;5728;5721:12;5675:60;5797:2;5786:9;5782:18;5769:32;5758:9;5754:48;5836:2;5831;5822:7;5818:16;5814:25;5811:45;;;5852:1;5849;5842:12;5811:45;5878:22;;:::i;:::-;5933:2;5928;5915:16;5912:24;5909:44;;;5949:1;5946;5939:12;5909:44;5976:59;6027:7;6021:2;6008:16;6004:2;6000:25;5976:59;:::i;:::-;5969:5;5962:74;6078:2;6072;6068;6064:11;6051:25;6048:33;6045:53;;;6094:1;6091;6084:12;6045:53;6146:2;6142;6138:11;6125:25;6121:2;6117:34;6107:44;;6189:7;6182:4;6178:2;6174:13;6170:27;6160:55;;6211:1;6208;6201:12;6160:55;6235:74;6251:57;6304:2;6291:16;6251:57;:::i;6235:74::-;6355:16;;6343:29;;;6397:2;6388:12;;;;6331:3;6431:1;6427:24;6419:33;;6415:42;6412:55;-1:-1:-1;6409:75:74;;;6480:1;6477;6470:12;6409:75;6512:2;6508;6504:11;6524:1296;6587:2;6580;6567:16;6564:1;6560:24;6556:2;6552:33;6548:42;6543:3;6540:51;6524:1296;;;6671:2;6665:3;6652:17;6649:25;6646:45;;;6687:1;6684;6677:12;6646:45;-1:-1:-1;;6792:4:74;6766:17;;6758:26;;6745:40;;6741:49;;6737:60;6734:80;;;6810:1;6807;6800:12;6734:80;6842:22;;:::i;:::-;6934:2;6928;6921:3;6908:17;6904:2;6900:26;6896:35;6883:49;6880:57;6877:77;;;6950:1;6947;6940:12;6877:77;7034:17;;7026:26;;7054:2;7022:35;;7009:49;6977:82;7106:2;7083:16;;;7079:25;;7075:34;7072:54;;;7122:1;7119;7112:12;7072:54;7154:22;;:::i;:::-;7139:37;;7222:2;7216;7212;7208:11;7195:25;7192:33;7189:53;;;7238:1;7235;7228:12;7189:53;7271:83;7346:7;7341:2;7334;7330;7326:11;7313:25;7309:2;7305:34;7301:43;7271:83;:::i;:::-;7262:7;7255:100;7401:2;7395;7391;7387:11;7374:25;7371:33;7368:53;;;7417:1;7414;7407:12;7368:53;7459:70;7521:7;7516:2;7509;7505;7501:11;7488:25;7484:2;7480:34;7476:43;7459:70;:::i;:::-;7454:2;7441:16;;;7434:96;;;;7543:24;;;-1:-1:-1;7650:2:74;7630:17;;7622:26;;7618:35;;;7605:49;7587:16;;;7580:75;7738:4;7706:37;7693:51;7675:16;;;7668:77;7758:20;;7798:12;;;;6609;6524:1296;;;-1:-1:-1;7847:2:74;7836:14;;7829:29;-1:-1:-1;5312:2576:74;;7840:5;;-1:-1:-1;5312:2576:74;;-1:-1:-1;;;;5312:2576:74:o;7893:886::-;7945:5;7998:3;7991:4;7983:6;7979:17;7975:27;7965:55;;8016:1;8013;8006:12;7965:55;8052:6;8039:20;8078:4;8102:60;8118:43;8158:2;8118:43;:::i;8102:60::-;8196:15;;;8282:1;8278:10;;;;8266:23;;8262:32;;;8227:12;;;;8306:15;;;8303:35;;;8334:1;8331;8324:12;8303:35;8370:2;8362:6;8358:15;8382:368;8398:6;8393:3;8390:15;8382:368;;;8484:3;8471:17;-1:-1:-1;;;;;8507:11:74;8504:35;8501:125;;;8580:1;8609:2;8605;8598:14;8501:125;8651:56;8703:3;8698:2;8684:11;8676:6;8672:24;8668:33;8651:56;:::i;:::-;8639:69;;-1:-1:-1;8728:12:74;;;;8415;;8382:368;;;-1:-1:-1;8768:5:74;7893:886;-1:-1:-1;;;;;;7893:886:74:o;8784:2617::-;8848:5;8901:3;8894:4;8886:6;8882:17;8878:27;8868:55;;8919:1;8916;8909:12;8868:55;8955:6;8942:20;8981:4;9005:60;9021:43;9061:2;9021:43;:::i;9005:60::-;9099:15;;;9185:1;9181:10;;;;9169:23;;9165:32;;;9130:12;;;;9209:15;;;9206:35;;;9237:1;9234;9227:12;9206:35;9273:2;9265:6;9261:15;9285:2087;9301:6;9296:3;9293:15;9285:2087;;;9387:3;9374:17;-1:-1:-1;;;;;9464:2:74;9451:11;9448:19;9445:109;;;9508:1;9537:2;9533;9526:14;9445:109;9577:24;;;;9624:6;9654:12;;;-1:-1:-1;;9650:26:74;9646:35;-1:-1:-1;9643:125:74;;;9722:1;9751:2;9747;9740:14;9643:125;9794:22;;:::i;:::-;9866:2;9862;9858:11;9845:25;9899:2;9889:8;9886:16;9883:106;;;9943:1;9972:2;9968;9961:14;9883:106;10016:49;10061:3;10056:2;10045:8;10041:2;10037:17;10033:26;10016:49;:::i;:::-;10009:5;10002:64;;10089:2;10141;10137;10133:11;10120:25;10174:2;10164:8;10161:16;10158:109;;;10219:1;10249:3;10244;10237:16;10158:109;10303:49;10348:3;10343:2;10332:8;10328:2;10324:17;10320:26;10303:49;:::i;:::-;10298:2;10291:5;10287:14;10280:73;;10377:2;10415:31;10441:3;10437:2;10433:12;10415:31;:::i;:::-;10410:2;10403:5;10399:14;10392:55;10471:3;10460:14;;10524:3;10520:2;10516:12;10503:26;10558:2;10548:8;10545:16;10542:109;;;10603:1;10633:3;10628;10621:16;10542:109;10688:49;10733:3;10728:2;10717:8;10713:2;10709:17;10705:26;10688:49;:::i;:::-;10682:3;10675:5;10671:15;10664:74;;;10762:3;10802:31;10828:3;10824:2;10820:12;10802:31;:::i;:::-;10796:3;10789:5;10785:15;10778:56;10858:3;10847:14;;10911:3;10907:2;10903:12;10890:26;10945:2;10935:8;10932:16;10929:109;;;10990:1;11020:3;11015;11008:16;10929:109;11075:59;11130:3;11125:2;11114:8;11110:2;11106:17;11102:26;11075:59;:::i;:::-;11069:3;11062:5;11058:15;11051:84;;;11159:3;11148:14;;11199:31;11225:3;11221:2;11217:12;11199:31;:::i;:::-;11182:15;;;11175:56;11268:30;11286:11;;;11268:30;:::i;:::-;11251:15;;;11244:55;;;;-1:-1:-1;11312:18:74;;-1:-1:-1;11350:12:74;;;;9318;;9285:2087;;11406:1092;11530:6;11538;11591:2;11579:9;11570:7;11566:23;11562:32;11559:52;;;11607:1;11604;11597:12;11559:52;11646:9;11633:23;11665:42;11701:5;11665:42;:::i;:::-;11726:5;-1:-1:-1;11782:2:74;11767:18;;11754:32;-1:-1:-1;;;;;11835:14:74;;;11832:34;;;11862:1;11859;11852:12;11832:34;11885:22;;;;11941:4;11923:16;;;11919:27;11916:47;;;11959:1;11956;11949:12;11916:47;11987:22;;:::i;:::-;12047:2;12034:16;12075:2;12065:8;12062:16;12059:36;;;12091:1;12088;12081:12;12059:36;12120:54;12166:7;12155:8;12151:2;12147:17;12120:54;:::i;:::-;12111:7;12104:71;;12209:58;12259:7;12254:2;12250;12246:11;12209:58;:::i;:::-;12204:2;12195:7;12191:16;12184:84;12314:4;12310:2;12306:13;12293:27;12345:2;12335:8;12332:16;12329:36;;;12361:1;12358;12351:12;12329:36;12399:66;12457:7;12446:8;12442:2;12438:17;12399:66;:::i;:::-;12394:2;12385:7;12381:16;12374:92;;12485:7;12475:17;;;;;11406:1092;;;;;:::o;12503:948::-;12626:6;12634;12687:2;12675:9;12666:7;12662:23;12658:32;12655:52;;;12703:1;12700;12693:12;12655:52;12742:9;12729:23;12761:42;12797:5;12761:42;:::i;:::-;12822:5;-1:-1:-1;12878:2:74;12863:18;;12850:32;-1:-1:-1;;;;;12931:14:74;;;12928:34;;;12958:1;12955;12948:12;12928:34;12981:22;;;;13037:2;13019:16;;;13015:25;13012:45;;;13053:1;13050;13043:12;13012:45;13086:2;13080:9;13128:2;13120:6;13116:15;13181:6;13169:10;13166:22;13161:2;13149:10;13146:18;13143:46;13140:72;;;13192:18;;:::i;:::-;13228:2;13221:22;13268:16;;13296;;;13293:36;;;13325:1;13322;13315:12;13293:36;13353:66;13411:7;13400:8;13396:2;13392:17;13353:66;:::i;:::-;13345:6;13338:82;;13439:6;13429:16;;;;;12503:948;;;;;:::o;13456:485::-;13552:6;13560;13613:2;13601:9;13592:7;13588:23;13584:32;13581:52;;;13629:1;13626;13619:12;13581:52;13668:9;13655:23;13687:42;13723:5;13687:42;:::i;:::-;13748:5;-1:-1:-1;13804:2:74;13789:18;;13776:32;-1:-1:-1;;;;;13820:30:74;;13817:50;;;13863:1;13860;13853:12;13817:50;13886:49;13927:7;13918:6;13907:9;13903:22;13886:49;:::i;:::-;13876:59;;;13456:485;;;;;:::o;13946:1848::-;14070:6;14078;14131:2;14119:9;14110:7;14106:23;14102:32;14099:52;;;14147:1;14144;14137:12;14099:52;14186:9;14173:23;14205:42;14241:5;14205:42;:::i;:::-;14266:5;-1:-1:-1;14290:2:74;14328:18;;;14315:32;-1:-1:-1;;;;;14396:14:74;;;14393:34;;;14423:1;14420;14413:12;14393:34;14446:22;;;;14502:4;14484:16;;;14480:27;14477:47;;;14520:1;14517;14510:12;14477:47;14548:22;;:::i;:::-;14608:2;14595:16;14636:2;14626:8;14623:16;14620:36;;;14652:1;14649;14642:12;14620:36;14675:17;;14723:4;14715:13;;14711:27;-1:-1:-1;14701:55:74;;14752:1;14749;14742:12;14701:55;14788:2;14775:16;14811:60;14827:43;14867:2;14827:43;:::i;14811:60::-;14905:15;;;14987:1;14983:10;;;;14975:19;;14971:28;;;14936:12;;;;15011:19;;;15008:39;;;15043:1;15040;15033:12;15008:39;15075:2;15071;15067:11;15087:365;15103:6;15098:3;15095:15;15087:365;;;15189:3;15176:17;15225:2;15212:11;15209:19;15206:109;;;15269:1;15298:2;15294;15287:14;15206:109;15340:69;15401:7;15396:2;15382:11;15378:2;15374:20;15370:29;15340:69;:::i;:::-;15328:82;;-1:-1:-1;15430:12:74;;;;15120;;15087:365;;;15091:3;15477:5;15468:7;15461:22;;;;;15517:58;15567:7;15562:2;15558;15554:11;15517:58;:::i;:::-;15512:2;15503:7;15499:16;15492:84;15622:4;15618:2;15614:13;15601:27;15585:43;;15653:2;15643:8;15640:16;15637:36;;;15669:1;15666;15659:12;15637:36;15707:54;15753:7;15742:8;15738:2;15734:17;15707:54;:::i;:::-;15702:2;15693:7;15689:16;15682:80;15781:7;15771:17;;;;;;13946:1848;;;;;:::o;15799:2252::-;15923:6;15931;15984:2;15972:9;15963:7;15959:23;15955:32;15952:52;;;16000:1;15997;15990:12;15952:52;16039:9;16026:23;16058:42;16094:5;16058:42;:::i;:::-;16119:5;-1:-1:-1;16143:2:74;16181:18;;;16168:32;-1:-1:-1;;;;;16249:14:74;;;16246:34;;;16276:1;16273;16266:12;16246:34;16299:22;;;;16355:2;16337:16;;;16333:25;16330:45;;;16371:1;16368;16361:12;16330:45;16399:22;;:::i;:::-;16459:2;16446:16;16487:2;16477:8;16474:16;16471:36;;;16503:1;16500;16493:12;16471:36;16532:51;16575:7;16564:8;16560:2;16556:17;16532:51;:::i;:::-;16523:7;16516:68;;16630:2;16626;16622:11;16609:25;16659:2;16649:8;16646:16;16643:36;;;16675:1;16672;16665:12;16643:36;16706:8;16702:2;16698:17;16688:27;;;16753:7;16746:4;16742:2;16738:13;16734:27;16724:55;;16775:1;16772;16765:12;16724:55;16811:2;16798:16;16834:60;16850:43;16890:2;16850:43;:::i;16834:60::-;16928:15;;;17010:1;17006:10;;;;16998:19;;16994:28;;;16959:12;;;;17034:19;;;17031:39;;;17066:1;17063;17056:12;17031:39;17098:2;17094;17090:11;17110:869;17126:6;17121:3;17118:15;17110:869;;;17212:3;17199:17;17248:2;17235:11;17232:19;17229:39;;;17264:1;17261;17254:12;17229:39;17291:20;;17363:4;17335:16;;;-1:-1:-1;;17331:30:74;17327:41;17324:131;;;17409:1;17438:2;17434;17427:14;17324:131;17483:22;;:::i;:::-;17555:2;17551;17547:11;17534:25;17588:2;17578:8;17575:16;17572:106;;;17632:1;17661:2;17657;17650:14;17572:106;17707:66;17765:7;17760:2;17749:8;17745:2;17741:17;17737:26;17707:66;:::i;:::-;17691:83;;-1:-1:-1;17833:2:74;17825:11;;;17812:25;17794:16;;;17787:51;17897:4;17889:13;;;17876:27;17858:16;;;17851:53;;;;17917:20;;17957:12;;;;17143;;17110:869;;;17114:3;18013:5;18008:2;17999:7;17995:16;17988:31;;;;18038:7;18028:17;;;;;;15799:2252;;;;;:::o;18056:277::-;18123:6;18176:2;18164:9;18155:7;18151:23;18147:32;18144:52;;;18192:1;18189;18182:12;18144:52;18224:9;18218:16;18277:5;18270:13;18263:21;18256:5;18253:32;18243:60;;18299:1;18296;18289:12;18243:60;18322:5;18056:277;-1:-1:-1;;;18056:277:74:o;18338:340::-;18540:2;18522:21;;;18579:2;18559:18;;;18552:30;-1:-1:-1;;;18613:2:74;18598:18;;18591:46;18669:2;18654:18;;18338:340::o;18847:281::-;18767:12;;18755:25;;18829:4;18818:16;;;18812:23;18796:14;;;18789:47;19055:2;19040:18;;19067:55;18683:159;19133:184;19203:6;19256:2;19244:9;19235:7;19231:23;19227:32;19224:52;;;19272:1;19269;19262:12;19224:52;-1:-1:-1;19295:16:74;;19133:184;-1:-1:-1;19133:184:74:o;19322:127::-;19383:10;19378:3;19374:20;19371:1;19364:31;19414:4;19411:1;19404:15;19438:4;19435:1;19428:15;19454:128;19521:9;;;19542:11;;;19539:37;;;19556:18;;:::i;19587:399::-;19789:2;19771:21;;;19828:2;19808:18;;;19801:30;19867:34;19862:2;19847:18;;19840:62;-1:-1:-1;;;19933:2:74;19918:18;;19911:33;19976:3;19961:19;;19587:399::o;19991:127::-;20052:10;20047:3;20043:20;20040:1;20033:31;20083:4;20080:1;20073:15;20107:4;20104:1;20097:15;20123:250;20208:1;20218:113;20232:6;20229:1;20226:13;20218:113;;;20308:11;;;20302:18;20289:11;;;20282:39;20254:2;20247:10;20218:113;;;-1:-1:-1;;20365:1:74;20347:16;;20340:27;20123:250::o;20378:441::-;20431:5;20484:3;20477:4;20469:6;20465:17;20461:27;20451:55;;20502:1;20499;20492:12;20451:55;20531:6;20525:13;20562:48;20578:31;20606:2;20578:31;:::i;20562:48::-;20635:2;20626:7;20619:19;20681:3;20674:4;20669:2;20661:6;20657:15;20653:26;20650:35;20647:55;;;20698:1;20695;20688:12;20647:55;20711:77;20785:2;20778:4;20769:7;20765:18;20758:4;20750:6;20746:17;20711:77;:::i;:::-;20806:7;20378:441;-1:-1:-1;;;;20378:441:74:o;20824:335::-;20903:6;20956:2;20944:9;20935:7;20931:23;20927:32;20924:52;;;20972:1;20969;20962:12;20924:52;21005:9;20999:16;-1:-1:-1;;;;;21030:6:74;21027:30;21024:50;;;21070:1;21067;21060:12;21024:50;21093:60;21145:7;21136:6;21125:9;21121:22;21093:60;:::i;21753:349::-;21955:2;21937:21;;;21994:2;21974:18;;;21967:30;22033:27;22028:2;22013:18;;22006:55;22093:2;22078:18;;21753:349::o;22509:135::-;22548:3;22569:17;;;22566:43;;22589:18;;:::i;:::-;-1:-1:-1;22636:1:74;22625:13;;22509:135::o;22649:345::-;22722:5;22770:4;22758:9;22753:3;22749:19;22745:30;22742:50;;;22788:1;22785;22778:12;22742:50;22810:22;;:::i;:::-;22801:31;;22861:9;22855:16;22848:5;22841:31;22925:2;22914:9;22910:18;22904:25;22899:2;22892:5;22888:14;22881:49;22983:2;22972:9;22968:18;22962:25;22957:2;22950:5;22946:14;22939:49;22649:345;;;;:::o;22999:266::-;23103:6;23156:2;23144:9;23135:7;23131:23;23127:32;23124:52;;;23172:1;23169;23162:12;23124:52;23195:64;23251:7;23240:9;23195:64;:::i;23270:397::-;23472:2;23454:21;;;23511:2;23491:18;;;23484:30;23550:34;23545:2;23530:18;;23523:62;-1:-1:-1;;;23616:2:74;23601:18;;23594:31;23657:3;23642:19;;23270:397::o;23672:1522::-;24008:4;24056:3;24045:9;24041:19;24087:6;24076:9;24069:25;24113:2;24151:3;24146:2;24135:9;24131:18;24124:31;24175:6;24210;24204:13;24241:6;24233;24226:22;24279:3;24268:9;24264:19;24257:26;;24318:2;24310:6;24306:15;24292:29;;24339:1;24349:169;24363:6;24360:1;24357:13;24349:169;;;24424:13;;24412:26;;24493:15;;;;24458:12;;;;24385:1;24378:9;24349:169;;;24353:3;;24537:2;24527:12;;24584:9;24579:3;24575:19;24570:2;24559:9;24555:18;24548:47;24617:3;24651:6;24645:13;24679:8;24674:3;24667:21;24715:2;24710:3;24706:12;24697:21;;24755:2;24747:6;24743:15;24727:31;;24778:1;24788:333;24804:8;24799:3;24796:17;24788:333;;;24869:15;;24911:9;;24897:24;;24963:11;;;24957:18;24941:14;;;24934:42;25018:11;;25012:18;24996:14;;;24989:42;25094:17;;;;25064:4;25053:16;;;;24832:1;24823:11;24788:333;;;24792:3;;25138:5;25130:13;;;;;;25181:6;25174:4;25163:9;25159:20;25152:36;23672:1522;;;;;;;:::o;25601:270::-;25642:3;25680:5;25674:12;25707:6;25702:3;25695:19;25723:76;25792:6;25785:4;25780:3;25776:14;25769:4;25762:5;25758:16;25723:76;:::i;:::-;25853:2;25832:15;-1:-1:-1;;25828:29:74;25819:39;;;;25860:4;25815:50;;25601:270;-1:-1:-1;;25601:270:74:o;25983:1242::-;26037:3;26065:6;26106:5;26100:12;26133:2;26128:3;26121:15;26157:44;26197:2;26192:3;26188:12;26174;26157:44;:::i;:::-;26145:56;;;26249:4;26242:5;26238:16;26232:23;26297:3;26291:4;26287:14;26280:4;26275:3;26271:14;26264:38;26325;26358:4;26342:14;26325:38;:::i;:::-;26311:52;;;26411:4;26404:5;26400:16;26394:23;26426:49;26469:4;26464:3;26460:14;26444;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;26426:49;;26523:4;26516:5;26512:16;26506:23;26573:3;26565:6;26561:16;26554:4;26549:3;26545:14;26538:40;26601;26634:6;26618:14;26601:40;:::i;:::-;26587:54;;;26689:4;26682:5;26678:16;26672:23;26739:3;26731:6;26727:16;26720:4;26715:3;26711:14;26704:40;26767;26800:6;26784:14;26767:40;:::i;:::-;26753:54;;;26855:4;26848:5;26844:16;26838:23;26870:49;26913:4;26908:3;26904:14;26888;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;26870:49;;26967:4;26960:5;26956:16;26950:23;27017:3;27009:6;27005:16;26998:4;26993:3;26989:14;26982:40;27045;27078:6;27062:14;27045:40;:::i;:::-;27031:54;;;27133:4;27126:5;27122:16;27116:23;27148:49;27191:4;27186:3;27182:14;27166;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;27148:49;-1:-1:-1;27213:6:74;25983:1242;-1:-1:-1;;;25983:1242:74:o;27230:554::-;27421:2;27410:9;27403:21;27384:4;27459:6;27453:13;27502:4;27497:2;27486:9;27482:18;27475:32;27530:63;27589:2;27578:9;27574:18;27560:12;27530:63;:::i;:::-;27516:77;;27642:2;27634:6;27630:15;27624:22;27716:2;27712:7;27700:9;27692:6;27688:22;27684:36;27677:4;27666:9;27662:20;27655:66;27738:40;27771:6;27755:14;27738:40;:::i;29105:614::-;29156:3;29194:5;29188:12;29221:6;29216:3;29209:19;29247:4;29288:2;29283:3;29279:12;29313:11;29340;29333:18;;29390:6;29387:1;29383:14;29376:5;29372:26;29360:38;;29432:2;29425:5;29421:14;29453:1;29463:230;29477:6;29474:1;29471:13;29463:230;;;29548:5;29542:4;29538:16;29533:3;29526:29;29576:37;29608:4;29599:6;29593:13;29576:37;:::i;:::-;29671:12;;;;29568:45;-1:-1:-1;29636:15:74;;;;29499:1;29492:9;29463:230;;;-1:-1:-1;29709:4:74;;29105:614;-1:-1:-1;;;;;;;29105:614:74:o;29724:738::-;30099:6;30088:9;30081:25;30142:3;30137:2;30126:9;30122:18;30115:31;30062:4;30169:55;30219:3;30208:9;30204:19;30196:6;30169:55;:::i;:::-;30272:9;30264:6;30260:22;30255:2;30244:9;30240:18;30233:50;30306:42;30341:6;30333;30306:42;:::i;:::-;30292:56;;30396:9;30388:6;30384:22;30379:2;30368:9;30364:18;30357:50;30424:32;30449:6;30441;30424:32;:::i;:::-;30416:40;29724:738;-1:-1:-1;;;;;;;29724:738:74:o;30467:1880::-;30593:6;30624:2;30667;30655:9;30646:7;30642:23;30638:32;30635:52;;;30683:1;30680;30673:12;30635:52;30716:9;30710:16;-1:-1:-1;;;;;30786:2:74;30778:6;30775:14;30772:34;;;30802:1;30799;30792:12;30772:34;30840:6;30829:9;30825:22;30815:32;;30885:7;30878:4;30874:2;30870:13;30866:27;30856:55;;30907:1;30904;30897:12;30856:55;30936:2;30930:9;30959:60;30975:43;31015:2;30975:43;:::i;30959:60::-;31053:15;;;31135:1;31131:10;;;;31123:19;;31119:28;;;31084:12;;;;31159:19;;;31156:39;;;31191:1;31188;31181:12;31156:39;31223:2;31219;31215:11;31235:1082;31251:6;31246:3;31243:15;31235:1082;;;31330:3;31324:10;31366:2;31353:11;31350:19;31347:109;;;31410:1;31439:2;31435;31428:14;31347:109;31479:20;;31522:4;31550:16;;;-1:-1:-1;;31546:30:74;31542:39;-1:-1:-1;31539:129:74;;;31622:1;31651:2;31647;31640:14;31539:129;31694:22;;:::i;:::-;31759:2;31755;31751:11;31745:18;31792:2;31782:8;31779:16;31776:106;;;31836:1;31865:2;31861;31854:14;31776:106;31909:64;31965:7;31960:2;31949:8;31945:2;31941:17;31937:26;31909:64;:::i;:::-;31895:79;;-1:-1:-1;32009:11:74;;;32003:18;;32037:16;;;32034:109;;;32095:1;32125:3;32120;32113:16;32034:109;32179:64;32235:7;32230:2;32219:8;32215:2;32211:17;32207:26;32179:64;:::i;:::-;32163:14;;;32156:88;32257:18;;-1:-1:-1;;32295:12:74;;;;31268;;31235:1082;;;-1:-1:-1;32336:5:74;30467:1880;-1:-1:-1;;;;;;;;30467:1880:74:o;32713:1197::-;32766:3;32794:6;32835:5;32829:12;32862:2;32857:3;32850:15;32886:44;32926:2;32921:3;32917:12;32903;32886:44;:::i;:::-;32874:56;;;32978:4;32971:5;32967:16;32961:23;33026:3;33020:4;33016:14;33009:4;33004:3;33000:14;32993:38;33054;33087:4;33071:14;33054:38;:::i;:::-;33040:52;;;33140:4;33133:5;33129:16;33123:23;33155:49;33198:4;33193:3;33189:14;33173;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;33155:49;;33252:4;33245:5;33241:16;33235:23;33302:3;33294:6;33290:16;33283:4;33278:3;33274:14;33267:40;33330;33363:6;33347:14;33330:40;:::i;:::-;33316:54;;;33418:4;33411:5;33407:16;33401:23;33433:49;33476:4;33471:3;33467:14;33451;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;33433:49;;33530:4;33523:5;33519:16;33513:23;33580:3;33572:6;33568:16;33561:4;33556:3;33552:14;33545:40;33608:50;33651:6;33635:14;33608:50;:::i;:::-;33594:64;;;33706:4;33699:5;33695:16;33689:23;33721:49;33764:4;33759:3;33755:14;33739;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;33721:49;;33818:4;33811:5;33807:16;33801:23;33833:49;33876:4;33871:3;33867:14;33851;-1:-1:-1;;;;;25941:30:74;25929:43;;25876:102;33915:1387;34067:4;34096:2;34125;34114:9;34107:21;34163:6;34157:13;34189:4;34229:2;34224;34213:9;34209:18;34202:30;34255:62;34313:2;34302:9;34298:18;34284:12;34255:62;:::i;:::-;34354:15;;;34348:22;-1:-1:-1;;34436:22:74;;;34432:31;;34412:18;;;34405:59;34513:21;;34543:22;;;34436;;-1:-1:-1;34678:23:74;;;;34581:15;;;;34639:1;34635:14;;;34623:27;;34619:36;;34719:1;34729:544;34743:6;34740:1;34737:13;34729:544;;;34829:2;34820:6;34812;34808:19;34804:28;34799:3;34792:41;34862:6;34856:13;34910:2;34904:9;34941:2;34933:6;34926:18;34971:49;35016:2;35008:6;35004:15;34988:14;34971:49;:::i;:::-;35061:11;;;35055:18;35110:19;;;35093:15;;;35086:44;35055:18;34957:63;-1:-1:-1;35153:40:74;34957:63;35055:18;35153:40;:::i;:::-;35216:15;;;;35251:12;;;;35143:50;-1:-1:-1;;;34765:1:74;34758:9;34729:544;;;-1:-1:-1;35290:6:74;33915:1387;-1:-1:-1;;;;;;;;;;33915:1387:74:o;35711:269::-;35898:2;35887:9;35880:21;35861:4;35918:56;35970:2;35959:9;35955:18;35947:6;35918:56;:::i;35985:262::-;36055:6;36108:2;36096:9;36087:7;36083:23;36079:32;36076:52;;;36124:1;36121;36114:12;36076:52;36156:9;36150:16;36175:42;36211:5;36175:42;:::i;36252:377::-;36445:2;36434:9;36427:21;36408:4;36471:44;36511:2;36500:9;36496:18;36488:6;36471:44;:::i;:::-;36563:9;36555:6;36551:22;36546:2;36535:9;36531:18;36524:50;36591:32;36616:6;36608;36591:32;:::i;:::-;36583:40;36252:377;-1:-1:-1;;;;;36252:377:74:o;36634:749::-;36758:6;36766;36810:9;36801:7;36797:23;36840:3;36836:2;36832:12;36829:32;;;36857:1;36854;36847:12;36829:32;36890:9;36884:16;-1:-1:-1;;;;;36915:6:74;36912:30;36909:50;;;36955:1;36952;36945:12;36909:50;36978:60;37030:7;37021:6;37010:9;37006:22;36978:60;:::i;:::-;36968:70;-1:-1:-1;;37072:4:74;-1:-1:-1;;37054:16:74;;37050:27;37047:47;;;37090:1;37087;37080:12;37047:47;;37116:22;;:::i;:::-;37182:2;37171:9;37167:18;37161:25;37154:5;37147:40;37240:2;37229:9;37225:18;37219:25;37214:2;37207:5;37203:14;37196:49;37277:75;37344:7;37337:4;37326:9;37322:20;37277:75;:::i;:::-;37272:2;37265:5;37261:14;37254:99;37372:5;37362:15;;;36634:749;;;;;:::o;37388:217::-;37535:2;37524:9;37517:21;37498:4;37555:44;37595:2;37584:9;37580:18;37572:6;37555:44;:::i;39306:492::-;39481:3;39519:6;39513:13;39535:66;39594:6;39589:3;39582:4;39574:6;39570:17;39535:66;:::i;:::-;39664:13;;39623:16;;;;39686:70;39664:13;39623:16;39733:4;39721:17;;39686:70;:::i;:::-;39772:20;;39306:492;-1:-1:-1;;;;39306:492:74:o;39803:576::-;40132:6;40121:9;40114:25;40175:2;40170;40159:9;40155:18;40148:30;40095:4;40201:54;40251:2;40240:9;40236:18;40228:6;40201:54;:::i;:::-;40303:9;40295:6;40291:22;40286:2;40275:9;40271:18;40264:50;40331:42;40366:6;40358;40331:42;:::i;:::-;40323:50;39803:576;-1:-1:-1;;;;;;39803:576:74:o;40791:359::-;40980:2;40969:9;40962:21;40943:4;41018:6;41012:13;41061:2;41056;41045:9;41041:18;41034:30;41081:63;41140:2;41129:9;41125:18;41111:12;41081:63;:::i;42634:272::-;42823:2;42812:9;42805:21;42786:4;42843:57;42896:2;42885:9;42881:18;42873:6;42843:57;:::i;42911:1432::-;43302:3;43340:6;43334:13;43356:66;43415:6;43410:3;43403:4;43395:6;43391:17;43356:66;:::i;:::-;43485:13;;43444:16;;;;43507:70;43485:13;43444:16;43554:4;43542:17;;43507:70;:::i;:::-;43642:3;43693:16;;;-1:-1:-1;;;;;;43689:25:74;;;43599:20;;;;43675:40;;;43750:16;;;43746:25;;43742:1;43731:13;;43724:48;43797:13;;43819:79;43797:13;43884:2;43873:14;;43866:4;43854:17;;43819:79;:::i;:::-;43962:13;;43917:20;;;43984:76;43962:13;44046:2;44038:11;;44031:4;44019:17;;43984:76;:::i;:::-;44121:13;;44079:17;;;44143:76;44121:13;44205:2;44197:11;;44190:4;44178:17;;44143:76;:::i;:::-;44292:3;44288:16;;;;44284:25;44238:17;;44279:2;44271:11;;44264:46;;;;-1:-1:-1;;44334:2:74;44326:11;;;-1:-1:-1;;;;;;;42911:1432:74:o;44348:1546::-;44759:3;44797:6;44791:13;44823:4;44836:64;44893:6;44888:3;44883:2;44875:6;44871:15;44836:64;:::i;:::-;44963:13;;44922:16;;;;44985:68;44963:13;44922:16;45020:15;;;44985:68;:::i;:::-;45118:3;45169:16;;;-1:-1:-1;;;;;;45165:25:74;;;45075:20;;;;45151:40;;;45226:16;;;45222:25;45218:1;45207:13;;45200:48;45273:13;;45295:77;45273:13;45358:2;45347:14;;45330:15;;;45295:77;:::i;:::-;45436:13;;45391:20;;;45458:74;45436:13;45518:2;45510:11;;45493:15;;;45458:74;:::i;:::-;45593:13;;45551:17;;;45615:74;45593:13;45675:2;45667:11;;45650:15;;;45615:74;:::i;:::-;45750:13;;45708:17;;;45772:74;45750:13;45832:2;45824:11;;45807:15;;;45772:74;:::i;:::-;45866:17;;;;45885:2;45862:26;;44348:1546;-1:-1:-1;;;;;;;;;;;44348:1546:74:o;45899:1313::-;46270:3;46308:6;46302:13;46324:66;46383:6;46378:3;46371:4;46363:6;46359:17;46324:66;:::i;:::-;46453:13;;46412:16;;;;46475:70;46453:13;46412:16;46522:4;46510:17;;46475:70;:::i;:::-;46610:3;46661:16;;;-1:-1:-1;;;;;;46657:25:74;;;46567:20;;;;46643:40;;;46718:16;;;46714:25;;46710:1;46699:13;;46692:48;46776:16;;;46772:25;;46767:2;46756:14;;46749:49;46823:13;;46845:79;46823:13;46910:2;46899:14;;46892:4;46880:17;;46845:79;:::i;:::-;46988:13;;46943:20;;;47010:76;46988:13;47072:2;47064:11;;47057:4;47045:17;;47010:76;:::i;:::-;47159:3;47155:16;;;;47151:25;47105:17;;47146:2;47138:11;;47131:46;;;;-1:-1:-1;;47201:4:74;47193:13;;;-1:-1:-1;;;;;;;45899:1313:74:o;47217:277::-;47414:2;47403:9;47396:21;47377:4;47434:54;47484:2;47473:9;47469:18;47461:6;47434:54;:::i", + "linkReferences": { + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "MerkleMountainRange": [ + { + "start": 1707, + "length": 20 + }, + { + "start": 9534, + "length": 20 + } + ] + }, + "lib/solidity-merkle-trees/src/MerklePatricia.sol": { + "MerklePatricia": [ + { + "start": 3393, + "length": 20 + }, + { + "start": 7532, + "length": 20 + } + ] + } + } + }, + "methodIdentifiers": { + "handleConsensus(address,bytes)": "bb1689be", + "handleGetResponses(address,(bytes[],(uint256,uint256),(bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))": "873ce1ce", + "handleGetTimeouts(address,((bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))": "ac269bd6", + "handlePostRequests(address,(((uint256,uint256),bytes32[],uint256),((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),uint256,uint256)[]))": "fda626c3", + "handlePostResponses(address,(((uint256,uint256),bytes32[],uint256),(((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),bytes),uint256,uint256)[]))": "20d71c7a", + "handlePostTimeouts(address,((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64)[],(uint256,uint256),bytes[]))": "d95e4fbb" + }, + "rawMetadata": "{\"compiler\":{\"version\":\"0.8.17+commit.8df45f5f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"StateMachineUpdated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"}],\"name\":\"handleConsensus\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"bytes[]\",\"name\":\"proof\",\"type\":\"bytes[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"internalType\":\"struct StateMachineHeight\",\"name\":\"height\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes[]\",\"name\":\"keys\",\"type\":\"bytes[]\"},{\"internalType\":\"uint64\",\"name\":\"height\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct GetRequest[]\",\"name\":\"requests\",\"type\":\"tuple[]\"}],\"internalType\":\"struct GetResponseMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"handleGetResponses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes[]\",\"name\":\"keys\",\"type\":\"bytes[]\"},{\"internalType\":\"uint64\",\"name\":\"height\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct GetRequest[]\",\"name\":\"timeouts\",\"type\":\"tuple[]\"}],\"internalType\":\"struct GetTimeoutMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"handleGetTimeouts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"internalType\":\"struct StateMachineHeight\",\"name\":\"height\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"multiproof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"leafCount\",\"type\":\"uint256\"}],\"internalType\":\"struct Proof\",\"name\":\"proof\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"body\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct PostRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct PostRequestLeaf[]\",\"name\":\"requests\",\"type\":\"tuple[]\"}],\"internalType\":\"struct PostRequestMessage\",\"name\":\"request\",\"type\":\"tuple\"}],\"name\":\"handlePostRequests\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"internalType\":\"struct StateMachineHeight\",\"name\":\"height\",\"type\":\"tuple\"},{\"internalType\":\"bytes32[]\",\"name\":\"multiproof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256\",\"name\":\"leafCount\",\"type\":\"uint256\"}],\"internalType\":\"struct Proof\",\"name\":\"proof\",\"type\":\"tuple\"},{\"components\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"body\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct PostRequest\",\"name\":\"request\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"response\",\"type\":\"bytes\"}],\"internalType\":\"struct PostResponse\",\"name\":\"response\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"kIndex\",\"type\":\"uint256\"}],\"internalType\":\"struct PostResponseLeaf[]\",\"name\":\"responses\",\"type\":\"tuple[]\"}],\"internalType\":\"struct PostResponseMessage\",\"name\":\"response\",\"type\":\"tuple\"}],\"name\":\"handlePostResponses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IIsmpHost\",\"name\":\"host\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"source\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"dest\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"timeoutTimestamp\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"body\",\"type\":\"bytes\"},{\"internalType\":\"uint64\",\"name\":\"gaslimit\",\"type\":\"uint64\"}],\"internalType\":\"struct PostRequest[]\",\"name\":\"timeouts\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"stateMachineId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"internalType\":\"struct StateMachineHeight\",\"name\":\"height\",\"type\":\"tuple\"},{\"internalType\":\"bytes[]\",\"name\":\"proof\",\"type\":\"bytes[]\"}],\"internalType\":\"struct PostTimeoutMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"handlePostTimeouts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"handleConsensus(address,bytes)\":{\"details\":\"Handle incoming consensus messages\",\"params\":{\"host\":\"- Ismp host\",\"proof\":\"- consensus proof\"}},\"handleGetResponses(address,(bytes[],(uint256,uint256),(bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))\":{\"details\":\"check response proofs, message delay and timeouts, then dispatch get responses to modules\",\"params\":{\"host\":\"- Ismp host\",\"message\":\"- batch get responses\"}},\"handleGetTimeouts(address,((bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))\":{\"details\":\"dispatch to modules\",\"params\":{\"host\":\"- Ismp host\",\"message\":\"- batch get request timeouts\"}},\"handlePostRequests(address,(((uint256,uint256),bytes32[],uint256),((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),uint256,uint256)[]))\":{\"details\":\"check request proofs, message delay and timeouts, then dispatch post requests to modules\",\"params\":{\"host\":\"- Ismp host\",\"request\":\"- batch post requests\"}},\"handlePostResponses(address,(((uint256,uint256),bytes32[],uint256),(((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),bytes),uint256,uint256)[]))\":{\"details\":\"check response proofs, message delay and timeouts, then dispatch post responses to modules\",\"params\":{\"host\":\"- Ismp host\",\"response\":\"- batch post responses\"}},\"handlePostTimeouts(address,((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64)[],(uint256,uint256),bytes[]))\":{\"details\":\"check timeout proofs then dispatch to modules\",\"params\":{\"host\":\"- Ismp host\",\"message\":\"- batch post request timeouts\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/HandlerV1.sol\":\"HandlerV1\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":ismp-solidity/=lib/ismp-solidity/\",\":ismp/=lib/ismp-solidity/src/\",\":multi-chain-tokens/=lib/multi-chain-tokens/src/\",\":multichain-token/=lib/ismp-solidity/lib/multichain-native-tokens/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":solidity-merkle-trees/=lib/solidity-merkle-trees/src/\"]},\"sources\":{\"lib/ismp-solidity/src/interfaces/IConsensusClient.sol\":{\"keccak256\":\"0x2be700e8c2c819144057e55622f3dac0a50763332aae22fba3fe90a0571028da\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e5b3e8d9a1e94252bcad307fb0ecb5e25401bcd01de9f5e5bab5fe2e53e167d8\",\"dweb:/ipfs/QmQf5Famyv2uBfmrKH2eGo8LvTBsaqjh3o8Fxry7EP9Xwb\"]},\"lib/ismp-solidity/src/interfaces/IHandler.sol\":{\"keccak256\":\"0xecba9c5a118cc651d0a48667c42da738057f5a4f77b49faa4c61741aa154c767\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b598e34eb95e5986308257f1aa92547f46a40a894b7dd5f837c9ee2473b7fbbe\",\"dweb:/ipfs/QmSbe3bgekCw3hoCtMpSY6tqzqjSgeRwgu7X62r4wxfi1J\"]},\"lib/ismp-solidity/src/interfaces/IIsmp.sol\":{\"keccak256\":\"0x0a9f17234dcd132353593fed8cb8b059ca921d73cc4a61502e5cc015e79cf490\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1740a5097cb9a96b1c6d4fe62bf74b58410c91246afcd79847446547ccf5fdd4\",\"dweb:/ipfs/Qmardqm7RrmeGfMAw69xctQagT6yyu4dcZDUDykmVwPdUz\"]},\"lib/ismp-solidity/src/interfaces/IIsmpHost.sol\":{\"keccak256\":\"0x92eade08184d975e98c2049ef4eb96281839cd77aa317cf272467e720cb749bb\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c8342b8747d7f20da3ec090ad4dc837c5e25f56edf6afa1a2de5e418c8d11018\",\"dweb:/ipfs/QmPuuXcUACXDnK29J7NuZCsT5YQeg4vRjyzs9sd9FpsoED\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"lib/solidity-merkle-trees/src/MerkleMountainRange.sol\":{\"keccak256\":\"0x867f348fc7fce6f1e5cc5d41968389f7a832d99acddf9a544297e6ab27b9d823\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://27a91f509bc1d4b171d11722f30b35f5a8c456d42f07692865418a7fdb50a69a\",\"dweb:/ipfs/QmTKLoX2CV1Fo6nJo4f4ycdiUaw1y4FzpdqXHKkoVdG4BP\"]},\"lib/solidity-merkle-trees/src/MerkleMultiProof.sol\":{\"keccak256\":\"0x71a97fc3f97c50ac429f1109176f5eaffc34b4d1f291bb58da61baa8cdc348e0\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://f964717f4577e7081a23f6301058c461854151d156aae33beaa39588aba8ef8e\",\"dweb:/ipfs/QmbsadFursZrYUK6a3m55N5P5mZ2hWAtDpFsMZqoU2EV5L\"]},\"lib/solidity-merkle-trees/src/MerklePatricia.sol\":{\"keccak256\":\"0x452857f8e6c5b5878402bba1805bf4c3aef01c6c8f949dd72d20e07df8952bfc\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://c1007fe97775e37c9b6084e0ac98b249e7746ca531a04265291b0c57002f67b4\",\"dweb:/ipfs/QmYiqp6MHoGWgZAHvKjKBphczJY3t4zDuV9M4V1UzuC8ML\"]},\"lib/solidity-merkle-trees/src/trie/Bytes.sol\":{\"keccak256\":\"0x03ffca5abeb3f2665997059af505a8225f881c3d375dddfdef77e6d3aac67db8\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://d3a4e7d650143dbb64a61e492260e50053de9b89536d05c8007c43b25602f610\",\"dweb:/ipfs/QmbdyvPcHgcZsL4Sk2dS7s86qARePDyhcRPj5xtBko6e3t\"]},\"lib/solidity-merkle-trees/src/trie/Memory.sol\":{\"keccak256\":\"0x6d309ea24fca1313f1ac6ed57e31a94c44276006e233c46c7cf35e2ddcb88856\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://d2283a501d235201e1a18bb046ad713ce49dcaf287ae09d10025c786ab326648\",\"dweb:/ipfs/QmPNvWGoCTu8MwMco6qjfW4RcwrJJKJhxQtfCEbeyB9rx2\"]},\"lib/solidity-merkle-trees/src/trie/NibbleSlice.sol\":{\"keccak256\":\"0x284ad5142dfe57d2a67de0c3787469367821926488d04e532adc71108c48a07b\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://c1bf96fdff2fc0db8500261bc89f480cd09b38355750203f15f95f1bd3000392\",\"dweb:/ipfs/QmUd9iTH7U5pyezYqJVpET2es3uhjQmeGToEWywHUjXuNM\"]},\"lib/solidity-merkle-trees/src/trie/Node.sol\":{\"keccak256\":\"0x5e1b5dd46013b706ac86627c8a21a52a43ef151060479208abe0b6802e8c19b5\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://9b43ab483ff79c2fa9165b678b86a838bbf6fa60092cfe8e8d55023af0488c3d\",\"dweb:/ipfs/QmT8Sy3HoAc9xY6C6gPK3s5SsJJgYztGGUpin7g54GeRcB\"]},\"lib/solidity-merkle-trees/src/trie/Option.sol\":{\"keccak256\":\"0xd5b67f9fd3218d507923147eacc9d209f55ad211e9c7258a07d7bc2c4db386b0\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://6c134fcc01f84820fdea93e747b3f2a5ee47bac6eda2c43504e87201229cbc4f\",\"dweb:/ipfs/QmX1fQ32tyaR9EReyUbCfcSKGHzoEN88GPbwdwNAJQyVfL\"]},\"lib/solidity-merkle-trees/src/trie/TrieDB.sol\":{\"keccak256\":\"0xcf56409c430ebf1053edb199120c2961f0380b9fe93a36ccb5369e004dcafd64\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://5bdad30e72f8f29ba030db27881a08d63486544fb50abc99fa5a08902d7ad04a\",\"dweb:/ipfs/QmQAoC1G6SXdGzVuLUt6pDbnaWJyGcUzWwpVbrwN4eCmdn\"]},\"lib/solidity-merkle-trees/src/trie/ethereum/EthereumTrieDB.sol\":{\"keccak256\":\"0xc64596f6d1c23f153efe19c62f0f2631ba92e6ac0f67ca57d93c2c75af98b6cf\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://a95680e75f6ef869d81708f05e67bf6a34f6c4c0d91e189b57a314bdc1e61c03\",\"dweb:/ipfs/QmSuKZdDbjTGcUW6kVJ1Ghzb7zh3RdpdJpde5izk7fmZek\"]},\"lib/solidity-merkle-trees/src/trie/ethereum/RLPReader.sol\":{\"keccak256\":\"0xb8f4d1c02840086b3a9e81df93eebb120a40168681c119bee3f4c9849404538c\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://96e41baf205786170f910596dd8aea91615c0a98bfb9771967f64f34b99bd8ca\",\"dweb:/ipfs/QmVqAFeCLzNhEM8yJoed2reQoGK1EiE72BVPyvgESEhgsm\"]},\"lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol\":{\"keccak256\":\"0x6fcfb3f4bb5ae07ab71aa9cf84bb19a8dda129a6f7ac8a35ae915858c4ef1a0f\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://2bbfb7e76afac849b15ba3285e73e463f85f2533c5ad9c1d40b35271359d2f7c\",\"dweb:/ipfs/QmWRgZRa4C32VMZnFLzUVTpqVggYD3wfPoiA5PtgHTiEve\"]},\"lib/solidity-merkle-trees/src/trie/substrate/SubstrateTrieDB.sol\":{\"keccak256\":\"0x01545b72eb381d0ec25de0155126efa429301f39f8854a41ed36811fb5d94069\",\"license\":\"Apache2\",\"urls\":[\"bzz-raw://ab7079de5a4f4af78fd0be8d90215787431711b0b7d2d9f6aefa7ed4db3a5f76\",\"dweb:/ipfs/QmNaSdtRNs3A5aUmT7ZbWmDU5sRE6iKsMPVc3EzHZFYhDB\"]},\"src/HandlerV1.sol\":{\"keccak256\":\"0x5c1f7f517599e9d15ff7dc8c3f1817038dc216ebc898d1c1c0458bd790d4ded3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ea2d77ffd495b9ddea6edd2808cec296d81ad3aba79f728d6412b9c9655682dc\",\"dweb:/ipfs/QmaUPhCdgPavrP8T5thjD3YV6bG2HimGoASLxR4Qzn4bzW\"]}},\"version\":1}", + "metadata": { + "compiler": { + "version": "0.8.17+commit.8df45f5f" + }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256", + "indexed": false + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256", + "indexed": false + } + ], + "type": "event", + "name": "StateMachineUpdated", + "anonymous": false + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "bytes", + "name": "proof", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handleConsensus" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct GetResponseMessage", + "name": "message", + "type": "tuple", + "components": [ + { + "internalType": "bytes[]", + "name": "proof", + "type": "bytes[]" + }, + { + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ] + }, + { + "internalType": "struct GetRequest[]", + "name": "requests", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes[]", + "name": "keys", + "type": "bytes[]" + }, + { + "internalType": "uint64", + "name": "height", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handleGetResponses" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct GetTimeoutMessage", + "name": "message", + "type": "tuple", + "components": [ + { + "internalType": "struct GetRequest[]", + "name": "timeouts", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes[]", + "name": "keys", + "type": "bytes[]" + }, + { + "internalType": "uint64", + "name": "height", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handleGetTimeouts" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct PostRequestMessage", + "name": "request", + "type": "tuple", + "components": [ + { + "internalType": "struct Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ] + }, + { + "internalType": "bytes32[]", + "name": "multiproof", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "leafCount", + "type": "uint256" + } + ] + }, + { + "internalType": "struct PostRequestLeaf[]", + "name": "requests", + "type": "tuple[]", + "components": [ + { + "internalType": "struct PostRequest", + "name": "request", + "type": "tuple", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handlePostRequests" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct PostResponseMessage", + "name": "response", + "type": "tuple", + "components": [ + { + "internalType": "struct Proof", + "name": "proof", + "type": "tuple", + "components": [ + { + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ] + }, + { + "internalType": "bytes32[]", + "name": "multiproof", + "type": "bytes32[]" + }, + { + "internalType": "uint256", + "name": "leafCount", + "type": "uint256" + } + ] + }, + { + "internalType": "struct PostResponseLeaf[]", + "name": "responses", + "type": "tuple[]", + "components": [ + { + "internalType": "struct PostResponse", + "name": "response", + "type": "tuple", + "components": [ + { + "internalType": "struct PostRequest", + "name": "request", + "type": "tuple", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + }, + { + "internalType": "bytes", + "name": "response", + "type": "bytes" + } + ] + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "kIndex", + "type": "uint256" + } + ] + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handlePostResponses" + }, + { + "inputs": [ + { + "internalType": "contract IIsmpHost", + "name": "host", + "type": "address" + }, + { + "internalType": "struct PostTimeoutMessage", + "name": "message", + "type": "tuple", + "components": [ + { + "internalType": "struct PostRequest[]", + "name": "timeouts", + "type": "tuple[]", + "components": [ + { + "internalType": "bytes", + "name": "source", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "dest", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "nonce", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "from", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "to", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "timeoutTimestamp", + "type": "uint64" + }, + { + "internalType": "bytes", + "name": "body", + "type": "bytes" + }, + { + "internalType": "uint64", + "name": "gaslimit", + "type": "uint64" + } + ] + }, + { + "internalType": "struct StateMachineHeight", + "name": "height", + "type": "tuple", + "components": [ + { + "internalType": "uint256", + "name": "stateMachineId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ] + }, + { + "internalType": "bytes[]", + "name": "proof", + "type": "bytes[]" + } + ] + } + ], + "stateMutability": "nonpayable", + "type": "function", + "name": "handlePostTimeouts" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "handleConsensus(address,bytes)": { + "details": "Handle incoming consensus messages", + "params": { + "host": "- Ismp host", + "proof": "- consensus proof" + } + }, + "handleGetResponses(address,(bytes[],(uint256,uint256),(bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))": { + "details": "check response proofs, message delay and timeouts, then dispatch get responses to modules", + "params": { + "host": "- Ismp host", + "message": "- batch get responses" + } + }, + "handleGetTimeouts(address,((bytes,bytes,uint64,bytes,uint64,bytes[],uint64,uint64)[]))": { + "details": "dispatch to modules", + "params": { + "host": "- Ismp host", + "message": "- batch get request timeouts" + } + }, + "handlePostRequests(address,(((uint256,uint256),bytes32[],uint256),((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),uint256,uint256)[]))": { + "details": "check request proofs, message delay and timeouts, then dispatch post requests to modules", + "params": { + "host": "- Ismp host", + "request": "- batch post requests" + } + }, + "handlePostResponses(address,(((uint256,uint256),bytes32[],uint256),(((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64),bytes),uint256,uint256)[]))": { + "details": "check response proofs, message delay and timeouts, then dispatch post responses to modules", + "params": { + "host": "- Ismp host", + "response": "- batch post responses" + } + }, + "handlePostTimeouts(address,((bytes,bytes,uint64,bytes,bytes,uint64,bytes,uint64)[],(uint256,uint256),bytes[]))": { + "details": "check timeout proofs then dispatch to modules", + "params": { + "host": "- Ismp host", + "message": "- batch post request timeouts" + } + } + }, + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + }, + "settings": { + "remappings": [ + "ds-test/=lib/forge-std/lib/ds-test/src/", + "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", + "forge-std/=lib/forge-std/src/", + "ismp-solidity/=lib/ismp-solidity/", + "ismp/=lib/ismp-solidity/src/", + "multi-chain-tokens/=lib/multi-chain-tokens/src/", + "multichain-token/=lib/ismp-solidity/lib/multichain-native-tokens/src/", + "openzeppelin-contracts/=lib/openzeppelin-contracts/", + "openzeppelin/=lib/openzeppelin-contracts/contracts/", + "solidity-merkle-trees/=lib/solidity-merkle-trees/src/" + ], + "optimizer": { + "enabled": true, + "runs": 200 + }, + "metadata": { + "bytecodeHash": "ipfs" + }, + "compilationTarget": { + "src/HandlerV1.sol": "HandlerV1" + }, + "libraries": {} + }, + "sources": { + "lib/ismp-solidity/src/interfaces/IConsensusClient.sol": { + "keccak256": "0x2be700e8c2c819144057e55622f3dac0a50763332aae22fba3fe90a0571028da", + "urls": [ + "bzz-raw://e5b3e8d9a1e94252bcad307fb0ecb5e25401bcd01de9f5e5bab5fe2e53e167d8", + "dweb:/ipfs/QmQf5Famyv2uBfmrKH2eGo8LvTBsaqjh3o8Fxry7EP9Xwb" + ], + "license": "UNLICENSED" + }, + "lib/ismp-solidity/src/interfaces/IHandler.sol": { + "keccak256": "0xecba9c5a118cc651d0a48667c42da738057f5a4f77b49faa4c61741aa154c767", + "urls": [ + "bzz-raw://b598e34eb95e5986308257f1aa92547f46a40a894b7dd5f837c9ee2473b7fbbe", + "dweb:/ipfs/QmSbe3bgekCw3hoCtMpSY6tqzqjSgeRwgu7X62r4wxfi1J" + ], + "license": "UNLICENSED" + }, + "lib/ismp-solidity/src/interfaces/IIsmp.sol": { + "keccak256": "0x0a9f17234dcd132353593fed8cb8b059ca921d73cc4a61502e5cc015e79cf490", + "urls": [ + "bzz-raw://1740a5097cb9a96b1c6d4fe62bf74b58410c91246afcd79847446547ccf5fdd4", + "dweb:/ipfs/Qmardqm7RrmeGfMAw69xctQagT6yyu4dcZDUDykmVwPdUz" + ], + "license": "UNLICENSED" + }, + "lib/ismp-solidity/src/interfaces/IIsmpHost.sol": { + "keccak256": "0x92eade08184d975e98c2049ef4eb96281839cd77aa317cf272467e720cb749bb", + "urls": [ + "bzz-raw://c8342b8747d7f20da3ec090ad4dc837c5e25f56edf6afa1a2de5e418c8d11018", + "dweb:/ipfs/QmPuuXcUACXDnK29J7NuZCsT5YQeg4vRjyzs9sd9FpsoED" + ], + "license": "UNLICENSED" + }, + "lib/openzeppelin-contracts/contracts/utils/Context.sol": { + "keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7", + "urls": [ + "bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92", + "dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/Strings.sol": { + "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0", + "urls": [ + "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f", + "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": { + "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3", + "urls": [ + "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c", + "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS" + ], + "license": "MIT" + }, + "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": { + "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc", + "urls": [ + "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7", + "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6" + ], + "license": "MIT" + }, + "lib/solidity-merkle-trees/src/MerkleMountainRange.sol": { + "keccak256": "0x867f348fc7fce6f1e5cc5d41968389f7a832d99acddf9a544297e6ab27b9d823", + "urls": [ + "bzz-raw://27a91f509bc1d4b171d11722f30b35f5a8c456d42f07692865418a7fdb50a69a", + "dweb:/ipfs/QmTKLoX2CV1Fo6nJo4f4ycdiUaw1y4FzpdqXHKkoVdG4BP" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/MerkleMultiProof.sol": { + "keccak256": "0x71a97fc3f97c50ac429f1109176f5eaffc34b4d1f291bb58da61baa8cdc348e0", + "urls": [ + "bzz-raw://f964717f4577e7081a23f6301058c461854151d156aae33beaa39588aba8ef8e", + "dweb:/ipfs/QmbsadFursZrYUK6a3m55N5P5mZ2hWAtDpFsMZqoU2EV5L" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/MerklePatricia.sol": { + "keccak256": "0x452857f8e6c5b5878402bba1805bf4c3aef01c6c8f949dd72d20e07df8952bfc", + "urls": [ + "bzz-raw://c1007fe97775e37c9b6084e0ac98b249e7746ca531a04265291b0c57002f67b4", + "dweb:/ipfs/QmYiqp6MHoGWgZAHvKjKBphczJY3t4zDuV9M4V1UzuC8ML" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Bytes.sol": { + "keccak256": "0x03ffca5abeb3f2665997059af505a8225f881c3d375dddfdef77e6d3aac67db8", + "urls": [ + "bzz-raw://d3a4e7d650143dbb64a61e492260e50053de9b89536d05c8007c43b25602f610", + "dweb:/ipfs/QmbdyvPcHgcZsL4Sk2dS7s86qARePDyhcRPj5xtBko6e3t" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Memory.sol": { + "keccak256": "0x6d309ea24fca1313f1ac6ed57e31a94c44276006e233c46c7cf35e2ddcb88856", + "urls": [ + "bzz-raw://d2283a501d235201e1a18bb046ad713ce49dcaf287ae09d10025c786ab326648", + "dweb:/ipfs/QmPNvWGoCTu8MwMco6qjfW4RcwrJJKJhxQtfCEbeyB9rx2" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/NibbleSlice.sol": { + "keccak256": "0x284ad5142dfe57d2a67de0c3787469367821926488d04e532adc71108c48a07b", + "urls": [ + "bzz-raw://c1bf96fdff2fc0db8500261bc89f480cd09b38355750203f15f95f1bd3000392", + "dweb:/ipfs/QmUd9iTH7U5pyezYqJVpET2es3uhjQmeGToEWywHUjXuNM" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Node.sol": { + "keccak256": "0x5e1b5dd46013b706ac86627c8a21a52a43ef151060479208abe0b6802e8c19b5", + "urls": [ + "bzz-raw://9b43ab483ff79c2fa9165b678b86a838bbf6fa60092cfe8e8d55023af0488c3d", + "dweb:/ipfs/QmT8Sy3HoAc9xY6C6gPK3s5SsJJgYztGGUpin7g54GeRcB" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/Option.sol": { + "keccak256": "0xd5b67f9fd3218d507923147eacc9d209f55ad211e9c7258a07d7bc2c4db386b0", + "urls": [ + "bzz-raw://6c134fcc01f84820fdea93e747b3f2a5ee47bac6eda2c43504e87201229cbc4f", + "dweb:/ipfs/QmX1fQ32tyaR9EReyUbCfcSKGHzoEN88GPbwdwNAJQyVfL" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/TrieDB.sol": { + "keccak256": "0xcf56409c430ebf1053edb199120c2961f0380b9fe93a36ccb5369e004dcafd64", + "urls": [ + "bzz-raw://5bdad30e72f8f29ba030db27881a08d63486544fb50abc99fa5a08902d7ad04a", + "dweb:/ipfs/QmQAoC1G6SXdGzVuLUt6pDbnaWJyGcUzWwpVbrwN4eCmdn" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/ethereum/EthereumTrieDB.sol": { + "keccak256": "0xc64596f6d1c23f153efe19c62f0f2631ba92e6ac0f67ca57d93c2c75af98b6cf", + "urls": [ + "bzz-raw://a95680e75f6ef869d81708f05e67bf6a34f6c4c0d91e189b57a314bdc1e61c03", + "dweb:/ipfs/QmSuKZdDbjTGcUW6kVJ1Ghzb7zh3RdpdJpde5izk7fmZek" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/ethereum/RLPReader.sol": { + "keccak256": "0xb8f4d1c02840086b3a9e81df93eebb120a40168681c119bee3f4c9849404538c", + "urls": [ + "bzz-raw://96e41baf205786170f910596dd8aea91615c0a98bfb9771967f64f34b99bd8ca", + "dweb:/ipfs/QmVqAFeCLzNhEM8yJoed2reQoGK1EiE72BVPyvgESEhgsm" + ], + "license": "Apache-2.0" + }, + "lib/solidity-merkle-trees/src/trie/substrate/ScaleCodec.sol": { + "keccak256": "0x6fcfb3f4bb5ae07ab71aa9cf84bb19a8dda129a6f7ac8a35ae915858c4ef1a0f", + "urls": [ + "bzz-raw://2bbfb7e76afac849b15ba3285e73e463f85f2533c5ad9c1d40b35271359d2f7c", + "dweb:/ipfs/QmWRgZRa4C32VMZnFLzUVTpqVggYD3wfPoiA5PtgHTiEve" + ], + "license": "Apache2" + }, + "lib/solidity-merkle-trees/src/trie/substrate/SubstrateTrieDB.sol": { + "keccak256": "0x01545b72eb381d0ec25de0155126efa429301f39f8854a41ed36811fb5d94069", + "urls": [ + "bzz-raw://ab7079de5a4f4af78fd0be8d90215787431711b0b7d2d9f6aefa7ed4db3a5f76", + "dweb:/ipfs/QmNaSdtRNs3A5aUmT7ZbWmDU5sRE6iKsMPVc3EzHZFYhDB" + ], + "license": "Apache2" + }, + "src/HandlerV1.sol": { + "keccak256": "0x5c1f7f517599e9d15ff7dc8c3f1817038dc216ebc898d1c1c0458bd790d4ded3", + "urls": [ + "bzz-raw://ea2d77ffd495b9ddea6edd2808cec296d81ad3aba79f728d6412b9c9655682dc", + "dweb:/ipfs/QmaUPhCdgPavrP8T5thjD3YV6bG2HimGoASLxR4Qzn4bzW" + ], + "license": "UNLICENSED" + } + }, + "version": 1 + }, + "ast": { + "absolutePath": "src/HandlerV1.sol", + "id": 58679, + "exportedSymbols": { + "Branch": [ + 53002 + ], + "BridgeParams": [ + 45862 + ], + "ByteSlice": [ + 51690 + ], + "Bytes": [ + 52334 + ], + "Context": [ + 47465 + ], + "DispatchGet": [ + 45587 + ], + "DispatchPost": [ + 45575 + ], + "EthereumTrieDB": [ + 53728 + ], + "Extension": [ + 52993 + ], + "GetRequest": [ + 45478 + ], + "GetResponse": [ + 45486 + ], + "GetResponseMessage": [ + 45536 + ], + "GetTimeoutMessage": [ + 45541 + ], + "HandlerV1": [ + 58678 + ], + "IConsensusClient": [ + 45374 + ], + "IHandler": [ + 45438 + ], + "IIsmp": [ + 45609 + ], + "IIsmpHost": [ + 46055 + ], + "IntermediateState": [ + 45360 + ], + "Iterator": [ + 49135 + ], + "Leaf": [ + 53032 + ], + "Math": [ + 49013 + ], + "Memory": [ + 52495 + ], + "MerkleMountainRange": [ + 50178 + ], + "MerkleMultiProof": [ + 50948 + ], + "MerklePatricia": [ + 51681 + ], + "Message": [ + 45837 + ], + "MmrLeaf": [ + 49129 + ], + "NibbleSlice": [ + 52502 + ], + "NibbleSliceOps": [ + 52951 + ], + "NibbledBranch": [ + 53014 + ], + "Node": [ + 50186 + ], + "NodeHandle": [ + 52986 + ], + "NodeHandleOption": [ + 53025 + ], + "NodeKind": [ + 52977 + ], + "Option": [ + 53069 + ], + "PostRequest": [ + 45460 + ], + "PostRequestLeaf": [ + 45500 + ], + "PostRequestMessage": [ + 45525 + ], + "PostResponse": [ + 45492 + ], + "PostResponseLeaf": [ + 45508 + ], + "PostResponseMessage": [ + 45564 + ], + "PostTimeout": [ + 45545 + ], + "PostTimeoutMessage": [ + 45556 + ], + "Proof": [ + 45517 + ], + "RLPReader": [ + 54536 + ], + "ScaleCodec": [ + 55460 + ], + "SignedMath": [ + 49118 + ], + "StateCommitment": [ + 45347 + ], + "StateMachineHeight": [ + 45352 + ], + "StorageValue": [ + 50961 + ], + "Strings": [ + 47694 + ], + "SubstrateTrieDB": [ + 56248 + ], + "TrieDB": [ + 53245 + ], + "TrieNode": [ + 53037 + ], + "ValueOption": [ + 53019 + ] + }, + "nodeType": "SourceUnit", + "src": "39:9963:58", + "nodes": [ + { + "id": 57727, + "nodeType": "PragmaDirective", + "src": "39:23:58", + "nodes": [], + "literals": [ + "solidity", + "0.8", + ".17" + ] + }, + { + "id": 57728, + "nodeType": "ImportDirective", + "src": "64:55:58", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerkleMountainRange.sol", + "file": "solidity-merkle-trees/MerkleMountainRange.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 50179, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57729, + "nodeType": "ImportDirective", + "src": "120:50:58", + "nodes": [], + "absolutePath": "lib/solidity-merkle-trees/src/MerklePatricia.sol", + "file": "solidity-merkle-trees/MerklePatricia.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 51682, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57730, + "nodeType": "ImportDirective", + "src": "171:40:58", + "nodes": [], + "absolutePath": "lib/openzeppelin-contracts/contracts/utils/Context.sol", + "file": "openzeppelin/utils/Context.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 47466, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57731, + "nodeType": "ImportDirective", + "src": "213:46:58", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/IConsensusClient.sol", + "file": "ismp/interfaces/IConsensusClient.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 45375, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57732, + "nodeType": "ImportDirective", + "src": "260:38:58", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/IHandler.sol", + "file": "ismp/interfaces/IHandler.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 45439, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 57733, + "nodeType": "ImportDirective", + "src": "299:39:58", + "nodes": [], + "absolutePath": "lib/ismp-solidity/src/interfaces/IIsmpHost.sol", + "file": "ismp/interfaces/IIsmpHost.sol", + "nameLocation": "-1:-1:-1", + "scope": 58679, + "sourceUnit": 46056, + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 58678, + "nodeType": "ContractDefinition", + "src": "340:9661:58", + "nodes": [ + { + "id": 57740, + "nodeType": "UsingForDirective", + "src": "386:22:58", + "nodes": [], + "global": false, + "libraryName": { + "id": 57738, + "name": "Bytes", + "nameLocations": [ + "392:5:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 52334, + "src": "392:5:58" + }, + "typeName": { + "id": 57739, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "402:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + { + "id": 57755, + "nodeType": "ModifierDefinition", + "src": "414:106:58", + "nodes": [], + "body": { + "id": 57754, + "nodeType": "Block", + "src": "449:71:58", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 57749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "467:14:58", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57746, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57743, + "src": "468:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "473:6:58", + "memberName": "frozen", + "nodeType": "MemberAccess", + "referencedDeclaration": 45888, + "src": "468:11:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bool_$", + "typeString": "function () external returns (bool)" + } + }, + "id": 57748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "468:13:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2066726f7a656e", + "id": 57750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "483:18:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c72467bfc6dfde310a279a379910f4c1a33ce2a3d8d2778900a1bedeb89c892d", + "typeString": "literal_string \"IHandler: frozen\"" + }, + "value": "IHandler: frozen" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c72467bfc6dfde310a279a379910f4c1a33ce2a3d8d2778900a1bedeb89c892d", + "typeString": "literal_string \"IHandler: frozen\"" + } + ], + "id": 57745, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "459:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "459:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57752, + "nodeType": "ExpressionStatement", + "src": "459:43:58" + }, + { + "id": 57753, + "nodeType": "PlaceholderStatement", + "src": "512:1:58" + } + ] + }, + "name": "notFrozen", + "nameLocation": "423:9:58", + "parameters": { + "id": 57744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57743, + "mutability": "mutable", + "name": "host", + "nameLocation": "443:4:58", + "nodeType": "VariableDeclaration", + "scope": 57755, + "src": "433:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 57742, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57741, + "name": "IIsmpHost", + "nameLocations": [ + "433:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "433:9:58" + }, + "referencedDeclaration": 46055, + "src": "433:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + } + ], + "src": "432:16:58" + }, + "virtual": false, + "visibility": "internal" + }, + { + "id": 57758, + "nodeType": "VariableDeclaration", + "src": "584:136:58", + "nodes": [], + "constant": true, + "mutability": "constant", + "name": "REQUEST_COMMITMENT_STORAGE_PREFIX", + "nameLocation": "607:33:58", + "scope": 58678, + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57756, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "584:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": { + "hexValue": "103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a", + "id": 57757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "hexString", + "lValueRequested": false, + "nodeType": "Literal", + "src": "651:69:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae8e891332e4319c3751b635138ff6585d50ee9e324bae8245877c5bdad3943c", + "typeString": "literal_string hex\"103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a\"" + } + }, + "visibility": "private" + }, + { + "id": 57764, + "nodeType": "EventDefinition", + "src": "727:66:58", + "nodes": [], + "anonymous": false, + "eventSelector": "f12a80290a43822c9acabb2a766d41728f06fe4c0497e4a7bb3f54292e4cb0da", + "name": "StateMachineUpdated", + "nameLocation": "733:19:58", + "parameters": { + "id": 57763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57760, + "indexed": false, + "mutability": "mutable", + "name": "stateMachineId", + "nameLocation": "761:14:58", + "nodeType": "VariableDeclaration", + "scope": 57764, + "src": "753:22:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "753:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57762, + "indexed": false, + "mutability": "mutable", + "name": "height", + "nameLocation": "785:6:58", + "nodeType": "VariableDeclaration", + "scope": 57764, + "src": "777:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "777:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "752:40:58" + } + }, + { + "id": 57896, + "nodeType": "FunctionDefinition", + "src": "931:1517:58", + "nodes": [], + "body": { + "id": 57895, + "nodeType": "Block", + "src": "1017:1431:58", + "nodes": [], + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57777, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1049:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1054:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "1049:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1049:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57780, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1068:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1073:19:58", + "memberName": "consensusUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45919, + "src": "1068:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1068:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1049:45:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 57784, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1048:47:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57785, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1098:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1103:15:58", + "memberName": "challengePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45969, + "src": "1098:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1098:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1048:72:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 57789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1134:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 57776, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1027:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1027:154:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57791, + "nodeType": "ExpressionStatement", + "src": "1027:154:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57793, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1262:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1267:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "1262:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1262:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57796, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1281:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1286:19:58", + "memberName": "consensusUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45919, + "src": "1281:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1281:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1262:45:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 57800, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1261:47:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57801, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1311:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1316:15:58", + "memberName": "unStakingPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45975, + "src": "1311:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1311:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1261:72:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 57810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 57805, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47455, + "src": "1337:10:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 57806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1337:12:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57807, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1353:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1358:5:58", + "memberName": "admin", + "nodeType": "MemberAccess", + "referencedDeclaration": 45870, + "src": "1353:10:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$", + "typeString": "function () external returns (address)" + } + }, + "id": 57809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1353:12:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1337:28:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1261:104:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 57812, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1379:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 57792, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1240:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1240:186:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57814, + "nodeType": "ExpressionStatement", + "src": "1240:186:58" + }, + { + "assignments": [ + 57816, + 57819 + ], + "declarations": [ + { + "constant": false, + "id": 57816, + "mutability": "mutable", + "name": "verifiedState", + "nameLocation": "1451:13:58", + "nodeType": "VariableDeclaration", + "scope": 57895, + "src": "1438:26:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57815, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1438:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57819, + "mutability": "mutable", + "name": "intermediate", + "nameLocation": "1491:12:58", + "nodeType": "VariableDeclaration", + "scope": 57895, + "src": "1466:37:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState" + }, + "typeName": { + "id": 57818, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57817, + "name": "IntermediateState", + "nameLocations": [ + "1466:17:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45360, + "src": "1466:17:58" + }, + "referencedDeclaration": 45360, + "src": "1466:17:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_storage_ptr", + "typeString": "struct IntermediateState" + } + }, + "visibility": "internal" + } + ], + "id": 57831, + "initialValue": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57826, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1576:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1581:14:58", + "memberName": "consensusState", + "nodeType": "MemberAccess", + "referencedDeclaration": 45931, + "src": "1576:19:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () external returns (bytes memory)" + } + }, + "id": 57828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1576:21:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 57829, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57770, + "src": "1599:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57821, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1536:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1541:15:58", + "memberName": "consensusClient", + "nodeType": "MemberAccess", + "referencedDeclaration": 45913, + "src": "1536:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_address_$", + "typeString": "function () external returns (address)" + } + }, + "id": 57823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1536:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 57820, + "name": "IConsensusClient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45374, + "src": "1519:16:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IConsensusClient_$45374_$", + "typeString": "type(contract IConsensusClient)" + } + }, + "id": 57824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1519:40:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IConsensusClient_$45374", + "typeString": "contract IConsensusClient" + } + }, + "id": 57825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1560:15:58", + "memberName": "verifyConsensus", + "nodeType": "MemberAccess", + "referencedDeclaration": 45373, + "src": "1519:56:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) external returns (bytes memory,struct IntermediateState memory)" + } + }, + "id": 57830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1519:86:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_struct$_IntermediateState_$45360_memory_ptr_$", + "typeString": "tuple(bytes memory,struct IntermediateState memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1437:168:58" + }, + { + "expression": { + "arguments": [ + { + "id": 57835, + "name": "verifiedState", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57816, + "src": "1640:13:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 57832, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1615:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1620:19:58", + "memberName": "storeConsensusState", + "nodeType": "MemberAccess", + "referencedDeclaration": 45981, + "src": "1615:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) external" + } + }, + "id": 57836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1615:39:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57837, + "nodeType": "ExpressionStatement", + "src": "1615:39:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57841, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1694:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1699:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "1694:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1694:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 57838, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1664:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1669:24:58", + "memberName": "storeConsensusUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45994, + "src": "1664:29:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 57844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1664:47:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57845, + "nodeType": "ExpressionStatement", + "src": "1664:47:58" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 57846, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57819, + "src": "1726:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "id": 57847, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1739:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45356, + "src": "1726:19:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57848, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1748:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1753:24:58", + "memberName": "latestStateMachineHeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 45925, + "src": "1748:29:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1748:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1726:53:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 57894, + "nodeType": "IfStatement", + "src": "1722:720:58", + "trueBody": { + "id": 57893, + "nodeType": "Block", + "src": "1781:661:58", + "statements": [ + { + "assignments": [ + 57854 + ], + "declarations": [ + { + "constant": false, + "id": 57854, + "mutability": "mutable", + "name": "stateMachineHeight", + "nameLocation": "1821:18:58", + "nodeType": "VariableDeclaration", + "scope": 57893, + "src": "1795:44:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight" + }, + "typeName": { + "id": 57853, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57852, + "name": "StateMachineHeight", + "nameLocations": [ + "1795:18:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45352, + "src": "1795:18:58" + }, + "referencedDeclaration": 45352, + "src": "1795:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_storage_ptr", + "typeString": "struct StateMachineHeight" + } + }, + "visibility": "internal" + } + ], + "id": 57861, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 57856, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57819, + "src": "1894:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "id": 57857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1907:14:58", + "memberName": "stateMachineId", + "nodeType": "MemberAccess", + "referencedDeclaration": 45354, + "src": "1894:27:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 57858, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57819, + "src": "1931:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "id": 57859, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1944:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45356, + "src": "1931:19:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57855, + "name": "StateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45352, + "src": "1858:18:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_StateMachineHeight_$45352_storage_ptr_$", + "typeString": "type(struct StateMachineHeight storage pointer)" + } + }, + "id": 57860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "1878:14:58", + "1923:6:58" + ], + "names": [ + "stateMachineId", + "height" + ], + "nodeType": "FunctionCall", + "src": "1858:94:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1795:157:58" + }, + { + "expression": { + "arguments": [ + { + "id": 57865, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "1999:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + { + "expression": { + "id": 57866, + "name": "intermediate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57819, + "src": "2019:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_IntermediateState_$45360_memory_ptr", + "typeString": "struct IntermediateState memory" + } + }, + "id": 57867, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2032:10:58", + "memberName": "commitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45359, + "src": "2019:23:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + }, + { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + ], + "expression": { + "id": 57862, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1966:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1971:27:58", + "memberName": "storeStateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 46010, + "src": "1966:32:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$_t_struct$_StateCommitment_$45347_memory_ptr_$returns$__$", + "typeString": "function (struct StateMachineHeight memory,struct StateCommitment memory) external" + } + }, + "id": 57868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1966:77:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57869, + "nodeType": "ExpressionStatement", + "src": "1966:77:58" + }, + { + "expression": { + "arguments": [ + { + "id": 57873, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "2100:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57874, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "2120:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2125:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "2120:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2120:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 57870, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "2057:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2062:37:58", + "memberName": "storeStateMachineCommitmentUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 46019, + "src": "2057:42:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (struct StateMachineHeight memory,uint256) external" + } + }, + "id": 57877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2057:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57878, + "nodeType": "ExpressionStatement", + "src": "2057:80:58" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 57882, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "2186:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + "id": 57883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2205:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45351, + "src": "2186:25:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 57879, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "2151:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2156:29:58", + "memberName": "storeLatestStateMachineHeight", + "nodeType": "MemberAccess", + "referencedDeclaration": 46000, + "src": "2151:34:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 57884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2151:61:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57885, + "nodeType": "ExpressionStatement", + "src": "2151:61:58" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 57887, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "2332:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + "id": 57888, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2351:14:58", + "memberName": "stateMachineId", + "nodeType": "MemberAccess", + "referencedDeclaration": 45349, + "src": "2332:33:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 57889, + "name": "stateMachineHeight", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57854, + "src": "2391:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + }, + "id": 57890, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2410:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45351, + "src": "2391:25:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57886, + "name": "StateMachineUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57764, + "src": "2278:19:58", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 57891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [ + "2316:14:58", + "2383:6:58" + ], + "names": [ + "stateMachineId", + "height" + ], + "nodeType": "FunctionCall", + "src": "2278:153:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57892, + "nodeType": "EmitStatement", + "src": "2273:158:58" + } + ] + } + } + ] + }, + "baseFunctions": [ + 45387 + ], + "documentation": { + "id": 57765, + "nodeType": "StructuredDocumentation", + "src": "799:127:58", + "text": " @dev Handle incoming consensus messages\n @param host - Ismp host\n @param proof - consensus proof" + }, + "functionSelector": "bb1689be", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 57773, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57768, + "src": "1011:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 57774, + "kind": "modifierInvocation", + "modifierName": { + "id": 57772, + "name": "notFrozen", + "nameLocations": [ + "1001:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "1001:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "1001:15:58" + } + ], + "name": "handleConsensus", + "nameLocation": "940:15:58", + "parameters": { + "id": 57771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57768, + "mutability": "mutable", + "name": "host", + "nameLocation": "966:4:58", + "nodeType": "VariableDeclaration", + "scope": 57896, + "src": "956:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 57767, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57766, + "name": "IIsmpHost", + "nameLocations": [ + "956:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "956:9:58" + }, + "referencedDeclaration": 46055, + "src": "956:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57770, + "mutability": "mutable", + "name": "proof", + "nameLocation": "985:5:58", + "nodeType": "VariableDeclaration", + "scope": 57896, + "src": "972:18:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 57769, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "972:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "955:36:58" + }, + "returnParameters": { + "id": 57775, + "nodeType": "ParameterList", + "parameters": [], + "src": "1017:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58090, + "nodeType": "FunctionDefinition", + "src": "2646:1577:58", + "nodes": [], + "body": { + "id": 58089, + "nodeType": "Block", + "src": "2750:1473:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 57910 + ], + "declarations": [ + { + "constant": false, + "id": 57910, + "mutability": "mutable", + "name": "delay", + "nameLocation": "2768:5:58", + "nodeType": "VariableDeclaration", + "scope": 58089, + "src": "2760:13:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57909, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2760:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57921, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57911, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "2776:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2781:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "2776:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2776:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 57916, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "2833:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 57917, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2841:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45520, + "src": "2833:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 57918, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2847:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45511, + "src": "2833:20:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 57914, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "2795:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2800:32:58", + "memberName": "stateMachineCommitmentUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45907, + "src": "2795:37:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct StateMachineHeight memory) external returns (uint256)" + } + }, + "id": 57919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2795:59:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2776:78:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2760:94:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57923, + "name": "delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57910, + "src": "2872:5:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57924, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "2880:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2885:15:58", + "memberName": "challengePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45969, + "src": "2880:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2880:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2872:30:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 57928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2904:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 57922, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2864:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2864:78:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57930, + "nodeType": "ExpressionStatement", + "src": "2864:78:58" + }, + { + "assignments": [ + 57932 + ], + "declarations": [ + { + "constant": false, + "id": 57932, + "mutability": "mutable", + "name": "requestsLen", + "nameLocation": "2961:11:58", + "nodeType": "VariableDeclaration", + "scope": 58089, + "src": "2953:19:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2953:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57936, + "initialValue": { + "expression": { + "expression": { + "id": 57933, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "2975:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 57934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2983:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45524, + "src": "2975:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequestLeaf_$45500_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequestLeaf memory[] memory" + } + }, + "id": 57935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2992:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2975:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2953:45:58" + }, + { + "assignments": [ + 57941 + ], + "declarations": [ + { + "constant": false, + "id": 57941, + "mutability": "mutable", + "name": "leaves", + "nameLocation": "3025:6:58", + "nodeType": "VariableDeclaration", + "scope": 58089, + "src": "3008:23:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf[]" + }, + "typeName": { + "baseType": { + "id": 57939, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57938, + "name": "MmrLeaf", + "nameLocations": [ + "3008:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49129, + "src": "3008:7:58" + }, + "referencedDeclaration": 49129, + "src": "3008:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 57940, + "nodeType": "ArrayTypeName", + "src": "3008:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + }, + "visibility": "internal" + } + ], + "id": 57948, + "initialValue": { + "arguments": [ + { + "id": 57946, + "name": "requestsLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57932, + "src": "3048:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 57945, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3034:13:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct MmrLeaf memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 57943, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57942, + "name": "MmrLeaf", + "nameLocations": [ + "3038:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49129, + "src": "3038:7:58" + }, + "referencedDeclaration": 49129, + "src": "3038:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 57944, + "nodeType": "ArrayTypeName", + "src": "3038:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + } + }, + "id": 57947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3034:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3008:52:58" + }, + { + "body": { + "id": 58025, + "nodeType": "Block", + "src": "3113:582:58", + "statements": [ + { + "assignments": [ + 57961 + ], + "declarations": [ + { + "constant": false, + "id": 57961, + "mutability": "mutable", + "name": "leaf", + "nameLocation": "3150:4:58", + "nodeType": "VariableDeclaration", + "scope": 58025, + "src": "3127:27:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf" + }, + "typeName": { + "id": 57960, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57959, + "name": "PostRequestLeaf", + "nameLocations": [ + "3127:15:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45500, + "src": "3127:15:58" + }, + "referencedDeclaration": 45500, + "src": "3127:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_storage_ptr", + "typeString": "struct PostRequestLeaf" + } + }, + "visibility": "internal" + } + ], + "id": 57966, + "initialValue": { + "baseExpression": { + "expression": { + "id": 57962, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "3157:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 57963, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3165:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45524, + "src": "3157:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequestLeaf_$45500_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequestLeaf memory[] memory" + } + }, + "id": 57965, + "indexExpression": { + "id": 57964, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57950, + "src": "3174:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3157:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3127:49:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57972, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "3224:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3229:4:58", + "memberName": "host", + "nodeType": "MemberAccess", + "referencedDeclaration": 45876, + "src": "3224:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () external returns (bytes memory)" + } + }, + "id": 57974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3224:11:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "expression": { + "id": 57968, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3199:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 57969, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3204:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "3199:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 57970, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3212:4:58", + "memberName": "dest", + "nodeType": "MemberAccess", + "referencedDeclaration": 45447, + "src": "3199:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 57971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3217:6:58", + "memberName": "equals", + "nodeType": "MemberAccess", + "referencedDeclaration": 51729, + "src": "3199:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 57975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3199:37:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c696420726571756573742064657374696e6174696f6e", + "id": 57976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3238:39:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21539d3b18e370f58255389901e47ebe390ea5c046a56f3bbc69545937f17663", + "typeString": "literal_string \"IHandler: Invalid request destination\"" + }, + "value": "IHandler: Invalid request destination" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21539d3b18e370f58255389901e47ebe390ea5c046a56f3bbc69545937f17663", + "typeString": "literal_string \"IHandler: Invalid request destination\"" + } + ], + "id": 57967, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3191:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3191:87:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57978, + "nodeType": "ExpressionStatement", + "src": "3191:87:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 57992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 57984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 57980, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3317:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 57981, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3322:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "3317:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 57982, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3330:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45455, + "src": "3317:29:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 57983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3350:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3317:34:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 57985, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3355:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 57986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3360:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "3355:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 57987, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3368:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45455, + "src": "3355:29:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 57988, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "3387:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 57989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3392:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "3387:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 57990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3387:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3355:48:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3317:86:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20526571756573742074696d6564206f7574", + "id": 57993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3421:29:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f71c355704d13cf7da4d6cbf6d03698d934cb2ebe2912c61da5af509fb2c46cb", + "typeString": "literal_string \"IHandler: Request timed out\"" + }, + "value": "IHandler: Request timed out" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f71c355704d13cf7da4d6cbf6d03698d934cb2ebe2912c61da5af509fb2c46cb", + "typeString": "literal_string \"IHandler: Request timed out\"" + } + ], + "id": 57979, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3292:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 57994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3292:172:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 57995, + "nodeType": "ExpressionStatement", + "src": "3292:172:58" + }, + { + "assignments": [ + 57997 + ], + "declarations": [ + { + "constant": false, + "id": 57997, + "mutability": "mutable", + "name": "commitment", + "nameLocation": "3487:10:58", + "nodeType": "VariableDeclaration", + "scope": 58025, + "src": "3479:18:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 57996, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3479:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58003, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58000, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3513:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 58001, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3518:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "3513:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "expression": { + "id": 57998, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "3500:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 57999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3508:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45678, + "src": "3500:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PostRequest_$45460_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PostRequest memory) pure returns (bytes32)" + } + }, + "id": 58002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3500:26:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3479:47:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3548:33:58", + "subExpression": { + "arguments": [ + { + "id": 58007, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57997, + "src": "3570:10:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58005, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "3549:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3554:15:58", + "memberName": "requestReceipts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45939, + "src": "3549:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3549:32:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a204475706c69636174652072657175657374", + "id": 58010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3583:29:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2efc0d330f1c32ab3ea75b0864b08313893e422cd37294a2cbf22990013ffac1", + "typeString": "literal_string \"IHandler: Duplicate request\"" + }, + "value": "IHandler: Duplicate request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2efc0d330f1c32ab3ea75b0864b08313893e422cd37294a2cbf22990013ffac1", + "typeString": "literal_string \"IHandler: Duplicate request\"" + } + ], + "id": 58004, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3540:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3540:73:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58012, + "nodeType": "ExpressionStatement", + "src": "3540:73:58" + }, + { + "expression": { + "id": 58023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 58013, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57941, + "src": "3628:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "id": 58015, + "indexExpression": { + "id": 58014, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57950, + "src": "3635:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3628:9:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 58017, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3648:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 58018, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3653:6:58", + "memberName": "kIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 45499, + "src": "3648:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 58019, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57961, + "src": "3661:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 58020, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3666:5:58", + "memberName": "index", + "nodeType": "MemberAccess", + "referencedDeclaration": 45497, + "src": "3661:10:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 58021, + "name": "commitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57997, + "src": "3673:10:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58016, + "name": "MmrLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49129, + "src": "3640:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MmrLeaf_$49129_storage_ptr_$", + "typeString": "type(struct MmrLeaf storage pointer)" + } + }, + "id": 58022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3640:44:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "src": "3628:56:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "id": 58024, + "nodeType": "ExpressionStatement", + "src": "3628:56:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 57953, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57950, + "src": "3091:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 57954, + "name": "requestsLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57932, + "src": "3095:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3091:15:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58026, + "initializationExpression": { + "assignments": [ + 57950 + ], + "declarations": [ + { + "constant": false, + "id": 57950, + "mutability": "mutable", + "name": "i", + "nameLocation": "3084:1:58", + "nodeType": "VariableDeclaration", + "scope": 58026, + "src": "3076:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 57949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3076:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 57952, + "initialValue": { + "hexValue": "30", + "id": 57951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3088:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3076:13:58" + }, + "loopExpression": { + "expression": { + "id": 57957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3108:3:58", + "subExpression": { + "id": 57956, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57950, + "src": "3108:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 57958, + "nodeType": "ExpressionStatement", + "src": "3108:3:58" + }, + "nodeType": "ForStatement", + "src": "3071:624:58" + }, + { + "assignments": [ + 58028 + ], + "declarations": [ + { + "constant": false, + "id": 58028, + "mutability": "mutable", + "name": "root", + "nameLocation": "3713:4:58", + "nodeType": "VariableDeclaration", + "scope": 58089, + "src": "3705:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58027, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3705:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58036, + "initialValue": { + "expression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 58031, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "3748:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 58032, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3756:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45520, + "src": "3748:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58033, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3762:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45511, + "src": "3748:20:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58029, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "3720:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3725:22:58", + "memberName": "stateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45898, + "src": "3720:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_struct$_StateCommitment_$45347_memory_ptr_$", + "typeString": "function (struct StateMachineHeight memory) external returns (struct StateCommitment memory)" + } + }, + "id": 58034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3720:49:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58035, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3770:11:58", + "memberName": "overlayRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 45344, + "src": "3720:61:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3705:76:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 58043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58038, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58028, + "src": "3800:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 58041, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3816:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 58040, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3808:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 58039, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3808:7:58", + "typeDescriptions": {} + } + }, + "id": 58042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3808:10:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3800:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e6421", + "id": 58044, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3820:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + }, + "value": "IHandler: Proof height not found!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + } + ], + "id": 58037, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3792:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58045, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3792:64:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58046, + "nodeType": "ExpressionStatement", + "src": "3792:64:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58050, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58028, + "src": "3919:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "expression": { + "id": 58051, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "3925:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 58052, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3933:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45520, + "src": "3925:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58053, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3939:10:58", + "memberName": "multiproof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45514, + "src": "3925:24:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "id": 58054, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57941, + "src": "3951:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + { + "expression": { + "expression": { + "id": 58055, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "3959:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 58056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3967:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45520, + "src": "3959:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58057, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3973:9:58", + "memberName": "leafCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 45516, + "src": "3959:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 58048, + "name": "MerkleMountainRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50178, + "src": "3887:19:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMountainRange_$50178_$", + "typeString": "type(library MerkleMountainRange)" + } + }, + "id": 58049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3907:11:58", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49162, + "src": "3887:31:58", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,struct MmrLeaf memory[] memory,uint256) pure returns (bool)" + } + }, + "id": 58058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3887:96:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c696420726571756573742070726f6f6673", + "id": 58059, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3997:34:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f0642153714575723293deeb3762ca5773b552737d5c6484274cb7cd98f157e", + "typeString": "literal_string \"IHandler: Invalid request proofs\"" + }, + "value": "IHandler: Invalid request proofs" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4f0642153714575723293deeb3762ca5773b552737d5c6484274cb7cd98f157e", + "typeString": "literal_string \"IHandler: Invalid request proofs\"" + } + ], + "id": 58047, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3866:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3866:175:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58061, + "nodeType": "ExpressionStatement", + "src": "3866:175:58" + }, + { + "body": { + "id": 58087, + "nodeType": "Block", + "src": "4094:123:58", + "statements": [ + { + "assignments": [ + 58074 + ], + "declarations": [ + { + "constant": false, + "id": 58074, + "mutability": "mutable", + "name": "leaf", + "nameLocation": "4131:4:58", + "nodeType": "VariableDeclaration", + "scope": 58087, + "src": "4108:27:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf" + }, + "typeName": { + "id": 58073, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58072, + "name": "PostRequestLeaf", + "nameLocations": [ + "4108:15:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45500, + "src": "4108:15:58" + }, + "referencedDeclaration": 45500, + "src": "4108:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_storage_ptr", + "typeString": "struct PostRequestLeaf" + } + }, + "visibility": "internal" + } + ], + "id": 58079, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58075, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57903, + "src": "4138:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage memory" + } + }, + "id": 58076, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4146:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45524, + "src": "4138:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequestLeaf_$45500_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequestLeaf memory[] memory" + } + }, + "id": 58078, + "indexExpression": { + "id": 58077, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58063, + "src": "4155:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4138:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4108:49:58" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 58083, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58074, + "src": "4193:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestLeaf_$45500_memory_ptr", + "typeString": "struct PostRequestLeaf memory" + } + }, + "id": 58084, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4198:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45495, + "src": "4193:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "expression": { + "id": 58080, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "4171:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4176:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46026, + "src": "4171:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_PostRequest_$45460_memory_ptr_$returns$__$", + "typeString": "function (struct PostRequest memory) external" + } + }, + "id": 58085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4171:35:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58086, + "nodeType": "ExpressionStatement", + "src": "4171:35:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58066, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58063, + "src": "4072:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58067, + "name": "requestsLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57932, + "src": "4076:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4072:15:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58088, + "initializationExpression": { + "assignments": [ + 58063 + ], + "declarations": [ + { + "constant": false, + "id": 58063, + "mutability": "mutable", + "name": "i", + "nameLocation": "4065:1:58", + "nodeType": "VariableDeclaration", + "scope": 58088, + "src": "4057:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58062, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4057:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58065, + "initialValue": { + "hexValue": "30", + "id": 58064, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4069:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4057:13:58" + }, + "loopExpression": { + "expression": { + "id": 58070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4089:3:58", + "subExpression": { + "id": 58069, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58063, + "src": "4089:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58071, + "nodeType": "ExpressionStatement", + "src": "4089:3:58" + }, + "nodeType": "ForStatement", + "src": "4052:165:58" + } + ] + }, + "baseFunctions": [ + 45397 + ], + "documentation": { + "id": 57897, + "nodeType": "StructuredDocumentation", + "src": "2454:187:58", + "text": " @dev check request proofs, message delay and timeouts, then dispatch post requests to modules\n @param host - Ismp host\n @param request - batch post requests" + }, + "functionSelector": "fda626c3", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 57906, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57900, + "src": "2744:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 57907, + "kind": "modifierInvocation", + "modifierName": { + "id": 57905, + "name": "notFrozen", + "nameLocations": [ + "2734:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "2734:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "2734:15:58" + } + ], + "name": "handlePostRequests", + "nameLocation": "2655:18:58", + "parameters": { + "id": 57904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 57900, + "mutability": "mutable", + "name": "host", + "nameLocation": "2684:4:58", + "nodeType": "VariableDeclaration", + "scope": 58090, + "src": "2674:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 57899, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57898, + "name": "IIsmpHost", + "nameLocations": [ + "2674:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "2674:9:58" + }, + "referencedDeclaration": 46055, + "src": "2674:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 57903, + "mutability": "mutable", + "name": "request", + "nameLocation": "2716:7:58", + "nodeType": "VariableDeclaration", + "scope": 58090, + "src": "2690:33:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_memory_ptr", + "typeString": "struct PostRequestMessage" + }, + "typeName": { + "id": 57902, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 57901, + "name": "PostRequestMessage", + "nameLocations": [ + "2690:18:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45525, + "src": "2690:18:58" + }, + "referencedDeclaration": 45525, + "src": "2690:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequestMessage_$45525_storage_ptr", + "typeString": "struct PostRequestMessage" + } + }, + "visibility": "internal" + } + ], + "src": "2673:51:58" + }, + "returnParameters": { + "id": 57908, + "nodeType": "ParameterList", + "parameters": [], + "src": "2750:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58285, + "nodeType": "FunctionDefinition", + "src": "4425:1642:58", + "nodes": [], + "body": { + "id": 58284, + "nodeType": "Block", + "src": "4532:1535:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 58104 + ], + "declarations": [ + { + "constant": false, + "id": 58104, + "mutability": "mutable", + "name": "delay", + "nameLocation": "4550:5:58", + "nodeType": "VariableDeclaration", + "scope": 58284, + "src": "4542:13:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4542:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58115, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58105, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "4558:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4563:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "4558:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4558:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 58110, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "4615:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4624:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45559, + "src": "4615:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58112, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4630:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45511, + "src": "4615:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58108, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "4577:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4582:32:58", + "memberName": "stateMachineCommitmentUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45907, + "src": "4577:37:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct StateMachineHeight memory) external returns (uint256)" + } + }, + "id": 58113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4577:60:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4558:79:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4542:95:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58117, + "name": "delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58104, + "src": "4655:5:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58118, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "4663:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4668:15:58", + "memberName": "challengePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45969, + "src": "4663:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4663:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4655:30:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 58122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4687:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 58116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4647:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4647:78:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58124, + "nodeType": "ExpressionStatement", + "src": "4647:78:58" + }, + { + "assignments": [ + 58126 + ], + "declarations": [ + { + "constant": false, + "id": 58126, + "mutability": "mutable", + "name": "responsesLength", + "nameLocation": "4744:15:58", + "nodeType": "VariableDeclaration", + "scope": 58284, + "src": "4736:23:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58125, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4736:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58130, + "initialValue": { + "expression": { + "expression": { + "id": 58127, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "4762:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58128, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4771:9:58", + "memberName": "responses", + "nodeType": "MemberAccess", + "referencedDeclaration": 45563, + "src": "4762:18:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostResponseLeaf_$45508_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostResponseLeaf memory[] memory" + } + }, + "id": 58129, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4781:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4762:25:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4736:51:58" + }, + { + "assignments": [ + 58135 + ], + "declarations": [ + { + "constant": false, + "id": 58135, + "mutability": "mutable", + "name": "leaves", + "nameLocation": "4814:6:58", + "nodeType": "VariableDeclaration", + "scope": 58284, + "src": "4797:23:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf[]" + }, + "typeName": { + "baseType": { + "id": 58133, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58132, + "name": "MmrLeaf", + "nameLocations": [ + "4797:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49129, + "src": "4797:7:58" + }, + "referencedDeclaration": 49129, + "src": "4797:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 58134, + "nodeType": "ArrayTypeName", + "src": "4797:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + }, + "visibility": "internal" + } + ], + "id": 58142, + "initialValue": { + "arguments": [ + { + "id": 58140, + "name": "responsesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58126, + "src": "4837:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 58139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "4823:13:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct MmrLeaf memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 58137, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58136, + "name": "MmrLeaf", + "nameLocations": [ + "4827:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 49129, + "src": "4827:7:58" + }, + "referencedDeclaration": 49129, + "src": "4827:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_storage_ptr", + "typeString": "struct MmrLeaf" + } + }, + "id": 58138, + "nodeType": "ArrayTypeName", + "src": "4827:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_storage_$dyn_storage_ptr", + "typeString": "struct MmrLeaf[]" + } + } + }, + "id": 58141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4823:30:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4797:56:58" + }, + { + "body": { + "id": 58220, + "nodeType": "Block", + "src": "4910:617:58", + "statements": [ + { + "assignments": [ + 58155 + ], + "declarations": [ + { + "constant": false, + "id": 58155, + "mutability": "mutable", + "name": "leaf", + "nameLocation": "4948:4:58", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "4924:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf" + }, + "typeName": { + "id": 58154, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58153, + "name": "PostResponseLeaf", + "nameLocations": [ + "4924:16:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45508, + "src": "4924:16:58" + }, + "referencedDeclaration": 45508, + "src": "4924:16:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_storage_ptr", + "typeString": "struct PostResponseLeaf" + } + }, + "visibility": "internal" + } + ], + "id": 58160, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58156, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "4955:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58157, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4964:9:58", + "memberName": "responses", + "nodeType": "MemberAccess", + "referencedDeclaration": 45563, + "src": "4955:18:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostResponseLeaf_$45508_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostResponseLeaf memory[] memory" + } + }, + "id": 58159, + "indexExpression": { + "id": 58158, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58144, + "src": "4974:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4955:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4924:52:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58167, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "5034:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5039:4:58", + "memberName": "host", + "nodeType": "MemberAccess", + "referencedDeclaration": 45876, + "src": "5034:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () external returns (bytes memory)" + } + }, + "id": 58169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5034:11:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "expression": { + "expression": { + "id": 58162, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "4998:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58163, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5003:8:58", + "memberName": "response", + "nodeType": "MemberAccess", + "referencedDeclaration": 45503, + "src": "4998:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + }, + "id": 58164, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5012:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45489, + "src": "4998:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 58165, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5020:6:58", + "memberName": "source", + "nodeType": "MemberAccess", + "referencedDeclaration": 45445, + "src": "4998:28:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 58166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5027:6:58", + "memberName": "equals", + "nodeType": "MemberAccess", + "referencedDeclaration": 51729, + "src": "4998:35:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 58170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4998:48:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c696420726573706f6e73652064657374696e6174696f6e", + "id": 58171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5048:40:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ba85bde67c82abc7cea06cf3caa1accbea70a9a64a1d7400aac7f33fe52e5cf3", + "typeString": "literal_string \"IHandler: Invalid response destination\"" + }, + "value": "IHandler: Invalid response destination" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ba85bde67c82abc7cea06cf3caa1accbea70a9a64a1d7400aac7f33fe52e5cf3", + "typeString": "literal_string \"IHandler: Invalid response destination\"" + } + ], + "id": 58161, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4990:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4990:99:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58173, + "nodeType": "ExpressionStatement", + "src": "4990:99:58" + }, + { + "assignments": [ + 58175 + ], + "declarations": [ + { + "constant": false, + "id": 58175, + "mutability": "mutable", + "name": "requestCommitment", + "nameLocation": "5112:17:58", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "5104:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58174, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5104:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58182, + "initialValue": { + "arguments": [ + { + "expression": { + "expression": { + "id": 58178, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "5145:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5150:8:58", + "memberName": "response", + "nodeType": "MemberAccess", + "referencedDeclaration": 45503, + "src": "5145:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + }, + "id": 58180, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5159:7:58", + "memberName": "request", + "nodeType": "MemberAccess", + "referencedDeclaration": 45489, + "src": "5145:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "expression": { + "id": 58176, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "5132:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5140:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45678, + "src": "5132:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PostRequest_$45460_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PostRequest memory) pure returns (bytes32)" + } + }, + "id": 58181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5132:35:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5104:63:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58186, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58175, + "src": "5213:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58184, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "5189:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5194:18:58", + "memberName": "requestCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45955, + "src": "5189:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5189:42:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20556e6b6e6f776e2072657175657374", + "id": 58188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5233:27:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + }, + "value": "IHandler: Unknown request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + } + ], + "id": 58183, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5181:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5181:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58190, + "nodeType": "ExpressionStatement", + "src": "5181:80:58" + }, + { + "assignments": [ + 58192 + ], + "declarations": [ + { + "constant": false, + "id": 58192, + "mutability": "mutable", + "name": "responseCommitment", + "nameLocation": "5284:18:58", + "nodeType": "VariableDeclaration", + "scope": 58220, + "src": "5276:26:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58191, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5276:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58198, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58195, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "5318:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58196, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5323:8:58", + "memberName": "response", + "nodeType": "MemberAccess", + "referencedDeclaration": 45503, + "src": "5318:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + ], + "expression": { + "id": 58193, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "5305:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5313:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45647, + "src": "5305:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PostResponse_$45492_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PostResponse memory) pure returns (bytes32)" + } + }, + "id": 58197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5305:27:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5276:56:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5354:45:58", + "subExpression": { + "arguments": [ + { + "id": 58202, + "name": "responseCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58192, + "src": "5380:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58200, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "5355:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5360:19:58", + "memberName": "responseCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45963, + "src": "5355:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5355:44:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a204475706c696361746520506f737420726573706f6e7365", + "id": 58205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5401:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d60d82eddb22c950bc8b3719c8c91adf53927652bf0b6692b7d5ab393ee381fc", + "typeString": "literal_string \"IHandler: Duplicate Post response\"" + }, + "value": "IHandler: Duplicate Post response" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d60d82eddb22c950bc8b3719c8c91adf53927652bf0b6692b7d5ab393ee381fc", + "typeString": "literal_string \"IHandler: Duplicate Post response\"" + } + ], + "id": 58199, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5346:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5346:91:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58207, + "nodeType": "ExpressionStatement", + "src": "5346:91:58" + }, + { + "expression": { + "id": 58218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 58208, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58135, + "src": "5452:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + "id": 58210, + "indexExpression": { + "id": 58209, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58144, + "src": "5459:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5452:9:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 58212, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "5472:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58213, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5477:6:58", + "memberName": "kIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 45507, + "src": "5472:11:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 58214, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58155, + "src": "5485:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58215, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5490:5:58", + "memberName": "index", + "nodeType": "MemberAccess", + "referencedDeclaration": 45505, + "src": "5485:10:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 58216, + "name": "responseCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58192, + "src": "5497:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 58211, + "name": "MmrLeaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49129, + "src": "5464:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MmrLeaf_$49129_storage_ptr_$", + "typeString": "type(struct MmrLeaf storage pointer)" + } + }, + "id": 58217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5464:52:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "src": "5452:64:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MmrLeaf_$49129_memory_ptr", + "typeString": "struct MmrLeaf memory" + } + }, + "id": 58219, + "nodeType": "ExpressionStatement", + "src": "5452:64:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58149, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58147, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58144, + "src": "4884:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58148, + "name": "responsesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58126, + "src": "4888:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4884:19:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58221, + "initializationExpression": { + "assignments": [ + 58144 + ], + "declarations": [ + { + "constant": false, + "id": 58144, + "mutability": "mutable", + "name": "i", + "nameLocation": "4877:1:58", + "nodeType": "VariableDeclaration", + "scope": 58221, + "src": "4869:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4869:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58146, + "initialValue": { + "hexValue": "30", + "id": 58145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4881:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4869:13:58" + }, + "loopExpression": { + "expression": { + "id": 58151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4905:3:58", + "subExpression": { + "id": 58150, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58144, + "src": "4905:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58152, + "nodeType": "ExpressionStatement", + "src": "4905:3:58" + }, + "nodeType": "ForStatement", + "src": "4864:663:58" + }, + { + "assignments": [ + 58223 + ], + "declarations": [ + { + "constant": false, + "id": 58223, + "mutability": "mutable", + "name": "root", + "nameLocation": "5545:4:58", + "nodeType": "VariableDeclaration", + "scope": 58284, + "src": "5537:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58222, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5537:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58231, + "initialValue": { + "expression": { + "arguments": [ + { + "expression": { + "expression": { + "id": 58226, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "5580:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58227, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5589:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45559, + "src": "5580:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58228, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5595:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45511, + "src": "5580:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58224, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "5552:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5557:22:58", + "memberName": "stateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45898, + "src": "5552:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_struct$_StateCommitment_$45347_memory_ptr_$", + "typeString": "function (struct StateMachineHeight memory) external returns (struct StateCommitment memory)" + } + }, + "id": 58229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5552:50:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58230, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5603:11:58", + "memberName": "overlayRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 45344, + "src": "5552:62:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5537:77:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 58238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58233, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58223, + "src": "5633:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 58236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5649:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 58235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5641:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 58234, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5641:7:58", + "typeDescriptions": {} + } + }, + "id": 58237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5641:10:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "5633:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e6421", + "id": 58239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5653:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + }, + "value": "IHandler: Proof height not found!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + } + ], + "id": 58232, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5625:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5625:64:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58241, + "nodeType": "ExpressionStatement", + "src": "5625:64:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58245, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58223, + "src": "5752:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "expression": { + "id": 58246, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "5758:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58247, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5767:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45559, + "src": "5758:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58248, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5773:10:58", + "memberName": "multiproof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45514, + "src": "5758:25:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "id": 58249, + "name": "leaves", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58135, + "src": "5785:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + } + }, + { + "expression": { + "expression": { + "id": 58250, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "5793:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58251, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5802:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45559, + "src": "5793:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proof_$45517_memory_ptr", + "typeString": "struct Proof memory" + } + }, + "id": 58252, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5808:9:58", + "memberName": "leafCount", + "nodeType": "MemberAccess", + "referencedDeclaration": 45516, + "src": "5793:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr", + "typeString": "struct MmrLeaf memory[] memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 58243, + "name": "MerkleMountainRange", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 50178, + "src": "5720:19:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerkleMountainRange_$50178_$", + "typeString": "type(library MerkleMountainRange)" + } + }, + "id": 58244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5740:11:58", + "memberName": "VerifyProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 49162, + "src": "5720:31:58", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_struct$_MmrLeaf_$49129_memory_ptr_$dyn_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (bytes32,bytes32[] memory,struct MmrLeaf memory[] memory,uint256) pure returns (bool)" + } + }, + "id": 58253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5720:98:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c696420726573706f6e73652070726f6f6673", + "id": 58254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5832:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aae3fb0692a6a33309fb01d32d8ea5db30a2ac52b44571bada6a06beb437e86c", + "typeString": "literal_string \"IHandler: Invalid response proofs\"" + }, + "value": "IHandler: Invalid response proofs" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aae3fb0692a6a33309fb01d32d8ea5db30a2ac52b44571bada6a06beb437e86c", + "typeString": "literal_string \"IHandler: Invalid response proofs\"" + } + ], + "id": 58242, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5699:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5699:178:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58256, + "nodeType": "ExpressionStatement", + "src": "5699:178:58" + }, + { + "body": { + "id": 58282, + "nodeType": "Block", + "src": "5934:127:58", + "statements": [ + { + "assignments": [ + 58269 + ], + "declarations": [ + { + "constant": false, + "id": 58269, + "mutability": "mutable", + "name": "leaf", + "nameLocation": "5972:4:58", + "nodeType": "VariableDeclaration", + "scope": 58282, + "src": "5948:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf" + }, + "typeName": { + "id": 58268, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58267, + "name": "PostResponseLeaf", + "nameLocations": [ + "5948:16:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45508, + "src": "5948:16:58" + }, + "referencedDeclaration": 45508, + "src": "5948:16:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_storage_ptr", + "typeString": "struct PostResponseLeaf" + } + }, + "visibility": "internal" + } + ], + "id": 58274, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58270, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58097, + "src": "5979:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage memory" + } + }, + "id": 58271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5988:9:58", + "memberName": "responses", + "nodeType": "MemberAccess", + "referencedDeclaration": 45563, + "src": "5979:18:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostResponseLeaf_$45508_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostResponseLeaf memory[] memory" + } + }, + "id": 58273, + "indexExpression": { + "id": 58272, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58258, + "src": "5998:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5979:21:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5948:52:58" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 58278, + "name": "leaf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58269, + "src": "6036:4:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseLeaf_$45508_memory_ptr", + "typeString": "struct PostResponseLeaf memory" + } + }, + "id": 58279, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6041:8:58", + "memberName": "response", + "nodeType": "MemberAccess", + "referencedDeclaration": 45503, + "src": "6036:13:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostResponse_$45492_memory_ptr", + "typeString": "struct PostResponse memory" + } + ], + "expression": { + "id": 58275, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "6014:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6019:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46033, + "src": "6014:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_PostResponse_$45492_memory_ptr_$returns$__$", + "typeString": "function (struct PostResponse memory) external" + } + }, + "id": 58280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6014:36:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58281, + "nodeType": "ExpressionStatement", + "src": "6014:36:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58261, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58258, + "src": "5908:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58262, + "name": "responsesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58126, + "src": "5912:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5908:19:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58283, + "initializationExpression": { + "assignments": [ + 58258 + ], + "declarations": [ + { + "constant": false, + "id": 58258, + "mutability": "mutable", + "name": "i", + "nameLocation": "5901:1:58", + "nodeType": "VariableDeclaration", + "scope": 58283, + "src": "5893:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58257, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5893:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58260, + "initialValue": { + "hexValue": "30", + "id": 58259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5905:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "5893:13:58" + }, + "loopExpression": { + "expression": { + "id": 58265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "5929:3:58", + "subExpression": { + "id": 58264, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58258, + "src": "5929:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58266, + "nodeType": "ExpressionStatement", + "src": "5929:3:58" + }, + "nodeType": "ForStatement", + "src": "5888:173:58" + } + ] + }, + "baseFunctions": [ + 45407 + ], + "documentation": { + "id": 58091, + "nodeType": "StructuredDocumentation", + "src": "4229:191:58", + "text": " @dev check response proofs, message delay and timeouts, then dispatch post responses to modules\n @param host - Ismp host\n @param response - batch post responses" + }, + "functionSelector": "20d71c7a", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 58100, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58094, + "src": "4526:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 58101, + "kind": "modifierInvocation", + "modifierName": { + "id": 58099, + "name": "notFrozen", + "nameLocations": [ + "4516:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "4516:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "4516:15:58" + } + ], + "name": "handlePostResponses", + "nameLocation": "4434:19:58", + "parameters": { + "id": 58098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58094, + "mutability": "mutable", + "name": "host", + "nameLocation": "4464:4:58", + "nodeType": "VariableDeclaration", + "scope": 58285, + "src": "4454:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 58093, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58092, + "name": "IIsmpHost", + "nameLocations": [ + "4454:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "4454:9:58" + }, + "referencedDeclaration": 46055, + "src": "4454:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58097, + "mutability": "mutable", + "name": "response", + "nameLocation": "4497:8:58", + "nodeType": "VariableDeclaration", + "scope": 58285, + "src": "4470:35:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_memory_ptr", + "typeString": "struct PostResponseMessage" + }, + "typeName": { + "id": 58096, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58095, + "name": "PostResponseMessage", + "nameLocations": [ + "4470:19:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45564, + "src": "4470:19:58" + }, + "referencedDeclaration": 45564, + "src": "4470:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostResponseMessage_$45564_storage_ptr", + "typeString": "struct PostResponseMessage" + } + }, + "visibility": "internal" + } + ], + "src": "4453:53:58" + }, + "returnParameters": { + "id": 58102, + "nodeType": "ParameterList", + "parameters": [], + "src": "4532:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58423, + "nodeType": "FunctionDefinition", + "src": "6230:1159:58", + "nodes": [], + "body": { + "id": 58422, + "nodeType": "Block", + "src": "6334:1055:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 58300 + ], + "declarations": [ + { + "constant": false, + "id": 58300, + "mutability": "mutable", + "name": "state", + "nameLocation": "6405:5:58", + "nodeType": "VariableDeclaration", + "scope": 58422, + "src": "6382:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment" + }, + "typeName": { + "id": 58299, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58298, + "name": "StateCommitment", + "nameLocations": [ + "6382:15:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45347, + "src": "6382:15:58" + }, + "referencedDeclaration": 45347, + "src": "6382:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_storage_ptr", + "typeString": "struct StateCommitment" + } + }, + "visibility": "internal" + } + ], + "id": 58306, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58303, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58292, + "src": "6441:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage memory" + } + }, + "id": 58304, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6449:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45552, + "src": "6441:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58301, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58289, + "src": "6413:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6418:22:58", + "memberName": "stateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45898, + "src": "6413:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_struct$_StateCommitment_$45347_memory_ptr_$", + "typeString": "function (struct StateMachineHeight memory) external returns (struct StateCommitment memory)" + } + }, + "id": 58305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6413:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6382:74:58" + }, + { + "assignments": [ + 58308 + ], + "declarations": [ + { + "constant": false, + "id": 58308, + "mutability": "mutable", + "name": "timeoutsLength", + "nameLocation": "6474:14:58", + "nodeType": "VariableDeclaration", + "scope": 58422, + "src": "6466:22:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6466:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58312, + "initialValue": { + "expression": { + "expression": { + "id": 58309, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58292, + "src": "6491:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage memory" + } + }, + "id": 58310, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6499:8:58", + "memberName": "timeouts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45549, + "src": "6491:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequest_$45460_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequest memory[] memory" + } + }, + "id": 58311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6508:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6491:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6466:48:58" + }, + { + "body": { + "id": 58420, + "nodeType": "Block", + "src": "6570:813:58", + "statements": [ + { + "assignments": [ + 58325 + ], + "declarations": [ + { + "constant": false, + "id": 58325, + "mutability": "mutable", + "name": "request", + "nameLocation": "6603:7:58", + "nodeType": "VariableDeclaration", + "scope": 58420, + "src": "6584:26:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest" + }, + "typeName": { + "id": 58324, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58323, + "name": "PostRequest", + "nameLocations": [ + "6584:11:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45460, + "src": "6584:11:58" + }, + "referencedDeclaration": 45460, + "src": "6584:11:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_storage_ptr", + "typeString": "struct PostRequest" + } + }, + "visibility": "internal" + } + ], + "id": 58330, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58326, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58292, + "src": "6613:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage memory" + } + }, + "id": 58327, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6621:8:58", + "memberName": "timeouts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45549, + "src": "6613:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_PostRequest_$45460_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PostRequest memory[] memory" + } + }, + "id": 58329, + "indexExpression": { + "id": 58328, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58314, + "src": "6630:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6613:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6584:48:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 58335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58332, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58325, + "src": "6671:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 58333, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6679:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45455, + "src": "6671:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 58334, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6699:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6671:29:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58336, + "name": "state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58300, + "src": "6704:5:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6710:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45342, + "src": "6704:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 58338, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58325, + "src": "6722:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + }, + "id": 58339, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6730:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45455, + "src": "6722:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6704:42:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6671:75:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "52657175657374206e6f742074696d6564206f7574", + "id": 58342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6748:23:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4474e11a3caa6542a6723eefd6f66c15e8aa3df07c187e658ead4d0f5692e279", + "typeString": "literal_string \"Request not timed out\"" + }, + "value": "Request not timed out" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4474e11a3caa6542a6723eefd6f66c15e8aa3df07c187e658ead4d0f5692e279", + "typeString": "literal_string \"Request not timed out\"" + } + ], + "id": 58331, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6646:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6646:139:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58344, + "nodeType": "ExpressionStatement", + "src": "6646:139:58" + }, + { + "assignments": [ + 58346 + ], + "declarations": [ + { + "constant": false, + "id": 58346, + "mutability": "mutable", + "name": "requestCommitment", + "nameLocation": "6808:17:58", + "nodeType": "VariableDeclaration", + "scope": 58420, + "src": "6800:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58345, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6800:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58351, + "initialValue": { + "arguments": [ + { + "id": 58349, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58325, + "src": "6841:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "expression": { + "id": 58347, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "6828:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6836:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45678, + "src": "6828:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_PostRequest_$45460_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct PostRequest memory) pure returns (bytes32)" + } + }, + "id": 58350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6828:21:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6800:49:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58355, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58346, + "src": "6895:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58353, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58289, + "src": "6871:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6876:18:58", + "memberName": "requestCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45955, + "src": "6871:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6871:42:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20556e6b6e6f776e2072657175657374", + "id": 58357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6915:27:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + }, + "value": "IHandler: Unknown request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + } + ], + "id": 58352, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6863:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6863:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58359, + "nodeType": "ExpressionStatement", + "src": "6863:80:58" + }, + { + "assignments": [ + 58364 + ], + "declarations": [ + { + "constant": false, + "id": 58364, + "mutability": "mutable", + "name": "keys", + "nameLocation": "6973:4:58", + "nodeType": "VariableDeclaration", + "scope": 58420, + "src": "6958:19:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 58362, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6958:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 58363, + "nodeType": "ArrayTypeName", + "src": "6958:7:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 58370, + "initialValue": { + "arguments": [ + { + "hexValue": "31", + "id": 58368, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6992:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 58367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "6980:11:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 58365, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6984:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 58366, + "nodeType": "ArrayTypeName", + "src": "6984:7:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + } + }, + "id": 58369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6980:14:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6958:36:58" + }, + { + "expression": { + "id": 58384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 58371, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58364, + "src": "7008:4:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "id": 58373, + "indexExpression": { + "id": 58372, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58314, + "src": "7013:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7008:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 58377, + "name": "REQUEST_COMMITMENT_STORAGE_PREFIX", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57758, + "src": "7031:33:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "arguments": [ + { + "id": 58381, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58346, + "src": "7079:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7066:5:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58378, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7066:5:58", + "typeDescriptions": {} + } + }, + "id": 58380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7072:6:58", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "7066:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7066:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7018:5:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58374, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7018:5:58", + "typeDescriptions": {} + } + }, + "id": 58376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7024:6:58", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "7018:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7018:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "7008:90:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 58385, + "nodeType": "ExpressionStatement", + "src": "7008:90:58" + }, + { + "assignments": [ + 58388 + ], + "declarations": [ + { + "constant": false, + "id": 58388, + "mutability": "mutable", + "name": "entry", + "nameLocation": "7133:5:58", + "nodeType": "VariableDeclaration", + "scope": 58420, + "src": "7113:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_memory_ptr", + "typeString": "struct StorageValue" + }, + "typeName": { + "id": 58387, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58386, + "name": "StorageValue", + "nameLocations": [ + "7113:12:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50961, + "src": "7113:12:58" + }, + "referencedDeclaration": 50961, + "src": "7113:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_storage_ptr", + "typeString": "struct StorageValue" + } + }, + "visibility": "internal" + } + ], + "id": 58399, + "initialValue": { + "baseExpression": { + "arguments": [ + { + "expression": { + "id": 58391, + "name": "state", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58300, + "src": "7177:5:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7183:9:58", + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 45346, + "src": "7177:15:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 58393, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58292, + "src": "7194:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage memory" + } + }, + "id": 58394, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7202:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45555, + "src": "7194:13:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + { + "id": 58395, + "name": "keys", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58364, + "src": "7209:4:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + ], + "expression": { + "id": 58389, + "name": "MerklePatricia", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51681, + "src": "7141:14:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerklePatricia_$51681_$", + "typeString": "type(library MerklePatricia)" + } + }, + "id": 58390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7156:20:58", + "memberName": "VerifySubstrateProof", + "nodeType": "MemberAccess", + "referencedDeclaration": 51253, + "src": "7141:35:58", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes32,bytes memory[] memory,bytes memory[] memory) pure returns (struct StorageValue memory[] memory)" + } + }, + "id": 58396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7141:73:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue memory[] memory" + } + }, + "id": 58398, + "indexExpression": { + "hexValue": "30", + "id": 58397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7215:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7141:76:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_memory_ptr", + "typeString": "struct StorageValue memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7113:104:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 58406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7268:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 58405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "7258:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 58404, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7262:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 58407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7258:12:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "id": 58401, + "name": "entry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58388, + "src": "7239:5:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_memory_ptr", + "typeString": "struct StorageValue memory" + } + }, + "id": 58402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7245:5:58", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 50960, + "src": "7239:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 58403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7251:6:58", + "memberName": "equals", + "nodeType": "MemberAccess", + "referencedDeclaration": 51729, + "src": "7239:18:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 58408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7239:32:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c6964206e6f6e2d6d656d626572736869702070726f6f66", + "id": 58409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7273:40:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ee35706f8dd6f4d641ab02dcd55f44fd97cd4619724d39d9d0331e69043d1968", + "typeString": "literal_string \"IHandler: Invalid non-membership proof\"" + }, + "value": "IHandler: Invalid non-membership proof" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ee35706f8dd6f4d641ab02dcd55f44fd97cd4619724d39d9d0331e69043d1968", + "typeString": "literal_string \"IHandler: Invalid non-membership proof\"" + } + ], + "id": 58400, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7231:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7231:83:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58411, + "nodeType": "ExpressionStatement", + "src": "7231:83:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58416, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58325, + "src": "7363:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostRequest_$45460_memory_ptr", + "typeString": "struct PostRequest memory" + } + ], + "id": 58415, + "name": "PostTimeout", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45545, + "src": "7351:11:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_PostTimeout_$45545_storage_ptr_$", + "typeString": "type(struct PostTimeout storage pointer)" + } + }, + "id": 58417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7351:20:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeout_$45545_memory_ptr", + "typeString": "struct PostTimeout memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_PostTimeout_$45545_memory_ptr", + "typeString": "struct PostTimeout memory" + } + ], + "expression": { + "id": 58412, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58289, + "src": "7329:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7334:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46054, + "src": "7329:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_PostTimeout_$45545_memory_ptr_$returns$__$", + "typeString": "function (struct PostTimeout memory) external" + } + }, + "id": 58418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7329:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58419, + "nodeType": "ExpressionStatement", + "src": "7329:43:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58317, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58314, + "src": "6545:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58318, + "name": "timeoutsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58308, + "src": "6549:14:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6545:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58421, + "initializationExpression": { + "assignments": [ + 58314 + ], + "declarations": [ + { + "constant": false, + "id": 58314, + "mutability": "mutable", + "name": "i", + "nameLocation": "6538:1:58", + "nodeType": "VariableDeclaration", + "scope": 58421, + "src": "6530:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58313, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6530:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58316, + "initialValue": { + "hexValue": "30", + "id": 58315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6542:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6530:13:58" + }, + "loopExpression": { + "expression": { + "id": 58321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6565:3:58", + "subExpression": { + "id": 58320, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58314, + "src": "6565:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58322, + "nodeType": "ExpressionStatement", + "src": "6565:3:58" + }, + "nodeType": "ForStatement", + "src": "6525:858:58" + } + ] + }, + "baseFunctions": [ + 45427 + ], + "documentation": { + "id": 58286, + "nodeType": "StructuredDocumentation", + "src": "6073:152:58", + "text": " @dev check timeout proofs then dispatch to modules\n @param host - Ismp host\n @param message - batch post request timeouts" + }, + "functionSelector": "d95e4fbb", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 58295, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58289, + "src": "6328:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 58296, + "kind": "modifierInvocation", + "modifierName": { + "id": 58294, + "name": "notFrozen", + "nameLocations": [ + "6318:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "6318:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "6318:15:58" + } + ], + "name": "handlePostTimeouts", + "nameLocation": "6239:18:58", + "parameters": { + "id": 58293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58289, + "mutability": "mutable", + "name": "host", + "nameLocation": "6268:4:58", + "nodeType": "VariableDeclaration", + "scope": 58423, + "src": "6258:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 58288, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58287, + "name": "IIsmpHost", + "nameLocations": [ + "6258:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "6258:9:58" + }, + "referencedDeclaration": 46055, + "src": "6258:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58292, + "mutability": "mutable", + "name": "message", + "nameLocation": "6300:7:58", + "nodeType": "VariableDeclaration", + "scope": 58423, + "src": "6274:33:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_memory_ptr", + "typeString": "struct PostTimeoutMessage" + }, + "typeName": { + "id": 58291, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58290, + "name": "PostTimeoutMessage", + "nameLocations": [ + "6274:18:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45556, + "src": "6274:18:58" + }, + "referencedDeclaration": 45556, + "src": "6274:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PostTimeoutMessage_$45556_storage_ptr", + "typeString": "struct PostTimeoutMessage" + } + }, + "visibility": "internal" + } + ], + "src": "6257:51:58" + }, + "returnParameters": { + "id": 58297, + "nodeType": "ParameterList", + "parameters": [], + "src": "6334:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58601, + "nodeType": "FunctionDefinition", + "src": "7588:1595:58", + "nodes": [], + "body": { + "id": 58600, + "nodeType": "Block", + "src": "7692:1491:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 58437 + ], + "declarations": [ + { + "constant": false, + "id": 58437, + "mutability": "mutable", + "name": "delay", + "nameLocation": "7710:5:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "7702:13:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7702:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58447, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58438, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7718:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7723:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "7718:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7718:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "expression": { + "id": 58443, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "7775:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58444, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7783:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45531, + "src": "7775:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58441, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7737:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7742:32:58", + "memberName": "stateMachineCommitmentUpdateTime", + "nodeType": "MemberAccess", + "referencedDeclaration": 45907, + "src": "7737:37:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_uint256_$", + "typeString": "function (struct StateMachineHeight memory) external returns (uint256)" + } + }, + "id": 58445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7737:53:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7718:72:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7702:88:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58449, + "name": "delay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58437, + "src": "7808:5:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58450, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7816:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7821:15:58", + "memberName": "challengePeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 45969, + "src": "7816:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7816:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7808:30:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a207374696c6c20696e206368616c6c656e676520706572696f64", + "id": 58454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7840:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + }, + "value": "IHandler: still in challenge period" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f5082cb74f993b787a7585746b72947bebcf871ad1ca44b66287b84fa3fac9ca", + "typeString": "literal_string \"IHandler: still in challenge period\"" + } + ], + "id": 58448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7800:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7800:78:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58456, + "nodeType": "ExpressionStatement", + "src": "7800:78:58" + }, + { + "assignments": [ + 58459 + ], + "declarations": [ + { + "constant": false, + "id": 58459, + "mutability": "mutable", + "name": "stateCommitment", + "nameLocation": "7912:15:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "7889:38:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment" + }, + "typeName": { + "id": 58458, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58457, + "name": "StateCommitment", + "nameLocations": [ + "7889:15:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45347, + "src": "7889:15:58" + }, + "referencedDeclaration": 45347, + "src": "7889:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_storage_ptr", + "typeString": "struct StateCommitment" + } + }, + "visibility": "internal" + } + ], + "id": 58465, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 58462, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "7958:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58463, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7966:6:58", + "memberName": "height", + "nodeType": "MemberAccess", + "referencedDeclaration": 45531, + "src": "7958:14:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_StateMachineHeight_$45352_memory_ptr", + "typeString": "struct StateMachineHeight memory" + } + ], + "expression": { + "id": 58460, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7930:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7935:22:58", + "memberName": "stateMachineCommitment", + "nodeType": "MemberAccess", + "referencedDeclaration": 45898, + "src": "7930:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_StateMachineHeight_$45352_memory_ptr_$returns$_t_struct$_StateCommitment_$45347_memory_ptr_$", + "typeString": "function (struct StateMachineHeight memory) external returns (struct StateCommitment memory)" + } + }, + "id": 58464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7930:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7889:84:58" + }, + { + "assignments": [ + 58467 + ], + "declarations": [ + { + "constant": false, + "id": 58467, + "mutability": "mutable", + "name": "root", + "nameLocation": "7991:4:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "7983:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58466, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7983:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58470, + "initialValue": { + "expression": { + "id": 58468, + "name": "stateCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58459, + "src": "7998:15:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StateCommitment_$45347_memory_ptr", + "typeString": "struct StateCommitment memory" + } + }, + "id": 58469, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8014:9:58", + "memberName": "stateRoot", + "nodeType": "MemberAccess", + "referencedDeclaration": 45346, + "src": "7998:25:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7983:40:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 58477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58472, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58467, + "src": "8041:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 58475, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8057:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 58474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8049:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 58473, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8049:7:58", + "typeDescriptions": {} + } + }, + "id": 58476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8049:10:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8041:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2050726f6f6620686569676874206e6f7420666f756e6421", + "id": 58478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8061:35:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + }, + "value": "IHandler: Proof height not found!" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_eb4f31515693928b53012cedc95045735db2c103e6bb9ff528968685dcec5221", + "typeString": "literal_string \"IHandler: Proof height not found!\"" + } + ], + "id": 58471, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8033:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8033:64:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58480, + "nodeType": "ExpressionStatement", + "src": "8033:64:58" + }, + { + "assignments": [ + 58482 + ], + "declarations": [ + { + "constant": false, + "id": 58482, + "mutability": "mutable", + "name": "responsesLength", + "nameLocation": "8116:15:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "8108:23:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8108:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58486, + "initialValue": { + "expression": { + "expression": { + "id": 58483, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "8134:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58484, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8142:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45535, + "src": "8134:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_GetRequest_$45478_memory_ptr_$dyn_memory_ptr", + "typeString": "struct GetRequest memory[] memory" + } + }, + "id": 58485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8151:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8134:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8108:49:58" + }, + { + "assignments": [ + 58491 + ], + "declarations": [ + { + "constant": false, + "id": 58491, + "mutability": "mutable", + "name": "proof", + "nameLocation": "8182:5:58", + "nodeType": "VariableDeclaration", + "scope": 58600, + "src": "8167:20:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 58489, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8167:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 58490, + "nodeType": "ArrayTypeName", + "src": "8167:7:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "id": 58494, + "initialValue": { + "expression": { + "id": 58492, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "8190:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58493, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8198:5:58", + "memberName": "proof", + "nodeType": "MemberAccess", + "referencedDeclaration": 45528, + "src": "8190:13:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8167:36:58" + }, + { + "body": { + "id": 58598, + "nodeType": "Block", + "src": "8260:917:58", + "statements": [ + { + "assignments": [ + 58507 + ], + "declarations": [ + { + "constant": false, + "id": 58507, + "mutability": "mutable", + "name": "request", + "nameLocation": "8292:7:58", + "nodeType": "VariableDeclaration", + "scope": 58598, + "src": "8274:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest" + }, + "typeName": { + "id": 58506, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58505, + "name": "GetRequest", + "nameLocations": [ + "8274:10:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45478, + "src": "8274:10:58" + }, + "referencedDeclaration": 45478, + "src": "8274:10:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_storage_ptr", + "typeString": "struct GetRequest" + } + }, + "visibility": "internal" + } + ], + "id": 58512, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58508, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58430, + "src": "8302:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage memory" + } + }, + "id": 58509, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8310:8:58", + "memberName": "requests", + "nodeType": "MemberAccess", + "referencedDeclaration": 45535, + "src": "8302:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_GetRequest_$45478_memory_ptr_$dyn_memory_ptr", + "typeString": "struct GetRequest memory[] memory" + } + }, + "id": 58511, + "indexExpression": { + "id": 58510, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58496, + "src": "8319:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8302:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8274:47:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58517, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "8365:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8370:4:58", + "memberName": "host", + "nodeType": "MemberAccess", + "referencedDeclaration": 45876, + "src": "8365:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () external returns (bytes memory)" + } + }, + "id": 58519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8365:11:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "expression": { + "id": 58514, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8343:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58515, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8351:6:58", + "memberName": "source", + "nodeType": "MemberAccess", + "referencedDeclaration": 45462, + "src": "8343:14:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 58516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8358:6:58", + "memberName": "equals", + "nodeType": "MemberAccess", + "referencedDeclaration": 51729, + "src": "8343:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$bound_to$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory) pure returns (bool)" + } + }, + "id": 58520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8343:34:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20496e76616c69642047455420726573706f6e73652064657374696e6174696f6e", + "id": 58521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8379:44:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9dc24080a5cd9466ab2780d7fa70752dcbe4e1d443458cb33d24f93f5dfce948", + "typeString": "literal_string \"IHandler: Invalid GET response destination\"" + }, + "value": "IHandler: Invalid GET response destination" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9dc24080a5cd9466ab2780d7fa70752dcbe4e1d443458cb33d24f93f5dfce948", + "typeString": "literal_string \"IHandler: Invalid GET response destination\"" + } + ], + "id": 58513, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8335:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8335:89:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58523, + "nodeType": "ExpressionStatement", + "src": "8335:89:58" + }, + { + "assignments": [ + 58525 + ], + "declarations": [ + { + "constant": false, + "id": 58525, + "mutability": "mutable", + "name": "requestCommitment", + "nameLocation": "8447:17:58", + "nodeType": "VariableDeclaration", + "scope": 58598, + "src": "8439:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58524, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8439:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58530, + "initialValue": { + "arguments": [ + { + "id": 58528, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8480:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + ], + "expression": { + "id": 58526, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "8467:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8475:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45745, + "src": "8467:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_GetRequest_$45478_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct GetRequest memory) pure returns (bytes32)" + } + }, + "id": 58529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8467:21:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8439:49:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58534, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58525, + "src": "8534:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58532, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "8510:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8515:18:58", + "memberName": "requestCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45955, + "src": "8510:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8510:42:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20556e6b6e6f776e204745542072657175657374", + "id": 58536, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8554:31:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c08981adb584b24da2a50180dc8aa8bd1220f9b7d1dbbcec46ea72e9837bbbab", + "typeString": "literal_string \"IHandler: Unknown GET request\"" + }, + "value": "IHandler: Unknown GET request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c08981adb584b24da2a50180dc8aa8bd1220f9b7d1dbbcec46ea72e9837bbbab", + "typeString": "literal_string \"IHandler: Unknown GET request\"" + } + ], + "id": 58531, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8502:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8502:84:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58538, + "nodeType": "ExpressionStatement", + "src": "8502:84:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 58543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58540, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8625:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58541, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8633:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45470, + "src": "8625:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 58542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8653:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8625:29:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58544, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8658:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58545, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8666:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45470, + "src": "8658:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58546, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "8685:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8690:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "8685:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8685:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8658:43:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8625:76:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a2047455420726571756573742074696d6564206f7574", + "id": 58551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8719:33:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ca4e713dad53180218b03e9ef7d28c6b452eab4f385a7a8da5c1e57771d298a0", + "typeString": "literal_string \"IHandler: GET request timed out\"" + }, + "value": "IHandler: GET request timed out" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ca4e713dad53180218b03e9ef7d28c6b452eab4f385a7a8da5c1e57771d298a0", + "typeString": "literal_string \"IHandler: GET request timed out\"" + } + ], + "id": 58539, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8600:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8600:166:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58553, + "nodeType": "ExpressionStatement", + "src": "8600:166:58" + }, + { + "assignments": [ + 58558 + ], + "declarations": [ + { + "constant": false, + "id": 58558, + "mutability": "mutable", + "name": "values", + "nameLocation": "8803:6:58", + "nodeType": "VariableDeclaration", + "scope": 58598, + "src": "8781:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue[]" + }, + "typeName": { + "baseType": { + "id": 58556, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58555, + "name": "StorageValue", + "nameLocations": [ + "8781:12:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 50961, + "src": "8781:12:58" + }, + "referencedDeclaration": 50961, + "src": "8781:12:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StorageValue_$50961_storage_ptr", + "typeString": "struct StorageValue" + } + }, + "id": 58557, + "nodeType": "ArrayTypeName", + "src": "8781:14:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_storage_$dyn_storage_ptr", + "typeString": "struct StorageValue[]" + } + }, + "visibility": "internal" + } + ], + "id": 58571, + "initialValue": { + "arguments": [ + { + "id": 58561, + "name": "root", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58467, + "src": "8863:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 58562, + "name": "proof", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58491, + "src": "8869:5:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + { + "expression": { + "id": 58563, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8876:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58564, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8884:4:58", + "memberName": "keys", + "nodeType": "MemberAccess", + "referencedDeclaration": 45473, + "src": "8876:12:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + } + }, + { + "arguments": [ + { + "id": 58568, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58525, + "src": "8903:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8890:5:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 58565, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8890:5:58", + "typeDescriptions": {} + } + }, + "id": 58567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8896:6:58", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "8890:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 58569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8890:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr", + "typeString": "bytes memory[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 58559, + "name": "MerklePatricia", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51681, + "src": "8828:14:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_MerklePatricia_$51681_$", + "typeString": "type(library MerklePatricia)" + } + }, + "id": 58560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8843:19:58", + "memberName": "ReadChildProofCheck", + "nodeType": "MemberAccess", + "referencedDeclaration": 51342, + "src": "8828:34:58", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_pure$_t_bytes32_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_array$_t_bytes_memory_ptr_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes32,bytes memory[] memory,bytes memory[] memory,bytes memory) pure returns (struct StorageValue memory[] memory)" + } + }, + "id": 58570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8828:94:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8781:141:58" + }, + { + "assignments": [ + 58574 + ], + "declarations": [ + { + "constant": false, + "id": 58574, + "mutability": "mutable", + "name": "response", + "nameLocation": "8955:8:58", + "nodeType": "VariableDeclaration", + "scope": 58598, + "src": "8936:27:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse" + }, + "typeName": { + "id": 58573, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58572, + "name": "GetResponse", + "nameLocations": [ + "8936:11:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45486, + "src": "8936:11:58" + }, + "referencedDeclaration": 45486, + "src": "8936:11:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_storage_ptr", + "typeString": "struct GetResponse" + } + }, + "visibility": "internal" + } + ], + "id": 58579, + "initialValue": { + "arguments": [ + { + "id": 58576, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58507, + "src": "8988:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + { + "id": 58577, + "name": "values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58558, + "src": "9005:6:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + }, + { + "typeIdentifier": "t_array$_t_struct$_StorageValue_$50961_memory_ptr_$dyn_memory_ptr", + "typeString": "struct StorageValue memory[] memory" + } + ], + "id": 58575, + "name": "GetResponse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45486, + "src": "8966:11:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_GetResponse_$45486_storage_ptr_$", + "typeString": "type(struct GetResponse storage pointer)" + } + }, + "id": 58578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "8979:7:58", + "8997:6:58" + ], + "names": [ + "request", + "values" + ], + "nodeType": "FunctionCall", + "src": "8966:47:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8936:77:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9035:49:58", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 58585, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58574, + "src": "9074:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + ], + "expression": { + "id": 58583, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "9061:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9069:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45836, + "src": "9061:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_GetResponse_$45486_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct GetResponse memory) pure returns (bytes32)" + } + }, + "id": 58586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9061:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58581, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "9036:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9041:19:58", + "memberName": "responseCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45963, + "src": "9036:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9036:48:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a204475706c69636174652047455420726573706f6e7365", + "id": 58589, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9086:34:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6850f370ead05fc25b8eadb25515e13f223f9a36d2ff7f951b143bf675ebca9e", + "typeString": "literal_string \"IHandler: Duplicate GET response\"" + }, + "value": "IHandler: Duplicate GET response" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6850f370ead05fc25b8eadb25515e13f223f9a36d2ff7f951b143bf675ebca9e", + "typeString": "literal_string \"IHandler: Duplicate GET response\"" + } + ], + "id": 58580, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9027:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9027:94:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58591, + "nodeType": "ExpressionStatement", + "src": "9027:94:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58595, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58574, + "src": "9157:8:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetResponse_$45486_memory_ptr", + "typeString": "struct GetResponse memory" + } + ], + "expression": { + "id": 58592, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "9135:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9140:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46040, + "src": "9135:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_GetResponse_$45486_memory_ptr_$returns$__$", + "typeString": "function (struct GetResponse memory) external" + } + }, + "id": 58596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9135:31:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58597, + "nodeType": "ExpressionStatement", + "src": "9135:31:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58499, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58496, + "src": "8234:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58500, + "name": "responsesLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58482, + "src": "8238:15:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8234:19:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58599, + "initializationExpression": { + "assignments": [ + 58496 + ], + "declarations": [ + { + "constant": false, + "id": 58496, + "mutability": "mutable", + "name": "i", + "nameLocation": "8227:1:58", + "nodeType": "VariableDeclaration", + "scope": 58599, + "src": "8219:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8219:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58498, + "initialValue": { + "hexValue": "30", + "id": 58497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8231:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8219:13:58" + }, + "loopExpression": { + "expression": { + "id": 58503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "8255:3:58", + "subExpression": { + "id": 58502, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58496, + "src": "8255:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58504, + "nodeType": "ExpressionStatement", + "src": "8255:3:58" + }, + "nodeType": "ForStatement", + "src": "8214:963:58" + } + ] + }, + "baseFunctions": [ + 45417 + ], + "documentation": { + "id": 58424, + "nodeType": "StructuredDocumentation", + "src": "7395:188:58", + "text": " @dev check response proofs, message delay and timeouts, then dispatch get responses to modules\n @param host - Ismp host\n @param message - batch get responses" + }, + "functionSelector": "873ce1ce", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 58433, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58427, + "src": "7686:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 58434, + "kind": "modifierInvocation", + "modifierName": { + "id": 58432, + "name": "notFrozen", + "nameLocations": [ + "7676:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "7676:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "7676:15:58" + } + ], + "name": "handleGetResponses", + "nameLocation": "7597:18:58", + "parameters": { + "id": 58431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58427, + "mutability": "mutable", + "name": "host", + "nameLocation": "7626:4:58", + "nodeType": "VariableDeclaration", + "scope": 58601, + "src": "7616:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 58426, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58425, + "name": "IIsmpHost", + "nameLocations": [ + "7616:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "7616:9:58" + }, + "referencedDeclaration": 46055, + "src": "7616:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58430, + "mutability": "mutable", + "name": "message", + "nameLocation": "7658:7:58", + "nodeType": "VariableDeclaration", + "scope": 58601, + "src": "7632:33:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_memory_ptr", + "typeString": "struct GetResponseMessage" + }, + "typeName": { + "id": 58429, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58428, + "name": "GetResponseMessage", + "nameLocations": [ + "7632:18:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45536, + "src": "7632:18:58" + }, + "referencedDeclaration": 45536, + "src": "7632:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetResponseMessage_$45536_storage_ptr", + "typeString": "struct GetResponseMessage" + } + }, + "visibility": "internal" + } + ], + "src": "7615:51:58" + }, + "returnParameters": { + "id": 58435, + "nodeType": "ParameterList", + "parameters": [], + "src": "7692:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "id": 58677, + "nodeType": "FunctionDefinition", + "src": "9319:680:58", + "nodes": [], + "body": { + "id": 58676, + "nodeType": "Block", + "src": "9421:578:58", + "nodes": [], + "statements": [ + { + "assignments": [ + 58615 + ], + "declarations": [ + { + "constant": false, + "id": 58615, + "mutability": "mutable", + "name": "timeoutsLength", + "nameLocation": "9439:14:58", + "nodeType": "VariableDeclaration", + "scope": 58676, + "src": "9431:22:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58614, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9431:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58619, + "initialValue": { + "expression": { + "expression": { + "id": 58616, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58608, + "src": "9456:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetTimeoutMessage_$45541_memory_ptr", + "typeString": "struct GetTimeoutMessage memory" + } + }, + "id": 58617, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9464:8:58", + "memberName": "timeouts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45540, + "src": "9456:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_GetRequest_$45478_memory_ptr_$dyn_memory_ptr", + "typeString": "struct GetRequest memory[] memory" + } + }, + "id": 58618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9473:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9456:23:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9431:48:58" + }, + { + "body": { + "id": 58674, + "nodeType": "Block", + "src": "9535:458:58", + "statements": [ + { + "assignments": [ + 58632 + ], + "declarations": [ + { + "constant": false, + "id": 58632, + "mutability": "mutable", + "name": "request", + "nameLocation": "9567:7:58", + "nodeType": "VariableDeclaration", + "scope": 58674, + "src": "9549:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest" + }, + "typeName": { + "id": 58631, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58630, + "name": "GetRequest", + "nameLocations": [ + "9549:10:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45478, + "src": "9549:10:58" + }, + "referencedDeclaration": 45478, + "src": "9549:10:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_storage_ptr", + "typeString": "struct GetRequest" + } + }, + "visibility": "internal" + } + ], + "id": 58637, + "initialValue": { + "baseExpression": { + "expression": { + "id": 58633, + "name": "message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58608, + "src": "9577:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetTimeoutMessage_$45541_memory_ptr", + "typeString": "struct GetTimeoutMessage memory" + } + }, + "id": 58634, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9585:8:58", + "memberName": "timeouts", + "nodeType": "MemberAccess", + "referencedDeclaration": 45540, + "src": "9577:16:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_GetRequest_$45478_memory_ptr_$dyn_memory_ptr", + "typeString": "struct GetRequest memory[] memory" + } + }, + "id": 58636, + "indexExpression": { + "id": 58635, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58621, + "src": "9594:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9577:19:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9549:47:58" + }, + { + "assignments": [ + 58639 + ], + "declarations": [ + { + "constant": false, + "id": 58639, + "mutability": "mutable", + "name": "requestCommitment", + "nameLocation": "9618:17:58", + "nodeType": "VariableDeclaration", + "scope": 58674, + "src": "9610:25:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58638, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9610:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 58644, + "initialValue": { + "arguments": [ + { + "id": 58642, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58632, + "src": "9651:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + ], + "expression": { + "id": 58640, + "name": "Message", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45837, + "src": "9638:7:58", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Message_$45837_$", + "typeString": "type(library Message)" + } + }, + "id": 58641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9646:4:58", + "memberName": "hash", + "nodeType": "MemberAccess", + "referencedDeclaration": 45745, + "src": "9638:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_struct$_GetRequest_$45478_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct GetRequest memory) pure returns (bytes32)" + } + }, + "id": 58643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9638:21:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9610:49:58" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 58648, + "name": "requestCommitment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58639, + "src": "9705:17:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 58646, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58605, + "src": "9681:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9686:18:58", + "memberName": "requestCommitments", + "nodeType": "MemberAccess", + "referencedDeclaration": 45955, + "src": "9681:23:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) external returns (bool)" + } + }, + "id": 58649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9681:42:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a20556e6b6e6f776e2072657175657374", + "id": 58650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9725:27:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + }, + "value": "IHandler: Unknown request" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a55e60d0bd31807d82a62a7f4b0e63b30a7862fb0f87496c334157082fabab3", + "typeString": "literal_string \"IHandler: Unknown request\"" + } + ], + "id": 58645, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9673:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9673:80:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58652, + "nodeType": "ExpressionStatement", + "src": "9673:80:58" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 58664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 58657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 58654, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58632, + "src": "9793:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58655, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9801:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45470, + "src": "9793:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 58656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9821:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9793:29:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 58658, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58605, + "src": "9826:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9831:9:58", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45882, + "src": "9826:14:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint256_$", + "typeString": "function () external returns (uint256)" + } + }, + "id": 58660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9826:16:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 58661, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58632, + "src": "9845:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + }, + "id": 58662, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9853:16:58", + "memberName": "timeoutTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 45470, + "src": "9845:24:58", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "9826:43:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9793:76:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4948616e646c65723a204745542072657175657374206e6f742074696d6564206f7574", + "id": 58665, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9887:37:58", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1ed2158ec10c61cc82a99cbdd3a7a0ebf0cf3ca43ea32076c0f99a0fd48394dc", + "typeString": "literal_string \"IHandler: GET request not timed out\"" + }, + "value": "IHandler: GET request not timed out" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1ed2158ec10c61cc82a99cbdd3a7a0ebf0cf3ca43ea32076c0f99a0fd48394dc", + "typeString": "literal_string \"IHandler: GET request not timed out\"" + } + ], + "id": 58653, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9768:7:58", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 58666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9768:170:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58667, + "nodeType": "ExpressionStatement", + "src": "9768:170:58" + }, + { + "expression": { + "arguments": [ + { + "id": 58671, + "name": "request", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58632, + "src": "9974:7:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_GetRequest_$45478_memory_ptr", + "typeString": "struct GetRequest memory" + } + ], + "expression": { + "id": 58668, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58605, + "src": "9952:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "id": 58670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9957:16:58", + "memberName": "dispatchIncoming", + "nodeType": "MemberAccess", + "referencedDeclaration": 46047, + "src": "9952:21:58", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_struct$_GetRequest_$45478_memory_ptr_$returns$__$", + "typeString": "function (struct GetRequest memory) external" + } + }, + "id": 58672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9952:30:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 58673, + "nodeType": "ExpressionStatement", + "src": "9952:30:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 58626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 58624, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58621, + "src": "9510:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 58625, + "name": "timeoutsLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58615, + "src": "9514:14:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9510:18:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 58675, + "initializationExpression": { + "assignments": [ + 58621 + ], + "declarations": [ + { + "constant": false, + "id": 58621, + "mutability": "mutable", + "name": "i", + "nameLocation": "9503:1:58", + "nodeType": "VariableDeclaration", + "scope": 58675, + "src": "9495:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 58620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9495:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 58623, + "initialValue": { + "hexValue": "30", + "id": 58622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9507:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9495:13:58" + }, + "loopExpression": { + "expression": { + "id": 58628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9530:3:58", + "subExpression": { + "id": 58627, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58621, + "src": "9530:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58629, + "nodeType": "ExpressionStatement", + "src": "9530:3:58" + }, + "nodeType": "ForStatement", + "src": "9490:503:58" + } + ] + }, + "baseFunctions": [ + 45437 + ], + "documentation": { + "id": 58602, + "nodeType": "StructuredDocumentation", + "src": "9189:125:58", + "text": " @dev dispatch to modules\n @param host - Ismp host\n @param message - batch get request timeouts" + }, + "functionSelector": "ac269bd6", + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 58611, + "name": "host", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58605, + "src": "9415:4:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + } + ], + "id": 58612, + "kind": "modifierInvocation", + "modifierName": { + "id": 58610, + "name": "notFrozen", + "nameLocations": [ + "9405:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57755, + "src": "9405:9:58" + }, + "nodeType": "ModifierInvocation", + "src": "9405:15:58" + } + ], + "name": "handleGetTimeouts", + "nameLocation": "9328:17:58", + "parameters": { + "id": 58609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 58605, + "mutability": "mutable", + "name": "host", + "nameLocation": "9356:4:58", + "nodeType": "VariableDeclaration", + "scope": 58677, + "src": "9346:14:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + }, + "typeName": { + "id": 58604, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58603, + "name": "IIsmpHost", + "nameLocations": [ + "9346:9:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 46055, + "src": "9346:9:58" + }, + "referencedDeclaration": 46055, + "src": "9346:9:58", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IIsmpHost_$46055", + "typeString": "contract IIsmpHost" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 58608, + "mutability": "mutable", + "name": "message", + "nameLocation": "9387:7:58", + "nodeType": "VariableDeclaration", + "scope": 58677, + "src": "9362:32:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetTimeoutMessage_$45541_memory_ptr", + "typeString": "struct GetTimeoutMessage" + }, + "typeName": { + "id": 58607, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 58606, + "name": "GetTimeoutMessage", + "nameLocations": [ + "9362:17:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45541, + "src": "9362:17:58" + }, + "referencedDeclaration": 45541, + "src": "9362:17:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GetTimeoutMessage_$45541_storage_ptr", + "typeString": "struct GetTimeoutMessage" + } + }, + "visibility": "internal" + } + ], + "src": "9345:50:58" + }, + "returnParameters": { + "id": 58613, + "nodeType": "ParameterList", + "parameters": [], + "src": "9421:0:58" + }, + "scope": 58678, + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 57734, + "name": "IHandler", + "nameLocations": [ + "362:8:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 45438, + "src": "362:8:58" + }, + "id": 57735, + "nodeType": "InheritanceSpecifier", + "src": "362:8:58" + }, + { + "baseName": { + "id": 57736, + "name": "Context", + "nameLocations": [ + "372:7:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 47465, + "src": "372:7:58" + }, + "id": 57737, + "nodeType": "InheritanceSpecifier", + "src": "372:7:58" + } + ], + "canonicalName": "HandlerV1", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "linearizedBaseContracts": [ + 58678, + 47465, + 45438 + ], + "name": "HandlerV1", + "nameLocation": "349:9:58", + "scope": 58679, + "usedErrors": [] + } + ], + "license": "UNLICENSED" + }, + "id": 58 +} \ No newline at end of file diff --git a/evm/forge/src/forge.rs b/evm/forge/src/forge.rs new file mode 100644 index 000000000..932132fd2 --- /dev/null +++ b/evm/forge/src/forge.rs @@ -0,0 +1,278 @@ +use ethers::{ + abi::{Detokenize, Tokenize}, + solc::{remappings::Remapping, Project, ProjectCompileOutput, ProjectPathsConfig}, + types::{Log, U256}, +}; +use forge::{ + executor::{ + inspector::CheatsConfig, + opts::{Env, EvmOpts}, + }, + result::TestSetup, + ContractRunner, MultiContractRunner, MultiContractRunnerBuilder, +}; +use foundry_config::{fs_permissions::PathPermission, Config, FsPermissions}; +use foundry_evm::{ + decode::decode_console_logs, + executor::{Backend, EvmError, ExecutorBuilder}, + Address, +}; +use once_cell::sync::Lazy; +use std::{ + fmt::Debug, + path::{Path, PathBuf}, +}; + +static PROJECT: Lazy = Lazy::new(|| { + let mut root = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + root = PathBuf::from(root.parent().unwrap()); + let mut paths = ProjectPathsConfig::builder().root(root.clone()).build().unwrap(); + { + // manually insert openzeppelin to remmapings. forge isn't autodetecting. + let mut path = root.clone(); + path.push("lib/openzeppelin-contracts/contracts"); + paths.remappings.push(Remapping { + context: None, + name: "openzeppelin/".to_string(), + path: path.to_str().unwrap().to_string(), + }); + } + { + // manually insert openzeppelin to remmapings. forge isn't autodetecting. + let mut path = root.clone(); + path.push("lib/ismp-solidity/src"); + paths.remappings.push(Remapping { + context: None, + name: "ismp/".to_string(), + path: path.to_str().unwrap().to_string(), + }); + } + { + paths.remappings.retain(|mapping| &*mapping.name != "multi-chain-tokens/"); + // manually insert openzeppelin to remmapings. forge isn't autodetecting. + let mut path = root.clone(); + path.push("lib/multi-chain-tokens/src"); + paths.remappings.push(Remapping { + context: None, + name: "multi-chain-tokens/".to_string(), + path: path.to_str().unwrap().to_string(), + }); + } + + Project::builder().paths(paths).ephemeral().no_artifacts().build().unwrap() +}); + +static EVM_OPTS: Lazy = Lazy::new(|| EvmOpts { + env: Env { + gas_limit: 18446744073709551615, + chain_id: Some(foundry_common::DEV_CHAIN_ID), + tx_origin: Config::DEFAULT_SENDER, + block_number: 1, + block_timestamp: 1, + code_size_limit: Some(usize::MAX), + ..Default::default() + }, + sender: Config::DEFAULT_SENDER, + initial_balance: U256::MAX, + ffi: true, + memory_limit: 2u64.pow(24), + ..Default::default() +}); + +static LOL: Lazy<()> = Lazy::new(|| { + use tracing::Level; + use tracing_subscriber::FmtSubscriber; + + let subscriber = FmtSubscriber::builder().with_max_level(Level::TRACE).finish(); + tracing::subscriber::set_global_default(subscriber).expect("setting default subscriber failed"); +}); + +static COMPILED: Lazy = Lazy::new(|| { + let out = (*PROJECT).compile().unwrap(); + if out.has_compiler_errors() { + eprintln!("{out}"); + panic!("Compiled with errors"); + } + out +}); + +/// Builds a base runner +fn base_runner() -> MultiContractRunnerBuilder { + MultiContractRunnerBuilder::default().sender(EVM_OPTS.sender) +} + +fn manifest_root() -> PathBuf { + let mut root = Path::new(env!("CARGO_MANIFEST_DIR")); + // need to check here where we're executing the test from, if in `forge` we need to also allow + // `testdata` + if root.ends_with("forge") { + root = root.parent().unwrap(); + } + root.to_path_buf() +} + +/// Builds a non-tracing runner +fn runner_with_config(mut config: Config) -> MultiContractRunner { + use foundry_evm::executor::SpecId; + + config.allow_paths.push(manifest_root()); + + base_runner() + .with_cheats_config(CheatsConfig::new(&config, &EVM_OPTS)) + .evm_spec(SpecId::MERGE) + .sender(config.sender) + .build(&PROJECT.paths.root, (*COMPILED).clone(), EVM_OPTS.local_evm_env(), EVM_OPTS.clone()) + .unwrap() +} + +/// Builds a non-tracing runner +pub fn runner() -> MultiContractRunner { + let mut config = Config::with_root(PROJECT.root()); + config.fs_permissions = FsPermissions::new(vec![PathPermission::read_write(manifest_root())]); + runner_with_config(config) +} + +pub async fn execute( + runner: &mut MultiContractRunner, + contract_name: &'static str, + fn_name: &'static str, + args: T, +) -> Result +where + T: Tokenize, + R: Detokenize + Debug, +{ + let db = Backend::spawn(runner.fork.take()).await; + + let (id, (abi, deploy_code, libs)) = runner + .contracts + .iter() + .find(|(id, (abi, _, _))| id.name == contract_name && abi.functions.contains_key(fn_name)) + .unwrap(); + let identifier = id.identifier(); + + let function = abi.functions.get(fn_name).unwrap().first().unwrap().clone(); + + let executor = ExecutorBuilder::default() + .with_cheatcodes(runner.cheats_config.clone()) + .with_config(runner.env.clone()) + .with_spec(runner.evm_spec) + .with_gas_limit(runner.evm_opts.gas_limit()) + .set_tracing(true) + .set_coverage(runner.coverage) + .build(db.clone()); + + let mut single_runner = ContractRunner::new( + &identifier, + executor, + abi, + deploy_code.clone(), + runner.evm_opts.initial_balance, + runner.sender, + runner.errors.as_ref(), + libs, + ); + + let setup = single_runner.setup(true); + let TestSetup { address, .. } = setup; + + let result = single_runner.executor.execute_test::( + single_runner.sender, + address, + function, + args, + 0.into(), + single_runner.errors, + ); + + match &result { + Ok(call) => print_logs(fn_name, call.gas_used, &call.logs), + Err(EvmError::Execution(execution)) => + print_logs(fn_name, execution.gas_used, &execution.logs), + _ => {}, + }; + + Ok(result?.result) +} + +pub async fn single_runner<'a>( + runner: &'a mut MultiContractRunner, + contract_name: &'static str, +) -> (ContractRunner<'a>, Address) { + let db = Backend::spawn(runner.fork.take()).await; + + let (id, (abi, deploy_code, libs)) = runner + .contracts + .iter() + .find(|(id, (_, _, _))| id.name == contract_name) + .unwrap(); + + // dbg!(deploy_code.len()); + // dbg!(2 * 0x6000); // max init codesize + + let executor = ExecutorBuilder::default() + .with_cheatcodes(runner.cheats_config.clone()) + .with_config(runner.env.clone()) + .with_spec(runner.evm_spec) + .with_gas_limit(runner.evm_opts.gas_limit()) + .set_tracing(true) + .set_coverage(runner.coverage) + .build(db.clone()); + + let mut single_runner = ContractRunner::new( + &id.name, + executor, + abi, + deploy_code.clone(), + runner.evm_opts.initial_balance, + runner.sender, + runner.errors.as_ref(), + libs, + ); + + let setup = single_runner.setup(true); + let TestSetup { address, .. } = setup; + + (single_runner, address) +} + +/// Execute using the single [`ContractRunner`] +pub fn execute_single( + contract: &mut ContractRunner, + address: Address, + func: &str, + args: T, +) -> Result +where + T: Tokenize, + R: Detokenize + Debug, +{ + let function = contract.contract.functions.get(func).unwrap().first().unwrap().clone(); + + let result = contract.executor.execute_test::( + contract.sender, + address, + function, + args, + 0.into(), + contract.errors, + ); + + match &result { + Ok(call) => print_logs(func, call.gas_used, &call.logs), + Err(EvmError::Execution(execution)) => + print_logs(func, execution.gas_used, &execution.logs), + _ => {}, + }; + + Ok(result?.result) +} + +fn print_logs(func: &str, gas_used: u64, logs: &Vec) { + println!("Gas used {func}: {:#?}", gas_used); + println!("=========== Start Logs {func} ==========="); + for log in decode_console_logs(logs) { + println!("{}", log); + } + println!("=========== End Logs {func} ==========="); +} diff --git a/evm/forge/src/lib.rs b/evm/forge/src/lib.rs new file mode 100644 index 000000000..8b7a4fbf8 --- /dev/null +++ b/evm/forge/src/lib.rs @@ -0,0 +1,66 @@ +#![cfg(test)] +#![allow(unused_parens)] + +pub mod abi; +mod forge; +mod tests; + +pub use crate::forge::{execute, runner}; +pub use ethers::{abi::Token, types::U256, utils::keccak256}; +use ismp::mmr::{DataOrHash, MmrHasher}; +use merkle_mountain_range::{util::MemMMR, Error, Merge}; +use rs_merkle::Hasher; + +#[derive(Clone)] +pub struct Keccak256; + +impl Hasher for Keccak256 { + type Hash = [u8; 32]; + + fn hash(data: &[u8]) -> [u8; 32] { + keccak256(data) + } +} + +impl ismp::util::Keccak256 for Keccak256 { + fn keccak256(bytes: &[u8]) -> H256 + where + Self: Sized, + { + keccak256(bytes).into() + } +} + +struct MergeKeccak; + +impl Merge for MergeKeccak { + type Item = NumberHash; + fn merge(lhs: &Self::Item, rhs: &Self::Item) -> Result { + let mut concat = vec![]; + concat.extend(&lhs.0); + concat.extend(&rhs.0); + let hash = keccak256(&concat); + Ok(NumberHash(hash.to_vec().into())) + } +} + +#[derive(Eq, PartialEq, Clone, Debug, Default)] +struct NumberHash(pub Vec); + +impl From for NumberHash { + fn from(num: u32) -> Self { + let hash = keccak256(&num.to_le_bytes()); + NumberHash(hash.to_vec()) + } +} + +pub fn unwrap_hash(item: &DataOrHash) -> [u8; 32] { + match item { + DataOrHash::Hash(h) => (*h).into(), + _ => panic!("not a hash"), + } +} + +use primitive_types::H256; + +pub type Mmr = MemMMR>; diff --git a/evm/forge/src/tests.rs b/evm/forge/src/tests.rs new file mode 100644 index 000000000..ae64d1987 --- /dev/null +++ b/evm/forge/src/tests.rs @@ -0,0 +1,6 @@ +mod beefy_v1; +mod get_response; +mod get_timeout; +mod post_request; +mod post_response; +mod post_timeout; diff --git a/evm/forge/src/tests/beefy_v1.rs b/evm/forge/src/tests/beefy_v1.rs new file mode 100644 index 000000000..5e1dc64a8 --- /dev/null +++ b/evm/forge/src/tests/beefy_v1.rs @@ -0,0 +1,252 @@ +#![cfg(test)] + +use crate::{abi, abi::local, execute, runner}; +use beefy_primitives::{ecdsa_crypto::Signature, mmr::MmrLeaf, Commitment, VersionedFinalityProof}; +use beefy_prover::Prover; +use beefy_verifier_primitives::ConsensusState; +use codec::{Decode, Encode}; +use ethers::abi::{AbiDecode, AbiEncode, Token, Uint}; +use foundry_common::abi::IntoFunction; +use futures::stream::StreamExt; +use hex_literal::hex; +use primitive_types::H256; +use serde::Deserialize; +use sp_runtime::{generic::Header, traits::BlakeTwo256}; +use std::str::FromStr; +use subxt::{ + config::{ + polkadot::PolkadotExtrinsicParams, + substrate::{SubstrateExtrinsicParams, SubstrateHeader}, + Hasher, WithExtrinsicParams, + }, + rpc::Subscription, + rpc_params, + utils::{AccountId32, MultiAddress, MultiSignature}, + PolkadotConfig, +}; + +type Hyperbridge = + WithExtrinsicParams>; + +pub struct HyperbridgeConfig {} + +#[derive(Debug, Clone, Copy, PartialEq, Eq, Encode)] +pub struct Keccak256; + +impl Hasher for Keccak256 { + type Output = H256; + fn hash(s: &[u8]) -> Self::Output { + sp_core::keccak_256(s).into() + } +} + +impl subxt::Config for HyperbridgeConfig { + type Hash = H256; + type AccountId = AccountId32; + type Address = MultiAddress; + type Signature = MultiSignature; + type Hasher = Keccak256; + type Header = SubstrateHeader; + type ExtrinsicParams = SubstrateExtrinsicParams; +} + +fn default_para_id() -> u32 { + 2000 +} +fn activation_block() -> u32 { + 2000 +} +fn default_relay_ws_url() -> String { + "ws://127.0.0.1:9944".to_string() +} +fn default_para_ws_url() -> String { + "ws://127.0.0.1:9988".to_string() +} +#[derive(Deserialize, Debug)] +struct Config { + #[serde(default = "default_relay_ws_url")] + relay_ws_url: String, + #[serde(default = "default_para_ws_url")] + para_ws_url: String, + #[serde(default = "default_para_id")] + para_id: u32, + #[serde(default = "activation_block")] + activation_block: u32, +} + +#[tokio::test(flavor = "multi_thread")] +#[ignore] +async fn beefy_consensus_client_test() { + let mut runner = runner(); + let config = envy::from_env::().unwrap(); + let Config { relay_ws_url, para_ws_url, para_id, activation_block } = config; + + let relay = subxt::client::OnlineClient::::from_url(relay_ws_url) + .await + .unwrap(); + + let para = subxt::client::OnlineClient::::from_url(para_ws_url).await.unwrap(); + + para.blocks() + .subscribe_best() + .await + .unwrap() + .skip_while(|result| { + futures::future::ready({ + match result { + Ok(block) => block.number() < 1, + Err(_) => false, + } + }) + }) + .take(1) + .collect::>() + .await; + + println!("Parachains Onboarded"); + + let prover = + Prover { beefy_activation_block: activation_block, relay, para, para_ids: vec![para_id] }; + let initial_state = prover.get_initial_consensus_state().await.unwrap(); + let mut consensus_state: abi::BeefyConsensusState = initial_state.into(); + let subscription: Subscription = prover + .relay + .rpc() + .subscribe( + "beefy_subscribeJustifications", + rpc_params![], + "beefy_unsubscribeJustifications", + ) + .await + .unwrap(); + + let mut subscription_stream = subscription.take(10).enumerate(); + while let Some((_count, Ok(commitment))) = subscription_stream.next().await { + let commitment: sp_core::Bytes = FromStr::from_str(&commitment).unwrap(); + let VersionedFinalityProof::V1(signed_commitment) = + VersionedFinalityProof::::decode(&mut &*commitment).unwrap(); + + match signed_commitment.commitment.validator_set_id { + id if id < consensus_state.current_authority_set.id.as_u64() => { + // If validator set id of signed commitment is less than current validator set id we + // have Then commitment is outdated and we skip it. + println!( + "Skipping outdated commitment \n Received signed commitmment with validator_set_id: {:?}\n Current authority set id: {:#?}\n Next authority set id: {:?}\n", + signed_commitment.commitment.validator_set_id, consensus_state.current_authority_set.id, consensus_state.current_authority_set.id + ); + continue + }, + _ => {}, + }; + + let consensus_proof: abi::BeefyConsensusProof = + prover.consensus_proof(signed_commitment).await.unwrap().into(); + + if consensus_proof.relay.signed_commitment.commitment.block_number == + consensus_state.latest_height + { + continue + } + + dbg!(&consensus_proof.relay.signed_commitment.commitment); + + let (new_state, intermediates) = execute::<_, (bytes::Bytes, abi::IntermediateState)>( + &mut runner, + "BeefyConsensusClientTest", + "VerifyV1", + ( + Token::Bytes(consensus_state.clone().encode()), + Token::Bytes(consensus_proof.encode()), + ), + ) + .await + .unwrap(); + + consensus_state = abi::BeefyConsensusState::decode(new_state).unwrap(); + + { + let debug_consensus_state: ConsensusState = consensus_state.clone().into(); + dbg!(&debug_consensus_state); + let intermediate: local::IntermediateState = intermediates.into(); + dbg!(&intermediate); + } + } +} + +#[tokio::test(flavor = "multi_thread")] +async fn test_decode_encode() { + let mmr_leaf = hex!("003f1e0000ccaf442e2648d278e87dbca890e532ef9cb7cf2058d023903b49567e2943996f550000000000000006000000a9d36172252f275bc8b7851062dff4a29e018355d8626c941f2ad57dfbabecd008ca13222c83d2a481d7b63c356d95bf9366b2a70e907ca3e38fa52e35731537").to_vec(); + let header = hex!("9a28ac82dd089df2f5215ec55ae8b4933f9d58c8c76bf0c0ca1884f3778af2b7a53ba87a649f925c5093914299f42c78ad997b5f69a2ca5dc9ad3357cd0aeb6fd409566fe009ee37e1bbdc43af58c0be65d195bc3f0a5c98568bb12b709ef0d4f3be0806617572612038b856080000000005617572610101ecb27e1850a572d08ff0f4e94a1a557b0ddd7b12158627e442789802aada1553e65d72ecc3a6c0efb9794fb6c2ebf5878da36d6e5b8295cc0f42810beb64c68a").to_vec(); + let commitment = hex!("046d688088bc15df49c90d1823ac81aa90236815062561ccc4352983576013413e17c25a401e00005400000000000000").to_vec(); + + let mmr_leaf = MmrLeaf::::decode(&mut &*mmr_leaf).unwrap(); + let header = Header::::decode(&mut &*header).unwrap(); + let commitment = Commitment::::decode(&mut &*commitment).unwrap(); + + let mut runner = runner(); + + { + type H256Hash = [u8; 32]; + let (parent_hash, number, state_root, extrinsics_root, digests) = + execute::<_, (H256Hash, u32, H256Hash, H256Hash, Vec)>( + &mut runner, + "BeefyConsensusClientTest", + "DecodeHeader", + (Token::Bytes(header.encode())), + ) + .await + .unwrap(); + + assert_eq!(&parent_hash, header.parent_hash.as_fixed_bytes()); + assert_eq!(number, header.number); + assert_eq!(&state_root, header.state_root.as_fixed_bytes()); + assert_eq!(&extrinsics_root, header.extrinsics_root.as_fixed_bytes()); + assert_eq!(header.digest.logs.len(), digests.len()); + } + + { + let abi = Token::Tuple(vec![ + Token::Array(vec![Token::Tuple(vec![ + Token::FixedBytes(b"mh".to_vec()), + Token::Bytes(commitment.payload.get_raw(b"mh").unwrap().clone()), + ])]), + Token::Uint(Uint::from(commitment.block_number)), + Token::Uint(Uint::from(commitment.validator_set_id)), + ]); + let encoded = execute::<_, Vec>( + &mut runner, + "BeefyConsensusClientTest", + "EncodeCommitment", + (abi,), + ) + .await + .unwrap(); + + assert_eq!(encoded, commitment.encode()); + } + + { + let abi = Token::Tuple(vec![ + Token::Uint(Uint::from(0)), + Token::Uint(Uint::from(mmr_leaf.parent_number_and_hash.0)), + Token::FixedBytes(mmr_leaf.parent_number_and_hash.1.as_bytes().to_vec()), + Token::Tuple(vec![ + Token::Uint(Uint::from(mmr_leaf.beefy_next_authority_set.id)), + Token::Uint(Uint::from(mmr_leaf.beefy_next_authority_set.len)), + Token::FixedBytes( + mmr_leaf.beefy_next_authority_set.keyset_commitment.as_bytes().to_vec(), + ), + ]), + Token::FixedBytes(mmr_leaf.leaf_extra.as_bytes().to_vec()), + Token::Uint(Uint::from(0)), + Token::Uint(Uint::from(0)), + ]); + + let encoded = + execute::<_, Vec>(&mut runner, "BeefyConsensusClientTest", "EncodeLeaf", (abi,)) + .await + .unwrap(); + + assert_eq!(encoded, mmr_leaf.encode()); + } +} diff --git a/evm/forge/src/tests/get_response.rs b/evm/forge/src/tests/get_response.rs new file mode 100644 index 000000000..4b90accc9 --- /dev/null +++ b/evm/forge/src/tests/get_response.rs @@ -0,0 +1,165 @@ +#![cfg(test)] + +use crate::{ + abi, + forge::{execute_single, single_runner}, + runner, Keccak256, +}; +use ethers::{ + abi::{AbiEncode, Token, Tokenizable}, + core::types::U256, +}; +use foundry_evm::Address; +use ismp::{ + host::{Ethereum, StateMachine}, + router::{Get, Request}, + util::hash_request, +}; +use primitive_types::H256; +use sp_core::KeccakHasher; +use sp_trie::{LayoutV0, MemoryDB}; +use std::collections::HashSet; +use trie_db::{Recorder, Trie, TrieDBBuilder, TrieDBMutBuilder, TrieMut}; + +fn generate_proof(request: H256, key: Vec) -> (H256, Vec>) { + let storage_prefix = b":child_storage:default:".to_vec(); + + // Populate DB with full trie from entries. + let (child_db, child_root) = { + let mut db = >::default(); + let mut root = Default::default(); + let mut trie = TrieDBMutBuilder::>::new(&mut db, &mut root).build(); + trie.insert(&key, H256::random().as_bytes()).unwrap(); + drop(trie); + + (db, root) + }; + + let child_proof = { + let mut recorder = Recorder::>::new(); + let trie_db = TrieDBBuilder::>::new(&child_db, &child_root) + .with_recorder(&mut recorder) + .build(); + + // try to get the keys we need from the trie + let _ = trie_db.get(key.as_ref()).unwrap(); + + let proof = recorder.drain().into_iter().map(|f| f.data).collect::>(); + + proof.into_iter().collect::>() + }; + + let key = [storage_prefix.clone(), request.as_bytes().to_vec()].concat(); + + let entries = (0..10) + .into_iter() + .map(|_| { + let key = [storage_prefix.clone(), H256::random().as_bytes().to_vec()].concat(); + + (key, H256::random().as_bytes().to_vec()) + }) + .collect::>(); + + // Populate DB with full trie from entries. + let (db, root) = { + let mut db = >::default(); + let mut root = Default::default(); + { + let mut trie = + TrieDBMutBuilder::>::new(&mut db, &mut root).build(); + for (key, value) in &entries { + trie.insert(key, &value).unwrap(); + } + trie.insert(key.as_ref(), child_root.as_ref()).unwrap(); + } + + (db, root) + }; + + // Generate proof for the given keys.. + let proof = { + let mut recorder = Recorder::>::new(); + let trie_db = TrieDBBuilder::>::new(&db, &root) + .with_recorder(&mut recorder) + .build(); + + // try to get the keys we need from the trie + let _ = trie_db.get(key.as_ref()).unwrap(); + + let proof = recorder.drain().into_iter().map(|f| f.data).collect::>(); + + proof.into_iter().collect::>() + }; + + let proof = [child_proof, proof].concat(); + + (root, proof) +} + +#[tokio::test(flavor = "multi_thread")] +async fn test_get_response() { + let mut runner = runner(); + let (mut contract, address) = single_runner(&mut runner, "GetResponseTest").await; + let destination = + execute_single::(&mut contract, address.clone(), "module", ()).unwrap(); + + let key = H256::random().as_bytes().to_vec(); + + // create post request object + let get = Get { + dest: StateMachine::Polkadot(2000), + source: StateMachine::Ethereum(Ethereum::ExecutionLayer), + nonce: 0, + from: destination.as_bytes().to_vec(), + keys: vec![key.clone()], + timeout_timestamp: 100, + gas_limit: 0, + height: 0, + }; + + let request = Request::Get(get.clone()); + let request_commitment = hash_request::(&request); + let (root, proof) = generate_proof(request_commitment, key.clone()); + + // create intermediate state + let height = + abi::StateMachineHeight { state_machine_id: U256::from(2000), height: U256::from(1) }; + let consensus_proof = abi::IntermediateState { + state_machine_id: height.state_machine_id, + height: height.height, + commitment: abi::StateCommitment { + timestamp: U256::from(20000), + overlay_root: [0u8; 32], + state_root: root.0, + }, + } + .encode(); + + let mut sol_get = abi::GetRequest { + source: get.source.to_string().as_bytes().to_vec().into(), + dest: get.dest.to_string().as_bytes().to_vec().into(), + nonce: get.nonce, + keys: get.keys.into_iter().map(Into::into).collect(), + from: get.from.into(), + timeout_timestamp: get.timeout_timestamp, + gaslimit: get.gas_limit, + height: get.height, + }; + + let message = abi::GetResponseMessage { + proof: proof.into_iter().map(Into::into).collect(), + height, + requests: vec![sol_get.clone()], + }; + + sol_get.timeout_timestamp -= 1; + + // execute the test + execute_single::<(), _>( + &mut contract, + address.clone(), + "GetResponseNoChallengeNoTimeout", + (Token::Bytes(consensus_proof), sol_get.into_token(), message.into_token()), + ) + .unwrap(); +} diff --git a/evm/forge/src/tests/get_timeout.rs b/evm/forge/src/tests/get_timeout.rs new file mode 100644 index 000000000..67005ab4b --- /dev/null +++ b/evm/forge/src/tests/get_timeout.rs @@ -0,0 +1 @@ +#![cfg(test)] diff --git a/evm/forge/src/tests/post_request.rs b/evm/forge/src/tests/post_request.rs new file mode 100644 index 000000000..21ef1296d --- /dev/null +++ b/evm/forge/src/tests/post_request.rs @@ -0,0 +1,103 @@ +#![cfg(test)] + +use crate::{ + abi, + forge::{execute_single, single_runner}, + runner, unwrap_hash, Mmr, +}; +use ethers::{ + abi::{AbiEncode, Token, Tokenizable}, + core::types::U256, +}; +use foundry_evm::Address; +use ismp::{ + host::{Ethereum, StateMachine}, + router::{Post, Request}, +}; +use ismp::mmr::{DataOrHash, Leaf}; +use merkle_mountain_range_labs::mmr_position_to_k_index; +use primitive_types::H256; + +#[tokio::test(flavor = "multi_thread")] +async fn test_post_request_proof() { + let mut runner = runner(); + let (mut contract, address) = single_runner(&mut runner, "PostRequestTest").await; + let destination = + execute_single::(&mut contract, address.clone(), "module", ()).unwrap(); + + // create post request object + let post = Post { + source: StateMachine::Polkadot(2000), + dest: StateMachine::Ethereum(Ethereum::ExecutionLayer), + nonce: 0, + from: contract.sender.as_bytes().to_vec(), + to: destination.as_bytes().to_vec(), + timeout_timestamp: 100, + + data: vec![], + gas_limit: 0, + }; + let request = DataOrHash::Data(Leaf::Request(Request::Post(post.clone()))); + + // create the mmr tree and insert it + let mut mmr = Mmr::default(); + + for _ in 0..30 { + let hash = H256::random(); + mmr.push(DataOrHash::Hash(hash)).unwrap(); + } + + let pos = mmr.push(request.clone()).unwrap(); + + for _ in 0..30 { + let hash = H256::random(); + mmr.push(DataOrHash::Hash(hash)).unwrap(); + } + + let k_index = mmr_position_to_k_index(vec![pos], mmr.mmr_size())[0].1; + + let proof = mmr.gen_proof(vec![pos]).unwrap(); + let overlay_root = unwrap_hash(&mmr.get_root().unwrap()); + let multiproof = proof.proof_items().iter().map(unwrap_hash).collect(); + + // create intermediate state + let height = + abi::StateMachineHeight { state_machine_id: U256::from(2000), height: U256::from(1) }; + let consensus_proof = abi::IntermediateState { + state_machine_id: height.state_machine_id, + height: height.height, + commitment: abi::StateCommitment { + timestamp: U256::from(20000), + overlay_root, + state_root: [0u8; 32], + }, + } + .encode(); + + let message = abi::PostRequestMessage { + proof: abi::Proof { height, multiproof, leaf_count: (61).into() }, + requests: vec![abi::PostRequestLeaf { + request: abi::PostRequest { + source: post.source.to_string().as_bytes().to_vec().into(), + dest: post.dest.to_string().as_bytes().to_vec().into(), + nonce: post.nonce, + from: post.from.into(), + to: post.to.into(), + timeout_timestamp: post.timeout_timestamp, + body: post.data.into(), + gaslimit: post.gas_limit, + }, + index: 30.into(), + k_index: k_index.into(), + }], + }; + + // execute the test + execute_single::<(), _>( + &mut contract, + address.clone(), + "PostRequestNoChallengeNoTimeout", + (Token::Bytes(consensus_proof), message.into_token()), + ) + .unwrap(); +} diff --git a/evm/forge/src/tests/post_response.rs b/evm/forge/src/tests/post_response.rs new file mode 100644 index 000000000..a291b535f --- /dev/null +++ b/evm/forge/src/tests/post_response.rs @@ -0,0 +1,108 @@ +#![cfg(test)] + +use crate::{ + abi, + forge::{execute_single, single_runner}, + runner, unwrap_hash, Mmr, +}; +use ethers::{ + abi::{AbiEncode, Token, Tokenizable}, + core::types::U256, +}; +use foundry_evm::Address; +use ismp::{ + host::{Ethereum, StateMachine}, + router::{Post, PostResponse, Response}, +}; +use ismp::mmr::{DataOrHash, Leaf}; +use merkle_mountain_range_labs::mmr_position_to_k_index; +use primitive_types::H256; + +#[tokio::test(flavor = "multi_thread")] +async fn test_post_response_proof() { + let mut runner = runner(); + let (mut contract, address) = single_runner(&mut runner, "PostResponseTest").await; + let module = + execute_single::(&mut contract, address.clone(), "module", ()).unwrap(); + + // create post request object + let post = Post { + source: StateMachine::Ethereum(Ethereum::ExecutionLayer), + dest: StateMachine::Polkadot(2000), + nonce: 0, + from: module.as_bytes().to_vec(), + to: module.as_bytes().to_vec(), + timeout_timestamp: 30, + + data: vec![2u8; 32], + gas_limit: 100, + }; + + let post_response = PostResponse { post: post.clone(), response: vec![1u8; 64] }; + + let response = DataOrHash::Data(Leaf::Response(Response::Post(post_response.clone()))); + + // create the mmr tree and insert it + let mut mmr = Mmr::default(); + let leaf_count = 30; + + for _ in 0..leaf_count { + let hash = H256::random(); + mmr.push(DataOrHash::Hash(hash)).unwrap(); + } + + let pos = mmr.push(response).unwrap(); + let k_index = mmr_position_to_k_index(vec![pos], mmr.mmr_size())[0].1; + + let proof = mmr.gen_proof(vec![pos]).unwrap(); + let overlay_root = unwrap_hash(&mmr.get_root().unwrap()); + let multiproof = proof.proof_items().iter().map(unwrap_hash).collect(); + + // create intermediate state + let height = + abi::StateMachineHeight { state_machine_id: U256::from(2000), height: U256::from(1) }; + let consensus_proof = abi::IntermediateState { + state_machine_id: height.state_machine_id, + height: height.height, + commitment: abi::StateCommitment { + timestamp: U256::from(20000), + overlay_root, + state_root: [0u8; 32], + }, + } + .encode(); + + let mut sol_post = abi::PostRequest { + source: post.source.to_string().as_bytes().to_vec().into(), + dest: post.dest.to_string().as_bytes().to_vec().into(), + nonce: post.nonce, + from: post.from.into(), + to: post.to.into(), + timeout_timestamp: post.timeout_timestamp, + body: post.data.into(), + gaslimit: post.gas_limit, + }; + + let message = abi::PostResponseMessage { + proof: abi::Proof { height, multiproof, leaf_count: (leaf_count + 1).into() }, + responses: vec![abi::PostResponseLeaf { + response: abi::PostResponse { + request: sol_post.clone(), + response: post_response.response.into(), + }, + index: 30.into(), + k_index: k_index.into(), + }], + }; + + sol_post.timeout_timestamp -= 1; + + // execute the test + execute_single::<(), _>( + &mut contract, + address.clone(), + "PostResponseNoChallengeNoTimeout", + (Token::Bytes(consensus_proof), sol_post.into_token(), message.into_token()), + ) + .unwrap(); +} diff --git a/evm/forge/src/tests/post_timeout.rs b/evm/forge/src/tests/post_timeout.rs new file mode 100644 index 000000000..77af03189 --- /dev/null +++ b/evm/forge/src/tests/post_timeout.rs @@ -0,0 +1,167 @@ +#![cfg(test)] + +use crate::{ + abi, + forge::{execute_single, single_runner}, + runner, Keccak256, +}; +use ethers::{ + abi::{AbiEncode, Token, Tokenizable}, + core::types::U256, +}; +use foundry_evm::Address; +use hex_literal::hex; +use ismp::{ + host::{Ethereum, StateMachine}, + router::{Post, Request}, + util::hash_request, +}; +use primitive_types::H256; +use sp_core::KeccakHasher; +use sp_trie::{HashDBT, LayoutV0, MemoryDB, StorageProof, TrieDBBuilder, EMPTY_PREFIX}; +use std::collections::{BTreeMap, HashSet}; +use trie_db::{Recorder, Trie, TrieDBMutBuilder, TrieMut}; + +#[tokio::test(flavor = "multi_thread")] +async fn test_post_timeout_proof() { + let mut runner = runner(); + let (mut contract, address) = single_runner(&mut runner, "PostTimeoutTest").await; + let module = + execute_single::(&mut contract, address.clone(), "module", ()).unwrap(); + + let storage_prefix = + hex!("103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a").to_vec(); + + // create post request object + let post = Post { + source: StateMachine::Ethereum(Ethereum::ExecutionLayer), + dest: StateMachine::Polkadot(2000), + nonce: 0, + from: module.as_bytes().to_vec(), + to: module.as_bytes().to_vec(), + timeout_timestamp: 10000, + data: vec![], + gas_limit: 0, + }; + let mut key = storage_prefix.clone(); + key.extend_from_slice(hash_request::(&Request::Post(post.clone())).as_ref()); + + let entries = (1..50) + .into_iter() + .map(|_| { + let mut key = storage_prefix.clone(); + key.extend_from_slice(&H256::random().0.to_vec()); + (key, H256::random().0.to_vec()) + }) + .collect::>(); + + let (root, proof) = generate_proof(entries.clone(), vec![key.clone()]); + + let storage_proof = StorageProof::new(proof.clone().into_iter()); + let result = read_proof_check(&root, storage_proof, vec![key.as_slice()]).unwrap(); + + // The value should be None since it's a None membership proof + assert!(result.get(&key).unwrap().is_none()); + + // create intermediate state + let height = + abi::StateMachineHeight { state_machine_id: U256::from(2000), height: U256::from(1) }; + let consensus_proof = abi::IntermediateState { + state_machine_id: height.state_machine_id, + height: height.height, + commitment: abi::StateCommitment { + timestamp: U256::from(20000), + overlay_root: [0u8; 32], + state_root: root.0, + }, + } + .encode(); + + let mut sol_post = abi::PostRequest { + source: post.source.to_string().as_bytes().to_vec().into(), + dest: post.dest.to_string().as_bytes().to_vec().into(), + nonce: post.nonce, + from: post.from.into(), + to: post.to.into(), + timeout_timestamp: post.timeout_timestamp, + body: post.data.into(), + gaslimit: post.gas_limit, + }; + + let message = abi::PostTimeoutMessage { + proof: proof.into_iter().map(|node| node.into()).collect(), + timeouts: vec![sol_post.clone()], + height, + }; + sol_post.timeout_timestamp -= 1; + + // execute the test + execute_single::<(), _>( + &mut contract, + address.clone(), + "PostTimeoutNoChallenge", + (Token::Bytes(consensus_proof), sol_post.into_token(), message.into_token()), + ) + .unwrap(); +} + +fn generate_proof(entries: Vec<(Vec, Vec)>, keys: Vec>) -> (H256, Vec>) { + // Populate DB with full trie from entries. + let (db, root) = { + let mut db = >::default(); + let mut root = Default::default(); + { + let mut trie = + TrieDBMutBuilder::>::new(&mut db, &mut root).build(); + for (key, value) in &entries { + trie.insert(key, &value).unwrap(); + } + } + (db, root) + }; + + // Generate proof for the given keys.. + let proof = { + let mut recorder = Recorder::>::new(); + let trie_db = TrieDBBuilder::>::new(&db, &root) + .with_recorder(&mut recorder) + .build(); + + // try to get the keys we need from the trie + for key in &keys { + let _ = trie_db.get(key).unwrap(); + } + + let proof = recorder.drain().into_iter().map(|f| f.data).collect::>(); + + proof.into_iter().collect::>() + }; + + (root, proof) +} + +pub fn read_proof_check( + root: &H256, + proof: StorageProof, + keys: I, +) -> Result, Option>>, ()> +where + I: IntoIterator, + I::Item: AsRef<[u8]>, +{ + let db = proof.into_memory_db::(); + + if !db.contains(root, EMPTY_PREFIX) { + Err(())? + } + + let trie = TrieDBBuilder::>::new(&db, root).build(); + let mut result = BTreeMap::new(); + + for key in keys.into_iter() { + let value = trie.get(key.as_ref()).map_err(|_| ())?; + result.insert(key.as_ref().to_vec(), value); + } + + Ok(result) +} diff --git a/evm/foundry.toml b/evm/foundry.toml new file mode 100644 index 000000000..aead1fcc9 --- /dev/null +++ b/evm/foundry.toml @@ -0,0 +1,16 @@ +[profile.default] +src = "src" +out = "out" +libs = ["lib"] + +[rpc_endpoints] +goerli = "${GOERLI_RPC_URL}" +optimism-goerli = "${OPTIMISM_GOERLI_RPC_URL}" +arbitrum-goerli = "${ARBITRUM_GOERLI_RPC_URL}" +base-goerli = "${BASE_GOERLI_RPC_URL}" + +[etherscan] +goerli = { key = "${GOERLI_ETHERSCAN_API_KEY}" } +optimism-goerli = { key = "${OPTIMISM_ETHERSCAN_API_KEY}", chain = 420, url = "https://api-goerli-optimistic.etherscan.io/api" } +arbitrum-goerli = { key = "${ARBITRUM_ETHERSCAN_API_KEY}", chain = 421613, url = "https://api-goerli.arbiscan.io/api" } +base-goerli = { key = "${BASE_ETHERSCAN_API_KEY}", chain = 84531, url = "https://api-goerli.basescan.org/api" } diff --git a/evm/lib/forge-std b/evm/lib/forge-std new file mode 160000 index 000000000..a2edd39db --- /dev/null +++ b/evm/lib/forge-std @@ -0,0 +1 @@ +Subproject commit a2edd39db95df7e9dd3f9ef9edc8c55fefddb6df diff --git a/evm/lib/ismp-solidity b/evm/lib/ismp-solidity new file mode 160000 index 000000000..400265c7d --- /dev/null +++ b/evm/lib/ismp-solidity @@ -0,0 +1 @@ +Subproject commit 400265c7dd7bebe6aff0ee4d27b694527a409d51 diff --git a/evm/lib/multi-chain-tokens b/evm/lib/multi-chain-tokens new file mode 160000 index 000000000..b41cbbe89 --- /dev/null +++ b/evm/lib/multi-chain-tokens @@ -0,0 +1 @@ +Subproject commit b41cbbe89651de9a993220d0e6bbf74194bf9e20 diff --git a/evm/lib/openzeppelin-contracts b/evm/lib/openzeppelin-contracts new file mode 160000 index 000000000..54b3f1434 --- /dev/null +++ b/evm/lib/openzeppelin-contracts @@ -0,0 +1 @@ +Subproject commit 54b3f14346da01ba0d159114b399197fea8b7cda diff --git a/evm/lib/solidity-merkle-trees b/evm/lib/solidity-merkle-trees new file mode 160000 index 000000000..f637bb083 --- /dev/null +++ b/evm/lib/solidity-merkle-trees @@ -0,0 +1 @@ +Subproject commit f637bb083eb6bdef3daee016e300a56800c2725e diff --git a/evm/remappings.txt b/evm/remappings.txt new file mode 100644 index 000000000..af92a6b6f --- /dev/null +++ b/evm/remappings.txt @@ -0,0 +1,4 @@ +ismp/=lib/ismp-solidity/src/ +openzeppelin/=lib/openzeppelin-contracts/contracts/ +solidity-merkle-trees/=lib/solidity-merkle-trees/src/ +multi-chain-tokens/=lib/multi-chain-tokens/src/ \ No newline at end of file diff --git a/evm/script/DeployGateway.s.sol b/evm/script/DeployGateway.s.sol new file mode 100644 index 000000000..6a7e29904 --- /dev/null +++ b/evm/script/DeployGateway.s.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "forge-std/Script.sol"; +import "multi-chain-tokens/tokens/ERC20.sol"; + +import "../src/modules/TokenGateway.sol"; +import "../src/modules/TokenFaucet.sol"; + +contract DeployScript is Script { + bytes32 public salt = keccak256(bytes("gargantuan_v0")); + + address public GOERLI_HOST = 0x4a23BF364332dC8d8Dd81552466c7d267D20e988; + address public ARB_GOERLI_HOST = 0xb58F8D53c8e55345d3A620094670B0C3892a097b; + address public OP_GOERLI_HOST = 0x4e74812F70A40328F3703740F03cE8d6208f0CEC; + address public BASE_GOERLI_HOST = 0x9ff290c1650423EF5BA96eE066604Ca4c457C79C; + + bytes32 public constant MINTER_ROLE = keccak256("MINTER ROLE"); + bytes32 public constant BURNER_ROLE = keccak256("BURNER ROLE"); + + function run() external { + address admin = vm.envAddress("ADMIN"); + bytes32 privateKey = vm.envBytes32("PRIVATE_KEY"); + + vm.createSelectFork("goerli"); + vm.startBroadcast(uint256(privateKey)); + deployGateway(GOERLI_HOST, admin); + vm.stopBroadcast(); + + vm.createSelectFork("arbitrum-goerli"); + vm.startBroadcast(uint256(privateKey)); + deployGateway(ARB_GOERLI_HOST, admin); + vm.stopBroadcast(); + + vm.createSelectFork("optimism-goerli"); + vm.startBroadcast(uint256(privateKey)); + deployGateway(OP_GOERLI_HOST, admin); + vm.stopBroadcast(); + + vm.createSelectFork("base-goerli"); + vm.startBroadcast(uint256(privateKey)); + deployGateway(BASE_GOERLI_HOST, admin); + vm.stopBroadcast(); + } + + function deployGateway(address host, address admin) public { + MultiChainNativeERC20 t = new MultiChainNativeERC20{ salt: salt }(admin, "Hyperbridge Test Token", "CORE"); + + TokenGateway gateway = new TokenGateway{ salt: salt }(admin); + gateway.setIsmpHost(host); + t.grantRole(MINTER_ROLE, address(gateway)); + t.grantRole(BURNER_ROLE, address(gateway)); + + TokenFaucet faucet = new TokenFaucet{salt: salt}(address(t)); + t.grantRole(MINTER_ROLE, address(faucet)); + } +} diff --git a/evm/script/DeployIsmp.s.sol b/evm/script/DeployIsmp.s.sol new file mode 100644 index 000000000..65457607f --- /dev/null +++ b/evm/script/DeployIsmp.s.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.13; + +import "forge-std/Script.sol"; +import "openzeppelin/utils/Strings.sol"; + +import "ismp/HandlerV1.sol"; +import "ismp/EvmHost.sol"; +import "ismp/modules/CrossChainGovernor.sol"; + +import "../src/beefy/BeefyV1.sol"; +import "../src/hosts/Ethereum.sol"; +import "../src/hosts/Arbitrum.sol"; +import "../src/hosts/Optimism.sol"; +import "../src/hosts/Base.sol"; + +contract DeployScript is Script { + bytes32 public salt = keccak256(bytes("gargantuan_v0")); + + function run() external { + address admin = vm.envAddress("ADMIN"); + uint256 paraId = vm.envUint("PARA_ID"); + string memory host = vm.envString("HOST"); + bytes32 privateKey = vm.envBytes32("PRIVATE_KEY"); + vm.startBroadcast(uint256(privateKey)); + + // consensus client + BeefyV1 consensusClient = new BeefyV1{salt: salt}(paraId); + // handler + HandlerV1 handler = new HandlerV1{salt: salt}(); + // cross-chain governor + GovernorParams memory gParams = GovernorParams({admin: admin, host: address(0), paraId: paraId}); + CrossChainGovernor governor = new CrossChainGovernor{salt: salt}(gParams); + // EvmHost + HostParams memory params = HostParams({ + admin: admin, + crosschainGovernor: address(governor), + handler: address(handler), + // 45 mins + defaultTimeout: 45 * 60, + // 21 days + unStakingPeriod: 21 * (60 * 60 * 24), + // for this test + challengePeriod: 0, + consensusClient: address(consensusClient), + lastUpdated: 0, + consensusState: new bytes(0) + }); + address hostAddress = initHost(host, params); + // set the ismphost on the cross-chain governor + governor.setIsmpHost(hostAddress); + // deploy the ping module as well + // PingModule m = new PingModule{salt: salt}(hostAddress); + vm.stopBroadcast(); + } + + function initHost(string memory host, HostParams memory params) public returns (address) { + if (Strings.equal(host, "goerli") || Strings.equal(host, "ethereum")) { + EthereumHost host = new EthereumHost{salt: salt}(params); + return address(host); + } else if (Strings.equal(host, "arbitrum-goerli")) { + ArbitrumHost host = new ArbitrumHost{salt: salt}(params); + return address(host); + } else if (Strings.equal(host, "optimism-goerli")) { + OptimismHost host = new OptimismHost{salt: salt}(params); + return address(host); + } else if (Strings.equal(host, "base-goerli")) { + BaseHost host = new BaseHost{salt: salt}(params); + return address(host); + } + + revert("unknown host"); + } +} diff --git a/evm/script/README.md b/evm/script/README.md new file mode 100644 index 000000000..5acaf1963 --- /dev/null +++ b/evm/script/README.md @@ -0,0 +1,20 @@ +# How to deploy + +Ensure you have a local beacon chain testnet running, see [polytope-labs/eth-pos-devnet](https://github.com/polytope-labs/eth-pos-devnet). + +Fill out an `.env` file at the root of this repo with the given contents. + +```dotenv +export ADMIN=0x123463a4B065722E99115D6c222f267d9cABb524 +export PARA_ID=2000 +export GOERLI_RPC_URL=http://127.0.0.1:8545 +export PRIVATE_KEY=2e0834786285daccd064ca17f1654f67b4aef298acbb82cef9ec422fb4975622 +``` + +The given private key is for the prefunded `0x123463a4B065722E99115D6c222f267d9cABb524` account in the devnet. + +Run the command below to deploy + +```shell +./scripts/deploy.sh {local|goerli|optimism-goerli|arbitrum-goerli|base-goerli} +``` diff --git a/evm/script/deploy.sh b/evm/script/deploy.sh new file mode 100755 index 000000000..fd1080e67 --- /dev/null +++ b/evm/script/deploy.sh @@ -0,0 +1,15 @@ +if [ "$1" = "local" ]; then + echo "Deploying locally" + # load local .env + source .env + # deploy + HOST="ethereum" forge script script/DeployIsmp.s.sol:DeployScript --rpc-url "$GOERLI_RPC_URL" --broadcast -vvvv --sender="$ADMIN" +else + echo "Deploying to $1" + # load prod .env + source .env.prod + # deploy + HOST=$1 forge script script/DeployIsmp.s.sol:DeployScript --rpc-url "$1" --broadcast -vvvv --sender="$ADMIN" + # verify + HOST=$1 forge script script/DeployIsmp.s.sol:DeployScript --rpc-url "$1" --resume --verify -vvvv --sender="$ADMIN" +fi \ No newline at end of file diff --git a/evm/src/EvmHost.sol b/evm/src/EvmHost.sol new file mode 100644 index 000000000..952c75b79 --- /dev/null +++ b/evm/src/EvmHost.sol @@ -0,0 +1,488 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "openzeppelin/utils/Context.sol"; +import "openzeppelin/utils/math/Math.sol"; + +import "ismp/interfaces/IIsmpModule.sol"; +import "ismp/interfaces/IIsmpHost.sol"; +import "ismp/interfaces/IHandler.sol"; + +struct HostParams { + // default timeout in seconds for requests. + uint256 defaultTimeout; + // timestamp for when the consensus was most recently updated + uint256 lastUpdated; + // unstaking period + uint256 unStakingPeriod; + // minimum challenge period in seconds; + uint256 challengePeriod; + // consensus client contract + address consensusClient; + // admin account, this only has the rights to freeze, or unfreeze the bridge + address admin; + // Ismp request/response handler + address handler; + // the authorized cross-chain governor contract + address crosschainGovernor; + // current verified state of the consensus client; + bytes consensusState; +} + +/// Ismp implementation for Evm hosts +abstract contract EvmHost is IIsmpHost, Context { + using Bytes for bytes; + + // commitment of all outgoing requests + mapping(bytes32 => bool) private _requestCommitments; + + // commitment of all outgoing responses + mapping(bytes32 => bool) private _responseCommitments; + + // commitment of all incoming requests + mapping(bytes32 => bool) private _requestReceipts; + + // commitment of all incoming responses + mapping(bytes32 => bool) private _responseReceipts; + + // (stateMachineId => (blockHeight => StateCommitment)) + mapping(uint256 => mapping(uint256 => StateCommitment)) private _stateCommitments; + + // (stateMachineId => (blockHeight => timestamp)) + mapping(uint256 => mapping(uint256 => uint256)) private _stateCommitmentsUpdateTime; + + uint256 private _latestStateMachineHeight; + + // Parameters for the host + HostParams private _hostParams; + + // monotonically increasing nonce for outgoing requests + uint256 private _nonce; + + // emergency shutdown button, only the admin can do this + bool private _frozen; + + event PostResponseEvent( + bytes source, + bytes dest, + bytes from, + bytes to, + uint256 indexed nonce, + uint256 timeoutTimestamp, + bytes data, + uint256 gaslimit, + bytes response + ); + + event PostRequestEvent( + bytes source, + bytes dest, + bytes from, + bytes to, + uint256 indexed nonce, + uint256 timeoutTimestamp, + bytes data, + uint256 gaslimit + ); + + event GetRequestEvent( + bytes source, + bytes dest, + bytes from, + bytes[] keys, + uint256 indexed nonce, + uint256 height, + uint256 timeoutTimestamp, + uint256 gaslimit + ); + + modifier onlyAdmin() { + require(_msgSender() == _hostParams.admin, "EvmHost: Only admin"); + _; + } + + modifier onlyHandler() { + require(_msgSender() == address(_hostParams.handler), "EvmHost: Only handler"); + _; + } + + modifier onlyGovernance() { + require(_msgSender() == _hostParams.crosschainGovernor, "EvmHost: Only governor contract"); + _; + } + + constructor(HostParams memory params) { + _hostParams = params; + } + + /** + * @return the host admin + */ + function admin() external view returns (address) { + return _hostParams.admin; + } + + /** + * @return the host state machine id + */ + function host() public virtual returns (bytes memory); + + /** + * @return the host timestamp + */ + function timestamp() public view returns (uint256) { + return block.timestamp; + } + + /** + * @return the `frozen` status + */ + function frozen() public view returns (bool) { + return _frozen; + } + + /** + * @param height - state machine height + * @return the state commitment at `height` + */ + function stateMachineCommitment(StateMachineHeight memory height) external view returns (StateCommitment memory) { + return _stateCommitments[height.stateMachineId][height.height]; + } + + /** + * @param height - state machine height + * @return the state machine update time at `height` + */ + function stateMachineCommitmentUpdateTime(StateMachineHeight memory height) external view returns (uint256) { + return _stateCommitmentsUpdateTime[height.stateMachineId][height.height]; + } + + /** + * @dev Should return a handle to the consensus client based on the id + * @return the consensus client contract + */ + function consensusClient() external view returns (address) { + return _hostParams.consensusClient; + } + + /** + * @return the last updated time of the consensus client + */ + function consensusUpdateTime() external view returns (uint256) { + return _hostParams.lastUpdated; + } + + /** + * @return the state of the consensus client + */ + function consensusState() external view returns (bytes memory) { + return _hostParams.consensusState; + } + + /** + * @param commitment - commitment to the request + * @return existence status of an incoming request commitment + */ + function requestReceipts(bytes32 commitment) external view returns (bool) { + return _requestReceipts[commitment]; + } + + /** + * @param commitment - commitment to the response + * @return existence status of an incoming response commitment + */ + function responseReceipts(bytes32 commitment) external view returns (bool) { + return _responseReceipts[commitment]; + } + + /** + * @param commitment - commitment to the request + * @return existence status of an outgoing request commitment + */ + function requestCommitments(bytes32 commitment) external view returns (bool) { + return _requestCommitments[commitment]; + } + + /** + * @param commitment - commitment to the response + * @return existence status of an outgoing response commitment + */ + function responseCommitments(bytes32 commitment) external view returns (bool) { + return _responseCommitments[commitment]; + } + + /** + * @return the challenge period + */ + function challengePeriod() external view returns (uint256) { + return _hostParams.challengePeriod; + } + + /** + * @return the latest state machine height + */ + function latestStateMachineHeight() external returns (uint256) { + return _latestStateMachineHeight; + } + + /** + * @dev Updates bridge params + * @param params new bridge params + */ + function setBridgeParams(BridgeParams memory params) external onlyGovernance { + _hostParams.challengePeriod = params.challengePeriod; + _hostParams.consensusClient = params.consensus; + _hostParams.unStakingPeriod = params.unstakingPeriod; + + _hostParams.admin = params.admin; + _hostParams.defaultTimeout = params.defaultTimeout; + _hostParams.handler = params.handler; + } + + /** + * @dev Store an encoded consensus state + */ + function storeConsensusState(bytes memory state) external onlyHandler { + _hostParams.consensusState = state; + } + + /** + * @dev Store the timestamp when the consensus client was updated + */ + function storeConsensusUpdateTime(uint256 time) external onlyHandler { + _hostParams.lastUpdated = time; + } + + /** + * @dev Store the latest state machine height + * @param height State Machine Latest Height + */ + function storeLatestStateMachineHeight(uint256 height) external onlyHandler { + _latestStateMachineHeight = height; + } + + /** + * @dev Store the commitment at `state height` + */ + function storeStateMachineCommitment(StateMachineHeight memory height, StateCommitment memory commitment) + external + onlyHandler + { + _stateCommitments[height.stateMachineId][height.height] = commitment; + } + + /** + * @dev Store the timestamp when the state machine was updated + */ + function storeStateMachineCommitmentUpdateTime(StateMachineHeight memory height, uint256 time) + external + onlyHandler + { + _stateCommitmentsUpdateTime[height.stateMachineId][height.height] = time; + } + + /** + * @dev set the new state of the bridge + * @param newState new state + */ + function setFrozenState(bool newState) public onlyAdmin { + _frozen = newState; + } + + /** + * @dev sets the initial consensus state + * @param consensusState initial consensus state + */ + function setConsensusState(bytes memory consensusState) public onlyAdmin { + require(_hostParams.consensusState.equals(new bytes(0)), "Unauthorized action"); + + _hostParams.consensusState = consensusState; + } + + /** + * @return the unstaking period + */ + function unStakingPeriod() public view returns (uint256) { + return _hostParams.unStakingPeriod; + } + + /** + * @dev Dispatch an incoming post request to destination module + * @param request - post request + */ + function dispatchIncoming(PostRequest memory request) external onlyHandler { + address destination = _bytesToAddress(request.to); + IIsmpModule(destination).onAccept(request); + + bytes32 commitment = Message.hash(request); + _requestReceipts[commitment] = true; + } + + /** + * @dev Dispatch an incoming post response to source module + * @param response - post response + */ + function dispatchIncoming(PostResponse memory response) external onlyHandler { + address origin = _bytesToAddress(response.request.from); + IIsmpModule(origin).onPostResponse(response); + + bytes32 commitment = Message.hash(response); + _responseReceipts[commitment] = true; + } + + /** + * @dev Dispatch an incoming get response to source module + * @param response - get response + */ + function dispatchIncoming(GetResponse memory response) external onlyHandler { + address origin = _bytesToAddress(response.request.from); + IIsmpModule(origin).onGetResponse(response); + + bytes32 commitment = Message.hash(response); + _responseReceipts[commitment] = true; + } + + /** + * @dev Dispatch an incoming get timeout to source module + * @param request - get request + */ + function dispatchIncoming(GetRequest memory request) external onlyHandler { + address origin = _bytesToAddress(request.from); + IIsmpModule(origin).onGetTimeout(request); + + // Delete Commitment + bytes32 commitment = Message.hash(request); + delete _requestCommitments[commitment]; + } + + /** + * @dev Dispatch an incoming post timeout to source module + * @param timeout - post timeout + */ + function dispatchIncoming(PostTimeout memory timeout) external onlyHandler { + PostRequest memory request = timeout.request; + address origin = _bytesToAddress(request.from); + IIsmpModule(origin).onPostTimeout(request); + + // Delete Commitment + bytes32 commitment = Message.hash(request); + delete _requestCommitments[commitment]; + } + + /** + * @dev Dispatch a post request to the hyperbridge + * @param request - post dispatch request + */ + function dispatch(DispatchPost memory request) external { + uint64 timeout = request.timeout == 0 + ? 0 + : uint64(this.timestamp()) + uint64(Math.max(_hostParams.defaultTimeout, request.timeout)); + PostRequest memory _request = PostRequest({ + source: host(), + dest: request.dest, + nonce: uint64(_nextNonce()), + from: abi.encodePacked(_msgSender()), + to: request.to, + timeoutTimestamp: timeout, + body: request.body, + gaslimit: request.gaslimit + }); + + // make the commitment + bytes32 commitment = Message.hash(_request); + _requestCommitments[commitment] = true; + + emit PostRequestEvent( + _request.source, + _request.dest, + _request.from, + abi.encodePacked(_request.to), + _request.nonce, + _request.timeoutTimestamp, + _request.body, + _request.gaslimit + ); + } + + /** + * @dev Dispatch a get request to the hyperbridge + * @param request - get dispatch request + */ + function dispatch(DispatchGet memory request) external { + uint64 timeout = uint64(this.timestamp()) + uint64(Math.max(_hostParams.defaultTimeout, request.timeout)); + GetRequest memory _request = GetRequest({ + source: host(), + dest: request.dest, + nonce: uint64(_nextNonce()), + from: abi.encodePacked(_msgSender()), + timeoutTimestamp: timeout, + keys: request.keys, + height: request.height, + gaslimit: request.gaslimit + }); + + // make the commitment + bytes32 commitment = Message.hash(_request); + _requestCommitments[commitment] = true; + + emit GetRequestEvent( + _request.source, + _request.dest, + _request.from, + _request.keys, + _request.nonce, + request.height, + _request.timeoutTimestamp, + request.gaslimit + ); + } + + /** + * @dev Dispatch a response to the hyperbridge + * @param response - post response + */ + function dispatch(PostResponse memory response) external { + bytes32 receipt = Message.hash(response.request); + require(_requestReceipts[receipt], "EvmHost: unknown request"); + + bytes32 commitment = Message.hash(response); + _responseCommitments[commitment] = true; + + emit PostResponseEvent( + response.request.source, + response.request.dest, + response.request.from, + abi.encodePacked(response.request.to), + response.request.nonce, + response.request.timeoutTimestamp, + response.request.body, + response.request.gaslimit, + response.response + ); + } + + /** + * @dev Get next available nonce for outgoing requests. + */ + function _nextNonce() private returns (uint256) { + uint256 _nonce_copy = _nonce; + + unchecked { + ++_nonce; + } + + return _nonce_copy; + } + + /** + * @dev Converts bytes to address. + * @param _bytes bytes value to be converted + * @return addr returns the address + */ + function _bytesToAddress(bytes memory _bytes) private pure returns (address addr) { + require(_bytes.length >= 20, "Invalid address length"); + assembly { + addr := mload(add(_bytes, 20)) + } + } +} diff --git a/evm/src/HandlerV1.sol b/evm/src/HandlerV1.sol new file mode 100644 index 000000000..4d8ea3959 --- /dev/null +++ b/evm/src/HandlerV1.sol @@ -0,0 +1,227 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "solidity-merkle-trees/MerkleMountainRange.sol"; +import "solidity-merkle-trees/MerklePatricia.sol"; +import "openzeppelin/utils/Context.sol"; + +import "ismp/interfaces/IConsensusClient.sol"; +import "ismp/interfaces/IHandler.sol"; +import "ismp/interfaces/IIsmpHost.sol"; + +contract HandlerV1 is IHandler, Context { + using Bytes for bytes; + + modifier notFrozen(IIsmpHost host) { + require(!host.frozen(), "IHandler: frozen"); + _; + } + + // Storage prefix for request receipts in pallet-ismp + bytes private constant REQUEST_COMMITMENT_STORAGE_PREFIX = + hex"103895530afb23bb607661426d55eb8b0484aecefe882c3ce64e6f82507f715a"; + + event StateMachineUpdated(uint256 stateMachineId, uint256 height); + + /** + * @dev Handle incoming consensus messages + * @param host - Ismp host + * @param proof - consensus proof + */ + function handleConsensus(IIsmpHost host, bytes memory proof) external notFrozen(host) { + require( + (host.timestamp() - host.consensusUpdateTime()) > host.challengePeriod(), + "IHandler: still in challenge period" + ); + + // not today, time traveling validators + require( + (host.timestamp() - host.consensusUpdateTime()) < host.unStakingPeriod() || _msgSender() == host.admin(), + "IHandler: still in challenge period" + ); + + (bytes memory verifiedState, IntermediateState memory intermediate) = + IConsensusClient(host.consensusClient()).verifyConsensus(host.consensusState(), proof); + host.storeConsensusState(verifiedState); + host.storeConsensusUpdateTime(host.timestamp()); + + if (intermediate.height > host.latestStateMachineHeight()) { + StateMachineHeight memory stateMachineHeight = + StateMachineHeight({stateMachineId: intermediate.stateMachineId, height: intermediate.height}); + host.storeStateMachineCommitment(stateMachineHeight, intermediate.commitment); + host.storeStateMachineCommitmentUpdateTime(stateMachineHeight, host.timestamp()); + host.storeLatestStateMachineHeight(stateMachineHeight.height); + + // todo: enforce challenge period + emit StateMachineUpdated({ + stateMachineId: stateMachineHeight.stateMachineId, + height: stateMachineHeight.height + }); + } + } + + /** + * @dev check request proofs, message delay and timeouts, then dispatch post requests to modules + * @param host - Ismp host + * @param request - batch post requests + */ + function handlePostRequests(IIsmpHost host, PostRequestMessage memory request) external notFrozen(host) { + uint256 delay = host.timestamp() - host.stateMachineCommitmentUpdateTime(request.proof.height); + require(delay > host.challengePeriod(), "IHandler: still in challenge period"); + + uint256 requestsLen = request.requests.length; + MmrLeaf[] memory leaves = new MmrLeaf[](requestsLen); + + for (uint256 i = 0; i < requestsLen; i++) { + PostRequestLeaf memory leaf = request.requests[i]; + + require(leaf.request.dest.equals(host.host()), "IHandler: Invalid request destination"); + require( + leaf.request.timeoutTimestamp == 0 || leaf.request.timeoutTimestamp > host.timestamp(), + "IHandler: Request timed out" + ); + + bytes32 commitment = Message.hash(leaf.request); + require(!host.requestReceipts(commitment), "IHandler: Duplicate request"); + + leaves[i] = MmrLeaf(leaf.kIndex, leaf.index, commitment); + } + + bytes32 root = host.stateMachineCommitment(request.proof.height).overlayRoot; + + require(root != bytes32(0), "IHandler: Proof height not found!"); + require( + MerkleMountainRange.VerifyProof(root, request.proof.multiproof, leaves, request.proof.leafCount), + "IHandler: Invalid request proofs" + ); + + for (uint256 i = 0; i < requestsLen; i++) { + PostRequestLeaf memory leaf = request.requests[i]; + host.dispatchIncoming(leaf.request); + } + } + + /** + * @dev check response proofs, message delay and timeouts, then dispatch post responses to modules + * @param host - Ismp host + * @param response - batch post responses + */ + function handlePostResponses(IIsmpHost host, PostResponseMessage memory response) external notFrozen(host) { + uint256 delay = host.timestamp() - host.stateMachineCommitmentUpdateTime(response.proof.height); + require(delay > host.challengePeriod(), "IHandler: still in challenge period"); + + uint256 responsesLength = response.responses.length; + MmrLeaf[] memory leaves = new MmrLeaf[](responsesLength); + + for (uint256 i = 0; i < responsesLength; i++) { + PostResponseLeaf memory leaf = response.responses[i]; + require(leaf.response.request.source.equals(host.host()), "IHandler: Invalid response destination"); + + bytes32 requestCommitment = Message.hash(leaf.response.request); + require(host.requestCommitments(requestCommitment), "IHandler: Unknown request"); + + bytes32 responseCommitment = Message.hash(leaf.response); + require(!host.responseCommitments(responseCommitment), "IHandler: Duplicate Post response"); + + leaves[i] = MmrLeaf(leaf.kIndex, leaf.index, responseCommitment); + } + + bytes32 root = host.stateMachineCommitment(response.proof.height).overlayRoot; + + require(root != bytes32(0), "IHandler: Proof height not found!"); + require( + MerkleMountainRange.VerifyProof(root, response.proof.multiproof, leaves, response.proof.leafCount), + "IHandler: Invalid response proofs" + ); + + for (uint256 i = 0; i < responsesLength; i++) { + PostResponseLeaf memory leaf = response.responses[i]; + host.dispatchIncoming(leaf.response); + } + } + + /** + * @dev check timeout proofs then dispatch to modules + * @param host - Ismp host + * @param message - batch post request timeouts + */ + function handlePostTimeouts(IIsmpHost host, PostTimeoutMessage memory message) external notFrozen(host) { + // fetch the state commitment + StateCommitment memory state = host.stateMachineCommitment(message.height); + uint256 timeoutsLength = message.timeouts.length; + + for (uint256 i = 0; i < timeoutsLength; i++) { + PostRequest memory request = message.timeouts[i]; + require( + request.timeoutTimestamp != 0 && state.timestamp > request.timeoutTimestamp, "Request not timed out" + ); + + bytes32 requestCommitment = Message.hash(request); + require(host.requestCommitments(requestCommitment), "IHandler: Unknown request"); + + bytes[] memory keys = new bytes[](1); + keys[i] = bytes.concat(REQUEST_COMMITMENT_STORAGE_PREFIX, bytes.concat(requestCommitment)); + + StorageValue memory entry = MerklePatricia.VerifySubstrateProof(state.stateRoot, message.proof, keys)[0]; + require(entry.value.equals(new bytes(0)), "IHandler: Invalid non-membership proof"); + + host.dispatchIncoming(PostTimeout(request)); + } + } + + /** + * @dev check response proofs, message delay and timeouts, then dispatch get responses to modules + * @param host - Ismp host + * @param message - batch get responses + */ + function handleGetResponses(IIsmpHost host, GetResponseMessage memory message) external notFrozen(host) { + uint256 delay = host.timestamp() - host.stateMachineCommitmentUpdateTime(message.height); + require(delay > host.challengePeriod(), "IHandler: still in challenge period"); + + StateCommitment memory stateCommitment = host.stateMachineCommitment(message.height); + bytes32 root = stateCommitment.stateRoot; + require(root != bytes32(0), "IHandler: Proof height not found!"); + + uint256 responsesLength = message.requests.length; + bytes[] memory proof = message.proof; + + for (uint256 i = 0; i < responsesLength; i++) { + GetRequest memory request = message.requests[i]; + require(request.source.equals(host.host()), "IHandler: Invalid GET response destination"); + + bytes32 requestCommitment = Message.hash(request); + require(host.requestCommitments(requestCommitment), "IHandler: Unknown GET request"); + require( + request.timeoutTimestamp == 0 || request.timeoutTimestamp > host.timestamp(), + "IHandler: GET request timed out" + ); + + StorageValue[] memory values = + MerklePatricia.ReadChildProofCheck(root, proof, request.keys, bytes.concat(requestCommitment)); + GetResponse memory response = GetResponse({request: request, values: values}); + require(!host.responseCommitments(Message.hash(response)), "IHandler: Duplicate GET response"); + host.dispatchIncoming(response); + } + } + + /** + * @dev dispatch to modules + * @param host - Ismp host + * @param message - batch get request timeouts + */ + function handleGetTimeouts(IIsmpHost host, GetTimeoutMessage memory message) external notFrozen(host) { + uint256 timeoutsLength = message.timeouts.length; + + for (uint256 i = 0; i < timeoutsLength; i++) { + GetRequest memory request = message.timeouts[i]; + bytes32 requestCommitment = Message.hash(request); + require(host.requestCommitments(requestCommitment), "IHandler: Unknown request"); + + require( + request.timeoutTimestamp != 0 && host.timestamp() > request.timeoutTimestamp, + "IHandler: GET request not timed out" + ); + host.dispatchIncoming(request); + } + } +} diff --git a/evm/src/beefy/BeefyV1.sol b/evm/src/beefy/BeefyV1.sol new file mode 100644 index 000000000..bc79b8f24 --- /dev/null +++ b/evm/src/beefy/BeefyV1.sol @@ -0,0 +1,299 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "./Codec.sol"; +import "ismp/interfaces/StateMachine.sol"; +import "ismp/interfaces/IConsensusClient.sol"; + +import "solidity-merkle-trees/MerkleMultiProof.sol"; +import "solidity-merkle-trees/MerkleMountainRange.sol"; +import "solidity-merkle-trees/MerklePatricia.sol"; +import "solidity-merkle-trees/trie/substrate/ScaleCodec.sol"; +import "solidity-merkle-trees/trie/Bytes.sol"; +import "openzeppelin/utils/cryptography/ECDSA.sol"; + +struct BeefyConsensusState { + /// block number for the latest mmr_root_hash + uint256 latestHeight; + /// Block number that the beefy protocol was activated on the relay chain. + /// This should be the first block in the merkle-mountain-range tree. + uint256 beefyActivationBlock; + /// authorities for the current round + AuthoritySetCommitment currentAuthoritySet; + /// authorities for the next round + AuthoritySetCommitment nextAuthoritySet; +} + +struct AuthoritySetCommitment { + /// Id of the set. + uint256 id; + /// Number of validators in the set. + uint256 len; + /// Merkle Root Hash built from BEEFY AuthorityIds. + bytes32 root; +} + +struct Payload { + bytes2 id; + bytes data; +} + +struct Commitment { + Payload[] payload; + uint256 blockNumber; + uint256 validatorSetId; +} + +struct Vote { + bytes signature; + uint256 authorityIndex; +} + +struct SignedCommitment { + Commitment commitment; + Vote[] votes; +} + +struct BeefyMmrLeaf { + uint256 version; + uint256 parentNumber; + bytes32 parentHash; + AuthoritySetCommitment nextAuthoritySet; + bytes32 extra; + uint256 kIndex; + uint256 leafIndex; +} + +struct PartialBeefyMmrLeaf { + uint256 version; + uint256 parentNumber; + bytes32 parentHash; + AuthoritySetCommitment nextAuthoritySet; +} + +struct RelayChainProof { + /// Signed commitment + SignedCommitment signedCommitment; + /// Latest leaf added to mmr + BeefyMmrLeaf latestMmrLeaf; + /// Proof for the latest mmr leaf + bytes32[] mmrProof; + /// Proof for authorities in current/next session + Node[][] proof; +} + +struct Parachain { + /// k-index for latestHeadsRoot + uint256 index; + /// Parachain Id + uint256 id; + /// SCALE encoded header + bytes header; +} + +struct ParachainProof { + Parachain parachain; + Node[][] proof; +} + +struct BeefyConsensusProof { + RelayChainProof relay; + ParachainProof parachain; +} + +struct ConsensusMessage { + BeefyConsensusProof proof; +} + +contract BeefyV1 is IConsensusClient { + /// Slot duration in milliseconds + uint256 public constant SLOT_DURATION = 12000; + /// The PayloadId for the mmr root. + bytes2 public constant MMR_ROOT_PAYLOAD_ID = bytes2("mh"); + /// ChainId for ethereum + bytes4 public constant ISMP_CONSENSUS_ID = bytes4("ISMP"); + /// ConsensusID for aura + bytes4 public constant AURA_CONSENSUS_ID = bytes4("aura"); + + uint256 private _paraId; + + constructor(uint256 paraId) { + _paraId = paraId; + } + + function verifyConsensus(bytes memory encodedState, bytes memory encodedProof) + external + returns (bytes memory, IntermediateState memory) + { + BeefyConsensusState memory consensusState = abi.decode(encodedState, (BeefyConsensusState)); + (RelayChainProof memory relay, ParachainProof memory parachain) = + abi.decode(encodedProof, (RelayChainProof, ParachainProof)); + + (BeefyConsensusState memory newState, IntermediateState memory intermediate) = + this.verifyConsensus(consensusState, BeefyConsensusProof(relay, parachain)); + + return (abi.encode(newState), intermediate); + } + + /// Verify the consensus proof and return the new trusted consensus state and any intermediate states finalized + /// by this consensus proof. + function verifyConsensus(BeefyConsensusState memory trustedState, BeefyConsensusProof memory proof) + external + view + returns (BeefyConsensusState memory, IntermediateState memory) + { + // verify mmr root proofs + (BeefyConsensusState memory state, bytes32 headsRoot) = verifyMmrUpdateProof(trustedState, proof.relay); + + // verify intermediate state commitment proofs + IntermediateState memory intermediate = verifyParachainHeaderProof(headsRoot, proof.parachain); + + return (state, intermediate); + } + + /// Verifies a new Mmmr root update, the relay chain accumulates its blocks into a merkle mountain range tree + /// which light clients can use as a source for log_2(n) ancestry proofs. This new mmr root hash is signed by + /// the relay chain authority set and we can verify the membership of the authorities who signed this new root + /// using a merkle multi proof and a merkle commitment to the total authorities. + function verifyMmrUpdateProof(BeefyConsensusState memory trustedState, RelayChainProof memory relayProof) + private + pure + returns (BeefyConsensusState memory, bytes32) + { + uint256 signatures_length = relayProof.signedCommitment.votes.length; + uint256 latestHeight = relayProof.signedCommitment.commitment.blockNumber; + + require(latestHeight > trustedState.latestHeight, "consensus clients only accept proofs for new headers"); + require( + checkParticipationThreshold(signatures_length, trustedState.currentAuthoritySet.len) + || checkParticipationThreshold(signatures_length, trustedState.nextAuthoritySet.len), + "Super majority threshold not reached" + ); + + Commitment memory commitment = relayProof.signedCommitment.commitment; + + require( + commitment.validatorSetId == trustedState.currentAuthoritySet.id + || commitment.validatorSetId == trustedState.nextAuthoritySet.id, + "Unknown authority set" + ); + + bool is_current_authorities = commitment.validatorSetId == trustedState.currentAuthoritySet.id; + + uint256 payload_len = commitment.payload.length; + bytes32 mmrRoot; + + for (uint256 i = 0; i < payload_len; i++) { + if (commitment.payload[i].id == MMR_ROOT_PAYLOAD_ID && commitment.payload[i].data.length == 32) { + mmrRoot = Bytes.toBytes32(commitment.payload[i].data); + } + } + + require(mmrRoot != bytes32(0), "Mmr root hash not found"); + + bytes32 commitment_hash = keccak256(Codec.Encode(commitment)); + Node[] memory authorities = new Node[](signatures_length); + + // verify authorities' votes + for (uint256 i = 0; i < signatures_length; i++) { + Vote memory vote = relayProof.signedCommitment.votes[i]; + address authority = ECDSA.recover(commitment_hash, vote.signature); + authorities[i] = Node(vote.authorityIndex, keccak256(abi.encodePacked(authority))); + } + + // check authorities proof + if (is_current_authorities) { + require( + MerkleMultiProof.VerifyProof(trustedState.currentAuthoritySet.root, relayProof.proof, authorities), + "Invalid current authorities proof" + ); + } else { + require( + MerkleMultiProof.VerifyProof(trustedState.nextAuthoritySet.root, relayProof.proof, authorities), + "Invalid next authorities proof" + ); + } + + verifyMmrLeaf(trustedState, relayProof, mmrRoot); + + if (relayProof.latestMmrLeaf.nextAuthoritySet.id > trustedState.nextAuthoritySet.id) { + trustedState.currentAuthoritySet = trustedState.nextAuthoritySet; + trustedState.nextAuthoritySet = relayProof.latestMmrLeaf.nextAuthoritySet; + } + + trustedState.latestHeight = latestHeight; + + return (trustedState, relayProof.latestMmrLeaf.extra); + } + + /// Stack too deep, sigh solidity + function verifyMmrLeaf(BeefyConsensusState memory trustedState, RelayChainProof memory relay, bytes32 mmrRoot) + private + pure + { + bytes32 hash = keccak256(Codec.Encode(relay.latestMmrLeaf)); + uint256 leafCount = leafIndex(trustedState.beefyActivationBlock, relay.latestMmrLeaf.parentNumber) + 1; + + MmrLeaf[] memory leaves = new MmrLeaf[](1); + leaves[0] = MmrLeaf(relay.latestMmrLeaf.kIndex, relay.latestMmrLeaf.leafIndex, hash); + + require(MerkleMountainRange.VerifyProof(mmrRoot, relay.mmrProof, leaves, leafCount), "Invalid Mmr Proof"); + } + + /// Verifies that some parachain header has been finalized, given the current trusted consensus state. + function verifyParachainHeaderProof(bytes32 headsRoot, ParachainProof memory proof) + private + view + returns (IntermediateState memory) + { + Node[] memory leaves = new Node[](1); + Parachain memory para = proof.parachain; + if (para.id != _paraId) { + revert("Unknown paraId"); + } + + Header memory header = Codec.DecodeHeader(para.header); + require(header.number != 0, "Genesis block should not be included"); + // extract verified metadata from header + bytes32 commitment; + uint256 timestamp; + for (uint256 j = 0; j < header.digests.length; j++) { + if (header.digests[j].isConsensus && header.digests[j].consensus.consensusId == ISMP_CONSENSUS_ID) { + // yes it may be empty + commitment = Bytes.toBytes32(header.digests[j].consensus.data); + } + + if (header.digests[j].isPreRuntime && header.digests[j].preruntime.consensusId == AURA_CONSENSUS_ID) { + uint256 slot = ScaleCodec.decodeUint256(header.digests[j].preruntime.data); + timestamp = slot * SLOT_DURATION; + } + } + require(timestamp != 0, "timestamp not found!"); + + leaves[0] = Node( + para.index, + keccak256(bytes.concat(ScaleCodec.encode32(uint32(para.id)), ScaleCodec.encodeBytes(para.header))) + ); + + IntermediateState memory intermediate = + IntermediateState(para.id, header.number, StateCommitment(timestamp, commitment, header.stateRoot)); + + require(MerkleMultiProof.VerifyProof(headsRoot, proof.proof, leaves), "Invalid parachains heads proof"); + + return intermediate; + } + + /// Calculates the mmr leaf index for a block whose parent number is given. + function leafIndex(uint256 activationBlock, uint256 parentNumber) private pure returns (uint256) { + if (activationBlock == 0) { + return parentNumber; + } else { + return parentNumber - activationBlock; + } + } + + /// Check for supermajority participation. + function checkParticipationThreshold(uint256 len, uint256 total) private pure returns (bool) { + return len >= ((2 * total) / 3) + 1; + } +} diff --git a/evm/src/beefy/Codec.sol b/evm/src/beefy/Codec.sol new file mode 100644 index 000000000..f808bbe76 --- /dev/null +++ b/evm/src/beefy/Codec.sol @@ -0,0 +1,145 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "solidity-merkle-trees/MerkleMultiProof.sol"; +import "solidity-merkle-trees/trie/substrate/ScaleCodec.sol"; +import "solidity-merkle-trees/trie/Bytes.sol"; +import "./Header.sol"; +import "./BeefyV1.sol"; + +/// type encoding stuff +library Codec { + uint8 internal constant DIGEST_ITEM_OTHER = 0; + uint8 internal constant DIGEST_ITEM_CONSENSUS = 4; + uint8 internal constant DIGEST_ITEM_SEAL = 5; + uint8 internal constant DIGEST_ITEM_PRERUNTIME = 6; + uint8 internal constant DIGEST_ITEM_RUNTIME_ENVIRONMENT_UPDATED = 8; + + function Encode(Commitment memory commitment) internal pure returns (bytes memory) { + uint256 payloadLen = commitment.payload.length; + bytes memory accumulator = bytes(""); + for (uint256 i = 0; i < payloadLen; i++) { + accumulator = bytes.concat( + abi.encodePacked(commitment.payload[i].id), ScaleCodec.encodeBytes(commitment.payload[i].data) + ); + } + + bytes memory payload = bytes.concat(ScaleCodec.encodeUintCompact(payloadLen), accumulator); + + bytes memory rest = bytes.concat( + ScaleCodec.encode32(uint32(commitment.blockNumber)), ScaleCodec.encode64(uint64(commitment.validatorSetId)) + ); + + return bytes.concat(payload, rest); + } + + function Encode(BeefyMmrLeaf memory leaf) internal pure returns (bytes memory) { + bytes memory first = + bytes.concat(abi.encodePacked(uint8(leaf.version)), ScaleCodec.encode32(uint32(leaf.parentNumber))); + bytes memory second = + bytes.concat(bytes.concat(leaf.parentHash), ScaleCodec.encode64(uint64(leaf.nextAuthoritySet.id))); + bytes memory third = bytes.concat( + ScaleCodec.encode32(uint32(leaf.nextAuthoritySet.len)), bytes.concat(leaf.nextAuthoritySet.root) + ); + return bytes.concat(bytes.concat(first, second), bytes.concat(third, bytes.concat(leaf.extra))); + } + + function DecodeHeader(bytes memory encoded) internal pure returns (Header memory) { + ByteSlice memory slice = ByteSlice(encoded, 0); + bytes32 parentHash = Bytes.toBytes32(Bytes.read(slice, 32)); + uint256 blockNumber = ScaleCodec.decodeUintCompact(slice); + bytes32 stateRoot = Bytes.toBytes32(Bytes.read(slice, 32)); + bytes32 extrinsicsRoot = Bytes.toBytes32(Bytes.read(slice, 32)); + + uint256 length = ScaleCodec.decodeUintCompact(slice); + Digest[] memory digests = new Digest[](length); + + for (uint256 i = 0; i < length; i++) { + uint8 kind = Bytes.readByte(slice); + Digest memory digest; + if (kind == DIGEST_ITEM_OTHER) { + digest.isOther = true; + } else if (kind == DIGEST_ITEM_CONSENSUS) { + digest.isConsensus = true; + digest.consensus = decodeDigestItem(slice); + } else if (kind == DIGEST_ITEM_SEAL) { + digest.isSeal = true; + digest.seal = decodeDigestItem(slice); + } else if (kind == DIGEST_ITEM_PRERUNTIME) { + digest.isPreRuntime = true; + digest.preruntime = decodeDigestItem(slice); + } else if (kind == DIGEST_ITEM_RUNTIME_ENVIRONMENT_UPDATED) { + digest.isRuntimeEnvironmentUpdated = true; + } + digests[i] = digest; + } + + return Header(parentHash, blockNumber, stateRoot, extrinsicsRoot, digests); + } + + function decodeDigestItem(ByteSlice memory slice) internal pure returns (DigestItem memory) { + bytes4 id = Bytes.toBytes4(read(slice, 4), 0); + uint256 length = ScaleCodec.decodeUintCompact(slice); + bytes memory data = Bytes.read(slice, length); + return DigestItem(id, data); + } + + function read(ByteSlice memory self, uint256 len) internal pure returns (bytes memory) { + require(self.offset + len <= self.data.length); + if (len == 0) { + return ""; + } + uint256 addr = Memory.dataPtr(self.data); + bytes memory slice = Memory.toBytes(addr + self.offset, len); + self.offset += len; + return slice; + } + + function readByte(ByteSlice memory self) internal pure returns (uint8) { + require(self.offset + 1 <= self.data.length); + + uint8 b = uint8(self.data[self.offset]); + self.offset += 1; + + return b; + } + + // Decodes a SCALE encoded compact unsigned integer + function decodeUintCompact(ByteSlice memory data) internal pure returns (uint256 v) { + uint8 b = readByte(data); // read the first byte + uint8 mode = b & 3; // bitwise operation + + uint256 value; + if (mode == 0) { + // [0, 63] + value = b >> 2; // right shift to remove mode bits + } else if (mode == 1) { + // [64, 16383] + uint8 bb = readByte(data); // read the second byte + uint64 r = bb; // convert to uint64 + r <<= 6; // multiply by * 2^6 + r += b >> 2; // right shift to remove mode bits + value = r; + } else if (mode == 2) { + // [16384, 1073741823] + uint8 b2 = readByte(data); // read the next 3 bytes + uint8 b3 = readByte(data); + uint8 b4 = readByte(data); + + uint32 x1 = uint32(b) | (uint32(b2) << 8); // convert to little endian + uint32 x2 = x1 | (uint32(b3) << 16); + uint32 x3 = x2 | (uint32(b4) << 24); + + x3 >>= 2; // remove the last 2 mode bits + value = uint256(x3); + } else if (mode == 3) { + // [1073741824, 4503599627370496] + uint8 l = (b >> 2) + 4; // remove mode bits + require(l <= 8, "unexpected prefix decoding Compact"); + return ScaleCodec.decodeUint256(read(data, l)); + } else { + revert("Code should be unreachable"); + } + return (value); + } +} diff --git a/evm/src/beefy/Header.sol b/evm/src/beefy/Header.sol new file mode 100644 index 000000000..7f11df777 --- /dev/null +++ b/evm/src/beefy/Header.sol @@ -0,0 +1,27 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +struct DigestItem { + bytes4 consensusId; + bytes data; +} + +struct Digest { + bool isPreRuntime; + DigestItem preruntime; + bool isConsensus; + DigestItem consensus; + bool isSeal; + DigestItem seal; + bool isOther; + bytes other; + bool isRuntimeEnvironmentUpdated; +} + +struct Header { + bytes32 parentHash; + uint256 number; + bytes32 stateRoot; + bytes32 extrinsicRoot; + Digest[] digests; +} diff --git a/evm/src/hosts/Arbitrum.sol b/evm/src/hosts/Arbitrum.sol new file mode 100644 index 000000000..0a9afdc8d --- /dev/null +++ b/evm/src/hosts/Arbitrum.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "ismp/EvmHost.sol"; +import "ismp/interfaces/StateMachine.sol"; + +contract ArbitrumHost is EvmHost { + constructor(HostParams memory params) EvmHost(params) {} + + function host() public override returns (bytes memory) { + return StateMachine.arbitrum(); + } +} diff --git a/evm/src/hosts/Base.sol b/evm/src/hosts/Base.sol new file mode 100644 index 000000000..df09a07a2 --- /dev/null +++ b/evm/src/hosts/Base.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "ismp/EvmHost.sol"; +import "ismp/interfaces/StateMachine.sol"; + +contract BaseHost is EvmHost { + constructor(HostParams memory params) EvmHost(params) {} + + function host() public override returns (bytes memory) { + return StateMachine.base(); + } +} diff --git a/evm/src/hosts/Ethereum.sol b/evm/src/hosts/Ethereum.sol new file mode 100644 index 000000000..ee9514dbb --- /dev/null +++ b/evm/src/hosts/Ethereum.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "ismp/EvmHost.sol"; +import "ismp/interfaces/StateMachine.sol"; + +contract EthereumHost is EvmHost { + constructor(HostParams memory params) EvmHost(params) {} + + function host() public override returns (bytes memory) { + return StateMachine.ethereum(); + } +} diff --git a/evm/src/hosts/Optimism.sol b/evm/src/hosts/Optimism.sol new file mode 100644 index 000000000..e01a71a93 --- /dev/null +++ b/evm/src/hosts/Optimism.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "ismp/EvmHost.sol"; +import "ismp/interfaces/StateMachine.sol"; + +contract OptimismHost is EvmHost { + constructor(HostParams memory params) EvmHost(params) {} + + function host() public override returns (bytes memory) { + return StateMachine.optimism(); + } +} diff --git a/evm/src/modules/CrossChainGovernor.sol b/evm/src/modules/CrossChainGovernor.sol new file mode 100644 index 000000000..422db64c3 --- /dev/null +++ b/evm/src/modules/CrossChainGovernor.sol @@ -0,0 +1,74 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "solidity-merkle-trees/trie/Bytes.sol"; + +import "ismp/interfaces/IIsmpModule.sol"; +import "ismp/interfaces/IIsmpHost.sol"; +import "ismp/interfaces/StateMachine.sol"; + +struct GovernorParams { + address admin; + address host; + uint256 paraId; +} + +contract CrossChainGovernor is IIsmpModule { + using Bytes for bytes; + + GovernorParams private _params; + + modifier onlyIsmpHost() { + require(msg.sender == _params.host, "CrossChainGovernor: Invalid caller"); + _; + } + + modifier onlyAdmin() { + require(msg.sender == _params.admin, "CrossChainGovernor: Invalid caller"); + _; + } + + constructor(GovernorParams memory params) { + _params = params; + } + + // This function can only be called once by the admin to set the IsmpHost. + // This exists to seal the cyclic dependency between this contract & the ismp host. + function setIsmpHost(address host) public onlyAdmin { + _params.host = host; + _params.admin = address(0); + } + + function onAccept(PostRequest memory request) external onlyIsmpHost { + require(request.source.equals(StateMachine.polkadot(_params.paraId)), "Unauthorized request"); + ( + address admin, + address consensus, + address handler, + uint256 challengePeriod, + uint256 unstakingPeriod, + uint256 defaultTimeout + ) = abi.decode(request.body, (address, address, address, uint256, uint256, uint256)); + + BridgeParams memory params = + BridgeParams(admin, consensus, handler, challengePeriod, unstakingPeriod, defaultTimeout); + + IIsmpHost(_params.host).setBridgeParams(params); + } + + function onPostResponse(PostResponse memory response) external pure { + revert("Module doesn't emit requests"); + } + + function onGetResponse(GetResponse memory response) external pure { + revert("Module doesn't emit requests"); + } + + function onPostTimeout(PostRequest memory request) external pure { + revert("Module doesn't emit requests"); + } + + function onGetTimeout(GetRequest memory request) external pure { + revert("Module doesn't emit requests"); + } +} diff --git a/evm/src/modules/TokenFaucet.sol b/evm/src/modules/TokenFaucet.sol new file mode 100644 index 000000000..ee574460b --- /dev/null +++ b/evm/src/modules/TokenFaucet.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "multi-chain-tokens/interfaces/IERC6160Ext20.sol"; + +contract TokenFaucet { + mapping(address => uint256) private consumers; + address private token; + + constructor(address _token) { + token = _token; + } + + function drip() public { + uint256 lastDrip = consumers[msg.sender]; + uint256 delay = block.timestamp - lastDrip; + + if (delay < 86400) { + revert("Can only request tokens once daily"); + } + + consumers[msg.sender] = block.timestamp; + IERC5679Ext20(token).mint(msg.sender, 100 * 10e18, ""); + } +} diff --git a/evm/src/modules/TokenGateway.sol b/evm/src/modules/TokenGateway.sol new file mode 100644 index 000000000..7eaf51110 --- /dev/null +++ b/evm/src/modules/TokenGateway.sol @@ -0,0 +1,81 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "ismp/interfaces/IIsmpModule.sol"; +import "ismp/interfaces/IIsmp.sol"; +import "multi-chain-tokens/interfaces/IERC6160Ext20.sol"; + +error ZeroAddress(); + +struct SendParams { + // amount to be sent + uint256 amount; + // recipient address + address to; + // recipient state machine + bytes dest; + // IERC6160Ext20 token contract, should be the same on both chains + address tokenContract; +} + +contract TokenGateway is IIsmpModule { + address private host; + address private admin; + + // restricts call to `dispatcher` + modifier onlyIsmpHost() { + if (msg.sender != host || msg.sender != admin) { + revert("Unauthorized call"); + } + _; + } + + constructor(address _admin) { + admin = _admin; + } + + // set the ismp host address + function setIsmpHost(address _host) public { + host = _host; + admin = address(0); + } + + // The Gateway contract has to have the roles `MINTER` and `BURNER`. + function send(SendParams memory params) public { + address from = msg.sender; + IERC6160Ext20(params.tokenContract).burn(from, params.amount, ""); + bytes memory data = abi.encode(from, params.to, params.amount, params.tokenContract); + DispatchPost memory request = DispatchPost({ + dest: params.dest, + to: abi.encodePacked(address(this)), // should the same address across evm hosts + body: data, + timeout: 60 * 60, // seconds + gaslimit: 0 // unused + }); + IIsmp(host).dispatch(request); + } + + function onAccept(PostRequest memory request) public onlyIsmpHost { + (address _from, address to, uint256 amount, address tokenContract) = abi.decode(request.body, (address, address, uint256, address)); + + IERC6160Ext20(tokenContract).mint(to, amount, ""); + } + + function onPostTimeout(PostRequest memory request) public onlyIsmpHost { + (address from, address _to, uint256 amount, address tokenContract) = abi.decode(request.body, (address, address, uint256, address)); + + IERC6160Ext20(tokenContract).mint(from, amount, ""); + } + + function onPostResponse(PostResponse memory response) public view onlyIsmpHost { + revert("Token gateway doesn't emit responses"); + } + + function onGetResponse(GetResponse memory response) public view onlyIsmpHost { + revert("Token gateway doesn't emit Get Requests"); + } + + function onGetTimeout(GetRequest memory request) public view onlyIsmpHost { + revert("Token gateway doesn't emit Get Requests"); + } +} diff --git a/evm/test/Beefy.sol b/evm/test/Beefy.sol new file mode 100644 index 000000000..251d52f42 --- /dev/null +++ b/evm/test/Beefy.sol @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "forge-std/Test.sol"; +import "../src/beefy/BeefyV1.sol"; + +contract BeefyConsensusClientTest is Test { + // needs a test method so that forge can detect it + function testConsensusClient() public {} + + BeefyV1 internal beefy; + + function setUp() public virtual { + beefy = new BeefyV1(1000); + } + + function VerifyV1(bytes memory trustedConsensusState, bytes memory proof) + public + returns (bytes memory, IntermediateState memory) + { + return beefy.verifyConsensus(trustedConsensusState, proof); + } + + function DecodeHeader(bytes memory encoded) public pure returns (Header memory) { + return Codec.DecodeHeader(encoded); + } + + function EncodeLeaf(BeefyMmrLeaf memory leaf) public pure returns (bytes memory) { + return Codec.Encode(leaf); + } + + function EncodeCommitment(Commitment memory commitment) public pure returns (bytes memory) { + return Codec.Encode(commitment); + } +} diff --git a/evm/test/GetResponse.sol b/evm/test/GetResponse.sol new file mode 100644 index 000000000..2368274db --- /dev/null +++ b/evm/test/GetResponse.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "forge-std/Test.sol"; + +import "./TestConsensusClient.sol"; +import "../src/EvmHost.sol"; +import "./TestHost.sol"; +import {PingModule} from "./PingModule.sol"; +import "../src/HandlerV1.sol"; + +contract GetResponseTest is Test { + // needs a test method so that forge can detect it + function testPostResponse() public {} + + IConsensusClient internal consensusClient; + EvmHost internal host; + HandlerV1 internal handler; + address internal testModule; + + function setUp() public virtual { + consensusClient = new TestConsensusClient(); + handler = new HandlerV1(); + + HostParams memory params = HostParams({ + admin: address(0), + crosschainGovernor: address(0), + handler: address(handler), + defaultTimeout: 0, + unStakingPeriod: 5000, + // for this test + challengePeriod: 0, + consensusClient: address(consensusClient), + lastUpdated: 0, + consensusState: new bytes(0) + }); + host = new TestHost(params); + + PingModule test = new PingModule(address(host)); + testModule = address(test); + } + + function module() public view returns (address) { + return testModule; + } + + function GetResponseNoChallengeNoTimeout( + bytes memory consensusProof, + GetRequest memory request, + GetResponseMessage memory message + ) public { + PingModule(testModule).dispatch(request); + handler.handleConsensus(host, consensusProof); + vm.warp(10); + handler.handleGetResponses(host, message); + } +} diff --git a/evm/test/PingModule.sol b/evm/test/PingModule.sol new file mode 100644 index 000000000..10dd020eb --- /dev/null +++ b/evm/test/PingModule.sol @@ -0,0 +1,111 @@ +// SPDX-License-Identifier: UNLICENSED +// A Sample ISMP solidity contract for unit tests + +pragma solidity 0.8.17; + +import "ismp/interfaces/IIsmpModule.sol"; +import "ismp/interfaces/IIsmpHost.sol"; +import "ismp/interfaces/StateMachine.sol"; + +struct PingMessage { + bytes dest; + address module; +} + +contract PingModule is IIsmpModule { + event PostResponseReceived(); + event GetResponseReceived(); + event PostTimeoutReceived(); + event GetTimeoutReceived(); + event PostReceived(string message); + event MessageDispatched(); + + error NotIsmpHost(); + error ExecutionFailed(); + + // restricts call to `IIsmpHost` + modifier onlyIsmpHost() { + if (msg.sender != _host) { + revert NotIsmpHost(); + } + _; + } + + address internal _host; + + constructor(address host) { + _host = host; + } + + function dispatch(PostRequest memory request) public returns (bytes32) { + bytes32 commitment = Message.hash(request); + DispatchPost memory post = DispatchPost({ + body: request.body, + dest: request.dest, + timeout: request.timeoutTimestamp, + to: request.to, + gaslimit: request.gaslimit + }); + IIsmp(_host).dispatch(post); + return commitment; + } + + function dispatch(GetRequest memory request) public returns (bytes32) { + bytes32 commitment = Message.hash(request); + DispatchGet memory get = DispatchGet({ + dest: request.dest, + height: request.height, + keys: request.keys, + timeout: request.timeoutTimestamp, + gaslimit: request.gaslimit + }); + IIsmp(_host).dispatch(get); + return commitment; + } + + function ping(PingMessage memory msg) public { + DispatchPost memory post = DispatchPost({ + body: bytes.concat("hello from ", IIsmpHost(_host).host()), + dest: msg.dest, + // one hour + timeout: 60 * 60, + // instance of this pallet on another chain. + to: abi.encodePacked(address(msg.module)), + // unused for now + gaslimit: 0 + }); + IIsmp(_host).dispatch(post); + } + + function dispatchToParachain(uint256 _paraId) public { + DispatchPost memory post = DispatchPost({ + body: bytes("hello from ethereum"), + dest: StateMachine.kusama(_paraId), + timeout: 0, + // timeout: 60 * 60, // one hour + to: bytes("ismp-ast"), // ismp demo pallet + gaslimit: 0 // unnedeed, since it's a pallet + }); + IIsmp(_host).dispatch(post); + } + + function onAccept(PostRequest memory request) external onlyIsmpHost { + emit PostReceived(string(request.body)); + } + + function onPostResponse(PostResponse memory response) external onlyIsmpHost { + emit PostResponseReceived(); + } + + function onGetResponse(GetResponse memory response) external onlyIsmpHost { + emit GetResponseReceived(); + } + + function onGetTimeout(GetRequest memory request) external onlyIsmpHost { + emit GetTimeoutReceived(); + } + + function onPostTimeout(PostRequest memory request) external onlyIsmpHost { + emit PostTimeoutReceived(); + } +} diff --git a/evm/test/PostRequest.sol b/evm/test/PostRequest.sol new file mode 100644 index 000000000..863e6fe71 --- /dev/null +++ b/evm/test/PostRequest.sol @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "forge-std/Test.sol"; + +import "./TestConsensusClient.sol"; +import "../src/EvmHost.sol"; +import "./TestHost.sol"; +import {PingModule} from "./PingModule.sol"; +import "../src/HandlerV1.sol"; + +contract PostRequestTest is Test { + // needs a test method so that forge can detect it + function testPostRequest() public {} + + IConsensusClient internal consensusClient; + EvmHost internal host; + HandlerV1 internal handler; + address internal testModule; + + function setUp() public virtual { + consensusClient = new TestConsensusClient(); + handler = new HandlerV1(); + + HostParams memory params = HostParams({ + admin: address(0), + crosschainGovernor: address(0), + handler: address(handler), + defaultTimeout: 5000, + unStakingPeriod: 5000, + // for this test + challengePeriod: 0, + consensusClient: address(consensusClient), + lastUpdated: 0, + consensusState: new bytes(0) + }); + host = new TestHost(params); + + PingModule test = new PingModule(address(host)); + testModule = address(test); + } + + function module() public view returns (address) { + return testModule; + } + + function PostRequestNoChallengeNoTimeout(bytes memory consensusProof, PostRequestMessage memory message) public { + handler.handleConsensus(host, consensusProof); + vm.warp(10); + handler.handlePostRequests(host, message); + } +} diff --git a/evm/test/PostResponse.sol b/evm/test/PostResponse.sol new file mode 100644 index 000000000..735affd8f --- /dev/null +++ b/evm/test/PostResponse.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "forge-std/Test.sol"; + +import "./TestConsensusClient.sol"; +import "../src/EvmHost.sol"; +import "./TestHost.sol"; +import {PingModule} from "./PingModule.sol"; +import "../src/HandlerV1.sol"; + +contract PostResponseTest is Test { + // needs a test method so that forge can detect it + function testPostResponse() public {} + + IConsensusClient internal consensusClient; + EvmHost internal host; + HandlerV1 internal handler; + address internal testModule; + + function setUp() public virtual { + consensusClient = new TestConsensusClient(); + handler = new HandlerV1(); + + HostParams memory params = HostParams({ + admin: address(0), + crosschainGovernor: address(0), + handler: address(handler), + defaultTimeout: 0, + unStakingPeriod: 5000, + // for this test + challengePeriod: 0, + consensusClient: address(consensusClient), + lastUpdated: 0, + consensusState: new bytes(0) + }); + host = new TestHost(params); + + PingModule test = new PingModule(address(host)); + testModule = address(test); + } + + function module() public view returns (address) { + return testModule; + } + + function PostResponseNoChallengeNoTimeout( + bytes memory consensusProof, + PostRequest memory request, + PostResponseMessage memory message + ) public { + PingModule(testModule).dispatch(request); + handler.handleConsensus(host, consensusProof); + vm.warp(10); + handler.handlePostResponses(host, message); + } +} diff --git a/evm/test/PostTimeout.sol b/evm/test/PostTimeout.sol new file mode 100644 index 000000000..3e283c9fd --- /dev/null +++ b/evm/test/PostTimeout.sol @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "forge-std/Test.sol"; + +import "./TestConsensusClient.sol"; +import "../src/EvmHost.sol"; +import "./TestHost.sol"; +import {PingModule} from "./PingModule.sol"; +import "../src/HandlerV1.sol"; + +contract PostTimeoutTest is Test { + // needs a test method so that forge can detect it + function testPostTimeout() public {} + + IConsensusClient internal consensusClient; + EvmHost internal host; + HandlerV1 internal handler; + address internal testModule; + + function setUp() public virtual { + consensusClient = new TestConsensusClient(); + handler = new HandlerV1(); + + HostParams memory params = HostParams({ + admin: address(0), + crosschainGovernor: address(0), + handler: address(handler), + defaultTimeout: 0, + unStakingPeriod: 5000, + // for this test + challengePeriod: 0, + consensusClient: address(consensusClient), + lastUpdated: 0, + consensusState: new bytes(0) + }); + host = new TestHost(params); + + PingModule test = new PingModule(address(host)); + testModule = address(test); + } + + function module() public view returns (address) { + return testModule; + } + + function PostTimeoutNoChallenge( + bytes memory consensusProof, + PostRequest memory request, + PostTimeoutMessage memory message + ) public { + PingModule(testModule).dispatch(request); + handler.handleConsensus(host, consensusProof); + vm.warp(5000); + handler.handlePostTimeouts(host, message); + } +} diff --git a/evm/test/TestConsensusClient.sol b/evm/test/TestConsensusClient.sol new file mode 100644 index 000000000..d18ed3d01 --- /dev/null +++ b/evm/test/TestConsensusClient.sol @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "ismp/interfaces/IConsensusClient.sol"; + +/// Test consensus client, performs no verification +contract TestConsensusClient is IConsensusClient { + function verifyConsensus(bytes memory consensusState, bytes memory proof) + external + returns (bytes memory, IntermediateState memory) + { + IntermediateState memory intermediate = abi.decode(proof, (IntermediateState)); + + return (consensusState, intermediate); + } +} diff --git a/evm/test/TestHost.sol b/evm/test/TestHost.sol new file mode 100644 index 000000000..5e40b4a54 --- /dev/null +++ b/evm/test/TestHost.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity 0.8.17; + +import "../src/EvmHost.sol"; +import "ismp/interfaces/StateMachine.sol"; + +contract TestHost is EvmHost { + constructor(HostParams memory params) EvmHost(params) {} + + function host() public override returns (bytes memory) { + return StateMachine.ethereum(); + } +}