diff --git a/.github/workflows/secrets_scanner.yaml b/.github/workflows/secrets_scanner.yaml
new file mode 100644
index 000000000..54054cf7c
--- /dev/null
+++ b/.github/workflows/secrets_scanner.yaml
@@ -0,0 +1,17 @@
+name: Leaked Secrets Scan
+on: [pull_request]
+jobs:
+ TruffleHog:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
+ with:
+ fetch-depth: 0
+ - name: TruffleHog OSS
+ uses: trufflesecurity/trufflehog@0c66d30c1f4075cee1aada2e1ab46dabb1b0071a
+ with:
+ path: ./
+ base: ${{ github.event.repository.default_branch }}
+ head: HEAD
+ extra_args: --debug --only-verified
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index 2a7469c00..a02c11e41 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -121,127 +121,6 @@ jobs:
# see https://github.com/foundry-rs/foundry/pull/3959
export LD_LIBRARY_PATH="$(rustc --print sysroot)/lib"
cargo nextest run --partition count:${{ matrix.partition }}/2 --retries 3 --archive-file nextest-integration.tar.zst -E '${{ matrix.job.filter }}'
-
- forge-std-tests:
- name: forge std tests / ${{ matrix.job.name }}
- runs-on: ubuntu-latest
- needs: build-tests
- strategy:
- matrix:
- job:
- - name: forge-std-test
- filter: "test(~forge_std)"
- env:
- ETH_RPC_URL: https://eth-mainnet.alchemyapi.io/v2/C3JEvfW6VgtqZQa-Qp1E-2srEiIc02sD
- steps:
- - uses: actions/checkout@v3
- - uses: taiki-e/install-action@nextest
- - uses: dtolnay/rust-toolchain@stable
- - name: Download archives
- uses: actions/download-artifact@v3
- with:
- name: integration-tests
-
- - name: Forge RPC cache
- uses: actions/cache@v3
- if: matrix.job.name != 'forge-std-test'
- with:
- path: "$HOME/.foundry/cache"
- key: rpc-cache-${{ hashFiles('cli/tests/rpc-cache-keyfile') }}
- - name: Setup git config
- run: |
- git config --global user.name "GitHub Actions Bot"
- git config --global user.email "<>"
-
- - name: cargo nextest
- run: |
- # see https://github.com/foundry-rs/foundry/pull/3959
- export LD_LIBRARY_PATH="$(rustc --print sysroot)/lib"
- cargo nextest run --retries 3 --archive-file nextest-integration.tar.zst -E '${{ matrix.job.filter }}'
-
- integration:
- name: integration tests / ${{ matrix.job.name }}
- runs-on: ubuntu-latest
- needs: build-tests
- strategy:
- matrix:
- job:
- - name: non-forking
- filter: "!test(~fork) & !test(~live) & !test(~issue) & !test(~forge_std)"
- - name: forking
- filter: "test(~fork) & !test(~live)"
- partition: [1, 2]
- env:
- ETH_RPC_URL: https://eth-mainnet.alchemyapi.io/v2/C3JEvfW6VgtqZQa-Qp1E-2srEiIc02sD
- steps:
- - uses: actions/checkout@v3
- - uses: taiki-e/install-action@nextest
- - uses: dtolnay/rust-toolchain@stable
- - name: Download archives
- uses: actions/download-artifact@v3
- with:
- name: integration-tests
-
- - name: Forge RPC cache
- uses: actions/cache@v3
- if: matrix.job.name != 'non-forking'
- with:
- path: "$HOME/.foundry/cache"
- key: rpc-cache-${{ hashFiles('cli/tests/rpc-cache-keyfile') }}
- - name: Setup git config
- run: |
- git config --global user.name "GitHub Actions Bot"
- git config --global user.email "<>"
-
- - name: cargo nextest
- run: |
- # see https://github.com/foundry-rs/foundry/pull/3959
- export LD_LIBRARY_PATH="$(rustc --print sysroot)/lib"
- cargo nextest run --partition count:${{ matrix.partition }}/2 --retries 3 --archive-file nextest-integration.tar.zst -E '${{ matrix.job.filter }}'
-
- external-integration:
- name: external integration tests / ${{ matrix.job.name }}
- runs-on: ubuntu-latest
- needs: build-tests
- strategy:
- matrix:
- job:
- - name: non-forking
- filter: "!test(~fork_integration) & !test(~live)"
- - name: forking
- filter: "test(~fork_integration) & !test(~live)"
- env:
- ETH_RPC_URL: https://eth-mainnet.alchemyapi.io/v2/C3JEvfW6VgtqZQa-Qp1E-2srEiIc02sD
- steps:
- - uses: actions/checkout@v3
- - uses: taiki-e/install-action@nextest
- - uses: dtolnay/rust-toolchain@stable
- - name: Download archives
- uses: actions/download-artifact@v3
- with:
- name: external-integration-tests
-
- - name: Forge RPC cache
- uses: actions/cache@v3
- if: matrix.job.name != 'non-forking'
- with:
- path: "$HOME/.foundry/cache"
- key: rpc-cache-${{ hashFiles('cli/tests/rpc-cache-keyfile') }}
-
- - name: Setup git config
- run: |
- git config --global user.name "GitHub Actions Bot"
- git config --global user.email "<>"
-
- - name: Force use of HTTPS for submodules
- run: git config --global url."https://github.com/".insteadOf "git@github.com:"
-
- - name: cargo nextest
- run: |
- # see https://github.com/foundry-rs/foundry/pull/3959
- export LD_LIBRARY_PATH="$(rustc --print sysroot)/lib"
- cargo nextest run --retries 3 --archive-file nextest-external-integration.tar.zst -E '${{ matrix.job.filter }}'
-
doctests:
name: doc tests
runs-on: ubuntu-latest
@@ -253,12 +132,6 @@ jobs:
- name: cargo test
run: cargo test --locked --workspace --all-features --doc
- cross-platform:
- name: Cross-platform tests
- if: github.event_name != 'pull_request'
- needs: [unit, integration, doctests]
- uses: ./.github/workflows/cross-platform.yml
-
clippy:
name: clippy
runs-on: ubuntu-latest
@@ -281,13 +154,3 @@ jobs:
components: rustfmt
- run: cargo fmt --all --check
- forge-fmt:
- name: forge fmt
- runs-on: ubuntu-latest
- timeout-minutes: 30
- steps:
- - uses: actions/checkout@v3
- - uses: dtolnay/rust-toolchain@stable
- - uses: Swatinem/rust-cache@v2
- - name: forge fmt
- run: cargo run --bin forge -- fmt --check testdata/
diff --git a/Cargo.lock b/Cargo.lock
index 20045f5a7..92f0a6f53 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -62,20 +62,22 @@ dependencies = [
[[package]]
name = "aho-corasick"
-version = "0.7.20"
+version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
+checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
dependencies = [
"memchr",
]
[[package]]
-name = "aho-corasick"
-version = "1.0.2"
+name = "alloy-rlp"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43f6cb1bf222025340178f382c426f13757b2960e89779dfcb319c32542a5a41"
+checksum = "f938f00332d63a5b0ac687bd6f46d03884638948921d9f8b50c59563d421ae25"
dependencies = [
- "memchr",
+ "arrayvec",
+ "bytes",
+ "smol_str",
]
[[package]]
@@ -112,6 +114,15 @@ version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
+[[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"
@@ -173,14 +184,14 @@ dependencies = [
"axum",
"bytes",
"chrono",
- "clap 4.3.11",
+ "clap 4.3.21",
"clap_complete",
"clap_complete_fig",
"crc 3.0.1",
"ctrlc",
"ethereum-forkid",
- "ethers",
- "ethers-solc",
+ "ethers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"fdlimit",
"flate2",
"forge",
@@ -200,7 +211,7 @@ dependencies = [
"thiserror",
"tokio",
"tower",
- "tower-http 0.4.1",
+ "tower-http 0.4.3",
"tracing",
"tracing-subscriber",
"trie-db",
@@ -213,7 +224,7 @@ name = "anvil-core"
version = "0.1.0"
dependencies = [
"bytes",
- "ethers-core",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"foundry-evm",
"hash-db",
"hash256-std-hasher",
@@ -243,7 +254,7 @@ dependencies = [
"async-trait",
"axum",
"bytes",
- "clap 4.3.11",
+ "clap 4.3.21",
"futures",
"hyper",
"parity-tokio-ipc",
@@ -253,15 +264,15 @@ dependencies = [
"serde_json",
"thiserror",
"tokio-util",
- "tower-http 0.4.1",
+ "tower-http 0.4.3",
"tracing",
]
[[package]]
name = "anyhow"
-version = "1.0.71"
+version = "1.0.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9c7d0618f0e0b7e8ff11427422b64564d5fb0be1940354bfe2e0529b18a9d9b8"
+checksum = "3b13c32d80ecc7ab747b80c3784bce54ee8a7a0cc4fbda9bf4cda2cf6fe90854"
[[package]]
name = "ariadne"
@@ -273,6 +284,130 @@ dependencies = [
"yansi 0.5.1",
]
+[[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-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-std 0.4.0",
+ "digest 0.10.7",
+ "num-bigint",
+]
+
+[[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 = "array-init"
version = "0.0.4"
@@ -314,18 +449,18 @@ checksum = "0e97ce7de6cf12de5d7226c73f5ba9811622f4db3a5b91b55c53e987e5f91cba"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
name = "async-trait"
-version = "0.1.71"
+version = "0.1.72"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a564d521dd56509c4c47480d00b80ee55f7e385ae48db5744c67ad50c92d2ebf"
+checksum = "cc6dde6e4ed435a4c1ee4e73592f5ba9da2151af10076cc04858746af9352d09"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -336,7 +471,7 @@ checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c"
dependencies = [
"futures",
"pharos",
- "rustc_version",
+ "rustc_version 0.4.0",
]
[[package]]
@@ -568,7 +703,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
dependencies = [
"memchr",
- "regex-automata 0.3.2",
+ "regex-automata 0.3.6",
"serde",
]
@@ -637,20 +772,34 @@ dependencies = [
[[package]]
name = "camino"
-version = "1.1.4"
+version = "1.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c530edf18f37068ac2d977409ed5cd50d53d73bc653c7647b48eb78976ac9ae2"
+checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c"
dependencies = [
"serde",
]
[[package]]
name = "cargo-platform"
-version = "0.1.2"
+version = "0.1.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2cfa25e60aea747ec7e1124f238816749faa93759c6ff5b31f1ccdda137f4479"
+dependencies = [
+ "serde",
+]
+
+[[package]]
+name = "cargo_metadata"
+version = "0.15.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "cbdb825da8a5df079a43676dbe042702f1707b1109f713a01420fbb4cc71fa27"
+checksum = "eee4243f1f26fc7a42710e7439c149e2b10b05472f88090acce52632f231a73a"
dependencies = [
+ "camino",
+ "cargo-platform",
+ "semver 1.0.18",
"serde",
+ "serde_json",
+ "thiserror",
]
[[package]]
@@ -661,7 +810,7 @@ checksum = "e7daec1a2a2129eeba1644b220b4647ec537b0b5d4bfd6876fcc5a540056b592"
dependencies = [
"camino",
"cargo-platform",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"thiserror",
@@ -679,11 +828,11 @@ version = "0.2.0"
dependencies = [
"async-trait",
"chrono",
- "ethers-contract",
- "ethers-core",
- "ethers-etherscan",
- "ethers-providers",
- "ethers-signers",
+ "ethers-contract 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-etherscan 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-providers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-signers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"evm-disassembler",
"eyre",
"foundry-common",
@@ -711,11 +860,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
[[package]]
name = "cc"
-version = "1.0.79"
+version = "1.0.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f"
+checksum = "305fe645edc1442a0fa8b6726ba61d422798d37a52e12eaecf4b022ebbb88f01"
dependencies = [
"jobserver",
+ "libc",
]
[[package]]
@@ -729,11 +879,11 @@ name = "chisel"
version = "0.1.0"
dependencies = [
"bytes",
- "clap 4.3.11",
+ "clap 4.3.21",
"criterion",
"dirs 5.0.1",
- "ethers",
- "ethers-solc",
+ "ethers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"forge",
"forge-fmt",
@@ -746,13 +896,13 @@ dependencies = [
"reqwest",
"revm",
"rustyline",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"serial_test",
"solang-parser",
"strum 0.25.0",
- "time 0.3.23",
+ "time 0.3.25",
"tokio",
"vergen",
"yansi 0.5.1",
@@ -825,9 +975,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.3.11"
+version = "4.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d"
+checksum = "c27cdf28c0f604ba3f512b0c9a409f8de8513e4816705deb0498b627e7c3a3fd"
dependencies = [
"clap_builder",
"clap_derive",
@@ -836,9 +986,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.3.11"
+version = "4.3.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b"
+checksum = "08a9f1ab5e9f01a9b81f202e8562eb9a10de70abf9eaeac1be465c28b75aa4aa"
dependencies = [
"anstream",
"anstyle",
@@ -856,7 +1006,7 @@ version = "4.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce"
dependencies = [
- "clap 4.3.11",
+ "clap 4.3.21",
]
[[package]]
@@ -865,20 +1015,20 @@ version = "4.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99fee1d30a51305a6c2ed3fc5709be3c8af626c9c958e04dd9ae94e27bcbce9f"
dependencies = [
- "clap 4.3.11",
+ "clap 4.3.21",
"clap_complete",
]
[[package]]
name = "clap_derive"
-version = "4.3.2"
+version = "4.3.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b8cd2b2a819ad6eec39e8f1d6b53001af1e5469f8c177579cdaeb313115b825f"
+checksum = "54a9bb5758fc5dfe728d1019941681eccaf0cf8a4189b692a0ee2f2ecf90a050"
dependencies = [
"heck",
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -1074,9 +1224,9 @@ dependencies = [
[[package]]
name = "const-oid"
-version = "0.9.4"
+version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "795bc6e66a8e340f075fcf6227e417a2dc976b92b91f3cdc778bb858778b6747"
+checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
[[package]]
name = "constant_time_eq"
@@ -1342,9 +1492,9 @@ dependencies = [
[[package]]
name = "curl-sys"
-version = "0.4.63+curl-8.1.2"
+version = "0.4.65+curl-8.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aeb0fef7046022a1e2ad67a004978f0e3cacb9e3123dc62ce768f92197b771dc"
+checksum = "961ba061c9ef2fe34bbd12b807152d96f0badd2bebe7b90ce6c8c8b7572a0986"
dependencies = [
"cc",
"libc",
@@ -1376,14 +1526,31 @@ checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308"
[[package]]
name = "der"
-version = "0.7.7"
+version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0c7ed52955ce76b1554f509074bb357d3fb8ac9b51288a65a3fd480d1dfba946"
+checksum = "fffa369a668c8af7dbf8b5e56c9f744fbd399949ed171606040001947de40b1c"
dependencies = [
"const-oid",
"zeroize",
]
+[[package]]
+name = "deranged"
+version = "0.3.7"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7684a49fb1af197853ef7b2ee694bc1f5b4179556f1e5710e1760c5db6f5e929"
+
+[[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_more"
version = "0.99.17"
@@ -1393,7 +1560,7 @@ dependencies = [
"convert_case",
"proc-macro2",
"quote",
- "rustc_version",
+ "rustc_version 0.4.0",
"syn 1.0.109",
]
@@ -1510,9 +1677,9 @@ checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b"
[[package]]
name = "ecdsa"
-version = "0.16.7"
+version = "0.16.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0997c976637b606099b9985693efa3581e84e41f5c11ba5255f88711058ad428"
+checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4"
dependencies = [
"der",
"digest 0.10.7",
@@ -1524,9 +1691,9 @@ dependencies = [
[[package]]
name = "either"
-version = "1.8.1"
+version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
+checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
[[package]]
name = "elasticlunr-rs"
@@ -1589,6 +1756,24 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d"
+[[package]]
+name = "enr"
+version = "0.8.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cf56acd72bb22d2824e66ae8e9e5ada4d0de17a69c7fd35569dde2ada8ec9116"
+dependencies = [
+ "base64 0.13.1",
+ "bytes",
+ "hex",
+ "k256",
+ "log",
+ "rand 0.8.5",
+ "rlp",
+ "serde",
+ "sha3",
+ "zeroize",
+]
+
[[package]]
name = "enr"
version = "0.9.0"
@@ -1610,13 +1795,13 @@ dependencies = [
[[package]]
name = "enumn"
-version = "0.1.10"
+version = "0.1.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c9838a970f5de399d3070ae1739e131986b2f5dcc223c7423ca0927e3a878522"
+checksum = "b893c4eb2dc092c811165f84dc7447fae16fb66521717968c34c509b39b1a5c5"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -1640,9 +1825,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5"
[[package]]
name = "errno"
-version = "0.3.1"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a"
+checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f"
dependencies = [
"errno-dragonfly",
"libc",
@@ -1755,39 +1940,87 @@ dependencies = [
[[package]]
name = "ethers"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "96b4026b97da8281276744741fac7eb385da905f6093c583331fa2953fdd4253"
dependencies = [
- "ethers-addressbook",
- "ethers-contract",
- "ethers-core",
- "ethers-etherscan",
- "ethers-middleware",
- "ethers-providers",
- "ethers-signers",
- "ethers-solc",
+ "ethers-addressbook 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-contract 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-etherscan 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-middleware 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-providers 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-signers 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-solc 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
+name = "ethers"
+version = "2.0.8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
+dependencies = [
+ "ethers-addressbook 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-contract 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-etherscan 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-middleware 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-providers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-signers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
]
[[package]]
name = "ethers-addressbook"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "edcb6ffefc230d8c42874c51b28dc11dbb8de50b27a8fdf92648439d6baa68dc"
dependencies = [
- "ethers-core",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "once_cell",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "ethers-addressbook"
+version = "2.0.8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
+dependencies = [
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "once_cell",
+ "serde",
+ "serde_json",
+]
+
+[[package]]
+name = "ethers-contract"
+version = "2.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0d4719a44c3d37ab07c6dea99ab174068d8c35e441b60b6c20ce4e48357273e8"
+dependencies = [
+ "ethers-contract-abigen 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-contract-derive 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-providers 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-signers 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-util",
+ "hex",
"once_cell",
+ "pin-project",
"serde",
"serde_json",
+ "thiserror",
]
[[package]]
name = "ethers-contract"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
dependencies = [
- "ethers-contract-abigen",
- "ethers-contract-derive",
- "ethers-core",
- "ethers-providers",
- "ethers-signers",
+ "ethers-contract-abigen 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-contract-derive 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-providers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-signers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"futures-util",
"hex",
"once_cell",
@@ -1800,12 +2033,13 @@ dependencies = [
[[package]]
name = "ethers-contract-abigen"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "155ea1b84d169d231317ed86e307af6f2bed6b40dd17e5e94bc84da21cadb21c"
dependencies = [
"Inflector",
"dunce",
- "ethers-core",
- "ethers-etherscan",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-etherscan 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
"eyre",
"hex",
"prettyplease",
@@ -1815,34 +2049,103 @@ dependencies = [
"reqwest",
"serde",
"serde_json",
- "syn 2.0.25",
+ "syn 2.0.28",
"toml 0.7.6",
"walkdir",
]
+[[package]]
+name = "ethers-contract-abigen"
+version = "2.0.8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
+dependencies = [
+ "Inflector",
+ "dunce",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-etherscan 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "eyre",
+ "hex",
+ "prettyplease",
+ "proc-macro2",
+ "quote",
+ "regex",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "syn 2.0.28",
+ "toml 0.7.6",
+ "walkdir",
+]
+
+[[package]]
+name = "ethers-contract-derive"
+version = "2.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8567ff196c4a37c1a8c90ec73bda0ad2062e191e4f0a6dc4d943e2ec4830fc88"
+dependencies = [
+ "Inflector",
+ "ethers-contract-abigen 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hex",
+ "proc-macro2",
+ "quote",
+ "serde_json",
+ "syn 2.0.28",
+]
+
[[package]]
name = "ethers-contract-derive"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
dependencies = [
"Inflector",
- "ethers-contract-abigen",
- "ethers-core",
+ "ethers-contract-abigen 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"hex",
"proc-macro2",
"quote",
"serde_json",
- "syn 2.0.25",
+ "syn 2.0.28",
+]
+
+[[package]]
+name = "ethers-core"
+version = "2.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "60ca2514feb98918a0a31de7e1983c29f2267ebf61b2dc5d4294f91e5b866623"
+dependencies = [
+ "arrayvec",
+ "bytes",
+ "cargo_metadata 0.15.4",
+ "chrono",
+ "elliptic-curve",
+ "ethabi",
+ "generic-array",
+ "hex",
+ "k256",
+ "num_enum",
+ "once_cell",
+ "open-fastrlp",
+ "rand 0.8.5",
+ "rlp",
+ "serde",
+ "serde_json",
+ "strum 0.25.0",
+ "syn 2.0.28",
+ "tempfile",
+ "thiserror",
+ "tiny-keccak",
+ "unicode-xid",
]
[[package]]
name = "ethers-core"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
dependencies = [
"arrayvec",
"bytes",
- "cargo_metadata",
+ "cargo_metadata 0.17.0",
"chrono",
"elliptic-curve",
"ethabi",
@@ -1857,7 +2160,7 @@ dependencies = [
"serde",
"serde_json",
"strum 0.25.0",
- "syn 2.0.25",
+ "syn 2.0.28",
"tempfile",
"thiserror",
"tiny-keccak",
@@ -1867,55 +2170,133 @@ dependencies = [
[[package]]
name = "ethers-etherscan"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "22b3a8269d3df0ed6364bc05b4735b95f4bf830ce3aef87d5e760fb0e93e5b91"
+dependencies = [
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "reqwest",
+ "semver 1.0.18",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tracing",
+]
+
+[[package]]
+name = "ethers-etherscan"
+version = "2.0.8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
dependencies = [
- "ethers-core",
- "ethers-solc",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "reqwest",
+ "semver 1.0.18",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tracing",
+]
+
+[[package]]
+name = "ethers-middleware"
+version = "2.0.8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e0c339aad74ae5c451d27e0e49c7a3c7d22620b119b4f9291d7aa21f72d7f366"
+dependencies = [
+ "async-trait",
+ "auto_impl",
+ "ethers-contract 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-etherscan 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-providers 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-signers 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-channel",
+ "futures-locks",
+ "futures-util",
+ "instant",
+ "reqwest",
+ "serde",
+ "serde_json",
+ "thiserror",
+ "tokio",
+ "tracing",
+ "tracing-futures",
+ "url",
+]
+
+[[package]]
+name = "ethers-middleware"
+version = "2.0.8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
+dependencies = [
+ "async-trait",
+ "auto_impl",
+ "ethers-contract 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-etherscan 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-providers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-signers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "futures-channel",
+ "futures-locks",
+ "futures-util",
+ "instant",
"reqwest",
- "semver",
"serde",
"serde_json",
"thiserror",
+ "tokio",
"tracing",
+ "tracing-futures",
+ "url",
]
[[package]]
-name = "ethers-middleware"
+name = "ethers-providers"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b411b119f1cf0efb69e2190883dee731251882bb21270f893ee9513b3a697c48"
dependencies = [
"async-trait",
"auto_impl",
- "ethers-contract",
- "ethers-core",
- "ethers-etherscan",
- "ethers-providers",
- "ethers-signers",
- "futures-channel",
- "futures-locks",
+ "base64 0.21.2",
+ "bytes",
+ "enr 0.8.1",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "futures-core",
+ "futures-timer",
"futures-util",
+ "hashers",
+ "hex",
+ "http",
"instant",
+ "once_cell",
+ "pin-project",
"reqwest",
"serde",
"serde_json",
"thiserror",
"tokio",
+ "tokio-tungstenite 0.19.0",
"tracing",
"tracing-futures",
"url",
+ "wasm-bindgen",
+ "wasm-bindgen-futures",
+ "web-sys",
+ "ws_stream_wasm",
]
[[package]]
name = "ethers-providers"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
dependencies = [
"async-trait",
"auto_impl",
"base64 0.21.2",
"bytes",
- "enr",
- "ethers-core",
+ "enr 0.9.0",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"futures-channel",
"futures-core",
"futures-timer",
@@ -1924,6 +2305,7 @@ dependencies = [
"hex",
"http",
"instant",
+ "jsonwebtoken",
"once_cell",
"pin-project",
"reqwest",
@@ -1945,7 +2327,26 @@ dependencies = [
[[package]]
name = "ethers-signers"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4864d387456a9c09a1157fa10e1528b29d90f1d859443acf06a1b23365fb518c"
+dependencies = [
+ "async-trait",
+ "coins-bip32",
+ "coins-bip39",
+ "elliptic-curve",
+ "eth-keystore",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hex",
+ "rand 0.8.5",
+ "sha2 0.10.7",
+ "thiserror",
+ "tracing",
+]
+
+[[package]]
+name = "ethers-signers"
+version = "2.0.8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
dependencies = [
"async-trait",
"coins-bip32",
@@ -1953,7 +2354,7 @@ dependencies = [
"coins-ledger",
"elliptic-curve",
"eth-keystore",
- "ethers-core",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"futures-executor",
"futures-util",
"hex",
@@ -1961,7 +2362,7 @@ dependencies = [
"rand 0.8.5",
"rusoto_core",
"rusoto_kms",
- "semver",
+ "semver 1.0.18",
"sha2 0.10.7",
"spki",
"thiserror",
@@ -1972,12 +2373,43 @@ dependencies = [
[[package]]
name = "ethers-solc"
version = "2.0.8"
-source = "git+https://github.com/gakonst/ethers-rs#594627dc1c3b490ba8f513f8f5e23d11448cbcf8"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "7a6c2b9625a2c639d46625f88acc2092a3cb35786c37f7c2128b3ca20f639b3c"
+dependencies = [
+ "cfg-if",
+ "dunce",
+ "ethers-core 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glob",
+ "hex",
+ "home",
+ "md-5 0.10.5",
+ "num_cpus",
+ "once_cell",
+ "path-slash",
+ "rayon",
+ "regex",
+ "semver 1.0.18",
+ "serde",
+ "serde_json",
+ "solang-parser",
+ "svm-rs 0.2.23",
+ "thiserror",
+ "tiny-keccak",
+ "tokio",
+ "tracing",
+ "walkdir",
+ "yansi 0.5.1",
+]
+
+[[package]]
+name = "ethers-solc"
+version = "2.0.8"
+source = "git+https://github.com/gakonst/ethers-rs#5145992e4b03fdaebcc4d35aa7ee44504ca82b5a"
dependencies = [
"cfg-if",
"dirs 5.0.1",
"dunce",
- "ethers-core",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"fs_extra",
"futures-util",
"glob",
@@ -1990,12 +2422,12 @@ dependencies = [
"rand 0.8.5",
"rayon",
"regex",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"sha2 0.10.7",
"solang-parser",
- "svm-rs",
+ "svm-rs 0.3.0",
"svm-rs-builds",
"tempfile",
"thiserror",
@@ -2032,15 +2464,6 @@ dependencies = [
"once_cell",
]
-[[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"
@@ -2068,7 +2491,7 @@ dependencies = [
"bytes",
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -2078,7 +2501,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5"
dependencies = [
"cfg-if",
- "rustix 0.38.3",
+ "rustix 0.38.7",
"windows-sys 0.48.0",
]
@@ -2119,13 +2542,13 @@ dependencies = [
[[package]]
name = "filetime"
-version = "0.2.21"
+version = "0.2.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153"
+checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0"
dependencies = [
"cfg-if",
"libc",
- "redox_syscall 0.2.16",
+ "redox_syscall 0.3.5",
"windows-sys 0.48.0",
]
@@ -2183,7 +2606,7 @@ name = "forge"
version = "0.2.0"
dependencies = [
"comfy-table",
- "ethers",
+ "ethers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"foundry-common",
"foundry-config",
@@ -2197,7 +2620,7 @@ dependencies = [
"rayon",
"regex",
"rlp",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"tokio",
@@ -2211,10 +2634,10 @@ name = "forge-doc"
version = "0.1.0"
dependencies = [
"auto_impl",
- "clap 4.3.11",
+ "clap 4.3.21",
"derive_more",
- "ethers-core",
- "ethers-solc",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"forge-fmt",
"foundry-common",
@@ -2240,11 +2663,11 @@ name = "forge-fmt"
version = "0.2.0"
dependencies = [
"ariadne",
- "ethers-core",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"foundry-config",
"itertools",
"pretty_assertions",
- "semver",
+ "semver 1.0.18",
"solang-parser",
"thiserror",
"toml 0.7.6",
@@ -2265,13 +2688,13 @@ dependencies = [
name = "foundry-abi"
version = "0.1.0"
dependencies = [
- "ethers-contract",
- "ethers-contract-abigen",
- "ethers-core",
- "ethers-providers",
+ "ethers-contract 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-contract-abigen 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-providers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"foundry-macros",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -2279,8 +2702,8 @@ name = "foundry-binder"
version = "0.1.0"
dependencies = [
"curl",
- "ethers-contract",
- "ethers-solc",
+ "ethers-contract 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"foundry-config",
"git2",
@@ -2293,20 +2716,24 @@ dependencies = [
name = "foundry-cli"
version = "0.2.0"
dependencies = [
+ "ansi_term",
"anvil",
+ "anyhow",
"async-trait",
"bytes",
"cast 0.2.0",
- "clap 4.3.11",
+ "clap 4.3.21",
"clap_complete",
"clap_complete_fig",
"color-eyre",
"comfy-table",
"criterion",
"dialoguer",
+ "dirs 5.0.1",
"dotenvy",
"dunce",
- "ethers",
+ "ethabi",
+ "ethers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"forge",
"forge-doc",
@@ -2324,6 +2751,7 @@ dependencies = [
"once_cell",
"parking_lot",
"path-slash",
+ "pkg-config",
"pretty_assertions",
"proptest",
"rayon",
@@ -2331,7 +2759,7 @@ dependencies = [
"reqwest",
"rpassword",
"rustc-hex",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"serial_test",
@@ -2339,7 +2767,7 @@ dependencies = [
"solang-parser",
"strsim",
"strum 0.25.0",
- "svm-rs",
+ "svm-rs 0.3.0",
"tempfile",
"thiserror",
"tokio",
@@ -2348,18 +2776,21 @@ dependencies = [
"tracing-error",
"tracing-subscriber",
"ui",
+ "uint",
+ "url",
"vergen",
"walkdir",
"watchexec",
"yansi 0.5.1",
+ "zksync-web3-rs",
]
[[package]]
name = "foundry-cli-test-utils"
version = "0.1.0"
dependencies = [
- "ethers",
- "ethers-solc",
+ "ethers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"foundry-common",
"foundry-config",
@@ -2377,14 +2808,14 @@ name = "foundry-common"
version = "0.1.0"
dependencies = [
"auto_impl",
- "clap 4.3.11",
+ "clap 4.3.21",
"comfy-table",
"dunce",
- "ethers-core",
- "ethers-etherscan",
- "ethers-middleware",
- "ethers-providers",
- "ethers-solc",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-etherscan 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-middleware 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-providers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"foundry-config",
"foundry-macros",
@@ -2392,7 +2823,7 @@ dependencies = [
"once_cell",
"regex",
"reqwest",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"tempfile",
@@ -2409,9 +2840,9 @@ version = "0.2.0"
dependencies = [
"Inflector",
"dirs-next",
- "ethers-core",
- "ethers-etherscan",
- "ethers-solc",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-etherscan 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"figment",
"globset",
@@ -2422,7 +2853,7 @@ dependencies = [
"pretty_assertions",
"regex",
"reqwest",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"serde_regex",
@@ -2440,7 +2871,7 @@ version = "0.2.0"
dependencies = [
"auto_impl",
"bytes",
- "ethers",
+ "ethers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"foundry-abi",
"foundry-common",
@@ -2457,7 +2888,7 @@ dependencies = [
"parking_lot",
"proptest",
"revm",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"tempfile",
@@ -2473,7 +2904,7 @@ dependencies = [
name = "foundry-macros"
version = "0.2.0"
dependencies = [
- "ethers-core",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"foundry-macros-impl",
"serde",
"serde_json",
@@ -2485,7 +2916,7 @@ version = "0.0.0"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -2493,12 +2924,12 @@ name = "foundry-utils"
version = "0.2.0"
dependencies = [
"dunce",
- "ethers-addressbook",
- "ethers-contract",
- "ethers-core",
- "ethers-etherscan",
- "ethers-providers",
- "ethers-solc",
+ "ethers-addressbook 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-contract 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-core 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-etherscan 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-providers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
+ "ethers-solc 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"forge-fmt",
"foundry-common",
@@ -2624,7 +3055,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -2768,9 +3199,9 @@ dependencies = [
[[package]]
name = "gix-config-value"
-version = "0.12.3"
+version = "0.12.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83960be5e99266bcf55dae5a24731bbd39f643bfb68f27e939d6b06836b5b87d"
+checksum = "6e874f41437441c02991dcea76990b9058fadfc54b02ab4dd06ab2218af43897"
dependencies = [
"bitflags 2.3.3",
"bstr",
@@ -2788,7 +3219,7 @@ dependencies = [
"bstr",
"itoa",
"thiserror",
- "time 0.3.23",
+ "time 0.3.25",
]
[[package]]
@@ -2826,9 +3257,9 @@ dependencies = [
[[package]]
name = "gix-hash"
-version = "0.11.3"
+version = "0.11.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a0dd58cdbe7ffa4032fc111864c80d5f8cecd9a2c9736c97ae7e5be834188272"
+checksum = "4b422ff2ad9a0628baaad6da468cf05385bf3f5ab495ad5a33cce99b9f41092f"
dependencies = [
"hex",
"thiserror",
@@ -2866,9 +3297,9 @@ dependencies = [
[[package]]
name = "gix-path"
-version = "0.8.3"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dfca182d2575ded2ed38280f1ebf75cd5d3790b77e0872de07854cf085821fbe"
+checksum = "18609c8cbec8508ea97c64938c33cd305b75dfc04a78d0c3b78b8b3fd618a77c"
dependencies = [
"bstr",
"gix-trace",
@@ -2899,9 +3330,9 @@ dependencies = [
[[package]]
name = "gix-sec"
-version = "0.8.3"
+version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ede298863db2a0574a14070991710551e76d1f47c9783b62d4fcbca17f56371c"
+checksum = "9615cbd6b456898aeb942cd75e5810c382fbfc48dbbff2fa23ebd2d33dcbe9c7"
dependencies = [
"bitflags 2.3.3",
"gix-path",
@@ -2924,24 +3355,24 @@ dependencies = [
[[package]]
name = "gix-trace"
-version = "0.1.2"
+version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "103eac621617be3ebe0605c9065ca51a223279a23218aaf67d10daa6e452f663"
+checksum = "96b6d623a1152c3facb79067d6e2ecdae48130030cf27d6eb21109f13bd7b836"
[[package]]
name = "gix-utils"
-version = "0.1.4"
+version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7058c94f4164fcf5b8457d35f6d8f6e1007f9f7f938c9c7684a7e01d23c6ddde"
+checksum = "b85d89dc728613e26e0ed952a19583744e7f5240fcd4aa30d6c824ffd8b52f0f"
dependencies = [
- "fastrand 2.0.0",
+ "fastrand",
]
[[package]]
name = "gix-validate"
-version = "0.7.6"
+version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8d092b594c8af00a3a31fe526d363ee8a51a6f29d8496cdb991ed2f01ec0ec13"
+checksum = "ba9b3737b2cef3dcd014633485f0034b0f1a931ee54aeb7d8f87f177f3c89040"
dependencies = [
"bstr",
"thiserror",
@@ -2955,11 +3386,11 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
[[package]]
name = "globset"
-version = "0.4.10"
+version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "029d74589adefde59de1a0c4f4732695c32805624aec7b68d91503d4dba79afc"
+checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d"
dependencies = [
- "aho-corasick 0.7.20",
+ "aho-corasick",
"bstr",
"fnv",
"log",
@@ -3216,9 +3647,9 @@ dependencies = [
[[package]]
name = "http-range-header"
-version = "0.3.0"
+version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29"
+checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f"
[[package]]
name = "httparse"
@@ -3286,7 +3717,7 @@ dependencies = [
"futures-util",
"http",
"hyper",
- "rustls 0.21.5",
+ "rustls 0.21.6",
"tokio",
"tokio-rustls 0.24.1",
]
@@ -3438,9 +3869,9 @@ dependencies = [
[[package]]
name = "indicatif"
-version = "0.17.5"
+version = "0.17.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8ff8cc23a7393a397ed1d7f56e6365cba772aba9f9912ab968b03043c395d057"
+checksum = "0b297dc40733f23a0e52728a58fa9489a5b7638a324932de16b41adc3ef80730"
dependencies = [
"console",
"instant",
@@ -3517,7 +3948,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b"
dependencies = [
"hermit-abi 0.3.2",
- "rustix 0.38.3",
+ "rustix 0.38.7",
"windows-sys 0.48.0",
]
@@ -3532,9 +3963,9 @@ dependencies = [
[[package]]
name = "itoa"
-version = "1.0.8"
+version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62b02a5381cc465bd3041d84623d0fa3b66738b52b8e2fc3bab8ad63ab032f4a"
+checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
[[package]]
name = "jobserver"
@@ -3565,6 +3996,20 @@ dependencies = [
"serde_json",
]
+[[package]]
+name = "jsonwebtoken"
+version = "8.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378"
+dependencies = [
+ "base64 0.21.2",
+ "pem",
+ "ring",
+ "serde",
+ "serde_json",
+ "simple_asn1",
+]
+
[[package]]
name = "k256"
version = "0.13.1"
@@ -3601,9 +4046,9 @@ dependencies = [
[[package]]
name = "kqueue"
-version = "1.0.7"
+version = "1.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98"
+checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c"
dependencies = [
"kqueue-sys",
"libc",
@@ -3611,9 +4056,9 @@ dependencies = [
[[package]]
name = "kqueue-sys"
-version = "1.0.3"
+version = "1.0.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587"
+checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
dependencies = [
"bitflags 1.3.2",
"libc",
@@ -3682,9 +4127,9 @@ checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
[[package]]
name = "libnghttp2-sys"
-version = "0.1.7+1.45.0"
+version = "0.1.8+1.55.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "57ed28aba195b38d5ff02b9170cbff627e336a20925e43b4945390401c5dc93f"
+checksum = "4fae956c192dadcdb5dace96db71fa0b827333cce7c7b38dc71446f024d8a340"
dependencies = [
"cc",
"libc",
@@ -3704,9 +4149,9 @@ dependencies = [
[[package]]
name = "libz-sys"
-version = "1.1.9"
+version = "1.1.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db"
+checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b"
dependencies = [
"cc",
"libc",
@@ -3722,9 +4167,9 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
[[package]]
name = "linux-raw-sys"
-version = "0.4.3"
+version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "09fc20d2ca12cb9f044c93e3bd6d32d523e6e2ec3db4f7b2939cd99026ecd3f0"
+checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503"
[[package]]
name = "lock_api"
@@ -3817,14 +4262,14 @@ dependencies = [
[[package]]
name = "mdbook"
-version = "0.4.31"
+version = "0.4.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7b67ee4a744f36e6280792016c17e69921b51df357181d1eb17d620fcc3609f3"
+checksum = "c55eb7c4dad20cc5bc15181c2aaf43d5689d5c3e0b80b50cc4cf0b7fe72a26d9"
dependencies = [
"ammonia",
"anyhow",
"chrono",
- "clap 4.3.11",
+ "clap 4.3.21",
"clap_complete",
"elasticlunr-rs",
"env_logger",
@@ -3889,9 +4334,9 @@ dependencies = [
[[package]]
name = "miette"
-version = "5.9.0"
+version = "5.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a236ff270093b0b67451bc50a509bd1bad302cb1d3c7d37d5efe931238581fa9"
+checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e"
dependencies = [
"miette-derive",
"once_cell",
@@ -3901,13 +4346,13 @@ dependencies = [
[[package]]
name = "miette-derive"
-version = "5.9.0"
+version = "5.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4901771e1d44ddb37964565c654a3223ba41a594d02b8da471cc4464912b5cfa"
+checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -4022,6 +4467,15 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5438dd2b2ff4c6df6e1ce22d825ed2fa93ee2922235cc45186991717f0a892d"
+[[package]]
+name = "normpath"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ec60c60a693226186f5d6edf073232bfb6464ed97eb22cf3b01c1e8198fd97f5"
+dependencies = [
+ "windows-sys 0.48.0",
+]
+
[[package]]
name = "notify"
version = "5.2.0"
@@ -4052,9 +4506,9 @@ dependencies = [
[[package]]
name = "num"
-version = "0.4.0"
+version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606"
+checksum = "b05180d69e3da0e530ba2a1dae5110317e49e3b7f3d41be227dc5f92e49ee7af"
dependencies = [
"num-bigint",
"num-complex",
@@ -4119,9 +4573,9 @@ dependencies = [
[[package]]
name = "num-traits"
-version = "0.2.15"
+version = "0.2.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
+checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
dependencies = [
"autocfg",
"libm",
@@ -4155,7 +4609,7 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -4227,19 +4681,20 @@ dependencies = [
[[package]]
name = "opener"
-version = "0.5.2"
+version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "293c15678e37254c15bd2f092314abb4e51d7fdde05c2021279c12631b54f005"
+checksum = "6c62dcb6174f9cb326eac248f07e955d5d559c272730b6c03e396b443b562788"
dependencies = [
"bstr",
+ "normpath",
"winapi",
]
[[package]]
name = "openssl"
-version = "0.10.55"
+version = "0.10.56"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d"
+checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e"
dependencies = [
"bitflags 1.3.2",
"cfg-if",
@@ -4258,7 +4713,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -4269,9 +4724,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "openssl-sys"
-version = "0.9.90"
+version = "0.9.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6"
+checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac"
dependencies = [
"cc",
"libc",
@@ -4314,9 +4769,9 @@ checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
[[package]]
name = "parity-scale-codec"
-version = "3.6.3"
+version = "3.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "756d439303e94fae44f288ba881ad29670c65b0c4b0e05674ca81061bb65f2c5"
+checksum = "dd8e946cc0cc711189c0b0249fb8b599cbeeab9784d83c415719368bb8d4ac64"
dependencies = [
"arrayvec",
"bitvec 1.0.1",
@@ -4328,9 +4783,9 @@ dependencies = [
[[package]]
name = "parity-scale-codec-derive"
-version = "3.6.3"
+version = "3.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d884d78fcf214d70b1e239fcd1c6e5e95aa3be1881918da2e488cc946c7a476"
+checksum = "2a296c3079b5fefbc499e1de58dc26c09b1b9a5952d26694ee89f04a43ebbb3e"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -4411,6 +4866,12 @@ dependencies = [
"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"
@@ -4459,7 +4920,16 @@ dependencies = [
"proc-macro2",
"proc-macro2-diagnostics",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
+]
+
+[[package]]
+name = "pem"
+version = "1.1.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a8835c273a76a90455d7344889b0964598e3316e2a79ede8e36f16bdcf2228b8"
+dependencies = [
+ "base64 0.13.1",
]
[[package]]
@@ -4470,9 +4940,9 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94"
[[package]]
name = "pest"
-version = "2.7.0"
+version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f73935e4d55e2abf7f130186537b19e7a4abc886a0252380b59248af473a3fc9"
+checksum = "1acb4a4365a13f749a93f1a094a7805e5cfa0955373a9de860d962eaa3a5fe5a"
dependencies = [
"thiserror",
"ucd-trie",
@@ -4480,9 +4950,9 @@ dependencies = [
[[package]]
name = "pest_derive"
-version = "2.7.0"
+version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "aef623c9bbfa0eedf5a0efba11a5ee83209c326653ca31ff019bec3a95bfff2b"
+checksum = "666d00490d4ac815001da55838c500eafb0320019bbaa44444137c48b443a853"
dependencies = [
"pest",
"pest_generator",
@@ -4490,22 +4960,22 @@ dependencies = [
[[package]]
name = "pest_generator"
-version = "2.7.0"
+version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b3e8cba4ec22bada7fc55ffe51e2deb6a0e0db2d0b7ab0b103acc80d2510c190"
+checksum = "68ca01446f50dbda87c1786af8770d535423fa8a53aec03b8f4e3d7eb10e0929"
dependencies = [
"pest",
"pest_meta",
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
name = "pest_meta"
-version = "2.7.0"
+version = "2.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a01f71cb40bd8bb94232df14b946909e14660e33fc05db3e50ae2a82d7ea0ca0"
+checksum = "56af0a30af74d0445c0bf6d9d051c979b516a1a5af790d251daee76005420a48"
dependencies = [
"once_cell",
"pest",
@@ -4529,7 +4999,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414"
dependencies = [
"futures",
- "rustc_version",
+ "rustc_version 0.4.0",
]
[[package]]
@@ -4601,7 +5071,7 @@ dependencies = [
"phf_shared 0.11.2",
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -4624,29 +5094,29 @@ dependencies = [
[[package]]
name = "pin-project"
-version = "1.1.2"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "030ad2bc4db10a8944cb0d837f158bdfec4d4a4873ab701a95046770d11f8842"
+checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
-version = "1.1.2"
+version = "1.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ec2e072ecce94ec471b13398d5402c188e76ac03cf74dd1a975161b23a3f6d9c"
+checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
name = "pin-project-lite"
-version = "0.2.10"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "4c40d25201921e5ff0c862a505c6557ea88568a4e3ace775ab55e93f2f4f9d57"
+checksum = "2c516611246607d0c04186886dbb3a754368ef82c79e9827a802c6d836dd111c"
[[package]]
name = "pin-utils"
@@ -4700,9 +5170,9 @@ dependencies = [
[[package]]
name = "portable-atomic"
-version = "1.3.3"
+version = "1.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "767eb9f07d4a5ebcb39bbf2d452058a93c011373abf6832e24194a1c3f004794"
+checksum = "f32154ba0af3a075eefa1eda8bb414ee928f62303a54ea85b8d6638ff1a6ee9e"
[[package]]
name = "ppv-lite86"
@@ -4728,12 +5198,12 @@ dependencies = [
[[package]]
name = "prettyplease"
-version = "0.2.10"
+version = "0.2.12"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "92139198957b410250d43fad93e630d956499a625c527eda65175c8680f83387"
+checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62"
dependencies = [
"proc-macro2",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -4786,9 +5256,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
-version = "1.0.64"
+version = "1.0.66"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da"
+checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9"
dependencies = [
"unicode-ident",
]
@@ -4801,7 +5271,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
"version_check",
"yansi 1.0.0-rc",
]
@@ -4876,9 +5346,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0"
[[package]]
name = "quote"
-version = "1.0.29"
+version = "1.0.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105"
+checksum = "50f3b39ccfb720540debaa0164757101c08ecb8d326b15358ce76a62c7e85965"
dependencies = [
"proc-macro2",
]
@@ -5052,13 +5522,13 @@ dependencies = [
[[package]]
name = "regex"
-version = "1.9.1"
+version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "b2eae68fc220f7cf2532e4494aded17545fce192d59cd996e0fe7887f4ceb575"
+checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a"
dependencies = [
- "aho-corasick 1.0.2",
+ "aho-corasick",
"memchr",
- "regex-automata 0.3.2",
+ "regex-automata 0.3.6",
"regex-syntax 0.7.4",
]
@@ -5073,11 +5543,11 @@ dependencies = [
[[package]]
name = "regex-automata"
-version = "0.3.2"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "83d3daa6976cffb758ec878f108ba0e062a45b2d6ca3a2cca965338855476caf"
+checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69"
dependencies = [
- "aho-corasick 1.0.2",
+ "aho-corasick",
"memchr",
"regex-syntax 0.7.4",
]
@@ -5119,7 +5589,7 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
- "rustls 0.21.5",
+ "rustls 0.21.6",
"rustls-native-certs",
"rustls-pemfile",
"serde",
@@ -5277,24 +5747,32 @@ dependencies = [
[[package]]
name = "ruint"
-version = "1.8.0"
+version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "9d470e29e933dac4101180fd6574971892315c414cf2961a192729089687cc9b"
+checksum = "95294d6e3a6192f3aabf91c38f56505a625aa495533442744185a36d75a790c4"
dependencies = [
- "derive_more",
+ "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",
- "rustc_version",
"serde",
- "thiserror",
+ "valuable",
+ "zeroize",
]
[[package]]
name = "ruint-macro"
-version = "1.0.2"
+version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "62cc5760263ea229d367e7dff3c0cbf09e4797a125bd87059a6c095804f3b2d1"
+checksum = "e666a5496a0b2186dbcd0ff6106e29e093c15591bde62c20d3842007c6978a09"
[[package]]
name = "rusb"
@@ -5324,7 +5802,7 @@ dependencies = [
"log",
"rusoto_credential",
"rusoto_signature",
- "rustc_version",
+ "rustc_version 0.4.0",
"serde",
"serde_json",
"tokio",
@@ -5383,7 +5861,7 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"rusoto_credential",
- "rustc_version",
+ "rustc_version 0.4.0",
"serde",
"sha2 0.9.9",
"tokio",
@@ -5401,13 +5879,22 @@ 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",
+ "semver 1.0.18",
]
[[package]]
@@ -5426,14 +5913,14 @@ dependencies = [
[[package]]
name = "rustix"
-version = "0.38.3"
+version = "0.38.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ac5ffa1efe7548069688cd7028f32591853cd7b5b756d41bcffd2353e4fc75b4"
+checksum = "172891ebdceb05aa0005f533a6cbfca599ddd7d966f6f5d4d9b2e70478e70399"
dependencies = [
"bitflags 2.3.3",
"errno",
"libc",
- "linux-raw-sys 0.4.3",
+ "linux-raw-sys 0.4.5",
"windows-sys 0.48.0",
]
@@ -5451,13 +5938,13 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.21.5"
+version = "0.21.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "79ea77c539259495ce8ca47f53e66ae0330a8819f67e23ac96ca02f50e7b7d36"
+checksum = "1d1feddffcfcc0b33f5c6ce9a29e341e4cd59c3f78e7ee45f4a40c038b1d6cbb"
dependencies = [
"log",
"ring",
- "rustls-webpki 0.101.1",
+ "rustls-webpki 0.101.3",
"sct",
]
@@ -5494,9 +5981,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
-version = "0.101.1"
+version = "0.101.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15f36a6828982f422756984e47912a7a51dcbc2a197aa791158f8ca61cd8204e"
+checksum = "261e9e0888cba427c3316e6322805653c9425240b6fd96cee7cb671ab70ab8d0"
dependencies = [
"ring",
"untrusted",
@@ -5504,9 +5991,9 @@ dependencies = [
[[package]]
name = "rustversion"
-version = "1.0.13"
+version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "dc31bd9b61a32c31f9650d18add92aa83a49ba979c143eefd27fe7177b05bd5f"
+checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4"
[[package]]
name = "rusty-fork"
@@ -5545,9 +6032,9 @@ dependencies = [
[[package]]
name = "ryu"
-version = "1.0.14"
+version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "fe232bdf6be8c8de797b22184ee71118d63780ea42ac85b61d1baa6d3b782ae9"
+checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
[[package]]
name = "salsa20"
@@ -5608,9 +6095,9 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294"
[[package]]
name = "scopeguard"
-version = "1.1.0"
+version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
+checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
[[package]]
name = "scrypt"
@@ -5636,9 +6123,9 @@ dependencies = [
[[package]]
name = "sec1"
-version = "0.7.2"
+version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f0aec48e813d6b90b15f0b8948af3c63483992dee44c03e9930b3eebdabe046e"
+checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc"
dependencies = [
"base16ct",
"der",
@@ -5668,9 +6155,9 @@ dependencies = [
[[package]]
name = "security-framework"
-version = "2.9.1"
+version = "2.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "1fc758eb7bffce5b308734e9b0c1468893cae9ff70ebf13e7090be8dcbcc83a8"
+checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de"
dependencies = [
"bitflags 1.3.2",
"core-foundation",
@@ -5681,9 +6168,9 @@ dependencies = [
[[package]]
name = "security-framework-sys"
-version = "2.9.0"
+version = "2.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "f51d0c0d83bec45f16480d0ce0058397a69e48fcdc52d1dc8855fb68acbd31a7"
+checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a"
dependencies = [
"core-foundation-sys",
"libc",
@@ -5691,13 +6178,31 @@ dependencies = [
[[package]]
name = "semver"
-version = "1.0.17"
+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 = "bebd363326d05ec3e2f532ab7660680f3b02130d780c299bca73469d521bc0ed"
+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"
@@ -5712,9 +6217,9 @@ checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73"
[[package]]
name = "serde"
-version = "1.0.171"
+version = "1.0.183"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "30e27d1e4fd7659406c492fd6cfaf2066ba8773de45ca75e855590f856dc34a9"
+checksum = "32ac8da02677876d532745a130fc9d8e6edfa81a269b107c5b00829b91d8eb3c"
dependencies = [
"serde_derive",
]
@@ -5732,20 +6237,20 @@ dependencies = [
[[package]]
name = "serde_derive"
-version = "1.0.171"
+version = "1.0.183"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "389894603bd18c46fa56231694f8d827779c0951a667087194cf9de94ed24682"
+checksum = "aafe972d60b0b9bee71a91b92fee2d4fb3c9d7e8f6b179aa99f27203d99a4816"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
name = "serde_json"
-version = "1.0.100"
+version = "1.0.104"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "0f1e14e89be7aa4c4b78bdbdc9eb5bf8517829a600ae8eaa39a6e1d960b5185c"
+checksum = "076066c5f1078eac5b722a31827a8832fe108bed65dfa75e233c89f8206e976c"
dependencies = [
"indexmap 2.0.0",
"itoa",
@@ -5806,7 +6311,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -5894,9 +6399,9 @@ checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
[[package]]
name = "signal-hook"
-version = "0.3.15"
+version = "0.3.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "732768f1176d21d09e076c23a93123d40bba92d50c4058da34d45c8de8e682b9"
+checksum = "8621587d4798caf8eb44879d42e56b9a93ea5dcd315a6487c357130095b62801"
dependencies = [
"libc",
"signal-hook-registry",
@@ -5938,6 +6443,18 @@ version = "2.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf"
+[[package]]
+name = "simple_asn1"
+version = "0.6.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085"
+dependencies = [
+ "num-bigint",
+ "num-traits",
+ "thiserror",
+ "time 0.3.25",
+]
+
[[package]]
name = "siphasher"
version = "0.3.10"
@@ -5968,6 +6485,15 @@ version = "1.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9"
+[[package]]
+name = "smol_str"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "74212e6bbe9a4352329b2f68ba3130c15a3f26fe88ff22dbdc6cdd58fa85e99c"
+dependencies = [
+ "serde",
+]
+
[[package]]
name = "socket2"
version = "0.4.9"
@@ -6064,7 +6590,7 @@ version = "0.25.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125"
dependencies = [
- "strum_macros 0.25.1",
+ "strum_macros 0.25.2",
]
[[package]]
@@ -6082,15 +6608,15 @@ dependencies = [
[[package]]
name = "strum_macros"
-version = "0.25.1"
+version = "0.25.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6069ca09d878a33f883cc06aaa9718ede171841d3832450354410b718b097232"
+checksum = "ad8d03b598d3d0fff69bf533ee3ef19b8eeb342729596df84bcc7e1f96ec4059"
dependencies = [
"heck",
"proc-macro2",
"quote",
"rustversion",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -6112,6 +6638,26 @@ version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601"
+[[package]]
+name = "svm-rs"
+version = "0.2.23"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "3a04fc4f5cd35c700153b233f5575ccb3237e0f941fa5049d9e98254d10bf2fe"
+dependencies = [
+ "fs2",
+ "hex",
+ "home",
+ "once_cell",
+ "reqwest",
+ "semver 1.0.18",
+ "serde",
+ "serde_json",
+ "sha2 0.10.7",
+ "thiserror",
+ "url",
+ "zip",
+]
+
[[package]]
name = "svm-rs"
version = "0.3.0"
@@ -6123,7 +6669,7 @@ dependencies = [
"hex",
"once_cell",
"reqwest",
- "semver",
+ "semver 1.0.18",
"serde",
"serde_json",
"sha2 0.10.7",
@@ -6140,9 +6686,9 @@ checksum = "2271abd7d01895a3e5bfa4b578e32f09155002ce1ec239532e297f82aafad06b"
dependencies = [
"build_const",
"hex",
- "semver",
+ "semver 1.0.18",
"serde_json",
- "svm-rs",
+ "svm-rs 0.3.0",
]
[[package]]
@@ -6158,9 +6704,9 @@ dependencies = [
[[package]]
name = "syn"
-version = "2.0.25"
+version = "2.0.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2"
+checksum = "04361975b3f5e348b2189d8dc55bc942f278b2d482a6a0365de5bdd62d351567"
dependencies = [
"proc-macro2",
"quote",
@@ -6193,15 +6739,14 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369"
[[package]]
name = "tempfile"
-version = "3.6.0"
+version = "3.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "31c0432476357e58790aaa47a8efb0c5138f137343f3b5f23bd36a27e3b0a6d6"
+checksum = "dc02fddf48964c42031a0b3fe0428320ecf3a73c401040fc0096f97794310651"
dependencies = [
- "autocfg",
"cfg-if",
- "fastrand 1.9.0",
+ "fastrand",
"redox_syscall 0.3.5",
- "rustix 0.37.23",
+ "rustix 0.38.7",
"windows-sys 0.48.0",
]
@@ -6267,22 +6812,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
[[package]]
name = "thiserror"
-version = "1.0.43"
+version = "1.0.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a35fc5b8971143ca348fa6df4f024d4d55264f3468c71ad1c2f365b0a4d58c42"
+checksum = "611040a08a0439f8248d1990b111c95baa9c704c805fa1f62104b39655fd7f90"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
-version = "1.0.43"
+version = "1.0.44"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "463fe12d7993d3b327787537ce8dd4dfa058de32fc2b195ef3cde03dc4771e8f"
+checksum = "090198534930841fab3a5d1bb637cde49e339654e606195f8d9c76eeb081dc96"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -6308,10 +6853,11 @@ dependencies = [
[[package]]
name = "time"
-version = "0.3.23"
+version = "0.3.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446"
+checksum = "b0fdd63d58b18d663fbdf70e049f00a22c8e42be082203be7f26589213cd75ea"
dependencies = [
+ "deranged",
"itoa",
"libc",
"num_threads",
@@ -6328,9 +6874,9 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
[[package]]
name = "time-macros"
-version = "0.2.10"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "96ba15a897f3c86766b757e5ac7221554c6750054d74d5b28844fce5fb36a6c4"
+checksum = "eb71511c991639bb078fd5bf97757e03914361c48100d52878b8e52b46fb92cd"
dependencies = [
"time-core",
]
@@ -6397,7 +6943,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -6427,7 +6973,7 @@ version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
dependencies = [
- "rustls 0.21.5",
+ "rustls 0.21.6",
"tokio",
]
@@ -6475,7 +7021,7 @@ dependencies = [
"futures-util",
"log",
"native-tls",
- "rustls 0.21.5",
+ "rustls 0.21.6",
"tokio",
"tokio-native-tls",
"tokio-rustls 0.24.1",
@@ -6530,9 +7076,9 @@ dependencies = [
[[package]]
name = "toml_edit"
-version = "0.19.12"
+version = "0.19.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "c500344a19072298cd05a7224b3c0c629348b78692bf48466c5238656e315a78"
+checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a"
dependencies = [
"indexmap 2.0.0",
"serde",
@@ -6584,9 +7130,9 @@ dependencies = [
[[package]]
name = "tower-http"
-version = "0.4.1"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a8bd22a874a2d0b70452d5597b12c537331d49060824a95f49f108994f94aa4c"
+checksum = "55ae70283aba8d2a8b411c695c437fe25b8b5e44e23e780662002fc72fb47a82"
dependencies = [
"bitflags 2.3.3",
"bytes",
@@ -6634,7 +7180,7 @@ checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
]
[[package]]
@@ -6814,7 +7360,7 @@ dependencies = [
"log",
"native-tls",
"rand 0.8.5",
- "rustls 0.21.5",
+ "rustls 0.21.6",
"sha1",
"thiserror",
"url",
@@ -6839,7 +7385,7 @@ name = "ui"
version = "0.2.0"
dependencies = [
"crossterm 0.26.1",
- "ethers",
+ "ethers 2.0.8 (git+https://github.com/gakonst/ethers-rs)",
"eyre",
"forge",
"foundry-common",
@@ -6898,9 +7444,9 @@ checksum = "98e90c70c9f0d4d1ee6d0a7d04aa06cb9bbd53d8cfbdd62a0269a7c2eb640552"
[[package]]
name = "unicode-ident"
-version = "1.0.10"
+version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73"
+checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c"
[[package]]
name = "unicode-normalization"
@@ -6989,7 +7535,7 @@ dependencies = [
"anyhow",
"git2",
"rustversion",
- "time 0.3.23",
+ "time 0.3.25",
]
[[package]]
@@ -7095,7 +7641,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
"wasm-bindgen-shared",
]
@@ -7129,7 +7675,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
- "syn 2.0.25",
+ "syn 2.0.28",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -7411,9 +7957,9 @@ checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a"
[[package]]
name = "winnow"
-version = "0.4.9"
+version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "81a2094c43cc94775293eaa0e499fbc30048a6d824ac82c0351a8c0bf9112529"
+checksum = "acaaa1190073b2b101e15083c38ee8ec891b5e05cbee516521e94ec008f61e64"
dependencies = [
"memchr",
]
@@ -7438,7 +7984,7 @@ dependencies = [
"js-sys",
"log",
"pharos",
- "rustc_version",
+ "rustc_version 0.4.0",
"send_wrapper 0.6.0",
"thiserror",
"wasm-bindgen",
@@ -7457,9 +8003,9 @@ dependencies = [
[[package]]
name = "xml-rs"
-version = "0.8.15"
+version = "0.8.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "5a56c84a8ccd4258aed21c92f70c0f6dea75356b6892ae27c24139da456f9336"
+checksum = "47430998a7b5d499ccee752b41567bc3afc57e1327dc855b1a2aa44ce29b5fa1"
[[package]]
name = "yansi"
@@ -7478,6 +8024,20 @@ 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.28",
+]
[[package]]
name = "zip"
@@ -7495,10 +8055,29 @@ dependencies = [
"hmac 0.12.1",
"pbkdf2 0.11.0",
"sha1",
- "time 0.3.23",
+ "time 0.3.25",
"zstd",
]
+[[package]]
+name = "zksync-web3-rs"
+version = "0.1.0"
+source = "git+https://github.com/lambdaclass/zksync-web3-rs.git?rev=70327ae5413c517bd4d27502507cdd96ee40cd22#70327ae5413c517bd4d27502507cdd96ee40cd22"
+dependencies = [
+ "async-trait",
+ "clap 4.3.21",
+ "env_logger",
+ "ethers 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "ethers-contract 2.0.8 (registry+https://github.com/rust-lang/crates.io-index)",
+ "hex",
+ "log",
+ "serde",
+ "serde_json",
+ "sha2 0.9.9",
+ "thiserror",
+ "tokio",
+]
+
[[package]]
name = "zstd"
version = "0.11.2+zstd.1.5.2"
diff --git a/Cargo.toml b/Cargo.toml
index 251b2ce17..519fa4ca3 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -47,18 +47,18 @@ opt-level = 3
debug = 0
panic = 'unwind'
# better recompile times
-incremental = true
codegen-units = 16
+incremental = true
[profile.release]
# Optimize for binary size, but keep loop vectorization
opt-level = "s"
# Performance optimizations
-lto = "fat"
+codegen-units = 1
debug = 0
-strip = true
+lto = "fat"
panic = "abort"
-codegen-units = 1
+strip = true
[workspace.dependencies]
ethers = { git = "https://github.com/gakonst/ethers-rs", default-features = false }
diff --git a/README.md b/README.md
index 546b57ec8..176236ccd 100644
--- a/README.md
+++ b/README.md
@@ -1,138 +1,768 @@
-
+# Foundry with zkSync Era v0.1
-## Foundry
+This repository provides [Foundry](https://github.com/foundry-rs/foundry) functionality in Solidity for compiling, deploying, and interacting with smart contracts on zkSync Era.
-![Github Actions][gha-badge] [![Telegram Chat][tg-badge]][tg-url] [![Telegram Support][tg-support-badge]][tg-support-url]
+### Supported features
-[gha-badge]: https://img.shields.io/github/actions/workflow/status/foundry-rs/foundry/test.yml?branch=master
-[tg-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=chat&style=flat-square&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Ffoundry_rs
-[tg-url]: https://t.me/foundry_rs
-[tg-support-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=support&style=flat-square&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Ffoundry_support
-[tg-support-url]: https://t.me/foundry_support
+- Compile smart contracts with the [zksolc compiler](https://github.com/matter-labs/zksolc-bin).
+- Deploy smart contracts to zkSync Era mainnet, testnet, or local test node.
+- Bridge assets L1 <-> L2.
+- Call deployed contracts on zkSync Era testnet or local test node.
+- Send transactions to deployed contracts on zkSync Era testnet or local test node.
-**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**
+---
-Foundry consists of:
+## Contents
-- [**Forge**](./forge): Ethereum testing framework (like Truffle, Hardhat and DappTools).
-- [**Cast**](./cast): Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
-- [**Anvil**](./anvil): Local Ethereum node, akin to Ganache, Hardhat Network.
-- [**Chisel**](./chisel): Fast, utilitarian, and verbose solidity REPL.
+- [Set up](https://github.com/matter-labs/foundry-zksync#set-up)
+- [Interact with blockchain](https://github.com/matter-labs/foundry-zksync#interact-with-blockchain)
+- [Compile](https://github.com/matter-labs/foundry-zksync#compile)
+- [Deploy](https://github.com/matter-labs/foundry-zksync#deploy)
+- [Bridge assets](https://github.com/matter-labs/foundry-zksync#bridge-assets-l1--l2)
+- [Interact with contract](https://github.com/matter-labs/foundry-zksync#interact-with-contract)
+- [Deploy and interact with `SimpleFactory.sol`](https://github.com/matter-labs/foundry-zksync#deploy-and-interact-with-simplefactorysol)
+- [Account abstraction multisig example](https://github.com/matter-labs/foundry-zksync#account-abstraction-multisig)
+- [Troubleshooting](https://github.com/matter-labs/foundry-zksync#troubleshooting)
-**Need help getting started with Foundry? Read the [📖 Foundry Book][foundry-book] (WIP)!**
+---
-![Demo](.github/demo.gif)
+## Set up
-## Installation
+### Prerequisites
-See the [installation guide](https://book.getfoundry.sh/getting-started/installation) in the book.
+- [Rust compiler](https://www.rust-lang.org/tools/install).
-If you're experiencing any issues while installing, check out [Getting Help](#getting-help) and the [FAQ](https://book.getfoundry.sh/faq).
+### Installation
-## Forge
+> Installation steps include cloning the zkSync Era application, [**foundry-zksync**](https://github.com/matter-labs/foundry-zksync), and the example project, [**sample-fzksync-project**](https://github.com/sammyshakes/sample-fzksync-project).
-### Features
+1. Create a top-level directory and `cd` into it.
-- **Fast & flexible compilation pipeline**
- - Automatic Solidity compiler version detection & installation (under `~/.svm`)
- - **Incremental compilation & caching**: Only changed files are re-compiled
- - Parallel compilation
- - Non-standard directory structures support (e.g. [Hardhat repos](https://twitter.com/gakonst/status/1461289225337421829))
-- **Tests are written in Solidity** (like in DappTools)
-- **Fast fuzz testing** with shrinking of inputs & printing of counter-examples
-- **Fast remote RPC forking mode**, leveraging Rust's async infrastructure like tokio
-- **Flexible debug logging**
- - DappTools-style, using `DsTest`'s emitted logs
- - Hardhat-style, using the popular `console.sol` contract
-- **Portable (5-10MB) & easy to install** without requiring Nix or any other package manager
-- **Fast CI** with the [Foundry GitHub action][foundry-gha].
+```
+mkdir fzksync && cd fzksync
+```
-### How Fast?
+2. Clone the repos into the same directory.
-Forge is quite fast at both compiling (leveraging [ethers-solc][ethers-solc]) and testing.
+```sh
+git clone https://github.com/matter-labs/foundry-zksync.git
+git clone https://github.com/sammyshakes/sample-fzksync-project.git
+```
-See the benchmarks below. More benchmarks can be found in the [v0.2.0 announcement post][benchmark-post] and in the [Convex Shutdown Simulation][convex] repository.
+3. `cd` into the `foundry-zksync` and build the application.
-**Testing Benchmarks**
+```sh
+cd foundry-zksync
+cargo build -p foundry-cli
+```
-| Project | Forge | DappTools | Speedup |
-| ---------------------------------- | ----- | --------- | ------- |
-| [transmissions11/solmate][solmate] | 2.8s | 6m34s | 140x |
-| [reflexer-labs/geb][geb] | 0.4s | 23s | 57.5x |
-| [Rari-Capital/vaults][vaults] | 0.28s | 6.5s | 23x |
+4. `cd` into the project folder and update the git submodules.
-_Note: In the above benchmarks, compilation was always skipped_
+```sh
+cd ../sample-fzksync-project
+git submodule update --init --recursive
+```
-**Compilation Benchmarks**
+### Environment variables
-
+Create a new file `.env` at the `PROJECT-ROOT` and copy/paste the following environment variables.
-**Takeaway: Forge compilation is consistently faster by a factor of 1.7-11.3x, depending on the amount of caching involved.**
+```txt
+# ETH_RPC_URL replaces --rpc-url on the command line
+ETH_RPC_URL=http://localhost:3050
-## Cast
+## L1_RPC_URL and L2_RPC_URL are only used for `zk-deposit`
+L1_RPC_URL=https://localhost:8545
+# L2_RPC_URL can be used to replace --l2-url in command line for `zk-deposit`
+L2_RPC_URL=https://localhost:3050
-Cast is a swiss army knife for interacting with Ethereum applications from the command line.
+# CHAIN replaces --chain in command line
+# Local: 270, Testnet: 280, Mainnet: 324
+CHAIN=270
+```
-More documentation can be found in the [cast package](./cast).
+### Spin up local Docker node
-## Configuration
+Follow [these instructions]((https://era.zksync.io/docs/api/hardhat/testing.html)) to set up a local Docker node.
-### Using `foundry.toml`
+---
-Foundry is designed to be very configurable. You can configure Foundry using a file called [`foundry.toml`](./config) in the root of your project, or any other parent directory. See [config package](./config/README.md#all-options) for all available options.
+## Interact with blockchain
-Configuration can be arbitrarily namespaced by profiles. The default profile is named `default` (see ["Default Profile"](./config/README.md#default-profile)).
+> Enter all commands from the `sample-fzksync-project` project root.
-You can select another profile using the `FOUNDRY_PROFILE` environment variable. You can also override parts of your configuration using `FOUNDRY_` or `DAPP_` prefixed environment variables, like `FOUNDRY_SRC`.
+### Use the `zkcast` command
-`forge init` creates a basic, extendable `foundry.toml` file.
+#### Get chain id of local node
-To see your current configuration, run `forge config`. To see only basic options (as set with `forge init`), run `forge config --basic`. This can be used to create a new `foundry.toml` file with `forge config --basic > foundry.toml`.
+```sh
+../foundry-zksync/target/debug/zkcast chain-id --rpc-url http://localhost:3050
+```
-By default `forge config` shows the currently selected foundry profile and its values. It also accepts the same arguments as `forge build`.
+**Output**
-### DappTools Compatibility
+270
-You can re-use your `.dapprc` environment variables by running `source .dapprc` before using a Foundry tool.
+#### Get chain id of testnet
-### Additional Configuration
+```sh
+../foundry-zksync/target/debug/zkcast chain-id --rpc-url https://zksync2-testnet.zksync.dev:443
+```
-You can find additional setup and configurations guides in the [Foundry Book][foundry-book]:
+**Output**
-- [Setting up VSCode][vscode-setup]
-- [Shell autocompletions][shell-setup]
+```sh
+280
+```
-## Contributing
+#### Get client
-See our [contributing guidelines](./CONTRIBUTING.md).
+```sh
+../foundry-zksync/target/debug/zkcast client --rpc-url https://zksync2-testnet.zksync.dev:443
+```
-## Getting Help
+**Output**
-First, see if the answer to your question can be found in [book][foundry-book], or in the relevant crate.
+```sh
+zkSync/v2.0
+```
-If the answer is not there:
+#### Get account's L2 ETH balance
-- Join the [support Telegram][tg-support-url] to get help, or
-- Open a [discussion](https://github.com/foundry-rs/foundry/discussions/new) with your question, or
-- Open an issue with [the bug](https://github.com/foundry-rs/foundry/issues/new)
+```sh
+../foundry-zksync/target/debug/zkcast balance 0x42C7eF198f8aC9888E2B1b73e5B71f1D4535194A --rpc-url https://zksync2-testnet.zksync.dev:443
+```
-If you want to contribute, or follow along with contributor discussion, you can use our [main telegram](https://t.me/foundry_rs) to chat with us about the development of Foundry!
+**Output**
-## Acknowledgements
+```sh
+447551277794355871
+```
-- Foundry is a clean-room rewrite of the testing framework [DappTools](https://github.com/dapphub/dapptools). None of this would have been possible without the DappHub team's work over the years.
-- [Matthias Seitz](https://twitter.com/mattsse_): Created [ethers-solc](https://github.com/gakonst/ethers-rs/tree/master/ethers-solc/) which is the backbone of our compilation pipeline, as well as countless contributions to ethers, in particular the `abigen` macros.
-- [Rohit Narurkar](https://twitter.com/rohitnarurkar): Created the Rust Solidity version manager [svm-rs](https://github.com/roynalnaruto/svm-rs) which we use to auto-detect and manage multiple Solidity versions.
-- [Brock Elmore](https://twitter.com/brockjelmore): For extending the VM's cheatcodes and implementing [structured call tracing](https://github.com/foundry-rs/foundry/pull/192), a critical feature for debugging smart contract calls.
-- All the other [contributors](https://github.com/foundry-rs/foundry/graphs/contributors) to the [ethers-rs](https://github.com/gakonst/ethers-rs) & [foundry](https://github.com/foundry-rs/foundry) repositories and chatrooms.
+#### Get gas price
-[foundry-book]: https://book.getfoundry.sh
-[foundry-gha]: https://github.com/foundry-rs/foundry-toolchain
-[ethers-solc]: https://github.com/gakonst/ethers-rs/tree/master/ethers-solc/
-[solmate]: https://github.com/transmissions11/solmate/
-[geb]: https://github.com/reflexer-labs/geb
-[vaults]: https://github.com/rari-capital/vaults
-[benchmark-post]: https://www.paradigm.xyz/2022/03/foundry-02#blazing-fast-compilation--testing
-[convex]: https://github.com/mds1/convex-shutdown-simulation
-[vscode-setup]: https://book.getfoundry.sh/config/vscode.html
-[shell-setup]: https://book.getfoundry.sh/config/shell-autocompletion.html
+```sh
+../foundry-zksync/target/debug/zkcast gas-price --rpc-url https://zksync2-testnet.zksync.dev:443
+```
+
+**Example output**
+
+```sh
+250000000
+```
+
+#### Get timestamp of latest block
+
+```sh
+../foundry-zksync/target/debug/zkcast age --block latest --rpc-url https://zksync2-testnet.zksync.dev:443
+```
+
+**Example output**
+
+```sh
+Mon May 1 16:11:07 2023
+```
+
+#### Get latest block
+
+```sh
+../foundry-zksync/target/debug/zkcast block latest --rpc-url https://zksync2-testnet.zksync.dev:443
+```
+
+**Example output**
+
+```sh
+baseFeePerGas 250000000
+difficulty 0
+extraData 0x
+gasLimit 4294967295
+gasUsed 40277767
+hash 0x6c5b7c9b82b48bd77c0f506d74ed32aec6ab5c52e6c9c604ee8825a0b4a68289
+logsBloom 0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+miner 0x0000000000000000000000000000000000000000
+mixHash 0x0000000000000000000000000000000000000000000000000000000000000000
+nonce 0x0000000000000000
+number 5024177
+parentHash 0x9fbb3c9e5ef3b7807152367eeab5759cce14c290118de0e9011777a640cd7068
+receiptsRoot 0x0000000000000000000000000000000000000000000000000000000000000000
+sealFields []
+sha3Uncles 0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347
+size 0
+stateRoot 0x0000000000000000000000000000000000000000000000000000000000000000
+timestamp 1682957640
+totalDifficulty 0
+l1BatchNumber null
+l1BatchTimestamp null
+```
+---
+
+## Compile with `zkforge zk-build`
+
+> Aliases: `zkforge zkbuild`, `zkforge zk-compile`, `zkforge zkb`.
+
+Compile smart contracts to zkEVM bytecode and store the compiled output files in a logical directory structure `/zkout/` for easy retrieval by other components of the application.
+
+```sh
+
+Compiler subcommands for zkSync
+
+Usage:
+zkforge zk-build [OPTIONS]
+
+Options:
+ --use-zksolc Specify zksolc compiler version (default if left blank)
+ --is-system Enable the system contract compilation mode.
+ --force-evmla Sets the EVM legacy assembly pipeline forcibly
+ -h, --help Print help
+```
+
+> `--is-system` flag: It is necessary to compile some contracts, including those that deploy other contracts (such as factory contracts), using the `--is-system` flag. These contracts should be placed in the `src/is-system/` folder. If the folder does not exist, manually create it.
+
+![image](https://user-images.githubusercontent.com/76663878/236301037-2a536ab0-3d09-44f3-a74d-5f5891af335b.png)
+
+### Example usage
+
+To compile with default compiler options (v1.3.11).
+
+```sh
+../foundry-zksync/target/debug/zkforge zk-build
+```
+
+### Compiler settings
+
+Configure the `zksolc` compiler version using the optional `--use` flag.
+
+```bash
+../foundry-zksync/target/debug/zkforge zkb --use 0.8.19
+```
+
+**Example output**
+
+`zksolc` compiler artifacts can be found in the output folder:
+
+```bash
+/zkout/
+```
+![image](https://user-images.githubusercontent.com/76663878/234152279-e144e489-41ab-4cbd-8321-8ccd9b0aa6ef.png)
+
+Example terminal output:
+
+![image](https://user-images.githubusercontent.com/76663878/236305625-8c7519e2-0c5e-492f-a4bc-3b019a95e34f.png)
+
+NOTE: Currently, until `forge remappings` are implemented, import paths must be relative to the contract importing it:
+
+![image](https://github.com/matter-labs/foundry-zksync/assets/76663878/490b34f4-e286-42a7-8570-d4b228ec10c7)
+
+`SimpleFactory.sol` and `AAFactory.sol` are in the `src/is-system/` folder.
+
+---
+
+## Deploy with `zkforge zk-create`
+
+> Aliases: `zkforge zkcreate`, `zkforge zk-deploy`, `zkforge zkc`
+
+```sh
+Deploy smart contracts to zksync.
+
+Usage: zkforge zk-create [OPTIONS] --rpc-url --chain --private-key
+
+Options:
+ -h, --help
+ Print help (see a summary with '-h')
+
+ZkCreate options:
+ --constructor-args ...
+ The constructor arguments.
+
+ --constructor-args-path
+ The path to a file containing the constructor arguments.
+
+
+ The contract identifier in the form `:`.
+
+ZkSync Features:
+ --factory-deps ...
+ The factory dependencies in the form `:`.
+```
+
+#### Example
+
+To deploy `src/Greeter.sol` to zkSync testnet:
+
+```bash
+../foundry-zksync/target/debug/zkforge zkc src/Greeter.sol:Greeter --constructor-args "ZkSync + Pineapple" --private-key <"PRIVATE_KEY"> --rpc-url https://zksync2-testnet.zksync.dev:443 --chain 280
+```
+
+#### Output
+
+```txt
+Deploying contract...
++-------------------------------------------------+
+Contract successfully deployed to address: 0x07d485ff2df314b240ec392ed86b137a661ddd35
+Transaction Hash: 0xdb6864fe1d19572a3ff509c5c7ed43f033d2dab8261a843808ed46e6e6ee51be
+Gas used: 89879008
+Effective gas price: 250000000
+Block Number: 6651906
++-------------------------------------------------+
+```
+
+---
+
+## Bridge assets L1 ↔ L2 with `zkcast zk-send` and `zkcast zk-deposit`
+
+### L1 → L2 deposits
+
+```sh
+zkcast zk-deposit --l1-rpc-url --l2-url --chain --private-key
+```
+NOTE: Leave `` blank to bridge ETH
+
+```bash
+Usage: zkcast zk-deposit --l1-rpc-url --l2-url [OPTIONS] [BRIDGE] [TIP]
+
+Arguments:
+
+ The L2 address that receives the tokens.
+
+
+ Amount of token to deposit.
+
+ [BRIDGE]
+ The address of a custom bridge to call.
+
+ [TIP]
+ Optional fee that the user can choose to pay in addition to the regular transaction fee.
+
+Options:
+ -z, --l2-url
+ The zkSync RPC Layer 2 endpoint. Can be provided via the env var ZKSYNC_RPC_URL or --l2-url from the command line.
+
+ NOTE: For Deposits, ETH_RPC_URL, or --rpc-url should be set to the Layer 1 RPC URL
+
+ [env: ZKSYNC_RPC_URL=https://zksync2-testnet.zksync.dev]
+
+ --token
+ Token to bridge. Leave blank for ETH.
+
+ -h, --help
+ Print help (see a summary with '-h')
+```
+
+#### Example - error on this one
+
+```sh
+../foundry-zksync/target/debug/zkcast zkdeposit 0x36615Cf349d7F6344891B1e7CA7C72883F5dc049 1000000 --rpc-url http://localhost:8545 --l2-url http://localhost:3050 --private-key 7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --chain 270
+```
+
+#### Output
+
+```txt
+Bridging assets....
+Transaction Hash: 0x55793df0a636aedd098309e3487c6d9ec0910422d5b9f0bdbdf764bc82dc1b9f
+```
+---
+
+### L2 → L1 withdrawals
+
+```sh
+zkcast zk-send --withdraw --amount --rpc-url --private-key
+
+
+Arguments:
+ [TO] The withdraw recipient.
+
+
+Bridging options:
+ -w, --withdraw For L2 -> L1 withdrawals.
+
+ --token Token to bridge. Leave blank for ETH.
+
+ -a, --amount Amount of token to bridge. Required value when bridging
+```
+
+#### Example
+
+```sh
+../foundry-zksync/target/debug/zkcast zk-send --withdraw 0x36615Cf349d7F6344891B1e7CA7C72883F5dc049 --amount 1000000 --rpc-url http://localhost:3050 --private-key 7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --chain 270
+```
+
+#### Output
+
+```text
+Bridging assets....
++-------------------------------------------------+
+Transaction Hash: 0x3562f47db61de149fb7266c3a65935c4e8324cceb5a1db8718390a8a5a210191
+Gas used: 10276475
+Effective gas price: 250000000
+Block Number: 6652714
++-------------------------------------------------+
+```
+
+---
+
+## Interact with contract with `zkcast zk-send`
+
+> Aliases: `zkcast zks`, `zkcast zksend`
+
+Interact with deployed contracts in the native foundry/zkforge fashion using the CLI `zkcast zk-send` command.
+
+```sh
+Sign and publish a zksync transaction.
+
+Usage: zkcast zk-send [OPTIONS] [TO] [SIG] [ARGS]...
+
+Arguments:
+ [TO] The destination of the transaction.
+
+ [SIG] The signature of the function to call.
+
+ [ARGS]... The arguments of the function to call.
+
+Options:
+ -h, --help Print help (see a summary with '-h')
+
+Bridging options:
+ -d, --deposit For L1 -> L2 deposits.
+
+ -w, --withdraw For L2 -> L1 withdrawals.
+
+ --token Token to bridge. Leave blank for ETH.
+
+ -a, --amount Amount of token to bridge. Required value when bridging
+```
+
+- Retrieve and interact with chain data. For example, block numbers and gas estimates.
+- Interact with deployed contracts on (zkSync Era testnet or local Docker node).
+
+### Non-state changing calls
+
+```sh
+zkcast call --rpc-url
+```
+
+#### Example
+
+```bash
+../foundry-zksync/target/debug/zkcast call 0x97b985951fd3e0c1d996421cc783d46c12d00082 "greet()(string)" --rpc-url http://localhost:3050
+```
+
+#### Output
+
+```txt
+ZkSync + Pineapple
+```
+
+### Send transactions
+
+```sh
+zkcast zk-send --rpc-url --private-key --chain
+```
+
+#### Example
+
+```sh
+../foundry-zksync/target/debug/zkcast zk-send 0x97b985951fd3e0c1d996421cc783d46c12d00082 "setGreeting(string)" "Killer combo!" --rpc-url http://localhost:3050 --private-key 7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --chain 270
+```
+
+#### Output
+
+```txt
+Sending transaction....
+Transaction Hash: 0x7651fba8ddeb624cca93f89da493675ccbc5c6d36ee25ed620b07424ce338552
+```
+
+#### Verify output
+
+```sh
+../foundry-zksync/target/debug/zkcast call 0x97b985951fd3e0c1d996421cc783d46c12d00082 "greet()(string)" --rpc-url http://localhost:3050
+```
+
+#### Output
+
+```txt
+Killer combo!
+```
+
+---
+
+## Deploy and interact with `SimpleFactory.sol`
+
+### Compile contract
+
+`SimpleFactory.sol` must be compiled with the `is-system` flag, so they need to be placed in the `src/is-system/` folder
+
+```bash
+../foundry-zksync/target/debug/zkforge zk-build
+```
+
+### Deploy `SimpleFactory.sol`
+
+```sh
+../foundry-zksync/target/debug/zkforge zkc src/SimpleFactory.sol:SimpleFactory --constructor-args 01000041691510d85ddfc6047cba6643748dc028636d276f09a546ab330697ef 010000238a587670be26087b7812eab86eca61e7c4014522bdceda86adb2e82f --factory-deps src/Child.sol:Child src/StepChild.sol:StepChild --private-key 7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --rpc-url http://localhost:3050 --chain 270
+```
+
+#### Output
+
+```txt
+Deploying contract...
++-------------------------------------------------+
+Contract successfully deployed to address: 0xa1b809005e589f81de6ef9f48d67e35606c05fc3
+Transaction Hash: 0x34782985ba7c70b6bc4a8eb2b95787baec29356171fdbb18608037a2fcd7eda8
+Gas used: 168141
+Effective gas price: 250000000
+Block Number: 249
++-------------------------------------------------+
+```
+
+### Deploy `StepChild.sol` via `SimpleFactory.sol`
+
+```sh
+../foundry-zksync/target/debug/zkcast zk-send 0x23cee3fb585b1e5092b7cfb222e8e873b05e9519 "newStepChild()" --rpc-url http://localhost:3050 --private-key 7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --chain 270
+```
+
+#### Output
+
+```sh
+Sending transaction....
+Transaction Hash: 0xa82a0636b71af058d4916d81868eebc41173ca07b78d30fe57f4b74e9294ef25
+```
+
+### Interact with `SimpleFactory.sol`
+
+```sh
+../foundry-zksync/target/debug/zkcast call 0x23cee3fb585b1e5092b7cfb222e8e873b05e9519 "stepChildren(uint256)(address)" 0 --rpc-url http://localhost:3050
+```
+
+#### Output
+
+`StepChild.sol` deployed address:
+
+```txt
+0xbc88C5Cdfe2659ebDD5dbb7e1a695A4cb189Df96
+```
+
+### Interact with `StepChild.sol`
+
+Use `zkcast call` to check initial state:
+
+```sh
+../foundry-zksync/target/debug/zkcast call 0xbc88C5Cdfe2659ebDD5dbb7e1a695A4cb189Df96 "isEnabled()(bool)" --rpc-url http://localhost:3050
+```
+
+#### Output:
+
+```txt
+false
+```
+
+Use `zkcast zk-send` to modify state:
+
+```sh
+../foundry-zksync/target/debug/zkcast zk-send 0xbc88C5Cdfe2659ebDD5dbb7e1a695A4cb189Df96 "enable()" --rpc-url http://localhost:3050 --private-key 7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --chain 270
+```
+
+#### Output
+
+```sh
+Sending transaction....
+Transaction Hash: 0xe005e15e9f58b7dcdcc7b16a9d5c706ddef7a4c9cab82216ea944d5344ba01ae
+```
+
+Use `zkcast call` to check modified state.
+
+```sh
+../foundry-zksync/target/debug/zkcast call 0xbc88C5Cdfe2659ebDD5dbb7e1a695A4cb189Df96 "isEnabled()(bool)" --rpc-url http://localhost:3050
+```
+
+#### Output
+
+```txt
+true
+```
+
+---
+
+## Account abstraction multisig
+
+This section compiles, deploys, and interacts with the contracts from the zkSync Era [**Account Abstraction Multisig example**](https://era.zksync.io/docs/dev/tutorials/custom-aa-tutorial.html)
+
+Contracts:
+
+- [**AAFactory.sol**](https://era.zksync.io/docs/dev/tutorials/custom-aa-tutorial.html)
+- [**TwoUserMultiSig.sol**](https://github.com/sammyshakes/sample-fzksync-project/blob/main/src/TwoUserMultiSig.sol)
+
+### Compile `AAFactory.sol`
+
+`AAFactory.sol` needs to be compiled with the `--is-system` flag because it will be interacting with system contracts to deploy the multisig wallets.
+
+Place the contract in the `src/is-system/` folder
+
+```sh
+# command line using zkforge zk-build
+../foundry-zksync/target/debug/zkforge zk-build
+```
+
+#### Output
+
+```sh
+AAFactory -> Bytecode Hash: "010000791703a54dbe2502b00ee470989c267d0f6c0d12a9009a947715683744"
+Compiled Successfully
+```
+
+### Deploy `AAFactory.sol`:
+
+To deploy the factory we need the `Bytecode Hash` of the `TwoUserMultiSig.sol` contract to provide to the constructor of `AAFactory.sol`.
+
+```js
+constructor(bytes32 _aaBytecodeHash) {
+ aaBytecodeHash = _aaBytecodeHash;
+ }
+```
+
+Note: `aaBytecodeHash` = Bytecode hash of `TwoUserMultiSig.sol`
+
+To deploy a contract that deploys other contracts, it is necessary to provide the bytecodes of the child contracts in the `factory-deps` field of the transaction. This can be accomplished by using the `--factory-deps` flag and providing the full contract path in the format: `:`
+
+```sh
+# command line using zkforge zk-create
+../foundry-zksync/target/debug/zkforge zkc src/is-system/AAFactory.sol:AAFactory --constructor-args 010007572230f4df5b4e855ff48d4cdfffc9405522117d7e020ee42650223460 --factory-deps src/TwoUserMultiSig.sol:TwoUserMultisig --private-key 7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --rpc-url http://localhost:3050 --chain 270
+```
+
+#### Output
+
+```sh
+Deploying contract...
++-------------------------------------------------+
+Contract successfully deployed to address: 0xd5608cec132ed4875d19f8d815ec2ac58498b4e5
+Transaction Hash: 0x0e6f55ff1619af8b3277853a8f2941d0481635880358316f03ae264e2de059ed
+Gas used: 154379
+Effective gas price: 250000000
+Block Number: 291
++-------------------------------------------------+
+```
+
+Now that we have the `AAFactory.sol` contract address we can call `deployAccount` function to deploy a new `TwoUserMultiSig.sol` instance.
+
+Here is the interface of `deployAccount`.
+
+```js
+function deployAccount(bytes32 salt, address owner1, address owner2) external returns (address accountAddress)
+```
+
+We need to provide the two owner addresses for the newly deployed multisig:
+
+```js
+owner1 = 0xa61464658AfeAf65CccaaFD3a512b69A83B77618
+owner2 = 0x0D43eB5B8a47bA8900d84AA36656c92024e9772e
+```
+
+We are also just using a `0x00` value for the ***salt*** parameter. (You will need a unique value for salt for each instance that uses same owner wallets).
+
+```sh
+# command line using zkcast zk-send
+../foundry-zksync/target/debug/zkcast zk-send 0xd5608cec132ed4875d19f8d815ec2ac58498b4e5 "deployAccount(bytes32,address,address)(address)" 0x00 0xa61464658AfeAf65CccaaFD3a512b69A83B77618 0x0D43eB5B8a47bA8900d84AA36656c92024e9772e --rpc-url http://localhost:3050 --private-key 7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110 --chain 270
+```
+
+#### Output
+
+```sh
+Sending transaction....
+Transaction Hash: 0x43a4dded84a12891dfae4124b42b9f091750e953193bd779a7e5e4d422909e73
+0x03e50ec034f1d363de0add752c33d4831a2731bf, <---- Deployed contract address
+```
+
+The new `TwoUserMultiSig.sol` contract has been deployed to:
+
+```txt
+0x03e50ec034f1d363de0add752c33d4831a2731bf
+```
+
+Check the tx receipt using `zkcast tx `
+
+```sh
+../foundry-zksync/target/debug/zkcast tx 0x22364a3e191ad10013c5f20036e9696e743a4f686bc58a0106ef0b9e7592347c --rpc-url http://localhost:3050
+```
+
+#### Output
+
+```sh
+blockHash 0x2f3e2be46a7cb9f9e9df503903990e6670e88224e52232c988b5a730c82d98c0
+blockNumber 297
+from 0x36615Cf349d7F6344891B1e7CA7C72883F5dc049
+gas 217367
+gasPrice 250000000
+hash 0x43a4dded84a12891dfae4124b42b9f091750e953193bd779a7e5e4d422909e73
+input 0x76fb8b650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a61464658afeaf65cccaafd3a512b69a83b776180000000000000000000000000d43eb5b8a47ba8900d84aa36656c92024e9772e
+nonce 147
+r 0x16385d99ccaaa5e84bb97d76a0afb310350c2ca4165ed41d458efa80cd76d3bd
+s 0x3ec55287f223e760b7dd82a676feece939832e4c5a3d73f3aa979bd2cd48801c
+to 0xd5608cEC132ED4875D19f8d815EC2ac58498B4E5
+transactionIndex 0
+v 1
+value 0
+l1BatchNumber 149
+l1BatchTxIndex 0
+```
+
+Verify with `zkcast call` to call the public variables 'owner1' and 'owner2' on the newly deployed `TwoUserMultiSig.sol` contract.
+
+Verify `owner1`:
+
+```sh
+# command line using zkcast call
+../foundry-zksync/target/debug/zkcast call 0x03e50ec034f1d363de0add752c33d4831a2731bf "owner1()(address)" --rpc-url http://localhost:3050
+```
+
+#### Output
+
+```txt
+0xa61464658AfeAf65CccaaFD3a512b69A83B77618
+```
+
+Verify `owner2`:
+
+```sh
+# command line using zkcast call
+../foundry-zksync/target/debug/zkcast call 0x03e50ec034f1d363de0add752c33d4831a2731bf "owner2()(address)" --rpc-url http://localhost:3050
+```
+
+#### Output
+
+```txt
+0x0D43eB5B8a47bA8900d84AA36656c92024e9772e
+```
+
+## Troubleshooting
+
+### Verify arguments
+
+Make sure that:
+
+* You are using zksync specific methods (`zkcreate` not `create`, `zksend` not `send`).
+* You set the correct `--rpc-url`.
+* You have the proper contract address - the bytecodes in zkSync Era are different to in EVM - so the resulting contracts will be deployed at different addresses.
+
+### 'Method not found' when calling 'send'
+
+If you get errors like `(code: -32601, message: Method not found, data: None)` - you are probably using a `send` method instead of `zksend`.
+
+### 'Could not get solc: Unknown version provided', 'checksum not found'
+
+These errors might show up on the Mac with ARM chip (M1, M2) due to the fact that most recent solc compilers are not auto-downloaded there.
+
+There are 2 workarounds:
+
+ - Use an older compiler by adding `--use 0.8.19` flag to the `zk-build` command.
+ - Download the compiler manually and then use the `--offline` mode. (Download the compiler into ~/.svm/VERSION/solc-VERSION -- for example ~/.svm/0.8.20/solc-0.8.20).
+
+You can get the latest compiler version for MacOs AARCH here: https://github.com/ethers-rs/solc-builds/tree/master/macosx/aarch64
+
+You might have to remove the `zkout` directory (that holds the compilation artifacts) and in some rare scenarios also cleanup the installed solc versions (by removing `~/.svm/` directory)
+
+### `solc` versions >0.8.19 are not supported, found 0.8.20
+
+This means that our zksync compiler doesn't support that version of solidity yet.
+
+In such case, please remove the artifacts (by removing `zkout` directory) and re-run with the older version of solidity (`--use 0.8.19`) for example.
+
+You might also have to remove the `~/.svm/0.8.20/solc-0.8.20` file.
diff --git a/abi/abi/HardhatConsole.json b/abi/abi/HardhatConsole.json
index c1b1b46cf..45fcc118e 100644
--- a/abi/abi/HardhatConsole.json
+++ b/abi/abi/HardhatConsole.json
@@ -1 +1,9514 @@
-[{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"bool","name":"p2","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"uint256","name":"p3","type":"uint256"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"bool","name":"p1","type":"bool"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"string","name":"p1","type":"string"},{"internalType":"string","name":"p2","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"bool","name":"p3","type":"bool"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"address","name":"p2","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"},{"internalType":"address","name":"p1","type":"address"},{"internalType":"uint256","name":"p2","type":"uint256"},{"internalType":"string","name":"p3","type":"string"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"},{"internalType":"uint256","name":"p1","type":"uint256"},{"internalType":"string","name":"p2","type":"string"},{"internalType":"address","name":"p3","type":"address"}],"name":"log","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"p0","type":"address"}],"name":"logAddress","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"p0","type":"bool"}],"name":"logBool","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"p0","type":"bytes"}],"name":"logBytes","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes1","name":"p0","type":"bytes1"}],"name":"logBytes1","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes10","name":"p0","type":"bytes10"}],"name":"logBytes10","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes11","name":"p0","type":"bytes11"}],"name":"logBytes11","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes12","name":"p0","type":"bytes12"}],"name":"logBytes12","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes13","name":"p0","type":"bytes13"}],"name":"logBytes13","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes14","name":"p0","type":"bytes14"}],"name":"logBytes14","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes15","name":"p0","type":"bytes15"}],"name":"logBytes15","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes16","name":"p0","type":"bytes16"}],"name":"logBytes16","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes17","name":"p0","type":"bytes17"}],"name":"logBytes17","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes18","name":"p0","type":"bytes18"}],"name":"logBytes18","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes19","name":"p0","type":"bytes19"}],"name":"logBytes19","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes2","name":"p0","type":"bytes2"}],"name":"logBytes2","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes20","name":"p0","type":"bytes20"}],"name":"logBytes20","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes21","name":"p0","type":"bytes21"}],"name":"logBytes21","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes22","name":"p0","type":"bytes22"}],"name":"logBytes22","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes23","name":"p0","type":"bytes23"}],"name":"logBytes23","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes24","name":"p0","type":"bytes24"}],"name":"logBytes24","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes25","name":"p0","type":"bytes25"}],"name":"logBytes25","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes26","name":"p0","type":"bytes26"}],"name":"logBytes26","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes27","name":"p0","type":"bytes27"}],"name":"logBytes27","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes28","name":"p0","type":"bytes28"}],"name":"logBytes28","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes29","name":"p0","type":"bytes29"}],"name":"logBytes29","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes3","name":"p0","type":"bytes3"}],"name":"logBytes3","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes30","name":"p0","type":"bytes30"}],"name":"logBytes30","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes31","name":"p0","type":"bytes31"}],"name":"logBytes31","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"p0","type":"bytes32"}],"name":"logBytes32","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes4","name":"p0","type":"bytes4"}],"name":"logBytes4","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes5","name":"p0","type":"bytes5"}],"name":"logBytes5","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes6","name":"p0","type":"bytes6"}],"name":"logBytes6","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes7","name":"p0","type":"bytes7"}],"name":"logBytes7","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes8","name":"p0","type":"bytes8"}],"name":"logBytes8","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes9","name":"p0","type":"bytes9"}],"name":"logBytes9","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"p0","type":"int256"}],"name":"logInt","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"p0","type":"string"}],"name":"logString","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"p0","type":"uint256"}],"name":"logUint","outputs":[],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int256","name":"p0","type":"int256"}],"outputs":[],"stateMutability":"view","type":"function","name":"log"},{"inputs":[{"internalType":"string","name":"p0","type":"string"},{"internalType":"int256","name":"p1","type":"int256"}],"outputs":[],"stateMutability":"view","type":"function","name":"log"}]
+[
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "bool",
+ "name": "p2",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p3",
+ "type": "uint256"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "bool",
+ "name": "p1",
+ "type": "bool"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "string",
+ "name": "p1",
+ "type": "string"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "bool",
+ "name": "p3",
+ "type": "bool"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p2",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ },
+ {
+ "internalType": "address",
+ "name": "p1",
+ "type": "address"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p2",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p3",
+ "type": "string"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ },
+ {
+ "internalType": "uint256",
+ "name": "p1",
+ "type": "uint256"
+ },
+ {
+ "internalType": "string",
+ "name": "p2",
+ "type": "string"
+ },
+ {
+ "internalType": "address",
+ "name": "p3",
+ "type": "address"
+ }
+ ],
+ "name": "log",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "address",
+ "name": "p0",
+ "type": "address"
+ }
+ ],
+ "name": "logAddress",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bool",
+ "name": "p0",
+ "type": "bool"
+ }
+ ],
+ "name": "logBool",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes",
+ "name": "p0",
+ "type": "bytes"
+ }
+ ],
+ "name": "logBytes",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes1",
+ "name": "p0",
+ "type": "bytes1"
+ }
+ ],
+ "name": "logBytes1",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes10",
+ "name": "p0",
+ "type": "bytes10"
+ }
+ ],
+ "name": "logBytes10",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes11",
+ "name": "p0",
+ "type": "bytes11"
+ }
+ ],
+ "name": "logBytes11",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes12",
+ "name": "p0",
+ "type": "bytes12"
+ }
+ ],
+ "name": "logBytes12",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes13",
+ "name": "p0",
+ "type": "bytes13"
+ }
+ ],
+ "name": "logBytes13",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes14",
+ "name": "p0",
+ "type": "bytes14"
+ }
+ ],
+ "name": "logBytes14",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes15",
+ "name": "p0",
+ "type": "bytes15"
+ }
+ ],
+ "name": "logBytes15",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes16",
+ "name": "p0",
+ "type": "bytes16"
+ }
+ ],
+ "name": "logBytes16",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes17",
+ "name": "p0",
+ "type": "bytes17"
+ }
+ ],
+ "name": "logBytes17",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes18",
+ "name": "p0",
+ "type": "bytes18"
+ }
+ ],
+ "name": "logBytes18",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes19",
+ "name": "p0",
+ "type": "bytes19"
+ }
+ ],
+ "name": "logBytes19",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes2",
+ "name": "p0",
+ "type": "bytes2"
+ }
+ ],
+ "name": "logBytes2",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes20",
+ "name": "p0",
+ "type": "bytes20"
+ }
+ ],
+ "name": "logBytes20",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes21",
+ "name": "p0",
+ "type": "bytes21"
+ }
+ ],
+ "name": "logBytes21",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes22",
+ "name": "p0",
+ "type": "bytes22"
+ }
+ ],
+ "name": "logBytes22",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes23",
+ "name": "p0",
+ "type": "bytes23"
+ }
+ ],
+ "name": "logBytes23",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes24",
+ "name": "p0",
+ "type": "bytes24"
+ }
+ ],
+ "name": "logBytes24",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes25",
+ "name": "p0",
+ "type": "bytes25"
+ }
+ ],
+ "name": "logBytes25",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes26",
+ "name": "p0",
+ "type": "bytes26"
+ }
+ ],
+ "name": "logBytes26",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes27",
+ "name": "p0",
+ "type": "bytes27"
+ }
+ ],
+ "name": "logBytes27",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes28",
+ "name": "p0",
+ "type": "bytes28"
+ }
+ ],
+ "name": "logBytes28",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes29",
+ "name": "p0",
+ "type": "bytes29"
+ }
+ ],
+ "name": "logBytes29",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes3",
+ "name": "p0",
+ "type": "bytes3"
+ }
+ ],
+ "name": "logBytes3",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes30",
+ "name": "p0",
+ "type": "bytes30"
+ }
+ ],
+ "name": "logBytes30",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes31",
+ "name": "p0",
+ "type": "bytes31"
+ }
+ ],
+ "name": "logBytes31",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes32",
+ "name": "p0",
+ "type": "bytes32"
+ }
+ ],
+ "name": "logBytes32",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes4",
+ "name": "p0",
+ "type": "bytes4"
+ }
+ ],
+ "name": "logBytes4",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes5",
+ "name": "p0",
+ "type": "bytes5"
+ }
+ ],
+ "name": "logBytes5",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes6",
+ "name": "p0",
+ "type": "bytes6"
+ }
+ ],
+ "name": "logBytes6",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes7",
+ "name": "p0",
+ "type": "bytes7"
+ }
+ ],
+ "name": "logBytes7",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes8",
+ "name": "p0",
+ "type": "bytes8"
+ }
+ ],
+ "name": "logBytes8",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "bytes9",
+ "name": "p0",
+ "type": "bytes9"
+ }
+ ],
+ "name": "logBytes9",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int256",
+ "name": "p0",
+ "type": "int256"
+ }
+ ],
+ "name": "logInt",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ }
+ ],
+ "name": "logString",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "uint256",
+ "name": "p0",
+ "type": "uint256"
+ }
+ ],
+ "name": "logUint",
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "int256",
+ "name": "p0",
+ "type": "int256"
+ }
+ ],
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "log"
+ },
+ {
+ "inputs": [
+ {
+ "internalType": "string",
+ "name": "p0",
+ "type": "string"
+ },
+ {
+ "internalType": "int256",
+ "name": "p1",
+ "type": "int256"
+ }
+ ],
+ "outputs": [],
+ "stateMutability": "view",
+ "type": "function",
+ "name": "log"
+ }
+]
\ No newline at end of file
diff --git a/cli/Cargo.toml b/cli/Cargo.toml
index e432f4407..d72e1f96e 100644
--- a/cli/Cargo.toml
+++ b/cli/Cargo.toml
@@ -1,11 +1,11 @@
[package]
-name = "foundry-cli"
-version = "0.2.0"
edition = "2021"
+keywords = ["ethereum", "web3"]
license = "MIT OR Apache-2.0"
+name = "foundry-cli"
readme = "README.md"
repository = "https://github.com/foundry-rs/foundry"
-keywords = ["ethereum", "web3"]
+version = "0.2.0"
[build-dependencies]
vergen = { version = "8", default-features = false, features = ["build", "git", "git2"] }
@@ -76,6 +76,23 @@ strum = { version = "0.25", features = ["derive"] }
thiserror = "1"
indicatif = "0.17"
parking_lot = "0.12"
+pkg-config = "0.3.26"
+
+
+# ring = "0.16.20"
+# sha2 = "0.10.6"
+# which = "4.2.5"
+
+#zksync
+zksync-web3-rs = {git = "https://github.com/lambdaclass/zksync-web3-rs.git", rev = "70327ae5413c517bd4d27502507cdd96ee40cd22"}
+
+ansi_term = "0.12.1"
+anyhow = {version = "1.0.70"}
+dirs = {version = "5.0.0"}
+url = "2.3.1"
+
+ethabi = "18.0.0"
+uint = "0.9.0"
[dev-dependencies]
anvil = { path = "../anvil" }
@@ -92,24 +109,25 @@ globset = "0.4"
default = ["rustls"]
rustls = ["ethers/rustls"]
openssl = ["ethers/openssl"]
+solc-asm = ["ethers/solc-sha2-asm"]
# feature for integration tests that test external projects
external-integration-tests = []
[[bin]]
-name = "cast"
-path = "src/cast.rs"
doc = false
+name = "zkcast"
+path = "src/cast.rs"
[[bin]]
-name = "forge"
-path = "src/forge.rs"
doc = false
+name = "zkforge"
+path = "src/forge.rs"
[[bench]]
-name = "forge_test"
harness = false
+name = "forge_test"
[[bench]]
-name = "cast"
harness = false
+name = "cast"
diff --git a/cli/src/cast.rs b/cli/src/cast.rs
index dbe64932b..bd64f98d7 100644
--- a/cli/src/cast.rs
+++ b/cli/src/cast.rs
@@ -342,6 +342,9 @@ async fn main() -> eyre::Result<()> {
}
Subcommands::Run(cmd) => cmd.run().await?,
Subcommands::SendTx(cmd) => cmd.run().await?,
+ Subcommands::ZkSendTx(cmd) => cmd.run().await?,
+ Subcommands::ZkDepositTx(cmd) => cmd.run().await?,
+
Subcommands::Tx { tx_hash, field, raw, json, rpc } => {
let config = Config::from(&rpc);
let provider = utils::get_provider(&config)?;
diff --git a/cli/src/cmd/cast/mod.rs b/cli/src/cmd/cast/mod.rs
index bd1c8ddf6..a8c8bc080 100644
--- a/cli/src/cmd/cast/mod.rs
+++ b/cli/src/cmd/cast/mod.rs
@@ -18,3 +18,6 @@ pub mod run;
pub mod send;
pub mod storage;
pub mod wallet;
+pub mod zk_deposit;
+pub mod zk_send;
+pub mod zk_utils;
diff --git a/cli/src/cmd/cast/zk_deposit.rs b/cli/src/cmd/cast/zk_deposit.rs
new file mode 100644
index 000000000..0d4cd6931
--- /dev/null
+++ b/cli/src/cmd/cast/zk_deposit.rs
@@ -0,0 +1,267 @@
+/// This module handles Bridging assets to ZkSync from Layer 1.
+/// It defines the CLI arguments for the `cast zk-deposit` command and provides functionality
+/// for depositing assets onto zkSync.
+///
+/// The module contains the following components:
+/// - `ZkDepositTxArgs`: Struct representing the command line arguments for the `cast
+/// zk-deposit` command. It includes parameters such as the destination address, amount to
+/// deposit, bridge address, operator tip, zkSync RPC endpoint, and token to bridge.
+/// - `ZkDepositTxArgs` implementation: Defines methods for executing the deposit transaction
+/// based on the provided command line arguments.
+/// - Helper functions:
+/// - `get_url_with_port`: Parses a URL string and attaches a default port if one is not
+/// specified.
+/// - `parse_decimal_u256`: Converts a string to a `U256` number.
+use crate::{
+ cmd::cast::zk_utils::{get_chain, get_private_key, get_rpc_url, get_url_with_port},
+ opts::{TransactionOpts, Wallet},
+};
+use clap::Parser;
+use ethers::types::NameOrAddress;
+use foundry_config::Chain;
+use std::str::FromStr;
+use zksync_web3_rs::{
+ providers::Provider,
+ signers::{LocalWallet, Signer},
+ types::{Address, H160, U256},
+ DepositRequest, ZKSWallet,
+};
+
+/// Struct to represent the command line arguments for the `cast zk-deposit` command.
+///
+/// `ZkDepositTxArgs` contains parameters to be passed via the command line for the `cast
+/// zk-deposit` operation. These include the destination of the transaction, the amount to deposit,
+/// an optional bridge address, an optional operator tip, the zkSync RPC endpoint, and the token to
+/// bridge.
+#[derive(Debug, Parser)]
+pub struct ZkDepositTxArgs {
+ /// The destination address of the transaction.
+ /// This can be either a name or an address.
+ #[clap(
+ help = "The destination of the transaction.",
+ value_parser = NameOrAddress::from_str,
+ value_name = "TO"
+ )]
+ to: NameOrAddress,
+
+ /// The amount of the token to deposit.
+ #[clap(
+ help = "Amount of token to deposit.",
+ value_name = "AMOUNT",
+ value_parser = parse_decimal_u256
+ )]
+ amount: U256,
+
+ /// An optional address of a custom bridge to call.
+ #[clap(help = "The address of a custom bridge to call.", value_name = "BRIDGE")]
+ bridge_address: Option,
+
+ /// An optional tip that the user can choose to pay in addition to the regular transaction fee.
+ #[clap(
+ help = "Optional fee that the user can choose to pay in addition to the regular transaction fee.",
+ value_name = "TIP"
+ )]
+ operator_tip: Option,
+
+ /// Layer 2 gas limit.
+ #[clap(help = "Layer 2 gas limit", value_name = "L2_GAS_LIMIT")]
+ l2_gas_limit: Option,
+
+ /// Set the gas per pubdata byte (Optional).
+ #[clap(help = "Set the gas per pubdata byte (Optional)", value_name = "GAS_PER_PUBDATA_BYTE")]
+ gas_per_pubdata_byte: Option,
+
+ /// The zkSync RPC Layer 2 endpoint.
+ /// Can be provided via the env var L2_RPC_URL
+ /// or --l2-url from the command line.
+ ///
+ /// NOTE: For Deposits, L1_RPC_URL, or --l1-url should be set to the Layer 1 RPC URL
+ #[clap(
+ env = "L2_RPC_URL",
+ long,
+ short = 'z',
+ help = "The zkSync RPC endpoint.",
+ value_name = "L2URL"
+ )]
+ l2_url: String,
+
+ /// An optional token to bridge. If not specified, ETH is assumed.
+ #[clap(long, help = "Token to bridge. Leave blank for ETH.", value_name = "TOKEN")]
+ token: Option,
+
+ /// Transaction options, such as gas price and gas limit.
+ #[clap(flatten)]
+ tx: TransactionOpts,
+
+ /// Ethereum-specific options, such as the network and wallet.
+ /// We use the options directly, as we want to have a separate URL
+ #[clap(
+ env = "L1_RPC_URL",
+ long = "l1-rpc-url",
+ help = "The L1 RPC endpoint.",
+ value_name = "L1_URL"
+ )]
+ pub l1_url: Option,
+
+ #[clap(long, env = "CHAIN", value_name = "CHAIN_NAME")]
+ pub chain: Option,
+
+ #[clap(flatten)]
+ pub wallet: Wallet,
+}
+
+impl ZkDepositTxArgs {
+ /// Executes the deposit transaction based on the provided command line arguments.
+ ///
+ /// This function first gets the private key from the Ethereum options and the chain.
+ /// Then, it creates a new wallet using the zkSync HTTP client and signer.
+ /// Finally, it deposits the specified amount to the target address and prints the transaction
+ /// hash.
+ ///
+ /// # Returns
+ ///
+ /// A `Result` which is:
+ /// - Ok: If the deposit transaction is successfully completed.
+ /// - Err: If an error occurred during the execution of the deposit transaction.
+ pub async fn run(self) -> eyre::Result<()> {
+ let private_key = get_private_key(&self.wallet.private_key)?;
+ let l1_url = get_rpc_url(&self.l1_url)?;
+ let l2_url = get_url_with_port(&self.l2_url).expect("Invalid L2_RPC_URL");
+ let chain: Chain = get_chain(self.chain)?;
+ let l1_provider = Provider::try_from(l1_url)?;
+ let l2_provider = Provider::try_from(l2_url)?;
+ let wallet = LocalWallet::from_str(&format!("{private_key:?}"))?.with_chain_id(chain);
+ let zk_wallet =
+ ZKSWallet::new(wallet, None, Some(l2_provider.clone()), Some(l1_provider.clone()))
+ .unwrap();
+
+ // TODO Support different tokens than ETH.
+ let deposit_request = DepositRequest::new(self.amount)
+ .to(self.get_to_address())
+ .operator_tip(self.operator_tip.unwrap_or(0.into()))
+ .gas_price(self.tx.gas_price)
+ .gas_limit(self.tx.gas_limit)
+ .gas_per_pubdata_byte(self.gas_per_pubdata_byte)
+ .l2_gas_limit(self.l2_gas_limit);
+
+ println!("Bridging assets....");
+ let l1_receipt = zk_wallet.deposit(&deposit_request).await.unwrap();
+ println!("Transaction Hash: {:#?}", l1_receipt.transaction_hash);
+
+ Ok(())
+ }
+
+ /// Retrieves the 'to' address from the command line arguments.
+ ///
+ /// The 'to' address is expected to be a command line argument (`to`).
+ /// If it is not provided, the function will return an error.
+ ///
+ /// # Returns
+ ///
+ /// A `H160` which represents the 'to' address.
+ fn get_to_address(&self) -> H160 {
+ let to = self.to.as_address().expect("Please enter TO address.");
+ let deployed_contract = to.as_bytes();
+ Address::from_slice(deployed_contract)
+ }
+}
+
+/// Converts a string to a `U256` number.
+///
+/// The function takes a string as input and attempts to parse it as a decimal `U256` number.
+/// If the parsing fails, it returns an error.
+///
+/// # Parameters
+///
+/// - `s`: The string to parse.
+///
+/// # Returns
+///
+/// A `Result` which is:
+/// - Ok: Contains the parsed `U256` number.
+/// - Err: Contains a string error message indicating that the parsing failed.
+fn parse_decimal_u256(s: &str) -> Result {
+ match U256::from_dec_str(s) {
+ Ok(value) => Ok(value),
+ Err(e) => Err(format!("Failed to parse decimal number: {}", e)),
+ }
+}
+
+#[cfg(test)]
+mod zk_deposit_tests {
+ use std::env;
+
+ use super::*;
+
+ #[tokio::test]
+ async fn test_deposit_to_signer_account() {
+ let amount = U256::from(1);
+ let private_key = "0x7726827caac94a7f9e1b160f7ea819f172f7b6f9d2a97f992c38edeab82d4110";
+ let l1_url = env::var("L1_RPC_URL").ok();
+ if env::var("L2_RPC_URL").is_err() {
+ // TODO: this test requires a running L2 to pass.
+ return
+ }
+ let l2_url = env::var("L2_RPC_URL").unwrap();
+
+ let zk_wallet = {
+ let l1_provider = Provider::try_from(l1_url.unwrap()).unwrap();
+ let l2_provider = Provider::try_from(l2_url.clone()).unwrap();
+
+ let wallet = LocalWallet::from_str(private_key).unwrap();
+ ZKSWallet::new(wallet, None, Some(l2_provider), Some(l1_provider)).unwrap()
+ };
+
+ let l1_balance_before = zk_wallet.eth_balance().await.unwrap();
+ let l2_balance_before = zk_wallet.era_balance().await.unwrap();
+
+ let zk_deposit_tx_args = {
+ let to = NameOrAddress::from_str("0x36615Cf349d7F6344891B1e7CA7C72883F5dc049").unwrap();
+ let bridge_address = None;
+ let operator_tip = None;
+ let token = None; // => Ether.
+ let tx = TransactionOpts {
+ gas_limit: None,
+ gas_price: None,
+ priority_gas_price: None,
+ value: None,
+ nonce: None,
+ legacy: false,
+ };
+ let l1_url = env::var("L1_RPC_URL").ok();
+ let chain = Some(Chain::Id(env::var("CHAIN").unwrap().parse().unwrap()));
+ let wallet: Wallet = Wallet::parse_from(["foundry-cli", "--private-key", private_key]);
+
+ ZkDepositTxArgs {
+ to,
+ amount,
+ bridge_address,
+ operator_tip,
+ l2_url,
+ token,
+ tx,
+ l1_url,
+ chain,
+ wallet,
+ l2_gas_limit: None,
+ gas_per_pubdata_byte: None,
+ }
+ };
+
+ zk_deposit_tx_args.run().await.unwrap();
+
+ let l1_balance_after = zk_wallet.eth_balance().await.unwrap();
+ let l2_balance_after = zk_wallet.era_balance().await.unwrap();
+ println!("L1 balance after: {}", l1_balance_after);
+ println!("L2 balance after: {}", l2_balance_after);
+
+ assert!(
+ l1_balance_after <= l1_balance_before - amount,
+ "Balance on L1 should be decreased"
+ );
+ assert!(
+ l2_balance_after >= l2_balance_before + amount,
+ "Balance on L2 should be increased"
+ );
+ }
+}
diff --git a/cli/src/cmd/cast/zk_send.rs b/cli/src/cmd/cast/zk_send.rs
new file mode 100644
index 000000000..a06e9789a
--- /dev/null
+++ b/cli/src/cmd/cast/zk_send.rs
@@ -0,0 +1,262 @@
+/// This module handles transactions related to ZkSync. It provides functionality for sending
+/// transactions and withdrawing from Layer 2 to Layer 1. The module also defines the
+/// command-line arguments for the `cast zk-send` subcommand.
+///
+/// The module consists of the following components:
+/// - Helper functions for interacting with ZkSync and Ethereum:
+/// - `get_url_with_port`: Retrieves the URL with port from the `zk_deposit` module.
+/// - `get_chain`, `get_private_key`, `get_rpc_url`: Retrieves chain, private key, and RPC
+/// URL from the `zk_utils` module.
+/// - Struct `ZkSendTxArgs` representing the command-line arguments for the `cast zk-send`
+/// subcommand:
+/// - `to`: The destination of the transaction. Accepts address or name.
+/// - `sig`: Signature of the function to call when interacting with a contract.
+/// - `args`: Arguments for the function being called.
+/// - `withdraw`: Flag indicating if the transaction is a Layer 2 to Layer 1 withdrawal.
+/// - `token`: Token to bridge in case of withdrawal. Defaults to ETH if not provided.
+/// - `amount`: Amount of token to bridge in case of withdrawal.
+/// - `tx`: Transaction options such as gas price, nonce, etc.
+/// - `eth`: Ethereum options such as sender's address, private key, etc.
+/// - Implementation of the `ZkSendTxArgs` struct with methods:
+/// - `run`: Executes the command-line arguments, loads the configuration, retrieves private
+/// key and RPC URL, prepares and sends the transaction, and handles withdrawals.
+/// - `print_receipt`: Prints the receipt of the transaction, including transaction hash, gas
+/// used, effective gas price, block number, and deployed contract address.
+/// - `get_signer`: Creates a signer from the private key and chain.
+/// - `get_to_address`: Retrieves the recipient address of the transaction.
+/// - Helper functions:
+/// - `parse_decimal_u256`: Parses a decimal string into a `U256` number.
+/// - `decode_hex`: Decodes a hexadecimal string into a byte vector.
+///
+/// Usage:
+/// The `ZkSendTxArgs` struct is used to define and parse command-line arguments for the `cast
+/// zk-send` command. It provides the `run` method to execute the transaction and the
+/// `print_receipt` method to print the transaction receipt.
+///
+/// The `run` method processes the command-line arguments, loads the configuration, retrieves
+/// the private key and RPC URL, prepares the transaction, and sends it. If the transaction is
+/// a Layer 2 to Layer 1 withdrawal, it handles the withdrawal operation. The method returns an
+/// `eyre::Result` indicating the success or failure of the transaction.
+///
+/// The `print_receipt` method extracts relevant information from the transaction receipt and
+/// prints it to the console. This includes the transaction hash, gas used, effective gas
+/// price, block number, and deployed contract address, if applicable.
+use crate::opts::{EthereumOpts, TransactionOpts};
+use clap::Parser;
+use ethers::types::NameOrAddress;
+use foundry_config::Config;
+use std::str::FromStr;
+use zksync_web3_rs::{
+ providers::Provider,
+ signers::{LocalWallet, Signer},
+ types::{Address, TransactionReceipt, H160, U256},
+ zks_provider::ZKSProvider,
+ zks_utils::CONTRACT_DEPLOYER_ADDR,
+ ZKSWallet,
+};
+
+use super::zk_utils::{get_chain, get_private_key, get_rpc_url};
+
+/// CLI arguments for the `cast zk-send` subcommand.
+///
+/// This struct contains all the arguments and options that can be passed to the `zk-send`
+/// subcommand. It has methods to run the subcommand and to print the receipt of the transaction.
+#[derive(Debug, Parser)]
+pub struct ZkSendTxArgs {
+ /// The destination of the transaction.
+ ///
+ /// This field can be populated using the value parser `parse_name_or_address`.
+ /// If not provided, the value is `None`.
+ #[clap(
+ help = "The destination of the transaction.",
+ value_parser = NameOrAddress::from_str,
+ value_name = "TO"
+ )]
+ to: Option,
+
+ /// Signature of the function to call.
+ /// This is used when the transaction involves calling a function on a contract.
+ #[clap(help = "The signature of the function to call.", value_name = "SIG")]
+ sig: Option,
+
+ /// Arguments for the function being called.
+ /// These are passed in order to the function specified by `sig`.
+ #[clap(help = "The arguments of the function to call.", value_name = "ARGS")]
+ args: Vec,
+
+ /// Flag indicating whether the transaction is a Layer 2 to Layer 1 withdrawal.
+ #[clap(
+ long,
+ short,
+ help_heading = "Bridging options",
+ help = "For L2 -> L1 withdrawals.",
+ group = "bridging"
+ )]
+ withdraw: bool,
+
+ /// Token to bridge in case of L2 to L1 withdrawal.
+ /// If left blank, it will be treated as ETH.
+ #[clap(
+ long,
+ help_heading = "Bridging options",
+ help = "Token to bridge. Leave blank for ETH.",
+ value_name = "TOKEN"
+ )]
+ token: Option,
+
+ /// Amount of token to bridge in case of L2 to L1 withdrawal.
+ /// This is required when the `withdraw` flag is set.
+ #[clap(
+ long,
+ short,
+ help_heading = "Bridging options",
+ help = "Amount of token to bridge. Required value when bridging",
+ value_name = "AMOUNT",
+ requires = "bridging",
+ value_parser = parse_decimal_u256
+ )]
+ amount: Option,
+
+ /// Options for the transaction such as gas price, nonce etc.
+ #[clap(flatten)]
+ tx: TransactionOpts,
+
+ /// Ethereum related options such as sender's address, private key, etc.
+ #[clap(flatten)]
+ eth: EthereumOpts,
+}
+
+impl ZkSendTxArgs {
+ /// Executes the arguments passed through the CLI.
+ ///
+ /// This function processes all the arguments and options passed through the CLI.
+ /// It loads the configuration, retrieves the private key and RPC URL, prepares the transaction
+ /// and sends it. It also handles the withdraw functionality.
+ ///
+ /// # Returns
+ ///
+ /// An `eyre::Result` which is:
+ /// - Ok: If the transaction or withdraw operation is successful.
+ /// - Err: If any error occurs during the operation.
+ pub async fn run(self) -> eyre::Result<()> {
+ let private_key = get_private_key(&self.eth.wallet.private_key)?;
+ let rpc_url = get_rpc_url(&self.eth.rpc.url)?;
+ let config = Config::from(&self.eth);
+ let chain = get_chain(config.chain_id)?;
+ let provider = Provider::try_from(rpc_url)?;
+ let to_address = self.get_to_address();
+ let wallet = LocalWallet::from_str(&format!("{private_key:?}"))?.with_chain_id(chain);
+ let zk_wallet = ZKSWallet::new(wallet, None, Some(provider), None);
+
+ // TODO Support different tokens than ETH.
+ if self.withdraw {
+ let amount = self
+ .amount
+ .expect("Amount was not provided. Use --amount flag (ex. --amount 1000000000 )");
+
+ match zk_wallet {
+ Ok(wallet) => {
+ println!("Bridging assets....");
+ let tx_rcpt = wallet
+ .withdraw(amount, to_address)
+ .await?
+ .await?
+ .ok_or(eyre::eyre!("Error getting the receipt for withdraw"))?;
+ self.print_receipt(&tx_rcpt);
+ }
+ Err(e) => eyre::bail!("error wallet: {e:?}"),
+ };
+ } else {
+ match zk_wallet {
+ Ok(wallet) => {
+ println!("Sending transaction....");
+ let sig = self.sig.as_ref().expect("Error: Function Signature is empty");
+ let params = (!sig.is_empty()).then_some((&sig[..], self.args.clone()));
+
+ let rcpt = wallet
+ .get_era_provider()?
+ .send_eip712(
+ &wallet.l2_wallet,
+ to_address,
+ sig,
+ params.map(|(_, values)| values),
+ None,
+ )
+ .await?
+ .await?
+ .ok_or(eyre::eyre!("Error getting the receipt for transaction"))?;
+
+ self.print_receipt(&rcpt);
+ }
+ Err(e) => eyre::bail!("error wallet: {e:?}"),
+ };
+ }
+
+ Ok(())
+ }
+
+ /// Prints the receipt of the transaction.
+ ///
+ /// This function extracts the transaction hash, gas used, effective gas price, and block number
+ /// from the receipt and prints them. It also prints the address of the deployed contract, if
+ /// any.
+ ///
+ /// # Arguments
+ ///
+ /// * `rcpt` - A reference to the `TransactionReceipt`.
+ fn print_receipt(&self, rcpt: &TransactionReceipt) {
+ let gas_used = rcpt.gas_used.expect("Error retrieving gas used");
+ let gas_price = rcpt.effective_gas_price.expect("Error retrieving gas price");
+ let block_number = rcpt.block_number.expect("Error retrieving block number");
+
+ println!("+-------------------------------------------------+");
+ println!("Transaction Hash: {:#?}", rcpt.transaction_hash);
+ println!("Gas used: {:#?}", gas_used);
+ println!("Effective gas price: {:#?}", gas_price);
+ println!("Block Number: {:#?}", block_number);
+ println!("+-------------------------------------------------+");
+
+ // This will display a deployed contract address if one was deployed via zksend
+ for log in &rcpt.logs {
+ if log.address == Address::from_str(CONTRACT_DEPLOYER_ADDR).unwrap() {
+ let deployed_address = log.topics.get(3).unwrap();
+ let deployed_address = Address::from(*deployed_address);
+ println!("Deployed contract address: {:#?}", deployed_address);
+ println!("+-------------------------------------------------+");
+ }
+ }
+ }
+
+ // Gets the recipient address of the transaction.
+ ///
+ /// If the `to` field is `None`, it will panic with the message "Enter TO: Address".
+ ///
+ /// # Returns
+ ///
+ /// A `H160` object that represents the recipient's address.
+ fn get_to_address(&self) -> H160 {
+ let to = self.to.as_ref().expect("Enter TO: Address");
+ let deployed_contract = to.as_address().expect("Invalid address").as_bytes();
+ Address::from_slice(deployed_contract)
+ }
+}
+
+/// Parses a decimal string into a U256 number.
+///
+/// If the string cannot be parsed into a U256, an error message is returned.
+///
+/// # Arguments
+///
+/// * `s` - A string that represents a decimal number.
+///
+/// # Returns
+///
+/// A `Result` which is:
+/// - Ok: Contains the parsed U256 number.
+/// - Err: Contains an error message indicating that the parsing failed.
+fn parse_decimal_u256(s: &str) -> Result {
+ match U256::from_dec_str(s) {
+ Ok(value) => Ok(value),
+ Err(e) => Err(format!("Failed to parse decimal number: {}", e)),
+ }
+}
diff --git a/cli/src/cmd/cast/zk_utils.rs b/cli/src/cmd/cast/zk_utils.rs
new file mode 100644
index 000000000..c21f56d68
--- /dev/null
+++ b/cli/src/cmd/cast/zk_utils.rs
@@ -0,0 +1,143 @@
+/// The `zk_utils` module provides utility functions specifically designed for interacting with
+/// zkSync, an Ethereum layer 2 scaling solution.
+///
+/// This module encapsulates various functionalities related to zkSync, including retrieving
+/// the RPC URL for Ethereum, parsing and attaching a default port to a URL string, obtaining
+/// the private key, retrieving the chain configuration, and creating a signer for zkSync
+/// transactions.
+///
+/// Functions in this module:
+///
+/// - `get_rpc_url`: Retrieves the RPC URL for Ethereum. Returns `Result` with the RPC
+/// URL if successful, or an error message if the RPC URL was not provided.
+///
+/// - `get_url_with_port`: Parses a URL string and attaches a default port if one is not
+/// specified. Returns an `Option` with the parsed URL if successful, or `None` if
+/// the input was not a valid URL.
+///
+/// - `get_private_key`: Gets the private key from the Ethereum options. Returns `Result`
+/// with the private key as `H256` if successful, or an error message if the private key was
+/// not provided.
+///
+/// - `get_chain`: Gets the chain from the Ethereum options. Returns `Result` with the
+/// chain configuration if successful, or an error message if the chain was not provided.
+///
+/// - `get_signer`: Creates a signer from the private key and the chain. Returns a
+/// `Signer` instance for signing transactions on the zkSync network.
+///
+/// - `decode_hex`: Decodes a hexadecimal string into a byte vector. Returns `Result>`
+/// with the decoded byte vector if successful, or a `ParseIntError` if the decoding fails.
+use eyre::Result;
+use foundry_config::Chain;
+use std::num::ParseIntError;
+use url::Url;
+use zksync_web3_rs::types::H256;
+/// Gets the RPC URL for Ethereum.
+///
+/// If the `eth.rpc_url` is `None`, an error is returned.
+///
+/// # Returns
+///
+/// A `Result` which is:
+/// - Ok: Contains the RPC URL as a String.
+/// - Err: Contains an error message indicating that the RPC URL was not provided.
+pub fn get_rpc_url(rpc_url: &Option) -> eyre::Result {
+ match rpc_url {
+ Some(url) => {
+ let rpc_url = get_url_with_port(url)
+ .ok_or_else(|| eyre::Report::msg("Invalid RPC_URL"))?;
+ Ok(rpc_url)
+ },
+ None => Err(eyre::Report::msg("RPC URL was not provided. Try using --rpc-url flag or environment variable 'ETH_RPC_URL= '")),
+ }
+}
+
+/// Parses a URL string and attaches a default port if one is not specified.
+///
+/// This function takes a URL string as input and attempts to parse it.
+/// If the URL string is not a valid URL, the function returns `None`.
+/// If the URL is valid and has a specified port, the function returns the URL as is.
+/// If the URL is valid but does not have a specified port, the function attaches a default
+/// port. The default port is 443 if the URL uses the HTTPS scheme, and 80 otherwise.
+///
+/// # Parameters
+///
+/// - `url_str`: The URL string to parse.
+///
+/// # Returns
+///
+/// An `Option` which contains a String with the parsed URL if successful, or `None` if the
+/// input was not a valid URL.
+pub fn get_url_with_port(url_str: &str) -> Option {
+ let url = Url::parse(url_str).ok()?;
+ let default_port = url.scheme() == "https" && url.port().is_none();
+ let port = url.port().unwrap_or(if default_port { 443 } else { 80 });
+ Some(format!("{}://{}:{}{}", url.scheme(), url.host_str()?, port, url.path()))
+}
+
+/// Gets the private key from the Ethereum options.
+///
+/// If the `eth.wallet.private_key` is `None`, an error is returned.
+///
+/// # Returns
+///
+/// A `Result` which is:
+/// - Ok: Contains the private key as `H256`.
+/// - Err: Contains an error message indicating that the private key was not provided.
+pub fn get_private_key(private_key: &Option) -> Result {
+ match private_key {
+ Some(pkey) => {
+ let val = decode_hex(pkey)
+ .map_err(|e| eyre::Report::msg(format!("Error parsing private key: {}", e)))?;
+ Ok(H256::from_slice(&val))
+ }
+ None => {
+ Err(eyre::Report::msg("Private key was not provided. Try using --private-key flag"))
+ }
+ }
+}
+
+/// Gets the chain from the Ethereum options.
+///
+/// If the `eth.chain` is `None`, an error is returned.
+///
+/// # Returns
+///
+/// A `Result` which is:
+/// - Ok: Contains the chain as `Chain`.
+/// - Err: Contains an error message indicating that the chain was not provided.
+pub fn get_chain(chain: Option) -> Result {
+ match chain {
+ Some(chain) => Ok(chain),
+ None => Err(eyre::Report::msg(
+ "Chain was not provided. Use --chain flag (ex. --chain 270 ) \nor environment variable 'CHAIN= ' (ex.'CHAIN=270')",
+ )),
+ }
+}
+
+/// Decodes a hexadecimal string into a byte vector.
+///
+/// This function takes a hexadecimal string as input and decodes it into a vector of bytes.
+/// Each pair of hexadecimal characters in the input string represents one byte in the output
+/// vector.
+///
+/// # Arguments
+///
+/// * `s` - A string representing a hexadecimal value.
+///
+/// # Returns
+///
+/// A `Result` containing the decoded byte vector if successful, or a `ParseIntError` if the
+/// decoding fails.
+///
+/// # Examples
+///
+/// ```
+/// use foundry_cli::cmd::cast::zk_utils::decode_hex;
+/// let hex_string = "48656c6c6f2c20576f726c6421";
+/// let bytes = decode_hex(hex_string).expect("Error decoding hex");
+/// assert_eq!(bytes, vec![72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 33]);
+/// ```
+pub fn decode_hex(s: &str) -> std::result::Result, ParseIntError> {
+ (0..s.len()).step_by(2).map(|i| u8::from_str_radix(&s[i..i + 2], 16)).collect()
+}
diff --git a/cli/src/cmd/forge/mod.rs b/cli/src/cmd/forge/mod.rs
index 5a1f508e0..46d7ddba6 100644
--- a/cli/src/cmd/forge/mod.rs
+++ b/cli/src/cmd/forge/mod.rs
@@ -65,3 +65,7 @@ pub mod tree;
pub mod update;
pub mod verify;
pub mod watch;
+pub mod zk_build;
+pub mod zk_create;
+pub mod zksolc;
+pub mod zksolc_manager;
diff --git a/cli/src/cmd/forge/test/mod.rs b/cli/src/cmd/forge/test/mod.rs
index 82bb5d77d..4f7648180 100644
--- a/cli/src/cmd/forge/test/mod.rs
+++ b/cli/src/cmd/forge/test/mod.rs
@@ -8,7 +8,7 @@ use crate::{
};
use cast::fuzz::CounterExample;
use clap::Parser;
-use ethers::types::U256;
+use ethers::{abi::Abi, types::U256};
use forge::{
decode::decode_console_logs,
executor::inspector::CheatsConfig,
@@ -27,10 +27,11 @@ use foundry_common::{
};
use foundry_config::{figment, get_available_profiles, Config};
use regex::Regex;
-use std::{collections::BTreeMap, path::PathBuf, sync::mpsc::channel, time::Duration};
+use std::{collections::BTreeMap, fs, path::PathBuf, sync::mpsc::channel, time::Duration};
use tracing::trace;
use watchexec::config::{InitConfig, RuntimeConfig};
use yansi::Paint;
+
mod filter;
use crate::cmd::forge::test::filter::ProjectPathsAwareFilter;
pub use filter::FilterArgs;
@@ -41,6 +42,8 @@ use foundry_config::figment::{
};
use foundry_evm::utils::evm_spec;
+use ethers::types::Bytes;
+
// Loads project's figment and merges the build cli arguments into it
foundry_config::merge_impl_figment_convert!(TestArgs, opts, evm_opts);
@@ -190,6 +193,13 @@ impl TestArgs {
.with_test_options(test_options.clone())
.build(project_root, output, env, evm_opts)?;
+ println!("{:#?}, <-------> runner fork", runner.fork);
+ // let (_contract, _bytes, _bytes_v) =
+ // runner.contracts.clone().into_iter().nth(0).unwrap().1; println!("{:#?},
+ // <-------> _contract", _contract); println!("{:#?}, <-------> _bytes", _bytes);
+
+ // zk_evm::
+
if self.debug.is_some() {
filter.args_mut().test_pattern = self.debug;
@@ -514,6 +524,31 @@ async fn test(
gas_reporting: bool,
fail_fast: bool,
) -> eyre::Result {
+ let project = config.project().unwrap();
+
+ //get bytecode
+ let contract_path = "src/Greeter.sol:Greeter";
+ let output_path: &str =
+ &format!("{}/zksolc/{}/combined.json", project.paths.artifacts.display(), "Greeter.sol");
+ let data = fs::read_to_string(output_path).expect("Unable to read file");
+ //convert to json Value
+ let res: serde_json::Value = serde_json::from_str(&data).expect("Unable to parse");
+ let bytecode: Bytes =
+ serde_json::from_value(res["contracts"][&contract_path]["bin"].clone()).unwrap();
+ let bytecode_v = bytecode.to_vec();
+ //get abi
+ let abi: Abi = serde_json::from_value(res["contracts"][&contract_path]["abi"].clone()).unwrap();
+ let a = runner.known_contracts.clone().0.into_iter();
+ for (art, _ctx) in a {
+ if &art.name == "Greeter" {
+ // println!(
+ // "{:#?}, before contracts",
+ // runner.known_contracts.0.get_key_value(&art).unwrap().1
+ // );
+ runner.known_contracts.0.insert(art, (abi.clone(), bytecode_v.clone()));
+ }
+ }
+
trace!(target: "forge::test", "running all tests");
if runner.count_filtered_tests(&filter) == 0 {
let filter_str = filter.to_string();
@@ -543,6 +578,8 @@ async fn test(
// Set up identifiers
let mut local_identifier = LocalTraceIdentifier::new(&runner.known_contracts);
let remote_chain_id = runner.evm_opts.get_remote_chain_id();
+ // let env = runner.evm_opts.env.chain_id;
+ // println!("{:#?}, env", env);
// Do not re-query etherscan for contracts that you've already queried today.
let mut etherscan_identifier = EtherscanIdentifier::new(&config, remote_chain_id)?;
@@ -566,6 +603,9 @@ async fn test(
results.insert(contract_name.clone(), suite_result.clone());
let mut tests = suite_result.test_results.clone();
+ // println!("{:#?}, tests", tests);
+
+ println!("{:#?}, remote_chain_id", remote_chain_id);
println!();
for warning in suite_result.warnings.iter() {
eprintln!("{} {warning}", Paint::yellow("Warning:").bold());
diff --git a/cli/src/cmd/forge/zk_build.rs b/cli/src/cmd/forge/zk_build.rs
new file mode 100644
index 000000000..7949c7d3e
--- /dev/null
+++ b/cli/src/cmd/forge/zk_build.rs
@@ -0,0 +1,254 @@
+/// The `zkbuild` module provides comprehensive functionality for the compilation of zkSync
+/// smart contracts with a specified Solidity compiler version.
+///
+/// This module consists of the following key structures and their corresponding
+/// implementations:
+///
+/// * `ZkBuildArgs`: This structure encapsulates the parameters necessary for building zkSync
+/// contracts. These parameters include the Solidity compiler version, an option to enable
+/// the system contract compilation mode, and an option to forcibly switch to the EVM legacy
+/// assembly pipeline. Additionally, it includes core build arguments defined in the
+/// `CoreBuildArgs` structure.
+///
+/// * `Cmd` Implementation for `ZkBuildArgs`: This implementation includes a `run` function,
+/// which initiates the zkSync contract compilation process. The `run` function takes care of
+/// the various steps involved in the process, including downloading the zksolc compiler,
+/// setting up the compiler directory, and invoking the compilation process.
+///
+/// This module serves as a facilitator for the zkSync contract compilation process. It allows
+/// developers to specify the compiler version and compilation options and handles the
+/// intricate tasks necessary for contract compilation. This includes downloading the specified
+/// compiler version if it's not already available, preparing the compiler's directory, and
+/// finally, invoking the compilation process with the provided options.
+///
+/// The `zkbuild` module is part of a larger framework aimed at managing and interacting with
+/// zkSync contracts. It is designed to provide a seamless experience for developers, providing
+/// an easy-to-use interface for contract compilation while taking care of the underlying
+/// complexities.
+use super::build::CoreBuildArgs;
+use super::{
+ zksolc::{ZkSolc, ZkSolcOpts},
+ zksolc_manager::{
+ ZkSolcManager, ZkSolcManagerBuilder, ZkSolcManagerOpts, DEFAULT_ZKSOLC_VERSION,
+ },
+};
+use crate::cmd::{Cmd, LoadConfig};
+use clap::Parser;
+use ethers::prelude::Project;
+use foundry_config::{
+ figment::{
+ self,
+ error::Kind::InvalidType,
+ value::{Dict, Map, Value},
+ Metadata, Profile, Provider,
+ },
+ Config,
+};
+use serde::Serialize;
+use std::fmt::Debug;
+
+foundry_config::merge_impl_figment_convert!(ZkBuildArgs, args);
+
+/// The `ZkBuildArgs` struct encapsulates the parameters required for the zkSync contract
+/// compilation process.
+///
+/// This includes:
+/// * `use_zksolc`: The version of the Solidity compiler (solc) to be used for compilation, or the
+/// path to a local solc. The values can be in the format `x.y.z`, `solc:x.y.z`, or
+/// `path/to/solc`. It is used to specify the compiler version or location, which is crucial for
+/// the contract building process.
+///
+/// * `is_system`: A boolean flag indicating whether to enable the system contract compilation mode.
+/// In this mode, zkEVM extensions are enabled, for example, calls to addresses `0xFFFF` and below
+/// are substituted by special zkEVM instructions. This option is used when we want to compile
+/// system contracts.
+///
+/// * `force_evmla`: A boolean flag indicating whether to forcibly switch to the EVM legacy assembly
+/// pipeline. This is useful for older revisions of `solc` 0.8, where Yul was considered highly
+/// experimental and contained more bugs than today. This flag allows us to use the EVM legacy
+/// assembly pipeline, which can be beneficial in certain situations.
+///
+/// * `args`: Core build arguments encapsulated in the `CoreBuildArgs` struct. These include
+/// additional parameters required for building the contract, such as optimization level, output
+/// directory etc.
+///
+/// This struct is used as input to the `ZkSolc` compiler, which will use these arguments to
+/// configure the compilation process. It implements the `Cmd` trait, which triggers the compilation
+/// process when the `run` function is called. The struct also implements the `Provider` trait,
+/// allowing it to be converted into a form that can be merged into the application's configuration
+/// object.
+#[derive(Debug, Clone, Parser, Serialize, Default)]
+#[clap(next_help_heading = "ZkBuild options", about = None)]
+pub struct ZkBuildArgs {
+ /// Specify the solc version, or a path to a local solc, to build with.
+ ///
+ /// Valid values are in the format `x.y.z`, `solc:x.y.z` or `path/to/solc`.
+ #[clap(
+ help_heading = "ZkSync Compiler options",
+ value_name = "ZK_SOLC_VERSION",
+ long = "use-zksolc",
+ default_value = DEFAULT_ZKSOLC_VERSION
+ )]
+ #[serde(skip)]
+ pub use_zksolc: String,
+
+ /// A flag indicating whether to enable the system contract compilation mode.
+ #[clap(
+ help_heading = "ZkSync Compiler options",
+ help = "Enable the system contract compilation mode. In this mode zkEVM extensions are enabled. For example, calls
+ to addresses `0xFFFF` and below are substituted by special zkEVM instructions.",
+ long = "is-system",
+ value_name = "SYSTEM_MODE"
+ )]
+ pub is_system: bool,
+
+ /// A flag indicating whether to forcibly switch to the EVM legacy assembly pipeline.
+ #[clap(
+ help_heading = "ZkSync Compiler options",
+ help = "Forcibly switch to the EVM legacy assembly pipeline. It is useful for older revisions of `solc` 0.8, where
+ Yul was considered highly experimental and contained more bugs than today",
+ long = "force-evmla",
+ value_name = "FORCE_EVMLA"
+ )]
+ pub force_evmla: bool,
+
+ /// Core build arguments encapsulated in the `CoreBuildArgs` struct.
+ #[clap(flatten)]
+ #[serde(flatten)]
+ pub args: CoreBuildArgs,
+}
+
+impl Cmd for ZkBuildArgs {
+ type Output = ();
+
+ /// Executes the zkSync contract compilation process based on the parameters encapsulated in the
+ /// `ZkBuildArgs` instance.
+ ///
+ /// This method performs the following steps:
+ /// 1. Tries to load the application's configuration, emitting warnings if any issues are
+ /// encountered.
+ /// 2. Modifies the project's artifact path to be the "zkout" directory in the project's root
+ /// directory.
+ /// 3. Creates a `ZkSolcManager` instance based on the specified zkSync Solidity compiler
+ /// (`use_zksolc` field in `ZkBuildArgs`).
+ /// 4. Checks if the setup compilers directory is properly set up. If not, it raises an error
+ /// and halts execution.
+ /// 5. If the zkSync Solidity compiler does not exist in the compilers directory, it triggers
+ /// its download.
+ /// 6. Initiates the contract compilation process using the `ZkSolc` compiler. This process is
+ /// configured with the `is_system` and `force_evmla` parameters from the `ZkBuildArgs`
+ /// instance, and the path to the zkSync Solidity compiler.
+ /// 7. If the compilation process fails, it raises an error and halts execution.
+ ///
+ /// The method returns `Ok(())` if the entire process completes successfully, or an error if any
+ /// step in the process fails. The purpose of this function is to consolidate all steps
+ /// involved in the zkSync contract compilation process in a single method, allowing for
+ /// easy invocation of the process with a single function call.
+ fn run(self) -> eyre::Result<()> {
+ let config = self.try_load_config_emit_warnings()?;
+ let mut project = config.project()?;
+
+ //set zk out path
+ let zk_out_path = project.paths.root.join("zkout");
+ project.paths.artifacts = zk_out_path;
+
+ let zksolc_manager = self.setup_zksolc_manager()?;
+
+ println!("Compiling smart contracts...");
+ self.compile_smart_contracts(zksolc_manager, project)
+ }
+}
+
+impl ZkBuildArgs {
+ /// The `setup_zksolc_manager` function creates and prepares an instance of `ZkSolcManager`.
+ ///
+ /// It follows these steps:
+ /// 1. Instantiate `ZkSolcManagerOpts` and `ZkSolcManagerBuilder` with the specified zkSync
+ /// Solidity compiler.
+ /// 2. Create a `ZkSolcManager` using the builder.
+ /// 3. Check if the setup compilers directory is properly set up. If not, it raises an error.
+ /// 4. If the zkSync Solidity compiler does not exist in the compilers directory, it triggers
+ /// its download.
+ ///
+ /// The function returns the `ZkSolcManager` if all steps are successful, or an error if any
+ /// step fails.
+ fn setup_zksolc_manager(&self) -> eyre::Result {
+ let zksolc_manager_opts = ZkSolcManagerOpts::new(self.use_zksolc.clone());
+ let zksolc_manager_builder = ZkSolcManagerBuilder::new(zksolc_manager_opts);
+ let zksolc_manager = zksolc_manager_builder
+ .build()
+ .map_err(|e| eyre::eyre!("Error building zksolc_manager: {}", e))?;
+
+ if let Err(err) = zksolc_manager.check_setup_compilers_dir() {
+ eyre::bail!("Failed to setup compilers directory: {}", err);
+ }
+
+ if !zksolc_manager.exists() {
+ println!(
+ "Downloading zksolc compiler from {:?}",
+ zksolc_manager.get_full_download_url().unwrap().to_string()
+ );
+ zksolc_manager
+ .download()
+ .map_err(|err| eyre::eyre!("Failed to download the file: {}", err))?;
+ }
+
+ Ok(zksolc_manager)
+ }
+
+ /// The `compile_smart_contracts` function initiates the contract compilation process.
+ ///
+ /// It follows these steps:
+ /// 1. Create an instance of `ZkSolcOpts` with the appropriate options.
+ /// 2. Instantiate `ZkSolc` with the created options and the project.
+ /// 3. Initiate the contract compilation process.
+ ///
+ /// The function returns `Ok(())` if the compilation process completes successfully, or an error
+ /// if it fails.
+ fn compile_smart_contracts(
+ &self,
+ zksolc_manager: ZkSolcManager,
+ project: Project,
+ ) -> eyre::Result<()> {
+ let zksolc_opts = ZkSolcOpts {
+ compiler_path: zksolc_manager.get_full_compiler_path(),
+ is_system: self.is_system,
+ force_evmla: self.force_evmla,
+ };
+
+ let zksolc = ZkSolc::new(zksolc_opts, project);
+
+ match zksolc.compile() {
+ Ok(_) => {
+ println!("Compiled Successfully");
+ Ok(())
+ }
+ Err(err) => {
+ eyre::bail!("Failed to compile smart contracts with zksolc: {}", err);
+ }
+ }
+ }
+}
+
+// Make this args a `figment::Provider` so that it can be merged into the `Config`
+impl Provider for ZkBuildArgs {
+ fn metadata(&self) -> Metadata {
+ Metadata::named("Build Args Provider")
+ }
+
+ fn data(&self) -> Result