From 5deb37402497fcf11c74e3a481336ca7144b032e Mon Sep 17 00:00:00 2001 From: enitrat Date: Fri, 20 Sep 2024 18:50:24 +0200 Subject: [PATCH 01/53] wip: cairo native --- Cargo.lock | 471 ++++++- Cargo.toml | 6 +- blockchain-tests-skip.yml | 179 +-- crates/ef-testing/Cargo.toml | 1 + crates/ef-testing/program.sierra | 1226 +++++++++++++++++ .../ef-testing/src/evm_sequencer/constants.rs | 26 + .../src/evm_sequencer/sequencer/mod.rs | 28 +- crates/sequencer/Cargo.toml | 7 + crates/sequencer/src/lib.rs | 1 + crates/sequencer/src/native.rs | 194 +++ crates/sequencer/src/state.rs | 14 +- 11 files changed, 1957 insertions(+), 196 deletions(-) mode change 100644 => 120000 blockchain-tests-skip.yml create mode 100644 crates/ef-testing/program.sierra create mode 100644 crates/sequencer/src/native.rs diff --git a/Cargo.lock b/Cargo.lock index f646fd10..bce15c0a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -951,13 +951,26 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", +<<<<<<< HEAD "itertools 0.13.0", +======= + "itertools 0.12.1", + "lazy_static", + "lazycell", + "log", + "prettyplease", +>>>>>>> 595f442 (wip: cairo native) "proc-macro2", "quote", "regex", "rustc-hash 1.1.0", "shlex", +<<<<<<< HEAD "syn 2.0.79", +======= + "syn 2.0.77", + "which", +>>>>>>> 595f442 (wip: cairo native) ] [[package]] @@ -1034,23 +1047,31 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=d1f32e2#d1f32e241e4a9a404d8b2c292921685f39ee0211" dependencies = [ "anyhow", "ark-ec", "ark-ff 0.4.2", "ark-secp256k1", "ark-secp256r1", - "cached", + "cached 0.44.0", "cairo-lang-casm", "cairo-lang-runner", + "cairo-lang-sierra", "cairo-lang-starknet-classes", "cairo-lang-utils", + "cairo-native", "cairo-vm", "derive_more 0.99.18", +<<<<<<< HEAD "indexmap 2.6.0", "itertools 0.12.1", +======= + "educe", + "indexmap 2.5.0", + "itertools 0.10.5", +>>>>>>> 595f442 (wip: cairo native) "keccak", + "lazy_static", "log", "num-bigint", "num-integer", @@ -1198,7 +1219,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b195e4fbc4b6862bbd065b991a34750399c119797efff72492f28a5864de8700" dependencies = [ "async-trait", - "cached_proc_macro", + "cached_proc_macro 0.17.0", "cached_proc_macro_types", "futures", "hashbrown 0.13.2", @@ -1208,6 +1229,21 @@ dependencies = [ "tokio", ] +[[package]] +name = "cached" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4d73155ae6b28cf5de4cfc29aeb02b8a1c6dab883cb015d15cd514e42766846" +dependencies = [ + "ahash", + "cached_proc_macro 0.23.0", + "cached_proc_macro_types", + "hashbrown 0.14.5", + "once_cell", + "thiserror", + "web-time", +] + [[package]] name = "cached_proc_macro" version = "0.17.0" @@ -1221,6 +1257,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "cached_proc_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f42a145ed2d10dce2191e1dcf30cfccfea9026660e143662ba5eec4017d5daa" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "cached_proc_macro_types" version = "0.1.1" @@ -1689,6 +1737,33 @@ dependencies = [ "xshell", ] +[[package]] +name = "cairo-lang-test-plugin" +version = "2.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74f1597b8229a3649183ff33b19f0aeca5d86505253ebbbce377b271d1732835" +dependencies = [ + "anyhow", + "cairo-lang-compiler", + "cairo-lang-debug", + "cairo-lang-defs", + "cairo-lang-filesystem", + "cairo-lang-lowering", + "cairo-lang-semantic", + "cairo-lang-sierra", + "cairo-lang-sierra-generator", + "cairo-lang-starknet", + "cairo-lang-starknet-classes", + "cairo-lang-syntax", + "cairo-lang-utils", + "indoc", + "itertools 0.12.1", + "num-bigint", + "num-traits 0.2.19", + "serde", + "starknet-types-core", +] + [[package]] name = "cairo-lang-test-utils" version = "2.8.4" @@ -1718,6 +1793,69 @@ dependencies = [ "serde", ] +[[package]] +name = "cairo-native" +version = "0.2.0" +dependencies = [ + "anyhow", + "aquamarine", + "bumpalo", + "cairo-lang-compiler", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-runner", + "cairo-lang-semantic", + "cairo-lang-sierra", + "cairo-lang-sierra-ap-change", + "cairo-lang-sierra-gas", + "cairo-lang-sierra-generator", + "cairo-lang-starknet", + "cairo-lang-starknet-classes", + "cairo-lang-test-plugin", + "cairo-lang-utils", + "cairo-native-runtime", + "cc", + "clap", + "colored", + "educe", + "itertools 0.13.0", + "k256", + "keccak", + "lazy_static", + "libc", + "libloading", + "llvm-sys", + "melior", + "mlir-sys", + "num-bigint", + "num-traits 0.2.19", + "p256", + "sec1", + "serde", + "serde_json", + "sha2 0.10.8", + "starknet-types-core", + "stats_alloc", + "tempfile", + "thiserror", + "tracing", + "tracing-subscriber", + "utf8_iter", +] + +[[package]] +name = "cairo-native-runtime" +version = "0.2.0" +dependencies = [ + "cairo-lang-sierra-gas", + "lazy_static", + "libc", + "rand", + "starknet-curve 0.5.1", + "starknet-types-core", +] + [[package]] name = "cairo-vm" version = "1.0.1" @@ -1725,7 +1863,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58363ad8065ed891e3b14a8191b707677c7c7cb5b9d10030822506786d8d8108" dependencies = [ "anyhow", - "arbitrary", "bincode 2.0.0-rc.3", "bitvec", "generic-array", @@ -1788,6 +1925,16 @@ dependencies = [ "thiserror", ] +[[package]] +name = "caseless" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808dab3318747be122cb31d36de18d4d1c81277a76f8332a02b81a3d73463d7f" +dependencies = [ + "regex", + "unicode-normalization", +] + [[package]] name = "cc" version = "1.1.28" @@ -1907,6 +2054,36 @@ dependencies = [ ] [[package]] +<<<<<<< HEAD +======= +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "comrak" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d061c6d53fe98c25efda0d91b7f6b4b4020a51dad78a3eac5028710aa26f8e7" +dependencies = [ + "caseless", + "derive_builder", + "entities", + "memchr", + "once_cell", + "regex", + "slug", + "typed-arena", + "unicode_categories", +] + +[[package]] +>>>>>>> 595f442 (wip: cairo native) name = "concat-kdf" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2306,6 +2483,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", + "pem-rfc7468", "zeroize", ] @@ -2341,6 +2519,37 @@ dependencies = [ "syn 2.0.79", ] +[[package]] +name = "derive_builder" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" +dependencies = [ + "darling 0.20.10", + "proc-macro2", + "quote", + "syn 2.0.77", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" +dependencies = [ + "derive_builder_core", + "syn 2.0.77", +] + [[package]] name = "derive_more" version = "0.99.18" @@ -2376,6 +2585,12 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "deunicode" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "339544cc9e2c4dc3fc7149fd630c5f22263a4fdf18a98afd0075784968b5cf00" + [[package]] name = "diff" version = "0.1.13" @@ -2555,6 +2770,18 @@ dependencies = [ "zeroize", ] +[[package]] +name = "educe" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4bd92664bf78c4d3dba9b7cdafce6fa15b13ed3ed16175218196942e99168a8" +dependencies = [ + "enum-ordinalize", + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "ef-testing" version = "0.1.0" @@ -2645,6 +2872,7 @@ dependencies = [ "ff", "generic-array", "group", + "pem-rfc7468", "pkcs8", "rand_core", "sec1", @@ -2690,6 +2918,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "entities" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5320ae4c3782150d900b79807611a59a99fc9a1d61d686faafc24b93fc8d7ca" + [[package]] name = "enum-as-inner" version = "0.6.1" @@ -2702,6 +2936,26 @@ dependencies = [ "syn 2.0.79", ] +[[package]] +name = "enum-ordinalize" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea0dcfa4e54eeb516fe454635a95753ddd39acda650ce703031c6973e315dd5" +dependencies = [ + "enum-ordinalize-derive", +] + +[[package]] +name = "enum-ordinalize-derive" +version = "4.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "enumn" version = "0.1.14" @@ -3320,6 +3574,15 @@ dependencies = [ "hmac 0.8.1", ] +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "hostname" version = "0.3.1" @@ -4137,6 +4400,20 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "llvm-sys" +version = "181.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d320f9d2723c97d4b78f9190a61ed25cc7cfbe456668c08e6e7dd8e50ceb8500" +dependencies = [ + "anyhow", + "cc", + "lazy_static", + "libc", + "regex-lite", + "semver 1.0.23", +] + [[package]] name = "lock_api" version = "0.4.12" @@ -4224,6 +4501,35 @@ dependencies = [ "rawpointer", ] +[[package]] +name = "melior" +version = "0.18.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3085c0169aa3b735d8e7df582baee23c2aeb280ea62cc7f71effda28d8e281" +dependencies = [ + "dashmap", + "melior-macro", + "mlir-sys", + "once_cell", +] + +[[package]] +name = "melior-macro" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13d58c356ebaa7855da67aad1306a0d032b68919d3c65b0b5dcecf10d9bdf6a9" +dependencies = [ + "comrak", + "convert_case 0.6.0", + "once_cell", + "proc-macro2", + "quote", + "regex", + "syn 2.0.77", + "tblgen-alt", + "unindent", +] + [[package]] name = "memchr" version = "2.7.4" @@ -4316,6 +4622,15 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "mlir-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b1b5806a63bc959cd5c4e5db8cadd20e40045d41969d325132748db8af11b7f" +dependencies = [ + "bindgen", +] + [[package]] name = "modular-bitfield" version = "0.11.2" @@ -4822,6 +5137,18 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" +dependencies = [ + "ecdsa", + "elliptic-curve", + "primeorder", + "sha2 0.10.8", +] + [[package]] name = "page_size" version = "0.6.0" @@ -4835,10 +5162,9 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=d1f32e2#d1f32e241e4a9a404d8b2c292921685f39ee0211" dependencies = [ "clap", - "itertools 0.12.1", + "itertools 0.10.5", "serde", "serde_json", "strum_macros 0.25.3", @@ -4952,6 +5278,15 @@ dependencies = [ "serde", ] +[[package]] +name = "pem-rfc7468" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" +dependencies = [ + "base64ct", +] + [[package]] name = "percent-encoding" version = "2.3.1" @@ -5142,6 +5477,25 @@ dependencies = [ "yansi", ] +[[package]] +name = "prettyplease" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +dependencies = [ + "proc-macro2", + "syn 2.0.77", +] + +[[package]] +name = "primeorder" +version = "0.13.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" +dependencies = [ + "elliptic-curve", +] + [[package]] name = "primitive-types" version = "0.12.2" @@ -5408,6 +5762,12 @@ dependencies = [ "regex-syntax 0.8.5", ] +[[package]] +name = "regex-lite" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" + [[package]] name = "regex-syntax" version = "0.6.29" @@ -7607,9 +7967,15 @@ name = "sequencer" version = "0.1.0" dependencies = [ "blockifier", + "cached 0.53.1", + "cairo-lang-sierra", + "cairo-lang-starknet-classes", + "cairo-native", "eyre", "hashbrown 0.14.5", "lazy_static", + "libloading", + "once_cell", "serde", "serde_json", "starknet", @@ -7880,6 +8246,16 @@ dependencies = [ "autocfg", ] +[[package]] +name = "slug" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "882a80f72ee45de3cc9a5afeb2da0331d58df69e4e7d8eeb5d3c7784ae67e724" +dependencies = [ + "deunicode", + "wasm-bindgen", +] + [[package]] name = "smallvec" version = "1.13.2" @@ -8149,7 +8525,6 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa1b9e01ccb217ab6d475c5cda05dbb22c30029f7bb52b192a010a00d77a3d74" dependencies = [ - "arbitrary", "lambdaworks-crypto", "lambdaworks-math", "lazy_static", @@ -8162,14 +8537,18 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=d1f32e2#d1f32e241e4a9a404d8b2c292921685f39ee0211" dependencies = [ "bitvec", "cairo-lang-starknet-classes", "derive_more 0.99.18", "hex", +<<<<<<< HEAD "indexmap 2.6.0", "itertools 0.12.1", +======= + "indexmap 2.5.0", + "itertools 0.10.5", +>>>>>>> 595f442 (wip: cairo native) "primitive-types", "serde", "serde_json", @@ -8187,6 +8566,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" +[[package]] +name = "stats_alloc" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c0e04424e733e69714ca1bbb9204c1a57f09f5493439520f9f68c132ad25eec" + [[package]] name = "string_cache" version = "0.8.7" @@ -8382,6 +8767,18 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" +[[package]] +name = "tblgen-alt" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ae726d43658a13a9cd479de814be1311fea69236cd821e931a4fb9ca4d70e50" +dependencies = [ + "bindgen", + "cc", + "paste", + "thiserror", +] + [[package]] name = "tempfile" version = "3.13.0" @@ -8841,6 +9238,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "typed-arena" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" + [[package]] name = "typenum" version = "1.17.0" @@ -8925,6 +9328,18 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" +[[package]] +name = "unicode_categories" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e" + +[[package]] +name = "unindent" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" + [[package]] name = "universal-hash" version = "0.5.1" @@ -8970,6 +9385,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -9179,6 +9600,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + [[package]] name = "webpki-roots" version = "0.25.4" @@ -9186,6 +9617,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" [[package]] +<<<<<<< HEAD +======= +name = "webpki-roots" +version = "0.26.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "which" +version = "4.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +dependencies = [ + "either", + "home", + "once_cell", + "rustix", +] + +[[package]] +>>>>>>> 595f442 (wip: cairo native) name = "widestring" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" diff --git a/Cargo.toml b/Cargo.toml index df8821e9..d2de4568 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,13 +44,15 @@ cairo-lang-casm = "2.8.0" cairo-lang-starknet = "2.8.0" cairo-lang-utils = "2.8.0" cairo-lang-starknet-classes = "2.8.0" +cairo-lang-sierra = "2.8.0" +cairo-native = {path = "/Users/msaug/deps/cairo_native"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev = "d1f32e2", default-features = false, features = [ +blockifier = { package = "blockifier", path = "../../deps/sequencer/crates/blockifier", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev = "d1f32e2" } +starknet_api = { package = "starknet_api", path = "../../deps/sequencer/crates/starknet_api" } # Other async-trait = "0.1" diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml deleted file mode 100644 index 4cedddf6..00000000 --- a/blockchain-tests-skip.yml +++ /dev/null @@ -1,178 +0,0 @@ -# List of test names and test names regex to be skipped. -# The first level corresponds to the directory, the second to the list of file names regex to ignore. -# In the ef-tests repo, we skip all tests but the vmArithmeticTest. - -directories: - - Pyspecs - - Cancun - -filename: - None: - - None - -testname: - vmArithmeticTest: - - addmod_d10g0v0_Cancun - - addmod_d11g0v0_Cancun - - addmod_d8g0v0_Cancun - - addmod_d9g0v0_Cancun - - divByZero_d63g0v0_Cancun - - divByZero_d64g0v0_Cancun - - divByZero_d65g0v0_Cancun - - divByZero_d66g0v0_Cancun - - divByZero_d67g0v0_Cancun - - divByZero_d68g0v0_Cancun - - divByZero_d69g0v0_Cancun - - divByZero_d70g0v0_Cancun - - divByZero_d71g0v0_Cancun - - divByZero_d72g0v0_Cancun - - divByZero_d73g0v0_Cancun - - divByZero_d74g0v0_Cancun - - divByZero_d75g0v0_Cancun - - divByZero_d76g0v0_Cancun - - divByZero_d77g0v0_Cancun - - divByZero_d78g0v0_Cancun - - divByZero_d79g0v0_Cancun - - divByZero_d80g0v0_Cancun - - divByZero_d81g0v0_Cancun - - divByZero_d82g0v0_Cancun - - divByZero_d83g0v0_Cancun - - divByZero_d84g0v0_Cancun - - divByZero_d85g0v0_Cancun - - divByZero_d86g0v0_Cancun - - divByZero_d87g0v0_Cancun - - divByZero_d88g0v0_Cancun - - divByZero_d89g0v0_Cancun - - divByZero_d90g0v0_Cancun - - divByZero_d91g0v0_Cancun - - divByZero_d92g0v0_Cancun - - divByZero_d93g0v0_Cancun - - divByZero_d94g0v0_Cancun - - divByZero_d95g0v0_Cancun - - divByZero_d96g0v0_Cancun - - divByZero_d97g0v0_Cancun - - expPower256Of256_d0g0v0_Cancun - - exp_d1g0v0_Cancun - - exp_d3g0v0_Cancun - - exp_d8g0v0_Cancun - - exp_d9g0v0_Cancun - - expPower256_d0g0v0_Cancun - - mulmod_d12g0v0_Cancun - - mulmod_d13g0v0_Cancun - - mulmod_d14g0v0_Cancun - - mulmod_d15g0v0_Cancun - - twoOps_d0g0v0_Cancun - -regex: - stArgsZeroOneBalance: - - .* - stAttackTest: - - .* - stBadOpcode: - - .* - stBugs: - - .* - stCallCodes: - - .* - stCallCreateCallCodeTest: - - .* - stCallDelegateCodesCallCodeHomestead: - - .* - stCallDelegateCodesHomestead: - - .* - stChainId: - - .* - stCodeSizeLimit: - - .* - stCreateTest: - - .* - stCreate2: - - .* - stDelegatecallTestHomestead: - - .* - stEIP150Specific: - - .* - stEIP150singleCodeGasPrices: - - .* - stEIP1559: - - .* - stEIP158Specific: - - .* - stEIP2930: - - .* - stExample: - - .* - stExtCodeHash: - - .* - stInitCodeTest: - - .* - stLogTests: - - .* - stMemExpandingEIP150Calls: - - .* - stMemoryStressTest: - - .* - stMemoryTest: - - .* - stNonZeroCallsTest: - - .* - stPreCompiledContracts: - - .* - stPreCompiledContracts2: - - .* - stQuadraticComplexityTest: - - .* - stRandom: - - .* - stRandom2: - - .* - stRecursiveCreate: - - .* - stRefundTest: - - .* - stReturnDataTest: - - .* - stRevertTest: - - .* - stSLoadTest: - - .* - stSStoreTest: - - .* - stSelfBalance: - - .* - stShift: - - .* - stSolidityTest: - - .* - stSpecialTest: - - .* - stStackTests: - - .* - stStaticCall: - - .* - stStaticFlagEnabled: - - .* - stSystemOperationsTest: - - .* - stTimeConsuming: - - .* - stTransactionTest: - - .* - stTransitionTest: - - .* - stWalletTest: - - .* - stZeroCallsRevert: - - .* - stZeroKnowledge: - - .* - stZeroKnowledge2: - - .* - vmIOandFlowOperations: - - .* - vmLogTest: - - .* - vmPerformance: - - .* - vmTests: - - .* diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml new file mode 120000 index 00000000..7428ce91 --- /dev/null +++ b/blockchain-tests-skip.yml @@ -0,0 +1 @@ +../kakarot-ssj/blockchain-tests-skip.yml \ No newline at end of file diff --git a/crates/ef-testing/Cargo.toml b/crates/ef-testing/Cargo.toml index 7a83ae2f..f4b14218 100644 --- a/crates/ef-testing/Cargo.toml +++ b/crates/ef-testing/Cargo.toml @@ -62,6 +62,7 @@ zip = { workspace = true, optional = true } [features] v0 = [] v1 = [] +native = [] ci = [] [build-dependencies] diff --git a/crates/ef-testing/program.sierra b/crates/ef-testing/program.sierra new file mode 100644 index 00000000..9adaee04 --- /dev/null +++ b/crates/ef-testing/program.sierra @@ -0,0 +1,1226 @@ +type RangeCheck = RangeCheck [storable: true, drop: false, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type ClassHash = ClassHash [storable: true, drop: true, dup: true, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type ContractAddress = ContractAddress [storable: true, drop: true, dup: true, zero_sized: false]; +type contracts::components::ownable::ownable_component::OwnershipTransferred = Struct [storable: true, drop: true, dup: true, zero_sized: false]; +type contracts::components::ownable::ownable_component::Event = Enum [storable: true, drop: true, dup: true, zero_sized: false]; +type contracts::uninitialized_account::UninitializedAccount::Event = Enum [storable: true, drop: true, dup: true, zero_sized: false]; +type StorageBaseAddress = StorageBaseAddress [storable: true, drop: true, dup: true, zero_sized: false]; +type core::starknet::storage::StoragePointer0Offset::> = Struct [storable: true, drop: true, dup: true, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Box = Box [storable: true, drop: true, dup: true, zero_sized: false]; +type Box = Box [storable: true, drop: true, dup: true, zero_sized: false]; +type felt252 = felt252 [storable: true, drop: true, dup: true, zero_sized: false]; +type u128 = u128 [storable: true, drop: true, dup: true, zero_sized: false]; +type Array = Array [storable: true, drop: true, dup: false, zero_sized: false]; +type Snapshot> = Snapshot> [storable: true, drop: true, dup: true, zero_sized: false]; +type core::array::Span:: = Struct>> [storable: true, drop: true, dup: true, zero_sized: false]; +type Array = Array [storable: true, drop: true, dup: false, zero_sized: false]; +type Snapshot> = Snapshot> [storable: true, drop: true, dup: true, zero_sized: false]; +type core::array::Span:: = Struct>> [storable: true, drop: true, dup: true, zero_sized: false]; +type u32 = u32 [storable: true, drop: true, dup: true, zero_sized: false]; +type core::starknet::info::v2::TxInfo = Struct, felt252, felt252, felt252, core::array::Span::, u128, core::array::Span::, u32, u32, core::array::Span::> [storable: true, drop: true, dup: true, zero_sized: false]; +type u64 = u64 [storable: true, drop: true, dup: true, zero_sized: false]; +type core::starknet::info::BlockInfo = Struct [storable: true, drop: true, dup: true, zero_sized: false]; +type core::starknet::info::v2::ResourceBounds = Struct [storable: true, drop: true, dup: true, zero_sized: false]; +type core::starknet::info::v2::ExecutionInfo = Struct, Box, ContractAddress, ContractAddress, felt252> [storable: true, drop: true, dup: true, zero_sized: false]; +type Box = Box [storable: true, drop: true, dup: true, zero_sized: false]; +type contracts::components::ownable::ownable_component::ComponentState:: = Struct [storable: true, drop: true, dup: true, zero_sized: true]; +type contracts::uninitialized_account::UninitializedAccount::ContractState = Struct> [storable: true, drop: true, dup: true, zero_sized: true]; +type Unit = Struct [storable: true, drop: true, dup: true, zero_sized: true]; +type Tuple = Struct [storable: true, drop: true, dup: true, zero_sized: true]; +type core::panics::Panic = Struct [storable: true, drop: true, dup: true, zero_sized: true]; +type Tuple> = Struct> [storable: true, drop: true, dup: false, zero_sized: false]; +type core::panics::PanicResult::<(contracts::uninitialized_account::UninitializedAccount::ContractState, ())> = Enum, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; +type core::option::Option::> = Enum, Unit> [storable: true, drop: true, dup: false, zero_sized: false]; +type Tuple, core::option::Option::>> = Struct, core::option::Option::>> [storable: true, drop: true, dup: false, zero_sized: false]; +type core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)> = Enum, core::option::Option::>>, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; +type Box = Box [storable: true, drop: true, dup: true, zero_sized: false]; +type core::option::Option::> = Enum, Unit> [storable: true, drop: true, dup: true, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Tuple, Unit> = Struct, Unit> [storable: true, drop: true, dup: true, zero_sized: true]; +type core::panics::PanicResult::<(contracts::components::ownable::ownable_component::ComponentState::, ())> = Enum, Unit>, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; +type Tuple = Struct [storable: true, drop: true, dup: true, zero_sized: true]; +type core::panics::PanicResult::<((),)> = Enum, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type NonZero = NonZero [storable: true, drop: true, dup: true, zero_sized: false]; +type core::option::Option:: = Enum [storable: true, drop: true, dup: true, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type Tuple> = Struct> [storable: true, drop: true, dup: true, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type StorageAddress = StorageAddress [storable: true, drop: true, dup: true, zero_sized: false]; +type core::starknet::storage::StoragePointer0Offset:: = Struct [storable: true, drop: true, dup: true, zero_sized: false]; +type BuiltinCosts = BuiltinCosts [storable: true, drop: true, dup: true, zero_sized: false]; +type System = System [storable: true, drop: false, dup: false, zero_sized: false]; +type core::panics::PanicResult::<(core::array::Span::,)> = Enum>, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; +type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; +type GasBuiltin = GasBuiltin [storable: true, drop: false, dup: false, zero_sized: false]; + +libfunc revoke_ap_tracking = revoke_ap_tracking; +libfunc withdraw_gas = withdraw_gas; +libfunc branch_align = branch_align; +libfunc struct_deconstruct> = struct_deconstruct>; +libfunc store_temp = store_temp; +libfunc array_snapshot_pop_front = array_snapshot_pop_front; +libfunc drop>> = drop>>; +libfunc drop> = drop>; +libfunc array_new = array_new; +libfunc const_as_immediate> = const_as_immediate>; +libfunc store_temp = store_temp; +libfunc array_append = array_append; +libfunc struct_construct = struct_construct; +libfunc struct_construct>> = struct_construct>>; +libfunc enum_init,)>, 1> = enum_init,)>, 1>; +libfunc store_temp = store_temp; +libfunc store_temp = store_temp; +libfunc store_temp,)>> = store_temp,)>>; +libfunc get_builtin_costs = get_builtin_costs; +libfunc store_temp = store_temp; +libfunc withdraw_gas_all = withdraw_gas_all; +libfunc storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240> = storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>; +libfunc struct_construct> = struct_construct>; +libfunc snapshot_take> = snapshot_take>; +libfunc drop> = drop>; +libfunc struct_deconstruct> = struct_deconstruct>; +libfunc rename = rename; +libfunc storage_address_from_base = storage_address_from_base; +libfunc const_as_immediate> = const_as_immediate>; +libfunc store_temp = store_temp; +libfunc store_temp = store_temp; +libfunc storage_read_syscall = storage_read_syscall; +libfunc contract_address_try_from_felt252 = contract_address_try_from_felt252; +libfunc contract_address_to_felt252 = contract_address_to_felt252; +libfunc snapshot_take> = snapshot_take>; +libfunc drop> = drop>; +libfunc struct_construct> = struct_construct>; +libfunc struct_construct>> = struct_construct>>; +libfunc enum_init,)>, 0> = enum_init,)>, 0>; +libfunc const_as_immediate> = const_as_immediate>; +libfunc store_temp> = store_temp>; +libfunc jump = jump; +libfunc const_as_immediate> = const_as_immediate>; +libfunc drop> = drop>; +libfunc enable_ap_tracking = enable_ap_tracking; +libfunc unbox = unbox; +libfunc rename = rename; +libfunc enum_init, 0> = enum_init, 0>; +libfunc store_temp>> = store_temp>>; +libfunc store_temp> = store_temp>; +libfunc struct_construct = struct_construct; +libfunc enum_init, 1> = enum_init, 1>; +libfunc enum_match> = enum_match>; +libfunc disable_ap_tracking = disable_ap_tracking; +libfunc drop = drop; +libfunc dup = dup; +libfunc felt252_is_zero = felt252_is_zero; +libfunc const_as_immediate> = const_as_immediate>; +libfunc drop> = drop>; +libfunc struct_construct> = struct_construct>; +libfunc snapshot_take> = snapshot_take>; +libfunc function_call::assert_only_owner> = function_call::assert_only_owner>; +libfunc enum_match> = enum_match>; +libfunc drop> = drop>; +libfunc store_temp = store_temp; +libfunc function_call::_transfer_ownership> = function_call::_transfer_ownership>; +libfunc enum_match, ())>> = enum_match, ())>>; +libfunc drop, Unit>> = drop, Unit>>; +libfunc struct_deconstruct>> = struct_deconstruct>>; +libfunc drop = drop; +libfunc drop> = drop>; +libfunc drop = drop; +libfunc const_as_immediate> = const_as_immediate>; +libfunc contract_address_const<0> = contract_address_const<0>; +libfunc store_temp>> = store_temp>>; +libfunc enum_init>, 0> = enum_init>, 0>; +libfunc store_temp>> = store_temp>>; +libfunc enum_init>, 1> = enum_init>, 1>; +libfunc enum_match>> = enum_match>>; +libfunc store_temp> = store_temp>; +libfunc function_call> = function_call>; +libfunc enum_match, core::option::Option::>)>> = enum_match, core::option::Option::>)>>; +libfunc struct_deconstruct, core::option::Option::>>> = struct_deconstruct, core::option::Option::>>>; +libfunc store_temp>> = store_temp>>; +libfunc enum_init>, 1> = enum_init>, 1>; +libfunc enum_match>> = enum_match>>; +libfunc struct_construct = struct_construct; +libfunc function_call = function_call; +libfunc enum_match> = enum_match>; +libfunc drop> = drop>; +libfunc get_execution_info_v2_syscall = get_execution_info_v2_syscall; +libfunc store_temp> = store_temp>; +libfunc unbox = unbox; +libfunc struct_deconstruct = struct_deconstruct; +libfunc drop> = drop>; +libfunc drop> = drop>; +libfunc drop = drop; +libfunc const_as_immediate> = const_as_immediate>; +libfunc enum_init, 1> = enum_init, 1>; +libfunc store_temp> = store_temp>; +libfunc felt252_sub = felt252_sub; +libfunc struct_construct> = struct_construct>; +libfunc enum_init, 0> = enum_init, 0>; +libfunc const_as_immediate> = const_as_immediate>; +libfunc struct_construct>> = struct_construct>>; +libfunc snapshot_take>> = snapshot_take>>; +libfunc drop>> = drop>>; +libfunc struct_deconstruct>> = struct_deconstruct>>; +libfunc storage_write_syscall = storage_write_syscall; +libfunc struct_construct = struct_construct; +libfunc enum_init = enum_init; +libfunc enum_init = enum_init; +libfunc store_temp = store_temp; +libfunc function_call>> = function_call>>; +libfunc struct_construct, Unit>> = struct_construct, Unit>>; +libfunc enum_init, ())>, 0> = enum_init, ())>, 0>; +libfunc store_temp, ())>> = store_temp, ())>>; +libfunc enum_init, ())>, 1> = enum_init, ())>, 1>; +libfunc dup = dup; +libfunc enum_init>, 0> = enum_init>, 0>; +libfunc struct_construct, core::option::Option::>>> = struct_construct, core::option::Option::>>>; +libfunc enum_init, core::option::Option::>)>, 0> = enum_init, core::option::Option::>)>, 0>; +libfunc store_temp, core::option::Option::>)>> = store_temp, core::option::Option::>)>>; +libfunc const_as_immediate> = const_as_immediate>; +libfunc enum_init, core::option::Option::>)>, 1> = enum_init, core::option::Option::>)>, 1>; +libfunc struct_deconstruct = struct_deconstruct; +libfunc const_as_immediate> = const_as_immediate>; +libfunc call_contract_syscall = call_contract_syscall; +libfunc class_hash_try_from_felt252 = class_hash_try_from_felt252; +libfunc dup = dup; +libfunc class_hash_to_felt252 = class_hash_to_felt252; +libfunc const_as_immediate> = const_as_immediate>; +libfunc library_call_syscall = library_call_syscall; +libfunc replace_class_syscall = replace_class_syscall; +libfunc struct_deconstruct, Unit>> = struct_deconstruct, Unit>>; +libfunc struct_construct> = struct_construct>; +libfunc enum_init, 0> = enum_init, 0>; +libfunc store_temp> = store_temp>; +libfunc enum_init, 1> = enum_init, 1>; +libfunc drop = drop; +libfunc const_as_immediate> = const_as_immediate>; +libfunc drop = drop; +libfunc snapshot_take = snapshot_take; +libfunc drop = drop; +libfunc enum_match = enum_match; +libfunc const_as_immediate> = const_as_immediate>; +libfunc enum_match = enum_match; +libfunc const_as_immediate> = const_as_immediate>; +libfunc dup = dup; +libfunc struct_deconstruct = struct_deconstruct; +libfunc rename = rename; +libfunc emit_event_syscall = emit_event_syscall; + +revoke_ap_tracking() -> (); // 0 +withdraw_gas([0], [1]) { fallthrough([4], [5]) 94([6], [7]) }; // 1 +branch_align() -> (); // 2 +struct_deconstruct>([3]) -> ([8]); // 3 +store_temp([4]) -> ([4]); // 4 +array_snapshot_pop_front([8]) { fallthrough([9], [10]) 21([11]) }; // 5 +branch_align() -> (); // 6 +drop>>([9]) -> (); // 7 +drop>([10]) -> (); // 8 +array_new() -> ([12]); // 9 +const_as_immediate>() -> ([13]); // 10 +store_temp([13]) -> ([13]); // 11 +array_append([12], [13]) -> ([14]); // 12 +struct_construct() -> ([15]); // 13 +struct_construct>>([15], [14]) -> ([16]); // 14 +enum_init,)>, 1>([16]) -> ([17]); // 15 +store_temp([4]) -> ([4]); // 16 +store_temp([5]) -> ([5]); // 17 +store_temp([2]) -> ([2]); // 18 +store_temp,)>>([17]) -> ([17]); // 19 +return([4], [5], [2], [17]); // 20 +branch_align() -> (); // 21 +drop>>([11]) -> (); // 22 +get_builtin_costs() -> ([18]); // 23 +store_temp([18]) -> ([18]); // 24 +withdraw_gas_all([4], [5], [18]) { fallthrough([19], [20]) 81([21], [22]) }; // 25 +branch_align() -> (); // 26 +storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>() -> ([23]); // 27 +struct_construct>([23]) -> ([24]); // 28 +snapshot_take>([24]) -> ([25], [26]); // 29 +drop>([25]) -> (); // 30 +struct_deconstruct>([26]) -> ([27]); // 31 +rename([27]) -> ([28]); // 32 +storage_address_from_base([28]) -> ([29]); // 33 +const_as_immediate>() -> ([30]); // 34 +store_temp([30]) -> ([30]); // 35 +store_temp([29]) -> ([29]); // 36 +store_temp([19]) -> ([19]); // 37 +storage_read_syscall([20], [2], [30], [29]) { fallthrough([31], [32], [33]) 68([34], [35], [36]) }; // 38 +branch_align() -> (); // 39 +store_temp([33]) -> ([33]); // 40 +store_temp([31]) -> ([31]); // 41 +store_temp([32]) -> ([32]); // 42 +contract_address_try_from_felt252([19], [33]) { fallthrough([37], [38]) 58([39]) }; // 43 +branch_align() -> (); // 44 +array_new() -> ([40]); // 45 +contract_address_to_felt252([38]) -> ([41]); // 46 +array_append([40], [41]) -> ([42]); // 47 +snapshot_take>([42]) -> ([43], [44]); // 48 +drop>([43]) -> (); // 49 +struct_construct>([44]) -> ([45]); // 50 +struct_construct>>([45]) -> ([46]); // 51 +enum_init,)>, 0>([46]) -> ([47]); // 52 +store_temp([37]) -> ([37]); // 53 +store_temp([31]) -> ([31]); // 54 +store_temp([32]) -> ([32]); // 55 +store_temp,)>>([47]) -> ([47]); // 56 +return([37], [31], [32], [47]); // 57 +branch_align() -> (); // 58 +array_new() -> ([48]); // 59 +const_as_immediate>() -> ([49]); // 60 +store_temp([49]) -> ([49]); // 61 +array_append([48], [49]) -> ([50]); // 62 +store_temp([39]) -> ([51]); // 63 +store_temp([31]) -> ([52]); // 64 +store_temp([32]) -> ([53]); // 65 +store_temp>([50]) -> ([54]); // 66 +jump() { 73() }; // 67 +branch_align() -> (); // 68 +store_temp([19]) -> ([51]); // 69 +store_temp([34]) -> ([52]); // 70 +store_temp([35]) -> ([53]); // 71 +store_temp>([36]) -> ([54]); // 72 +struct_construct() -> ([55]); // 73 +struct_construct>>([55], [54]) -> ([56]); // 74 +enum_init,)>, 1>([56]) -> ([57]); // 75 +store_temp([51]) -> ([51]); // 76 +store_temp([52]) -> ([52]); // 77 +store_temp([53]) -> ([53]); // 78 +store_temp,)>>([57]) -> ([57]); // 79 +return([51], [52], [53], [57]); // 80 +branch_align() -> (); // 81 +array_new() -> ([58]); // 82 +const_as_immediate>() -> ([59]); // 83 +store_temp([59]) -> ([59]); // 84 +array_append([58], [59]) -> ([60]); // 85 +struct_construct() -> ([61]); // 86 +struct_construct>>([61], [60]) -> ([62]); // 87 +enum_init,)>, 1>([62]) -> ([63]); // 88 +store_temp([21]) -> ([21]); // 89 +store_temp([22]) -> ([22]); // 90 +store_temp([2]) -> ([2]); // 91 +store_temp,)>>([63]) -> ([63]); // 92 +return([21], [22], [2], [63]); // 93 +branch_align() -> (); // 94 +drop>([3]) -> (); // 95 +array_new() -> ([64]); // 96 +const_as_immediate>() -> ([65]); // 97 +store_temp([65]) -> ([65]); // 98 +array_append([64], [65]) -> ([66]); // 99 +struct_construct() -> ([67]); // 100 +struct_construct>>([67], [66]) -> ([68]); // 101 +enum_init,)>, 1>([68]) -> ([69]); // 102 +store_temp([6]) -> ([6]); // 103 +store_temp([7]) -> ([7]); // 104 +store_temp([2]) -> ([2]); // 105 +store_temp,)>>([69]) -> ([69]); // 106 +return([6], [7], [2], [69]); // 107 +revoke_ap_tracking() -> (); // 108 +withdraw_gas([0], [1]) { fallthrough([4], [5]) 262([6], [7]) }; // 109 +branch_align() -> (); // 110 +struct_deconstruct>([3]) -> ([8]); // 111 +enable_ap_tracking() -> (); // 112 +store_temp([4]) -> ([4]); // 113 +array_snapshot_pop_front([8]) { fallthrough([9], [10]) 122([11]) }; // 114 +branch_align() -> (); // 115 +unbox([10]) -> ([12]); // 116 +rename([12]) -> ([13]); // 117 +enum_init, 0>([13]) -> ([14]); // 118 +store_temp>>([9]) -> ([15]); // 119 +store_temp>([14]) -> ([16]); // 120 +jump() { 127() }; // 121 +branch_align() -> (); // 122 +struct_construct() -> ([17]); // 123 +enum_init, 1>([17]) -> ([18]); // 124 +store_temp>>([11]) -> ([15]); // 125 +store_temp>([18]) -> ([16]); // 126 +enum_match>([16]) { fallthrough([19]) 245([20]) }; // 127 +branch_align() -> (); // 128 +contract_address_try_from_felt252([4], [19]) { fallthrough([21], [22]) 241([23]) }; // 129 +branch_align() -> (); // 130 +store_temp([21]) -> ([21]); // 131 +array_snapshot_pop_front([15]) { fallthrough([24], [25]) 150([26]) }; // 132 +branch_align() -> (); // 133 +disable_ap_tracking() -> (); // 134 +drop>>([24]) -> (); // 135 +drop>([25]) -> (); // 136 +drop([22]) -> (); // 137 +array_new() -> ([27]); // 138 +const_as_immediate>() -> ([28]); // 139 +store_temp([28]) -> ([28]); // 140 +array_append([27], [28]) -> ([29]); // 141 +struct_construct() -> ([30]); // 142 +struct_construct>>([30], [29]) -> ([31]); // 143 +enum_init,)>, 1>([31]) -> ([32]); // 144 +store_temp([21]) -> ([21]); // 145 +store_temp([5]) -> ([5]); // 146 +store_temp([2]) -> ([2]); // 147 +store_temp,)>>([32]) -> ([32]); // 148 +return([21], [5], [2], [32]); // 149 +branch_align() -> (); // 150 +disable_ap_tracking() -> (); // 151 +drop>>([26]) -> (); // 152 +get_builtin_costs() -> ([33]); // 153 +store_temp([33]) -> ([33]); // 154 +withdraw_gas_all([21], [5], [33]) { fallthrough([34], [35]) 227([36], [37]) }; // 155 +branch_align() -> (); // 156 +dup([22]) -> ([22], [38]); // 157 +contract_address_to_felt252([38]) -> ([39]); // 158 +store_temp([34]) -> ([34]); // 159 +felt252_is_zero([39]) { fallthrough() 172([40]) }; // 160 +branch_align() -> (); // 161 +drop([22]) -> (); // 162 +array_new() -> ([41]); // 163 +const_as_immediate>() -> ([42]); // 164 +store_temp([42]) -> ([42]); // 165 +array_append([41], [42]) -> ([43]); // 166 +store_temp([34]) -> ([44]); // 167 +store_temp([35]) -> ([45]); // 168 +store_temp([2]) -> ([46]); // 169 +store_temp>([43]) -> ([47]); // 170 +jump() { 219() }; // 171 +branch_align() -> (); // 172 +drop>([40]) -> (); // 173 +struct_construct>() -> ([48]); // 174 +snapshot_take>([48]) -> ([49], [50]); // 175 +store_temp([34]) -> ([34]); // 176 +store_temp([35]) -> ([35]); // 177 +store_temp([2]) -> ([2]); // 178 +function_call::assert_only_owner>([34], [35], [2], [50]) -> ([51], [52], [53], [54]); // 179 +enum_match>([54]) { fallthrough([55]) 210([56]) }; // 180 +branch_align() -> (); // 181 +drop>([55]) -> (); // 182 +store_temp([51]) -> ([51]); // 183 +store_temp([52]) -> ([52]); // 184 +store_temp([53]) -> ([53]); // 185 +store_temp([22]) -> ([22]); // 186 +function_call::_transfer_ownership>([51], [52], [53], [49], [22]) -> ([57], [58], [59], [60]); // 187 +enum_match, ())>>([60]) { fallthrough([61]) 202([62]) }; // 188 +branch_align() -> (); // 189 +drop, Unit>>([61]) -> (); // 190 +array_new() -> ([63]); // 191 +snapshot_take>([63]) -> ([64], [65]); // 192 +drop>([64]) -> (); // 193 +struct_construct>([65]) -> ([66]); // 194 +struct_construct>>([66]) -> ([67]); // 195 +enum_init,)>, 0>([67]) -> ([68]); // 196 +store_temp([57]) -> ([57]); // 197 +store_temp([58]) -> ([58]); // 198 +store_temp([59]) -> ([59]); // 199 +store_temp,)>>([68]) -> ([68]); // 200 +return([57], [58], [59], [68]); // 201 +branch_align() -> (); // 202 +struct_deconstruct>>([62]) -> ([69], [70]); // 203 +drop([69]) -> (); // 204 +store_temp([57]) -> ([44]); // 205 +store_temp([58]) -> ([45]); // 206 +store_temp([59]) -> ([46]); // 207 +store_temp>([70]) -> ([47]); // 208 +jump() { 219() }; // 209 +branch_align() -> (); // 210 +drop([22]) -> (); // 211 +drop>([49]) -> (); // 212 +struct_deconstruct>>([56]) -> ([71], [72]); // 213 +drop([71]) -> (); // 214 +store_temp([51]) -> ([44]); // 215 +store_temp([52]) -> ([45]); // 216 +store_temp([53]) -> ([46]); // 217 +store_temp>([72]) -> ([47]); // 218 +struct_construct() -> ([73]); // 219 +struct_construct>>([73], [47]) -> ([74]); // 220 +enum_init,)>, 1>([74]) -> ([75]); // 221 +store_temp([44]) -> ([44]); // 222 +store_temp([45]) -> ([45]); // 223 +store_temp([46]) -> ([46]); // 224 +store_temp,)>>([75]) -> ([75]); // 225 +return([44], [45], [46], [75]); // 226 +branch_align() -> (); // 227 +drop([22]) -> (); // 228 +array_new() -> ([76]); // 229 +const_as_immediate>() -> ([77]); // 230 +store_temp([77]) -> ([77]); // 231 +array_append([76], [77]) -> ([78]); // 232 +struct_construct() -> ([79]); // 233 +struct_construct>>([79], [78]) -> ([80]); // 234 +enum_init,)>, 1>([80]) -> ([81]); // 235 +store_temp([36]) -> ([36]); // 236 +store_temp([37]) -> ([37]); // 237 +store_temp([2]) -> ([2]); // 238 +store_temp,)>>([81]) -> ([81]); // 239 +return([36], [37], [2], [81]); // 240 +branch_align() -> (); // 241 +drop>>([15]) -> (); // 242 +store_temp([23]) -> ([82]); // 243 +jump() { 249() }; // 244 +branch_align() -> (); // 245 +drop([20]) -> (); // 246 +drop>>([15]) -> (); // 247 +store_temp([4]) -> ([82]); // 248 +disable_ap_tracking() -> (); // 249 +array_new() -> ([83]); // 250 +const_as_immediate>() -> ([84]); // 251 +store_temp([84]) -> ([84]); // 252 +array_append([83], [84]) -> ([85]); // 253 +struct_construct() -> ([86]); // 254 +struct_construct>>([86], [85]) -> ([87]); // 255 +enum_init,)>, 1>([87]) -> ([88]); // 256 +store_temp([82]) -> ([82]); // 257 +store_temp([5]) -> ([5]); // 258 +store_temp([2]) -> ([2]); // 259 +store_temp,)>>([88]) -> ([88]); // 260 +return([82], [5], [2], [88]); // 261 +branch_align() -> (); // 262 +drop>([3]) -> (); // 263 +array_new() -> ([89]); // 264 +const_as_immediate>() -> ([90]); // 265 +store_temp([90]) -> ([90]); // 266 +array_append([89], [90]) -> ([91]); // 267 +struct_construct() -> ([92]); // 268 +struct_construct>>([92], [91]) -> ([93]); // 269 +enum_init,)>, 1>([93]) -> ([94]); // 270 +store_temp([6]) -> ([6]); // 271 +store_temp([7]) -> ([7]); // 272 +store_temp([2]) -> ([2]); // 273 +store_temp,)>>([94]) -> ([94]); // 274 +return([6], [7], [2], [94]); // 275 +revoke_ap_tracking() -> (); // 276 +withdraw_gas([0], [1]) { fallthrough([4], [5]) 363([6], [7]) }; // 277 +branch_align() -> (); // 278 +struct_deconstruct>([3]) -> ([8]); // 279 +store_temp([4]) -> ([4]); // 280 +array_snapshot_pop_front([8]) { fallthrough([9], [10]) 297([11]) }; // 281 +branch_align() -> (); // 282 +drop>>([9]) -> (); // 283 +drop>([10]) -> (); // 284 +array_new() -> ([12]); // 285 +const_as_immediate>() -> ([13]); // 286 +store_temp([13]) -> ([13]); // 287 +array_append([12], [13]) -> ([14]); // 288 +struct_construct() -> ([15]); // 289 +struct_construct>>([15], [14]) -> ([16]); // 290 +enum_init,)>, 1>([16]) -> ([17]); // 291 +store_temp([4]) -> ([4]); // 292 +store_temp([5]) -> ([5]); // 293 +store_temp([2]) -> ([2]); // 294 +store_temp,)>>([17]) -> ([17]); // 295 +return([4], [5], [2], [17]); // 296 +branch_align() -> (); // 297 +drop>>([11]) -> (); // 298 +get_builtin_costs() -> ([18]); // 299 +store_temp([18]) -> ([18]); // 300 +withdraw_gas_all([4], [5], [18]) { fallthrough([19], [20]) 350([21], [22]) }; // 301 +branch_align() -> (); // 302 +struct_construct>() -> ([23]); // 303 +snapshot_take>([23]) -> ([24], [25]); // 304 +store_temp([19]) -> ([19]); // 305 +store_temp([20]) -> ([20]); // 306 +store_temp([2]) -> ([2]); // 307 +function_call::assert_only_owner>([19], [20], [2], [25]) -> ([26], [27], [28], [29]); // 308 +enum_match>([29]) { fallthrough([30]) 338([31]) }; // 309 +branch_align() -> (); // 310 +drop>([30]) -> (); // 311 +contract_address_const<0>() -> ([32]); // 312 +store_temp([26]) -> ([26]); // 313 +store_temp([27]) -> ([27]); // 314 +store_temp([28]) -> ([28]); // 315 +store_temp([32]) -> ([32]); // 316 +function_call::_transfer_ownership>([26], [27], [28], [24], [32]) -> ([33], [34], [35], [36]); // 317 +enum_match, ())>>([36]) { fallthrough([37]) 332([38]) }; // 318 +branch_align() -> (); // 319 +drop, Unit>>([37]) -> (); // 320 +array_new() -> ([39]); // 321 +snapshot_take>([39]) -> ([40], [41]); // 322 +drop>([40]) -> (); // 323 +struct_construct>([41]) -> ([42]); // 324 +struct_construct>>([42]) -> ([43]); // 325 +enum_init,)>, 0>([43]) -> ([44]); // 326 +store_temp([33]) -> ([33]); // 327 +store_temp([34]) -> ([34]); // 328 +store_temp([35]) -> ([35]); // 329 +store_temp,)>>([44]) -> ([44]); // 330 +return([33], [34], [35], [44]); // 331 +branch_align() -> (); // 332 +store_temp([33]) -> ([45]); // 333 +store_temp([34]) -> ([46]); // 334 +store_temp([35]) -> ([47]); // 335 +store_temp>>([38]) -> ([48]); // 336 +jump() { 344() }; // 337 +branch_align() -> (); // 338 +drop>([24]) -> (); // 339 +store_temp([26]) -> ([45]); // 340 +store_temp([27]) -> ([46]); // 341 +store_temp([28]) -> ([47]); // 342 +store_temp>>([31]) -> ([48]); // 343 +enum_init,)>, 1>([48]) -> ([49]); // 344 +store_temp([45]) -> ([45]); // 345 +store_temp([46]) -> ([46]); // 346 +store_temp([47]) -> ([47]); // 347 +store_temp,)>>([49]) -> ([49]); // 348 +return([45], [46], [47], [49]); // 349 +branch_align() -> (); // 350 +array_new() -> ([50]); // 351 +const_as_immediate>() -> ([51]); // 352 +store_temp([51]) -> ([51]); // 353 +array_append([50], [51]) -> ([52]); // 354 +struct_construct() -> ([53]); // 355 +struct_construct>>([53], [52]) -> ([54]); // 356 +enum_init,)>, 1>([54]) -> ([55]); // 357 +store_temp([21]) -> ([21]); // 358 +store_temp([22]) -> ([22]); // 359 +store_temp([2]) -> ([2]); // 360 +store_temp,)>>([55]) -> ([55]); // 361 +return([21], [22], [2], [55]); // 362 +branch_align() -> (); // 363 +drop>([3]) -> (); // 364 +array_new() -> ([56]); // 365 +const_as_immediate>() -> ([57]); // 366 +store_temp([57]) -> ([57]); // 367 +array_append([56], [57]) -> ([58]); // 368 +struct_construct() -> ([59]); // 369 +struct_construct>>([59], [58]) -> ([60]); // 370 +enum_init,)>, 1>([60]) -> ([61]); // 371 +store_temp([6]) -> ([6]); // 372 +store_temp([7]) -> ([7]); // 373 +store_temp([2]) -> ([2]); // 374 +store_temp,)>>([61]) -> ([61]); // 375 +return([6], [7], [2], [61]); // 376 +revoke_ap_tracking() -> (); // 377 +withdraw_gas([0], [1]) { fallthrough([4], [5]) 514([6], [7]) }; // 378 +branch_align() -> (); // 379 +struct_deconstruct>([3]) -> ([8]); // 380 +enable_ap_tracking() -> (); // 381 +store_temp([4]) -> ([4]); // 382 +array_snapshot_pop_front([8]) { fallthrough([9], [10]) 389([11]) }; // 383 +branch_align() -> (); // 384 +enum_init>, 0>([10]) -> ([12]); // 385 +store_temp>>([9]) -> ([13]); // 386 +store_temp>>([12]) -> ([14]); // 387 +jump() { 394() }; // 388 +branch_align() -> (); // 389 +struct_construct() -> ([15]); // 390 +enum_init>, 1>([15]) -> ([16]); // 391 +store_temp>>([11]) -> ([13]); // 392 +store_temp>>([16]) -> ([14]); // 393 +enum_match>>([14]) { fallthrough([17]) 423([18]) }; // 394 +branch_align() -> (); // 395 +disable_ap_tracking() -> (); // 396 +unbox([17]) -> ([19]); // 397 +array_new() -> ([20]); // 398 +struct_construct>([13]) -> ([21]); // 399 +rename([19]) -> ([22]); // 400 +store_temp([4]) -> ([4]); // 401 +store_temp([5]) -> ([5]); // 402 +store_temp>([21]) -> ([21]); // 403 +store_temp>([20]) -> ([20]); // 404 +store_temp([22]) -> ([22]); // 405 +function_call>([4], [5], [21], [20], [22]) -> ([23], [24], [25]); // 406 +enum_match, core::option::Option::>)>>([25]) { fallthrough([26]) 416([27]) }; // 407 +branch_align() -> (); // 408 +struct_deconstruct, core::option::Option::>>>([26]) -> ([28], [29]); // 409 +struct_deconstruct>([28]) -> ([30]); // 410 +store_temp([23]) -> ([31]); // 411 +store_temp([24]) -> ([32]); // 412 +store_temp>>([30]) -> ([33]); // 413 +store_temp>>([29]) -> ([34]); // 414 +jump() { 432() }; // 415 +branch_align() -> (); // 416 +enum_init,)>, 1>([27]) -> ([35]); // 417 +store_temp([23]) -> ([23]); // 418 +store_temp([24]) -> ([24]); // 419 +store_temp([2]) -> ([2]); // 420 +store_temp,)>>([35]) -> ([35]); // 421 +return([23], [24], [2], [35]); // 422 +branch_align() -> (); // 423 +disable_ap_tracking() -> (); // 424 +drop([18]) -> (); // 425 +struct_construct() -> ([36]); // 426 +enum_init>, 1>([36]) -> ([37]); // 427 +store_temp([4]) -> ([31]); // 428 +store_temp([5]) -> ([32]); // 429 +store_temp>>([13]) -> ([33]); // 430 +store_temp>>([37]) -> ([34]); // 431 +enum_match>>([34]) { fallthrough([38]) 499([39]) }; // 432 +branch_align() -> (); // 433 +array_snapshot_pop_front([33]) { fallthrough([40], [41]) 451([42]) }; // 434 +branch_align() -> (); // 435 +drop>>([40]) -> (); // 436 +drop>([41]) -> (); // 437 +drop>([38]) -> (); // 438 +array_new() -> ([43]); // 439 +const_as_immediate>() -> ([44]); // 440 +store_temp([44]) -> ([44]); // 441 +array_append([43], [44]) -> ([45]); // 442 +struct_construct() -> ([46]); // 443 +struct_construct>>([46], [45]) -> ([47]); // 444 +enum_init,)>, 1>([47]) -> ([48]); // 445 +store_temp([31]) -> ([31]); // 446 +store_temp([32]) -> ([32]); // 447 +store_temp([2]) -> ([2]); // 448 +store_temp,)>>([48]) -> ([48]); // 449 +return([31], [32], [2], [48]); // 450 +branch_align() -> (); // 451 +drop>>([42]) -> (); // 452 +get_builtin_costs() -> ([49]); // 453 +store_temp([49]) -> ([49]); // 454 +withdraw_gas_all([31], [32], [49]) { fallthrough([50], [51]) 485([52], [53]) }; // 455 +branch_align() -> (); // 456 +struct_construct>() -> ([54]); // 457 +struct_construct([54]) -> ([55]); // 458 +store_temp([50]) -> ([50]); // 459 +store_temp([51]) -> ([51]); // 460 +store_temp([2]) -> ([2]); // 461 +store_temp>([38]) -> ([38]); // 462 +function_call([50], [51], [2], [55], [38]) -> ([56], [57], [58], [59]); // 463 +enum_match>([59]) { fallthrough([60]) 478([61]) }; // 464 +branch_align() -> (); // 465 +drop>([60]) -> (); // 466 +array_new() -> ([62]); // 467 +snapshot_take>([62]) -> ([63], [64]); // 468 +drop>([63]) -> (); // 469 +struct_construct>([64]) -> ([65]); // 470 +struct_construct>>([65]) -> ([66]); // 471 +enum_init,)>, 0>([66]) -> ([67]); // 472 +store_temp([56]) -> ([56]); // 473 +store_temp([57]) -> ([57]); // 474 +store_temp([58]) -> ([58]); // 475 +store_temp,)>>([67]) -> ([67]); // 476 +return([56], [57], [58], [67]); // 477 +branch_align() -> (); // 478 +enum_init,)>, 1>([61]) -> ([68]); // 479 +store_temp([56]) -> ([56]); // 480 +store_temp([57]) -> ([57]); // 481 +store_temp([58]) -> ([58]); // 482 +store_temp,)>>([68]) -> ([68]); // 483 +return([56], [57], [58], [68]); // 484 +branch_align() -> (); // 485 +drop>([38]) -> (); // 486 +array_new() -> ([69]); // 487 +const_as_immediate>() -> ([70]); // 488 +store_temp([70]) -> ([70]); // 489 +array_append([69], [70]) -> ([71]); // 490 +struct_construct() -> ([72]); // 491 +struct_construct>>([72], [71]) -> ([73]); // 492 +enum_init,)>, 1>([73]) -> ([74]); // 493 +store_temp([52]) -> ([52]); // 494 +store_temp([53]) -> ([53]); // 495 +store_temp([2]) -> ([2]); // 496 +store_temp,)>>([74]) -> ([74]); // 497 +return([52], [53], [2], [74]); // 498 +branch_align() -> (); // 499 +drop([39]) -> (); // 500 +drop>>([33]) -> (); // 501 +array_new() -> ([75]); // 502 +const_as_immediate>() -> ([76]); // 503 +store_temp([76]) -> ([76]); // 504 +array_append([75], [76]) -> ([77]); // 505 +struct_construct() -> ([78]); // 506 +struct_construct>>([78], [77]) -> ([79]); // 507 +enum_init,)>, 1>([79]) -> ([80]); // 508 +store_temp([31]) -> ([31]); // 509 +store_temp([32]) -> ([32]); // 510 +store_temp([2]) -> ([2]); // 511 +store_temp,)>>([80]) -> ([80]); // 512 +return([31], [32], [2], [80]); // 513 +branch_align() -> (); // 514 +drop>([3]) -> (); // 515 +array_new() -> ([81]); // 516 +const_as_immediate>() -> ([82]); // 517 +store_temp([82]) -> ([82]); // 518 +array_append([81], [82]) -> ([83]); // 519 +struct_construct() -> ([84]); // 520 +struct_construct>>([84], [83]) -> ([85]); // 521 +enum_init,)>, 1>([85]) -> ([86]); // 522 +store_temp([6]) -> ([6]); // 523 +store_temp([7]) -> ([7]); // 524 +store_temp([2]) -> ([2]); // 525 +store_temp,)>>([86]) -> ([86]); // 526 +return([6], [7], [2], [86]); // 527 +drop>([3]) -> (); // 528 +storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>() -> ([4]); // 529 +struct_construct>([4]) -> ([5]); // 530 +snapshot_take>([5]) -> ([6], [7]); // 531 +drop>([6]) -> (); // 532 +struct_deconstruct>([7]) -> ([8]); // 533 +rename([8]) -> ([9]); // 534 +storage_address_from_base([9]) -> ([10]); // 535 +const_as_immediate>() -> ([11]); // 536 +store_temp([11]) -> ([11]); // 537 +store_temp([10]) -> ([10]); // 538 +storage_read_syscall([1], [2], [11], [10]) { fallthrough([12], [13], [14]) 627([15], [16], [17]) }; // 539 +branch_align() -> (); // 540 +store_temp([14]) -> ([14]); // 541 +store_temp([12]) -> ([12]); // 542 +store_temp([13]) -> ([13]); // 543 +contract_address_try_from_felt252([0], [14]) { fallthrough([18], [19]) 617([20]) }; // 544 +branch_align() -> (); // 545 +store_temp([18]) -> ([18]); // 546 +get_execution_info_v2_syscall([12], [13]) { fallthrough([21], [22], [23]) 607([24], [25], [26]) }; // 547 +branch_align() -> (); // 548 +store_temp>([23]) -> ([23]); // 549 +unbox([23]) -> ([27]); // 550 +struct_deconstruct([27]) -> ([28], [29], [30], [31], [32]); // 551 +drop>([28]) -> (); // 552 +drop>([29]) -> (); // 553 +drop([31]) -> (); // 554 +drop([32]) -> (); // 555 +store_temp([30]) -> ([30]); // 556 +dup([30]) -> ([30], [33]); // 557 +contract_address_to_felt252([33]) -> ([34]); // 558 +store_temp([21]) -> ([21]); // 559 +store_temp([22]) -> ([22]); // 560 +felt252_is_zero([34]) { fallthrough() 577([35]) }; // 561 +branch_align() -> (); // 562 +drop([19]) -> (); // 563 +drop([30]) -> (); // 564 +array_new() -> ([36]); // 565 +const_as_immediate>() -> ([37]); // 566 +store_temp([37]) -> ([37]); // 567 +array_append([36], [37]) -> ([38]); // 568 +struct_construct() -> ([39]); // 569 +struct_construct>>([39], [38]) -> ([40]); // 570 +enum_init, 1>([40]) -> ([41]); // 571 +store_temp([18]) -> ([18]); // 572 +store_temp([21]) -> ([21]); // 573 +store_temp([22]) -> ([22]); // 574 +store_temp>([41]) -> ([41]); // 575 +return([18], [21], [22], [41]); // 576 +branch_align() -> (); // 577 +drop>([35]) -> (); // 578 +contract_address_to_felt252([30]) -> ([42]); // 579 +contract_address_to_felt252([19]) -> ([43]); // 580 +felt252_sub([42], [43]) -> ([44]); // 581 +store_temp([44]) -> ([44]); // 582 +felt252_is_zero([44]) { fallthrough() 593([45]) }; // 583 +branch_align() -> (); // 584 +struct_construct() -> ([46]); // 585 +struct_construct>([46]) -> ([47]); // 586 +enum_init, 0>([47]) -> ([48]); // 587 +store_temp([18]) -> ([18]); // 588 +store_temp([21]) -> ([21]); // 589 +store_temp([22]) -> ([22]); // 590 +store_temp>([48]) -> ([48]); // 591 +return([18], [21], [22], [48]); // 592 +branch_align() -> (); // 593 +drop>([45]) -> (); // 594 +array_new() -> ([49]); // 595 +const_as_immediate>() -> ([50]); // 596 +store_temp([50]) -> ([50]); // 597 +array_append([49], [50]) -> ([51]); // 598 +struct_construct() -> ([52]); // 599 +struct_construct>>([52], [51]) -> ([53]); // 600 +enum_init, 1>([53]) -> ([54]); // 601 +store_temp([18]) -> ([18]); // 602 +store_temp([21]) -> ([21]); // 603 +store_temp([22]) -> ([22]); // 604 +store_temp>([54]) -> ([54]); // 605 +return([18], [21], [22], [54]); // 606 +branch_align() -> (); // 607 +drop([19]) -> (); // 608 +struct_construct() -> ([55]); // 609 +struct_construct>>([55], [26]) -> ([56]); // 610 +enum_init, 1>([56]) -> ([57]); // 611 +store_temp([18]) -> ([18]); // 612 +store_temp([24]) -> ([24]); // 613 +store_temp([25]) -> ([25]); // 614 +store_temp>([57]) -> ([57]); // 615 +return([18], [24], [25], [57]); // 616 +branch_align() -> (); // 617 +array_new() -> ([58]); // 618 +const_as_immediate>() -> ([59]); // 619 +store_temp([59]) -> ([59]); // 620 +array_append([58], [59]) -> ([60]); // 621 +store_temp([20]) -> ([61]); // 622 +store_temp([12]) -> ([62]); // 623 +store_temp([13]) -> ([63]); // 624 +store_temp>([60]) -> ([64]); // 625 +jump() { 632() }; // 626 +branch_align() -> (); // 627 +store_temp([0]) -> ([61]); // 628 +store_temp([15]) -> ([62]); // 629 +store_temp([16]) -> ([63]); // 630 +store_temp>([17]) -> ([64]); // 631 +struct_construct() -> ([65]); // 632 +struct_construct>>([65], [64]) -> ([66]); // 633 +enum_init, 1>([66]) -> ([67]); // 634 +store_temp([61]) -> ([61]); // 635 +store_temp([62]) -> ([62]); // 636 +store_temp([63]) -> ([63]); // 637 +store_temp>([67]) -> ([67]); // 638 +return([61], [62], [63], [67]); // 639 +storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>() -> ([5]); // 640 +struct_construct>>([5]) -> ([6]); // 641 +snapshot_take>>([6]) -> ([7], [8]); // 642 +drop>>([7]) -> (); // 643 +struct_deconstruct>>([8]) -> ([9]); // 644 +rename([9]) -> ([10]); // 645 +storage_address_from_base([10]) -> ([11]); // 646 +const_as_immediate>() -> ([12]); // 647 +store_temp([12]) -> ([12]); // 648 +store_temp([11]) -> ([11]); // 649 +storage_read_syscall([1], [2], [12], [11]) { fallthrough([13], [14], [15]) 719([16], [17], [18]) }; // 650 +branch_align() -> (); // 651 +store_temp([15]) -> ([15]); // 652 +store_temp([13]) -> ([13]); // 653 +store_temp([14]) -> ([14]); // 654 +contract_address_try_from_felt252([0], [15]) { fallthrough([19], [20]) 707([21]) }; // 655 +branch_align() -> (); // 656 +storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>() -> ([22]); // 657 +dup([4]) -> ([4], [23]); // 658 +contract_address_to_felt252([23]) -> ([24]); // 659 +storage_address_from_base([22]) -> ([25]); // 660 +const_as_immediate>() -> ([26]); // 661 +store_temp([26]) -> ([26]); // 662 +store_temp([25]) -> ([25]); // 663 +store_temp([19]) -> ([19]); // 664 +storage_write_syscall([13], [14], [26], [25], [24]) { fallthrough([27], [28]) 695([29], [30], [31]) }; // 665 +branch_align() -> (); // 666 +struct_construct([20], [4]) -> ([32]); // 667 +enum_init([32]) -> ([33]); // 668 +enum_init([33]) -> ([34]); // 669 +struct_construct>() -> ([35]); // 670 +struct_construct([35]) -> ([36]); // 671 +store_temp([27]) -> ([27]); // 672 +store_temp([28]) -> ([28]); // 673 +store_temp([34]) -> ([34]); // 674 +function_call>>([27], [28], [36], [34]) -> ([37], [38], [39]); // 675 +enum_match>([39]) { fallthrough([40]) 687([41]) }; // 676 +branch_align() -> (); // 677 +drop>([40]) -> (); // 678 +struct_construct() -> ([42]); // 679 +struct_construct, Unit>>([3], [42]) -> ([43]); // 680 +enum_init, ())>, 0>([43]) -> ([44]); // 681 +store_temp([19]) -> ([19]); // 682 +store_temp([37]) -> ([37]); // 683 +store_temp([38]) -> ([38]); // 684 +store_temp, ())>>([44]) -> ([44]); // 685 +return([19], [37], [38], [44]); // 686 +branch_align() -> (); // 687 +drop>([3]) -> (); // 688 +enum_init, ())>, 1>([41]) -> ([45]); // 689 +store_temp([19]) -> ([19]); // 690 +store_temp([37]) -> ([37]); // 691 +store_temp([38]) -> ([38]); // 692 +store_temp, ())>>([45]) -> ([45]); // 693 +return([19], [37], [38], [45]); // 694 +branch_align() -> (); // 695 +drop>([3]) -> (); // 696 +drop([4]) -> (); // 697 +drop([20]) -> (); // 698 +struct_construct() -> ([46]); // 699 +struct_construct>>([46], [31]) -> ([47]); // 700 +enum_init, ())>, 1>([47]) -> ([48]); // 701 +store_temp([19]) -> ([19]); // 702 +store_temp([29]) -> ([29]); // 703 +store_temp([30]) -> ([30]); // 704 +store_temp, ())>>([48]) -> ([48]); // 705 +return([19], [29], [30], [48]); // 706 +branch_align() -> (); // 707 +drop>([3]) -> (); // 708 +drop([4]) -> (); // 709 +array_new() -> ([49]); // 710 +const_as_immediate>() -> ([50]); // 711 +store_temp([50]) -> ([50]); // 712 +array_append([49], [50]) -> ([51]); // 713 +store_temp([21]) -> ([52]); // 714 +store_temp([13]) -> ([53]); // 715 +store_temp([14]) -> ([54]); // 716 +store_temp>([51]) -> ([55]); // 717 +jump() { 726() }; // 718 +branch_align() -> (); // 719 +drop>([3]) -> (); // 720 +drop([4]) -> (); // 721 +store_temp([0]) -> ([52]); // 722 +store_temp([16]) -> ([53]); // 723 +store_temp([17]) -> ([54]); // 724 +store_temp>([18]) -> ([55]); // 725 +struct_construct() -> ([56]); // 726 +struct_construct>>([56], [55]) -> ([57]); // 727 +enum_init, ())>, 1>([57]) -> ([58]); // 728 +store_temp([52]) -> ([52]); // 729 +store_temp([53]) -> ([53]); // 730 +store_temp([54]) -> ([54]); // 731 +store_temp, ())>>([58]) -> ([58]); // 732 +return([52], [53], [54], [58]); // 733 +disable_ap_tracking() -> (); // 734 +withdraw_gas([0], [1]) { fallthrough([5], [6]) 791([7], [8]) }; // 735 +branch_align() -> (); // 736 +dup([4]) -> ([4], [9]); // 737 +store_temp([5]) -> ([5]); // 738 +felt252_is_zero([9]) { fallthrough() 749([10]) }; // 739 +branch_align() -> (); // 740 +drop([4]) -> (); // 741 +enum_init>, 0>([3]) -> ([11]); // 742 +struct_construct, core::option::Option::>>>([2], [11]) -> ([12]); // 743 +enum_init, core::option::Option::>)>, 0>([12]) -> ([13]); // 744 +store_temp([5]) -> ([5]); // 745 +store_temp([6]) -> ([6]); // 746 +store_temp, core::option::Option::>)>>([13]) -> ([13]); // 747 +return([5], [6], [13]); // 748 +branch_align() -> (); // 749 +drop>([10]) -> (); // 750 +struct_deconstruct>([2]) -> ([14]); // 751 +enable_ap_tracking() -> (); // 752 +array_snapshot_pop_front([14]) { fallthrough([15], [16]) 761([17]) }; // 753 +branch_align() -> (); // 754 +unbox([16]) -> ([18]); // 755 +rename([18]) -> ([19]); // 756 +enum_init, 0>([19]) -> ([20]); // 757 +store_temp>>([15]) -> ([21]); // 758 +store_temp>([20]) -> ([22]); // 759 +jump() { 766() }; // 760 +branch_align() -> (); // 761 +struct_construct() -> ([23]); // 762 +enum_init, 1>([23]) -> ([24]); // 763 +store_temp>>([17]) -> ([21]); // 764 +store_temp>([24]) -> ([22]); // 765 +struct_construct>([21]) -> ([25]); // 766 +enum_match>([22]) { fallthrough([26]) 780([27]) }; // 767 +branch_align() -> (); // 768 +disable_ap_tracking() -> (); // 769 +array_append([3], [26]) -> ([28]); // 770 +const_as_immediate>() -> ([29]); // 771 +felt252_sub([4], [29]) -> ([30]); // 772 +store_temp([5]) -> ([5]); // 773 +store_temp([6]) -> ([6]); // 774 +store_temp>([25]) -> ([25]); // 775 +store_temp>([28]) -> ([28]); // 776 +store_temp([30]) -> ([30]); // 777 +function_call>([5], [6], [25], [28], [30]) -> ([31], [32], [33]); // 778 +return([31], [32], [33]); // 779 +branch_align() -> (); // 780 +disable_ap_tracking() -> (); // 781 +drop([4]) -> (); // 782 +drop>([3]) -> (); // 783 +enum_init>, 1>([27]) -> ([34]); // 784 +struct_construct, core::option::Option::>>>([25], [34]) -> ([35]); // 785 +enum_init, core::option::Option::>)>, 0>([35]) -> ([36]); // 786 +store_temp([5]) -> ([5]); // 787 +store_temp([6]) -> ([6]); // 788 +store_temp, core::option::Option::>)>>([36]) -> ([36]); // 789 +return([5], [6], [36]); // 790 +branch_align() -> (); // 791 +drop([4]) -> (); // 792 +drop>([3]) -> (); // 793 +drop>([2]) -> (); // 794 +array_new() -> ([37]); // 795 +const_as_immediate>() -> ([38]); // 796 +store_temp([38]) -> ([38]); // 797 +array_append([37], [38]) -> ([39]); // 798 +struct_construct() -> ([40]); // 799 +struct_construct>>([40], [39]) -> ([41]); // 800 +enum_init, core::option::Option::>)>, 1>([41]) -> ([42]); // 801 +store_temp([7]) -> ([7]); // 802 +store_temp([8]) -> ([8]); // 803 +store_temp, core::option::Option::>)>>([42]) -> ([42]); // 804 +return([7], [8], [42]); // 805 +get_execution_info_v2_syscall([1], [2]) { fallthrough([5], [6], [7]) 936([8], [9], [10]) }; // 806 +branch_align() -> (); // 807 +store_temp>([7]) -> ([7]); // 808 +unbox([7]) -> ([11]); // 809 +struct_deconstruct([11]) -> ([12], [13], [14], [15], [16]); // 810 +drop>([12]) -> (); // 811 +drop>([13]) -> (); // 812 +drop([15]) -> (); // 813 +drop([16]) -> (); // 814 +struct_deconstruct([3]) -> ([17]); // 815 +store_temp([0]) -> ([0]); // 816 +store_temp([5]) -> ([5]); // 817 +store_temp([6]) -> ([6]); // 818 +store_temp([14]) -> ([18]); // 819 +dup([18]) -> ([18], [14]); // 820 +function_call::_transfer_ownership>([0], [5], [6], [17], [18]) -> ([19], [20], [21], [22]); // 821 +enum_match, ())>>([22]) { fallthrough([23]) 927([24]) }; // 822 +branch_align() -> (); // 823 +array_new() -> ([25]); // 824 +const_as_immediate>() -> ([26]); // 825 +snapshot_take>([25]) -> ([27], [28]); // 826 +drop>([27]) -> (); // 827 +struct_construct>([28]) -> ([29]); // 828 +store_temp([26]) -> ([26]); // 829 +call_contract_syscall([20], [21], [14], [26], [29]) { fallthrough([30], [31], [32]) 912([33], [34], [35]) }; // 830 +branch_align() -> (); // 831 +struct_deconstruct>([32]) -> ([36]); // 832 +store_temp>>([36]) -> ([36]); // 833 +store_temp([30]) -> ([30]); // 834 +store_temp([31]) -> ([31]); // 835 +array_snapshot_pop_front([36]) { fallthrough([37], [38]) 898([39]) }; // 836 +branch_align() -> (); // 837 +drop>>([37]) -> (); // 838 +unbox([38]) -> ([40]); // 839 +rename([40]) -> ([41]); // 840 +store_temp([41]) -> ([41]); // 841 +class_hash_try_from_felt252([19], [41]) { fallthrough([42], [43]) 893([44]) }; // 842 +branch_align() -> (); // 843 +dup([43]) -> ([43], [45]); // 844 +class_hash_to_felt252([45]) -> ([46]); // 845 +array_append([4], [46]) -> ([47]); // 846 +const_as_immediate>() -> ([48]); // 847 +snapshot_take>([47]) -> ([49], [50]); // 848 +drop>([49]) -> (); // 849 +struct_construct>([50]) -> ([51]); // 850 +dup([43]) -> ([43], [52]); // 851 +store_temp([48]) -> ([48]); // 852 +store_temp>([51]) -> ([51]); // 853 +store_temp([42]) -> ([42]); // 854 +library_call_syscall([30], [31], [52], [48], [51]) { fallthrough([53], [54], [55]) 882([56], [57], [58]) }; // 855 +branch_align() -> (); // 856 +drop>([55]) -> (); // 857 +store_temp([53]) -> ([53]); // 858 +replace_class_syscall([53], [54], [43]) { fallthrough([59], [60]) 872([61], [62], [63]) }; // 859 +branch_align() -> (); // 860 +struct_deconstruct, Unit>>([23]) -> ([64], [65]); // 861 +drop([65]) -> (); // 862 +struct_construct([64]) -> ([66]); // 863 +struct_construct() -> ([67]); // 864 +struct_construct>([66], [67]) -> ([68]); // 865 +enum_init, 0>([68]) -> ([69]); // 866 +store_temp([42]) -> ([42]); // 867 +store_temp([59]) -> ([59]); // 868 +store_temp([60]) -> ([60]); // 869 +store_temp>([69]) -> ([69]); // 870 +return([42], [59], [60], [69]); // 871 +branch_align() -> (); // 872 +drop, Unit>>([23]) -> (); // 873 +struct_construct() -> ([70]); // 874 +struct_construct>>([70], [63]) -> ([71]); // 875 +enum_init, 1>([71]) -> ([72]); // 876 +store_temp([42]) -> ([42]); // 877 +store_temp([61]) -> ([61]); // 878 +store_temp([62]) -> ([62]); // 879 +store_temp>([72]) -> ([72]); // 880 +return([42], [61], [62], [72]); // 881 +branch_align() -> (); // 882 +drop, Unit>>([23]) -> (); // 883 +drop([43]) -> (); // 884 +struct_construct() -> ([73]); // 885 +struct_construct>>([73], [58]) -> ([74]); // 886 +enum_init, 1>([74]) -> ([75]); // 887 +store_temp([42]) -> ([42]); // 888 +store_temp([56]) -> ([56]); // 889 +store_temp([57]) -> ([57]); // 890 +store_temp>([75]) -> ([75]); // 891 +return([42], [56], [57], [75]); // 892 +branch_align() -> (); // 893 +drop>([4]) -> (); // 894 +drop, Unit>>([23]) -> (); // 895 +store_temp([44]) -> ([76]); // 896 +jump() { 903() }; // 897 +branch_align() -> (); // 898 +drop>>([39]) -> (); // 899 +drop>([4]) -> (); // 900 +drop, Unit>>([23]) -> (); // 901 +store_temp([19]) -> ([76]); // 902 +array_new() -> ([77]); // 903 +const_as_immediate>() -> ([78]); // 904 +store_temp([78]) -> ([78]); // 905 +array_append([77], [78]) -> ([79]); // 906 +store_temp([76]) -> ([80]); // 907 +store_temp([30]) -> ([81]); // 908 +store_temp([31]) -> ([82]); // 909 +store_temp>([79]) -> ([83]); // 910 +jump() { 919() }; // 911 +branch_align() -> (); // 912 +drop>([4]) -> (); // 913 +drop, Unit>>([23]) -> (); // 914 +store_temp([19]) -> ([80]); // 915 +store_temp([33]) -> ([81]); // 916 +store_temp([34]) -> ([82]); // 917 +store_temp>([35]) -> ([83]); // 918 +struct_construct() -> ([84]); // 919 +struct_construct>>([84], [83]) -> ([85]); // 920 +enum_init, 1>([85]) -> ([86]); // 921 +store_temp([80]) -> ([80]); // 922 +store_temp([81]) -> ([81]); // 923 +store_temp([82]) -> ([82]); // 924 +store_temp>([86]) -> ([86]); // 925 +return([80], [81], [82], [86]); // 926 +branch_align() -> (); // 927 +drop>([4]) -> (); // 928 +drop([14]) -> (); // 929 +enum_init, 1>([24]) -> ([87]); // 930 +store_temp([19]) -> ([19]); // 931 +store_temp([20]) -> ([20]); // 932 +store_temp([21]) -> ([21]); // 933 +store_temp>([87]) -> ([87]); // 934 +return([19], [20], [21], [87]); // 935 +branch_align() -> (); // 936 +drop>([4]) -> (); // 937 +drop([3]) -> (); // 938 +struct_construct() -> ([88]); // 939 +struct_construct>>([88], [10]) -> ([89]); // 940 +enum_init, 1>([89]) -> ([90]); // 941 +store_temp([0]) -> ([0]); // 942 +store_temp([8]) -> ([8]); // 943 +store_temp([9]) -> ([9]); // 944 +store_temp>([90]) -> ([90]); // 945 +return([0], [8], [9], [90]); // 946 +array_new() -> ([4]); // 947 +array_new() -> ([5]); // 948 +snapshot_take([3]) -> ([6], [7]); // 949 +drop([6]) -> (); // 950 +enum_match([7]) -> ([8]); // 951 +branch_align() -> (); // 952 +const_as_immediate>() -> ([9]); // 953 +store_temp([9]) -> ([9]); // 954 +array_append([4], [9]) -> ([10]); // 955 +enum_match([8]) -> ([11]); // 956 +branch_align() -> (); // 957 +const_as_immediate>() -> ([12]); // 958 +store_temp([12]) -> ([12]); // 959 +array_append([10], [12]) -> ([13]); // 960 +dup([11]) -> ([11], [14]); // 961 +struct_deconstruct([14]) -> ([15], [16]); // 962 +drop([16]) -> (); // 963 +rename([15]) -> ([17]); // 964 +contract_address_to_felt252([17]) -> ([18]); // 965 +array_append([5], [18]) -> ([19]); // 966 +struct_deconstruct([11]) -> ([20], [21]); // 967 +drop([20]) -> (); // 968 +rename([21]) -> ([22]); // 969 +contract_address_to_felt252([22]) -> ([23]); // 970 +array_append([19], [23]) -> ([24]); // 971 +snapshot_take>([13]) -> ([25], [26]); // 972 +drop>([25]) -> (); // 973 +snapshot_take>([24]) -> ([27], [28]); // 974 +drop>([27]) -> (); // 975 +struct_construct>([26]) -> ([29]); // 976 +struct_construct>([28]) -> ([30]); // 977 +store_temp>([29]) -> ([29]); // 978 +store_temp>([30]) -> ([30]); // 979 +emit_event_syscall([0], [1], [29], [30]) { fallthrough([31], [32]) 989([33], [34], [35]) }; // 980 +branch_align() -> (); // 981 +struct_construct() -> ([36]); // 982 +struct_construct>([2], [36]) -> ([37]); // 983 +enum_init, 0>([37]) -> ([38]); // 984 +store_temp([31]) -> ([31]); // 985 +store_temp([32]) -> ([32]); // 986 +store_temp>([38]) -> ([38]); // 987 +return([31], [32], [38]); // 988 +branch_align() -> (); // 989 +drop([2]) -> (); // 990 +struct_construct() -> ([39]); // 991 +struct_construct>>([39], [35]) -> ([40]); // 992 +enum_init, 1>([40]) -> ([41]); // 993 +store_temp([33]) -> ([33]); // 994 +store_temp([34]) -> ([34]); // 995 +store_temp>([41]) -> ([41]); // 996 +return([33], [34], [41]); // 997 + +contracts::components::ownable::ownable_component::__wrapper__Ownable__owner::@0([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); +contracts::components::ownable::ownable_component::__wrapper__Ownable__transfer_ownership::@108([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); +contracts::components::ownable::ownable_component::__wrapper__Ownable__renounce_ownership::@276([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); +contracts::uninitialized_account::UninitializedAccount::__wrapper__constructor@377([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); +contracts::components::ownable::ownable_component::InternalImpl::::assert_only_owner@528([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: contracts::components::ownable::ownable_component::ComponentState::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<((),)>); +contracts::components::ownable::ownable_component::InternalImpl::::_transfer_ownership@640([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: contracts::components::ownable::ownable_component::ComponentState::, [4]: ContractAddress) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(contracts::components::ownable::ownable_component::ComponentState::, ())>); +core::array::deserialize_array_helper::@734([0]: RangeCheck, [1]: GasBuiltin, [2]: core::array::Span::, [3]: Array, [4]: felt252) -> (RangeCheck, GasBuiltin, core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>); +contracts::uninitialized_account::UninitializedAccount::constructor@806([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: contracts::uninitialized_account::UninitializedAccount::ContractState, [4]: Array) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(contracts::uninitialized_account::UninitializedAccount::ContractState, ())>); +contracts::uninitialized_account::UninitializedAccount::ContractStateEventEmitter::emit::>@947([0]: GasBuiltin, [1]: System, [2]: contracts::uninitialized_account::UninitializedAccount::ContractState, [3]: contracts::uninitialized_account::UninitializedAccount::Event) -> (GasBuiltin, System, core::panics::PanicResult::<(contracts::uninitialized_account::UninitializedAccount::ContractState, ())>); diff --git a/crates/ef-testing/src/evm_sequencer/constants.rs b/crates/ef-testing/src/evm_sequencer/constants.rs index 6cfc0ae3..14321802 100644 --- a/crates/ef-testing/src/evm_sequencer/constants.rs +++ b/crates/ef-testing/src/evm_sequencer/constants.rs @@ -1,4 +1,5 @@ use std::collections::HashMap; +use std::fs; use alloy_primitives::{address, Address}; use lazy_static::lazy_static; @@ -21,6 +22,13 @@ where serde_json::from_str::(&std::fs::read_to_string(path)?).map_err(eyre::Error::from) } + +pub fn get_raw_contract_class(contract_path: &str) -> String { + println!("path: {:?}", contract_path); + fs::read_to_string(contract_path).unwrap() +} + + // Chain params pub const CHAIN_ID: u64 = 0x1; @@ -89,11 +97,23 @@ lazy_static! { pub static ref ACCOUNT_CONTRACT_CLASS: CompiledClass = load_contract_class("../../build/v1/contracts_AccountContract.compiled_contract_class.json").expect("Failed to load ContractAccount contract class"); pub static ref UNINITIALIZED_ACCOUNT_CLASS: CompiledClass = load_contract_class("../../build/v1/contracts_UninitializedAccount.compiled_contract_class.json").expect("Failed to load uninitialized account contract class"); + pub static ref KAKAROT_JSON_CLASS: String = get_raw_contract_class("../../build/v1/contracts_KakarotCore.contract_class.json"); + pub static ref ACCOUNT_CONTRACT_JSON_CLASS: String = get_raw_contract_class("../../build/v1/contracts_AccountContract.contract_class.json"); + pub static ref UNINITIALIZED_ACCOUNT_JSON_CLASS: String = get_raw_contract_class("../../build/v1/contracts_UninitializedAccount.contract_class.json"); + // Main class hashes pub static ref KAKAROT_CLASS_HASH: ClassHash = ClassHash(KAKAROT_CLASS.class_hash().unwrap()); pub static ref ACCOUNT_CONTRACT_CLASS_HASH: ClassHash = ClassHash(ACCOUNT_CONTRACT_CLASS.class_hash().unwrap()); pub static ref UNINITIALIZED_ACCOUNT_CLASS_HASH: ClassHash = ClassHash(UNINITIALIZED_ACCOUNT_CLASS.class_hash().unwrap()); pub static ref PROXY_CLASS_HASH: ClassHash = *UNINITIALIZED_ACCOUNT_CLASS_HASH; + + pub static ref CLASS_HASH_TO_JSON_CLASS: HashMap = { + let mut map = HashMap::new(); + map.insert(*KAKAROT_CLASS_HASH, KAKAROT_JSON_CLASS.clone()); + map.insert(*ACCOUNT_CONTRACT_CLASS_HASH, ACCOUNT_CONTRACT_JSON_CLASS.clone()); + map.insert(*UNINITIALIZED_ACCOUNT_CLASS_HASH, UNINITIALIZED_ACCOUNT_JSON_CLASS.clone()); + map + }; } #[cfg(not(any(feature = "v0", feature = "v1")))] @@ -114,6 +134,12 @@ lazy_static! { panic!("Kakarot class hash not defined, use features flag \"v0\" or \"v1\""); pub static ref UNINITIALIZED_ACCOUNT_CLASS: LegacyContractClass = panic!("Uninitialized account class not defined, use features flag \"v0\" or \"v1\""); + + pub static ref KAKAROT_JSON_CLASS: String = panic!("Kakarot json class not defined, use features flag \"v0\" or \"v1\""); + pub static ref ACCOUNT_CONTRACT_JSON_CLASS: String = panic!("Account contract json class not defined, use features flag \"v0\" or \"v1\""); + pub static ref UNINITIALIZED_ACCOUNT_JSON_CLASS: String = panic!("Uninitialized account json class not defined, use features flag \"v0\" or \"v1\""); + + pub static ref CLASS_HASH_TO_JSON_CLASS: HashMap = HashMap::new(); } pub mod storage_variables { diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index bea39759..8b8151f0 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -1,4 +1,4 @@ -use blockifier::bouncer::BouncerConfig; +use blockifier::{bouncer::BouncerConfig, execution::contract_class::NativeContractClassV1}; use starknet::core::types::Felt; use std::ops::{Deref, DerefMut}; @@ -13,7 +13,7 @@ use crate::evm_sequencer::{ ETH_FEE_TOKEN_ADDRESS, FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, KAKAROT_CLASS, KAKAROT_CLASS_HASH, KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, OPENZEPPELIN_ACCOUNT_CLASS_HASH, RELAYER_ADDRESS, RELAYER_BALANCE, RELAYER_VERIFYING_KEY, - STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS, UNINITIALIZED_ACCOUNT_CLASS_HASH, + STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS, UNINITIALIZED_ACCOUNT_CLASS_HASH, CLASS_HASH_TO_JSON_CLASS }, types::contract_class::CasmContractClassWrapper, utils::compute_starknet_address, @@ -29,7 +29,8 @@ use blockifier::{ }; use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::types::errors::program_errors::ProgramError; -use sequencer::{sequencer::Sequencer, state::State}; +use reth_primitives::Address; +use sequencer::{native::class_from_json_str, sequencer::Sequencer, state::State}; use starknet::core::types::contract::{legacy::LegacyContractClass, CompiledClass}; use starknet_api::{ block::{BlockNumber, BlockTimestamp}, @@ -232,13 +233,31 @@ lazy_static! { convert_contract_class_v0(&UNINITIALIZED_ACCOUNT_CLASS).expect("failed to convert uninitialized class") ) } + #[cfg(feature = "v1")] { + #[cfg(feature = "native")] + { + let account_json = CLASS_HASH_TO_JSON_CLASS.get(&ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); + let kakarot_json = CLASS_HASH_TO_JSON_CLASS.get(&KAKAROT_CLASS_HASH).unwrap(); + let uninitialized_json = CLASS_HASH_TO_JSON_CLASS.get(&UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap(); + println!("Got account's json of length {}", account_json.len()); + println!("Got kakarot's json of length {}", kakarot_json.len()); + println!("Got uninitialized's json of length {}", uninitialized_json.len()); + let account_class= class_from_json_str(account_json, *ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); + let kakarot_class= class_from_json_str(kakarot_json, *KAKAROT_CLASS_HASH).unwrap(); + let uninitialized_class= class_from_json_str(uninitialized_json, *UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap(); + println!("Got class"); + (account_class, kakarot_class, uninitialized_class) + } + #[cfg(not(feature = "native"))] + { ( convert_contract_class_v1(&KAKAROT_CLASS).expect("failed to convert kakarot class"), convert_contract_class_v1(&ACCOUNT_CONTRACT_CLASS).expect("failed to convert account class"), convert_contract_class_v1(&UNINITIALIZED_ACCOUNT_CLASS).expect("failed to convert uninitialized class") ) + } } }; @@ -250,8 +269,7 @@ lazy_static! { // Write contract account, uninitialized_account and erc20 classes and class hashes. (&mut state).set_contract_class( *ACCOUNT_CONTRACT_CLASS_HASH, - converted_account_class, - ).expect("failed to set contract account class"); + converted_account_class).expect("failed to set contract account class"); (&mut state) .set_contract_class(*UNINITIALIZED_ACCOUNT_CLASS_HASH, converted_uninitialized_class).expect("failed to set eoa contract class"); diff --git a/crates/sequencer/Cargo.toml b/crates/sequencer/Cargo.toml index b03c846e..2a1003ed 100644 --- a/crates/sequencer/Cargo.toml +++ b/crates/sequencer/Cargo.toml @@ -16,12 +16,19 @@ serde = { workspace = true } serde_json = { workspace = true } starknet_api = { workspace = true } starknet = { workspace = true } +cairo-lang-sierra = { workspace = true } +cairo-native = { workspace = true } +cairo-lang-starknet-classes = { workspace = true } # Other eyre = { workspace = true } tracing = { workspace = true } thiserror = { workspace = true } hashbrown = { workspace = true } +cached = "0.53.1" +once_cell = "1.19.0" +libloading = "0.8.5" +lazy_static.workspace = true [dev-dependencies] lazy_static = { workspace = true } diff --git a/crates/sequencer/src/lib.rs b/crates/sequencer/src/lib.rs index 0731f789..11ee62b9 100644 --- a/crates/sequencer/src/lib.rs +++ b/crates/sequencer/src/lib.rs @@ -5,3 +5,4 @@ pub mod sequencer; pub mod serde; pub mod state; pub mod transaction; +pub mod native; diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs new file mode 100644 index 00000000..d64f99ed --- /dev/null +++ b/crates/sequencer/src/native.rs @@ -0,0 +1,194 @@ +use blockifier::execution::contract_class::NativeContractClassV1; +use blockifier::{ + execution::contract_class::{ContractClass, ContractClassV0, ContractClassV1}, + state::state_api::StateResult, +}; +use blockifier::{ + execution::contract_class::{ + ClassInfo as BlockifierClassInfo}, +}; +use cairo_lang_starknet_classes::abi::Contract; +use cairo_native::{ + context::NativeContext, error::Error as NativeError, executor::AotNativeExecutor, + metadata::gas::GasMetadata, module::NativeModule, +}; +use cairo_lang_starknet_classes::contract_class::ContractClass as SierraContractClass; +use libloading::Library; +use starknet_api::core::ClassHash; +use serde::{Deserialize, Serialize}; + +use std::{ + ffi::{c_char, c_uchar, c_void, CStr}, + fs, + path::PathBuf, + slice, + sync::Mutex, +}; +use cached::{Cached, SizedCache}; +use once_cell::sync::Lazy; +use lazy_static::lazy_static; + +use cairo_lang_sierra::{program::Program, program_registry::ProgramRegistry}; +use hashbrown::HashMap; + +lazy_static! { + static ref NATIVE_CACHE_DIR: PathBuf = setup_native_cache_dir(); +} + +fn generate_library_path(class_hash: ClassHash) -> PathBuf { + let mut path = NATIVE_CACHE_DIR.clone(); + path.push(class_hash.to_string().trim_start_matches("0x")); + path +} + +/// Compiles and load contract +/// +/// Modelled after [AotNativeExecutor::from_native_module]. +/// Needs a sierra_program to workaround limitations of NativeModule +fn persist_from_native_module( + mut native_module: NativeModule, + sierra_program: &Program, + library_output_path: &PathBuf, +) -> Result> { + let object_data = cairo_native::module_to_object(native_module.module(), Default::default()) + .map_err(|err| NativeError::LLVMCompileError(err.to_string()))?; // cairo native didn't include a from instance + + cairo_native::object_to_shared_lib(&object_data, library_output_path)?; + + let gas_metadata = native_module + .remove_metadata() + .expect("native_module should have set gas_metadata"); + + // Recreate the program registry as it can't be moved out of native module. + let program_registry = ProgramRegistry::new(sierra_program)?; + + let library = unsafe { Library::new(library_output_path)? }; + + Ok(AotNativeExecutor::new( + library, + program_registry, + gas_metadata, + )) +} + +fn setup_native_cache_dir() -> PathBuf { + let mut path: PathBuf = match std::env::var("NATIVE_CACHE_DIR") { + Ok(path) => path.into(), + Err(_err) => { + let mut path = std::env::current_dir().unwrap(); + path.push("native_cache"); + path + } + }; + let _ = fs::create_dir_all(&path); + path +} + + +/// Load a contract that is already compiled. +/// +/// Returns None if the contract does not exist at the output_path. +/// +/// To compile and load a contract use [persist_from_native_module] instead. +fn load_compiled_contract( + sierra_program: &Program, + library_output_path: &PathBuf, +) -> Option>> { + fn load( + sierra_program: &Program, + library_output_path: &PathBuf, + ) -> Result> { + let has_gas_builtin = sierra_program + .type_declarations + .iter() + .any(|decl| decl.long_id.generic_id.0.as_str() == "GasBuiltin"); + let config = has_gas_builtin.then_some(Default::default()); + let gas_metadata = GasMetadata::new(sierra_program, config)?; + let program_registry = ProgramRegistry::new(sierra_program)?; + let library = unsafe { Library::new(library_output_path)? }; + Ok(AotNativeExecutor::new( + library, + program_registry, + gas_metadata, + )) + } + + library_output_path + .is_file() + .then_some(load(sierra_program, library_output_path)) +} + +/// Compiled Native contracts + +/// Load a compiled native contract into memory +/// +/// Tries to load the compiled contract class from library_output_path if it +/// exists, otherwise it will compile the raw_contract_class, load it into memory +/// and save the compilation artifact to library_output_path. +fn native_try_from_json_string( + raw_contract_class: &str, + library_output_path: &PathBuf, +) -> Result> { + fn compile_and_load( + sierra_program: Program, + library_output_path: &PathBuf, + ) -> Result> { + println!("Compiling native contract"); + let native_context = NativeContext::new(); + // Ignore the debug names, that might cause conflicts when retrieving entrypoints upon execution of blockifier. + let native_module = native_context.compile(&sierra_program, false)?; + + persist_from_native_module(native_module, &sierra_program, library_output_path) + } + + let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = + serde_json::from_str(raw_contract_class)?; + + // todo(rodro): we are having two instances of a sierra program, one it's object form + // and another in its felt encoded form. This can be avoided by either: + // 1. Having access to the encoding/decoding functions + // 2. Refactoring the code on the Cairo mono-repo + + let sierra_program = sierra_contract_class.extract_sierra_program()?; + + // todo(xrvdg) lift this match out of the function once we do not need sierra_program anymore + let executor = match load_compiled_contract(&sierra_program, library_output_path) { + Some(executor) => { + println!("Loaded cached compiled contract from {:?}", library_output_path); + executor.or_else(|_err| compile_and_load(sierra_program, library_output_path)) + } + None => { + compile_and_load(sierra_program, library_output_path) + }, + }?; + + Ok(NativeContractClassV1::new(executor, sierra_contract_class)?) +} + + +pub fn class_from_json_str( + raw_json: &str, + class_hash: ClassHash, +) -> Result { + println!("raw json length {}", raw_json.len()); + let class_def = raw_json.to_string(); + println!("class def parsed"); + + let class: ContractClass =if let Ok(class) = ContractClassV0::try_from_json_string(class_def.as_str()) { + class.into() + } else if let Ok(class) = ContractClassV1::try_from_json_string(class_def.as_str()) { + println!("v1 contract"); + class.into() + } else if let Ok(class) = { + println!("native contract"); + let library_output_path = generate_library_path(class_hash); + native_try_from_json_string(class_def.as_str(), &library_output_path) + } { + class.into() + } else { + return Err("not a valid contract class".to_string()); + }; + + Ok(class) + + } diff --git a/crates/sequencer/src/state.rs b/crates/sequencer/src/state.rs index f4581440..1846916e 100644 --- a/crates/sequencer/src/state.rs +++ b/crates/sequencer/src/state.rs @@ -1,6 +1,6 @@ use crate::commit::Committer; use crate::serde::SerializableState; -use blockifier::execution::contract_class::ContractClass; +use blockifier::execution::contract_class::{ContractClass, NativeContractClassV1}; use blockifier::state::errors::StateError; use blockifier::state::state_api::{ State as BlockifierState, StateReader as BlockifierStateReader, StateResult, @@ -113,6 +113,11 @@ impl BlockifierState for &mut State { class_hash: ClassHash, contract_class: ContractClass, ) -> StateResult<()> { + match &contract_class { + &ContractClass::V0(_) => println!("Setting V0 contract class"), + &ContractClass::V1(_) => println!("Setting V1 contract class"), + &ContractClass::V1Native(_) => println!("Setting V1Native contract class"), + }; self.classes.insert(class_hash, contract_class); Ok(()) } @@ -165,10 +170,11 @@ impl BlockifierStateReader for &mut State { /// /// If the compiled class is not declared. fn get_compiled_contract_class(&self, class_hash: ClassHash) -> StateResult { - self.classes + let res = self.classes .get(&class_hash) .cloned() - .ok_or_else(|| StateError::UndeclaredClassHash(class_hash)) + .ok_or_else(|| StateError::UndeclaredClassHash(class_hash))?; + Ok(res) } /// # Errors @@ -182,6 +188,8 @@ impl BlockifierStateReader for &mut State { } } + + #[cfg(test)] mod tests { use blockifier::execution::contract_class::ContractClassV0; From 65ba38c2898203180f33156226555ac321b8a36d Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 24 Sep 2024 20:19:17 +0200 Subject: [PATCH 02/53] use contract executor --- .gitignore | 2 + Cargo.lock | 78 +++++++++++- Cargo.toml | 4 +- .../src/evm_sequencer/sequencer/mod.rs | 8 +- crates/sequencer/src/native.rs | 113 +++--------------- 5 files changed, 98 insertions(+), 107 deletions(-) diff --git a/.gitignore b/.gitignore index 6b863e65..43451617 100644 --- a/.gitignore +++ b/.gitignore @@ -30,6 +30,8 @@ tmp* # Ignore the generated tests /crates/ef-testing/tests/* +/crates/ef-testing/native_cache/* + # Ignore the launch file launch.json diff --git a/Cargo.lock b/Cargo.lock index bce15c0a..6f8e9e99 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1047,6 +1047,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#575a104968f14d83341c0e4f82a6d945e043d6ae" dependencies = [ "anyhow", "ark-ec", @@ -1059,7 +1060,7 @@ dependencies = [ "cairo-lang-sierra", "cairo-lang-starknet-classes", "cairo-lang-utils", - "cairo-native", + "cairo-native 0.2.0 (git+https://github.com/enitrat/cairo_native.git?branch=feat/ef-test-compat)", "cairo-vm", "derive_more 0.99.18", <<<<<<< HEAD @@ -1814,7 +1815,59 @@ dependencies = [ "cairo-lang-starknet-classes", "cairo-lang-test-plugin", "cairo-lang-utils", - "cairo-native-runtime", + "cairo-native-runtime 0.2.0", + "cc", + "clap", + "colored", + "educe", + "itertools 0.13.0", + "k256", + "keccak", + "lazy_static", + "libc", + "libloading", + "llvm-sys", + "melior", + "mlir-sys", + "num-bigint", + "num-traits 0.2.19", + "p256", + "sec1", + "serde", + "serde_json", + "sha2 0.10.8", + "starknet-types-core", + "stats_alloc", + "tempfile", + "thiserror", + "tracing", + "tracing-subscriber", + "utf8_iter", +] + +[[package]] +name = "cairo-native" +version = "0.2.0" +source = "git+https://github.com/enitrat/cairo_native.git?branch=feat/ef-test-compat#8727999cbf275cc2edb4aa696065e33f82a7f76f" +dependencies = [ + "anyhow", + "aquamarine", + "bumpalo", + "cairo-lang-compiler", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-runner", + "cairo-lang-semantic", + "cairo-lang-sierra", + "cairo-lang-sierra-ap-change", + "cairo-lang-sierra-gas", + "cairo-lang-sierra-generator", + "cairo-lang-starknet", + "cairo-lang-starknet-classes", + "cairo-lang-test-plugin", + "cairo-lang-utils", + "cairo-native-runtime 0.2.0 (git+https://github.com/enitrat/cairo_native.git?branch=feat/ef-test-compat)", "cc", "clap", "colored", @@ -1856,6 +1909,19 @@ dependencies = [ "starknet-types-core", ] +[[package]] +name = "cairo-native-runtime" +version = "0.2.0" +source = "git+https://github.com/enitrat/cairo_native.git?branch=feat/ef-test-compat#8727999cbf275cc2edb4aa696065e33f82a7f76f" +dependencies = [ + "cairo-lang-sierra-gas", + "lazy_static", + "libc", + "rand", + "starknet-curve 0.5.1", + "starknet-types-core", +] + [[package]] name = "cairo-vm" version = "1.0.1" @@ -4291,7 +4357,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -5162,6 +5228,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#575a104968f14d83341c0e4f82a6d945e043d6ae" dependencies = [ "clap", "itertools 0.10.5", @@ -7970,7 +8037,7 @@ dependencies = [ "cached 0.53.1", "cairo-lang-sierra", "cairo-lang-starknet-classes", - "cairo-native", + "cairo-native 0.2.0", "eyre", "hashbrown 0.14.5", "lazy_static", @@ -8537,6 +8604,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#575a104968f14d83341c0e4f82a6d945e043d6ae" dependencies = [ "bitvec", "cairo-lang-starknet-classes", @@ -9668,7 +9736,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d2de4568..3608fe2c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,12 +47,12 @@ cairo-lang-starknet-classes = "2.8.0" cairo-lang-sierra = "2.8.0" cairo-native = {path = "/Users/msaug/deps/cairo_native"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", path = "../../deps/sequencer/crates/blockifier", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", path = "../../deps/sequencer/crates/starknet_api" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8" } # Other async-trait = "0.1" diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index 8b8151f0..e4c361dd 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -238,17 +238,17 @@ lazy_static! { { #[cfg(feature = "native")] { - let account_json = CLASS_HASH_TO_JSON_CLASS.get(&ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); let kakarot_json = CLASS_HASH_TO_JSON_CLASS.get(&KAKAROT_CLASS_HASH).unwrap(); + let account_json = CLASS_HASH_TO_JSON_CLASS.get(&ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); let uninitialized_json = CLASS_HASH_TO_JSON_CLASS.get(&UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap(); - println!("Got account's json of length {}", account_json.len()); println!("Got kakarot's json of length {}", kakarot_json.len()); + println!("Got account's json of length {}", account_json.len()); println!("Got uninitialized's json of length {}", uninitialized_json.len()); - let account_class= class_from_json_str(account_json, *ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); let kakarot_class= class_from_json_str(kakarot_json, *KAKAROT_CLASS_HASH).unwrap(); + let account_class= class_from_json_str(account_json, *ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); let uninitialized_class= class_from_json_str(uninitialized_json, *UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap(); println!("Got class"); - (account_class, kakarot_class, uninitialized_class) + (kakarot_class, account_class, uninitialized_class) } #[cfg(not(feature = "native"))] { diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index d64f99ed..aa7fabad 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -8,8 +8,9 @@ use blockifier::{ ClassInfo as BlockifierClassInfo}, }; use cairo_lang_starknet_classes::abi::Contract; +use cairo_native::OptLevel; use cairo_native::{ - context::NativeContext, error::Error as NativeError, executor::AotNativeExecutor, + context::NativeContext, error::Error as NativeError, executor::AotContractExecutor, metadata::gas::GasMetadata, module::NativeModule, }; use cairo_lang_starknet_classes::contract_class::ContractClass as SierraContractClass; @@ -17,6 +18,7 @@ use libloading::Library; use starknet_api::core::ClassHash; use serde::{Deserialize, Serialize}; +use std::sync::Arc; use std::{ ffi::{c_char, c_uchar, c_void, CStr}, fs, @@ -41,36 +43,6 @@ fn generate_library_path(class_hash: ClassHash) -> PathBuf { path } -/// Compiles and load contract -/// -/// Modelled after [AotNativeExecutor::from_native_module]. -/// Needs a sierra_program to workaround limitations of NativeModule -fn persist_from_native_module( - mut native_module: NativeModule, - sierra_program: &Program, - library_output_path: &PathBuf, -) -> Result> { - let object_data = cairo_native::module_to_object(native_module.module(), Default::default()) - .map_err(|err| NativeError::LLVMCompileError(err.to_string()))?; // cairo native didn't include a from instance - - cairo_native::object_to_shared_lib(&object_data, library_output_path)?; - - let gas_metadata = native_module - .remove_metadata() - .expect("native_module should have set gas_metadata"); - - // Recreate the program registry as it can't be moved out of native module. - let program_registry = ProgramRegistry::new(sierra_program)?; - - let library = unsafe { Library::new(library_output_path)? }; - - Ok(AotNativeExecutor::new( - library, - program_registry, - gas_metadata, - )) -} - fn setup_native_cache_dir() -> PathBuf { let mut path: PathBuf = match std::env::var("NATIVE_CACHE_DIR") { Ok(path) => path.into(), @@ -84,42 +56,6 @@ fn setup_native_cache_dir() -> PathBuf { path } - -/// Load a contract that is already compiled. -/// -/// Returns None if the contract does not exist at the output_path. -/// -/// To compile and load a contract use [persist_from_native_module] instead. -fn load_compiled_contract( - sierra_program: &Program, - library_output_path: &PathBuf, -) -> Option>> { - fn load( - sierra_program: &Program, - library_output_path: &PathBuf, - ) -> Result> { - let has_gas_builtin = sierra_program - .type_declarations - .iter() - .any(|decl| decl.long_id.generic_id.0.as_str() == "GasBuiltin"); - let config = has_gas_builtin.then_some(Default::default()); - let gas_metadata = GasMetadata::new(sierra_program, config)?; - let program_registry = ProgramRegistry::new(sierra_program)?; - let library = unsafe { Library::new(library_output_path)? }; - Ok(AotNativeExecutor::new( - library, - program_registry, - gas_metadata, - )) - } - - library_output_path - .is_file() - .then_some(load(sierra_program, library_output_path)) -} - -/// Compiled Native contracts - /// Load a compiled native contract into memory /// /// Tries to load the compiled contract class from library_output_path if it @@ -129,40 +65,25 @@ fn native_try_from_json_string( raw_contract_class: &str, library_output_path: &PathBuf, ) -> Result> { - fn compile_and_load( - sierra_program: Program, - library_output_path: &PathBuf, - ) -> Result> { - println!("Compiling native contract"); - let native_context = NativeContext::new(); - // Ignore the debug names, that might cause conflicts when retrieving entrypoints upon execution of blockifier. - let native_module = native_context.compile(&sierra_program, false)?; - - persist_from_native_module(native_module, &sierra_program, library_output_path) - } - let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = - serde_json::from_str(raw_contract_class)?; - - // todo(rodro): we are having two instances of a sierra program, one it's object form - // and another in its felt encoded form. This can be avoided by either: - // 1. Having access to the encoding/decoding functions - // 2. Refactoring the code on the Cairo mono-repo + serde_json::from_str(raw_contract_class)?; let sierra_program = sierra_contract_class.extract_sierra_program()?; - // todo(xrvdg) lift this match out of the function once we do not need sierra_program anymore - let executor = match load_compiled_contract(&sierra_program, library_output_path) { - Some(executor) => { - println!("Loaded cached compiled contract from {:?}", library_output_path); - executor.or_else(|_err| compile_and_load(sierra_program, library_output_path)) - } - None => { - compile_and_load(sierra_program, library_output_path) - }, - }?; + let maybe_cached_executor = AotContractExecutor::load(library_output_path); + if let Ok(executor) = maybe_cached_executor { + println!("Loaded cached executor"); + let native_class = NativeContractClassV1::new(Arc::new(executor), sierra_contract_class)?; + return Ok(native_class); + } + + println!("Creating new executor"); + let mut executor = AotContractExecutor::new(&sierra_program, OptLevel::Default)?; + executor.save(library_output_path)?; + println!("Saved executor to {:?}", library_output_path); - Ok(NativeContractClassV1::new(executor, sierra_contract_class)?) + let native_class = NativeContractClassV1::new(Arc::new(executor), sierra_contract_class)?; + Ok(native_class) } From 40741c374779647987ff596d9a5c61a2cd1f61a4 Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 24 Sep 2024 23:09:34 +0200 Subject: [PATCH 03/53] update cargo --- Cargo.lock | 69 +++--------------------------------------------------- Cargo.toml | 2 +- 2 files changed, 4 insertions(+), 67 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6f8e9e99..9ea9a269 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1060,7 +1060,7 @@ dependencies = [ "cairo-lang-sierra", "cairo-lang-starknet-classes", "cairo-lang-utils", - "cairo-native 0.2.0 (git+https://github.com/enitrat/cairo_native.git?branch=feat/ef-test-compat)", + "cairo-native", "cairo-vm", "derive_more 0.99.18", <<<<<<< HEAD @@ -1794,57 +1794,6 @@ dependencies = [ "serde", ] -[[package]] -name = "cairo-native" -version = "0.2.0" -dependencies = [ - "anyhow", - "aquamarine", - "bumpalo", - "cairo-lang-compiler", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-runner", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-generator", - "cairo-lang-starknet", - "cairo-lang-starknet-classes", - "cairo-lang-test-plugin", - "cairo-lang-utils", - "cairo-native-runtime 0.2.0", - "cc", - "clap", - "colored", - "educe", - "itertools 0.13.0", - "k256", - "keccak", - "lazy_static", - "libc", - "libloading", - "llvm-sys", - "melior", - "mlir-sys", - "num-bigint", - "num-traits 0.2.19", - "p256", - "sec1", - "serde", - "serde_json", - "sha2 0.10.8", - "starknet-types-core", - "stats_alloc", - "tempfile", - "thiserror", - "tracing", - "tracing-subscriber", - "utf8_iter", -] - [[package]] name = "cairo-native" version = "0.2.0" @@ -1867,7 +1816,7 @@ dependencies = [ "cairo-lang-starknet-classes", "cairo-lang-test-plugin", "cairo-lang-utils", - "cairo-native-runtime 0.2.0 (git+https://github.com/enitrat/cairo_native.git?branch=feat/ef-test-compat)", + "cairo-native-runtime", "cc", "clap", "colored", @@ -1897,18 +1846,6 @@ dependencies = [ "utf8_iter", ] -[[package]] -name = "cairo-native-runtime" -version = "0.2.0" -dependencies = [ - "cairo-lang-sierra-gas", - "lazy_static", - "libc", - "rand", - "starknet-curve 0.5.1", - "starknet-types-core", -] - [[package]] name = "cairo-native-runtime" version = "0.2.0" @@ -8037,7 +7974,7 @@ dependencies = [ "cached 0.53.1", "cairo-lang-sierra", "cairo-lang-starknet-classes", - "cairo-native 0.2.0", + "cairo-native", "eyre", "hashbrown 0.14.5", "lazy_static", diff --git a/Cargo.toml b/Cargo.toml index 3608fe2c..76d77910 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,7 @@ cairo-lang-starknet = "2.8.0" cairo-lang-utils = "2.8.0" cairo-lang-starknet-classes = "2.8.0" cairo-lang-sierra = "2.8.0" -cairo-native = {path = "/Users/msaug/deps/cairo_native"} +cairo-native = { git = "https://github.com/enitrat/cairo_native.git", branch = "feat/ef-test-compat" } # This is a temporary dependency, will be removed once the new version of cairo-native is released to main. cairo-vm = "1.0.1" blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", default-features = false, features = [ "testing", From 46bdde0bc85b94bdc6fd9505bf9b1ecadff446a7 Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 24 Sep 2024 23:12:07 +0200 Subject: [PATCH 04/53] unskip eip1559 for repro --- blockchain-tests-skip.yml | 6885 ++++++++++++++++++++++++++++++++++++- 1 file changed, 6884 insertions(+), 1 deletion(-) mode change 120000 => 100644 blockchain-tests-skip.yml diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml deleted file mode 120000 index 7428ce91..00000000 --- a/blockchain-tests-skip.yml +++ /dev/null @@ -1 +0,0 @@ -../kakarot-ssj/blockchain-tests-skip.yml \ No newline at end of file diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml new file mode 100644 index 00000000..fa34bac0 --- /dev/null +++ b/blockchain-tests-skip.yml @@ -0,0 +1,6884 @@ +# List of test directories to completely skip +# trunk-ignore(yamllint/empty-values) +directories: + +# List of file names to be skipped +# The first level corresponds to the directory, the second to the list of file names to ignore. +# trunk-ignore(yamllint/empty-values) +filename: + +# Keeping some skipped tests because of a probable memory leak somewhere +# causing cargo test to just crash at some point +regex: + eip4895_withdrawals: + - .* + eip4844_blobs: + - .* + eip4788_beacon_root: + - .* + eip7516_blobgasfee: + - .* + stEIP4844-blobtransactions: + - .* + stMemoryStressTest: + - mload32bitBound_return.* # ef-tests #565 + - CREATE_Bounds.* # ef-tests #565 + - CREATE2_Bounds.* # ef-tests #565 + - CALL_Bounds.* # ef-tests #565 + - CALLCODE_Bounds.* # ef-tests #565 + - DELEGATECALL_Bounds.* # ef-tests #565 + - static_CALL_Bounds.* # ef-tests #565 + stZeroKnowledge: + - .*ecmul.* + stZeroKnowledge2: + - .*ecadd.* + - .*ecmul.* + +testname: + vmIOandFlowOperations: + - gas_d0g0v0_Shanghai + - pc_d0g0v0_Shanghai + - pc_d1g0v0_Shanghai + - jump_d5g0v0_Shanghai + - jumpi_d9g0v0_Shanghai + stEIP3860-limitmeterinitcode: + - create2InitCodeSizeLimit_d1g0v0_Shanghai + - create2InitCodeSizeLimit_d0g0v0_Shanghai + - createInitCodeSizeLimit_d0g0v0_Shanghai + - creationTxInitCodeSizeLimit_d0g0v0_Shanghai + vmTests: + - blockInfo_d0g0v0_Shanghai + - blockInfo_d1g0v0_Shanghai + - blockInfo_d2g0v0_Shanghai + - blockInfo_d3g0v0_Shanghai + - blockInfo_d4g0v0_Shanghai + - calldatasize_d0g0v0_Shanghai + - calldatasize_d10g0v0_Shanghai + - calldatasize_d11g0v0_Shanghai + - calldatasize_d12g0v0_Shanghai + - calldatasize_d13g0v0_Shanghai + - calldatasize_d14g0v0_Shanghai + - calldatasize_d15g0v0_Shanghai + - calldatasize_d16g0v0_Shanghai + - calldatasize_d17g0v0_Shanghai + - calldatasize_d18g0v0_Shanghai + - calldatasize_d19g0v0_Shanghai + - calldatasize_d1g0v0_Shanghai + - calldatasize_d2g0v0_Shanghai + - calldatasize_d3g0v0_Shanghai + - calldatasize_d4g0v0_Shanghai + - calldatasize_d5g0v0_Shanghai + - calldatasize_d6g0v0_Shanghai + - calldatasize_d7g0v0_Shanghai + - calldatasize_d8g0v0_Shanghai + - calldatasize_d9g0v0_Shanghai + - envInfo_d0g0v0_Shanghai + - envInfo_d1g0v0_Shanghai + - envInfo_d2g0v0_Shanghai + - envInfo_d3g0v0_Shanghai + - envInfo_d4g0v0_Shanghai + - envInfo_d5g0v0_Shanghai + - envInfo_d6g0v0_Shanghai + - envInfo_d7g0v0_Shanghai + - envInfo_d8g0v0_Shanghai + - envInfo_d9g0v0_Shanghai + - random_d4g0v0_Shanghai + - random_d3g0v0_Shanghai + - sha3_d0g0v0_Shanghai + - sha3_d10g0v0_Shanghai + - sha3_d11g0v0_Shanghai + - sha3_d12g0v0_Shanghai + - sha3_d13g0v0_Shanghai + - sha3_d15g0v0_Shanghai + - sha3_d14g0v0_Shanghai + - sha3_d16g0v0_Shanghai + - sha3_d1g0v0_Shanghai + - sha3_d2g0v0_Shanghai + - sha3_d3g0v0_Shanghai + - sha3_d4g0v0_Shanghai + - sha3_d5g0v0_Shanghai + - sha3_d6g0v0_Shanghai + - sha3_d7g0v0_Shanghai + - sha3_d8g0v0_Shanghai + - sha3_d9g0v0_Shanghai + stEIP3855-push0: + - push0_d2g0v0_Shanghai + - push0_d1g0v0_Shanghai + vmArithmeticTest: + - expPower256_d0g0v0_Shanghai + - expPower256Of256_d0g0v0_Shanghai + - twoOps_d0g0v0_Shanghai + stArgsZeroOneBalance: + - callNonConst_d0g0v1_Shanghai + - calldatacopyNonConst_d0g0v1_Shanghai + - expNonConst_d0g0v0_Shanghai + - sha3NonConst_d0g0v0_Shanghai + - sha3NonConst_d0g0v1_Shanghai + vmPerformance: + - loopExp_d10g0v0_Shanghai + - loopExp_d2g0v0_Shanghai + - loopExp_d11g0v0_Shanghai + - loopExp_d0g0v0_Shanghai + - loopExp_d1g0v0_Shanghai + - loopExp_d14g0v0_Shanghai + - loopExp_d3g0v0_Shanghai + - loopExp_d4g0v0_Shanghai + - loopExp_d9g0v0_Shanghai + - loopExp_d5g0v0_Shanghai + - loopMul_d0g0v0_Shanghai + - loopMul_d2g0v0_Shanghai + - loopMul_d1g0v0_Shanghai + - performanceTester_d1g0v0_Shanghai + - performanceTester_d0g0v0_Shanghai + - performanceTester_d3g0v0_Shanghai + - performanceTester_d2g0v0_Shanghai + - performanceTester_d4g0v0_Shanghai + stBadOpcode: + - badOpcodes_d110g0v0_Shanghai + - invalidAddr_d41g0v0_Shanghai + - invalidAddr_d43g0v0_Shanghai + - invalidAddr_d45g0v0_Shanghai + - invalidAddr_d47g0v0_Shanghai + - invalidAddr_d49g0v0_Shanghai + - invalidDiffPlaces_d0g0v0_Shanghai + - invalidDiffPlaces_d10g0v0_Shanghai + - invalidDiffPlaces_d11g0v0_Shanghai + - invalidDiffPlaces_d12g0v0_Shanghai + - invalidDiffPlaces_d13g0v0_Shanghai + - invalidDiffPlaces_d14g0v0_Shanghai + - invalidDiffPlaces_d15g0v0_Shanghai + - invalidAddr_d71g0v0_Shanghai + - invalidAddr_d73g0v0_Shanghai + - invalidAddr_d75g0v0_Shanghai + - invalidAddr_d77g0v0_Shanghai + - invalidAddr_d79g0v0_Shanghai + - invalidDiffPlaces_d16g0v0_Shanghai + - invalidDiffPlaces_d1g0v0_Shanghai + - invalidDiffPlaces_d17g0v0_Shanghai + - invalidDiffPlaces_d18g0v0_Shanghai + - invalidDiffPlaces_d2g0v0_Shanghai + - invalidDiffPlaces_d3g0v0_Shanghai + - invalidDiffPlaces_d4g0v0_Shanghai + - invalidDiffPlaces_d19g0v0_Shanghai + - invalidDiffPlaces_d21g0v0_Shanghai + - invalidDiffPlaces_d5g0v0_Shanghai + - invalidDiffPlaces_d20g0v0_Shanghai + - invalidDiffPlaces_d22g0v0_Shanghai + - invalidDiffPlaces_d6g0v0_Shanghai + - invalidDiffPlaces_d23g0v0_Shanghai + - measureGas_d1g0v0_Shanghai + - invalidDiffPlaces_d7g0v0_Shanghai + - invalidDiffPlaces_d8g0v0_Shanghai + - invalidDiffPlaces_d9g0v0_Shanghai + - measureGas_d6g0v0_Shanghai + - measureGas_d7g0v0_Shanghai + - opc0CDiffPlaces_d0g0v0_Shanghai + - measureGas_d8g0v0_Shanghai + - invalidDiffPlaces_d24g0v0_Shanghai + - measureGas_d0g0v0_Shanghai + - measureGas_d9g0v0_Shanghai + - invalidDiffPlaces_d25g0v0_Shanghai + - invalidDiffPlaces_d26g0v0_Shanghai + - invalidDiffPlaces_d28g0v0_Shanghai + - invalidDiffPlaces_d27g0v0_Shanghai + - invalidDiffPlaces_d29g0v0_Shanghai + - invalidDiffPlaces_d30g0v0_Shanghai + - opc0CDiffPlaces_d1g0v0_Shanghai + - invalidDiffPlaces_d31g0v0_Shanghai + - invalidDiffPlaces_d32g0v0_Shanghai + - opc0CDiffPlaces_d10g0v0_Shanghai + - opc0CDiffPlaces_d11g0v0_Shanghai + - invalidDiffPlaces_d33g0v0_Shanghai + - opc0CDiffPlaces_d2g0v0_Shanghai + - opc0CDiffPlaces_d12g0v0_Shanghai + - opc0CDiffPlaces_d14g0v0_Shanghai + - opc0CDiffPlaces_d13g0v0_Shanghai + - invalidDiffPlaces_d34g0v0_Shanghai + - opc0CDiffPlaces_d15g0v0_Shanghai + - opc0DDiffPlaces_d0g0v0_Shanghai + - opc0CDiffPlaces_d16g0v0_Shanghai + - opc0CDiffPlaces_d3g0v0_Shanghai + - opc0CDiffPlaces_d17g0v0_Shanghai + - opc0CDiffPlaces_d4g0v0_Shanghai + - opc0CDiffPlaces_d18g0v0_Shanghai + - opc0CDiffPlaces_d19g0v0_Shanghai + - opc0CDiffPlaces_d5g0v0_Shanghai + - opc0CDiffPlaces_d21g0v0_Shanghai + - opc0CDiffPlaces_d6g0v0_Shanghai + - opc0CDiffPlaces_d8g0v0_Shanghai + - opc0CDiffPlaces_d20g0v0_Shanghai + - opc0CDiffPlaces_d7g0v0_Shanghai + - opc0CDiffPlaces_d22g0v0_Shanghai + - opc0DDiffPlaces_d10g0v0_Shanghai + - opc0CDiffPlaces_d23g0v0_Shanghai + - opc0CDiffPlaces_d9g0v0_Shanghai + - opc0CDiffPlaces_d24g0v0_Shanghai + - opc0DDiffPlaces_d12g0v0_Shanghai + - opc0DDiffPlaces_d1g0v0_Shanghai + - opc0DDiffPlaces_d11g0v0_Shanghai + - opc0CDiffPlaces_d25g0v0_Shanghai + - opc0CDiffPlaces_d26g0v0_Shanghai + - opc0CDiffPlaces_d32g0v0_Shanghai + - opc0DDiffPlaces_d13g0v0_Shanghai + - opc0CDiffPlaces_d29g0v0_Shanghai + - opc0CDiffPlaces_d27g0v0_Shanghai + - opc0CDiffPlaces_d28g0v0_Shanghai + - opc0CDiffPlaces_d30g0v0_Shanghai + - opc0CDiffPlaces_d31g0v0_Shanghai + - opc0DDiffPlaces_d14g0v0_Shanghai + - opc0DDiffPlaces_d15g0v0_Shanghai + - opc0DDiffPlaces_d2g0v0_Shanghai + - opc0CDiffPlaces_d33g0v0_Shanghai + - opc0DDiffPlaces_d16g0v0_Shanghai + - opc0CDiffPlaces_d34g0v0_Shanghai + - opc0DDiffPlaces_d17g0v0_Shanghai + - opc0EDiffPlaces_d0g0v0_Shanghai + - opc0DDiffPlaces_d18g0v0_Shanghai + - opc0DDiffPlaces_d3g0v0_Shanghai + - opc0DDiffPlaces_d19g0v0_Shanghai + - opc0DDiffPlaces_d4g0v0_Shanghai + - opc0DDiffPlaces_d20g0v0_Shanghai + - opc0DDiffPlaces_d5g0v0_Shanghai + - opc0DDiffPlaces_d21g0v0_Shanghai + - opc0DDiffPlaces_d6g0v0_Shanghai + - opc0DDiffPlaces_d22g0v0_Shanghai + - opc0DDiffPlaces_d7g0v0_Shanghai + - opc0DDiffPlaces_d23g0v0_Shanghai + - opc0DDiffPlaces_d8g0v0_Shanghai + - opc0DDiffPlaces_d9g0v0_Shanghai + - opc0EDiffPlaces_d10g0v0_Shanghai + - opc0EDiffPlaces_d11g0v0_Shanghai + - opc0EDiffPlaces_d1g0v0_Shanghai + - opc0DDiffPlaces_d24g0v0_Shanghai + - opc0EDiffPlaces_d12g0v0_Shanghai + - opc0DDiffPlaces_d26g0v0_Shanghai + - opc0DDiffPlaces_d25g0v0_Shanghai + - opc0DDiffPlaces_d28g0v0_Shanghai + - opc0EDiffPlaces_d13g0v0_Shanghai + - opc0DDiffPlaces_d27g0v0_Shanghai + - opc0EDiffPlaces_d14g0v0_Shanghai + - opc0DDiffPlaces_d29g0v0_Shanghai + - opc0EDiffPlaces_d15g0v0_Shanghai + - opc0DDiffPlaces_d30g0v0_Shanghai + - opc0EDiffPlaces_d16g0v0_Shanghai + - opc0DDiffPlaces_d31g0v0_Shanghai + - opc0DDiffPlaces_d32g0v0_Shanghai + - opc0EDiffPlaces_d2g0v0_Shanghai + - opc0DDiffPlaces_d33g0v0_Shanghai + - opc0DDiffPlaces_d34g0v0_Shanghai + - opc0EDiffPlaces_d17g0v0_Shanghai + - opc0EDiffPlaces_d18g0v0_Shanghai + - opc0EDiffPlaces_d19g0v0_Shanghai + - opc0EDiffPlaces_d3g0v0_Shanghai + - opc0EDiffPlaces_d21g0v0_Shanghai + - opc0FDiffPlaces_d0g0v0_Shanghai + - opc0EDiffPlaces_d20g0v0_Shanghai + - opc0EDiffPlaces_d4g0v0_Shanghai + - opc0EDiffPlaces_d5g0v0_Shanghai + - opc0EDiffPlaces_d22g0v0_Shanghai + - opc0EDiffPlaces_d6g0v0_Shanghai + - opc0EDiffPlaces_d23g0v0_Shanghai + - opc0EDiffPlaces_d7g0v0_Shanghai + - opc0EDiffPlaces_d8g0v0_Shanghai + - opc0EDiffPlaces_d9g0v0_Shanghai + - opc0FDiffPlaces_d1g0v0_Shanghai + - opc0EDiffPlaces_d24g0v0_Shanghai + - opc0FDiffPlaces_d10g0v0_Shanghai + - opc0FDiffPlaces_d11g0v0_Shanghai + - opc0EDiffPlaces_d26g0v0_Shanghai + - opc0EDiffPlaces_d25g0v0_Shanghai + - opc0EDiffPlaces_d28g0v0_Shanghai + - opc0FDiffPlaces_d12g0v0_Shanghai + - opc0EDiffPlaces_d27g0v0_Shanghai + - opc0FDiffPlaces_d13g0v0_Shanghai + - opc0EDiffPlaces_d29g0v0_Shanghai + - opc0FDiffPlaces_d14g0v0_Shanghai + - opc0EDiffPlaces_d32g0v0_Shanghai + - opc0FDiffPlaces_d15g0v0_Shanghai + - opc0EDiffPlaces_d30g0v0_Shanghai + - opc0EDiffPlaces_d31g0v0_Shanghai + - opc0EDiffPlaces_d33g0v0_Shanghai + - opc0FDiffPlaces_d2g0v0_Shanghai + - opc0FDiffPlaces_d16g0v0_Shanghai + - opc0EDiffPlaces_d34g0v0_Shanghai + - opc0FDiffPlaces_d17g0v0_Shanghai + - opc0FDiffPlaces_d18g0v0_Shanghai + - opc0FDiffPlaces_d3g0v0_Shanghai + - opc0FDiffPlaces_d19g0v0_Shanghai + - opc0FDiffPlaces_d20g0v0_Shanghai + - opc0FDiffPlaces_d4g0v0_Shanghai + - opc0FDiffPlaces_d21g0v0_Shanghai + - opc1EDiffPlaces_d0g0v0_Shanghai + - opc0FDiffPlaces_d22g0v0_Shanghai + - opc0FDiffPlaces_d23g0v0_Shanghai + - opc0FDiffPlaces_d5g0v0_Shanghai + - opc0FDiffPlaces_d6g0v0_Shanghai + - opc0FDiffPlaces_d7g0v0_Shanghai + - opc0FDiffPlaces_d8g0v0_Shanghai + - opc0FDiffPlaces_d24g0v0_Shanghai + - opc1EDiffPlaces_d1g0v0_Shanghai + - opc0FDiffPlaces_d9g0v0_Shanghai + - opc1EDiffPlaces_d10g0v0_Shanghai + - opc0FDiffPlaces_d25g0v0_Shanghai + - opc1EDiffPlaces_d11g0v0_Shanghai + - opc0FDiffPlaces_d26g0v0_Shanghai + - opc1EDiffPlaces_d12g0v0_Shanghai + - opc0FDiffPlaces_d27g0v0_Shanghai + - opc1EDiffPlaces_d13g0v0_Shanghai + - opc0FDiffPlaces_d28g0v0_Shanghai + - opc1EDiffPlaces_d14g0v0_Shanghai + - opc1EDiffPlaces_d15g0v0_Shanghai + - opc0FDiffPlaces_d30g0v0_Shanghai + - opc0FDiffPlaces_d29g0v0_Shanghai + - opc0FDiffPlaces_d33g0v0_Shanghai + - opc0FDiffPlaces_d32g0v0_Shanghai + - opc1EDiffPlaces_d2g0v0_Shanghai + - opc0FDiffPlaces_d31g0v0_Shanghai + - opc1EDiffPlaces_d16g0v0_Shanghai + - opc0FDiffPlaces_d34g0v0_Shanghai + - opc1EDiffPlaces_d17g0v0_Shanghai + - opc1EDiffPlaces_d18g0v0_Shanghai + - opc1EDiffPlaces_d21g0v0_Shanghai + - opc1EDiffPlaces_d19g0v0_Shanghai + - opc1EDiffPlaces_d3g0v0_Shanghai + - opc1EDiffPlaces_d20g0v0_Shanghai + - opc1FDiffPlaces_d0g0v0_Shanghai + - opc1EDiffPlaces_d23g0v0_Shanghai + - opc1EDiffPlaces_d4g0v0_Shanghai + - opc1EDiffPlaces_d22g0v0_Shanghai + - opc1EDiffPlaces_d5g0v0_Shanghai + - opc1EDiffPlaces_d6g0v0_Shanghai + - opc1EDiffPlaces_d7g0v0_Shanghai + - opc1EDiffPlaces_d8g0v0_Shanghai + - opc1EDiffPlaces_d24g0v0_Shanghai + - opc1EDiffPlaces_d9g0v0_Shanghai + - opc1FDiffPlaces_d1g0v0_Shanghai + - opc1EDiffPlaces_d25g0v0_Shanghai + - opc1FDiffPlaces_d10g0v0_Shanghai + - opc1FDiffPlaces_d11g0v0_Shanghai + - opc1EDiffPlaces_d26g0v0_Shanghai + - opc1FDiffPlaces_d12g0v0_Shanghai + - opc1EDiffPlaces_d27g0v0_Shanghai + - opc1FDiffPlaces_d13g0v0_Shanghai + - opc1FDiffPlaces_d14g0v0_Shanghai + - opc1EDiffPlaces_d28g0v0_Shanghai + - opc1FDiffPlaces_d15g0v0_Shanghai + - opc1EDiffPlaces_d30g0v0_Shanghai + - opc1EDiffPlaces_d29g0v0_Shanghai + - opc1EDiffPlaces_d31g0v0_Shanghai + - opc1EDiffPlaces_d32g0v0_Shanghai + - opc1FDiffPlaces_d16g0v0_Shanghai + - opc1FDiffPlaces_d2g0v0_Shanghai + - opc1FDiffPlaces_d17g0v0_Shanghai + - opc1EDiffPlaces_d33g0v0_Shanghai + - opc1EDiffPlaces_d34g0v0_Shanghai + - opc1FDiffPlaces_d18g0v0_Shanghai + - opc1FDiffPlaces_d19g0v0_Shanghai + - opc1FDiffPlaces_d20g0v0_Shanghai + - opc1FDiffPlaces_d3g0v0_Shanghai + - opc1FDiffPlaces_d21g0v0_Shanghai + - opc21DiffPlaces_d0g0v0_Shanghai + - opc1FDiffPlaces_d22g0v0_Shanghai + - opc1FDiffPlaces_d4g0v0_Shanghai + - opc1FDiffPlaces_d23g0v0_Shanghai + - opc1FDiffPlaces_d5g0v0_Shanghai + - opc1FDiffPlaces_d6g0v0_Shanghai + - opc1FDiffPlaces_d7g0v0_Shanghai + - opc1FDiffPlaces_d24g0v0_Shanghai + - opc1FDiffPlaces_d8g0v0_Shanghai + - opc1FDiffPlaces_d9g0v0_Shanghai + - opc21DiffPlaces_d1g0v0_Shanghai + - opc1FDiffPlaces_d25g0v0_Shanghai + - opc21DiffPlaces_d10g0v0_Shanghai + - opc21DiffPlaces_d11g0v0_Shanghai + - opc1FDiffPlaces_d26g0v0_Shanghai + - opc21DiffPlaces_d12g0v0_Shanghai + - opc21DiffPlaces_d13g0v0_Shanghai + - opc1FDiffPlaces_d27g0v0_Shanghai + - opc21DiffPlaces_d14g0v0_Shanghai + - opc1FDiffPlaces_d29g0v0_Shanghai + - opc1FDiffPlaces_d28g0v0_Shanghai + - opc21DiffPlaces_d15g0v0_Shanghai + - opc21DiffPlaces_d16g0v0_Shanghai + - opc1FDiffPlaces_d30g0v0_Shanghai + - opc1FDiffPlaces_d31g0v0_Shanghai + - opc1FDiffPlaces_d32g0v0_Shanghai + - opc21DiffPlaces_d2g0v0_Shanghai + - opc1FDiffPlaces_d33g0v0_Shanghai + - opc21DiffPlaces_d17g0v0_Shanghai + - opc1FDiffPlaces_d34g0v0_Shanghai + - opc21DiffPlaces_d18g0v0_Shanghai + - opc21DiffPlaces_d3g0v0_Shanghai + - opc21DiffPlaces_d19g0v0_Shanghai + - opc22DiffPlaces_d0g0v0_Shanghai + - opc21DiffPlaces_d21g0v0_Shanghai + - opc21DiffPlaces_d22g0v0_Shanghai + - opc21DiffPlaces_d4g0v0_Shanghai + - opc21DiffPlaces_d20g0v0_Shanghai + - opc21DiffPlaces_d23g0v0_Shanghai + - opc21DiffPlaces_d5g0v0_Shanghai + - opc21DiffPlaces_d6g0v0_Shanghai + - opc21DiffPlaces_d7g0v0_Shanghai + - opc21DiffPlaces_d8g0v0_Shanghai + - opc21DiffPlaces_d24g0v0_Shanghai + - opc21DiffPlaces_d9g0v0_Shanghai + - opc22DiffPlaces_d1g0v0_Shanghai + - opc22DiffPlaces_d10g0v0_Shanghai + - opc21DiffPlaces_d25g0v0_Shanghai + - opc21DiffPlaces_d26g0v0_Shanghai + - opc22DiffPlaces_d11g0v0_Shanghai + - opc22DiffPlaces_d12g0v0_Shanghai + - opc22DiffPlaces_d13g0v0_Shanghai + - opc22DiffPlaces_d14g0v0_Shanghai + - opc21DiffPlaces_d27g0v0_Shanghai + - opc21DiffPlaces_d28g0v0_Shanghai + - opc22DiffPlaces_d15g0v0_Shanghai + - opc21DiffPlaces_d29g0v0_Shanghai + - opc21DiffPlaces_d30g0v0_Shanghai + - opc21DiffPlaces_d31g0v0_Shanghai + - opc21DiffPlaces_d32g0v0_Shanghai + - opc22DiffPlaces_d2g0v0_Shanghai + - opc22DiffPlaces_d16g0v0_Shanghai + - opc21DiffPlaces_d33g0v0_Shanghai + - opc21DiffPlaces_d34g0v0_Shanghai + - opc22DiffPlaces_d17g0v0_Shanghai + - opc22DiffPlaces_d18g0v0_Shanghai + - opc22DiffPlaces_d19g0v0_Shanghai + - opc22DiffPlaces_d3g0v0_Shanghai + - opc23DiffPlaces_d0g0v0_Shanghai + - opc22DiffPlaces_d21g0v0_Shanghai + - opc22DiffPlaces_d22g0v0_Shanghai + - opc22DiffPlaces_d4g0v0_Shanghai + - opc22DiffPlaces_d20g0v0_Shanghai + - opc22DiffPlaces_d23g0v0_Shanghai + - opc22DiffPlaces_d5g0v0_Shanghai + - opc22DiffPlaces_d6g0v0_Shanghai + - opc22DiffPlaces_d7g0v0_Shanghai + - opc22DiffPlaces_d8g0v0_Shanghai + - opc22DiffPlaces_d24g0v0_Shanghai + - opc22DiffPlaces_d9g0v0_Shanghai + - opc23DiffPlaces_d1g0v0_Shanghai + - opc23DiffPlaces_d10g0v0_Shanghai + - opc22DiffPlaces_d25g0v0_Shanghai + - opc23DiffPlaces_d11g0v0_Shanghai + - opc22DiffPlaces_d26g0v0_Shanghai + - opc23DiffPlaces_d12g0v0_Shanghai + - opc23DiffPlaces_d13g0v0_Shanghai + - opc22DiffPlaces_d27g0v0_Shanghai + - opc22DiffPlaces_d28g0v0_Shanghai + - opc23DiffPlaces_d14g0v0_Shanghai + - opc22DiffPlaces_d29g0v0_Shanghai + - opc23DiffPlaces_d15g0v0_Shanghai + - opc22DiffPlaces_d30g0v0_Shanghai + - opc22DiffPlaces_d31g0v0_Shanghai + - opc22DiffPlaces_d32g0v0_Shanghai + - opc23DiffPlaces_d16g0v0_Shanghai + - opc23DiffPlaces_d2g0v0_Shanghai + - opc22DiffPlaces_d34g0v0_Shanghai + - opc22DiffPlaces_d33g0v0_Shanghai + - opc23DiffPlaces_d17g0v0_Shanghai + - opc23DiffPlaces_d18g0v0_Shanghai + - opc23DiffPlaces_d19g0v0_Shanghai + - opc23DiffPlaces_d3g0v0_Shanghai + - opc24DiffPlaces_d0g0v0_Shanghai + - opc23DiffPlaces_d20g0v0_Shanghai + - opc23DiffPlaces_d4g0v0_Shanghai + - opc23DiffPlaces_d21g0v0_Shanghai + - opc23DiffPlaces_d22g0v0_Shanghai + - opc23DiffPlaces_d23g0v0_Shanghai + - opc23DiffPlaces_d5g0v0_Shanghai + - opc23DiffPlaces_d6g0v0_Shanghai + - opc23DiffPlaces_d7g0v0_Shanghai + - opc23DiffPlaces_d8g0v0_Shanghai + - opc23DiffPlaces_d24g0v0_Shanghai + - opc23DiffPlaces_d9g0v0_Shanghai + - opc24DiffPlaces_d1g0v0_Shanghai + - opc24DiffPlaces_d10g0v0_Shanghai + - opc23DiffPlaces_d25g0v0_Shanghai + - opc23DiffPlaces_d26g0v0_Shanghai + - opc24DiffPlaces_d11g0v0_Shanghai + - opc24DiffPlaces_d12g0v0_Shanghai + - opc23DiffPlaces_d27g0v0_Shanghai + - opc24DiffPlaces_d13g0v0_Shanghai + - opc23DiffPlaces_d28g0v0_Shanghai + - opc24DiffPlaces_d14g0v0_Shanghai + - opc24DiffPlaces_d15g0v0_Shanghai + - opc23DiffPlaces_d29g0v0_Shanghai + - opc23DiffPlaces_d30g0v0_Shanghai + - opc24DiffPlaces_d16g0v0_Shanghai + - opc23DiffPlaces_d32g0v0_Shanghai + - opc24DiffPlaces_d2g0v0_Shanghai + - opc23DiffPlaces_d31g0v0_Shanghai + - opc23DiffPlaces_d33g0v0_Shanghai + - opc23DiffPlaces_d34g0v0_Shanghai + - opc24DiffPlaces_d17g0v0_Shanghai + - opc24DiffPlaces_d18g0v0_Shanghai + - opc24DiffPlaces_d19g0v0_Shanghai + - opc24DiffPlaces_d3g0v0_Shanghai + - opc25DiffPlaces_d0g0v0_Shanghai + - opc24DiffPlaces_d21g0v0_Shanghai + - opc24DiffPlaces_d4g0v0_Shanghai + - opc24DiffPlaces_d20g0v0_Shanghai + - opc24DiffPlaces_d22g0v0_Shanghai + - opc24DiffPlaces_d23g0v0_Shanghai + - opc24DiffPlaces_d5g0v0_Shanghai + - opc24DiffPlaces_d6g0v0_Shanghai + - opc24DiffPlaces_d7g0v0_Shanghai + - opc24DiffPlaces_d8g0v0_Shanghai + - opc24DiffPlaces_d24g0v0_Shanghai + - opc24DiffPlaces_d9g0v0_Shanghai + - opc24DiffPlaces_d25g0v0_Shanghai + - opc25DiffPlaces_d1g0v0_Shanghai + - opc25DiffPlaces_d10g0v0_Shanghai + - opc24DiffPlaces_d26g0v0_Shanghai + - opc25DiffPlaces_d11g0v0_Shanghai + - opc25DiffPlaces_d12g0v0_Shanghai + - opc24DiffPlaces_d27g0v0_Shanghai + - opc25DiffPlaces_d13g0v0_Shanghai + - opc24DiffPlaces_d28g0v0_Shanghai + - opc25DiffPlaces_d14g0v0_Shanghai + - opc24DiffPlaces_d29g0v0_Shanghai + - opc25DiffPlaces_d15g0v0_Shanghai + - opc25DiffPlaces_d16g0v0_Shanghai + - opc24DiffPlaces_d30g0v0_Shanghai + - opc24DiffPlaces_d31g0v0_Shanghai + - opc24DiffPlaces_d32g0v0_Shanghai + - opc25DiffPlaces_d2g0v0_Shanghai + - opc24DiffPlaces_d33g0v0_Shanghai + - opc25DiffPlaces_d17g0v0_Shanghai + - opc24DiffPlaces_d34g0v0_Shanghai + - opc25DiffPlaces_d18g0v0_Shanghai + - opc25DiffPlaces_d3g0v0_Shanghai + - opc26DiffPlaces_d0g0v0_Shanghai + - opc25DiffPlaces_d19g0v0_Shanghai + - opc25DiffPlaces_d21g0v0_Shanghai + - opc25DiffPlaces_d4g0v0_Shanghai + - opc25DiffPlaces_d20g0v0_Shanghai + - opc25DiffPlaces_d22g0v0_Shanghai + - opc25DiffPlaces_d5g0v0_Shanghai + - opc25DiffPlaces_d23g0v0_Shanghai + - opc25DiffPlaces_d6g0v0_Shanghai + - opc25DiffPlaces_d7g0v0_Shanghai + - opc25DiffPlaces_d8g0v0_Shanghai + - opc25DiffPlaces_d9g0v0_Shanghai + - opc25DiffPlaces_d24g0v0_Shanghai + - opc26DiffPlaces_d1g0v0_Shanghai + - opc26DiffPlaces_d10g0v0_Shanghai + - opc25DiffPlaces_d25g0v0_Shanghai + - opc26DiffPlaces_d11g0v0_Shanghai + - opc25DiffPlaces_d26g0v0_Shanghai + - opc26DiffPlaces_d12g0v0_Shanghai + - opc25DiffPlaces_d27g0v0_Shanghai + - opc26DiffPlaces_d13g0v0_Shanghai + - opc25DiffPlaces_d28g0v0_Shanghai + - opc26DiffPlaces_d14g0v0_Shanghai + - opc26DiffPlaces_d15g0v0_Shanghai + - opc25DiffPlaces_d29g0v0_Shanghai + - opc26DiffPlaces_d16g0v0_Shanghai + - opc25DiffPlaces_d30g0v0_Shanghai + - opc25DiffPlaces_d31g0v0_Shanghai + - opc25DiffPlaces_d32g0v0_Shanghai + - opc26DiffPlaces_d2g0v0_Shanghai + - opc25DiffPlaces_d33g0v0_Shanghai + - opc25DiffPlaces_d34g0v0_Shanghai + - opc26DiffPlaces_d17g0v0_Shanghai + - opc26DiffPlaces_d18g0v0_Shanghai + - opc26DiffPlaces_d19g0v0_Shanghai + - opc26DiffPlaces_d3g0v0_Shanghai + - opc27DiffPlaces_d0g0v0_Shanghai + - opc26DiffPlaces_d21g0v0_Shanghai + - opc26DiffPlaces_d4g0v0_Shanghai + - opc26DiffPlaces_d20g0v0_Shanghai + - opc26DiffPlaces_d22g0v0_Shanghai + - opc26DiffPlaces_d23g0v0_Shanghai + - opc26DiffPlaces_d5g0v0_Shanghai + - opc26DiffPlaces_d6g0v0_Shanghai + - opc26DiffPlaces_d7g0v0_Shanghai + - opc26DiffPlaces_d8g0v0_Shanghai + - opc26DiffPlaces_d24g0v0_Shanghai + - opc26DiffPlaces_d9g0v0_Shanghai + - opc27DiffPlaces_d1g0v0_Shanghai + - opc26DiffPlaces_d25g0v0_Shanghai + - opc27DiffPlaces_d10g0v0_Shanghai + - opc26DiffPlaces_d26g0v0_Shanghai + - opc27DiffPlaces_d11g0v0_Shanghai + - opc27DiffPlaces_d12g0v0_Shanghai + - opc26DiffPlaces_d27g0v0_Shanghai + - opc27DiffPlaces_d13g0v0_Shanghai + - opc26DiffPlaces_d28g0v0_Shanghai + - opc27DiffPlaces_d14g0v0_Shanghai + - opc26DiffPlaces_d29g0v0_Shanghai + - opc27DiffPlaces_d15g0v0_Shanghai + - opc27DiffPlaces_d16g0v0_Shanghai + - opc26DiffPlaces_d30g0v0_Shanghai + - opc26DiffPlaces_d31g0v0_Shanghai + - opc27DiffPlaces_d2g0v0_Shanghai + - opc26DiffPlaces_d33g0v0_Shanghai + - opc26DiffPlaces_d32g0v0_Shanghai + - opc26DiffPlaces_d34g0v0_Shanghai + - opc27DiffPlaces_d17g0v0_Shanghai + - opc27DiffPlaces_d18g0v0_Shanghai + - opc27DiffPlaces_d19g0v0_Shanghai + - opc27DiffPlaces_d3g0v0_Shanghai + - opc28DiffPlaces_d0g0v0_Shanghai + - opc27DiffPlaces_d21g0v0_Shanghai + - opc27DiffPlaces_d4g0v0_Shanghai + - opc27DiffPlaces_d20g0v0_Shanghai + - opc27DiffPlaces_d22g0v0_Shanghai + - opc27DiffPlaces_d5g0v0_Shanghai + - opc27DiffPlaces_d23g0v0_Shanghai + - opc27DiffPlaces_d6g0v0_Shanghai + - opc27DiffPlaces_d7g0v0_Shanghai + - opc27DiffPlaces_d8g0v0_Shanghai + - opc27DiffPlaces_d9g0v0_Shanghai + - opc27DiffPlaces_d24g0v0_Shanghai + - opc28DiffPlaces_d1g0v0_Shanghai + - opc27DiffPlaces_d25g0v0_Shanghai + - opc28DiffPlaces_d10g0v0_Shanghai + - opc28DiffPlaces_d11g0v0_Shanghai + - opc27DiffPlaces_d26g0v0_Shanghai + - opc28DiffPlaces_d12g0v0_Shanghai + - opc27DiffPlaces_d27g0v0_Shanghai + - opc28DiffPlaces_d13g0v0_Shanghai + - opc28DiffPlaces_d14g0v0_Shanghai + - opc27DiffPlaces_d28g0v0_Shanghai + - opc28DiffPlaces_d15g0v0_Shanghai + - opc27DiffPlaces_d29g0v0_Shanghai + - opc27DiffPlaces_d30g0v0_Shanghai + - opc28DiffPlaces_d16g0v0_Shanghai + - opc27DiffPlaces_d31g0v0_Shanghai + - opc28DiffPlaces_d2g0v0_Shanghai + - opc27DiffPlaces_d32g0v0_Shanghai + - opc27DiffPlaces_d33g0v0_Shanghai + - opc27DiffPlaces_d34g0v0_Shanghai + - opc28DiffPlaces_d17g0v0_Shanghai + - opc28DiffPlaces_d18g0v0_Shanghai + - opc28DiffPlaces_d19g0v0_Shanghai + - opc28DiffPlaces_d3g0v0_Shanghai + - opc28DiffPlaces_d21g0v0_Shanghai + - opc29DiffPlaces_d0g0v0_Shanghai + - opc28DiffPlaces_d20g0v0_Shanghai + - opc28DiffPlaces_d22g0v0_Shanghai + - opc28DiffPlaces_d4g0v0_Shanghai + - opc28DiffPlaces_d23g0v0_Shanghai + - opc28DiffPlaces_d5g0v0_Shanghai + - opc28DiffPlaces_d6g0v0_Shanghai + - opc28DiffPlaces_d7g0v0_Shanghai + - opc28DiffPlaces_d8g0v0_Shanghai + - opc28DiffPlaces_d24g0v0_Shanghai + - opc28DiffPlaces_d9g0v0_Shanghai + - opc29DiffPlaces_d1g0v0_Shanghai + - opc28DiffPlaces_d25g0v0_Shanghai + - opc29DiffPlaces_d10g0v0_Shanghai + - opc28DiffPlaces_d26g0v0_Shanghai + - opc29DiffPlaces_d11g0v0_Shanghai + - opc29DiffPlaces_d12g0v0_Shanghai + - opc28DiffPlaces_d27g0v0_Shanghai + - opc29DiffPlaces_d13g0v0_Shanghai + - opc28DiffPlaces_d28g0v0_Shanghai + - opc29DiffPlaces_d14g0v0_Shanghai + - opc28DiffPlaces_d29g0v0_Shanghai + - opc29DiffPlaces_d15g0v0_Shanghai + - opc29DiffPlaces_d16g0v0_Shanghai + - opc28DiffPlaces_d30g0v0_Shanghai + - opc29DiffPlaces_d2g0v0_Shanghai + - opc28DiffPlaces_d31g0v0_Shanghai + - opc28DiffPlaces_d32g0v0_Shanghai + - opc28DiffPlaces_d33g0v0_Shanghai + - opc28DiffPlaces_d34g0v0_Shanghai + - opc29DiffPlaces_d17g0v0_Shanghai + - opc29DiffPlaces_d18g0v0_Shanghai + - opc29DiffPlaces_d3g0v0_Shanghai + - opc29DiffPlaces_d19g0v0_Shanghai + - opc29DiffPlaces_d21g0v0_Shanghai + - opc29DiffPlaces_d4g0v0_Shanghai + - opc2ADiffPlaces_d0g0v0_Shanghai + - opc29DiffPlaces_d20g0v0_Shanghai + - opc29DiffPlaces_d22g0v0_Shanghai + - opc29DiffPlaces_d5g0v0_Shanghai + - opc29DiffPlaces_d23g0v0_Shanghai + - opc29DiffPlaces_d6g0v0_Shanghai + - opc29DiffPlaces_d7g0v0_Shanghai + - opc29DiffPlaces_d8g0v0_Shanghai + - opc29DiffPlaces_d24g0v0_Shanghai + - opc29DiffPlaces_d9g0v0_Shanghai + - opc2ADiffPlaces_d1g0v0_Shanghai + - opc29DiffPlaces_d25g0v0_Shanghai + - opc2ADiffPlaces_d10g0v0_Shanghai + - opc29DiffPlaces_d26g0v0_Shanghai + - opc2ADiffPlaces_d11g0v0_Shanghai + - opc2ADiffPlaces_d12g0v0_Shanghai + - opc29DiffPlaces_d27g0v0_Shanghai + - opc2ADiffPlaces_d13g0v0_Shanghai + - opc29DiffPlaces_d28g0v0_Shanghai + - opc2ADiffPlaces_d14g0v0_Shanghai + - opc29DiffPlaces_d29g0v0_Shanghai + - opc2ADiffPlaces_d15g0v0_Shanghai + - opc29DiffPlaces_d30g0v0_Shanghai + - opc2ADiffPlaces_d16g0v0_Shanghai + - opc2ADiffPlaces_d2g0v0_Shanghai + - opc29DiffPlaces_d31g0v0_Shanghai + - opc29DiffPlaces_d33g0v0_Shanghai + - opc29DiffPlaces_d32g0v0_Shanghai + - opc29DiffPlaces_d34g0v0_Shanghai + - opc2ADiffPlaces_d17g0v0_Shanghai + - opc2ADiffPlaces_d18g0v0_Shanghai + - opc2ADiffPlaces_d19g0v0_Shanghai + - opc2ADiffPlaces_d3g0v0_Shanghai + - opc2ADiffPlaces_d21g0v0_Shanghai + - opc2BDiffPlaces_d0g0v0_Shanghai + - opc2ADiffPlaces_d4g0v0_Shanghai + - opc2ADiffPlaces_d20g0v0_Shanghai + - opc2ADiffPlaces_d22g0v0_Shanghai + - opc2ADiffPlaces_d23g0v0_Shanghai + - opc2ADiffPlaces_d5g0v0_Shanghai + - opc2ADiffPlaces_d6g0v0_Shanghai + - opc2ADiffPlaces_d7g0v0_Shanghai + - opc2ADiffPlaces_d8g0v0_Shanghai + - opc2ADiffPlaces_d24g0v0_Shanghai + - opc2ADiffPlaces_d9g0v0_Shanghai + - opc2ADiffPlaces_d25g0v0_Shanghai + - opc2BDiffPlaces_d1g0v0_Shanghai + - opc2BDiffPlaces_d10g0v0_Shanghai + - opc2ADiffPlaces_d26g0v0_Shanghai + - opc2BDiffPlaces_d11g0v0_Shanghai + - opc2BDiffPlaces_d12g0v0_Shanghai + - opc2ADiffPlaces_d27g0v0_Shanghai + - opc2BDiffPlaces_d13g0v0_Shanghai + - opc2ADiffPlaces_d28g0v0_Shanghai + - opc2BDiffPlaces_d14g0v0_Shanghai + - opc2ADiffPlaces_d29g0v0_Shanghai + - opc2BDiffPlaces_d15g0v0_Shanghai + - opc2ADiffPlaces_d31g0v0_Shanghai + - opc2BDiffPlaces_d16g0v0_Shanghai + - opc2ADiffPlaces_d30g0v0_Shanghai + - opc2BDiffPlaces_d2g0v0_Shanghai + - opc2ADiffPlaces_d32g0v0_Shanghai + - opc2ADiffPlaces_d33g0v0_Shanghai + - opc2ADiffPlaces_d34g0v0_Shanghai + - opc2BDiffPlaces_d17g0v0_Shanghai + - opc2BDiffPlaces_d18g0v0_Shanghai + - opc2BDiffPlaces_d3g0v0_Shanghai + - opc2BDiffPlaces_d19g0v0_Shanghai + - opc2BDiffPlaces_d21g0v0_Shanghai + - opc2BDiffPlaces_d4g0v0_Shanghai + - opc2CDiffPlaces_d0g0v0_Shanghai + - opc2BDiffPlaces_d22g0v0_Shanghai + - opc2BDiffPlaces_d20g0v0_Shanghai + - opc2BDiffPlaces_d23g0v0_Shanghai + - opc2BDiffPlaces_d5g0v0_Shanghai + - opc2BDiffPlaces_d6g0v0_Shanghai + - opc2BDiffPlaces_d7g0v0_Shanghai + - opc2BDiffPlaces_d8g0v0_Shanghai + - opc2BDiffPlaces_d24g0v0_Shanghai + - opc2BDiffPlaces_d9g0v0_Shanghai + - opc2CDiffPlaces_d1g0v0_Shanghai + - opc2BDiffPlaces_d25g0v0_Shanghai + - opc2CDiffPlaces_d10g0v0_Shanghai + - opc2CDiffPlaces_d11g0v0_Shanghai + - opc2BDiffPlaces_d26g0v0_Shanghai + - opc2CDiffPlaces_d12g0v0_Shanghai + - opc2BDiffPlaces_d27g0v0_Shanghai + - opc2CDiffPlaces_d13g0v0_Shanghai + - opc2BDiffPlaces_d28g0v0_Shanghai + - opc2CDiffPlaces_d14g0v0_Shanghai + - opc2BDiffPlaces_d29g0v0_Shanghai + - opc2CDiffPlaces_d15g0v0_Shanghai + - opc2BDiffPlaces_d30g0v0_Shanghai + - opc2CDiffPlaces_d16g0v0_Shanghai + - opc2BDiffPlaces_d31g0v0_Shanghai + - opc2CDiffPlaces_d2g0v0_Shanghai + - opc2BDiffPlaces_d32g0v0_Shanghai + - opc2BDiffPlaces_d33g0v0_Shanghai + - opc2BDiffPlaces_d34g0v0_Shanghai + - opc2CDiffPlaces_d17g0v0_Shanghai + - opc2CDiffPlaces_d18g0v0_Shanghai + - opc2CDiffPlaces_d19g0v0_Shanghai + - opc2CDiffPlaces_d3g0v0_Shanghai + - opc2CDiffPlaces_d21g0v0_Shanghai + - opc2DDiffPlaces_d0g0v0_Shanghai + - opc2CDiffPlaces_d20g0v0_Shanghai + - opc2CDiffPlaces_d22g0v0_Shanghai + - opc2CDiffPlaces_d4g0v0_Shanghai + - opc2CDiffPlaces_d23g0v0_Shanghai + - opc2CDiffPlaces_d5g0v0_Shanghai + - opc2CDiffPlaces_d6g0v0_Shanghai + - opc2CDiffPlaces_d7g0v0_Shanghai + - opc2CDiffPlaces_d8g0v0_Shanghai + - opc2CDiffPlaces_d24g0v0_Shanghai + - opc2CDiffPlaces_d9g0v0_Shanghai + - opc2DDiffPlaces_d1g0v0_Shanghai + - opc2CDiffPlaces_d25g0v0_Shanghai + - opc2DDiffPlaces_d10g0v0_Shanghai + - opc2CDiffPlaces_d26g0v0_Shanghai + - opc2DDiffPlaces_d11g0v0_Shanghai + - opc2DDiffPlaces_d12g0v0_Shanghai + - opc2CDiffPlaces_d27g0v0_Shanghai + - opc2DDiffPlaces_d13g0v0_Shanghai + - opc2CDiffPlaces_d28g0v0_Shanghai + - opc2DDiffPlaces_d14g0v0_Shanghai + - opc2DDiffPlaces_d15g0v0_Shanghai + - opc2CDiffPlaces_d29g0v0_Shanghai + - opc2DDiffPlaces_d16g0v0_Shanghai + - opc2CDiffPlaces_d30g0v0_Shanghai + - opc2CDiffPlaces_d31g0v0_Shanghai + - opc2DDiffPlaces_d2g0v0_Shanghai + - opc2CDiffPlaces_d32g0v0_Shanghai + - opc2CDiffPlaces_d33g0v0_Shanghai + - opc2CDiffPlaces_d34g0v0_Shanghai + - opc2DDiffPlaces_d17g0v0_Shanghai + - opc2DDiffPlaces_d18g0v0_Shanghai + - opc2DDiffPlaces_d3g0v0_Shanghai + - opc2DDiffPlaces_d19g0v0_Shanghai + - opc2EDiffPlaces_d0g0v0_Shanghai + - opc2DDiffPlaces_d21g0v0_Shanghai + - opc2DDiffPlaces_d4g0v0_Shanghai + - opc2DDiffPlaces_d20g0v0_Shanghai + - opc2DDiffPlaces_d22g0v0_Shanghai + - opc2DDiffPlaces_d5g0v0_Shanghai + - opc2DDiffPlaces_d23g0v0_Shanghai + - opc2DDiffPlaces_d6g0v0_Shanghai + - opc2DDiffPlaces_d7g0v0_Shanghai + - opc2DDiffPlaces_d8g0v0_Shanghai + - opc2DDiffPlaces_d24g0v0_Shanghai + - opc2DDiffPlaces_d9g0v0_Shanghai + - opc2EDiffPlaces_d1g0v0_Shanghai + - opc2DDiffPlaces_d25g0v0_Shanghai + - opc2EDiffPlaces_d10g0v0_Shanghai + - opc2DDiffPlaces_d26g0v0_Shanghai + - opc2EDiffPlaces_d11g0v0_Shanghai + - opc2EDiffPlaces_d12g0v0_Shanghai + - opc2DDiffPlaces_d27g0v0_Shanghai + - opc2EDiffPlaces_d13g0v0_Shanghai + - opc2DDiffPlaces_d28g0v0_Shanghai + - opc2EDiffPlaces_d14g0v0_Shanghai + - opc2DDiffPlaces_d29g0v0_Shanghai + - opc2EDiffPlaces_d15g0v0_Shanghai + - opc2DDiffPlaces_d30g0v0_Shanghai + - opc2DDiffPlaces_d31g0v0_Shanghai + - opc2EDiffPlaces_d16g0v0_Shanghai + - opc2DDiffPlaces_d32g0v0_Shanghai + - opc2EDiffPlaces_d2g0v0_Shanghai + - opc2DDiffPlaces_d33g0v0_Shanghai + - opc2DDiffPlaces_d34g0v0_Shanghai + - opc2EDiffPlaces_d17g0v0_Shanghai + - opc2EDiffPlaces_d18g0v0_Shanghai + - opc2EDiffPlaces_d19g0v0_Shanghai + - opc2EDiffPlaces_d3g0v0_Shanghai + - opc2EDiffPlaces_d21g0v0_Shanghai + - opc2FDiffPlaces_d0g0v0_Shanghai + - opc2EDiffPlaces_d20g0v0_Shanghai + - opc2EDiffPlaces_d22g0v0_Shanghai + - opc2EDiffPlaces_d4g0v0_Shanghai + - opc2EDiffPlaces_d23g0v0_Shanghai + - opc2EDiffPlaces_d5g0v0_Shanghai + - opc2EDiffPlaces_d6g0v0_Shanghai + - opc2EDiffPlaces_d7g0v0_Shanghai + - opc2EDiffPlaces_d8g0v0_Shanghai + - opc2EDiffPlaces_d24g0v0_Shanghai + - opc2EDiffPlaces_d9g0v0_Shanghai + - opc2EDiffPlaces_d25g0v0_Shanghai + - opc2FDiffPlaces_d1g0v0_Shanghai + - opc2FDiffPlaces_d10g0v0_Shanghai + - opc2EDiffPlaces_d26g0v0_Shanghai + - opc2FDiffPlaces_d11g0v0_Shanghai + - opc2FDiffPlaces_d12g0v0_Shanghai + - opc2EDiffPlaces_d27g0v0_Shanghai + - opc2FDiffPlaces_d13g0v0_Shanghai + - opc2FDiffPlaces_d14g0v0_Shanghai + - opc2EDiffPlaces_d28g0v0_Shanghai + - opc2EDiffPlaces_d29g0v0_Shanghai + - opc2FDiffPlaces_d15g0v0_Shanghai + - opc2EDiffPlaces_d30g0v0_Shanghai + - opc2EDiffPlaces_d31g0v0_Shanghai + - opc2FDiffPlaces_d16g0v0_Shanghai + - opc2EDiffPlaces_d32g0v0_Shanghai + - opc2EDiffPlaces_d33g0v0_Shanghai + - opc2FDiffPlaces_d2g0v0_Shanghai + - opc2EDiffPlaces_d34g0v0_Shanghai + - opc2FDiffPlaces_d17g0v0_Shanghai + - opc2FDiffPlaces_d18g0v0_Shanghai + - opc2FDiffPlaces_d3g0v0_Shanghai + - opc2FDiffPlaces_d19g0v0_Shanghai + - opc2FDiffPlaces_d4g0v0_Shanghai + - opc2FDiffPlaces_d21g0v0_Shanghai + - opc49DiffPlaces_d0g0v0_Shanghai + - opc2FDiffPlaces_d20g0v0_Shanghai + - opc2FDiffPlaces_d22g0v0_Shanghai + - opc2FDiffPlaces_d23g0v0_Shanghai + - opc2FDiffPlaces_d5g0v0_Shanghai + - opc2FDiffPlaces_d6g0v0_Shanghai + - opc2FDiffPlaces_d7g0v0_Shanghai + - opc2FDiffPlaces_d8g0v0_Shanghai + - opc2FDiffPlaces_d24g0v0_Shanghai + - opc2FDiffPlaces_d9g0v0_Shanghai + - opc2FDiffPlaces_d25g0v0_Shanghai + - opc49DiffPlaces_d1g0v0_Shanghai + - opc49DiffPlaces_d10g0v0_Shanghai + - opc2FDiffPlaces_d26g0v0_Shanghai + - opc49DiffPlaces_d11g0v0_Shanghai + - opc49DiffPlaces_d12g0v0_Shanghai + - opc2FDiffPlaces_d27g0v0_Shanghai + - opc49DiffPlaces_d13g0v0_Shanghai + - opc2FDiffPlaces_d28g0v0_Shanghai + - opc2FDiffPlaces_d29g0v0_Shanghai + - opc49DiffPlaces_d14g0v0_Shanghai + - opc49DiffPlaces_d15g0v0_Shanghai + - opc2FDiffPlaces_d30g0v0_Shanghai + - opc2FDiffPlaces_d31g0v0_Shanghai + - opc49DiffPlaces_d2g0v0_Shanghai + - opc49DiffPlaces_d16g0v0_Shanghai + - opc2FDiffPlaces_d33g0v0_Shanghai + - opc2FDiffPlaces_d32g0v0_Shanghai + - opc2FDiffPlaces_d34g0v0_Shanghai + - opc49DiffPlaces_d17g0v0_Shanghai + - opc49DiffPlaces_d18g0v0_Shanghai + - opc49DiffPlaces_d19g0v0_Shanghai + - opc49DiffPlaces_d3g0v0_Shanghai + - opc49DiffPlaces_d21g0v0_Shanghai + - opc4ADiffPlaces_d0g0v0_Shanghai + - opc49DiffPlaces_d4g0v0_Shanghai + - opc49DiffPlaces_d20g0v0_Shanghai + - opc49DiffPlaces_d22g0v0_Shanghai + - opc49DiffPlaces_d23g0v0_Shanghai + - opc49DiffPlaces_d5g0v0_Shanghai + - opc49DiffPlaces_d6g0v0_Shanghai + - opc49DiffPlaces_d7g0v0_Shanghai + - opc49DiffPlaces_d8g0v0_Shanghai + - opc49DiffPlaces_d24g0v0_Shanghai + - opc49DiffPlaces_d9g0v0_Shanghai + - opc49DiffPlaces_d25g0v0_Shanghai + - opc4ADiffPlaces_d1g0v0_Shanghai + - opc4ADiffPlaces_d10g0v0_Shanghai + - opc4ADiffPlaces_d11g0v0_Shanghai + - opc49DiffPlaces_d26g0v0_Shanghai + - opc4ADiffPlaces_d12g0v0_Shanghai + - opc49DiffPlaces_d27g0v0_Shanghai + - opc4ADiffPlaces_d13g0v0_Shanghai + - opc49DiffPlaces_d28g0v0_Shanghai + - opc4ADiffPlaces_d14g0v0_Shanghai + - opc49DiffPlaces_d29g0v0_Shanghai + - opc4ADiffPlaces_d15g0v0_Shanghai + - opc49DiffPlaces_d30g0v0_Shanghai + - opc4ADiffPlaces_d16g0v0_Shanghai + - opc49DiffPlaces_d31g0v0_Shanghai + - opc4ADiffPlaces_d2g0v0_Shanghai + - opc49DiffPlaces_d32g0v0_Shanghai + - opc49DiffPlaces_d33g0v0_Shanghai + - opc49DiffPlaces_d34g0v0_Shanghai + - opc4ADiffPlaces_d17g0v0_Shanghai + - opc4ADiffPlaces_d18g0v0_Shanghai + - opc4ADiffPlaces_d3g0v0_Shanghai + - opc4ADiffPlaces_d19g0v0_Shanghai + - opc4ADiffPlaces_d21g0v0_Shanghai + - opc4BDiffPlaces_d0g0v0_Shanghai + - opc4ADiffPlaces_d20g0v0_Shanghai + - opc4ADiffPlaces_d4g0v0_Shanghai + - opc4ADiffPlaces_d22g0v0_Shanghai + - opc4ADiffPlaces_d23g0v0_Shanghai + - opc4ADiffPlaces_d5g0v0_Shanghai + - opc4ADiffPlaces_d6g0v0_Shanghai + - opc4ADiffPlaces_d7g0v0_Shanghai + - opc4ADiffPlaces_d8g0v0_Shanghai + - opc4ADiffPlaces_d9g0v0_Shanghai + - opc4ADiffPlaces_d24g0v0_Shanghai + - opc4BDiffPlaces_d1g0v0_Shanghai + - opc4ADiffPlaces_d25g0v0_Shanghai + - opc4BDiffPlaces_d10g0v0_Shanghai + - opc4BDiffPlaces_d11g0v0_Shanghai + - opc4ADiffPlaces_d26g0v0_Shanghai + - opc4BDiffPlaces_d12g0v0_Shanghai + - opc4BDiffPlaces_d13g0v0_Shanghai + - opc4ADiffPlaces_d27g0v0_Shanghai + - opc4BDiffPlaces_d14g0v0_Shanghai + - opc4ADiffPlaces_d28g0v0_Shanghai + - opc4ADiffPlaces_d29g0v0_Shanghai + - opc4BDiffPlaces_d15g0v0_Shanghai + - opc4BDiffPlaces_d16g0v0_Shanghai + - opc4ADiffPlaces_d30g0v0_Shanghai + - opc4ADiffPlaces_d31g0v0_Shanghai + - opc4BDiffPlaces_d2g0v0_Shanghai + - opc4ADiffPlaces_d32g0v0_Shanghai + - opc4ADiffPlaces_d33g0v0_Shanghai + - opc4ADiffPlaces_d34g0v0_Shanghai + - opc4BDiffPlaces_d17g0v0_Shanghai + - opc4BDiffPlaces_d18g0v0_Shanghai + - opc4BDiffPlaces_d19g0v0_Shanghai + - opc4BDiffPlaces_d3g0v0_Shanghai + - opc4BDiffPlaces_d21g0v0_Shanghai + - opc4CDiffPlaces_d0g0v0_Shanghai + - opc4BDiffPlaces_d20g0v0_Shanghai + - opc4BDiffPlaces_d4g0v0_Shanghai + - opc4BDiffPlaces_d22g0v0_Shanghai + - opc4BDiffPlaces_d5g0v0_Shanghai + - opc4BDiffPlaces_d23g0v0_Shanghai + - opc4BDiffPlaces_d6g0v0_Shanghai + - opc4BDiffPlaces_d7g0v0_Shanghai + - opc4BDiffPlaces_d8g0v0_Shanghai + - opc4BDiffPlaces_d24g0v0_Shanghai + - opc4BDiffPlaces_d9g0v0_Shanghai + - opc4BDiffPlaces_d25g0v0_Shanghai + - opc4CDiffPlaces_d1g0v0_Shanghai + - opc4CDiffPlaces_d10g0v0_Shanghai + - opc4CDiffPlaces_d11g0v0_Shanghai + - opc4BDiffPlaces_d26g0v0_Shanghai + - opc4BDiffPlaces_d27g0v0_Shanghai + - opc4CDiffPlaces_d12g0v0_Shanghai + - opc4CDiffPlaces_d13g0v0_Shanghai + - opc4BDiffPlaces_d28g0v0_Shanghai + - opc4CDiffPlaces_d14g0v0_Shanghai + - opc4CDiffPlaces_d15g0v0_Shanghai + - opc4BDiffPlaces_d29g0v0_Shanghai + - opc4CDiffPlaces_d16g0v0_Shanghai + - opc4BDiffPlaces_d30g0v0_Shanghai + - opc4BDiffPlaces_d31g0v0_Shanghai + - opc4BDiffPlaces_d32g0v0_Shanghai + - opc4BDiffPlaces_d33g0v0_Shanghai + - opc4CDiffPlaces_d2g0v0_Shanghai + - opc4BDiffPlaces_d34g0v0_Shanghai + - opc4CDiffPlaces_d17g0v0_Shanghai + - opc4CDiffPlaces_d18g0v0_Shanghai + - opc4CDiffPlaces_d19g0v0_Shanghai + - opc4CDiffPlaces_d3g0v0_Shanghai + - opc4CDiffPlaces_d4g0v0_Shanghai + - opc4DDiffPlaces_d0g0v0_Shanghai + - opc4CDiffPlaces_d21g0v0_Shanghai + - opc4CDiffPlaces_d20g0v0_Shanghai + - opc4CDiffPlaces_d22g0v0_Shanghai + - opc4CDiffPlaces_d23g0v0_Shanghai + - opc4CDiffPlaces_d5g0v0_Shanghai + - opc4CDiffPlaces_d6g0v0_Shanghai + - opc4CDiffPlaces_d7g0v0_Shanghai + - opc4CDiffPlaces_d8g0v0_Shanghai + - opc4CDiffPlaces_d24g0v0_Shanghai + - opc4CDiffPlaces_d9g0v0_Shanghai + - opc4DDiffPlaces_d1g0v0_Shanghai + - opc4CDiffPlaces_d25g0v0_Shanghai + - opc4DDiffPlaces_d10g0v0_Shanghai + - opc4CDiffPlaces_d26g0v0_Shanghai + - opc4DDiffPlaces_d11g0v0_Shanghai + - opc4DDiffPlaces_d12g0v0_Shanghai + - opc4CDiffPlaces_d27g0v0_Shanghai + - opc4DDiffPlaces_d13g0v0_Shanghai + - opc4CDiffPlaces_d28g0v0_Shanghai + - opc4DDiffPlaces_d14g0v0_Shanghai + - opc4CDiffPlaces_d29g0v0_Shanghai + - opc4DDiffPlaces_d15g0v0_Shanghai + - opc4DDiffPlaces_d16g0v0_Shanghai + - opc4CDiffPlaces_d30g0v0_Shanghai + - opc4CDiffPlaces_d31g0v0_Shanghai + - opc4DDiffPlaces_d2g0v0_Shanghai + - opc4CDiffPlaces_d32g0v0_Shanghai + - opc4CDiffPlaces_d33g0v0_Shanghai + - opc4CDiffPlaces_d34g0v0_Shanghai + - opc4DDiffPlaces_d17g0v0_Shanghai + - opc4DDiffPlaces_d18g0v0_Shanghai + - opc4DDiffPlaces_d19g0v0_Shanghai + - opc4DDiffPlaces_d3g0v0_Shanghai + - opc4DDiffPlaces_d21g0v0_Shanghai + - opc4EDiffPlaces_d0g0v0_Shanghai + - opc4DDiffPlaces_d20g0v0_Shanghai + - opc4DDiffPlaces_d4g0v0_Shanghai + - opc4DDiffPlaces_d22g0v0_Shanghai + - opc4DDiffPlaces_d23g0v0_Shanghai + - opc4DDiffPlaces_d5g0v0_Shanghai + - opc4DDiffPlaces_d6g0v0_Shanghai + - opc4DDiffPlaces_d7g0v0_Shanghai + - opc4DDiffPlaces_d8g0v0_Shanghai + - opc4DDiffPlaces_d24g0v0_Shanghai + - opc4DDiffPlaces_d9g0v0_Shanghai + - opc4DDiffPlaces_d25g0v0_Shanghai + - opc4EDiffPlaces_d1g0v0_Shanghai + - opc4EDiffPlaces_d10g0v0_Shanghai + - opc4DDiffPlaces_d26g0v0_Shanghai + - opc4EDiffPlaces_d11g0v0_Shanghai + - opc4EDiffPlaces_d12g0v0_Shanghai + - opc4DDiffPlaces_d27g0v0_Shanghai + - opc4EDiffPlaces_d13g0v0_Shanghai + - opc4DDiffPlaces_d28g0v0_Shanghai + - opc4EDiffPlaces_d14g0v0_Shanghai + - opc4DDiffPlaces_d29g0v0_Shanghai + - opc4EDiffPlaces_d15g0v0_Shanghai + - opc4EDiffPlaces_d16g0v0_Shanghai + - opc4DDiffPlaces_d30g0v0_Shanghai + - opc4DDiffPlaces_d31g0v0_Shanghai + - opc4EDiffPlaces_d2g0v0_Shanghai + - opc4DDiffPlaces_d32g0v0_Shanghai + - opc4DDiffPlaces_d33g0v0_Shanghai + - opc4DDiffPlaces_d34g0v0_Shanghai + - opc4EDiffPlaces_d17g0v0_Shanghai + - opc4EDiffPlaces_d18g0v0_Shanghai + - opc4EDiffPlaces_d19g0v0_Shanghai + - opc4EDiffPlaces_d3g0v0_Shanghai + - opc4FDiffPlaces_d0g0v0_Shanghai + - opc4EDiffPlaces_d21g0v0_Shanghai + - opc4EDiffPlaces_d20g0v0_Shanghai + - opc4EDiffPlaces_d4g0v0_Shanghai + - opc4EDiffPlaces_d22g0v0_Shanghai + - opc4EDiffPlaces_d23g0v0_Shanghai + - opc4EDiffPlaces_d5g0v0_Shanghai + - opc4EDiffPlaces_d6g0v0_Shanghai + - opc4EDiffPlaces_d7g0v0_Shanghai + - opc4EDiffPlaces_d8g0v0_Shanghai + - opc4EDiffPlaces_d9g0v0_Shanghai + - opc4EDiffPlaces_d24g0v0_Shanghai + - opc4FDiffPlaces_d1g0v0_Shanghai + - opc4EDiffPlaces_d25g0v0_Shanghai + - opc4FDiffPlaces_d10g0v0_Shanghai + - opc4FDiffPlaces_d11g0v0_Shanghai + - opc4EDiffPlaces_d26g0v0_Shanghai + - opc4FDiffPlaces_d12g0v0_Shanghai + - opc4EDiffPlaces_d27g0v0_Shanghai + - opc4FDiffPlaces_d13g0v0_Shanghai + - opc4EDiffPlaces_d28g0v0_Shanghai + - opc4FDiffPlaces_d14g0v0_Shanghai + - opc4EDiffPlaces_d29g0v0_Shanghai + - opc4FDiffPlaces_d15g0v0_Shanghai + - opc4EDiffPlaces_d30g0v0_Shanghai + - opc4EDiffPlaces_d31g0v0_Shanghai + - opc4FDiffPlaces_d16g0v0_Shanghai + - opc4EDiffPlaces_d32g0v0_Shanghai + - opc4FDiffPlaces_d2g0v0_Shanghai + - opc4EDiffPlaces_d33g0v0_Shanghai + - opc4EDiffPlaces_d34g0v0_Shanghai + - opc4FDiffPlaces_d17g0v0_Shanghai + - opc4FDiffPlaces_d18g0v0_Shanghai + - opc4FDiffPlaces_d19g0v0_Shanghai + - opc4FDiffPlaces_d3g0v0_Shanghai + - opc4FDiffPlaces_d21g0v0_Shanghai + - opc5CDiffPlaces_d0g0v0_Shanghai + - opc4FDiffPlaces_d20g0v0_Shanghai + - opc4FDiffPlaces_d4g0v0_Shanghai + - opc4FDiffPlaces_d22g0v0_Shanghai + - opc4FDiffPlaces_d5g0v0_Shanghai + - opc4FDiffPlaces_d23g0v0_Shanghai + - opc4FDiffPlaces_d6g0v0_Shanghai + - opc4FDiffPlaces_d7g0v0_Shanghai + - opc4FDiffPlaces_d8g0v0_Shanghai + - opc4FDiffPlaces_d24g0v0_Shanghai + - opc4FDiffPlaces_d9g0v0_Shanghai + - opc5CDiffPlaces_d1g0v0_Shanghai + - opc4FDiffPlaces_d25g0v0_Shanghai + - opc5CDiffPlaces_d10g0v0_Shanghai + - opc5CDiffPlaces_d11g0v0_Shanghai + - opc4FDiffPlaces_d26g0v0_Shanghai + - opc5CDiffPlaces_d12g0v0_Shanghai + - opc4FDiffPlaces_d27g0v0_Shanghai + - opc5CDiffPlaces_d13g0v0_Shanghai + - opc4FDiffPlaces_d28g0v0_Shanghai + - opc5CDiffPlaces_d14g0v0_Shanghai + - opc5CDiffPlaces_d15g0v0_Shanghai + - opc4FDiffPlaces_d29g0v0_Shanghai + - opc4FDiffPlaces_d30g0v0_Shanghai + - opc5CDiffPlaces_d16g0v0_Shanghai + - opc4FDiffPlaces_d31g0v0_Shanghai + - opc5CDiffPlaces_d2g0v0_Shanghai + - opc4FDiffPlaces_d32g0v0_Shanghai + - opc4FDiffPlaces_d33g0v0_Shanghai + - opc4FDiffPlaces_d34g0v0_Shanghai + - opc5CDiffPlaces_d17g0v0_Shanghai + - opc5CDiffPlaces_d18g0v0_Shanghai + - opc5CDiffPlaces_d19g0v0_Shanghai + - opc5CDiffPlaces_d3g0v0_Shanghai + - opc5DDiffPlaces_d0g0v0_Shanghai + - opc5CDiffPlaces_d21g0v0_Shanghai + - opc5CDiffPlaces_d4g0v0_Shanghai + - opc5CDiffPlaces_d20g0v0_Shanghai + - opc5CDiffPlaces_d22g0v0_Shanghai + - opc5CDiffPlaces_d5g0v0_Shanghai + - opc5CDiffPlaces_d23g0v0_Shanghai + - opc5CDiffPlaces_d6g0v0_Shanghai + - opc5CDiffPlaces_d7g0v0_Shanghai + - opc5CDiffPlaces_d8g0v0_Shanghai + - opc5CDiffPlaces_d9g0v0_Shanghai + - opc5CDiffPlaces_d24g0v0_Shanghai + - opc5DDiffPlaces_d1g0v0_Shanghai + - opc5DDiffPlaces_d10g0v0_Shanghai + - opc5CDiffPlaces_d26g0v0_Shanghai + - opc5CDiffPlaces_d25g0v0_Shanghai + - opc5DDiffPlaces_d11g0v0_Shanghai + - opc5DDiffPlaces_d12g0v0_Shanghai + - opc5DDiffPlaces_d13g0v0_Shanghai + - opc5CDiffPlaces_d27g0v0_Shanghai + - opc5CDiffPlaces_d28g0v0_Shanghai + - opc5DDiffPlaces_d14g0v0_Shanghai + - opc5CDiffPlaces_d29g0v0_Shanghai + - opc5DDiffPlaces_d15g0v0_Shanghai + - opc5DDiffPlaces_d16g0v0_Shanghai + - opc5CDiffPlaces_d30g0v0_Shanghai + - opc5DDiffPlaces_d2g0v0_Shanghai + - opc5CDiffPlaces_d32g0v0_Shanghai + - opc5CDiffPlaces_d31g0v0_Shanghai + - opc5CDiffPlaces_d33g0v0_Shanghai + - opc5CDiffPlaces_d34g0v0_Shanghai + - opc5DDiffPlaces_d17g0v0_Shanghai + - opc5DDiffPlaces_d18g0v0_Shanghai + - opc5DDiffPlaces_d19g0v0_Shanghai + - opc5DDiffPlaces_d3g0v0_Shanghai + - opc5EDiffPlaces_d0g0v0_Shanghai + - opc5DDiffPlaces_d21g0v0_Shanghai + - opc5DDiffPlaces_d20g0v0_Shanghai + - opc5DDiffPlaces_d4g0v0_Shanghai + - opc5DDiffPlaces_d22g0v0_Shanghai + - opc5DDiffPlaces_d5g0v0_Shanghai + - opc5DDiffPlaces_d23g0v0_Shanghai + - opc5DDiffPlaces_d6g0v0_Shanghai + - opc5DDiffPlaces_d7g0v0_Shanghai + - opc5DDiffPlaces_d8g0v0_Shanghai + - opc5DDiffPlaces_d24g0v0_Shanghai + - opc5DDiffPlaces_d9g0v0_Shanghai + - opc5DDiffPlaces_d25g0v0_Shanghai + - opc5EDiffPlaces_d1g0v0_Shanghai + - opc5EDiffPlaces_d10g0v0_Shanghai + - opc5DDiffPlaces_d26g0v0_Shanghai + - opc5EDiffPlaces_d11g0v0_Shanghai + - opc5EDiffPlaces_d12g0v0_Shanghai + - opc5DDiffPlaces_d27g0v0_Shanghai + - opc5EDiffPlaces_d13g0v0_Shanghai + - opc5DDiffPlaces_d28g0v0_Shanghai + - opc5EDiffPlaces_d14g0v0_Shanghai + - opc5EDiffPlaces_d15g0v0_Shanghai + - opc5DDiffPlaces_d29g0v0_Shanghai + - opc5EDiffPlaces_d16g0v0_Shanghai + - opc5DDiffPlaces_d30g0v0_Shanghai + - opc5DDiffPlaces_d31g0v0_Shanghai + - opc5EDiffPlaces_d2g0v0_Shanghai + - opc5DDiffPlaces_d32g0v0_Shanghai + - opc5DDiffPlaces_d34g0v0_Shanghai + - opc5DDiffPlaces_d33g0v0_Shanghai + - opc5EDiffPlaces_d17g0v0_Shanghai + - opc5EDiffPlaces_d18g0v0_Shanghai + - opc5EDiffPlaces_d19g0v0_Shanghai + - opc5EDiffPlaces_d3g0v0_Shanghai + - opc5EDiffPlaces_d4g0v0_Shanghai + - opc5EDiffPlaces_d21g0v0_Shanghai + - opcA5DiffPlaces_d0g0v0_Shanghai + - opc5EDiffPlaces_d20g0v0_Shanghai + - opc5EDiffPlaces_d22g0v0_Shanghai + - opc5EDiffPlaces_d5g0v0_Shanghai + - opc5EDiffPlaces_d23g0v0_Shanghai + - opc5EDiffPlaces_d6g0v0_Shanghai + - opc5EDiffPlaces_d7g0v0_Shanghai + - opc5EDiffPlaces_d8g0v0_Shanghai + - opc5EDiffPlaces_d24g0v0_Shanghai + - opc5EDiffPlaces_d9g0v0_Shanghai + - opc5EDiffPlaces_d25g0v0_Shanghai + - opcA5DiffPlaces_d1g0v0_Shanghai + - opcA5DiffPlaces_d10g0v0_Shanghai + - opcA5DiffPlaces_d11g0v0_Shanghai + - opc5EDiffPlaces_d26g0v0_Shanghai + - opcA5DiffPlaces_d12g0v0_Shanghai + - opc5EDiffPlaces_d27g0v0_Shanghai + - opcA5DiffPlaces_d13g0v0_Shanghai + - opc5EDiffPlaces_d28g0v0_Shanghai + - opcA5DiffPlaces_d14g0v0_Shanghai + - opc5EDiffPlaces_d29g0v0_Shanghai + - opcA5DiffPlaces_d15g0v0_Shanghai + - opc5EDiffPlaces_d30g0v0_Shanghai + - opcA5DiffPlaces_d16g0v0_Shanghai + - opc5EDiffPlaces_d31g0v0_Shanghai + - opcA5DiffPlaces_d2g0v0_Shanghai + - opc5EDiffPlaces_d32g0v0_Shanghai + - opc5EDiffPlaces_d33g0v0_Shanghai + - opc5EDiffPlaces_d34g0v0_Shanghai + - opcA5DiffPlaces_d17g0v0_Shanghai + - opcA5DiffPlaces_d18g0v0_Shanghai + - opcA5DiffPlaces_d19g0v0_Shanghai + - opcA5DiffPlaces_d3g0v0_Shanghai + - opcA5DiffPlaces_d21g0v0_Shanghai + - opcA6DiffPlaces_d0g0v0_Shanghai + - opcA5DiffPlaces_d20g0v0_Shanghai + - opcA5DiffPlaces_d4g0v0_Shanghai + - opcA5DiffPlaces_d22g0v0_Shanghai + - opcA5DiffPlaces_d23g0v0_Shanghai + - opcA5DiffPlaces_d5g0v0_Shanghai + - opcA5DiffPlaces_d6g0v0_Shanghai + - opcA5DiffPlaces_d7g0v0_Shanghai + - opcA5DiffPlaces_d8g0v0_Shanghai + - opcA5DiffPlaces_d24g0v0_Shanghai + - opcA5DiffPlaces_d9g0v0_Shanghai + - opcA6DiffPlaces_d1g0v0_Shanghai + - opcA5DiffPlaces_d25g0v0_Shanghai + - opcA6DiffPlaces_d10g0v0_Shanghai + - opcA6DiffPlaces_d11g0v0_Shanghai + - opcA5DiffPlaces_d26g0v0_Shanghai + - opcA6DiffPlaces_d12g0v0_Shanghai + - opcA5DiffPlaces_d27g0v0_Shanghai + - opcA6DiffPlaces_d13g0v0_Shanghai + - opcA5DiffPlaces_d28g0v0_Shanghai + - opcA6DiffPlaces_d14g0v0_Shanghai + - opcA5DiffPlaces_d29g0v0_Shanghai + - opcA6DiffPlaces_d15g0v0_Shanghai + - opcA6DiffPlaces_d16g0v0_Shanghai + - opcA5DiffPlaces_d30g0v0_Shanghai + - opcA5DiffPlaces_d31g0v0_Shanghai + - opcA5DiffPlaces_d32g0v0_Shanghai + - opcA6DiffPlaces_d2g0v0_Shanghai + - opcA5DiffPlaces_d34g0v0_Shanghai + - opcA5DiffPlaces_d33g0v0_Shanghai + - opcA6DiffPlaces_d17g0v0_Shanghai + - opcA6DiffPlaces_d18g0v0_Shanghai + - opcA6DiffPlaces_d19g0v0_Shanghai + - opcA6DiffPlaces_d3g0v0_Shanghai + - opcA7DiffPlaces_d0g0v0_Shanghai + - opcA6DiffPlaces_d21g0v0_Shanghai + - opcA6DiffPlaces_d20g0v0_Shanghai + - opcA6DiffPlaces_d4g0v0_Shanghai + - opcA6DiffPlaces_d22g0v0_Shanghai + - opcA6DiffPlaces_d23g0v0_Shanghai + - opcA6DiffPlaces_d5g0v0_Shanghai + - opcA6DiffPlaces_d6g0v0_Shanghai + - opcA6DiffPlaces_d7g0v0_Shanghai + - opcA6DiffPlaces_d8g0v0_Shanghai + - opcA6DiffPlaces_d9g0v0_Shanghai + - opcA6DiffPlaces_d24g0v0_Shanghai + - opcA7DiffPlaces_d1g0v0_Shanghai + - opcA6DiffPlaces_d25g0v0_Shanghai + - opcA7DiffPlaces_d10g0v0_Shanghai + - opcA7DiffPlaces_d11g0v0_Shanghai + - opcA6DiffPlaces_d26g0v0_Shanghai + - opcA7DiffPlaces_d12g0v0_Shanghai + - opcA6DiffPlaces_d27g0v0_Shanghai + - opcA7DiffPlaces_d13g0v0_Shanghai + - opcA6DiffPlaces_d28g0v0_Shanghai + - opcA7DiffPlaces_d14g0v0_Shanghai + - opcA6DiffPlaces_d29g0v0_Shanghai + - opcA7DiffPlaces_d15g0v0_Shanghai + - opcA6DiffPlaces_d30g0v0_Shanghai + - opcA7DiffPlaces_d16g0v0_Shanghai + - opcA6DiffPlaces_d31g0v0_Shanghai + - opcA7DiffPlaces_d2g0v0_Shanghai + - opcA6DiffPlaces_d32g0v0_Shanghai + - opcA6DiffPlaces_d33g0v0_Shanghai + - opcA6DiffPlaces_d34g0v0_Shanghai + - opcA7DiffPlaces_d17g0v0_Shanghai + - opcA7DiffPlaces_d18g0v0_Shanghai + - opcA7DiffPlaces_d19g0v0_Shanghai + - opcA7DiffPlaces_d3g0v0_Shanghai + - opcA7DiffPlaces_d21g0v0_Shanghai + - opcA8DiffPlaces_d0g0v0_Shanghai + - opcA7DiffPlaces_d4g0v0_Shanghai + - opcA7DiffPlaces_d20g0v0_Shanghai + - opcA7DiffPlaces_d22g0v0_Shanghai + - opcA7DiffPlaces_d23g0v0_Shanghai + - opcA7DiffPlaces_d5g0v0_Shanghai + - opcA7DiffPlaces_d6g0v0_Shanghai + - opcA7DiffPlaces_d7g0v0_Shanghai + - opcA7DiffPlaces_d8g0v0_Shanghai + - opcA7DiffPlaces_d24g0v0_Shanghai + - opcA7DiffPlaces_d9g0v0_Shanghai + - opcA8DiffPlaces_d1g0v0_Shanghai + - opcA7DiffPlaces_d25g0v0_Shanghai + - opcA8DiffPlaces_d10g0v0_Shanghai + - opcA8DiffPlaces_d11g0v0_Shanghai + - opcA7DiffPlaces_d26g0v0_Shanghai + - opcA8DiffPlaces_d12g0v0_Shanghai + - opcA7DiffPlaces_d27g0v0_Shanghai + - opcA8DiffPlaces_d13g0v0_Shanghai + - opcA7DiffPlaces_d28g0v0_Shanghai + - opcA8DiffPlaces_d14g0v0_Shanghai + - opcA7DiffPlaces_d29g0v0_Shanghai + - opcA8DiffPlaces_d15g0v0_Shanghai + - opcA8DiffPlaces_d16g0v0_Shanghai + - opcA7DiffPlaces_d30g0v0_Shanghai + - opcA7DiffPlaces_d31g0v0_Shanghai + - opcA8DiffPlaces_d2g0v0_Shanghai + - opcA7DiffPlaces_d32g0v0_Shanghai + - opcA7DiffPlaces_d33g0v0_Shanghai + - opcA7DiffPlaces_d34g0v0_Shanghai + - opcA8DiffPlaces_d17g0v0_Shanghai + - opcA8DiffPlaces_d18g0v0_Shanghai + - opcA8DiffPlaces_d3g0v0_Shanghai + - opcA8DiffPlaces_d19g0v0_Shanghai + - opcA8DiffPlaces_d21g0v0_Shanghai + - opcA9DiffPlaces_d0g0v0_Shanghai + - opcA8DiffPlaces_d4g0v0_Shanghai + - opcA8DiffPlaces_d20g0v0_Shanghai + - opcA8DiffPlaces_d22g0v0_Shanghai + - opcA8DiffPlaces_d5g0v0_Shanghai + - opcA8DiffPlaces_d23g0v0_Shanghai + - opcA8DiffPlaces_d6g0v0_Shanghai + - opcA8DiffPlaces_d7g0v0_Shanghai + - opcA8DiffPlaces_d8g0v0_Shanghai + - opcA8DiffPlaces_d9g0v0_Shanghai + - opcA8DiffPlaces_d24g0v0_Shanghai + - opcA9DiffPlaces_d1g0v0_Shanghai + - opcA8DiffPlaces_d25g0v0_Shanghai + - opcA9DiffPlaces_d10g0v0_Shanghai + - opcA8DiffPlaces_d26g0v0_Shanghai + - opcA9DiffPlaces_d11g0v0_Shanghai + - opcA9DiffPlaces_d12g0v0_Shanghai + - opcA8DiffPlaces_d27g0v0_Shanghai + - opcA9DiffPlaces_d13g0v0_Shanghai + - opcA9DiffPlaces_d14g0v0_Shanghai + - opcA8DiffPlaces_d28g0v0_Shanghai + - opcA9DiffPlaces_d15g0v0_Shanghai + - opcA8DiffPlaces_d29g0v0_Shanghai + - opcA9DiffPlaces_d16g0v0_Shanghai + - opcA8DiffPlaces_d30g0v0_Shanghai + - opcA8DiffPlaces_d31g0v0_Shanghai + - opcA8DiffPlaces_d32g0v0_Shanghai + - opcA9DiffPlaces_d2g0v0_Shanghai + - opcA8DiffPlaces_d33g0v0_Shanghai + - opcA8DiffPlaces_d34g0v0_Shanghai + - opcA9DiffPlaces_d17g0v0_Shanghai + - opcA9DiffPlaces_d18g0v0_Shanghai + - opcA9DiffPlaces_d19g0v0_Shanghai + - opcA9DiffPlaces_d3g0v0_Shanghai + - opcA9DiffPlaces_d21g0v0_Shanghai + - opcA9DiffPlaces_d20g0v0_Shanghai + - opcAADiffPlaces_d0g0v0_Shanghai + - opcA9DiffPlaces_d4g0v0_Shanghai + - opcA9DiffPlaces_d22g0v0_Shanghai + - opcA9DiffPlaces_d23g0v0_Shanghai + - opcA9DiffPlaces_d5g0v0_Shanghai + - opcA9DiffPlaces_d6g0v0_Shanghai + - opcA9DiffPlaces_d7g0v0_Shanghai + - opcA9DiffPlaces_d8g0v0_Shanghai + - opcA9DiffPlaces_d9g0v0_Shanghai + - opcA9DiffPlaces_d24g0v0_Shanghai + - opcAADiffPlaces_d1g0v0_Shanghai + - opcA9DiffPlaces_d25g0v0_Shanghai + - opcAADiffPlaces_d10g0v0_Shanghai + - opcA9DiffPlaces_d26g0v0_Shanghai + - opcAADiffPlaces_d11g0v0_Shanghai + - opcAADiffPlaces_d12g0v0_Shanghai + - opcA9DiffPlaces_d27g0v0_Shanghai + - opcAADiffPlaces_d13g0v0_Shanghai + - opcA9DiffPlaces_d28g0v0_Shanghai + - opcAADiffPlaces_d14g0v0_Shanghai + - opcA9DiffPlaces_d29g0v0_Shanghai + - opcAADiffPlaces_d15g0v0_Shanghai + - opcAADiffPlaces_d16g0v0_Shanghai + - opcA9DiffPlaces_d30g0v0_Shanghai + - opcA9DiffPlaces_d32g0v0_Shanghai + - opcAADiffPlaces_d2g0v0_Shanghai + - opcA9DiffPlaces_d31g0v0_Shanghai + - opcA9DiffPlaces_d33g0v0_Shanghai + - opcA9DiffPlaces_d34g0v0_Shanghai + - opcAADiffPlaces_d17g0v0_Shanghai + - opcAADiffPlaces_d18g0v0_Shanghai + - opcAADiffPlaces_d19g0v0_Shanghai + - opcAADiffPlaces_d3g0v0_Shanghai + - opcAADiffPlaces_d21g0v0_Shanghai + - opcABDiffPlaces_d0g0v0_Shanghai + - opcAADiffPlaces_d4g0v0_Shanghai + - opcAADiffPlaces_d22g0v0_Shanghai + - opcAADiffPlaces_d20g0v0_Shanghai + - opcAADiffPlaces_d5g0v0_Shanghai + - opcAADiffPlaces_d23g0v0_Shanghai + - opcAADiffPlaces_d6g0v0_Shanghai + - opcAADiffPlaces_d7g0v0_Shanghai + - opcAADiffPlaces_d8g0v0_Shanghai + - opcAADiffPlaces_d9g0v0_Shanghai + - opcAADiffPlaces_d24g0v0_Shanghai + - opcABDiffPlaces_d1g0v0_Shanghai + - opcAADiffPlaces_d25g0v0_Shanghai + - opcABDiffPlaces_d10g0v0_Shanghai + - opcAADiffPlaces_d26g0v0_Shanghai + - opcABDiffPlaces_d11g0v0_Shanghai + - opcABDiffPlaces_d12g0v0_Shanghai + - opcAADiffPlaces_d27g0v0_Shanghai + - opcABDiffPlaces_d13g0v0_Shanghai + - opcAADiffPlaces_d28g0v0_Shanghai + - opcABDiffPlaces_d14g0v0_Shanghai + - opcAADiffPlaces_d29g0v0_Shanghai + - opcABDiffPlaces_d15g0v0_Shanghai + - opcAADiffPlaces_d30g0v0_Shanghai + - opcAADiffPlaces_d31g0v0_Shanghai + - opcABDiffPlaces_d16g0v0_Shanghai + - opcABDiffPlaces_d2g0v0_Shanghai + - opcAADiffPlaces_d32g0v0_Shanghai + - opcAADiffPlaces_d33g0v0_Shanghai + - opcAADiffPlaces_d34g0v0_Shanghai + - opcABDiffPlaces_d17g0v0_Shanghai + - opcABDiffPlaces_d18g0v0_Shanghai + - opcABDiffPlaces_d19g0v0_Shanghai + - opcABDiffPlaces_d3g0v0_Shanghai + - opcABDiffPlaces_d21g0v0_Shanghai + - opcACDiffPlaces_d0g0v0_Shanghai + - opcABDiffPlaces_d4g0v0_Shanghai + - opcABDiffPlaces_d20g0v0_Shanghai + - opcABDiffPlaces_d22g0v0_Shanghai + - opcABDiffPlaces_d23g0v0_Shanghai + - opcABDiffPlaces_d5g0v0_Shanghai + - opcABDiffPlaces_d6g0v0_Shanghai + - opcABDiffPlaces_d7g0v0_Shanghai + - opcABDiffPlaces_d8g0v0_Shanghai + - opcABDiffPlaces_d9g0v0_Shanghai + - opcABDiffPlaces_d24g0v0_Shanghai + - opcACDiffPlaces_d1g0v0_Shanghai + - opcABDiffPlaces_d25g0v0_Shanghai + - opcACDiffPlaces_d10g0v0_Shanghai + - opcACDiffPlaces_d11g0v0_Shanghai + - opcABDiffPlaces_d26g0v0_Shanghai + - opcACDiffPlaces_d12g0v0_Shanghai + - opcABDiffPlaces_d27g0v0_Shanghai + - opcACDiffPlaces_d13g0v0_Shanghai + - opcABDiffPlaces_d28g0v0_Shanghai + - opcACDiffPlaces_d14g0v0_Shanghai + - opcABDiffPlaces_d29g0v0_Shanghai + - opcACDiffPlaces_d15g0v0_Shanghai + - opcACDiffPlaces_d16g0v0_Shanghai + - opcABDiffPlaces_d30g0v0_Shanghai + - opcABDiffPlaces_d31g0v0_Shanghai + - opcACDiffPlaces_d2g0v0_Shanghai + - opcABDiffPlaces_d32g0v0_Shanghai + - opcABDiffPlaces_d33g0v0_Shanghai + - opcABDiffPlaces_d34g0v0_Shanghai + - opcACDiffPlaces_d17g0v0_Shanghai + - opcACDiffPlaces_d18g0v0_Shanghai + - opcACDiffPlaces_d19g0v0_Shanghai + - opcACDiffPlaces_d3g0v0_Shanghai + - opcADDiffPlaces_d0g0v0_Shanghai + - opcACDiffPlaces_d21g0v0_Shanghai + - opcACDiffPlaces_d4g0v0_Shanghai + - opcACDiffPlaces_d20g0v0_Shanghai + - opcACDiffPlaces_d22g0v0_Shanghai + - opcACDiffPlaces_d5g0v0_Shanghai + - opcACDiffPlaces_d23g0v0_Shanghai + - opcACDiffPlaces_d6g0v0_Shanghai + - opcACDiffPlaces_d7g0v0_Shanghai + - opcACDiffPlaces_d8g0v0_Shanghai + - opcACDiffPlaces_d24g0v0_Shanghai + - opcACDiffPlaces_d9g0v0_Shanghai + - opcADDiffPlaces_d1g0v0_Shanghai + - opcACDiffPlaces_d25g0v0_Shanghai + - opcADDiffPlaces_d10g0v0_Shanghai + - opcACDiffPlaces_d26g0v0_Shanghai + - opcADDiffPlaces_d11g0v0_Shanghai + - opcADDiffPlaces_d12g0v0_Shanghai + - opcACDiffPlaces_d27g0v0_Shanghai + - opcADDiffPlaces_d13g0v0_Shanghai + - opcACDiffPlaces_d28g0v0_Shanghai + - opcADDiffPlaces_d14g0v0_Shanghai + - opcACDiffPlaces_d29g0v0_Shanghai + - opcADDiffPlaces_d15g0v0_Shanghai + - opcADDiffPlaces_d16g0v0_Shanghai + - opcACDiffPlaces_d30g0v0_Shanghai + - opcACDiffPlaces_d31g0v0_Shanghai + - opcACDiffPlaces_d32g0v0_Shanghai + - opcADDiffPlaces_d2g0v0_Shanghai + - opcACDiffPlaces_d33g0v0_Shanghai + - opcACDiffPlaces_d34g0v0_Shanghai + - opcADDiffPlaces_d17g0v0_Shanghai + - opcADDiffPlaces_d18g0v0_Shanghai + - opcADDiffPlaces_d19g0v0_Shanghai + - opcADDiffPlaces_d3g0v0_Shanghai + - opcAEDiffPlaces_d0g0v0_Shanghai + - opcADDiffPlaces_d21g0v0_Shanghai + - opcADDiffPlaces_d4g0v0_Shanghai + - opcADDiffPlaces_d20g0v0_Shanghai + - opcADDiffPlaces_d22g0v0_Shanghai + - opcADDiffPlaces_d5g0v0_Shanghai + - opcADDiffPlaces_d23g0v0_Shanghai + - opcADDiffPlaces_d6g0v0_Shanghai + - opcADDiffPlaces_d7g0v0_Shanghai + - opcADDiffPlaces_d8g0v0_Shanghai + - opcADDiffPlaces_d24g0v0_Shanghai + - opcADDiffPlaces_d9g0v0_Shanghai + - opcADDiffPlaces_d25g0v0_Shanghai + - opcAEDiffPlaces_d1g0v0_Shanghai + - opcAEDiffPlaces_d10g0v0_Shanghai + - opcADDiffPlaces_d26g0v0_Shanghai + - opcAEDiffPlaces_d11g0v0_Shanghai + - opcAEDiffPlaces_d12g0v0_Shanghai + - opcADDiffPlaces_d27g0v0_Shanghai + - opcAEDiffPlaces_d13g0v0_Shanghai + - opcADDiffPlaces_d28g0v0_Shanghai + - opcAEDiffPlaces_d14g0v0_Shanghai + - opcADDiffPlaces_d29g0v0_Shanghai + - opcAEDiffPlaces_d15g0v0_Shanghai + - opcAEDiffPlaces_d16g0v0_Shanghai + - opcADDiffPlaces_d30g0v0_Shanghai + - opcAEDiffPlaces_d2g0v0_Shanghai + - opcADDiffPlaces_d32g0v0_Shanghai + - opcADDiffPlaces_d31g0v0_Shanghai + - opcADDiffPlaces_d33g0v0_Shanghai + - opcADDiffPlaces_d34g0v0_Shanghai + - opcAEDiffPlaces_d17g0v0_Shanghai + - opcAEDiffPlaces_d18g0v0_Shanghai + - opcAEDiffPlaces_d19g0v0_Shanghai + - opcAEDiffPlaces_d3g0v0_Shanghai + - opcAEDiffPlaces_d21g0v0_Shanghai + - opcAFDiffPlaces_d0g0v0_Shanghai + - opcAEDiffPlaces_d4g0v0_Shanghai + - opcAEDiffPlaces_d20g0v0_Shanghai + - opcAEDiffPlaces_d22g0v0_Shanghai + - opcAEDiffPlaces_d5g0v0_Shanghai + - opcAEDiffPlaces_d23g0v0_Shanghai + - opcAEDiffPlaces_d6g0v0_Shanghai + - opcAEDiffPlaces_d7g0v0_Shanghai + - opcAEDiffPlaces_d8g0v0_Shanghai + - opcAEDiffPlaces_d24g0v0_Shanghai + - opcAEDiffPlaces_d9g0v0_Shanghai + - opcAEDiffPlaces_d25g0v0_Shanghai + - opcAFDiffPlaces_d1g0v0_Shanghai + - opcAFDiffPlaces_d10g0v0_Shanghai + - opcAEDiffPlaces_d26g0v0_Shanghai + - opcAFDiffPlaces_d11g0v0_Shanghai + - opcAFDiffPlaces_d12g0v0_Shanghai + - opcAFDiffPlaces_d13g0v0_Shanghai + - opcAEDiffPlaces_d27g0v0_Shanghai + - opcAEDiffPlaces_d28g0v0_Shanghai + - opcAFDiffPlaces_d14g0v0_Shanghai + - opcAEDiffPlaces_d29g0v0_Shanghai + - opcAFDiffPlaces_d15g0v0_Shanghai + - opcAEDiffPlaces_d30g0v0_Shanghai + - opcAFDiffPlaces_d16g0v0_Shanghai + - opcAEDiffPlaces_d31g0v0_Shanghai + - opcAFDiffPlaces_d2g0v0_Shanghai + - opcAEDiffPlaces_d32g0v0_Shanghai + - opcAEDiffPlaces_d33g0v0_Shanghai + - opcAEDiffPlaces_d34g0v0_Shanghai + - opcAFDiffPlaces_d17g0v0_Shanghai + - opcAFDiffPlaces_d18g0v0_Shanghai + - opcAFDiffPlaces_d19g0v0_Shanghai + - opcAFDiffPlaces_d3g0v0_Shanghai + - opcAFDiffPlaces_d21g0v0_Shanghai + - opcB0DiffPlaces_d0g0v0_Shanghai + - opcAFDiffPlaces_d4g0v0_Shanghai + - opcAFDiffPlaces_d20g0v0_Shanghai + - opcAFDiffPlaces_d22g0v0_Shanghai + - opcAFDiffPlaces_d23g0v0_Shanghai + - opcAFDiffPlaces_d5g0v0_Shanghai + - opcAFDiffPlaces_d6g0v0_Shanghai + - opcAFDiffPlaces_d7g0v0_Shanghai + - opcAFDiffPlaces_d8g0v0_Shanghai + - opcAFDiffPlaces_d9g0v0_Shanghai + - opcAFDiffPlaces_d24g0v0_Shanghai + - opcAFDiffPlaces_d25g0v0_Shanghai + - opcB0DiffPlaces_d1g0v0_Shanghai + - opcB0DiffPlaces_d10g0v0_Shanghai + - opcB0DiffPlaces_d11g0v0_Shanghai + - opcAFDiffPlaces_d26g0v0_Shanghai + - opcB0DiffPlaces_d12g0v0_Shanghai + - opcB0DiffPlaces_d13g0v0_Shanghai + - opcAFDiffPlaces_d27g0v0_Shanghai + - opcAFDiffPlaces_d28g0v0_Shanghai + - opcB0DiffPlaces_d14g0v0_Shanghai + - opcAFDiffPlaces_d29g0v0_Shanghai + - opcB0DiffPlaces_d15g0v0_Shanghai + - opcAFDiffPlaces_d30g0v0_Shanghai + - opcB0DiffPlaces_d16g0v0_Shanghai + - opcAFDiffPlaces_d31g0v0_Shanghai + - opcB0DiffPlaces_d2g0v0_Shanghai + - opcAFDiffPlaces_d32g0v0_Shanghai + - opcAFDiffPlaces_d33g0v0_Shanghai + - opcAFDiffPlaces_d34g0v0_Shanghai + - opcB0DiffPlaces_d17g0v0_Shanghai + - opcB0DiffPlaces_d18g0v0_Shanghai + - opcB0DiffPlaces_d3g0v0_Shanghai + - opcB0DiffPlaces_d19g0v0_Shanghai + - opcB1DiffPlaces_d0g0v0_Shanghai + - opcB0DiffPlaces_d21g0v0_Shanghai + - opcB0DiffPlaces_d20g0v0_Shanghai + - opcB0DiffPlaces_d4g0v0_Shanghai + - opcB0DiffPlaces_d22g0v0_Shanghai + - opcB0DiffPlaces_d5g0v0_Shanghai + - opcB0DiffPlaces_d23g0v0_Shanghai + - opcB0DiffPlaces_d6g0v0_Shanghai + - opcB0DiffPlaces_d7g0v0_Shanghai + - opcB0DiffPlaces_d8g0v0_Shanghai + - opcB0DiffPlaces_d24g0v0_Shanghai + - opcB0DiffPlaces_d9g0v0_Shanghai + - opcB0DiffPlaces_d25g0v0_Shanghai + - opcB1DiffPlaces_d1g0v0_Shanghai + - opcB1DiffPlaces_d10g0v0_Shanghai + - opcB1DiffPlaces_d11g0v0_Shanghai + - opcB0DiffPlaces_d26g0v0_Shanghai + - opcB1DiffPlaces_d12g0v0_Shanghai + - opcB0DiffPlaces_d27g0v0_Shanghai + - opcB1DiffPlaces_d13g0v0_Shanghai + - opcB0DiffPlaces_d28g0v0_Shanghai + - opcB1DiffPlaces_d14g0v0_Shanghai + - opcB0DiffPlaces_d29g0v0_Shanghai + - opcB1DiffPlaces_d15g0v0_Shanghai + - opcB1DiffPlaces_d16g0v0_Shanghai + - opcB0DiffPlaces_d30g0v0_Shanghai + - opcB0DiffPlaces_d31g0v0_Shanghai + - opcB0DiffPlaces_d32g0v0_Shanghai + - opcB1DiffPlaces_d2g0v0_Shanghai + - opcB0DiffPlaces_d33g0v0_Shanghai + - opcB0DiffPlaces_d34g0v0_Shanghai + - opcB1DiffPlaces_d17g0v0_Shanghai + - opcB1DiffPlaces_d18g0v0_Shanghai + - opcB1DiffPlaces_d19g0v0_Shanghai + - opcB1DiffPlaces_d3g0v0_Shanghai + - opcB1DiffPlaces_d21g0v0_Shanghai + - opcB1DiffPlaces_d4g0v0_Shanghai + - opcB2DiffPlaces_d0g0v0_Shanghai + - opcB1DiffPlaces_d22g0v0_Shanghai + - opcB1DiffPlaces_d20g0v0_Shanghai + - opcB1DiffPlaces_d5g0v0_Shanghai + - opcB1DiffPlaces_d23g0v0_Shanghai + - opcB1DiffPlaces_d6g0v0_Shanghai + - opcB1DiffPlaces_d7g0v0_Shanghai + - opcB1DiffPlaces_d8g0v0_Shanghai + - opcB1DiffPlaces_d24g0v0_Shanghai + - opcB1DiffPlaces_d9g0v0_Shanghai + - opcB1DiffPlaces_d25g0v0_Shanghai + - opcB2DiffPlaces_d1g0v0_Shanghai + - opcB2DiffPlaces_d10g0v0_Shanghai + - opcB2DiffPlaces_d11g0v0_Shanghai + - opcB1DiffPlaces_d26g0v0_Shanghai + - opcB2DiffPlaces_d12g0v0_Shanghai + - opcB1DiffPlaces_d27g0v0_Shanghai + - opcB2DiffPlaces_d13g0v0_Shanghai + - opcB1DiffPlaces_d28g0v0_Shanghai + - opcB2DiffPlaces_d14g0v0_Shanghai + - opcB1DiffPlaces_d29g0v0_Shanghai + - opcB2DiffPlaces_d15g0v0_Shanghai + - opcB1DiffPlaces_d30g0v0_Shanghai + - opcB2DiffPlaces_d16g0v0_Shanghai + - opcB1DiffPlaces_d31g0v0_Shanghai + - opcB1DiffPlaces_d32g0v0_Shanghai + - opcB2DiffPlaces_d2g0v0_Shanghai + - opcB1DiffPlaces_d33g0v0_Shanghai + - opcB1DiffPlaces_d34g0v0_Shanghai + - opcB2DiffPlaces_d17g0v0_Shanghai + - opcB2DiffPlaces_d18g0v0_Shanghai + - opcB2DiffPlaces_d19g0v0_Shanghai + - opcB2DiffPlaces_d3g0v0_Shanghai + - opcB2DiffPlaces_d21g0v0_Shanghai + - opcB3DiffPlaces_d0g0v0_Shanghai + - opcB2DiffPlaces_d20g0v0_Shanghai + - opcB2DiffPlaces_d4g0v0_Shanghai + - opcB2DiffPlaces_d22g0v0_Shanghai + - opcB2DiffPlaces_d23g0v0_Shanghai + - opcB2DiffPlaces_d5g0v0_Shanghai + - opcB2DiffPlaces_d6g0v0_Shanghai + - opcB2DiffPlaces_d7g0v0_Shanghai + - opcB2DiffPlaces_d8g0v0_Shanghai + - opcB2DiffPlaces_d24g0v0_Shanghai + - opcB2DiffPlaces_d9g0v0_Shanghai + - opcB3DiffPlaces_d1g0v0_Shanghai + - opcB2DiffPlaces_d25g0v0_Shanghai + - opcB3DiffPlaces_d10g0v0_Shanghai + - opcB2DiffPlaces_d26g0v0_Shanghai + - opcB3DiffPlaces_d11g0v0_Shanghai + - opcB3DiffPlaces_d12g0v0_Shanghai + - opcB2DiffPlaces_d27g0v0_Shanghai + - opcB3DiffPlaces_d13g0v0_Shanghai + - opcB2DiffPlaces_d28g0v0_Shanghai + - opcB3DiffPlaces_d14g0v0_Shanghai + - opcB3DiffPlaces_d15g0v0_Shanghai + - opcB2DiffPlaces_d29g0v0_Shanghai + - opcB2DiffPlaces_d30g0v0_Shanghai + - opcB2DiffPlaces_d31g0v0_Shanghai + - opcB3DiffPlaces_d16g0v0_Shanghai + - opcB2DiffPlaces_d32g0v0_Shanghai + - opcB3DiffPlaces_d2g0v0_Shanghai + - opcB2DiffPlaces_d33g0v0_Shanghai + - opcB2DiffPlaces_d34g0v0_Shanghai + - opcB3DiffPlaces_d17g0v0_Shanghai + - opcB3DiffPlaces_d18g0v0_Shanghai + - opcB3DiffPlaces_d19g0v0_Shanghai + - opcB3DiffPlaces_d3g0v0_Shanghai + - opcB3DiffPlaces_d21g0v0_Shanghai + - opcB4DiffPlaces_d0g0v0_Shanghai + - opcB3DiffPlaces_d4g0v0_Shanghai + - opcB3DiffPlaces_d20g0v0_Shanghai + - opcB3DiffPlaces_d22g0v0_Shanghai + - opcB3DiffPlaces_d5g0v0_Shanghai + - opcB3DiffPlaces_d23g0v0_Shanghai + - opcB3DiffPlaces_d6g0v0_Shanghai + - opcB3DiffPlaces_d7g0v0_Shanghai + - opcB3DiffPlaces_d8g0v0_Shanghai + - opcB3DiffPlaces_d9g0v0_Shanghai + - opcB3DiffPlaces_d24g0v0_Shanghai + - opcB4DiffPlaces_d1g0v0_Shanghai + - opcB3DiffPlaces_d25g0v0_Shanghai + - opcB4DiffPlaces_d10g0v0_Shanghai + - opcB4DiffPlaces_d11g0v0_Shanghai + - opcB3DiffPlaces_d26g0v0_Shanghai + - opcB4DiffPlaces_d12g0v0_Shanghai + - opcB3DiffPlaces_d27g0v0_Shanghai + - opcB4DiffPlaces_d13g0v0_Shanghai + - opcB4DiffPlaces_d14g0v0_Shanghai + - opcB3DiffPlaces_d28g0v0_Shanghai + - opcB4DiffPlaces_d15g0v0_Shanghai + - opcB3DiffPlaces_d29g0v0_Shanghai + - opcB3DiffPlaces_d30g0v0_Shanghai + - opcB4DiffPlaces_d16g0v0_Shanghai + - opcB3DiffPlaces_d31g0v0_Shanghai + - opcB4DiffPlaces_d2g0v0_Shanghai + - opcB3DiffPlaces_d32g0v0_Shanghai + - opcB3DiffPlaces_d33g0v0_Shanghai + - opcB3DiffPlaces_d34g0v0_Shanghai + - opcB4DiffPlaces_d17g0v0_Shanghai + - opcB4DiffPlaces_d18g0v0_Shanghai + - opcB4DiffPlaces_d19g0v0_Shanghai + - opcB4DiffPlaces_d3g0v0_Shanghai + - opcB5DiffPlaces_d0g0v0_Shanghai + - opcB4DiffPlaces_d21g0v0_Shanghai + - opcB4DiffPlaces_d20g0v0_Shanghai + - opcB4DiffPlaces_d4g0v0_Shanghai + - opcB4DiffPlaces_d22g0v0_Shanghai + - opcB4DiffPlaces_d5g0v0_Shanghai + - opcB4DiffPlaces_d23g0v0_Shanghai + - opcB4DiffPlaces_d6g0v0_Shanghai + - opcB4DiffPlaces_d7g0v0_Shanghai + - opcB4DiffPlaces_d8g0v0_Shanghai + - opcB4DiffPlaces_d24g0v0_Shanghai + - opcB4DiffPlaces_d9g0v0_Shanghai + - opcB4DiffPlaces_d25g0v0_Shanghai + - opcB5DiffPlaces_d1g0v0_Shanghai + - opcB5DiffPlaces_d10g0v0_Shanghai + - opcB5DiffPlaces_d11g0v0_Shanghai + - opcB4DiffPlaces_d26g0v0_Shanghai + - opcB5DiffPlaces_d12g0v0_Shanghai + - opcB4DiffPlaces_d27g0v0_Shanghai + - opcB5DiffPlaces_d13g0v0_Shanghai + - opcB4DiffPlaces_d28g0v0_Shanghai + - opcB5DiffPlaces_d14g0v0_Shanghai + - opcB4DiffPlaces_d29g0v0_Shanghai + - opcB5DiffPlaces_d15g0v0_Shanghai + - opcB4DiffPlaces_d30g0v0_Shanghai + - opcB5DiffPlaces_d16g0v0_Shanghai + - opcB4DiffPlaces_d31g0v0_Shanghai + - opcB4DiffPlaces_d32g0v0_Shanghai + - opcB5DiffPlaces_d2g0v0_Shanghai + - opcB4DiffPlaces_d33g0v0_Shanghai + - opcB4DiffPlaces_d34g0v0_Shanghai + - opcB5DiffPlaces_d17g0v0_Shanghai + - opcB5DiffPlaces_d18g0v0_Shanghai + - opcB5DiffPlaces_d19g0v0_Shanghai + - opcB5DiffPlaces_d3g0v0_Shanghai + - opcB6DiffPlaces_d0g0v0_Shanghai + - opcB5DiffPlaces_d21g0v0_Shanghai + - opcB5DiffPlaces_d4g0v0_Shanghai + - opcB5DiffPlaces_d20g0v0_Shanghai + - opcB5DiffPlaces_d22g0v0_Shanghai + - opcB5DiffPlaces_d5g0v0_Shanghai + - opcB5DiffPlaces_d23g0v0_Shanghai + - opcB5DiffPlaces_d6g0v0_Shanghai + - opcB5DiffPlaces_d7g0v0_Shanghai + - opcB5DiffPlaces_d8g0v0_Shanghai + - opcB5DiffPlaces_d24g0v0_Shanghai + - opcB5DiffPlaces_d9g0v0_Shanghai + - opcB5DiffPlaces_d25g0v0_Shanghai + - opcB6DiffPlaces_d1g0v0_Shanghai + - opcB6DiffPlaces_d10g0v0_Shanghai + - opcB6DiffPlaces_d11g0v0_Shanghai + - opcB5DiffPlaces_d26g0v0_Shanghai + - opcB6DiffPlaces_d12g0v0_Shanghai + - opcB5DiffPlaces_d27g0v0_Shanghai + - opcB6DiffPlaces_d13g0v0_Shanghai + - opcB5DiffPlaces_d28g0v0_Shanghai + - opcB6DiffPlaces_d14g0v0_Shanghai + - opcB5DiffPlaces_d29g0v0_Shanghai + - opcB6DiffPlaces_d15g0v0_Shanghai + - opcB5DiffPlaces_d30g0v0_Shanghai + - opcB5DiffPlaces_d31g0v0_Shanghai + - opcB6DiffPlaces_d16g0v0_Shanghai + - opcB6DiffPlaces_d2g0v0_Shanghai + - opcB5DiffPlaces_d32g0v0_Shanghai + - opcB5DiffPlaces_d33g0v0_Shanghai + - opcB5DiffPlaces_d34g0v0_Shanghai + - opcB6DiffPlaces_d17g0v0_Shanghai + - opcB6DiffPlaces_d18g0v0_Shanghai + - opcB6DiffPlaces_d19g0v0_Shanghai + - opcB6DiffPlaces_d3g0v0_Shanghai + - opcB6DiffPlaces_d21g0v0_Shanghai + - opcB7DiffPlaces_d0g0v0_Shanghai + - opcB6DiffPlaces_d4g0v0_Shanghai + - opcB6DiffPlaces_d22g0v0_Shanghai + - opcB6DiffPlaces_d20g0v0_Shanghai + - opcB6DiffPlaces_d5g0v0_Shanghai + - opcB6DiffPlaces_d23g0v0_Shanghai + - opcB6DiffPlaces_d6g0v0_Shanghai + - opcB6DiffPlaces_d7g0v0_Shanghai + - opcB6DiffPlaces_d8g0v0_Shanghai + - opcB6DiffPlaces_d9g0v0_Shanghai + - opcB6DiffPlaces_d24g0v0_Shanghai + - opcB6DiffPlaces_d25g0v0_Shanghai + - opcB7DiffPlaces_d1g0v0_Shanghai + - opcB7DiffPlaces_d10g0v0_Shanghai + - opcB6DiffPlaces_d26g0v0_Shanghai + - opcB7DiffPlaces_d11g0v0_Shanghai + - opcB7DiffPlaces_d12g0v0_Shanghai + - opcB6DiffPlaces_d27g0v0_Shanghai + - opcB7DiffPlaces_d13g0v0_Shanghai + - opcB6DiffPlaces_d28g0v0_Shanghai + - opcB7DiffPlaces_d14g0v0_Shanghai + - opcB6DiffPlaces_d29g0v0_Shanghai + - opcB7DiffPlaces_d15g0v0_Shanghai + - opcB6DiffPlaces_d30g0v0_Shanghai + - opcB7DiffPlaces_d16g0v0_Shanghai + - opcB6DiffPlaces_d31g0v0_Shanghai + - opcB7DiffPlaces_d2g0v0_Shanghai + - opcB6DiffPlaces_d32g0v0_Shanghai + - opcB6DiffPlaces_d33g0v0_Shanghai + - opcB6DiffPlaces_d34g0v0_Shanghai + - opcB7DiffPlaces_d17g0v0_Shanghai + - opcB7DiffPlaces_d18g0v0_Shanghai + - opcB7DiffPlaces_d19g0v0_Shanghai + - opcB7DiffPlaces_d3g0v0_Shanghai + - opcB7DiffPlaces_d21g0v0_Shanghai + - opcB7DiffPlaces_d4g0v0_Shanghai + - opcB8DiffPlaces_d0g0v0_Shanghai + - opcB7DiffPlaces_d20g0v0_Shanghai + - opcB7DiffPlaces_d22g0v0_Shanghai + - opcB7DiffPlaces_d5g0v0_Shanghai + - opcB7DiffPlaces_d23g0v0_Shanghai + - opcB7DiffPlaces_d6g0v0_Shanghai + - opcB7DiffPlaces_d7g0v0_Shanghai + - opcB7DiffPlaces_d8g0v0_Shanghai + - opcB7DiffPlaces_d24g0v0_Shanghai + - opcB7DiffPlaces_d9g0v0_Shanghai + - opcB7DiffPlaces_d25g0v0_Shanghai + - opcB8DiffPlaces_d1g0v0_Shanghai + - opcB8DiffPlaces_d10g0v0_Shanghai + - opcB7DiffPlaces_d26g0v0_Shanghai + - opcB8DiffPlaces_d11g0v0_Shanghai + - opcB8DiffPlaces_d12g0v0_Shanghai + - opcB7DiffPlaces_d27g0v0_Shanghai + - opcB8DiffPlaces_d13g0v0_Shanghai + - opcB7DiffPlaces_d28g0v0_Shanghai + - opcB8DiffPlaces_d14g0v0_Shanghai + - opcB7DiffPlaces_d29g0v0_Shanghai + - opcB8DiffPlaces_d15g0v0_Shanghai + - opcB8DiffPlaces_d16g0v0_Shanghai + - opcB7DiffPlaces_d30g0v0_Shanghai + - opcB7DiffPlaces_d31g0v0_Shanghai + - opcB8DiffPlaces_d2g0v0_Shanghai + - opcB7DiffPlaces_d32g0v0_Shanghai + - opcB7DiffPlaces_d33g0v0_Shanghai + - opcB7DiffPlaces_d34g0v0_Shanghai + - opcB8DiffPlaces_d17g0v0_Shanghai + - opcB8DiffPlaces_d18g0v0_Shanghai + - opcB8DiffPlaces_d19g0v0_Shanghai + - opcB8DiffPlaces_d3g0v0_Shanghai + - opcB8DiffPlaces_d21g0v0_Shanghai + - opcB9DiffPlaces_d0g0v0_Shanghai + - opcB8DiffPlaces_d4g0v0_Shanghai + - opcB8DiffPlaces_d20g0v0_Shanghai + - opcB8DiffPlaces_d22g0v0_Shanghai + - opcB8DiffPlaces_d23g0v0_Shanghai + - opcB8DiffPlaces_d5g0v0_Shanghai + - opcB8DiffPlaces_d6g0v0_Shanghai + - opcB8DiffPlaces_d7g0v0_Shanghai + - opcB8DiffPlaces_d8g0v0_Shanghai + - opcB8DiffPlaces_d24g0v0_Shanghai + - opcB8DiffPlaces_d9g0v0_Shanghai + - opcB8DiffPlaces_d25g0v0_Shanghai + - opcB9DiffPlaces_d1g0v0_Shanghai + - opcB9DiffPlaces_d10g0v0_Shanghai + - opcB9DiffPlaces_d11g0v0_Shanghai + - opcB8DiffPlaces_d26g0v0_Shanghai + - opcB9DiffPlaces_d12g0v0_Shanghai + - opcB8DiffPlaces_d27g0v0_Shanghai + - opcB9DiffPlaces_d13g0v0_Shanghai + - opcB8DiffPlaces_d28g0v0_Shanghai + - opcB9DiffPlaces_d14g0v0_Shanghai + - opcB8DiffPlaces_d29g0v0_Shanghai + - opcB9DiffPlaces_d15g0v0_Shanghai + - opcB9DiffPlaces_d16g0v0_Shanghai + - opcB8DiffPlaces_d30g0v0_Shanghai + - opcB8DiffPlaces_d31g0v0_Shanghai + - opcB9DiffPlaces_d2g0v0_Shanghai + - opcB8DiffPlaces_d32g0v0_Shanghai + - opcB8DiffPlaces_d33g0v0_Shanghai + - opcB8DiffPlaces_d34g0v0_Shanghai + - opcB9DiffPlaces_d17g0v0_Shanghai + - opcB9DiffPlaces_d18g0v0_Shanghai + - opcB9DiffPlaces_d19g0v0_Shanghai + - opcB9DiffPlaces_d3g0v0_Shanghai + - opcB9DiffPlaces_d21g0v0_Shanghai + - opcBADiffPlaces_d0g0v0_Shanghai + - opcB9DiffPlaces_d20g0v0_Shanghai + - opcB9DiffPlaces_d4g0v0_Shanghai + - opcB9DiffPlaces_d22g0v0_Shanghai + - opcB9DiffPlaces_d23g0v0_Shanghai + - opcB9DiffPlaces_d5g0v0_Shanghai + - opcB9DiffPlaces_d6g0v0_Shanghai + - opcB9DiffPlaces_d7g0v0_Shanghai + - opcB9DiffPlaces_d8g0v0_Shanghai + - opcB9DiffPlaces_d24g0v0_Shanghai + - opcB9DiffPlaces_d9g0v0_Shanghai + - opcBADiffPlaces_d1g0v0_Shanghai + - opcB9DiffPlaces_d25g0v0_Shanghai + - opcBADiffPlaces_d10g0v0_Shanghai + - opcBADiffPlaces_d11g0v0_Shanghai + - opcB9DiffPlaces_d26g0v0_Shanghai + - opcBADiffPlaces_d12g0v0_Shanghai + - opcBADiffPlaces_d13g0v0_Shanghai + - opcB9DiffPlaces_d27g0v0_Shanghai + - opcB9DiffPlaces_d28g0v0_Shanghai + - opcBADiffPlaces_d14g0v0_Shanghai + - opcB9DiffPlaces_d29g0v0_Shanghai + - opcBADiffPlaces_d15g0v0_Shanghai + - opcBADiffPlaces_d16g0v0_Shanghai + - opcB9DiffPlaces_d30g0v0_Shanghai + - opcB9DiffPlaces_d31g0v0_Shanghai + - opcBADiffPlaces_d2g0v0_Shanghai + - opcB9DiffPlaces_d32g0v0_Shanghai + - opcB9DiffPlaces_d33g0v0_Shanghai + - opcB9DiffPlaces_d34g0v0_Shanghai + - opcBADiffPlaces_d17g0v0_Shanghai + - opcBADiffPlaces_d18g0v0_Shanghai + - opcBADiffPlaces_d19g0v0_Shanghai + - opcBADiffPlaces_d3g0v0_Shanghai + - opcBBDiffPlaces_d0g0v0_Shanghai + - opcBADiffPlaces_d21g0v0_Shanghai + - opcBADiffPlaces_d20g0v0_Shanghai + - opcBADiffPlaces_d4g0v0_Shanghai + - opcBADiffPlaces_d22g0v0_Shanghai + - opcBADiffPlaces_d23g0v0_Shanghai + - opcBADiffPlaces_d5g0v0_Shanghai + - opcBADiffPlaces_d6g0v0_Shanghai + - opcBADiffPlaces_d7g0v0_Shanghai + - opcBADiffPlaces_d8g0v0_Shanghai + - opcBADiffPlaces_d9g0v0_Shanghai + - opcBADiffPlaces_d24g0v0_Shanghai + - opcBADiffPlaces_d25g0v0_Shanghai + - opcBBDiffPlaces_d1g0v0_Shanghai + - opcBBDiffPlaces_d10g0v0_Shanghai + - opcBBDiffPlaces_d11g0v0_Shanghai + - opcBADiffPlaces_d26g0v0_Shanghai + - opcBBDiffPlaces_d12g0v0_Shanghai + - opcBADiffPlaces_d27g0v0_Shanghai + - opcBBDiffPlaces_d13g0v0_Shanghai + - opcBADiffPlaces_d28g0v0_Shanghai + - opcBBDiffPlaces_d14g0v0_Shanghai + - opcBBDiffPlaces_d15g0v0_Shanghai + - opcBADiffPlaces_d29g0v0_Shanghai + - opcBBDiffPlaces_d16g0v0_Shanghai + - opcBADiffPlaces_d30g0v0_Shanghai + - opcBBDiffPlaces_d2g0v0_Shanghai + - opcBADiffPlaces_d31g0v0_Shanghai + - opcBADiffPlaces_d32g0v0_Shanghai + - opcBADiffPlaces_d33g0v0_Shanghai + - opcBADiffPlaces_d34g0v0_Shanghai + - opcBBDiffPlaces_d17g0v0_Shanghai + - opcBBDiffPlaces_d18g0v0_Shanghai + - opcBBDiffPlaces_d19g0v0_Shanghai + - opcBBDiffPlaces_d3g0v0_Shanghai + - opcBCDiffPlaces_d0g0v0_Shanghai + - opcBBDiffPlaces_d21g0v0_Shanghai + - opcBBDiffPlaces_d20g0v0_Shanghai + - opcBBDiffPlaces_d4g0v0_Shanghai + - opcBBDiffPlaces_d22g0v0_Shanghai + - opcBBDiffPlaces_d5g0v0_Shanghai + - opcBBDiffPlaces_d23g0v0_Shanghai + - opcBBDiffPlaces_d6g0v0_Shanghai + - opcBBDiffPlaces_d7g0v0_Shanghai + - opcBBDiffPlaces_d8g0v0_Shanghai + - opcBBDiffPlaces_d9g0v0_Shanghai + - opcBBDiffPlaces_d24g0v0_Shanghai + - opcBCDiffPlaces_d1g0v0_Shanghai + - opcBBDiffPlaces_d25g0v0_Shanghai + - opcBCDiffPlaces_d10g0v0_Shanghai + - opcBCDiffPlaces_d11g0v0_Shanghai + - opcBBDiffPlaces_d26g0v0_Shanghai + - opcBCDiffPlaces_d12g0v0_Shanghai + - opcBBDiffPlaces_d27g0v0_Shanghai + - opcBCDiffPlaces_d13g0v0_Shanghai + - opcBBDiffPlaces_d28g0v0_Shanghai + - opcBCDiffPlaces_d14g0v0_Shanghai + - opcBBDiffPlaces_d29g0v0_Shanghai + - opcBCDiffPlaces_d15g0v0_Shanghai + - opcBBDiffPlaces_d30g0v0_Shanghai + - opcBBDiffPlaces_d31g0v0_Shanghai + - opcBCDiffPlaces_d16g0v0_Shanghai + - opcBBDiffPlaces_d32g0v0_Shanghai + - opcBCDiffPlaces_d2g0v0_Shanghai + - opcBBDiffPlaces_d33g0v0_Shanghai + - opcBBDiffPlaces_d34g0v0_Shanghai + - opcBCDiffPlaces_d17g0v0_Shanghai + - opcBCDiffPlaces_d18g0v0_Shanghai + - opcBCDiffPlaces_d3g0v0_Shanghai + - opcBCDiffPlaces_d19g0v0_Shanghai + - opcBCDiffPlaces_d21g0v0_Shanghai + - opcBDDiffPlaces_d0g0v0_Shanghai + - opcBCDiffPlaces_d4g0v0_Shanghai + - opcBCDiffPlaces_d22g0v0_Shanghai + - opcBCDiffPlaces_d20g0v0_Shanghai + - opcBCDiffPlaces_d23g0v0_Shanghai + - opcBCDiffPlaces_d5g0v0_Shanghai + - opcBCDiffPlaces_d6g0v0_Shanghai + - opcBCDiffPlaces_d7g0v0_Shanghai + - opcBCDiffPlaces_d8g0v0_Shanghai + - opcBCDiffPlaces_d24g0v0_Shanghai + - opcBCDiffPlaces_d9g0v0_Shanghai + - opcBCDiffPlaces_d25g0v0_Shanghai + - opcBDDiffPlaces_d1g0v0_Shanghai + - opcBDDiffPlaces_d10g0v0_Shanghai + - opcBCDiffPlaces_d26g0v0_Shanghai + - opcBDDiffPlaces_d11g0v0_Shanghai + - opcBDDiffPlaces_d12g0v0_Shanghai + - opcBCDiffPlaces_d27g0v0_Shanghai + - opcBDDiffPlaces_d13g0v0_Shanghai + - opcBCDiffPlaces_d28g0v0_Shanghai + - opcBDDiffPlaces_d14g0v0_Shanghai + - opcBCDiffPlaces_d29g0v0_Shanghai + - opcBDDiffPlaces_d15g0v0_Shanghai + - opcBCDiffPlaces_d30g0v0_Shanghai + - opcBCDiffPlaces_d31g0v0_Shanghai + - opcBDDiffPlaces_d16g0v0_Shanghai + - opcBDDiffPlaces_d2g0v0_Shanghai + - opcBCDiffPlaces_d32g0v0_Shanghai + - opcBCDiffPlaces_d33g0v0_Shanghai + - opcBCDiffPlaces_d34g0v0_Shanghai + - opcBDDiffPlaces_d17g0v0_Shanghai + - opcBDDiffPlaces_d18g0v0_Shanghai + - opcBDDiffPlaces_d19g0v0_Shanghai + - opcBDDiffPlaces_d3g0v0_Shanghai + - opcBDDiffPlaces_d21g0v0_Shanghai + - opcBEDiffPlaces_d0g0v0_Shanghai + - opcBDDiffPlaces_d4g0v0_Shanghai + - opcBDDiffPlaces_d20g0v0_Shanghai + - opcBDDiffPlaces_d22g0v0_Shanghai + - opcBDDiffPlaces_d5g0v0_Shanghai + - opcBDDiffPlaces_d23g0v0_Shanghai + - opcBDDiffPlaces_d6g0v0_Shanghai + - opcBDDiffPlaces_d7g0v0_Shanghai + - opcBDDiffPlaces_d8g0v0_Shanghai + - opcBDDiffPlaces_d24g0v0_Shanghai + - opcBDDiffPlaces_d9g0v0_Shanghai + - opcBEDiffPlaces_d1g0v0_Shanghai + - opcBDDiffPlaces_d25g0v0_Shanghai + - opcBEDiffPlaces_d10g0v0_Shanghai + - opcBDDiffPlaces_d26g0v0_Shanghai + - opcBEDiffPlaces_d11g0v0_Shanghai + - opcBEDiffPlaces_d12g0v0_Shanghai + - opcBDDiffPlaces_d27g0v0_Shanghai + - opcBEDiffPlaces_d13g0v0_Shanghai + - opcBDDiffPlaces_d28g0v0_Shanghai + - opcBEDiffPlaces_d14g0v0_Shanghai + - opcBDDiffPlaces_d29g0v0_Shanghai + - opcBEDiffPlaces_d15g0v0_Shanghai + - opcBEDiffPlaces_d16g0v0_Shanghai + - opcBDDiffPlaces_d30g0v0_Shanghai + - opcBDDiffPlaces_d31g0v0_Shanghai + - opcBDDiffPlaces_d32g0v0_Shanghai + - opcBEDiffPlaces_d2g0v0_Shanghai + - opcBDDiffPlaces_d33g0v0_Shanghai + - opcBDDiffPlaces_d34g0v0_Shanghai + - opcBEDiffPlaces_d17g0v0_Shanghai + - opcBEDiffPlaces_d18g0v0_Shanghai + - opcBEDiffPlaces_d19g0v0_Shanghai + - opcBEDiffPlaces_d3g0v0_Shanghai + - opcBEDiffPlaces_d21g0v0_Shanghai + - opcBFDiffPlaces_d0g0v0_Shanghai + - opcBEDiffPlaces_d4g0v0_Shanghai + - opcBEDiffPlaces_d20g0v0_Shanghai + - opcBEDiffPlaces_d22g0v0_Shanghai + - opcBEDiffPlaces_d5g0v0_Shanghai + - opcBEDiffPlaces_d23g0v0_Shanghai + - opcBEDiffPlaces_d6g0v0_Shanghai + - opcBEDiffPlaces_d7g0v0_Shanghai + - opcBEDiffPlaces_d8g0v0_Shanghai + - opcBEDiffPlaces_d24g0v0_Shanghai + - opcBEDiffPlaces_d9g0v0_Shanghai + - opcBEDiffPlaces_d25g0v0_Shanghai + - opcBFDiffPlaces_d1g0v0_Shanghai + - opcBFDiffPlaces_d10g0v0_Shanghai + - opcBFDiffPlaces_d11g0v0_Shanghai + - opcBEDiffPlaces_d26g0v0_Shanghai + - opcBFDiffPlaces_d12g0v0_Shanghai + - opcBEDiffPlaces_d27g0v0_Shanghai + - opcBFDiffPlaces_d13g0v0_Shanghai + - opcBEDiffPlaces_d28g0v0_Shanghai + - opcBFDiffPlaces_d14g0v0_Shanghai + - opcBFDiffPlaces_d15g0v0_Shanghai + - opcBEDiffPlaces_d29g0v0_Shanghai + - opcBEDiffPlaces_d30g0v0_Shanghai + - opcBFDiffPlaces_d16g0v0_Shanghai + - opcBEDiffPlaces_d31g0v0_Shanghai + - opcBEDiffPlaces_d32g0v0_Shanghai + - opcBFDiffPlaces_d2g0v0_Shanghai + - opcBEDiffPlaces_d33g0v0_Shanghai + - opcBEDiffPlaces_d34g0v0_Shanghai + - opcBFDiffPlaces_d17g0v0_Shanghai + - opcBFDiffPlaces_d18g0v0_Shanghai + - opcBFDiffPlaces_d19g0v0_Shanghai + - opcBFDiffPlaces_d3g0v0_Shanghai + - opcBFDiffPlaces_d21g0v0_Shanghai + - opcC0DiffPlaces_d0g0v0_Shanghai + - opcBFDiffPlaces_d4g0v0_Shanghai + - opcBFDiffPlaces_d20g0v0_Shanghai + - opcBFDiffPlaces_d22g0v0_Shanghai + - opcBFDiffPlaces_d5g0v0_Shanghai + - opcBFDiffPlaces_d23g0v0_Shanghai + - opcBFDiffPlaces_d6g0v0_Shanghai + - opcBFDiffPlaces_d7g0v0_Shanghai + - opcBFDiffPlaces_d8g0v0_Shanghai + - opcBFDiffPlaces_d24g0v0_Shanghai + - opcBFDiffPlaces_d9g0v0_Shanghai + - opcBFDiffPlaces_d25g0v0_Shanghai + - opcC0DiffPlaces_d1g0v0_Shanghai + - opcC0DiffPlaces_d10g0v0_Shanghai + - opcBFDiffPlaces_d26g0v0_Shanghai + - opcC0DiffPlaces_d11g0v0_Shanghai + - opcC0DiffPlaces_d12g0v0_Shanghai + - opcBFDiffPlaces_d27g0v0_Shanghai + - opcC0DiffPlaces_d13g0v0_Shanghai + - opcBFDiffPlaces_d28g0v0_Shanghai + - opcC0DiffPlaces_d14g0v0_Shanghai + - opcBFDiffPlaces_d29g0v0_Shanghai + - opcC0DiffPlaces_d15g0v0_Shanghai + - opcC0DiffPlaces_d16g0v0_Shanghai + - opcBFDiffPlaces_d31g0v0_Shanghai + - opcBFDiffPlaces_d30g0v0_Shanghai + - opcBFDiffPlaces_d32g0v0_Shanghai + - opcC0DiffPlaces_d2g0v0_Shanghai + - opcBFDiffPlaces_d34g0v0_Shanghai + - opcBFDiffPlaces_d33g0v0_Shanghai + - opcC0DiffPlaces_d17g0v0_Shanghai + - opcC0DiffPlaces_d18g0v0_Shanghai + - opcC0DiffPlaces_d19g0v0_Shanghai + - opcC0DiffPlaces_d3g0v0_Shanghai + - opcC0DiffPlaces_d21g0v0_Shanghai + - opcC1DiffPlaces_d0g0v0_Shanghai + - opcC0DiffPlaces_d4g0v0_Shanghai + - opcC0DiffPlaces_d20g0v0_Shanghai + - opcC0DiffPlaces_d22g0v0_Shanghai + - opcC0DiffPlaces_d5g0v0_Shanghai + - opcC0DiffPlaces_d23g0v0_Shanghai + - opcC0DiffPlaces_d6g0v0_Shanghai + - opcC0DiffPlaces_d7g0v0_Shanghai + - opcC0DiffPlaces_d8g0v0_Shanghai + - opcC0DiffPlaces_d24g0v0_Shanghai + - opcC0DiffPlaces_d9g0v0_Shanghai + - opcC1DiffPlaces_d1g0v0_Shanghai + - opcC0DiffPlaces_d25g0v0_Shanghai + - opcC1DiffPlaces_d10g0v0_Shanghai + - opcC1DiffPlaces_d11g0v0_Shanghai + - opcC0DiffPlaces_d26g0v0_Shanghai + - opcC1DiffPlaces_d12g0v0_Shanghai + - opcC0DiffPlaces_d27g0v0_Shanghai + - opcC1DiffPlaces_d13g0v0_Shanghai + - opcC0DiffPlaces_d28g0v0_Shanghai + - opcC1DiffPlaces_d14g0v0_Shanghai + - opcC0DiffPlaces_d29g0v0_Shanghai + - opcC1DiffPlaces_d15g0v0_Shanghai + - opcC0DiffPlaces_d30g0v0_Shanghai + - opcC0DiffPlaces_d31g0v0_Shanghai + - opcC1DiffPlaces_d16g0v0_Shanghai + - opcC1DiffPlaces_d2g0v0_Shanghai + - opcC0DiffPlaces_d32g0v0_Shanghai + - opcC0DiffPlaces_d33g0v0_Shanghai + - opcC0DiffPlaces_d34g0v0_Shanghai + - opcC1DiffPlaces_d17g0v0_Shanghai + - opcC1DiffPlaces_d18g0v0_Shanghai + - opcC1DiffPlaces_d19g0v0_Shanghai + - opcC1DiffPlaces_d3g0v0_Shanghai + - opcC1DiffPlaces_d21g0v0_Shanghai + - opcC1DiffPlaces_d4g0v0_Shanghai + - opcC2DiffPlaces_d0g0v0_Shanghai + - opcC1DiffPlaces_d20g0v0_Shanghai + - opcC1DiffPlaces_d22g0v0_Shanghai + - opcC1DiffPlaces_d23g0v0_Shanghai + - opcC1DiffPlaces_d5g0v0_Shanghai + - opcC1DiffPlaces_d6g0v0_Shanghai + - opcC1DiffPlaces_d7g0v0_Shanghai + - opcC1DiffPlaces_d8g0v0_Shanghai + - opcC1DiffPlaces_d9g0v0_Shanghai + - opcC1DiffPlaces_d24g0v0_Shanghai + - opcC2DiffPlaces_d1g0v0_Shanghai + - opcC1DiffPlaces_d25g0v0_Shanghai + - opcC2DiffPlaces_d10g0v0_Shanghai + - opcC2DiffPlaces_d11g0v0_Shanghai + - opcC1DiffPlaces_d26g0v0_Shanghai + - opcC2DiffPlaces_d12g0v0_Shanghai + - opcC1DiffPlaces_d27g0v0_Shanghai + - opcC2DiffPlaces_d13g0v0_Shanghai + - opcC2DiffPlaces_d14g0v0_Shanghai + - opcC1DiffPlaces_d28g0v0_Shanghai + - opcC2DiffPlaces_d15g0v0_Shanghai + - opcC1DiffPlaces_d29g0v0_Shanghai + - opcC1DiffPlaces_d30g0v0_Shanghai + - opcC2DiffPlaces_d16g0v0_Shanghai + - opcC1DiffPlaces_d31g0v0_Shanghai + - opcC2DiffPlaces_d2g0v0_Shanghai + - opcC1DiffPlaces_d32g0v0_Shanghai + - opcC1DiffPlaces_d33g0v0_Shanghai + - opcC1DiffPlaces_d34g0v0_Shanghai + - opcC2DiffPlaces_d17g0v0_Shanghai + - opcC2DiffPlaces_d18g0v0_Shanghai + - opcC2DiffPlaces_d19g0v0_Shanghai + - opcC2DiffPlaces_d3g0v0_Shanghai + - opcC2DiffPlaces_d21g0v0_Shanghai + - opcC3DiffPlaces_d0g0v0_Shanghai + - opcC2DiffPlaces_d4g0v0_Shanghai + - opcC2DiffPlaces_d20g0v0_Shanghai + - opcC2DiffPlaces_d22g0v0_Shanghai + - opcC2DiffPlaces_d23g0v0_Shanghai + - opcC2DiffPlaces_d5g0v0_Shanghai + - opcC2DiffPlaces_d6g0v0_Shanghai + - opcC2DiffPlaces_d7g0v0_Shanghai + - opcC2DiffPlaces_d8g0v0_Shanghai + - opcC2DiffPlaces_d24g0v0_Shanghai + - opcC2DiffPlaces_d9g0v0_Shanghai + - opcC3DiffPlaces_d1g0v0_Shanghai + - opcC2DiffPlaces_d25g0v0_Shanghai + - opcC3DiffPlaces_d10g0v0_Shanghai + - opcC3DiffPlaces_d11g0v0_Shanghai + - opcC2DiffPlaces_d26g0v0_Shanghai + - opcC3DiffPlaces_d12g0v0_Shanghai + - opcC2DiffPlaces_d27g0v0_Shanghai + - opcC3DiffPlaces_d13g0v0_Shanghai + - opcC2DiffPlaces_d28g0v0_Shanghai + - opcC3DiffPlaces_d14g0v0_Shanghai + - opcC3DiffPlaces_d15g0v0_Shanghai + - opcC2DiffPlaces_d29g0v0_Shanghai + - opcC2DiffPlaces_d30g0v0_Shanghai + - opcC3DiffPlaces_d16g0v0_Shanghai + - opcC2DiffPlaces_d31g0v0_Shanghai + - opcC2DiffPlaces_d32g0v0_Shanghai + - opcC3DiffPlaces_d2g0v0_Shanghai + - opcC2DiffPlaces_d33g0v0_Shanghai + - opcC2DiffPlaces_d34g0v0_Shanghai + - opcC3DiffPlaces_d17g0v0_Shanghai + - opcC3DiffPlaces_d18g0v0_Shanghai + - opcC3DiffPlaces_d3g0v0_Shanghai + - opcC3DiffPlaces_d19g0v0_Shanghai + - opcC4DiffPlaces_d0g0v0_Shanghai + - opcC3DiffPlaces_d21g0v0_Shanghai + - opcC3DiffPlaces_d4g0v0_Shanghai + - opcC3DiffPlaces_d20g0v0_Shanghai + - opcC3DiffPlaces_d22g0v0_Shanghai + - opcC3DiffPlaces_d5g0v0_Shanghai + - opcC3DiffPlaces_d23g0v0_Shanghai + - opcC3DiffPlaces_d6g0v0_Shanghai + - opcC3DiffPlaces_d7g0v0_Shanghai + - opcC3DiffPlaces_d8g0v0_Shanghai + - opcC3DiffPlaces_d9g0v0_Shanghai + - opcC3DiffPlaces_d24g0v0_Shanghai + - opcC3DiffPlaces_d25g0v0_Shanghai + - opcC4DiffPlaces_d1g0v0_Shanghai + - opcC4DiffPlaces_d10g0v0_Shanghai + - opcC4DiffPlaces_d11g0v0_Shanghai + - opcC3DiffPlaces_d26g0v0_Shanghai + - opcC4DiffPlaces_d12g0v0_Shanghai + - opcC3DiffPlaces_d27g0v0_Shanghai + - opcC4DiffPlaces_d13g0v0_Shanghai + - opcC3DiffPlaces_d28g0v0_Shanghai + - opcC4DiffPlaces_d14g0v0_Shanghai + - opcC3DiffPlaces_d29g0v0_Shanghai + - opcC4DiffPlaces_d15g0v0_Shanghai + - opcC3DiffPlaces_d30g0v0_Shanghai + - opcC4DiffPlaces_d16g0v0_Shanghai + - opcC3DiffPlaces_d31g0v0_Shanghai + - opcC4DiffPlaces_d2g0v0_Shanghai + - opcC3DiffPlaces_d32g0v0_Shanghai + - opcC3DiffPlaces_d33g0v0_Shanghai + - opcC3DiffPlaces_d34g0v0_Shanghai + - opcC4DiffPlaces_d17g0v0_Shanghai + - opcC4DiffPlaces_d18g0v0_Shanghai + - opcC4DiffPlaces_d19g0v0_Shanghai + - opcC4DiffPlaces_d3g0v0_Shanghai + - opcC4DiffPlaces_d21g0v0_Shanghai + - opcC5DiffPlaces_d0g0v0_Shanghai + - opcC4DiffPlaces_d4g0v0_Shanghai + - opcC4DiffPlaces_d20g0v0_Shanghai + - opcC4DiffPlaces_d22g0v0_Shanghai + - opcC4DiffPlaces_d5g0v0_Shanghai + - opcC4DiffPlaces_d23g0v0_Shanghai + - opcC4DiffPlaces_d6g0v0_Shanghai + - opcC4DiffPlaces_d7g0v0_Shanghai + - opcC4DiffPlaces_d8g0v0_Shanghai + - opcC4DiffPlaces_d24g0v0_Shanghai + - opcC4DiffPlaces_d9g0v0_Shanghai + - opcC4DiffPlaces_d25g0v0_Shanghai + - opcC5DiffPlaces_d1g0v0_Shanghai + - opcC5DiffPlaces_d10g0v0_Shanghai + - opcC5DiffPlaces_d11g0v0_Shanghai + - opcC4DiffPlaces_d26g0v0_Shanghai + - opcC5DiffPlaces_d12g0v0_Shanghai + - opcC4DiffPlaces_d27g0v0_Shanghai + - opcC5DiffPlaces_d13g0v0_Shanghai + - opcC4DiffPlaces_d28g0v0_Shanghai + - opcC5DiffPlaces_d14g0v0_Shanghai + - opcC4DiffPlaces_d29g0v0_Shanghai + - opcC5DiffPlaces_d15g0v0_Shanghai + - opcC5DiffPlaces_d16g0v0_Shanghai + - opcC4DiffPlaces_d31g0v0_Shanghai + - opcC4DiffPlaces_d30g0v0_Shanghai + - opcC5DiffPlaces_d2g0v0_Shanghai + - opcC4DiffPlaces_d32g0v0_Shanghai + - opcC4DiffPlaces_d33g0v0_Shanghai + - opcC4DiffPlaces_d34g0v0_Shanghai + - opcC5DiffPlaces_d17g0v0_Shanghai + - opcC5DiffPlaces_d18g0v0_Shanghai + - opcC5DiffPlaces_d3g0v0_Shanghai + - opcC5DiffPlaces_d19g0v0_Shanghai + - opcC5DiffPlaces_d21g0v0_Shanghai + - opcC6DiffPlaces_d0g0v0_Shanghai + - opcC5DiffPlaces_d20g0v0_Shanghai + - opcC5DiffPlaces_d4g0v0_Shanghai + - opcC5DiffPlaces_d22g0v0_Shanghai + - opcC5DiffPlaces_d5g0v0_Shanghai + - opcC5DiffPlaces_d23g0v0_Shanghai + - opcC5DiffPlaces_d6g0v0_Shanghai + - opcC5DiffPlaces_d7g0v0_Shanghai + - opcC5DiffPlaces_d8g0v0_Shanghai + - opcC5DiffPlaces_d24g0v0_Shanghai + - opcC5DiffPlaces_d9g0v0_Shanghai + - opcC5DiffPlaces_d25g0v0_Shanghai + - opcC6DiffPlaces_d1g0v0_Shanghai + - opcC6DiffPlaces_d10g0v0_Shanghai + - opcC6DiffPlaces_d11g0v0_Shanghai + - opcC5DiffPlaces_d26g0v0_Shanghai + - opcC6DiffPlaces_d12g0v0_Shanghai + - opcC6DiffPlaces_d13g0v0_Shanghai + - opcC5DiffPlaces_d27g0v0_Shanghai + - opcC5DiffPlaces_d28g0v0_Shanghai + - opcC6DiffPlaces_d14g0v0_Shanghai + - opcC5DiffPlaces_d29g0v0_Shanghai + - opcC6DiffPlaces_d15g0v0_Shanghai + - opcC5DiffPlaces_d31g0v0_Shanghai + - opcC5DiffPlaces_d30g0v0_Shanghai + - opcC6DiffPlaces_d16g0v0_Shanghai + - opcC5DiffPlaces_d32g0v0_Shanghai + - opcC6DiffPlaces_d2g0v0_Shanghai + - opcC5DiffPlaces_d33g0v0_Shanghai + - opcC5DiffPlaces_d34g0v0_Shanghai + - opcC6DiffPlaces_d17g0v0_Shanghai + - opcC6DiffPlaces_d18g0v0_Shanghai + - opcC6DiffPlaces_d19g0v0_Shanghai + - opcC6DiffPlaces_d3g0v0_Shanghai + - opcC6DiffPlaces_d21g0v0_Shanghai + - opcC7DiffPlaces_d0g0v0_Shanghai + - opcC6DiffPlaces_d20g0v0_Shanghai + - opcC6DiffPlaces_d4g0v0_Shanghai + - opcC6DiffPlaces_d22g0v0_Shanghai + - opcC6DiffPlaces_d5g0v0_Shanghai + - opcC6DiffPlaces_d23g0v0_Shanghai + - opcC6DiffPlaces_d6g0v0_Shanghai + - opcC6DiffPlaces_d7g0v0_Shanghai + - opcC6DiffPlaces_d8g0v0_Shanghai + - opcC6DiffPlaces_d9g0v0_Shanghai + - opcC6DiffPlaces_d24g0v0_Shanghai + - opcC6DiffPlaces_d25g0v0_Shanghai + - opcC7DiffPlaces_d1g0v0_Shanghai + - opcC7DiffPlaces_d10g0v0_Shanghai + - opcC6DiffPlaces_d26g0v0_Shanghai + - opcC7DiffPlaces_d11g0v0_Shanghai + - opcC7DiffPlaces_d12g0v0_Shanghai + - opcC6DiffPlaces_d27g0v0_Shanghai + - opcC7DiffPlaces_d13g0v0_Shanghai + - opcC6DiffPlaces_d28g0v0_Shanghai + - opcC7DiffPlaces_d14g0v0_Shanghai + - opcC7DiffPlaces_d15g0v0_Shanghai + - opcC6DiffPlaces_d29g0v0_Shanghai + - opcC6DiffPlaces_d30g0v0_Shanghai + - opcC7DiffPlaces_d16g0v0_Shanghai + - opcC6DiffPlaces_d31g0v0_Shanghai + - opcC7DiffPlaces_d2g0v0_Shanghai + - opcC6DiffPlaces_d32g0v0_Shanghai + - opcC6DiffPlaces_d33g0v0_Shanghai + - opcC6DiffPlaces_d34g0v0_Shanghai + - opcC7DiffPlaces_d17g0v0_Shanghai + - opcC7DiffPlaces_d18g0v0_Shanghai + - opcC7DiffPlaces_d19g0v0_Shanghai + - opcC7DiffPlaces_d3g0v0_Shanghai + - opcC7DiffPlaces_d21g0v0_Shanghai + - opcC8DiffPlaces_d0g0v0_Shanghai + - opcC7DiffPlaces_d20g0v0_Shanghai + - opcC7DiffPlaces_d4g0v0_Shanghai + - opcC7DiffPlaces_d22g0v0_Shanghai + - opcC7DiffPlaces_d23g0v0_Shanghai + - opcC7DiffPlaces_d5g0v0_Shanghai + - opcC7DiffPlaces_d6g0v0_Shanghai + - opcC7DiffPlaces_d7g0v0_Shanghai + - opcC7DiffPlaces_d8g0v0_Shanghai + - opcC7DiffPlaces_d9g0v0_Shanghai + - opcC7DiffPlaces_d24g0v0_Shanghai + - opcC7DiffPlaces_d25g0v0_Shanghai + - opcC8DiffPlaces_d1g0v0_Shanghai + - opcC8DiffPlaces_d10g0v0_Shanghai + - opcC7DiffPlaces_d26g0v0_Shanghai + - opcC8DiffPlaces_d11g0v0_Shanghai + - opcC8DiffPlaces_d12g0v0_Shanghai + - opcC7DiffPlaces_d27g0v0_Shanghai + - opcC8DiffPlaces_d13g0v0_Shanghai + - opcC7DiffPlaces_d28g0v0_Shanghai + - opcC8DiffPlaces_d14g0v0_Shanghai + - opcC7DiffPlaces_d29g0v0_Shanghai + - opcC8DiffPlaces_d15g0v0_Shanghai + - opcC8DiffPlaces_d16g0v0_Shanghai + - opcC7DiffPlaces_d31g0v0_Shanghai + - opcC7DiffPlaces_d30g0v0_Shanghai + - opcC8DiffPlaces_d2g0v0_Shanghai + - opcC7DiffPlaces_d32g0v0_Shanghai + - opcC7DiffPlaces_d33g0v0_Shanghai + - opcC7DiffPlaces_d34g0v0_Shanghai + - opcC8DiffPlaces_d17g0v0_Shanghai + - opcC8DiffPlaces_d18g0v0_Shanghai + - opcC8DiffPlaces_d19g0v0_Shanghai + - opcC8DiffPlaces_d3g0v0_Shanghai + - opcC8DiffPlaces_d21g0v0_Shanghai + - opcC8DiffPlaces_d4g0v0_Shanghai + - opcC9DiffPlaces_d0g0v0_Shanghai + - opcC8DiffPlaces_d20g0v0_Shanghai + - opcC8DiffPlaces_d22g0v0_Shanghai + - opcC8DiffPlaces_d5g0v0_Shanghai + - opcC8DiffPlaces_d23g0v0_Shanghai + - opcC8DiffPlaces_d6g0v0_Shanghai + - opcC8DiffPlaces_d7g0v0_Shanghai + - opcC8DiffPlaces_d8g0v0_Shanghai + - opcC8DiffPlaces_d24g0v0_Shanghai + - opcC8DiffPlaces_d9g0v0_Shanghai + - opcC8DiffPlaces_d25g0v0_Shanghai + - opcC9DiffPlaces_d1g0v0_Shanghai + - opcC9DiffPlaces_d10g0v0_Shanghai + - opcC9DiffPlaces_d11g0v0_Shanghai + - opcC8DiffPlaces_d26g0v0_Shanghai + - opcC9DiffPlaces_d12g0v0_Shanghai + - opcC8DiffPlaces_d27g0v0_Shanghai + - opcC9DiffPlaces_d13g0v0_Shanghai + - opcC8DiffPlaces_d28g0v0_Shanghai + - opcC9DiffPlaces_d14g0v0_Shanghai + - opcC9DiffPlaces_d15g0v0_Shanghai + - opcC8DiffPlaces_d29g0v0_Shanghai + - opcC9DiffPlaces_d16g0v0_Shanghai + - opcC8DiffPlaces_d30g0v0_Shanghai + - opcC8DiffPlaces_d31g0v0_Shanghai + - opcC8DiffPlaces_d32g0v0_Shanghai + - opcC9DiffPlaces_d2g0v0_Shanghai + - opcC8DiffPlaces_d33g0v0_Shanghai + - opcC8DiffPlaces_d34g0v0_Shanghai + - opcC9DiffPlaces_d17g0v0_Shanghai + - opcC9DiffPlaces_d18g0v0_Shanghai + - opcC9DiffPlaces_d3g0v0_Shanghai + - opcC9DiffPlaces_d19g0v0_Shanghai + - opcC9DiffPlaces_d21g0v0_Shanghai + - opcCADiffPlaces_d0g0v0_Shanghai + - opcC9DiffPlaces_d4g0v0_Shanghai + - opcC9DiffPlaces_d20g0v0_Shanghai + - opcC9DiffPlaces_d22g0v0_Shanghai + - opcC9DiffPlaces_d5g0v0_Shanghai + - opcC9DiffPlaces_d23g0v0_Shanghai + - opcC9DiffPlaces_d6g0v0_Shanghai + - opcC9DiffPlaces_d7g0v0_Shanghai + - opcC9DiffPlaces_d8g0v0_Shanghai + - opcC9DiffPlaces_d24g0v0_Shanghai + - opcC9DiffPlaces_d9g0v0_Shanghai + - opcC9DiffPlaces_d25g0v0_Shanghai + - opcCADiffPlaces_d1g0v0_Shanghai + - opcCADiffPlaces_d10g0v0_Shanghai + - opcC9DiffPlaces_d26g0v0_Shanghai + - opcCADiffPlaces_d11g0v0_Shanghai + - opcCADiffPlaces_d12g0v0_Shanghai + - opcC9DiffPlaces_d27g0v0_Shanghai + - opcCADiffPlaces_d13g0v0_Shanghai + - opcC9DiffPlaces_d28g0v0_Shanghai + - opcCADiffPlaces_d14g0v0_Shanghai + - opcC9DiffPlaces_d29g0v0_Shanghai + - opcCADiffPlaces_d15g0v0_Shanghai + - opcCADiffPlaces_d16g0v0_Shanghai + - opcC9DiffPlaces_d30g0v0_Shanghai + - opcC9DiffPlaces_d31g0v0_Shanghai + - opcCADiffPlaces_d2g0v0_Shanghai + - opcC9DiffPlaces_d32g0v0_Shanghai + - opcC9DiffPlaces_d33g0v0_Shanghai + - opcC9DiffPlaces_d34g0v0_Shanghai + - opcCADiffPlaces_d17g0v0_Shanghai + - opcCADiffPlaces_d18g0v0_Shanghai + - opcCADiffPlaces_d19g0v0_Shanghai + - opcCADiffPlaces_d3g0v0_Shanghai + - opcCADiffPlaces_d21g0v0_Shanghai + - opcCBDiffPlaces_d0g0v0_Shanghai + - opcCADiffPlaces_d20g0v0_Shanghai + - opcCADiffPlaces_d22g0v0_Shanghai + - opcCADiffPlaces_d4g0v0_Shanghai + - opcCADiffPlaces_d23g0v0_Shanghai + - opcCADiffPlaces_d5g0v0_Shanghai + - opcCADiffPlaces_d6g0v0_Shanghai + - opcCADiffPlaces_d7g0v0_Shanghai + - opcCADiffPlaces_d8g0v0_Shanghai + - opcCADiffPlaces_d24g0v0_Shanghai + - opcCADiffPlaces_d9g0v0_Shanghai + - opcCADiffPlaces_d25g0v0_Shanghai + - opcCBDiffPlaces_d1g0v0_Shanghai + - opcCBDiffPlaces_d10g0v0_Shanghai + - opcCBDiffPlaces_d11g0v0_Shanghai + - opcCADiffPlaces_d26g0v0_Shanghai + - opcCBDiffPlaces_d12g0v0_Shanghai + - opcCADiffPlaces_d27g0v0_Shanghai + - opcCBDiffPlaces_d13g0v0_Shanghai + - opcCADiffPlaces_d28g0v0_Shanghai + - opcCBDiffPlaces_d14g0v0_Shanghai + - opcCADiffPlaces_d29g0v0_Shanghai + - opcCBDiffPlaces_d15g0v0_Shanghai + - opcCADiffPlaces_d30g0v0_Shanghai + - opcCADiffPlaces_d31g0v0_Shanghai + - opcCBDiffPlaces_d16g0v0_Shanghai + - opcCBDiffPlaces_d2g0v0_Shanghai + - opcCADiffPlaces_d32g0v0_Shanghai + - opcCADiffPlaces_d34g0v0_Shanghai + - opcCADiffPlaces_d33g0v0_Shanghai + - opcCBDiffPlaces_d17g0v0_Shanghai + - opcCBDiffPlaces_d18g0v0_Shanghai + - opcCBDiffPlaces_d3g0v0_Shanghai + - opcCBDiffPlaces_d19g0v0_Shanghai + - opcCBDiffPlaces_d21g0v0_Shanghai + - opcCCDiffPlaces_d0g0v0_Shanghai + - opcCBDiffPlaces_d4g0v0_Shanghai + - opcCBDiffPlaces_d20g0v0_Shanghai + - opcCBDiffPlaces_d22g0v0_Shanghai + - opcCBDiffPlaces_d5g0v0_Shanghai + - opcCBDiffPlaces_d23g0v0_Shanghai + - opcCBDiffPlaces_d6g0v0_Shanghai + - opcCBDiffPlaces_d7g0v0_Shanghai + - opcCBDiffPlaces_d8g0v0_Shanghai + - opcCBDiffPlaces_d9g0v0_Shanghai + - opcCBDiffPlaces_d24g0v0_Shanghai + - opcCCDiffPlaces_d1g0v0_Shanghai + - opcCBDiffPlaces_d25g0v0_Shanghai + - opcCCDiffPlaces_d10g0v0_Shanghai + - opcCCDiffPlaces_d11g0v0_Shanghai + - opcCBDiffPlaces_d26g0v0_Shanghai + - opcCCDiffPlaces_d12g0v0_Shanghai + - opcCBDiffPlaces_d27g0v0_Shanghai + - opcCCDiffPlaces_d13g0v0_Shanghai + - opcCBDiffPlaces_d28g0v0_Shanghai + - opcCCDiffPlaces_d14g0v0_Shanghai + - opcCBDiffPlaces_d29g0v0_Shanghai + - opcCCDiffPlaces_d15g0v0_Shanghai + - opcCCDiffPlaces_d16g0v0_Shanghai + - opcCBDiffPlaces_d30g0v0_Shanghai + - opcCBDiffPlaces_d31g0v0_Shanghai + - opcCCDiffPlaces_d2g0v0_Shanghai + - opcCBDiffPlaces_d32g0v0_Shanghai + - opcCBDiffPlaces_d33g0v0_Shanghai + - opcCBDiffPlaces_d34g0v0_Shanghai + - opcCCDiffPlaces_d17g0v0_Shanghai + - opcCCDiffPlaces_d18g0v0_Shanghai + - opcCCDiffPlaces_d19g0v0_Shanghai + - opcCCDiffPlaces_d3g0v0_Shanghai + - opcCCDiffPlaces_d21g0v0_Shanghai + - opcCDDiffPlaces_d0g0v0_Shanghai + - opcCCDiffPlaces_d4g0v0_Shanghai + - opcCCDiffPlaces_d20g0v0_Shanghai + - opcCCDiffPlaces_d22g0v0_Shanghai + - opcCCDiffPlaces_d5g0v0_Shanghai + - opcCCDiffPlaces_d23g0v0_Shanghai + - opcCCDiffPlaces_d6g0v0_Shanghai + - opcCCDiffPlaces_d7g0v0_Shanghai + - opcCCDiffPlaces_d8g0v0_Shanghai + - opcCCDiffPlaces_d24g0v0_Shanghai + - opcCCDiffPlaces_d9g0v0_Shanghai + - opcCDDiffPlaces_d1g0v0_Shanghai + - opcCCDiffPlaces_d25g0v0_Shanghai + - opcCDDiffPlaces_d10g0v0_Shanghai + - opcCDDiffPlaces_d11g0v0_Shanghai + - opcCCDiffPlaces_d26g0v0_Shanghai + - opcCDDiffPlaces_d12g0v0_Shanghai + - opcCCDiffPlaces_d27g0v0_Shanghai + - opcCDDiffPlaces_d13g0v0_Shanghai + - opcCCDiffPlaces_d28g0v0_Shanghai + - opcCDDiffPlaces_d14g0v0_Shanghai + - opcCCDiffPlaces_d29g0v0_Shanghai + - opcCDDiffPlaces_d15g0v0_Shanghai + - opcCDDiffPlaces_d16g0v0_Shanghai + - opcCCDiffPlaces_d30g0v0_Shanghai + - opcCDDiffPlaces_d2g0v0_Shanghai + - opcCCDiffPlaces_d31g0v0_Shanghai + - opcCCDiffPlaces_d32g0v0_Shanghai + - opcCCDiffPlaces_d33g0v0_Shanghai + - opcCCDiffPlaces_d34g0v0_Shanghai + - opcCDDiffPlaces_d17g0v0_Shanghai + - opcCDDiffPlaces_d18g0v0_Shanghai + - opcCDDiffPlaces_d19g0v0_Shanghai + - opcCDDiffPlaces_d3g0v0_Shanghai + - opcCDDiffPlaces_d21g0v0_Shanghai + - opcCEDiffPlaces_d0g0v0_Shanghai + - opcCDDiffPlaces_d4g0v0_Shanghai + - opcCDDiffPlaces_d20g0v0_Shanghai + - opcCDDiffPlaces_d22g0v0_Shanghai + - opcCDDiffPlaces_d23g0v0_Shanghai + - opcCDDiffPlaces_d5g0v0_Shanghai + - opcCDDiffPlaces_d6g0v0_Shanghai + - opcCDDiffPlaces_d7g0v0_Shanghai + - opcCDDiffPlaces_d8g0v0_Shanghai + - opcCDDiffPlaces_d24g0v0_Shanghai + - opcCDDiffPlaces_d9g0v0_Shanghai + - opcCDDiffPlaces_d25g0v0_Shanghai + - opcCEDiffPlaces_d1g0v0_Shanghai + - opcCEDiffPlaces_d10g0v0_Shanghai + - opcCDDiffPlaces_d26g0v0_Shanghai + - opcCEDiffPlaces_d11g0v0_Shanghai + - opcCEDiffPlaces_d12g0v0_Shanghai + - opcCDDiffPlaces_d27g0v0_Shanghai + - opcCEDiffPlaces_d13g0v0_Shanghai + - opcCDDiffPlaces_d28g0v0_Shanghai + - opcCEDiffPlaces_d14g0v0_Shanghai + - opcCDDiffPlaces_d29g0v0_Shanghai + - opcCEDiffPlaces_d15g0v0_Shanghai + - opcCDDiffPlaces_d30g0v0_Shanghai + - opcCEDiffPlaces_d16g0v0_Shanghai + - opcCDDiffPlaces_d31g0v0_Shanghai + - opcCEDiffPlaces_d2g0v0_Shanghai + - opcCDDiffPlaces_d32g0v0_Shanghai + - opcCDDiffPlaces_d33g0v0_Shanghai + - opcCDDiffPlaces_d34g0v0_Shanghai + - opcCEDiffPlaces_d17g0v0_Shanghai + - opcCEDiffPlaces_d18g0v0_Shanghai + - opcCEDiffPlaces_d19g0v0_Shanghai + - opcCEDiffPlaces_d3g0v0_Shanghai + - opcCEDiffPlaces_d21g0v0_Shanghai + - opcCFDiffPlaces_d0g0v0_Shanghai + - opcCEDiffPlaces_d4g0v0_Shanghai + - opcCEDiffPlaces_d20g0v0_Shanghai + - opcCEDiffPlaces_d22g0v0_Shanghai + - opcCEDiffPlaces_d5g0v0_Shanghai + - opcCEDiffPlaces_d23g0v0_Shanghai + - opcCEDiffPlaces_d6g0v0_Shanghai + - opcCEDiffPlaces_d7g0v0_Shanghai + - opcCEDiffPlaces_d8g0v0_Shanghai + - opcCEDiffPlaces_d24g0v0_Shanghai + - opcCEDiffPlaces_d9g0v0_Shanghai + - opcCEDiffPlaces_d25g0v0_Shanghai + - opcCFDiffPlaces_d1g0v0_Shanghai + - opcCFDiffPlaces_d10g0v0_Shanghai + - opcCEDiffPlaces_d26g0v0_Shanghai + - opcCFDiffPlaces_d11g0v0_Shanghai + - opcCFDiffPlaces_d12g0v0_Shanghai + - opcCEDiffPlaces_d27g0v0_Shanghai + - opcCFDiffPlaces_d13g0v0_Shanghai + - opcCEDiffPlaces_d28g0v0_Shanghai + - opcCFDiffPlaces_d14g0v0_Shanghai + - opcCEDiffPlaces_d29g0v0_Shanghai + - opcCFDiffPlaces_d15g0v0_Shanghai + - opcCFDiffPlaces_d16g0v0_Shanghai + - opcCEDiffPlaces_d30g0v0_Shanghai + - opcCEDiffPlaces_d31g0v0_Shanghai + - opcCFDiffPlaces_d2g0v0_Shanghai + - opcCEDiffPlaces_d32g0v0_Shanghai + - opcCEDiffPlaces_d33g0v0_Shanghai + - opcCEDiffPlaces_d34g0v0_Shanghai + - opcCFDiffPlaces_d17g0v0_Shanghai + - opcCFDiffPlaces_d18g0v0_Shanghai + - opcCFDiffPlaces_d19g0v0_Shanghai + - opcCFDiffPlaces_d3g0v0_Shanghai + - opcD0DiffPlaces_d0g0v0_Shanghai + - opcCFDiffPlaces_d21g0v0_Shanghai + - opcCFDiffPlaces_d4g0v0_Shanghai + - opcCFDiffPlaces_d20g0v0_Shanghai + - opcCFDiffPlaces_d22g0v0_Shanghai + - opcCFDiffPlaces_d5g0v0_Shanghai + - opcCFDiffPlaces_d23g0v0_Shanghai + - opcCFDiffPlaces_d6g0v0_Shanghai + - opcCFDiffPlaces_d7g0v0_Shanghai + - opcCFDiffPlaces_d8g0v0_Shanghai + - opcCFDiffPlaces_d24g0v0_Shanghai + - opcCFDiffPlaces_d9g0v0_Shanghai + - opcCFDiffPlaces_d25g0v0_Shanghai + - opcD0DiffPlaces_d1g0v0_Shanghai + - opcD0DiffPlaces_d10g0v0_Shanghai + - opcD0DiffPlaces_d11g0v0_Shanghai + - opcCFDiffPlaces_d26g0v0_Shanghai + - opcD0DiffPlaces_d12g0v0_Shanghai + - opcCFDiffPlaces_d27g0v0_Shanghai + - opcD0DiffPlaces_d13g0v0_Shanghai + - opcCFDiffPlaces_d28g0v0_Shanghai + - opcD0DiffPlaces_d14g0v0_Shanghai + - opcCFDiffPlaces_d29g0v0_Shanghai + - opcD0DiffPlaces_d15g0v0_Shanghai + - opcD0DiffPlaces_d16g0v0_Shanghai + - opcCFDiffPlaces_d30g0v0_Shanghai + - opcCFDiffPlaces_d31g0v0_Shanghai + - opcD0DiffPlaces_d2g0v0_Shanghai + - opcCFDiffPlaces_d32g0v0_Shanghai + - opcCFDiffPlaces_d33g0v0_Shanghai + - opcCFDiffPlaces_d34g0v0_Shanghai + - opcD0DiffPlaces_d17g0v0_Shanghai + - opcD0DiffPlaces_d18g0v0_Shanghai + - opcD0DiffPlaces_d19g0v0_Shanghai + - opcD0DiffPlaces_d3g0v0_Shanghai + - opcD1DiffPlaces_d0g0v0_Shanghai + - opcD0DiffPlaces_d21g0v0_Shanghai + - opcD0DiffPlaces_d4g0v0_Shanghai + - opcD0DiffPlaces_d20g0v0_Shanghai + - opcD0DiffPlaces_d22g0v0_Shanghai + - opcD0DiffPlaces_d5g0v0_Shanghai + - opcD0DiffPlaces_d23g0v0_Shanghai + - opcD0DiffPlaces_d6g0v0_Shanghai + - opcD0DiffPlaces_d7g0v0_Shanghai + - opcD0DiffPlaces_d8g0v0_Shanghai + - opcD0DiffPlaces_d9g0v0_Shanghai + - opcD0DiffPlaces_d24g0v0_Shanghai + - opcD1DiffPlaces_d1g0v0_Shanghai + - opcD0DiffPlaces_d25g0v0_Shanghai + - opcD1DiffPlaces_d10g0v0_Shanghai + - opcD1DiffPlaces_d11g0v0_Shanghai + - opcD0DiffPlaces_d26g0v0_Shanghai + - opcD1DiffPlaces_d12g0v0_Shanghai + - opcD0DiffPlaces_d27g0v0_Shanghai + - opcD1DiffPlaces_d13g0v0_Shanghai + - opcD0DiffPlaces_d28g0v0_Shanghai + - opcD1DiffPlaces_d14g0v0_Shanghai + - opcD0DiffPlaces_d29g0v0_Shanghai + - opcD1DiffPlaces_d15g0v0_Shanghai + - opcD0DiffPlaces_d30g0v0_Shanghai + - opcD1DiffPlaces_d16g0v0_Shanghai + - opcD0DiffPlaces_d31g0v0_Shanghai + - opcD1DiffPlaces_d2g0v0_Shanghai + - opcD0DiffPlaces_d32g0v0_Shanghai + - opcD0DiffPlaces_d33g0v0_Shanghai + - opcD0DiffPlaces_d34g0v0_Shanghai + - opcD1DiffPlaces_d17g0v0_Shanghai + - opcD1DiffPlaces_d18g0v0_Shanghai + - opcD1DiffPlaces_d19g0v0_Shanghai + - opcD1DiffPlaces_d3g0v0_Shanghai + - opcD1DiffPlaces_d21g0v0_Shanghai + - opcD2DiffPlaces_d0g0v0_Shanghai + - opcD1DiffPlaces_d4g0v0_Shanghai + - opcD1DiffPlaces_d20g0v0_Shanghai + - opcD1DiffPlaces_d22g0v0_Shanghai + - opcD1DiffPlaces_d5g0v0_Shanghai + - opcD1DiffPlaces_d23g0v0_Shanghai + - opcD1DiffPlaces_d6g0v0_Shanghai + - opcD1DiffPlaces_d7g0v0_Shanghai + - opcD1DiffPlaces_d8g0v0_Shanghai + - opcD1DiffPlaces_d9g0v0_Shanghai + - opcD1DiffPlaces_d24g0v0_Shanghai + - opcD1DiffPlaces_d25g0v0_Shanghai + - opcD2DiffPlaces_d1g0v0_Shanghai + - opcD2DiffPlaces_d10g0v0_Shanghai + - opcD1DiffPlaces_d26g0v0_Shanghai + - opcD2DiffPlaces_d11g0v0_Shanghai + - opcD2DiffPlaces_d12g0v0_Shanghai + - opcD1DiffPlaces_d27g0v0_Shanghai + - opcD2DiffPlaces_d13g0v0_Shanghai + - opcD1DiffPlaces_d28g0v0_Shanghai + - opcD2DiffPlaces_d14g0v0_Shanghai + - opcD1DiffPlaces_d29g0v0_Shanghai + - opcD2DiffPlaces_d15g0v0_Shanghai + - opcD1DiffPlaces_d30g0v0_Shanghai + - opcD2DiffPlaces_d16g0v0_Shanghai + - opcD1DiffPlaces_d31g0v0_Shanghai + - opcD2DiffPlaces_d2g0v0_Shanghai + - opcD1DiffPlaces_d32g0v0_Shanghai + - opcD1DiffPlaces_d33g0v0_Shanghai + - opcD1DiffPlaces_d34g0v0_Shanghai + - opcD2DiffPlaces_d17g0v0_Shanghai + - opcD2DiffPlaces_d18g0v0_Shanghai + - opcD2DiffPlaces_d19g0v0_Shanghai + - opcD2DiffPlaces_d3g0v0_Shanghai + - opcD2DiffPlaces_d21g0v0_Shanghai + - opcD3DiffPlaces_d0g0v0_Shanghai + - opcD2DiffPlaces_d4g0v0_Shanghai + - opcD2DiffPlaces_d20g0v0_Shanghai + - opcD2DiffPlaces_d22g0v0_Shanghai + - opcD2DiffPlaces_d23g0v0_Shanghai + - opcD2DiffPlaces_d5g0v0_Shanghai + - opcD2DiffPlaces_d6g0v0_Shanghai + - opcD2DiffPlaces_d7g0v0_Shanghai + - opcD2DiffPlaces_d8g0v0_Shanghai + - opcD2DiffPlaces_d24g0v0_Shanghai + - opcD2DiffPlaces_d9g0v0_Shanghai + - opcD2DiffPlaces_d25g0v0_Shanghai + - opcD3DiffPlaces_d1g0v0_Shanghai + - opcD3DiffPlaces_d10g0v0_Shanghai + - opcD3DiffPlaces_d11g0v0_Shanghai + - opcD2DiffPlaces_d26g0v0_Shanghai + - opcD3DiffPlaces_d12g0v0_Shanghai + - opcD2DiffPlaces_d27g0v0_Shanghai + - opcD3DiffPlaces_d13g0v0_Shanghai + - opcD2DiffPlaces_d28g0v0_Shanghai + - opcD3DiffPlaces_d14g0v0_Shanghai + - opcD3DiffPlaces_d15g0v0_Shanghai + - opcD2DiffPlaces_d29g0v0_Shanghai + - opcD3DiffPlaces_d16g0v0_Shanghai + - opcD2DiffPlaces_d30g0v0_Shanghai + - opcD2DiffPlaces_d31g0v0_Shanghai + - opcD3DiffPlaces_d2g0v0_Shanghai + - opcD2DiffPlaces_d32g0v0_Shanghai + - opcD2DiffPlaces_d33g0v0_Shanghai + - opcD2DiffPlaces_d34g0v0_Shanghai + - opcD3DiffPlaces_d17g0v0_Shanghai + - opcD3DiffPlaces_d18g0v0_Shanghai + - opcD3DiffPlaces_d19g0v0_Shanghai + - opcD3DiffPlaces_d3g0v0_Shanghai + - opcD3DiffPlaces_d21g0v0_Shanghai + - opcD4DiffPlaces_d0g0v0_Shanghai + - opcD3DiffPlaces_d20g0v0_Shanghai + - opcD3DiffPlaces_d4g0v0_Shanghai + - opcD3DiffPlaces_d22g0v0_Shanghai + - opcD3DiffPlaces_d23g0v0_Shanghai + - opcD3DiffPlaces_d5g0v0_Shanghai + - opcD3DiffPlaces_d6g0v0_Shanghai + - opcD3DiffPlaces_d7g0v0_Shanghai + - opcD3DiffPlaces_d8g0v0_Shanghai + - opcD3DiffPlaces_d24g0v0_Shanghai + - opcD3DiffPlaces_d9g0v0_Shanghai + - opcD3DiffPlaces_d25g0v0_Shanghai + - opcD4DiffPlaces_d1g0v0_Shanghai + - opcD4DiffPlaces_d10g0v0_Shanghai + - opcD4DiffPlaces_d11g0v0_Shanghai + - opcD3DiffPlaces_d26g0v0_Shanghai + - opcD4DiffPlaces_d12g0v0_Shanghai + - opcD3DiffPlaces_d27g0v0_Shanghai + - opcD4DiffPlaces_d13g0v0_Shanghai + - opcD3DiffPlaces_d28g0v0_Shanghai + - opcD4DiffPlaces_d14g0v0_Shanghai + - opcD4DiffPlaces_d15g0v0_Shanghai + - opcD3DiffPlaces_d29g0v0_Shanghai + - opcD3DiffPlaces_d30g0v0_Shanghai + - opcD4DiffPlaces_d16g0v0_Shanghai + - opcD3DiffPlaces_d31g0v0_Shanghai + - opcD4DiffPlaces_d2g0v0_Shanghai + - opcD3DiffPlaces_d32g0v0_Shanghai + - opcD3DiffPlaces_d33g0v0_Shanghai + - opcD3DiffPlaces_d34g0v0_Shanghai + - opcD4DiffPlaces_d17g0v0_Shanghai + - opcD4DiffPlaces_d18g0v0_Shanghai + - opcD4DiffPlaces_d19g0v0_Shanghai + - opcD4DiffPlaces_d3g0v0_Shanghai + - opcD5DiffPlaces_d0g0v0_Shanghai + - opcD4DiffPlaces_d21g0v0_Shanghai + - opcD4DiffPlaces_d4g0v0_Shanghai + - opcD4DiffPlaces_d20g0v0_Shanghai + - opcD4DiffPlaces_d22g0v0_Shanghai + - opcD4DiffPlaces_d5g0v0_Shanghai + - opcD4DiffPlaces_d23g0v0_Shanghai + - opcD4DiffPlaces_d6g0v0_Shanghai + - opcD4DiffPlaces_d7g0v0_Shanghai + - opcD4DiffPlaces_d8g0v0_Shanghai + - opcD4DiffPlaces_d9g0v0_Shanghai + - opcD4DiffPlaces_d24g0v0_Shanghai + - opcD5DiffPlaces_d1g0v0_Shanghai + - opcD4DiffPlaces_d25g0v0_Shanghai + - opcD5DiffPlaces_d10g0v0_Shanghai + - opcD5DiffPlaces_d11g0v0_Shanghai + - opcD4DiffPlaces_d26g0v0_Shanghai + - opcD5DiffPlaces_d12g0v0_Shanghai + - opcD4DiffPlaces_d27g0v0_Shanghai + - opcD5DiffPlaces_d13g0v0_Shanghai + - opcD4DiffPlaces_d28g0v0_Shanghai + - opcD5DiffPlaces_d14g0v0_Shanghai + - opcD4DiffPlaces_d29g0v0_Shanghai + - opcD5DiffPlaces_d15g0v0_Shanghai + - opcD4DiffPlaces_d30g0v0_Shanghai + - opcD5DiffPlaces_d16g0v0_Shanghai + - opcD4DiffPlaces_d31g0v0_Shanghai + - opcD5DiffPlaces_d2g0v0_Shanghai + - opcD4DiffPlaces_d32g0v0_Shanghai + - opcD4DiffPlaces_d33g0v0_Shanghai + - opcD4DiffPlaces_d34g0v0_Shanghai + - opcD5DiffPlaces_d17g0v0_Shanghai + - opcD5DiffPlaces_d18g0v0_Shanghai + - opcD5DiffPlaces_d19g0v0_Shanghai + - opcD5DiffPlaces_d3g0v0_Shanghai + - opcD6DiffPlaces_d0g0v0_Shanghai + - opcD5DiffPlaces_d21g0v0_Shanghai + - opcD5DiffPlaces_d4g0v0_Shanghai + - opcD5DiffPlaces_d20g0v0_Shanghai + - opcD5DiffPlaces_d22g0v0_Shanghai + - opcD5DiffPlaces_d23g0v0_Shanghai + - opcD5DiffPlaces_d5g0v0_Shanghai + - opcD5DiffPlaces_d6g0v0_Shanghai + - opcD5DiffPlaces_d7g0v0_Shanghai + - opcD5DiffPlaces_d8g0v0_Shanghai + - opcD5DiffPlaces_d24g0v0_Shanghai + - opcD5DiffPlaces_d9g0v0_Shanghai + - opcD5DiffPlaces_d25g0v0_Shanghai + - opcD6DiffPlaces_d1g0v0_Shanghai + - opcD6DiffPlaces_d10g0v0_Shanghai + - opcD6DiffPlaces_d11g0v0_Shanghai + - opcD5DiffPlaces_d26g0v0_Shanghai + - opcD6DiffPlaces_d12g0v0_Shanghai + - opcD5DiffPlaces_d27g0v0_Shanghai + - opcD6DiffPlaces_d13g0v0_Shanghai + - opcD5DiffPlaces_d28g0v0_Shanghai + - opcD6DiffPlaces_d14g0v0_Shanghai + - opcD5DiffPlaces_d29g0v0_Shanghai + - opcD6DiffPlaces_d15g0v0_Shanghai + - opcD6DiffPlaces_d16g0v0_Shanghai + - opcD5DiffPlaces_d30g0v0_Shanghai + - opcD5DiffPlaces_d31g0v0_Shanghai + - opcD6DiffPlaces_d2g0v0_Shanghai + - opcD5DiffPlaces_d32g0v0_Shanghai + - opcD5DiffPlaces_d33g0v0_Shanghai + - opcD5DiffPlaces_d34g0v0_Shanghai + - opcD6DiffPlaces_d17g0v0_Shanghai + - opcD6DiffPlaces_d18g0v0_Shanghai + - opcD6DiffPlaces_d3g0v0_Shanghai + - opcD6DiffPlaces_d19g0v0_Shanghai + - opcD6DiffPlaces_d21g0v0_Shanghai + - opcD6DiffPlaces_d4g0v0_Shanghai + - opcD7DiffPlaces_d0g0v0_Shanghai + - opcD6DiffPlaces_d20g0v0_Shanghai + - opcD6DiffPlaces_d22g0v0_Shanghai + - opcD6DiffPlaces_d5g0v0_Shanghai + - opcD6DiffPlaces_d23g0v0_Shanghai + - opcD6DiffPlaces_d6g0v0_Shanghai + - opcD6DiffPlaces_d7g0v0_Shanghai + - opcD6DiffPlaces_d8g0v0_Shanghai + - opcD6DiffPlaces_d24g0v0_Shanghai + - opcD6DiffPlaces_d9g0v0_Shanghai + - opcD7DiffPlaces_d1g0v0_Shanghai + - opcD6DiffPlaces_d25g0v0_Shanghai + - opcD7DiffPlaces_d10g0v0_Shanghai + - opcD7DiffPlaces_d11g0v0_Shanghai + - opcD6DiffPlaces_d26g0v0_Shanghai + - opcD7DiffPlaces_d12g0v0_Shanghai + - opcD7DiffPlaces_d13g0v0_Shanghai + - opcD6DiffPlaces_d27g0v0_Shanghai + - opcD6DiffPlaces_d28g0v0_Shanghai + - opcD7DiffPlaces_d14g0v0_Shanghai + - opcD7DiffPlaces_d15g0v0_Shanghai + - opcD6DiffPlaces_d29g0v0_Shanghai + - opcD6DiffPlaces_d30g0v0_Shanghai + - opcD6DiffPlaces_d31g0v0_Shanghai + - opcD7DiffPlaces_d16g0v0_Shanghai + - opcD7DiffPlaces_d2g0v0_Shanghai + - opcD6DiffPlaces_d32g0v0_Shanghai + - opcD6DiffPlaces_d33g0v0_Shanghai + - opcD6DiffPlaces_d34g0v0_Shanghai + - opcD7DiffPlaces_d17g0v0_Shanghai + - opcD7DiffPlaces_d18g0v0_Shanghai + - opcD7DiffPlaces_d19g0v0_Shanghai + - opcD7DiffPlaces_d3g0v0_Shanghai + - opcD7DiffPlaces_d21g0v0_Shanghai + - opcD8DiffPlaces_d0g0v0_Shanghai + - opcD7DiffPlaces_d4g0v0_Shanghai + - opcD7DiffPlaces_d20g0v0_Shanghai + - opcD7DiffPlaces_d22g0v0_Shanghai + - opcD7DiffPlaces_d5g0v0_Shanghai + - opcD7DiffPlaces_d23g0v0_Shanghai + - opcD7DiffPlaces_d6g0v0_Shanghai + - opcD7DiffPlaces_d7g0v0_Shanghai + - opcD7DiffPlaces_d8g0v0_Shanghai + - opcD7DiffPlaces_d24g0v0_Shanghai + - opcD7DiffPlaces_d9g0v0_Shanghai + - opcD8DiffPlaces_d1g0v0_Shanghai + - opcD7DiffPlaces_d25g0v0_Shanghai + - opcD8DiffPlaces_d10g0v0_Shanghai + - opcD8DiffPlaces_d11g0v0_Shanghai + - opcD7DiffPlaces_d26g0v0_Shanghai + - opcD8DiffPlaces_d12g0v0_Shanghai + - opcD7DiffPlaces_d27g0v0_Shanghai + - opcD8DiffPlaces_d13g0v0_Shanghai + - opcD7DiffPlaces_d28g0v0_Shanghai + - opcD8DiffPlaces_d14g0v0_Shanghai + - opcD7DiffPlaces_d29g0v0_Shanghai + - opcD8DiffPlaces_d15g0v0_Shanghai + - opcD8DiffPlaces_d16g0v0_Shanghai + - opcD7DiffPlaces_d30g0v0_Shanghai + - opcD7DiffPlaces_d31g0v0_Shanghai + - opcD8DiffPlaces_d2g0v0_Shanghai + - opcD7DiffPlaces_d32g0v0_Shanghai + - opcD7DiffPlaces_d33g0v0_Shanghai + - opcD7DiffPlaces_d34g0v0_Shanghai + - opcD8DiffPlaces_d17g0v0_Shanghai + - opcD8DiffPlaces_d18g0v0_Shanghai + - opcD8DiffPlaces_d19g0v0_Shanghai + - opcD8DiffPlaces_d3g0v0_Shanghai + - opcD8DiffPlaces_d21g0v0_Shanghai + - opcD9DiffPlaces_d0g0v0_Shanghai + - opcD8DiffPlaces_d4g0v0_Shanghai + - opcD8DiffPlaces_d20g0v0_Shanghai + - opcD8DiffPlaces_d22g0v0_Shanghai + - opcD8DiffPlaces_d5g0v0_Shanghai + - opcD8DiffPlaces_d23g0v0_Shanghai + - opcD8DiffPlaces_d6g0v0_Shanghai + - opcD8DiffPlaces_d7g0v0_Shanghai + - opcD8DiffPlaces_d8g0v0_Shanghai + - opcD8DiffPlaces_d24g0v0_Shanghai + - opcD8DiffPlaces_d9g0v0_Shanghai + - opcD8DiffPlaces_d25g0v0_Shanghai + - opcD9DiffPlaces_d1g0v0_Shanghai + - opcD9DiffPlaces_d10g0v0_Shanghai + - opcD8DiffPlaces_d26g0v0_Shanghai + - opcD9DiffPlaces_d11g0v0_Shanghai + - opcD9DiffPlaces_d12g0v0_Shanghai + - opcD8DiffPlaces_d27g0v0_Shanghai + - opcD9DiffPlaces_d13g0v0_Shanghai + - opcD8DiffPlaces_d28g0v0_Shanghai + - opcD9DiffPlaces_d14g0v0_Shanghai + - opcD8DiffPlaces_d29g0v0_Shanghai + - opcD9DiffPlaces_d15g0v0_Shanghai + - opcD8DiffPlaces_d30g0v0_Shanghai + - opcD9DiffPlaces_d16g0v0_Shanghai + - opcD8DiffPlaces_d31g0v0_Shanghai + - opcD9DiffPlaces_d2g0v0_Shanghai + - opcD8DiffPlaces_d32g0v0_Shanghai + - opcD8DiffPlaces_d33g0v0_Shanghai + - opcD8DiffPlaces_d34g0v0_Shanghai + - opcD9DiffPlaces_d17g0v0_Shanghai + - opcD9DiffPlaces_d18g0v0_Shanghai + - opcD9DiffPlaces_d19g0v0_Shanghai + - opcD9DiffPlaces_d3g0v0_Shanghai + - opcD9DiffPlaces_d21g0v0_Shanghai + - opcDADiffPlaces_d0g0v0_Shanghai + - opcD9DiffPlaces_d4g0v0_Shanghai + - opcD9DiffPlaces_d20g0v0_Shanghai + - opcD9DiffPlaces_d22g0v0_Shanghai + - opcD9DiffPlaces_d5g0v0_Shanghai + - opcD9DiffPlaces_d23g0v0_Shanghai + - opcD9DiffPlaces_d6g0v0_Shanghai + - opcD9DiffPlaces_d7g0v0_Shanghai + - opcD9DiffPlaces_d8g0v0_Shanghai + - opcD9DiffPlaces_d9g0v0_Shanghai + - opcD9DiffPlaces_d24g0v0_Shanghai + - opcD9DiffPlaces_d25g0v0_Shanghai + - opcDADiffPlaces_d1g0v0_Shanghai + - opcDADiffPlaces_d10g0v0_Shanghai + - opcDADiffPlaces_d11g0v0_Shanghai + - opcD9DiffPlaces_d26g0v0_Shanghai + - opcDADiffPlaces_d12g0v0_Shanghai + - opcD9DiffPlaces_d27g0v0_Shanghai + - opcDADiffPlaces_d13g0v0_Shanghai + - opcD9DiffPlaces_d28g0v0_Shanghai + - opcDADiffPlaces_d14g0v0_Shanghai + - opcD9DiffPlaces_d29g0v0_Shanghai + - opcDADiffPlaces_d15g0v0_Shanghai + - opcD9DiffPlaces_d30g0v0_Shanghai + - opcDADiffPlaces_d16g0v0_Shanghai + - opcD9DiffPlaces_d31g0v0_Shanghai + - opcD9DiffPlaces_d32g0v0_Shanghai + - opcDADiffPlaces_d2g0v0_Shanghai + - opcD9DiffPlaces_d33g0v0_Shanghai + - opcD9DiffPlaces_d34g0v0_Shanghai + - opcDADiffPlaces_d17g0v0_Shanghai + - opcDADiffPlaces_d18g0v0_Shanghai + - opcDADiffPlaces_d19g0v0_Shanghai + - opcDADiffPlaces_d3g0v0_Shanghai + - opcDADiffPlaces_d21g0v0_Shanghai + - opcDBDiffPlaces_d0g0v0_Shanghai + - opcDADiffPlaces_d20g0v0_Shanghai + - opcDADiffPlaces_d4g0v0_Shanghai + - opcDADiffPlaces_d22g0v0_Shanghai + - opcDADiffPlaces_d5g0v0_Shanghai + - opcDADiffPlaces_d23g0v0_Shanghai + - opcDADiffPlaces_d6g0v0_Shanghai + - opcDADiffPlaces_d7g0v0_Shanghai + - opcDADiffPlaces_d8g0v0_Shanghai + - opcDADiffPlaces_d9g0v0_Shanghai + - opcDADiffPlaces_d24g0v0_Shanghai + - opcDADiffPlaces_d25g0v0_Shanghai + - opcDBDiffPlaces_d1g0v0_Shanghai + - opcDBDiffPlaces_d10g0v0_Shanghai + - opcDADiffPlaces_d26g0v0_Shanghai + - opcDBDiffPlaces_d11g0v0_Shanghai + - opcDBDiffPlaces_d12g0v0_Shanghai + - opcDBDiffPlaces_d13g0v0_Shanghai + - opcDADiffPlaces_d27g0v0_Shanghai + - opcDADiffPlaces_d28g0v0_Shanghai + - opcDBDiffPlaces_d14g0v0_Shanghai + - opcDADiffPlaces_d29g0v0_Shanghai + - opcDBDiffPlaces_d15g0v0_Shanghai + - opcDADiffPlaces_d30g0v0_Shanghai + - opcDADiffPlaces_d31g0v0_Shanghai + - opcDBDiffPlaces_d16g0v0_Shanghai + - opcDBDiffPlaces_d2g0v0_Shanghai + - opcDADiffPlaces_d32g0v0_Shanghai + - opcDADiffPlaces_d33g0v0_Shanghai + - opcDADiffPlaces_d34g0v0_Shanghai + - opcDBDiffPlaces_d17g0v0_Shanghai + - opcDBDiffPlaces_d18g0v0_Shanghai + - opcDBDiffPlaces_d19g0v0_Shanghai + - opcDBDiffPlaces_d3g0v0_Shanghai + - opcDBDiffPlaces_d21g0v0_Shanghai + - opcDCDiffPlaces_d0g0v0_Shanghai + - opcDBDiffPlaces_d20g0v0_Shanghai + - opcDBDiffPlaces_d4g0v0_Shanghai + - opcDBDiffPlaces_d22g0v0_Shanghai + - opcDBDiffPlaces_d5g0v0_Shanghai + - opcDBDiffPlaces_d23g0v0_Shanghai + - opcDBDiffPlaces_d6g0v0_Shanghai + - opcDBDiffPlaces_d7g0v0_Shanghai + - opcDBDiffPlaces_d8g0v0_Shanghai + - opcDBDiffPlaces_d24g0v0_Shanghai + - opcDBDiffPlaces_d9g0v0_Shanghai + - opcDBDiffPlaces_d25g0v0_Shanghai + - opcDCDiffPlaces_d1g0v0_Shanghai + - opcDCDiffPlaces_d10g0v0_Shanghai + - opcDCDiffPlaces_d11g0v0_Shanghai + - opcDBDiffPlaces_d26g0v0_Shanghai + - opcDCDiffPlaces_d12g0v0_Shanghai + - opcDBDiffPlaces_d27g0v0_Shanghai + - opcDCDiffPlaces_d13g0v0_Shanghai + - opcDBDiffPlaces_d28g0v0_Shanghai + - opcDCDiffPlaces_d14g0v0_Shanghai + - opcDBDiffPlaces_d29g0v0_Shanghai + - opcDCDiffPlaces_d15g0v0_Shanghai + - opcDBDiffPlaces_d31g0v0_Shanghai + - opcDBDiffPlaces_d30g0v0_Shanghai + - opcDCDiffPlaces_d16g0v0_Shanghai + - opcDBDiffPlaces_d32g0v0_Shanghai + - opcDCDiffPlaces_d2g0v0_Shanghai + - opcDBDiffPlaces_d33g0v0_Shanghai + - opcDBDiffPlaces_d34g0v0_Shanghai + - opcDCDiffPlaces_d17g0v0_Shanghai + - opcDCDiffPlaces_d18g0v0_Shanghai + - opcDCDiffPlaces_d19g0v0_Shanghai + - opcDCDiffPlaces_d3g0v0_Shanghai + - opcDCDiffPlaces_d21g0v0_Shanghai + - opcDDDiffPlaces_d0g0v0_Shanghai + - opcDCDiffPlaces_d4g0v0_Shanghai + - opcDCDiffPlaces_d20g0v0_Shanghai + - opcDCDiffPlaces_d22g0v0_Shanghai + - opcDCDiffPlaces_d5g0v0_Shanghai + - opcDCDiffPlaces_d23g0v0_Shanghai + - opcDCDiffPlaces_d6g0v0_Shanghai + - opcDCDiffPlaces_d7g0v0_Shanghai + - opcDCDiffPlaces_d8g0v0_Shanghai + - opcDCDiffPlaces_d9g0v0_Shanghai + - opcDCDiffPlaces_d24g0v0_Shanghai + - opcDCDiffPlaces_d25g0v0_Shanghai + - opcDDDiffPlaces_d1g0v0_Shanghai + - opcDDDiffPlaces_d10g0v0_Shanghai + - opcDDDiffPlaces_d11g0v0_Shanghai + - opcDCDiffPlaces_d26g0v0_Shanghai + - opcDDDiffPlaces_d12g0v0_Shanghai + - opcDCDiffPlaces_d27g0v0_Shanghai + - opcDDDiffPlaces_d13g0v0_Shanghai + - opcDCDiffPlaces_d28g0v0_Shanghai + - opcDDDiffPlaces_d14g0v0_Shanghai + - opcDCDiffPlaces_d29g0v0_Shanghai + - opcDDDiffPlaces_d15g0v0_Shanghai + - opcDCDiffPlaces_d30g0v0_Shanghai + - opcDDDiffPlaces_d16g0v0_Shanghai + - opcDCDiffPlaces_d31g0v0_Shanghai + - opcDDDiffPlaces_d2g0v0_Shanghai + - opcDCDiffPlaces_d32g0v0_Shanghai + - opcDCDiffPlaces_d33g0v0_Shanghai + - opcDCDiffPlaces_d34g0v0_Shanghai + - opcDDDiffPlaces_d17g0v0_Shanghai + - opcDDDiffPlaces_d18g0v0_Shanghai + - opcDDDiffPlaces_d19g0v0_Shanghai + - opcDDDiffPlaces_d3g0v0_Shanghai + - opcDEDiffPlaces_d0g0v0_Shanghai + - opcDDDiffPlaces_d21g0v0_Shanghai + - opcDDDiffPlaces_d4g0v0_Shanghai + - opcDDDiffPlaces_d20g0v0_Shanghai + - opcDDDiffPlaces_d22g0v0_Shanghai + - opcDDDiffPlaces_d5g0v0_Shanghai + - opcDDDiffPlaces_d23g0v0_Shanghai + - opcDDDiffPlaces_d6g0v0_Shanghai + - opcDDDiffPlaces_d7g0v0_Shanghai + - opcDDDiffPlaces_d8g0v0_Shanghai + - opcDDDiffPlaces_d24g0v0_Shanghai + - opcDDDiffPlaces_d9g0v0_Shanghai + - opcDDDiffPlaces_d25g0v0_Shanghai + - opcDEDiffPlaces_d1g0v0_Shanghai + - opcDEDiffPlaces_d10g0v0_Shanghai + - opcDEDiffPlaces_d11g0v0_Shanghai + - opcDDDiffPlaces_d26g0v0_Shanghai + - opcDEDiffPlaces_d12g0v0_Shanghai + - opcDDDiffPlaces_d27g0v0_Shanghai + - opcDEDiffPlaces_d13g0v0_Shanghai + - opcDDDiffPlaces_d28g0v0_Shanghai + - opcDEDiffPlaces_d14g0v0_Shanghai + - opcDDDiffPlaces_d29g0v0_Shanghai + - opcDEDiffPlaces_d15g0v0_Shanghai + - opcDDDiffPlaces_d30g0v0_Shanghai + - opcDEDiffPlaces_d16g0v0_Shanghai + - opcDDDiffPlaces_d31g0v0_Shanghai + - opcDEDiffPlaces_d2g0v0_Shanghai + - opcDDDiffPlaces_d32g0v0_Shanghai + - opcDDDiffPlaces_d33g0v0_Shanghai + - opcDDDiffPlaces_d34g0v0_Shanghai + - opcDEDiffPlaces_d17g0v0_Shanghai + - opcDEDiffPlaces_d18g0v0_Shanghai + - opcDEDiffPlaces_d19g0v0_Shanghai + - opcDEDiffPlaces_d3g0v0_Shanghai + - opcDEDiffPlaces_d21g0v0_Shanghai + - opcDFDiffPlaces_d0g0v0_Shanghai + - opcDEDiffPlaces_d20g0v0_Shanghai + - opcDEDiffPlaces_d4g0v0_Shanghai + - opcDEDiffPlaces_d22g0v0_Shanghai + - opcDEDiffPlaces_d5g0v0_Shanghai + - opcDEDiffPlaces_d23g0v0_Shanghai + - opcDEDiffPlaces_d6g0v0_Shanghai + - opcDEDiffPlaces_d7g0v0_Shanghai + - opcDEDiffPlaces_d8g0v0_Shanghai + - opcDEDiffPlaces_d24g0v0_Shanghai + - opcDEDiffPlaces_d9g0v0_Shanghai + - opcDEDiffPlaces_d25g0v0_Shanghai + - opcDFDiffPlaces_d1g0v0_Shanghai + - opcDFDiffPlaces_d10g0v0_Shanghai + - opcDFDiffPlaces_d11g0v0_Shanghai + - opcDEDiffPlaces_d26g0v0_Shanghai + - opcDFDiffPlaces_d12g0v0_Shanghai + - opcDEDiffPlaces_d27g0v0_Shanghai + - opcDFDiffPlaces_d13g0v0_Shanghai + - opcDEDiffPlaces_d28g0v0_Shanghai + - opcDFDiffPlaces_d14g0v0_Shanghai + - opcDEDiffPlaces_d29g0v0_Shanghai + - opcDFDiffPlaces_d15g0v0_Shanghai + - opcDEDiffPlaces_d30g0v0_Shanghai + - opcDFDiffPlaces_d16g0v0_Shanghai + - opcDEDiffPlaces_d31g0v0_Shanghai + - opcDEDiffPlaces_d32g0v0_Shanghai + - opcDFDiffPlaces_d2g0v0_Shanghai + - opcDEDiffPlaces_d33g0v0_Shanghai + - opcDEDiffPlaces_d34g0v0_Shanghai + - opcDFDiffPlaces_d17g0v0_Shanghai + - opcDFDiffPlaces_d18g0v0_Shanghai + - opcDFDiffPlaces_d19g0v0_Shanghai + - opcDFDiffPlaces_d3g0v0_Shanghai + - opcDFDiffPlaces_d21g0v0_Shanghai + - opcE0DiffPlaces_d0g0v0_Shanghai + - opcDFDiffPlaces_d4g0v0_Shanghai + - opcDFDiffPlaces_d20g0v0_Shanghai + - opcDFDiffPlaces_d22g0v0_Shanghai + - opcDFDiffPlaces_d5g0v0_Shanghai + - opcDFDiffPlaces_d23g0v0_Shanghai + - opcDFDiffPlaces_d6g0v0_Shanghai + - opcDFDiffPlaces_d7g0v0_Shanghai + - opcDFDiffPlaces_d8g0v0_Shanghai + - opcDFDiffPlaces_d9g0v0_Shanghai + - opcDFDiffPlaces_d24g0v0_Shanghai + - opcDFDiffPlaces_d25g0v0_Shanghai + - opcE0DiffPlaces_d1g0v0_Shanghai + - opcE0DiffPlaces_d10g0v0_Shanghai + - opcE0DiffPlaces_d11g0v0_Shanghai + - opcDFDiffPlaces_d26g0v0_Shanghai + - opcE0DiffPlaces_d12g0v0_Shanghai + - opcDFDiffPlaces_d27g0v0_Shanghai + - opcE0DiffPlaces_d13g0v0_Shanghai + - opcDFDiffPlaces_d28g0v0_Shanghai + - opcE0DiffPlaces_d14g0v0_Shanghai + - opcDFDiffPlaces_d29g0v0_Shanghai + - opcE0DiffPlaces_d15g0v0_Shanghai + - opcE0DiffPlaces_d16g0v0_Shanghai + - opcDFDiffPlaces_d30g0v0_Shanghai + - opcDFDiffPlaces_d31g0v0_Shanghai + - opcE0DiffPlaces_d2g0v0_Shanghai + - opcDFDiffPlaces_d32g0v0_Shanghai + - opcDFDiffPlaces_d33g0v0_Shanghai + - opcDFDiffPlaces_d34g0v0_Shanghai + - opcE0DiffPlaces_d17g0v0_Shanghai + - opcE0DiffPlaces_d18g0v0_Shanghai + - opcE0DiffPlaces_d19g0v0_Shanghai + - opcE0DiffPlaces_d3g0v0_Shanghai + - opcE0DiffPlaces_d21g0v0_Shanghai + - opcE1DiffPlaces_d0g0v0_Shanghai + - opcE0DiffPlaces_d4g0v0_Shanghai + - opcE0DiffPlaces_d20g0v0_Shanghai + - opcE0DiffPlaces_d22g0v0_Shanghai + - opcE0DiffPlaces_d5g0v0_Shanghai + - opcE0DiffPlaces_d23g0v0_Shanghai + - opcE0DiffPlaces_d6g0v0_Shanghai + - opcE0DiffPlaces_d7g0v0_Shanghai + - opcE0DiffPlaces_d8g0v0_Shanghai + - opcE0DiffPlaces_d24g0v0_Shanghai + - opcE0DiffPlaces_d9g0v0_Shanghai + - opcE0DiffPlaces_d25g0v0_Shanghai + - opcE1DiffPlaces_d1g0v0_Shanghai + - opcE1DiffPlaces_d10g0v0_Shanghai + - opcE0DiffPlaces_d26g0v0_Shanghai + - opcE1DiffPlaces_d11g0v0_Shanghai + - opcE1DiffPlaces_d12g0v0_Shanghai + - opcE0DiffPlaces_d27g0v0_Shanghai + - opcE1DiffPlaces_d13g0v0_Shanghai + - opcE0DiffPlaces_d28g0v0_Shanghai + - opcE1DiffPlaces_d14g0v0_Shanghai + - opcE0DiffPlaces_d29g0v0_Shanghai + - opcE1DiffPlaces_d15g0v0_Shanghai + - opcE0DiffPlaces_d30g0v0_Shanghai + - opcE0DiffPlaces_d31g0v0_Shanghai + - opcE1DiffPlaces_d16g0v0_Shanghai + - opcE0DiffPlaces_d32g0v0_Shanghai + - opcE1DiffPlaces_d2g0v0_Shanghai + - opcE0DiffPlaces_d33g0v0_Shanghai + - opcE0DiffPlaces_d34g0v0_Shanghai + - opcE1DiffPlaces_d17g0v0_Shanghai + - opcE1DiffPlaces_d18g0v0_Shanghai + - opcE1DiffPlaces_d19g0v0_Shanghai + - opcE1DiffPlaces_d3g0v0_Shanghai + - opcE1DiffPlaces_d21g0v0_Shanghai + - opcE2DiffPlaces_d0g0v0_Shanghai + - opcE1DiffPlaces_d4g0v0_Shanghai + - opcE1DiffPlaces_d20g0v0_Shanghai + - opcE1DiffPlaces_d22g0v0_Shanghai + - opcE1DiffPlaces_d5g0v0_Shanghai + - opcE1DiffPlaces_d23g0v0_Shanghai + - opcE1DiffPlaces_d6g0v0_Shanghai + - opcE1DiffPlaces_d7g0v0_Shanghai + - opcE1DiffPlaces_d8g0v0_Shanghai + - opcE1DiffPlaces_d9g0v0_Shanghai + - opcE1DiffPlaces_d24g0v0_Shanghai + - opcE1DiffPlaces_d25g0v0_Shanghai + - opcE2DiffPlaces_d1g0v0_Shanghai + - opcE2DiffPlaces_d10g0v0_Shanghai + - opcE2DiffPlaces_d11g0v0_Shanghai + - opcE1DiffPlaces_d26g0v0_Shanghai + - opcE2DiffPlaces_d12g0v0_Shanghai + - opcE1DiffPlaces_d27g0v0_Shanghai + - opcE2DiffPlaces_d13g0v0_Shanghai + - opcE1DiffPlaces_d28g0v0_Shanghai + - opcE2DiffPlaces_d14g0v0_Shanghai + - opcE1DiffPlaces_d29g0v0_Shanghai + - opcE2DiffPlaces_d15g0v0_Shanghai + - opcE1DiffPlaces_d30g0v0_Shanghai + - opcE1DiffPlaces_d31g0v0_Shanghai + - opcE2DiffPlaces_d16g0v0_Shanghai + - opcE2DiffPlaces_d2g0v0_Shanghai + - opcE1DiffPlaces_d32g0v0_Shanghai + - opcE1DiffPlaces_d33g0v0_Shanghai + - opcE1DiffPlaces_d34g0v0_Shanghai + - opcE2DiffPlaces_d17g0v0_Shanghai + - opcE2DiffPlaces_d18g0v0_Shanghai + - opcE2DiffPlaces_d19g0v0_Shanghai + - opcE2DiffPlaces_d3g0v0_Shanghai + - opcE2DiffPlaces_d21g0v0_Shanghai + - opcE3DiffPlaces_d0g0v0_Shanghai + - opcE2DiffPlaces_d4g0v0_Shanghai + - opcE2DiffPlaces_d20g0v0_Shanghai + - opcE2DiffPlaces_d22g0v0_Shanghai + - opcE2DiffPlaces_d5g0v0_Shanghai + - opcE2DiffPlaces_d23g0v0_Shanghai + - opcE2DiffPlaces_d6g0v0_Shanghai + - opcE2DiffPlaces_d7g0v0_Shanghai + - opcE2DiffPlaces_d8g0v0_Shanghai + - opcE2DiffPlaces_d24g0v0_Shanghai + - opcE2DiffPlaces_d9g0v0_Shanghai + - opcE3DiffPlaces_d1g0v0_Shanghai + - opcE2DiffPlaces_d25g0v0_Shanghai + - opcE3DiffPlaces_d10g0v0_Shanghai + - opcE2DiffPlaces_d26g0v0_Shanghai + - opcE3DiffPlaces_d11g0v0_Shanghai + - opcE3DiffPlaces_d12g0v0_Shanghai + - opcE2DiffPlaces_d27g0v0_Shanghai + - opcE3DiffPlaces_d13g0v0_Shanghai + - opcE2DiffPlaces_d28g0v0_Shanghai + - opcE3DiffPlaces_d14g0v0_Shanghai + - opcE2DiffPlaces_d29g0v0_Shanghai + - opcE3DiffPlaces_d15g0v0_Shanghai + - opcE3DiffPlaces_d16g0v0_Shanghai + - opcE2DiffPlaces_d30g0v0_Shanghai + - opcE2DiffPlaces_d31g0v0_Shanghai + - opcE2DiffPlaces_d32g0v0_Shanghai + - opcE3DiffPlaces_d2g0v0_Shanghai + - opcE2DiffPlaces_d33g0v0_Shanghai + - opcE2DiffPlaces_d34g0v0_Shanghai + - opcE3DiffPlaces_d17g0v0_Shanghai + - opcE3DiffPlaces_d18g0v0_Shanghai + - opcE3DiffPlaces_d19g0v0_Shanghai + - opcE3DiffPlaces_d3g0v0_Shanghai + - opcE4DiffPlaces_d0g0v0_Shanghai + - opcE3DiffPlaces_d21g0v0_Shanghai + - opcE3DiffPlaces_d20g0v0_Shanghai + - opcE3DiffPlaces_d4g0v0_Shanghai + - opcE3DiffPlaces_d22g0v0_Shanghai + - opcE3DiffPlaces_d5g0v0_Shanghai + - opcE3DiffPlaces_d23g0v0_Shanghai + - opcE3DiffPlaces_d6g0v0_Shanghai + - opcE3DiffPlaces_d7g0v0_Shanghai + - opcE3DiffPlaces_d8g0v0_Shanghai + - opcE3DiffPlaces_d9g0v0_Shanghai + - opcE3DiffPlaces_d24g0v0_Shanghai + - opcE3DiffPlaces_d25g0v0_Shanghai + - opcE4DiffPlaces_d1g0v0_Shanghai + - opcE4DiffPlaces_d10g0v0_Shanghai + - opcE4DiffPlaces_d11g0v0_Shanghai + - opcE3DiffPlaces_d26g0v0_Shanghai + - opcE4DiffPlaces_d12g0v0_Shanghai + - opcE3DiffPlaces_d27g0v0_Shanghai + - opcE4DiffPlaces_d13g0v0_Shanghai + - opcE3DiffPlaces_d28g0v0_Shanghai + - opcE4DiffPlaces_d14g0v0_Shanghai + - opcE3DiffPlaces_d29g0v0_Shanghai + - opcE4DiffPlaces_d15g0v0_Shanghai + - opcE3DiffPlaces_d30g0v0_Shanghai + - opcE4DiffPlaces_d16g0v0_Shanghai + - opcE3DiffPlaces_d31g0v0_Shanghai + - opcE4DiffPlaces_d2g0v0_Shanghai + - opcE3DiffPlaces_d32g0v0_Shanghai + - opcE3DiffPlaces_d33g0v0_Shanghai + - opcE3DiffPlaces_d34g0v0_Shanghai + - opcE4DiffPlaces_d17g0v0_Shanghai + - opcE4DiffPlaces_d18g0v0_Shanghai + - opcE4DiffPlaces_d19g0v0_Shanghai + - opcE4DiffPlaces_d3g0v0_Shanghai + - opcE4DiffPlaces_d21g0v0_Shanghai + - opcE5DiffPlaces_d0g0v0_Shanghai + - opcE4DiffPlaces_d20g0v0_Shanghai + - opcE4DiffPlaces_d4g0v0_Shanghai + - opcE4DiffPlaces_d22g0v0_Shanghai + - opcE4DiffPlaces_d23g0v0_Shanghai + - opcE4DiffPlaces_d5g0v0_Shanghai + - opcE4DiffPlaces_d6g0v0_Shanghai + - opcE4DiffPlaces_d7g0v0_Shanghai + - opcE4DiffPlaces_d8g0v0_Shanghai + - opcE4DiffPlaces_d24g0v0_Shanghai + - opcE4DiffPlaces_d9g0v0_Shanghai + - opcE4DiffPlaces_d25g0v0_Shanghai + - opcE5DiffPlaces_d1g0v0_Shanghai + - opcE5DiffPlaces_d10g0v0_Shanghai + - opcE5DiffPlaces_d11g0v0_Shanghai + - opcE4DiffPlaces_d26g0v0_Shanghai + - opcE5DiffPlaces_d12g0v0_Shanghai + - opcE4DiffPlaces_d27g0v0_Shanghai + - opcE5DiffPlaces_d13g0v0_Shanghai + - opcE4DiffPlaces_d28g0v0_Shanghai + - opcE5DiffPlaces_d14g0v0_Shanghai + - opcE4DiffPlaces_d29g0v0_Shanghai + - opcE5DiffPlaces_d15g0v0_Shanghai + - opcE5DiffPlaces_d16g0v0_Shanghai + - opcE4DiffPlaces_d31g0v0_Shanghai + - opcE4DiffPlaces_d30g0v0_Shanghai + - opcE4DiffPlaces_d32g0v0_Shanghai + - opcE5DiffPlaces_d2g0v0_Shanghai + - opcE4DiffPlaces_d33g0v0_Shanghai + - opcE4DiffPlaces_d34g0v0_Shanghai + - opcE5DiffPlaces_d17g0v0_Shanghai + - opcE5DiffPlaces_d18g0v0_Shanghai + - opcE5DiffPlaces_d19g0v0_Shanghai + - opcE5DiffPlaces_d3g0v0_Shanghai + - opcE6DiffPlaces_d0g0v0_Shanghai + - opcE5DiffPlaces_d21g0v0_Shanghai + - opcE5DiffPlaces_d4g0v0_Shanghai + - opcE5DiffPlaces_d20g0v0_Shanghai + - opcE5DiffPlaces_d22g0v0_Shanghai + - opcE5DiffPlaces_d5g0v0_Shanghai + - opcE5DiffPlaces_d23g0v0_Shanghai + - opcE5DiffPlaces_d6g0v0_Shanghai + - opcE5DiffPlaces_d7g0v0_Shanghai + - opcE5DiffPlaces_d8g0v0_Shanghai + - opcE5DiffPlaces_d24g0v0_Shanghai + - opcE5DiffPlaces_d9g0v0_Shanghai + - opcE5DiffPlaces_d25g0v0_Shanghai + - opcE6DiffPlaces_d1g0v0_Shanghai + - opcE6DiffPlaces_d10g0v0_Shanghai + - opcE6DiffPlaces_d11g0v0_Shanghai + - opcE5DiffPlaces_d26g0v0_Shanghai + - opcE6DiffPlaces_d12g0v0_Shanghai + - opcE6DiffPlaces_d13g0v0_Shanghai + - opcE5DiffPlaces_d27g0v0_Shanghai + - opcE5DiffPlaces_d28g0v0_Shanghai + - opcE6DiffPlaces_d14g0v0_Shanghai + - opcE5DiffPlaces_d29g0v0_Shanghai + - opcE6DiffPlaces_d15g0v0_Shanghai + - opcE5DiffPlaces_d30g0v0_Shanghai + - opcE6DiffPlaces_d16g0v0_Shanghai + - opcE5DiffPlaces_d31g0v0_Shanghai + - opcE6DiffPlaces_d2g0v0_Shanghai + - opcE5DiffPlaces_d32g0v0_Shanghai + - opcE5DiffPlaces_d33g0v0_Shanghai + - opcE5DiffPlaces_d34g0v0_Shanghai + - opcE6DiffPlaces_d17g0v0_Shanghai + - opcE6DiffPlaces_d18g0v0_Shanghai + - opcE6DiffPlaces_d19g0v0_Shanghai + - opcE6DiffPlaces_d3g0v0_Shanghai + - opcE6DiffPlaces_d21g0v0_Shanghai + - opcE7DiffPlaces_d0g0v0_Shanghai + - opcE6DiffPlaces_d20g0v0_Shanghai + - opcE6DiffPlaces_d4g0v0_Shanghai + - opcE6DiffPlaces_d22g0v0_Shanghai + - opcE6DiffPlaces_d23g0v0_Shanghai + - opcE6DiffPlaces_d5g0v0_Shanghai + - opcE6DiffPlaces_d6g0v0_Shanghai + - opcE6DiffPlaces_d7g0v0_Shanghai + - opcE6DiffPlaces_d8g0v0_Shanghai + - opcE6DiffPlaces_d24g0v0_Shanghai + - opcE6DiffPlaces_d9g0v0_Shanghai + - opcE6DiffPlaces_d25g0v0_Shanghai + - opcE7DiffPlaces_d1g0v0_Shanghai + - opcE7DiffPlaces_d10g0v0_Shanghai + - opcE7DiffPlaces_d11g0v0_Shanghai + - opcE6DiffPlaces_d26g0v0_Shanghai + - opcE7DiffPlaces_d12g0v0_Shanghai + - opcE6DiffPlaces_d27g0v0_Shanghai + - opcE7DiffPlaces_d13g0v0_Shanghai + - opcE6DiffPlaces_d28g0v0_Shanghai + - opcE7DiffPlaces_d14g0v0_Shanghai + - opcE6DiffPlaces_d29g0v0_Shanghai + - opcE7DiffPlaces_d15g0v0_Shanghai + - opcE7DiffPlaces_d16g0v0_Shanghai + - opcE6DiffPlaces_d30g0v0_Shanghai + - opcE6DiffPlaces_d31g0v0_Shanghai + - opcE6DiffPlaces_d32g0v0_Shanghai + - opcE7DiffPlaces_d2g0v0_Shanghai + - opcE6DiffPlaces_d33g0v0_Shanghai + - opcE6DiffPlaces_d34g0v0_Shanghai + - opcE7DiffPlaces_d17g0v0_Shanghai + - opcE7DiffPlaces_d18g0v0_Shanghai + - opcE7DiffPlaces_d19g0v0_Shanghai + - opcE7DiffPlaces_d3g0v0_Shanghai + - opcE7DiffPlaces_d21g0v0_Shanghai + - opcE8DiffPlaces_d0g0v0_Shanghai + - opcE7DiffPlaces_d4g0v0_Shanghai + - opcE7DiffPlaces_d20g0v0_Shanghai + - opcE7DiffPlaces_d22g0v0_Shanghai + - opcE7DiffPlaces_d5g0v0_Shanghai + - opcE7DiffPlaces_d23g0v0_Shanghai + - opcE7DiffPlaces_d6g0v0_Shanghai + - opcE7DiffPlaces_d7g0v0_Shanghai + - opcE7DiffPlaces_d8g0v0_Shanghai + - opcE7DiffPlaces_d24g0v0_Shanghai + - opcE7DiffPlaces_d9g0v0_Shanghai + - opcE8DiffPlaces_d1g0v0_Shanghai + - opcE7DiffPlaces_d25g0v0_Shanghai + - opcE8DiffPlaces_d10g0v0_Shanghai + - opcE8DiffPlaces_d11g0v0_Shanghai + - opcE7DiffPlaces_d26g0v0_Shanghai + - opcE8DiffPlaces_d12g0v0_Shanghai + - opcE7DiffPlaces_d27g0v0_Shanghai + - opcE8DiffPlaces_d13g0v0_Shanghai + - opcE7DiffPlaces_d28g0v0_Shanghai + - opcE8DiffPlaces_d14g0v0_Shanghai + - opcE8DiffPlaces_d15g0v0_Shanghai + - opcE7DiffPlaces_d29g0v0_Shanghai + - opcE7DiffPlaces_d30g0v0_Shanghai + - opcE8DiffPlaces_d16g0v0_Shanghai + - opcE7DiffPlaces_d31g0v0_Shanghai + - opcE8DiffPlaces_d2g0v0_Shanghai + - opcE7DiffPlaces_d32g0v0_Shanghai + - opcE7DiffPlaces_d33g0v0_Shanghai + - opcE7DiffPlaces_d34g0v0_Shanghai + - opcE8DiffPlaces_d17g0v0_Shanghai + - opcE8DiffPlaces_d18g0v0_Shanghai + - opcE8DiffPlaces_d19g0v0_Shanghai + - opcE8DiffPlaces_d3g0v0_Shanghai + - opcE9DiffPlaces_d0g0v0_Shanghai + - opcE8DiffPlaces_d21g0v0_Shanghai + - opcE8DiffPlaces_d20g0v0_Shanghai + - opcE8DiffPlaces_d4g0v0_Shanghai + - opcE8DiffPlaces_d22g0v0_Shanghai + - opcE8DiffPlaces_d5g0v0_Shanghai + - opcE8DiffPlaces_d23g0v0_Shanghai + - opcE8DiffPlaces_d6g0v0_Shanghai + - opcE8DiffPlaces_d7g0v0_Shanghai + - opcE8DiffPlaces_d8g0v0_Shanghai + - opcE8DiffPlaces_d9g0v0_Shanghai + - opcE8DiffPlaces_d24g0v0_Shanghai + - opcE8DiffPlaces_d25g0v0_Shanghai + - opcE9DiffPlaces_d1g0v0_Shanghai + - opcE9DiffPlaces_d10g0v0_Shanghai + - opcE9DiffPlaces_d11g0v0_Shanghai + - opcE8DiffPlaces_d26g0v0_Shanghai + - opcE9DiffPlaces_d12g0v0_Shanghai + - opcE8DiffPlaces_d27g0v0_Shanghai + - opcE9DiffPlaces_d13g0v0_Shanghai + - opcE8DiffPlaces_d28g0v0_Shanghai + - opcE9DiffPlaces_d14g0v0_Shanghai + - opcE8DiffPlaces_d29g0v0_Shanghai + - opcE9DiffPlaces_d15g0v0_Shanghai + - opcE8DiffPlaces_d30g0v0_Shanghai + - opcE9DiffPlaces_d16g0v0_Shanghai + - opcE8DiffPlaces_d31g0v0_Shanghai + - opcE9DiffPlaces_d2g0v0_Shanghai + - opcE8DiffPlaces_d32g0v0_Shanghai + - opcE8DiffPlaces_d33g0v0_Shanghai + - opcE8DiffPlaces_d34g0v0_Shanghai + - opcE9DiffPlaces_d17g0v0_Shanghai + - opcE9DiffPlaces_d18g0v0_Shanghai + - opcE9DiffPlaces_d19g0v0_Shanghai + - opcE9DiffPlaces_d3g0v0_Shanghai + - opcE9DiffPlaces_d21g0v0_Shanghai + - opcEADiffPlaces_d0g0v0_Shanghai + - opcE9DiffPlaces_d4g0v0_Shanghai + - opcE9DiffPlaces_d20g0v0_Shanghai + - opcE9DiffPlaces_d22g0v0_Shanghai + - opcE9DiffPlaces_d5g0v0_Shanghai + - opcE9DiffPlaces_d23g0v0_Shanghai + - opcE9DiffPlaces_d6g0v0_Shanghai + - opcE9DiffPlaces_d7g0v0_Shanghai + - opcE9DiffPlaces_d8g0v0_Shanghai + - opcE9DiffPlaces_d24g0v0_Shanghai + - opcE9DiffPlaces_d9g0v0_Shanghai + - opcE9DiffPlaces_d25g0v0_Shanghai + - opcEADiffPlaces_d1g0v0_Shanghai + - opcEADiffPlaces_d10g0v0_Shanghai + - opcEADiffPlaces_d11g0v0_Shanghai + - opcE9DiffPlaces_d26g0v0_Shanghai + - opcEADiffPlaces_d12g0v0_Shanghai + - opcE9DiffPlaces_d27g0v0_Shanghai + - opcEADiffPlaces_d13g0v0_Shanghai + - opcE9DiffPlaces_d28g0v0_Shanghai + - opcEADiffPlaces_d14g0v0_Shanghai + - opcE9DiffPlaces_d29g0v0_Shanghai + - opcEADiffPlaces_d15g0v0_Shanghai + - opcE9DiffPlaces_d30g0v0_Shanghai + - opcEADiffPlaces_d16g0v0_Shanghai + - opcE9DiffPlaces_d32g0v0_Shanghai + - opcE9DiffPlaces_d31g0v0_Shanghai + - opcEADiffPlaces_d2g0v0_Shanghai + - opcE9DiffPlaces_d33g0v0_Shanghai + - opcE9DiffPlaces_d34g0v0_Shanghai + - opcEADiffPlaces_d17g0v0_Shanghai + - opcEADiffPlaces_d18g0v0_Shanghai + - opcEADiffPlaces_d19g0v0_Shanghai + - opcEADiffPlaces_d3g0v0_Shanghai + - opcEADiffPlaces_d21g0v0_Shanghai + - opcEADiffPlaces_d4g0v0_Shanghai + - opcEBDiffPlaces_d0g0v0_Shanghai + - opcEADiffPlaces_d20g0v0_Shanghai + - opcEADiffPlaces_d22g0v0_Shanghai + - opcEADiffPlaces_d5g0v0_Shanghai + - opcEADiffPlaces_d23g0v0_Shanghai + - opcEADiffPlaces_d6g0v0_Shanghai + - opcEADiffPlaces_d7g0v0_Shanghai + - opcEADiffPlaces_d8g0v0_Shanghai + - opcEADiffPlaces_d24g0v0_Shanghai + - opcEADiffPlaces_d9g0v0_Shanghai + - opcEADiffPlaces_d25g0v0_Shanghai + - opcEBDiffPlaces_d1g0v0_Shanghai + - opcEBDiffPlaces_d10g0v0_Shanghai + - opcEADiffPlaces_d26g0v0_Shanghai + - opcEBDiffPlaces_d11g0v0_Shanghai + - opcEBDiffPlaces_d12g0v0_Shanghai + - opcEADiffPlaces_d27g0v0_Shanghai + - opcEBDiffPlaces_d13g0v0_Shanghai + - opcEADiffPlaces_d28g0v0_Shanghai + - opcEBDiffPlaces_d14g0v0_Shanghai + - opcEADiffPlaces_d29g0v0_Shanghai + - opcEBDiffPlaces_d15g0v0_Shanghai + - opcEADiffPlaces_d30g0v0_Shanghai + - opcEADiffPlaces_d31g0v0_Shanghai + - opcEBDiffPlaces_d16g0v0_Shanghai + - opcEBDiffPlaces_d2g0v0_Shanghai + - opcEADiffPlaces_d32g0v0_Shanghai + - opcEADiffPlaces_d34g0v0_Shanghai + - opcEADiffPlaces_d33g0v0_Shanghai + - opcEBDiffPlaces_d17g0v0_Shanghai + - opcEBDiffPlaces_d18g0v0_Shanghai + - opcEBDiffPlaces_d19g0v0_Shanghai + - opcEBDiffPlaces_d3g0v0_Shanghai + - opcEBDiffPlaces_d21g0v0_Shanghai + - opcECDiffPlaces_d0g0v0_Shanghai + - opcEBDiffPlaces_d4g0v0_Shanghai + - opcEBDiffPlaces_d20g0v0_Shanghai + - opcEBDiffPlaces_d22g0v0_Shanghai + - opcEBDiffPlaces_d5g0v0_Shanghai + - opcEBDiffPlaces_d23g0v0_Shanghai + - opcEBDiffPlaces_d6g0v0_Shanghai + - opcEBDiffPlaces_d7g0v0_Shanghai + - opcEBDiffPlaces_d8g0v0_Shanghai + - opcEBDiffPlaces_d24g0v0_Shanghai + - opcEBDiffPlaces_d9g0v0_Shanghai + - opcEBDiffPlaces_d25g0v0_Shanghai + - opcECDiffPlaces_d1g0v0_Shanghai + - opcECDiffPlaces_d10g0v0_Shanghai + - opcEBDiffPlaces_d26g0v0_Shanghai + - opcECDiffPlaces_d11g0v0_Shanghai + - opcECDiffPlaces_d12g0v0_Shanghai + - opcEBDiffPlaces_d27g0v0_Shanghai + - opcECDiffPlaces_d13g0v0_Shanghai + - opcEBDiffPlaces_d28g0v0_Shanghai + - opcECDiffPlaces_d14g0v0_Shanghai + - opcEBDiffPlaces_d29g0v0_Shanghai + - opcECDiffPlaces_d15g0v0_Shanghai + - opcECDiffPlaces_d16g0v0_Shanghai + - opcEBDiffPlaces_d30g0v0_Shanghai + - opcEBDiffPlaces_d31g0v0_Shanghai + - opcEBDiffPlaces_d32g0v0_Shanghai + - opcECDiffPlaces_d2g0v0_Shanghai + - opcEBDiffPlaces_d33g0v0_Shanghai + - opcEBDiffPlaces_d34g0v0_Shanghai + - opcECDiffPlaces_d17g0v0_Shanghai + - opcECDiffPlaces_d18g0v0_Shanghai + - opcECDiffPlaces_d19g0v0_Shanghai + - opcECDiffPlaces_d3g0v0_Shanghai + - opcECDiffPlaces_d21g0v0_Shanghai + - opcEDDiffPlaces_d0g0v0_Shanghai + - opcECDiffPlaces_d4g0v0_Shanghai + - opcECDiffPlaces_d20g0v0_Shanghai + - opcECDiffPlaces_d22g0v0_Shanghai + - opcECDiffPlaces_d5g0v0_Shanghai + - opcECDiffPlaces_d23g0v0_Shanghai + - opcECDiffPlaces_d6g0v0_Shanghai + - opcECDiffPlaces_d7g0v0_Shanghai + - opcECDiffPlaces_d8g0v0_Shanghai + - opcECDiffPlaces_d24g0v0_Shanghai + - opcECDiffPlaces_d9g0v0_Shanghai + - opcEDDiffPlaces_d1g0v0_Shanghai + - opcECDiffPlaces_d25g0v0_Shanghai + - opcEDDiffPlaces_d10g0v0_Shanghai + - opcEDDiffPlaces_d11g0v0_Shanghai + - opcECDiffPlaces_d26g0v0_Shanghai + - opcEDDiffPlaces_d12g0v0_Shanghai + - opcECDiffPlaces_d27g0v0_Shanghai + - opcEDDiffPlaces_d13g0v0_Shanghai + - opcECDiffPlaces_d28g0v0_Shanghai + - opcEDDiffPlaces_d14g0v0_Shanghai + - opcECDiffPlaces_d29g0v0_Shanghai + - opcEDDiffPlaces_d15g0v0_Shanghai + - opcEDDiffPlaces_d16g0v0_Shanghai + - opcECDiffPlaces_d31g0v0_Shanghai + - opcECDiffPlaces_d30g0v0_Shanghai + - opcEDDiffPlaces_d2g0v0_Shanghai + - opcECDiffPlaces_d32g0v0_Shanghai + - opcECDiffPlaces_d33g0v0_Shanghai + - opcECDiffPlaces_d34g0v0_Shanghai + - opcEDDiffPlaces_d17g0v0_Shanghai + - opcEDDiffPlaces_d18g0v0_Shanghai + - opcEDDiffPlaces_d19g0v0_Shanghai + - opcEDDiffPlaces_d3g0v0_Shanghai + - opcEDDiffPlaces_d21g0v0_Shanghai + - opcEEDiffPlaces_d0g0v0_Shanghai + - opcEDDiffPlaces_d4g0v0_Shanghai + - opcEDDiffPlaces_d20g0v0_Shanghai + - opcEDDiffPlaces_d22g0v0_Shanghai + - opcEDDiffPlaces_d5g0v0_Shanghai + - opcEDDiffPlaces_d23g0v0_Shanghai + - opcEDDiffPlaces_d6g0v0_Shanghai + - opcEDDiffPlaces_d7g0v0_Shanghai + - opcEDDiffPlaces_d8g0v0_Shanghai + - opcEDDiffPlaces_d9g0v0_Shanghai + - opcEDDiffPlaces_d24g0v0_Shanghai + - opcEDDiffPlaces_d25g0v0_Shanghai + - opcEEDiffPlaces_d1g0v0_Shanghai + - opcEEDiffPlaces_d10g0v0_Shanghai + - opcEDDiffPlaces_d26g0v0_Shanghai + - opcEEDiffPlaces_d11g0v0_Shanghai + - opcEEDiffPlaces_d12g0v0_Shanghai + - opcEDDiffPlaces_d27g0v0_Shanghai + - opcEEDiffPlaces_d13g0v0_Shanghai + - opcEDDiffPlaces_d28g0v0_Shanghai + - opcEEDiffPlaces_d14g0v0_Shanghai + - opcEDDiffPlaces_d29g0v0_Shanghai + - opcEEDiffPlaces_d15g0v0_Shanghai + - opcEEDiffPlaces_d16g0v0_Shanghai + - opcEDDiffPlaces_d30g0v0_Shanghai + - opcEDDiffPlaces_d31g0v0_Shanghai + - opcEEDiffPlaces_d2g0v0_Shanghai + - opcEDDiffPlaces_d32g0v0_Shanghai + - opcEDDiffPlaces_d33g0v0_Shanghai + - opcEDDiffPlaces_d34g0v0_Shanghai + - opcEEDiffPlaces_d17g0v0_Shanghai + - opcEEDiffPlaces_d18g0v0_Shanghai + - opcEEDiffPlaces_d3g0v0_Shanghai + - opcEEDiffPlaces_d19g0v0_Shanghai + - opcEEDiffPlaces_d21g0v0_Shanghai + - opcEFDiffPlaces_d0g0v0_Shanghai + - opcEEDiffPlaces_d20g0v0_Shanghai + - opcEEDiffPlaces_d4g0v0_Shanghai + - opcEEDiffPlaces_d22g0v0_Shanghai + - opcEEDiffPlaces_d5g0v0_Shanghai + - opcEEDiffPlaces_d23g0v0_Shanghai + - opcEEDiffPlaces_d6g0v0_Shanghai + - opcEEDiffPlaces_d7g0v0_Shanghai + - opcEEDiffPlaces_d8g0v0_Shanghai + - opcEEDiffPlaces_d24g0v0_Shanghai + - opcEEDiffPlaces_d9g0v0_Shanghai + - opcEFDiffPlaces_d1g0v0_Shanghai + - opcEEDiffPlaces_d25g0v0_Shanghai + - opcEFDiffPlaces_d10g0v0_Shanghai + - opcEFDiffPlaces_d11g0v0_Shanghai + - opcEEDiffPlaces_d26g0v0_Shanghai + - opcEFDiffPlaces_d12g0v0_Shanghai + - opcEEDiffPlaces_d27g0v0_Shanghai + - opcEFDiffPlaces_d13g0v0_Shanghai + - opcEEDiffPlaces_d28g0v0_Shanghai + - opcEFDiffPlaces_d14g0v0_Shanghai + - opcEEDiffPlaces_d29g0v0_Shanghai + - opcEFDiffPlaces_d15g0v0_Shanghai + - opcEFDiffPlaces_d16g0v0_Shanghai + - opcEEDiffPlaces_d30g0v0_Shanghai + - opcEEDiffPlaces_d31g0v0_Shanghai + - opcEFDiffPlaces_d2g0v0_Shanghai + - opcEEDiffPlaces_d32g0v0_Shanghai + - opcEEDiffPlaces_d33g0v0_Shanghai + - opcEEDiffPlaces_d34g0v0_Shanghai + - opcEFDiffPlaces_d17g0v0_Shanghai + - opcEFDiffPlaces_d18g0v0_Shanghai + - opcEFDiffPlaces_d19g0v0_Shanghai + - opcEFDiffPlaces_d3g0v0_Shanghai + - opcEFDiffPlaces_d21g0v0_Shanghai + - opcF6DiffPlaces_d0g0v0_Shanghai + - opcEFDiffPlaces_d4g0v0_Shanghai + - opcEFDiffPlaces_d20g0v0_Shanghai + - opcEFDiffPlaces_d22g0v0_Shanghai + - opcEFDiffPlaces_d23g0v0_Shanghai + - opcEFDiffPlaces_d5g0v0_Shanghai + - opcEFDiffPlaces_d6g0v0_Shanghai + - opcEFDiffPlaces_d7g0v0_Shanghai + - opcEFDiffPlaces_d8g0v0_Shanghai + - opcEFDiffPlaces_d24g0v0_Shanghai + - opcEFDiffPlaces_d9g0v0_Shanghai + - opcF6DiffPlaces_d1g0v0_Shanghai + - opcEFDiffPlaces_d25g0v0_Shanghai + - opcF6DiffPlaces_d10g0v0_Shanghai + - opcF6DiffPlaces_d11g0v0_Shanghai + - opcEFDiffPlaces_d26g0v0_Shanghai + - opcF6DiffPlaces_d12g0v0_Shanghai + - opcF6DiffPlaces_d13g0v0_Shanghai + - opcEFDiffPlaces_d27g0v0_Shanghai + - opcEFDiffPlaces_d28g0v0_Shanghai + - opcF6DiffPlaces_d14g0v0_Shanghai + - opcF6DiffPlaces_d15g0v0_Shanghai + - opcEFDiffPlaces_d29g0v0_Shanghai + - opcF6DiffPlaces_d16g0v0_Shanghai + - opcEFDiffPlaces_d30g0v0_Shanghai + - opcEFDiffPlaces_d31g0v0_Shanghai + - opcF6DiffPlaces_d2g0v0_Shanghai + - opcEFDiffPlaces_d32g0v0_Shanghai + - opcEFDiffPlaces_d33g0v0_Shanghai + - opcEFDiffPlaces_d34g0v0_Shanghai + - opcF6DiffPlaces_d17g0v0_Shanghai + - opcF6DiffPlaces_d18g0v0_Shanghai + - opcF6DiffPlaces_d19g0v0_Shanghai + - opcF6DiffPlaces_d3g0v0_Shanghai + - opcF7DiffPlaces_d0g0v0_Shanghai + - opcF6DiffPlaces_d21g0v0_Shanghai + - opcF6DiffPlaces_d20g0v0_Shanghai + - opcF6DiffPlaces_d4g0v0_Shanghai + - opcF6DiffPlaces_d22g0v0_Shanghai + - opcF6DiffPlaces_d5g0v0_Shanghai + - opcF6DiffPlaces_d23g0v0_Shanghai + - opcF6DiffPlaces_d6g0v0_Shanghai + - opcF6DiffPlaces_d7g0v0_Shanghai + - opcF6DiffPlaces_d8g0v0_Shanghai + - opcF6DiffPlaces_d24g0v0_Shanghai + - opcF6DiffPlaces_d9g0v0_Shanghai + - opcF6DiffPlaces_d25g0v0_Shanghai + - opcF7DiffPlaces_d1g0v0_Shanghai + - opcF7DiffPlaces_d10g0v0_Shanghai + - opcF7DiffPlaces_d11g0v0_Shanghai + - opcF6DiffPlaces_d26g0v0_Shanghai + - opcF7DiffPlaces_d12g0v0_Shanghai + - opcF6DiffPlaces_d27g0v0_Shanghai + - opcF7DiffPlaces_d13g0v0_Shanghai + - opcF6DiffPlaces_d28g0v0_Shanghai + - opcF7DiffPlaces_d14g0v0_Shanghai + - opcF6DiffPlaces_d29g0v0_Shanghai + - opcF7DiffPlaces_d15g0v0_Shanghai + - opcF6DiffPlaces_d30g0v0_Shanghai + - opcF6DiffPlaces_d31g0v0_Shanghai + - opcF7DiffPlaces_d16g0v0_Shanghai + - opcF7DiffPlaces_d2g0v0_Shanghai + - opcF6DiffPlaces_d32g0v0_Shanghai + - opcF6DiffPlaces_d33g0v0_Shanghai + - opcF6DiffPlaces_d34g0v0_Shanghai + - opcF7DiffPlaces_d17g0v0_Shanghai + - opcF7DiffPlaces_d18g0v0_Shanghai + - opcF7DiffPlaces_d19g0v0_Shanghai + - opcF7DiffPlaces_d3g0v0_Shanghai + - opcF7DiffPlaces_d21g0v0_Shanghai + - opcF8DiffPlaces_d0g0v0_Shanghai + - opcF7DiffPlaces_d20g0v0_Shanghai + - opcF7DiffPlaces_d4g0v0_Shanghai + - opcF7DiffPlaces_d22g0v0_Shanghai + - opcF7DiffPlaces_d5g0v0_Shanghai + - opcF7DiffPlaces_d23g0v0_Shanghai + - opcF7DiffPlaces_d6g0v0_Shanghai + - opcF7DiffPlaces_d7g0v0_Shanghai + - opcF7DiffPlaces_d8g0v0_Shanghai + - opcF7DiffPlaces_d24g0v0_Shanghai + - opcF7DiffPlaces_d9g0v0_Shanghai + - opcF7DiffPlaces_d25g0v0_Shanghai + - opcF8DiffPlaces_d1g0v0_Shanghai + - opcF8DiffPlaces_d10g0v0_Shanghai + - opcF7DiffPlaces_d26g0v0_Shanghai + - opcF8DiffPlaces_d11g0v0_Shanghai + - opcF8DiffPlaces_d12g0v0_Shanghai + - opcF7DiffPlaces_d27g0v0_Shanghai + - opcF8DiffPlaces_d13g0v0_Shanghai + - opcF7DiffPlaces_d28g0v0_Shanghai + - opcF8DiffPlaces_d14g0v0_Shanghai + - opcF7DiffPlaces_d29g0v0_Shanghai + - opcF8DiffPlaces_d15g0v0_Shanghai + - opcF7DiffPlaces_d30g0v0_Shanghai + - opcF7DiffPlaces_d31g0v0_Shanghai + - opcF8DiffPlaces_d16g0v0_Shanghai + - opcF7DiffPlaces_d32g0v0_Shanghai + - opcF8DiffPlaces_d2g0v0_Shanghai + - opcF7DiffPlaces_d33g0v0_Shanghai + - opcF7DiffPlaces_d34g0v0_Shanghai + - opcF8DiffPlaces_d17g0v0_Shanghai + - opcF8DiffPlaces_d18g0v0_Shanghai + - opcF8DiffPlaces_d19g0v0_Shanghai + - opcF8DiffPlaces_d3g0v0_Shanghai + - opcF8DiffPlaces_d21g0v0_Shanghai + - opcF9DiffPlaces_d0g0v0_Shanghai + - opcF8DiffPlaces_d4g0v0_Shanghai + - opcF8DiffPlaces_d20g0v0_Shanghai + - opcF8DiffPlaces_d22g0v0_Shanghai + - opcF8DiffPlaces_d5g0v0_Shanghai + - opcF8DiffPlaces_d23g0v0_Shanghai + - opcF8DiffPlaces_d6g0v0_Shanghai + - opcF8DiffPlaces_d7g0v0_Shanghai + - opcF8DiffPlaces_d8g0v0_Shanghai + - opcF8DiffPlaces_d9g0v0_Shanghai + - opcF8DiffPlaces_d24g0v0_Shanghai + - opcF9DiffPlaces_d1g0v0_Shanghai + - opcF8DiffPlaces_d25g0v0_Shanghai + - opcF9DiffPlaces_d10g0v0_Shanghai + - opcF9DiffPlaces_d11g0v0_Shanghai + - opcF8DiffPlaces_d26g0v0_Shanghai + - opcF9DiffPlaces_d12g0v0_Shanghai + - opcF8DiffPlaces_d27g0v0_Shanghai + - opcF9DiffPlaces_d13g0v0_Shanghai + - opcF8DiffPlaces_d28g0v0_Shanghai + - opcF9DiffPlaces_d14g0v0_Shanghai + - opcF8DiffPlaces_d29g0v0_Shanghai + - opcF9DiffPlaces_d15g0v0_Shanghai + - opcF8DiffPlaces_d30g0v0_Shanghai + - opcF9DiffPlaces_d16g0v0_Shanghai + - opcF8DiffPlaces_d31g0v0_Shanghai + - opcF9DiffPlaces_d2g0v0_Shanghai + - opcF8DiffPlaces_d32g0v0_Shanghai + - opcF8DiffPlaces_d33g0v0_Shanghai + - opcF8DiffPlaces_d34g0v0_Shanghai + - opcF9DiffPlaces_d17g0v0_Shanghai + - opcF9DiffPlaces_d18g0v0_Shanghai + - opcF9DiffPlaces_d19g0v0_Shanghai + - opcF9DiffPlaces_d3g0v0_Shanghai + - opcFBDiffPlaces_d0g0v0_Shanghai + - opcF9DiffPlaces_d21g0v0_Shanghai + - opcF9DiffPlaces_d20g0v0_Shanghai + - opcF9DiffPlaces_d4g0v0_Shanghai + - opcF9DiffPlaces_d22g0v0_Shanghai + - opcF9DiffPlaces_d5g0v0_Shanghai + - opcF9DiffPlaces_d23g0v0_Shanghai + - opcF9DiffPlaces_d6g0v0_Shanghai + - opcF9DiffPlaces_d7g0v0_Shanghai + - opcF9DiffPlaces_d8g0v0_Shanghai + - opcF9DiffPlaces_d24g0v0_Shanghai + - opcF9DiffPlaces_d9g0v0_Shanghai + - opcF9DiffPlaces_d25g0v0_Shanghai + - opcFBDiffPlaces_d1g0v0_Shanghai + - opcFBDiffPlaces_d10g0v0_Shanghai + - opcFBDiffPlaces_d11g0v0_Shanghai + - opcF9DiffPlaces_d26g0v0_Shanghai + - opcFBDiffPlaces_d12g0v0_Shanghai + - opcF9DiffPlaces_d27g0v0_Shanghai + - opcFBDiffPlaces_d13g0v0_Shanghai + - opcF9DiffPlaces_d28g0v0_Shanghai + - opcFBDiffPlaces_d14g0v0_Shanghai + - opcF9DiffPlaces_d29g0v0_Shanghai + - opcFBDiffPlaces_d15g0v0_Shanghai + - opcF9DiffPlaces_d30g0v0_Shanghai + - opcFBDiffPlaces_d16g0v0_Shanghai + - opcF9DiffPlaces_d31g0v0_Shanghai + - opcFBDiffPlaces_d2g0v0_Shanghai + - opcF9DiffPlaces_d32g0v0_Shanghai + - opcF9DiffPlaces_d33g0v0_Shanghai + - opcF9DiffPlaces_d34g0v0_Shanghai + - opcFBDiffPlaces_d17g0v0_Shanghai + - opcFBDiffPlaces_d18g0v0_Shanghai + - opcFBDiffPlaces_d19g0v0_Shanghai + - opcFBDiffPlaces_d3g0v0_Shanghai + - opcFBDiffPlaces_d21g0v0_Shanghai + - opcFCDiffPlaces_d0g0v0_Shanghai + - opcFBDiffPlaces_d4g0v0_Shanghai + - opcFBDiffPlaces_d20g0v0_Shanghai + - opcFBDiffPlaces_d22g0v0_Shanghai + - opcFBDiffPlaces_d23g0v0_Shanghai + - opcFBDiffPlaces_d5g0v0_Shanghai + - opcFBDiffPlaces_d6g0v0_Shanghai + - opcFBDiffPlaces_d7g0v0_Shanghai + - opcFBDiffPlaces_d8g0v0_Shanghai + - opcFBDiffPlaces_d24g0v0_Shanghai + - opcFBDiffPlaces_d9g0v0_Shanghai + - opcFCDiffPlaces_d1g0v0_Shanghai + - opcFBDiffPlaces_d25g0v0_Shanghai + - opcFCDiffPlaces_d10g0v0_Shanghai + - opcFBDiffPlaces_d26g0v0_Shanghai + - opcFCDiffPlaces_d11g0v0_Shanghai + - opcFCDiffPlaces_d12g0v0_Shanghai + - opcFBDiffPlaces_d27g0v0_Shanghai + - opcFCDiffPlaces_d13g0v0_Shanghai + - opcFBDiffPlaces_d28g0v0_Shanghai + - opcFCDiffPlaces_d14g0v0_Shanghai + - opcFBDiffPlaces_d29g0v0_Shanghai + - opcFCDiffPlaces_d15g0v0_Shanghai + - opcFBDiffPlaces_d30g0v0_Shanghai + - opcFCDiffPlaces_d16g0v0_Shanghai + - opcFBDiffPlaces_d31g0v0_Shanghai + - opcFCDiffPlaces_d2g0v0_Shanghai + - opcFBDiffPlaces_d32g0v0_Shanghai + - opcFBDiffPlaces_d33g0v0_Shanghai + - opcFBDiffPlaces_d34g0v0_Shanghai + - opcFCDiffPlaces_d17g0v0_Shanghai + - opcFCDiffPlaces_d18g0v0_Shanghai + - opcFCDiffPlaces_d19g0v0_Shanghai + - opcFCDiffPlaces_d3g0v0_Shanghai + - opcFCDiffPlaces_d21g0v0_Shanghai + - opcFEDiffPlaces_d0g0v0_Shanghai + - opcFCDiffPlaces_d4g0v0_Shanghai + - opcFCDiffPlaces_d20g0v0_Shanghai + - opcFCDiffPlaces_d22g0v0_Shanghai + - opcFCDiffPlaces_d5g0v0_Shanghai + - opcFCDiffPlaces_d23g0v0_Shanghai + - opcFCDiffPlaces_d6g0v0_Shanghai + - opcFCDiffPlaces_d7g0v0_Shanghai + - opcFCDiffPlaces_d8g0v0_Shanghai + - opcFCDiffPlaces_d24g0v0_Shanghai + - opcFCDiffPlaces_d9g0v0_Shanghai + - opcFEDiffPlaces_d1g0v0_Shanghai + - opcFCDiffPlaces_d25g0v0_Shanghai + - opcFEDiffPlaces_d10g0v0_Shanghai + - opcFCDiffPlaces_d26g0v0_Shanghai + - opcFEDiffPlaces_d11g0v0_Shanghai + - opcFEDiffPlaces_d12g0v0_Shanghai + - opcFEDiffPlaces_d13g0v0_Shanghai + - opcFCDiffPlaces_d27g0v0_Shanghai + - opcFCDiffPlaces_d28g0v0_Shanghai + - opcFEDiffPlaces_d14g0v0_Shanghai + - opcFCDiffPlaces_d29g0v0_Shanghai + - opcFEDiffPlaces_d15g0v0_Shanghai + - opcFEDiffPlaces_d16g0v0_Shanghai + - opcFCDiffPlaces_d30g0v0_Shanghai + - opcFCDiffPlaces_d31g0v0_Shanghai + - opcFEDiffPlaces_d2g0v0_Shanghai + - opcFCDiffPlaces_d32g0v0_Shanghai + - opcFCDiffPlaces_d33g0v0_Shanghai + - opcFCDiffPlaces_d34g0v0_Shanghai + - opcFEDiffPlaces_d17g0v0_Shanghai + - opcFEDiffPlaces_d18g0v0_Shanghai + - opcFEDiffPlaces_d19g0v0_Shanghai + - opcFEDiffPlaces_d3g0v0_Shanghai + - opcFEDiffPlaces_d21g0v0_Shanghai + - opcFEDiffPlaces_d20g0v0_Shanghai + - opcFEDiffPlaces_d4g0v0_Shanghai + - opcFEDiffPlaces_d22g0v0_Shanghai + - opcFEDiffPlaces_d5g0v0_Shanghai + - opcFEDiffPlaces_d23g0v0_Shanghai + - opcFEDiffPlaces_d6g0v0_Shanghai + - opcFEDiffPlaces_d7g0v0_Shanghai + - opcFEDiffPlaces_d8g0v0_Shanghai + - opcFEDiffPlaces_d24g0v0_Shanghai + - opcFEDiffPlaces_d9g0v0_Shanghai + - opcFEDiffPlaces_d25g0v0_Shanghai + - opcFEDiffPlaces_d26g0v0_Shanghai + - opcFEDiffPlaces_d27g0v0_Shanghai + - opcFEDiffPlaces_d28g0v0_Shanghai + - opcFEDiffPlaces_d29g0v0_Shanghai + - opcFEDiffPlaces_d30g0v0_Shanghai + - opcFEDiffPlaces_d31g0v0_Shanghai + - opcFEDiffPlaces_d32g0v0_Shanghai + - opcFEDiffPlaces_d33g0v0_Shanghai + - opcFEDiffPlaces_d34g0v0_Shanghai + - operationDiffGas_d6g0v0_Shanghai + - operationDiffGas_d1g0v0_Shanghai + - operationDiffGas_d0g0v0_Shanghai + - operationDiffGas_d7g0v0_Shanghai + - operationDiffGas_d8g0v0_Shanghai + - operationDiffGas_d9g0v0_Shanghai + stAttackTest: + - CrashingTransaction_d0g0v0_Shanghai + - ContractCreationSpam_d0g0v0_Shanghai + stBugs: + - randomStatetestDEFAULT_minus_Tue_07_58_41_minus_15153_minus_575192_d0g0v0_Shanghai + stCallCodes: + - callcode_checkPC_d0g0v0_Shanghai + - callcodeDynamicCode_d2g0v0_Shanghai + - callcodeDynamicCode_d3g0v0_Shanghai + - callcallcall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + stCallCreateCallCodeTest: + - callOutput3Fail_d0g0v0_Shanghai + - callOutput3partialFail_d0g0v0_Shanghai + - callcodeOutput3Fail_d0g0v0_Shanghai + - callcodeOutput3partialFail_d0g0v0_Shanghai + - contractCreationMakeCallThatAskMoreGasThenTransactionProvided_d0g1v0_Shanghai + - createNameRegistratorPreStore1NotEnoughGas_d0g0v0_Shanghai + - createInitFailUndefinedInstruction_d0g0v0_Shanghai + - createJS_NoCollision_d0g0v0_Shanghai + - CallRecursiveBombPreCall_d0g0v0_Shanghai + - Call1024BalanceTooLow_d0g0v0_Shanghai + - Callcode1024BalanceTooLow_d0g0v0_Shanghai + - Call1024OOG_d0g2v0_Shanghai + - Call1024OOG_d0g0v0_Shanghai + - Call1024OOG_d0g1v0_Shanghai + - Call1024OOG_d0g3v0_Shanghai + - Callcode1024OOG_d0g0v0_Shanghai + - Callcode1024OOG_d0g1v0_Shanghai + - createInitFailStackSizeLargerThan1024_d0g0v0_Shanghai + - Call1024PreCalls_d0g1v0_Shanghai + - Call1024PreCalls_d0g0v0_Shanghai + stChainId: + - chainId_d0g0v0_Shanghai + stCreate2: + - CREATE2_Suicide_d0g0v0_Shanghai + - CREATE2_Suicide_d10g0v0_Shanghai + - CREATE2_Suicide_d11g0v0_Shanghai + - CREATE2_Suicide_d2g0v0_Shanghai + - CREATE2_Suicide_d1g0v0_Shanghai + - CREATE2_Suicide_d4g0v0_Shanghai + - CREATE2_Suicide_d3g0v0_Shanghai + - CREATE2_Suicide_d6g0v0_Shanghai + - CREATE2_Suicide_d5g0v0_Shanghai + - CREATE2_Suicide_d7g0v0_Shanghai + - CREATE2_Suicide_d8g0v0_Shanghai + - CREATE2_Suicide_d9g0v0_Shanghai + - Create2OOGFromCallRefunds_d18g0v0_Shanghai + - Create2OOGafterInitCodeReturndataSize_d0g0v0_Shanghai + - Create2OOGFromCallRefunds_d21g0v0_Shanghai + - Create2OOGafterInitCode_d0g0v0_Shanghai + - Create2OOGafterInitCode_d0g1v0_Shanghai + - Create2OOGafterInitCodeRevert2_d0g0v0_Shanghai + - Create2OOGafterInitCodeRevert_d0g0v0_Shanghai + - CreateMessageRevertedOOGInInit_d0g0v0_Shanghai + - CreateMessageReverted_d0g0v0_Shanghai + - CreateMessageRevertedOOGInInit_d0g1v0_Shanghai + - create2InitCodes_d0g0v0_Shanghai + - RevertInCreateInInitCreate2_d0g0v0_Shanghai + - create2InitCodes_d1g0v0_Shanghai + - create2InitCodes_d3g0v0_Shanghai + - create2InitCodes_d2g0v0_Shanghai + - create2InitCodes_d4g0v0_Shanghai + - create2InitCodes_d7g0v0_Shanghai + - create2InitCodes_d5g0v0_Shanghai + - create2InitCodes_d8g0v0_Shanghai + - create2InitCodes_d6g0v0_Shanghai + - create2callPrecompiles_d1g0v0_Shanghai + - create2callPrecompiles_d2g0v0_Shanghai + - create2callPrecompiles_d3g0v0_Shanghai + - create2callPrecompiles_d5g0v0_Shanghai + - create2callPrecompiles_d0g0v0_Shanghai + - create2collisionBalance_d0g0v0_Shanghai + - create2collisionBalance_d3g0v0_Shanghai + - create2collisionBalance_d1g0v0_Shanghai + - create2collisionBalance_d2g0v0_Shanghai + - create2callPrecompiles_d4g0v0_Shanghai + - create2collisionCode2_d0g0v0_Shanghai + - create2collisionCode2_d1g0v0_Shanghai + - create2checkFieldsInInitcode_d7g0v0_Shanghai + - create2collisionCode_d0g0v0_Shanghai + - create2collisionCode_d1g0v0_Shanghai + - create2collisionCode_d2g0v0_Shanghai + - create2collisionNonce_d0g0v0_Shanghai + - create2callPrecompiles_d6g0v0_Shanghai + - create2collisionNonce_d1g0v0_Shanghai + - create2collisionNonce_d2g0v0_Shanghai + - create2checkFieldsInInitcode_d6g0v0_Shanghai + - create2collisionSelfdestructed2_d0g0v0_Shanghai + - create2checkFieldsInInitcode_d5g0v0_Shanghai + - create2noCash_d2g0v0_Shanghai + - create2collisionSelfdestructedOOG_d0g0v0_Shanghai + - create2collisionSelfdestructed2_d1g0v0_Shanghai + - create2collisionSelfdestructedOOG_d1g0v0_Shanghai + - create2collisionSelfdestructedOOG_d2g0v0_Shanghai + - create2collisionStorage_d0g0v0_Shanghai + - create2collisionSelfdestructed_d0g0v0_Shanghai + - create2collisionSelfdestructed_d1g0v0_Shanghai + - create2collisionStorage_d1g0v0_Shanghai + - create2collisionSelfdestructed_d2g0v0_Shanghai + - create2callPrecompiles_d7g0v0_Shanghai + - create2collisionStorage_d2g0v0_Shanghai + - Create2OnDepth1023_d0g0v0_Shanghai + - Create2OnDepth1024_d0g0v0_Shanghai + stCallDelegateCodesCallCodeHomestead: + - callcallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + stCallDelegateCodesHomestead: + - callcallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai + - callcodecallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai + stCreateTest: + - CREATE_EContractCreateEContractInInit_Tr_d0g0v0_Shanghai + - CREATE_EContractCreateNEContractInInitOOG_Tr_d0g0v0_Shanghai + - CREATE_EmptyContractWithBalance_d0g0v0_Shanghai + - CREATE_EContractCreateNEContractInInit_Tr_d0g0v0_Shanghai + - CREATE_EmptyContractAndCallIt_0wei_d0g0v0_Shanghai + - CREATE_EmptyContractAndCallIt_1wei_d0g0v0_Shanghai + - CREATE_EContract_ThenCALLToNonExistentAcc_d0g0v0_Shanghai + - CREATE_EmptyContract_d0g0v0_Shanghai + - CREATE_EmptyContractWithStorage_d0g0v0_Shanghai + - CREATE_empty000CreateinInitCode_Transaction_d0g0v0_Shanghai + - CREATE_EmptyContractWithStorageAndCallIt_0wei_d0g0v0_Shanghai + - CREATE_EmptyContractWithStorageAndCallIt_1wei_d0g0v0_Shanghai + - CodeInConstructor_d0g0v0_Shanghai + - CodeInConstructor_d1g0v0_Shanghai + - CreateCollisionToEmpty_d0g0v0_Shanghai + - CreateCollisionToEmpty_d0g0v1_Shanghai + - CreateCollisionToEmpty_d1g0v0_Shanghai + - CreateCollisionToEmpty_d1g0v1_Shanghai + - CreateCollisionToEmpty_d2g0v0_Shanghai + - CreateCollisionToEmpty_d2g0v1_Shanghai + - CreateCollisionResults_d0g0v0_Shanghai + - CreateOOGFromCallRefunds_d18g0v0_Shanghai + - CreateCollisionResults_d1g0v0_Shanghai + - CreateOOGFromCallRefunds_d21g0v0_Shanghai + - CreateOOGFromEOARefunds_d18g0v0_Shanghai + - CreateOOGFromEOARefunds_d21g0v0_Shanghai + - CreateOOGafterInitCodeReturndata2_d0g0v0_Shanghai + - CreateOOGafterInitCodeRevert2_d1g0v0_Shanghai + - CreateAddressWarmAfterFail_d7g0v0_Shanghai + - CreateTransactionHighNonce_d0g0v0_Shanghai + - CreateTransactionHighNonce_d0g0v1_Shanghai + - TransactionCollisionToEmpty_d0g0v0_Shanghai + - TransactionCollisionToEmpty_d0g0v1_Shanghai + - CreateAddressWarmAfterFail_d7g0v1_Shanghai + - CreateResults_d10g0v0_Shanghai + - CreateResults_d12g0v0_Shanghai + - CreateResults_d14g0v0_Shanghai + - CreateResults_d16g0v0_Shanghai + - CreateResults_d11g0v0_Shanghai + - CreateResults_d13g0v0_Shanghai + - CreateResults_d15g0v0_Shanghai + - CreateResults_d0g0v0_Shanghai + - CreateResults_d17g0v0_Shanghai + - createLargeResult_d0g0v0_Shanghai + - CreateResults_d1g0v0_Shanghai + - CreateResults_d2g0v0_Shanghai + - CreateResults_d3g0v0_Shanghai + - createLargeResult_d2g0v0_Shanghai + - CreateResults_d4g0v0_Shanghai + - createLargeResult_d1g0v0_Shanghai + - createLargeResult_d3g0v0_Shanghai + - CreateResults_d8g0v0_Shanghai + - CreateResults_d9g0v0_Shanghai + - CreateOOGafterMaxCodesize_d2g0v0_Shanghai + - CreateResults_d5g0v0_Shanghai + - CreateOOGafterMaxCodesize_d0g0v0_Shanghai + - CreateOOGafterMaxCodesize_d5g0v0_Shanghai + - CreateResults_d6g0v0_Shanghai + - CreateOOGafterMaxCodesize_d1g0v0_Shanghai + - CreateOOGafterMaxCodesize_d3g0v0_Shanghai + - CreateResults_d7g0v0_Shanghai + - createLargeResult_d8g0v0_Shanghai + - createLargeResult_d9g0v0_Shanghai + - createLargeResult_d10g0v0_Shanghai + - createLargeResult_d11g0v0_Shanghai + - createLargeResult_d6g0v0_Shanghai + - createLargeResult_d12g0v0_Shanghai + - createLargeResult_d7g0v0_Shanghai + - createLargeResult_d13g0v0_Shanghai + - createLargeResult_d14g0v0_Shanghai + - createLargeResult_d15g0v0_Shanghai + - createLargeResult_d4g0v0_Shanghai + - createLargeResult_d5g0v0_Shanghai + stDelegatecallTestHomestead: + - callOutput3partialFail_d0g0v0_Shanghai + - delegatecodeDynamicCode_d0g0v0_Shanghai + - Call1024BalanceTooLow_d0g0v0_Shanghai + - CallRecursiveBombPreCall_d0g0v0_Shanghai + - Call1024OOG_d0g0v0_Shanghai + - Call1024OOG_d0g1v0_Shanghai + - Delegatecall1024_d0g0v0_Shanghai + - Delegatecall1024OOG_d0g0v0_Shanghai + - Call1024PreCalls_d0g1v0_Shanghai + - Call1024PreCalls_d0g2v0_Shanghai + stEIP150Specific: + - CreateAndGasInsideCreate_d0g0v0_Shanghai + - SuicideToExistingContract_d0g0v0_Shanghai + - SuicideToNotExistingContract_d0g0v0_Shanghai + - Transaction64Rule_integerBoundaries_d10g0v0_Shanghai + - Transaction64Rule_integerBoundaries_d11g0v0_Shanghai + - NewGasPriceForCodes_d0g0v0_Shanghai + stEIP150singleCodeGasPrices: + - RawCallGasValueTransferAsk_d0g0v0_Shanghai + - RawCallGasValueTransfer_d0g0v0_Shanghai + - RawCallCodeGasMemoryAsk_d0g0v0_Shanghai + - RawCallCodeGasMemory_d0g0v0_Shanghai + - RawCallCodeGasValueTransferMemory_d0g0v0_Shanghai + - RawCallCodeGasValueTransferMemoryAsk_d0g0v0_Shanghai + - RawCreateGasValueTransfer_d0g0v0_Shanghai + - RawCreateGas_d0g0v0_Shanghai + - RawCallGasValueTransferMemory_d0g0v0_Shanghai + - RawCallGasValueTransferMemoryAsk_d0g0v0_Shanghai + - RawCallMemoryGasAsk_d0g0v0_Shanghai + - RawCallMemoryGas_d0g0v0_Shanghai + - RawExtCodeCopyGas_d0g0v0_Shanghai + - RawCreateFailGasValueTransfer2_d0g0v0_Shanghai + - eip2929OOG_d0g0v0_Shanghai + - RawCreateGasMemory_d0g0v0_Shanghai + - RawCreateGasValueTransferMemory_d0g0v0_Shanghai + - RawExtCodeCopyMemoryGas_d0g0v0_Shanghai + - RawDelegateCallGasMemoryAsk_d0g0v0_Shanghai + - RawDelegateCallGasMemory_d0g0v0_Shanghai + - eip2929_d0g0v0_Shanghai + - eip2929_d10g0v0_Shanghai + - eip2929_d11g0v0_Shanghai + - eip2929_d12g0v0_Shanghai + - eip2929_d14g0v0_Shanghai + - eip2929_d13g0v0_Shanghai + - eip2929_d15g0v0_Shanghai + - eip2929_d16g0v0_Shanghai + - eip2929_d17g0v0_Shanghai + - eip2929_d18g0v0_Shanghai + - eip2929_d19g0v0_Shanghai + - eip2929_d1g0v0_Shanghai + - eip2929_d21g0v0_Shanghai + - eip2929_d20g0v0_Shanghai + - eip2929_d22g0v0_Shanghai + - eip2929_d23g0v0_Shanghai + - eip2929_d24g0v0_Shanghai + - eip2929_d25g0v0_Shanghai + - eip2929_d26g0v0_Shanghai + - eip2929_d27g0v0_Shanghai + - eip2929_d28g0v0_Shanghai + - eip2929_d29g0v0_Shanghai + - eip2929_d2g0v0_Shanghai + - eip2929_d30g0v0_Shanghai + - eip2929_minus_ff_d0g0v0_Shanghai + - eip2929_minus_ff_d2g0v0_Shanghai + - eip2929_minus_ff_d1g0v0_Shanghai + - eip2929_minus_ff_d4g0v0_Shanghai + - eip2929_minus_ff_d3g0v0_Shanghai + - eip2929_d31g0v0_Shanghai + - eip2929_minus_ff_d5g0v0_Shanghai + - eip2929_d33g0v0_Shanghai + - eip2929_minus_ff_d6g0v0_Shanghai + - eip2929_d32g0v0_Shanghai + - eip2929_minus_ff_d7g0v0_Shanghai + - eip2929_minus_ff_d8g0v0_Shanghai + - eip2929_d34g0v0_Shanghai + - eip2929_d35g0v0_Shanghai + - eip2929_d36g0v0_Shanghai + - eip2929_d37g0v0_Shanghai + - eip2929_d3g0v0_Shanghai + - eip2929_d4g0v0_Shanghai + - eip2929_d5g0v0_Shanghai + - eip2929_d7g0v0_Shanghai + - eip2929_d6g0v0_Shanghai + - eip2929_d8g0v0_Shanghai + - eip2929_d9g0v0_Shanghai + - gasCostBerlin_d0g0v0_Shanghai + - gasCostBerlin_d100g0v0_Shanghai + - gasCostBerlin_d101g0v0_Shanghai + - gasCostBerlin_d102g0v0_Shanghai + - gasCostBerlin_d103g0v0_Shanghai + - gasCostBerlin_d104g0v0_Shanghai + - gasCostBerlin_d105g0v0_Shanghai + - gasCostBerlin_d106g0v0_Shanghai + - gasCostBerlin_d107g0v0_Shanghai + - gasCostBerlin_d108g0v0_Shanghai + - gasCostBerlin_d109g0v0_Shanghai + - gasCostBerlin_d10g0v0_Shanghai + - gasCostBerlin_d11g0v0_Shanghai + - gasCostBerlin_d12g0v0_Shanghai + - gasCostBerlin_d13g0v0_Shanghai + - gasCostBerlin_d14g0v0_Shanghai + - gasCostBerlin_d15g0v0_Shanghai + - gasCostBerlin_d17g0v0_Shanghai + - gasCostBerlin_d18g0v0_Shanghai + - gasCostBerlin_d16g0v0_Shanghai + - gasCostBerlin_d19g0v0_Shanghai + - gasCostBerlin_d1g0v0_Shanghai + - gasCostBerlin_d20g0v0_Shanghai + - gasCostBerlin_d21g0v0_Shanghai + - gasCostBerlin_d22g0v0_Shanghai + - gasCostBerlin_d23g0v0_Shanghai + - gasCostBerlin_d24g0v0_Shanghai + - gasCostBerlin_d25g0v0_Shanghai + - gasCostBerlin_d26g0v0_Shanghai + - gasCostBerlin_d27g0v0_Shanghai + - gasCostBerlin_d29g0v0_Shanghai + - gasCostBerlin_d28g0v0_Shanghai + - gasCostBerlin_d2g0v0_Shanghai + - gasCostBerlin_d30g0v0_Shanghai + - gasCostBerlin_d31g0v0_Shanghai + - gasCostBerlin_d32g0v0_Shanghai + - gasCostBerlin_d33g0v0_Shanghai + - gasCostBerlin_d34g0v0_Shanghai + - gasCostBerlin_d35g0v0_Shanghai + - gasCostBerlin_d36g0v0_Shanghai + - gasCostBerlin_d37g0v0_Shanghai + - gasCostBerlin_d38g0v0_Shanghai + - gasCostBerlin_d39g0v0_Shanghai + - gasCostBerlin_d3g0v0_Shanghai + - gasCostBerlin_d40g0v0_Shanghai + - gasCostBerlin_d41g0v0_Shanghai + - gasCostBerlin_d42g0v0_Shanghai + - gasCostBerlin_d44g0v0_Shanghai + - gasCostBerlin_d43g0v0_Shanghai + - gasCostBerlin_d45g0v0_Shanghai + - gasCostBerlin_d46g0v0_Shanghai + - gasCostBerlin_d47g0v0_Shanghai + - gasCostBerlin_d48g0v0_Shanghai + - gasCostBerlin_d49g0v0_Shanghai + - gasCostBerlin_d4g0v0_Shanghai + - gasCostBerlin_d50g0v0_Shanghai + - gasCostBerlin_d51g0v0_Shanghai + - gasCostBerlin_d52g0v0_Shanghai + - gasCostBerlin_d53g0v0_Shanghai + - gasCostBerlin_d54g0v0_Shanghai + - gasCostBerlin_d55g0v0_Shanghai + - gasCostBerlin_d57g0v0_Shanghai + - gasCostBerlin_d56g0v0_Shanghai + - gasCostBerlin_d58g0v0_Shanghai + - gasCostBerlin_d59g0v0_Shanghai + - gasCostBerlin_d5g0v0_Shanghai + - gasCostBerlin_d60g0v0_Shanghai + - gasCostBerlin_d61g0v0_Shanghai + - gasCostBerlin_d62g0v0_Shanghai + - gasCostBerlin_d63g0v0_Shanghai + - gasCostBerlin_d64g0v0_Shanghai + - gasCostBerlin_d66g0v0_Shanghai + - gasCostBerlin_d67g0v0_Shanghai + - gasCostBerlin_d65g0v0_Shanghai + - gasCostBerlin_d69g0v0_Shanghai + - gasCostBerlin_d6g0v0_Shanghai + - gasCostBerlin_d68g0v0_Shanghai + - gasCostBerlin_d70g0v0_Shanghai + - gasCostBerlin_d71g0v0_Shanghai + - gasCostBerlin_d72g0v0_Shanghai + - gasCostBerlin_d74g0v0_Shanghai + - gasCostBerlin_d76g0v0_Shanghai + - gasCostBerlin_d73g0v0_Shanghai + - gasCostBerlin_d77g0v0_Shanghai + - gasCostBerlin_d75g0v0_Shanghai + - gasCostExp_d0g0v0_Shanghai + - gasCostBerlin_d78g0v0_Shanghai + - gasCostExp_d1g0v0_Shanghai + - gasCostExp_d2g0v0_Shanghai + - gasCostBerlin_d79g0v0_Shanghai + - gasCostExp_d3g0v0_Shanghai + - gasCostExp_d4g0v0_Shanghai + - gasCostExp_d5g0v0_Shanghai + - gasCostExp_d6g0v0_Shanghai + - gasCostExp_d7g0v0_Shanghai + - gasCostExp_d8g0v0_Shanghai + - gasCostBerlin_d7g0v0_Shanghai + - gasCostMemSeg_d0g0v0_Shanghai + - gasCostJump_d0g0v0_Shanghai + - gasCostJump_d1g0v0_Shanghai + - gasCostJump_d2g0v0_Shanghai + - gasCostBerlin_d80g0v0_Shanghai + - gasCostMemSeg_d10g0v0_Shanghai + - gasCostMemSeg_d11g0v0_Shanghai + - gasCostMemSeg_d12g0v0_Shanghai + - gasCostMemSeg_d13g0v0_Shanghai + - gasCostMemSeg_d14g0v0_Shanghai + - gasCostMemSeg_d15g0v0_Shanghai + - gasCostBerlin_d81g0v0_Shanghai + - gasCostMemSeg_d1g0v0_Shanghai + - gasCostMemSeg_d16g0v0_Shanghai + - gasCostMemSeg_d17g0v0_Shanghai + - gasCostMemSeg_d18g0v0_Shanghai + - gasCostMemSeg_d19g0v0_Shanghai + - gasCostMemSeg_d2g0v0_Shanghai + - gasCostMemSeg_d20g0v0_Shanghai + - gasCostMemSeg_d21g0v0_Shanghai + - gasCostMemSeg_d22g0v0_Shanghai + - gasCostMemSeg_d23g0v0_Shanghai + - gasCostMemSeg_d24g0v0_Shanghai + - gasCostMemSeg_d25g0v0_Shanghai + - gasCostMemSeg_d26g0v0_Shanghai + - gasCostMemSeg_d27g0v0_Shanghai + - gasCostMemSeg_d28g0v0_Shanghai + - gasCostMemSeg_d29g0v0_Shanghai + - gasCostMemSeg_d3g0v0_Shanghai + - gasCostMemSeg_d31g0v0_Shanghai + - gasCostMemSeg_d32g0v0_Shanghai + - gasCostMemSeg_d33g0v0_Shanghai + - gasCostMemSeg_d34g0v0_Shanghai + - gasCostMemSeg_d36g0v0_Shanghai + - gasCostMemSeg_d37g0v0_Shanghai + - gasCostMemSeg_d38g0v0_Shanghai + - gasCostMemSeg_d39g0v0_Shanghai + - gasCostMemSeg_d41g0v0_Shanghai + - gasCostMemSeg_d4g0v0_Shanghai + - gasCostMemSeg_d42g0v0_Shanghai + - gasCostMemSeg_d43g0v0_Shanghai + - gasCostMemSeg_d44g0v0_Shanghai + - gasCostMemSeg_d46g0v0_Shanghai + - gasCostMemSeg_d47g0v0_Shanghai + - gasCostMemSeg_d48g0v0_Shanghai + - gasCostMemSeg_d49g0v0_Shanghai + - gasCostMemSeg_d5g0v0_Shanghai + - gasCostBerlin_d83g0v0_Shanghai + - gasCostBerlin_d82g0v0_Shanghai + - gasCostBerlin_d84g0v0_Shanghai + - gasCostMemSeg_d6g0v0_Shanghai + - gasCostMemSeg_d7g0v0_Shanghai + - gasCostMemSeg_d8g0v0_Shanghai + - gasCostBerlin_d85g0v0_Shanghai + - gasCostMemSeg_d9g0v0_Shanghai + - gasCostBerlin_d86g0v0_Shanghai + - gasCostMemSeg_d51g0v0_Shanghai + - gasCostBerlin_d87g0v0_Shanghai + - gasCostMemSeg_d52g0v0_Shanghai + - gasCostMemSeg_d53g0v0_Shanghai + - gasCostBerlin_d88g0v0_Shanghai + - gasCostBerlin_d89g0v0_Shanghai + - gasCostMemSeg_d54g0v0_Shanghai + - gasCostBerlin_d8g0v0_Shanghai + - gasCostBerlin_d90g0v0_Shanghai + - gasCostBerlin_d91g0v0_Shanghai + - gasCostBerlin_d92g0v0_Shanghai + - gasCostBerlin_d93g0v0_Shanghai + - gasCostBerlin_d94g0v0_Shanghai + - gasCostBerlin_d95g0v0_Shanghai + - gasCostBerlin_d98g0v0_Shanghai + - gasCostBerlin_d96g0v0_Shanghai + - gasCostBerlin_d97g0v0_Shanghai + - gasCostMemory_d0g0v0_Shanghai + - gasCostBerlin_d9g0v0_Shanghai + - gasCostBerlin_d99g0v0_Shanghai + - gasCostMemory_d10g0v0_Shanghai + - gasCostMemory_d11g0v0_Shanghai + - gasCostMemory_d14g0v0_Shanghai + - gasCostMemory_d12g0v0_Shanghai + - gasCostMemory_d13g0v0_Shanghai + - gasCostMemory_d15g0v0_Shanghai + - gasCostMemory_d17g0v0_Shanghai + - gasCostMemory_d16g0v0_Shanghai + - gasCostMemory_d19g0v0_Shanghai + - gasCostMemory_d18g0v0_Shanghai + - gasCostMemory_d1g0v0_Shanghai + - gasCostMemory_d20g0v0_Shanghai + - gasCostMemory_d23g0v0_Shanghai + - gasCostMemory_d21g0v0_Shanghai + - gasCostMemory_d22g0v0_Shanghai + - gasCostMemory_d24g0v0_Shanghai + - gasCostMemory_d25g0v0_Shanghai + - gasCostMemory_d26g0v0_Shanghai + - gasCostMemory_d27g0v0_Shanghai + - gasCostMemory_d28g0v0_Shanghai + - gasCostMemory_d29g0v0_Shanghai + - gasCostMemory_d2g0v0_Shanghai + - gasCostMemory_d30g0v0_Shanghai + - gasCostMemory_d31g0v0_Shanghai + - gasCostMemory_d32g0v0_Shanghai + - gasCostMemory_d33g0v0_Shanghai + - gasCostMemory_d34g0v0_Shanghai + - gasCostMemory_d35g0v0_Shanghai + - gasCostMemory_d3g0v0_Shanghai + - gasCostMemory_d36g0v0_Shanghai + - gasCostMemory_d37g0v0_Shanghai + - gasCostMemory_d38g0v0_Shanghai + - gasCostMemory_d39g0v0_Shanghai + - gasCostMemory_d40g0v0_Shanghai + - gasCostMemory_d41g0v0_Shanghai + - gasCostMemory_d42g0v0_Shanghai + - gasCostMemory_d43g0v0_Shanghai + - gasCostMemory_d44g0v0_Shanghai + - gasCostMemory_d45g0v0_Shanghai + - gasCostMemory_d47g0v0_Shanghai + - gasCostMemory_d46g0v0_Shanghai + - gasCostMemory_d4g0v0_Shanghai + - gasCostMemory_d48g0v0_Shanghai + - gasCostReturn_d0g0v0_Shanghai + - gasCostMemory_d49g0v0_Shanghai + - gasCostMemory_d50g0v0_Shanghai + - gasCostMemory_d51g0v0_Shanghai + - gasCostMemory_d52g0v0_Shanghai + - gasCostMemory_d53g0v0_Shanghai + - gasCostMemory_d5g0v0_Shanghai + - gasCostMemory_d54g0v0_Shanghai + - gasCostMemory_d55g0v0_Shanghai + - gasCostMemory_d56g0v0_Shanghai + - gasCostMemory_d57g0v0_Shanghai + - gasCostMemory_d58g0v0_Shanghai + - gasCostMemory_d59g0v0_Shanghai + - gasCostMemory_d60g0v0_Shanghai + - gasCostMemory_d6g0v0_Shanghai + - gasCostMemory_d61g0v0_Shanghai + - gasCostMemory_d62g0v0_Shanghai + - gasCostMemory_d63g0v0_Shanghai + - gasCostMemory_d64g0v0_Shanghai + - gasCostMemory_d65g0v0_Shanghai + - gasCostMemory_d8g0v0_Shanghai + - gasCostMemory_d7g0v0_Shanghai + - gasCostMemory_d9g0v0_Shanghai + - gasCostMemory_d66g0v0_Shanghai + - gasCostMemory_d67g0v0_Shanghai + - gasCostMemory_d68g0v0_Shanghai + - gasCostMemory_d69g0v0_Shanghai + - gasCostMemory_d70g0v0_Shanghai + - gasCostMemory_d71g0v0_Shanghai + - gasCostMemory_d72g0v0_Shanghai + - gasCostMemory_d73g0v0_Shanghai + - gasCostMemory_d74g0v0_Shanghai + stEIP158Specific: + - CALL_OneVCallSuicide_d0g0v0_Shanghai + - CALL_ZeroVCallSuicide_d0g0v0_Shanghai + - EXP_Empty_d0g0v0_Shanghai + - vitalikTransactionTest_d0g0v0_Shanghai + stEIP2930: + - addressOpcodes_d11g0v0_Shanghai + - addressOpcodes_d14g0v0_Shanghai + - addressOpcodes_d19g0v0_Shanghai + - addressOpcodes_d17g0v0_Shanghai + - addressOpcodes_d21g0v0_Shanghai + - addressOpcodes_d13g0v0_Shanghai + - addressOpcodes_d23g0v0_Shanghai + - addressOpcodes_d29g0v0_Shanghai + - addressOpcodes_d26g0v0_Shanghai + - addressOpcodes_d2g0v0_Shanghai + - addressOpcodes_d1g0v0_Shanghai + - addressOpcodes_d35g0v0_Shanghai + - addressOpcodes_d31g0v0_Shanghai + - addressOpcodes_d25g0v0_Shanghai + - addressOpcodes_d10g0v0_Shanghai + - addressOpcodes_d0g0v0_Shanghai + - addressOpcodes_d12g0v0_Shanghai + - addressOpcodes_d18g0v0_Shanghai + - addressOpcodes_d15g0v0_Shanghai + - addressOpcodes_d16g0v0_Shanghai + - addressOpcodes_d20g0v0_Shanghai + - addressOpcodes_d22g0v0_Shanghai + - addressOpcodes_d24g0v0_Shanghai + - addressOpcodes_d28g0v0_Shanghai + - addressOpcodes_d33g0v0_Shanghai + - addressOpcodes_d27g0v0_Shanghai + - addressOpcodes_d30g0v0_Shanghai + - addressOpcodes_d34g0v0_Shanghai + - coinbaseT01_d0g0v0_Shanghai + - addressOpcodes_d36g0v0_Shanghai + - coinbaseT01_d2g0v0_Shanghai + - coinbaseT01_d1g0v0_Shanghai + - coinbaseT2_d0g0v0_Shanghai + - coinbaseT2_d1g0v0_Shanghai + - addressOpcodes_d32g0v0_Shanghai + - manualCreate_d2g0v0_Shanghai + - storageCosts_d0g0v0_Shanghai + - addressOpcodes_d37g0v0_Shanghai + - storageCosts_d10g0v0_Shanghai + - storageCosts_d11g0v0_Shanghai + - addressOpcodes_d38g0v0_Shanghai + - storageCosts_d18g0v0_Shanghai + - storageCosts_d12g0v0_Shanghai + - storageCosts_d19g0v0_Shanghai + - storageCosts_d13g0v0_Shanghai + - storageCosts_d14g0v0_Shanghai + - storageCosts_d20g0v0_Shanghai + - storageCosts_d21g0v0_Shanghai + - storageCosts_d15g0v0_Shanghai + - storageCosts_d16g0v0_Shanghai + - storageCosts_d17g0v0_Shanghai + - storageCosts_d1g0v0_Shanghai + - storageCosts_d23g0v0_Shanghai + - storageCosts_d22g0v0_Shanghai + - storageCosts_d24g0v0_Shanghai + - storageCosts_d26g0v0_Shanghai + - storageCosts_d25g0v0_Shanghai + - storageCosts_d27g0v0_Shanghai + - storageCosts_d28g0v0_Shanghai + - storageCosts_d29g0v0_Shanghai + - storageCosts_d2g0v0_Shanghai + - storageCosts_d30g0v0_Shanghai + - storageCosts_d31g0v0_Shanghai + - storageCosts_d3g0v0_Shanghai + - storageCosts_d4g0v0_Shanghai + - storageCosts_d5g0v0_Shanghai + - addressOpcodes_d41g0v0_Shanghai + - addressOpcodes_d5g0v0_Shanghai + - addressOpcodes_d43g0v0_Shanghai + - addressOpcodes_d7g0v0_Shanghai + - storageCosts_d32g0v0_Shanghai + - addressOpcodes_d45g0v0_Shanghai + - addressOpcodes_d47g0v0_Shanghai + - storageCosts_d34g0v0_Shanghai + - storageCosts_d33g0v0_Shanghai + - addressOpcodes_d9g0v0_Shanghai + - storageCosts_d6g0v0_Shanghai + - addressOpcodes_d3g0v0_Shanghai + - storageCosts_d7g0v0_Shanghai + - storageCosts_d9g0v0_Shanghai + - storageCosts_d8g0v0_Shanghai + - addressOpcodes_d39g0v0_Shanghai + - addressOpcodes_d4g0v0_Shanghai + - addressOpcodes_d40g0v0_Shanghai + - addressOpcodes_d42g0v0_Shanghai + - addressOpcodes_d44g0v0_Shanghai + - addressOpcodes_d6g0v0_Shanghai + - addressOpcodes_d46g0v0_Shanghai + - storageCosts_d35g0v0_Shanghai + - addressOpcodes_d8g0v0_Shanghai + - variedContext_d11g0v0_Shanghai + - variedContext_d10g0v0_Shanghai + - variedContext_d16g0v0_Shanghai + - variedContext_d13g0v0_Shanghai + - variedContext_d12g0v0_Shanghai + - variedContext_d18g0v0_Shanghai + - variedContext_d14g0v0_Shanghai + - variedContext_d15g0v0_Shanghai + - variedContext_d0g0v0_Shanghai + - variedContext_d1g0v0_Shanghai + - variedContext_d34g0v0_Shanghai + - variedContext_d2g0v0_Shanghai + - variedContext_d22g0v0_Shanghai + - variedContext_d3g0v0_Shanghai + - variedContext_d4g0v0_Shanghai + - variedContext_d26g0v0_Shanghai + - variedContext_d6g0v0_Shanghai + - variedContext_d7g0v0_Shanghai + - variedContext_d8g0v0_Shanghai + - variedContext_d5g0v0_Shanghai + - variedContext_d9g0v0_Shanghai + - variedContext_d30g0v0_Shanghai + - variedContext_d24g0v0_Shanghai + - variedContext_d28g0v0_Shanghai + - variedContext_d32g0v0_Shanghai + - variedContext_d21g0v0_Shanghai + - variedContext_d20g0v0_Shanghai + stExample: + - invalidTr_d0g0v0_Shanghai + - eip1559_d0g0v0_Shanghai + - basefeeExample_d0g0v0_Shanghai + - mergeTest_d0g0v0_Shanghai + - solidityExample_d0g0v0_Shanghai + stExtCodeHash: + - extCodeCopyBounds_d0g0v0_Shanghai + - extCodeHashDynamicArgument_d1g0v0_Shanghai + - extCodeHashInInitCode_d1g0v0_Shanghai + - dynamicAccountOverwriteEmpty_d0g0v0_Shanghai + - extCodeHashSubcallSuicide_d0g0v0_Shanghai + - extcodehashEmpty_d0g0v0_Shanghai + - extcodehashEmpty_d2g0v0_Shanghai + - extcodehashEmpty_d1g0v0_Shanghai + - extcodehashEmpty_d3g0v0_Shanghai + - extcodehashEmpty_d4g0v0_Shanghai + - extcodehashEmpty_d5g0v0_Shanghai + - extcodehashEmpty_d6g0v0_Shanghai + - extcodehashEmpty_d7g0v0_Shanghai + - extcodehashEmpty_d8g0v0_Shanghai + - extCodeHashSubcallOOG_d4g0v0_Shanghai + - extcodehashEmpty_d9g0v0_Shanghai + - extCodeHashMaxCodeSize_d0g0v0_Shanghai + stInitCodeTest: + - CallContractToCreateContractWhichWouldCreateContractInInitCode_d0g0v0_Shanghai + - OutOfGasPrefundedContractCreation_d0g0v0_Shanghai + - OutOfGasPrefundedContractCreation_d0g2v0_Shanghai + - CallRecursiveContract_d0g0v0_Shanghai + stMemExpandingEIP150Calls: + - CreateAndGasInsideCreateWithMemExpandingCalls_d0g0v0_Shanghai + - CallGoesOOGOnSecondLevelWithMemExpandingCalls_d0g0v0_Shanghai + - NewGasPriceForCodesWithMemExpandingCalls_d0g0v0_Shanghai + stMemoryStressTest: + - RETURN_Bounds_d0g1v0_Shanghai + - RETURN_Bounds_d0g2v0_Shanghai + - DUP_Bounds_d0g0v0_Shanghai + - DUP_Bounds_d0g1v0_Shanghai + - DUP_Bounds_d0g2v0_Shanghai + stMemoryTest: + - bufferSrcOffset_d10g0v0_Shanghai + - bufferSrcOffset_d12g0v0_Shanghai + - bufferSrcOffset_d18g0v0_Shanghai + - bufferSrcOffset_d16g0v0_Shanghai + - bufferSrcOffset_d17g0v0_Shanghai + - bufferSrcOffset_d13g0v0_Shanghai + - bufferSrcOffset_d14g0v0_Shanghai + - bufferSrcOffset_d19g0v0_Shanghai + - bufferSrcOffset_d20g0v0_Shanghai + - bufferSrcOffset_d21g0v0_Shanghai + - bufferSrcOffset_d22g0v0_Shanghai + - bufferSrcOffset_d23g0v0_Shanghai + - bufferSrcOffset_d36g0v0_Shanghai + - bufferSrcOffset_d37g0v0_Shanghai + - bufferSrcOffset_d38g0v0_Shanghai + - bufferSrcOffset_d43g0v0_Shanghai + - bufferSrcOffset_d45g0v0_Shanghai + - bufferSrcOffset_d44g0v0_Shanghai + - bufferSrcOffset_d46g0v0_Shanghai + - bufferSrcOffset_d47g0v0_Shanghai + - bufferSrcOffset_d60g0v0_Shanghai + - bufferSrcOffset_d61g0v0_Shanghai + - bufferSrcOffset_d62g0v0_Shanghai + - bufferSrcOffset_d67g0v0_Shanghai + - bufferSrcOffset_d68g0v0_Shanghai + - bufferSrcOffset_d70g0v0_Shanghai + - bufferSrcOffset_d69g0v0_Shanghai + - bufferSrcOffset_d71g0v0_Shanghai + - bufferSrcOffset_d8g0v0_Shanghai + - bufferSrcOffset_d9g0v0_Shanghai + - buffer_d0g0v0_Shanghai + - buffer_d108g0v0_Shanghai + - buffer_d109g0v0_Shanghai + - buffer_d111g0v0_Shanghai + - buffer_d112g0v0_Shanghai + - buffer_d123g0v0_Shanghai + - buffer_d124g0v0_Shanghai + - buffer_d126g0v0_Shanghai + - buffer_d127g0v0_Shanghai + - buffer_d138g0v0_Shanghai + - buffer_d139g0v0_Shanghai + - buffer_d142g0v0_Shanghai + - buffer_d141g0v0_Shanghai + - buffer_d153g0v0_Shanghai + - buffer_d154g0v0_Shanghai + - buffer_d156g0v0_Shanghai + - buffer_d157g0v0_Shanghai + - buffer_d168g0v0_Shanghai + - buffer_d169g0v0_Shanghai + - buffer_d16g0v0_Shanghai + - buffer_d171g0v0_Shanghai + - buffer_d172g0v0_Shanghai + - buffer_d17g0v0_Shanghai + - buffer_d183g0v0_Shanghai + - buffer_d184g0v0_Shanghai + - buffer_d186g0v0_Shanghai + - buffer_d187g0v0_Shanghai + - buffer_d198g0v0_Shanghai + - buffer_d1g0v0_Shanghai + - buffer_d199g0v0_Shanghai + - buffer_d19g0v0_Shanghai + - buffer_d202g0v0_Shanghai + - buffer_d201g0v0_Shanghai + - buffer_d20g0v0_Shanghai + - buffer_d213g0v0_Shanghai + - buffer_d214g0v0_Shanghai + - buffer_d216g0v0_Shanghai + - buffer_d217g0v0_Shanghai + - buffer_d228g0v0_Shanghai + - buffer_d229g0v0_Shanghai + - buffer_d231g0v0_Shanghai + - buffer_d232g0v0_Shanghai + - buffer_d243g0v0_Shanghai + - buffer_d244g0v0_Shanghai + - buffer_d246g0v0_Shanghai + - buffer_d247g0v0_Shanghai + - buffer_d258g0v0_Shanghai + - buffer_d259g0v0_Shanghai + - buffer_d261g0v0_Shanghai + - buffer_d262g0v0_Shanghai + - buffer_d273g0v0_Shanghai + - buffer_d274g0v0_Shanghai + - buffer_d276g0v0_Shanghai + - buffer_d277g0v0_Shanghai + - buffer_d288g0v0_Shanghai + - buffer_d289g0v0_Shanghai + - buffer_d291g0v0_Shanghai + - buffer_d292g0v0_Shanghai + - buffer_d303g0v0_Shanghai + - buffer_d304g0v0_Shanghai + - buffer_d306g0v0_Shanghai + - buffer_d307g0v0_Shanghai + - buffer_d318g0v0_Shanghai + - buffer_d319g0v0_Shanghai + - buffer_d31g0v0_Shanghai + - buffer_d320g0v0_Shanghai + - buffer_d321g0v0_Shanghai + - buffer_d322g0v0_Shanghai + - buffer_d323g0v0_Shanghai + - buffer_d324g0v0_Shanghai + - buffer_d325g0v0_Shanghai + - buffer_d326g0v0_Shanghai + - buffer_d327g0v0_Shanghai + - buffer_d328g0v0_Shanghai + - buffer_d329g0v0_Shanghai + - buffer_d32g0v0_Shanghai + - buffer_d330g0v0_Shanghai + - buffer_d331g0v0_Shanghai + - buffer_d332g0v0_Shanghai + - buffer_d333g0v0_Shanghai + - buffer_d334g0v0_Shanghai + - buffer_d335g0v0_Shanghai + - buffer_d336g0v0_Shanghai + - buffer_d337g0v0_Shanghai + - buffer_d338g0v0_Shanghai + - buffer_d339g0v0_Shanghai + - buffer_d340g0v0_Shanghai + - buffer_d341g0v0_Shanghai + - buffer_d342g0v0_Shanghai + - buffer_d343g0v0_Shanghai + - buffer_d344g0v0_Shanghai + - buffer_d345g0v0_Shanghai + - buffer_d346g0v0_Shanghai + - buffer_d347g0v0_Shanghai + - buffer_d35g0v0_Shanghai + - buffer_d34g0v0_Shanghai + - buffer_d3g0v0_Shanghai + - buffer_d46g0v0_Shanghai + - buffer_d47g0v0_Shanghai + - buffer_d4g0v0_Shanghai + - buffer_d49g0v0_Shanghai + - buffer_d50g0v0_Shanghai + - buffer_d62g0v0_Shanghai + - buffer_d65g0v0_Shanghai + - buffer_d6g0v0_Shanghai + - callDataCopyOffset_d0g0v0_Shanghai + - codecopy_dejavu2_d0g0v0_Shanghai + - oog_d0g0v0_Shanghai + - buffer_d76g0v0_Shanghai + - memCopySelf_d0g0v0_Shanghai + - buffer_d77g0v0_Shanghai + - buffer_d79g0v0_Shanghai + - oog_d30g0v0_Shanghai + - buffer_d80g0v0_Shanghai + - oog_d9g0v0_Shanghai + - buffer_d93g0v0_Shanghai + - buffer_d94g0v0_Shanghai + - buffer_d96g0v0_Shanghai + - buffer_d97g0v0_Shanghai + - stackLimitGas_1023_d0g0v0_Shanghai + - stackLimitGas_1024_d0g0v0_Shanghai + - stackLimitPush31_1024_d0g0v0_Shanghai + - stackLimitPush31_1023_d0g0v0_Shanghai + - stackLimitPush32_1023_d0g0v0_Shanghai + - stackLimitPush32_1024_d0g0v0_Shanghai + stNonZeroCallsTest: + - NonZeroValue_CALL_ToNonNonZeroBalance_d0g0v0_Shanghai + stPreCompiledContracts2: + - CALLBlake2f_d4g0v0_Shanghai + - CALLBlake2f_d4g1v0_Shanghai + - CALLBlake2f_d4g2v0_Shanghai + - CALLBlake2f_d5g0v0_Shanghai + - CALLBlake2f_d4g3v0_Shanghai + - CALLBlake2f_d5g2v0_Shanghai + - CALLBlake2f_d5g1v0_Shanghai + - CALLBlake2f_d6g1v0_Shanghai + - CALLBlake2f_d5g3v0_Shanghai + - CALLBlake2f_d6g0v0_Shanghai + - CALLBlake2f_d6g2v0_Shanghai + - CALLBlake2f_d6g3v0_Shanghai + - CALLBlake2f_d7g0v0_Shanghai + - CALLBlake2f_d7g1v0_Shanghai + - CALLBlake2f_d7g2v0_Shanghai + - CALLBlake2f_d7g3v0_Shanghai + - CALLBlake2f_d8g0v0_Shanghai + - CALLBlake2f_d8g2v0_Shanghai + - CALLBlake2f_d8g1v0_Shanghai + - CALLBlake2f_d8g3v0_Shanghai + - CALLBlake2f_d9g0v0_Shanghai + - CALLCODEBlake2f_d4g0v0_Shanghai + - CALLCODEBlake2f_d4g1v0_Shanghai + - CALLCODEBlake2f_d4g2v0_Shanghai + - CALLCODEBlake2f_d4g3v0_Shanghai + - CALLCODEBlake2f_d5g0v0_Shanghai + - CALLCODEBlake2f_d5g1v0_Shanghai + - CALLCODEBlake2f_d5g2v0_Shanghai + - CALLCODEBlake2f_d5g3v0_Shanghai + - CALLCODEBlake2f_d6g0v0_Shanghai + - CALLCODEBlake2f_d6g1v0_Shanghai + - CALLCODEBlake2f_d6g2v0_Shanghai + - CALLCODEBlake2f_d6g3v0_Shanghai + - CALLCODEBlake2f_d7g0v0_Shanghai + - CALLCODEBlake2f_d7g1v0_Shanghai + - CALLCODEBlake2f_d7g3v0_Shanghai + - CALLCODEBlake2f_d7g2v0_Shanghai + - CALLCODEBlake2f_d8g0v0_Shanghai + - CALLCODEBlake2f_d8g1v0_Shanghai + - CALLCODEBlake2f_d8g3v0_Shanghai + - CALLCODEBlake2f_d8g2v0_Shanghai + - CALLCODEBlake2f_d9g0v0_Shanghai + - CALLCODEEcrecover0_completeReturnValue_d0g0v0_Shanghai + - CALLCODEEcrecover0_NoGas_d0g0v0_Shanghai + - CALLCODEEcrecover0_d0g0v0_Shanghai + - CALLCODEEcrecover0_gas3000_d0g0v0_Shanghai + - CALLCODEEcrecover0_overlappingInputOutput_d0g0v0_Shanghai + - CALLCODEEcrecover3_d0g0v0_Shanghai + - CALLCODEEcrecoverH_prefixed0_d0g0v0_Shanghai + - CALLCODEEcrecoverS_prefixed0_d0g0v0_Shanghai + - CALLCODEEcrecoverV_prefixed0_d0g0v0_Shanghai + - CALLCODERipemd160_1_d0g0v0_Shanghai + - CALLCODERipemd160_2_d0g0v0_Shanghai + - CALLCODERipemd160_3_postfixed0_d0g0v0_Shanghai + - CALLCODERipemd160_3_d0g0v0_Shanghai + - CALLCODERipemd160_3_prefixed0_d0g0v0_Shanghai + - CALLCODESha256_0_d0g0v0_Shanghai + - CALLCODESha256_1_d0g0v0_Shanghai + - CALLCODERipemd160_4_d0g0v0_Shanghai + - CALLCODESha256_1_nonzeroValue_d0g0v0_Shanghai + - CALLCODESha256_2_d0g0v0_Shanghai + - CALLCODESha256_3_d0g0v0_Shanghai + - CALLCODESha256_3_postfix0_d0g0v0_Shanghai + - CALLCODESha256_3_prefix0_d0g0v0_Shanghai + - CALLCODESha256_4_d0g0v0_Shanghai + - CALLCODESha256_4_gas99_d0g0v0_Shanghai + - CallEcrecover0_0input_d0g0v0_Shanghai + - CallEcrecover0_completeReturnValue_d0g0v0_Shanghai + - CallEcrecover0_Gas2999_d0g0v0_Shanghai + - CallEcrecover0_d0g0v0_Shanghai + - CallEcrecover0_NoGas_d0g0v0_Shanghai + - CallEcrecover0_gas3000_d0g0v0_Shanghai + - CallEcrecover0_overlappingInputOutput_d0g0v0_Shanghai + - CallEcrecover1_d0g0v0_Shanghai + - CallEcrecoverInvalidSignature_d0g0v0_Shanghai + - CallEcrecover2_d0g0v0_Shanghai + - CallEcrecover80_d0g0v0_Shanghai + - CallEcrecover3_d0g0v0_Shanghai + - CallEcrecoverH_prefixed0_d0g0v0_Shanghai + - CallEcrecoverCheckLengthWrongV_d0g0v0_Shanghai + - CallEcrecoverCheckLength_d0g0v0_Shanghai + - CallEcrecoverR_prefixed0_d0g0v0_Shanghai + - CallEcrecoverS_prefixed0_d0g0v0_Shanghai + - CallEcrecoverUnrecoverableKey_d0g0v0_Shanghai + - CallEcrecoverV_prefixed0_d0g0v0_Shanghai + - CallEcrecover_Overflow_d0g0v0_Shanghai + - CallEcrecover_Overflow_d1g0v0_Shanghai + - CallIdentitiy_1_d0g0v0_Shanghai + - CallIdentitiy_0_d0g0v0_Shanghai + - CallIdentity_1_nonzeroValue_d0g0v0_Shanghai + - CallIdentity_2_d0g0v0_Shanghai + - CallIdentity_3_d0g0v0_Shanghai + - CallIdentity_4_d0g0v0_Shanghai + - CallEcrecover_Overflow_d2g0v0_Shanghai + - CallIdentity_4_gas18_d0g0v0_Shanghai + - CallIdentity_4_gas17_d0g0v0_Shanghai + - CallEcrecover_Overflow_d3g0v0_Shanghai + - CallEcrecover_Overflow_d4g0v0_Shanghai + - CallRipemd160_0_d0g0v0_Shanghai + - CallEcrecover_Overflow_d5g0v0_Shanghai + - CallIdentity_6_inputShorterThanOutput_d0g0v0_Shanghai + - CallRipemd160_1_d0g0v0_Shanghai + - CallEcrecover_Overflow_d6g0v0_Shanghai + - CallEcrecover_Overflow_d7g0v0_Shanghai + - CallRipemd160_2_d0g0v0_Shanghai + - CallRipemd160_3_d0g0v0_Shanghai + - CallRipemd160_3_postfixed0_d0g0v0_Shanghai + - CallRipemd160_3_prefixed0_d0g0v0_Shanghai + - CallRipemd160_4_d0g0v0_Shanghai + - CallRipemd160_4_gas719_d0g0v0_Shanghai + - CallSha256_1_d0g0v0_Shanghai + - CallSha256_0_d0g0v0_Shanghai + - CallSha256_1_nonzeroValue_d0g0v0_Shanghai + - CallSha256_2_d0g0v0_Shanghai + - CallSha256_3_d0g0v0_Shanghai + - CallSha256_3_postfix0_d0g0v0_Shanghai + - CallSha256_3_prefix0_d0g0v0_Shanghai + - CallSha256_4_d0g0v0_Shanghai + - CallSha256_4_gas99_d0g0v0_Shanghai + - ecrecoverWeirdV_d0g0v0_Shanghai + - ecrecoverWeirdV_d10g0v0_Shanghai + - ecrecoverWeirdV_d11g0v0_Shanghai + - ecrecoverWeirdV_d12g0v0_Shanghai + - ecrecoverWeirdV_d13g0v0_Shanghai + - ecrecoverWeirdV_d14g0v0_Shanghai + - ecrecoverWeirdV_d15g0v0_Shanghai + - ecrecoverWeirdV_d18g0v0_Shanghai + - ecrecoverWeirdV_d16g0v0_Shanghai + - ecrecoverWeirdV_d17g0v0_Shanghai + - ecrecoverWeirdV_d19g0v0_Shanghai + - ecrecoverWeirdV_d1g0v0_Shanghai + - ecrecoverWeirdV_d20g0v0_Shanghai + - ecrecoverWeirdV_d21g0v0_Shanghai + - ecrecoverWeirdV_d22g0v0_Shanghai + - ecrecoverWeirdV_d23g0v0_Shanghai + - ecrecoverWeirdV_d24g0v0_Shanghai + - ecrecoverWeirdV_d25g0v0_Shanghai + - ecrecoverWeirdV_d26g0v0_Shanghai + - ecrecoverWeirdV_d28g0v0_Shanghai + - ecrecoverWeirdV_d27g0v0_Shanghai + - ecrecoverWeirdV_d2g0v0_Shanghai + - ecrecoverWeirdV_d29g0v0_Shanghai + - ecrecoverWeirdV_d30g0v0_Shanghai + - ecrecoverWeirdV_d32g0v0_Shanghai + - ecrecoverWeirdV_d31g0v0_Shanghai + - ecrecoverWeirdV_d33g0v0_Shanghai + - ecrecoverWeirdV_d35g0v0_Shanghai + - ecrecoverWeirdV_d34g0v0_Shanghai + - ecrecoverWeirdV_d3g0v0_Shanghai + - ecrecoverWeirdV_d4g0v0_Shanghai + - ecrecoverWeirdV_d5g0v0_Shanghai + - ecrecoverWeirdV_d6g0v0_Shanghai + - ecrecoverWeirdV_d8g0v0_Shanghai + - ecrecoverWeirdV_d7g0v0_Shanghai + - ecrecoverWeirdV_d9g0v0_Shanghai + - modexp_0_0_0_20500_d0g1v0_Shanghai + - modexp_0_0_0_20500_d0g2v0_Shanghai + - modexp_0_0_0_20500_d0g3v0_Shanghai + - modexp_0_0_0_22000_d0g0v0_Shanghai + - modexp_0_0_0_22000_d0g2v0_Shanghai + - modexp_0_0_0_22000_d0g1v0_Shanghai + - modexp_0_0_0_25000_d0g3v0_Shanghai + - modexp_0_0_0_22000_d0g3v0_Shanghai + - modexp_0_0_0_25000_d0g0v0_Shanghai + - modexp_0_0_0_25000_d0g1v0_Shanghai + - modexp_0_0_0_25000_d0g2v0_Shanghai + - modexp_0_0_0_35000_d0g0v0_Shanghai + - modexp_0_0_0_35000_d0g1v0_Shanghai + - modexp_0_0_0_35000_d0g3v0_Shanghai + - modexp_0_0_0_35000_d0g2v0_Shanghai + - CALLCODEIdentity_5_d0g0v0_Shanghai + - CALLCODERipemd160_5_d0g0v0_Shanghai + - CALLCODESha256_5_d0g0v0_Shanghai + - CallIdentity_5_d0g0v0_Shanghai + - CallRipemd160_5_d0g0v0_Shanghai + - CallSha256_5_d0g0v0_Shanghai + - ecrecoverShortBuff_d0g0v0_Shanghai + stPreCompiledContracts: + - blake2B_d0g0v0_Shanghai + - blake2B_d1g0v0_Shanghai + - blake2B_d2g0v0_Shanghai + - delegatecall09Undefined_d0g0v0_Shanghai + - blake2B_d3g0v0_Shanghai + - blake2B_d4g0v0_Shanghai + - blake2B_d5g0v0_Shanghai + - idPrecomps_d0g0v0_Shanghai + - blake2B_d6g0v0_Shanghai + - blake2B_d10g0v0_Shanghai + - blake2B_d11g0v0_Shanghai + - blake2B_d7g0v0_Shanghai + - blake2B_d8g0v0_Shanghai + - blake2B_d12g0v0_Shanghai + - blake2B_d13g0v0_Shanghai + - blake2B_d14g0v0_Shanghai + - blake2B_d15g0v0_Shanghai + - blake2B_d9g0v0_Shanghai + - idPrecomps_d1g0v0_Shanghai + - blake2B_d17g0v0_Shanghai + - blake2B_d18g0v0_Shanghai + - blake2B_d19g0v0_Shanghai + - blake2B_d23g0v0_Shanghai + - blake2B_d21g0v0_Shanghai + - blake2B_d16g0v0_Shanghai + - blake2B_d20g0v0_Shanghai + - blake2B_d24g0v0_Shanghai + - blake2B_d25g0v0_Shanghai + - blake2B_d22g0v0_Shanghai + - idPrecomps_d2g0v0_Shanghai + - idPrecomps_d3g0v0_Shanghai + - idPrecomps_d4g0v0_Shanghai + - idPrecomps_d5g0v0_Shanghai + - idPrecomps_d6g0v0_Shanghai + - idPrecomps_d7g0v0_Shanghai + - idPrecomps_d8g0v0_Shanghai + - identity_to_bigger_d0g0v0_Shanghai + - identity_to_smaller_d0g0v0_Shanghai + - modexpTests_d0g0v0_Shanghai + - modexpTests_d100g0v0_Shanghai + - modexpTests_d101g0v0_Shanghai + - modexpTests_d102g0v0_Shanghai + - modexpTests_d103g0v0_Shanghai + - modexpTests_d104g0v0_Shanghai + - modexpTests_d106g0v0_Shanghai + - modexpTests_d105g0v0_Shanghai + - modexpTests_d107g0v0_Shanghai + - modexpTests_d108g0v0_Shanghai + - modexpTests_d109g0v0_Shanghai + - modexpTests_d10g0v0_Shanghai + - modexpTests_d110g0v0_Shanghai + - modexpTests_d111g0v0_Shanghai + - modexpTests_d112g0v0_Shanghai + - modexpTests_d113g0v0_Shanghai + - modexpTests_d114g0v0_Shanghai + - modexpTests_d115g0v0_Shanghai + - modexpTests_d116g0v0_Shanghai + - modexpTests_d117g0v0_Shanghai + - modexpTests_d118g0v0_Shanghai + - modexpTests_d11g0v0_Shanghai + - modexpTests_d120g0v0_Shanghai + - modexpTests_d119g0v0_Shanghai + - modexpTests_d121g0v0_Shanghai + - modexpTests_d122g0v0_Shanghai + - modexpTests_d123g0v0_Shanghai + - modexpTests_d124g0v0_Shanghai + - modexpTests_d125g0v0_Shanghai + - modexpTests_d126g0v0_Shanghai + - modexpTests_d12g0v0_Shanghai + - modexpTests_d13g0v0_Shanghai + - modexpTests_d14g0v0_Shanghai + - modexpTests_d15g0v0_Shanghai + - modexpTests_d16g0v0_Shanghai + - modexpTests_d18g0v0_Shanghai + - modexpTests_d17g0v0_Shanghai + - modexpTests_d19g0v0_Shanghai + - modexpTests_d1g0v0_Shanghai + - modexpTests_d20g0v0_Shanghai + - modexpTests_d21g0v0_Shanghai + - modexpTests_d22g0v0_Shanghai + - modexpTests_d24g0v0_Shanghai + - modexpTests_d23g0v0_Shanghai + - modexpTests_d25g0v0_Shanghai + - modexpTests_d26g0v0_Shanghai + - modexpTests_d27g0v0_Shanghai + - modexpTests_d29g0v0_Shanghai + - modexpTests_d28g0v0_Shanghai + - modexpTests_d2g0v0_Shanghai + - modexpTests_d30g0v0_Shanghai + - modexpTests_d31g0v0_Shanghai + - modexpTests_d32g0v0_Shanghai + - modexpTests_d33g0v0_Shanghai + - modexpTests_d34g0v0_Shanghai + - modexpTests_d36g0v0_Shanghai + - modexpTests_d35g0v0_Shanghai + - modexpTests_d38g0v0_Shanghai + - modexpTests_d37g0v0_Shanghai + - modexpTests_d39g0v0_Shanghai + - modexpTests_d3g0v0_Shanghai + - modexpTests_d40g0v0_Shanghai + - modexpTests_d41g0v0_Shanghai + - modexpTests_d42g0v0_Shanghai + - modexpTests_d43g0v0_Shanghai + - modexpTests_d44g0v0_Shanghai + - modexpTests_d45g0v0_Shanghai + - modexpTests_d46g0v0_Shanghai + - modexpTests_d47g0v0_Shanghai + - modexpTests_d48g0v0_Shanghai + - modexpTests_d49g0v0_Shanghai + - modexpTests_d4g0v0_Shanghai + - modexpTests_d50g0v0_Shanghai + - modexpTests_d51g0v0_Shanghai + - modexpTests_d52g0v0_Shanghai + - modexpTests_d53g0v0_Shanghai + - modexpTests_d54g0v0_Shanghai + - modexpTests_d55g0v0_Shanghai + - modexpTests_d56g0v0_Shanghai + - modexpTests_d57g0v0_Shanghai + - modexpTests_d59g0v0_Shanghai + - modexpTests_d58g0v0_Shanghai + - modexpTests_d5g0v0_Shanghai + - modexpTests_d60g0v0_Shanghai + - modexpTests_d61g0v0_Shanghai + - modexpTests_d62g0v0_Shanghai + - modexpTests_d64g0v0_Shanghai + - modexpTests_d63g0v0_Shanghai + - modexpTests_d65g0v0_Shanghai + - modexpTests_d66g0v0_Shanghai + - modexpTests_d67g0v0_Shanghai + - modexpTests_d68g0v0_Shanghai + - modexpTests_d69g0v0_Shanghai + - modexpTests_d6g0v0_Shanghai + - modexpTests_d70g0v0_Shanghai + - modexpTests_d71g0v0_Shanghai + - modexpTests_d72g0v0_Shanghai + - modexpTests_d73g0v0_Shanghai + - modexpTests_d74g0v0_Shanghai + - modexpTests_d75g0v0_Shanghai + - modexpTests_d76g0v0_Shanghai + - modexpTests_d77g0v0_Shanghai + - modexpTests_d78g0v0_Shanghai + - modexpTests_d79g0v0_Shanghai + - modexpTests_d7g0v0_Shanghai + - modexpTests_d81g0v0_Shanghai + - modexpTests_d80g0v0_Shanghai + - modexpTests_d82g0v0_Shanghai + - modexpTests_d83g0v0_Shanghai + - modexpTests_d84g0v0_Shanghai + - modexpTests_d86g0v0_Shanghai + - modexpTests_d85g0v0_Shanghai + - modexpTests_d87g0v0_Shanghai + - modexpTests_d88g0v0_Shanghai + - modexpTests_d89g0v0_Shanghai + - modexpTests_d8g0v0_Shanghai + - modexpTests_d90g0v0_Shanghai + - modexpTests_d91g0v0_Shanghai + - modexpTests_d93g0v0_Shanghai + - modexpTests_d92g0v0_Shanghai + - modexpTests_d94g0v0_Shanghai + - modexpTests_d95g0v0_Shanghai + - modexpTests_d96g0v0_Shanghai + - modexpTests_d97g0v0_Shanghai + - modexpTests_d98g0v0_Shanghai + - modexpTests_d99g0v0_Shanghai + - modexp_d0g0v0_Shanghai + - modexpTests_d9g0v0_Shanghai + - modexp_d0g1v0_Shanghai + - modexp_d0g2v0_Shanghai + - modexp_d0g3v0_Shanghai + - modexp_d11g0v0_Shanghai + - modexp_d11g1v0_Shanghai + - modexp_d11g2v0_Shanghai + - modexp_d11g3v0_Shanghai + - modexp_d14g0v0_Shanghai + - modexp_d14g1v0_Shanghai + - modexp_d14g2v0_Shanghai + - modexp_d14g3v0_Shanghai + - modexp_d16g1v0_Shanghai + - modexp_d16g2v0_Shanghai + - modexp_d16g0v0_Shanghai + - modexp_d17g0v0_Shanghai + - modexp_d16g3v0_Shanghai + - modexp_d17g1v0_Shanghai + - modexp_d17g2v0_Shanghai + - modexp_d17g3v0_Shanghai + - modexp_d25g0v0_Shanghai + - modexp_d25g2v0_Shanghai + - modexp_d25g1v0_Shanghai + - modexp_d25g3v0_Shanghai + - modexp_d26g0v0_Shanghai + - modexp_d26g1v0_Shanghai + - modexp_d26g2v0_Shanghai + - modexp_d26g3v0_Shanghai + - modexp_d32g1v0_Shanghai + - modexp_d32g2v0_Shanghai + - modexp_d32g0v0_Shanghai + - modexp_d27g1v0_Shanghai + - modexp_d31g0v0_Shanghai + - modexp_d31g1v0_Shanghai + - modexp_d31g2v0_Shanghai + - modexp_d31g3v0_Shanghai + - modexp_d27g3v0_Shanghai + - modexp_d32g3v0_Shanghai + - modexp_d27g0v0_Shanghai + - modexp_d33g0v0_Shanghai + - modexp_d27g2v0_Shanghai + - modexp_d33g2v0_Shanghai + - modexp_d33g1v0_Shanghai + - modexp_d33g3v0_Shanghai + - modexp_d34g0v0_Shanghai + - modexp_d34g1v0_Shanghai + - modexp_d34g2v0_Shanghai + - modexp_d34g3v0_Shanghai + - modexp_d35g0v0_Shanghai + - modexp_d35g1v0_Shanghai + - modexp_d35g2v0_Shanghai + - modexp_d35g3v0_Shanghai + - modexp_d4g0v0_Shanghai + - modexp_d4g1v0_Shanghai + - modexp_d4g2v0_Shanghai + - modexp_d4g3v0_Shanghai + - modexp_d3g0v0_Shanghai + - modexp_d3g1v0_Shanghai + - modexp_d3g3v0_Shanghai + - modexp_d3g2v0_Shanghai + - modexp_d6g0v0_Shanghai + - modexp_d6g1v0_Shanghai + - modexp_d6g2v0_Shanghai + - modexp_d7g0v0_Shanghai + - modexp_d7g1v0_Shanghai + - modexp_d7g2v0_Shanghai + - modexp_d6g3v0_Shanghai + - modexp_d7g3v0_Shanghai + - precompsEIP2929_d10g0v0_Shanghai + - precompsEIP2929_d11g0v0_Shanghai + - precompsEIP2929_d106g0v0_Shanghai + - precompsEIP2929_d18g0v0_Shanghai + - precompsEIP2929_d19g0v0_Shanghai + - precompsEIP2929_d20g0v0_Shanghai + - precompsEIP2929_d21g0v0_Shanghai + - precompsEIP2929_d22g0v0_Shanghai + - precompsEIP2929_d23g0v0_Shanghai + - precompsEIP2929_d24g0v0_Shanghai + - precompsEIP2929_d25g0v0_Shanghai + - precompsEIP2929_d26g0v0_Shanghai + - precompsEIP2929_d270g0v0_Shanghai + - precompsEIP2929_d271g0v0_Shanghai + - precompsEIP2929_d272g0v0_Shanghai + - precompsEIP2929_d273g0v0_Shanghai + - precompsEIP2929_d274g0v0_Shanghai + - precompsEIP2929_d275g0v0_Shanghai + - precompsEIP2929_d276g0v0_Shanghai + - precompsEIP2929_d277g0v0_Shanghai + - precompsEIP2929_d278g0v0_Shanghai + - precompsEIP2929_d288g0v0_Shanghai + - precompsEIP2929_d289g0v0_Shanghai + - precompsEIP2929_d290g0v0_Shanghai + - precompsEIP2929_d291g0v0_Shanghai + - precompsEIP2929_d292g0v0_Shanghai + - precompsEIP2929_d293g0v0_Shanghai + - precompsEIP2929_d294g0v0_Shanghai + - precompsEIP2929_d295g0v0_Shanghai + - precompsEIP2929_d296g0v0_Shanghai + - precompsEIP2929_d306g0v0_Shanghai + - precompsEIP2929_d307g0v0_Shanghai + - precompsEIP2929_d308g0v0_Shanghai + - precompsEIP2929_d309g0v0_Shanghai + - precompsEIP2929_d310g0v0_Shanghai + - precompsEIP2929_d311g0v0_Shanghai + - precompsEIP2929_d312g0v0_Shanghai + - precompsEIP2929_d313g0v0_Shanghai + - precompsEIP2929_d314g0v0_Shanghai + - precompsEIP2929_d34g0v0_Shanghai + - precompsEIP2929_d36g0v0_Shanghai + - precompsEIP2929_d37g0v0_Shanghai + - precompsEIP2929_d38g0v0_Shanghai + - precompsEIP2929_d3g0v0_Shanghai + - precompsEIP2929_d39g0v0_Shanghai + - precompsEIP2929_d40g0v0_Shanghai + - precompsEIP2929_d41g0v0_Shanghai + - precompsEIP2929_d42g0v0_Shanghai + - precompsEIP2929_d43g0v0_Shanghai + - precompsEIP2929_d44g0v0_Shanghai + - precompsEIP2929_d4g0v0_Shanghai + - precompsEIP2929_d54g0v0_Shanghai + - precompsEIP2929_d55g0v0_Shanghai + - precompsEIP2929_d56g0v0_Shanghai + - precompsEIP2929_d5g0v0_Shanghai + - precompsEIP2929_d57g0v0_Shanghai + - precompsEIP2929_d58g0v0_Shanghai + - precompsEIP2929_d59g0v0_Shanghai + - precompsEIP2929_d60g0v0_Shanghai + - precompsEIP2929_d61g0v0_Shanghai + - precompsEIP2929_d62g0v0_Shanghai + - precompsEIP2929_d6g0v0_Shanghai + - precompsEIP2929_d7g0v0_Shanghai + - precompsEIP2929_d72g0v0_Shanghai + - precompsEIP2929_d73g0v0_Shanghai + - precompsEIP2929_d74g0v0_Shanghai + - precompsEIP2929_d75g0v0_Shanghai + - precompsEIP2929_d77g0v0_Shanghai + - precompsEIP2929_d76g0v0_Shanghai + - precompsEIP2929_d8g0v0_Shanghai + - precompsEIP2929_d78g0v0_Shanghai + - precompsEIP2929_d79g0v0_Shanghai + - precompsEIP2929_d80g0v0_Shanghai + - sec80_d0g0v0_Shanghai + - precompsEIP2929_d90g0v0_Shanghai + - precompsEIP2929_d91g0v0_Shanghai + - precompsEIP2929_d70g0v0_Shanghai + - precompsEIP2929_d92g0v0_Shanghai + - precompsEIP2929_d9g0v0_Shanghai + - precompsEIP2929_d93g0v0_Shanghai + - precompsEIP2929_d94g0v0_Shanghai + - precompsEIP2929_d95g0v0_Shanghai + - precompsEIP2929_d98g0v0_Shanghai + - precompsEIP2929_d96g0v0_Shanghai + - precompsEIP2929_d97g0v0_Shanghai + stRandom2: + - 201503110226PYTHON_DUP6_d0g0v0_Shanghai + - randomStatetest389_d0g0v0_Shanghai + - randomStatetest396_d0g0v0_Shanghai + - randomStatetest409_d0g0v0_Shanghai + - randomStatetest417_d0g0v0_Shanghai + - randomStatetest415_d0g0v0_Shanghai + - randomStatetest428_d0g0v0_Shanghai + - randomStatetest416_d0g0v0_Shanghai + - randomStatetest420_d0g0v0_Shanghai + - randomStatetest435_d0g0v0_Shanghai + - randomStatetest437_d0g0v0_Shanghai + - randomStatetest446_d0g0v0_Shanghai + - randomStatetest450_d0g0v0_Shanghai + - randomStatetest466_d0g0v0_Shanghai + - randomStatetest471_d0g0v0_Shanghai + - randomStatetest473_d0g0v0_Shanghai + - randomStatetest475_d0g0v0_Shanghai + - randomStatetest478_d0g0v0_Shanghai + - randomStatetest508_d0g0v0_Shanghai + - randomStatetest501_d0g0v0_Shanghai + - randomStatetest519_d0g0v0_Shanghai + - randomStatetest531_d0g0v0_Shanghai + - randomStatetest525_d0g0v0_Shanghai + - randomStatetest521_d0g0v0_Shanghai + - randomStatetest541_d0g0v0_Shanghai + - randomStatetest539_d0g0v0_Shanghai + - randomStatetest542_d0g0v0_Shanghai + - randomStatetest558_d0g0v0_Shanghai + - randomStatetest577_d0g0v0_Shanghai + - randomStatetest572_d0g0v0_Shanghai + - randomStatetest571_d0g0v0_Shanghai + - randomStatetest578_d0g0v0_Shanghai + - randomStatetest387_d0g0v0_Shanghai + - randomStatetest581_d0g0v0_Shanghai + - randomStatetest584_d0g0v0_Shanghai + - randomStatetest592_d0g0v0_Shanghai + - randomStatetest605_d0g0v0_Shanghai + - randomStatetest609_d0g0v0_Shanghai + - randomStatetest624_d0g0v0_Shanghai + - randomStatetest615_d0g0v0_Shanghai + - randomStatetest628_d0g0v0_Shanghai + - randomStatetest638_d0g0v0_Shanghai + - randomStatetest645_d0g0v0_Shanghai + - randomStatetest644_d0g0v0_Shanghai + - randomStatetest506_d0g0v0_Shanghai + - randomStatetest397_d0g0v0_Shanghai + - randomStatetest588_d0g0v0_Shanghai + - randomStatetest410_d0g0v0_Shanghai + - randomStatetest418_d0g0v0_Shanghai + - randomStatetest433_d0g0v0_Shanghai + - randomStatetest448_d0g0v0_Shanghai + - randomStatetest456_d0g0v0_Shanghai + - randomStatetest469_d0g0v0_Shanghai + - randomStatetest476_d0g0v0_Shanghai + - randomStatetest458_d0g0v0_Shanghai + - randomStatetest467_d0g0v0_Shanghai + - randomStatetest579_d0g0v0_Shanghai + - randomStatetest536_d0g0v0_Shanghai + - randomStatetest547_d0g0v0_Shanghai + - randomStatetest560_d0g0v0_Shanghai + - randomStatetest582_d0g0v0_Shanghai + - randomStatetest583_d0g0v0_Shanghai + - randomStatetest554_d0g0v0_Shanghai + - randomStatetest589_d0g0v0_Shanghai + - randomStatetest636_d0g0v0_Shanghai + - randomStatetest639_d0g0v0_Shanghai + - randomStatetest650_d0g0v0_Shanghai + stQuadraticComplexityTest: + - Call1MB1024Calldepth_d0g1v0_Shanghai + - Call20KbytesContract50_1_d0g1v0_Shanghai + - Call20KbytesContract50_2_d0g1v0_Shanghai + - Call20KbytesContract50_3_d0g1v0_Shanghai + - Return50000_d0g1v0_Shanghai + - Return50000_2_d0g1v0_Shanghai + stRandom: + - randomStatetest100_d0g0v0_Shanghai + - randomStatetest0_d0g0v0_Shanghai + - randomStatetest107_d0g0v0_Shanghai + - randomStatetest116_d0g0v0_Shanghai + - randomStatetest124_d0g0v0_Shanghai + - randomStatetest143_d0g0v0_Shanghai + - randomStatetest139_d0g0v0_Shanghai + - randomStatetest145_d0g0v0_Shanghai + - randomStatetest144_d0g0v0_Shanghai + - randomStatetest14_d0g0v0_Shanghai + - randomStatetest153_d0g0v0_Shanghai + - randomStatetest157_d0g0v0_Shanghai + - randomStatetest150_d0g0v0_Shanghai + - randomStatetest164_d0g0v0_Shanghai + - randomStatetest174_d0g0v0_Shanghai + - randomStatetest176_d0g0v0_Shanghai + - randomStatetest173_d0g0v0_Shanghai + - randomStatetest184_d0g0v0_Shanghai + - randomStatetest178_d0g0v0_Shanghai + - randomStatetest199_d0g0v0_Shanghai + - randomStatetest195_d0g0v0_Shanghai + - randomStatetest197_d0g0v0_Shanghai + - randomStatetest196_d0g0v0_Shanghai + - randomStatetest207_d0g0v0_Shanghai + - randomStatetest201_d0g0v0_Shanghai + - randomStatetest202_d0g0v0_Shanghai + - randomStatetest204_d0g0v0_Shanghai + - randomStatetest209_d0g0v0_Shanghai + - randomStatetest210_d0g0v0_Shanghai + - randomStatetest228_d0g0v0_Shanghai + - randomStatetest222_d0g0v0_Shanghai + - randomStatetest244_d0g0v0_Shanghai + - randomStatetest236_d0g0v0_Shanghai + - randomStatetest246_d0g0v0_Shanghai + - randomStatetest252_d0g0v0_Shanghai + - randomStatetest248_d0g0v0_Shanghai + - randomStatetest251_d0g0v0_Shanghai + - randomStatetest249_d0g0v0_Shanghai + - randomStatetest25_d0g0v0_Shanghai + - randomStatetest26_d0g0v0_Shanghai + - randomStatetest273_d0g0v0_Shanghai + - randomStatetest271_d0g0v0_Shanghai + - randomStatetest270_d0g0v0_Shanghai + - randomStatetest27_d0g0v0_Shanghai + - randomStatetest288_d0g0v0_Shanghai + - randomStatetest283_d0g0v0_Shanghai + - randomStatetest17_d0g0v0_Shanghai + - randomStatetest290_d0g0v0_Shanghai + - randomStatetest30_d0g0v0_Shanghai + - randomStatetest308_d0g0v0_Shanghai + - randomStatetest312_d0g0v0_Shanghai + - randomStatetest108_d0g0v0_Shanghai + - randomStatetest325_d0g0v0_Shanghai + - randomStatetest111_d0g0v0_Shanghai + - randomStatetest138_d0g0v0_Shanghai + - randomStatetest345_d0g0v0_Shanghai + - randomStatetest349_d0g0v0_Shanghai + - randomStatetest351_d0g0v0_Shanghai + - randomStatetest347_d0g0v0_Shanghai + - randomStatetest362_d0g0v0_Shanghai + - randomStatetest367_d0g0v0_Shanghai + - randomStatetest368_d0g0v0_Shanghai + - randomStatetest379_d0g0v0_Shanghai + - randomStatetest371_d0g0v0_Shanghai + - randomStatetest376_d0g0v0_Shanghai + - randomStatetest154_d0g0v0_Shanghai + - randomStatetest151_d0g0v0_Shanghai + - randomStatetest159_d0g0v0_Shanghai + - randomStatetest383_d0g0v0_Shanghai + - randomStatetest39_d0g0v0_Shanghai + - randomStatetest3_d0g0v0_Shanghai + - randomStatetest45_d0g0v0_Shanghai + - randomStatetest163_d0g0v0_Shanghai + - randomStatetest43_d0g0v0_Shanghai + - randomStatetest66_d0g0v0_Shanghai + - randomStatetest185_d0g0v0_Shanghai + - randomStatetest78_d0g0v0_Shanghai + - randomStatetest88_d0g0v0_Shanghai + - randomStatetest85_d0g0v0_Shanghai + - randomStatetest98_d0g0v0_Shanghai + - randomStatetest354_d0g0v0_Shanghai + - randomStatetest357_d0g0v0_Shanghai + - randomStatetest205_d0g0v0_Shanghai + - randomStatetest211_d0g0v0_Shanghai + - randomStatetest365_d0g0v0_Shanghai + - randomStatetest260_d0g0v0_Shanghai + - randomStatetest285_d0g0v0_Shanghai + - randomStatetest326_d0g0v0_Shanghai + - randomStatetest306_d0g0v0_Shanghai + - randomStatetest335_d0g0v0_Shanghai + - randomStatetest336_d0g0v0_Shanghai + - randomStatetest341_d0g0v0_Shanghai + - randomStatetest36_d0g0v0_Shanghai + - randomStatetest384_d0g0v0_Shanghai + - randomStatetest48_d0g0v0_Shanghai + - randomStatetest4_d0g0v0_Shanghai + - randomStatetest53_d0g0v0_Shanghai + stRefundTest: + - refundSuicide50procentCap_d1g0v0_Shanghai + - refund_CallToSuicideTwice_d1g0v0_Shanghai + - refund_multimpleSuicide_d0g0v0_Shanghai + stReturnDataTest: + - call_ecrec_success_empty_then_returndatasize_d0g0v0_Shanghai + - clearReturnBuffer_d100g0v0_Shanghai + - clearReturnBuffer_d101g0v0_Shanghai + - clearReturnBuffer_d106g0v0_Shanghai + - clearReturnBuffer_d102g0v0_Shanghai + - clearReturnBuffer_d103g0v0_Shanghai + - clearReturnBuffer_d107g0v0_Shanghai + - clearReturnBuffer_d108g0v0_Shanghai + - clearReturnBuffer_d109g0v0_Shanghai + - clearReturnBuffer_d112g0v0_Shanghai + - clearReturnBuffer_d104g0v0_Shanghai + - clearReturnBuffer_d105g0v0_Shanghai + - clearReturnBuffer_d113g0v0_Shanghai + - clearReturnBuffer_d110g0v0_Shanghai + - clearReturnBuffer_d111g0v0_Shanghai + - clearReturnBuffer_d114g0v0_Shanghai + - clearReturnBuffer_d115g0v0_Shanghai + - clearReturnBuffer_d116g0v0_Shanghai + - clearReturnBuffer_d10g0v0_Shanghai + - clearReturnBuffer_d117g0v0_Shanghai + - clearReturnBuffer_d120g0v0_Shanghai + - clearReturnBuffer_d121g0v0_Shanghai + - clearReturnBuffer_d123g0v0_Shanghai + - clearReturnBuffer_d122g0v0_Shanghai + - clearReturnBuffer_d0g0v0_Shanghai + - clearReturnBuffer_d118g0v0_Shanghai + - clearReturnBuffer_d119g0v0_Shanghai + - clearReturnBuffer_d124g0v0_Shanghai + - clearReturnBuffer_d127g0v0_Shanghai + - clearReturnBuffer_d126g0v0_Shanghai + - clearReturnBuffer_d128g0v0_Shanghai + - clearReturnBuffer_d129g0v0_Shanghai + - clearReturnBuffer_d125g0v0_Shanghai + - clearReturnBuffer_d130g0v0_Shanghai + - clearReturnBuffer_d131g0v0_Shanghai + - clearReturnBuffer_d134g0v0_Shanghai + - clearReturnBuffer_d11g0v0_Shanghai + - clearReturnBuffer_d135g0v0_Shanghai + - clearReturnBuffer_d136g0v0_Shanghai + - clearReturnBuffer_d137g0v0_Shanghai + - clearReturnBuffer_d132g0v0_Shanghai + - clearReturnBuffer_d133g0v0_Shanghai + - clearReturnBuffer_d138g0v0_Shanghai + - clearReturnBuffer_d139g0v0_Shanghai + - clearReturnBuffer_d12g0v0_Shanghai + - clearReturnBuffer_d140g0v0_Shanghai + - clearReturnBuffer_d141g0v0_Shanghai + - clearReturnBuffer_d142g0v0_Shanghai + - clearReturnBuffer_d143g0v0_Shanghai + - clearReturnBuffer_d13g0v0_Shanghai + - clearReturnBuffer_d144g0v0_Shanghai + - clearReturnBuffer_d145g0v0_Shanghai + - clearReturnBuffer_d148g0v0_Shanghai + - clearReturnBuffer_d149g0v0_Shanghai + - clearReturnBuffer_d14g0v0_Shanghai + - clearReturnBuffer_d150g0v0_Shanghai + - clearReturnBuffer_d151g0v0_Shanghai + - clearReturnBuffer_d146g0v0_Shanghai + - clearReturnBuffer_d147g0v0_Shanghai + - clearReturnBuffer_d152g0v0_Shanghai + - clearReturnBuffer_d154g0v0_Shanghai + - clearReturnBuffer_d153g0v0_Shanghai + - clearReturnBuffer_d15g0v0_Shanghai + - clearReturnBuffer_d155g0v0_Shanghai + - clearReturnBuffer_d156g0v0_Shanghai + - clearReturnBuffer_d157g0v0_Shanghai + - clearReturnBuffer_d158g0v0_Shanghai + - clearReturnBuffer_d159g0v0_Shanghai + - clearReturnBuffer_d162g0v0_Shanghai + - clearReturnBuffer_d163g0v0_Shanghai + - clearReturnBuffer_d164g0v0_Shanghai + - clearReturnBuffer_d160g0v0_Shanghai + - clearReturnBuffer_d28g0v0_Shanghai + - clearReturnBuffer_d165g0v0_Shanghai + - clearReturnBuffer_d161g0v0_Shanghai + - clearReturnBuffer_d29g0v0_Shanghai + - clearReturnBuffer_d30g0v0_Shanghai + - clearReturnBuffer_d31g0v0_Shanghai + - clearReturnBuffer_d166g0v0_Shanghai + - clearReturnBuffer_d32g0v0_Shanghai + - clearReturnBuffer_d1g0v0_Shanghai + - clearReturnBuffer_d16g0v0_Shanghai + - clearReturnBuffer_d17g0v0_Shanghai + - clearReturnBuffer_d33g0v0_Shanghai + - clearReturnBuffer_d37g0v0_Shanghai + - clearReturnBuffer_d167g0v0_Shanghai + - clearReturnBuffer_d18g0v0_Shanghai + - clearReturnBuffer_d19g0v0_Shanghai + - clearReturnBuffer_d38g0v0_Shanghai + - clearReturnBuffer_d39g0v0_Shanghai + - clearReturnBuffer_d23g0v0_Shanghai + - clearReturnBuffer_d24g0v0_Shanghai + - clearReturnBuffer_d25g0v0_Shanghai + - clearReturnBuffer_d34g0v0_Shanghai + - clearReturnBuffer_d35g0v0_Shanghai + - clearReturnBuffer_d20g0v0_Shanghai + - clearReturnBuffer_d2g0v0_Shanghai + - clearReturnBuffer_d42g0v0_Shanghai + - clearReturnBuffer_d21g0v0_Shanghai + - clearReturnBuffer_d43g0v0_Shanghai + - clearReturnBuffer_d44g0v0_Shanghai + - clearReturnBuffer_d45g0v0_Shanghai + - clearReturnBuffer_d40g0v0_Shanghai + - clearReturnBuffer_d46g0v0_Shanghai + - clearReturnBuffer_d41g0v0_Shanghai + - clearReturnBuffer_d26g0v0_Shanghai + - clearReturnBuffer_d27g0v0_Shanghai + - clearReturnBuffer_d47g0v0_Shanghai + - clearReturnBuffer_d51g0v0_Shanghai + - clearReturnBuffer_d52g0v0_Shanghai + - clearReturnBuffer_d3g0v0_Shanghai + - clearReturnBuffer_d53g0v0_Shanghai + - clearReturnBuffer_d56g0v0_Shanghai + - clearReturnBuffer_d57g0v0_Shanghai + - clearReturnBuffer_d48g0v0_Shanghai + - clearReturnBuffer_d49g0v0_Shanghai + - clearReturnBuffer_d58g0v0_Shanghai + - clearReturnBuffer_d59g0v0_Shanghai + - clearReturnBuffer_d54g0v0_Shanghai + - clearReturnBuffer_d61g0v0_Shanghai + - clearReturnBuffer_d60g0v0_Shanghai + - clearReturnBuffer_d55g0v0_Shanghai + - clearReturnBuffer_d65g0v0_Shanghai + - clearReturnBuffer_d66g0v0_Shanghai + - clearReturnBuffer_d67g0v0_Shanghai + - clearReturnBuffer_d4g0v0_Shanghai + - clearReturnBuffer_d62g0v0_Shanghai + - clearReturnBuffer_d63g0v0_Shanghai + - clearReturnBuffer_d70g0v0_Shanghai + - clearReturnBuffer_d71g0v0_Shanghai + - clearReturnBuffer_d72g0v0_Shanghai + - clearReturnBuffer_d73g0v0_Shanghai + - clearReturnBuffer_d74g0v0_Shanghai + - clearReturnBuffer_d5g0v0_Shanghai + - clearReturnBuffer_d75g0v0_Shanghai + - clearReturnBuffer_d68g0v0_Shanghai + - clearReturnBuffer_d69g0v0_Shanghai + - clearReturnBuffer_d85g0v0_Shanghai + - clearReturnBuffer_d84g0v0_Shanghai + - create_callprecompile_returndatasize_d0g0v0_Shanghai + - modexp_modsize0_returndatasize_d1g0v0_Shanghai + - clearReturnBuffer_d78g0v0_Shanghai + - clearReturnBuffer_d79g0v0_Shanghai + - clearReturnBuffer_d86g0v0_Shanghai + - modexp_modsize0_returndatasize_d2g0v0_Shanghai + - clearReturnBuffer_d87g0v0_Shanghai + - clearReturnBuffer_d88g0v0_Shanghai + - clearReturnBuffer_d89g0v0_Shanghai + - modexp_modsize0_returndatasize_d3g0v0_Shanghai + - clearReturnBuffer_d92g0v0_Shanghai + - clearReturnBuffer_d80g0v0_Shanghai + - clearReturnBuffer_d76g0v0_Shanghai + - clearReturnBuffer_d77g0v0_Shanghai + - clearReturnBuffer_d93g0v0_Shanghai + - clearReturnBuffer_d81g0v0_Shanghai + - returndatasize_after_failing_callcode_d0g0v0_Shanghai + - returndatasize_after_failing_staticcall_d0g0v0_Shanghai + - returndatasize_after_failing_delegatecall_d0g0v0_Shanghai + - clearReturnBuffer_d90g0v0_Shanghai + - returndatasize_bug_d0g0v0_Shanghai + - clearReturnBuffer_d91g0v0_Shanghai + - clearReturnBuffer_d82g0v0_Shanghai + - clearReturnBuffer_d83g0v0_Shanghai + - clearReturnBuffer_d95g0v0_Shanghai + - clearReturnBuffer_d94g0v0_Shanghai + - clearReturnBuffer_d6g0v0_Shanghai + - clearReturnBuffer_d99g0v0_Shanghai + - clearReturnBuffer_d98g0v0_Shanghai + - clearReturnBuffer_d96g0v0_Shanghai + - clearReturnBuffer_d97g0v0_Shanghai + - clearReturnBuffer_d7g0v0_Shanghai + - clearReturnBuffer_d9g0v0_Shanghai + - returndatasize_after_oog_after_deeper_d0g0v0_Shanghai + - revertRetDataSize_d10g0v0_Shanghai + - revertRetDataSize_d16g0v0_Shanghai + - revertRetDataSize_d0g0v0_Shanghai + - revertRetDataSize_d28g0v0_Shanghai + - revertRetDataSize_d1g0v0_Shanghai + - revertRetDataSize_d22g0v0_Shanghai + - revertRetDataSize_d25g0v0_Shanghai + - revertRetDataSize_d26g0v0_Shanghai + - revertRetDataSize_d24g0v0_Shanghai + - revertRetDataSize_d13g0v0_Shanghai + - revertRetDataSize_d14g0v0_Shanghai + - revertRetDataSize_d2g0v0_Shanghai + - revertRetDataSize_d15g0v0_Shanghai + - revertRetDataSize_d34g0v0_Shanghai + - revertRetDataSize_d12g0v0_Shanghai + - revertRetDataSize_d27g0v0_Shanghai + - tooLongReturnDataCopy_d0g0v0_Shanghai + - tooLongReturnDataCopy_d11g0v0_Shanghai + - revertRetDataSize_d20g0v0_Shanghai + - tooLongReturnDataCopy_d10g0v0_Shanghai + - revertRetDataSize_d19g0v0_Shanghai + - tooLongReturnDataCopy_d13g0v0_Shanghai + - revertRetDataSize_d21g0v0_Shanghai + - revertRetDataSize_d18g0v0_Shanghai + - tooLongReturnDataCopy_d12g0v0_Shanghai + - tooLongReturnDataCopy_d16g0v0_Shanghai + - tooLongReturnDataCopy_d18g0v0_Shanghai + - tooLongReturnDataCopy_d14g0v0_Shanghai + - tooLongReturnDataCopy_d15g0v0_Shanghai + - tooLongReturnDataCopy_d17g0v0_Shanghai + - tooLongReturnDataCopy_d1g0v0_Shanghai + - tooLongReturnDataCopy_d19g0v0_Shanghai + - tooLongReturnDataCopy_d20g0v0_Shanghai + - tooLongReturnDataCopy_d21g0v0_Shanghai + - tooLongReturnDataCopy_d22g0v0_Shanghai + - tooLongReturnDataCopy_d23g0v0_Shanghai + - tooLongReturnDataCopy_d4g0v0_Shanghai + - tooLongReturnDataCopy_d6g0v0_Shanghai + - tooLongReturnDataCopy_d2g0v0_Shanghai + - tooLongReturnDataCopy_d8g0v0_Shanghai + - tooLongReturnDataCopy_d9g0v0_Shanghai + - tooLongReturnDataCopy_d3g0v0_Shanghai + - tooLongReturnDataCopy_d5g0v0_Shanghai + - tooLongReturnDataCopy_d7g0v0_Shanghai + - revertRetDataSize_d3g0v0_Shanghai + - revertRetDataSize_d4g0v0_Shanghai + - revertRetDataSize_d6g0v0_Shanghai + - revertRetDataSize_d7g0v0_Shanghai + - revertRetDataSize_d8g0v0_Shanghai + - revertRetDataSize_d9g0v0_Shanghai + stRecursiveCreate: + - recursiveCreate_d0g0v0_Shanghai + stRevertTest: + - RevertDepthCreateOOG_d0g0v0_Shanghai + - RevertDepthCreateOOG_d0g0v1_Shanghai + - RevertDepthCreateOOG_d0g1v0_Shanghai + - RevertDepthCreateOOG_d0g1v1_Shanghai + - RevertDepthCreateOOG_d1g0v0_Shanghai + - RevertDepthCreateOOG_d1g0v1_Shanghai + - RevertInCreateInInit_d0g0v0_Shanghai + - RevertOpcodeCreate_d0g1v0_Shanghai + - RevertOpcodeMultipleSubCalls_d0g3v1_Shanghai + - RevertOpcodeMultipleSubCalls_d1g3v1_Shanghai + - RevertOpcodeMultipleSubCalls_d0g2v1_Shanghai + - RevertOpcodeMultipleSubCalls_d1g2v1_Shanghai + - RevertOpcodeMultipleSubCalls_d2g3v1_Shanghai + - RevertOpcodeMultipleSubCalls_d3g3v1_Shanghai + - RevertOpcodeMultipleSubCalls_d2g2v1_Shanghai + - RevertOpcodeMultipleSubCalls_d3g2v1_Shanghai + - RevertPrefoundEmpty_d0g0v0_Shanghai + - RevertPrefound_d0g0v0_Shanghai + - LoopCallsThenRevert_d0g0v0_Shanghai + - LoopDelegateCallsDepthThenRevert_d0g0v0_Shanghai + - LoopCallsDepthThenRevert_d0g0v0_Shanghai + - LoopCallsDepthThenRevert3_d0g0v0_Shanghai + - LoopCallsDepthThenRevert2_d0g0v0_Shanghai + - RevertRemoteSubCallStorageOOG_d0g0v0_Shanghai + stSLoadTest: + - sloadGasCost_d0g0v0_Shanghai + stSStoreTest: + - InitCollisionNonZeroNonce_d1g0v0_Shanghai + - InitCollision_d1g0v0_Shanghai + - sstore_0to0_d3g1v0_Shanghai + - InitCollisionNonZeroNonce_d3g0v0_Shanghai + - InitCollision_d3g0v0_Shanghai + - sstore_0to0_d0g1v0_Shanghai + - sstore_0to0_d1g1v0_Shanghai + - sstore_0to0_d2g1v0_Shanghai + - sstore_0to0to0_d3g1v0_Shanghai + - sstore_0to0_d4g0v0_Shanghai + - sstore_0to0to0_d0g1v0_Shanghai + - sstore_0to0_d4g1v0_Shanghai + - sstore_0to0to0_d1g1v0_Shanghai + - sstore_0to0to0_d2g1v0_Shanghai + - sstore_0to0toX_d3g1v0_Shanghai + - sstore_0to0to0_d4g1v0_Shanghai + - sstore_0to0to0_d4g0v0_Shanghai + - sstore_0to0toX_d0g1v0_Shanghai + - sstore_0to0toX_d1g1v0_Shanghai + - sstore_0to0toX_d2g1v0_Shanghai + - sstore_0toX_d3g1v0_Shanghai + - sstore_0to0toX_d4g0v0_Shanghai + - sstore_0toX_d0g1v0_Shanghai + - sstore_0to0toX_d4g1v0_Shanghai + - sstore_0toX_d1g1v0_Shanghai + - sstore_0toX_d2g1v0_Shanghai + - sstore_0toXto0_d3g1v0_Shanghai + - sstore_0toXto0_d0g1v0_Shanghai + - sstore_0toXto0_d1g1v0_Shanghai + - sstore_0toX_d4g0v0_Shanghai + - sstore_0toXto0_d2g1v0_Shanghai + - sstore_0toX_d4g1v0_Shanghai + - sstore_0toXto0toX_d3g1v0_Shanghai + - sstore_0toXto0toX_d0g1v0_Shanghai + - sstore_0toXto0toX_d1g1v0_Shanghai + - sstore_0toXto0_d4g0v0_Shanghai + - sstore_0toXto0_d4g1v0_Shanghai + - sstore_0toXto0toX_d2g1v0_Shanghai + - sstore_0toXtoX_d3g1v0_Shanghai + - sstore_0toXtoX_d0g1v0_Shanghai + - sstore_0toXtoX_d1g1v0_Shanghai + - sstore_0toXto0toX_d4g0v0_Shanghai + - sstore_0toXto0toX_d4g1v0_Shanghai + - sstore_0toXtoX_d2g1v0_Shanghai + - sstore_0toXtoY_d3g1v0_Shanghai + - sstore_0toXtoY_d0g1v0_Shanghai + - sstore_0toXtoY_d1g1v0_Shanghai + - sstore_0toXtoX_d4g0v0_Shanghai + - sstore_0toXtoY_d2g1v0_Shanghai + - sstore_0toXtoX_d4g1v0_Shanghai + - sstore_Xto0_d3g1v0_Shanghai + - sstore_Xto0_d0g1v0_Shanghai + - sstore_Xto0_d1g1v0_Shanghai + - sstore_0toXtoY_d4g0v0_Shanghai + - sstore_0toXtoY_d4g1v0_Shanghai + - sstore_Xto0_d2g1v0_Shanghai + - sstore_Xto0to0_d3g1v0_Shanghai + - sstore_Xto0to0_d0g1v0_Shanghai + - sstore_Xto0_d4g0v0_Shanghai + - sstore_Xto0to0_d1g1v0_Shanghai + - sstore_Xto0_d4g1v0_Shanghai + - sstore_Xto0to0_d2g1v0_Shanghai + - sstore_Xto0toX_d3g1v0_Shanghai + - sstore_Xto0toX_d0g1v0_Shanghai + - sstore_Xto0toX_d1g1v0_Shanghai + - sstore_Xto0toX_d2g1v0_Shanghai + - sstore_Xto0to0_d4g0v0_Shanghai + - sstore_Xto0to0_d4g1v0_Shanghai + - sstore_Xto0toXto0_d3g1v0_Shanghai + - sstore_Xto0toX_d4g0v0_Shanghai + - sstore_Xto0toXto0_d0g1v0_Shanghai + - sstore_Xto0toXto0_d1g1v0_Shanghai + - sstore_Xto0toXto0_d2g1v0_Shanghai + - sstore_Xto0toX_d4g1v0_Shanghai + - sstore_Xto0toY_d3g1v0_Shanghai + - sstore_Xto0toY_d0g1v0_Shanghai + - sstore_Xto0toY_d1g1v0_Shanghai + - sstore_Xto0toY_d2g1v0_Shanghai + - sstore_Xto0toXto0_d4g0v0_Shanghai + - sstore_Xto0toXto0_d4g1v0_Shanghai + - sstore_XtoX_d3g1v0_Shanghai + - sstore_Xto0toY_d4g0v0_Shanghai + - sstore_XtoX_d0g1v0_Shanghai + - sstore_Xto0toY_d4g1v0_Shanghai + - sstore_XtoX_d1g1v0_Shanghai + - sstore_XtoX_d2g1v0_Shanghai + - sstore_XtoXto0_d3g1v0_Shanghai + - sstore_XtoXto0_d0g1v0_Shanghai + - sstore_XtoX_d4g0v0_Shanghai + - sstore_XtoX_d4g1v0_Shanghai + - sstore_XtoXto0_d1g1v0_Shanghai + - sstore_XtoXto0_d2g1v0_Shanghai + - sstore_XtoXtoX_d3g1v0_Shanghai + - sstore_XtoXtoX_d0g1v0_Shanghai + - sstore_XtoXto0_d4g0v0_Shanghai + - sstore_XtoXto0_d4g1v0_Shanghai + - sstore_XtoXtoX_d2g1v0_Shanghai + - sstore_XtoXtoX_d1g1v0_Shanghai + - sstore_XtoXtoY_d3g1v0_Shanghai + - sstore_XtoXtoY_d0g1v0_Shanghai + - sstore_XtoXtoX_d4g0v0_Shanghai + - sstore_XtoXtoY_d1g1v0_Shanghai + - sstore_XtoXtoX_d4g1v0_Shanghai + - sstore_XtoXtoY_d2g1v0_Shanghai + - sstore_XtoY_d3g1v0_Shanghai + - sstore_XtoY_d0g1v0_Shanghai + - sstore_XtoXtoY_d4g0v0_Shanghai + - sstore_XtoY_d1g1v0_Shanghai + - sstore_XtoY_d2g1v0_Shanghai + - sstore_XtoXtoY_d4g1v0_Shanghai + - sstore_XtoYto0_d3g1v0_Shanghai + - sstore_XtoY_d4g0v0_Shanghai + - sstore_XtoYto0_d0g1v0_Shanghai + - sstore_XtoYto0_d1g1v0_Shanghai + - sstore_XtoYto0_d2g1v0_Shanghai + - sstore_XtoY_d4g1v0_Shanghai + - sstore_XtoYtoX_d3g1v0_Shanghai + - sstore_XtoYtoX_d0g1v0_Shanghai + - sstore_XtoYtoX_d1g1v0_Shanghai + - sstore_XtoYto0_d4g0v0_Shanghai + - sstore_XtoYto0_d4g1v0_Shanghai + - sstore_XtoYtoX_d2g1v0_Shanghai + - sstore_XtoYtoY_d3g1v0_Shanghai + - sstore_XtoYtoY_d0g1v0_Shanghai + - sstore_XtoYtoX_d4g0v0_Shanghai + - sstore_XtoYtoY_d1g1v0_Shanghai + - sstore_XtoYtoX_d4g1v0_Shanghai + - sstore_XtoYtoY_d2g1v0_Shanghai + - sstore_XtoYtoZ_d3g1v0_Shanghai + - sstore_XtoYtoZ_d0g1v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d12g0v0_Shanghai + - sstore_XtoYtoY_d4g0v0_Shanghai + - sstore_XtoYtoZ_d1g1v0_Shanghai + - sstore_XtoYtoY_d4g1v0_Shanghai + - sstore_XtoYtoZ_d2g1v0_Shanghai + - sstore_gasLeft_d0g0v0_Shanghai + - sstore_gasLeft_d1g0v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d13g0v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d1g0v0_Shanghai + - sstore_gasLeft_d4g0v0_Shanghai + - sstore_gasLeft_d3g0v0_Shanghai + - sstore_gasLeft_d6g0v0_Shanghai + - sstore_gasLeft_d7g0v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d5g0v0_Shanghai + - sstore_XtoYtoZ_d4g0v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d15g0v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d9g0v0_Shanghai + - sstore_XtoYtoZ_d4g1v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d11g0v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d3g0v0_Shanghai + - sstore_changeFromExternalCallInInitCode_d7g0v0_Shanghai + stSelfBalance: + - diffPlaces_d0g0v0_Shanghai + - diffPlaces_d1g0v0_Shanghai + - diffPlaces_d2g0v0_Shanghai + - diffPlaces_d3g0v0_Shanghai + - diffPlaces_d4g0v0_Shanghai + - diffPlaces_d5g0v0_Shanghai + - diffPlaces_d6g0v0_Shanghai + - diffPlaces_d10g0v0_Shanghai + - diffPlaces_d11g0v0_Shanghai + - diffPlaces_d12g0v0_Shanghai + - diffPlaces_d13g0v0_Shanghai + - diffPlaces_d14g0v0_Shanghai + - diffPlaces_d15g0v0_Shanghai + - diffPlaces_d16g0v0_Shanghai + - diffPlaces_d17g0v0_Shanghai + - diffPlaces_d7g0v0_Shanghai + - diffPlaces_d18g0v0_Shanghai + - diffPlaces_d19g0v0_Shanghai + - diffPlaces_d20g0v0_Shanghai + - diffPlaces_d8g0v0_Shanghai + - diffPlaces_d21g0v0_Shanghai + - diffPlaces_d9g0v0_Shanghai + - diffPlaces_d22g0v0_Shanghai + - diffPlaces_d24g0v0_Shanghai + - diffPlaces_d23g0v0_Shanghai + - diffPlaces_d25g0v0_Shanghai + - diffPlaces_d26g0v0_Shanghai + - diffPlaces_d28g0v0_Shanghai + - diffPlaces_d27g0v0_Shanghai + - diffPlaces_d31g0v0_Shanghai + - diffPlaces_d30g0v0_Shanghai + - diffPlaces_d29g0v0_Shanghai + - diffPlaces_d32g0v0_Shanghai + - diffPlaces_d33g0v0_Shanghai + - diffPlaces_d34g0v0_Shanghai + stShift: + - sar_2_xor_255_256_d0g0v0_Shanghai + - sar_2_xor_255_minus_1_256_d0g0v0_Shanghai + - sar_2_xor_256_minus_1_256_d0g0v0_Shanghai + - shiftSignedCombinations_d0g0v0_Shanghai + - shiftCombinations_d0g0v0_Shanghai + stSolidityTest: + - TestCryptographicFunctions_d0g0v0_Shanghai + - TestStructuresAndVariabless_d0g0v0_Shanghai + - SelfDestruct_d2g0v0_Shanghai + - SelfDestruct_d1g0v0_Shanghai + - SelfDestruct_d0g0v0_Shanghai + - RecursiveCreateContractsCreate4Contracts_d0g0v0_Shanghai + - RecursiveCreateContracts_d0g0v0_Shanghai + stSpecialTest: + - eoaEmpty_d0g0v1_Shanghai + - eoaEmpty_d1g0v1_Shanghai + - eoaEmpty_d0g0v0_Shanghai + - eoaEmpty_d0g1v0_Shanghai + - sha3_deja_d0g0v0_Shanghai + - makeMoney_d0g0v0_Shanghai + - eoaEmpty_d0g1v1_Shanghai + - eoaEmpty_d1g0v0_Shanghai + - eoaEmpty_d1g1v0_Shanghai + - eoaEmpty_d1g1v1_Shanghai + - selfdestructEIP2929_d0g0v0_Shanghai + - JUMPDEST_AttackwithJump_d0g0v0_Shanghai + - JUMPDEST_Attack_d0g0v0_Shanghai + - deploymentError_d0g0v0_Shanghai + - block504980_d0g0v0_Shanghai + - tx_e1c174e2_d0g0v0_Shanghai + stStackTests: + - stackOverflowM1DUP_d0g0v0_Shanghai + - stackOverflowM1DUP_d10g0v0_Shanghai + - stackOverflowM1DUP_d11g0v0_Shanghai + - stackOverflowM1DUP_d12g0v0_Shanghai + - stackOverflowM1DUP_d13g0v0_Shanghai + - stackOverflowM1DUP_d14g0v0_Shanghai + - stackOverflowM1DUP_d15g0v0_Shanghai + - stackOverflowM1DUP_d1g0v0_Shanghai + - stackOverflowM1DUP_d2g0v0_Shanghai + - stackOverflowM1DUP_d3g0v0_Shanghai + - stackOverflowM1DUP_d4g0v0_Shanghai + - stackOverflowM1DUP_d5g0v0_Shanghai + - stackOverflowM1DUP_d6g0v0_Shanghai + - stackOverflowM1DUP_d7g0v0_Shanghai + - stackOverflowM1DUP_d8g0v0_Shanghai + - stackOverflowM1DUP_d9g0v0_Shanghai + - stackOverflowM1PUSH_d0g0v0_Shanghai + - stackOverflowM1PUSH_d1g0v0_Shanghai + - stackOverflowM1PUSH_d11g0v0_Shanghai + - stackOverflowM1PUSH_d10g0v0_Shanghai + - stackOverflowM1PUSH_d12g0v0_Shanghai + - stackOverflowM1PUSH_d13g0v0_Shanghai + - stackOverflowM1PUSH_d14g0v0_Shanghai + - stackOverflowM1PUSH_d16g0v0_Shanghai + - stackOverflowM1PUSH_d17g0v0_Shanghai + - stackOverflowM1PUSH_d15g0v0_Shanghai + - stackOverflowM1PUSH_d18g0v0_Shanghai + - stackOverflowM1PUSH_d19g0v0_Shanghai + - stackOverflowM1PUSH_d20g0v0_Shanghai + - stackOverflowM1PUSH_d21g0v0_Shanghai + - stackOverflowM1PUSH_d22g0v0_Shanghai + - stackOverflowM1PUSH_d24g0v0_Shanghai + - stackOverflowM1PUSH_d23g0v0_Shanghai + - stackOverflowM1PUSH_d25g0v0_Shanghai + - stackOverflowM1PUSH_d26g0v0_Shanghai + - stackOverflowM1PUSH_d27g0v0_Shanghai + - stackOverflowM1PUSH_d28g0v0_Shanghai + - stackOverflowM1PUSH_d29g0v0_Shanghai + - stackOverflowM1PUSH_d2g0v0_Shanghai + - stackOverflowM1PUSH_d3g0v0_Shanghai + - stackOverflowM1PUSH_d4g0v0_Shanghai + - stackOverflowM1PUSH_d5g0v0_Shanghai + - stackOverflowM1PUSH_d30g0v0_Shanghai + - stackOverflowM1PUSH_d6g0v0_Shanghai + - stackOverflowM1PUSH_d7g0v0_Shanghai + - stackOverflowM1PUSH_d9g0v0_Shanghai + - stackOverflowM1PUSH_d8g0v0_Shanghai + - stackOverflowM1_d0g0v0_Shanghai + - stackOverflowM1_d10g0v0_Shanghai + - stackOverflowM1_d11g0v0_Shanghai + - stackOverflowM1_d12g0v0_Shanghai + - stackOverflowM1_d15g0v0_Shanghai + - stackOverflowM1_d13g0v0_Shanghai + - stackOverflowM1_d14g0v0_Shanghai + - stackOverflowM1_d1g0v0_Shanghai + - stackOverflowM1_d4g0v0_Shanghai + - stackOverflowM1_d2g0v0_Shanghai + - stackOverflowM1_d3g0v0_Shanghai + - stackOverflowM1_d5g0v0_Shanghai + - stackOverflowM1_d6g0v0_Shanghai + - stackOverflowM1_d7g0v0_Shanghai + - stackOverflowM1_d8g0v0_Shanghai + - stackOverflowM1_d9g0v0_Shanghai + - stackOverflowPUSH_d17g0v0_Shanghai + - stackOverflowPUSH_d18g0v0_Shanghai + - stackOverflowPUSH_d19g0v0_Shanghai + - stackOverflowPUSH_d20g0v0_Shanghai + - stackOverflowPUSH_d21g0v0_Shanghai + - stackOverflowPUSH_d23g0v0_Shanghai + - stackOverflowPUSH_d22g0v0_Shanghai + - stackOverflowPUSH_d24g0v0_Shanghai + - stackOverflowPUSH_d25g0v0_Shanghai + - stackOverflowSWAP_d0g0v0_Shanghai + - stackOverflowPUSH_d26g0v0_Shanghai + - stackOverflowPUSH_d27g0v0_Shanghai + - stackOverflowPUSH_d28g0v0_Shanghai + - stackOverflowPUSH_d29g0v0_Shanghai + - stackOverflowPUSH_d30g0v0_Shanghai + - stacksanitySWAP_d0g0v0_Shanghai + stStaticCall: + - StaticcallToPrecompileFromCalledContract_d0g0v0_Shanghai + - StaticcallToPrecompileFromTransaction_d0g0v0_Shanghai + - static_CREATE_EmptyContractAndCallIt_0wei_d0g0v0_Shanghai + - static_CREATE_EmptyContractWithStorageAndCallIt_0wei_d0g0v0_Shanghai + - StaticcallToPrecompileFromContractInitialization_d0g0v0_Shanghai + - static_ABAcalls2_d1g0v0_Shanghai + - static_ABAcalls1_d1g0v0_Shanghai + - static_ABAcalls1_d0g0v0_Shanghai + - static_Call1024BalanceTooLow2_d1g0v0_Shanghai + - static_Call1024BalanceTooLow_d1g0v0_Shanghai + - static_CallContractToCreateContractOOGBonusGas_d0g1v0_Shanghai + - static_CallEcrecover0_0input_d1g0v0_Shanghai + - static_CallEcrecover0_0input_d2g0v0_Shanghai + - static_CallEcrecover0_0input_d3g0v0_Shanghai + - static_CallEcrecover0_0input_d4g0v0_Shanghai + - static_Call1024OOG_d1g0v0_Shanghai + - static_CallEcrecover0_0input_d5g0v0_Shanghai + - static_CallEcrecover0_0input_d6g0v0_Shanghai + - static_CallEcrecover0_0input_d7g0v0_Shanghai + - static_CallEcrecover0_0input_d8g0v0_Shanghai + - static_CallEcrecover0_Gas2999_d0g0v0_Shanghai + - static_CallEcrecover0_NoGas_d0g0v0_Shanghai + - static_ABAcallsSuicide1_d1g0v0_Shanghai + - static_CallEcrecover0_completeReturnValue_d0g0v0_Shanghai + - static_CallEcrecover0_d0g0v0_Shanghai + - static_CallEcrecover0_gas3000_d0g0v0_Shanghai + - static_CallEcrecover0_overlappingInputOutput_d0g0v0_Shanghai + - static_CallEcrecover1_d0g0v0_Shanghai + - static_CallEcrecover2_d0g0v0_Shanghai + - static_CallEcrecover3_d0g0v0_Shanghai + - static_CallEcrecover80_d0g0v0_Shanghai + - static_CallEcrecoverCheckLengthWrongV_d0g0v0_Shanghai + - static_CallEcrecoverH_prefixed0_d0g0v0_Shanghai + - static_CallEcrecoverCheckLength_d0g0v0_Shanghai + - static_CallEcrecoverR_prefixed0_d0g0v0_Shanghai + - static_CallEcrecoverS_prefixed0_d0g0v0_Shanghai + - static_Call1024PreCalls2_d1g0v0_Shanghai + - static_CallEcrecoverV_prefixed0_d0g0v0_Shanghai + - static_CallIdentitiy_1_d0g0v0_Shanghai + - static_CallIdentity_2_d0g0v0_Shanghai + - static_CallIdentity_1_nonzeroValue_d0g0v0_Shanghai + - static_CallIdentity_3_d0g0v0_Shanghai + - static_CallIdentity_4_d0g0v0_Shanghai + - static_CallIdentity_4_gas17_d0g0v0_Shanghai + - static_CallIdentity_4_gas18_d0g0v0_Shanghai + - static_Call1024PreCalls2_d0g0v0_Shanghai + - static_CallRipemd160_1_d0g0v0_Shanghai + - static_Call1024PreCalls3_d1g0v0_Shanghai + - static_CallRipemd160_2_d0g0v0_Shanghai + - static_Call10_d0g0v0_Shanghai + - static_CallRipemd160_3_d0g0v0_Shanghai + - static_Call1024PreCalls_d1g0v0_Shanghai + - static_Call10_d1g0v0_Shanghai + - static_CallRipemd160_3_postfixed0_d0g0v0_Shanghai + - static_CallRipemd160_3_prefixed0_d0g0v0_Shanghai + - static_CallRipemd160_4_d0g0v0_Shanghai + - static_CallRipemd160_4_gas719_d0g0v0_Shanghai + - static_CallSha256_1_d0g0v0_Shanghai + - static_Call1MB1024Calldepth_d0g0v0_Shanghai + - static_CallSha256_1_nonzeroValue_d0g0v0_Shanghai + - static_CallSha256_2_d0g0v0_Shanghai + - static_CallSha256_3_d0g0v0_Shanghai + - static_CallSha256_3_postfix0_d0g0v0_Shanghai + - static_CallSha256_3_prefix0_d0g0v0_Shanghai + - static_CallSha256_4_d0g0v0_Shanghai + - static_CallSha256_4_gas99_d0g0v0_Shanghai + - static_Call1MB1024Calldepth_d1g0v0_Shanghai + - static_Call50000_ecrec_d0g0v0_Shanghai + - static_Call50000_ecrec_d1g0v0_Shanghai + - static_Call50000_identity2_d0g0v0_Shanghai + - static_Call50000_d0g0v0_Shanghai + - static_Call50000_identity2_d1g0v0_Shanghai + - static_Call50000_d1g0v0_Shanghai + - static_Call50000_identity_d0g0v0_Shanghai + - static_Call50000_rip160_d0g0v0_Shanghai + - static_Call50000_identity_d1g0v0_Shanghai + - static_Call50000_rip160_d1g0v0_Shanghai + - static_RETURN_BoundsOOG_d1g0v0_Shanghai + - static_RETURN_Bounds_d0g0v0_Shanghai + - static_CallRecursiveBomb0_d0g0v0_Shanghai + - static_callOutput3Fail_d0g0v0_Shanghai + - static_callOutput3_d0g0v0_Shanghai + - static_CallRecursiveBombPreCall2_d0g0v0_Shanghai + - static_CallRecursiveBomb1_d0g0v0_Shanghai + - static_callOutput3partialFail_d0g0v0_Shanghai + - static_CallRecursiveBomb2_d0g0v0_Shanghai + - static_callOutput3partial_d0g0v0_Shanghai + - static_Call50000bytesContract50_1_d0g0v0_Shanghai + - static_Call50000bytesContract50_1_d1g0v0_Shanghai + - static_CallRecursiveBombPreCall_d0g0v0_Shanghai + - static_Call50000bytesContract50_2_d0g0v0_Shanghai + - static_Call50000bytesContract50_2_d1g0v0_Shanghai + - static_CallRecursiveBomb0_OOG_atMaxCallDepth_d0g0v0_Shanghai + - static_Call50000bytesContract50_3_d0g0v0_Shanghai + - static_Call50000bytesContract50_3_d1g0v0_Shanghai + - static_CallIdentity_5_d0g0v0_Shanghai + - static_CallRipemd160_5_d0g0v0_Shanghai + - static_CallSha256_5_d0g0v0_Shanghai + - static_LoopCallsThenRevert_d0g0v0_Shanghai + - static_LoopCallsThenRevert_d0g1v0_Shanghai + - static_callcall_00_OOGE_1_d1g0v0_Shanghai + - static_callcallcallcode_001_OOGE_d0g0v0_Shanghai + - static_callcallcallcode_001_OOGE_2_d1g0v0_Shanghai + - static_callcallcall_000_OOGMBefore_d0g0v0_Shanghai + - static_Return50000_2_d0g0v0_Shanghai + - static_callCreate2_d2g0v0_Shanghai + - static_callcallcall_000_OOGMAfter2_d0g0v0_Shanghai + - static_callcallcallcode_001_OOGMAfter2_d1g0v0_Shanghai + - static_callcallcallcode_001_OOGMAfter_2_d1g0v0_Shanghai + - static_callcallcallcode_001_OOGMAfter_3_d1g0v0_Shanghai + - static_callcallcodecall_010_OOGE_2_d1g0v0_Shanghai + - static_callcode_checkPC_d0g0v0_Shanghai + - static_callcallcallcode_001_OOGMBefore2_d1g0v0_Shanghai + - static_callcallcallcode_001_OOGMAfter_d1g0v0_Shanghai + - static_callChangeRevert_d1g0v0_Shanghai + - static_callcallcallcode_001_OOGMBefore_d0g0v0_Shanghai + - static_callcallcodecall_010_OOGE_d0g0v0_Shanghai + - static_callcallcodecall_010_OOGMAfter2_d0g0v0_Shanghai + - static_callcallcodecall_010_OOGMAfter_2_d1g0v0_Shanghai + - static_callcallcodecall_010_OOGMAfter_3_d1g0v0_Shanghai + - static_callcallcodecall_010_OOGMAfter_d1g0v0_Shanghai + - static_callcallcodecall_010_OOGMBefore2_d0g0v0_Shanghai + - static_callcallcodecall_010_OOGMBefore_d1g0v0_Shanghai + - static_callcallcodecallcode_011_OOGMAfter2_d1g0v0_Shanghai + - static_callcallcodecallcode_011_OOGMAfter_1_d1g0v0_Shanghai + - static_callcallcodecallcode_011_OOGMAfter_2_d1g0v0_Shanghai + - static_callcallcodecallcode_011_OOGMAfter_d1g0v0_Shanghai + - static_callcallcodecallcode_011_OOGMBefore2_d1g0v0_Shanghai + - static_callcallcodecallcode_011_OOGMBefore_d1g0v0_Shanghai + - static_callcodecallcall_100_OOGMAfter2_d0g0v0_Shanghai + - static_callcodecallcall_100_OOGMAfter2_d0g0v1_Shanghai + - static_callcodecallcall_100_OOGMBefore2_d0g0v0_Shanghai + - static_callcodecallcall_100_OOGMAfter_3_d0g0v1_Shanghai + - static_callcodecallcall_100_OOGMAfter_2_d0g0v0_Shanghai + - static_callcodecallcall_100_OOGMAfter_3_d0g0v0_Shanghai + - static_callcodecallcall_100_OOGMAfter_d0g0v0_Shanghai + - static_callcodecallcall_100_OOGMBefore2_d0g0v1_Shanghai + - static_callcodecallcallcode_101_OOGE_d0g0v0_Shanghai + - static_callcodecallcall_100_OOGMBefore_d0g0v0_Shanghai + - static_contractCreationMakeCallThatAskMoreGasThenTransactionProvided_d0g0v0_Shanghai + - static_callcodecallcallcode_101_OOGMAfter2_d0g0v0_Shanghai + - static_callcodecallcallcode_101_OOGMAfter_1_d0g0v0_Shanghai + - static_callcodecallcallcode_101_OOGMAfter2_d0g0v1_Shanghai + - static_callcodecallcallcode_101_OOGMAfter_3_d0g0v0_Shanghai + - static_callcodecallcallcode_101_OOGMBefore2_d0g0v0_Shanghai + - static_callcodecallcallcode_101_OOGMBefore_d0g0v0_Shanghai + - static_callcodecallcallcode_101_OOGMBefore2_d0g0v1_Shanghai + - static_callcodecallcallcode_101_OOGMAfter_d0g0v0_Shanghai + - static_makeMoney_d0g0v0_Shanghai + - static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0_Shanghai + - static_callcodecallcodecall_110_OOGMAfter2_d0g0v0_Shanghai + - static_callcodecallcodecall_110_OOGMAfter2_d0g0v1_Shanghai + - static_callcodecallcodecall_110_OOGMAfter2_d0g0v2_Shanghai + - static_callcodecallcodecall_110_OOGMAfter_d0g0v0_Shanghai + - static_callcodecallcodecall_110_OOGMBefore2_d0g0v1_Shanghai + - static_callcodecallcodecall_110_OOGMBefore2_d0g0v2_Shanghai + - static_callcodecallcodecall_110_OOGMBefore_d0g0v0_Shanghai + - static_callcodecallcodecall_110_OOGMAfter_3_d0g0v0_Shanghai + - static_contractCreationMakeCallThatAskMoreGasThenTransactionProvided_d2g0v0_Shanghai + - static_contractCreationOOGdontLeaveEmptyContractViaTransaction_d0g0v0_Shanghai + stStaticFlagEnabled: + - CallWithNOTZeroValueToPrecompileFromContractInitialization_d0g0v0_Shanghai + - CallWithNOTZeroValueToPrecompileFromContractInitialization_d1g0v0_Shanghai + - CallWithNOTZeroValueToPrecompileFromContractInitialization_d2g0v0_Shanghai + - CallWithNOTZeroValueToPrecompileFromContractInitialization_d3g0v0_Shanghai + - CallWithNOTZeroValueToPrecompileFromContractInitialization_d6g0v0_Shanghai + - CallWithNOTZeroValueToPrecompileFromContractInitialization_d4g0v0_Shanghai + - CallWithNOTZeroValueToPrecompileFromContractInitialization_d5g0v0_Shanghai + - CallWithNOTZeroValueToPrecompileFromContractInitialization_d7g0v0_Shanghai + - CallWithZeroValueToPrecompileFromTransaction_d0g0v0_Shanghai + - CallWithZeroValueToPrecompileFromCalledContract_d0g0v0_Shanghai + - DelegatecallToPrecompileFromTransaction_d0g0v0_Shanghai + - DelegatecallToPrecompileFromCalledContract_d0g0v0_Shanghai + - CallWithZeroValueToPrecompileFromContractInitialization_d0g0v0_Shanghai + - CallcodeToPrecompileFromTransaction_d0g0v0_Shanghai + - CallcodeToPrecompileFromCalledContract_d0g0v0_Shanghai + - DelegatecallToPrecompileFromContractInitialization_d0g0v0_Shanghai + - CallcodeToPrecompileFromContractInitialization_d0g0v0_Shanghai + stSystemOperationsTest: + - ABAcalls0_d0g0v0_Shanghai + - ABAcallsSuicide0_d0g0v0_Shanghai + - ABAcallsSuicide1_d0g0v0_Shanghai + - CallToNameRegistratorNotMuchMemory0_d0g0v0_Shanghai + - CallToNameRegistratorNotMuchMemory1_d0g0v0_Shanghai + - callerAccountBalance_d0g0v0_Shanghai + - createNameRegistratorZeroMem2_d0g0v0_Shanghai + - createWithInvalidOpcode_d0g0v0_Shanghai + - ABAcallsSuicide1_d1g0v0_Shanghai + - doubleSelfdestructTouch_d0g0v2_Shanghai + - extcodecopy_d0g0v0_Shanghai + - doubleSelfdestructTest_d0g0v0_Shanghai + - doubleSelfdestructTest_d5g0v0_Shanghai + - doubleSelfdestructTest_d2g0v0_Shanghai + - doubleSelfdestructTest_d1g0v0_Shanghai + - doubleSelfdestructTest_d4g0v0_Shanghai + - doubleSelfdestructTest_d6g0v0_Shanghai + - testRandomTest_d0g0v0_Shanghai + - multiSelfdestruct_d0g0v0_Shanghai + - multiSelfdestruct_d1g0v0_Shanghai + - multiSelfdestruct_d2g0v0_Shanghai + - ABAcalls3_d0g0v0_Shanghai + - multiSelfdestruct_d3g0v0_Shanghai + - multiSelfdestruct_d4g0v0_Shanghai + - suicideSendEtherPostDeath_d0g0v0_Shanghai + - ABAcalls2_d0g0v0_Shanghai + - CallRecursiveBomb0_d0g0v0_Shanghai + - CallRecursiveBomb1_d0g0v0_Shanghai + - ABAcalls1_d0g0v0_Shanghai + - CallRecursiveBomb2_d0g0v0_Shanghai + - CallRecursiveBomb3_d0g0v0_Shanghai + - CallRecursiveBomb0_OOG_atMaxCallDepth_d0g0v0_Shanghai + - Call10_d0g0v0_Shanghai + - CallRecursiveBombLog2_d0g0v0_Shanghai + - CallRecursiveBombLog_d0g0v0_Shanghai + stTimeConsuming: + - CALLBlake2f_MaxRounds_d0g0v0_Shanghai + - static_Call50000_sha256_d1g0v0_Shanghai + - static_Call50000_sha256_d0g0v0_Shanghai + stTransactionTest: + - HighGasPrice_d0g0v0_Shanghai + - InternalCallHittingGasLimit2_d0g0v0_Shanghai + - Opcodes_TransactionInit_d120g0v0_Shanghai + - Opcodes_TransactionInit_d23g0v0_Shanghai + - ValueOverflow_d0g0v0_Shanghai + - OverflowGasRequire2_d0g0v0_Shanghai + - SuicidesAndInternlCallSuicidesBonusGasAtCall_d0g0v0_Shanghai + - PointAtInfinityECRecover_d0g0v0_Shanghai + - SuicidesAndInternlCallSuicidesSuccess_d0g0v0_Shanghai + - SuicidesAndInternlCallSuicidesSuccess_d1g0v0_Shanghai + - StoreGasOnCreate_d0g0v0_Shanghai + stWalletTest: + - multiOwnedRemoveOwner_d0g0v0_Shanghai + - multiOwnedIsOwnerFalse_d0g0v0_Shanghai + - multiOwnedIsOwnerTrue_d0g0v0_Shanghai + - multiOwnedConstructionCorrect_d0g0v0_Shanghai + - multiOwnedConstructionNotEnoughGasPartial_d0g1v0_Shanghai + - dayLimitConstruction_d0g0v0_Shanghai + - dayLimitConstructionPartial_d0g0v0_Shanghai + - dayLimitConstruction_d0g1v0_Shanghai + - multiOwnedRemoveOwnerByNonOwner_d0g0v0_Shanghai + - multiOwnedRemoveOwner_mySelf_d0g0v0_Shanghai + - multiOwnedRemoveOwner_ownerIsNotOwner_d0g0v0_Shanghai + - multiOwnedRevokeNothing_d0g0v0_Shanghai + - multiOwnedAddOwner_d0g0v0_Shanghai + - multiOwnedAddOwnerAddMyself_d0g0v0_Shanghai + - dayLimitResetSpentToday_d0g0v0_Shanghai + - multiOwnedChangeRequirementTo0_d0g0v0_Shanghai + - multiOwnedChangeRequirementTo2_d0g0v0_Shanghai + - multiOwnedChangeRequirementTo1_d0g0v0_Shanghai + - dayLimitSetDailyLimitNoData_d0g0v0_Shanghai + - dayLimitSetDailyLimit_d0g0v0_Shanghai + - multiOwnedChangeOwner_fromNotOwner_d0g0v0_Shanghai + - multiOwnedChangeOwnerNoArgument_d0g0v0_Shanghai + - multiOwnedChangeOwner_d0g0v0_Shanghai + - multiOwnedChangeOwner_toIsOwner_d0g0v0_Shanghai + - walletChangeRequirementRemovePendingTransaction_d0g0v0_Shanghai + - walletAddOwnerRemovePendingTransaction_d0g0v0_Shanghai + - walletChangeOwnerRemovePendingTransaction_d0g0v0_Shanghai + - walletConfirm_d0g0v0_Shanghai + - walletConstructionOOG_d0g1v0_Shanghai + - walletConstructionPartial_d0g0v0_Shanghai + - walletConstruction_d0g1v0_Shanghai + - walletConstruction_d0g0v0_Shanghai + - walletRemoveOwnerRemovePendingTransaction_d0g0v0_Shanghai + - walletExecuteOverDailyLimitOnlyOneOwner_d0g0v0_Shanghai + - walletExecuteOverDailyLimitOnlyOneOwnerNew_d0g0v0_Shanghai + - walletExecuteOverDailyLimitMultiOwner_d0g0v0_Shanghai + - walletKillNotByOwner_d0g0v0_Shanghai + - walletExecuteUnderDailyLimit_d0g0v0_Shanghai + - walletKill_d0g0v0_Shanghai + - walletKillToWallet_d0g0v0_Shanghai + stZeroKnowledge2: + - ecadd_0_minus_0_0_minus_0_21000_0_d0g1v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_0_d0g3v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_0_d0g2v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_128_d0g1v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_128_d0g2v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_128_d0g3v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_192_d0g1v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_64_d0g1v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_192_d0g2v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_192_d0g3v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_64_d0g2v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_64_d0g3v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_80_d0g1v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_80_d0g2v0_Shanghai + - ecadd_0_minus_0_0_minus_0_21000_80_d0g3v0_Shanghai + - ecadd_0_minus_0_0_minus_0_25000_128_d0g0v0_Shanghai + - ecadd_0_minus_0_0_minus_0_25000_128_d0g1v0_Shanghai + - ecadd_0_minus_0_0_minus_0_25000_128_d0g2v0_Shanghai + - ecadd_0_minus_0_0_minus_0_25000_128_d0g3v0_Shanghai + - ecadd_0_minus_0_1_minus_2_21000_128_d0g1v0_Shanghai + - ecadd_0_minus_0_1_minus_2_21000_128_d0g2v0_Shanghai + - ecadd_0_minus_0_1_minus_2_21000_128_d0g3v0_Shanghai + - ecadd_0_minus_0_1_minus_2_21000_192_d0g1v0_Shanghai + - ecadd_0_minus_0_1_minus_2_25000_128_d0g0v0_Shanghai + - ecadd_0_minus_0_1_minus_2_25000_128_d0g1v0_Shanghai + - ecadd_0_minus_0_1_minus_2_21000_192_d0g2v0_Shanghai + - ecadd_0_minus_0_1_minus_2_21000_192_d0g3v0_Shanghai + - ecadd_0_minus_0_1_minus_2_25000_128_d0g2v0_Shanghai + - ecadd_0_minus_0_1_minus_2_25000_128_d0g3v0_Shanghai + - ecadd_1145_minus_3932_1145_minus_4651_21000_192_d0g1v0_Shanghai + - ecadd_1145_minus_3932_1145_minus_4651_21000_192_d0g2v0_Shanghai + - ecadd_1145_minus_3932_1145_minus_4651_21000_192_d0g3v0_Shanghai + - ecadd_1145_minus_3932_1145_minus_4651_25000_192_d0g1v0_Shanghai + - ecadd_1145_minus_3932_1145_minus_4651_25000_192_d0g0v0_Shanghai + - ecadd_1145_minus_3932_1145_minus_4651_25000_192_d0g2v0_Shanghai + - ecadd_1145_minus_3932_1145_minus_4651_25000_192_d0g3v0_Shanghai + - ecadd_1145_minus_3932_2969_minus_1336_21000_128_d0g2v0_Shanghai + - ecadd_1145_minus_3932_2969_minus_1336_21000_128_d0g1v0_Shanghai + - ecadd_1145_minus_3932_2969_minus_1336_21000_128_d0g3v0_Shanghai + - ecadd_1145_minus_3932_2969_minus_1336_25000_128_d0g0v0_Shanghai + - ecadd_1145_minus_3932_2969_minus_1336_25000_128_d0g1v0_Shanghai + - ecadd_1145_minus_3932_2969_minus_1336_25000_128_d0g3v0_Shanghai + - ecadd_1145_minus_3932_2969_minus_1336_25000_128_d0g2v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_128_d0g1v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_128_d0g2v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_128_d0g3v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_192_d0g1v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_192_d0g2v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_64_d0g1v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_192_d0g3v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_64_d0g2v0_Shanghai + - ecadd_1_minus_2_0_minus_0_21000_64_d0g3v0_Shanghai + - ecadd_1_minus_2_1_minus_2_21000_128_d0g1v0_Shanghai + - ecadd_1_minus_2_1_minus_2_21000_128_d0g2v0_Shanghai + - ecadd_1_minus_2_1_minus_2_21000_128_d0g3v0_Shanghai + - ecadd_1_minus_2_1_minus_2_21000_192_d0g1v0_Shanghai + - ecadd_1_minus_2_1_minus_2_21000_192_d0g2v0_Shanghai + - ecadd_1_minus_2_1_minus_2_25000_128_d0g0v0_Shanghai + - ecadd_1_minus_2_1_minus_2_21000_192_d0g3v0_Shanghai + - ecadd_1_minus_2_1_minus_2_25000_128_d0g1v0_Shanghai + - ecadd_1_minus_2_1_minus_2_25000_128_d0g2v0_Shanghai + - ecadd_1_minus_2_1_minus_2_25000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_0_21000_0_d0g1v0_Shanghai + - ecmul_0_minus_0_0_21000_0_d0g3v0_Shanghai + - ecmul_0_minus_0_0_21000_0_d0g2v0_Shanghai + - ecmul_0_minus_0_0_21000_128_d0g1v0_Shanghai + - ecmul_0_minus_0_0_21000_128_d0g2v0_Shanghai + - ecmul_0_minus_0_0_21000_40_d0g1v0_Shanghai + - ecmul_0_minus_0_0_21000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_0_21000_40_d0g2v0_Shanghai + - ecmul_0_minus_0_0_21000_40_d0g3v0_Shanghai + - ecmul_0_minus_0_0_21000_64_d0g1v0_Shanghai + - ecmul_0_minus_0_0_21000_64_d0g2v0_Shanghai + - ecmul_0_minus_0_0_21000_64_d0g3v0_Shanghai + - ecmul_0_minus_0_0_21000_80_d0g1v0_Shanghai + - ecmul_0_minus_0_0_21000_80_d0g2v0_Shanghai + - ecmul_0_minus_0_0_21000_80_d0g3v0_Shanghai + - ecmul_0_minus_0_0_21000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_0_21000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_0_21000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_0_28000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_0_28000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_0_28000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_1_21000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_1_21000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_1_21000_128_d0g1v0_Shanghai + - ecmul_0_minus_0_1_21000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_1_21000_128_d0g2v0_Shanghai + - ecmul_0_minus_0_1_21000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_2_21000_128_d0g1v0_Shanghai + - ecmul_0_minus_0_2_21000_128_d0g2v0_Shanghai + - ecmul_0_minus_0_2_21000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_2_21000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_2_21000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_2_21000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_2_28000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_2_28000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_2_28000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_80_d0g1v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_80_d0g3v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_80_d0g2v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_128_d0g1v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_128_d0g2v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_28000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_28000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_340282366920938463463374607431768211456_28000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_5616_21000_128_d0g1v0_Shanghai + - ecmul_0_minus_0_5616_21000_128_d0g2v0_Shanghai + - ecmul_0_minus_0_5616_21000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_5616_21000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_5616_21000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_5616_21000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_5616_28000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_5616_28000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_5616_28000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_5617_21000_128_d0g1v0_Shanghai + - ecmul_0_minus_0_5617_21000_128_d0g2v0_Shanghai + - ecmul_0_minus_0_5617_21000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_5617_21000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_5617_21000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_5617_21000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_5617_28000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_5617_28000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_5617_28000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_9935_21000_128_d0g1v0_Shanghai + - ecmul_0_minus_0_9935_21000_128_d0g2v0_Shanghai + - ecmul_0_minus_0_9935_21000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_9935_21000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_9935_21000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_9935_21000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_9_21000_128_d0g1v0_Shanghai + - ecmul_0_minus_0_9_21000_128_d0g2v0_Shanghai + - ecmul_0_minus_0_9_21000_128_d0g3v0_Shanghai + - ecmul_0_minus_0_9_21000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_9_21000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_9_21000_96_d0g3v0_Shanghai + - ecmul_0_minus_0_9_28000_96_d0g1v0_Shanghai + - ecmul_0_minus_0_9_28000_96_d0g2v0_Shanghai + - ecmul_0_minus_0_9_28000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_0_21000_64_d0g1v0_Shanghai + - ecmul_1_minus_2_0_21000_64_d0g2v0_Shanghai + - ecmul_1_minus_2_0_21000_64_d0g3v0_Shanghai + - ecmul_1_minus_2_0_21000_128_d0g1v0_Shanghai + - ecmul_1_minus_2_0_21000_128_d0g2v0_Shanghai + - ecmul_1_minus_2_0_21000_128_d0g3v0_Shanghai + - ecmul_1_minus_2_0_21000_80_d0g1v0_Shanghai + - ecmul_1_minus_2_0_21000_80_d0g2v0_Shanghai + - ecmul_1_minus_2_0_21000_80_d0g3v0_Shanghai + - ecmul_1_minus_2_0_21000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_0_21000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_0_21000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_1_21000_128_d0g1v0_Shanghai + - ecmul_1_minus_2_1_21000_128_d0g2v0_Shanghai + - ecmul_1_minus_2_1_21000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_1_21000_128_d0g3v0_Shanghai + - ecmul_1_minus_2_1_21000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_1_21000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_1_28000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_1_28000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_1_28000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_2_21000_128_d0g1v0_Shanghai + - ecmul_1_minus_2_2_21000_128_d0g2v0_Shanghai + - ecmul_1_minus_2_2_21000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_2_21000_128_d0g3v0_Shanghai + - ecmul_1_minus_2_2_21000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_2_21000_96_d0g3v0_Shanghai + stZeroKnowledge: + - ecmul_1_minus_2_2_28000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_2_28000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_2_28000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_2_28000_96_d0g4v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_80_d0g1v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_80_d0g2v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_128_d0g1v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_128_d0g2v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_128_d0g3v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_80_d0g3v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_28000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_28000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_340282366920938463463374607431768211456_28000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_5616_21000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_5616_21000_128_d0g1v0_Shanghai + - ecmul_1_minus_2_5616_21000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_5616_21000_128_d0g2v0_Shanghai + - ecmul_1_minus_2_5616_21000_128_d0g3v0_Shanghai + - ecmul_1_minus_2_5616_21000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_5617_21000_128_d0g1v0_Shanghai + - ecmul_1_minus_2_5617_21000_128_d0g2v0_Shanghai + - ecmul_1_minus_2_5617_21000_128_d0g3v0_Shanghai + - ecmul_1_minus_2_5617_21000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_5617_21000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_5617_21000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_616_28000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_616_28000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_616_28000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_616_28000_96_d0g4v0_Shanghai + - ecmul_1_minus_2_9935_21000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_9935_21000_128_d0g1v0_Shanghai + - ecmul_1_minus_2_9935_21000_128_d0g2v0_Shanghai + - ecmul_1_minus_2_9935_21000_128_d0g3v0_Shanghai + - ecmul_1_minus_2_9935_21000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_9935_21000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_9935_28000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_9935_28000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_9935_28000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_9_21000_128_d0g1v0_Shanghai + - ecmul_1_minus_2_9_21000_128_d0g2v0_Shanghai + - ecmul_1_minus_2_9_21000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_9_21000_128_d0g3v0_Shanghai + - ecmul_1_minus_2_9_21000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_9_21000_96_d0g3v0_Shanghai + - ecmul_1_minus_2_9_28000_96_d0g1v0_Shanghai + - ecmul_1_minus_2_9_28000_96_d0g2v0_Shanghai + - ecmul_1_minus_2_9_28000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_0_21000_64_d0g1v0_Shanghai + - ecmul_7827_minus_6598_0_21000_64_d0g2v0_Shanghai + - ecmul_7827_minus_6598_0_21000_64_d0g3v0_Shanghai + - ecmul_7827_minus_6598_0_21000_128_d0g1v0_Shanghai + - ecmul_7827_minus_6598_0_21000_128_d0g2v0_Shanghai + - ecmul_7827_minus_6598_0_21000_128_d0g3v0_Shanghai + - ecmul_7827_minus_6598_0_21000_80_d0g1v0_Shanghai + - ecmul_7827_minus_6598_0_21000_80_d0g2v0_Shanghai + - ecmul_7827_minus_6598_0_21000_80_d0g3v0_Shanghai + - ecmul_7827_minus_6598_0_21000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_0_21000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_0_21000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_128_d0g1v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_80_d0g1v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_128_d0g2v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_80_d0g2v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_128_d0g3v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_80_d0g3v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_1456_21000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_1456_28000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_1456_28000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_1456_28000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_1_21000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_1_21000_128_d0g1v0_Shanghai + - ecmul_7827_minus_6598_1_21000_128_d0g2v0_Shanghai + - ecmul_7827_minus_6598_1_21000_128_d0g3v0_Shanghai + - ecmul_7827_minus_6598_1_21000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_1_21000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_1_28000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_1_28000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_1_28000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_2_21000_128_d0g1v0_Shanghai + - ecmul_7827_minus_6598_2_21000_128_d0g2v0_Shanghai + - ecmul_7827_minus_6598_2_21000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_2_21000_128_d0g3v0_Shanghai + - ecmul_7827_minus_6598_2_21000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_2_21000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_2_28000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_2_28000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_2_28000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_5616_21000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_5616_21000_128_d0g1v0_Shanghai + - ecmul_7827_minus_6598_5616_21000_128_d0g2v0_Shanghai + - ecmul_7827_minus_6598_5616_21000_128_d0g3v0_Shanghai + - ecmul_7827_minus_6598_5616_21000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_5616_21000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_5616_28000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_5616_28000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_5616_28000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_5617_21000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_5617_21000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_5617_21000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_5617_21000_128_d0g1v0_Shanghai + - ecmul_7827_minus_6598_5617_21000_128_d0g2v0_Shanghai + - ecmul_7827_minus_6598_9935_21000_128_d0g2v0_Shanghai + - ecmul_7827_minus_6598_9935_21000_128_d0g3v0_Shanghai + - ecmul_7827_minus_6598_9935_21000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_9935_21000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_9935_28000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_9935_28000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_9935_28000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_9_21000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_9_21000_96_d0g2v0_Shanghai + - ecmul_7827_minus_6598_9_21000_128_d0g1v0_Shanghai + - ecmul_7827_minus_6598_9_21000_128_d0g2v0_Shanghai + - ecmul_7827_minus_6598_9_21000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_9_21000_128_d0g3v0_Shanghai + - ecmul_7827_minus_6598_9_28000_96_d0g1v0_Shanghai + - ecmul_7827_minus_6598_9_28000_96_d0g3v0_Shanghai + - ecmul_7827_minus_6598_9_28000_96_d0g2v0_Shanghai + - ecpairing_empty_data_d0g0v0_Shanghai + - ecpairing_empty_data_d0g3v0_Shanghai + - ecpairing_empty_data_insufficient_gas_d0g2v0_Shanghai + - ecpairing_one_point_fail_d0g0v0_Shanghai + - ecpairing_one_point_with_g1_zero_d0g0v0_Shanghai + - ecpairing_three_point_fail_1_d0g0v0_Shanghai + - ecpairing_two_point_fail_1_d0g0v0_Shanghai + - ecpairing_two_point_fail_2_d0g0v0_Shanghai + - ecpairing_two_point_match_1_d0g0v0_Shanghai + - ecpairing_two_point_match_5_d0g0v0_Shanghai + - pairingTest_d0g0v0_Shanghai + - pairingTest_d1g0v0_Shanghai + - pointAddTrunc_d0g1v0_Shanghai + - pointAddTrunc_d0g0v0_Shanghai + - pointAddTrunc_d0g2v0_Shanghai + - pairingTest_d2g0v0_Shanghai + - pairingTest_d3g0v0_Shanghai + - pointAddTrunc_d2g0v0_Shanghai + - pointAddTrunc_d2g1v0_Shanghai + - pointAddTrunc_d2g2v0_Shanghai + - pointAddTrunc_d3g0v0_Shanghai + - pointAddTrunc_d3g1v0_Shanghai + - pointAddTrunc_d3g2v0_Shanghai + - pairingTest_d4g0v0_Shanghai + - pointAddTrunc_d7g0v0_Shanghai + - pointAddTrunc_d7g1v0_Shanghai + - pointAddTrunc_d7g2v0_Shanghai + - pointAddTrunc_d8g0v0_Shanghai + - pointAddTrunc_d8g1v0_Shanghai + - pointAddTrunc_d8g2v0_Shanghai + - pointAddTrunc_d9g0v0_Shanghai + - pointAddTrunc_d9g1v0_Shanghai + - pointAddTrunc_d9g2v0_Shanghai + - pointAdd_d0g0v0_Shanghai + - pointAdd_d0g1v0_Shanghai + - pointAdd_d0g2v0_Shanghai + - pointAdd_d3g0v0_Shanghai + - pointAdd_d3g1v0_Shanghai + - pointAdd_d3g2v0_Shanghai + - pointAdd_d4g0v0_Shanghai + - pointAdd_d4g1v0_Shanghai + - pointAdd_d4g2v0_Shanghai + - pointAdd_d7g1v0_Shanghai + - pointAdd_d7g0v0_Shanghai + - pointAdd_d7g2v0_Shanghai + - pointAdd_d8g0v0_Shanghai + - pointAdd_d8g1v0_Shanghai + - pointAdd_d8g2v0_Shanghai + - pointAdd_d9g0v0_Shanghai + - pointAdd_d9g1v0_Shanghai + - pointAdd_d9g2v0_Shanghai + - pointMulAdd2_d10g0v0_Shanghai + - pointMulAdd2_d11g0v0_Shanghai + - pointMulAdd2_d13g0v0_Shanghai + - pointMulAdd2_d14g0v0_Shanghai + - pointMulAdd2_d15g0v0_Shanghai + - pointMulAdd2_d16g0v0_Shanghai + - pointMulAdd2_d17g0v0_Shanghai + - pointMulAdd2_d17g3v0_Shanghai + - pointMulAdd2_d18g0v0_Shanghai + - pointMulAdd2_d19g0v0_Shanghai + - pointMulAdd2_d20g0v0_Shanghai + - pointMulAdd2_d21g0v0_Shanghai + - pointMulAdd2_d21g3v0_Shanghai + - pointMulAdd2_d22g0v0_Shanghai + - pointMulAdd2_d23g0v0_Shanghai + - pointMulAdd2_d24g0v0_Shanghai + - pointMulAdd2_d25g0v0_Shanghai + - pointMulAdd2_d27g0v0_Shanghai + - pointMulAdd2_d28g0v0_Shanghai + - pointMulAdd2_d29g0v0_Shanghai + - pointMulAdd2_d30g0v0_Shanghai + - pointMulAdd2_d30g3v0_Shanghai + - pointMulAdd2_d31g0v0_Shanghai + - pointMulAdd2_d32g0v0_Shanghai + - pointMulAdd2_d33g0v0_Shanghai + - pointMulAdd2_d34g0v0_Shanghai + - pointMulAdd2_d35g0v0_Shanghai + - pointMulAdd2_d34g3v0_Shanghai + - pointMulAdd2_d36g0v0_Shanghai + - pointMulAdd2_d37g0v0_Shanghai + - pointMulAdd_d0g0v0_Shanghai + - pointMulAdd_d1g0v0_Shanghai + - pointMulAdd_d4g0v0_Shanghai + - pointMulAdd_d7g3v0_Shanghai + - pointMulAdd_d3g0v0_Shanghai + - pointMulAdd_d7g0v0_Shanghai + - pointMulAdd_d6g0v0_Shanghai + - pointMulAdd_d5g0v0_Shanghai From 34166f27767d79487bc39be33785128037f1cc5c Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 25 Sep 2024 14:52:45 +0200 Subject: [PATCH 05/53] update to llvm 19 --- Cargo.lock | 64 +++++++++++++++++++++++++++++++++++------------------- Cargo.toml | 12 +++++----- 2 files changed, 48 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9ea9a269..723449eb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -973,6 +973,26 @@ dependencies = [ >>>>>>> 595f442 (wip: cairo native) ] +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags 2.6.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 1.1.0", + "shlex", + "syn 2.0.77", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -1047,7 +1067,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#575a104968f14d83341c0e4f82a6d945e043d6ae" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#5e610d860b5da0cf5609ac7009e486ee5a4a5deb" dependencies = [ "anyhow", "ark-ec", @@ -1797,7 +1817,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0" -source = "git+https://github.com/enitrat/cairo_native.git?branch=feat/ef-test-compat#8727999cbf275cc2edb4aa696065e33f82a7f76f" +source = "git+https://github.com/lambdaclass/cairo_native?branch=update-llvm19#5967b2d959660650d38dd6299a5030a4277b582b" dependencies = [ "anyhow", "aquamarine", @@ -1849,7 +1869,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0" -source = "git+https://github.com/enitrat/cairo_native.git?branch=feat/ef-test-compat#8727999cbf275cc2edb4aa696065e33f82a7f76f" +source = "git+https://github.com/lambdaclass/cairo_native?branch=update-llvm19#5967b2d959660650d38dd6299a5030a4277b582b" dependencies = [ "cairo-lang-sierra-gas", "lazy_static", @@ -2070,9 +2090,9 @@ dependencies = [ [[package]] name = "comrak" -version = "0.27.0" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d061c6d53fe98c25efda0d91b7f6b4b4020a51dad78a3eac5028710aa26f8e7" +checksum = "c93ab3577cca16b4a1d80a88c2e0cd8b6e969e51696f0bbb0d1dcb0157109832" dependencies = [ "caseless", "derive_builder", @@ -4294,7 +4314,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -4405,9 +4425,9 @@ checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "llvm-sys" -version = "181.2.0" +version = "191.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d320f9d2723c97d4b78f9190a61ed25cc7cfbe456668c08e6e7dd8e50ceb8500" +checksum = "893cddf1adf0354b93411e413553dd4daf5c43195d73f1acfa1e394bdd371456" dependencies = [ "anyhow", "cc", @@ -4506,9 +4526,9 @@ dependencies = [ [[package]] name = "melior" -version = "0.18.6" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3085c0169aa3b735d8e7df582baee23c2aeb280ea62cc7f71effda28d8e281" +checksum = "c5d97014786c173a839839e2a068e82516ad1eb94fca1d40013d3c5e224e7c1e" dependencies = [ "dashmap", "melior-macro", @@ -4518,9 +4538,9 @@ dependencies = [ [[package]] name = "melior-macro" -version = "0.11.6" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d58c356ebaa7855da67aad1306a0d032b68919d3c65b0b5dcecf10d9bdf6a9" +checksum = "ef7ae0ba2f96784ec407d58374c8477f5b04ec8c57a114cafef0c8f165c4b288" dependencies = [ "comrak", "convert_case 0.6.0", @@ -4627,11 +4647,11 @@ dependencies = [ [[package]] name = "mlir-sys" -version = "0.2.2" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1b5806a63bc959cd5c4e5db8cadd20e40045d41969d325132748db8af11b7f" +checksum = "fae0a14b0940736a243fef4a4d96d8cdf8a253272031b63c5e4b1bea207c82b0" dependencies = [ - "bindgen", + "bindgen 0.70.1", ] [[package]] @@ -5165,7 +5185,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#575a104968f14d83341c0e4f82a6d945e043d6ae" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#5e610d860b5da0cf5609ac7009e486ee5a4a5deb" dependencies = [ "clap", "itertools 0.10.5", @@ -6541,7 +6561,7 @@ name = "reth-mdbx-sys" version = "1.1.1" source = "git+https://github.com/paradigmxyz/reth.git?tag=v1.1.1#15c230bac20e2b1b3532c8b0d470e815fbc0cc22" dependencies = [ - "bindgen", + "bindgen 0.69.4", "cc", ] @@ -8541,7 +8561,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#575a104968f14d83341c0e4f82a6d945e043d6ae" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#5e610d860b5da0cf5609ac7009e486ee5a4a5deb" dependencies = [ "bitvec", "cairo-lang-starknet-classes", @@ -8774,11 +8794,11 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tblgen-alt" -version = "0.3.6" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae726d43658a13a9cd479de814be1311fea69236cd821e931a4fb9ca4d70e50" +checksum = "0ecbc9175dd38627cd01d546e7b41c9a115e5773f4c98f64e2185c81ec5f45ab" dependencies = [ - "bindgen", + "bindgen 0.69.4", "cc", "paste", "thiserror", @@ -9673,7 +9693,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 76d77910..634b75bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,12 +40,12 @@ revm-interpreter = { version = "13.0", default-features = false } revm-primitives = { version = "13.0", default-features = false } # Starknet deps -cairo-lang-casm = "2.8.0" -cairo-lang-starknet = "2.8.0" -cairo-lang-utils = "2.8.0" -cairo-lang-starknet-classes = "2.8.0" -cairo-lang-sierra = "2.8.0" -cairo-native = { git = "https://github.com/enitrat/cairo_native.git", branch = "feat/ef-test-compat" } # This is a temporary dependency, will be removed once the new version of cairo-native is released to main. +cairo-lang-casm = "2.8.2" +cairo-lang-starknet = "2.8.2" +cairo-lang-utils = "2.8.2" +cairo-lang-starknet-classes = "2.8.2" +cairo-lang-sierra = "2.8.2" +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch = "update-llvm19" } cairo-vm = "1.0.1" blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", default-features = false, features = [ "testing", From ddf10d153924295947bbf7939232599ba0dfed66 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 26 Sep 2024 21:00:39 +0200 Subject: [PATCH 06/53] update remote --- Cargo.lock | 14 +- Cargo.toml | 2 +- blockchain-tests-skip.yml | 6885 +---------------- .../src/evm_sequencer/sequencer/mod.rs | 15 +- crates/sequencer/src/native.rs | 27 +- crates/sequencer/src/state.rs | 2 +- 6 files changed, 23 insertions(+), 6922 deletions(-) mode change 100644 => 120000 blockchain-tests-skip.yml diff --git a/Cargo.lock b/Cargo.lock index 723449eb..5d89b034 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#5e610d860b5da0cf5609ac7009e486ee5a4a5deb" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#313ea8659a0266687d862ecc0c276aef56f519e5" dependencies = [ "anyhow", "ark-ec", @@ -1817,7 +1817,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0" -source = "git+https://github.com/lambdaclass/cairo_native?branch=update-llvm19#5967b2d959660650d38dd6299a5030a4277b582b" +source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-snapshot-clones#f3f6ba23a9a6d8fb480d6250a5b382f68d957ed9" dependencies = [ "anyhow", "aquamarine", @@ -1869,7 +1869,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0" -source = "git+https://github.com/lambdaclass/cairo_native?branch=update-llvm19#5967b2d959660650d38dd6299a5030a4277b582b" +source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-snapshot-clones#f3f6ba23a9a6d8fb480d6250a5b382f68d957ed9" dependencies = [ "cairo-lang-sierra-gas", "lazy_static", @@ -3718,7 +3718,11 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", +<<<<<<< HEAD "socket2", +======= + "socket2 0.4.10", +>>>>>>> 29ad08f (update remote) "tokio", "tower-service", "tracing", @@ -5185,7 +5189,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#5e610d860b5da0cf5609ac7009e486ee5a4a5deb" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#313ea8659a0266687d862ecc0c276aef56f519e5" dependencies = [ "clap", "itertools 0.10.5", @@ -8561,7 +8565,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#5e610d860b5da0cf5609ac7009e486ee5a4a5deb" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#313ea8659a0266687d862ecc0c276aef56f519e5" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 634b75bc..c97050a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,7 @@ cairo-lang-starknet = "2.8.2" cairo-lang-utils = "2.8.2" cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch = "update-llvm19" } +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch = "fix-snapshot-clones" } cairo-vm = "1.0.1" blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", default-features = false, features = [ "testing", diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml deleted file mode 100644 index fa34bac0..00000000 --- a/blockchain-tests-skip.yml +++ /dev/null @@ -1,6884 +0,0 @@ -# List of test directories to completely skip -# trunk-ignore(yamllint/empty-values) -directories: - -# List of file names to be skipped -# The first level corresponds to the directory, the second to the list of file names to ignore. -# trunk-ignore(yamllint/empty-values) -filename: - -# Keeping some skipped tests because of a probable memory leak somewhere -# causing cargo test to just crash at some point -regex: - eip4895_withdrawals: - - .* - eip4844_blobs: - - .* - eip4788_beacon_root: - - .* - eip7516_blobgasfee: - - .* - stEIP4844-blobtransactions: - - .* - stMemoryStressTest: - - mload32bitBound_return.* # ef-tests #565 - - CREATE_Bounds.* # ef-tests #565 - - CREATE2_Bounds.* # ef-tests #565 - - CALL_Bounds.* # ef-tests #565 - - CALLCODE_Bounds.* # ef-tests #565 - - DELEGATECALL_Bounds.* # ef-tests #565 - - static_CALL_Bounds.* # ef-tests #565 - stZeroKnowledge: - - .*ecmul.* - stZeroKnowledge2: - - .*ecadd.* - - .*ecmul.* - -testname: - vmIOandFlowOperations: - - gas_d0g0v0_Shanghai - - pc_d0g0v0_Shanghai - - pc_d1g0v0_Shanghai - - jump_d5g0v0_Shanghai - - jumpi_d9g0v0_Shanghai - stEIP3860-limitmeterinitcode: - - create2InitCodeSizeLimit_d1g0v0_Shanghai - - create2InitCodeSizeLimit_d0g0v0_Shanghai - - createInitCodeSizeLimit_d0g0v0_Shanghai - - creationTxInitCodeSizeLimit_d0g0v0_Shanghai - vmTests: - - blockInfo_d0g0v0_Shanghai - - blockInfo_d1g0v0_Shanghai - - blockInfo_d2g0v0_Shanghai - - blockInfo_d3g0v0_Shanghai - - blockInfo_d4g0v0_Shanghai - - calldatasize_d0g0v0_Shanghai - - calldatasize_d10g0v0_Shanghai - - calldatasize_d11g0v0_Shanghai - - calldatasize_d12g0v0_Shanghai - - calldatasize_d13g0v0_Shanghai - - calldatasize_d14g0v0_Shanghai - - calldatasize_d15g0v0_Shanghai - - calldatasize_d16g0v0_Shanghai - - calldatasize_d17g0v0_Shanghai - - calldatasize_d18g0v0_Shanghai - - calldatasize_d19g0v0_Shanghai - - calldatasize_d1g0v0_Shanghai - - calldatasize_d2g0v0_Shanghai - - calldatasize_d3g0v0_Shanghai - - calldatasize_d4g0v0_Shanghai - - calldatasize_d5g0v0_Shanghai - - calldatasize_d6g0v0_Shanghai - - calldatasize_d7g0v0_Shanghai - - calldatasize_d8g0v0_Shanghai - - calldatasize_d9g0v0_Shanghai - - envInfo_d0g0v0_Shanghai - - envInfo_d1g0v0_Shanghai - - envInfo_d2g0v0_Shanghai - - envInfo_d3g0v0_Shanghai - - envInfo_d4g0v0_Shanghai - - envInfo_d5g0v0_Shanghai - - envInfo_d6g0v0_Shanghai - - envInfo_d7g0v0_Shanghai - - envInfo_d8g0v0_Shanghai - - envInfo_d9g0v0_Shanghai - - random_d4g0v0_Shanghai - - random_d3g0v0_Shanghai - - sha3_d0g0v0_Shanghai - - sha3_d10g0v0_Shanghai - - sha3_d11g0v0_Shanghai - - sha3_d12g0v0_Shanghai - - sha3_d13g0v0_Shanghai - - sha3_d15g0v0_Shanghai - - sha3_d14g0v0_Shanghai - - sha3_d16g0v0_Shanghai - - sha3_d1g0v0_Shanghai - - sha3_d2g0v0_Shanghai - - sha3_d3g0v0_Shanghai - - sha3_d4g0v0_Shanghai - - sha3_d5g0v0_Shanghai - - sha3_d6g0v0_Shanghai - - sha3_d7g0v0_Shanghai - - sha3_d8g0v0_Shanghai - - sha3_d9g0v0_Shanghai - stEIP3855-push0: - - push0_d2g0v0_Shanghai - - push0_d1g0v0_Shanghai - vmArithmeticTest: - - expPower256_d0g0v0_Shanghai - - expPower256Of256_d0g0v0_Shanghai - - twoOps_d0g0v0_Shanghai - stArgsZeroOneBalance: - - callNonConst_d0g0v1_Shanghai - - calldatacopyNonConst_d0g0v1_Shanghai - - expNonConst_d0g0v0_Shanghai - - sha3NonConst_d0g0v0_Shanghai - - sha3NonConst_d0g0v1_Shanghai - vmPerformance: - - loopExp_d10g0v0_Shanghai - - loopExp_d2g0v0_Shanghai - - loopExp_d11g0v0_Shanghai - - loopExp_d0g0v0_Shanghai - - loopExp_d1g0v0_Shanghai - - loopExp_d14g0v0_Shanghai - - loopExp_d3g0v0_Shanghai - - loopExp_d4g0v0_Shanghai - - loopExp_d9g0v0_Shanghai - - loopExp_d5g0v0_Shanghai - - loopMul_d0g0v0_Shanghai - - loopMul_d2g0v0_Shanghai - - loopMul_d1g0v0_Shanghai - - performanceTester_d1g0v0_Shanghai - - performanceTester_d0g0v0_Shanghai - - performanceTester_d3g0v0_Shanghai - - performanceTester_d2g0v0_Shanghai - - performanceTester_d4g0v0_Shanghai - stBadOpcode: - - badOpcodes_d110g0v0_Shanghai - - invalidAddr_d41g0v0_Shanghai - - invalidAddr_d43g0v0_Shanghai - - invalidAddr_d45g0v0_Shanghai - - invalidAddr_d47g0v0_Shanghai - - invalidAddr_d49g0v0_Shanghai - - invalidDiffPlaces_d0g0v0_Shanghai - - invalidDiffPlaces_d10g0v0_Shanghai - - invalidDiffPlaces_d11g0v0_Shanghai - - invalidDiffPlaces_d12g0v0_Shanghai - - invalidDiffPlaces_d13g0v0_Shanghai - - invalidDiffPlaces_d14g0v0_Shanghai - - invalidDiffPlaces_d15g0v0_Shanghai - - invalidAddr_d71g0v0_Shanghai - - invalidAddr_d73g0v0_Shanghai - - invalidAddr_d75g0v0_Shanghai - - invalidAddr_d77g0v0_Shanghai - - invalidAddr_d79g0v0_Shanghai - - invalidDiffPlaces_d16g0v0_Shanghai - - invalidDiffPlaces_d1g0v0_Shanghai - - invalidDiffPlaces_d17g0v0_Shanghai - - invalidDiffPlaces_d18g0v0_Shanghai - - invalidDiffPlaces_d2g0v0_Shanghai - - invalidDiffPlaces_d3g0v0_Shanghai - - invalidDiffPlaces_d4g0v0_Shanghai - - invalidDiffPlaces_d19g0v0_Shanghai - - invalidDiffPlaces_d21g0v0_Shanghai - - invalidDiffPlaces_d5g0v0_Shanghai - - invalidDiffPlaces_d20g0v0_Shanghai - - invalidDiffPlaces_d22g0v0_Shanghai - - invalidDiffPlaces_d6g0v0_Shanghai - - invalidDiffPlaces_d23g0v0_Shanghai - - measureGas_d1g0v0_Shanghai - - invalidDiffPlaces_d7g0v0_Shanghai - - invalidDiffPlaces_d8g0v0_Shanghai - - invalidDiffPlaces_d9g0v0_Shanghai - - measureGas_d6g0v0_Shanghai - - measureGas_d7g0v0_Shanghai - - opc0CDiffPlaces_d0g0v0_Shanghai - - measureGas_d8g0v0_Shanghai - - invalidDiffPlaces_d24g0v0_Shanghai - - measureGas_d0g0v0_Shanghai - - measureGas_d9g0v0_Shanghai - - invalidDiffPlaces_d25g0v0_Shanghai - - invalidDiffPlaces_d26g0v0_Shanghai - - invalidDiffPlaces_d28g0v0_Shanghai - - invalidDiffPlaces_d27g0v0_Shanghai - - invalidDiffPlaces_d29g0v0_Shanghai - - invalidDiffPlaces_d30g0v0_Shanghai - - opc0CDiffPlaces_d1g0v0_Shanghai - - invalidDiffPlaces_d31g0v0_Shanghai - - invalidDiffPlaces_d32g0v0_Shanghai - - opc0CDiffPlaces_d10g0v0_Shanghai - - opc0CDiffPlaces_d11g0v0_Shanghai - - invalidDiffPlaces_d33g0v0_Shanghai - - opc0CDiffPlaces_d2g0v0_Shanghai - - opc0CDiffPlaces_d12g0v0_Shanghai - - opc0CDiffPlaces_d14g0v0_Shanghai - - opc0CDiffPlaces_d13g0v0_Shanghai - - invalidDiffPlaces_d34g0v0_Shanghai - - opc0CDiffPlaces_d15g0v0_Shanghai - - opc0DDiffPlaces_d0g0v0_Shanghai - - opc0CDiffPlaces_d16g0v0_Shanghai - - opc0CDiffPlaces_d3g0v0_Shanghai - - opc0CDiffPlaces_d17g0v0_Shanghai - - opc0CDiffPlaces_d4g0v0_Shanghai - - opc0CDiffPlaces_d18g0v0_Shanghai - - opc0CDiffPlaces_d19g0v0_Shanghai - - opc0CDiffPlaces_d5g0v0_Shanghai - - opc0CDiffPlaces_d21g0v0_Shanghai - - opc0CDiffPlaces_d6g0v0_Shanghai - - opc0CDiffPlaces_d8g0v0_Shanghai - - opc0CDiffPlaces_d20g0v0_Shanghai - - opc0CDiffPlaces_d7g0v0_Shanghai - - opc0CDiffPlaces_d22g0v0_Shanghai - - opc0DDiffPlaces_d10g0v0_Shanghai - - opc0CDiffPlaces_d23g0v0_Shanghai - - opc0CDiffPlaces_d9g0v0_Shanghai - - opc0CDiffPlaces_d24g0v0_Shanghai - - opc0DDiffPlaces_d12g0v0_Shanghai - - opc0DDiffPlaces_d1g0v0_Shanghai - - opc0DDiffPlaces_d11g0v0_Shanghai - - opc0CDiffPlaces_d25g0v0_Shanghai - - opc0CDiffPlaces_d26g0v0_Shanghai - - opc0CDiffPlaces_d32g0v0_Shanghai - - opc0DDiffPlaces_d13g0v0_Shanghai - - opc0CDiffPlaces_d29g0v0_Shanghai - - opc0CDiffPlaces_d27g0v0_Shanghai - - opc0CDiffPlaces_d28g0v0_Shanghai - - opc0CDiffPlaces_d30g0v0_Shanghai - - opc0CDiffPlaces_d31g0v0_Shanghai - - opc0DDiffPlaces_d14g0v0_Shanghai - - opc0DDiffPlaces_d15g0v0_Shanghai - - opc0DDiffPlaces_d2g0v0_Shanghai - - opc0CDiffPlaces_d33g0v0_Shanghai - - opc0DDiffPlaces_d16g0v0_Shanghai - - opc0CDiffPlaces_d34g0v0_Shanghai - - opc0DDiffPlaces_d17g0v0_Shanghai - - opc0EDiffPlaces_d0g0v0_Shanghai - - opc0DDiffPlaces_d18g0v0_Shanghai - - opc0DDiffPlaces_d3g0v0_Shanghai - - opc0DDiffPlaces_d19g0v0_Shanghai - - opc0DDiffPlaces_d4g0v0_Shanghai - - opc0DDiffPlaces_d20g0v0_Shanghai - - opc0DDiffPlaces_d5g0v0_Shanghai - - opc0DDiffPlaces_d21g0v0_Shanghai - - opc0DDiffPlaces_d6g0v0_Shanghai - - opc0DDiffPlaces_d22g0v0_Shanghai - - opc0DDiffPlaces_d7g0v0_Shanghai - - opc0DDiffPlaces_d23g0v0_Shanghai - - opc0DDiffPlaces_d8g0v0_Shanghai - - opc0DDiffPlaces_d9g0v0_Shanghai - - opc0EDiffPlaces_d10g0v0_Shanghai - - opc0EDiffPlaces_d11g0v0_Shanghai - - opc0EDiffPlaces_d1g0v0_Shanghai - - opc0DDiffPlaces_d24g0v0_Shanghai - - opc0EDiffPlaces_d12g0v0_Shanghai - - opc0DDiffPlaces_d26g0v0_Shanghai - - opc0DDiffPlaces_d25g0v0_Shanghai - - opc0DDiffPlaces_d28g0v0_Shanghai - - opc0EDiffPlaces_d13g0v0_Shanghai - - opc0DDiffPlaces_d27g0v0_Shanghai - - opc0EDiffPlaces_d14g0v0_Shanghai - - opc0DDiffPlaces_d29g0v0_Shanghai - - opc0EDiffPlaces_d15g0v0_Shanghai - - opc0DDiffPlaces_d30g0v0_Shanghai - - opc0EDiffPlaces_d16g0v0_Shanghai - - opc0DDiffPlaces_d31g0v0_Shanghai - - opc0DDiffPlaces_d32g0v0_Shanghai - - opc0EDiffPlaces_d2g0v0_Shanghai - - opc0DDiffPlaces_d33g0v0_Shanghai - - opc0DDiffPlaces_d34g0v0_Shanghai - - opc0EDiffPlaces_d17g0v0_Shanghai - - opc0EDiffPlaces_d18g0v0_Shanghai - - opc0EDiffPlaces_d19g0v0_Shanghai - - opc0EDiffPlaces_d3g0v0_Shanghai - - opc0EDiffPlaces_d21g0v0_Shanghai - - opc0FDiffPlaces_d0g0v0_Shanghai - - opc0EDiffPlaces_d20g0v0_Shanghai - - opc0EDiffPlaces_d4g0v0_Shanghai - - opc0EDiffPlaces_d5g0v0_Shanghai - - opc0EDiffPlaces_d22g0v0_Shanghai - - opc0EDiffPlaces_d6g0v0_Shanghai - - opc0EDiffPlaces_d23g0v0_Shanghai - - opc0EDiffPlaces_d7g0v0_Shanghai - - opc0EDiffPlaces_d8g0v0_Shanghai - - opc0EDiffPlaces_d9g0v0_Shanghai - - opc0FDiffPlaces_d1g0v0_Shanghai - - opc0EDiffPlaces_d24g0v0_Shanghai - - opc0FDiffPlaces_d10g0v0_Shanghai - - opc0FDiffPlaces_d11g0v0_Shanghai - - opc0EDiffPlaces_d26g0v0_Shanghai - - opc0EDiffPlaces_d25g0v0_Shanghai - - opc0EDiffPlaces_d28g0v0_Shanghai - - opc0FDiffPlaces_d12g0v0_Shanghai - - opc0EDiffPlaces_d27g0v0_Shanghai - - opc0FDiffPlaces_d13g0v0_Shanghai - - opc0EDiffPlaces_d29g0v0_Shanghai - - opc0FDiffPlaces_d14g0v0_Shanghai - - opc0EDiffPlaces_d32g0v0_Shanghai - - opc0FDiffPlaces_d15g0v0_Shanghai - - opc0EDiffPlaces_d30g0v0_Shanghai - - opc0EDiffPlaces_d31g0v0_Shanghai - - opc0EDiffPlaces_d33g0v0_Shanghai - - opc0FDiffPlaces_d2g0v0_Shanghai - - opc0FDiffPlaces_d16g0v0_Shanghai - - opc0EDiffPlaces_d34g0v0_Shanghai - - opc0FDiffPlaces_d17g0v0_Shanghai - - opc0FDiffPlaces_d18g0v0_Shanghai - - opc0FDiffPlaces_d3g0v0_Shanghai - - opc0FDiffPlaces_d19g0v0_Shanghai - - opc0FDiffPlaces_d20g0v0_Shanghai - - opc0FDiffPlaces_d4g0v0_Shanghai - - opc0FDiffPlaces_d21g0v0_Shanghai - - opc1EDiffPlaces_d0g0v0_Shanghai - - opc0FDiffPlaces_d22g0v0_Shanghai - - opc0FDiffPlaces_d23g0v0_Shanghai - - opc0FDiffPlaces_d5g0v0_Shanghai - - opc0FDiffPlaces_d6g0v0_Shanghai - - opc0FDiffPlaces_d7g0v0_Shanghai - - opc0FDiffPlaces_d8g0v0_Shanghai - - opc0FDiffPlaces_d24g0v0_Shanghai - - opc1EDiffPlaces_d1g0v0_Shanghai - - opc0FDiffPlaces_d9g0v0_Shanghai - - opc1EDiffPlaces_d10g0v0_Shanghai - - opc0FDiffPlaces_d25g0v0_Shanghai - - opc1EDiffPlaces_d11g0v0_Shanghai - - opc0FDiffPlaces_d26g0v0_Shanghai - - opc1EDiffPlaces_d12g0v0_Shanghai - - opc0FDiffPlaces_d27g0v0_Shanghai - - opc1EDiffPlaces_d13g0v0_Shanghai - - opc0FDiffPlaces_d28g0v0_Shanghai - - opc1EDiffPlaces_d14g0v0_Shanghai - - opc1EDiffPlaces_d15g0v0_Shanghai - - opc0FDiffPlaces_d30g0v0_Shanghai - - opc0FDiffPlaces_d29g0v0_Shanghai - - opc0FDiffPlaces_d33g0v0_Shanghai - - opc0FDiffPlaces_d32g0v0_Shanghai - - opc1EDiffPlaces_d2g0v0_Shanghai - - opc0FDiffPlaces_d31g0v0_Shanghai - - opc1EDiffPlaces_d16g0v0_Shanghai - - opc0FDiffPlaces_d34g0v0_Shanghai - - opc1EDiffPlaces_d17g0v0_Shanghai - - opc1EDiffPlaces_d18g0v0_Shanghai - - opc1EDiffPlaces_d21g0v0_Shanghai - - opc1EDiffPlaces_d19g0v0_Shanghai - - opc1EDiffPlaces_d3g0v0_Shanghai - - opc1EDiffPlaces_d20g0v0_Shanghai - - opc1FDiffPlaces_d0g0v0_Shanghai - - opc1EDiffPlaces_d23g0v0_Shanghai - - opc1EDiffPlaces_d4g0v0_Shanghai - - opc1EDiffPlaces_d22g0v0_Shanghai - - opc1EDiffPlaces_d5g0v0_Shanghai - - opc1EDiffPlaces_d6g0v0_Shanghai - - opc1EDiffPlaces_d7g0v0_Shanghai - - opc1EDiffPlaces_d8g0v0_Shanghai - - opc1EDiffPlaces_d24g0v0_Shanghai - - opc1EDiffPlaces_d9g0v0_Shanghai - - opc1FDiffPlaces_d1g0v0_Shanghai - - opc1EDiffPlaces_d25g0v0_Shanghai - - opc1FDiffPlaces_d10g0v0_Shanghai - - opc1FDiffPlaces_d11g0v0_Shanghai - - opc1EDiffPlaces_d26g0v0_Shanghai - - opc1FDiffPlaces_d12g0v0_Shanghai - - opc1EDiffPlaces_d27g0v0_Shanghai - - opc1FDiffPlaces_d13g0v0_Shanghai - - opc1FDiffPlaces_d14g0v0_Shanghai - - opc1EDiffPlaces_d28g0v0_Shanghai - - opc1FDiffPlaces_d15g0v0_Shanghai - - opc1EDiffPlaces_d30g0v0_Shanghai - - opc1EDiffPlaces_d29g0v0_Shanghai - - opc1EDiffPlaces_d31g0v0_Shanghai - - opc1EDiffPlaces_d32g0v0_Shanghai - - opc1FDiffPlaces_d16g0v0_Shanghai - - opc1FDiffPlaces_d2g0v0_Shanghai - - opc1FDiffPlaces_d17g0v0_Shanghai - - opc1EDiffPlaces_d33g0v0_Shanghai - - opc1EDiffPlaces_d34g0v0_Shanghai - - opc1FDiffPlaces_d18g0v0_Shanghai - - opc1FDiffPlaces_d19g0v0_Shanghai - - opc1FDiffPlaces_d20g0v0_Shanghai - - opc1FDiffPlaces_d3g0v0_Shanghai - - opc1FDiffPlaces_d21g0v0_Shanghai - - opc21DiffPlaces_d0g0v0_Shanghai - - opc1FDiffPlaces_d22g0v0_Shanghai - - opc1FDiffPlaces_d4g0v0_Shanghai - - opc1FDiffPlaces_d23g0v0_Shanghai - - opc1FDiffPlaces_d5g0v0_Shanghai - - opc1FDiffPlaces_d6g0v0_Shanghai - - opc1FDiffPlaces_d7g0v0_Shanghai - - opc1FDiffPlaces_d24g0v0_Shanghai - - opc1FDiffPlaces_d8g0v0_Shanghai - - opc1FDiffPlaces_d9g0v0_Shanghai - - opc21DiffPlaces_d1g0v0_Shanghai - - opc1FDiffPlaces_d25g0v0_Shanghai - - opc21DiffPlaces_d10g0v0_Shanghai - - opc21DiffPlaces_d11g0v0_Shanghai - - opc1FDiffPlaces_d26g0v0_Shanghai - - opc21DiffPlaces_d12g0v0_Shanghai - - opc21DiffPlaces_d13g0v0_Shanghai - - opc1FDiffPlaces_d27g0v0_Shanghai - - opc21DiffPlaces_d14g0v0_Shanghai - - opc1FDiffPlaces_d29g0v0_Shanghai - - opc1FDiffPlaces_d28g0v0_Shanghai - - opc21DiffPlaces_d15g0v0_Shanghai - - opc21DiffPlaces_d16g0v0_Shanghai - - opc1FDiffPlaces_d30g0v0_Shanghai - - opc1FDiffPlaces_d31g0v0_Shanghai - - opc1FDiffPlaces_d32g0v0_Shanghai - - opc21DiffPlaces_d2g0v0_Shanghai - - opc1FDiffPlaces_d33g0v0_Shanghai - - opc21DiffPlaces_d17g0v0_Shanghai - - opc1FDiffPlaces_d34g0v0_Shanghai - - opc21DiffPlaces_d18g0v0_Shanghai - - opc21DiffPlaces_d3g0v0_Shanghai - - opc21DiffPlaces_d19g0v0_Shanghai - - opc22DiffPlaces_d0g0v0_Shanghai - - opc21DiffPlaces_d21g0v0_Shanghai - - opc21DiffPlaces_d22g0v0_Shanghai - - opc21DiffPlaces_d4g0v0_Shanghai - - opc21DiffPlaces_d20g0v0_Shanghai - - opc21DiffPlaces_d23g0v0_Shanghai - - opc21DiffPlaces_d5g0v0_Shanghai - - opc21DiffPlaces_d6g0v0_Shanghai - - opc21DiffPlaces_d7g0v0_Shanghai - - opc21DiffPlaces_d8g0v0_Shanghai - - opc21DiffPlaces_d24g0v0_Shanghai - - opc21DiffPlaces_d9g0v0_Shanghai - - opc22DiffPlaces_d1g0v0_Shanghai - - opc22DiffPlaces_d10g0v0_Shanghai - - opc21DiffPlaces_d25g0v0_Shanghai - - opc21DiffPlaces_d26g0v0_Shanghai - - opc22DiffPlaces_d11g0v0_Shanghai - - opc22DiffPlaces_d12g0v0_Shanghai - - opc22DiffPlaces_d13g0v0_Shanghai - - opc22DiffPlaces_d14g0v0_Shanghai - - opc21DiffPlaces_d27g0v0_Shanghai - - opc21DiffPlaces_d28g0v0_Shanghai - - opc22DiffPlaces_d15g0v0_Shanghai - - opc21DiffPlaces_d29g0v0_Shanghai - - opc21DiffPlaces_d30g0v0_Shanghai - - opc21DiffPlaces_d31g0v0_Shanghai - - opc21DiffPlaces_d32g0v0_Shanghai - - opc22DiffPlaces_d2g0v0_Shanghai - - opc22DiffPlaces_d16g0v0_Shanghai - - opc21DiffPlaces_d33g0v0_Shanghai - - opc21DiffPlaces_d34g0v0_Shanghai - - opc22DiffPlaces_d17g0v0_Shanghai - - opc22DiffPlaces_d18g0v0_Shanghai - - opc22DiffPlaces_d19g0v0_Shanghai - - opc22DiffPlaces_d3g0v0_Shanghai - - opc23DiffPlaces_d0g0v0_Shanghai - - opc22DiffPlaces_d21g0v0_Shanghai - - opc22DiffPlaces_d22g0v0_Shanghai - - opc22DiffPlaces_d4g0v0_Shanghai - - opc22DiffPlaces_d20g0v0_Shanghai - - opc22DiffPlaces_d23g0v0_Shanghai - - opc22DiffPlaces_d5g0v0_Shanghai - - opc22DiffPlaces_d6g0v0_Shanghai - - opc22DiffPlaces_d7g0v0_Shanghai - - opc22DiffPlaces_d8g0v0_Shanghai - - opc22DiffPlaces_d24g0v0_Shanghai - - opc22DiffPlaces_d9g0v0_Shanghai - - opc23DiffPlaces_d1g0v0_Shanghai - - opc23DiffPlaces_d10g0v0_Shanghai - - opc22DiffPlaces_d25g0v0_Shanghai - - opc23DiffPlaces_d11g0v0_Shanghai - - opc22DiffPlaces_d26g0v0_Shanghai - - opc23DiffPlaces_d12g0v0_Shanghai - - opc23DiffPlaces_d13g0v0_Shanghai - - opc22DiffPlaces_d27g0v0_Shanghai - - opc22DiffPlaces_d28g0v0_Shanghai - - opc23DiffPlaces_d14g0v0_Shanghai - - opc22DiffPlaces_d29g0v0_Shanghai - - opc23DiffPlaces_d15g0v0_Shanghai - - opc22DiffPlaces_d30g0v0_Shanghai - - opc22DiffPlaces_d31g0v0_Shanghai - - opc22DiffPlaces_d32g0v0_Shanghai - - opc23DiffPlaces_d16g0v0_Shanghai - - opc23DiffPlaces_d2g0v0_Shanghai - - opc22DiffPlaces_d34g0v0_Shanghai - - opc22DiffPlaces_d33g0v0_Shanghai - - opc23DiffPlaces_d17g0v0_Shanghai - - opc23DiffPlaces_d18g0v0_Shanghai - - opc23DiffPlaces_d19g0v0_Shanghai - - opc23DiffPlaces_d3g0v0_Shanghai - - opc24DiffPlaces_d0g0v0_Shanghai - - opc23DiffPlaces_d20g0v0_Shanghai - - opc23DiffPlaces_d4g0v0_Shanghai - - opc23DiffPlaces_d21g0v0_Shanghai - - opc23DiffPlaces_d22g0v0_Shanghai - - opc23DiffPlaces_d23g0v0_Shanghai - - opc23DiffPlaces_d5g0v0_Shanghai - - opc23DiffPlaces_d6g0v0_Shanghai - - opc23DiffPlaces_d7g0v0_Shanghai - - opc23DiffPlaces_d8g0v0_Shanghai - - opc23DiffPlaces_d24g0v0_Shanghai - - opc23DiffPlaces_d9g0v0_Shanghai - - opc24DiffPlaces_d1g0v0_Shanghai - - opc24DiffPlaces_d10g0v0_Shanghai - - opc23DiffPlaces_d25g0v0_Shanghai - - opc23DiffPlaces_d26g0v0_Shanghai - - opc24DiffPlaces_d11g0v0_Shanghai - - opc24DiffPlaces_d12g0v0_Shanghai - - opc23DiffPlaces_d27g0v0_Shanghai - - opc24DiffPlaces_d13g0v0_Shanghai - - opc23DiffPlaces_d28g0v0_Shanghai - - opc24DiffPlaces_d14g0v0_Shanghai - - opc24DiffPlaces_d15g0v0_Shanghai - - opc23DiffPlaces_d29g0v0_Shanghai - - opc23DiffPlaces_d30g0v0_Shanghai - - opc24DiffPlaces_d16g0v0_Shanghai - - opc23DiffPlaces_d32g0v0_Shanghai - - opc24DiffPlaces_d2g0v0_Shanghai - - opc23DiffPlaces_d31g0v0_Shanghai - - opc23DiffPlaces_d33g0v0_Shanghai - - opc23DiffPlaces_d34g0v0_Shanghai - - opc24DiffPlaces_d17g0v0_Shanghai - - opc24DiffPlaces_d18g0v0_Shanghai - - opc24DiffPlaces_d19g0v0_Shanghai - - opc24DiffPlaces_d3g0v0_Shanghai - - opc25DiffPlaces_d0g0v0_Shanghai - - opc24DiffPlaces_d21g0v0_Shanghai - - opc24DiffPlaces_d4g0v0_Shanghai - - opc24DiffPlaces_d20g0v0_Shanghai - - opc24DiffPlaces_d22g0v0_Shanghai - - opc24DiffPlaces_d23g0v0_Shanghai - - opc24DiffPlaces_d5g0v0_Shanghai - - opc24DiffPlaces_d6g0v0_Shanghai - - opc24DiffPlaces_d7g0v0_Shanghai - - opc24DiffPlaces_d8g0v0_Shanghai - - opc24DiffPlaces_d24g0v0_Shanghai - - opc24DiffPlaces_d9g0v0_Shanghai - - opc24DiffPlaces_d25g0v0_Shanghai - - opc25DiffPlaces_d1g0v0_Shanghai - - opc25DiffPlaces_d10g0v0_Shanghai - - opc24DiffPlaces_d26g0v0_Shanghai - - opc25DiffPlaces_d11g0v0_Shanghai - - opc25DiffPlaces_d12g0v0_Shanghai - - opc24DiffPlaces_d27g0v0_Shanghai - - opc25DiffPlaces_d13g0v0_Shanghai - - opc24DiffPlaces_d28g0v0_Shanghai - - opc25DiffPlaces_d14g0v0_Shanghai - - opc24DiffPlaces_d29g0v0_Shanghai - - opc25DiffPlaces_d15g0v0_Shanghai - - opc25DiffPlaces_d16g0v0_Shanghai - - opc24DiffPlaces_d30g0v0_Shanghai - - opc24DiffPlaces_d31g0v0_Shanghai - - opc24DiffPlaces_d32g0v0_Shanghai - - opc25DiffPlaces_d2g0v0_Shanghai - - opc24DiffPlaces_d33g0v0_Shanghai - - opc25DiffPlaces_d17g0v0_Shanghai - - opc24DiffPlaces_d34g0v0_Shanghai - - opc25DiffPlaces_d18g0v0_Shanghai - - opc25DiffPlaces_d3g0v0_Shanghai - - opc26DiffPlaces_d0g0v0_Shanghai - - opc25DiffPlaces_d19g0v0_Shanghai - - opc25DiffPlaces_d21g0v0_Shanghai - - opc25DiffPlaces_d4g0v0_Shanghai - - opc25DiffPlaces_d20g0v0_Shanghai - - opc25DiffPlaces_d22g0v0_Shanghai - - opc25DiffPlaces_d5g0v0_Shanghai - - opc25DiffPlaces_d23g0v0_Shanghai - - opc25DiffPlaces_d6g0v0_Shanghai - - opc25DiffPlaces_d7g0v0_Shanghai - - opc25DiffPlaces_d8g0v0_Shanghai - - opc25DiffPlaces_d9g0v0_Shanghai - - opc25DiffPlaces_d24g0v0_Shanghai - - opc26DiffPlaces_d1g0v0_Shanghai - - opc26DiffPlaces_d10g0v0_Shanghai - - opc25DiffPlaces_d25g0v0_Shanghai - - opc26DiffPlaces_d11g0v0_Shanghai - - opc25DiffPlaces_d26g0v0_Shanghai - - opc26DiffPlaces_d12g0v0_Shanghai - - opc25DiffPlaces_d27g0v0_Shanghai - - opc26DiffPlaces_d13g0v0_Shanghai - - opc25DiffPlaces_d28g0v0_Shanghai - - opc26DiffPlaces_d14g0v0_Shanghai - - opc26DiffPlaces_d15g0v0_Shanghai - - opc25DiffPlaces_d29g0v0_Shanghai - - opc26DiffPlaces_d16g0v0_Shanghai - - opc25DiffPlaces_d30g0v0_Shanghai - - opc25DiffPlaces_d31g0v0_Shanghai - - opc25DiffPlaces_d32g0v0_Shanghai - - opc26DiffPlaces_d2g0v0_Shanghai - - opc25DiffPlaces_d33g0v0_Shanghai - - opc25DiffPlaces_d34g0v0_Shanghai - - opc26DiffPlaces_d17g0v0_Shanghai - - opc26DiffPlaces_d18g0v0_Shanghai - - opc26DiffPlaces_d19g0v0_Shanghai - - opc26DiffPlaces_d3g0v0_Shanghai - - opc27DiffPlaces_d0g0v0_Shanghai - - opc26DiffPlaces_d21g0v0_Shanghai - - opc26DiffPlaces_d4g0v0_Shanghai - - opc26DiffPlaces_d20g0v0_Shanghai - - opc26DiffPlaces_d22g0v0_Shanghai - - opc26DiffPlaces_d23g0v0_Shanghai - - opc26DiffPlaces_d5g0v0_Shanghai - - opc26DiffPlaces_d6g0v0_Shanghai - - opc26DiffPlaces_d7g0v0_Shanghai - - opc26DiffPlaces_d8g0v0_Shanghai - - opc26DiffPlaces_d24g0v0_Shanghai - - opc26DiffPlaces_d9g0v0_Shanghai - - opc27DiffPlaces_d1g0v0_Shanghai - - opc26DiffPlaces_d25g0v0_Shanghai - - opc27DiffPlaces_d10g0v0_Shanghai - - opc26DiffPlaces_d26g0v0_Shanghai - - opc27DiffPlaces_d11g0v0_Shanghai - - opc27DiffPlaces_d12g0v0_Shanghai - - opc26DiffPlaces_d27g0v0_Shanghai - - opc27DiffPlaces_d13g0v0_Shanghai - - opc26DiffPlaces_d28g0v0_Shanghai - - opc27DiffPlaces_d14g0v0_Shanghai - - opc26DiffPlaces_d29g0v0_Shanghai - - opc27DiffPlaces_d15g0v0_Shanghai - - opc27DiffPlaces_d16g0v0_Shanghai - - opc26DiffPlaces_d30g0v0_Shanghai - - opc26DiffPlaces_d31g0v0_Shanghai - - opc27DiffPlaces_d2g0v0_Shanghai - - opc26DiffPlaces_d33g0v0_Shanghai - - opc26DiffPlaces_d32g0v0_Shanghai - - opc26DiffPlaces_d34g0v0_Shanghai - - opc27DiffPlaces_d17g0v0_Shanghai - - opc27DiffPlaces_d18g0v0_Shanghai - - opc27DiffPlaces_d19g0v0_Shanghai - - opc27DiffPlaces_d3g0v0_Shanghai - - opc28DiffPlaces_d0g0v0_Shanghai - - opc27DiffPlaces_d21g0v0_Shanghai - - opc27DiffPlaces_d4g0v0_Shanghai - - opc27DiffPlaces_d20g0v0_Shanghai - - opc27DiffPlaces_d22g0v0_Shanghai - - opc27DiffPlaces_d5g0v0_Shanghai - - opc27DiffPlaces_d23g0v0_Shanghai - - opc27DiffPlaces_d6g0v0_Shanghai - - opc27DiffPlaces_d7g0v0_Shanghai - - opc27DiffPlaces_d8g0v0_Shanghai - - opc27DiffPlaces_d9g0v0_Shanghai - - opc27DiffPlaces_d24g0v0_Shanghai - - opc28DiffPlaces_d1g0v0_Shanghai - - opc27DiffPlaces_d25g0v0_Shanghai - - opc28DiffPlaces_d10g0v0_Shanghai - - opc28DiffPlaces_d11g0v0_Shanghai - - opc27DiffPlaces_d26g0v0_Shanghai - - opc28DiffPlaces_d12g0v0_Shanghai - - opc27DiffPlaces_d27g0v0_Shanghai - - opc28DiffPlaces_d13g0v0_Shanghai - - opc28DiffPlaces_d14g0v0_Shanghai - - opc27DiffPlaces_d28g0v0_Shanghai - - opc28DiffPlaces_d15g0v0_Shanghai - - opc27DiffPlaces_d29g0v0_Shanghai - - opc27DiffPlaces_d30g0v0_Shanghai - - opc28DiffPlaces_d16g0v0_Shanghai - - opc27DiffPlaces_d31g0v0_Shanghai - - opc28DiffPlaces_d2g0v0_Shanghai - - opc27DiffPlaces_d32g0v0_Shanghai - - opc27DiffPlaces_d33g0v0_Shanghai - - opc27DiffPlaces_d34g0v0_Shanghai - - opc28DiffPlaces_d17g0v0_Shanghai - - opc28DiffPlaces_d18g0v0_Shanghai - - opc28DiffPlaces_d19g0v0_Shanghai - - opc28DiffPlaces_d3g0v0_Shanghai - - opc28DiffPlaces_d21g0v0_Shanghai - - opc29DiffPlaces_d0g0v0_Shanghai - - opc28DiffPlaces_d20g0v0_Shanghai - - opc28DiffPlaces_d22g0v0_Shanghai - - opc28DiffPlaces_d4g0v0_Shanghai - - opc28DiffPlaces_d23g0v0_Shanghai - - opc28DiffPlaces_d5g0v0_Shanghai - - opc28DiffPlaces_d6g0v0_Shanghai - - opc28DiffPlaces_d7g0v0_Shanghai - - opc28DiffPlaces_d8g0v0_Shanghai - - opc28DiffPlaces_d24g0v0_Shanghai - - opc28DiffPlaces_d9g0v0_Shanghai - - opc29DiffPlaces_d1g0v0_Shanghai - - opc28DiffPlaces_d25g0v0_Shanghai - - opc29DiffPlaces_d10g0v0_Shanghai - - opc28DiffPlaces_d26g0v0_Shanghai - - opc29DiffPlaces_d11g0v0_Shanghai - - opc29DiffPlaces_d12g0v0_Shanghai - - opc28DiffPlaces_d27g0v0_Shanghai - - opc29DiffPlaces_d13g0v0_Shanghai - - opc28DiffPlaces_d28g0v0_Shanghai - - opc29DiffPlaces_d14g0v0_Shanghai - - opc28DiffPlaces_d29g0v0_Shanghai - - opc29DiffPlaces_d15g0v0_Shanghai - - opc29DiffPlaces_d16g0v0_Shanghai - - opc28DiffPlaces_d30g0v0_Shanghai - - opc29DiffPlaces_d2g0v0_Shanghai - - opc28DiffPlaces_d31g0v0_Shanghai - - opc28DiffPlaces_d32g0v0_Shanghai - - opc28DiffPlaces_d33g0v0_Shanghai - - opc28DiffPlaces_d34g0v0_Shanghai - - opc29DiffPlaces_d17g0v0_Shanghai - - opc29DiffPlaces_d18g0v0_Shanghai - - opc29DiffPlaces_d3g0v0_Shanghai - - opc29DiffPlaces_d19g0v0_Shanghai - - opc29DiffPlaces_d21g0v0_Shanghai - - opc29DiffPlaces_d4g0v0_Shanghai - - opc2ADiffPlaces_d0g0v0_Shanghai - - opc29DiffPlaces_d20g0v0_Shanghai - - opc29DiffPlaces_d22g0v0_Shanghai - - opc29DiffPlaces_d5g0v0_Shanghai - - opc29DiffPlaces_d23g0v0_Shanghai - - opc29DiffPlaces_d6g0v0_Shanghai - - opc29DiffPlaces_d7g0v0_Shanghai - - opc29DiffPlaces_d8g0v0_Shanghai - - opc29DiffPlaces_d24g0v0_Shanghai - - opc29DiffPlaces_d9g0v0_Shanghai - - opc2ADiffPlaces_d1g0v0_Shanghai - - opc29DiffPlaces_d25g0v0_Shanghai - - opc2ADiffPlaces_d10g0v0_Shanghai - - opc29DiffPlaces_d26g0v0_Shanghai - - opc2ADiffPlaces_d11g0v0_Shanghai - - opc2ADiffPlaces_d12g0v0_Shanghai - - opc29DiffPlaces_d27g0v0_Shanghai - - opc2ADiffPlaces_d13g0v0_Shanghai - - opc29DiffPlaces_d28g0v0_Shanghai - - opc2ADiffPlaces_d14g0v0_Shanghai - - opc29DiffPlaces_d29g0v0_Shanghai - - opc2ADiffPlaces_d15g0v0_Shanghai - - opc29DiffPlaces_d30g0v0_Shanghai - - opc2ADiffPlaces_d16g0v0_Shanghai - - opc2ADiffPlaces_d2g0v0_Shanghai - - opc29DiffPlaces_d31g0v0_Shanghai - - opc29DiffPlaces_d33g0v0_Shanghai - - opc29DiffPlaces_d32g0v0_Shanghai - - opc29DiffPlaces_d34g0v0_Shanghai - - opc2ADiffPlaces_d17g0v0_Shanghai - - opc2ADiffPlaces_d18g0v0_Shanghai - - opc2ADiffPlaces_d19g0v0_Shanghai - - opc2ADiffPlaces_d3g0v0_Shanghai - - opc2ADiffPlaces_d21g0v0_Shanghai - - opc2BDiffPlaces_d0g0v0_Shanghai - - opc2ADiffPlaces_d4g0v0_Shanghai - - opc2ADiffPlaces_d20g0v0_Shanghai - - opc2ADiffPlaces_d22g0v0_Shanghai - - opc2ADiffPlaces_d23g0v0_Shanghai - - opc2ADiffPlaces_d5g0v0_Shanghai - - opc2ADiffPlaces_d6g0v0_Shanghai - - opc2ADiffPlaces_d7g0v0_Shanghai - - opc2ADiffPlaces_d8g0v0_Shanghai - - opc2ADiffPlaces_d24g0v0_Shanghai - - opc2ADiffPlaces_d9g0v0_Shanghai - - opc2ADiffPlaces_d25g0v0_Shanghai - - opc2BDiffPlaces_d1g0v0_Shanghai - - opc2BDiffPlaces_d10g0v0_Shanghai - - opc2ADiffPlaces_d26g0v0_Shanghai - - opc2BDiffPlaces_d11g0v0_Shanghai - - opc2BDiffPlaces_d12g0v0_Shanghai - - opc2ADiffPlaces_d27g0v0_Shanghai - - opc2BDiffPlaces_d13g0v0_Shanghai - - opc2ADiffPlaces_d28g0v0_Shanghai - - opc2BDiffPlaces_d14g0v0_Shanghai - - opc2ADiffPlaces_d29g0v0_Shanghai - - opc2BDiffPlaces_d15g0v0_Shanghai - - opc2ADiffPlaces_d31g0v0_Shanghai - - opc2BDiffPlaces_d16g0v0_Shanghai - - opc2ADiffPlaces_d30g0v0_Shanghai - - opc2BDiffPlaces_d2g0v0_Shanghai - - opc2ADiffPlaces_d32g0v0_Shanghai - - opc2ADiffPlaces_d33g0v0_Shanghai - - opc2ADiffPlaces_d34g0v0_Shanghai - - opc2BDiffPlaces_d17g0v0_Shanghai - - opc2BDiffPlaces_d18g0v0_Shanghai - - opc2BDiffPlaces_d3g0v0_Shanghai - - opc2BDiffPlaces_d19g0v0_Shanghai - - opc2BDiffPlaces_d21g0v0_Shanghai - - opc2BDiffPlaces_d4g0v0_Shanghai - - opc2CDiffPlaces_d0g0v0_Shanghai - - opc2BDiffPlaces_d22g0v0_Shanghai - - opc2BDiffPlaces_d20g0v0_Shanghai - - opc2BDiffPlaces_d23g0v0_Shanghai - - opc2BDiffPlaces_d5g0v0_Shanghai - - opc2BDiffPlaces_d6g0v0_Shanghai - - opc2BDiffPlaces_d7g0v0_Shanghai - - opc2BDiffPlaces_d8g0v0_Shanghai - - opc2BDiffPlaces_d24g0v0_Shanghai - - opc2BDiffPlaces_d9g0v0_Shanghai - - opc2CDiffPlaces_d1g0v0_Shanghai - - opc2BDiffPlaces_d25g0v0_Shanghai - - opc2CDiffPlaces_d10g0v0_Shanghai - - opc2CDiffPlaces_d11g0v0_Shanghai - - opc2BDiffPlaces_d26g0v0_Shanghai - - opc2CDiffPlaces_d12g0v0_Shanghai - - opc2BDiffPlaces_d27g0v0_Shanghai - - opc2CDiffPlaces_d13g0v0_Shanghai - - opc2BDiffPlaces_d28g0v0_Shanghai - - opc2CDiffPlaces_d14g0v0_Shanghai - - opc2BDiffPlaces_d29g0v0_Shanghai - - opc2CDiffPlaces_d15g0v0_Shanghai - - opc2BDiffPlaces_d30g0v0_Shanghai - - opc2CDiffPlaces_d16g0v0_Shanghai - - opc2BDiffPlaces_d31g0v0_Shanghai - - opc2CDiffPlaces_d2g0v0_Shanghai - - opc2BDiffPlaces_d32g0v0_Shanghai - - opc2BDiffPlaces_d33g0v0_Shanghai - - opc2BDiffPlaces_d34g0v0_Shanghai - - opc2CDiffPlaces_d17g0v0_Shanghai - - opc2CDiffPlaces_d18g0v0_Shanghai - - opc2CDiffPlaces_d19g0v0_Shanghai - - opc2CDiffPlaces_d3g0v0_Shanghai - - opc2CDiffPlaces_d21g0v0_Shanghai - - opc2DDiffPlaces_d0g0v0_Shanghai - - opc2CDiffPlaces_d20g0v0_Shanghai - - opc2CDiffPlaces_d22g0v0_Shanghai - - opc2CDiffPlaces_d4g0v0_Shanghai - - opc2CDiffPlaces_d23g0v0_Shanghai - - opc2CDiffPlaces_d5g0v0_Shanghai - - opc2CDiffPlaces_d6g0v0_Shanghai - - opc2CDiffPlaces_d7g0v0_Shanghai - - opc2CDiffPlaces_d8g0v0_Shanghai - - opc2CDiffPlaces_d24g0v0_Shanghai - - opc2CDiffPlaces_d9g0v0_Shanghai - - opc2DDiffPlaces_d1g0v0_Shanghai - - opc2CDiffPlaces_d25g0v0_Shanghai - - opc2DDiffPlaces_d10g0v0_Shanghai - - opc2CDiffPlaces_d26g0v0_Shanghai - - opc2DDiffPlaces_d11g0v0_Shanghai - - opc2DDiffPlaces_d12g0v0_Shanghai - - opc2CDiffPlaces_d27g0v0_Shanghai - - opc2DDiffPlaces_d13g0v0_Shanghai - - opc2CDiffPlaces_d28g0v0_Shanghai - - opc2DDiffPlaces_d14g0v0_Shanghai - - opc2DDiffPlaces_d15g0v0_Shanghai - - opc2CDiffPlaces_d29g0v0_Shanghai - - opc2DDiffPlaces_d16g0v0_Shanghai - - opc2CDiffPlaces_d30g0v0_Shanghai - - opc2CDiffPlaces_d31g0v0_Shanghai - - opc2DDiffPlaces_d2g0v0_Shanghai - - opc2CDiffPlaces_d32g0v0_Shanghai - - opc2CDiffPlaces_d33g0v0_Shanghai - - opc2CDiffPlaces_d34g0v0_Shanghai - - opc2DDiffPlaces_d17g0v0_Shanghai - - opc2DDiffPlaces_d18g0v0_Shanghai - - opc2DDiffPlaces_d3g0v0_Shanghai - - opc2DDiffPlaces_d19g0v0_Shanghai - - opc2EDiffPlaces_d0g0v0_Shanghai - - opc2DDiffPlaces_d21g0v0_Shanghai - - opc2DDiffPlaces_d4g0v0_Shanghai - - opc2DDiffPlaces_d20g0v0_Shanghai - - opc2DDiffPlaces_d22g0v0_Shanghai - - opc2DDiffPlaces_d5g0v0_Shanghai - - opc2DDiffPlaces_d23g0v0_Shanghai - - opc2DDiffPlaces_d6g0v0_Shanghai - - opc2DDiffPlaces_d7g0v0_Shanghai - - opc2DDiffPlaces_d8g0v0_Shanghai - - opc2DDiffPlaces_d24g0v0_Shanghai - - opc2DDiffPlaces_d9g0v0_Shanghai - - opc2EDiffPlaces_d1g0v0_Shanghai - - opc2DDiffPlaces_d25g0v0_Shanghai - - opc2EDiffPlaces_d10g0v0_Shanghai - - opc2DDiffPlaces_d26g0v0_Shanghai - - opc2EDiffPlaces_d11g0v0_Shanghai - - opc2EDiffPlaces_d12g0v0_Shanghai - - opc2DDiffPlaces_d27g0v0_Shanghai - - opc2EDiffPlaces_d13g0v0_Shanghai - - opc2DDiffPlaces_d28g0v0_Shanghai - - opc2EDiffPlaces_d14g0v0_Shanghai - - opc2DDiffPlaces_d29g0v0_Shanghai - - opc2EDiffPlaces_d15g0v0_Shanghai - - opc2DDiffPlaces_d30g0v0_Shanghai - - opc2DDiffPlaces_d31g0v0_Shanghai - - opc2EDiffPlaces_d16g0v0_Shanghai - - opc2DDiffPlaces_d32g0v0_Shanghai - - opc2EDiffPlaces_d2g0v0_Shanghai - - opc2DDiffPlaces_d33g0v0_Shanghai - - opc2DDiffPlaces_d34g0v0_Shanghai - - opc2EDiffPlaces_d17g0v0_Shanghai - - opc2EDiffPlaces_d18g0v0_Shanghai - - opc2EDiffPlaces_d19g0v0_Shanghai - - opc2EDiffPlaces_d3g0v0_Shanghai - - opc2EDiffPlaces_d21g0v0_Shanghai - - opc2FDiffPlaces_d0g0v0_Shanghai - - opc2EDiffPlaces_d20g0v0_Shanghai - - opc2EDiffPlaces_d22g0v0_Shanghai - - opc2EDiffPlaces_d4g0v0_Shanghai - - opc2EDiffPlaces_d23g0v0_Shanghai - - opc2EDiffPlaces_d5g0v0_Shanghai - - opc2EDiffPlaces_d6g0v0_Shanghai - - opc2EDiffPlaces_d7g0v0_Shanghai - - opc2EDiffPlaces_d8g0v0_Shanghai - - opc2EDiffPlaces_d24g0v0_Shanghai - - opc2EDiffPlaces_d9g0v0_Shanghai - - opc2EDiffPlaces_d25g0v0_Shanghai - - opc2FDiffPlaces_d1g0v0_Shanghai - - opc2FDiffPlaces_d10g0v0_Shanghai - - opc2EDiffPlaces_d26g0v0_Shanghai - - opc2FDiffPlaces_d11g0v0_Shanghai - - opc2FDiffPlaces_d12g0v0_Shanghai - - opc2EDiffPlaces_d27g0v0_Shanghai - - opc2FDiffPlaces_d13g0v0_Shanghai - - opc2FDiffPlaces_d14g0v0_Shanghai - - opc2EDiffPlaces_d28g0v0_Shanghai - - opc2EDiffPlaces_d29g0v0_Shanghai - - opc2FDiffPlaces_d15g0v0_Shanghai - - opc2EDiffPlaces_d30g0v0_Shanghai - - opc2EDiffPlaces_d31g0v0_Shanghai - - opc2FDiffPlaces_d16g0v0_Shanghai - - opc2EDiffPlaces_d32g0v0_Shanghai - - opc2EDiffPlaces_d33g0v0_Shanghai - - opc2FDiffPlaces_d2g0v0_Shanghai - - opc2EDiffPlaces_d34g0v0_Shanghai - - opc2FDiffPlaces_d17g0v0_Shanghai - - opc2FDiffPlaces_d18g0v0_Shanghai - - opc2FDiffPlaces_d3g0v0_Shanghai - - opc2FDiffPlaces_d19g0v0_Shanghai - - opc2FDiffPlaces_d4g0v0_Shanghai - - opc2FDiffPlaces_d21g0v0_Shanghai - - opc49DiffPlaces_d0g0v0_Shanghai - - opc2FDiffPlaces_d20g0v0_Shanghai - - opc2FDiffPlaces_d22g0v0_Shanghai - - opc2FDiffPlaces_d23g0v0_Shanghai - - opc2FDiffPlaces_d5g0v0_Shanghai - - opc2FDiffPlaces_d6g0v0_Shanghai - - opc2FDiffPlaces_d7g0v0_Shanghai - - opc2FDiffPlaces_d8g0v0_Shanghai - - opc2FDiffPlaces_d24g0v0_Shanghai - - opc2FDiffPlaces_d9g0v0_Shanghai - - opc2FDiffPlaces_d25g0v0_Shanghai - - opc49DiffPlaces_d1g0v0_Shanghai - - opc49DiffPlaces_d10g0v0_Shanghai - - opc2FDiffPlaces_d26g0v0_Shanghai - - opc49DiffPlaces_d11g0v0_Shanghai - - opc49DiffPlaces_d12g0v0_Shanghai - - opc2FDiffPlaces_d27g0v0_Shanghai - - opc49DiffPlaces_d13g0v0_Shanghai - - opc2FDiffPlaces_d28g0v0_Shanghai - - opc2FDiffPlaces_d29g0v0_Shanghai - - opc49DiffPlaces_d14g0v0_Shanghai - - opc49DiffPlaces_d15g0v0_Shanghai - - opc2FDiffPlaces_d30g0v0_Shanghai - - opc2FDiffPlaces_d31g0v0_Shanghai - - opc49DiffPlaces_d2g0v0_Shanghai - - opc49DiffPlaces_d16g0v0_Shanghai - - opc2FDiffPlaces_d33g0v0_Shanghai - - opc2FDiffPlaces_d32g0v0_Shanghai - - opc2FDiffPlaces_d34g0v0_Shanghai - - opc49DiffPlaces_d17g0v0_Shanghai - - opc49DiffPlaces_d18g0v0_Shanghai - - opc49DiffPlaces_d19g0v0_Shanghai - - opc49DiffPlaces_d3g0v0_Shanghai - - opc49DiffPlaces_d21g0v0_Shanghai - - opc4ADiffPlaces_d0g0v0_Shanghai - - opc49DiffPlaces_d4g0v0_Shanghai - - opc49DiffPlaces_d20g0v0_Shanghai - - opc49DiffPlaces_d22g0v0_Shanghai - - opc49DiffPlaces_d23g0v0_Shanghai - - opc49DiffPlaces_d5g0v0_Shanghai - - opc49DiffPlaces_d6g0v0_Shanghai - - opc49DiffPlaces_d7g0v0_Shanghai - - opc49DiffPlaces_d8g0v0_Shanghai - - opc49DiffPlaces_d24g0v0_Shanghai - - opc49DiffPlaces_d9g0v0_Shanghai - - opc49DiffPlaces_d25g0v0_Shanghai - - opc4ADiffPlaces_d1g0v0_Shanghai - - opc4ADiffPlaces_d10g0v0_Shanghai - - opc4ADiffPlaces_d11g0v0_Shanghai - - opc49DiffPlaces_d26g0v0_Shanghai - - opc4ADiffPlaces_d12g0v0_Shanghai - - opc49DiffPlaces_d27g0v0_Shanghai - - opc4ADiffPlaces_d13g0v0_Shanghai - - opc49DiffPlaces_d28g0v0_Shanghai - - opc4ADiffPlaces_d14g0v0_Shanghai - - opc49DiffPlaces_d29g0v0_Shanghai - - opc4ADiffPlaces_d15g0v0_Shanghai - - opc49DiffPlaces_d30g0v0_Shanghai - - opc4ADiffPlaces_d16g0v0_Shanghai - - opc49DiffPlaces_d31g0v0_Shanghai - - opc4ADiffPlaces_d2g0v0_Shanghai - - opc49DiffPlaces_d32g0v0_Shanghai - - opc49DiffPlaces_d33g0v0_Shanghai - - opc49DiffPlaces_d34g0v0_Shanghai - - opc4ADiffPlaces_d17g0v0_Shanghai - - opc4ADiffPlaces_d18g0v0_Shanghai - - opc4ADiffPlaces_d3g0v0_Shanghai - - opc4ADiffPlaces_d19g0v0_Shanghai - - opc4ADiffPlaces_d21g0v0_Shanghai - - opc4BDiffPlaces_d0g0v0_Shanghai - - opc4ADiffPlaces_d20g0v0_Shanghai - - opc4ADiffPlaces_d4g0v0_Shanghai - - opc4ADiffPlaces_d22g0v0_Shanghai - - opc4ADiffPlaces_d23g0v0_Shanghai - - opc4ADiffPlaces_d5g0v0_Shanghai - - opc4ADiffPlaces_d6g0v0_Shanghai - - opc4ADiffPlaces_d7g0v0_Shanghai - - opc4ADiffPlaces_d8g0v0_Shanghai - - opc4ADiffPlaces_d9g0v0_Shanghai - - opc4ADiffPlaces_d24g0v0_Shanghai - - opc4BDiffPlaces_d1g0v0_Shanghai - - opc4ADiffPlaces_d25g0v0_Shanghai - - opc4BDiffPlaces_d10g0v0_Shanghai - - opc4BDiffPlaces_d11g0v0_Shanghai - - opc4ADiffPlaces_d26g0v0_Shanghai - - opc4BDiffPlaces_d12g0v0_Shanghai - - opc4BDiffPlaces_d13g0v0_Shanghai - - opc4ADiffPlaces_d27g0v0_Shanghai - - opc4BDiffPlaces_d14g0v0_Shanghai - - opc4ADiffPlaces_d28g0v0_Shanghai - - opc4ADiffPlaces_d29g0v0_Shanghai - - opc4BDiffPlaces_d15g0v0_Shanghai - - opc4BDiffPlaces_d16g0v0_Shanghai - - opc4ADiffPlaces_d30g0v0_Shanghai - - opc4ADiffPlaces_d31g0v0_Shanghai - - opc4BDiffPlaces_d2g0v0_Shanghai - - opc4ADiffPlaces_d32g0v0_Shanghai - - opc4ADiffPlaces_d33g0v0_Shanghai - - opc4ADiffPlaces_d34g0v0_Shanghai - - opc4BDiffPlaces_d17g0v0_Shanghai - - opc4BDiffPlaces_d18g0v0_Shanghai - - opc4BDiffPlaces_d19g0v0_Shanghai - - opc4BDiffPlaces_d3g0v0_Shanghai - - opc4BDiffPlaces_d21g0v0_Shanghai - - opc4CDiffPlaces_d0g0v0_Shanghai - - opc4BDiffPlaces_d20g0v0_Shanghai - - opc4BDiffPlaces_d4g0v0_Shanghai - - opc4BDiffPlaces_d22g0v0_Shanghai - - opc4BDiffPlaces_d5g0v0_Shanghai - - opc4BDiffPlaces_d23g0v0_Shanghai - - opc4BDiffPlaces_d6g0v0_Shanghai - - opc4BDiffPlaces_d7g0v0_Shanghai - - opc4BDiffPlaces_d8g0v0_Shanghai - - opc4BDiffPlaces_d24g0v0_Shanghai - - opc4BDiffPlaces_d9g0v0_Shanghai - - opc4BDiffPlaces_d25g0v0_Shanghai - - opc4CDiffPlaces_d1g0v0_Shanghai - - opc4CDiffPlaces_d10g0v0_Shanghai - - opc4CDiffPlaces_d11g0v0_Shanghai - - opc4BDiffPlaces_d26g0v0_Shanghai - - opc4BDiffPlaces_d27g0v0_Shanghai - - opc4CDiffPlaces_d12g0v0_Shanghai - - opc4CDiffPlaces_d13g0v0_Shanghai - - opc4BDiffPlaces_d28g0v0_Shanghai - - opc4CDiffPlaces_d14g0v0_Shanghai - - opc4CDiffPlaces_d15g0v0_Shanghai - - opc4BDiffPlaces_d29g0v0_Shanghai - - opc4CDiffPlaces_d16g0v0_Shanghai - - opc4BDiffPlaces_d30g0v0_Shanghai - - opc4BDiffPlaces_d31g0v0_Shanghai - - opc4BDiffPlaces_d32g0v0_Shanghai - - opc4BDiffPlaces_d33g0v0_Shanghai - - opc4CDiffPlaces_d2g0v0_Shanghai - - opc4BDiffPlaces_d34g0v0_Shanghai - - opc4CDiffPlaces_d17g0v0_Shanghai - - opc4CDiffPlaces_d18g0v0_Shanghai - - opc4CDiffPlaces_d19g0v0_Shanghai - - opc4CDiffPlaces_d3g0v0_Shanghai - - opc4CDiffPlaces_d4g0v0_Shanghai - - opc4DDiffPlaces_d0g0v0_Shanghai - - opc4CDiffPlaces_d21g0v0_Shanghai - - opc4CDiffPlaces_d20g0v0_Shanghai - - opc4CDiffPlaces_d22g0v0_Shanghai - - opc4CDiffPlaces_d23g0v0_Shanghai - - opc4CDiffPlaces_d5g0v0_Shanghai - - opc4CDiffPlaces_d6g0v0_Shanghai - - opc4CDiffPlaces_d7g0v0_Shanghai - - opc4CDiffPlaces_d8g0v0_Shanghai - - opc4CDiffPlaces_d24g0v0_Shanghai - - opc4CDiffPlaces_d9g0v0_Shanghai - - opc4DDiffPlaces_d1g0v0_Shanghai - - opc4CDiffPlaces_d25g0v0_Shanghai - - opc4DDiffPlaces_d10g0v0_Shanghai - - opc4CDiffPlaces_d26g0v0_Shanghai - - opc4DDiffPlaces_d11g0v0_Shanghai - - opc4DDiffPlaces_d12g0v0_Shanghai - - opc4CDiffPlaces_d27g0v0_Shanghai - - opc4DDiffPlaces_d13g0v0_Shanghai - - opc4CDiffPlaces_d28g0v0_Shanghai - - opc4DDiffPlaces_d14g0v0_Shanghai - - opc4CDiffPlaces_d29g0v0_Shanghai - - opc4DDiffPlaces_d15g0v0_Shanghai - - opc4DDiffPlaces_d16g0v0_Shanghai - - opc4CDiffPlaces_d30g0v0_Shanghai - - opc4CDiffPlaces_d31g0v0_Shanghai - - opc4DDiffPlaces_d2g0v0_Shanghai - - opc4CDiffPlaces_d32g0v0_Shanghai - - opc4CDiffPlaces_d33g0v0_Shanghai - - opc4CDiffPlaces_d34g0v0_Shanghai - - opc4DDiffPlaces_d17g0v0_Shanghai - - opc4DDiffPlaces_d18g0v0_Shanghai - - opc4DDiffPlaces_d19g0v0_Shanghai - - opc4DDiffPlaces_d3g0v0_Shanghai - - opc4DDiffPlaces_d21g0v0_Shanghai - - opc4EDiffPlaces_d0g0v0_Shanghai - - opc4DDiffPlaces_d20g0v0_Shanghai - - opc4DDiffPlaces_d4g0v0_Shanghai - - opc4DDiffPlaces_d22g0v0_Shanghai - - opc4DDiffPlaces_d23g0v0_Shanghai - - opc4DDiffPlaces_d5g0v0_Shanghai - - opc4DDiffPlaces_d6g0v0_Shanghai - - opc4DDiffPlaces_d7g0v0_Shanghai - - opc4DDiffPlaces_d8g0v0_Shanghai - - opc4DDiffPlaces_d24g0v0_Shanghai - - opc4DDiffPlaces_d9g0v0_Shanghai - - opc4DDiffPlaces_d25g0v0_Shanghai - - opc4EDiffPlaces_d1g0v0_Shanghai - - opc4EDiffPlaces_d10g0v0_Shanghai - - opc4DDiffPlaces_d26g0v0_Shanghai - - opc4EDiffPlaces_d11g0v0_Shanghai - - opc4EDiffPlaces_d12g0v0_Shanghai - - opc4DDiffPlaces_d27g0v0_Shanghai - - opc4EDiffPlaces_d13g0v0_Shanghai - - opc4DDiffPlaces_d28g0v0_Shanghai - - opc4EDiffPlaces_d14g0v0_Shanghai - - opc4DDiffPlaces_d29g0v0_Shanghai - - opc4EDiffPlaces_d15g0v0_Shanghai - - opc4EDiffPlaces_d16g0v0_Shanghai - - opc4DDiffPlaces_d30g0v0_Shanghai - - opc4DDiffPlaces_d31g0v0_Shanghai - - opc4EDiffPlaces_d2g0v0_Shanghai - - opc4DDiffPlaces_d32g0v0_Shanghai - - opc4DDiffPlaces_d33g0v0_Shanghai - - opc4DDiffPlaces_d34g0v0_Shanghai - - opc4EDiffPlaces_d17g0v0_Shanghai - - opc4EDiffPlaces_d18g0v0_Shanghai - - opc4EDiffPlaces_d19g0v0_Shanghai - - opc4EDiffPlaces_d3g0v0_Shanghai - - opc4FDiffPlaces_d0g0v0_Shanghai - - opc4EDiffPlaces_d21g0v0_Shanghai - - opc4EDiffPlaces_d20g0v0_Shanghai - - opc4EDiffPlaces_d4g0v0_Shanghai - - opc4EDiffPlaces_d22g0v0_Shanghai - - opc4EDiffPlaces_d23g0v0_Shanghai - - opc4EDiffPlaces_d5g0v0_Shanghai - - opc4EDiffPlaces_d6g0v0_Shanghai - - opc4EDiffPlaces_d7g0v0_Shanghai - - opc4EDiffPlaces_d8g0v0_Shanghai - - opc4EDiffPlaces_d9g0v0_Shanghai - - opc4EDiffPlaces_d24g0v0_Shanghai - - opc4FDiffPlaces_d1g0v0_Shanghai - - opc4EDiffPlaces_d25g0v0_Shanghai - - opc4FDiffPlaces_d10g0v0_Shanghai - - opc4FDiffPlaces_d11g0v0_Shanghai - - opc4EDiffPlaces_d26g0v0_Shanghai - - opc4FDiffPlaces_d12g0v0_Shanghai - - opc4EDiffPlaces_d27g0v0_Shanghai - - opc4FDiffPlaces_d13g0v0_Shanghai - - opc4EDiffPlaces_d28g0v0_Shanghai - - opc4FDiffPlaces_d14g0v0_Shanghai - - opc4EDiffPlaces_d29g0v0_Shanghai - - opc4FDiffPlaces_d15g0v0_Shanghai - - opc4EDiffPlaces_d30g0v0_Shanghai - - opc4EDiffPlaces_d31g0v0_Shanghai - - opc4FDiffPlaces_d16g0v0_Shanghai - - opc4EDiffPlaces_d32g0v0_Shanghai - - opc4FDiffPlaces_d2g0v0_Shanghai - - opc4EDiffPlaces_d33g0v0_Shanghai - - opc4EDiffPlaces_d34g0v0_Shanghai - - opc4FDiffPlaces_d17g0v0_Shanghai - - opc4FDiffPlaces_d18g0v0_Shanghai - - opc4FDiffPlaces_d19g0v0_Shanghai - - opc4FDiffPlaces_d3g0v0_Shanghai - - opc4FDiffPlaces_d21g0v0_Shanghai - - opc5CDiffPlaces_d0g0v0_Shanghai - - opc4FDiffPlaces_d20g0v0_Shanghai - - opc4FDiffPlaces_d4g0v0_Shanghai - - opc4FDiffPlaces_d22g0v0_Shanghai - - opc4FDiffPlaces_d5g0v0_Shanghai - - opc4FDiffPlaces_d23g0v0_Shanghai - - opc4FDiffPlaces_d6g0v0_Shanghai - - opc4FDiffPlaces_d7g0v0_Shanghai - - opc4FDiffPlaces_d8g0v0_Shanghai - - opc4FDiffPlaces_d24g0v0_Shanghai - - opc4FDiffPlaces_d9g0v0_Shanghai - - opc5CDiffPlaces_d1g0v0_Shanghai - - opc4FDiffPlaces_d25g0v0_Shanghai - - opc5CDiffPlaces_d10g0v0_Shanghai - - opc5CDiffPlaces_d11g0v0_Shanghai - - opc4FDiffPlaces_d26g0v0_Shanghai - - opc5CDiffPlaces_d12g0v0_Shanghai - - opc4FDiffPlaces_d27g0v0_Shanghai - - opc5CDiffPlaces_d13g0v0_Shanghai - - opc4FDiffPlaces_d28g0v0_Shanghai - - opc5CDiffPlaces_d14g0v0_Shanghai - - opc5CDiffPlaces_d15g0v0_Shanghai - - opc4FDiffPlaces_d29g0v0_Shanghai - - opc4FDiffPlaces_d30g0v0_Shanghai - - opc5CDiffPlaces_d16g0v0_Shanghai - - opc4FDiffPlaces_d31g0v0_Shanghai - - opc5CDiffPlaces_d2g0v0_Shanghai - - opc4FDiffPlaces_d32g0v0_Shanghai - - opc4FDiffPlaces_d33g0v0_Shanghai - - opc4FDiffPlaces_d34g0v0_Shanghai - - opc5CDiffPlaces_d17g0v0_Shanghai - - opc5CDiffPlaces_d18g0v0_Shanghai - - opc5CDiffPlaces_d19g0v0_Shanghai - - opc5CDiffPlaces_d3g0v0_Shanghai - - opc5DDiffPlaces_d0g0v0_Shanghai - - opc5CDiffPlaces_d21g0v0_Shanghai - - opc5CDiffPlaces_d4g0v0_Shanghai - - opc5CDiffPlaces_d20g0v0_Shanghai - - opc5CDiffPlaces_d22g0v0_Shanghai - - opc5CDiffPlaces_d5g0v0_Shanghai - - opc5CDiffPlaces_d23g0v0_Shanghai - - opc5CDiffPlaces_d6g0v0_Shanghai - - opc5CDiffPlaces_d7g0v0_Shanghai - - opc5CDiffPlaces_d8g0v0_Shanghai - - opc5CDiffPlaces_d9g0v0_Shanghai - - opc5CDiffPlaces_d24g0v0_Shanghai - - opc5DDiffPlaces_d1g0v0_Shanghai - - opc5DDiffPlaces_d10g0v0_Shanghai - - opc5CDiffPlaces_d26g0v0_Shanghai - - opc5CDiffPlaces_d25g0v0_Shanghai - - opc5DDiffPlaces_d11g0v0_Shanghai - - opc5DDiffPlaces_d12g0v0_Shanghai - - opc5DDiffPlaces_d13g0v0_Shanghai - - opc5CDiffPlaces_d27g0v0_Shanghai - - opc5CDiffPlaces_d28g0v0_Shanghai - - opc5DDiffPlaces_d14g0v0_Shanghai - - opc5CDiffPlaces_d29g0v0_Shanghai - - opc5DDiffPlaces_d15g0v0_Shanghai - - opc5DDiffPlaces_d16g0v0_Shanghai - - opc5CDiffPlaces_d30g0v0_Shanghai - - opc5DDiffPlaces_d2g0v0_Shanghai - - opc5CDiffPlaces_d32g0v0_Shanghai - - opc5CDiffPlaces_d31g0v0_Shanghai - - opc5CDiffPlaces_d33g0v0_Shanghai - - opc5CDiffPlaces_d34g0v0_Shanghai - - opc5DDiffPlaces_d17g0v0_Shanghai - - opc5DDiffPlaces_d18g0v0_Shanghai - - opc5DDiffPlaces_d19g0v0_Shanghai - - opc5DDiffPlaces_d3g0v0_Shanghai - - opc5EDiffPlaces_d0g0v0_Shanghai - - opc5DDiffPlaces_d21g0v0_Shanghai - - opc5DDiffPlaces_d20g0v0_Shanghai - - opc5DDiffPlaces_d4g0v0_Shanghai - - opc5DDiffPlaces_d22g0v0_Shanghai - - opc5DDiffPlaces_d5g0v0_Shanghai - - opc5DDiffPlaces_d23g0v0_Shanghai - - opc5DDiffPlaces_d6g0v0_Shanghai - - opc5DDiffPlaces_d7g0v0_Shanghai - - opc5DDiffPlaces_d8g0v0_Shanghai - - opc5DDiffPlaces_d24g0v0_Shanghai - - opc5DDiffPlaces_d9g0v0_Shanghai - - opc5DDiffPlaces_d25g0v0_Shanghai - - opc5EDiffPlaces_d1g0v0_Shanghai - - opc5EDiffPlaces_d10g0v0_Shanghai - - opc5DDiffPlaces_d26g0v0_Shanghai - - opc5EDiffPlaces_d11g0v0_Shanghai - - opc5EDiffPlaces_d12g0v0_Shanghai - - opc5DDiffPlaces_d27g0v0_Shanghai - - opc5EDiffPlaces_d13g0v0_Shanghai - - opc5DDiffPlaces_d28g0v0_Shanghai - - opc5EDiffPlaces_d14g0v0_Shanghai - - opc5EDiffPlaces_d15g0v0_Shanghai - - opc5DDiffPlaces_d29g0v0_Shanghai - - opc5EDiffPlaces_d16g0v0_Shanghai - - opc5DDiffPlaces_d30g0v0_Shanghai - - opc5DDiffPlaces_d31g0v0_Shanghai - - opc5EDiffPlaces_d2g0v0_Shanghai - - opc5DDiffPlaces_d32g0v0_Shanghai - - opc5DDiffPlaces_d34g0v0_Shanghai - - opc5DDiffPlaces_d33g0v0_Shanghai - - opc5EDiffPlaces_d17g0v0_Shanghai - - opc5EDiffPlaces_d18g0v0_Shanghai - - opc5EDiffPlaces_d19g0v0_Shanghai - - opc5EDiffPlaces_d3g0v0_Shanghai - - opc5EDiffPlaces_d4g0v0_Shanghai - - opc5EDiffPlaces_d21g0v0_Shanghai - - opcA5DiffPlaces_d0g0v0_Shanghai - - opc5EDiffPlaces_d20g0v0_Shanghai - - opc5EDiffPlaces_d22g0v0_Shanghai - - opc5EDiffPlaces_d5g0v0_Shanghai - - opc5EDiffPlaces_d23g0v0_Shanghai - - opc5EDiffPlaces_d6g0v0_Shanghai - - opc5EDiffPlaces_d7g0v0_Shanghai - - opc5EDiffPlaces_d8g0v0_Shanghai - - opc5EDiffPlaces_d24g0v0_Shanghai - - opc5EDiffPlaces_d9g0v0_Shanghai - - opc5EDiffPlaces_d25g0v0_Shanghai - - opcA5DiffPlaces_d1g0v0_Shanghai - - opcA5DiffPlaces_d10g0v0_Shanghai - - opcA5DiffPlaces_d11g0v0_Shanghai - - opc5EDiffPlaces_d26g0v0_Shanghai - - opcA5DiffPlaces_d12g0v0_Shanghai - - opc5EDiffPlaces_d27g0v0_Shanghai - - opcA5DiffPlaces_d13g0v0_Shanghai - - opc5EDiffPlaces_d28g0v0_Shanghai - - opcA5DiffPlaces_d14g0v0_Shanghai - - opc5EDiffPlaces_d29g0v0_Shanghai - - opcA5DiffPlaces_d15g0v0_Shanghai - - opc5EDiffPlaces_d30g0v0_Shanghai - - opcA5DiffPlaces_d16g0v0_Shanghai - - opc5EDiffPlaces_d31g0v0_Shanghai - - opcA5DiffPlaces_d2g0v0_Shanghai - - opc5EDiffPlaces_d32g0v0_Shanghai - - opc5EDiffPlaces_d33g0v0_Shanghai - - opc5EDiffPlaces_d34g0v0_Shanghai - - opcA5DiffPlaces_d17g0v0_Shanghai - - opcA5DiffPlaces_d18g0v0_Shanghai - - opcA5DiffPlaces_d19g0v0_Shanghai - - opcA5DiffPlaces_d3g0v0_Shanghai - - opcA5DiffPlaces_d21g0v0_Shanghai - - opcA6DiffPlaces_d0g0v0_Shanghai - - opcA5DiffPlaces_d20g0v0_Shanghai - - opcA5DiffPlaces_d4g0v0_Shanghai - - opcA5DiffPlaces_d22g0v0_Shanghai - - opcA5DiffPlaces_d23g0v0_Shanghai - - opcA5DiffPlaces_d5g0v0_Shanghai - - opcA5DiffPlaces_d6g0v0_Shanghai - - opcA5DiffPlaces_d7g0v0_Shanghai - - opcA5DiffPlaces_d8g0v0_Shanghai - - opcA5DiffPlaces_d24g0v0_Shanghai - - opcA5DiffPlaces_d9g0v0_Shanghai - - opcA6DiffPlaces_d1g0v0_Shanghai - - opcA5DiffPlaces_d25g0v0_Shanghai - - opcA6DiffPlaces_d10g0v0_Shanghai - - opcA6DiffPlaces_d11g0v0_Shanghai - - opcA5DiffPlaces_d26g0v0_Shanghai - - opcA6DiffPlaces_d12g0v0_Shanghai - - opcA5DiffPlaces_d27g0v0_Shanghai - - opcA6DiffPlaces_d13g0v0_Shanghai - - opcA5DiffPlaces_d28g0v0_Shanghai - - opcA6DiffPlaces_d14g0v0_Shanghai - - opcA5DiffPlaces_d29g0v0_Shanghai - - opcA6DiffPlaces_d15g0v0_Shanghai - - opcA6DiffPlaces_d16g0v0_Shanghai - - opcA5DiffPlaces_d30g0v0_Shanghai - - opcA5DiffPlaces_d31g0v0_Shanghai - - opcA5DiffPlaces_d32g0v0_Shanghai - - opcA6DiffPlaces_d2g0v0_Shanghai - - opcA5DiffPlaces_d34g0v0_Shanghai - - opcA5DiffPlaces_d33g0v0_Shanghai - - opcA6DiffPlaces_d17g0v0_Shanghai - - opcA6DiffPlaces_d18g0v0_Shanghai - - opcA6DiffPlaces_d19g0v0_Shanghai - - opcA6DiffPlaces_d3g0v0_Shanghai - - opcA7DiffPlaces_d0g0v0_Shanghai - - opcA6DiffPlaces_d21g0v0_Shanghai - - opcA6DiffPlaces_d20g0v0_Shanghai - - opcA6DiffPlaces_d4g0v0_Shanghai - - opcA6DiffPlaces_d22g0v0_Shanghai - - opcA6DiffPlaces_d23g0v0_Shanghai - - opcA6DiffPlaces_d5g0v0_Shanghai - - opcA6DiffPlaces_d6g0v0_Shanghai - - opcA6DiffPlaces_d7g0v0_Shanghai - - opcA6DiffPlaces_d8g0v0_Shanghai - - opcA6DiffPlaces_d9g0v0_Shanghai - - opcA6DiffPlaces_d24g0v0_Shanghai - - opcA7DiffPlaces_d1g0v0_Shanghai - - opcA6DiffPlaces_d25g0v0_Shanghai - - opcA7DiffPlaces_d10g0v0_Shanghai - - opcA7DiffPlaces_d11g0v0_Shanghai - - opcA6DiffPlaces_d26g0v0_Shanghai - - opcA7DiffPlaces_d12g0v0_Shanghai - - opcA6DiffPlaces_d27g0v0_Shanghai - - opcA7DiffPlaces_d13g0v0_Shanghai - - opcA6DiffPlaces_d28g0v0_Shanghai - - opcA7DiffPlaces_d14g0v0_Shanghai - - opcA6DiffPlaces_d29g0v0_Shanghai - - opcA7DiffPlaces_d15g0v0_Shanghai - - opcA6DiffPlaces_d30g0v0_Shanghai - - opcA7DiffPlaces_d16g0v0_Shanghai - - opcA6DiffPlaces_d31g0v0_Shanghai - - opcA7DiffPlaces_d2g0v0_Shanghai - - opcA6DiffPlaces_d32g0v0_Shanghai - - opcA6DiffPlaces_d33g0v0_Shanghai - - opcA6DiffPlaces_d34g0v0_Shanghai - - opcA7DiffPlaces_d17g0v0_Shanghai - - opcA7DiffPlaces_d18g0v0_Shanghai - - opcA7DiffPlaces_d19g0v0_Shanghai - - opcA7DiffPlaces_d3g0v0_Shanghai - - opcA7DiffPlaces_d21g0v0_Shanghai - - opcA8DiffPlaces_d0g0v0_Shanghai - - opcA7DiffPlaces_d4g0v0_Shanghai - - opcA7DiffPlaces_d20g0v0_Shanghai - - opcA7DiffPlaces_d22g0v0_Shanghai - - opcA7DiffPlaces_d23g0v0_Shanghai - - opcA7DiffPlaces_d5g0v0_Shanghai - - opcA7DiffPlaces_d6g0v0_Shanghai - - opcA7DiffPlaces_d7g0v0_Shanghai - - opcA7DiffPlaces_d8g0v0_Shanghai - - opcA7DiffPlaces_d24g0v0_Shanghai - - opcA7DiffPlaces_d9g0v0_Shanghai - - opcA8DiffPlaces_d1g0v0_Shanghai - - opcA7DiffPlaces_d25g0v0_Shanghai - - opcA8DiffPlaces_d10g0v0_Shanghai - - opcA8DiffPlaces_d11g0v0_Shanghai - - opcA7DiffPlaces_d26g0v0_Shanghai - - opcA8DiffPlaces_d12g0v0_Shanghai - - opcA7DiffPlaces_d27g0v0_Shanghai - - opcA8DiffPlaces_d13g0v0_Shanghai - - opcA7DiffPlaces_d28g0v0_Shanghai - - opcA8DiffPlaces_d14g0v0_Shanghai - - opcA7DiffPlaces_d29g0v0_Shanghai - - opcA8DiffPlaces_d15g0v0_Shanghai - - opcA8DiffPlaces_d16g0v0_Shanghai - - opcA7DiffPlaces_d30g0v0_Shanghai - - opcA7DiffPlaces_d31g0v0_Shanghai - - opcA8DiffPlaces_d2g0v0_Shanghai - - opcA7DiffPlaces_d32g0v0_Shanghai - - opcA7DiffPlaces_d33g0v0_Shanghai - - opcA7DiffPlaces_d34g0v0_Shanghai - - opcA8DiffPlaces_d17g0v0_Shanghai - - opcA8DiffPlaces_d18g0v0_Shanghai - - opcA8DiffPlaces_d3g0v0_Shanghai - - opcA8DiffPlaces_d19g0v0_Shanghai - - opcA8DiffPlaces_d21g0v0_Shanghai - - opcA9DiffPlaces_d0g0v0_Shanghai - - opcA8DiffPlaces_d4g0v0_Shanghai - - opcA8DiffPlaces_d20g0v0_Shanghai - - opcA8DiffPlaces_d22g0v0_Shanghai - - opcA8DiffPlaces_d5g0v0_Shanghai - - opcA8DiffPlaces_d23g0v0_Shanghai - - opcA8DiffPlaces_d6g0v0_Shanghai - - opcA8DiffPlaces_d7g0v0_Shanghai - - opcA8DiffPlaces_d8g0v0_Shanghai - - opcA8DiffPlaces_d9g0v0_Shanghai - - opcA8DiffPlaces_d24g0v0_Shanghai - - opcA9DiffPlaces_d1g0v0_Shanghai - - opcA8DiffPlaces_d25g0v0_Shanghai - - opcA9DiffPlaces_d10g0v0_Shanghai - - opcA8DiffPlaces_d26g0v0_Shanghai - - opcA9DiffPlaces_d11g0v0_Shanghai - - opcA9DiffPlaces_d12g0v0_Shanghai - - opcA8DiffPlaces_d27g0v0_Shanghai - - opcA9DiffPlaces_d13g0v0_Shanghai - - opcA9DiffPlaces_d14g0v0_Shanghai - - opcA8DiffPlaces_d28g0v0_Shanghai - - opcA9DiffPlaces_d15g0v0_Shanghai - - opcA8DiffPlaces_d29g0v0_Shanghai - - opcA9DiffPlaces_d16g0v0_Shanghai - - opcA8DiffPlaces_d30g0v0_Shanghai - - opcA8DiffPlaces_d31g0v0_Shanghai - - opcA8DiffPlaces_d32g0v0_Shanghai - - opcA9DiffPlaces_d2g0v0_Shanghai - - opcA8DiffPlaces_d33g0v0_Shanghai - - opcA8DiffPlaces_d34g0v0_Shanghai - - opcA9DiffPlaces_d17g0v0_Shanghai - - opcA9DiffPlaces_d18g0v0_Shanghai - - opcA9DiffPlaces_d19g0v0_Shanghai - - opcA9DiffPlaces_d3g0v0_Shanghai - - opcA9DiffPlaces_d21g0v0_Shanghai - - opcA9DiffPlaces_d20g0v0_Shanghai - - opcAADiffPlaces_d0g0v0_Shanghai - - opcA9DiffPlaces_d4g0v0_Shanghai - - opcA9DiffPlaces_d22g0v0_Shanghai - - opcA9DiffPlaces_d23g0v0_Shanghai - - opcA9DiffPlaces_d5g0v0_Shanghai - - opcA9DiffPlaces_d6g0v0_Shanghai - - opcA9DiffPlaces_d7g0v0_Shanghai - - opcA9DiffPlaces_d8g0v0_Shanghai - - opcA9DiffPlaces_d9g0v0_Shanghai - - opcA9DiffPlaces_d24g0v0_Shanghai - - opcAADiffPlaces_d1g0v0_Shanghai - - opcA9DiffPlaces_d25g0v0_Shanghai - - opcAADiffPlaces_d10g0v0_Shanghai - - opcA9DiffPlaces_d26g0v0_Shanghai - - opcAADiffPlaces_d11g0v0_Shanghai - - opcAADiffPlaces_d12g0v0_Shanghai - - opcA9DiffPlaces_d27g0v0_Shanghai - - opcAADiffPlaces_d13g0v0_Shanghai - - opcA9DiffPlaces_d28g0v0_Shanghai - - opcAADiffPlaces_d14g0v0_Shanghai - - opcA9DiffPlaces_d29g0v0_Shanghai - - opcAADiffPlaces_d15g0v0_Shanghai - - opcAADiffPlaces_d16g0v0_Shanghai - - opcA9DiffPlaces_d30g0v0_Shanghai - - opcA9DiffPlaces_d32g0v0_Shanghai - - opcAADiffPlaces_d2g0v0_Shanghai - - opcA9DiffPlaces_d31g0v0_Shanghai - - opcA9DiffPlaces_d33g0v0_Shanghai - - opcA9DiffPlaces_d34g0v0_Shanghai - - opcAADiffPlaces_d17g0v0_Shanghai - - opcAADiffPlaces_d18g0v0_Shanghai - - opcAADiffPlaces_d19g0v0_Shanghai - - opcAADiffPlaces_d3g0v0_Shanghai - - opcAADiffPlaces_d21g0v0_Shanghai - - opcABDiffPlaces_d0g0v0_Shanghai - - opcAADiffPlaces_d4g0v0_Shanghai - - opcAADiffPlaces_d22g0v0_Shanghai - - opcAADiffPlaces_d20g0v0_Shanghai - - opcAADiffPlaces_d5g0v0_Shanghai - - opcAADiffPlaces_d23g0v0_Shanghai - - opcAADiffPlaces_d6g0v0_Shanghai - - opcAADiffPlaces_d7g0v0_Shanghai - - opcAADiffPlaces_d8g0v0_Shanghai - - opcAADiffPlaces_d9g0v0_Shanghai - - opcAADiffPlaces_d24g0v0_Shanghai - - opcABDiffPlaces_d1g0v0_Shanghai - - opcAADiffPlaces_d25g0v0_Shanghai - - opcABDiffPlaces_d10g0v0_Shanghai - - opcAADiffPlaces_d26g0v0_Shanghai - - opcABDiffPlaces_d11g0v0_Shanghai - - opcABDiffPlaces_d12g0v0_Shanghai - - opcAADiffPlaces_d27g0v0_Shanghai - - opcABDiffPlaces_d13g0v0_Shanghai - - opcAADiffPlaces_d28g0v0_Shanghai - - opcABDiffPlaces_d14g0v0_Shanghai - - opcAADiffPlaces_d29g0v0_Shanghai - - opcABDiffPlaces_d15g0v0_Shanghai - - opcAADiffPlaces_d30g0v0_Shanghai - - opcAADiffPlaces_d31g0v0_Shanghai - - opcABDiffPlaces_d16g0v0_Shanghai - - opcABDiffPlaces_d2g0v0_Shanghai - - opcAADiffPlaces_d32g0v0_Shanghai - - opcAADiffPlaces_d33g0v0_Shanghai - - opcAADiffPlaces_d34g0v0_Shanghai - - opcABDiffPlaces_d17g0v0_Shanghai - - opcABDiffPlaces_d18g0v0_Shanghai - - opcABDiffPlaces_d19g0v0_Shanghai - - opcABDiffPlaces_d3g0v0_Shanghai - - opcABDiffPlaces_d21g0v0_Shanghai - - opcACDiffPlaces_d0g0v0_Shanghai - - opcABDiffPlaces_d4g0v0_Shanghai - - opcABDiffPlaces_d20g0v0_Shanghai - - opcABDiffPlaces_d22g0v0_Shanghai - - opcABDiffPlaces_d23g0v0_Shanghai - - opcABDiffPlaces_d5g0v0_Shanghai - - opcABDiffPlaces_d6g0v0_Shanghai - - opcABDiffPlaces_d7g0v0_Shanghai - - opcABDiffPlaces_d8g0v0_Shanghai - - opcABDiffPlaces_d9g0v0_Shanghai - - opcABDiffPlaces_d24g0v0_Shanghai - - opcACDiffPlaces_d1g0v0_Shanghai - - opcABDiffPlaces_d25g0v0_Shanghai - - opcACDiffPlaces_d10g0v0_Shanghai - - opcACDiffPlaces_d11g0v0_Shanghai - - opcABDiffPlaces_d26g0v0_Shanghai - - opcACDiffPlaces_d12g0v0_Shanghai - - opcABDiffPlaces_d27g0v0_Shanghai - - opcACDiffPlaces_d13g0v0_Shanghai - - opcABDiffPlaces_d28g0v0_Shanghai - - opcACDiffPlaces_d14g0v0_Shanghai - - opcABDiffPlaces_d29g0v0_Shanghai - - opcACDiffPlaces_d15g0v0_Shanghai - - opcACDiffPlaces_d16g0v0_Shanghai - - opcABDiffPlaces_d30g0v0_Shanghai - - opcABDiffPlaces_d31g0v0_Shanghai - - opcACDiffPlaces_d2g0v0_Shanghai - - opcABDiffPlaces_d32g0v0_Shanghai - - opcABDiffPlaces_d33g0v0_Shanghai - - opcABDiffPlaces_d34g0v0_Shanghai - - opcACDiffPlaces_d17g0v0_Shanghai - - opcACDiffPlaces_d18g0v0_Shanghai - - opcACDiffPlaces_d19g0v0_Shanghai - - opcACDiffPlaces_d3g0v0_Shanghai - - opcADDiffPlaces_d0g0v0_Shanghai - - opcACDiffPlaces_d21g0v0_Shanghai - - opcACDiffPlaces_d4g0v0_Shanghai - - opcACDiffPlaces_d20g0v0_Shanghai - - opcACDiffPlaces_d22g0v0_Shanghai - - opcACDiffPlaces_d5g0v0_Shanghai - - opcACDiffPlaces_d23g0v0_Shanghai - - opcACDiffPlaces_d6g0v0_Shanghai - - opcACDiffPlaces_d7g0v0_Shanghai - - opcACDiffPlaces_d8g0v0_Shanghai - - opcACDiffPlaces_d24g0v0_Shanghai - - opcACDiffPlaces_d9g0v0_Shanghai - - opcADDiffPlaces_d1g0v0_Shanghai - - opcACDiffPlaces_d25g0v0_Shanghai - - opcADDiffPlaces_d10g0v0_Shanghai - - opcACDiffPlaces_d26g0v0_Shanghai - - opcADDiffPlaces_d11g0v0_Shanghai - - opcADDiffPlaces_d12g0v0_Shanghai - - opcACDiffPlaces_d27g0v0_Shanghai - - opcADDiffPlaces_d13g0v0_Shanghai - - opcACDiffPlaces_d28g0v0_Shanghai - - opcADDiffPlaces_d14g0v0_Shanghai - - opcACDiffPlaces_d29g0v0_Shanghai - - opcADDiffPlaces_d15g0v0_Shanghai - - opcADDiffPlaces_d16g0v0_Shanghai - - opcACDiffPlaces_d30g0v0_Shanghai - - opcACDiffPlaces_d31g0v0_Shanghai - - opcACDiffPlaces_d32g0v0_Shanghai - - opcADDiffPlaces_d2g0v0_Shanghai - - opcACDiffPlaces_d33g0v0_Shanghai - - opcACDiffPlaces_d34g0v0_Shanghai - - opcADDiffPlaces_d17g0v0_Shanghai - - opcADDiffPlaces_d18g0v0_Shanghai - - opcADDiffPlaces_d19g0v0_Shanghai - - opcADDiffPlaces_d3g0v0_Shanghai - - opcAEDiffPlaces_d0g0v0_Shanghai - - opcADDiffPlaces_d21g0v0_Shanghai - - opcADDiffPlaces_d4g0v0_Shanghai - - opcADDiffPlaces_d20g0v0_Shanghai - - opcADDiffPlaces_d22g0v0_Shanghai - - opcADDiffPlaces_d5g0v0_Shanghai - - opcADDiffPlaces_d23g0v0_Shanghai - - opcADDiffPlaces_d6g0v0_Shanghai - - opcADDiffPlaces_d7g0v0_Shanghai - - opcADDiffPlaces_d8g0v0_Shanghai - - opcADDiffPlaces_d24g0v0_Shanghai - - opcADDiffPlaces_d9g0v0_Shanghai - - opcADDiffPlaces_d25g0v0_Shanghai - - opcAEDiffPlaces_d1g0v0_Shanghai - - opcAEDiffPlaces_d10g0v0_Shanghai - - opcADDiffPlaces_d26g0v0_Shanghai - - opcAEDiffPlaces_d11g0v0_Shanghai - - opcAEDiffPlaces_d12g0v0_Shanghai - - opcADDiffPlaces_d27g0v0_Shanghai - - opcAEDiffPlaces_d13g0v0_Shanghai - - opcADDiffPlaces_d28g0v0_Shanghai - - opcAEDiffPlaces_d14g0v0_Shanghai - - opcADDiffPlaces_d29g0v0_Shanghai - - opcAEDiffPlaces_d15g0v0_Shanghai - - opcAEDiffPlaces_d16g0v0_Shanghai - - opcADDiffPlaces_d30g0v0_Shanghai - - opcAEDiffPlaces_d2g0v0_Shanghai - - opcADDiffPlaces_d32g0v0_Shanghai - - opcADDiffPlaces_d31g0v0_Shanghai - - opcADDiffPlaces_d33g0v0_Shanghai - - opcADDiffPlaces_d34g0v0_Shanghai - - opcAEDiffPlaces_d17g0v0_Shanghai - - opcAEDiffPlaces_d18g0v0_Shanghai - - opcAEDiffPlaces_d19g0v0_Shanghai - - opcAEDiffPlaces_d3g0v0_Shanghai - - opcAEDiffPlaces_d21g0v0_Shanghai - - opcAFDiffPlaces_d0g0v0_Shanghai - - opcAEDiffPlaces_d4g0v0_Shanghai - - opcAEDiffPlaces_d20g0v0_Shanghai - - opcAEDiffPlaces_d22g0v0_Shanghai - - opcAEDiffPlaces_d5g0v0_Shanghai - - opcAEDiffPlaces_d23g0v0_Shanghai - - opcAEDiffPlaces_d6g0v0_Shanghai - - opcAEDiffPlaces_d7g0v0_Shanghai - - opcAEDiffPlaces_d8g0v0_Shanghai - - opcAEDiffPlaces_d24g0v0_Shanghai - - opcAEDiffPlaces_d9g0v0_Shanghai - - opcAEDiffPlaces_d25g0v0_Shanghai - - opcAFDiffPlaces_d1g0v0_Shanghai - - opcAFDiffPlaces_d10g0v0_Shanghai - - opcAEDiffPlaces_d26g0v0_Shanghai - - opcAFDiffPlaces_d11g0v0_Shanghai - - opcAFDiffPlaces_d12g0v0_Shanghai - - opcAFDiffPlaces_d13g0v0_Shanghai - - opcAEDiffPlaces_d27g0v0_Shanghai - - opcAEDiffPlaces_d28g0v0_Shanghai - - opcAFDiffPlaces_d14g0v0_Shanghai - - opcAEDiffPlaces_d29g0v0_Shanghai - - opcAFDiffPlaces_d15g0v0_Shanghai - - opcAEDiffPlaces_d30g0v0_Shanghai - - opcAFDiffPlaces_d16g0v0_Shanghai - - opcAEDiffPlaces_d31g0v0_Shanghai - - opcAFDiffPlaces_d2g0v0_Shanghai - - opcAEDiffPlaces_d32g0v0_Shanghai - - opcAEDiffPlaces_d33g0v0_Shanghai - - opcAEDiffPlaces_d34g0v0_Shanghai - - opcAFDiffPlaces_d17g0v0_Shanghai - - opcAFDiffPlaces_d18g0v0_Shanghai - - opcAFDiffPlaces_d19g0v0_Shanghai - - opcAFDiffPlaces_d3g0v0_Shanghai - - opcAFDiffPlaces_d21g0v0_Shanghai - - opcB0DiffPlaces_d0g0v0_Shanghai - - opcAFDiffPlaces_d4g0v0_Shanghai - - opcAFDiffPlaces_d20g0v0_Shanghai - - opcAFDiffPlaces_d22g0v0_Shanghai - - opcAFDiffPlaces_d23g0v0_Shanghai - - opcAFDiffPlaces_d5g0v0_Shanghai - - opcAFDiffPlaces_d6g0v0_Shanghai - - opcAFDiffPlaces_d7g0v0_Shanghai - - opcAFDiffPlaces_d8g0v0_Shanghai - - opcAFDiffPlaces_d9g0v0_Shanghai - - opcAFDiffPlaces_d24g0v0_Shanghai - - opcAFDiffPlaces_d25g0v0_Shanghai - - opcB0DiffPlaces_d1g0v0_Shanghai - - opcB0DiffPlaces_d10g0v0_Shanghai - - opcB0DiffPlaces_d11g0v0_Shanghai - - opcAFDiffPlaces_d26g0v0_Shanghai - - opcB0DiffPlaces_d12g0v0_Shanghai - - opcB0DiffPlaces_d13g0v0_Shanghai - - opcAFDiffPlaces_d27g0v0_Shanghai - - opcAFDiffPlaces_d28g0v0_Shanghai - - opcB0DiffPlaces_d14g0v0_Shanghai - - opcAFDiffPlaces_d29g0v0_Shanghai - - opcB0DiffPlaces_d15g0v0_Shanghai - - opcAFDiffPlaces_d30g0v0_Shanghai - - opcB0DiffPlaces_d16g0v0_Shanghai - - opcAFDiffPlaces_d31g0v0_Shanghai - - opcB0DiffPlaces_d2g0v0_Shanghai - - opcAFDiffPlaces_d32g0v0_Shanghai - - opcAFDiffPlaces_d33g0v0_Shanghai - - opcAFDiffPlaces_d34g0v0_Shanghai - - opcB0DiffPlaces_d17g0v0_Shanghai - - opcB0DiffPlaces_d18g0v0_Shanghai - - opcB0DiffPlaces_d3g0v0_Shanghai - - opcB0DiffPlaces_d19g0v0_Shanghai - - opcB1DiffPlaces_d0g0v0_Shanghai - - opcB0DiffPlaces_d21g0v0_Shanghai - - opcB0DiffPlaces_d20g0v0_Shanghai - - opcB0DiffPlaces_d4g0v0_Shanghai - - opcB0DiffPlaces_d22g0v0_Shanghai - - opcB0DiffPlaces_d5g0v0_Shanghai - - opcB0DiffPlaces_d23g0v0_Shanghai - - opcB0DiffPlaces_d6g0v0_Shanghai - - opcB0DiffPlaces_d7g0v0_Shanghai - - opcB0DiffPlaces_d8g0v0_Shanghai - - opcB0DiffPlaces_d24g0v0_Shanghai - - opcB0DiffPlaces_d9g0v0_Shanghai - - opcB0DiffPlaces_d25g0v0_Shanghai - - opcB1DiffPlaces_d1g0v0_Shanghai - - opcB1DiffPlaces_d10g0v0_Shanghai - - opcB1DiffPlaces_d11g0v0_Shanghai - - opcB0DiffPlaces_d26g0v0_Shanghai - - opcB1DiffPlaces_d12g0v0_Shanghai - - opcB0DiffPlaces_d27g0v0_Shanghai - - opcB1DiffPlaces_d13g0v0_Shanghai - - opcB0DiffPlaces_d28g0v0_Shanghai - - opcB1DiffPlaces_d14g0v0_Shanghai - - opcB0DiffPlaces_d29g0v0_Shanghai - - opcB1DiffPlaces_d15g0v0_Shanghai - - opcB1DiffPlaces_d16g0v0_Shanghai - - opcB0DiffPlaces_d30g0v0_Shanghai - - opcB0DiffPlaces_d31g0v0_Shanghai - - opcB0DiffPlaces_d32g0v0_Shanghai - - opcB1DiffPlaces_d2g0v0_Shanghai - - opcB0DiffPlaces_d33g0v0_Shanghai - - opcB0DiffPlaces_d34g0v0_Shanghai - - opcB1DiffPlaces_d17g0v0_Shanghai - - opcB1DiffPlaces_d18g0v0_Shanghai - - opcB1DiffPlaces_d19g0v0_Shanghai - - opcB1DiffPlaces_d3g0v0_Shanghai - - opcB1DiffPlaces_d21g0v0_Shanghai - - opcB1DiffPlaces_d4g0v0_Shanghai - - opcB2DiffPlaces_d0g0v0_Shanghai - - opcB1DiffPlaces_d22g0v0_Shanghai - - opcB1DiffPlaces_d20g0v0_Shanghai - - opcB1DiffPlaces_d5g0v0_Shanghai - - opcB1DiffPlaces_d23g0v0_Shanghai - - opcB1DiffPlaces_d6g0v0_Shanghai - - opcB1DiffPlaces_d7g0v0_Shanghai - - opcB1DiffPlaces_d8g0v0_Shanghai - - opcB1DiffPlaces_d24g0v0_Shanghai - - opcB1DiffPlaces_d9g0v0_Shanghai - - opcB1DiffPlaces_d25g0v0_Shanghai - - opcB2DiffPlaces_d1g0v0_Shanghai - - opcB2DiffPlaces_d10g0v0_Shanghai - - opcB2DiffPlaces_d11g0v0_Shanghai - - opcB1DiffPlaces_d26g0v0_Shanghai - - opcB2DiffPlaces_d12g0v0_Shanghai - - opcB1DiffPlaces_d27g0v0_Shanghai - - opcB2DiffPlaces_d13g0v0_Shanghai - - opcB1DiffPlaces_d28g0v0_Shanghai - - opcB2DiffPlaces_d14g0v0_Shanghai - - opcB1DiffPlaces_d29g0v0_Shanghai - - opcB2DiffPlaces_d15g0v0_Shanghai - - opcB1DiffPlaces_d30g0v0_Shanghai - - opcB2DiffPlaces_d16g0v0_Shanghai - - opcB1DiffPlaces_d31g0v0_Shanghai - - opcB1DiffPlaces_d32g0v0_Shanghai - - opcB2DiffPlaces_d2g0v0_Shanghai - - opcB1DiffPlaces_d33g0v0_Shanghai - - opcB1DiffPlaces_d34g0v0_Shanghai - - opcB2DiffPlaces_d17g0v0_Shanghai - - opcB2DiffPlaces_d18g0v0_Shanghai - - opcB2DiffPlaces_d19g0v0_Shanghai - - opcB2DiffPlaces_d3g0v0_Shanghai - - opcB2DiffPlaces_d21g0v0_Shanghai - - opcB3DiffPlaces_d0g0v0_Shanghai - - opcB2DiffPlaces_d20g0v0_Shanghai - - opcB2DiffPlaces_d4g0v0_Shanghai - - opcB2DiffPlaces_d22g0v0_Shanghai - - opcB2DiffPlaces_d23g0v0_Shanghai - - opcB2DiffPlaces_d5g0v0_Shanghai - - opcB2DiffPlaces_d6g0v0_Shanghai - - opcB2DiffPlaces_d7g0v0_Shanghai - - opcB2DiffPlaces_d8g0v0_Shanghai - - opcB2DiffPlaces_d24g0v0_Shanghai - - opcB2DiffPlaces_d9g0v0_Shanghai - - opcB3DiffPlaces_d1g0v0_Shanghai - - opcB2DiffPlaces_d25g0v0_Shanghai - - opcB3DiffPlaces_d10g0v0_Shanghai - - opcB2DiffPlaces_d26g0v0_Shanghai - - opcB3DiffPlaces_d11g0v0_Shanghai - - opcB3DiffPlaces_d12g0v0_Shanghai - - opcB2DiffPlaces_d27g0v0_Shanghai - - opcB3DiffPlaces_d13g0v0_Shanghai - - opcB2DiffPlaces_d28g0v0_Shanghai - - opcB3DiffPlaces_d14g0v0_Shanghai - - opcB3DiffPlaces_d15g0v0_Shanghai - - opcB2DiffPlaces_d29g0v0_Shanghai - - opcB2DiffPlaces_d30g0v0_Shanghai - - opcB2DiffPlaces_d31g0v0_Shanghai - - opcB3DiffPlaces_d16g0v0_Shanghai - - opcB2DiffPlaces_d32g0v0_Shanghai - - opcB3DiffPlaces_d2g0v0_Shanghai - - opcB2DiffPlaces_d33g0v0_Shanghai - - opcB2DiffPlaces_d34g0v0_Shanghai - - opcB3DiffPlaces_d17g0v0_Shanghai - - opcB3DiffPlaces_d18g0v0_Shanghai - - opcB3DiffPlaces_d19g0v0_Shanghai - - opcB3DiffPlaces_d3g0v0_Shanghai - - opcB3DiffPlaces_d21g0v0_Shanghai - - opcB4DiffPlaces_d0g0v0_Shanghai - - opcB3DiffPlaces_d4g0v0_Shanghai - - opcB3DiffPlaces_d20g0v0_Shanghai - - opcB3DiffPlaces_d22g0v0_Shanghai - - opcB3DiffPlaces_d5g0v0_Shanghai - - opcB3DiffPlaces_d23g0v0_Shanghai - - opcB3DiffPlaces_d6g0v0_Shanghai - - opcB3DiffPlaces_d7g0v0_Shanghai - - opcB3DiffPlaces_d8g0v0_Shanghai - - opcB3DiffPlaces_d9g0v0_Shanghai - - opcB3DiffPlaces_d24g0v0_Shanghai - - opcB4DiffPlaces_d1g0v0_Shanghai - - opcB3DiffPlaces_d25g0v0_Shanghai - - opcB4DiffPlaces_d10g0v0_Shanghai - - opcB4DiffPlaces_d11g0v0_Shanghai - - opcB3DiffPlaces_d26g0v0_Shanghai - - opcB4DiffPlaces_d12g0v0_Shanghai - - opcB3DiffPlaces_d27g0v0_Shanghai - - opcB4DiffPlaces_d13g0v0_Shanghai - - opcB4DiffPlaces_d14g0v0_Shanghai - - opcB3DiffPlaces_d28g0v0_Shanghai - - opcB4DiffPlaces_d15g0v0_Shanghai - - opcB3DiffPlaces_d29g0v0_Shanghai - - opcB3DiffPlaces_d30g0v0_Shanghai - - opcB4DiffPlaces_d16g0v0_Shanghai - - opcB3DiffPlaces_d31g0v0_Shanghai - - opcB4DiffPlaces_d2g0v0_Shanghai - - opcB3DiffPlaces_d32g0v0_Shanghai - - opcB3DiffPlaces_d33g0v0_Shanghai - - opcB3DiffPlaces_d34g0v0_Shanghai - - opcB4DiffPlaces_d17g0v0_Shanghai - - opcB4DiffPlaces_d18g0v0_Shanghai - - opcB4DiffPlaces_d19g0v0_Shanghai - - opcB4DiffPlaces_d3g0v0_Shanghai - - opcB5DiffPlaces_d0g0v0_Shanghai - - opcB4DiffPlaces_d21g0v0_Shanghai - - opcB4DiffPlaces_d20g0v0_Shanghai - - opcB4DiffPlaces_d4g0v0_Shanghai - - opcB4DiffPlaces_d22g0v0_Shanghai - - opcB4DiffPlaces_d5g0v0_Shanghai - - opcB4DiffPlaces_d23g0v0_Shanghai - - opcB4DiffPlaces_d6g0v0_Shanghai - - opcB4DiffPlaces_d7g0v0_Shanghai - - opcB4DiffPlaces_d8g0v0_Shanghai - - opcB4DiffPlaces_d24g0v0_Shanghai - - opcB4DiffPlaces_d9g0v0_Shanghai - - opcB4DiffPlaces_d25g0v0_Shanghai - - opcB5DiffPlaces_d1g0v0_Shanghai - - opcB5DiffPlaces_d10g0v0_Shanghai - - opcB5DiffPlaces_d11g0v0_Shanghai - - opcB4DiffPlaces_d26g0v0_Shanghai - - opcB5DiffPlaces_d12g0v0_Shanghai - - opcB4DiffPlaces_d27g0v0_Shanghai - - opcB5DiffPlaces_d13g0v0_Shanghai - - opcB4DiffPlaces_d28g0v0_Shanghai - - opcB5DiffPlaces_d14g0v0_Shanghai - - opcB4DiffPlaces_d29g0v0_Shanghai - - opcB5DiffPlaces_d15g0v0_Shanghai - - opcB4DiffPlaces_d30g0v0_Shanghai - - opcB5DiffPlaces_d16g0v0_Shanghai - - opcB4DiffPlaces_d31g0v0_Shanghai - - opcB4DiffPlaces_d32g0v0_Shanghai - - opcB5DiffPlaces_d2g0v0_Shanghai - - opcB4DiffPlaces_d33g0v0_Shanghai - - opcB4DiffPlaces_d34g0v0_Shanghai - - opcB5DiffPlaces_d17g0v0_Shanghai - - opcB5DiffPlaces_d18g0v0_Shanghai - - opcB5DiffPlaces_d19g0v0_Shanghai - - opcB5DiffPlaces_d3g0v0_Shanghai - - opcB6DiffPlaces_d0g0v0_Shanghai - - opcB5DiffPlaces_d21g0v0_Shanghai - - opcB5DiffPlaces_d4g0v0_Shanghai - - opcB5DiffPlaces_d20g0v0_Shanghai - - opcB5DiffPlaces_d22g0v0_Shanghai - - opcB5DiffPlaces_d5g0v0_Shanghai - - opcB5DiffPlaces_d23g0v0_Shanghai - - opcB5DiffPlaces_d6g0v0_Shanghai - - opcB5DiffPlaces_d7g0v0_Shanghai - - opcB5DiffPlaces_d8g0v0_Shanghai - - opcB5DiffPlaces_d24g0v0_Shanghai - - opcB5DiffPlaces_d9g0v0_Shanghai - - opcB5DiffPlaces_d25g0v0_Shanghai - - opcB6DiffPlaces_d1g0v0_Shanghai - - opcB6DiffPlaces_d10g0v0_Shanghai - - opcB6DiffPlaces_d11g0v0_Shanghai - - opcB5DiffPlaces_d26g0v0_Shanghai - - opcB6DiffPlaces_d12g0v0_Shanghai - - opcB5DiffPlaces_d27g0v0_Shanghai - - opcB6DiffPlaces_d13g0v0_Shanghai - - opcB5DiffPlaces_d28g0v0_Shanghai - - opcB6DiffPlaces_d14g0v0_Shanghai - - opcB5DiffPlaces_d29g0v0_Shanghai - - opcB6DiffPlaces_d15g0v0_Shanghai - - opcB5DiffPlaces_d30g0v0_Shanghai - - opcB5DiffPlaces_d31g0v0_Shanghai - - opcB6DiffPlaces_d16g0v0_Shanghai - - opcB6DiffPlaces_d2g0v0_Shanghai - - opcB5DiffPlaces_d32g0v0_Shanghai - - opcB5DiffPlaces_d33g0v0_Shanghai - - opcB5DiffPlaces_d34g0v0_Shanghai - - opcB6DiffPlaces_d17g0v0_Shanghai - - opcB6DiffPlaces_d18g0v0_Shanghai - - opcB6DiffPlaces_d19g0v0_Shanghai - - opcB6DiffPlaces_d3g0v0_Shanghai - - opcB6DiffPlaces_d21g0v0_Shanghai - - opcB7DiffPlaces_d0g0v0_Shanghai - - opcB6DiffPlaces_d4g0v0_Shanghai - - opcB6DiffPlaces_d22g0v0_Shanghai - - opcB6DiffPlaces_d20g0v0_Shanghai - - opcB6DiffPlaces_d5g0v0_Shanghai - - opcB6DiffPlaces_d23g0v0_Shanghai - - opcB6DiffPlaces_d6g0v0_Shanghai - - opcB6DiffPlaces_d7g0v0_Shanghai - - opcB6DiffPlaces_d8g0v0_Shanghai - - opcB6DiffPlaces_d9g0v0_Shanghai - - opcB6DiffPlaces_d24g0v0_Shanghai - - opcB6DiffPlaces_d25g0v0_Shanghai - - opcB7DiffPlaces_d1g0v0_Shanghai - - opcB7DiffPlaces_d10g0v0_Shanghai - - opcB6DiffPlaces_d26g0v0_Shanghai - - opcB7DiffPlaces_d11g0v0_Shanghai - - opcB7DiffPlaces_d12g0v0_Shanghai - - opcB6DiffPlaces_d27g0v0_Shanghai - - opcB7DiffPlaces_d13g0v0_Shanghai - - opcB6DiffPlaces_d28g0v0_Shanghai - - opcB7DiffPlaces_d14g0v0_Shanghai - - opcB6DiffPlaces_d29g0v0_Shanghai - - opcB7DiffPlaces_d15g0v0_Shanghai - - opcB6DiffPlaces_d30g0v0_Shanghai - - opcB7DiffPlaces_d16g0v0_Shanghai - - opcB6DiffPlaces_d31g0v0_Shanghai - - opcB7DiffPlaces_d2g0v0_Shanghai - - opcB6DiffPlaces_d32g0v0_Shanghai - - opcB6DiffPlaces_d33g0v0_Shanghai - - opcB6DiffPlaces_d34g0v0_Shanghai - - opcB7DiffPlaces_d17g0v0_Shanghai - - opcB7DiffPlaces_d18g0v0_Shanghai - - opcB7DiffPlaces_d19g0v0_Shanghai - - opcB7DiffPlaces_d3g0v0_Shanghai - - opcB7DiffPlaces_d21g0v0_Shanghai - - opcB7DiffPlaces_d4g0v0_Shanghai - - opcB8DiffPlaces_d0g0v0_Shanghai - - opcB7DiffPlaces_d20g0v0_Shanghai - - opcB7DiffPlaces_d22g0v0_Shanghai - - opcB7DiffPlaces_d5g0v0_Shanghai - - opcB7DiffPlaces_d23g0v0_Shanghai - - opcB7DiffPlaces_d6g0v0_Shanghai - - opcB7DiffPlaces_d7g0v0_Shanghai - - opcB7DiffPlaces_d8g0v0_Shanghai - - opcB7DiffPlaces_d24g0v0_Shanghai - - opcB7DiffPlaces_d9g0v0_Shanghai - - opcB7DiffPlaces_d25g0v0_Shanghai - - opcB8DiffPlaces_d1g0v0_Shanghai - - opcB8DiffPlaces_d10g0v0_Shanghai - - opcB7DiffPlaces_d26g0v0_Shanghai - - opcB8DiffPlaces_d11g0v0_Shanghai - - opcB8DiffPlaces_d12g0v0_Shanghai - - opcB7DiffPlaces_d27g0v0_Shanghai - - opcB8DiffPlaces_d13g0v0_Shanghai - - opcB7DiffPlaces_d28g0v0_Shanghai - - opcB8DiffPlaces_d14g0v0_Shanghai - - opcB7DiffPlaces_d29g0v0_Shanghai - - opcB8DiffPlaces_d15g0v0_Shanghai - - opcB8DiffPlaces_d16g0v0_Shanghai - - opcB7DiffPlaces_d30g0v0_Shanghai - - opcB7DiffPlaces_d31g0v0_Shanghai - - opcB8DiffPlaces_d2g0v0_Shanghai - - opcB7DiffPlaces_d32g0v0_Shanghai - - opcB7DiffPlaces_d33g0v0_Shanghai - - opcB7DiffPlaces_d34g0v0_Shanghai - - opcB8DiffPlaces_d17g0v0_Shanghai - - opcB8DiffPlaces_d18g0v0_Shanghai - - opcB8DiffPlaces_d19g0v0_Shanghai - - opcB8DiffPlaces_d3g0v0_Shanghai - - opcB8DiffPlaces_d21g0v0_Shanghai - - opcB9DiffPlaces_d0g0v0_Shanghai - - opcB8DiffPlaces_d4g0v0_Shanghai - - opcB8DiffPlaces_d20g0v0_Shanghai - - opcB8DiffPlaces_d22g0v0_Shanghai - - opcB8DiffPlaces_d23g0v0_Shanghai - - opcB8DiffPlaces_d5g0v0_Shanghai - - opcB8DiffPlaces_d6g0v0_Shanghai - - opcB8DiffPlaces_d7g0v0_Shanghai - - opcB8DiffPlaces_d8g0v0_Shanghai - - opcB8DiffPlaces_d24g0v0_Shanghai - - opcB8DiffPlaces_d9g0v0_Shanghai - - opcB8DiffPlaces_d25g0v0_Shanghai - - opcB9DiffPlaces_d1g0v0_Shanghai - - opcB9DiffPlaces_d10g0v0_Shanghai - - opcB9DiffPlaces_d11g0v0_Shanghai - - opcB8DiffPlaces_d26g0v0_Shanghai - - opcB9DiffPlaces_d12g0v0_Shanghai - - opcB8DiffPlaces_d27g0v0_Shanghai - - opcB9DiffPlaces_d13g0v0_Shanghai - - opcB8DiffPlaces_d28g0v0_Shanghai - - opcB9DiffPlaces_d14g0v0_Shanghai - - opcB8DiffPlaces_d29g0v0_Shanghai - - opcB9DiffPlaces_d15g0v0_Shanghai - - opcB9DiffPlaces_d16g0v0_Shanghai - - opcB8DiffPlaces_d30g0v0_Shanghai - - opcB8DiffPlaces_d31g0v0_Shanghai - - opcB9DiffPlaces_d2g0v0_Shanghai - - opcB8DiffPlaces_d32g0v0_Shanghai - - opcB8DiffPlaces_d33g0v0_Shanghai - - opcB8DiffPlaces_d34g0v0_Shanghai - - opcB9DiffPlaces_d17g0v0_Shanghai - - opcB9DiffPlaces_d18g0v0_Shanghai - - opcB9DiffPlaces_d19g0v0_Shanghai - - opcB9DiffPlaces_d3g0v0_Shanghai - - opcB9DiffPlaces_d21g0v0_Shanghai - - opcBADiffPlaces_d0g0v0_Shanghai - - opcB9DiffPlaces_d20g0v0_Shanghai - - opcB9DiffPlaces_d4g0v0_Shanghai - - opcB9DiffPlaces_d22g0v0_Shanghai - - opcB9DiffPlaces_d23g0v0_Shanghai - - opcB9DiffPlaces_d5g0v0_Shanghai - - opcB9DiffPlaces_d6g0v0_Shanghai - - opcB9DiffPlaces_d7g0v0_Shanghai - - opcB9DiffPlaces_d8g0v0_Shanghai - - opcB9DiffPlaces_d24g0v0_Shanghai - - opcB9DiffPlaces_d9g0v0_Shanghai - - opcBADiffPlaces_d1g0v0_Shanghai - - opcB9DiffPlaces_d25g0v0_Shanghai - - opcBADiffPlaces_d10g0v0_Shanghai - - opcBADiffPlaces_d11g0v0_Shanghai - - opcB9DiffPlaces_d26g0v0_Shanghai - - opcBADiffPlaces_d12g0v0_Shanghai - - opcBADiffPlaces_d13g0v0_Shanghai - - opcB9DiffPlaces_d27g0v0_Shanghai - - opcB9DiffPlaces_d28g0v0_Shanghai - - opcBADiffPlaces_d14g0v0_Shanghai - - opcB9DiffPlaces_d29g0v0_Shanghai - - opcBADiffPlaces_d15g0v0_Shanghai - - opcBADiffPlaces_d16g0v0_Shanghai - - opcB9DiffPlaces_d30g0v0_Shanghai - - opcB9DiffPlaces_d31g0v0_Shanghai - - opcBADiffPlaces_d2g0v0_Shanghai - - opcB9DiffPlaces_d32g0v0_Shanghai - - opcB9DiffPlaces_d33g0v0_Shanghai - - opcB9DiffPlaces_d34g0v0_Shanghai - - opcBADiffPlaces_d17g0v0_Shanghai - - opcBADiffPlaces_d18g0v0_Shanghai - - opcBADiffPlaces_d19g0v0_Shanghai - - opcBADiffPlaces_d3g0v0_Shanghai - - opcBBDiffPlaces_d0g0v0_Shanghai - - opcBADiffPlaces_d21g0v0_Shanghai - - opcBADiffPlaces_d20g0v0_Shanghai - - opcBADiffPlaces_d4g0v0_Shanghai - - opcBADiffPlaces_d22g0v0_Shanghai - - opcBADiffPlaces_d23g0v0_Shanghai - - opcBADiffPlaces_d5g0v0_Shanghai - - opcBADiffPlaces_d6g0v0_Shanghai - - opcBADiffPlaces_d7g0v0_Shanghai - - opcBADiffPlaces_d8g0v0_Shanghai - - opcBADiffPlaces_d9g0v0_Shanghai - - opcBADiffPlaces_d24g0v0_Shanghai - - opcBADiffPlaces_d25g0v0_Shanghai - - opcBBDiffPlaces_d1g0v0_Shanghai - - opcBBDiffPlaces_d10g0v0_Shanghai - - opcBBDiffPlaces_d11g0v0_Shanghai - - opcBADiffPlaces_d26g0v0_Shanghai - - opcBBDiffPlaces_d12g0v0_Shanghai - - opcBADiffPlaces_d27g0v0_Shanghai - - opcBBDiffPlaces_d13g0v0_Shanghai - - opcBADiffPlaces_d28g0v0_Shanghai - - opcBBDiffPlaces_d14g0v0_Shanghai - - opcBBDiffPlaces_d15g0v0_Shanghai - - opcBADiffPlaces_d29g0v0_Shanghai - - opcBBDiffPlaces_d16g0v0_Shanghai - - opcBADiffPlaces_d30g0v0_Shanghai - - opcBBDiffPlaces_d2g0v0_Shanghai - - opcBADiffPlaces_d31g0v0_Shanghai - - opcBADiffPlaces_d32g0v0_Shanghai - - opcBADiffPlaces_d33g0v0_Shanghai - - opcBADiffPlaces_d34g0v0_Shanghai - - opcBBDiffPlaces_d17g0v0_Shanghai - - opcBBDiffPlaces_d18g0v0_Shanghai - - opcBBDiffPlaces_d19g0v0_Shanghai - - opcBBDiffPlaces_d3g0v0_Shanghai - - opcBCDiffPlaces_d0g0v0_Shanghai - - opcBBDiffPlaces_d21g0v0_Shanghai - - opcBBDiffPlaces_d20g0v0_Shanghai - - opcBBDiffPlaces_d4g0v0_Shanghai - - opcBBDiffPlaces_d22g0v0_Shanghai - - opcBBDiffPlaces_d5g0v0_Shanghai - - opcBBDiffPlaces_d23g0v0_Shanghai - - opcBBDiffPlaces_d6g0v0_Shanghai - - opcBBDiffPlaces_d7g0v0_Shanghai - - opcBBDiffPlaces_d8g0v0_Shanghai - - opcBBDiffPlaces_d9g0v0_Shanghai - - opcBBDiffPlaces_d24g0v0_Shanghai - - opcBCDiffPlaces_d1g0v0_Shanghai - - opcBBDiffPlaces_d25g0v0_Shanghai - - opcBCDiffPlaces_d10g0v0_Shanghai - - opcBCDiffPlaces_d11g0v0_Shanghai - - opcBBDiffPlaces_d26g0v0_Shanghai - - opcBCDiffPlaces_d12g0v0_Shanghai - - opcBBDiffPlaces_d27g0v0_Shanghai - - opcBCDiffPlaces_d13g0v0_Shanghai - - opcBBDiffPlaces_d28g0v0_Shanghai - - opcBCDiffPlaces_d14g0v0_Shanghai - - opcBBDiffPlaces_d29g0v0_Shanghai - - opcBCDiffPlaces_d15g0v0_Shanghai - - opcBBDiffPlaces_d30g0v0_Shanghai - - opcBBDiffPlaces_d31g0v0_Shanghai - - opcBCDiffPlaces_d16g0v0_Shanghai - - opcBBDiffPlaces_d32g0v0_Shanghai - - opcBCDiffPlaces_d2g0v0_Shanghai - - opcBBDiffPlaces_d33g0v0_Shanghai - - opcBBDiffPlaces_d34g0v0_Shanghai - - opcBCDiffPlaces_d17g0v0_Shanghai - - opcBCDiffPlaces_d18g0v0_Shanghai - - opcBCDiffPlaces_d3g0v0_Shanghai - - opcBCDiffPlaces_d19g0v0_Shanghai - - opcBCDiffPlaces_d21g0v0_Shanghai - - opcBDDiffPlaces_d0g0v0_Shanghai - - opcBCDiffPlaces_d4g0v0_Shanghai - - opcBCDiffPlaces_d22g0v0_Shanghai - - opcBCDiffPlaces_d20g0v0_Shanghai - - opcBCDiffPlaces_d23g0v0_Shanghai - - opcBCDiffPlaces_d5g0v0_Shanghai - - opcBCDiffPlaces_d6g0v0_Shanghai - - opcBCDiffPlaces_d7g0v0_Shanghai - - opcBCDiffPlaces_d8g0v0_Shanghai - - opcBCDiffPlaces_d24g0v0_Shanghai - - opcBCDiffPlaces_d9g0v0_Shanghai - - opcBCDiffPlaces_d25g0v0_Shanghai - - opcBDDiffPlaces_d1g0v0_Shanghai - - opcBDDiffPlaces_d10g0v0_Shanghai - - opcBCDiffPlaces_d26g0v0_Shanghai - - opcBDDiffPlaces_d11g0v0_Shanghai - - opcBDDiffPlaces_d12g0v0_Shanghai - - opcBCDiffPlaces_d27g0v0_Shanghai - - opcBDDiffPlaces_d13g0v0_Shanghai - - opcBCDiffPlaces_d28g0v0_Shanghai - - opcBDDiffPlaces_d14g0v0_Shanghai - - opcBCDiffPlaces_d29g0v0_Shanghai - - opcBDDiffPlaces_d15g0v0_Shanghai - - opcBCDiffPlaces_d30g0v0_Shanghai - - opcBCDiffPlaces_d31g0v0_Shanghai - - opcBDDiffPlaces_d16g0v0_Shanghai - - opcBDDiffPlaces_d2g0v0_Shanghai - - opcBCDiffPlaces_d32g0v0_Shanghai - - opcBCDiffPlaces_d33g0v0_Shanghai - - opcBCDiffPlaces_d34g0v0_Shanghai - - opcBDDiffPlaces_d17g0v0_Shanghai - - opcBDDiffPlaces_d18g0v0_Shanghai - - opcBDDiffPlaces_d19g0v0_Shanghai - - opcBDDiffPlaces_d3g0v0_Shanghai - - opcBDDiffPlaces_d21g0v0_Shanghai - - opcBEDiffPlaces_d0g0v0_Shanghai - - opcBDDiffPlaces_d4g0v0_Shanghai - - opcBDDiffPlaces_d20g0v0_Shanghai - - opcBDDiffPlaces_d22g0v0_Shanghai - - opcBDDiffPlaces_d5g0v0_Shanghai - - opcBDDiffPlaces_d23g0v0_Shanghai - - opcBDDiffPlaces_d6g0v0_Shanghai - - opcBDDiffPlaces_d7g0v0_Shanghai - - opcBDDiffPlaces_d8g0v0_Shanghai - - opcBDDiffPlaces_d24g0v0_Shanghai - - opcBDDiffPlaces_d9g0v0_Shanghai - - opcBEDiffPlaces_d1g0v0_Shanghai - - opcBDDiffPlaces_d25g0v0_Shanghai - - opcBEDiffPlaces_d10g0v0_Shanghai - - opcBDDiffPlaces_d26g0v0_Shanghai - - opcBEDiffPlaces_d11g0v0_Shanghai - - opcBEDiffPlaces_d12g0v0_Shanghai - - opcBDDiffPlaces_d27g0v0_Shanghai - - opcBEDiffPlaces_d13g0v0_Shanghai - - opcBDDiffPlaces_d28g0v0_Shanghai - - opcBEDiffPlaces_d14g0v0_Shanghai - - opcBDDiffPlaces_d29g0v0_Shanghai - - opcBEDiffPlaces_d15g0v0_Shanghai - - opcBEDiffPlaces_d16g0v0_Shanghai - - opcBDDiffPlaces_d30g0v0_Shanghai - - opcBDDiffPlaces_d31g0v0_Shanghai - - opcBDDiffPlaces_d32g0v0_Shanghai - - opcBEDiffPlaces_d2g0v0_Shanghai - - opcBDDiffPlaces_d33g0v0_Shanghai - - opcBDDiffPlaces_d34g0v0_Shanghai - - opcBEDiffPlaces_d17g0v0_Shanghai - - opcBEDiffPlaces_d18g0v0_Shanghai - - opcBEDiffPlaces_d19g0v0_Shanghai - - opcBEDiffPlaces_d3g0v0_Shanghai - - opcBEDiffPlaces_d21g0v0_Shanghai - - opcBFDiffPlaces_d0g0v0_Shanghai - - opcBEDiffPlaces_d4g0v0_Shanghai - - opcBEDiffPlaces_d20g0v0_Shanghai - - opcBEDiffPlaces_d22g0v0_Shanghai - - opcBEDiffPlaces_d5g0v0_Shanghai - - opcBEDiffPlaces_d23g0v0_Shanghai - - opcBEDiffPlaces_d6g0v0_Shanghai - - opcBEDiffPlaces_d7g0v0_Shanghai - - opcBEDiffPlaces_d8g0v0_Shanghai - - opcBEDiffPlaces_d24g0v0_Shanghai - - opcBEDiffPlaces_d9g0v0_Shanghai - - opcBEDiffPlaces_d25g0v0_Shanghai - - opcBFDiffPlaces_d1g0v0_Shanghai - - opcBFDiffPlaces_d10g0v0_Shanghai - - opcBFDiffPlaces_d11g0v0_Shanghai - - opcBEDiffPlaces_d26g0v0_Shanghai - - opcBFDiffPlaces_d12g0v0_Shanghai - - opcBEDiffPlaces_d27g0v0_Shanghai - - opcBFDiffPlaces_d13g0v0_Shanghai - - opcBEDiffPlaces_d28g0v0_Shanghai - - opcBFDiffPlaces_d14g0v0_Shanghai - - opcBFDiffPlaces_d15g0v0_Shanghai - - opcBEDiffPlaces_d29g0v0_Shanghai - - opcBEDiffPlaces_d30g0v0_Shanghai - - opcBFDiffPlaces_d16g0v0_Shanghai - - opcBEDiffPlaces_d31g0v0_Shanghai - - opcBEDiffPlaces_d32g0v0_Shanghai - - opcBFDiffPlaces_d2g0v0_Shanghai - - opcBEDiffPlaces_d33g0v0_Shanghai - - opcBEDiffPlaces_d34g0v0_Shanghai - - opcBFDiffPlaces_d17g0v0_Shanghai - - opcBFDiffPlaces_d18g0v0_Shanghai - - opcBFDiffPlaces_d19g0v0_Shanghai - - opcBFDiffPlaces_d3g0v0_Shanghai - - opcBFDiffPlaces_d21g0v0_Shanghai - - opcC0DiffPlaces_d0g0v0_Shanghai - - opcBFDiffPlaces_d4g0v0_Shanghai - - opcBFDiffPlaces_d20g0v0_Shanghai - - opcBFDiffPlaces_d22g0v0_Shanghai - - opcBFDiffPlaces_d5g0v0_Shanghai - - opcBFDiffPlaces_d23g0v0_Shanghai - - opcBFDiffPlaces_d6g0v0_Shanghai - - opcBFDiffPlaces_d7g0v0_Shanghai - - opcBFDiffPlaces_d8g0v0_Shanghai - - opcBFDiffPlaces_d24g0v0_Shanghai - - opcBFDiffPlaces_d9g0v0_Shanghai - - opcBFDiffPlaces_d25g0v0_Shanghai - - opcC0DiffPlaces_d1g0v0_Shanghai - - opcC0DiffPlaces_d10g0v0_Shanghai - - opcBFDiffPlaces_d26g0v0_Shanghai - - opcC0DiffPlaces_d11g0v0_Shanghai - - opcC0DiffPlaces_d12g0v0_Shanghai - - opcBFDiffPlaces_d27g0v0_Shanghai - - opcC0DiffPlaces_d13g0v0_Shanghai - - opcBFDiffPlaces_d28g0v0_Shanghai - - opcC0DiffPlaces_d14g0v0_Shanghai - - opcBFDiffPlaces_d29g0v0_Shanghai - - opcC0DiffPlaces_d15g0v0_Shanghai - - opcC0DiffPlaces_d16g0v0_Shanghai - - opcBFDiffPlaces_d31g0v0_Shanghai - - opcBFDiffPlaces_d30g0v0_Shanghai - - opcBFDiffPlaces_d32g0v0_Shanghai - - opcC0DiffPlaces_d2g0v0_Shanghai - - opcBFDiffPlaces_d34g0v0_Shanghai - - opcBFDiffPlaces_d33g0v0_Shanghai - - opcC0DiffPlaces_d17g0v0_Shanghai - - opcC0DiffPlaces_d18g0v0_Shanghai - - opcC0DiffPlaces_d19g0v0_Shanghai - - opcC0DiffPlaces_d3g0v0_Shanghai - - opcC0DiffPlaces_d21g0v0_Shanghai - - opcC1DiffPlaces_d0g0v0_Shanghai - - opcC0DiffPlaces_d4g0v0_Shanghai - - opcC0DiffPlaces_d20g0v0_Shanghai - - opcC0DiffPlaces_d22g0v0_Shanghai - - opcC0DiffPlaces_d5g0v0_Shanghai - - opcC0DiffPlaces_d23g0v0_Shanghai - - opcC0DiffPlaces_d6g0v0_Shanghai - - opcC0DiffPlaces_d7g0v0_Shanghai - - opcC0DiffPlaces_d8g0v0_Shanghai - - opcC0DiffPlaces_d24g0v0_Shanghai - - opcC0DiffPlaces_d9g0v0_Shanghai - - opcC1DiffPlaces_d1g0v0_Shanghai - - opcC0DiffPlaces_d25g0v0_Shanghai - - opcC1DiffPlaces_d10g0v0_Shanghai - - opcC1DiffPlaces_d11g0v0_Shanghai - - opcC0DiffPlaces_d26g0v0_Shanghai - - opcC1DiffPlaces_d12g0v0_Shanghai - - opcC0DiffPlaces_d27g0v0_Shanghai - - opcC1DiffPlaces_d13g0v0_Shanghai - - opcC0DiffPlaces_d28g0v0_Shanghai - - opcC1DiffPlaces_d14g0v0_Shanghai - - opcC0DiffPlaces_d29g0v0_Shanghai - - opcC1DiffPlaces_d15g0v0_Shanghai - - opcC0DiffPlaces_d30g0v0_Shanghai - - opcC0DiffPlaces_d31g0v0_Shanghai - - opcC1DiffPlaces_d16g0v0_Shanghai - - opcC1DiffPlaces_d2g0v0_Shanghai - - opcC0DiffPlaces_d32g0v0_Shanghai - - opcC0DiffPlaces_d33g0v0_Shanghai - - opcC0DiffPlaces_d34g0v0_Shanghai - - opcC1DiffPlaces_d17g0v0_Shanghai - - opcC1DiffPlaces_d18g0v0_Shanghai - - opcC1DiffPlaces_d19g0v0_Shanghai - - opcC1DiffPlaces_d3g0v0_Shanghai - - opcC1DiffPlaces_d21g0v0_Shanghai - - opcC1DiffPlaces_d4g0v0_Shanghai - - opcC2DiffPlaces_d0g0v0_Shanghai - - opcC1DiffPlaces_d20g0v0_Shanghai - - opcC1DiffPlaces_d22g0v0_Shanghai - - opcC1DiffPlaces_d23g0v0_Shanghai - - opcC1DiffPlaces_d5g0v0_Shanghai - - opcC1DiffPlaces_d6g0v0_Shanghai - - opcC1DiffPlaces_d7g0v0_Shanghai - - opcC1DiffPlaces_d8g0v0_Shanghai - - opcC1DiffPlaces_d9g0v0_Shanghai - - opcC1DiffPlaces_d24g0v0_Shanghai - - opcC2DiffPlaces_d1g0v0_Shanghai - - opcC1DiffPlaces_d25g0v0_Shanghai - - opcC2DiffPlaces_d10g0v0_Shanghai - - opcC2DiffPlaces_d11g0v0_Shanghai - - opcC1DiffPlaces_d26g0v0_Shanghai - - opcC2DiffPlaces_d12g0v0_Shanghai - - opcC1DiffPlaces_d27g0v0_Shanghai - - opcC2DiffPlaces_d13g0v0_Shanghai - - opcC2DiffPlaces_d14g0v0_Shanghai - - opcC1DiffPlaces_d28g0v0_Shanghai - - opcC2DiffPlaces_d15g0v0_Shanghai - - opcC1DiffPlaces_d29g0v0_Shanghai - - opcC1DiffPlaces_d30g0v0_Shanghai - - opcC2DiffPlaces_d16g0v0_Shanghai - - opcC1DiffPlaces_d31g0v0_Shanghai - - opcC2DiffPlaces_d2g0v0_Shanghai - - opcC1DiffPlaces_d32g0v0_Shanghai - - opcC1DiffPlaces_d33g0v0_Shanghai - - opcC1DiffPlaces_d34g0v0_Shanghai - - opcC2DiffPlaces_d17g0v0_Shanghai - - opcC2DiffPlaces_d18g0v0_Shanghai - - opcC2DiffPlaces_d19g0v0_Shanghai - - opcC2DiffPlaces_d3g0v0_Shanghai - - opcC2DiffPlaces_d21g0v0_Shanghai - - opcC3DiffPlaces_d0g0v0_Shanghai - - opcC2DiffPlaces_d4g0v0_Shanghai - - opcC2DiffPlaces_d20g0v0_Shanghai - - opcC2DiffPlaces_d22g0v0_Shanghai - - opcC2DiffPlaces_d23g0v0_Shanghai - - opcC2DiffPlaces_d5g0v0_Shanghai - - opcC2DiffPlaces_d6g0v0_Shanghai - - opcC2DiffPlaces_d7g0v0_Shanghai - - opcC2DiffPlaces_d8g0v0_Shanghai - - opcC2DiffPlaces_d24g0v0_Shanghai - - opcC2DiffPlaces_d9g0v0_Shanghai - - opcC3DiffPlaces_d1g0v0_Shanghai - - opcC2DiffPlaces_d25g0v0_Shanghai - - opcC3DiffPlaces_d10g0v0_Shanghai - - opcC3DiffPlaces_d11g0v0_Shanghai - - opcC2DiffPlaces_d26g0v0_Shanghai - - opcC3DiffPlaces_d12g0v0_Shanghai - - opcC2DiffPlaces_d27g0v0_Shanghai - - opcC3DiffPlaces_d13g0v0_Shanghai - - opcC2DiffPlaces_d28g0v0_Shanghai - - opcC3DiffPlaces_d14g0v0_Shanghai - - opcC3DiffPlaces_d15g0v0_Shanghai - - opcC2DiffPlaces_d29g0v0_Shanghai - - opcC2DiffPlaces_d30g0v0_Shanghai - - opcC3DiffPlaces_d16g0v0_Shanghai - - opcC2DiffPlaces_d31g0v0_Shanghai - - opcC2DiffPlaces_d32g0v0_Shanghai - - opcC3DiffPlaces_d2g0v0_Shanghai - - opcC2DiffPlaces_d33g0v0_Shanghai - - opcC2DiffPlaces_d34g0v0_Shanghai - - opcC3DiffPlaces_d17g0v0_Shanghai - - opcC3DiffPlaces_d18g0v0_Shanghai - - opcC3DiffPlaces_d3g0v0_Shanghai - - opcC3DiffPlaces_d19g0v0_Shanghai - - opcC4DiffPlaces_d0g0v0_Shanghai - - opcC3DiffPlaces_d21g0v0_Shanghai - - opcC3DiffPlaces_d4g0v0_Shanghai - - opcC3DiffPlaces_d20g0v0_Shanghai - - opcC3DiffPlaces_d22g0v0_Shanghai - - opcC3DiffPlaces_d5g0v0_Shanghai - - opcC3DiffPlaces_d23g0v0_Shanghai - - opcC3DiffPlaces_d6g0v0_Shanghai - - opcC3DiffPlaces_d7g0v0_Shanghai - - opcC3DiffPlaces_d8g0v0_Shanghai - - opcC3DiffPlaces_d9g0v0_Shanghai - - opcC3DiffPlaces_d24g0v0_Shanghai - - opcC3DiffPlaces_d25g0v0_Shanghai - - opcC4DiffPlaces_d1g0v0_Shanghai - - opcC4DiffPlaces_d10g0v0_Shanghai - - opcC4DiffPlaces_d11g0v0_Shanghai - - opcC3DiffPlaces_d26g0v0_Shanghai - - opcC4DiffPlaces_d12g0v0_Shanghai - - opcC3DiffPlaces_d27g0v0_Shanghai - - opcC4DiffPlaces_d13g0v0_Shanghai - - opcC3DiffPlaces_d28g0v0_Shanghai - - opcC4DiffPlaces_d14g0v0_Shanghai - - opcC3DiffPlaces_d29g0v0_Shanghai - - opcC4DiffPlaces_d15g0v0_Shanghai - - opcC3DiffPlaces_d30g0v0_Shanghai - - opcC4DiffPlaces_d16g0v0_Shanghai - - opcC3DiffPlaces_d31g0v0_Shanghai - - opcC4DiffPlaces_d2g0v0_Shanghai - - opcC3DiffPlaces_d32g0v0_Shanghai - - opcC3DiffPlaces_d33g0v0_Shanghai - - opcC3DiffPlaces_d34g0v0_Shanghai - - opcC4DiffPlaces_d17g0v0_Shanghai - - opcC4DiffPlaces_d18g0v0_Shanghai - - opcC4DiffPlaces_d19g0v0_Shanghai - - opcC4DiffPlaces_d3g0v0_Shanghai - - opcC4DiffPlaces_d21g0v0_Shanghai - - opcC5DiffPlaces_d0g0v0_Shanghai - - opcC4DiffPlaces_d4g0v0_Shanghai - - opcC4DiffPlaces_d20g0v0_Shanghai - - opcC4DiffPlaces_d22g0v0_Shanghai - - opcC4DiffPlaces_d5g0v0_Shanghai - - opcC4DiffPlaces_d23g0v0_Shanghai - - opcC4DiffPlaces_d6g0v0_Shanghai - - opcC4DiffPlaces_d7g0v0_Shanghai - - opcC4DiffPlaces_d8g0v0_Shanghai - - opcC4DiffPlaces_d24g0v0_Shanghai - - opcC4DiffPlaces_d9g0v0_Shanghai - - opcC4DiffPlaces_d25g0v0_Shanghai - - opcC5DiffPlaces_d1g0v0_Shanghai - - opcC5DiffPlaces_d10g0v0_Shanghai - - opcC5DiffPlaces_d11g0v0_Shanghai - - opcC4DiffPlaces_d26g0v0_Shanghai - - opcC5DiffPlaces_d12g0v0_Shanghai - - opcC4DiffPlaces_d27g0v0_Shanghai - - opcC5DiffPlaces_d13g0v0_Shanghai - - opcC4DiffPlaces_d28g0v0_Shanghai - - opcC5DiffPlaces_d14g0v0_Shanghai - - opcC4DiffPlaces_d29g0v0_Shanghai - - opcC5DiffPlaces_d15g0v0_Shanghai - - opcC5DiffPlaces_d16g0v0_Shanghai - - opcC4DiffPlaces_d31g0v0_Shanghai - - opcC4DiffPlaces_d30g0v0_Shanghai - - opcC5DiffPlaces_d2g0v0_Shanghai - - opcC4DiffPlaces_d32g0v0_Shanghai - - opcC4DiffPlaces_d33g0v0_Shanghai - - opcC4DiffPlaces_d34g0v0_Shanghai - - opcC5DiffPlaces_d17g0v0_Shanghai - - opcC5DiffPlaces_d18g0v0_Shanghai - - opcC5DiffPlaces_d3g0v0_Shanghai - - opcC5DiffPlaces_d19g0v0_Shanghai - - opcC5DiffPlaces_d21g0v0_Shanghai - - opcC6DiffPlaces_d0g0v0_Shanghai - - opcC5DiffPlaces_d20g0v0_Shanghai - - opcC5DiffPlaces_d4g0v0_Shanghai - - opcC5DiffPlaces_d22g0v0_Shanghai - - opcC5DiffPlaces_d5g0v0_Shanghai - - opcC5DiffPlaces_d23g0v0_Shanghai - - opcC5DiffPlaces_d6g0v0_Shanghai - - opcC5DiffPlaces_d7g0v0_Shanghai - - opcC5DiffPlaces_d8g0v0_Shanghai - - opcC5DiffPlaces_d24g0v0_Shanghai - - opcC5DiffPlaces_d9g0v0_Shanghai - - opcC5DiffPlaces_d25g0v0_Shanghai - - opcC6DiffPlaces_d1g0v0_Shanghai - - opcC6DiffPlaces_d10g0v0_Shanghai - - opcC6DiffPlaces_d11g0v0_Shanghai - - opcC5DiffPlaces_d26g0v0_Shanghai - - opcC6DiffPlaces_d12g0v0_Shanghai - - opcC6DiffPlaces_d13g0v0_Shanghai - - opcC5DiffPlaces_d27g0v0_Shanghai - - opcC5DiffPlaces_d28g0v0_Shanghai - - opcC6DiffPlaces_d14g0v0_Shanghai - - opcC5DiffPlaces_d29g0v0_Shanghai - - opcC6DiffPlaces_d15g0v0_Shanghai - - opcC5DiffPlaces_d31g0v0_Shanghai - - opcC5DiffPlaces_d30g0v0_Shanghai - - opcC6DiffPlaces_d16g0v0_Shanghai - - opcC5DiffPlaces_d32g0v0_Shanghai - - opcC6DiffPlaces_d2g0v0_Shanghai - - opcC5DiffPlaces_d33g0v0_Shanghai - - opcC5DiffPlaces_d34g0v0_Shanghai - - opcC6DiffPlaces_d17g0v0_Shanghai - - opcC6DiffPlaces_d18g0v0_Shanghai - - opcC6DiffPlaces_d19g0v0_Shanghai - - opcC6DiffPlaces_d3g0v0_Shanghai - - opcC6DiffPlaces_d21g0v0_Shanghai - - opcC7DiffPlaces_d0g0v0_Shanghai - - opcC6DiffPlaces_d20g0v0_Shanghai - - opcC6DiffPlaces_d4g0v0_Shanghai - - opcC6DiffPlaces_d22g0v0_Shanghai - - opcC6DiffPlaces_d5g0v0_Shanghai - - opcC6DiffPlaces_d23g0v0_Shanghai - - opcC6DiffPlaces_d6g0v0_Shanghai - - opcC6DiffPlaces_d7g0v0_Shanghai - - opcC6DiffPlaces_d8g0v0_Shanghai - - opcC6DiffPlaces_d9g0v0_Shanghai - - opcC6DiffPlaces_d24g0v0_Shanghai - - opcC6DiffPlaces_d25g0v0_Shanghai - - opcC7DiffPlaces_d1g0v0_Shanghai - - opcC7DiffPlaces_d10g0v0_Shanghai - - opcC6DiffPlaces_d26g0v0_Shanghai - - opcC7DiffPlaces_d11g0v0_Shanghai - - opcC7DiffPlaces_d12g0v0_Shanghai - - opcC6DiffPlaces_d27g0v0_Shanghai - - opcC7DiffPlaces_d13g0v0_Shanghai - - opcC6DiffPlaces_d28g0v0_Shanghai - - opcC7DiffPlaces_d14g0v0_Shanghai - - opcC7DiffPlaces_d15g0v0_Shanghai - - opcC6DiffPlaces_d29g0v0_Shanghai - - opcC6DiffPlaces_d30g0v0_Shanghai - - opcC7DiffPlaces_d16g0v0_Shanghai - - opcC6DiffPlaces_d31g0v0_Shanghai - - opcC7DiffPlaces_d2g0v0_Shanghai - - opcC6DiffPlaces_d32g0v0_Shanghai - - opcC6DiffPlaces_d33g0v0_Shanghai - - opcC6DiffPlaces_d34g0v0_Shanghai - - opcC7DiffPlaces_d17g0v0_Shanghai - - opcC7DiffPlaces_d18g0v0_Shanghai - - opcC7DiffPlaces_d19g0v0_Shanghai - - opcC7DiffPlaces_d3g0v0_Shanghai - - opcC7DiffPlaces_d21g0v0_Shanghai - - opcC8DiffPlaces_d0g0v0_Shanghai - - opcC7DiffPlaces_d20g0v0_Shanghai - - opcC7DiffPlaces_d4g0v0_Shanghai - - opcC7DiffPlaces_d22g0v0_Shanghai - - opcC7DiffPlaces_d23g0v0_Shanghai - - opcC7DiffPlaces_d5g0v0_Shanghai - - opcC7DiffPlaces_d6g0v0_Shanghai - - opcC7DiffPlaces_d7g0v0_Shanghai - - opcC7DiffPlaces_d8g0v0_Shanghai - - opcC7DiffPlaces_d9g0v0_Shanghai - - opcC7DiffPlaces_d24g0v0_Shanghai - - opcC7DiffPlaces_d25g0v0_Shanghai - - opcC8DiffPlaces_d1g0v0_Shanghai - - opcC8DiffPlaces_d10g0v0_Shanghai - - opcC7DiffPlaces_d26g0v0_Shanghai - - opcC8DiffPlaces_d11g0v0_Shanghai - - opcC8DiffPlaces_d12g0v0_Shanghai - - opcC7DiffPlaces_d27g0v0_Shanghai - - opcC8DiffPlaces_d13g0v0_Shanghai - - opcC7DiffPlaces_d28g0v0_Shanghai - - opcC8DiffPlaces_d14g0v0_Shanghai - - opcC7DiffPlaces_d29g0v0_Shanghai - - opcC8DiffPlaces_d15g0v0_Shanghai - - opcC8DiffPlaces_d16g0v0_Shanghai - - opcC7DiffPlaces_d31g0v0_Shanghai - - opcC7DiffPlaces_d30g0v0_Shanghai - - opcC8DiffPlaces_d2g0v0_Shanghai - - opcC7DiffPlaces_d32g0v0_Shanghai - - opcC7DiffPlaces_d33g0v0_Shanghai - - opcC7DiffPlaces_d34g0v0_Shanghai - - opcC8DiffPlaces_d17g0v0_Shanghai - - opcC8DiffPlaces_d18g0v0_Shanghai - - opcC8DiffPlaces_d19g0v0_Shanghai - - opcC8DiffPlaces_d3g0v0_Shanghai - - opcC8DiffPlaces_d21g0v0_Shanghai - - opcC8DiffPlaces_d4g0v0_Shanghai - - opcC9DiffPlaces_d0g0v0_Shanghai - - opcC8DiffPlaces_d20g0v0_Shanghai - - opcC8DiffPlaces_d22g0v0_Shanghai - - opcC8DiffPlaces_d5g0v0_Shanghai - - opcC8DiffPlaces_d23g0v0_Shanghai - - opcC8DiffPlaces_d6g0v0_Shanghai - - opcC8DiffPlaces_d7g0v0_Shanghai - - opcC8DiffPlaces_d8g0v0_Shanghai - - opcC8DiffPlaces_d24g0v0_Shanghai - - opcC8DiffPlaces_d9g0v0_Shanghai - - opcC8DiffPlaces_d25g0v0_Shanghai - - opcC9DiffPlaces_d1g0v0_Shanghai - - opcC9DiffPlaces_d10g0v0_Shanghai - - opcC9DiffPlaces_d11g0v0_Shanghai - - opcC8DiffPlaces_d26g0v0_Shanghai - - opcC9DiffPlaces_d12g0v0_Shanghai - - opcC8DiffPlaces_d27g0v0_Shanghai - - opcC9DiffPlaces_d13g0v0_Shanghai - - opcC8DiffPlaces_d28g0v0_Shanghai - - opcC9DiffPlaces_d14g0v0_Shanghai - - opcC9DiffPlaces_d15g0v0_Shanghai - - opcC8DiffPlaces_d29g0v0_Shanghai - - opcC9DiffPlaces_d16g0v0_Shanghai - - opcC8DiffPlaces_d30g0v0_Shanghai - - opcC8DiffPlaces_d31g0v0_Shanghai - - opcC8DiffPlaces_d32g0v0_Shanghai - - opcC9DiffPlaces_d2g0v0_Shanghai - - opcC8DiffPlaces_d33g0v0_Shanghai - - opcC8DiffPlaces_d34g0v0_Shanghai - - opcC9DiffPlaces_d17g0v0_Shanghai - - opcC9DiffPlaces_d18g0v0_Shanghai - - opcC9DiffPlaces_d3g0v0_Shanghai - - opcC9DiffPlaces_d19g0v0_Shanghai - - opcC9DiffPlaces_d21g0v0_Shanghai - - opcCADiffPlaces_d0g0v0_Shanghai - - opcC9DiffPlaces_d4g0v0_Shanghai - - opcC9DiffPlaces_d20g0v0_Shanghai - - opcC9DiffPlaces_d22g0v0_Shanghai - - opcC9DiffPlaces_d5g0v0_Shanghai - - opcC9DiffPlaces_d23g0v0_Shanghai - - opcC9DiffPlaces_d6g0v0_Shanghai - - opcC9DiffPlaces_d7g0v0_Shanghai - - opcC9DiffPlaces_d8g0v0_Shanghai - - opcC9DiffPlaces_d24g0v0_Shanghai - - opcC9DiffPlaces_d9g0v0_Shanghai - - opcC9DiffPlaces_d25g0v0_Shanghai - - opcCADiffPlaces_d1g0v0_Shanghai - - opcCADiffPlaces_d10g0v0_Shanghai - - opcC9DiffPlaces_d26g0v0_Shanghai - - opcCADiffPlaces_d11g0v0_Shanghai - - opcCADiffPlaces_d12g0v0_Shanghai - - opcC9DiffPlaces_d27g0v0_Shanghai - - opcCADiffPlaces_d13g0v0_Shanghai - - opcC9DiffPlaces_d28g0v0_Shanghai - - opcCADiffPlaces_d14g0v0_Shanghai - - opcC9DiffPlaces_d29g0v0_Shanghai - - opcCADiffPlaces_d15g0v0_Shanghai - - opcCADiffPlaces_d16g0v0_Shanghai - - opcC9DiffPlaces_d30g0v0_Shanghai - - opcC9DiffPlaces_d31g0v0_Shanghai - - opcCADiffPlaces_d2g0v0_Shanghai - - opcC9DiffPlaces_d32g0v0_Shanghai - - opcC9DiffPlaces_d33g0v0_Shanghai - - opcC9DiffPlaces_d34g0v0_Shanghai - - opcCADiffPlaces_d17g0v0_Shanghai - - opcCADiffPlaces_d18g0v0_Shanghai - - opcCADiffPlaces_d19g0v0_Shanghai - - opcCADiffPlaces_d3g0v0_Shanghai - - opcCADiffPlaces_d21g0v0_Shanghai - - opcCBDiffPlaces_d0g0v0_Shanghai - - opcCADiffPlaces_d20g0v0_Shanghai - - opcCADiffPlaces_d22g0v0_Shanghai - - opcCADiffPlaces_d4g0v0_Shanghai - - opcCADiffPlaces_d23g0v0_Shanghai - - opcCADiffPlaces_d5g0v0_Shanghai - - opcCADiffPlaces_d6g0v0_Shanghai - - opcCADiffPlaces_d7g0v0_Shanghai - - opcCADiffPlaces_d8g0v0_Shanghai - - opcCADiffPlaces_d24g0v0_Shanghai - - opcCADiffPlaces_d9g0v0_Shanghai - - opcCADiffPlaces_d25g0v0_Shanghai - - opcCBDiffPlaces_d1g0v0_Shanghai - - opcCBDiffPlaces_d10g0v0_Shanghai - - opcCBDiffPlaces_d11g0v0_Shanghai - - opcCADiffPlaces_d26g0v0_Shanghai - - opcCBDiffPlaces_d12g0v0_Shanghai - - opcCADiffPlaces_d27g0v0_Shanghai - - opcCBDiffPlaces_d13g0v0_Shanghai - - opcCADiffPlaces_d28g0v0_Shanghai - - opcCBDiffPlaces_d14g0v0_Shanghai - - opcCADiffPlaces_d29g0v0_Shanghai - - opcCBDiffPlaces_d15g0v0_Shanghai - - opcCADiffPlaces_d30g0v0_Shanghai - - opcCADiffPlaces_d31g0v0_Shanghai - - opcCBDiffPlaces_d16g0v0_Shanghai - - opcCBDiffPlaces_d2g0v0_Shanghai - - opcCADiffPlaces_d32g0v0_Shanghai - - opcCADiffPlaces_d34g0v0_Shanghai - - opcCADiffPlaces_d33g0v0_Shanghai - - opcCBDiffPlaces_d17g0v0_Shanghai - - opcCBDiffPlaces_d18g0v0_Shanghai - - opcCBDiffPlaces_d3g0v0_Shanghai - - opcCBDiffPlaces_d19g0v0_Shanghai - - opcCBDiffPlaces_d21g0v0_Shanghai - - opcCCDiffPlaces_d0g0v0_Shanghai - - opcCBDiffPlaces_d4g0v0_Shanghai - - opcCBDiffPlaces_d20g0v0_Shanghai - - opcCBDiffPlaces_d22g0v0_Shanghai - - opcCBDiffPlaces_d5g0v0_Shanghai - - opcCBDiffPlaces_d23g0v0_Shanghai - - opcCBDiffPlaces_d6g0v0_Shanghai - - opcCBDiffPlaces_d7g0v0_Shanghai - - opcCBDiffPlaces_d8g0v0_Shanghai - - opcCBDiffPlaces_d9g0v0_Shanghai - - opcCBDiffPlaces_d24g0v0_Shanghai - - opcCCDiffPlaces_d1g0v0_Shanghai - - opcCBDiffPlaces_d25g0v0_Shanghai - - opcCCDiffPlaces_d10g0v0_Shanghai - - opcCCDiffPlaces_d11g0v0_Shanghai - - opcCBDiffPlaces_d26g0v0_Shanghai - - opcCCDiffPlaces_d12g0v0_Shanghai - - opcCBDiffPlaces_d27g0v0_Shanghai - - opcCCDiffPlaces_d13g0v0_Shanghai - - opcCBDiffPlaces_d28g0v0_Shanghai - - opcCCDiffPlaces_d14g0v0_Shanghai - - opcCBDiffPlaces_d29g0v0_Shanghai - - opcCCDiffPlaces_d15g0v0_Shanghai - - opcCCDiffPlaces_d16g0v0_Shanghai - - opcCBDiffPlaces_d30g0v0_Shanghai - - opcCBDiffPlaces_d31g0v0_Shanghai - - opcCCDiffPlaces_d2g0v0_Shanghai - - opcCBDiffPlaces_d32g0v0_Shanghai - - opcCBDiffPlaces_d33g0v0_Shanghai - - opcCBDiffPlaces_d34g0v0_Shanghai - - opcCCDiffPlaces_d17g0v0_Shanghai - - opcCCDiffPlaces_d18g0v0_Shanghai - - opcCCDiffPlaces_d19g0v0_Shanghai - - opcCCDiffPlaces_d3g0v0_Shanghai - - opcCCDiffPlaces_d21g0v0_Shanghai - - opcCDDiffPlaces_d0g0v0_Shanghai - - opcCCDiffPlaces_d4g0v0_Shanghai - - opcCCDiffPlaces_d20g0v0_Shanghai - - opcCCDiffPlaces_d22g0v0_Shanghai - - opcCCDiffPlaces_d5g0v0_Shanghai - - opcCCDiffPlaces_d23g0v0_Shanghai - - opcCCDiffPlaces_d6g0v0_Shanghai - - opcCCDiffPlaces_d7g0v0_Shanghai - - opcCCDiffPlaces_d8g0v0_Shanghai - - opcCCDiffPlaces_d24g0v0_Shanghai - - opcCCDiffPlaces_d9g0v0_Shanghai - - opcCDDiffPlaces_d1g0v0_Shanghai - - opcCCDiffPlaces_d25g0v0_Shanghai - - opcCDDiffPlaces_d10g0v0_Shanghai - - opcCDDiffPlaces_d11g0v0_Shanghai - - opcCCDiffPlaces_d26g0v0_Shanghai - - opcCDDiffPlaces_d12g0v0_Shanghai - - opcCCDiffPlaces_d27g0v0_Shanghai - - opcCDDiffPlaces_d13g0v0_Shanghai - - opcCCDiffPlaces_d28g0v0_Shanghai - - opcCDDiffPlaces_d14g0v0_Shanghai - - opcCCDiffPlaces_d29g0v0_Shanghai - - opcCDDiffPlaces_d15g0v0_Shanghai - - opcCDDiffPlaces_d16g0v0_Shanghai - - opcCCDiffPlaces_d30g0v0_Shanghai - - opcCDDiffPlaces_d2g0v0_Shanghai - - opcCCDiffPlaces_d31g0v0_Shanghai - - opcCCDiffPlaces_d32g0v0_Shanghai - - opcCCDiffPlaces_d33g0v0_Shanghai - - opcCCDiffPlaces_d34g0v0_Shanghai - - opcCDDiffPlaces_d17g0v0_Shanghai - - opcCDDiffPlaces_d18g0v0_Shanghai - - opcCDDiffPlaces_d19g0v0_Shanghai - - opcCDDiffPlaces_d3g0v0_Shanghai - - opcCDDiffPlaces_d21g0v0_Shanghai - - opcCEDiffPlaces_d0g0v0_Shanghai - - opcCDDiffPlaces_d4g0v0_Shanghai - - opcCDDiffPlaces_d20g0v0_Shanghai - - opcCDDiffPlaces_d22g0v0_Shanghai - - opcCDDiffPlaces_d23g0v0_Shanghai - - opcCDDiffPlaces_d5g0v0_Shanghai - - opcCDDiffPlaces_d6g0v0_Shanghai - - opcCDDiffPlaces_d7g0v0_Shanghai - - opcCDDiffPlaces_d8g0v0_Shanghai - - opcCDDiffPlaces_d24g0v0_Shanghai - - opcCDDiffPlaces_d9g0v0_Shanghai - - opcCDDiffPlaces_d25g0v0_Shanghai - - opcCEDiffPlaces_d1g0v0_Shanghai - - opcCEDiffPlaces_d10g0v0_Shanghai - - opcCDDiffPlaces_d26g0v0_Shanghai - - opcCEDiffPlaces_d11g0v0_Shanghai - - opcCEDiffPlaces_d12g0v0_Shanghai - - opcCDDiffPlaces_d27g0v0_Shanghai - - opcCEDiffPlaces_d13g0v0_Shanghai - - opcCDDiffPlaces_d28g0v0_Shanghai - - opcCEDiffPlaces_d14g0v0_Shanghai - - opcCDDiffPlaces_d29g0v0_Shanghai - - opcCEDiffPlaces_d15g0v0_Shanghai - - opcCDDiffPlaces_d30g0v0_Shanghai - - opcCEDiffPlaces_d16g0v0_Shanghai - - opcCDDiffPlaces_d31g0v0_Shanghai - - opcCEDiffPlaces_d2g0v0_Shanghai - - opcCDDiffPlaces_d32g0v0_Shanghai - - opcCDDiffPlaces_d33g0v0_Shanghai - - opcCDDiffPlaces_d34g0v0_Shanghai - - opcCEDiffPlaces_d17g0v0_Shanghai - - opcCEDiffPlaces_d18g0v0_Shanghai - - opcCEDiffPlaces_d19g0v0_Shanghai - - opcCEDiffPlaces_d3g0v0_Shanghai - - opcCEDiffPlaces_d21g0v0_Shanghai - - opcCFDiffPlaces_d0g0v0_Shanghai - - opcCEDiffPlaces_d4g0v0_Shanghai - - opcCEDiffPlaces_d20g0v0_Shanghai - - opcCEDiffPlaces_d22g0v0_Shanghai - - opcCEDiffPlaces_d5g0v0_Shanghai - - opcCEDiffPlaces_d23g0v0_Shanghai - - opcCEDiffPlaces_d6g0v0_Shanghai - - opcCEDiffPlaces_d7g0v0_Shanghai - - opcCEDiffPlaces_d8g0v0_Shanghai - - opcCEDiffPlaces_d24g0v0_Shanghai - - opcCEDiffPlaces_d9g0v0_Shanghai - - opcCEDiffPlaces_d25g0v0_Shanghai - - opcCFDiffPlaces_d1g0v0_Shanghai - - opcCFDiffPlaces_d10g0v0_Shanghai - - opcCEDiffPlaces_d26g0v0_Shanghai - - opcCFDiffPlaces_d11g0v0_Shanghai - - opcCFDiffPlaces_d12g0v0_Shanghai - - opcCEDiffPlaces_d27g0v0_Shanghai - - opcCFDiffPlaces_d13g0v0_Shanghai - - opcCEDiffPlaces_d28g0v0_Shanghai - - opcCFDiffPlaces_d14g0v0_Shanghai - - opcCEDiffPlaces_d29g0v0_Shanghai - - opcCFDiffPlaces_d15g0v0_Shanghai - - opcCFDiffPlaces_d16g0v0_Shanghai - - opcCEDiffPlaces_d30g0v0_Shanghai - - opcCEDiffPlaces_d31g0v0_Shanghai - - opcCFDiffPlaces_d2g0v0_Shanghai - - opcCEDiffPlaces_d32g0v0_Shanghai - - opcCEDiffPlaces_d33g0v0_Shanghai - - opcCEDiffPlaces_d34g0v0_Shanghai - - opcCFDiffPlaces_d17g0v0_Shanghai - - opcCFDiffPlaces_d18g0v0_Shanghai - - opcCFDiffPlaces_d19g0v0_Shanghai - - opcCFDiffPlaces_d3g0v0_Shanghai - - opcD0DiffPlaces_d0g0v0_Shanghai - - opcCFDiffPlaces_d21g0v0_Shanghai - - opcCFDiffPlaces_d4g0v0_Shanghai - - opcCFDiffPlaces_d20g0v0_Shanghai - - opcCFDiffPlaces_d22g0v0_Shanghai - - opcCFDiffPlaces_d5g0v0_Shanghai - - opcCFDiffPlaces_d23g0v0_Shanghai - - opcCFDiffPlaces_d6g0v0_Shanghai - - opcCFDiffPlaces_d7g0v0_Shanghai - - opcCFDiffPlaces_d8g0v0_Shanghai - - opcCFDiffPlaces_d24g0v0_Shanghai - - opcCFDiffPlaces_d9g0v0_Shanghai - - opcCFDiffPlaces_d25g0v0_Shanghai - - opcD0DiffPlaces_d1g0v0_Shanghai - - opcD0DiffPlaces_d10g0v0_Shanghai - - opcD0DiffPlaces_d11g0v0_Shanghai - - opcCFDiffPlaces_d26g0v0_Shanghai - - opcD0DiffPlaces_d12g0v0_Shanghai - - opcCFDiffPlaces_d27g0v0_Shanghai - - opcD0DiffPlaces_d13g0v0_Shanghai - - opcCFDiffPlaces_d28g0v0_Shanghai - - opcD0DiffPlaces_d14g0v0_Shanghai - - opcCFDiffPlaces_d29g0v0_Shanghai - - opcD0DiffPlaces_d15g0v0_Shanghai - - opcD0DiffPlaces_d16g0v0_Shanghai - - opcCFDiffPlaces_d30g0v0_Shanghai - - opcCFDiffPlaces_d31g0v0_Shanghai - - opcD0DiffPlaces_d2g0v0_Shanghai - - opcCFDiffPlaces_d32g0v0_Shanghai - - opcCFDiffPlaces_d33g0v0_Shanghai - - opcCFDiffPlaces_d34g0v0_Shanghai - - opcD0DiffPlaces_d17g0v0_Shanghai - - opcD0DiffPlaces_d18g0v0_Shanghai - - opcD0DiffPlaces_d19g0v0_Shanghai - - opcD0DiffPlaces_d3g0v0_Shanghai - - opcD1DiffPlaces_d0g0v0_Shanghai - - opcD0DiffPlaces_d21g0v0_Shanghai - - opcD0DiffPlaces_d4g0v0_Shanghai - - opcD0DiffPlaces_d20g0v0_Shanghai - - opcD0DiffPlaces_d22g0v0_Shanghai - - opcD0DiffPlaces_d5g0v0_Shanghai - - opcD0DiffPlaces_d23g0v0_Shanghai - - opcD0DiffPlaces_d6g0v0_Shanghai - - opcD0DiffPlaces_d7g0v0_Shanghai - - opcD0DiffPlaces_d8g0v0_Shanghai - - opcD0DiffPlaces_d9g0v0_Shanghai - - opcD0DiffPlaces_d24g0v0_Shanghai - - opcD1DiffPlaces_d1g0v0_Shanghai - - opcD0DiffPlaces_d25g0v0_Shanghai - - opcD1DiffPlaces_d10g0v0_Shanghai - - opcD1DiffPlaces_d11g0v0_Shanghai - - opcD0DiffPlaces_d26g0v0_Shanghai - - opcD1DiffPlaces_d12g0v0_Shanghai - - opcD0DiffPlaces_d27g0v0_Shanghai - - opcD1DiffPlaces_d13g0v0_Shanghai - - opcD0DiffPlaces_d28g0v0_Shanghai - - opcD1DiffPlaces_d14g0v0_Shanghai - - opcD0DiffPlaces_d29g0v0_Shanghai - - opcD1DiffPlaces_d15g0v0_Shanghai - - opcD0DiffPlaces_d30g0v0_Shanghai - - opcD1DiffPlaces_d16g0v0_Shanghai - - opcD0DiffPlaces_d31g0v0_Shanghai - - opcD1DiffPlaces_d2g0v0_Shanghai - - opcD0DiffPlaces_d32g0v0_Shanghai - - opcD0DiffPlaces_d33g0v0_Shanghai - - opcD0DiffPlaces_d34g0v0_Shanghai - - opcD1DiffPlaces_d17g0v0_Shanghai - - opcD1DiffPlaces_d18g0v0_Shanghai - - opcD1DiffPlaces_d19g0v0_Shanghai - - opcD1DiffPlaces_d3g0v0_Shanghai - - opcD1DiffPlaces_d21g0v0_Shanghai - - opcD2DiffPlaces_d0g0v0_Shanghai - - opcD1DiffPlaces_d4g0v0_Shanghai - - opcD1DiffPlaces_d20g0v0_Shanghai - - opcD1DiffPlaces_d22g0v0_Shanghai - - opcD1DiffPlaces_d5g0v0_Shanghai - - opcD1DiffPlaces_d23g0v0_Shanghai - - opcD1DiffPlaces_d6g0v0_Shanghai - - opcD1DiffPlaces_d7g0v0_Shanghai - - opcD1DiffPlaces_d8g0v0_Shanghai - - opcD1DiffPlaces_d9g0v0_Shanghai - - opcD1DiffPlaces_d24g0v0_Shanghai - - opcD1DiffPlaces_d25g0v0_Shanghai - - opcD2DiffPlaces_d1g0v0_Shanghai - - opcD2DiffPlaces_d10g0v0_Shanghai - - opcD1DiffPlaces_d26g0v0_Shanghai - - opcD2DiffPlaces_d11g0v0_Shanghai - - opcD2DiffPlaces_d12g0v0_Shanghai - - opcD1DiffPlaces_d27g0v0_Shanghai - - opcD2DiffPlaces_d13g0v0_Shanghai - - opcD1DiffPlaces_d28g0v0_Shanghai - - opcD2DiffPlaces_d14g0v0_Shanghai - - opcD1DiffPlaces_d29g0v0_Shanghai - - opcD2DiffPlaces_d15g0v0_Shanghai - - opcD1DiffPlaces_d30g0v0_Shanghai - - opcD2DiffPlaces_d16g0v0_Shanghai - - opcD1DiffPlaces_d31g0v0_Shanghai - - opcD2DiffPlaces_d2g0v0_Shanghai - - opcD1DiffPlaces_d32g0v0_Shanghai - - opcD1DiffPlaces_d33g0v0_Shanghai - - opcD1DiffPlaces_d34g0v0_Shanghai - - opcD2DiffPlaces_d17g0v0_Shanghai - - opcD2DiffPlaces_d18g0v0_Shanghai - - opcD2DiffPlaces_d19g0v0_Shanghai - - opcD2DiffPlaces_d3g0v0_Shanghai - - opcD2DiffPlaces_d21g0v0_Shanghai - - opcD3DiffPlaces_d0g0v0_Shanghai - - opcD2DiffPlaces_d4g0v0_Shanghai - - opcD2DiffPlaces_d20g0v0_Shanghai - - opcD2DiffPlaces_d22g0v0_Shanghai - - opcD2DiffPlaces_d23g0v0_Shanghai - - opcD2DiffPlaces_d5g0v0_Shanghai - - opcD2DiffPlaces_d6g0v0_Shanghai - - opcD2DiffPlaces_d7g0v0_Shanghai - - opcD2DiffPlaces_d8g0v0_Shanghai - - opcD2DiffPlaces_d24g0v0_Shanghai - - opcD2DiffPlaces_d9g0v0_Shanghai - - opcD2DiffPlaces_d25g0v0_Shanghai - - opcD3DiffPlaces_d1g0v0_Shanghai - - opcD3DiffPlaces_d10g0v0_Shanghai - - opcD3DiffPlaces_d11g0v0_Shanghai - - opcD2DiffPlaces_d26g0v0_Shanghai - - opcD3DiffPlaces_d12g0v0_Shanghai - - opcD2DiffPlaces_d27g0v0_Shanghai - - opcD3DiffPlaces_d13g0v0_Shanghai - - opcD2DiffPlaces_d28g0v0_Shanghai - - opcD3DiffPlaces_d14g0v0_Shanghai - - opcD3DiffPlaces_d15g0v0_Shanghai - - opcD2DiffPlaces_d29g0v0_Shanghai - - opcD3DiffPlaces_d16g0v0_Shanghai - - opcD2DiffPlaces_d30g0v0_Shanghai - - opcD2DiffPlaces_d31g0v0_Shanghai - - opcD3DiffPlaces_d2g0v0_Shanghai - - opcD2DiffPlaces_d32g0v0_Shanghai - - opcD2DiffPlaces_d33g0v0_Shanghai - - opcD2DiffPlaces_d34g0v0_Shanghai - - opcD3DiffPlaces_d17g0v0_Shanghai - - opcD3DiffPlaces_d18g0v0_Shanghai - - opcD3DiffPlaces_d19g0v0_Shanghai - - opcD3DiffPlaces_d3g0v0_Shanghai - - opcD3DiffPlaces_d21g0v0_Shanghai - - opcD4DiffPlaces_d0g0v0_Shanghai - - opcD3DiffPlaces_d20g0v0_Shanghai - - opcD3DiffPlaces_d4g0v0_Shanghai - - opcD3DiffPlaces_d22g0v0_Shanghai - - opcD3DiffPlaces_d23g0v0_Shanghai - - opcD3DiffPlaces_d5g0v0_Shanghai - - opcD3DiffPlaces_d6g0v0_Shanghai - - opcD3DiffPlaces_d7g0v0_Shanghai - - opcD3DiffPlaces_d8g0v0_Shanghai - - opcD3DiffPlaces_d24g0v0_Shanghai - - opcD3DiffPlaces_d9g0v0_Shanghai - - opcD3DiffPlaces_d25g0v0_Shanghai - - opcD4DiffPlaces_d1g0v0_Shanghai - - opcD4DiffPlaces_d10g0v0_Shanghai - - opcD4DiffPlaces_d11g0v0_Shanghai - - opcD3DiffPlaces_d26g0v0_Shanghai - - opcD4DiffPlaces_d12g0v0_Shanghai - - opcD3DiffPlaces_d27g0v0_Shanghai - - opcD4DiffPlaces_d13g0v0_Shanghai - - opcD3DiffPlaces_d28g0v0_Shanghai - - opcD4DiffPlaces_d14g0v0_Shanghai - - opcD4DiffPlaces_d15g0v0_Shanghai - - opcD3DiffPlaces_d29g0v0_Shanghai - - opcD3DiffPlaces_d30g0v0_Shanghai - - opcD4DiffPlaces_d16g0v0_Shanghai - - opcD3DiffPlaces_d31g0v0_Shanghai - - opcD4DiffPlaces_d2g0v0_Shanghai - - opcD3DiffPlaces_d32g0v0_Shanghai - - opcD3DiffPlaces_d33g0v0_Shanghai - - opcD3DiffPlaces_d34g0v0_Shanghai - - opcD4DiffPlaces_d17g0v0_Shanghai - - opcD4DiffPlaces_d18g0v0_Shanghai - - opcD4DiffPlaces_d19g0v0_Shanghai - - opcD4DiffPlaces_d3g0v0_Shanghai - - opcD5DiffPlaces_d0g0v0_Shanghai - - opcD4DiffPlaces_d21g0v0_Shanghai - - opcD4DiffPlaces_d4g0v0_Shanghai - - opcD4DiffPlaces_d20g0v0_Shanghai - - opcD4DiffPlaces_d22g0v0_Shanghai - - opcD4DiffPlaces_d5g0v0_Shanghai - - opcD4DiffPlaces_d23g0v0_Shanghai - - opcD4DiffPlaces_d6g0v0_Shanghai - - opcD4DiffPlaces_d7g0v0_Shanghai - - opcD4DiffPlaces_d8g0v0_Shanghai - - opcD4DiffPlaces_d9g0v0_Shanghai - - opcD4DiffPlaces_d24g0v0_Shanghai - - opcD5DiffPlaces_d1g0v0_Shanghai - - opcD4DiffPlaces_d25g0v0_Shanghai - - opcD5DiffPlaces_d10g0v0_Shanghai - - opcD5DiffPlaces_d11g0v0_Shanghai - - opcD4DiffPlaces_d26g0v0_Shanghai - - opcD5DiffPlaces_d12g0v0_Shanghai - - opcD4DiffPlaces_d27g0v0_Shanghai - - opcD5DiffPlaces_d13g0v0_Shanghai - - opcD4DiffPlaces_d28g0v0_Shanghai - - opcD5DiffPlaces_d14g0v0_Shanghai - - opcD4DiffPlaces_d29g0v0_Shanghai - - opcD5DiffPlaces_d15g0v0_Shanghai - - opcD4DiffPlaces_d30g0v0_Shanghai - - opcD5DiffPlaces_d16g0v0_Shanghai - - opcD4DiffPlaces_d31g0v0_Shanghai - - opcD5DiffPlaces_d2g0v0_Shanghai - - opcD4DiffPlaces_d32g0v0_Shanghai - - opcD4DiffPlaces_d33g0v0_Shanghai - - opcD4DiffPlaces_d34g0v0_Shanghai - - opcD5DiffPlaces_d17g0v0_Shanghai - - opcD5DiffPlaces_d18g0v0_Shanghai - - opcD5DiffPlaces_d19g0v0_Shanghai - - opcD5DiffPlaces_d3g0v0_Shanghai - - opcD6DiffPlaces_d0g0v0_Shanghai - - opcD5DiffPlaces_d21g0v0_Shanghai - - opcD5DiffPlaces_d4g0v0_Shanghai - - opcD5DiffPlaces_d20g0v0_Shanghai - - opcD5DiffPlaces_d22g0v0_Shanghai - - opcD5DiffPlaces_d23g0v0_Shanghai - - opcD5DiffPlaces_d5g0v0_Shanghai - - opcD5DiffPlaces_d6g0v0_Shanghai - - opcD5DiffPlaces_d7g0v0_Shanghai - - opcD5DiffPlaces_d8g0v0_Shanghai - - opcD5DiffPlaces_d24g0v0_Shanghai - - opcD5DiffPlaces_d9g0v0_Shanghai - - opcD5DiffPlaces_d25g0v0_Shanghai - - opcD6DiffPlaces_d1g0v0_Shanghai - - opcD6DiffPlaces_d10g0v0_Shanghai - - opcD6DiffPlaces_d11g0v0_Shanghai - - opcD5DiffPlaces_d26g0v0_Shanghai - - opcD6DiffPlaces_d12g0v0_Shanghai - - opcD5DiffPlaces_d27g0v0_Shanghai - - opcD6DiffPlaces_d13g0v0_Shanghai - - opcD5DiffPlaces_d28g0v0_Shanghai - - opcD6DiffPlaces_d14g0v0_Shanghai - - opcD5DiffPlaces_d29g0v0_Shanghai - - opcD6DiffPlaces_d15g0v0_Shanghai - - opcD6DiffPlaces_d16g0v0_Shanghai - - opcD5DiffPlaces_d30g0v0_Shanghai - - opcD5DiffPlaces_d31g0v0_Shanghai - - opcD6DiffPlaces_d2g0v0_Shanghai - - opcD5DiffPlaces_d32g0v0_Shanghai - - opcD5DiffPlaces_d33g0v0_Shanghai - - opcD5DiffPlaces_d34g0v0_Shanghai - - opcD6DiffPlaces_d17g0v0_Shanghai - - opcD6DiffPlaces_d18g0v0_Shanghai - - opcD6DiffPlaces_d3g0v0_Shanghai - - opcD6DiffPlaces_d19g0v0_Shanghai - - opcD6DiffPlaces_d21g0v0_Shanghai - - opcD6DiffPlaces_d4g0v0_Shanghai - - opcD7DiffPlaces_d0g0v0_Shanghai - - opcD6DiffPlaces_d20g0v0_Shanghai - - opcD6DiffPlaces_d22g0v0_Shanghai - - opcD6DiffPlaces_d5g0v0_Shanghai - - opcD6DiffPlaces_d23g0v0_Shanghai - - opcD6DiffPlaces_d6g0v0_Shanghai - - opcD6DiffPlaces_d7g0v0_Shanghai - - opcD6DiffPlaces_d8g0v0_Shanghai - - opcD6DiffPlaces_d24g0v0_Shanghai - - opcD6DiffPlaces_d9g0v0_Shanghai - - opcD7DiffPlaces_d1g0v0_Shanghai - - opcD6DiffPlaces_d25g0v0_Shanghai - - opcD7DiffPlaces_d10g0v0_Shanghai - - opcD7DiffPlaces_d11g0v0_Shanghai - - opcD6DiffPlaces_d26g0v0_Shanghai - - opcD7DiffPlaces_d12g0v0_Shanghai - - opcD7DiffPlaces_d13g0v0_Shanghai - - opcD6DiffPlaces_d27g0v0_Shanghai - - opcD6DiffPlaces_d28g0v0_Shanghai - - opcD7DiffPlaces_d14g0v0_Shanghai - - opcD7DiffPlaces_d15g0v0_Shanghai - - opcD6DiffPlaces_d29g0v0_Shanghai - - opcD6DiffPlaces_d30g0v0_Shanghai - - opcD6DiffPlaces_d31g0v0_Shanghai - - opcD7DiffPlaces_d16g0v0_Shanghai - - opcD7DiffPlaces_d2g0v0_Shanghai - - opcD6DiffPlaces_d32g0v0_Shanghai - - opcD6DiffPlaces_d33g0v0_Shanghai - - opcD6DiffPlaces_d34g0v0_Shanghai - - opcD7DiffPlaces_d17g0v0_Shanghai - - opcD7DiffPlaces_d18g0v0_Shanghai - - opcD7DiffPlaces_d19g0v0_Shanghai - - opcD7DiffPlaces_d3g0v0_Shanghai - - opcD7DiffPlaces_d21g0v0_Shanghai - - opcD8DiffPlaces_d0g0v0_Shanghai - - opcD7DiffPlaces_d4g0v0_Shanghai - - opcD7DiffPlaces_d20g0v0_Shanghai - - opcD7DiffPlaces_d22g0v0_Shanghai - - opcD7DiffPlaces_d5g0v0_Shanghai - - opcD7DiffPlaces_d23g0v0_Shanghai - - opcD7DiffPlaces_d6g0v0_Shanghai - - opcD7DiffPlaces_d7g0v0_Shanghai - - opcD7DiffPlaces_d8g0v0_Shanghai - - opcD7DiffPlaces_d24g0v0_Shanghai - - opcD7DiffPlaces_d9g0v0_Shanghai - - opcD8DiffPlaces_d1g0v0_Shanghai - - opcD7DiffPlaces_d25g0v0_Shanghai - - opcD8DiffPlaces_d10g0v0_Shanghai - - opcD8DiffPlaces_d11g0v0_Shanghai - - opcD7DiffPlaces_d26g0v0_Shanghai - - opcD8DiffPlaces_d12g0v0_Shanghai - - opcD7DiffPlaces_d27g0v0_Shanghai - - opcD8DiffPlaces_d13g0v0_Shanghai - - opcD7DiffPlaces_d28g0v0_Shanghai - - opcD8DiffPlaces_d14g0v0_Shanghai - - opcD7DiffPlaces_d29g0v0_Shanghai - - opcD8DiffPlaces_d15g0v0_Shanghai - - opcD8DiffPlaces_d16g0v0_Shanghai - - opcD7DiffPlaces_d30g0v0_Shanghai - - opcD7DiffPlaces_d31g0v0_Shanghai - - opcD8DiffPlaces_d2g0v0_Shanghai - - opcD7DiffPlaces_d32g0v0_Shanghai - - opcD7DiffPlaces_d33g0v0_Shanghai - - opcD7DiffPlaces_d34g0v0_Shanghai - - opcD8DiffPlaces_d17g0v0_Shanghai - - opcD8DiffPlaces_d18g0v0_Shanghai - - opcD8DiffPlaces_d19g0v0_Shanghai - - opcD8DiffPlaces_d3g0v0_Shanghai - - opcD8DiffPlaces_d21g0v0_Shanghai - - opcD9DiffPlaces_d0g0v0_Shanghai - - opcD8DiffPlaces_d4g0v0_Shanghai - - opcD8DiffPlaces_d20g0v0_Shanghai - - opcD8DiffPlaces_d22g0v0_Shanghai - - opcD8DiffPlaces_d5g0v0_Shanghai - - opcD8DiffPlaces_d23g0v0_Shanghai - - opcD8DiffPlaces_d6g0v0_Shanghai - - opcD8DiffPlaces_d7g0v0_Shanghai - - opcD8DiffPlaces_d8g0v0_Shanghai - - opcD8DiffPlaces_d24g0v0_Shanghai - - opcD8DiffPlaces_d9g0v0_Shanghai - - opcD8DiffPlaces_d25g0v0_Shanghai - - opcD9DiffPlaces_d1g0v0_Shanghai - - opcD9DiffPlaces_d10g0v0_Shanghai - - opcD8DiffPlaces_d26g0v0_Shanghai - - opcD9DiffPlaces_d11g0v0_Shanghai - - opcD9DiffPlaces_d12g0v0_Shanghai - - opcD8DiffPlaces_d27g0v0_Shanghai - - opcD9DiffPlaces_d13g0v0_Shanghai - - opcD8DiffPlaces_d28g0v0_Shanghai - - opcD9DiffPlaces_d14g0v0_Shanghai - - opcD8DiffPlaces_d29g0v0_Shanghai - - opcD9DiffPlaces_d15g0v0_Shanghai - - opcD8DiffPlaces_d30g0v0_Shanghai - - opcD9DiffPlaces_d16g0v0_Shanghai - - opcD8DiffPlaces_d31g0v0_Shanghai - - opcD9DiffPlaces_d2g0v0_Shanghai - - opcD8DiffPlaces_d32g0v0_Shanghai - - opcD8DiffPlaces_d33g0v0_Shanghai - - opcD8DiffPlaces_d34g0v0_Shanghai - - opcD9DiffPlaces_d17g0v0_Shanghai - - opcD9DiffPlaces_d18g0v0_Shanghai - - opcD9DiffPlaces_d19g0v0_Shanghai - - opcD9DiffPlaces_d3g0v0_Shanghai - - opcD9DiffPlaces_d21g0v0_Shanghai - - opcDADiffPlaces_d0g0v0_Shanghai - - opcD9DiffPlaces_d4g0v0_Shanghai - - opcD9DiffPlaces_d20g0v0_Shanghai - - opcD9DiffPlaces_d22g0v0_Shanghai - - opcD9DiffPlaces_d5g0v0_Shanghai - - opcD9DiffPlaces_d23g0v0_Shanghai - - opcD9DiffPlaces_d6g0v0_Shanghai - - opcD9DiffPlaces_d7g0v0_Shanghai - - opcD9DiffPlaces_d8g0v0_Shanghai - - opcD9DiffPlaces_d9g0v0_Shanghai - - opcD9DiffPlaces_d24g0v0_Shanghai - - opcD9DiffPlaces_d25g0v0_Shanghai - - opcDADiffPlaces_d1g0v0_Shanghai - - opcDADiffPlaces_d10g0v0_Shanghai - - opcDADiffPlaces_d11g0v0_Shanghai - - opcD9DiffPlaces_d26g0v0_Shanghai - - opcDADiffPlaces_d12g0v0_Shanghai - - opcD9DiffPlaces_d27g0v0_Shanghai - - opcDADiffPlaces_d13g0v0_Shanghai - - opcD9DiffPlaces_d28g0v0_Shanghai - - opcDADiffPlaces_d14g0v0_Shanghai - - opcD9DiffPlaces_d29g0v0_Shanghai - - opcDADiffPlaces_d15g0v0_Shanghai - - opcD9DiffPlaces_d30g0v0_Shanghai - - opcDADiffPlaces_d16g0v0_Shanghai - - opcD9DiffPlaces_d31g0v0_Shanghai - - opcD9DiffPlaces_d32g0v0_Shanghai - - opcDADiffPlaces_d2g0v0_Shanghai - - opcD9DiffPlaces_d33g0v0_Shanghai - - opcD9DiffPlaces_d34g0v0_Shanghai - - opcDADiffPlaces_d17g0v0_Shanghai - - opcDADiffPlaces_d18g0v0_Shanghai - - opcDADiffPlaces_d19g0v0_Shanghai - - opcDADiffPlaces_d3g0v0_Shanghai - - opcDADiffPlaces_d21g0v0_Shanghai - - opcDBDiffPlaces_d0g0v0_Shanghai - - opcDADiffPlaces_d20g0v0_Shanghai - - opcDADiffPlaces_d4g0v0_Shanghai - - opcDADiffPlaces_d22g0v0_Shanghai - - opcDADiffPlaces_d5g0v0_Shanghai - - opcDADiffPlaces_d23g0v0_Shanghai - - opcDADiffPlaces_d6g0v0_Shanghai - - opcDADiffPlaces_d7g0v0_Shanghai - - opcDADiffPlaces_d8g0v0_Shanghai - - opcDADiffPlaces_d9g0v0_Shanghai - - opcDADiffPlaces_d24g0v0_Shanghai - - opcDADiffPlaces_d25g0v0_Shanghai - - opcDBDiffPlaces_d1g0v0_Shanghai - - opcDBDiffPlaces_d10g0v0_Shanghai - - opcDADiffPlaces_d26g0v0_Shanghai - - opcDBDiffPlaces_d11g0v0_Shanghai - - opcDBDiffPlaces_d12g0v0_Shanghai - - opcDBDiffPlaces_d13g0v0_Shanghai - - opcDADiffPlaces_d27g0v0_Shanghai - - opcDADiffPlaces_d28g0v0_Shanghai - - opcDBDiffPlaces_d14g0v0_Shanghai - - opcDADiffPlaces_d29g0v0_Shanghai - - opcDBDiffPlaces_d15g0v0_Shanghai - - opcDADiffPlaces_d30g0v0_Shanghai - - opcDADiffPlaces_d31g0v0_Shanghai - - opcDBDiffPlaces_d16g0v0_Shanghai - - opcDBDiffPlaces_d2g0v0_Shanghai - - opcDADiffPlaces_d32g0v0_Shanghai - - opcDADiffPlaces_d33g0v0_Shanghai - - opcDADiffPlaces_d34g0v0_Shanghai - - opcDBDiffPlaces_d17g0v0_Shanghai - - opcDBDiffPlaces_d18g0v0_Shanghai - - opcDBDiffPlaces_d19g0v0_Shanghai - - opcDBDiffPlaces_d3g0v0_Shanghai - - opcDBDiffPlaces_d21g0v0_Shanghai - - opcDCDiffPlaces_d0g0v0_Shanghai - - opcDBDiffPlaces_d20g0v0_Shanghai - - opcDBDiffPlaces_d4g0v0_Shanghai - - opcDBDiffPlaces_d22g0v0_Shanghai - - opcDBDiffPlaces_d5g0v0_Shanghai - - opcDBDiffPlaces_d23g0v0_Shanghai - - opcDBDiffPlaces_d6g0v0_Shanghai - - opcDBDiffPlaces_d7g0v0_Shanghai - - opcDBDiffPlaces_d8g0v0_Shanghai - - opcDBDiffPlaces_d24g0v0_Shanghai - - opcDBDiffPlaces_d9g0v0_Shanghai - - opcDBDiffPlaces_d25g0v0_Shanghai - - opcDCDiffPlaces_d1g0v0_Shanghai - - opcDCDiffPlaces_d10g0v0_Shanghai - - opcDCDiffPlaces_d11g0v0_Shanghai - - opcDBDiffPlaces_d26g0v0_Shanghai - - opcDCDiffPlaces_d12g0v0_Shanghai - - opcDBDiffPlaces_d27g0v0_Shanghai - - opcDCDiffPlaces_d13g0v0_Shanghai - - opcDBDiffPlaces_d28g0v0_Shanghai - - opcDCDiffPlaces_d14g0v0_Shanghai - - opcDBDiffPlaces_d29g0v0_Shanghai - - opcDCDiffPlaces_d15g0v0_Shanghai - - opcDBDiffPlaces_d31g0v0_Shanghai - - opcDBDiffPlaces_d30g0v0_Shanghai - - opcDCDiffPlaces_d16g0v0_Shanghai - - opcDBDiffPlaces_d32g0v0_Shanghai - - opcDCDiffPlaces_d2g0v0_Shanghai - - opcDBDiffPlaces_d33g0v0_Shanghai - - opcDBDiffPlaces_d34g0v0_Shanghai - - opcDCDiffPlaces_d17g0v0_Shanghai - - opcDCDiffPlaces_d18g0v0_Shanghai - - opcDCDiffPlaces_d19g0v0_Shanghai - - opcDCDiffPlaces_d3g0v0_Shanghai - - opcDCDiffPlaces_d21g0v0_Shanghai - - opcDDDiffPlaces_d0g0v0_Shanghai - - opcDCDiffPlaces_d4g0v0_Shanghai - - opcDCDiffPlaces_d20g0v0_Shanghai - - opcDCDiffPlaces_d22g0v0_Shanghai - - opcDCDiffPlaces_d5g0v0_Shanghai - - opcDCDiffPlaces_d23g0v0_Shanghai - - opcDCDiffPlaces_d6g0v0_Shanghai - - opcDCDiffPlaces_d7g0v0_Shanghai - - opcDCDiffPlaces_d8g0v0_Shanghai - - opcDCDiffPlaces_d9g0v0_Shanghai - - opcDCDiffPlaces_d24g0v0_Shanghai - - opcDCDiffPlaces_d25g0v0_Shanghai - - opcDDDiffPlaces_d1g0v0_Shanghai - - opcDDDiffPlaces_d10g0v0_Shanghai - - opcDDDiffPlaces_d11g0v0_Shanghai - - opcDCDiffPlaces_d26g0v0_Shanghai - - opcDDDiffPlaces_d12g0v0_Shanghai - - opcDCDiffPlaces_d27g0v0_Shanghai - - opcDDDiffPlaces_d13g0v0_Shanghai - - opcDCDiffPlaces_d28g0v0_Shanghai - - opcDDDiffPlaces_d14g0v0_Shanghai - - opcDCDiffPlaces_d29g0v0_Shanghai - - opcDDDiffPlaces_d15g0v0_Shanghai - - opcDCDiffPlaces_d30g0v0_Shanghai - - opcDDDiffPlaces_d16g0v0_Shanghai - - opcDCDiffPlaces_d31g0v0_Shanghai - - opcDDDiffPlaces_d2g0v0_Shanghai - - opcDCDiffPlaces_d32g0v0_Shanghai - - opcDCDiffPlaces_d33g0v0_Shanghai - - opcDCDiffPlaces_d34g0v0_Shanghai - - opcDDDiffPlaces_d17g0v0_Shanghai - - opcDDDiffPlaces_d18g0v0_Shanghai - - opcDDDiffPlaces_d19g0v0_Shanghai - - opcDDDiffPlaces_d3g0v0_Shanghai - - opcDEDiffPlaces_d0g0v0_Shanghai - - opcDDDiffPlaces_d21g0v0_Shanghai - - opcDDDiffPlaces_d4g0v0_Shanghai - - opcDDDiffPlaces_d20g0v0_Shanghai - - opcDDDiffPlaces_d22g0v0_Shanghai - - opcDDDiffPlaces_d5g0v0_Shanghai - - opcDDDiffPlaces_d23g0v0_Shanghai - - opcDDDiffPlaces_d6g0v0_Shanghai - - opcDDDiffPlaces_d7g0v0_Shanghai - - opcDDDiffPlaces_d8g0v0_Shanghai - - opcDDDiffPlaces_d24g0v0_Shanghai - - opcDDDiffPlaces_d9g0v0_Shanghai - - opcDDDiffPlaces_d25g0v0_Shanghai - - opcDEDiffPlaces_d1g0v0_Shanghai - - opcDEDiffPlaces_d10g0v0_Shanghai - - opcDEDiffPlaces_d11g0v0_Shanghai - - opcDDDiffPlaces_d26g0v0_Shanghai - - opcDEDiffPlaces_d12g0v0_Shanghai - - opcDDDiffPlaces_d27g0v0_Shanghai - - opcDEDiffPlaces_d13g0v0_Shanghai - - opcDDDiffPlaces_d28g0v0_Shanghai - - opcDEDiffPlaces_d14g0v0_Shanghai - - opcDDDiffPlaces_d29g0v0_Shanghai - - opcDEDiffPlaces_d15g0v0_Shanghai - - opcDDDiffPlaces_d30g0v0_Shanghai - - opcDEDiffPlaces_d16g0v0_Shanghai - - opcDDDiffPlaces_d31g0v0_Shanghai - - opcDEDiffPlaces_d2g0v0_Shanghai - - opcDDDiffPlaces_d32g0v0_Shanghai - - opcDDDiffPlaces_d33g0v0_Shanghai - - opcDDDiffPlaces_d34g0v0_Shanghai - - opcDEDiffPlaces_d17g0v0_Shanghai - - opcDEDiffPlaces_d18g0v0_Shanghai - - opcDEDiffPlaces_d19g0v0_Shanghai - - opcDEDiffPlaces_d3g0v0_Shanghai - - opcDEDiffPlaces_d21g0v0_Shanghai - - opcDFDiffPlaces_d0g0v0_Shanghai - - opcDEDiffPlaces_d20g0v0_Shanghai - - opcDEDiffPlaces_d4g0v0_Shanghai - - opcDEDiffPlaces_d22g0v0_Shanghai - - opcDEDiffPlaces_d5g0v0_Shanghai - - opcDEDiffPlaces_d23g0v0_Shanghai - - opcDEDiffPlaces_d6g0v0_Shanghai - - opcDEDiffPlaces_d7g0v0_Shanghai - - opcDEDiffPlaces_d8g0v0_Shanghai - - opcDEDiffPlaces_d24g0v0_Shanghai - - opcDEDiffPlaces_d9g0v0_Shanghai - - opcDEDiffPlaces_d25g0v0_Shanghai - - opcDFDiffPlaces_d1g0v0_Shanghai - - opcDFDiffPlaces_d10g0v0_Shanghai - - opcDFDiffPlaces_d11g0v0_Shanghai - - opcDEDiffPlaces_d26g0v0_Shanghai - - opcDFDiffPlaces_d12g0v0_Shanghai - - opcDEDiffPlaces_d27g0v0_Shanghai - - opcDFDiffPlaces_d13g0v0_Shanghai - - opcDEDiffPlaces_d28g0v0_Shanghai - - opcDFDiffPlaces_d14g0v0_Shanghai - - opcDEDiffPlaces_d29g0v0_Shanghai - - opcDFDiffPlaces_d15g0v0_Shanghai - - opcDEDiffPlaces_d30g0v0_Shanghai - - opcDFDiffPlaces_d16g0v0_Shanghai - - opcDEDiffPlaces_d31g0v0_Shanghai - - opcDEDiffPlaces_d32g0v0_Shanghai - - opcDFDiffPlaces_d2g0v0_Shanghai - - opcDEDiffPlaces_d33g0v0_Shanghai - - opcDEDiffPlaces_d34g0v0_Shanghai - - opcDFDiffPlaces_d17g0v0_Shanghai - - opcDFDiffPlaces_d18g0v0_Shanghai - - opcDFDiffPlaces_d19g0v0_Shanghai - - opcDFDiffPlaces_d3g0v0_Shanghai - - opcDFDiffPlaces_d21g0v0_Shanghai - - opcE0DiffPlaces_d0g0v0_Shanghai - - opcDFDiffPlaces_d4g0v0_Shanghai - - opcDFDiffPlaces_d20g0v0_Shanghai - - opcDFDiffPlaces_d22g0v0_Shanghai - - opcDFDiffPlaces_d5g0v0_Shanghai - - opcDFDiffPlaces_d23g0v0_Shanghai - - opcDFDiffPlaces_d6g0v0_Shanghai - - opcDFDiffPlaces_d7g0v0_Shanghai - - opcDFDiffPlaces_d8g0v0_Shanghai - - opcDFDiffPlaces_d9g0v0_Shanghai - - opcDFDiffPlaces_d24g0v0_Shanghai - - opcDFDiffPlaces_d25g0v0_Shanghai - - opcE0DiffPlaces_d1g0v0_Shanghai - - opcE0DiffPlaces_d10g0v0_Shanghai - - opcE0DiffPlaces_d11g0v0_Shanghai - - opcDFDiffPlaces_d26g0v0_Shanghai - - opcE0DiffPlaces_d12g0v0_Shanghai - - opcDFDiffPlaces_d27g0v0_Shanghai - - opcE0DiffPlaces_d13g0v0_Shanghai - - opcDFDiffPlaces_d28g0v0_Shanghai - - opcE0DiffPlaces_d14g0v0_Shanghai - - opcDFDiffPlaces_d29g0v0_Shanghai - - opcE0DiffPlaces_d15g0v0_Shanghai - - opcE0DiffPlaces_d16g0v0_Shanghai - - opcDFDiffPlaces_d30g0v0_Shanghai - - opcDFDiffPlaces_d31g0v0_Shanghai - - opcE0DiffPlaces_d2g0v0_Shanghai - - opcDFDiffPlaces_d32g0v0_Shanghai - - opcDFDiffPlaces_d33g0v0_Shanghai - - opcDFDiffPlaces_d34g0v0_Shanghai - - opcE0DiffPlaces_d17g0v0_Shanghai - - opcE0DiffPlaces_d18g0v0_Shanghai - - opcE0DiffPlaces_d19g0v0_Shanghai - - opcE0DiffPlaces_d3g0v0_Shanghai - - opcE0DiffPlaces_d21g0v0_Shanghai - - opcE1DiffPlaces_d0g0v0_Shanghai - - opcE0DiffPlaces_d4g0v0_Shanghai - - opcE0DiffPlaces_d20g0v0_Shanghai - - opcE0DiffPlaces_d22g0v0_Shanghai - - opcE0DiffPlaces_d5g0v0_Shanghai - - opcE0DiffPlaces_d23g0v0_Shanghai - - opcE0DiffPlaces_d6g0v0_Shanghai - - opcE0DiffPlaces_d7g0v0_Shanghai - - opcE0DiffPlaces_d8g0v0_Shanghai - - opcE0DiffPlaces_d24g0v0_Shanghai - - opcE0DiffPlaces_d9g0v0_Shanghai - - opcE0DiffPlaces_d25g0v0_Shanghai - - opcE1DiffPlaces_d1g0v0_Shanghai - - opcE1DiffPlaces_d10g0v0_Shanghai - - opcE0DiffPlaces_d26g0v0_Shanghai - - opcE1DiffPlaces_d11g0v0_Shanghai - - opcE1DiffPlaces_d12g0v0_Shanghai - - opcE0DiffPlaces_d27g0v0_Shanghai - - opcE1DiffPlaces_d13g0v0_Shanghai - - opcE0DiffPlaces_d28g0v0_Shanghai - - opcE1DiffPlaces_d14g0v0_Shanghai - - opcE0DiffPlaces_d29g0v0_Shanghai - - opcE1DiffPlaces_d15g0v0_Shanghai - - opcE0DiffPlaces_d30g0v0_Shanghai - - opcE0DiffPlaces_d31g0v0_Shanghai - - opcE1DiffPlaces_d16g0v0_Shanghai - - opcE0DiffPlaces_d32g0v0_Shanghai - - opcE1DiffPlaces_d2g0v0_Shanghai - - opcE0DiffPlaces_d33g0v0_Shanghai - - opcE0DiffPlaces_d34g0v0_Shanghai - - opcE1DiffPlaces_d17g0v0_Shanghai - - opcE1DiffPlaces_d18g0v0_Shanghai - - opcE1DiffPlaces_d19g0v0_Shanghai - - opcE1DiffPlaces_d3g0v0_Shanghai - - opcE1DiffPlaces_d21g0v0_Shanghai - - opcE2DiffPlaces_d0g0v0_Shanghai - - opcE1DiffPlaces_d4g0v0_Shanghai - - opcE1DiffPlaces_d20g0v0_Shanghai - - opcE1DiffPlaces_d22g0v0_Shanghai - - opcE1DiffPlaces_d5g0v0_Shanghai - - opcE1DiffPlaces_d23g0v0_Shanghai - - opcE1DiffPlaces_d6g0v0_Shanghai - - opcE1DiffPlaces_d7g0v0_Shanghai - - opcE1DiffPlaces_d8g0v0_Shanghai - - opcE1DiffPlaces_d9g0v0_Shanghai - - opcE1DiffPlaces_d24g0v0_Shanghai - - opcE1DiffPlaces_d25g0v0_Shanghai - - opcE2DiffPlaces_d1g0v0_Shanghai - - opcE2DiffPlaces_d10g0v0_Shanghai - - opcE2DiffPlaces_d11g0v0_Shanghai - - opcE1DiffPlaces_d26g0v0_Shanghai - - opcE2DiffPlaces_d12g0v0_Shanghai - - opcE1DiffPlaces_d27g0v0_Shanghai - - opcE2DiffPlaces_d13g0v0_Shanghai - - opcE1DiffPlaces_d28g0v0_Shanghai - - opcE2DiffPlaces_d14g0v0_Shanghai - - opcE1DiffPlaces_d29g0v0_Shanghai - - opcE2DiffPlaces_d15g0v0_Shanghai - - opcE1DiffPlaces_d30g0v0_Shanghai - - opcE1DiffPlaces_d31g0v0_Shanghai - - opcE2DiffPlaces_d16g0v0_Shanghai - - opcE2DiffPlaces_d2g0v0_Shanghai - - opcE1DiffPlaces_d32g0v0_Shanghai - - opcE1DiffPlaces_d33g0v0_Shanghai - - opcE1DiffPlaces_d34g0v0_Shanghai - - opcE2DiffPlaces_d17g0v0_Shanghai - - opcE2DiffPlaces_d18g0v0_Shanghai - - opcE2DiffPlaces_d19g0v0_Shanghai - - opcE2DiffPlaces_d3g0v0_Shanghai - - opcE2DiffPlaces_d21g0v0_Shanghai - - opcE3DiffPlaces_d0g0v0_Shanghai - - opcE2DiffPlaces_d4g0v0_Shanghai - - opcE2DiffPlaces_d20g0v0_Shanghai - - opcE2DiffPlaces_d22g0v0_Shanghai - - opcE2DiffPlaces_d5g0v0_Shanghai - - opcE2DiffPlaces_d23g0v0_Shanghai - - opcE2DiffPlaces_d6g0v0_Shanghai - - opcE2DiffPlaces_d7g0v0_Shanghai - - opcE2DiffPlaces_d8g0v0_Shanghai - - opcE2DiffPlaces_d24g0v0_Shanghai - - opcE2DiffPlaces_d9g0v0_Shanghai - - opcE3DiffPlaces_d1g0v0_Shanghai - - opcE2DiffPlaces_d25g0v0_Shanghai - - opcE3DiffPlaces_d10g0v0_Shanghai - - opcE2DiffPlaces_d26g0v0_Shanghai - - opcE3DiffPlaces_d11g0v0_Shanghai - - opcE3DiffPlaces_d12g0v0_Shanghai - - opcE2DiffPlaces_d27g0v0_Shanghai - - opcE3DiffPlaces_d13g0v0_Shanghai - - opcE2DiffPlaces_d28g0v0_Shanghai - - opcE3DiffPlaces_d14g0v0_Shanghai - - opcE2DiffPlaces_d29g0v0_Shanghai - - opcE3DiffPlaces_d15g0v0_Shanghai - - opcE3DiffPlaces_d16g0v0_Shanghai - - opcE2DiffPlaces_d30g0v0_Shanghai - - opcE2DiffPlaces_d31g0v0_Shanghai - - opcE2DiffPlaces_d32g0v0_Shanghai - - opcE3DiffPlaces_d2g0v0_Shanghai - - opcE2DiffPlaces_d33g0v0_Shanghai - - opcE2DiffPlaces_d34g0v0_Shanghai - - opcE3DiffPlaces_d17g0v0_Shanghai - - opcE3DiffPlaces_d18g0v0_Shanghai - - opcE3DiffPlaces_d19g0v0_Shanghai - - opcE3DiffPlaces_d3g0v0_Shanghai - - opcE4DiffPlaces_d0g0v0_Shanghai - - opcE3DiffPlaces_d21g0v0_Shanghai - - opcE3DiffPlaces_d20g0v0_Shanghai - - opcE3DiffPlaces_d4g0v0_Shanghai - - opcE3DiffPlaces_d22g0v0_Shanghai - - opcE3DiffPlaces_d5g0v0_Shanghai - - opcE3DiffPlaces_d23g0v0_Shanghai - - opcE3DiffPlaces_d6g0v0_Shanghai - - opcE3DiffPlaces_d7g0v0_Shanghai - - opcE3DiffPlaces_d8g0v0_Shanghai - - opcE3DiffPlaces_d9g0v0_Shanghai - - opcE3DiffPlaces_d24g0v0_Shanghai - - opcE3DiffPlaces_d25g0v0_Shanghai - - opcE4DiffPlaces_d1g0v0_Shanghai - - opcE4DiffPlaces_d10g0v0_Shanghai - - opcE4DiffPlaces_d11g0v0_Shanghai - - opcE3DiffPlaces_d26g0v0_Shanghai - - opcE4DiffPlaces_d12g0v0_Shanghai - - opcE3DiffPlaces_d27g0v0_Shanghai - - opcE4DiffPlaces_d13g0v0_Shanghai - - opcE3DiffPlaces_d28g0v0_Shanghai - - opcE4DiffPlaces_d14g0v0_Shanghai - - opcE3DiffPlaces_d29g0v0_Shanghai - - opcE4DiffPlaces_d15g0v0_Shanghai - - opcE3DiffPlaces_d30g0v0_Shanghai - - opcE4DiffPlaces_d16g0v0_Shanghai - - opcE3DiffPlaces_d31g0v0_Shanghai - - opcE4DiffPlaces_d2g0v0_Shanghai - - opcE3DiffPlaces_d32g0v0_Shanghai - - opcE3DiffPlaces_d33g0v0_Shanghai - - opcE3DiffPlaces_d34g0v0_Shanghai - - opcE4DiffPlaces_d17g0v0_Shanghai - - opcE4DiffPlaces_d18g0v0_Shanghai - - opcE4DiffPlaces_d19g0v0_Shanghai - - opcE4DiffPlaces_d3g0v0_Shanghai - - opcE4DiffPlaces_d21g0v0_Shanghai - - opcE5DiffPlaces_d0g0v0_Shanghai - - opcE4DiffPlaces_d20g0v0_Shanghai - - opcE4DiffPlaces_d4g0v0_Shanghai - - opcE4DiffPlaces_d22g0v0_Shanghai - - opcE4DiffPlaces_d23g0v0_Shanghai - - opcE4DiffPlaces_d5g0v0_Shanghai - - opcE4DiffPlaces_d6g0v0_Shanghai - - opcE4DiffPlaces_d7g0v0_Shanghai - - opcE4DiffPlaces_d8g0v0_Shanghai - - opcE4DiffPlaces_d24g0v0_Shanghai - - opcE4DiffPlaces_d9g0v0_Shanghai - - opcE4DiffPlaces_d25g0v0_Shanghai - - opcE5DiffPlaces_d1g0v0_Shanghai - - opcE5DiffPlaces_d10g0v0_Shanghai - - opcE5DiffPlaces_d11g0v0_Shanghai - - opcE4DiffPlaces_d26g0v0_Shanghai - - opcE5DiffPlaces_d12g0v0_Shanghai - - opcE4DiffPlaces_d27g0v0_Shanghai - - opcE5DiffPlaces_d13g0v0_Shanghai - - opcE4DiffPlaces_d28g0v0_Shanghai - - opcE5DiffPlaces_d14g0v0_Shanghai - - opcE4DiffPlaces_d29g0v0_Shanghai - - opcE5DiffPlaces_d15g0v0_Shanghai - - opcE5DiffPlaces_d16g0v0_Shanghai - - opcE4DiffPlaces_d31g0v0_Shanghai - - opcE4DiffPlaces_d30g0v0_Shanghai - - opcE4DiffPlaces_d32g0v0_Shanghai - - opcE5DiffPlaces_d2g0v0_Shanghai - - opcE4DiffPlaces_d33g0v0_Shanghai - - opcE4DiffPlaces_d34g0v0_Shanghai - - opcE5DiffPlaces_d17g0v0_Shanghai - - opcE5DiffPlaces_d18g0v0_Shanghai - - opcE5DiffPlaces_d19g0v0_Shanghai - - opcE5DiffPlaces_d3g0v0_Shanghai - - opcE6DiffPlaces_d0g0v0_Shanghai - - opcE5DiffPlaces_d21g0v0_Shanghai - - opcE5DiffPlaces_d4g0v0_Shanghai - - opcE5DiffPlaces_d20g0v0_Shanghai - - opcE5DiffPlaces_d22g0v0_Shanghai - - opcE5DiffPlaces_d5g0v0_Shanghai - - opcE5DiffPlaces_d23g0v0_Shanghai - - opcE5DiffPlaces_d6g0v0_Shanghai - - opcE5DiffPlaces_d7g0v0_Shanghai - - opcE5DiffPlaces_d8g0v0_Shanghai - - opcE5DiffPlaces_d24g0v0_Shanghai - - opcE5DiffPlaces_d9g0v0_Shanghai - - opcE5DiffPlaces_d25g0v0_Shanghai - - opcE6DiffPlaces_d1g0v0_Shanghai - - opcE6DiffPlaces_d10g0v0_Shanghai - - opcE6DiffPlaces_d11g0v0_Shanghai - - opcE5DiffPlaces_d26g0v0_Shanghai - - opcE6DiffPlaces_d12g0v0_Shanghai - - opcE6DiffPlaces_d13g0v0_Shanghai - - opcE5DiffPlaces_d27g0v0_Shanghai - - opcE5DiffPlaces_d28g0v0_Shanghai - - opcE6DiffPlaces_d14g0v0_Shanghai - - opcE5DiffPlaces_d29g0v0_Shanghai - - opcE6DiffPlaces_d15g0v0_Shanghai - - opcE5DiffPlaces_d30g0v0_Shanghai - - opcE6DiffPlaces_d16g0v0_Shanghai - - opcE5DiffPlaces_d31g0v0_Shanghai - - opcE6DiffPlaces_d2g0v0_Shanghai - - opcE5DiffPlaces_d32g0v0_Shanghai - - opcE5DiffPlaces_d33g0v0_Shanghai - - opcE5DiffPlaces_d34g0v0_Shanghai - - opcE6DiffPlaces_d17g0v0_Shanghai - - opcE6DiffPlaces_d18g0v0_Shanghai - - opcE6DiffPlaces_d19g0v0_Shanghai - - opcE6DiffPlaces_d3g0v0_Shanghai - - opcE6DiffPlaces_d21g0v0_Shanghai - - opcE7DiffPlaces_d0g0v0_Shanghai - - opcE6DiffPlaces_d20g0v0_Shanghai - - opcE6DiffPlaces_d4g0v0_Shanghai - - opcE6DiffPlaces_d22g0v0_Shanghai - - opcE6DiffPlaces_d23g0v0_Shanghai - - opcE6DiffPlaces_d5g0v0_Shanghai - - opcE6DiffPlaces_d6g0v0_Shanghai - - opcE6DiffPlaces_d7g0v0_Shanghai - - opcE6DiffPlaces_d8g0v0_Shanghai - - opcE6DiffPlaces_d24g0v0_Shanghai - - opcE6DiffPlaces_d9g0v0_Shanghai - - opcE6DiffPlaces_d25g0v0_Shanghai - - opcE7DiffPlaces_d1g0v0_Shanghai - - opcE7DiffPlaces_d10g0v0_Shanghai - - opcE7DiffPlaces_d11g0v0_Shanghai - - opcE6DiffPlaces_d26g0v0_Shanghai - - opcE7DiffPlaces_d12g0v0_Shanghai - - opcE6DiffPlaces_d27g0v0_Shanghai - - opcE7DiffPlaces_d13g0v0_Shanghai - - opcE6DiffPlaces_d28g0v0_Shanghai - - opcE7DiffPlaces_d14g0v0_Shanghai - - opcE6DiffPlaces_d29g0v0_Shanghai - - opcE7DiffPlaces_d15g0v0_Shanghai - - opcE7DiffPlaces_d16g0v0_Shanghai - - opcE6DiffPlaces_d30g0v0_Shanghai - - opcE6DiffPlaces_d31g0v0_Shanghai - - opcE6DiffPlaces_d32g0v0_Shanghai - - opcE7DiffPlaces_d2g0v0_Shanghai - - opcE6DiffPlaces_d33g0v0_Shanghai - - opcE6DiffPlaces_d34g0v0_Shanghai - - opcE7DiffPlaces_d17g0v0_Shanghai - - opcE7DiffPlaces_d18g0v0_Shanghai - - opcE7DiffPlaces_d19g0v0_Shanghai - - opcE7DiffPlaces_d3g0v0_Shanghai - - opcE7DiffPlaces_d21g0v0_Shanghai - - opcE8DiffPlaces_d0g0v0_Shanghai - - opcE7DiffPlaces_d4g0v0_Shanghai - - opcE7DiffPlaces_d20g0v0_Shanghai - - opcE7DiffPlaces_d22g0v0_Shanghai - - opcE7DiffPlaces_d5g0v0_Shanghai - - opcE7DiffPlaces_d23g0v0_Shanghai - - opcE7DiffPlaces_d6g0v0_Shanghai - - opcE7DiffPlaces_d7g0v0_Shanghai - - opcE7DiffPlaces_d8g0v0_Shanghai - - opcE7DiffPlaces_d24g0v0_Shanghai - - opcE7DiffPlaces_d9g0v0_Shanghai - - opcE8DiffPlaces_d1g0v0_Shanghai - - opcE7DiffPlaces_d25g0v0_Shanghai - - opcE8DiffPlaces_d10g0v0_Shanghai - - opcE8DiffPlaces_d11g0v0_Shanghai - - opcE7DiffPlaces_d26g0v0_Shanghai - - opcE8DiffPlaces_d12g0v0_Shanghai - - opcE7DiffPlaces_d27g0v0_Shanghai - - opcE8DiffPlaces_d13g0v0_Shanghai - - opcE7DiffPlaces_d28g0v0_Shanghai - - opcE8DiffPlaces_d14g0v0_Shanghai - - opcE8DiffPlaces_d15g0v0_Shanghai - - opcE7DiffPlaces_d29g0v0_Shanghai - - opcE7DiffPlaces_d30g0v0_Shanghai - - opcE8DiffPlaces_d16g0v0_Shanghai - - opcE7DiffPlaces_d31g0v0_Shanghai - - opcE8DiffPlaces_d2g0v0_Shanghai - - opcE7DiffPlaces_d32g0v0_Shanghai - - opcE7DiffPlaces_d33g0v0_Shanghai - - opcE7DiffPlaces_d34g0v0_Shanghai - - opcE8DiffPlaces_d17g0v0_Shanghai - - opcE8DiffPlaces_d18g0v0_Shanghai - - opcE8DiffPlaces_d19g0v0_Shanghai - - opcE8DiffPlaces_d3g0v0_Shanghai - - opcE9DiffPlaces_d0g0v0_Shanghai - - opcE8DiffPlaces_d21g0v0_Shanghai - - opcE8DiffPlaces_d20g0v0_Shanghai - - opcE8DiffPlaces_d4g0v0_Shanghai - - opcE8DiffPlaces_d22g0v0_Shanghai - - opcE8DiffPlaces_d5g0v0_Shanghai - - opcE8DiffPlaces_d23g0v0_Shanghai - - opcE8DiffPlaces_d6g0v0_Shanghai - - opcE8DiffPlaces_d7g0v0_Shanghai - - opcE8DiffPlaces_d8g0v0_Shanghai - - opcE8DiffPlaces_d9g0v0_Shanghai - - opcE8DiffPlaces_d24g0v0_Shanghai - - opcE8DiffPlaces_d25g0v0_Shanghai - - opcE9DiffPlaces_d1g0v0_Shanghai - - opcE9DiffPlaces_d10g0v0_Shanghai - - opcE9DiffPlaces_d11g0v0_Shanghai - - opcE8DiffPlaces_d26g0v0_Shanghai - - opcE9DiffPlaces_d12g0v0_Shanghai - - opcE8DiffPlaces_d27g0v0_Shanghai - - opcE9DiffPlaces_d13g0v0_Shanghai - - opcE8DiffPlaces_d28g0v0_Shanghai - - opcE9DiffPlaces_d14g0v0_Shanghai - - opcE8DiffPlaces_d29g0v0_Shanghai - - opcE9DiffPlaces_d15g0v0_Shanghai - - opcE8DiffPlaces_d30g0v0_Shanghai - - opcE9DiffPlaces_d16g0v0_Shanghai - - opcE8DiffPlaces_d31g0v0_Shanghai - - opcE9DiffPlaces_d2g0v0_Shanghai - - opcE8DiffPlaces_d32g0v0_Shanghai - - opcE8DiffPlaces_d33g0v0_Shanghai - - opcE8DiffPlaces_d34g0v0_Shanghai - - opcE9DiffPlaces_d17g0v0_Shanghai - - opcE9DiffPlaces_d18g0v0_Shanghai - - opcE9DiffPlaces_d19g0v0_Shanghai - - opcE9DiffPlaces_d3g0v0_Shanghai - - opcE9DiffPlaces_d21g0v0_Shanghai - - opcEADiffPlaces_d0g0v0_Shanghai - - opcE9DiffPlaces_d4g0v0_Shanghai - - opcE9DiffPlaces_d20g0v0_Shanghai - - opcE9DiffPlaces_d22g0v0_Shanghai - - opcE9DiffPlaces_d5g0v0_Shanghai - - opcE9DiffPlaces_d23g0v0_Shanghai - - opcE9DiffPlaces_d6g0v0_Shanghai - - opcE9DiffPlaces_d7g0v0_Shanghai - - opcE9DiffPlaces_d8g0v0_Shanghai - - opcE9DiffPlaces_d24g0v0_Shanghai - - opcE9DiffPlaces_d9g0v0_Shanghai - - opcE9DiffPlaces_d25g0v0_Shanghai - - opcEADiffPlaces_d1g0v0_Shanghai - - opcEADiffPlaces_d10g0v0_Shanghai - - opcEADiffPlaces_d11g0v0_Shanghai - - opcE9DiffPlaces_d26g0v0_Shanghai - - opcEADiffPlaces_d12g0v0_Shanghai - - opcE9DiffPlaces_d27g0v0_Shanghai - - opcEADiffPlaces_d13g0v0_Shanghai - - opcE9DiffPlaces_d28g0v0_Shanghai - - opcEADiffPlaces_d14g0v0_Shanghai - - opcE9DiffPlaces_d29g0v0_Shanghai - - opcEADiffPlaces_d15g0v0_Shanghai - - opcE9DiffPlaces_d30g0v0_Shanghai - - opcEADiffPlaces_d16g0v0_Shanghai - - opcE9DiffPlaces_d32g0v0_Shanghai - - opcE9DiffPlaces_d31g0v0_Shanghai - - opcEADiffPlaces_d2g0v0_Shanghai - - opcE9DiffPlaces_d33g0v0_Shanghai - - opcE9DiffPlaces_d34g0v0_Shanghai - - opcEADiffPlaces_d17g0v0_Shanghai - - opcEADiffPlaces_d18g0v0_Shanghai - - opcEADiffPlaces_d19g0v0_Shanghai - - opcEADiffPlaces_d3g0v0_Shanghai - - opcEADiffPlaces_d21g0v0_Shanghai - - opcEADiffPlaces_d4g0v0_Shanghai - - opcEBDiffPlaces_d0g0v0_Shanghai - - opcEADiffPlaces_d20g0v0_Shanghai - - opcEADiffPlaces_d22g0v0_Shanghai - - opcEADiffPlaces_d5g0v0_Shanghai - - opcEADiffPlaces_d23g0v0_Shanghai - - opcEADiffPlaces_d6g0v0_Shanghai - - opcEADiffPlaces_d7g0v0_Shanghai - - opcEADiffPlaces_d8g0v0_Shanghai - - opcEADiffPlaces_d24g0v0_Shanghai - - opcEADiffPlaces_d9g0v0_Shanghai - - opcEADiffPlaces_d25g0v0_Shanghai - - opcEBDiffPlaces_d1g0v0_Shanghai - - opcEBDiffPlaces_d10g0v0_Shanghai - - opcEADiffPlaces_d26g0v0_Shanghai - - opcEBDiffPlaces_d11g0v0_Shanghai - - opcEBDiffPlaces_d12g0v0_Shanghai - - opcEADiffPlaces_d27g0v0_Shanghai - - opcEBDiffPlaces_d13g0v0_Shanghai - - opcEADiffPlaces_d28g0v0_Shanghai - - opcEBDiffPlaces_d14g0v0_Shanghai - - opcEADiffPlaces_d29g0v0_Shanghai - - opcEBDiffPlaces_d15g0v0_Shanghai - - opcEADiffPlaces_d30g0v0_Shanghai - - opcEADiffPlaces_d31g0v0_Shanghai - - opcEBDiffPlaces_d16g0v0_Shanghai - - opcEBDiffPlaces_d2g0v0_Shanghai - - opcEADiffPlaces_d32g0v0_Shanghai - - opcEADiffPlaces_d34g0v0_Shanghai - - opcEADiffPlaces_d33g0v0_Shanghai - - opcEBDiffPlaces_d17g0v0_Shanghai - - opcEBDiffPlaces_d18g0v0_Shanghai - - opcEBDiffPlaces_d19g0v0_Shanghai - - opcEBDiffPlaces_d3g0v0_Shanghai - - opcEBDiffPlaces_d21g0v0_Shanghai - - opcECDiffPlaces_d0g0v0_Shanghai - - opcEBDiffPlaces_d4g0v0_Shanghai - - opcEBDiffPlaces_d20g0v0_Shanghai - - opcEBDiffPlaces_d22g0v0_Shanghai - - opcEBDiffPlaces_d5g0v0_Shanghai - - opcEBDiffPlaces_d23g0v0_Shanghai - - opcEBDiffPlaces_d6g0v0_Shanghai - - opcEBDiffPlaces_d7g0v0_Shanghai - - opcEBDiffPlaces_d8g0v0_Shanghai - - opcEBDiffPlaces_d24g0v0_Shanghai - - opcEBDiffPlaces_d9g0v0_Shanghai - - opcEBDiffPlaces_d25g0v0_Shanghai - - opcECDiffPlaces_d1g0v0_Shanghai - - opcECDiffPlaces_d10g0v0_Shanghai - - opcEBDiffPlaces_d26g0v0_Shanghai - - opcECDiffPlaces_d11g0v0_Shanghai - - opcECDiffPlaces_d12g0v0_Shanghai - - opcEBDiffPlaces_d27g0v0_Shanghai - - opcECDiffPlaces_d13g0v0_Shanghai - - opcEBDiffPlaces_d28g0v0_Shanghai - - opcECDiffPlaces_d14g0v0_Shanghai - - opcEBDiffPlaces_d29g0v0_Shanghai - - opcECDiffPlaces_d15g0v0_Shanghai - - opcECDiffPlaces_d16g0v0_Shanghai - - opcEBDiffPlaces_d30g0v0_Shanghai - - opcEBDiffPlaces_d31g0v0_Shanghai - - opcEBDiffPlaces_d32g0v0_Shanghai - - opcECDiffPlaces_d2g0v0_Shanghai - - opcEBDiffPlaces_d33g0v0_Shanghai - - opcEBDiffPlaces_d34g0v0_Shanghai - - opcECDiffPlaces_d17g0v0_Shanghai - - opcECDiffPlaces_d18g0v0_Shanghai - - opcECDiffPlaces_d19g0v0_Shanghai - - opcECDiffPlaces_d3g0v0_Shanghai - - opcECDiffPlaces_d21g0v0_Shanghai - - opcEDDiffPlaces_d0g0v0_Shanghai - - opcECDiffPlaces_d4g0v0_Shanghai - - opcECDiffPlaces_d20g0v0_Shanghai - - opcECDiffPlaces_d22g0v0_Shanghai - - opcECDiffPlaces_d5g0v0_Shanghai - - opcECDiffPlaces_d23g0v0_Shanghai - - opcECDiffPlaces_d6g0v0_Shanghai - - opcECDiffPlaces_d7g0v0_Shanghai - - opcECDiffPlaces_d8g0v0_Shanghai - - opcECDiffPlaces_d24g0v0_Shanghai - - opcECDiffPlaces_d9g0v0_Shanghai - - opcEDDiffPlaces_d1g0v0_Shanghai - - opcECDiffPlaces_d25g0v0_Shanghai - - opcEDDiffPlaces_d10g0v0_Shanghai - - opcEDDiffPlaces_d11g0v0_Shanghai - - opcECDiffPlaces_d26g0v0_Shanghai - - opcEDDiffPlaces_d12g0v0_Shanghai - - opcECDiffPlaces_d27g0v0_Shanghai - - opcEDDiffPlaces_d13g0v0_Shanghai - - opcECDiffPlaces_d28g0v0_Shanghai - - opcEDDiffPlaces_d14g0v0_Shanghai - - opcECDiffPlaces_d29g0v0_Shanghai - - opcEDDiffPlaces_d15g0v0_Shanghai - - opcEDDiffPlaces_d16g0v0_Shanghai - - opcECDiffPlaces_d31g0v0_Shanghai - - opcECDiffPlaces_d30g0v0_Shanghai - - opcEDDiffPlaces_d2g0v0_Shanghai - - opcECDiffPlaces_d32g0v0_Shanghai - - opcECDiffPlaces_d33g0v0_Shanghai - - opcECDiffPlaces_d34g0v0_Shanghai - - opcEDDiffPlaces_d17g0v0_Shanghai - - opcEDDiffPlaces_d18g0v0_Shanghai - - opcEDDiffPlaces_d19g0v0_Shanghai - - opcEDDiffPlaces_d3g0v0_Shanghai - - opcEDDiffPlaces_d21g0v0_Shanghai - - opcEEDiffPlaces_d0g0v0_Shanghai - - opcEDDiffPlaces_d4g0v0_Shanghai - - opcEDDiffPlaces_d20g0v0_Shanghai - - opcEDDiffPlaces_d22g0v0_Shanghai - - opcEDDiffPlaces_d5g0v0_Shanghai - - opcEDDiffPlaces_d23g0v0_Shanghai - - opcEDDiffPlaces_d6g0v0_Shanghai - - opcEDDiffPlaces_d7g0v0_Shanghai - - opcEDDiffPlaces_d8g0v0_Shanghai - - opcEDDiffPlaces_d9g0v0_Shanghai - - opcEDDiffPlaces_d24g0v0_Shanghai - - opcEDDiffPlaces_d25g0v0_Shanghai - - opcEEDiffPlaces_d1g0v0_Shanghai - - opcEEDiffPlaces_d10g0v0_Shanghai - - opcEDDiffPlaces_d26g0v0_Shanghai - - opcEEDiffPlaces_d11g0v0_Shanghai - - opcEEDiffPlaces_d12g0v0_Shanghai - - opcEDDiffPlaces_d27g0v0_Shanghai - - opcEEDiffPlaces_d13g0v0_Shanghai - - opcEDDiffPlaces_d28g0v0_Shanghai - - opcEEDiffPlaces_d14g0v0_Shanghai - - opcEDDiffPlaces_d29g0v0_Shanghai - - opcEEDiffPlaces_d15g0v0_Shanghai - - opcEEDiffPlaces_d16g0v0_Shanghai - - opcEDDiffPlaces_d30g0v0_Shanghai - - opcEDDiffPlaces_d31g0v0_Shanghai - - opcEEDiffPlaces_d2g0v0_Shanghai - - opcEDDiffPlaces_d32g0v0_Shanghai - - opcEDDiffPlaces_d33g0v0_Shanghai - - opcEDDiffPlaces_d34g0v0_Shanghai - - opcEEDiffPlaces_d17g0v0_Shanghai - - opcEEDiffPlaces_d18g0v0_Shanghai - - opcEEDiffPlaces_d3g0v0_Shanghai - - opcEEDiffPlaces_d19g0v0_Shanghai - - opcEEDiffPlaces_d21g0v0_Shanghai - - opcEFDiffPlaces_d0g0v0_Shanghai - - opcEEDiffPlaces_d20g0v0_Shanghai - - opcEEDiffPlaces_d4g0v0_Shanghai - - opcEEDiffPlaces_d22g0v0_Shanghai - - opcEEDiffPlaces_d5g0v0_Shanghai - - opcEEDiffPlaces_d23g0v0_Shanghai - - opcEEDiffPlaces_d6g0v0_Shanghai - - opcEEDiffPlaces_d7g0v0_Shanghai - - opcEEDiffPlaces_d8g0v0_Shanghai - - opcEEDiffPlaces_d24g0v0_Shanghai - - opcEEDiffPlaces_d9g0v0_Shanghai - - opcEFDiffPlaces_d1g0v0_Shanghai - - opcEEDiffPlaces_d25g0v0_Shanghai - - opcEFDiffPlaces_d10g0v0_Shanghai - - opcEFDiffPlaces_d11g0v0_Shanghai - - opcEEDiffPlaces_d26g0v0_Shanghai - - opcEFDiffPlaces_d12g0v0_Shanghai - - opcEEDiffPlaces_d27g0v0_Shanghai - - opcEFDiffPlaces_d13g0v0_Shanghai - - opcEEDiffPlaces_d28g0v0_Shanghai - - opcEFDiffPlaces_d14g0v0_Shanghai - - opcEEDiffPlaces_d29g0v0_Shanghai - - opcEFDiffPlaces_d15g0v0_Shanghai - - opcEFDiffPlaces_d16g0v0_Shanghai - - opcEEDiffPlaces_d30g0v0_Shanghai - - opcEEDiffPlaces_d31g0v0_Shanghai - - opcEFDiffPlaces_d2g0v0_Shanghai - - opcEEDiffPlaces_d32g0v0_Shanghai - - opcEEDiffPlaces_d33g0v0_Shanghai - - opcEEDiffPlaces_d34g0v0_Shanghai - - opcEFDiffPlaces_d17g0v0_Shanghai - - opcEFDiffPlaces_d18g0v0_Shanghai - - opcEFDiffPlaces_d19g0v0_Shanghai - - opcEFDiffPlaces_d3g0v0_Shanghai - - opcEFDiffPlaces_d21g0v0_Shanghai - - opcF6DiffPlaces_d0g0v0_Shanghai - - opcEFDiffPlaces_d4g0v0_Shanghai - - opcEFDiffPlaces_d20g0v0_Shanghai - - opcEFDiffPlaces_d22g0v0_Shanghai - - opcEFDiffPlaces_d23g0v0_Shanghai - - opcEFDiffPlaces_d5g0v0_Shanghai - - opcEFDiffPlaces_d6g0v0_Shanghai - - opcEFDiffPlaces_d7g0v0_Shanghai - - opcEFDiffPlaces_d8g0v0_Shanghai - - opcEFDiffPlaces_d24g0v0_Shanghai - - opcEFDiffPlaces_d9g0v0_Shanghai - - opcF6DiffPlaces_d1g0v0_Shanghai - - opcEFDiffPlaces_d25g0v0_Shanghai - - opcF6DiffPlaces_d10g0v0_Shanghai - - opcF6DiffPlaces_d11g0v0_Shanghai - - opcEFDiffPlaces_d26g0v0_Shanghai - - opcF6DiffPlaces_d12g0v0_Shanghai - - opcF6DiffPlaces_d13g0v0_Shanghai - - opcEFDiffPlaces_d27g0v0_Shanghai - - opcEFDiffPlaces_d28g0v0_Shanghai - - opcF6DiffPlaces_d14g0v0_Shanghai - - opcF6DiffPlaces_d15g0v0_Shanghai - - opcEFDiffPlaces_d29g0v0_Shanghai - - opcF6DiffPlaces_d16g0v0_Shanghai - - opcEFDiffPlaces_d30g0v0_Shanghai - - opcEFDiffPlaces_d31g0v0_Shanghai - - opcF6DiffPlaces_d2g0v0_Shanghai - - opcEFDiffPlaces_d32g0v0_Shanghai - - opcEFDiffPlaces_d33g0v0_Shanghai - - opcEFDiffPlaces_d34g0v0_Shanghai - - opcF6DiffPlaces_d17g0v0_Shanghai - - opcF6DiffPlaces_d18g0v0_Shanghai - - opcF6DiffPlaces_d19g0v0_Shanghai - - opcF6DiffPlaces_d3g0v0_Shanghai - - opcF7DiffPlaces_d0g0v0_Shanghai - - opcF6DiffPlaces_d21g0v0_Shanghai - - opcF6DiffPlaces_d20g0v0_Shanghai - - opcF6DiffPlaces_d4g0v0_Shanghai - - opcF6DiffPlaces_d22g0v0_Shanghai - - opcF6DiffPlaces_d5g0v0_Shanghai - - opcF6DiffPlaces_d23g0v0_Shanghai - - opcF6DiffPlaces_d6g0v0_Shanghai - - opcF6DiffPlaces_d7g0v0_Shanghai - - opcF6DiffPlaces_d8g0v0_Shanghai - - opcF6DiffPlaces_d24g0v0_Shanghai - - opcF6DiffPlaces_d9g0v0_Shanghai - - opcF6DiffPlaces_d25g0v0_Shanghai - - opcF7DiffPlaces_d1g0v0_Shanghai - - opcF7DiffPlaces_d10g0v0_Shanghai - - opcF7DiffPlaces_d11g0v0_Shanghai - - opcF6DiffPlaces_d26g0v0_Shanghai - - opcF7DiffPlaces_d12g0v0_Shanghai - - opcF6DiffPlaces_d27g0v0_Shanghai - - opcF7DiffPlaces_d13g0v0_Shanghai - - opcF6DiffPlaces_d28g0v0_Shanghai - - opcF7DiffPlaces_d14g0v0_Shanghai - - opcF6DiffPlaces_d29g0v0_Shanghai - - opcF7DiffPlaces_d15g0v0_Shanghai - - opcF6DiffPlaces_d30g0v0_Shanghai - - opcF6DiffPlaces_d31g0v0_Shanghai - - opcF7DiffPlaces_d16g0v0_Shanghai - - opcF7DiffPlaces_d2g0v0_Shanghai - - opcF6DiffPlaces_d32g0v0_Shanghai - - opcF6DiffPlaces_d33g0v0_Shanghai - - opcF6DiffPlaces_d34g0v0_Shanghai - - opcF7DiffPlaces_d17g0v0_Shanghai - - opcF7DiffPlaces_d18g0v0_Shanghai - - opcF7DiffPlaces_d19g0v0_Shanghai - - opcF7DiffPlaces_d3g0v0_Shanghai - - opcF7DiffPlaces_d21g0v0_Shanghai - - opcF8DiffPlaces_d0g0v0_Shanghai - - opcF7DiffPlaces_d20g0v0_Shanghai - - opcF7DiffPlaces_d4g0v0_Shanghai - - opcF7DiffPlaces_d22g0v0_Shanghai - - opcF7DiffPlaces_d5g0v0_Shanghai - - opcF7DiffPlaces_d23g0v0_Shanghai - - opcF7DiffPlaces_d6g0v0_Shanghai - - opcF7DiffPlaces_d7g0v0_Shanghai - - opcF7DiffPlaces_d8g0v0_Shanghai - - opcF7DiffPlaces_d24g0v0_Shanghai - - opcF7DiffPlaces_d9g0v0_Shanghai - - opcF7DiffPlaces_d25g0v0_Shanghai - - opcF8DiffPlaces_d1g0v0_Shanghai - - opcF8DiffPlaces_d10g0v0_Shanghai - - opcF7DiffPlaces_d26g0v0_Shanghai - - opcF8DiffPlaces_d11g0v0_Shanghai - - opcF8DiffPlaces_d12g0v0_Shanghai - - opcF7DiffPlaces_d27g0v0_Shanghai - - opcF8DiffPlaces_d13g0v0_Shanghai - - opcF7DiffPlaces_d28g0v0_Shanghai - - opcF8DiffPlaces_d14g0v0_Shanghai - - opcF7DiffPlaces_d29g0v0_Shanghai - - opcF8DiffPlaces_d15g0v0_Shanghai - - opcF7DiffPlaces_d30g0v0_Shanghai - - opcF7DiffPlaces_d31g0v0_Shanghai - - opcF8DiffPlaces_d16g0v0_Shanghai - - opcF7DiffPlaces_d32g0v0_Shanghai - - opcF8DiffPlaces_d2g0v0_Shanghai - - opcF7DiffPlaces_d33g0v0_Shanghai - - opcF7DiffPlaces_d34g0v0_Shanghai - - opcF8DiffPlaces_d17g0v0_Shanghai - - opcF8DiffPlaces_d18g0v0_Shanghai - - opcF8DiffPlaces_d19g0v0_Shanghai - - opcF8DiffPlaces_d3g0v0_Shanghai - - opcF8DiffPlaces_d21g0v0_Shanghai - - opcF9DiffPlaces_d0g0v0_Shanghai - - opcF8DiffPlaces_d4g0v0_Shanghai - - opcF8DiffPlaces_d20g0v0_Shanghai - - opcF8DiffPlaces_d22g0v0_Shanghai - - opcF8DiffPlaces_d5g0v0_Shanghai - - opcF8DiffPlaces_d23g0v0_Shanghai - - opcF8DiffPlaces_d6g0v0_Shanghai - - opcF8DiffPlaces_d7g0v0_Shanghai - - opcF8DiffPlaces_d8g0v0_Shanghai - - opcF8DiffPlaces_d9g0v0_Shanghai - - opcF8DiffPlaces_d24g0v0_Shanghai - - opcF9DiffPlaces_d1g0v0_Shanghai - - opcF8DiffPlaces_d25g0v0_Shanghai - - opcF9DiffPlaces_d10g0v0_Shanghai - - opcF9DiffPlaces_d11g0v0_Shanghai - - opcF8DiffPlaces_d26g0v0_Shanghai - - opcF9DiffPlaces_d12g0v0_Shanghai - - opcF8DiffPlaces_d27g0v0_Shanghai - - opcF9DiffPlaces_d13g0v0_Shanghai - - opcF8DiffPlaces_d28g0v0_Shanghai - - opcF9DiffPlaces_d14g0v0_Shanghai - - opcF8DiffPlaces_d29g0v0_Shanghai - - opcF9DiffPlaces_d15g0v0_Shanghai - - opcF8DiffPlaces_d30g0v0_Shanghai - - opcF9DiffPlaces_d16g0v0_Shanghai - - opcF8DiffPlaces_d31g0v0_Shanghai - - opcF9DiffPlaces_d2g0v0_Shanghai - - opcF8DiffPlaces_d32g0v0_Shanghai - - opcF8DiffPlaces_d33g0v0_Shanghai - - opcF8DiffPlaces_d34g0v0_Shanghai - - opcF9DiffPlaces_d17g0v0_Shanghai - - opcF9DiffPlaces_d18g0v0_Shanghai - - opcF9DiffPlaces_d19g0v0_Shanghai - - opcF9DiffPlaces_d3g0v0_Shanghai - - opcFBDiffPlaces_d0g0v0_Shanghai - - opcF9DiffPlaces_d21g0v0_Shanghai - - opcF9DiffPlaces_d20g0v0_Shanghai - - opcF9DiffPlaces_d4g0v0_Shanghai - - opcF9DiffPlaces_d22g0v0_Shanghai - - opcF9DiffPlaces_d5g0v0_Shanghai - - opcF9DiffPlaces_d23g0v0_Shanghai - - opcF9DiffPlaces_d6g0v0_Shanghai - - opcF9DiffPlaces_d7g0v0_Shanghai - - opcF9DiffPlaces_d8g0v0_Shanghai - - opcF9DiffPlaces_d24g0v0_Shanghai - - opcF9DiffPlaces_d9g0v0_Shanghai - - opcF9DiffPlaces_d25g0v0_Shanghai - - opcFBDiffPlaces_d1g0v0_Shanghai - - opcFBDiffPlaces_d10g0v0_Shanghai - - opcFBDiffPlaces_d11g0v0_Shanghai - - opcF9DiffPlaces_d26g0v0_Shanghai - - opcFBDiffPlaces_d12g0v0_Shanghai - - opcF9DiffPlaces_d27g0v0_Shanghai - - opcFBDiffPlaces_d13g0v0_Shanghai - - opcF9DiffPlaces_d28g0v0_Shanghai - - opcFBDiffPlaces_d14g0v0_Shanghai - - opcF9DiffPlaces_d29g0v0_Shanghai - - opcFBDiffPlaces_d15g0v0_Shanghai - - opcF9DiffPlaces_d30g0v0_Shanghai - - opcFBDiffPlaces_d16g0v0_Shanghai - - opcF9DiffPlaces_d31g0v0_Shanghai - - opcFBDiffPlaces_d2g0v0_Shanghai - - opcF9DiffPlaces_d32g0v0_Shanghai - - opcF9DiffPlaces_d33g0v0_Shanghai - - opcF9DiffPlaces_d34g0v0_Shanghai - - opcFBDiffPlaces_d17g0v0_Shanghai - - opcFBDiffPlaces_d18g0v0_Shanghai - - opcFBDiffPlaces_d19g0v0_Shanghai - - opcFBDiffPlaces_d3g0v0_Shanghai - - opcFBDiffPlaces_d21g0v0_Shanghai - - opcFCDiffPlaces_d0g0v0_Shanghai - - opcFBDiffPlaces_d4g0v0_Shanghai - - opcFBDiffPlaces_d20g0v0_Shanghai - - opcFBDiffPlaces_d22g0v0_Shanghai - - opcFBDiffPlaces_d23g0v0_Shanghai - - opcFBDiffPlaces_d5g0v0_Shanghai - - opcFBDiffPlaces_d6g0v0_Shanghai - - opcFBDiffPlaces_d7g0v0_Shanghai - - opcFBDiffPlaces_d8g0v0_Shanghai - - opcFBDiffPlaces_d24g0v0_Shanghai - - opcFBDiffPlaces_d9g0v0_Shanghai - - opcFCDiffPlaces_d1g0v0_Shanghai - - opcFBDiffPlaces_d25g0v0_Shanghai - - opcFCDiffPlaces_d10g0v0_Shanghai - - opcFBDiffPlaces_d26g0v0_Shanghai - - opcFCDiffPlaces_d11g0v0_Shanghai - - opcFCDiffPlaces_d12g0v0_Shanghai - - opcFBDiffPlaces_d27g0v0_Shanghai - - opcFCDiffPlaces_d13g0v0_Shanghai - - opcFBDiffPlaces_d28g0v0_Shanghai - - opcFCDiffPlaces_d14g0v0_Shanghai - - opcFBDiffPlaces_d29g0v0_Shanghai - - opcFCDiffPlaces_d15g0v0_Shanghai - - opcFBDiffPlaces_d30g0v0_Shanghai - - opcFCDiffPlaces_d16g0v0_Shanghai - - opcFBDiffPlaces_d31g0v0_Shanghai - - opcFCDiffPlaces_d2g0v0_Shanghai - - opcFBDiffPlaces_d32g0v0_Shanghai - - opcFBDiffPlaces_d33g0v0_Shanghai - - opcFBDiffPlaces_d34g0v0_Shanghai - - opcFCDiffPlaces_d17g0v0_Shanghai - - opcFCDiffPlaces_d18g0v0_Shanghai - - opcFCDiffPlaces_d19g0v0_Shanghai - - opcFCDiffPlaces_d3g0v0_Shanghai - - opcFCDiffPlaces_d21g0v0_Shanghai - - opcFEDiffPlaces_d0g0v0_Shanghai - - opcFCDiffPlaces_d4g0v0_Shanghai - - opcFCDiffPlaces_d20g0v0_Shanghai - - opcFCDiffPlaces_d22g0v0_Shanghai - - opcFCDiffPlaces_d5g0v0_Shanghai - - opcFCDiffPlaces_d23g0v0_Shanghai - - opcFCDiffPlaces_d6g0v0_Shanghai - - opcFCDiffPlaces_d7g0v0_Shanghai - - opcFCDiffPlaces_d8g0v0_Shanghai - - opcFCDiffPlaces_d24g0v0_Shanghai - - opcFCDiffPlaces_d9g0v0_Shanghai - - opcFEDiffPlaces_d1g0v0_Shanghai - - opcFCDiffPlaces_d25g0v0_Shanghai - - opcFEDiffPlaces_d10g0v0_Shanghai - - opcFCDiffPlaces_d26g0v0_Shanghai - - opcFEDiffPlaces_d11g0v0_Shanghai - - opcFEDiffPlaces_d12g0v0_Shanghai - - opcFEDiffPlaces_d13g0v0_Shanghai - - opcFCDiffPlaces_d27g0v0_Shanghai - - opcFCDiffPlaces_d28g0v0_Shanghai - - opcFEDiffPlaces_d14g0v0_Shanghai - - opcFCDiffPlaces_d29g0v0_Shanghai - - opcFEDiffPlaces_d15g0v0_Shanghai - - opcFEDiffPlaces_d16g0v0_Shanghai - - opcFCDiffPlaces_d30g0v0_Shanghai - - opcFCDiffPlaces_d31g0v0_Shanghai - - opcFEDiffPlaces_d2g0v0_Shanghai - - opcFCDiffPlaces_d32g0v0_Shanghai - - opcFCDiffPlaces_d33g0v0_Shanghai - - opcFCDiffPlaces_d34g0v0_Shanghai - - opcFEDiffPlaces_d17g0v0_Shanghai - - opcFEDiffPlaces_d18g0v0_Shanghai - - opcFEDiffPlaces_d19g0v0_Shanghai - - opcFEDiffPlaces_d3g0v0_Shanghai - - opcFEDiffPlaces_d21g0v0_Shanghai - - opcFEDiffPlaces_d20g0v0_Shanghai - - opcFEDiffPlaces_d4g0v0_Shanghai - - opcFEDiffPlaces_d22g0v0_Shanghai - - opcFEDiffPlaces_d5g0v0_Shanghai - - opcFEDiffPlaces_d23g0v0_Shanghai - - opcFEDiffPlaces_d6g0v0_Shanghai - - opcFEDiffPlaces_d7g0v0_Shanghai - - opcFEDiffPlaces_d8g0v0_Shanghai - - opcFEDiffPlaces_d24g0v0_Shanghai - - opcFEDiffPlaces_d9g0v0_Shanghai - - opcFEDiffPlaces_d25g0v0_Shanghai - - opcFEDiffPlaces_d26g0v0_Shanghai - - opcFEDiffPlaces_d27g0v0_Shanghai - - opcFEDiffPlaces_d28g0v0_Shanghai - - opcFEDiffPlaces_d29g0v0_Shanghai - - opcFEDiffPlaces_d30g0v0_Shanghai - - opcFEDiffPlaces_d31g0v0_Shanghai - - opcFEDiffPlaces_d32g0v0_Shanghai - - opcFEDiffPlaces_d33g0v0_Shanghai - - opcFEDiffPlaces_d34g0v0_Shanghai - - operationDiffGas_d6g0v0_Shanghai - - operationDiffGas_d1g0v0_Shanghai - - operationDiffGas_d0g0v0_Shanghai - - operationDiffGas_d7g0v0_Shanghai - - operationDiffGas_d8g0v0_Shanghai - - operationDiffGas_d9g0v0_Shanghai - stAttackTest: - - CrashingTransaction_d0g0v0_Shanghai - - ContractCreationSpam_d0g0v0_Shanghai - stBugs: - - randomStatetestDEFAULT_minus_Tue_07_58_41_minus_15153_minus_575192_d0g0v0_Shanghai - stCallCodes: - - callcode_checkPC_d0g0v0_Shanghai - - callcodeDynamicCode_d2g0v0_Shanghai - - callcodeDynamicCode_d3g0v0_Shanghai - - callcallcall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - stCallCreateCallCodeTest: - - callOutput3Fail_d0g0v0_Shanghai - - callOutput3partialFail_d0g0v0_Shanghai - - callcodeOutput3Fail_d0g0v0_Shanghai - - callcodeOutput3partialFail_d0g0v0_Shanghai - - contractCreationMakeCallThatAskMoreGasThenTransactionProvided_d0g1v0_Shanghai - - createNameRegistratorPreStore1NotEnoughGas_d0g0v0_Shanghai - - createInitFailUndefinedInstruction_d0g0v0_Shanghai - - createJS_NoCollision_d0g0v0_Shanghai - - CallRecursiveBombPreCall_d0g0v0_Shanghai - - Call1024BalanceTooLow_d0g0v0_Shanghai - - Callcode1024BalanceTooLow_d0g0v0_Shanghai - - Call1024OOG_d0g2v0_Shanghai - - Call1024OOG_d0g0v0_Shanghai - - Call1024OOG_d0g1v0_Shanghai - - Call1024OOG_d0g3v0_Shanghai - - Callcode1024OOG_d0g0v0_Shanghai - - Callcode1024OOG_d0g1v0_Shanghai - - createInitFailStackSizeLargerThan1024_d0g0v0_Shanghai - - Call1024PreCalls_d0g1v0_Shanghai - - Call1024PreCalls_d0g0v0_Shanghai - stChainId: - - chainId_d0g0v0_Shanghai - stCreate2: - - CREATE2_Suicide_d0g0v0_Shanghai - - CREATE2_Suicide_d10g0v0_Shanghai - - CREATE2_Suicide_d11g0v0_Shanghai - - CREATE2_Suicide_d2g0v0_Shanghai - - CREATE2_Suicide_d1g0v0_Shanghai - - CREATE2_Suicide_d4g0v0_Shanghai - - CREATE2_Suicide_d3g0v0_Shanghai - - CREATE2_Suicide_d6g0v0_Shanghai - - CREATE2_Suicide_d5g0v0_Shanghai - - CREATE2_Suicide_d7g0v0_Shanghai - - CREATE2_Suicide_d8g0v0_Shanghai - - CREATE2_Suicide_d9g0v0_Shanghai - - Create2OOGFromCallRefunds_d18g0v0_Shanghai - - Create2OOGafterInitCodeReturndataSize_d0g0v0_Shanghai - - Create2OOGFromCallRefunds_d21g0v0_Shanghai - - Create2OOGafterInitCode_d0g0v0_Shanghai - - Create2OOGafterInitCode_d0g1v0_Shanghai - - Create2OOGafterInitCodeRevert2_d0g0v0_Shanghai - - Create2OOGafterInitCodeRevert_d0g0v0_Shanghai - - CreateMessageRevertedOOGInInit_d0g0v0_Shanghai - - CreateMessageReverted_d0g0v0_Shanghai - - CreateMessageRevertedOOGInInit_d0g1v0_Shanghai - - create2InitCodes_d0g0v0_Shanghai - - RevertInCreateInInitCreate2_d0g0v0_Shanghai - - create2InitCodes_d1g0v0_Shanghai - - create2InitCodes_d3g0v0_Shanghai - - create2InitCodes_d2g0v0_Shanghai - - create2InitCodes_d4g0v0_Shanghai - - create2InitCodes_d7g0v0_Shanghai - - create2InitCodes_d5g0v0_Shanghai - - create2InitCodes_d8g0v0_Shanghai - - create2InitCodes_d6g0v0_Shanghai - - create2callPrecompiles_d1g0v0_Shanghai - - create2callPrecompiles_d2g0v0_Shanghai - - create2callPrecompiles_d3g0v0_Shanghai - - create2callPrecompiles_d5g0v0_Shanghai - - create2callPrecompiles_d0g0v0_Shanghai - - create2collisionBalance_d0g0v0_Shanghai - - create2collisionBalance_d3g0v0_Shanghai - - create2collisionBalance_d1g0v0_Shanghai - - create2collisionBalance_d2g0v0_Shanghai - - create2callPrecompiles_d4g0v0_Shanghai - - create2collisionCode2_d0g0v0_Shanghai - - create2collisionCode2_d1g0v0_Shanghai - - create2checkFieldsInInitcode_d7g0v0_Shanghai - - create2collisionCode_d0g0v0_Shanghai - - create2collisionCode_d1g0v0_Shanghai - - create2collisionCode_d2g0v0_Shanghai - - create2collisionNonce_d0g0v0_Shanghai - - create2callPrecompiles_d6g0v0_Shanghai - - create2collisionNonce_d1g0v0_Shanghai - - create2collisionNonce_d2g0v0_Shanghai - - create2checkFieldsInInitcode_d6g0v0_Shanghai - - create2collisionSelfdestructed2_d0g0v0_Shanghai - - create2checkFieldsInInitcode_d5g0v0_Shanghai - - create2noCash_d2g0v0_Shanghai - - create2collisionSelfdestructedOOG_d0g0v0_Shanghai - - create2collisionSelfdestructed2_d1g0v0_Shanghai - - create2collisionSelfdestructedOOG_d1g0v0_Shanghai - - create2collisionSelfdestructedOOG_d2g0v0_Shanghai - - create2collisionStorage_d0g0v0_Shanghai - - create2collisionSelfdestructed_d0g0v0_Shanghai - - create2collisionSelfdestructed_d1g0v0_Shanghai - - create2collisionStorage_d1g0v0_Shanghai - - create2collisionSelfdestructed_d2g0v0_Shanghai - - create2callPrecompiles_d7g0v0_Shanghai - - create2collisionStorage_d2g0v0_Shanghai - - Create2OnDepth1023_d0g0v0_Shanghai - - Create2OnDepth1024_d0g0v0_Shanghai - stCallDelegateCodesCallCodeHomestead: - - callcallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - stCallDelegateCodesHomestead: - - callcallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcodecall_ABCB_RECURSIVE_d0g0v0_Shanghai - - callcodecallcodecallcode_ABCB_RECURSIVE_d0g0v0_Shanghai - stCreateTest: - - CREATE_EContractCreateEContractInInit_Tr_d0g0v0_Shanghai - - CREATE_EContractCreateNEContractInInitOOG_Tr_d0g0v0_Shanghai - - CREATE_EmptyContractWithBalance_d0g0v0_Shanghai - - CREATE_EContractCreateNEContractInInit_Tr_d0g0v0_Shanghai - - CREATE_EmptyContractAndCallIt_0wei_d0g0v0_Shanghai - - CREATE_EmptyContractAndCallIt_1wei_d0g0v0_Shanghai - - CREATE_EContract_ThenCALLToNonExistentAcc_d0g0v0_Shanghai - - CREATE_EmptyContract_d0g0v0_Shanghai - - CREATE_EmptyContractWithStorage_d0g0v0_Shanghai - - CREATE_empty000CreateinInitCode_Transaction_d0g0v0_Shanghai - - CREATE_EmptyContractWithStorageAndCallIt_0wei_d0g0v0_Shanghai - - CREATE_EmptyContractWithStorageAndCallIt_1wei_d0g0v0_Shanghai - - CodeInConstructor_d0g0v0_Shanghai - - CodeInConstructor_d1g0v0_Shanghai - - CreateCollisionToEmpty_d0g0v0_Shanghai - - CreateCollisionToEmpty_d0g0v1_Shanghai - - CreateCollisionToEmpty_d1g0v0_Shanghai - - CreateCollisionToEmpty_d1g0v1_Shanghai - - CreateCollisionToEmpty_d2g0v0_Shanghai - - CreateCollisionToEmpty_d2g0v1_Shanghai - - CreateCollisionResults_d0g0v0_Shanghai - - CreateOOGFromCallRefunds_d18g0v0_Shanghai - - CreateCollisionResults_d1g0v0_Shanghai - - CreateOOGFromCallRefunds_d21g0v0_Shanghai - - CreateOOGFromEOARefunds_d18g0v0_Shanghai - - CreateOOGFromEOARefunds_d21g0v0_Shanghai - - CreateOOGafterInitCodeReturndata2_d0g0v0_Shanghai - - CreateOOGafterInitCodeRevert2_d1g0v0_Shanghai - - CreateAddressWarmAfterFail_d7g0v0_Shanghai - - CreateTransactionHighNonce_d0g0v0_Shanghai - - CreateTransactionHighNonce_d0g0v1_Shanghai - - TransactionCollisionToEmpty_d0g0v0_Shanghai - - TransactionCollisionToEmpty_d0g0v1_Shanghai - - CreateAddressWarmAfterFail_d7g0v1_Shanghai - - CreateResults_d10g0v0_Shanghai - - CreateResults_d12g0v0_Shanghai - - CreateResults_d14g0v0_Shanghai - - CreateResults_d16g0v0_Shanghai - - CreateResults_d11g0v0_Shanghai - - CreateResults_d13g0v0_Shanghai - - CreateResults_d15g0v0_Shanghai - - CreateResults_d0g0v0_Shanghai - - CreateResults_d17g0v0_Shanghai - - createLargeResult_d0g0v0_Shanghai - - CreateResults_d1g0v0_Shanghai - - CreateResults_d2g0v0_Shanghai - - CreateResults_d3g0v0_Shanghai - - createLargeResult_d2g0v0_Shanghai - - CreateResults_d4g0v0_Shanghai - - createLargeResult_d1g0v0_Shanghai - - createLargeResult_d3g0v0_Shanghai - - CreateResults_d8g0v0_Shanghai - - CreateResults_d9g0v0_Shanghai - - CreateOOGafterMaxCodesize_d2g0v0_Shanghai - - CreateResults_d5g0v0_Shanghai - - CreateOOGafterMaxCodesize_d0g0v0_Shanghai - - CreateOOGafterMaxCodesize_d5g0v0_Shanghai - - CreateResults_d6g0v0_Shanghai - - CreateOOGafterMaxCodesize_d1g0v0_Shanghai - - CreateOOGafterMaxCodesize_d3g0v0_Shanghai - - CreateResults_d7g0v0_Shanghai - - createLargeResult_d8g0v0_Shanghai - - createLargeResult_d9g0v0_Shanghai - - createLargeResult_d10g0v0_Shanghai - - createLargeResult_d11g0v0_Shanghai - - createLargeResult_d6g0v0_Shanghai - - createLargeResult_d12g0v0_Shanghai - - createLargeResult_d7g0v0_Shanghai - - createLargeResult_d13g0v0_Shanghai - - createLargeResult_d14g0v0_Shanghai - - createLargeResult_d15g0v0_Shanghai - - createLargeResult_d4g0v0_Shanghai - - createLargeResult_d5g0v0_Shanghai - stDelegatecallTestHomestead: - - callOutput3partialFail_d0g0v0_Shanghai - - delegatecodeDynamicCode_d0g0v0_Shanghai - - Call1024BalanceTooLow_d0g0v0_Shanghai - - CallRecursiveBombPreCall_d0g0v0_Shanghai - - Call1024OOG_d0g0v0_Shanghai - - Call1024OOG_d0g1v0_Shanghai - - Delegatecall1024_d0g0v0_Shanghai - - Delegatecall1024OOG_d0g0v0_Shanghai - - Call1024PreCalls_d0g1v0_Shanghai - - Call1024PreCalls_d0g2v0_Shanghai - stEIP150Specific: - - CreateAndGasInsideCreate_d0g0v0_Shanghai - - SuicideToExistingContract_d0g0v0_Shanghai - - SuicideToNotExistingContract_d0g0v0_Shanghai - - Transaction64Rule_integerBoundaries_d10g0v0_Shanghai - - Transaction64Rule_integerBoundaries_d11g0v0_Shanghai - - NewGasPriceForCodes_d0g0v0_Shanghai - stEIP150singleCodeGasPrices: - - RawCallGasValueTransferAsk_d0g0v0_Shanghai - - RawCallGasValueTransfer_d0g0v0_Shanghai - - RawCallCodeGasMemoryAsk_d0g0v0_Shanghai - - RawCallCodeGasMemory_d0g0v0_Shanghai - - RawCallCodeGasValueTransferMemory_d0g0v0_Shanghai - - RawCallCodeGasValueTransferMemoryAsk_d0g0v0_Shanghai - - RawCreateGasValueTransfer_d0g0v0_Shanghai - - RawCreateGas_d0g0v0_Shanghai - - RawCallGasValueTransferMemory_d0g0v0_Shanghai - - RawCallGasValueTransferMemoryAsk_d0g0v0_Shanghai - - RawCallMemoryGasAsk_d0g0v0_Shanghai - - RawCallMemoryGas_d0g0v0_Shanghai - - RawExtCodeCopyGas_d0g0v0_Shanghai - - RawCreateFailGasValueTransfer2_d0g0v0_Shanghai - - eip2929OOG_d0g0v0_Shanghai - - RawCreateGasMemory_d0g0v0_Shanghai - - RawCreateGasValueTransferMemory_d0g0v0_Shanghai - - RawExtCodeCopyMemoryGas_d0g0v0_Shanghai - - RawDelegateCallGasMemoryAsk_d0g0v0_Shanghai - - RawDelegateCallGasMemory_d0g0v0_Shanghai - - eip2929_d0g0v0_Shanghai - - eip2929_d10g0v0_Shanghai - - eip2929_d11g0v0_Shanghai - - eip2929_d12g0v0_Shanghai - - eip2929_d14g0v0_Shanghai - - eip2929_d13g0v0_Shanghai - - eip2929_d15g0v0_Shanghai - - eip2929_d16g0v0_Shanghai - - eip2929_d17g0v0_Shanghai - - eip2929_d18g0v0_Shanghai - - eip2929_d19g0v0_Shanghai - - eip2929_d1g0v0_Shanghai - - eip2929_d21g0v0_Shanghai - - eip2929_d20g0v0_Shanghai - - eip2929_d22g0v0_Shanghai - - eip2929_d23g0v0_Shanghai - - eip2929_d24g0v0_Shanghai - - eip2929_d25g0v0_Shanghai - - eip2929_d26g0v0_Shanghai - - eip2929_d27g0v0_Shanghai - - eip2929_d28g0v0_Shanghai - - eip2929_d29g0v0_Shanghai - - eip2929_d2g0v0_Shanghai - - eip2929_d30g0v0_Shanghai - - eip2929_minus_ff_d0g0v0_Shanghai - - eip2929_minus_ff_d2g0v0_Shanghai - - eip2929_minus_ff_d1g0v0_Shanghai - - eip2929_minus_ff_d4g0v0_Shanghai - - eip2929_minus_ff_d3g0v0_Shanghai - - eip2929_d31g0v0_Shanghai - - eip2929_minus_ff_d5g0v0_Shanghai - - eip2929_d33g0v0_Shanghai - - eip2929_minus_ff_d6g0v0_Shanghai - - eip2929_d32g0v0_Shanghai - - eip2929_minus_ff_d7g0v0_Shanghai - - eip2929_minus_ff_d8g0v0_Shanghai - - eip2929_d34g0v0_Shanghai - - eip2929_d35g0v0_Shanghai - - eip2929_d36g0v0_Shanghai - - eip2929_d37g0v0_Shanghai - - eip2929_d3g0v0_Shanghai - - eip2929_d4g0v0_Shanghai - - eip2929_d5g0v0_Shanghai - - eip2929_d7g0v0_Shanghai - - eip2929_d6g0v0_Shanghai - - eip2929_d8g0v0_Shanghai - - eip2929_d9g0v0_Shanghai - - gasCostBerlin_d0g0v0_Shanghai - - gasCostBerlin_d100g0v0_Shanghai - - gasCostBerlin_d101g0v0_Shanghai - - gasCostBerlin_d102g0v0_Shanghai - - gasCostBerlin_d103g0v0_Shanghai - - gasCostBerlin_d104g0v0_Shanghai - - gasCostBerlin_d105g0v0_Shanghai - - gasCostBerlin_d106g0v0_Shanghai - - gasCostBerlin_d107g0v0_Shanghai - - gasCostBerlin_d108g0v0_Shanghai - - gasCostBerlin_d109g0v0_Shanghai - - gasCostBerlin_d10g0v0_Shanghai - - gasCostBerlin_d11g0v0_Shanghai - - gasCostBerlin_d12g0v0_Shanghai - - gasCostBerlin_d13g0v0_Shanghai - - gasCostBerlin_d14g0v0_Shanghai - - gasCostBerlin_d15g0v0_Shanghai - - gasCostBerlin_d17g0v0_Shanghai - - gasCostBerlin_d18g0v0_Shanghai - - gasCostBerlin_d16g0v0_Shanghai - - gasCostBerlin_d19g0v0_Shanghai - - gasCostBerlin_d1g0v0_Shanghai - - gasCostBerlin_d20g0v0_Shanghai - - gasCostBerlin_d21g0v0_Shanghai - - gasCostBerlin_d22g0v0_Shanghai - - gasCostBerlin_d23g0v0_Shanghai - - gasCostBerlin_d24g0v0_Shanghai - - gasCostBerlin_d25g0v0_Shanghai - - gasCostBerlin_d26g0v0_Shanghai - - gasCostBerlin_d27g0v0_Shanghai - - gasCostBerlin_d29g0v0_Shanghai - - gasCostBerlin_d28g0v0_Shanghai - - gasCostBerlin_d2g0v0_Shanghai - - gasCostBerlin_d30g0v0_Shanghai - - gasCostBerlin_d31g0v0_Shanghai - - gasCostBerlin_d32g0v0_Shanghai - - gasCostBerlin_d33g0v0_Shanghai - - gasCostBerlin_d34g0v0_Shanghai - - gasCostBerlin_d35g0v0_Shanghai - - gasCostBerlin_d36g0v0_Shanghai - - gasCostBerlin_d37g0v0_Shanghai - - gasCostBerlin_d38g0v0_Shanghai - - gasCostBerlin_d39g0v0_Shanghai - - gasCostBerlin_d3g0v0_Shanghai - - gasCostBerlin_d40g0v0_Shanghai - - gasCostBerlin_d41g0v0_Shanghai - - gasCostBerlin_d42g0v0_Shanghai - - gasCostBerlin_d44g0v0_Shanghai - - gasCostBerlin_d43g0v0_Shanghai - - gasCostBerlin_d45g0v0_Shanghai - - gasCostBerlin_d46g0v0_Shanghai - - gasCostBerlin_d47g0v0_Shanghai - - gasCostBerlin_d48g0v0_Shanghai - - gasCostBerlin_d49g0v0_Shanghai - - gasCostBerlin_d4g0v0_Shanghai - - gasCostBerlin_d50g0v0_Shanghai - - gasCostBerlin_d51g0v0_Shanghai - - gasCostBerlin_d52g0v0_Shanghai - - gasCostBerlin_d53g0v0_Shanghai - - gasCostBerlin_d54g0v0_Shanghai - - gasCostBerlin_d55g0v0_Shanghai - - gasCostBerlin_d57g0v0_Shanghai - - gasCostBerlin_d56g0v0_Shanghai - - gasCostBerlin_d58g0v0_Shanghai - - gasCostBerlin_d59g0v0_Shanghai - - gasCostBerlin_d5g0v0_Shanghai - - gasCostBerlin_d60g0v0_Shanghai - - gasCostBerlin_d61g0v0_Shanghai - - gasCostBerlin_d62g0v0_Shanghai - - gasCostBerlin_d63g0v0_Shanghai - - gasCostBerlin_d64g0v0_Shanghai - - gasCostBerlin_d66g0v0_Shanghai - - gasCostBerlin_d67g0v0_Shanghai - - gasCostBerlin_d65g0v0_Shanghai - - gasCostBerlin_d69g0v0_Shanghai - - gasCostBerlin_d6g0v0_Shanghai - - gasCostBerlin_d68g0v0_Shanghai - - gasCostBerlin_d70g0v0_Shanghai - - gasCostBerlin_d71g0v0_Shanghai - - gasCostBerlin_d72g0v0_Shanghai - - gasCostBerlin_d74g0v0_Shanghai - - gasCostBerlin_d76g0v0_Shanghai - - gasCostBerlin_d73g0v0_Shanghai - - gasCostBerlin_d77g0v0_Shanghai - - gasCostBerlin_d75g0v0_Shanghai - - gasCostExp_d0g0v0_Shanghai - - gasCostBerlin_d78g0v0_Shanghai - - gasCostExp_d1g0v0_Shanghai - - gasCostExp_d2g0v0_Shanghai - - gasCostBerlin_d79g0v0_Shanghai - - gasCostExp_d3g0v0_Shanghai - - gasCostExp_d4g0v0_Shanghai - - gasCostExp_d5g0v0_Shanghai - - gasCostExp_d6g0v0_Shanghai - - gasCostExp_d7g0v0_Shanghai - - gasCostExp_d8g0v0_Shanghai - - gasCostBerlin_d7g0v0_Shanghai - - gasCostMemSeg_d0g0v0_Shanghai - - gasCostJump_d0g0v0_Shanghai - - gasCostJump_d1g0v0_Shanghai - - gasCostJump_d2g0v0_Shanghai - - gasCostBerlin_d80g0v0_Shanghai - - gasCostMemSeg_d10g0v0_Shanghai - - gasCostMemSeg_d11g0v0_Shanghai - - gasCostMemSeg_d12g0v0_Shanghai - - gasCostMemSeg_d13g0v0_Shanghai - - gasCostMemSeg_d14g0v0_Shanghai - - gasCostMemSeg_d15g0v0_Shanghai - - gasCostBerlin_d81g0v0_Shanghai - - gasCostMemSeg_d1g0v0_Shanghai - - gasCostMemSeg_d16g0v0_Shanghai - - gasCostMemSeg_d17g0v0_Shanghai - - gasCostMemSeg_d18g0v0_Shanghai - - gasCostMemSeg_d19g0v0_Shanghai - - gasCostMemSeg_d2g0v0_Shanghai - - gasCostMemSeg_d20g0v0_Shanghai - - gasCostMemSeg_d21g0v0_Shanghai - - gasCostMemSeg_d22g0v0_Shanghai - - gasCostMemSeg_d23g0v0_Shanghai - - gasCostMemSeg_d24g0v0_Shanghai - - gasCostMemSeg_d25g0v0_Shanghai - - gasCostMemSeg_d26g0v0_Shanghai - - gasCostMemSeg_d27g0v0_Shanghai - - gasCostMemSeg_d28g0v0_Shanghai - - gasCostMemSeg_d29g0v0_Shanghai - - gasCostMemSeg_d3g0v0_Shanghai - - gasCostMemSeg_d31g0v0_Shanghai - - gasCostMemSeg_d32g0v0_Shanghai - - gasCostMemSeg_d33g0v0_Shanghai - - gasCostMemSeg_d34g0v0_Shanghai - - gasCostMemSeg_d36g0v0_Shanghai - - gasCostMemSeg_d37g0v0_Shanghai - - gasCostMemSeg_d38g0v0_Shanghai - - gasCostMemSeg_d39g0v0_Shanghai - - gasCostMemSeg_d41g0v0_Shanghai - - gasCostMemSeg_d4g0v0_Shanghai - - gasCostMemSeg_d42g0v0_Shanghai - - gasCostMemSeg_d43g0v0_Shanghai - - gasCostMemSeg_d44g0v0_Shanghai - - gasCostMemSeg_d46g0v0_Shanghai - - gasCostMemSeg_d47g0v0_Shanghai - - gasCostMemSeg_d48g0v0_Shanghai - - gasCostMemSeg_d49g0v0_Shanghai - - gasCostMemSeg_d5g0v0_Shanghai - - gasCostBerlin_d83g0v0_Shanghai - - gasCostBerlin_d82g0v0_Shanghai - - gasCostBerlin_d84g0v0_Shanghai - - gasCostMemSeg_d6g0v0_Shanghai - - gasCostMemSeg_d7g0v0_Shanghai - - gasCostMemSeg_d8g0v0_Shanghai - - gasCostBerlin_d85g0v0_Shanghai - - gasCostMemSeg_d9g0v0_Shanghai - - gasCostBerlin_d86g0v0_Shanghai - - gasCostMemSeg_d51g0v0_Shanghai - - gasCostBerlin_d87g0v0_Shanghai - - gasCostMemSeg_d52g0v0_Shanghai - - gasCostMemSeg_d53g0v0_Shanghai - - gasCostBerlin_d88g0v0_Shanghai - - gasCostBerlin_d89g0v0_Shanghai - - gasCostMemSeg_d54g0v0_Shanghai - - gasCostBerlin_d8g0v0_Shanghai - - gasCostBerlin_d90g0v0_Shanghai - - gasCostBerlin_d91g0v0_Shanghai - - gasCostBerlin_d92g0v0_Shanghai - - gasCostBerlin_d93g0v0_Shanghai - - gasCostBerlin_d94g0v0_Shanghai - - gasCostBerlin_d95g0v0_Shanghai - - gasCostBerlin_d98g0v0_Shanghai - - gasCostBerlin_d96g0v0_Shanghai - - gasCostBerlin_d97g0v0_Shanghai - - gasCostMemory_d0g0v0_Shanghai - - gasCostBerlin_d9g0v0_Shanghai - - gasCostBerlin_d99g0v0_Shanghai - - gasCostMemory_d10g0v0_Shanghai - - gasCostMemory_d11g0v0_Shanghai - - gasCostMemory_d14g0v0_Shanghai - - gasCostMemory_d12g0v0_Shanghai - - gasCostMemory_d13g0v0_Shanghai - - gasCostMemory_d15g0v0_Shanghai - - gasCostMemory_d17g0v0_Shanghai - - gasCostMemory_d16g0v0_Shanghai - - gasCostMemory_d19g0v0_Shanghai - - gasCostMemory_d18g0v0_Shanghai - - gasCostMemory_d1g0v0_Shanghai - - gasCostMemory_d20g0v0_Shanghai - - gasCostMemory_d23g0v0_Shanghai - - gasCostMemory_d21g0v0_Shanghai - - gasCostMemory_d22g0v0_Shanghai - - gasCostMemory_d24g0v0_Shanghai - - gasCostMemory_d25g0v0_Shanghai - - gasCostMemory_d26g0v0_Shanghai - - gasCostMemory_d27g0v0_Shanghai - - gasCostMemory_d28g0v0_Shanghai - - gasCostMemory_d29g0v0_Shanghai - - gasCostMemory_d2g0v0_Shanghai - - gasCostMemory_d30g0v0_Shanghai - - gasCostMemory_d31g0v0_Shanghai - - gasCostMemory_d32g0v0_Shanghai - - gasCostMemory_d33g0v0_Shanghai - - gasCostMemory_d34g0v0_Shanghai - - gasCostMemory_d35g0v0_Shanghai - - gasCostMemory_d3g0v0_Shanghai - - gasCostMemory_d36g0v0_Shanghai - - gasCostMemory_d37g0v0_Shanghai - - gasCostMemory_d38g0v0_Shanghai - - gasCostMemory_d39g0v0_Shanghai - - gasCostMemory_d40g0v0_Shanghai - - gasCostMemory_d41g0v0_Shanghai - - gasCostMemory_d42g0v0_Shanghai - - gasCostMemory_d43g0v0_Shanghai - - gasCostMemory_d44g0v0_Shanghai - - gasCostMemory_d45g0v0_Shanghai - - gasCostMemory_d47g0v0_Shanghai - - gasCostMemory_d46g0v0_Shanghai - - gasCostMemory_d4g0v0_Shanghai - - gasCostMemory_d48g0v0_Shanghai - - gasCostReturn_d0g0v0_Shanghai - - gasCostMemory_d49g0v0_Shanghai - - gasCostMemory_d50g0v0_Shanghai - - gasCostMemory_d51g0v0_Shanghai - - gasCostMemory_d52g0v0_Shanghai - - gasCostMemory_d53g0v0_Shanghai - - gasCostMemory_d5g0v0_Shanghai - - gasCostMemory_d54g0v0_Shanghai - - gasCostMemory_d55g0v0_Shanghai - - gasCostMemory_d56g0v0_Shanghai - - gasCostMemory_d57g0v0_Shanghai - - gasCostMemory_d58g0v0_Shanghai - - gasCostMemory_d59g0v0_Shanghai - - gasCostMemory_d60g0v0_Shanghai - - gasCostMemory_d6g0v0_Shanghai - - gasCostMemory_d61g0v0_Shanghai - - gasCostMemory_d62g0v0_Shanghai - - gasCostMemory_d63g0v0_Shanghai - - gasCostMemory_d64g0v0_Shanghai - - gasCostMemory_d65g0v0_Shanghai - - gasCostMemory_d8g0v0_Shanghai - - gasCostMemory_d7g0v0_Shanghai - - gasCostMemory_d9g0v0_Shanghai - - gasCostMemory_d66g0v0_Shanghai - - gasCostMemory_d67g0v0_Shanghai - - gasCostMemory_d68g0v0_Shanghai - - gasCostMemory_d69g0v0_Shanghai - - gasCostMemory_d70g0v0_Shanghai - - gasCostMemory_d71g0v0_Shanghai - - gasCostMemory_d72g0v0_Shanghai - - gasCostMemory_d73g0v0_Shanghai - - gasCostMemory_d74g0v0_Shanghai - stEIP158Specific: - - CALL_OneVCallSuicide_d0g0v0_Shanghai - - CALL_ZeroVCallSuicide_d0g0v0_Shanghai - - EXP_Empty_d0g0v0_Shanghai - - vitalikTransactionTest_d0g0v0_Shanghai - stEIP2930: - - addressOpcodes_d11g0v0_Shanghai - - addressOpcodes_d14g0v0_Shanghai - - addressOpcodes_d19g0v0_Shanghai - - addressOpcodes_d17g0v0_Shanghai - - addressOpcodes_d21g0v0_Shanghai - - addressOpcodes_d13g0v0_Shanghai - - addressOpcodes_d23g0v0_Shanghai - - addressOpcodes_d29g0v0_Shanghai - - addressOpcodes_d26g0v0_Shanghai - - addressOpcodes_d2g0v0_Shanghai - - addressOpcodes_d1g0v0_Shanghai - - addressOpcodes_d35g0v0_Shanghai - - addressOpcodes_d31g0v0_Shanghai - - addressOpcodes_d25g0v0_Shanghai - - addressOpcodes_d10g0v0_Shanghai - - addressOpcodes_d0g0v0_Shanghai - - addressOpcodes_d12g0v0_Shanghai - - addressOpcodes_d18g0v0_Shanghai - - addressOpcodes_d15g0v0_Shanghai - - addressOpcodes_d16g0v0_Shanghai - - addressOpcodes_d20g0v0_Shanghai - - addressOpcodes_d22g0v0_Shanghai - - addressOpcodes_d24g0v0_Shanghai - - addressOpcodes_d28g0v0_Shanghai - - addressOpcodes_d33g0v0_Shanghai - - addressOpcodes_d27g0v0_Shanghai - - addressOpcodes_d30g0v0_Shanghai - - addressOpcodes_d34g0v0_Shanghai - - coinbaseT01_d0g0v0_Shanghai - - addressOpcodes_d36g0v0_Shanghai - - coinbaseT01_d2g0v0_Shanghai - - coinbaseT01_d1g0v0_Shanghai - - coinbaseT2_d0g0v0_Shanghai - - coinbaseT2_d1g0v0_Shanghai - - addressOpcodes_d32g0v0_Shanghai - - manualCreate_d2g0v0_Shanghai - - storageCosts_d0g0v0_Shanghai - - addressOpcodes_d37g0v0_Shanghai - - storageCosts_d10g0v0_Shanghai - - storageCosts_d11g0v0_Shanghai - - addressOpcodes_d38g0v0_Shanghai - - storageCosts_d18g0v0_Shanghai - - storageCosts_d12g0v0_Shanghai - - storageCosts_d19g0v0_Shanghai - - storageCosts_d13g0v0_Shanghai - - storageCosts_d14g0v0_Shanghai - - storageCosts_d20g0v0_Shanghai - - storageCosts_d21g0v0_Shanghai - - storageCosts_d15g0v0_Shanghai - - storageCosts_d16g0v0_Shanghai - - storageCosts_d17g0v0_Shanghai - - storageCosts_d1g0v0_Shanghai - - storageCosts_d23g0v0_Shanghai - - storageCosts_d22g0v0_Shanghai - - storageCosts_d24g0v0_Shanghai - - storageCosts_d26g0v0_Shanghai - - storageCosts_d25g0v0_Shanghai - - storageCosts_d27g0v0_Shanghai - - storageCosts_d28g0v0_Shanghai - - storageCosts_d29g0v0_Shanghai - - storageCosts_d2g0v0_Shanghai - - storageCosts_d30g0v0_Shanghai - - storageCosts_d31g0v0_Shanghai - - storageCosts_d3g0v0_Shanghai - - storageCosts_d4g0v0_Shanghai - - storageCosts_d5g0v0_Shanghai - - addressOpcodes_d41g0v0_Shanghai - - addressOpcodes_d5g0v0_Shanghai - - addressOpcodes_d43g0v0_Shanghai - - addressOpcodes_d7g0v0_Shanghai - - storageCosts_d32g0v0_Shanghai - - addressOpcodes_d45g0v0_Shanghai - - addressOpcodes_d47g0v0_Shanghai - - storageCosts_d34g0v0_Shanghai - - storageCosts_d33g0v0_Shanghai - - addressOpcodes_d9g0v0_Shanghai - - storageCosts_d6g0v0_Shanghai - - addressOpcodes_d3g0v0_Shanghai - - storageCosts_d7g0v0_Shanghai - - storageCosts_d9g0v0_Shanghai - - storageCosts_d8g0v0_Shanghai - - addressOpcodes_d39g0v0_Shanghai - - addressOpcodes_d4g0v0_Shanghai - - addressOpcodes_d40g0v0_Shanghai - - addressOpcodes_d42g0v0_Shanghai - - addressOpcodes_d44g0v0_Shanghai - - addressOpcodes_d6g0v0_Shanghai - - addressOpcodes_d46g0v0_Shanghai - - storageCosts_d35g0v0_Shanghai - - addressOpcodes_d8g0v0_Shanghai - - variedContext_d11g0v0_Shanghai - - variedContext_d10g0v0_Shanghai - - variedContext_d16g0v0_Shanghai - - variedContext_d13g0v0_Shanghai - - variedContext_d12g0v0_Shanghai - - variedContext_d18g0v0_Shanghai - - variedContext_d14g0v0_Shanghai - - variedContext_d15g0v0_Shanghai - - variedContext_d0g0v0_Shanghai - - variedContext_d1g0v0_Shanghai - - variedContext_d34g0v0_Shanghai - - variedContext_d2g0v0_Shanghai - - variedContext_d22g0v0_Shanghai - - variedContext_d3g0v0_Shanghai - - variedContext_d4g0v0_Shanghai - - variedContext_d26g0v0_Shanghai - - variedContext_d6g0v0_Shanghai - - variedContext_d7g0v0_Shanghai - - variedContext_d8g0v0_Shanghai - - variedContext_d5g0v0_Shanghai - - variedContext_d9g0v0_Shanghai - - variedContext_d30g0v0_Shanghai - - variedContext_d24g0v0_Shanghai - - variedContext_d28g0v0_Shanghai - - variedContext_d32g0v0_Shanghai - - variedContext_d21g0v0_Shanghai - - variedContext_d20g0v0_Shanghai - stExample: - - invalidTr_d0g0v0_Shanghai - - eip1559_d0g0v0_Shanghai - - basefeeExample_d0g0v0_Shanghai - - mergeTest_d0g0v0_Shanghai - - solidityExample_d0g0v0_Shanghai - stExtCodeHash: - - extCodeCopyBounds_d0g0v0_Shanghai - - extCodeHashDynamicArgument_d1g0v0_Shanghai - - extCodeHashInInitCode_d1g0v0_Shanghai - - dynamicAccountOverwriteEmpty_d0g0v0_Shanghai - - extCodeHashSubcallSuicide_d0g0v0_Shanghai - - extcodehashEmpty_d0g0v0_Shanghai - - extcodehashEmpty_d2g0v0_Shanghai - - extcodehashEmpty_d1g0v0_Shanghai - - extcodehashEmpty_d3g0v0_Shanghai - - extcodehashEmpty_d4g0v0_Shanghai - - extcodehashEmpty_d5g0v0_Shanghai - - extcodehashEmpty_d6g0v0_Shanghai - - extcodehashEmpty_d7g0v0_Shanghai - - extcodehashEmpty_d8g0v0_Shanghai - - extCodeHashSubcallOOG_d4g0v0_Shanghai - - extcodehashEmpty_d9g0v0_Shanghai - - extCodeHashMaxCodeSize_d0g0v0_Shanghai - stInitCodeTest: - - CallContractToCreateContractWhichWouldCreateContractInInitCode_d0g0v0_Shanghai - - OutOfGasPrefundedContractCreation_d0g0v0_Shanghai - - OutOfGasPrefundedContractCreation_d0g2v0_Shanghai - - CallRecursiveContract_d0g0v0_Shanghai - stMemExpandingEIP150Calls: - - CreateAndGasInsideCreateWithMemExpandingCalls_d0g0v0_Shanghai - - CallGoesOOGOnSecondLevelWithMemExpandingCalls_d0g0v0_Shanghai - - NewGasPriceForCodesWithMemExpandingCalls_d0g0v0_Shanghai - stMemoryStressTest: - - RETURN_Bounds_d0g1v0_Shanghai - - RETURN_Bounds_d0g2v0_Shanghai - - DUP_Bounds_d0g0v0_Shanghai - - DUP_Bounds_d0g1v0_Shanghai - - DUP_Bounds_d0g2v0_Shanghai - stMemoryTest: - - bufferSrcOffset_d10g0v0_Shanghai - - bufferSrcOffset_d12g0v0_Shanghai - - bufferSrcOffset_d18g0v0_Shanghai - - bufferSrcOffset_d16g0v0_Shanghai - - bufferSrcOffset_d17g0v0_Shanghai - - bufferSrcOffset_d13g0v0_Shanghai - - bufferSrcOffset_d14g0v0_Shanghai - - bufferSrcOffset_d19g0v0_Shanghai - - bufferSrcOffset_d20g0v0_Shanghai - - bufferSrcOffset_d21g0v0_Shanghai - - bufferSrcOffset_d22g0v0_Shanghai - - bufferSrcOffset_d23g0v0_Shanghai - - bufferSrcOffset_d36g0v0_Shanghai - - bufferSrcOffset_d37g0v0_Shanghai - - bufferSrcOffset_d38g0v0_Shanghai - - bufferSrcOffset_d43g0v0_Shanghai - - bufferSrcOffset_d45g0v0_Shanghai - - bufferSrcOffset_d44g0v0_Shanghai - - bufferSrcOffset_d46g0v0_Shanghai - - bufferSrcOffset_d47g0v0_Shanghai - - bufferSrcOffset_d60g0v0_Shanghai - - bufferSrcOffset_d61g0v0_Shanghai - - bufferSrcOffset_d62g0v0_Shanghai - - bufferSrcOffset_d67g0v0_Shanghai - - bufferSrcOffset_d68g0v0_Shanghai - - bufferSrcOffset_d70g0v0_Shanghai - - bufferSrcOffset_d69g0v0_Shanghai - - bufferSrcOffset_d71g0v0_Shanghai - - bufferSrcOffset_d8g0v0_Shanghai - - bufferSrcOffset_d9g0v0_Shanghai - - buffer_d0g0v0_Shanghai - - buffer_d108g0v0_Shanghai - - buffer_d109g0v0_Shanghai - - buffer_d111g0v0_Shanghai - - buffer_d112g0v0_Shanghai - - buffer_d123g0v0_Shanghai - - buffer_d124g0v0_Shanghai - - buffer_d126g0v0_Shanghai - - buffer_d127g0v0_Shanghai - - buffer_d138g0v0_Shanghai - - buffer_d139g0v0_Shanghai - - buffer_d142g0v0_Shanghai - - buffer_d141g0v0_Shanghai - - buffer_d153g0v0_Shanghai - - buffer_d154g0v0_Shanghai - - buffer_d156g0v0_Shanghai - - buffer_d157g0v0_Shanghai - - buffer_d168g0v0_Shanghai - - buffer_d169g0v0_Shanghai - - buffer_d16g0v0_Shanghai - - buffer_d171g0v0_Shanghai - - buffer_d172g0v0_Shanghai - - buffer_d17g0v0_Shanghai - - buffer_d183g0v0_Shanghai - - buffer_d184g0v0_Shanghai - - buffer_d186g0v0_Shanghai - - buffer_d187g0v0_Shanghai - - buffer_d198g0v0_Shanghai - - buffer_d1g0v0_Shanghai - - buffer_d199g0v0_Shanghai - - buffer_d19g0v0_Shanghai - - buffer_d202g0v0_Shanghai - - buffer_d201g0v0_Shanghai - - buffer_d20g0v0_Shanghai - - buffer_d213g0v0_Shanghai - - buffer_d214g0v0_Shanghai - - buffer_d216g0v0_Shanghai - - buffer_d217g0v0_Shanghai - - buffer_d228g0v0_Shanghai - - buffer_d229g0v0_Shanghai - - buffer_d231g0v0_Shanghai - - buffer_d232g0v0_Shanghai - - buffer_d243g0v0_Shanghai - - buffer_d244g0v0_Shanghai - - buffer_d246g0v0_Shanghai - - buffer_d247g0v0_Shanghai - - buffer_d258g0v0_Shanghai - - buffer_d259g0v0_Shanghai - - buffer_d261g0v0_Shanghai - - buffer_d262g0v0_Shanghai - - buffer_d273g0v0_Shanghai - - buffer_d274g0v0_Shanghai - - buffer_d276g0v0_Shanghai - - buffer_d277g0v0_Shanghai - - buffer_d288g0v0_Shanghai - - buffer_d289g0v0_Shanghai - - buffer_d291g0v0_Shanghai - - buffer_d292g0v0_Shanghai - - buffer_d303g0v0_Shanghai - - buffer_d304g0v0_Shanghai - - buffer_d306g0v0_Shanghai - - buffer_d307g0v0_Shanghai - - buffer_d318g0v0_Shanghai - - buffer_d319g0v0_Shanghai - - buffer_d31g0v0_Shanghai - - buffer_d320g0v0_Shanghai - - buffer_d321g0v0_Shanghai - - buffer_d322g0v0_Shanghai - - buffer_d323g0v0_Shanghai - - buffer_d324g0v0_Shanghai - - buffer_d325g0v0_Shanghai - - buffer_d326g0v0_Shanghai - - buffer_d327g0v0_Shanghai - - buffer_d328g0v0_Shanghai - - buffer_d329g0v0_Shanghai - - buffer_d32g0v0_Shanghai - - buffer_d330g0v0_Shanghai - - buffer_d331g0v0_Shanghai - - buffer_d332g0v0_Shanghai - - buffer_d333g0v0_Shanghai - - buffer_d334g0v0_Shanghai - - buffer_d335g0v0_Shanghai - - buffer_d336g0v0_Shanghai - - buffer_d337g0v0_Shanghai - - buffer_d338g0v0_Shanghai - - buffer_d339g0v0_Shanghai - - buffer_d340g0v0_Shanghai - - buffer_d341g0v0_Shanghai - - buffer_d342g0v0_Shanghai - - buffer_d343g0v0_Shanghai - - buffer_d344g0v0_Shanghai - - buffer_d345g0v0_Shanghai - - buffer_d346g0v0_Shanghai - - buffer_d347g0v0_Shanghai - - buffer_d35g0v0_Shanghai - - buffer_d34g0v0_Shanghai - - buffer_d3g0v0_Shanghai - - buffer_d46g0v0_Shanghai - - buffer_d47g0v0_Shanghai - - buffer_d4g0v0_Shanghai - - buffer_d49g0v0_Shanghai - - buffer_d50g0v0_Shanghai - - buffer_d62g0v0_Shanghai - - buffer_d65g0v0_Shanghai - - buffer_d6g0v0_Shanghai - - callDataCopyOffset_d0g0v0_Shanghai - - codecopy_dejavu2_d0g0v0_Shanghai - - oog_d0g0v0_Shanghai - - buffer_d76g0v0_Shanghai - - memCopySelf_d0g0v0_Shanghai - - buffer_d77g0v0_Shanghai - - buffer_d79g0v0_Shanghai - - oog_d30g0v0_Shanghai - - buffer_d80g0v0_Shanghai - - oog_d9g0v0_Shanghai - - buffer_d93g0v0_Shanghai - - buffer_d94g0v0_Shanghai - - buffer_d96g0v0_Shanghai - - buffer_d97g0v0_Shanghai - - stackLimitGas_1023_d0g0v0_Shanghai - - stackLimitGas_1024_d0g0v0_Shanghai - - stackLimitPush31_1024_d0g0v0_Shanghai - - stackLimitPush31_1023_d0g0v0_Shanghai - - stackLimitPush32_1023_d0g0v0_Shanghai - - stackLimitPush32_1024_d0g0v0_Shanghai - stNonZeroCallsTest: - - NonZeroValue_CALL_ToNonNonZeroBalance_d0g0v0_Shanghai - stPreCompiledContracts2: - - CALLBlake2f_d4g0v0_Shanghai - - CALLBlake2f_d4g1v0_Shanghai - - CALLBlake2f_d4g2v0_Shanghai - - CALLBlake2f_d5g0v0_Shanghai - - CALLBlake2f_d4g3v0_Shanghai - - CALLBlake2f_d5g2v0_Shanghai - - CALLBlake2f_d5g1v0_Shanghai - - CALLBlake2f_d6g1v0_Shanghai - - CALLBlake2f_d5g3v0_Shanghai - - CALLBlake2f_d6g0v0_Shanghai - - CALLBlake2f_d6g2v0_Shanghai - - CALLBlake2f_d6g3v0_Shanghai - - CALLBlake2f_d7g0v0_Shanghai - - CALLBlake2f_d7g1v0_Shanghai - - CALLBlake2f_d7g2v0_Shanghai - - CALLBlake2f_d7g3v0_Shanghai - - CALLBlake2f_d8g0v0_Shanghai - - CALLBlake2f_d8g2v0_Shanghai - - CALLBlake2f_d8g1v0_Shanghai - - CALLBlake2f_d8g3v0_Shanghai - - CALLBlake2f_d9g0v0_Shanghai - - CALLCODEBlake2f_d4g0v0_Shanghai - - CALLCODEBlake2f_d4g1v0_Shanghai - - CALLCODEBlake2f_d4g2v0_Shanghai - - CALLCODEBlake2f_d4g3v0_Shanghai - - CALLCODEBlake2f_d5g0v0_Shanghai - - CALLCODEBlake2f_d5g1v0_Shanghai - - CALLCODEBlake2f_d5g2v0_Shanghai - - CALLCODEBlake2f_d5g3v0_Shanghai - - CALLCODEBlake2f_d6g0v0_Shanghai - - CALLCODEBlake2f_d6g1v0_Shanghai - - CALLCODEBlake2f_d6g2v0_Shanghai - - CALLCODEBlake2f_d6g3v0_Shanghai - - CALLCODEBlake2f_d7g0v0_Shanghai - - CALLCODEBlake2f_d7g1v0_Shanghai - - CALLCODEBlake2f_d7g3v0_Shanghai - - CALLCODEBlake2f_d7g2v0_Shanghai - - CALLCODEBlake2f_d8g0v0_Shanghai - - CALLCODEBlake2f_d8g1v0_Shanghai - - CALLCODEBlake2f_d8g3v0_Shanghai - - CALLCODEBlake2f_d8g2v0_Shanghai - - CALLCODEBlake2f_d9g0v0_Shanghai - - CALLCODEEcrecover0_completeReturnValue_d0g0v0_Shanghai - - CALLCODEEcrecover0_NoGas_d0g0v0_Shanghai - - CALLCODEEcrecover0_d0g0v0_Shanghai - - CALLCODEEcrecover0_gas3000_d0g0v0_Shanghai - - CALLCODEEcrecover0_overlappingInputOutput_d0g0v0_Shanghai - - CALLCODEEcrecover3_d0g0v0_Shanghai - - CALLCODEEcrecoverH_prefixed0_d0g0v0_Shanghai - - CALLCODEEcrecoverS_prefixed0_d0g0v0_Shanghai - - CALLCODEEcrecoverV_prefixed0_d0g0v0_Shanghai - - CALLCODERipemd160_1_d0g0v0_Shanghai - - CALLCODERipemd160_2_d0g0v0_Shanghai - - CALLCODERipemd160_3_postfixed0_d0g0v0_Shanghai - - CALLCODERipemd160_3_d0g0v0_Shanghai - - CALLCODERipemd160_3_prefixed0_d0g0v0_Shanghai - - CALLCODESha256_0_d0g0v0_Shanghai - - CALLCODESha256_1_d0g0v0_Shanghai - - CALLCODERipemd160_4_d0g0v0_Shanghai - - CALLCODESha256_1_nonzeroValue_d0g0v0_Shanghai - - CALLCODESha256_2_d0g0v0_Shanghai - - CALLCODESha256_3_d0g0v0_Shanghai - - CALLCODESha256_3_postfix0_d0g0v0_Shanghai - - CALLCODESha256_3_prefix0_d0g0v0_Shanghai - - CALLCODESha256_4_d0g0v0_Shanghai - - CALLCODESha256_4_gas99_d0g0v0_Shanghai - - CallEcrecover0_0input_d0g0v0_Shanghai - - CallEcrecover0_completeReturnValue_d0g0v0_Shanghai - - CallEcrecover0_Gas2999_d0g0v0_Shanghai - - CallEcrecover0_d0g0v0_Shanghai - - CallEcrecover0_NoGas_d0g0v0_Shanghai - - CallEcrecover0_gas3000_d0g0v0_Shanghai - - CallEcrecover0_overlappingInputOutput_d0g0v0_Shanghai - - CallEcrecover1_d0g0v0_Shanghai - - CallEcrecoverInvalidSignature_d0g0v0_Shanghai - - CallEcrecover2_d0g0v0_Shanghai - - CallEcrecover80_d0g0v0_Shanghai - - CallEcrecover3_d0g0v0_Shanghai - - CallEcrecoverH_prefixed0_d0g0v0_Shanghai - - CallEcrecoverCheckLengthWrongV_d0g0v0_Shanghai - - CallEcrecoverCheckLength_d0g0v0_Shanghai - - CallEcrecoverR_prefixed0_d0g0v0_Shanghai - - CallEcrecoverS_prefixed0_d0g0v0_Shanghai - - CallEcrecoverUnrecoverableKey_d0g0v0_Shanghai - - CallEcrecoverV_prefixed0_d0g0v0_Shanghai - - CallEcrecover_Overflow_d0g0v0_Shanghai - - CallEcrecover_Overflow_d1g0v0_Shanghai - - CallIdentitiy_1_d0g0v0_Shanghai - - CallIdentitiy_0_d0g0v0_Shanghai - - CallIdentity_1_nonzeroValue_d0g0v0_Shanghai - - CallIdentity_2_d0g0v0_Shanghai - - CallIdentity_3_d0g0v0_Shanghai - - CallIdentity_4_d0g0v0_Shanghai - - CallEcrecover_Overflow_d2g0v0_Shanghai - - CallIdentity_4_gas18_d0g0v0_Shanghai - - CallIdentity_4_gas17_d0g0v0_Shanghai - - CallEcrecover_Overflow_d3g0v0_Shanghai - - CallEcrecover_Overflow_d4g0v0_Shanghai - - CallRipemd160_0_d0g0v0_Shanghai - - CallEcrecover_Overflow_d5g0v0_Shanghai - - CallIdentity_6_inputShorterThanOutput_d0g0v0_Shanghai - - CallRipemd160_1_d0g0v0_Shanghai - - CallEcrecover_Overflow_d6g0v0_Shanghai - - CallEcrecover_Overflow_d7g0v0_Shanghai - - CallRipemd160_2_d0g0v0_Shanghai - - CallRipemd160_3_d0g0v0_Shanghai - - CallRipemd160_3_postfixed0_d0g0v0_Shanghai - - CallRipemd160_3_prefixed0_d0g0v0_Shanghai - - CallRipemd160_4_d0g0v0_Shanghai - - CallRipemd160_4_gas719_d0g0v0_Shanghai - - CallSha256_1_d0g0v0_Shanghai - - CallSha256_0_d0g0v0_Shanghai - - CallSha256_1_nonzeroValue_d0g0v0_Shanghai - - CallSha256_2_d0g0v0_Shanghai - - CallSha256_3_d0g0v0_Shanghai - - CallSha256_3_postfix0_d0g0v0_Shanghai - - CallSha256_3_prefix0_d0g0v0_Shanghai - - CallSha256_4_d0g0v0_Shanghai - - CallSha256_4_gas99_d0g0v0_Shanghai - - ecrecoverWeirdV_d0g0v0_Shanghai - - ecrecoverWeirdV_d10g0v0_Shanghai - - ecrecoverWeirdV_d11g0v0_Shanghai - - ecrecoverWeirdV_d12g0v0_Shanghai - - ecrecoverWeirdV_d13g0v0_Shanghai - - ecrecoverWeirdV_d14g0v0_Shanghai - - ecrecoverWeirdV_d15g0v0_Shanghai - - ecrecoverWeirdV_d18g0v0_Shanghai - - ecrecoverWeirdV_d16g0v0_Shanghai - - ecrecoverWeirdV_d17g0v0_Shanghai - - ecrecoverWeirdV_d19g0v0_Shanghai - - ecrecoverWeirdV_d1g0v0_Shanghai - - ecrecoverWeirdV_d20g0v0_Shanghai - - ecrecoverWeirdV_d21g0v0_Shanghai - - ecrecoverWeirdV_d22g0v0_Shanghai - - ecrecoverWeirdV_d23g0v0_Shanghai - - ecrecoverWeirdV_d24g0v0_Shanghai - - ecrecoverWeirdV_d25g0v0_Shanghai - - ecrecoverWeirdV_d26g0v0_Shanghai - - ecrecoverWeirdV_d28g0v0_Shanghai - - ecrecoverWeirdV_d27g0v0_Shanghai - - ecrecoverWeirdV_d2g0v0_Shanghai - - ecrecoverWeirdV_d29g0v0_Shanghai - - ecrecoverWeirdV_d30g0v0_Shanghai - - ecrecoverWeirdV_d32g0v0_Shanghai - - ecrecoverWeirdV_d31g0v0_Shanghai - - ecrecoverWeirdV_d33g0v0_Shanghai - - ecrecoverWeirdV_d35g0v0_Shanghai - - ecrecoverWeirdV_d34g0v0_Shanghai - - ecrecoverWeirdV_d3g0v0_Shanghai - - ecrecoverWeirdV_d4g0v0_Shanghai - - ecrecoverWeirdV_d5g0v0_Shanghai - - ecrecoverWeirdV_d6g0v0_Shanghai - - ecrecoverWeirdV_d8g0v0_Shanghai - - ecrecoverWeirdV_d7g0v0_Shanghai - - ecrecoverWeirdV_d9g0v0_Shanghai - - modexp_0_0_0_20500_d0g1v0_Shanghai - - modexp_0_0_0_20500_d0g2v0_Shanghai - - modexp_0_0_0_20500_d0g3v0_Shanghai - - modexp_0_0_0_22000_d0g0v0_Shanghai - - modexp_0_0_0_22000_d0g2v0_Shanghai - - modexp_0_0_0_22000_d0g1v0_Shanghai - - modexp_0_0_0_25000_d0g3v0_Shanghai - - modexp_0_0_0_22000_d0g3v0_Shanghai - - modexp_0_0_0_25000_d0g0v0_Shanghai - - modexp_0_0_0_25000_d0g1v0_Shanghai - - modexp_0_0_0_25000_d0g2v0_Shanghai - - modexp_0_0_0_35000_d0g0v0_Shanghai - - modexp_0_0_0_35000_d0g1v0_Shanghai - - modexp_0_0_0_35000_d0g3v0_Shanghai - - modexp_0_0_0_35000_d0g2v0_Shanghai - - CALLCODEIdentity_5_d0g0v0_Shanghai - - CALLCODERipemd160_5_d0g0v0_Shanghai - - CALLCODESha256_5_d0g0v0_Shanghai - - CallIdentity_5_d0g0v0_Shanghai - - CallRipemd160_5_d0g0v0_Shanghai - - CallSha256_5_d0g0v0_Shanghai - - ecrecoverShortBuff_d0g0v0_Shanghai - stPreCompiledContracts: - - blake2B_d0g0v0_Shanghai - - blake2B_d1g0v0_Shanghai - - blake2B_d2g0v0_Shanghai - - delegatecall09Undefined_d0g0v0_Shanghai - - blake2B_d3g0v0_Shanghai - - blake2B_d4g0v0_Shanghai - - blake2B_d5g0v0_Shanghai - - idPrecomps_d0g0v0_Shanghai - - blake2B_d6g0v0_Shanghai - - blake2B_d10g0v0_Shanghai - - blake2B_d11g0v0_Shanghai - - blake2B_d7g0v0_Shanghai - - blake2B_d8g0v0_Shanghai - - blake2B_d12g0v0_Shanghai - - blake2B_d13g0v0_Shanghai - - blake2B_d14g0v0_Shanghai - - blake2B_d15g0v0_Shanghai - - blake2B_d9g0v0_Shanghai - - idPrecomps_d1g0v0_Shanghai - - blake2B_d17g0v0_Shanghai - - blake2B_d18g0v0_Shanghai - - blake2B_d19g0v0_Shanghai - - blake2B_d23g0v0_Shanghai - - blake2B_d21g0v0_Shanghai - - blake2B_d16g0v0_Shanghai - - blake2B_d20g0v0_Shanghai - - blake2B_d24g0v0_Shanghai - - blake2B_d25g0v0_Shanghai - - blake2B_d22g0v0_Shanghai - - idPrecomps_d2g0v0_Shanghai - - idPrecomps_d3g0v0_Shanghai - - idPrecomps_d4g0v0_Shanghai - - idPrecomps_d5g0v0_Shanghai - - idPrecomps_d6g0v0_Shanghai - - idPrecomps_d7g0v0_Shanghai - - idPrecomps_d8g0v0_Shanghai - - identity_to_bigger_d0g0v0_Shanghai - - identity_to_smaller_d0g0v0_Shanghai - - modexpTests_d0g0v0_Shanghai - - modexpTests_d100g0v0_Shanghai - - modexpTests_d101g0v0_Shanghai - - modexpTests_d102g0v0_Shanghai - - modexpTests_d103g0v0_Shanghai - - modexpTests_d104g0v0_Shanghai - - modexpTests_d106g0v0_Shanghai - - modexpTests_d105g0v0_Shanghai - - modexpTests_d107g0v0_Shanghai - - modexpTests_d108g0v0_Shanghai - - modexpTests_d109g0v0_Shanghai - - modexpTests_d10g0v0_Shanghai - - modexpTests_d110g0v0_Shanghai - - modexpTests_d111g0v0_Shanghai - - modexpTests_d112g0v0_Shanghai - - modexpTests_d113g0v0_Shanghai - - modexpTests_d114g0v0_Shanghai - - modexpTests_d115g0v0_Shanghai - - modexpTests_d116g0v0_Shanghai - - modexpTests_d117g0v0_Shanghai - - modexpTests_d118g0v0_Shanghai - - modexpTests_d11g0v0_Shanghai - - modexpTests_d120g0v0_Shanghai - - modexpTests_d119g0v0_Shanghai - - modexpTests_d121g0v0_Shanghai - - modexpTests_d122g0v0_Shanghai - - modexpTests_d123g0v0_Shanghai - - modexpTests_d124g0v0_Shanghai - - modexpTests_d125g0v0_Shanghai - - modexpTests_d126g0v0_Shanghai - - modexpTests_d12g0v0_Shanghai - - modexpTests_d13g0v0_Shanghai - - modexpTests_d14g0v0_Shanghai - - modexpTests_d15g0v0_Shanghai - - modexpTests_d16g0v0_Shanghai - - modexpTests_d18g0v0_Shanghai - - modexpTests_d17g0v0_Shanghai - - modexpTests_d19g0v0_Shanghai - - modexpTests_d1g0v0_Shanghai - - modexpTests_d20g0v0_Shanghai - - modexpTests_d21g0v0_Shanghai - - modexpTests_d22g0v0_Shanghai - - modexpTests_d24g0v0_Shanghai - - modexpTests_d23g0v0_Shanghai - - modexpTests_d25g0v0_Shanghai - - modexpTests_d26g0v0_Shanghai - - modexpTests_d27g0v0_Shanghai - - modexpTests_d29g0v0_Shanghai - - modexpTests_d28g0v0_Shanghai - - modexpTests_d2g0v0_Shanghai - - modexpTests_d30g0v0_Shanghai - - modexpTests_d31g0v0_Shanghai - - modexpTests_d32g0v0_Shanghai - - modexpTests_d33g0v0_Shanghai - - modexpTests_d34g0v0_Shanghai - - modexpTests_d36g0v0_Shanghai - - modexpTests_d35g0v0_Shanghai - - modexpTests_d38g0v0_Shanghai - - modexpTests_d37g0v0_Shanghai - - modexpTests_d39g0v0_Shanghai - - modexpTests_d3g0v0_Shanghai - - modexpTests_d40g0v0_Shanghai - - modexpTests_d41g0v0_Shanghai - - modexpTests_d42g0v0_Shanghai - - modexpTests_d43g0v0_Shanghai - - modexpTests_d44g0v0_Shanghai - - modexpTests_d45g0v0_Shanghai - - modexpTests_d46g0v0_Shanghai - - modexpTests_d47g0v0_Shanghai - - modexpTests_d48g0v0_Shanghai - - modexpTests_d49g0v0_Shanghai - - modexpTests_d4g0v0_Shanghai - - modexpTests_d50g0v0_Shanghai - - modexpTests_d51g0v0_Shanghai - - modexpTests_d52g0v0_Shanghai - - modexpTests_d53g0v0_Shanghai - - modexpTests_d54g0v0_Shanghai - - modexpTests_d55g0v0_Shanghai - - modexpTests_d56g0v0_Shanghai - - modexpTests_d57g0v0_Shanghai - - modexpTests_d59g0v0_Shanghai - - modexpTests_d58g0v0_Shanghai - - modexpTests_d5g0v0_Shanghai - - modexpTests_d60g0v0_Shanghai - - modexpTests_d61g0v0_Shanghai - - modexpTests_d62g0v0_Shanghai - - modexpTests_d64g0v0_Shanghai - - modexpTests_d63g0v0_Shanghai - - modexpTests_d65g0v0_Shanghai - - modexpTests_d66g0v0_Shanghai - - modexpTests_d67g0v0_Shanghai - - modexpTests_d68g0v0_Shanghai - - modexpTests_d69g0v0_Shanghai - - modexpTests_d6g0v0_Shanghai - - modexpTests_d70g0v0_Shanghai - - modexpTests_d71g0v0_Shanghai - - modexpTests_d72g0v0_Shanghai - - modexpTests_d73g0v0_Shanghai - - modexpTests_d74g0v0_Shanghai - - modexpTests_d75g0v0_Shanghai - - modexpTests_d76g0v0_Shanghai - - modexpTests_d77g0v0_Shanghai - - modexpTests_d78g0v0_Shanghai - - modexpTests_d79g0v0_Shanghai - - modexpTests_d7g0v0_Shanghai - - modexpTests_d81g0v0_Shanghai - - modexpTests_d80g0v0_Shanghai - - modexpTests_d82g0v0_Shanghai - - modexpTests_d83g0v0_Shanghai - - modexpTests_d84g0v0_Shanghai - - modexpTests_d86g0v0_Shanghai - - modexpTests_d85g0v0_Shanghai - - modexpTests_d87g0v0_Shanghai - - modexpTests_d88g0v0_Shanghai - - modexpTests_d89g0v0_Shanghai - - modexpTests_d8g0v0_Shanghai - - modexpTests_d90g0v0_Shanghai - - modexpTests_d91g0v0_Shanghai - - modexpTests_d93g0v0_Shanghai - - modexpTests_d92g0v0_Shanghai - - modexpTests_d94g0v0_Shanghai - - modexpTests_d95g0v0_Shanghai - - modexpTests_d96g0v0_Shanghai - - modexpTests_d97g0v0_Shanghai - - modexpTests_d98g0v0_Shanghai - - modexpTests_d99g0v0_Shanghai - - modexp_d0g0v0_Shanghai - - modexpTests_d9g0v0_Shanghai - - modexp_d0g1v0_Shanghai - - modexp_d0g2v0_Shanghai - - modexp_d0g3v0_Shanghai - - modexp_d11g0v0_Shanghai - - modexp_d11g1v0_Shanghai - - modexp_d11g2v0_Shanghai - - modexp_d11g3v0_Shanghai - - modexp_d14g0v0_Shanghai - - modexp_d14g1v0_Shanghai - - modexp_d14g2v0_Shanghai - - modexp_d14g3v0_Shanghai - - modexp_d16g1v0_Shanghai - - modexp_d16g2v0_Shanghai - - modexp_d16g0v0_Shanghai - - modexp_d17g0v0_Shanghai - - modexp_d16g3v0_Shanghai - - modexp_d17g1v0_Shanghai - - modexp_d17g2v0_Shanghai - - modexp_d17g3v0_Shanghai - - modexp_d25g0v0_Shanghai - - modexp_d25g2v0_Shanghai - - modexp_d25g1v0_Shanghai - - modexp_d25g3v0_Shanghai - - modexp_d26g0v0_Shanghai - - modexp_d26g1v0_Shanghai - - modexp_d26g2v0_Shanghai - - modexp_d26g3v0_Shanghai - - modexp_d32g1v0_Shanghai - - modexp_d32g2v0_Shanghai - - modexp_d32g0v0_Shanghai - - modexp_d27g1v0_Shanghai - - modexp_d31g0v0_Shanghai - - modexp_d31g1v0_Shanghai - - modexp_d31g2v0_Shanghai - - modexp_d31g3v0_Shanghai - - modexp_d27g3v0_Shanghai - - modexp_d32g3v0_Shanghai - - modexp_d27g0v0_Shanghai - - modexp_d33g0v0_Shanghai - - modexp_d27g2v0_Shanghai - - modexp_d33g2v0_Shanghai - - modexp_d33g1v0_Shanghai - - modexp_d33g3v0_Shanghai - - modexp_d34g0v0_Shanghai - - modexp_d34g1v0_Shanghai - - modexp_d34g2v0_Shanghai - - modexp_d34g3v0_Shanghai - - modexp_d35g0v0_Shanghai - - modexp_d35g1v0_Shanghai - - modexp_d35g2v0_Shanghai - - modexp_d35g3v0_Shanghai - - modexp_d4g0v0_Shanghai - - modexp_d4g1v0_Shanghai - - modexp_d4g2v0_Shanghai - - modexp_d4g3v0_Shanghai - - modexp_d3g0v0_Shanghai - - modexp_d3g1v0_Shanghai - - modexp_d3g3v0_Shanghai - - modexp_d3g2v0_Shanghai - - modexp_d6g0v0_Shanghai - - modexp_d6g1v0_Shanghai - - modexp_d6g2v0_Shanghai - - modexp_d7g0v0_Shanghai - - modexp_d7g1v0_Shanghai - - modexp_d7g2v0_Shanghai - - modexp_d6g3v0_Shanghai - - modexp_d7g3v0_Shanghai - - precompsEIP2929_d10g0v0_Shanghai - - precompsEIP2929_d11g0v0_Shanghai - - precompsEIP2929_d106g0v0_Shanghai - - precompsEIP2929_d18g0v0_Shanghai - - precompsEIP2929_d19g0v0_Shanghai - - precompsEIP2929_d20g0v0_Shanghai - - precompsEIP2929_d21g0v0_Shanghai - - precompsEIP2929_d22g0v0_Shanghai - - precompsEIP2929_d23g0v0_Shanghai - - precompsEIP2929_d24g0v0_Shanghai - - precompsEIP2929_d25g0v0_Shanghai - - precompsEIP2929_d26g0v0_Shanghai - - precompsEIP2929_d270g0v0_Shanghai - - precompsEIP2929_d271g0v0_Shanghai - - precompsEIP2929_d272g0v0_Shanghai - - precompsEIP2929_d273g0v0_Shanghai - - precompsEIP2929_d274g0v0_Shanghai - - precompsEIP2929_d275g0v0_Shanghai - - precompsEIP2929_d276g0v0_Shanghai - - precompsEIP2929_d277g0v0_Shanghai - - precompsEIP2929_d278g0v0_Shanghai - - precompsEIP2929_d288g0v0_Shanghai - - precompsEIP2929_d289g0v0_Shanghai - - precompsEIP2929_d290g0v0_Shanghai - - precompsEIP2929_d291g0v0_Shanghai - - precompsEIP2929_d292g0v0_Shanghai - - precompsEIP2929_d293g0v0_Shanghai - - precompsEIP2929_d294g0v0_Shanghai - - precompsEIP2929_d295g0v0_Shanghai - - precompsEIP2929_d296g0v0_Shanghai - - precompsEIP2929_d306g0v0_Shanghai - - precompsEIP2929_d307g0v0_Shanghai - - precompsEIP2929_d308g0v0_Shanghai - - precompsEIP2929_d309g0v0_Shanghai - - precompsEIP2929_d310g0v0_Shanghai - - precompsEIP2929_d311g0v0_Shanghai - - precompsEIP2929_d312g0v0_Shanghai - - precompsEIP2929_d313g0v0_Shanghai - - precompsEIP2929_d314g0v0_Shanghai - - precompsEIP2929_d34g0v0_Shanghai - - precompsEIP2929_d36g0v0_Shanghai - - precompsEIP2929_d37g0v0_Shanghai - - precompsEIP2929_d38g0v0_Shanghai - - precompsEIP2929_d3g0v0_Shanghai - - precompsEIP2929_d39g0v0_Shanghai - - precompsEIP2929_d40g0v0_Shanghai - - precompsEIP2929_d41g0v0_Shanghai - - precompsEIP2929_d42g0v0_Shanghai - - precompsEIP2929_d43g0v0_Shanghai - - precompsEIP2929_d44g0v0_Shanghai - - precompsEIP2929_d4g0v0_Shanghai - - precompsEIP2929_d54g0v0_Shanghai - - precompsEIP2929_d55g0v0_Shanghai - - precompsEIP2929_d56g0v0_Shanghai - - precompsEIP2929_d5g0v0_Shanghai - - precompsEIP2929_d57g0v0_Shanghai - - precompsEIP2929_d58g0v0_Shanghai - - precompsEIP2929_d59g0v0_Shanghai - - precompsEIP2929_d60g0v0_Shanghai - - precompsEIP2929_d61g0v0_Shanghai - - precompsEIP2929_d62g0v0_Shanghai - - precompsEIP2929_d6g0v0_Shanghai - - precompsEIP2929_d7g0v0_Shanghai - - precompsEIP2929_d72g0v0_Shanghai - - precompsEIP2929_d73g0v0_Shanghai - - precompsEIP2929_d74g0v0_Shanghai - - precompsEIP2929_d75g0v0_Shanghai - - precompsEIP2929_d77g0v0_Shanghai - - precompsEIP2929_d76g0v0_Shanghai - - precompsEIP2929_d8g0v0_Shanghai - - precompsEIP2929_d78g0v0_Shanghai - - precompsEIP2929_d79g0v0_Shanghai - - precompsEIP2929_d80g0v0_Shanghai - - sec80_d0g0v0_Shanghai - - precompsEIP2929_d90g0v0_Shanghai - - precompsEIP2929_d91g0v0_Shanghai - - precompsEIP2929_d70g0v0_Shanghai - - precompsEIP2929_d92g0v0_Shanghai - - precompsEIP2929_d9g0v0_Shanghai - - precompsEIP2929_d93g0v0_Shanghai - - precompsEIP2929_d94g0v0_Shanghai - - precompsEIP2929_d95g0v0_Shanghai - - precompsEIP2929_d98g0v0_Shanghai - - precompsEIP2929_d96g0v0_Shanghai - - precompsEIP2929_d97g0v0_Shanghai - stRandom2: - - 201503110226PYTHON_DUP6_d0g0v0_Shanghai - - randomStatetest389_d0g0v0_Shanghai - - randomStatetest396_d0g0v0_Shanghai - - randomStatetest409_d0g0v0_Shanghai - - randomStatetest417_d0g0v0_Shanghai - - randomStatetest415_d0g0v0_Shanghai - - randomStatetest428_d0g0v0_Shanghai - - randomStatetest416_d0g0v0_Shanghai - - randomStatetest420_d0g0v0_Shanghai - - randomStatetest435_d0g0v0_Shanghai - - randomStatetest437_d0g0v0_Shanghai - - randomStatetest446_d0g0v0_Shanghai - - randomStatetest450_d0g0v0_Shanghai - - randomStatetest466_d0g0v0_Shanghai - - randomStatetest471_d0g0v0_Shanghai - - randomStatetest473_d0g0v0_Shanghai - - randomStatetest475_d0g0v0_Shanghai - - randomStatetest478_d0g0v0_Shanghai - - randomStatetest508_d0g0v0_Shanghai - - randomStatetest501_d0g0v0_Shanghai - - randomStatetest519_d0g0v0_Shanghai - - randomStatetest531_d0g0v0_Shanghai - - randomStatetest525_d0g0v0_Shanghai - - randomStatetest521_d0g0v0_Shanghai - - randomStatetest541_d0g0v0_Shanghai - - randomStatetest539_d0g0v0_Shanghai - - randomStatetest542_d0g0v0_Shanghai - - randomStatetest558_d0g0v0_Shanghai - - randomStatetest577_d0g0v0_Shanghai - - randomStatetest572_d0g0v0_Shanghai - - randomStatetest571_d0g0v0_Shanghai - - randomStatetest578_d0g0v0_Shanghai - - randomStatetest387_d0g0v0_Shanghai - - randomStatetest581_d0g0v0_Shanghai - - randomStatetest584_d0g0v0_Shanghai - - randomStatetest592_d0g0v0_Shanghai - - randomStatetest605_d0g0v0_Shanghai - - randomStatetest609_d0g0v0_Shanghai - - randomStatetest624_d0g0v0_Shanghai - - randomStatetest615_d0g0v0_Shanghai - - randomStatetest628_d0g0v0_Shanghai - - randomStatetest638_d0g0v0_Shanghai - - randomStatetest645_d0g0v0_Shanghai - - randomStatetest644_d0g0v0_Shanghai - - randomStatetest506_d0g0v0_Shanghai - - randomStatetest397_d0g0v0_Shanghai - - randomStatetest588_d0g0v0_Shanghai - - randomStatetest410_d0g0v0_Shanghai - - randomStatetest418_d0g0v0_Shanghai - - randomStatetest433_d0g0v0_Shanghai - - randomStatetest448_d0g0v0_Shanghai - - randomStatetest456_d0g0v0_Shanghai - - randomStatetest469_d0g0v0_Shanghai - - randomStatetest476_d0g0v0_Shanghai - - randomStatetest458_d0g0v0_Shanghai - - randomStatetest467_d0g0v0_Shanghai - - randomStatetest579_d0g0v0_Shanghai - - randomStatetest536_d0g0v0_Shanghai - - randomStatetest547_d0g0v0_Shanghai - - randomStatetest560_d0g0v0_Shanghai - - randomStatetest582_d0g0v0_Shanghai - - randomStatetest583_d0g0v0_Shanghai - - randomStatetest554_d0g0v0_Shanghai - - randomStatetest589_d0g0v0_Shanghai - - randomStatetest636_d0g0v0_Shanghai - - randomStatetest639_d0g0v0_Shanghai - - randomStatetest650_d0g0v0_Shanghai - stQuadraticComplexityTest: - - Call1MB1024Calldepth_d0g1v0_Shanghai - - Call20KbytesContract50_1_d0g1v0_Shanghai - - Call20KbytesContract50_2_d0g1v0_Shanghai - - Call20KbytesContract50_3_d0g1v0_Shanghai - - Return50000_d0g1v0_Shanghai - - Return50000_2_d0g1v0_Shanghai - stRandom: - - randomStatetest100_d0g0v0_Shanghai - - randomStatetest0_d0g0v0_Shanghai - - randomStatetest107_d0g0v0_Shanghai - - randomStatetest116_d0g0v0_Shanghai - - randomStatetest124_d0g0v0_Shanghai - - randomStatetest143_d0g0v0_Shanghai - - randomStatetest139_d0g0v0_Shanghai - - randomStatetest145_d0g0v0_Shanghai - - randomStatetest144_d0g0v0_Shanghai - - randomStatetest14_d0g0v0_Shanghai - - randomStatetest153_d0g0v0_Shanghai - - randomStatetest157_d0g0v0_Shanghai - - randomStatetest150_d0g0v0_Shanghai - - randomStatetest164_d0g0v0_Shanghai - - randomStatetest174_d0g0v0_Shanghai - - randomStatetest176_d0g0v0_Shanghai - - randomStatetest173_d0g0v0_Shanghai - - randomStatetest184_d0g0v0_Shanghai - - randomStatetest178_d0g0v0_Shanghai - - randomStatetest199_d0g0v0_Shanghai - - randomStatetest195_d0g0v0_Shanghai - - randomStatetest197_d0g0v0_Shanghai - - randomStatetest196_d0g0v0_Shanghai - - randomStatetest207_d0g0v0_Shanghai - - randomStatetest201_d0g0v0_Shanghai - - randomStatetest202_d0g0v0_Shanghai - - randomStatetest204_d0g0v0_Shanghai - - randomStatetest209_d0g0v0_Shanghai - - randomStatetest210_d0g0v0_Shanghai - - randomStatetest228_d0g0v0_Shanghai - - randomStatetest222_d0g0v0_Shanghai - - randomStatetest244_d0g0v0_Shanghai - - randomStatetest236_d0g0v0_Shanghai - - randomStatetest246_d0g0v0_Shanghai - - randomStatetest252_d0g0v0_Shanghai - - randomStatetest248_d0g0v0_Shanghai - - randomStatetest251_d0g0v0_Shanghai - - randomStatetest249_d0g0v0_Shanghai - - randomStatetest25_d0g0v0_Shanghai - - randomStatetest26_d0g0v0_Shanghai - - randomStatetest273_d0g0v0_Shanghai - - randomStatetest271_d0g0v0_Shanghai - - randomStatetest270_d0g0v0_Shanghai - - randomStatetest27_d0g0v0_Shanghai - - randomStatetest288_d0g0v0_Shanghai - - randomStatetest283_d0g0v0_Shanghai - - randomStatetest17_d0g0v0_Shanghai - - randomStatetest290_d0g0v0_Shanghai - - randomStatetest30_d0g0v0_Shanghai - - randomStatetest308_d0g0v0_Shanghai - - randomStatetest312_d0g0v0_Shanghai - - randomStatetest108_d0g0v0_Shanghai - - randomStatetest325_d0g0v0_Shanghai - - randomStatetest111_d0g0v0_Shanghai - - randomStatetest138_d0g0v0_Shanghai - - randomStatetest345_d0g0v0_Shanghai - - randomStatetest349_d0g0v0_Shanghai - - randomStatetest351_d0g0v0_Shanghai - - randomStatetest347_d0g0v0_Shanghai - - randomStatetest362_d0g0v0_Shanghai - - randomStatetest367_d0g0v0_Shanghai - - randomStatetest368_d0g0v0_Shanghai - - randomStatetest379_d0g0v0_Shanghai - - randomStatetest371_d0g0v0_Shanghai - - randomStatetest376_d0g0v0_Shanghai - - randomStatetest154_d0g0v0_Shanghai - - randomStatetest151_d0g0v0_Shanghai - - randomStatetest159_d0g0v0_Shanghai - - randomStatetest383_d0g0v0_Shanghai - - randomStatetest39_d0g0v0_Shanghai - - randomStatetest3_d0g0v0_Shanghai - - randomStatetest45_d0g0v0_Shanghai - - randomStatetest163_d0g0v0_Shanghai - - randomStatetest43_d0g0v0_Shanghai - - randomStatetest66_d0g0v0_Shanghai - - randomStatetest185_d0g0v0_Shanghai - - randomStatetest78_d0g0v0_Shanghai - - randomStatetest88_d0g0v0_Shanghai - - randomStatetest85_d0g0v0_Shanghai - - randomStatetest98_d0g0v0_Shanghai - - randomStatetest354_d0g0v0_Shanghai - - randomStatetest357_d0g0v0_Shanghai - - randomStatetest205_d0g0v0_Shanghai - - randomStatetest211_d0g0v0_Shanghai - - randomStatetest365_d0g0v0_Shanghai - - randomStatetest260_d0g0v0_Shanghai - - randomStatetest285_d0g0v0_Shanghai - - randomStatetest326_d0g0v0_Shanghai - - randomStatetest306_d0g0v0_Shanghai - - randomStatetest335_d0g0v0_Shanghai - - randomStatetest336_d0g0v0_Shanghai - - randomStatetest341_d0g0v0_Shanghai - - randomStatetest36_d0g0v0_Shanghai - - randomStatetest384_d0g0v0_Shanghai - - randomStatetest48_d0g0v0_Shanghai - - randomStatetest4_d0g0v0_Shanghai - - randomStatetest53_d0g0v0_Shanghai - stRefundTest: - - refundSuicide50procentCap_d1g0v0_Shanghai - - refund_CallToSuicideTwice_d1g0v0_Shanghai - - refund_multimpleSuicide_d0g0v0_Shanghai - stReturnDataTest: - - call_ecrec_success_empty_then_returndatasize_d0g0v0_Shanghai - - clearReturnBuffer_d100g0v0_Shanghai - - clearReturnBuffer_d101g0v0_Shanghai - - clearReturnBuffer_d106g0v0_Shanghai - - clearReturnBuffer_d102g0v0_Shanghai - - clearReturnBuffer_d103g0v0_Shanghai - - clearReturnBuffer_d107g0v0_Shanghai - - clearReturnBuffer_d108g0v0_Shanghai - - clearReturnBuffer_d109g0v0_Shanghai - - clearReturnBuffer_d112g0v0_Shanghai - - clearReturnBuffer_d104g0v0_Shanghai - - clearReturnBuffer_d105g0v0_Shanghai - - clearReturnBuffer_d113g0v0_Shanghai - - clearReturnBuffer_d110g0v0_Shanghai - - clearReturnBuffer_d111g0v0_Shanghai - - clearReturnBuffer_d114g0v0_Shanghai - - clearReturnBuffer_d115g0v0_Shanghai - - clearReturnBuffer_d116g0v0_Shanghai - - clearReturnBuffer_d10g0v0_Shanghai - - clearReturnBuffer_d117g0v0_Shanghai - - clearReturnBuffer_d120g0v0_Shanghai - - clearReturnBuffer_d121g0v0_Shanghai - - clearReturnBuffer_d123g0v0_Shanghai - - clearReturnBuffer_d122g0v0_Shanghai - - clearReturnBuffer_d0g0v0_Shanghai - - clearReturnBuffer_d118g0v0_Shanghai - - clearReturnBuffer_d119g0v0_Shanghai - - clearReturnBuffer_d124g0v0_Shanghai - - clearReturnBuffer_d127g0v0_Shanghai - - clearReturnBuffer_d126g0v0_Shanghai - - clearReturnBuffer_d128g0v0_Shanghai - - clearReturnBuffer_d129g0v0_Shanghai - - clearReturnBuffer_d125g0v0_Shanghai - - clearReturnBuffer_d130g0v0_Shanghai - - clearReturnBuffer_d131g0v0_Shanghai - - clearReturnBuffer_d134g0v0_Shanghai - - clearReturnBuffer_d11g0v0_Shanghai - - clearReturnBuffer_d135g0v0_Shanghai - - clearReturnBuffer_d136g0v0_Shanghai - - clearReturnBuffer_d137g0v0_Shanghai - - clearReturnBuffer_d132g0v0_Shanghai - - clearReturnBuffer_d133g0v0_Shanghai - - clearReturnBuffer_d138g0v0_Shanghai - - clearReturnBuffer_d139g0v0_Shanghai - - clearReturnBuffer_d12g0v0_Shanghai - - clearReturnBuffer_d140g0v0_Shanghai - - clearReturnBuffer_d141g0v0_Shanghai - - clearReturnBuffer_d142g0v0_Shanghai - - clearReturnBuffer_d143g0v0_Shanghai - - clearReturnBuffer_d13g0v0_Shanghai - - clearReturnBuffer_d144g0v0_Shanghai - - clearReturnBuffer_d145g0v0_Shanghai - - clearReturnBuffer_d148g0v0_Shanghai - - clearReturnBuffer_d149g0v0_Shanghai - - clearReturnBuffer_d14g0v0_Shanghai - - clearReturnBuffer_d150g0v0_Shanghai - - clearReturnBuffer_d151g0v0_Shanghai - - clearReturnBuffer_d146g0v0_Shanghai - - clearReturnBuffer_d147g0v0_Shanghai - - clearReturnBuffer_d152g0v0_Shanghai - - clearReturnBuffer_d154g0v0_Shanghai - - clearReturnBuffer_d153g0v0_Shanghai - - clearReturnBuffer_d15g0v0_Shanghai - - clearReturnBuffer_d155g0v0_Shanghai - - clearReturnBuffer_d156g0v0_Shanghai - - clearReturnBuffer_d157g0v0_Shanghai - - clearReturnBuffer_d158g0v0_Shanghai - - clearReturnBuffer_d159g0v0_Shanghai - - clearReturnBuffer_d162g0v0_Shanghai - - clearReturnBuffer_d163g0v0_Shanghai - - clearReturnBuffer_d164g0v0_Shanghai - - clearReturnBuffer_d160g0v0_Shanghai - - clearReturnBuffer_d28g0v0_Shanghai - - clearReturnBuffer_d165g0v0_Shanghai - - clearReturnBuffer_d161g0v0_Shanghai - - clearReturnBuffer_d29g0v0_Shanghai - - clearReturnBuffer_d30g0v0_Shanghai - - clearReturnBuffer_d31g0v0_Shanghai - - clearReturnBuffer_d166g0v0_Shanghai - - clearReturnBuffer_d32g0v0_Shanghai - - clearReturnBuffer_d1g0v0_Shanghai - - clearReturnBuffer_d16g0v0_Shanghai - - clearReturnBuffer_d17g0v0_Shanghai - - clearReturnBuffer_d33g0v0_Shanghai - - clearReturnBuffer_d37g0v0_Shanghai - - clearReturnBuffer_d167g0v0_Shanghai - - clearReturnBuffer_d18g0v0_Shanghai - - clearReturnBuffer_d19g0v0_Shanghai - - clearReturnBuffer_d38g0v0_Shanghai - - clearReturnBuffer_d39g0v0_Shanghai - - clearReturnBuffer_d23g0v0_Shanghai - - clearReturnBuffer_d24g0v0_Shanghai - - clearReturnBuffer_d25g0v0_Shanghai - - clearReturnBuffer_d34g0v0_Shanghai - - clearReturnBuffer_d35g0v0_Shanghai - - clearReturnBuffer_d20g0v0_Shanghai - - clearReturnBuffer_d2g0v0_Shanghai - - clearReturnBuffer_d42g0v0_Shanghai - - clearReturnBuffer_d21g0v0_Shanghai - - clearReturnBuffer_d43g0v0_Shanghai - - clearReturnBuffer_d44g0v0_Shanghai - - clearReturnBuffer_d45g0v0_Shanghai - - clearReturnBuffer_d40g0v0_Shanghai - - clearReturnBuffer_d46g0v0_Shanghai - - clearReturnBuffer_d41g0v0_Shanghai - - clearReturnBuffer_d26g0v0_Shanghai - - clearReturnBuffer_d27g0v0_Shanghai - - clearReturnBuffer_d47g0v0_Shanghai - - clearReturnBuffer_d51g0v0_Shanghai - - clearReturnBuffer_d52g0v0_Shanghai - - clearReturnBuffer_d3g0v0_Shanghai - - clearReturnBuffer_d53g0v0_Shanghai - - clearReturnBuffer_d56g0v0_Shanghai - - clearReturnBuffer_d57g0v0_Shanghai - - clearReturnBuffer_d48g0v0_Shanghai - - clearReturnBuffer_d49g0v0_Shanghai - - clearReturnBuffer_d58g0v0_Shanghai - - clearReturnBuffer_d59g0v0_Shanghai - - clearReturnBuffer_d54g0v0_Shanghai - - clearReturnBuffer_d61g0v0_Shanghai - - clearReturnBuffer_d60g0v0_Shanghai - - clearReturnBuffer_d55g0v0_Shanghai - - clearReturnBuffer_d65g0v0_Shanghai - - clearReturnBuffer_d66g0v0_Shanghai - - clearReturnBuffer_d67g0v0_Shanghai - - clearReturnBuffer_d4g0v0_Shanghai - - clearReturnBuffer_d62g0v0_Shanghai - - clearReturnBuffer_d63g0v0_Shanghai - - clearReturnBuffer_d70g0v0_Shanghai - - clearReturnBuffer_d71g0v0_Shanghai - - clearReturnBuffer_d72g0v0_Shanghai - - clearReturnBuffer_d73g0v0_Shanghai - - clearReturnBuffer_d74g0v0_Shanghai - - clearReturnBuffer_d5g0v0_Shanghai - - clearReturnBuffer_d75g0v0_Shanghai - - clearReturnBuffer_d68g0v0_Shanghai - - clearReturnBuffer_d69g0v0_Shanghai - - clearReturnBuffer_d85g0v0_Shanghai - - clearReturnBuffer_d84g0v0_Shanghai - - create_callprecompile_returndatasize_d0g0v0_Shanghai - - modexp_modsize0_returndatasize_d1g0v0_Shanghai - - clearReturnBuffer_d78g0v0_Shanghai - - clearReturnBuffer_d79g0v0_Shanghai - - clearReturnBuffer_d86g0v0_Shanghai - - modexp_modsize0_returndatasize_d2g0v0_Shanghai - - clearReturnBuffer_d87g0v0_Shanghai - - clearReturnBuffer_d88g0v0_Shanghai - - clearReturnBuffer_d89g0v0_Shanghai - - modexp_modsize0_returndatasize_d3g0v0_Shanghai - - clearReturnBuffer_d92g0v0_Shanghai - - clearReturnBuffer_d80g0v0_Shanghai - - clearReturnBuffer_d76g0v0_Shanghai - - clearReturnBuffer_d77g0v0_Shanghai - - clearReturnBuffer_d93g0v0_Shanghai - - clearReturnBuffer_d81g0v0_Shanghai - - returndatasize_after_failing_callcode_d0g0v0_Shanghai - - returndatasize_after_failing_staticcall_d0g0v0_Shanghai - - returndatasize_after_failing_delegatecall_d0g0v0_Shanghai - - clearReturnBuffer_d90g0v0_Shanghai - - returndatasize_bug_d0g0v0_Shanghai - - clearReturnBuffer_d91g0v0_Shanghai - - clearReturnBuffer_d82g0v0_Shanghai - - clearReturnBuffer_d83g0v0_Shanghai - - clearReturnBuffer_d95g0v0_Shanghai - - clearReturnBuffer_d94g0v0_Shanghai - - clearReturnBuffer_d6g0v0_Shanghai - - clearReturnBuffer_d99g0v0_Shanghai - - clearReturnBuffer_d98g0v0_Shanghai - - clearReturnBuffer_d96g0v0_Shanghai - - clearReturnBuffer_d97g0v0_Shanghai - - clearReturnBuffer_d7g0v0_Shanghai - - clearReturnBuffer_d9g0v0_Shanghai - - returndatasize_after_oog_after_deeper_d0g0v0_Shanghai - - revertRetDataSize_d10g0v0_Shanghai - - revertRetDataSize_d16g0v0_Shanghai - - revertRetDataSize_d0g0v0_Shanghai - - revertRetDataSize_d28g0v0_Shanghai - - revertRetDataSize_d1g0v0_Shanghai - - revertRetDataSize_d22g0v0_Shanghai - - revertRetDataSize_d25g0v0_Shanghai - - revertRetDataSize_d26g0v0_Shanghai - - revertRetDataSize_d24g0v0_Shanghai - - revertRetDataSize_d13g0v0_Shanghai - - revertRetDataSize_d14g0v0_Shanghai - - revertRetDataSize_d2g0v0_Shanghai - - revertRetDataSize_d15g0v0_Shanghai - - revertRetDataSize_d34g0v0_Shanghai - - revertRetDataSize_d12g0v0_Shanghai - - revertRetDataSize_d27g0v0_Shanghai - - tooLongReturnDataCopy_d0g0v0_Shanghai - - tooLongReturnDataCopy_d11g0v0_Shanghai - - revertRetDataSize_d20g0v0_Shanghai - - tooLongReturnDataCopy_d10g0v0_Shanghai - - revertRetDataSize_d19g0v0_Shanghai - - tooLongReturnDataCopy_d13g0v0_Shanghai - - revertRetDataSize_d21g0v0_Shanghai - - revertRetDataSize_d18g0v0_Shanghai - - tooLongReturnDataCopy_d12g0v0_Shanghai - - tooLongReturnDataCopy_d16g0v0_Shanghai - - tooLongReturnDataCopy_d18g0v0_Shanghai - - tooLongReturnDataCopy_d14g0v0_Shanghai - - tooLongReturnDataCopy_d15g0v0_Shanghai - - tooLongReturnDataCopy_d17g0v0_Shanghai - - tooLongReturnDataCopy_d1g0v0_Shanghai - - tooLongReturnDataCopy_d19g0v0_Shanghai - - tooLongReturnDataCopy_d20g0v0_Shanghai - - tooLongReturnDataCopy_d21g0v0_Shanghai - - tooLongReturnDataCopy_d22g0v0_Shanghai - - tooLongReturnDataCopy_d23g0v0_Shanghai - - tooLongReturnDataCopy_d4g0v0_Shanghai - - tooLongReturnDataCopy_d6g0v0_Shanghai - - tooLongReturnDataCopy_d2g0v0_Shanghai - - tooLongReturnDataCopy_d8g0v0_Shanghai - - tooLongReturnDataCopy_d9g0v0_Shanghai - - tooLongReturnDataCopy_d3g0v0_Shanghai - - tooLongReturnDataCopy_d5g0v0_Shanghai - - tooLongReturnDataCopy_d7g0v0_Shanghai - - revertRetDataSize_d3g0v0_Shanghai - - revertRetDataSize_d4g0v0_Shanghai - - revertRetDataSize_d6g0v0_Shanghai - - revertRetDataSize_d7g0v0_Shanghai - - revertRetDataSize_d8g0v0_Shanghai - - revertRetDataSize_d9g0v0_Shanghai - stRecursiveCreate: - - recursiveCreate_d0g0v0_Shanghai - stRevertTest: - - RevertDepthCreateOOG_d0g0v0_Shanghai - - RevertDepthCreateOOG_d0g0v1_Shanghai - - RevertDepthCreateOOG_d0g1v0_Shanghai - - RevertDepthCreateOOG_d0g1v1_Shanghai - - RevertDepthCreateOOG_d1g0v0_Shanghai - - RevertDepthCreateOOG_d1g0v1_Shanghai - - RevertInCreateInInit_d0g0v0_Shanghai - - RevertOpcodeCreate_d0g1v0_Shanghai - - RevertOpcodeMultipleSubCalls_d0g3v1_Shanghai - - RevertOpcodeMultipleSubCalls_d1g3v1_Shanghai - - RevertOpcodeMultipleSubCalls_d0g2v1_Shanghai - - RevertOpcodeMultipleSubCalls_d1g2v1_Shanghai - - RevertOpcodeMultipleSubCalls_d2g3v1_Shanghai - - RevertOpcodeMultipleSubCalls_d3g3v1_Shanghai - - RevertOpcodeMultipleSubCalls_d2g2v1_Shanghai - - RevertOpcodeMultipleSubCalls_d3g2v1_Shanghai - - RevertPrefoundEmpty_d0g0v0_Shanghai - - RevertPrefound_d0g0v0_Shanghai - - LoopCallsThenRevert_d0g0v0_Shanghai - - LoopDelegateCallsDepthThenRevert_d0g0v0_Shanghai - - LoopCallsDepthThenRevert_d0g0v0_Shanghai - - LoopCallsDepthThenRevert3_d0g0v0_Shanghai - - LoopCallsDepthThenRevert2_d0g0v0_Shanghai - - RevertRemoteSubCallStorageOOG_d0g0v0_Shanghai - stSLoadTest: - - sloadGasCost_d0g0v0_Shanghai - stSStoreTest: - - InitCollisionNonZeroNonce_d1g0v0_Shanghai - - InitCollision_d1g0v0_Shanghai - - sstore_0to0_d3g1v0_Shanghai - - InitCollisionNonZeroNonce_d3g0v0_Shanghai - - InitCollision_d3g0v0_Shanghai - - sstore_0to0_d0g1v0_Shanghai - - sstore_0to0_d1g1v0_Shanghai - - sstore_0to0_d2g1v0_Shanghai - - sstore_0to0to0_d3g1v0_Shanghai - - sstore_0to0_d4g0v0_Shanghai - - sstore_0to0to0_d0g1v0_Shanghai - - sstore_0to0_d4g1v0_Shanghai - - sstore_0to0to0_d1g1v0_Shanghai - - sstore_0to0to0_d2g1v0_Shanghai - - sstore_0to0toX_d3g1v0_Shanghai - - sstore_0to0to0_d4g1v0_Shanghai - - sstore_0to0to0_d4g0v0_Shanghai - - sstore_0to0toX_d0g1v0_Shanghai - - sstore_0to0toX_d1g1v0_Shanghai - - sstore_0to0toX_d2g1v0_Shanghai - - sstore_0toX_d3g1v0_Shanghai - - sstore_0to0toX_d4g0v0_Shanghai - - sstore_0toX_d0g1v0_Shanghai - - sstore_0to0toX_d4g1v0_Shanghai - - sstore_0toX_d1g1v0_Shanghai - - sstore_0toX_d2g1v0_Shanghai - - sstore_0toXto0_d3g1v0_Shanghai - - sstore_0toXto0_d0g1v0_Shanghai - - sstore_0toXto0_d1g1v0_Shanghai - - sstore_0toX_d4g0v0_Shanghai - - sstore_0toXto0_d2g1v0_Shanghai - - sstore_0toX_d4g1v0_Shanghai - - sstore_0toXto0toX_d3g1v0_Shanghai - - sstore_0toXto0toX_d0g1v0_Shanghai - - sstore_0toXto0toX_d1g1v0_Shanghai - - sstore_0toXto0_d4g0v0_Shanghai - - sstore_0toXto0_d4g1v0_Shanghai - - sstore_0toXto0toX_d2g1v0_Shanghai - - sstore_0toXtoX_d3g1v0_Shanghai - - sstore_0toXtoX_d0g1v0_Shanghai - - sstore_0toXtoX_d1g1v0_Shanghai - - sstore_0toXto0toX_d4g0v0_Shanghai - - sstore_0toXto0toX_d4g1v0_Shanghai - - sstore_0toXtoX_d2g1v0_Shanghai - - sstore_0toXtoY_d3g1v0_Shanghai - - sstore_0toXtoY_d0g1v0_Shanghai - - sstore_0toXtoY_d1g1v0_Shanghai - - sstore_0toXtoX_d4g0v0_Shanghai - - sstore_0toXtoY_d2g1v0_Shanghai - - sstore_0toXtoX_d4g1v0_Shanghai - - sstore_Xto0_d3g1v0_Shanghai - - sstore_Xto0_d0g1v0_Shanghai - - sstore_Xto0_d1g1v0_Shanghai - - sstore_0toXtoY_d4g0v0_Shanghai - - sstore_0toXtoY_d4g1v0_Shanghai - - sstore_Xto0_d2g1v0_Shanghai - - sstore_Xto0to0_d3g1v0_Shanghai - - sstore_Xto0to0_d0g1v0_Shanghai - - sstore_Xto0_d4g0v0_Shanghai - - sstore_Xto0to0_d1g1v0_Shanghai - - sstore_Xto0_d4g1v0_Shanghai - - sstore_Xto0to0_d2g1v0_Shanghai - - sstore_Xto0toX_d3g1v0_Shanghai - - sstore_Xto0toX_d0g1v0_Shanghai - - sstore_Xto0toX_d1g1v0_Shanghai - - sstore_Xto0toX_d2g1v0_Shanghai - - sstore_Xto0to0_d4g0v0_Shanghai - - sstore_Xto0to0_d4g1v0_Shanghai - - sstore_Xto0toXto0_d3g1v0_Shanghai - - sstore_Xto0toX_d4g0v0_Shanghai - - sstore_Xto0toXto0_d0g1v0_Shanghai - - sstore_Xto0toXto0_d1g1v0_Shanghai - - sstore_Xto0toXto0_d2g1v0_Shanghai - - sstore_Xto0toX_d4g1v0_Shanghai - - sstore_Xto0toY_d3g1v0_Shanghai - - sstore_Xto0toY_d0g1v0_Shanghai - - sstore_Xto0toY_d1g1v0_Shanghai - - sstore_Xto0toY_d2g1v0_Shanghai - - sstore_Xto0toXto0_d4g0v0_Shanghai - - sstore_Xto0toXto0_d4g1v0_Shanghai - - sstore_XtoX_d3g1v0_Shanghai - - sstore_Xto0toY_d4g0v0_Shanghai - - sstore_XtoX_d0g1v0_Shanghai - - sstore_Xto0toY_d4g1v0_Shanghai - - sstore_XtoX_d1g1v0_Shanghai - - sstore_XtoX_d2g1v0_Shanghai - - sstore_XtoXto0_d3g1v0_Shanghai - - sstore_XtoXto0_d0g1v0_Shanghai - - sstore_XtoX_d4g0v0_Shanghai - - sstore_XtoX_d4g1v0_Shanghai - - sstore_XtoXto0_d1g1v0_Shanghai - - sstore_XtoXto0_d2g1v0_Shanghai - - sstore_XtoXtoX_d3g1v0_Shanghai - - sstore_XtoXtoX_d0g1v0_Shanghai - - sstore_XtoXto0_d4g0v0_Shanghai - - sstore_XtoXto0_d4g1v0_Shanghai - - sstore_XtoXtoX_d2g1v0_Shanghai - - sstore_XtoXtoX_d1g1v0_Shanghai - - sstore_XtoXtoY_d3g1v0_Shanghai - - sstore_XtoXtoY_d0g1v0_Shanghai - - sstore_XtoXtoX_d4g0v0_Shanghai - - sstore_XtoXtoY_d1g1v0_Shanghai - - sstore_XtoXtoX_d4g1v0_Shanghai - - sstore_XtoXtoY_d2g1v0_Shanghai - - sstore_XtoY_d3g1v0_Shanghai - - sstore_XtoY_d0g1v0_Shanghai - - sstore_XtoXtoY_d4g0v0_Shanghai - - sstore_XtoY_d1g1v0_Shanghai - - sstore_XtoY_d2g1v0_Shanghai - - sstore_XtoXtoY_d4g1v0_Shanghai - - sstore_XtoYto0_d3g1v0_Shanghai - - sstore_XtoY_d4g0v0_Shanghai - - sstore_XtoYto0_d0g1v0_Shanghai - - sstore_XtoYto0_d1g1v0_Shanghai - - sstore_XtoYto0_d2g1v0_Shanghai - - sstore_XtoY_d4g1v0_Shanghai - - sstore_XtoYtoX_d3g1v0_Shanghai - - sstore_XtoYtoX_d0g1v0_Shanghai - - sstore_XtoYtoX_d1g1v0_Shanghai - - sstore_XtoYto0_d4g0v0_Shanghai - - sstore_XtoYto0_d4g1v0_Shanghai - - sstore_XtoYtoX_d2g1v0_Shanghai - - sstore_XtoYtoY_d3g1v0_Shanghai - - sstore_XtoYtoY_d0g1v0_Shanghai - - sstore_XtoYtoX_d4g0v0_Shanghai - - sstore_XtoYtoY_d1g1v0_Shanghai - - sstore_XtoYtoX_d4g1v0_Shanghai - - sstore_XtoYtoY_d2g1v0_Shanghai - - sstore_XtoYtoZ_d3g1v0_Shanghai - - sstore_XtoYtoZ_d0g1v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d12g0v0_Shanghai - - sstore_XtoYtoY_d4g0v0_Shanghai - - sstore_XtoYtoZ_d1g1v0_Shanghai - - sstore_XtoYtoY_d4g1v0_Shanghai - - sstore_XtoYtoZ_d2g1v0_Shanghai - - sstore_gasLeft_d0g0v0_Shanghai - - sstore_gasLeft_d1g0v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d13g0v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d1g0v0_Shanghai - - sstore_gasLeft_d4g0v0_Shanghai - - sstore_gasLeft_d3g0v0_Shanghai - - sstore_gasLeft_d6g0v0_Shanghai - - sstore_gasLeft_d7g0v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d5g0v0_Shanghai - - sstore_XtoYtoZ_d4g0v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d15g0v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d9g0v0_Shanghai - - sstore_XtoYtoZ_d4g1v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d11g0v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d3g0v0_Shanghai - - sstore_changeFromExternalCallInInitCode_d7g0v0_Shanghai - stSelfBalance: - - diffPlaces_d0g0v0_Shanghai - - diffPlaces_d1g0v0_Shanghai - - diffPlaces_d2g0v0_Shanghai - - diffPlaces_d3g0v0_Shanghai - - diffPlaces_d4g0v0_Shanghai - - diffPlaces_d5g0v0_Shanghai - - diffPlaces_d6g0v0_Shanghai - - diffPlaces_d10g0v0_Shanghai - - diffPlaces_d11g0v0_Shanghai - - diffPlaces_d12g0v0_Shanghai - - diffPlaces_d13g0v0_Shanghai - - diffPlaces_d14g0v0_Shanghai - - diffPlaces_d15g0v0_Shanghai - - diffPlaces_d16g0v0_Shanghai - - diffPlaces_d17g0v0_Shanghai - - diffPlaces_d7g0v0_Shanghai - - diffPlaces_d18g0v0_Shanghai - - diffPlaces_d19g0v0_Shanghai - - diffPlaces_d20g0v0_Shanghai - - diffPlaces_d8g0v0_Shanghai - - diffPlaces_d21g0v0_Shanghai - - diffPlaces_d9g0v0_Shanghai - - diffPlaces_d22g0v0_Shanghai - - diffPlaces_d24g0v0_Shanghai - - diffPlaces_d23g0v0_Shanghai - - diffPlaces_d25g0v0_Shanghai - - diffPlaces_d26g0v0_Shanghai - - diffPlaces_d28g0v0_Shanghai - - diffPlaces_d27g0v0_Shanghai - - diffPlaces_d31g0v0_Shanghai - - diffPlaces_d30g0v0_Shanghai - - diffPlaces_d29g0v0_Shanghai - - diffPlaces_d32g0v0_Shanghai - - diffPlaces_d33g0v0_Shanghai - - diffPlaces_d34g0v0_Shanghai - stShift: - - sar_2_xor_255_256_d0g0v0_Shanghai - - sar_2_xor_255_minus_1_256_d0g0v0_Shanghai - - sar_2_xor_256_minus_1_256_d0g0v0_Shanghai - - shiftSignedCombinations_d0g0v0_Shanghai - - shiftCombinations_d0g0v0_Shanghai - stSolidityTest: - - TestCryptographicFunctions_d0g0v0_Shanghai - - TestStructuresAndVariabless_d0g0v0_Shanghai - - SelfDestruct_d2g0v0_Shanghai - - SelfDestruct_d1g0v0_Shanghai - - SelfDestruct_d0g0v0_Shanghai - - RecursiveCreateContractsCreate4Contracts_d0g0v0_Shanghai - - RecursiveCreateContracts_d0g0v0_Shanghai - stSpecialTest: - - eoaEmpty_d0g0v1_Shanghai - - eoaEmpty_d1g0v1_Shanghai - - eoaEmpty_d0g0v0_Shanghai - - eoaEmpty_d0g1v0_Shanghai - - sha3_deja_d0g0v0_Shanghai - - makeMoney_d0g0v0_Shanghai - - eoaEmpty_d0g1v1_Shanghai - - eoaEmpty_d1g0v0_Shanghai - - eoaEmpty_d1g1v0_Shanghai - - eoaEmpty_d1g1v1_Shanghai - - selfdestructEIP2929_d0g0v0_Shanghai - - JUMPDEST_AttackwithJump_d0g0v0_Shanghai - - JUMPDEST_Attack_d0g0v0_Shanghai - - deploymentError_d0g0v0_Shanghai - - block504980_d0g0v0_Shanghai - - tx_e1c174e2_d0g0v0_Shanghai - stStackTests: - - stackOverflowM1DUP_d0g0v0_Shanghai - - stackOverflowM1DUP_d10g0v0_Shanghai - - stackOverflowM1DUP_d11g0v0_Shanghai - - stackOverflowM1DUP_d12g0v0_Shanghai - - stackOverflowM1DUP_d13g0v0_Shanghai - - stackOverflowM1DUP_d14g0v0_Shanghai - - stackOverflowM1DUP_d15g0v0_Shanghai - - stackOverflowM1DUP_d1g0v0_Shanghai - - stackOverflowM1DUP_d2g0v0_Shanghai - - stackOverflowM1DUP_d3g0v0_Shanghai - - stackOverflowM1DUP_d4g0v0_Shanghai - - stackOverflowM1DUP_d5g0v0_Shanghai - - stackOverflowM1DUP_d6g0v0_Shanghai - - stackOverflowM1DUP_d7g0v0_Shanghai - - stackOverflowM1DUP_d8g0v0_Shanghai - - stackOverflowM1DUP_d9g0v0_Shanghai - - stackOverflowM1PUSH_d0g0v0_Shanghai - - stackOverflowM1PUSH_d1g0v0_Shanghai - - stackOverflowM1PUSH_d11g0v0_Shanghai - - stackOverflowM1PUSH_d10g0v0_Shanghai - - stackOverflowM1PUSH_d12g0v0_Shanghai - - stackOverflowM1PUSH_d13g0v0_Shanghai - - stackOverflowM1PUSH_d14g0v0_Shanghai - - stackOverflowM1PUSH_d16g0v0_Shanghai - - stackOverflowM1PUSH_d17g0v0_Shanghai - - stackOverflowM1PUSH_d15g0v0_Shanghai - - stackOverflowM1PUSH_d18g0v0_Shanghai - - stackOverflowM1PUSH_d19g0v0_Shanghai - - stackOverflowM1PUSH_d20g0v0_Shanghai - - stackOverflowM1PUSH_d21g0v0_Shanghai - - stackOverflowM1PUSH_d22g0v0_Shanghai - - stackOverflowM1PUSH_d24g0v0_Shanghai - - stackOverflowM1PUSH_d23g0v0_Shanghai - - stackOverflowM1PUSH_d25g0v0_Shanghai - - stackOverflowM1PUSH_d26g0v0_Shanghai - - stackOverflowM1PUSH_d27g0v0_Shanghai - - stackOverflowM1PUSH_d28g0v0_Shanghai - - stackOverflowM1PUSH_d29g0v0_Shanghai - - stackOverflowM1PUSH_d2g0v0_Shanghai - - stackOverflowM1PUSH_d3g0v0_Shanghai - - stackOverflowM1PUSH_d4g0v0_Shanghai - - stackOverflowM1PUSH_d5g0v0_Shanghai - - stackOverflowM1PUSH_d30g0v0_Shanghai - - stackOverflowM1PUSH_d6g0v0_Shanghai - - stackOverflowM1PUSH_d7g0v0_Shanghai - - stackOverflowM1PUSH_d9g0v0_Shanghai - - stackOverflowM1PUSH_d8g0v0_Shanghai - - stackOverflowM1_d0g0v0_Shanghai - - stackOverflowM1_d10g0v0_Shanghai - - stackOverflowM1_d11g0v0_Shanghai - - stackOverflowM1_d12g0v0_Shanghai - - stackOverflowM1_d15g0v0_Shanghai - - stackOverflowM1_d13g0v0_Shanghai - - stackOverflowM1_d14g0v0_Shanghai - - stackOverflowM1_d1g0v0_Shanghai - - stackOverflowM1_d4g0v0_Shanghai - - stackOverflowM1_d2g0v0_Shanghai - - stackOverflowM1_d3g0v0_Shanghai - - stackOverflowM1_d5g0v0_Shanghai - - stackOverflowM1_d6g0v0_Shanghai - - stackOverflowM1_d7g0v0_Shanghai - - stackOverflowM1_d8g0v0_Shanghai - - stackOverflowM1_d9g0v0_Shanghai - - stackOverflowPUSH_d17g0v0_Shanghai - - stackOverflowPUSH_d18g0v0_Shanghai - - stackOverflowPUSH_d19g0v0_Shanghai - - stackOverflowPUSH_d20g0v0_Shanghai - - stackOverflowPUSH_d21g0v0_Shanghai - - stackOverflowPUSH_d23g0v0_Shanghai - - stackOverflowPUSH_d22g0v0_Shanghai - - stackOverflowPUSH_d24g0v0_Shanghai - - stackOverflowPUSH_d25g0v0_Shanghai - - stackOverflowSWAP_d0g0v0_Shanghai - - stackOverflowPUSH_d26g0v0_Shanghai - - stackOverflowPUSH_d27g0v0_Shanghai - - stackOverflowPUSH_d28g0v0_Shanghai - - stackOverflowPUSH_d29g0v0_Shanghai - - stackOverflowPUSH_d30g0v0_Shanghai - - stacksanitySWAP_d0g0v0_Shanghai - stStaticCall: - - StaticcallToPrecompileFromCalledContract_d0g0v0_Shanghai - - StaticcallToPrecompileFromTransaction_d0g0v0_Shanghai - - static_CREATE_EmptyContractAndCallIt_0wei_d0g0v0_Shanghai - - static_CREATE_EmptyContractWithStorageAndCallIt_0wei_d0g0v0_Shanghai - - StaticcallToPrecompileFromContractInitialization_d0g0v0_Shanghai - - static_ABAcalls2_d1g0v0_Shanghai - - static_ABAcalls1_d1g0v0_Shanghai - - static_ABAcalls1_d0g0v0_Shanghai - - static_Call1024BalanceTooLow2_d1g0v0_Shanghai - - static_Call1024BalanceTooLow_d1g0v0_Shanghai - - static_CallContractToCreateContractOOGBonusGas_d0g1v0_Shanghai - - static_CallEcrecover0_0input_d1g0v0_Shanghai - - static_CallEcrecover0_0input_d2g0v0_Shanghai - - static_CallEcrecover0_0input_d3g0v0_Shanghai - - static_CallEcrecover0_0input_d4g0v0_Shanghai - - static_Call1024OOG_d1g0v0_Shanghai - - static_CallEcrecover0_0input_d5g0v0_Shanghai - - static_CallEcrecover0_0input_d6g0v0_Shanghai - - static_CallEcrecover0_0input_d7g0v0_Shanghai - - static_CallEcrecover0_0input_d8g0v0_Shanghai - - static_CallEcrecover0_Gas2999_d0g0v0_Shanghai - - static_CallEcrecover0_NoGas_d0g0v0_Shanghai - - static_ABAcallsSuicide1_d1g0v0_Shanghai - - static_CallEcrecover0_completeReturnValue_d0g0v0_Shanghai - - static_CallEcrecover0_d0g0v0_Shanghai - - static_CallEcrecover0_gas3000_d0g0v0_Shanghai - - static_CallEcrecover0_overlappingInputOutput_d0g0v0_Shanghai - - static_CallEcrecover1_d0g0v0_Shanghai - - static_CallEcrecover2_d0g0v0_Shanghai - - static_CallEcrecover3_d0g0v0_Shanghai - - static_CallEcrecover80_d0g0v0_Shanghai - - static_CallEcrecoverCheckLengthWrongV_d0g0v0_Shanghai - - static_CallEcrecoverH_prefixed0_d0g0v0_Shanghai - - static_CallEcrecoverCheckLength_d0g0v0_Shanghai - - static_CallEcrecoverR_prefixed0_d0g0v0_Shanghai - - static_CallEcrecoverS_prefixed0_d0g0v0_Shanghai - - static_Call1024PreCalls2_d1g0v0_Shanghai - - static_CallEcrecoverV_prefixed0_d0g0v0_Shanghai - - static_CallIdentitiy_1_d0g0v0_Shanghai - - static_CallIdentity_2_d0g0v0_Shanghai - - static_CallIdentity_1_nonzeroValue_d0g0v0_Shanghai - - static_CallIdentity_3_d0g0v0_Shanghai - - static_CallIdentity_4_d0g0v0_Shanghai - - static_CallIdentity_4_gas17_d0g0v0_Shanghai - - static_CallIdentity_4_gas18_d0g0v0_Shanghai - - static_Call1024PreCalls2_d0g0v0_Shanghai - - static_CallRipemd160_1_d0g0v0_Shanghai - - static_Call1024PreCalls3_d1g0v0_Shanghai - - static_CallRipemd160_2_d0g0v0_Shanghai - - static_Call10_d0g0v0_Shanghai - - static_CallRipemd160_3_d0g0v0_Shanghai - - static_Call1024PreCalls_d1g0v0_Shanghai - - static_Call10_d1g0v0_Shanghai - - static_CallRipemd160_3_postfixed0_d0g0v0_Shanghai - - static_CallRipemd160_3_prefixed0_d0g0v0_Shanghai - - static_CallRipemd160_4_d0g0v0_Shanghai - - static_CallRipemd160_4_gas719_d0g0v0_Shanghai - - static_CallSha256_1_d0g0v0_Shanghai - - static_Call1MB1024Calldepth_d0g0v0_Shanghai - - static_CallSha256_1_nonzeroValue_d0g0v0_Shanghai - - static_CallSha256_2_d0g0v0_Shanghai - - static_CallSha256_3_d0g0v0_Shanghai - - static_CallSha256_3_postfix0_d0g0v0_Shanghai - - static_CallSha256_3_prefix0_d0g0v0_Shanghai - - static_CallSha256_4_d0g0v0_Shanghai - - static_CallSha256_4_gas99_d0g0v0_Shanghai - - static_Call1MB1024Calldepth_d1g0v0_Shanghai - - static_Call50000_ecrec_d0g0v0_Shanghai - - static_Call50000_ecrec_d1g0v0_Shanghai - - static_Call50000_identity2_d0g0v0_Shanghai - - static_Call50000_d0g0v0_Shanghai - - static_Call50000_identity2_d1g0v0_Shanghai - - static_Call50000_d1g0v0_Shanghai - - static_Call50000_identity_d0g0v0_Shanghai - - static_Call50000_rip160_d0g0v0_Shanghai - - static_Call50000_identity_d1g0v0_Shanghai - - static_Call50000_rip160_d1g0v0_Shanghai - - static_RETURN_BoundsOOG_d1g0v0_Shanghai - - static_RETURN_Bounds_d0g0v0_Shanghai - - static_CallRecursiveBomb0_d0g0v0_Shanghai - - static_callOutput3Fail_d0g0v0_Shanghai - - static_callOutput3_d0g0v0_Shanghai - - static_CallRecursiveBombPreCall2_d0g0v0_Shanghai - - static_CallRecursiveBomb1_d0g0v0_Shanghai - - static_callOutput3partialFail_d0g0v0_Shanghai - - static_CallRecursiveBomb2_d0g0v0_Shanghai - - static_callOutput3partial_d0g0v0_Shanghai - - static_Call50000bytesContract50_1_d0g0v0_Shanghai - - static_Call50000bytesContract50_1_d1g0v0_Shanghai - - static_CallRecursiveBombPreCall_d0g0v0_Shanghai - - static_Call50000bytesContract50_2_d0g0v0_Shanghai - - static_Call50000bytesContract50_2_d1g0v0_Shanghai - - static_CallRecursiveBomb0_OOG_atMaxCallDepth_d0g0v0_Shanghai - - static_Call50000bytesContract50_3_d0g0v0_Shanghai - - static_Call50000bytesContract50_3_d1g0v0_Shanghai - - static_CallIdentity_5_d0g0v0_Shanghai - - static_CallRipemd160_5_d0g0v0_Shanghai - - static_CallSha256_5_d0g0v0_Shanghai - - static_LoopCallsThenRevert_d0g0v0_Shanghai - - static_LoopCallsThenRevert_d0g1v0_Shanghai - - static_callcall_00_OOGE_1_d1g0v0_Shanghai - - static_callcallcallcode_001_OOGE_d0g0v0_Shanghai - - static_callcallcallcode_001_OOGE_2_d1g0v0_Shanghai - - static_callcallcall_000_OOGMBefore_d0g0v0_Shanghai - - static_Return50000_2_d0g0v0_Shanghai - - static_callCreate2_d2g0v0_Shanghai - - static_callcallcall_000_OOGMAfter2_d0g0v0_Shanghai - - static_callcallcallcode_001_OOGMAfter2_d1g0v0_Shanghai - - static_callcallcallcode_001_OOGMAfter_2_d1g0v0_Shanghai - - static_callcallcallcode_001_OOGMAfter_3_d1g0v0_Shanghai - - static_callcallcodecall_010_OOGE_2_d1g0v0_Shanghai - - static_callcode_checkPC_d0g0v0_Shanghai - - static_callcallcallcode_001_OOGMBefore2_d1g0v0_Shanghai - - static_callcallcallcode_001_OOGMAfter_d1g0v0_Shanghai - - static_callChangeRevert_d1g0v0_Shanghai - - static_callcallcallcode_001_OOGMBefore_d0g0v0_Shanghai - - static_callcallcodecall_010_OOGE_d0g0v0_Shanghai - - static_callcallcodecall_010_OOGMAfter2_d0g0v0_Shanghai - - static_callcallcodecall_010_OOGMAfter_2_d1g0v0_Shanghai - - static_callcallcodecall_010_OOGMAfter_3_d1g0v0_Shanghai - - static_callcallcodecall_010_OOGMAfter_d1g0v0_Shanghai - - static_callcallcodecall_010_OOGMBefore2_d0g0v0_Shanghai - - static_callcallcodecall_010_OOGMBefore_d1g0v0_Shanghai - - static_callcallcodecallcode_011_OOGMAfter2_d1g0v0_Shanghai - - static_callcallcodecallcode_011_OOGMAfter_1_d1g0v0_Shanghai - - static_callcallcodecallcode_011_OOGMAfter_2_d1g0v0_Shanghai - - static_callcallcodecallcode_011_OOGMAfter_d1g0v0_Shanghai - - static_callcallcodecallcode_011_OOGMBefore2_d1g0v0_Shanghai - - static_callcallcodecallcode_011_OOGMBefore_d1g0v0_Shanghai - - static_callcodecallcall_100_OOGMAfter2_d0g0v0_Shanghai - - static_callcodecallcall_100_OOGMAfter2_d0g0v1_Shanghai - - static_callcodecallcall_100_OOGMBefore2_d0g0v0_Shanghai - - static_callcodecallcall_100_OOGMAfter_3_d0g0v1_Shanghai - - static_callcodecallcall_100_OOGMAfter_2_d0g0v0_Shanghai - - static_callcodecallcall_100_OOGMAfter_3_d0g0v0_Shanghai - - static_callcodecallcall_100_OOGMAfter_d0g0v0_Shanghai - - static_callcodecallcall_100_OOGMBefore2_d0g0v1_Shanghai - - static_callcodecallcallcode_101_OOGE_d0g0v0_Shanghai - - static_callcodecallcall_100_OOGMBefore_d0g0v0_Shanghai - - static_contractCreationMakeCallThatAskMoreGasThenTransactionProvided_d0g0v0_Shanghai - - static_callcodecallcallcode_101_OOGMAfter2_d0g0v0_Shanghai - - static_callcodecallcallcode_101_OOGMAfter_1_d0g0v0_Shanghai - - static_callcodecallcallcode_101_OOGMAfter2_d0g0v1_Shanghai - - static_callcodecallcallcode_101_OOGMAfter_3_d0g0v0_Shanghai - - static_callcodecallcallcode_101_OOGMBefore2_d0g0v0_Shanghai - - static_callcodecallcallcode_101_OOGMBefore_d0g0v0_Shanghai - - static_callcodecallcallcode_101_OOGMBefore2_d0g0v1_Shanghai - - static_callcodecallcallcode_101_OOGMAfter_d0g0v0_Shanghai - - static_makeMoney_d0g0v0_Shanghai - - static_callcodecallcodecall_110_OOGMAfter_2_d0g0v0_Shanghai - - static_callcodecallcodecall_110_OOGMAfter2_d0g0v0_Shanghai - - static_callcodecallcodecall_110_OOGMAfter2_d0g0v1_Shanghai - - static_callcodecallcodecall_110_OOGMAfter2_d0g0v2_Shanghai - - static_callcodecallcodecall_110_OOGMAfter_d0g0v0_Shanghai - - static_callcodecallcodecall_110_OOGMBefore2_d0g0v1_Shanghai - - static_callcodecallcodecall_110_OOGMBefore2_d0g0v2_Shanghai - - static_callcodecallcodecall_110_OOGMBefore_d0g0v0_Shanghai - - static_callcodecallcodecall_110_OOGMAfter_3_d0g0v0_Shanghai - - static_contractCreationMakeCallThatAskMoreGasThenTransactionProvided_d2g0v0_Shanghai - - static_contractCreationOOGdontLeaveEmptyContractViaTransaction_d0g0v0_Shanghai - stStaticFlagEnabled: - - CallWithNOTZeroValueToPrecompileFromContractInitialization_d0g0v0_Shanghai - - CallWithNOTZeroValueToPrecompileFromContractInitialization_d1g0v0_Shanghai - - CallWithNOTZeroValueToPrecompileFromContractInitialization_d2g0v0_Shanghai - - CallWithNOTZeroValueToPrecompileFromContractInitialization_d3g0v0_Shanghai - - CallWithNOTZeroValueToPrecompileFromContractInitialization_d6g0v0_Shanghai - - CallWithNOTZeroValueToPrecompileFromContractInitialization_d4g0v0_Shanghai - - CallWithNOTZeroValueToPrecompileFromContractInitialization_d5g0v0_Shanghai - - CallWithNOTZeroValueToPrecompileFromContractInitialization_d7g0v0_Shanghai - - CallWithZeroValueToPrecompileFromTransaction_d0g0v0_Shanghai - - CallWithZeroValueToPrecompileFromCalledContract_d0g0v0_Shanghai - - DelegatecallToPrecompileFromTransaction_d0g0v0_Shanghai - - DelegatecallToPrecompileFromCalledContract_d0g0v0_Shanghai - - CallWithZeroValueToPrecompileFromContractInitialization_d0g0v0_Shanghai - - CallcodeToPrecompileFromTransaction_d0g0v0_Shanghai - - CallcodeToPrecompileFromCalledContract_d0g0v0_Shanghai - - DelegatecallToPrecompileFromContractInitialization_d0g0v0_Shanghai - - CallcodeToPrecompileFromContractInitialization_d0g0v0_Shanghai - stSystemOperationsTest: - - ABAcalls0_d0g0v0_Shanghai - - ABAcallsSuicide0_d0g0v0_Shanghai - - ABAcallsSuicide1_d0g0v0_Shanghai - - CallToNameRegistratorNotMuchMemory0_d0g0v0_Shanghai - - CallToNameRegistratorNotMuchMemory1_d0g0v0_Shanghai - - callerAccountBalance_d0g0v0_Shanghai - - createNameRegistratorZeroMem2_d0g0v0_Shanghai - - createWithInvalidOpcode_d0g0v0_Shanghai - - ABAcallsSuicide1_d1g0v0_Shanghai - - doubleSelfdestructTouch_d0g0v2_Shanghai - - extcodecopy_d0g0v0_Shanghai - - doubleSelfdestructTest_d0g0v0_Shanghai - - doubleSelfdestructTest_d5g0v0_Shanghai - - doubleSelfdestructTest_d2g0v0_Shanghai - - doubleSelfdestructTest_d1g0v0_Shanghai - - doubleSelfdestructTest_d4g0v0_Shanghai - - doubleSelfdestructTest_d6g0v0_Shanghai - - testRandomTest_d0g0v0_Shanghai - - multiSelfdestruct_d0g0v0_Shanghai - - multiSelfdestruct_d1g0v0_Shanghai - - multiSelfdestruct_d2g0v0_Shanghai - - ABAcalls3_d0g0v0_Shanghai - - multiSelfdestruct_d3g0v0_Shanghai - - multiSelfdestruct_d4g0v0_Shanghai - - suicideSendEtherPostDeath_d0g0v0_Shanghai - - ABAcalls2_d0g0v0_Shanghai - - CallRecursiveBomb0_d0g0v0_Shanghai - - CallRecursiveBomb1_d0g0v0_Shanghai - - ABAcalls1_d0g0v0_Shanghai - - CallRecursiveBomb2_d0g0v0_Shanghai - - CallRecursiveBomb3_d0g0v0_Shanghai - - CallRecursiveBomb0_OOG_atMaxCallDepth_d0g0v0_Shanghai - - Call10_d0g0v0_Shanghai - - CallRecursiveBombLog2_d0g0v0_Shanghai - - CallRecursiveBombLog_d0g0v0_Shanghai - stTimeConsuming: - - CALLBlake2f_MaxRounds_d0g0v0_Shanghai - - static_Call50000_sha256_d1g0v0_Shanghai - - static_Call50000_sha256_d0g0v0_Shanghai - stTransactionTest: - - HighGasPrice_d0g0v0_Shanghai - - InternalCallHittingGasLimit2_d0g0v0_Shanghai - - Opcodes_TransactionInit_d120g0v0_Shanghai - - Opcodes_TransactionInit_d23g0v0_Shanghai - - ValueOverflow_d0g0v0_Shanghai - - OverflowGasRequire2_d0g0v0_Shanghai - - SuicidesAndInternlCallSuicidesBonusGasAtCall_d0g0v0_Shanghai - - PointAtInfinityECRecover_d0g0v0_Shanghai - - SuicidesAndInternlCallSuicidesSuccess_d0g0v0_Shanghai - - SuicidesAndInternlCallSuicidesSuccess_d1g0v0_Shanghai - - StoreGasOnCreate_d0g0v0_Shanghai - stWalletTest: - - multiOwnedRemoveOwner_d0g0v0_Shanghai - - multiOwnedIsOwnerFalse_d0g0v0_Shanghai - - multiOwnedIsOwnerTrue_d0g0v0_Shanghai - - multiOwnedConstructionCorrect_d0g0v0_Shanghai - - multiOwnedConstructionNotEnoughGasPartial_d0g1v0_Shanghai - - dayLimitConstruction_d0g0v0_Shanghai - - dayLimitConstructionPartial_d0g0v0_Shanghai - - dayLimitConstruction_d0g1v0_Shanghai - - multiOwnedRemoveOwnerByNonOwner_d0g0v0_Shanghai - - multiOwnedRemoveOwner_mySelf_d0g0v0_Shanghai - - multiOwnedRemoveOwner_ownerIsNotOwner_d0g0v0_Shanghai - - multiOwnedRevokeNothing_d0g0v0_Shanghai - - multiOwnedAddOwner_d0g0v0_Shanghai - - multiOwnedAddOwnerAddMyself_d0g0v0_Shanghai - - dayLimitResetSpentToday_d0g0v0_Shanghai - - multiOwnedChangeRequirementTo0_d0g0v0_Shanghai - - multiOwnedChangeRequirementTo2_d0g0v0_Shanghai - - multiOwnedChangeRequirementTo1_d0g0v0_Shanghai - - dayLimitSetDailyLimitNoData_d0g0v0_Shanghai - - dayLimitSetDailyLimit_d0g0v0_Shanghai - - multiOwnedChangeOwner_fromNotOwner_d0g0v0_Shanghai - - multiOwnedChangeOwnerNoArgument_d0g0v0_Shanghai - - multiOwnedChangeOwner_d0g0v0_Shanghai - - multiOwnedChangeOwner_toIsOwner_d0g0v0_Shanghai - - walletChangeRequirementRemovePendingTransaction_d0g0v0_Shanghai - - walletAddOwnerRemovePendingTransaction_d0g0v0_Shanghai - - walletChangeOwnerRemovePendingTransaction_d0g0v0_Shanghai - - walletConfirm_d0g0v0_Shanghai - - walletConstructionOOG_d0g1v0_Shanghai - - walletConstructionPartial_d0g0v0_Shanghai - - walletConstruction_d0g1v0_Shanghai - - walletConstruction_d0g0v0_Shanghai - - walletRemoveOwnerRemovePendingTransaction_d0g0v0_Shanghai - - walletExecuteOverDailyLimitOnlyOneOwner_d0g0v0_Shanghai - - walletExecuteOverDailyLimitOnlyOneOwnerNew_d0g0v0_Shanghai - - walletExecuteOverDailyLimitMultiOwner_d0g0v0_Shanghai - - walletKillNotByOwner_d0g0v0_Shanghai - - walletExecuteUnderDailyLimit_d0g0v0_Shanghai - - walletKill_d0g0v0_Shanghai - - walletKillToWallet_d0g0v0_Shanghai - stZeroKnowledge2: - - ecadd_0_minus_0_0_minus_0_21000_0_d0g1v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_0_d0g3v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_0_d0g2v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_128_d0g1v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_128_d0g2v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_128_d0g3v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_192_d0g1v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_64_d0g1v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_192_d0g2v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_192_d0g3v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_64_d0g2v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_64_d0g3v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_80_d0g1v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_80_d0g2v0_Shanghai - - ecadd_0_minus_0_0_minus_0_21000_80_d0g3v0_Shanghai - - ecadd_0_minus_0_0_minus_0_25000_128_d0g0v0_Shanghai - - ecadd_0_minus_0_0_minus_0_25000_128_d0g1v0_Shanghai - - ecadd_0_minus_0_0_minus_0_25000_128_d0g2v0_Shanghai - - ecadd_0_minus_0_0_minus_0_25000_128_d0g3v0_Shanghai - - ecadd_0_minus_0_1_minus_2_21000_128_d0g1v0_Shanghai - - ecadd_0_minus_0_1_minus_2_21000_128_d0g2v0_Shanghai - - ecadd_0_minus_0_1_minus_2_21000_128_d0g3v0_Shanghai - - ecadd_0_minus_0_1_minus_2_21000_192_d0g1v0_Shanghai - - ecadd_0_minus_0_1_minus_2_25000_128_d0g0v0_Shanghai - - ecadd_0_minus_0_1_minus_2_25000_128_d0g1v0_Shanghai - - ecadd_0_minus_0_1_minus_2_21000_192_d0g2v0_Shanghai - - ecadd_0_minus_0_1_minus_2_21000_192_d0g3v0_Shanghai - - ecadd_0_minus_0_1_minus_2_25000_128_d0g2v0_Shanghai - - ecadd_0_minus_0_1_minus_2_25000_128_d0g3v0_Shanghai - - ecadd_1145_minus_3932_1145_minus_4651_21000_192_d0g1v0_Shanghai - - ecadd_1145_minus_3932_1145_minus_4651_21000_192_d0g2v0_Shanghai - - ecadd_1145_minus_3932_1145_minus_4651_21000_192_d0g3v0_Shanghai - - ecadd_1145_minus_3932_1145_minus_4651_25000_192_d0g1v0_Shanghai - - ecadd_1145_minus_3932_1145_minus_4651_25000_192_d0g0v0_Shanghai - - ecadd_1145_minus_3932_1145_minus_4651_25000_192_d0g2v0_Shanghai - - ecadd_1145_minus_3932_1145_minus_4651_25000_192_d0g3v0_Shanghai - - ecadd_1145_minus_3932_2969_minus_1336_21000_128_d0g2v0_Shanghai - - ecadd_1145_minus_3932_2969_minus_1336_21000_128_d0g1v0_Shanghai - - ecadd_1145_minus_3932_2969_minus_1336_21000_128_d0g3v0_Shanghai - - ecadd_1145_minus_3932_2969_minus_1336_25000_128_d0g0v0_Shanghai - - ecadd_1145_minus_3932_2969_minus_1336_25000_128_d0g1v0_Shanghai - - ecadd_1145_minus_3932_2969_minus_1336_25000_128_d0g3v0_Shanghai - - ecadd_1145_minus_3932_2969_minus_1336_25000_128_d0g2v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_128_d0g1v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_128_d0g2v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_128_d0g3v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_192_d0g1v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_192_d0g2v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_64_d0g1v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_192_d0g3v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_64_d0g2v0_Shanghai - - ecadd_1_minus_2_0_minus_0_21000_64_d0g3v0_Shanghai - - ecadd_1_minus_2_1_minus_2_21000_128_d0g1v0_Shanghai - - ecadd_1_minus_2_1_minus_2_21000_128_d0g2v0_Shanghai - - ecadd_1_minus_2_1_minus_2_21000_128_d0g3v0_Shanghai - - ecadd_1_minus_2_1_minus_2_21000_192_d0g1v0_Shanghai - - ecadd_1_minus_2_1_minus_2_21000_192_d0g2v0_Shanghai - - ecadd_1_minus_2_1_minus_2_25000_128_d0g0v0_Shanghai - - ecadd_1_minus_2_1_minus_2_21000_192_d0g3v0_Shanghai - - ecadd_1_minus_2_1_minus_2_25000_128_d0g1v0_Shanghai - - ecadd_1_minus_2_1_minus_2_25000_128_d0g2v0_Shanghai - - ecadd_1_minus_2_1_minus_2_25000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_0_21000_0_d0g1v0_Shanghai - - ecmul_0_minus_0_0_21000_0_d0g3v0_Shanghai - - ecmul_0_minus_0_0_21000_0_d0g2v0_Shanghai - - ecmul_0_minus_0_0_21000_128_d0g1v0_Shanghai - - ecmul_0_minus_0_0_21000_128_d0g2v0_Shanghai - - ecmul_0_minus_0_0_21000_40_d0g1v0_Shanghai - - ecmul_0_minus_0_0_21000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_0_21000_40_d0g2v0_Shanghai - - ecmul_0_minus_0_0_21000_40_d0g3v0_Shanghai - - ecmul_0_minus_0_0_21000_64_d0g1v0_Shanghai - - ecmul_0_minus_0_0_21000_64_d0g2v0_Shanghai - - ecmul_0_minus_0_0_21000_64_d0g3v0_Shanghai - - ecmul_0_minus_0_0_21000_80_d0g1v0_Shanghai - - ecmul_0_minus_0_0_21000_80_d0g2v0_Shanghai - - ecmul_0_minus_0_0_21000_80_d0g3v0_Shanghai - - ecmul_0_minus_0_0_21000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_0_21000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_0_21000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_0_28000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_0_28000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_0_28000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_1_21000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_1_21000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_1_21000_128_d0g1v0_Shanghai - - ecmul_0_minus_0_1_21000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_1_21000_128_d0g2v0_Shanghai - - ecmul_0_minus_0_1_21000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_2_21000_128_d0g1v0_Shanghai - - ecmul_0_minus_0_2_21000_128_d0g2v0_Shanghai - - ecmul_0_minus_0_2_21000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_2_21000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_2_21000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_2_21000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_2_28000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_2_28000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_2_28000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_80_d0g1v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_80_d0g3v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_80_d0g2v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_128_d0g1v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_128_d0g2v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_21000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_28000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_28000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_340282366920938463463374607431768211456_28000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_5616_21000_128_d0g1v0_Shanghai - - ecmul_0_minus_0_5616_21000_128_d0g2v0_Shanghai - - ecmul_0_minus_0_5616_21000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_5616_21000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_5616_21000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_5616_21000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_5616_28000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_5616_28000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_5616_28000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_5617_21000_128_d0g1v0_Shanghai - - ecmul_0_minus_0_5617_21000_128_d0g2v0_Shanghai - - ecmul_0_minus_0_5617_21000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_5617_21000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_5617_21000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_5617_21000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_5617_28000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_5617_28000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_5617_28000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_9935_21000_128_d0g1v0_Shanghai - - ecmul_0_minus_0_9935_21000_128_d0g2v0_Shanghai - - ecmul_0_minus_0_9935_21000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_9935_21000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_9935_21000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_9935_21000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_9_21000_128_d0g1v0_Shanghai - - ecmul_0_minus_0_9_21000_128_d0g2v0_Shanghai - - ecmul_0_minus_0_9_21000_128_d0g3v0_Shanghai - - ecmul_0_minus_0_9_21000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_9_21000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_9_21000_96_d0g3v0_Shanghai - - ecmul_0_minus_0_9_28000_96_d0g1v0_Shanghai - - ecmul_0_minus_0_9_28000_96_d0g2v0_Shanghai - - ecmul_0_minus_0_9_28000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_0_21000_64_d0g1v0_Shanghai - - ecmul_1_minus_2_0_21000_64_d0g2v0_Shanghai - - ecmul_1_minus_2_0_21000_64_d0g3v0_Shanghai - - ecmul_1_minus_2_0_21000_128_d0g1v0_Shanghai - - ecmul_1_minus_2_0_21000_128_d0g2v0_Shanghai - - ecmul_1_minus_2_0_21000_128_d0g3v0_Shanghai - - ecmul_1_minus_2_0_21000_80_d0g1v0_Shanghai - - ecmul_1_minus_2_0_21000_80_d0g2v0_Shanghai - - ecmul_1_minus_2_0_21000_80_d0g3v0_Shanghai - - ecmul_1_minus_2_0_21000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_0_21000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_0_21000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_1_21000_128_d0g1v0_Shanghai - - ecmul_1_minus_2_1_21000_128_d0g2v0_Shanghai - - ecmul_1_minus_2_1_21000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_1_21000_128_d0g3v0_Shanghai - - ecmul_1_minus_2_1_21000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_1_21000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_1_28000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_1_28000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_1_28000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_2_21000_128_d0g1v0_Shanghai - - ecmul_1_minus_2_2_21000_128_d0g2v0_Shanghai - - ecmul_1_minus_2_2_21000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_2_21000_128_d0g3v0_Shanghai - - ecmul_1_minus_2_2_21000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_2_21000_96_d0g3v0_Shanghai - stZeroKnowledge: - - ecmul_1_minus_2_2_28000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_2_28000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_2_28000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_2_28000_96_d0g4v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_80_d0g1v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_80_d0g2v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_128_d0g1v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_128_d0g2v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_128_d0g3v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_80_d0g3v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_21000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_28000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_28000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_340282366920938463463374607431768211456_28000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_5616_21000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_5616_21000_128_d0g1v0_Shanghai - - ecmul_1_minus_2_5616_21000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_5616_21000_128_d0g2v0_Shanghai - - ecmul_1_minus_2_5616_21000_128_d0g3v0_Shanghai - - ecmul_1_minus_2_5616_21000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_5617_21000_128_d0g1v0_Shanghai - - ecmul_1_minus_2_5617_21000_128_d0g2v0_Shanghai - - ecmul_1_minus_2_5617_21000_128_d0g3v0_Shanghai - - ecmul_1_minus_2_5617_21000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_5617_21000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_5617_21000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_616_28000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_616_28000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_616_28000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_616_28000_96_d0g4v0_Shanghai - - ecmul_1_minus_2_9935_21000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_9935_21000_128_d0g1v0_Shanghai - - ecmul_1_minus_2_9935_21000_128_d0g2v0_Shanghai - - ecmul_1_minus_2_9935_21000_128_d0g3v0_Shanghai - - ecmul_1_minus_2_9935_21000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_9935_21000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_9935_28000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_9935_28000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_9935_28000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_9_21000_128_d0g1v0_Shanghai - - ecmul_1_minus_2_9_21000_128_d0g2v0_Shanghai - - ecmul_1_minus_2_9_21000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_9_21000_128_d0g3v0_Shanghai - - ecmul_1_minus_2_9_21000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_9_21000_96_d0g3v0_Shanghai - - ecmul_1_minus_2_9_28000_96_d0g1v0_Shanghai - - ecmul_1_minus_2_9_28000_96_d0g2v0_Shanghai - - ecmul_1_minus_2_9_28000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_0_21000_64_d0g1v0_Shanghai - - ecmul_7827_minus_6598_0_21000_64_d0g2v0_Shanghai - - ecmul_7827_minus_6598_0_21000_64_d0g3v0_Shanghai - - ecmul_7827_minus_6598_0_21000_128_d0g1v0_Shanghai - - ecmul_7827_minus_6598_0_21000_128_d0g2v0_Shanghai - - ecmul_7827_minus_6598_0_21000_128_d0g3v0_Shanghai - - ecmul_7827_minus_6598_0_21000_80_d0g1v0_Shanghai - - ecmul_7827_minus_6598_0_21000_80_d0g2v0_Shanghai - - ecmul_7827_minus_6598_0_21000_80_d0g3v0_Shanghai - - ecmul_7827_minus_6598_0_21000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_0_21000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_0_21000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_128_d0g1v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_80_d0g1v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_128_d0g2v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_80_d0g2v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_128_d0g3v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_80_d0g3v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_1456_21000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_1456_28000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_1456_28000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_1456_28000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_1_21000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_1_21000_128_d0g1v0_Shanghai - - ecmul_7827_minus_6598_1_21000_128_d0g2v0_Shanghai - - ecmul_7827_minus_6598_1_21000_128_d0g3v0_Shanghai - - ecmul_7827_minus_6598_1_21000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_1_21000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_1_28000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_1_28000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_1_28000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_2_21000_128_d0g1v0_Shanghai - - ecmul_7827_minus_6598_2_21000_128_d0g2v0_Shanghai - - ecmul_7827_minus_6598_2_21000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_2_21000_128_d0g3v0_Shanghai - - ecmul_7827_minus_6598_2_21000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_2_21000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_2_28000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_2_28000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_2_28000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_5616_21000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_5616_21000_128_d0g1v0_Shanghai - - ecmul_7827_minus_6598_5616_21000_128_d0g2v0_Shanghai - - ecmul_7827_minus_6598_5616_21000_128_d0g3v0_Shanghai - - ecmul_7827_minus_6598_5616_21000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_5616_21000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_5616_28000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_5616_28000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_5616_28000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_5617_21000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_5617_21000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_5617_21000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_5617_21000_128_d0g1v0_Shanghai - - ecmul_7827_minus_6598_5617_21000_128_d0g2v0_Shanghai - - ecmul_7827_minus_6598_9935_21000_128_d0g2v0_Shanghai - - ecmul_7827_minus_6598_9935_21000_128_d0g3v0_Shanghai - - ecmul_7827_minus_6598_9935_21000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_9935_21000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_9935_28000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_9935_28000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_9935_28000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_9_21000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_9_21000_96_d0g2v0_Shanghai - - ecmul_7827_minus_6598_9_21000_128_d0g1v0_Shanghai - - ecmul_7827_minus_6598_9_21000_128_d0g2v0_Shanghai - - ecmul_7827_minus_6598_9_21000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_9_21000_128_d0g3v0_Shanghai - - ecmul_7827_minus_6598_9_28000_96_d0g1v0_Shanghai - - ecmul_7827_minus_6598_9_28000_96_d0g3v0_Shanghai - - ecmul_7827_minus_6598_9_28000_96_d0g2v0_Shanghai - - ecpairing_empty_data_d0g0v0_Shanghai - - ecpairing_empty_data_d0g3v0_Shanghai - - ecpairing_empty_data_insufficient_gas_d0g2v0_Shanghai - - ecpairing_one_point_fail_d0g0v0_Shanghai - - ecpairing_one_point_with_g1_zero_d0g0v0_Shanghai - - ecpairing_three_point_fail_1_d0g0v0_Shanghai - - ecpairing_two_point_fail_1_d0g0v0_Shanghai - - ecpairing_two_point_fail_2_d0g0v0_Shanghai - - ecpairing_two_point_match_1_d0g0v0_Shanghai - - ecpairing_two_point_match_5_d0g0v0_Shanghai - - pairingTest_d0g0v0_Shanghai - - pairingTest_d1g0v0_Shanghai - - pointAddTrunc_d0g1v0_Shanghai - - pointAddTrunc_d0g0v0_Shanghai - - pointAddTrunc_d0g2v0_Shanghai - - pairingTest_d2g0v0_Shanghai - - pairingTest_d3g0v0_Shanghai - - pointAddTrunc_d2g0v0_Shanghai - - pointAddTrunc_d2g1v0_Shanghai - - pointAddTrunc_d2g2v0_Shanghai - - pointAddTrunc_d3g0v0_Shanghai - - pointAddTrunc_d3g1v0_Shanghai - - pointAddTrunc_d3g2v0_Shanghai - - pairingTest_d4g0v0_Shanghai - - pointAddTrunc_d7g0v0_Shanghai - - pointAddTrunc_d7g1v0_Shanghai - - pointAddTrunc_d7g2v0_Shanghai - - pointAddTrunc_d8g0v0_Shanghai - - pointAddTrunc_d8g1v0_Shanghai - - pointAddTrunc_d8g2v0_Shanghai - - pointAddTrunc_d9g0v0_Shanghai - - pointAddTrunc_d9g1v0_Shanghai - - pointAddTrunc_d9g2v0_Shanghai - - pointAdd_d0g0v0_Shanghai - - pointAdd_d0g1v0_Shanghai - - pointAdd_d0g2v0_Shanghai - - pointAdd_d3g0v0_Shanghai - - pointAdd_d3g1v0_Shanghai - - pointAdd_d3g2v0_Shanghai - - pointAdd_d4g0v0_Shanghai - - pointAdd_d4g1v0_Shanghai - - pointAdd_d4g2v0_Shanghai - - pointAdd_d7g1v0_Shanghai - - pointAdd_d7g0v0_Shanghai - - pointAdd_d7g2v0_Shanghai - - pointAdd_d8g0v0_Shanghai - - pointAdd_d8g1v0_Shanghai - - pointAdd_d8g2v0_Shanghai - - pointAdd_d9g0v0_Shanghai - - pointAdd_d9g1v0_Shanghai - - pointAdd_d9g2v0_Shanghai - - pointMulAdd2_d10g0v0_Shanghai - - pointMulAdd2_d11g0v0_Shanghai - - pointMulAdd2_d13g0v0_Shanghai - - pointMulAdd2_d14g0v0_Shanghai - - pointMulAdd2_d15g0v0_Shanghai - - pointMulAdd2_d16g0v0_Shanghai - - pointMulAdd2_d17g0v0_Shanghai - - pointMulAdd2_d17g3v0_Shanghai - - pointMulAdd2_d18g0v0_Shanghai - - pointMulAdd2_d19g0v0_Shanghai - - pointMulAdd2_d20g0v0_Shanghai - - pointMulAdd2_d21g0v0_Shanghai - - pointMulAdd2_d21g3v0_Shanghai - - pointMulAdd2_d22g0v0_Shanghai - - pointMulAdd2_d23g0v0_Shanghai - - pointMulAdd2_d24g0v0_Shanghai - - pointMulAdd2_d25g0v0_Shanghai - - pointMulAdd2_d27g0v0_Shanghai - - pointMulAdd2_d28g0v0_Shanghai - - pointMulAdd2_d29g0v0_Shanghai - - pointMulAdd2_d30g0v0_Shanghai - - pointMulAdd2_d30g3v0_Shanghai - - pointMulAdd2_d31g0v0_Shanghai - - pointMulAdd2_d32g0v0_Shanghai - - pointMulAdd2_d33g0v0_Shanghai - - pointMulAdd2_d34g0v0_Shanghai - - pointMulAdd2_d35g0v0_Shanghai - - pointMulAdd2_d34g3v0_Shanghai - - pointMulAdd2_d36g0v0_Shanghai - - pointMulAdd2_d37g0v0_Shanghai - - pointMulAdd_d0g0v0_Shanghai - - pointMulAdd_d1g0v0_Shanghai - - pointMulAdd_d4g0v0_Shanghai - - pointMulAdd_d7g3v0_Shanghai - - pointMulAdd_d3g0v0_Shanghai - - pointMulAdd_d7g0v0_Shanghai - - pointMulAdd_d6g0v0_Shanghai - - pointMulAdd_d5g0v0_Shanghai diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml new file mode 120000 index 00000000..7428ce91 --- /dev/null +++ b/blockchain-tests-skip.yml @@ -0,0 +1 @@ +../kakarot-ssj/blockchain-tests-skip.yml \ No newline at end of file diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index e4c361dd..fe0e967f 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -1,4 +1,4 @@ -use blockifier::{bouncer::BouncerConfig, execution::contract_class::NativeContractClassV1}; +use blockifier::bouncer::BouncerConfig; use starknet::core::types::Felt; use std::ops::{Deref, DerefMut}; @@ -13,7 +13,7 @@ use crate::evm_sequencer::{ ETH_FEE_TOKEN_ADDRESS, FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, KAKAROT_CLASS, KAKAROT_CLASS_HASH, KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, OPENZEPPELIN_ACCOUNT_CLASS_HASH, RELAYER_ADDRESS, RELAYER_BALANCE, RELAYER_VERIFYING_KEY, - STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS, UNINITIALIZED_ACCOUNT_CLASS_HASH, CLASS_HASH_TO_JSON_CLASS + STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS, UNINITIALIZED_ACCOUNT_CLASS_HASH }, types::contract_class::CasmContractClassWrapper, utils::compute_starknet_address, @@ -238,16 +238,17 @@ lazy_static! { { #[cfg(feature = "native")] { + use sequencer::native::class_from_json_str; + use crate::evm_sequencer::constants::CLASS_HASH_TO_JSON_CLASS; let kakarot_json = CLASS_HASH_TO_JSON_CLASS.get(&KAKAROT_CLASS_HASH).unwrap(); let account_json = CLASS_HASH_TO_JSON_CLASS.get(&ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); let uninitialized_json = CLASS_HASH_TO_JSON_CLASS.get(&UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap(); - println!("Got kakarot's json of length {}", kakarot_json.len()); + println!("Got uninitialized account's json of length {}", uninitialized_json.len()); println!("Got account's json of length {}", account_json.len()); - println!("Got uninitialized's json of length {}", uninitialized_json.len()); - let kakarot_class= class_from_json_str(kakarot_json, *KAKAROT_CLASS_HASH).unwrap(); - let account_class= class_from_json_str(account_json, *ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); + println!("Got kakarot's json of length {}", kakarot_json.len()); let uninitialized_class= class_from_json_str(uninitialized_json, *UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap(); - println!("Got class"); + let account_class= class_from_json_str(account_json, *ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); + let kakarot_class= class_from_json_str(kakarot_json, *KAKAROT_CLASS_HASH).unwrap(); (kakarot_class, account_class, uninitialized_class) } #[cfg(not(feature = "native"))] diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index aa7fabad..ba1188be 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -1,37 +1,16 @@ use blockifier::execution::contract_class::NativeContractClassV1; -use blockifier::{ - execution::contract_class::{ContractClass, ContractClassV0, ContractClassV1}, - state::state_api::StateResult, -}; -use blockifier::{ - execution::contract_class::{ - ClassInfo as BlockifierClassInfo}, -}; -use cairo_lang_starknet_classes::abi::Contract; +use blockifier::execution::contract_class::{ContractClass, ContractClassV0, ContractClassV1}; use cairo_native::OptLevel; -use cairo_native::{ - context::NativeContext, error::Error as NativeError, executor::AotContractExecutor, - metadata::gas::GasMetadata, module::NativeModule, -}; -use cairo_lang_starknet_classes::contract_class::ContractClass as SierraContractClass; -use libloading::Library; +use cairo_native::executor::AotContractExecutor; use starknet_api::core::ClassHash; -use serde::{Deserialize, Serialize}; use std::sync::Arc; use std::{ - ffi::{c_char, c_uchar, c_void, CStr}, fs, path::PathBuf, - slice, - sync::Mutex, }; -use cached::{Cached, SizedCache}; -use once_cell::sync::Lazy; use lazy_static::lazy_static; -use cairo_lang_sierra::{program::Program, program_registry::ProgramRegistry}; -use hashbrown::HashMap; lazy_static! { static ref NATIVE_CACHE_DIR: PathBuf = setup_native_cache_dir(); @@ -44,7 +23,7 @@ fn generate_library_path(class_hash: ClassHash) -> PathBuf { } fn setup_native_cache_dir() -> PathBuf { - let mut path: PathBuf = match std::env::var("NATIVE_CACHE_DIR") { + let path: PathBuf = match std::env::var("NATIVE_CACHE_DIR") { Ok(path) => path.into(), Err(_err) => { let mut path = std::env::current_dir().unwrap(); diff --git a/crates/sequencer/src/state.rs b/crates/sequencer/src/state.rs index 1846916e..2b408b5b 100644 --- a/crates/sequencer/src/state.rs +++ b/crates/sequencer/src/state.rs @@ -1,6 +1,6 @@ use crate::commit::Committer; use crate::serde::SerializableState; -use blockifier::execution::contract_class::{ContractClass, NativeContractClassV1}; +use blockifier::execution::contract_class::ContractClass; use blockifier::state::errors::StateError; use blockifier::state::state_api::{ State as BlockifierState, StateReader as BlockifierStateReader, StateResult, From c1f1c499a690265db146e3e3fc57eee15093f3cd Mon Sep 17 00:00:00 2001 From: enitrat Date: Sat, 28 Sep 2024 22:57:48 +0200 Subject: [PATCH 07/53] bump gas limits --- Makefile | 4 ++++ .../sequencer/resources/versioned_constants.json | 4 ++-- crates/sequencer/src/resources/versioned_constants.json | 4 ++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 21614568..561c42b3 100644 --- a/Makefile +++ b/Makefile @@ -82,6 +82,10 @@ ef-test-v0: build ef-test-v1: build cargo test --test tests --no-fail-fast --quiet --features "v1,ci" +# Runs ef-tests with cairo-native mode +ef-test-v1-native: build + cargo test --test tests --no-fail-fast --quiet --features "v1,native,ci" + # Build the rust crates build: cargo build --release diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json b/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json index 33579709..792d8a94 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json +++ b/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json @@ -8,7 +8,7 @@ "max_calldata_length": 5000, "max_contract_bytecode_size": 81920 }, - "invoke_tx_max_n_steps": 50000000, + "invoke_tx_max_n_steps": 100000000, "l2_resource_gas_costs": { "gas_per_data_felt": [128, 1000], "event_key_factor": [2, 1], @@ -63,7 +63,7 @@ "syscall_base_gas_cost": 1 }, "initial_gas_cost": { - "step_gas_cost": 500000000 + "step_gas_cost": 800000000 }, "keccak_gas_cost": { "syscall_base_gas_cost": 1 diff --git a/crates/sequencer/src/resources/versioned_constants.json b/crates/sequencer/src/resources/versioned_constants.json index 33579709..792d8a94 100644 --- a/crates/sequencer/src/resources/versioned_constants.json +++ b/crates/sequencer/src/resources/versioned_constants.json @@ -8,7 +8,7 @@ "max_calldata_length": 5000, "max_contract_bytecode_size": 81920 }, - "invoke_tx_max_n_steps": 50000000, + "invoke_tx_max_n_steps": 100000000, "l2_resource_gas_costs": { "gas_per_data_felt": [128, 1000], "event_key_factor": [2, 1], @@ -63,7 +63,7 @@ "syscall_base_gas_cost": 1 }, "initial_gas_cost": { - "step_gas_cost": 500000000 + "step_gas_cost": 800000000 }, "keccak_gas_cost": { "syscall_base_gas_cost": 1 From f45fd7ee993608a9437141c90867a0f94cf86671 Mon Sep 17 00:00:00 2001 From: enitrat Date: Sat, 28 Sep 2024 23:12:28 +0200 Subject: [PATCH 08/53] restore skipfile --- blockchain-tests-skip.yml | 179 +++++++++++++++++++++++++++++++++++++- 1 file changed, 178 insertions(+), 1 deletion(-) mode change 120000 => 100644 blockchain-tests-skip.yml diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml deleted file mode 120000 index 7428ce91..00000000 --- a/blockchain-tests-skip.yml +++ /dev/null @@ -1 +0,0 @@ -../kakarot-ssj/blockchain-tests-skip.yml \ No newline at end of file diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml new file mode 100644 index 00000000..4cedddf6 --- /dev/null +++ b/blockchain-tests-skip.yml @@ -0,0 +1,178 @@ +# List of test names and test names regex to be skipped. +# The first level corresponds to the directory, the second to the list of file names regex to ignore. +# In the ef-tests repo, we skip all tests but the vmArithmeticTest. + +directories: + - Pyspecs + - Cancun + +filename: + None: + - None + +testname: + vmArithmeticTest: + - addmod_d10g0v0_Cancun + - addmod_d11g0v0_Cancun + - addmod_d8g0v0_Cancun + - addmod_d9g0v0_Cancun + - divByZero_d63g0v0_Cancun + - divByZero_d64g0v0_Cancun + - divByZero_d65g0v0_Cancun + - divByZero_d66g0v0_Cancun + - divByZero_d67g0v0_Cancun + - divByZero_d68g0v0_Cancun + - divByZero_d69g0v0_Cancun + - divByZero_d70g0v0_Cancun + - divByZero_d71g0v0_Cancun + - divByZero_d72g0v0_Cancun + - divByZero_d73g0v0_Cancun + - divByZero_d74g0v0_Cancun + - divByZero_d75g0v0_Cancun + - divByZero_d76g0v0_Cancun + - divByZero_d77g0v0_Cancun + - divByZero_d78g0v0_Cancun + - divByZero_d79g0v0_Cancun + - divByZero_d80g0v0_Cancun + - divByZero_d81g0v0_Cancun + - divByZero_d82g0v0_Cancun + - divByZero_d83g0v0_Cancun + - divByZero_d84g0v0_Cancun + - divByZero_d85g0v0_Cancun + - divByZero_d86g0v0_Cancun + - divByZero_d87g0v0_Cancun + - divByZero_d88g0v0_Cancun + - divByZero_d89g0v0_Cancun + - divByZero_d90g0v0_Cancun + - divByZero_d91g0v0_Cancun + - divByZero_d92g0v0_Cancun + - divByZero_d93g0v0_Cancun + - divByZero_d94g0v0_Cancun + - divByZero_d95g0v0_Cancun + - divByZero_d96g0v0_Cancun + - divByZero_d97g0v0_Cancun + - expPower256Of256_d0g0v0_Cancun + - exp_d1g0v0_Cancun + - exp_d3g0v0_Cancun + - exp_d8g0v0_Cancun + - exp_d9g0v0_Cancun + - expPower256_d0g0v0_Cancun + - mulmod_d12g0v0_Cancun + - mulmod_d13g0v0_Cancun + - mulmod_d14g0v0_Cancun + - mulmod_d15g0v0_Cancun + - twoOps_d0g0v0_Cancun + +regex: + stArgsZeroOneBalance: + - .* + stAttackTest: + - .* + stBadOpcode: + - .* + stBugs: + - .* + stCallCodes: + - .* + stCallCreateCallCodeTest: + - .* + stCallDelegateCodesCallCodeHomestead: + - .* + stCallDelegateCodesHomestead: + - .* + stChainId: + - .* + stCodeSizeLimit: + - .* + stCreateTest: + - .* + stCreate2: + - .* + stDelegatecallTestHomestead: + - .* + stEIP150Specific: + - .* + stEIP150singleCodeGasPrices: + - .* + stEIP1559: + - .* + stEIP158Specific: + - .* + stEIP2930: + - .* + stExample: + - .* + stExtCodeHash: + - .* + stInitCodeTest: + - .* + stLogTests: + - .* + stMemExpandingEIP150Calls: + - .* + stMemoryStressTest: + - .* + stMemoryTest: + - .* + stNonZeroCallsTest: + - .* + stPreCompiledContracts: + - .* + stPreCompiledContracts2: + - .* + stQuadraticComplexityTest: + - .* + stRandom: + - .* + stRandom2: + - .* + stRecursiveCreate: + - .* + stRefundTest: + - .* + stReturnDataTest: + - .* + stRevertTest: + - .* + stSLoadTest: + - .* + stSStoreTest: + - .* + stSelfBalance: + - .* + stShift: + - .* + stSolidityTest: + - .* + stSpecialTest: + - .* + stStackTests: + - .* + stStaticCall: + - .* + stStaticFlagEnabled: + - .* + stSystemOperationsTest: + - .* + stTimeConsuming: + - .* + stTransactionTest: + - .* + stTransitionTest: + - .* + stWalletTest: + - .* + stZeroCallsRevert: + - .* + stZeroKnowledge: + - .* + stZeroKnowledge2: + - .* + vmIOandFlowOperations: + - .* + vmLogTest: + - .* + vmPerformance: + - .* + vmTests: + - .* From 2ff9cb81c153d4c51a1c80473386c47ef51f05f7 Mon Sep 17 00:00:00 2001 From: enitrat Date: Sun, 29 Sep 2024 10:53:37 +0200 Subject: [PATCH 09/53] make tests not quiet --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 561c42b3..eeff96a6 100644 --- a/Makefile +++ b/Makefile @@ -84,7 +84,7 @@ ef-test-v1: build # Runs ef-tests with cairo-native mode ef-test-v1-native: build - cargo test --test tests --no-fail-fast --quiet --features "v1,native,ci" + cargo test --test tests --no-fail-fast --features "v1,native,ci" # Build the rust crates build: From 29694a5275a576c64046209ad3d2f9aae6ac7a7e Mon Sep 17 00:00:00 2001 From: enitrat Date: Sun, 29 Sep 2024 20:19:59 +0200 Subject: [PATCH 10/53] update used rev --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c97050a7..1a62176c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,12 +47,12 @@ cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch = "fix-snapshot-clones" } cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", rev="7c8bd351ecf0c0375d7030466500523a9a924273", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", rev="7c8bd351ecf0c0375d7030466500523a9a924273" } # Other async-trait = "0.1" From e85dde564832de872d85006be1ec9411a3f78aee Mon Sep 17 00:00:00 2001 From: enitrat Date: Sun, 29 Sep 2024 20:50:25 +0200 Subject: [PATCH 11/53] fix rev --- Cargo.lock | 6 +++--- Cargo.toml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5d89b034..cb8ea6a4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#313ea8659a0266687d862ecc0c276aef56f519e5" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=7c8bd351ecf0c0375d7030466500523a9a924273#7c8bd351ecf0c0375d7030466500523a9a924273" dependencies = [ "anyhow", "ark-ec", @@ -5189,7 +5189,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#313ea8659a0266687d862ecc0c276aef56f519e5" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=7c8bd351ecf0c0375d7030466500523a9a924273#7c8bd351ecf0c0375d7030466500523a9a924273" dependencies = [ "clap", "itertools 0.10.5", @@ -8565,7 +8565,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#313ea8659a0266687d862ecc0c276aef56f519e5" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=7c8bd351ecf0c0375d7030466500523a9a924273#7c8bd351ecf0c0375d7030466500523a9a924273" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 1a62176c..23c157a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,12 +47,12 @@ cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch = "fix-snapshot-clones" } cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", rev="7c8bd351ecf0c0375d7030466500523a9a924273", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="7c8bd351ecf0c0375d7030466500523a9a924273", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", branch = "kkrt-native-2.8", rev="7c8bd351ecf0c0375d7030466500523a9a924273" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="7c8bd351ecf0c0375d7030466500523a9a924273" } # Other async-trait = "0.1" From f95e186644c67e2cd3b2282b9ef1ac5624d212f6 Mon Sep 17 00:00:00 2001 From: enitrat Date: Sun, 29 Sep 2024 21:48:19 +0200 Subject: [PATCH 12/53] reduce max steps --- .../sequencer/resources/versioned_constants.json | 4 ++-- crates/sequencer/src/resources/versioned_constants.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json b/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json index 792d8a94..33579709 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json +++ b/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json @@ -8,7 +8,7 @@ "max_calldata_length": 5000, "max_contract_bytecode_size": 81920 }, - "invoke_tx_max_n_steps": 100000000, + "invoke_tx_max_n_steps": 50000000, "l2_resource_gas_costs": { "gas_per_data_felt": [128, 1000], "event_key_factor": [2, 1], @@ -63,7 +63,7 @@ "syscall_base_gas_cost": 1 }, "initial_gas_cost": { - "step_gas_cost": 800000000 + "step_gas_cost": 500000000 }, "keccak_gas_cost": { "syscall_base_gas_cost": 1 diff --git a/crates/sequencer/src/resources/versioned_constants.json b/crates/sequencer/src/resources/versioned_constants.json index 792d8a94..33579709 100644 --- a/crates/sequencer/src/resources/versioned_constants.json +++ b/crates/sequencer/src/resources/versioned_constants.json @@ -8,7 +8,7 @@ "max_calldata_length": 5000, "max_contract_bytecode_size": 81920 }, - "invoke_tx_max_n_steps": 100000000, + "invoke_tx_max_n_steps": 50000000, "l2_resource_gas_costs": { "gas_per_data_felt": [128, 1000], "event_key_factor": [2, 1], @@ -63,7 +63,7 @@ "syscall_base_gas_cost": 1 }, "initial_gas_cost": { - "step_gas_cost": 800000000 + "step_gas_cost": 500000000 }, "keccak_gas_cost": { "syscall_base_gas_cost": 1 From 74930b2ee707d11098ac981b869662f65fba7bf8 Mon Sep 17 00:00:00 2001 From: enitrat Date: Mon, 30 Sep 2024 17:49:01 +0200 Subject: [PATCH 13/53] nocapture to have more logs in CI --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index eeff96a6..bb5445d5 100644 --- a/Makefile +++ b/Makefile @@ -84,7 +84,7 @@ ef-test-v1: build # Runs ef-tests with cairo-native mode ef-test-v1-native: build - cargo test --test tests --no-fail-fast --features "v1,native,ci" + cargo test --test tests --no-fail-fast --features "v1,native,ci" -- --nocapture # Build the rust crates build: From 0f9e0dc167012f35e12c8ac89041f8b31d50fcd0 Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 1 Oct 2024 18:50:04 +0200 Subject: [PATCH 14/53] bump native --- Cargo.lock | 16 +++++++++------- Cargo.toml | 6 +++--- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cb8ea6a4..8fa4d101 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=7c8bd351ecf0c0375d7030466500523a9a924273#7c8bd351ecf0c0375d7030466500523a9a924273" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=50267f96092793dd389ae88f740b077a7703b3ed#50267f96092793dd389ae88f740b077a7703b3ed" dependencies = [ "anyhow", "ark-ec", @@ -1816,8 +1816,8 @@ dependencies = [ [[package]] name = "cairo-native" -version = "0.2.0" -source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-snapshot-clones#f3f6ba23a9a6d8fb480d6250a5b382f68d957ed9" +version = "0.2.0-alpha.1" +source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-clone-drop-for-enum-structs#8c8a40f750633c99f4db8f971dd6748f6d831802" dependencies = [ "anyhow", "aquamarine", @@ -1868,12 +1868,14 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.2.0" -source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-snapshot-clones#f3f6ba23a9a6d8fb480d6250a5b382f68d957ed9" +version = "0.2.0-alpha.1" +source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-clone-drop-for-enum-structs#8c8a40f750633c99f4db8f971dd6748f6d831802" dependencies = [ "cairo-lang-sierra-gas", + "itertools 0.13.0", "lazy_static", "libc", + "num-traits 0.2.19", "rand", "starknet-curve 0.5.1", "starknet-types-core", @@ -5189,7 +5191,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=7c8bd351ecf0c0375d7030466500523a9a924273#7c8bd351ecf0c0375d7030466500523a9a924273" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=50267f96092793dd389ae88f740b077a7703b3ed#50267f96092793dd389ae88f740b077a7703b3ed" dependencies = [ "clap", "itertools 0.10.5", @@ -8565,7 +8567,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=7c8bd351ecf0c0375d7030466500523a9a924273#7c8bd351ecf0c0375d7030466500523a9a924273" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=50267f96092793dd389ae88f740b077a7703b3ed#50267f96092793dd389ae88f740b077a7703b3ed" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 23c157a9..d3b6d247 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.2" cairo-lang-utils = "2.8.2" cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch = "fix-snapshot-clones" } +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch = "fix-clone-drop-for-enum-structs" } cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="7c8bd351ecf0c0375d7030466500523a9a924273", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="50267f96092793dd389ae88f740b077a7703b3ed", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="7c8bd351ecf0c0375d7030466500523a9a924273" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="50267f96092793dd389ae88f740b077a7703b3ed" } # Other async-trait = "0.1" From 65b4696243497598e32e1b50537bfbfd0507c147 Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 2 Oct 2024 10:38:59 +0200 Subject: [PATCH 15/53] downgrade native to main --- Cargo.lock | 10 +++++----- Cargo.toml | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8fa4d101..fce341aa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=50267f96092793dd389ae88f740b077a7703b3ed#50267f96092793dd389ae88f740b077a7703b3ed" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fa48e27af95960854773139c7eedc79154265d30#fa48e27af95960854773139c7eedc79154265d30" dependencies = [ "anyhow", "ark-ec", @@ -1817,7 +1817,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.1" -source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-clone-drop-for-enum-structs#8c8a40f750633c99f4db8f971dd6748f6d831802" +source = "git+https://github.com/lambdaclass/cairo_native#c866fbf8417cfcf522fd809348a483c5daef2e45" dependencies = [ "anyhow", "aquamarine", @@ -1869,7 +1869,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.1" -source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-clone-drop-for-enum-structs#8c8a40f750633c99f4db8f971dd6748f6d831802" +source = "git+https://github.com/lambdaclass/cairo_native#c866fbf8417cfcf522fd809348a483c5daef2e45" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5191,7 +5191,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=50267f96092793dd389ae88f740b077a7703b3ed#50267f96092793dd389ae88f740b077a7703b3ed" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fa48e27af95960854773139c7eedc79154265d30#fa48e27af95960854773139c7eedc79154265d30" dependencies = [ "clap", "itertools 0.10.5", @@ -8567,7 +8567,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=50267f96092793dd389ae88f740b077a7703b3ed#50267f96092793dd389ae88f740b077a7703b3ed" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fa48e27af95960854773139c7eedc79154265d30#fa48e27af95960854773139c7eedc79154265d30" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index d3b6d247..99d373f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.2" cairo-lang-utils = "2.8.2" cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch = "fix-clone-drop-for-enum-structs" } +cairo-native = { git = "https://github.com/lambdaclass/cairo_native" } cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="50267f96092793dd389ae88f740b077a7703b3ed", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="fa48e27af95960854773139c7eedc79154265d30", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="50267f96092793dd389ae88f740b077a7703b3ed" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="fa48e27af95960854773139c7eedc79154265d30" } # Other async-trait = "0.1" From 45677cc6bf7ce7ec2a8ba7782f71f3e148e2fc90 Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 2 Oct 2024 19:51:08 +0200 Subject: [PATCH 16/53] bump native --- Cargo.lock | 14 +++++++------- Cargo.toml | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fce341aa..253ed2a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1067,7 +1067,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fa48e27af95960854773139c7eedc79154265d30#fa48e27af95960854773139c7eedc79154265d30" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#15592e0cf10314c31dc2b0f7293aa04c0a54fb57" dependencies = [ "anyhow", "ark-ec", @@ -1816,8 +1816,8 @@ dependencies = [ [[package]] name = "cairo-native" -version = "0.2.0-alpha.1" -source = "git+https://github.com/lambdaclass/cairo_native#c866fbf8417cfcf522fd809348a483c5daef2e45" +version = "0.2.0-alpha.2" +source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-clone-drop-for-enum-structs#cffd8434ac5d7b2d8bcb2cb38c5ffdc6aeb9d814" dependencies = [ "anyhow", "aquamarine", @@ -1868,8 +1868,8 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.2.0-alpha.1" -source = "git+https://github.com/lambdaclass/cairo_native#c866fbf8417cfcf522fd809348a483c5daef2e45" +version = "0.2.0-alpha.2" +source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-clone-drop-for-enum-structs#cffd8434ac5d7b2d8bcb2cb38c5ffdc6aeb9d814" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5191,7 +5191,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fa48e27af95960854773139c7eedc79154265d30#fa48e27af95960854773139c7eedc79154265d30" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#15592e0cf10314c31dc2b0f7293aa04c0a54fb57" dependencies = [ "clap", "itertools 0.10.5", @@ -8567,7 +8567,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fa48e27af95960854773139c7eedc79154265d30#fa48e27af95960854773139c7eedc79154265d30" +source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#15592e0cf10314c31dc2b0f7293aa04c0a54fb57" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 99d373f9..d90a4295 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.2" cairo-lang-utils = "2.8.2" cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native" } +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch="fix-clone-drop-for-enum-structs" } cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="fa48e27af95960854773139c7eedc79154265d30", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch="kkrt-native-2.8", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="fa48e27af95960854773139c7eedc79154265d30" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", branch="kkrt-native-2.8" } # Other async-trait = "0.1" From 758ac6a56bf02454ca27fe7a0fdcedbb36e6a647 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 3 Oct 2024 16:57:18 +0200 Subject: [PATCH 17/53] bump native --- Cargo.lock | 21 +++++++++++++-------- Cargo.toml | 6 +++--- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 253ed2a6..e2ac989c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -951,10 +951,14 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", +<<<<<<< HEAD <<<<<<< HEAD "itertools 0.13.0", ======= "itertools 0.12.1", +======= + "itertools 0.10.5", +>>>>>>> af062f1 (bump native) "lazy_static", "lazycell", "log", @@ -982,7 +986,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.13.0", + "itertools 0.10.5", "log", "prettyplease", "proc-macro2", @@ -1067,7 +1071,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#15592e0cf10314c31dc2b0f7293aa04c0a54fb57" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fbff43b0913da5946afb5c92f8aba6cfd1025322#fbff43b0913da5946afb5c92f8aba6cfd1025322" dependencies = [ "anyhow", "ark-ec", @@ -1817,7 +1821,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.2" -source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-clone-drop-for-enum-structs#cffd8434ac5d7b2d8bcb2cb38c5ffdc6aeb9d814" +source = "git+https://github.com/lambdaclass/cairo_native?rev=79a8dcffe1e562e80198425e7c9f3a328c783947#79a8dcffe1e562e80198425e7c9f3a328c783947" dependencies = [ "anyhow", "aquamarine", @@ -1869,7 +1873,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.2" -source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-clone-drop-for-enum-structs#cffd8434ac5d7b2d8bcb2cb38c5ffdc6aeb9d814" +source = "git+https://github.com/lambdaclass/cairo_native?rev=79a8dcffe1e562e80198425e7c9f3a328c783947#79a8dcffe1e562e80198425e7c9f3a328c783947" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -2832,6 +2836,7 @@ dependencies = [ "ef-tests", "eyre", "lazy_static", + "libc", "log", "num-bigint", "num-integer", @@ -4320,7 +4325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.48.5", ] [[package]] @@ -5191,7 +5196,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#15592e0cf10314c31dc2b0f7293aa04c0a54fb57" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fbff43b0913da5946afb5c92f8aba6cfd1025322#fbff43b0913da5946afb5c92f8aba6cfd1025322" dependencies = [ "clap", "itertools 0.10.5", @@ -8567,7 +8572,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?branch=kkrt-native-2.8#15592e0cf10314c31dc2b0f7293aa04c0a54fb57" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fbff43b0913da5946afb5c92f8aba6cfd1025322#fbff43b0913da5946afb5c92f8aba6cfd1025322" dependencies = [ "bitvec", "cairo-lang-starknet-classes", @@ -9699,7 +9704,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.48.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d90a4295..60a30316 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.2" cairo-lang-utils = "2.8.2" cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch="fix-clone-drop-for-enum-structs" } +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="79a8dcffe1e562e80198425e7c9f3a328c783947"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", branch="kkrt-native-2.8", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="fbff43b0913da5946afb5c92f8aba6cfd1025322", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", branch="kkrt-native-2.8" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="fbff43b0913da5946afb5c92f8aba6cfd1025322" } # Other async-trait = "0.1" From d701a01a1a0f460beefcbe4264799021fd913ebd Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 3 Oct 2024 19:06:20 +0200 Subject: [PATCH 18/53] latest native main --- Cargo.lock | 7 +++---- Cargo.toml | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e2ac989c..647394fc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1071,7 +1071,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fbff43b0913da5946afb5c92f8aba6cfd1025322#fbff43b0913da5946afb5c92f8aba6cfd1025322" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8781563890bae685bf52129e468e0911b35fd597#8781563890bae685bf52129e468e0911b35fd597" dependencies = [ "anyhow", "ark-ec", @@ -2836,7 +2836,6 @@ dependencies = [ "ef-tests", "eyre", "lazy_static", - "libc", "log", "num-bigint", "num-integer", @@ -5196,7 +5195,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fbff43b0913da5946afb5c92f8aba6cfd1025322#fbff43b0913da5946afb5c92f8aba6cfd1025322" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8781563890bae685bf52129e468e0911b35fd597#8781563890bae685bf52129e468e0911b35fd597" dependencies = [ "clap", "itertools 0.10.5", @@ -8572,7 +8571,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=fbff43b0913da5946afb5c92f8aba6cfd1025322#fbff43b0913da5946afb5c92f8aba6cfd1025322" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8781563890bae685bf52129e468e0911b35fd597#8781563890bae685bf52129e468e0911b35fd597" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 60a30316..a9d6b690 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,12 +47,12 @@ cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="79a8dcffe1e562e80198425e7c9f3a328c783947"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="fbff43b0913da5946afb5c92f8aba6cfd1025322", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="8781563890bae685bf52129e468e0911b35fd597", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="fbff43b0913da5946afb5c92f8aba6cfd1025322" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="8781563890bae685bf52129e468e0911b35fd597" } # Other async-trait = "0.1" From f476b4a93e18bd6a3345b3e9d2ac95bca678334e Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 3 Oct 2024 20:25:23 +0200 Subject: [PATCH 19/53] remove blockchain-skipped tests --- blockchain-tests-skip.yml | 163 -------------------------------------- 1 file changed, 163 deletions(-) diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml index 4cedddf6..1c3e4268 100644 --- a/blockchain-tests-skip.yml +++ b/blockchain-tests-skip.yml @@ -11,168 +11,5 @@ filename: - None testname: - vmArithmeticTest: - - addmod_d10g0v0_Cancun - - addmod_d11g0v0_Cancun - - addmod_d8g0v0_Cancun - - addmod_d9g0v0_Cancun - - divByZero_d63g0v0_Cancun - - divByZero_d64g0v0_Cancun - - divByZero_d65g0v0_Cancun - - divByZero_d66g0v0_Cancun - - divByZero_d67g0v0_Cancun - - divByZero_d68g0v0_Cancun - - divByZero_d69g0v0_Cancun - - divByZero_d70g0v0_Cancun - - divByZero_d71g0v0_Cancun - - divByZero_d72g0v0_Cancun - - divByZero_d73g0v0_Cancun - - divByZero_d74g0v0_Cancun - - divByZero_d75g0v0_Cancun - - divByZero_d76g0v0_Cancun - - divByZero_d77g0v0_Cancun - - divByZero_d78g0v0_Cancun - - divByZero_d79g0v0_Cancun - - divByZero_d80g0v0_Cancun - - divByZero_d81g0v0_Cancun - - divByZero_d82g0v0_Cancun - - divByZero_d83g0v0_Cancun - - divByZero_d84g0v0_Cancun - - divByZero_d85g0v0_Cancun - - divByZero_d86g0v0_Cancun - - divByZero_d87g0v0_Cancun - - divByZero_d88g0v0_Cancun - - divByZero_d89g0v0_Cancun - - divByZero_d90g0v0_Cancun - - divByZero_d91g0v0_Cancun - - divByZero_d92g0v0_Cancun - - divByZero_d93g0v0_Cancun - - divByZero_d94g0v0_Cancun - - divByZero_d95g0v0_Cancun - - divByZero_d96g0v0_Cancun - - divByZero_d97g0v0_Cancun - - expPower256Of256_d0g0v0_Cancun - - exp_d1g0v0_Cancun - - exp_d3g0v0_Cancun - - exp_d8g0v0_Cancun - - exp_d9g0v0_Cancun - - expPower256_d0g0v0_Cancun - - mulmod_d12g0v0_Cancun - - mulmod_d13g0v0_Cancun - - mulmod_d14g0v0_Cancun - - mulmod_d15g0v0_Cancun - - twoOps_d0g0v0_Cancun regex: - stArgsZeroOneBalance: - - .* - stAttackTest: - - .* - stBadOpcode: - - .* - stBugs: - - .* - stCallCodes: - - .* - stCallCreateCallCodeTest: - - .* - stCallDelegateCodesCallCodeHomestead: - - .* - stCallDelegateCodesHomestead: - - .* - stChainId: - - .* - stCodeSizeLimit: - - .* - stCreateTest: - - .* - stCreate2: - - .* - stDelegatecallTestHomestead: - - .* - stEIP150Specific: - - .* - stEIP150singleCodeGasPrices: - - .* - stEIP1559: - - .* - stEIP158Specific: - - .* - stEIP2930: - - .* - stExample: - - .* - stExtCodeHash: - - .* - stInitCodeTest: - - .* - stLogTests: - - .* - stMemExpandingEIP150Calls: - - .* - stMemoryStressTest: - - .* - stMemoryTest: - - .* - stNonZeroCallsTest: - - .* - stPreCompiledContracts: - - .* - stPreCompiledContracts2: - - .* - stQuadraticComplexityTest: - - .* - stRandom: - - .* - stRandom2: - - .* - stRecursiveCreate: - - .* - stRefundTest: - - .* - stReturnDataTest: - - .* - stRevertTest: - - .* - stSLoadTest: - - .* - stSStoreTest: - - .* - stSelfBalance: - - .* - stShift: - - .* - stSolidityTest: - - .* - stSpecialTest: - - .* - stStackTests: - - .* - stStaticCall: - - .* - stStaticFlagEnabled: - - .* - stSystemOperationsTest: - - .* - stTimeConsuming: - - .* - stTransactionTest: - - .* - stTransitionTest: - - .* - stWalletTest: - - .* - stZeroCallsRevert: - - .* - stZeroKnowledge: - - .* - stZeroKnowledge2: - - .* - vmIOandFlowOperations: - - .* - vmLogTest: - - .* - vmPerformance: - - .* - vmTests: - - .* From b89280e2d270bba4a533c92a33620a8e4dafea66 Mon Sep 17 00:00:00 2001 From: enitrat Date: Fri, 4 Oct 2024 16:01:40 +0200 Subject: [PATCH 20/53] bump native --- Cargo.lock | 25 +++++++++++++++++-------- Cargo.toml | 6 +++--- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 647394fc..ae35f1e5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -952,6 +952,7 @@ dependencies = [ "cexpr", "clang-sys", <<<<<<< HEAD +<<<<<<< HEAD <<<<<<< HEAD "itertools 0.13.0", ======= @@ -959,6 +960,9 @@ dependencies = [ ======= "itertools 0.10.5", >>>>>>> af062f1 (bump native) +======= + "itertools 0.12.1", +>>>>>>> 33854b2 (bump native) "lazy_static", "lazycell", "log", @@ -986,7 +990,7 @@ dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", @@ -1071,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8781563890bae685bf52129e468e0911b35fd597#8781563890bae685bf52129e468e0911b35fd597" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=c8aa14e152591db663abc939dcd98b1db7e13d04#c8aa14e152591db663abc939dcd98b1db7e13d04" dependencies = [ "anyhow", "ark-ec", @@ -1821,7 +1825,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.2" -source = "git+https://github.com/lambdaclass/cairo_native?rev=79a8dcffe1e562e80198425e7c9f3a328c783947#79a8dcffe1e562e80198425e7c9f3a328c783947" +source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-array-get-drop#c6c4fcdd89521c0e2540592cbc3f0f0c413df20f" dependencies = [ "anyhow", "aquamarine", @@ -1873,7 +1877,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.2" -source = "git+https://github.com/lambdaclass/cairo_native?rev=79a8dcffe1e562e80198425e7c9f3a328c783947#79a8dcffe1e562e80198425e7c9f3a328c783947" +source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-array-get-drop#c6c4fcdd89521c0e2540592cbc3f0f0c413df20f" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -2836,6 +2840,7 @@ dependencies = [ "ef-tests", "eyre", "lazy_static", + "libc", "log", "num-bigint", "num-integer", @@ -3724,11 +3729,15 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", +<<<<<<< HEAD <<<<<<< HEAD "socket2", ======= "socket2 0.4.10", >>>>>>> 29ad08f (update remote) +======= + "socket2 0.5.7", +>>>>>>> 33854b2 (bump native) "tokio", "tower-service", "tracing", @@ -4324,7 +4333,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -5195,7 +5204,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8781563890bae685bf52129e468e0911b35fd597#8781563890bae685bf52129e468e0911b35fd597" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=c8aa14e152591db663abc939dcd98b1db7e13d04#c8aa14e152591db663abc939dcd98b1db7e13d04" dependencies = [ "clap", "itertools 0.10.5", @@ -8571,7 +8580,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8781563890bae685bf52129e468e0911b35fd597#8781563890bae685bf52129e468e0911b35fd597" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=c8aa14e152591db663abc939dcd98b1db7e13d04#c8aa14e152591db663abc939dcd98b1db7e13d04" dependencies = [ "bitvec", "cairo-lang-starknet-classes", @@ -9703,7 +9712,7 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index a9d6b690..5765e7f2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.2" cairo-lang-utils = "2.8.2" cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="79a8dcffe1e562e80198425e7c9f3a328c783947"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch="fix-array-get-drop"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="8781563890bae685bf52129e468e0911b35fd597", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="c8aa14e152591db663abc939dcd98b1db7e13d04", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="8781563890bae685bf52129e468e0911b35fd597" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="c8aa14e152591db663abc939dcd98b1db7e13d04" } # Other async-trait = "0.1" From 93b098b61654a5b4a841de6795fbd6f9ea59a2a3 Mon Sep 17 00:00:00 2001 From: enitrat Date: Mon, 7 Oct 2024 16:03:33 +0200 Subject: [PATCH 21/53] bump native --- Cargo.lock | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++--- Cargo.toml | 6 ++--- 2 files changed, 73 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ae35f1e5..5839bbba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1088,7 +1088,7 @@ dependencies = [ "cairo-lang-sierra", "cairo-lang-starknet-classes", "cairo-lang-utils", - "cairo-native", + "cairo-native 0.2.0-alpha.2 (git+https://github.com/lambdaclass/cairo_native?branch=fix-array-get-drop)", "cairo-vm", "derive_more 0.99.18", <<<<<<< HEAD @@ -1822,6 +1822,58 @@ dependencies = [ "serde", ] +[[package]] +name = "cairo-native" +version = "0.2.0-alpha.2" +source = "git+https://github.com/lambdaclass/cairo_native?branch=add-malloc-tracing#b73e3fa8927eb284d362594aeaff900e28636a8d" +dependencies = [ + "anyhow", + "aquamarine", + "bumpalo", + "cairo-lang-compiler", + "cairo-lang-defs", + "cairo-lang-diagnostics", + "cairo-lang-filesystem", + "cairo-lang-runner", + "cairo-lang-semantic", + "cairo-lang-sierra", + "cairo-lang-sierra-ap-change", + "cairo-lang-sierra-gas", + "cairo-lang-sierra-generator", + "cairo-lang-starknet", + "cairo-lang-starknet-classes", + "cairo-lang-test-plugin", + "cairo-lang-utils", + "cairo-native-runtime 0.2.0-alpha.2 (git+https://github.com/lambdaclass/cairo_native?branch=add-malloc-tracing)", + "cc", + "clap", + "colored", + "educe", + "itertools 0.13.0", + "k256", + "keccak", + "lazy_static", + "libc", + "libloading", + "llvm-sys", + "melior", + "mlir-sys", + "num-bigint", + "num-traits 0.2.19", + "p256", + "sec1", + "serde", + "serde_json", + "sha2 0.10.8", + "starknet-types-core", + "stats_alloc", + "tempfile", + "thiserror", + "tracing", + "tracing-subscriber", + "utf8_iter", +] + [[package]] name = "cairo-native" version = "0.2.0-alpha.2" @@ -1844,7 +1896,7 @@ dependencies = [ "cairo-lang-starknet-classes", "cairo-lang-test-plugin", "cairo-lang-utils", - "cairo-native-runtime", + "cairo-native-runtime 0.2.0-alpha.2 (git+https://github.com/lambdaclass/cairo_native?branch=fix-array-get-drop)", "cc", "clap", "colored", @@ -1874,6 +1926,21 @@ dependencies = [ "utf8_iter", ] +[[package]] +name = "cairo-native-runtime" +version = "0.2.0-alpha.2" +source = "git+https://github.com/lambdaclass/cairo_native?branch=add-malloc-tracing#b73e3fa8927eb284d362594aeaff900e28636a8d" +dependencies = [ + "cairo-lang-sierra-gas", + "itertools 0.13.0", + "lazy_static", + "libc", + "num-traits 0.2.19", + "rand", + "starknet-curve 0.5.1", + "starknet-types-core", +] + [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.2" @@ -8013,7 +8080,7 @@ dependencies = [ "cached 0.53.1", "cairo-lang-sierra", "cairo-lang-starknet-classes", - "cairo-native", + "cairo-native 0.2.0-alpha.2 (git+https://github.com/lambdaclass/cairo_native?branch=add-malloc-tracing)", "eyre", "hashbrown 0.14.5", "lazy_static", diff --git a/Cargo.toml b/Cargo.toml index 5765e7f2..214d2e70 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.2" cairo-lang-utils = "2.8.2" cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch="fix-array-get-drop"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch="add-malloc-tracing"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="c8aa14e152591db663abc939dcd98b1db7e13d04", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="d4a433d54c0e53250f66d41e2b60210079f2d7a9", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="c8aa14e152591db663abc939dcd98b1db7e13d04" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="d4a433d54c0e53250f66d41e2b60210079f2d7a9" } # Other async-trait = "0.1" From 0c6d8777fecefc3a63067b33878f7a8be4bc8953 Mon Sep 17 00:00:00 2001 From: enitrat Date: Mon, 7 Oct 2024 16:50:30 +0200 Subject: [PATCH 22/53] fix build --- Cargo.lock | 79 +++++------------------------------------------------- Cargo.toml | 4 +-- 2 files changed, 8 insertions(+), 75 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5839bbba..940f200d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=c8aa14e152591db663abc939dcd98b1db7e13d04#c8aa14e152591db663abc939dcd98b1db7e13d04" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a62fc3320cd598b94093d4abcb97cea7409c543a#a62fc3320cd598b94093d4abcb97cea7409c543a" dependencies = [ "anyhow", "ark-ec", @@ -1088,7 +1088,7 @@ dependencies = [ "cairo-lang-sierra", "cairo-lang-starknet-classes", "cairo-lang-utils", - "cairo-native 0.2.0-alpha.2 (git+https://github.com/lambdaclass/cairo_native?branch=fix-array-get-drop)", + "cairo-native", "cairo-vm", "derive_more 0.99.18", <<<<<<< HEAD @@ -1844,59 +1844,7 @@ dependencies = [ "cairo-lang-starknet-classes", "cairo-lang-test-plugin", "cairo-lang-utils", - "cairo-native-runtime 0.2.0-alpha.2 (git+https://github.com/lambdaclass/cairo_native?branch=add-malloc-tracing)", - "cc", - "clap", - "colored", - "educe", - "itertools 0.13.0", - "k256", - "keccak", - "lazy_static", - "libc", - "libloading", - "llvm-sys", - "melior", - "mlir-sys", - "num-bigint", - "num-traits 0.2.19", - "p256", - "sec1", - "serde", - "serde_json", - "sha2 0.10.8", - "starknet-types-core", - "stats_alloc", - "tempfile", - "thiserror", - "tracing", - "tracing-subscriber", - "utf8_iter", -] - -[[package]] -name = "cairo-native" -version = "0.2.0-alpha.2" -source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-array-get-drop#c6c4fcdd89521c0e2540592cbc3f0f0c413df20f" -dependencies = [ - "anyhow", - "aquamarine", - "bumpalo", - "cairo-lang-compiler", - "cairo-lang-defs", - "cairo-lang-diagnostics", - "cairo-lang-filesystem", - "cairo-lang-runner", - "cairo-lang-semantic", - "cairo-lang-sierra", - "cairo-lang-sierra-ap-change", - "cairo-lang-sierra-gas", - "cairo-lang-sierra-generator", - "cairo-lang-starknet", - "cairo-lang-starknet-classes", - "cairo-lang-test-plugin", - "cairo-lang-utils", - "cairo-native-runtime 0.2.0-alpha.2 (git+https://github.com/lambdaclass/cairo_native?branch=fix-array-get-drop)", + "cairo-native-runtime", "cc", "clap", "colored", @@ -1941,21 +1889,6 @@ dependencies = [ "starknet-types-core", ] -[[package]] -name = "cairo-native-runtime" -version = "0.2.0-alpha.2" -source = "git+https://github.com/lambdaclass/cairo_native?branch=fix-array-get-drop#c6c4fcdd89521c0e2540592cbc3f0f0c413df20f" -dependencies = [ - "cairo-lang-sierra-gas", - "itertools 0.13.0", - "lazy_static", - "libc", - "num-traits 0.2.19", - "rand", - "starknet-curve 0.5.1", - "starknet-types-core", -] - [[package]] name = "cairo-vm" version = "1.0.1" @@ -5271,7 +5204,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=c8aa14e152591db663abc939dcd98b1db7e13d04#c8aa14e152591db663abc939dcd98b1db7e13d04" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a62fc3320cd598b94093d4abcb97cea7409c543a#a62fc3320cd598b94093d4abcb97cea7409c543a" dependencies = [ "clap", "itertools 0.10.5", @@ -8080,7 +8013,7 @@ dependencies = [ "cached 0.53.1", "cairo-lang-sierra", "cairo-lang-starknet-classes", - "cairo-native 0.2.0-alpha.2 (git+https://github.com/lambdaclass/cairo_native?branch=add-malloc-tracing)", + "cairo-native", "eyre", "hashbrown 0.14.5", "lazy_static", @@ -8647,7 +8580,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=c8aa14e152591db663abc939dcd98b1db7e13d04#c8aa14e152591db663abc939dcd98b1db7e13d04" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a62fc3320cd598b94093d4abcb97cea7409c543a#a62fc3320cd598b94093d4abcb97cea7409c543a" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 214d2e70..c40a38e3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,12 +47,12 @@ cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch="add-malloc-tracing"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="d4a433d54c0e53250f66d41e2b60210079f2d7a9", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="a62fc3320cd598b94093d4abcb97cea7409c543a", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="d4a433d54c0e53250f66d41e2b60210079f2d7a9" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="a62fc3320cd598b94093d4abcb97cea7409c543a" } # Other async-trait = "0.1" From 092472dbaafd0334c170142a03d1cb124ab78bc6 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 10 Oct 2024 15:04:48 +0200 Subject: [PATCH 23/53] bump native --- Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index c40a38e3..d6ce91c3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.2" cairo-lang-utils = "2.8.2" cairo-lang-starknet-classes = "2.8.2" cairo-lang-sierra = "2.8.2" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", branch="add-malloc-tracing"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="82c25b377f50904e1253b614c8719388277530e6"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="a62fc3320cd598b94093d4abcb97cea7409c543a", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="eee6d1981531c5a4466f83ecf8c851feaa91a1c6", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="a62fc3320cd598b94093d4abcb97cea7409c543a" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="eee6d1981531c5a4466f83ecf8c851feaa91a1c6" } # Other async-trait = "0.1" From a58104c65d4f193299edbe91c60215051e05a93b Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 10 Oct 2024 15:08:25 +0200 Subject: [PATCH 24/53] bump cairo --- Cargo.lock | 59 +++++++++++++----------------------------------------- Cargo.toml | 10 ++++----- 2 files changed, 19 insertions(+), 50 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 940f200d..ffba5ae7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a62fc3320cd598b94093d4abcb97cea7409c543a#a62fc3320cd598b94093d4abcb97cea7409c543a" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=eee6d1981531c5a4466f83ecf8c851feaa91a1c6#eee6d1981531c5a4466f83ecf8c851feaa91a1c6" dependencies = [ "anyhow", "ark-ec", @@ -1768,9 +1768,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-plugin" -version = "2.8.2" +version = "2.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f1597b8229a3649183ff33b19f0aeca5d86505253ebbbce377b271d1732835" +checksum = "4d5f036132e07b7829cb1d61b1ecc02789a70c7d16b2733722a2aca992492bc3" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1824,11 +1824,15 @@ dependencies = [ [[package]] name = "cairo-native" -version = "0.2.0-alpha.2" -source = "git+https://github.com/lambdaclass/cairo_native?branch=add-malloc-tracing#b73e3fa8927eb284d362594aeaff900e28636a8d" +version = "0.2.0-alpha.3" +source = "git+https://github.com/lambdaclass/cairo_native?rev=82c25b377f50904e1253b614c8719388277530e6#82c25b377f50904e1253b614c8719388277530e6" dependencies = [ "anyhow", "aquamarine", + "ark-ec", + "ark-ff 0.4.2", + "ark-secp256k1", + "ark-secp256r1", "bumpalo", "cairo-lang-compiler", "cairo-lang-defs", @@ -1850,7 +1854,6 @@ dependencies = [ "colored", "educe", "itertools 0.13.0", - "k256", "keccak", "lazy_static", "libc", @@ -1859,9 +1862,8 @@ dependencies = [ "melior", "mlir-sys", "num-bigint", + "num-integer", "num-traits 0.2.19", - "p256", - "sec1", "serde", "serde_json", "sha2 0.10.8", @@ -1876,8 +1878,8 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.2.0-alpha.2" -source = "git+https://github.com/lambdaclass/cairo_native?branch=add-malloc-tracing#b73e3fa8927eb284d362594aeaff900e28636a8d" +version = "0.2.0-alpha.3" +source = "git+https://github.com/lambdaclass/cairo_native?rev=82c25b377f50904e1253b614c8719388277530e6#82c25b377f50904e1253b614c8719388277530e6" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -2516,7 +2518,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" dependencies = [ "const-oid", - "pem-rfc7468", "zeroize", ] @@ -2840,7 +2841,6 @@ dependencies = [ "ef-tests", "eyre", "lazy_static", - "libc", "log", "num-bigint", "num-integer", @@ -2906,7 +2906,6 @@ dependencies = [ "ff", "generic-array", "group", - "pem-rfc7468", "pkcs8", "rand_core", "sec1", @@ -5179,18 +5178,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" -[[package]] -name = "p256" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" -dependencies = [ - "ecdsa", - "elliptic-curve", - "primeorder", - "sha2 0.10.8", -] - [[package]] name = "page_size" version = "0.6.0" @@ -5204,7 +5191,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a62fc3320cd598b94093d4abcb97cea7409c543a#a62fc3320cd598b94093d4abcb97cea7409c543a" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=eee6d1981531c5a4466f83ecf8c851feaa91a1c6#eee6d1981531c5a4466f83ecf8c851feaa91a1c6" dependencies = [ "clap", "itertools 0.10.5", @@ -5321,15 +5308,6 @@ dependencies = [ "serde", ] -[[package]] -name = "pem-rfc7468" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88b39c9bfcfc231068454382784bb460aae594343fb030d46e9f50a645418412" -dependencies = [ - "base64ct", -] - [[package]] name = "percent-encoding" version = "2.3.1" @@ -5530,15 +5508,6 @@ dependencies = [ "syn 2.0.77", ] -[[package]] -name = "primeorder" -version = "0.13.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" -dependencies = [ - "elliptic-curve", -] - [[package]] name = "primitive-types" version = "0.12.2" @@ -8580,7 +8549,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a62fc3320cd598b94093d4abcb97cea7409c543a#a62fc3320cd598b94093d4abcb97cea7409c543a" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=eee6d1981531c5a4466f83ecf8c851feaa91a1c6#eee6d1981531c5a4466f83ecf8c851feaa91a1c6" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index d6ce91c3..6635df63 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,11 +40,11 @@ revm-interpreter = { version = "13.0", default-features = false } revm-primitives = { version = "13.0", default-features = false } # Starknet deps -cairo-lang-casm = "2.8.2" -cairo-lang-starknet = "2.8.2" -cairo-lang-utils = "2.8.2" -cairo-lang-starknet-classes = "2.8.2" -cairo-lang-sierra = "2.8.2" +cairo-lang-casm = "2.8.4" +cairo-lang-starknet = "2.8.4" +cairo-lang-utils = "2.8.4" +cairo-lang-starknet-classes = "2.8.4" +cairo-lang-sierra = "2.8.4" cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="82c25b377f50904e1253b614c8719388277530e6"} cairo-vm = "1.0.1" blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="eee6d1981531c5a4466f83ecf8c851feaa91a1c6", default-features = false, features = [ From 4363c7dc6d75a677d8a7d4403a546eed3299b064 Mon Sep 17 00:00:00 2001 From: enitrat Date: Sun, 13 Oct 2024 17:39:34 +0200 Subject: [PATCH 25/53] bump native --- Cargo.lock | 11 ++++++----- Cargo.toml | 6 +++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ffba5ae7..8d77d04e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=eee6d1981531c5a4466f83ecf8c851feaa91a1c6#eee6d1981531c5a4466f83ecf8c851feaa91a1c6" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8f827b37ca8f830b8ff469869a2c0a55bdc01825#8f827b37ca8f830b8ff469869a2c0a55bdc01825" dependencies = [ "anyhow", "ark-ec", @@ -1825,7 +1825,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=82c25b377f50904e1253b614c8719388277530e6#82c25b377f50904e1253b614c8719388277530e6" +source = "git+https://github.com/lambdaclass/cairo_native?rev=f862ec3533a7af79909f4c3e19598da2e537cd91#f862ec3533a7af79909f4c3e19598da2e537cd91" dependencies = [ "anyhow", "aquamarine", @@ -1879,7 +1879,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=82c25b377f50904e1253b614c8719388277530e6#82c25b377f50904e1253b614c8719388277530e6" +source = "git+https://github.com/lambdaclass/cairo_native?rev=f862ec3533a7af79909f4c3e19598da2e537cd91#f862ec3533a7af79909f4c3e19598da2e537cd91" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -2841,6 +2841,7 @@ dependencies = [ "ef-tests", "eyre", "lazy_static", + "libc", "log", "num-bigint", "num-integer", @@ -5191,7 +5192,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=eee6d1981531c5a4466f83ecf8c851feaa91a1c6#eee6d1981531c5a4466f83ecf8c851feaa91a1c6" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8f827b37ca8f830b8ff469869a2c0a55bdc01825#8f827b37ca8f830b8ff469869a2c0a55bdc01825" dependencies = [ "clap", "itertools 0.10.5", @@ -8549,7 +8550,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=eee6d1981531c5a4466f83ecf8c851feaa91a1c6#eee6d1981531c5a4466f83ecf8c851feaa91a1c6" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8f827b37ca8f830b8ff469869a2c0a55bdc01825#8f827b37ca8f830b8ff469869a2c0a55bdc01825" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 6635df63..f9644db4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.4" cairo-lang-utils = "2.8.4" cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="82c25b377f50904e1253b614c8719388277530e6"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="f862ec3533a7af79909f4c3e19598da2e537cd91"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="eee6d1981531c5a4466f83ecf8c851feaa91a1c6", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="8f827b37ca8f830b8ff469869a2c0a55bdc01825", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="eee6d1981531c5a4466f83ecf8c851feaa91a1c6" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="8f827b37ca8f830b8ff469869a2c0a55bdc01825" } # Other async-trait = "0.1" From 82912898872e51c68928008fb91d73823af5f853 Mon Sep 17 00:00:00 2001 From: enitrat Date: Sun, 13 Oct 2024 22:51:47 +0200 Subject: [PATCH 26/53] idk --- crates/ef-testing/Cargo.toml | 1 + .../ef-testing/src/evm_sequencer/constants.rs | 13 ++--- .../src/evm_sequencer/sequencer/mod.rs | 8 +-- crates/ef-testing/src/models/result.rs | 55 +++++++++++++++++++ crates/sequencer/src/lib.rs | 2 +- crates/sequencer/src/native.rs | 38 ++++++------- crates/sequencer/src/state.rs | 5 +- 7 files changed, 88 insertions(+), 34 deletions(-) diff --git a/crates/ef-testing/Cargo.toml b/crates/ef-testing/Cargo.toml index f4b14218..5937ac2d 100644 --- a/crates/ef-testing/Cargo.toml +++ b/crates/ef-testing/Cargo.toml @@ -9,6 +9,7 @@ build = "build.rs" [dependencies] bytes = { workspace = true } +libc = "0.2.159" # Eth deps alloy-rlp = { workspace = true } diff --git a/crates/ef-testing/src/evm_sequencer/constants.rs b/crates/ef-testing/src/evm_sequencer/constants.rs index 14321802..057c7acd 100644 --- a/crates/ef-testing/src/evm_sequencer/constants.rs +++ b/crates/ef-testing/src/evm_sequencer/constants.rs @@ -22,13 +22,11 @@ where serde_json::from_str::(&std::fs::read_to_string(path)?).map_err(eyre::Error::from) } - pub fn get_raw_contract_class(contract_path: &str) -> String { println!("path: {:?}", contract_path); fs::read_to_string(contract_path).unwrap() } - // Chain params pub const CHAIN_ID: u64 = 0x1; @@ -134,11 +132,12 @@ lazy_static! { panic!("Kakarot class hash not defined, use features flag \"v0\" or \"v1\""); pub static ref UNINITIALIZED_ACCOUNT_CLASS: LegacyContractClass = panic!("Uninitialized account class not defined, use features flag \"v0\" or \"v1\""); - - pub static ref KAKAROT_JSON_CLASS: String = panic!("Kakarot json class not defined, use features flag \"v0\" or \"v1\""); - pub static ref ACCOUNT_CONTRACT_JSON_CLASS: String = panic!("Account contract json class not defined, use features flag \"v0\" or \"v1\""); - pub static ref UNINITIALIZED_ACCOUNT_JSON_CLASS: String = panic!("Uninitialized account json class not defined, use features flag \"v0\" or \"v1\""); - + pub static ref KAKAROT_JSON_CLASS: String = + panic!("Kakarot json class not defined, use features flag \"v0\" or \"v1\""); + pub static ref ACCOUNT_CONTRACT_JSON_CLASS: String = + panic!("Account contract json class not defined, use features flag \"v0\" or \"v1\""); + pub static ref UNINITIALIZED_ACCOUNT_JSON_CLASS: String = + panic!("Uninitialized account json class not defined, use features flag \"v0\" or \"v1\""); pub static ref CLASS_HASH_TO_JSON_CLASS: HashMap = HashMap::new(); } diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index fe0e967f..05e589da 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -13,7 +13,7 @@ use crate::evm_sequencer::{ ETH_FEE_TOKEN_ADDRESS, FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, KAKAROT_CLASS, KAKAROT_CLASS_HASH, KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, OPENZEPPELIN_ACCOUNT_CLASS_HASH, RELAYER_ADDRESS, RELAYER_BALANCE, RELAYER_VERIFYING_KEY, - STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS, UNINITIALIZED_ACCOUNT_CLASS_HASH + STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS, UNINITIALIZED_ACCOUNT_CLASS_HASH, }, types::contract_class::CasmContractClassWrapper, utils::compute_starknet_address, @@ -246,9 +246,9 @@ lazy_static! { println!("Got uninitialized account's json of length {}", uninitialized_json.len()); println!("Got account's json of length {}", account_json.len()); println!("Got kakarot's json of length {}", kakarot_json.len()); - let uninitialized_class= class_from_json_str(uninitialized_json, *UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap(); - let account_class= class_from_json_str(account_json, *ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); - let kakarot_class= class_from_json_str(kakarot_json, *KAKAROT_CLASS_HASH).unwrap(); + let account_class = class_from_json_str(account_json, *ACCOUNT_CONTRACT_CLASS_HASH).unwrap_or_else(|err| panic!("{}", err)); + let uninitialized_class = class_from_json_str(uninitialized_json, *UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap_or_else(|err| panic!("{}", err)); + let kakarot_class = class_from_json_str(kakarot_json, *KAKAROT_CLASS_HASH).unwrap_or_else(|err| panic!("{}", err)); (kakarot_class, account_class, uninitialized_class) } #[cfg(not(feature = "native"))] diff --git a/crates/ef-testing/src/models/result.rs b/crates/ef-testing/src/models/result.rs index d97f3185..4470c7ad 100644 --- a/crates/ef-testing/src/models/result.rs +++ b/crates/ef-testing/src/models/result.rs @@ -78,6 +78,60 @@ impl TryFrom<&EventData> for EVMOutput { } } +use std::mem; +use std::ptr; + +#[link(name = "c")] +extern "C" { + fn mach_task_self() -> libc::c_uint; + fn task_info( + task: libc::c_uint, + flavor: libc::c_uint, + task_info: *mut libc::c_void, + inout_count: *mut libc::c_uint, + ) -> libc::c_int; +} + +const MACH_TASK_BASIC_INFO: libc::c_uint = 20; + +#[repr(C)] +struct MachTaskBasicInfo { + virtual_size: u64, + resident_size: u64, + resident_size_max: u64, + user_time: u64, + system_time: u64, + policy: i32, + suspend_count: i32, +} + +fn foo() -> Result { + unsafe { + let mut info = MachTaskBasicInfo { + virtual_size: 0, + resident_size: 0, + resident_size_max: 0, + user_time: 0, + system_time: 0, + policy: 0, + suspend_count: 0, + }; + let mut count = mem::size_of::() as libc::c_uint + / mem::size_of::() as libc::c_uint; + let kr = task_info( + mach_task_self(), + MACH_TASK_BASIC_INFO, + &mut info as *mut _ as *mut libc::c_void, + &mut count, + ); + if kr == 0 { + Ok(info.resident_size as usize) + } else { + Err(format!("Failed to get task info. Error code: {}", kr)) + } + } +} + #[allow(clippy::cognitive_complexity)] pub(crate) fn extract_output_and_log_execution_result( result: &TransactionExecutionResult, @@ -94,6 +148,7 @@ pub(crate) fn extract_output_and_log_execution_result( } info!("{} passed: {:?}", case, info.receipt.resources); + println!("Current memory usage: {:?} bytes", foo()); if let Some(call) = info.execute_call_info.as_ref() { use starknet::core::types::Felt; let events = kakarot_execution_events(call); diff --git a/crates/sequencer/src/lib.rs b/crates/sequencer/src/lib.rs index 11ee62b9..ae4a953d 100644 --- a/crates/sequencer/src/lib.rs +++ b/crates/sequencer/src/lib.rs @@ -1,8 +1,8 @@ pub mod commit; pub mod constants; pub mod execution; +pub mod native; pub mod sequencer; pub mod serde; pub mod state; pub mod transaction; -pub mod native; diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index ba1188be..1e3d30d5 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -1,16 +1,12 @@ use blockifier::execution::contract_class::NativeContractClassV1; use blockifier::execution::contract_class::{ContractClass, ContractClassV0, ContractClassV1}; -use cairo_native::OptLevel; use cairo_native::executor::AotContractExecutor; +use cairo_native::OptLevel; use starknet_api::core::ClassHash; -use std::sync::Arc; -use std::{ - fs, - path::PathBuf, -}; use lazy_static::lazy_static; - +use std::sync::Arc; +use std::{fs, path::PathBuf}; lazy_static! { static ref NATIVE_CACHE_DIR: PathBuf = setup_native_cache_dir(); @@ -45,7 +41,7 @@ fn native_try_from_json_string( library_output_path: &PathBuf, ) -> Result> { let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = - serde_json::from_str(raw_contract_class)?; + serde_json::from_str(raw_contract_class)?; let sierra_program = sierra_contract_class.extract_sierra_program()?; @@ -65,16 +61,12 @@ fn native_try_from_json_string( Ok(native_class) } - -pub fn class_from_json_str( - raw_json: &str, - class_hash: ClassHash, -) -> Result { +pub fn class_from_json_str(raw_json: &str, class_hash: ClassHash) -> Result { println!("raw json length {}", raw_json.len()); let class_def = raw_json.to_string(); println!("class def parsed"); - - let class: ContractClass =if let Ok(class) = ContractClassV0::try_from_json_string(class_def.as_str()) { + let class: ContractClass = + if let Ok(class) = ContractClassV0::try_from_json_string(class_def.as_str()) { class.into() } else if let Ok(class) = ContractClassV1::try_from_json_string(class_def.as_str()) { println!("v1 contract"); @@ -82,13 +74,21 @@ pub fn class_from_json_str( } else if let Ok(class) = { println!("native contract"); let library_output_path = generate_library_path(class_hash); - native_try_from_json_string(class_def.as_str(), &library_output_path) + let maybe_class = native_try_from_json_string(class_def.as_str(), &library_output_path); + if let Ok(class) = maybe_class { + Ok(class) + } else { + println!( + "Native contract failed with error {:?}", + maybe_class.err().unwrap() + ); + Err(()) + } } { class.into() } else { return Err("not a valid contract class".to_string()); }; - Ok(class) - - } + Ok(class) +} diff --git a/crates/sequencer/src/state.rs b/crates/sequencer/src/state.rs index 2b408b5b..e233df1d 100644 --- a/crates/sequencer/src/state.rs +++ b/crates/sequencer/src/state.rs @@ -170,7 +170,8 @@ impl BlockifierStateReader for &mut State { /// /// If the compiled class is not declared. fn get_compiled_contract_class(&self, class_hash: ClassHash) -> StateResult { - let res = self.classes + let res = self + .classes .get(&class_hash) .cloned() .ok_or_else(|| StateError::UndeclaredClassHash(class_hash))?; @@ -188,8 +189,6 @@ impl BlockifierStateReader for &mut State { } } - - #[cfg(test)] mod tests { use blockifier::execution::contract_class::ContractClassV0; From 6d210acdb186613acc38d6836955881c366543d3 Mon Sep 17 00:00:00 2001 From: enitrat Date: Mon, 14 Oct 2024 19:15:46 +0200 Subject: [PATCH 27/53] bump native --- Cargo.lock | 12 +++++------- Cargo.toml | 6 +++--- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8d77d04e..1da47fce 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8f827b37ca8f830b8ff469869a2c0a55bdc01825#8f827b37ca8f830b8ff469869a2c0a55bdc01825" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61#6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61" dependencies = [ "anyhow", "ark-ec", @@ -1825,7 +1825,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=f862ec3533a7af79909f4c3e19598da2e537cd91#f862ec3533a7af79909f4c3e19598da2e537cd91" +source = "git+https://github.com/lambdaclass/cairo_native?rev=817515474ac156d186904c71877cb94f78726d0a#817515474ac156d186904c71877cb94f78726d0a" dependencies = [ "anyhow", "aquamarine", @@ -1836,7 +1836,6 @@ dependencies = [ "bumpalo", "cairo-lang-compiler", "cairo-lang-defs", - "cairo-lang-diagnostics", "cairo-lang-filesystem", "cairo-lang-runner", "cairo-lang-semantic", @@ -1879,12 +1878,11 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=f862ec3533a7af79909f4c3e19598da2e537cd91#f862ec3533a7af79909f4c3e19598da2e537cd91" +source = "git+https://github.com/lambdaclass/cairo_native?rev=817515474ac156d186904c71877cb94f78726d0a#817515474ac156d186904c71877cb94f78726d0a" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", "lazy_static", - "libc", "num-traits 0.2.19", "rand", "starknet-curve 0.5.1", @@ -5192,7 +5190,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8f827b37ca8f830b8ff469869a2c0a55bdc01825#8f827b37ca8f830b8ff469869a2c0a55bdc01825" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61#6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61" dependencies = [ "clap", "itertools 0.10.5", @@ -8550,7 +8548,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=8f827b37ca8f830b8ff469869a2c0a55bdc01825#8f827b37ca8f830b8ff469869a2c0a55bdc01825" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61#6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index f9644db4..84f32074 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.4" cairo-lang-utils = "2.8.4" cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="f862ec3533a7af79909f4c3e19598da2e537cd91"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="817515474ac156d186904c71877cb94f78726d0a"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="8f827b37ca8f830b8ff469869a2c0a55bdc01825", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="8f827b37ca8f830b8ff469869a2c0a55bdc01825" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61" } # Other async-trait = "0.1" From 864fc656aee14dbfdf21acc229d581befc05d938 Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 15 Oct 2024 14:44:03 +0200 Subject: [PATCH 28/53] bump native --- Cargo.lock | 10 +++++----- Cargo.toml | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1da47fce..af6b01db 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61#6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=b2792ad01ee3433036efd897a34ce3a0a41b86b1#b2792ad01ee3433036efd897a34ce3a0a41b86b1" dependencies = [ "anyhow", "ark-ec", @@ -1825,7 +1825,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=817515474ac156d186904c71877cb94f78726d0a#817515474ac156d186904c71877cb94f78726d0a" +source = "git+https://github.com/lambdaclass/cairo_native?rev=aff451c4821fb593eced61a418987a95d3410524#aff451c4821fb593eced61a418987a95d3410524" dependencies = [ "anyhow", "aquamarine", @@ -1878,7 +1878,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=817515474ac156d186904c71877cb94f78726d0a#817515474ac156d186904c71877cb94f78726d0a" +source = "git+https://github.com/lambdaclass/cairo_native?rev=aff451c4821fb593eced61a418987a95d3410524#aff451c4821fb593eced61a418987a95d3410524" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61#6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=b2792ad01ee3433036efd897a34ce3a0a41b86b1#b2792ad01ee3433036efd897a34ce3a0a41b86b1" dependencies = [ "clap", "itertools 0.10.5", @@ -8548,7 +8548,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61#6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=b2792ad01ee3433036efd897a34ce3a0a41b86b1#b2792ad01ee3433036efd897a34ce3a0a41b86b1" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 84f32074..1af3abe6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.4" cairo-lang-utils = "2.8.4" cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="817515474ac156d186904c71877cb94f78726d0a"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="aff451c4821fb593eced61a418987a95d3410524"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="b2792ad01ee3433036efd897a34ce3a0a41b86b1", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="6fbe2146c4949262d2ba11e1cfc8aa649cd8bb61" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="b2792ad01ee3433036efd897a34ce3a0a41b86b1" } # Other async-trait = "0.1" From a4b9a967b149baeea3aef3ce7500b8e6d36ffa11 Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 16 Oct 2024 08:30:42 +0200 Subject: [PATCH 29/53] bump native --- Cargo.lock | 14 +++++++------- Cargo.toml | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index af6b01db..79c721e6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=b2792ad01ee3433036efd897a34ce3a0a41b86b1#b2792ad01ee3433036efd897a34ce3a0a41b86b1" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=821cc34a0342805ff080a6a9cf5be3f1fe4221bd#821cc34a0342805ff080a6a9cf5be3f1fe4221bd" dependencies = [ "anyhow", "ark-ec", @@ -1824,8 +1824,8 @@ dependencies = [ [[package]] name = "cairo-native" -version = "0.2.0-alpha.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=aff451c4821fb593eced61a418987a95d3410524#aff451c4821fb593eced61a418987a95d3410524" +version = "0.2.0-alpha.4" +source = "git+https://github.com/lambdaclass/cairo_native?rev=84ceaa3a0993b322130f6774885a61d911b218f2#84ceaa3a0993b322130f6774885a61d911b218f2" dependencies = [ "anyhow", "aquamarine", @@ -1877,8 +1877,8 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.2.0-alpha.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=aff451c4821fb593eced61a418987a95d3410524#aff451c4821fb593eced61a418987a95d3410524" +version = "0.2.0-alpha.4" +source = "git+https://github.com/lambdaclass/cairo_native?rev=84ceaa3a0993b322130f6774885a61d911b218f2#84ceaa3a0993b322130f6774885a61d911b218f2" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=b2792ad01ee3433036efd897a34ce3a0a41b86b1#b2792ad01ee3433036efd897a34ce3a0a41b86b1" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=821cc34a0342805ff080a6a9cf5be3f1fe4221bd#821cc34a0342805ff080a6a9cf5be3f1fe4221bd" dependencies = [ "clap", "itertools 0.10.5", @@ -8548,7 +8548,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=b2792ad01ee3433036efd897a34ce3a0a41b86b1#b2792ad01ee3433036efd897a34ce3a0a41b86b1" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=821cc34a0342805ff080a6a9cf5be3f1fe4221bd#821cc34a0342805ff080a6a9cf5be3f1fe4221bd" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 1af3abe6..04909d05 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.4" cairo-lang-utils = "2.8.4" cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="aff451c4821fb593eced61a418987a95d3410524"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="84ceaa3a0993b322130f6774885a61d911b218f2"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="b2792ad01ee3433036efd897a34ce3a0a41b86b1", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="821cc34a0342805ff080a6a9cf5be3f1fe4221bd", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="b2792ad01ee3433036efd897a34ce3a0a41b86b1" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="821cc34a0342805ff080a6a9cf5be3f1fe4221bd" } # Other async-trait = "0.1" From ce95cdbbaedff57f42716ed4b3be0eeba370c702 Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 16 Oct 2024 15:57:46 +0200 Subject: [PATCH 30/53] bump cargo --- Cargo.lock | 10 +++++----- Cargo.toml | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 79c721e6..ed4f9e0c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=821cc34a0342805ff080a6a9cf5be3f1fe4221bd#821cc34a0342805ff080a6a9cf5be3f1fe4221bd" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30#df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30" dependencies = [ "anyhow", "ark-ec", @@ -1825,7 +1825,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=84ceaa3a0993b322130f6774885a61d911b218f2#84ceaa3a0993b322130f6774885a61d911b218f2" +source = "git+https://github.com/lambdaclass/cairo_native?rev=b5769e4f6ba914b36eef68e0b1f71c791d7d075c#b5769e4f6ba914b36eef68e0b1f71c791d7d075c" dependencies = [ "anyhow", "aquamarine", @@ -1878,7 +1878,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=84ceaa3a0993b322130f6774885a61d911b218f2#84ceaa3a0993b322130f6774885a61d911b218f2" +source = "git+https://github.com/lambdaclass/cairo_native?rev=b5769e4f6ba914b36eef68e0b1f71c791d7d075c#b5769e4f6ba914b36eef68e0b1f71c791d7d075c" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=821cc34a0342805ff080a6a9cf5be3f1fe4221bd#821cc34a0342805ff080a6a9cf5be3f1fe4221bd" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30#df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30" dependencies = [ "clap", "itertools 0.10.5", @@ -8548,7 +8548,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=821cc34a0342805ff080a6a9cf5be3f1fe4221bd#821cc34a0342805ff080a6a9cf5be3f1fe4221bd" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30#df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 04909d05..69886447 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.4" cairo-lang-utils = "2.8.4" cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="84ceaa3a0993b322130f6774885a61d911b218f2"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="b5769e4f6ba914b36eef68e0b1f71c791d7d075c"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="821cc34a0342805ff080a6a9cf5be3f1fe4221bd", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="821cc34a0342805ff080a6a9cf5be3f1fe4221bd" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30" } # Other async-trait = "0.1" From 4178b8034a8b7ea3e5f419092e5888b7d9c3f1e9 Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 29 Oct 2024 10:18:16 +0700 Subject: [PATCH 31/53] bump native --- Cargo.lock | 10 +++++----- Cargo.toml | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ed4f9e0c..ee76d742 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30#df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=f3c44f158581bc7875142b1fdda8f3444206c0af#f3c44f158581bc7875142b1fdda8f3444206c0af" dependencies = [ "anyhow", "ark-ec", @@ -1825,7 +1825,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=b5769e4f6ba914b36eef68e0b1f71c791d7d075c#b5769e4f6ba914b36eef68e0b1f71c791d7d075c" +source = "git+https://github.com/lambdaclass/cairo_native?rev=ab478323d6aee5e0424712bbde98de443b8cc72f#ab478323d6aee5e0424712bbde98de443b8cc72f" dependencies = [ "anyhow", "aquamarine", @@ -1878,7 +1878,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=b5769e4f6ba914b36eef68e0b1f71c791d7d075c#b5769e4f6ba914b36eef68e0b1f71c791d7d075c" +source = "git+https://github.com/lambdaclass/cairo_native?rev=ab478323d6aee5e0424712bbde98de443b8cc72f#ab478323d6aee5e0424712bbde98de443b8cc72f" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30#df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=f3c44f158581bc7875142b1fdda8f3444206c0af#f3c44f158581bc7875142b1fdda8f3444206c0af" dependencies = [ "clap", "itertools 0.10.5", @@ -8548,7 +8548,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30#df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=f3c44f158581bc7875142b1fdda8f3444206c0af#f3c44f158581bc7875142b1fdda8f3444206c0af" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 69886447..3ca0e725 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.4" cairo-lang-utils = "2.8.4" cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="b5769e4f6ba914b36eef68e0b1f71c791d7d075c"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="ab478323d6aee5e0424712bbde98de443b8cc72f"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="f3c44f158581bc7875142b1fdda8f3444206c0af", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="df1bf66c6b7b9f9b39ff4bfa20fd47aec3f10c30" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="f3c44f158581bc7875142b1fdda8f3444206c0af" } # Other async-trait = "0.1" From ba27e64fc3d8950c83da7021400fada8a87f21d0 Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 29 Oct 2024 17:21:04 +0700 Subject: [PATCH 32/53] fix sequencer build --- Cargo.lock | 6 +++--- Cargo.toml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ee76d742..203d8592 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=f3c44f158581bc7875142b1fdda8f3444206c0af#f3c44f158581bc7875142b1fdda8f3444206c0af" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=efda0a20b8d6f38b2d9d83a3c95be650f5649e69#efda0a20b8d6f38b2d9d83a3c95be650f5649e69" dependencies = [ "anyhow", "ark-ec", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=f3c44f158581bc7875142b1fdda8f3444206c0af#f3c44f158581bc7875142b1fdda8f3444206c0af" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=efda0a20b8d6f38b2d9d83a3c95be650f5649e69#efda0a20b8d6f38b2d9d83a3c95be650f5649e69" dependencies = [ "clap", "itertools 0.10.5", @@ -8548,7 +8548,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=f3c44f158581bc7875142b1fdda8f3444206c0af#f3c44f158581bc7875142b1fdda8f3444206c0af" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=efda0a20b8d6f38b2d9d83a3c95be650f5649e69#efda0a20b8d6f38b2d9d83a3c95be650f5649e69" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 3ca0e725..5321b2b7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,12 +47,12 @@ cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="ab478323d6aee5e0424712bbde98de443b8cc72f"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="f3c44f158581bc7875142b1fdda8f3444206c0af", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="efda0a20b8d6f38b2d9d83a3c95be650f5649e69", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="f3c44f158581bc7875142b1fdda8f3444206c0af" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="efda0a20b8d6f38b2d9d83a3c95be650f5649e69" } # Other async-trait = "0.1" From 6a59ab60f7e376c4a5401145f79d75ea9d898ac7 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 31 Oct 2024 11:31:26 +0700 Subject: [PATCH 33/53] debug ram only on macos targets --- crates/ef-testing/src/models/result.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/crates/ef-testing/src/models/result.rs b/crates/ef-testing/src/models/result.rs index 4470c7ad..0a8e73c8 100644 --- a/crates/ef-testing/src/models/result.rs +++ b/crates/ef-testing/src/models/result.rs @@ -78,6 +78,8 @@ impl TryFrom<&EventData> for EVMOutput { } } +#[cfg(target_os = "macos")] +mod debug_ram { use std::mem; use std::ptr; @@ -105,7 +107,7 @@ struct MachTaskBasicInfo { suspend_count: i32, } -fn foo() -> Result { +pub fn debug_ram() -> Result { unsafe { let mut info = MachTaskBasicInfo { virtual_size: 0, @@ -129,6 +131,7 @@ fn foo() -> Result { } else { Err(format!("Failed to get task info. Error code: {}", kr)) } + } } } @@ -148,7 +151,9 @@ pub(crate) fn extract_output_and_log_execution_result( } info!("{} passed: {:?}", case, info.receipt.resources); - println!("Current memory usage: {:?} bytes", foo()); + #[cfg(target_os = "macos")]{ + println!("Current memory usage: {:?} bytes", debug_ram::debug_ram()); + } if let Some(call) = info.execute_call_info.as_ref() { use starknet::core::types::Felt; let events = kakarot_execution_events(call); From a0976a2b4b3e92e829b6fba9b8cbc84c50416f21 Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 5 Nov 2024 18:37:30 +0700 Subject: [PATCH 34/53] bump native --- Cargo.lock | 10 +++++----- Cargo.toml | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 203d8592..12fe8b8a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=efda0a20b8d6f38b2d9d83a3c95be650f5649e69#efda0a20b8d6f38b2d9d83a3c95be650f5649e69" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=1a3531db1390afee8e831e1866b1383987176379#1a3531db1390afee8e831e1866b1383987176379" dependencies = [ "anyhow", "ark-ec", @@ -1825,7 +1825,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=ab478323d6aee5e0424712bbde98de443b8cc72f#ab478323d6aee5e0424712bbde98de443b8cc72f" +source = "git+https://github.com/lambdaclass/cairo_native?rev=8effa9882a35bf6c4c86a480f9efd83d3bb5560a#8effa9882a35bf6c4c86a480f9efd83d3bb5560a" dependencies = [ "anyhow", "aquamarine", @@ -1878,7 +1878,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=ab478323d6aee5e0424712bbde98de443b8cc72f#ab478323d6aee5e0424712bbde98de443b8cc72f" +source = "git+https://github.com/lambdaclass/cairo_native?rev=8effa9882a35bf6c4c86a480f9efd83d3bb5560a#8effa9882a35bf6c4c86a480f9efd83d3bb5560a" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=efda0a20b8d6f38b2d9d83a3c95be650f5649e69#efda0a20b8d6f38b2d9d83a3c95be650f5649e69" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=1a3531db1390afee8e831e1866b1383987176379#1a3531db1390afee8e831e1866b1383987176379" dependencies = [ "clap", "itertools 0.10.5", @@ -8548,7 +8548,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=efda0a20b8d6f38b2d9d83a3c95be650f5649e69#efda0a20b8d6f38b2d9d83a3c95be650f5649e69" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=1a3531db1390afee8e831e1866b1383987176379#1a3531db1390afee8e831e1866b1383987176379" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 5321b2b7..c49478ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.4" cairo-lang-utils = "2.8.4" cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="ab478323d6aee5e0424712bbde98de443b8cc72f"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="8effa9882a35bf6c4c86a480f9efd83d3bb5560a"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="efda0a20b8d6f38b2d9d83a3c95be650f5649e69", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="1a3531db1390afee8e831e1866b1383987176379", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="efda0a20b8d6f38b2d9d83a3c95be650f5649e69" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="1a3531db1390afee8e831e1866b1383987176379" } # Other async-trait = "0.1" From 4a75663f7f4c87148e34d412decd2ef3ff1a9563 Mon Sep 17 00:00:00 2001 From: enitrat Date: Sat, 9 Nov 2024 10:38:44 +0700 Subject: [PATCH 35/53] bump native --- Cargo.lock | 10 +++++----- Cargo.toml | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 12fe8b8a..9605142f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=1a3531db1390afee8e831e1866b1383987176379#1a3531db1390afee8e831e1866b1383987176379" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=353e69afe874458b05b498abe32e72d0be07fffe#353e69afe874458b05b498abe32e72d0be07fffe" dependencies = [ "anyhow", "ark-ec", @@ -1825,7 +1825,7 @@ dependencies = [ [[package]] name = "cairo-native" version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=8effa9882a35bf6c4c86a480f9efd83d3bb5560a#8effa9882a35bf6c4c86a480f9efd83d3bb5560a" +source = "git+https://github.com/lambdaclass/cairo_native?rev=9791075918f17b1787084d85063180f6aa67a6ec#9791075918f17b1787084d85063180f6aa67a6ec" dependencies = [ "anyhow", "aquamarine", @@ -1878,7 +1878,7 @@ dependencies = [ [[package]] name = "cairo-native-runtime" version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=8effa9882a35bf6c4c86a480f9efd83d3bb5560a#8effa9882a35bf6c4c86a480f9efd83d3bb5560a" +source = "git+https://github.com/lambdaclass/cairo_native?rev=9791075918f17b1787084d85063180f6aa67a6ec#9791075918f17b1787084d85063180f6aa67a6ec" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5190,7 +5190,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=1a3531db1390afee8e831e1866b1383987176379#1a3531db1390afee8e831e1866b1383987176379" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=353e69afe874458b05b498abe32e72d0be07fffe#353e69afe874458b05b498abe32e72d0be07fffe" dependencies = [ "clap", "itertools 0.10.5", @@ -8548,7 +8548,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=1a3531db1390afee8e831e1866b1383987176379#1a3531db1390afee8e831e1866b1383987176379" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=353e69afe874458b05b498abe32e72d0be07fffe#353e69afe874458b05b498abe32e72d0be07fffe" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index c49478ef..0ef0f33b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.8.4" cairo-lang-utils = "2.8.4" cairo-lang-starknet-classes = "2.8.4" cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="8effa9882a35bf6c4c86a480f9efd83d3bb5560a"} +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="9791075918f17b1787084d85063180f6aa67a6ec"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="1a3531db1390afee8e831e1866b1383987176379", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="353e69afe874458b05b498abe32e72d0be07fffe", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="1a3531db1390afee8e831e1866b1383987176379" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="353e69afe874458b05b498abe32e72d0be07fffe" } # Other async-trait = "0.1" From 62fa964db20f9a96bb827ecd062d1e9ff8d9f9ed Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 21 Nov 2024 01:00:35 +0800 Subject: [PATCH 36/53] bump cairo --- Cargo.lock | 129 +++++++++++++++++---------------- Cargo.toml | 16 ++-- crates/sequencer/src/native.rs | 2 +- 3 files changed, 74 insertions(+), 73 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9605142f..138716e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=353e69afe874458b05b498abe32e72d0be07fffe#353e69afe874458b05b498abe32e72d0be07fffe" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=41fa336f05eaec38bfa53e0e43d19a608c0fef37#41fa336f05eaec38bfa53e0e43d19a608c0fef37" dependencies = [ "anyhow", "ark-ec", @@ -1306,9 +1306,9 @@ checksum = "ade8366b8bd5ba243f0a58f036cc0ca8a2f069cff1a2351ef1cac6b083e16fc0" [[package]] name = "cairo-lang-casm" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd4d6659539ace9649c8e8a7434e51b0c50a7a700111d0a2b967dde220ddff49" +checksum = "e1e0dcdb6358bb639dd729546611bd99bada94c86e3f262c3637855abea9a972" dependencies = [ "cairo-lang-utils", "indoc", @@ -1320,9 +1320,9 @@ dependencies = [ [[package]] name = "cairo-lang-compiler" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2016966ed29f3a44487fd1bbdb05320fb6ea8ec46201c04c6b222ccb5264e0a" +checksum = "b8657f5a5611f341a85e80ba0b21848fc34bfdf391bfd93df0baf4516c3e4159" dependencies = [ "anyhow", "cairo-lang-defs", @@ -1346,18 +1346,18 @@ dependencies = [ [[package]] name = "cairo-lang-debug" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c804649297ca417206435ee3e8041d2100cc31ebf4a95bc4b92ed02dc63469" +checksum = "0635aa554d297acefe6a35b495aba2795d0af5b7f97c4ab63829c7d62291ef41" dependencies = [ "cairo-lang-utils", ] [[package]] name = "cairo-lang-defs" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8fbda467ac36f73bb1879e1f741898fc719d6f9239a01cc422e6a023281319b" +checksum = "86b356e1c09898e8b8cfdd9731579d89365a13d8b4f7e717962e0cc7d125b83c" dependencies = [ "cairo-lang-debug", "cairo-lang-diagnostics", @@ -1372,9 +1372,9 @@ dependencies = [ [[package]] name = "cairo-lang-diagnostics" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c843ef4715e3d21de5388d02206db2506e2d2ec0e80e2629e0ae9900a08b8674" +checksum = "2dfe7c6ff96182da29012b707a3554e34a50f19cc96013ee45b0eb36dd396ec8" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -1384,9 +1384,9 @@ dependencies = [ [[package]] name = "cairo-lang-eq-solver" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33a416c5871960fb4823160ebef2abc51e0c1b86fef1e97a1ebb2e5f3c3795d3" +checksum = "723d244465309d5409e297b5486d62cbec06f2c47b05044414bb640e3f14caab" dependencies = [ "cairo-lang-utils", "good_lp", @@ -1394,9 +1394,9 @@ dependencies = [ [[package]] name = "cairo-lang-filesystem" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47189e0cb84b21defd201af4cf24a94c6b0d09f48706cf659c9ffa0def8a7a43" +checksum = "237030772ae5368f19a9247e1f63f753f8ad8de963477166e402f4825c0a141d" dependencies = [ "cairo-lang-debug", "cairo-lang-utils", @@ -1405,13 +1405,14 @@ dependencies = [ "semver 1.0.23", "serde", "smol_str", + "toml", ] [[package]] name = "cairo-lang-formatter" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6409ff1f4a93ce7c0968d9d857d2a8c03657617a827159d33f978110b718b31d" +checksum = "5b71f0eb3a36a6cb5f7f07843926783c4c17e44c9516b53171727a108782f3eb" dependencies = [ "anyhow", "cairo-lang-diagnostics", @@ -1424,15 +1425,14 @@ dependencies = [ "itertools 0.12.1", "rust-analyzer-salsa", "serde", - "smol_str", "thiserror", ] [[package]] name = "cairo-lang-lowering" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e224e006c82ef21bd9e243390992de2be25ae6fbbdaa8544067b3f0c31977f1" +checksum = "7d095d78e2f1de499429c95655d6135a3d24c384b36d8de9f84e0aa4e07ee152" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -1447,6 +1447,7 @@ dependencies = [ "itertools 0.12.1", "log", "num-bigint", + "num-integer", "num-traits 0.2.19", "rust-analyzer-salsa", "smol_str", @@ -1454,9 +1455,9 @@ dependencies = [ [[package]] name = "cairo-lang-parser" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb260ba349c2b699639e56f9b64deb969ff01179a0253087e2c8ceec7e32157" +checksum = "bb828af7f948a3ef7fa65de14e3f639daedefb046dfefcad6e3116d2cb0f89a0" dependencies = [ "cairo-lang-diagnostics", "cairo-lang-filesystem", @@ -1474,9 +1475,9 @@ dependencies = [ [[package]] name = "cairo-lang-plugins" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a2e500dc8ddea4d25a866d8a839158b0e4c41a6c023f21911e2da252bd91b3" +checksum = "135a600043bf7030eacc6ebf2a609c2364d6ffeb04e1f3c809a2738f6b02c829" dependencies = [ "cairo-lang-defs", "cairo-lang-diagnostics", @@ -1493,9 +1494,9 @@ dependencies = [ [[package]] name = "cairo-lang-proc-macros" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d72f17373740f242d6995e896b9195c2cedff7e8b14e496afdd16b405039d1fb" +checksum = "ac857ec4b564712f3e16e3314e23cc0787ab1c05cdfee83f1c8f9989a6eee40f" dependencies = [ "cairo-lang-debug", "quote", @@ -1504,9 +1505,9 @@ dependencies = [ [[package]] name = "cairo-lang-project" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13294f08d2013fcd6e815e7235935680963dec3390e5baf454f33da866fc44b6" +checksum = "23cc37b7f8889cdea631aeea3bcc70d5c86ac8fb1d98aabc83f16283d60f1643" dependencies = [ "cairo-lang-filesystem", "cairo-lang-utils", @@ -1518,9 +1519,9 @@ dependencies = [ [[package]] name = "cairo-lang-runner" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5b9e6a21d92255b92f64c60658b4224dd7d290cde8beea783fadc10fbfcd8c" +checksum = "7474375528ffa7f47e343983d32051898e4e7b05ac0bdc48ee84b1325d8b562a" dependencies = [ "ark-ff 0.4.2", "ark-secp256k1", @@ -1549,9 +1550,9 @@ dependencies = [ [[package]] name = "cairo-lang-semantic" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6936215bca75c23e71873998420a3d46c322507a09917ce676c8d39f8c1bd6fe" +checksum = "c560cf4b4a89325d3a9594f490fffee38cf30e0990e808bb927619de9d0c973a" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -1575,9 +1576,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "424f55450494e959c1ae26c52a71075767a90f76e3ecca6e81056dd7517e8ba0" +checksum = "8118f55ca7d567bfc60960b445d388564d04bf48335c983b1595cb35f67a01c5" dependencies = [ "anyhow", "cairo-lang-utils", @@ -1602,9 +1603,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-ap-change" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053dd520e0b9d1c1078d93ea69045f6f334c3d41b4b75db183ab33e32cfd8570" +checksum = "2716ef8d4ce0fb700f83ed3281f3656436570e60249d41c65c79dc1ca27be002" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -1618,9 +1619,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-gas" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a73227867377efc62ebb893cddaa88df3940bf2be5dbdc2f0b00f9edf69288e" +checksum = "24a44da87a35845470c4f4c648225232a15e0875fe809045b6088464491f838b" dependencies = [ "cairo-lang-eq-solver", "cairo-lang-sierra", @@ -1634,9 +1635,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-generator" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3752cacd475ea089d9a536357804150e693a124e703fcc33a55566d568094b3" +checksum = "15bc5cf9f3965a7030a114dfe3d31d183287fbfbfbf904deaaa2468cadb936aa" dependencies = [ "cairo-lang-debug", "cairo-lang-defs", @@ -1658,9 +1659,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-to-casm" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7162fb3c93960dfc6d8005b65064e518e3f1ed6102e8981b42ea41879c331184" +checksum = "18b7616f1a3c41c4646094b5abf774e558428e9c1eda5d78d7b0638ec5c264e5" dependencies = [ "assert_matches", "cairo-lang-casm", @@ -1679,9 +1680,9 @@ dependencies = [ [[package]] name = "cairo-lang-sierra-type-size" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a51b80c117e2b05a6d300f2e2247892cc99e42e950e79f6085e6ed6cbcb44d12" +checksum = "871077dbc08df5d134dc3975538171c14b266ba405d1298085afdb227216f0a3" dependencies = [ "cairo-lang-sierra", "cairo-lang-utils", @@ -1689,9 +1690,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aafaabc43f78dfa2f45d935993ba21c05c164bbb3bf277d348847a51e5939a9f" +checksum = "9f21804eb8931d41e258e7a393afc8ee8858308e95b3ed2e9b6b469ef68a6a50" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1719,9 +1720,9 @@ dependencies = [ [[package]] name = "cairo-lang-starknet-classes" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "832fd9072ddf4204ca6d227c0238929349f10146bd066a98025d51ac15d27fad" +checksum = "b2496bccd68fa0286b35b72c98439316a3a872ef7ec6d881f0dac90b17997490" dependencies = [ "cairo-lang-casm", "cairo-lang-sierra", @@ -1742,9 +1743,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cebe67c0d68f9acf8709d170c1308ca57a778d22f70da38a57f74ae250eee28a" +checksum = "8d77ea2e35d3610098ff13e373fc519aedc6a5096ed8547081aacfc104ef4422" dependencies = [ "cairo-lang-debug", "cairo-lang-filesystem", @@ -1758,9 +1759,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31cef5b4347626e61bad8f070495cd35d637a5cb6744c34d20dd382c7431aff8" +checksum = "6b01d505ab26ca9ce829faf3a8dd097f5d7962d2eb8f136017a260694a6a72e8" dependencies = [ "genco", "xshell", @@ -1768,9 +1769,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-plugin" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5f036132e07b7829cb1d61b1ecc02789a70c7d16b2733722a2aca992492bc3" +checksum = "05f83e082c8ebf81295156f13399f880037c749a9f1fc3f55b1be7e49fe124c6" dependencies = [ "anyhow", "cairo-lang-compiler", @@ -1795,9 +1796,9 @@ dependencies = [ [[package]] name = "cairo-lang-test-utils" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "060c61ac4a3ae0428771244ff8db903105f127392b7d725d919fe3fb1ec4132f" +checksum = "eb143a22f5a3510df8c4dec76e17c1e36bbcbddcd7915601f6a51a72418c454f" dependencies = [ "cairo-lang-formatter", "cairo-lang-utils", @@ -1808,9 +1809,9 @@ dependencies = [ [[package]] name = "cairo-lang-utils" -version = "2.8.4" +version = "2.9.0-dev.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bfc6372538143afad658c853a35bdc9f5210c5cb54e0c8f04ab78e268139466" +checksum = "35df943ebcf8e1db11ee9f4f46f843dde5b71639ca79ea0d8caa7973f91d8b12" dependencies = [ "hashbrown 0.14.5", "indexmap 2.6.0", @@ -1824,8 +1825,8 @@ dependencies = [ [[package]] name = "cairo-native" -version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=9791075918f17b1787084d85063180f6aa67a6ec#9791075918f17b1787084d85063180f6aa67a6ec" +version = "0.2.3" +source = "git+https://github.com/lambdaclass/cairo_native?rev=5e60089288c461eca98bf3dbe03cc882778ff677#5e60089288c461eca98bf3dbe03cc882778ff677" dependencies = [ "anyhow", "aquamarine", @@ -1877,8 +1878,8 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.2.0-alpha.4" -source = "git+https://github.com/lambdaclass/cairo_native?rev=9791075918f17b1787084d85063180f6aa67a6ec#9791075918f17b1787084d85063180f6aa67a6ec" +version = "0.2.3" +source = "git+https://github.com/lambdaclass/cairo_native?rev=5e60089288c461eca98bf3dbe03cc882778ff677#5e60089288c461eca98bf3dbe03cc882778ff677" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -5190,7 +5191,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=353e69afe874458b05b498abe32e72d0be07fffe#353e69afe874458b05b498abe32e72d0be07fffe" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=41fa336f05eaec38bfa53e0e43d19a608c0fef37#41fa336f05eaec38bfa53e0e43d19a608c0fef37" dependencies = [ "clap", "itertools 0.10.5", @@ -8548,7 +8549,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=353e69afe874458b05b498abe32e72d0be07fffe#353e69afe874458b05b498abe32e72d0be07fffe" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=41fa336f05eaec38bfa53e0e43d19a608c0fef37#41fa336f05eaec38bfa53e0e43d19a608c0fef37" dependencies = [ "bitvec", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 0ef0f33b..00b52a9e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,19 +40,19 @@ revm-interpreter = { version = "13.0", default-features = false } revm-primitives = { version = "13.0", default-features = false } # Starknet deps -cairo-lang-casm = "2.8.4" -cairo-lang-starknet = "2.8.4" -cairo-lang-utils = "2.8.4" -cairo-lang-starknet-classes = "2.8.4" -cairo-lang-sierra = "2.8.4" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="9791075918f17b1787084d85063180f6aa67a6ec"} +cairo-lang-casm = "2.9.0-dev.0" +cairo-lang-starknet = "2.9.0-dev.0" +cairo-lang-utils = "2.9.0-dev.0" +cairo-lang-starknet-classes = "2.9.0-dev.0" +cairo-lang-sierra = "2.9.0-dev.0" +cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="5e60089288c461eca98bf3dbe03cc882778ff677"} cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="353e69afe874458b05b498abe32e72d0be07fffe", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="41fa336f05eaec38bfa53e0e43d19a608c0fef37", default-features = false, features = [ "testing", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="353e69afe874458b05b498abe32e72d0be07fffe" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="41fa336f05eaec38bfa53e0e43d19a608c0fef37" } # Other async-trait = "0.1" diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index 1e3d30d5..a25ff0db 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -53,7 +53,7 @@ fn native_try_from_json_string( } println!("Creating new executor"); - let mut executor = AotContractExecutor::new(&sierra_program, OptLevel::Default)?; + let mut executor = AotContractExecutor::new(&sierra_program, &sierra_contract_class.entry_points_by_type, OptLevel::Default)?; executor.save(library_output_path)?; println!("Saved executor to {:?}", library_output_path); From b974c970a4974954ba3c1a51b6467c4c254adcc7 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 21 Nov 2024 19:30:30 +0800 Subject: [PATCH 37/53] custom macro to track long tests --- crates/build-utils/src/converter.rs | 5 +- crates/ef-testing/src/models/result.rs | 101 ++++++++++++------------ crates/ef-testing/src/test_utils/mod.rs | 79 ++++++++++++++++++ 3 files changed, 134 insertions(+), 51 deletions(-) diff --git a/crates/build-utils/src/converter.rs b/crates/build-utils/src/converter.rs index 0e1eb26f..30fd9199 100644 --- a/crates/build-utils/src/converter.rs +++ b/crates/build-utils/src/converter.rs @@ -121,7 +121,8 @@ impl<'a> EfTests<'a> { use std::{str::FromStr}; use ef_testing::models::case::BlockchainTestCase; - use ef_testing::test_utils::setup; + use ef_testing::test_utils::{setup, TestMonitor}; + use ef_testing::monitor_test; use ef_testing::traits::Case; use ef_tests::models::{Block, Account, State}; use alloy_primitives::{Address, B256}; @@ -161,7 +162,9 @@ impl<'a> EfTests<'a> { #[test] {test_header} fn test_{test_name}() {{ + monitor_test!("{test_name}", &[120, 300, 600, 900, 1200, 2000, 3000, 4000, 5000], || {{ {test_content} + }}); }}"#, )) } diff --git a/crates/ef-testing/src/models/result.rs b/crates/ef-testing/src/models/result.rs index 0a8e73c8..391de0c3 100644 --- a/crates/ef-testing/src/models/result.rs +++ b/crates/ef-testing/src/models/result.rs @@ -80,57 +80,57 @@ impl TryFrom<&EventData> for EVMOutput { #[cfg(target_os = "macos")] mod debug_ram { -use std::mem; -use std::ptr; - -#[link(name = "c")] -extern "C" { - fn mach_task_self() -> libc::c_uint; - fn task_info( - task: libc::c_uint, - flavor: libc::c_uint, - task_info: *mut libc::c_void, - inout_count: *mut libc::c_uint, - ) -> libc::c_int; -} + use std::mem; + use std::ptr; + + #[link(name = "c")] + extern "C" { + fn mach_task_self() -> libc::c_uint; + fn task_info( + task: libc::c_uint, + flavor: libc::c_uint, + task_info: *mut libc::c_void, + inout_count: *mut libc::c_uint, + ) -> libc::c_int; + } -const MACH_TASK_BASIC_INFO: libc::c_uint = 20; - -#[repr(C)] -struct MachTaskBasicInfo { - virtual_size: u64, - resident_size: u64, - resident_size_max: u64, - user_time: u64, - system_time: u64, - policy: i32, - suspend_count: i32, -} + const MACH_TASK_BASIC_INFO: libc::c_uint = 20; + + #[repr(C)] + struct MachTaskBasicInfo { + virtual_size: u64, + resident_size: u64, + resident_size_max: u64, + user_time: u64, + system_time: u64, + policy: i32, + suspend_count: i32, + } -pub fn debug_ram() -> Result { - unsafe { - let mut info = MachTaskBasicInfo { - virtual_size: 0, - resident_size: 0, - resident_size_max: 0, - user_time: 0, - system_time: 0, - policy: 0, - suspend_count: 0, - }; - let mut count = mem::size_of::() as libc::c_uint - / mem::size_of::() as libc::c_uint; - let kr = task_info( - mach_task_self(), - MACH_TASK_BASIC_INFO, - &mut info as *mut _ as *mut libc::c_void, - &mut count, - ); - if kr == 0 { - Ok(info.resident_size as usize) - } else { - Err(format!("Failed to get task info. Error code: {}", kr)) - } + pub fn debug_ram() -> Result { + unsafe { + let mut info = MachTaskBasicInfo { + virtual_size: 0, + resident_size: 0, + resident_size_max: 0, + user_time: 0, + system_time: 0, + policy: 0, + suspend_count: 0, + }; + let mut count = mem::size_of::() as libc::c_uint + / mem::size_of::() as libc::c_uint; + let kr = task_info( + mach_task_self(), + MACH_TASK_BASIC_INFO, + &mut info as *mut _ as *mut libc::c_void, + &mut count, + ); + if kr == 0 { + Ok(info.resident_size as usize) + } else { + Err(format!("Failed to get task info. Error code: {}", kr)) + } } } } @@ -151,7 +151,8 @@ pub(crate) fn extract_output_and_log_execution_result( } info!("{} passed: {:?}", case, info.receipt.resources); - #[cfg(target_os = "macos")]{ + #[cfg(target_os = "macos")] + { println!("Current memory usage: {:?} bytes", debug_ram::debug_ram()); } if let Some(call) = info.execute_call_info.as_ref() { diff --git a/crates/ef-testing/src/test_utils/mod.rs b/crates/ef-testing/src/test_utils/mod.rs index 4424346c..e0231cdf 100644 --- a/crates/ef-testing/src/test_utils/mod.rs +++ b/crates/ef-testing/src/test_utils/mod.rs @@ -1,4 +1,8 @@ +use std::sync::atomic::{AtomicBool, Ordering}; +use std::sync::Arc; use std::sync::Once; +use std::thread; +use std::time::{Duration, Instant}; use tracing_subscriber::{filter, FmtSubscriber}; @@ -16,3 +20,78 @@ pub fn setup() { .expect("setting tracing default failed"); }) } + +pub struct TestMonitor { + thresholds: Vec, // thresholds in seconds + last_threshold: u64, // last reported threshold +} + +impl TestMonitor { + pub fn new(thresholds: Vec) -> Self { + TestMonitor { + thresholds: thresholds, + last_threshold: 0, + } + } + + pub fn run(&mut self, test_name: &str, test_fn: F) -> T + where + F: FnOnce() -> T, + { + let start_time = Instant::now(); + let is_running = Arc::new(AtomicBool::new(true)); + let is_running_clone = is_running.clone(); + + // Spawn monitoring thread + let test_name = test_name.to_string(); + let test_name_clone = test_name.clone(); + let thresholds = self.thresholds.clone(); + let monitor_thread = thread::spawn(move || { + while is_running_clone.load(Ordering::SeqCst) { + let duration = start_time.elapsed().as_secs(); + + // Check each threshold + for &threshold in &thresholds { + if duration > threshold { + println!( + "\nWARNING: Test '{}' has been running for over {} seconds\n\ + Current duration: {:.1}s", + test_name, threshold, duration as f64 + ); + // Sleep longer for higher thresholds to reduce noise + thread::sleep(Duration::from_secs(std::cmp::min(threshold / 2, 30))); + break; + } + } + thread::sleep(Duration::from_secs(1)); + } + }); + + // Run the actual test + let result = test_fn(); + + // Stop the monitoring thread + is_running.store(false, Ordering::SeqCst); + let _ = monitor_thread.join(); + + // Print final duration for slow tests + let final_duration = start_time.elapsed().as_secs(); + if final_duration > self.thresholds[0] { + println!( + "\nTest '{}' completed in {:.1} seconds", + test_name_clone, final_duration as f64 + ); + } + + result + } +} + +// Helper macro to make it easier to use +#[macro_export] +macro_rules! monitor_test { + ($name:expr, $thresholds:expr, $test:expr) => {{ + let mut monitor = TestMonitor::new($thresholds.to_vec()); + monitor.run($name, $test) + }}; +} From cdfcc6232af516559fa2e0a910b39fa477c75a5e Mon Sep 17 00:00:00 2001 From: enitrat Date: Tue, 3 Dec 2024 17:36:23 +0800 Subject: [PATCH 38/53] update to latest sequencer --- Cargo.lock | 120 +++++++++++-- Cargo.toml | 8 +- blockchain-tests-skip.yml | 166 +++++++++++++++++- .../src/evm_sequencer/account/mod.rs | 2 +- .../src/evm_sequencer/sequencer/mod.rs | 25 +-- crates/sequencer/src/commit.rs | 8 +- crates/sequencer/src/native.rs | 36 ++-- crates/sequencer/src/sequencer.rs | 110 ++++++------ crates/sequencer/src/serde.rs | 10 +- crates/sequencer/src/state.rs | 32 ++-- crates/sequencer/src/transaction.rs | 55 +++--- rust-toolchain | 2 +- 12 files changed, 415 insertions(+), 159 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 138716e8..2d133940 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -1075,7 +1075,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=41fa336f05eaec38bfa53e0e43d19a608c0fef37#41fa336f05eaec38bfa53e0e43d19a608c0fef37" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" dependencies = [ "anyhow", "ark-ec", @@ -1085,12 +1085,12 @@ dependencies = [ "cached 0.44.0", "cairo-lang-casm", "cairo-lang-runner", - "cairo-lang-sierra", "cairo-lang-starknet-classes", "cairo-lang-utils", "cairo-native", "cairo-vm", "derive_more 0.99.18", +<<<<<<< HEAD <<<<<<< HEAD "indexmap 2.6.0", "itertools 0.12.1", @@ -1099,8 +1099,11 @@ dependencies = [ "indexmap 2.5.0", "itertools 0.10.5", >>>>>>> 595f442 (wip: cairo native) +======= + "indexmap 2.5.0", + "itertools 0.12.1", +>>>>>>> 091ca07 (update to latest sequencer) "keccak", - "lazy_static", "log", "num-bigint", "num-integer", @@ -1111,12 +1114,13 @@ dependencies = [ "phf", "rand", "rstest", + "semver 1.0.23", "serde", "serde_json", "sha2 0.10.8", - "sha3", "starknet-types-core", - "starknet_api", + "starknet_api 0.0.0 (git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "starknet_sierra_compile", "strum 0.25.0", "strum_macros 0.25.3", "tempfile", @@ -1825,8 +1829,9 @@ dependencies = [ [[package]] name = "cairo-native" -version = "0.2.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=5e60089288c461eca98bf3dbe03cc882778ff677#5e60089288c461eca98bf3dbe03cc882778ff677" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bdebc70c3d563bc30078985ae3e975aa7dc4fa233631b5e0462a924c26c0dd9" dependencies = [ "anyhow", "aquamarine", @@ -1878,8 +1883,9 @@ dependencies = [ [[package]] name = "cairo-native-runtime" -version = "0.2.3" -source = "git+https://github.com/lambdaclass/cairo_native?rev=5e60089288c461eca98bf3dbe03cc882778ff677#5e60089288c461eca98bf3dbe03cc882778ff677" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bf997252c402d6844f41357660cde3c11825ac5b3feafd0fb99b9dcdfb58aa3" dependencies = [ "cairo-lang-sierra-gas", "itertools 0.13.0", @@ -1897,6 +1903,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58363ad8065ed891e3b14a8191b707677c7c7cb5b9d10030822506786d8d8108" dependencies = [ "anyhow", + "arbitrary", "bincode 2.0.0-rc.3", "bitvec", "generic-array", @@ -2856,7 +2863,7 @@ dependencies = [ "serde_yaml", "starknet", "starknet-crypto 0.7.2", - "starknet_api", + "starknet_api 0.0.0 (git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", "thiserror", "tokio", "tracing", @@ -4025,6 +4032,14 @@ version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" +[[package]] +name = "infra_utils" +version = "0.0.0" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +dependencies = [ + "tokio", +] + [[package]] name = "inotify" version = "0.9.6" @@ -5191,10 +5206,11 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=41fa336f05eaec38bfa53e0e43d19a608c0fef37#41fa336f05eaec38bfa53e0e43d19a608c0fef37" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" dependencies = [ "clap", - "itertools 0.10.5", + "infra_utils", + "itertools 0.12.1", "serde", "serde_json", "strum_macros 0.25.3", @@ -5202,6 +5218,26 @@ dependencies = [ "validator", ] +[[package]] +name = "papyrus_proc_macros" +version = "0.0.0" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +dependencies = [ + "quote", + "syn 2.0.77", + "tracing", +] + +[[package]] +name = "papyrus_proc_macros" +version = "0.0.0" +source = "git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +dependencies = [ + "quote", + "syn 2.0.77", + "tracing", +] + [[package]] name = "parity-scale-codec" version = "3.6.12" @@ -7991,7 +8027,7 @@ dependencies = [ "serde", "serde_json", "starknet", - "starknet_api", + "starknet_api 0.0.0 (git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", "tempfile", "thiserror", "tracing", @@ -8537,6 +8573,7 @@ version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa1b9e01ccb217ab6d475c5cda05dbb22c30029f7bb52b192a010a00d77a3d74" dependencies = [ + "arbitrary", "lambdaworks-crypto", "lambdaworks-math", "lazy_static", @@ -8549,9 +8586,10 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=41fa336f05eaec38bfa53e0e43d19a608c0fef37#41fa336f05eaec38bfa53e0e43d19a608c0fef37" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" dependencies = [ "bitvec", + "cairo-lang-runner", "cairo-lang-starknet-classes", "derive_more 0.99.18", "hex", @@ -8560,8 +8598,15 @@ dependencies = [ "itertools 0.12.1", ======= "indexmap 2.5.0", +<<<<<<< HEAD "itertools 0.10.5", >>>>>>> 595f442 (wip: cairo native) +======= + "itertools 0.12.1", + "num-bigint", + "papyrus_proc_macros 0.0.0 (git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "pretty_assertions", +>>>>>>> 091ca07 (update to latest sequencer) "primitive-types", "serde", "serde_json", @@ -8573,6 +8618,51 @@ dependencies = [ "thiserror", ] +[[package]] +name = "starknet_api" +version = "0.0.0" +source = "git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +dependencies = [ + "bitvec", + "cairo-lang-runner", + "cairo-lang-starknet-classes", + "derive_more 0.99.18", + "hex", + "indexmap 2.5.0", + "itertools 0.12.1", + "num-bigint", + "papyrus_proc_macros 0.0.0 (git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "pretty_assertions", + "primitive-types", + "serde", + "serde_json", + "sha3", + "starknet-crypto 0.7.2", + "starknet-types-core", + "strum 0.25.0", + "strum_macros 0.25.3", + "thiserror", +] + +[[package]] +name = "starknet_sierra_compile" +version = "0.0.0" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +dependencies = [ + "cairo-lang-sierra", + "cairo-lang-starknet-classes", + "cairo-lang-utils", + "cairo-native", + "papyrus_config", + "serde", + "serde_json", + "starknet-types-core", + "starknet_api 0.0.0 (git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "tempfile", + "thiserror", + "validator", +] + [[package]] name = "static_assertions" version = "1.1.0" diff --git a/Cargo.toml b/Cargo.toml index 00b52a9e..69e44c15 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,14 +45,14 @@ cairo-lang-starknet = "2.9.0-dev.0" cairo-lang-utils = "2.9.0-dev.0" cairo-lang-starknet-classes = "2.9.0-dev.0" cairo-lang-sierra = "2.9.0-dev.0" -cairo-native = { git = "https://github.com/lambdaclass/cairo_native", rev="5e60089288c461eca98bf3dbe03cc882778ff677"} +cairo-native = "0.2.4" cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="41fa336f05eaec38bfa53e0e43d19a608c0fef37", default-features = false, features = [ - "testing", +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="e5ed51d697f678ddf27f3b0a5752065a71474022", default-features = false, features = [ + "testing", "cairo_native", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="41fa336f05eaec38bfa53e0e43d19a608c0fef37" } +starknet_api = { package = "starknet_api", git = "https://github.com/starkware-libs/sequencer.git", rev="e5ed51d697f678ddf27f3b0a5752065a71474022" } # Other async-trait = "0.1" diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml index 1c3e4268..c95e7a1f 100644 --- a/blockchain-tests-skip.yml +++ b/blockchain-tests-skip.yml @@ -11,5 +11,169 @@ filename: - None testname: + vmArithmeticTest: + - addmod_d10g0v0_Cancun + - addmod_d11g0v0_Cancun + - addmod_d8g0v0_Cancun + - addmod_d9g0v0_Cancun + - divByZero_d63g0v0_Cancun + - divByZero_d64g0v0_Cancun + - divByZero_d65g0v0_Cancun + - divByZero_d66g0v0_Cancun + - divByZero_d67g0v0_Cancun + - divByZero_d68g0v0_Cancun + - divByZero_d69g0v0_Cancun + - divByZero_d70g0v0_Cancun + - divByZero_d71g0v0_Cancun + - divByZero_d72g0v0_Cancun + - divByZero_d73g0v0_Cancun + - divByZero_d74g0v0_Cancun + - divByZero_d75g0v0_Cancun + - divByZero_d76g0v0_Cancun + - divByZero_d77g0v0_Cancun + - divByZero_d78g0v0_Cancun + - divByZero_d79g0v0_Cancun + - divByZero_d80g0v0_Cancun + - divByZero_d81g0v0_Cancun + - divByZero_d82g0v0_Cancun + - divByZero_d83g0v0_Cancun + - divByZero_d84g0v0_Cancun + - divByZero_d85g0v0_Cancun + - divByZero_d86g0v0_Cancun + - divByZero_d87g0v0_Cancun + - divByZero_d88g0v0_Cancun + - divByZero_d89g0v0_Cancun + - divByZero_d90g0v0_Cancun + - divByZero_d91g0v0_Cancun + - divByZero_d92g0v0_Cancun + - divByZero_d93g0v0_Cancun + - divByZero_d94g0v0_Cancun + - divByZero_d95g0v0_Cancun + - divByZero_d96g0v0_Cancun + - divByZero_d97g0v0_Cancun + - expPower256Of256_d0g0v0_Cancun + - exp_d1g0v0_Cancun + - exp_d3g0v0_Cancun + - exp_d8g0v0_Cancun + - exp_d9g0v0_Cancun + - expPower256_d0g0v0_Cancun + - mulmod_d12g0v0_Cancun + - mulmod_d13g0v0_Cancun + - mulmod_d14g0v0_Cancun + - mulmod_d15g0v0_Cancun + - twoOps_d0g0v0_Cancun -regex: + +regex: regex: + stArgsZeroOneBalance: + - .* + stAttackTest: + - .* + stBadOpcode: + - .* + stBugs: + - .* + stCallCodes: + - .* + stCallCreateCallCodeTest: + - .* + stCallDelegateCodesCallCodeHomestead: + - .* + stCallDelegateCodesHomestead: + - .* + stChainId: + - .* + stCodeSizeLimit: + - .* + stCreateTest: + - .* + stCreate2: + - .* + stDelegatecallTestHomestead: + - .* + stEIP150Specific: + - .* + stEIP150singleCodeGasPrices: + - .* + stEIP1559: + - .* + stEIP158Specific: + - .* + stEIP2930: + - .* + stExample: + - .* + stExtCodeHash: + - .* + stInitCodeTest: + - .* + stLogTests: + - .* + stMemExpandingEIP150Calls: + - .* + stMemoryStressTest: + - .* + stMemoryTest: + - .* + stNonZeroCallsTest: + - .* + stPreCompiledContracts: + - .* + stPreCompiledContracts2: + - .* + stQuadraticComplexityTest: + - .* + stRandom: + - .* + stRandom2: + - .* + stRecursiveCreate: + - .* + stRefundTest: + - .* + stReturnDataTest: + - .* + stRevertTest: + - .* + stSLoadTest: + - .* + stSStoreTest: + - .* + stSelfBalance: + - .* + stShift: + - .* + stSolidityTest: + - .* + stSpecialTest: + - .* + stStackTests: + - .* + stStaticCall: + - .* + stStaticFlagEnabled: + - .* + stSystemOperationsTest: + - .* + stTimeConsuming: + - .* + stTransactionTest: + - .* + stTransitionTest: + - .* + stWalletTest: + - .* + stZeroCallsRevert: + - .* + stZeroKnowledge: + - .* + stZeroKnowledge2: + - .* + vmIOandFlowOperations: + - .* + vmLogTest: + - .* + vmPerformance: + - .* + vmTests: + - .* diff --git a/crates/ef-testing/src/evm_sequencer/account/mod.rs b/crates/ef-testing/src/evm_sequencer/account/mod.rs index d7e81728..52691a9c 100644 --- a/crates/ef-testing/src/evm_sequencer/account/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/account/mod.rs @@ -187,8 +187,8 @@ mod tests { use crate::evm_sequencer::constants::storage_variables::ACCOUNT_BYTECODE; use super::*; + use starknet_api::abi::abi_utils::get_storage_var_address; use alloy_primitives::Bytes; - use blockifier::abi::abi_utils::get_storage_var_address; #[test] fn test_pack_byte_array_to_starkfelt_array() { diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index 05e589da..45c7c6cc 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -19,7 +19,8 @@ use crate::evm_sequencer::{ utils::compute_starknet_address, }; use alloy_primitives::Address; -use blockifier::blockifier::block::{BlockInfo, GasPrices}; +use blockifier::blockifier::block::BlockInfo; +use starknet_api::block::{GasPrices, GasPriceVector}; use blockifier::context::ChainInfo; use blockifier::context::{BlockContext, FeeTokenAddresses}; use blockifier::versioned_constants::VersionedConstants; @@ -43,7 +44,7 @@ use crate::evm_sequencer::constants::{ storage_variables::KAKAROT_CAIRO1_HELPERS_CLASS_HASH, CAIRO1_HELPERS_CLASS, CAIRO1_HELPERS_CLASS_HASH, }; -use blockifier::abi::abi_utils::get_storage_var_address; +use starknet_api::abi::abi_utils::get_storage_var_address; #[allow(unused_imports)] use blockifier::state::state_api::{ State as BlockifierState, StateReader as BlockifierStateReader, @@ -111,14 +112,18 @@ impl KakarotSequencer { ) .try_into() .expect("Failed to convert to ContractAddress"), - gas_prices: GasPrices::new( - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - ), + gas_prices: GasPrices { + eth_gas_prices: GasPriceVector{ + l1_gas_price: Default::default(), + l1_data_gas_price: Default::default(), + l2_gas_price: Default::default() + }, + strk_gas_prices: GasPriceVector{ + l1_gas_price: Default::default(), + l1_data_gas_price: Default::default(), + l2_gas_price: Default::default() + }, + }, use_kzg_da: false, }; diff --git a/crates/sequencer/src/commit.rs b/crates/sequencer/src/commit.rs index 21f4124b..cee8d451 100644 --- a/crates/sequencer/src/commit.rs +++ b/crates/sequencer/src/commit.rs @@ -12,18 +12,18 @@ where { fn commit(cached_state: &mut CachedState<&mut S>) -> StateResult<()> { let diff = cached_state.to_state_diff()?; - for (address, class_hash) in diff.class_hashes { + for (address, class_hash) in diff.state_maps.class_hashes { cached_state.state.set_class_hash_at(address, class_hash)?; } - for (address, _) in diff.nonces { + for (address, _) in diff.state_maps.nonces { cached_state.state.increment_nonce(address)?; } - for ((address, storage_key), value) in &diff.storage { + for ((address, storage_key), value) in &diff.state_maps.storage { cached_state .state .set_storage_at(*address, *storage_key, *value)?; } - for (class_hash, compiled_class_hash) in diff.compiled_class_hashes { + for (class_hash, compiled_class_hash) in diff.state_maps.compiled_class_hashes { cached_state .state .set_compiled_class_hash(class_hash, compiled_class_hash)?; diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index a25ff0db..c4e42528 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -1,11 +1,13 @@ -use blockifier::execution::contract_class::NativeContractClassV1; -use blockifier::execution::contract_class::{ContractClass, ContractClassV0, ContractClassV1}; +use blockifier::execution::contract_class::{ + CompiledClassV0, CompiledClassV1, RunnableCompiledClass, +}; +use blockifier::execution::native::contract_class::NativeCompiledClassV1; +use cairo_lang_starknet_classes::contract_class::ContractClass; use cairo_native::executor::AotContractExecutor; use cairo_native::OptLevel; use starknet_api::core::ClassHash; use lazy_static::lazy_static; -use std::sync::Arc; use std::{fs, path::PathBuf}; lazy_static! { @@ -39,36 +41,44 @@ fn setup_native_cache_dir() -> PathBuf { fn native_try_from_json_string( raw_contract_class: &str, library_output_path: &PathBuf, -) -> Result> { - let sierra_contract_class: cairo_lang_starknet_classes::contract_class::ContractClass = - serde_json::from_str(raw_contract_class)?; +) -> Result> { + let sierra_contract_class: ContractClass = serde_json::from_str(raw_contract_class)?; + + let compiled_class = serde_json::from_str(raw_contract_class)?; let sierra_program = sierra_contract_class.extract_sierra_program()?; let maybe_cached_executor = AotContractExecutor::load(library_output_path); if let Ok(executor) = maybe_cached_executor { println!("Loaded cached executor"); - let native_class = NativeContractClassV1::new(Arc::new(executor), sierra_contract_class)?; + let native_class = NativeCompiledClassV1::new(executor, compiled_class); return Ok(native_class); } println!("Creating new executor"); - let mut executor = AotContractExecutor::new(&sierra_program, &sierra_contract_class.entry_points_by_type, OptLevel::Default)?; + let mut executor = AotContractExecutor::new( + &sierra_program, + &sierra_contract_class.entry_points_by_type, + OptLevel::Default, + )?; executor.save(library_output_path)?; println!("Saved executor to {:?}", library_output_path); - let native_class = NativeContractClassV1::new(Arc::new(executor), sierra_contract_class)?; + let native_class = NativeCompiledClassV1::new(executor, compiled_class); Ok(native_class) } -pub fn class_from_json_str(raw_json: &str, class_hash: ClassHash) -> Result { +pub fn class_from_json_str( + raw_json: &str, + class_hash: ClassHash, +) -> Result { println!("raw json length {}", raw_json.len()); let class_def = raw_json.to_string(); println!("class def parsed"); - let class: ContractClass = - if let Ok(class) = ContractClassV0::try_from_json_string(class_def.as_str()) { + let class: RunnableCompiledClass = + if let Ok(class) = CompiledClassV0::try_from_json_string(class_def.as_str()) { class.into() - } else if let Ok(class) = ContractClassV1::try_from_json_string(class_def.as_str()) { + } else if let Ok(class) = CompiledClassV1::try_from_json_string(class_def.as_str()) { println!("v1 contract"); class.into() } else if let Ok(class) = { diff --git a/crates/sequencer/src/sequencer.rs b/crates/sequencer/src/sequencer.rs index a3964e21..56be4dd5 100644 --- a/crates/sequencer/src/sequencer.rs +++ b/crates/sequencer/src/sequencer.rs @@ -72,18 +72,21 @@ where transaction: Transaction, ) -> TransactionExecutionResult { let sender_address = match &transaction { - Transaction::AccountTransaction(tx) => match tx { - blockifier::transaction::account_transaction::AccountTransaction::Invoke(tx) => { - tx.tx.sender_address() + Transaction::Account(account_tx) => { + let tx = &account_tx.tx; + match tx { + starknet_api::executable_transaction::AccountTransaction::Invoke(tx) => { + tx.sender_address() + } + starknet_api::executable_transaction::AccountTransaction::Declare(tx) => { + tx.sender_address() + } + starknet_api::executable_transaction::AccountTransaction::DeployAccount(tx) => { + tx.contract_address() + } } - blockifier::transaction::account_transaction::AccountTransaction::Declare(tx) => { - tx.tx().sender_address() - } - blockifier::transaction::account_transaction::AccountTransaction::DeployAccount( - tx, - ) => tx.contract_address(), - }, - Transaction::L1HandlerTransaction(_) => ContractAddress::from(0u8), + } + Transaction::L1Handler(_) => ContractAddress::from(0u8), }; let mut cached_state = CachedState::new(&mut self.state); @@ -115,26 +118,24 @@ where mod tests { use std::fmt::Display; use std::fs::File; - use std::num::NonZeroU128; - use blockifier::abi::abi_utils::get_storage_var_address; - use blockifier::blockifier::block::{BlockInfo, GasPrices}; + use starknet_api::abi::abi_utils::get_storage_var_address; use blockifier::bouncer::BouncerConfig; use blockifier::context::ChainInfo; use blockifier::context::{BlockContext, FeeTokenAddresses}; - use blockifier::execution::contract_class::{ContractClass, ContractClassV0, ContractClassV1}; + use blockifier::execution::contract_class::{RunnableCompiledClass, CompiledClassV0, CompiledClassV1}; use blockifier::state::state_api::State as BlockifierState; - use blockifier::transaction::account_transaction::AccountTransaction; - use blockifier::transaction::transactions::InvokeTransaction as BlockifierInvokeTransaction; use blockifier::versioned_constants::VersionedConstants; use starknet::core::types::Felt; use starknet::macros::selector; use starknet_api::block::{BlockNumber, BlockTimestamp}; use starknet_api::core::{ChainId, ClassHash, ContractAddress, Nonce}; use starknet_api::executable_transaction::InvokeTransaction; - use starknet_api::transaction::{ - Calldata, Fee, InvokeTransactionV1, TransactionHash, TransactionSignature, + use starknet_api::transaction::{InvokeTransaction as InvokeTransactionTypes, InvokeTransactionV1}; + use starknet_api::transaction::fields::{ + Calldata, Fee, TransactionSignature, }; + use starknet_api::block::{BlockInfo, GasPrices, GasPriceVector}; use crate::constants::test_constants::{ ETH_FEE_TOKEN_ADDRESS, SEQUENCER_ADDRESS, STRK_FEE_TOKEN_ADDRESS, @@ -158,19 +159,19 @@ mod tests { } } - fn read_contract_class_v0(path: &str) -> ContractClass { + fn read_contract_class_v0(path: &str) -> RunnableCompiledClass { let reader = File::open(path).unwrap(); - let contract_class: ContractClassV0 = serde_json::from_reader(reader).unwrap(); + let contract_class: CompiledClassV0 = serde_json::from_reader(reader).unwrap(); - ContractClass::V0(contract_class) + RunnableCompiledClass::V0(contract_class) } - fn read_contract_class_v1(path: &str) -> ContractClass { + fn read_contract_class_v1(path: &str) -> RunnableCompiledClass { let raw_contract_class = std::fs::read_to_string(path).unwrap(); - let contract_class: ContractClassV1 = - ContractClassV1::try_from_json_string(&raw_contract_class).unwrap(); + let contract_class: CompiledClassV1 = + CompiledClassV1::try_from_json_string(&raw_contract_class).unwrap(); - ContractClass::V1(contract_class) + RunnableCompiledClass::V1(contract_class) } fn declare_and_deploy_contract( @@ -253,14 +254,18 @@ mod tests { block_number: BlockNumber(1), block_timestamp: BlockTimestamp(1), sequencer_address: *SEQUENCER_ADDRESS, - gas_prices: GasPrices::new( - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - NonZeroU128::new(1).unwrap(), - ), + gas_prices: GasPrices { + eth_gas_prices: GasPriceVector{ + l1_gas_price: Default::default(), + l1_data_gas_price: Default::default(), + l2_gas_price: Default::default() + }, + strk_gas_prices: GasPriceVector{ + l1_gas_price: Default::default(), + l1_data_gas_price: Default::default(), + l2_gas_price: Default::default() + }, + }, use_kzg_da: false, }; @@ -282,26 +287,23 @@ mod tests { } fn test_transaction() -> Transaction { - Transaction::AccountTransaction(AccountTransaction::Invoke(BlockifierInvokeTransaction { - tx: InvokeTransaction { - tx: starknet_api::transaction::InvokeTransaction::V1(InvokeTransactionV1 { - sender_address: *TEST_ACCOUNT, - calldata: Calldata( - vec![ - *TEST_CONTRACT.0.key(), // destination - selector!("inc"), - Felt::ZERO, // no data - ] - .into(), - ), - max_fee: Fee(1_000_000), - signature: TransactionSignature(vec![]), - nonce: Nonce(Felt::ZERO), - }), - tx_hash: TransactionHash(Felt::ZERO), - }, - only_query: false, - })) + let invoke_tx = InvokeTransactionTypes::V1(InvokeTransactionV1 { + sender_address: *TEST_ACCOUNT, + calldata: Calldata( + vec![ + *TEST_CONTRACT.0.key(), // destination + selector!("inc"), + *ZERO_FELT, // no data + ] + .into(), + ), + max_fee: Fee(1_000_000), + signature: TransactionSignature(vec![]), + nonce: Nonce(*ZERO_FELT), + }); + let transaction = + InvokeTransaction::create(invoke_tx, &ChainId::Other("KKRT".into())).unwrap(); + Transaction::Account(transaction.into()) } sequencer_test!(CairoVersion::V0, test_sequencer_cairo_0); diff --git a/crates/sequencer/src/serde.rs b/crates/sequencer/src/serde.rs index 1539f8e6..6945a735 100644 --- a/crates/sequencer/src/serde.rs +++ b/crates/sequencer/src/serde.rs @@ -1,6 +1,6 @@ use std::{fs, io, path::Path}; -use blockifier::execution::contract_class::ContractClass; +use blockifier::execution::contract_class::RunnableCompiledClass; use hashbrown::HashMap; use serde::{Deserialize, Serialize}; use starknet::core::types::Felt; @@ -48,7 +48,7 @@ pub enum SerializationError { #[derive(Clone, Debug, Serialize, Deserialize, Default)] pub struct SerializableState { - pub classes: HashMap, + pub classes: HashMap, pub compiled_classes_hash: HashMap, pub contracts: HashMap, #[serde(with = "serialize_contract_storage")] @@ -135,7 +135,7 @@ mod serialize_contract_storage { mod tests { use super::*; use blockifier::{ - execution::contract_class::{ContractClass, ContractClassV0}, + execution::contract_class::{CompiledClassV0, RunnableCompiledClass}, state::state_api::State as _, }; @@ -151,8 +151,8 @@ mod tests { // setting up entry for state.classes let class_hash = ClassHash(Felt::ONE); let contract_class = include_str!("./test_data/cairo_0/compiled_classes/counter.json"); - let contract_class: ContractClassV0 = serde_json::from_str(contract_class).expect("failed to deserialize ContractClass from ./crates/sequencer/test_data/cairo_1/compiled_classes/account.json"); - let contract_class = ContractClass::V0(contract_class); + let contract_class: CompiledClassV0 = serde_json::from_str(contract_class).expect("failed to deserialize RunnableCompiledClass from ./crates/sequencer/test_data/cairo_1/compiled_classes/account.json"); + let contract_class = RunnableCompiledClass::V0(contract_class); let compiled_class_hash = CompiledClassHash(Felt::ONE); let contract_address = *TEST_CONTRACT; diff --git a/crates/sequencer/src/state.rs b/crates/sequencer/src/state.rs index e233df1d..014baa43 100644 --- a/crates/sequencer/src/state.rs +++ b/crates/sequencer/src/state.rs @@ -1,6 +1,6 @@ use crate::commit::Committer; use crate::serde::SerializableState; -use blockifier::execution::contract_class::ContractClass; +use blockifier::execution::contract_class::RunnableCompiledClass; use blockifier::state::errors::StateError; use blockifier::state::state_api::{ State as BlockifierState, StateReader as BlockifierStateReader, StateResult, @@ -19,7 +19,7 @@ pub type ContractStorageKey = (ContractAddress, StorageKey); /// See [Performance](https://github.com/rust-lang/hashbrown?tab=readme-ov-file#performance) #[derive(Clone, Default, Debug, Serialize, Deserialize, PartialEq, Eq)] pub struct State { - classes: HashMap, + classes: HashMap, compiled_class_hashes: HashMap, contracts: HashMap, storage: HashMap, @@ -111,12 +111,12 @@ impl BlockifierState for &mut State { fn set_contract_class( &mut self, class_hash: ClassHash, - contract_class: ContractClass, + contract_class: RunnableCompiledClass, ) -> StateResult<()> { - match &contract_class { - &ContractClass::V0(_) => println!("Setting V0 contract class"), - &ContractClass::V1(_) => println!("Setting V1 contract class"), - &ContractClass::V1Native(_) => println!("Setting V1Native contract class"), + match contract_class { + RunnableCompiledClass::V0(_) => println!("Setting V0 contract class"), + RunnableCompiledClass::V1(_) => println!("Setting V1 contract class"), + RunnableCompiledClass::V1Native(_) => println!("Setting V1Native contract class"), }; self.classes.insert(class_hash, contract_class); Ok(()) @@ -169,12 +169,12 @@ impl BlockifierStateReader for &mut State { /// # Errors /// /// If the compiled class is not declared. - fn get_compiled_contract_class(&self, class_hash: ClassHash) -> StateResult { + fn get_compiled_class(&self, class_hash: ClassHash) -> StateResult { let res = self .classes .get(&class_hash) .cloned() - .ok_or_else(|| StateError::UndeclaredClassHash(class_hash))?; + .ok_or(StateError::UndeclaredClassHash(class_hash))?; Ok(res) } @@ -185,13 +185,13 @@ impl BlockifierStateReader for &mut State { self.compiled_class_hashes .get(&class_hash) .copied() - .ok_or_else(|| StateError::UndeclaredClassHash(class_hash)) + .ok_or(StateError::UndeclaredClassHash(class_hash)) } } #[cfg(test)] mod tests { - use blockifier::execution::contract_class::ContractClassV0; + use blockifier::execution::contract_class::CompiledClassV0; use crate::constants::test_constants::{ONE_PATRICIA, TEST_CONTRACT}; @@ -254,14 +254,14 @@ mod tests { state .set_contract_class( ClassHash(Felt::ONE), - ContractClass::V0(ContractClassV0::default()), + RunnableCompiledClass::V0(CompiledClassV0::default()), ) .unwrap(); // Then - let expected = ContractClass::V0(ContractClassV0::default()); + let expected = RunnableCompiledClass::V0(CompiledClassV0::default()); let actual = state - .get_compiled_contract_class(ClassHash(Felt::ONE)) + .get_compiled_class(ClassHash(Felt::ONE)) .unwrap(); assert_eq!(expected, actual); } @@ -273,9 +273,7 @@ mod tests { let state = &mut State::default(); // When - state - .get_compiled_contract_class(ClassHash(Felt::ONE)) - .unwrap(); + state.get_compiled_class(ClassHash(Felt::ONE)).unwrap(); } #[test] diff --git a/crates/sequencer/src/transaction.rs b/crates/sequencer/src/transaction.rs index 907802b3..58b37556 100644 --- a/crates/sequencer/src/transaction.rs +++ b/crates/sequencer/src/transaction.rs @@ -1,6 +1,5 @@ use std::sync::Arc; -use blockifier::transaction::transactions::InvokeTransaction as BlockifierInvokeTransaction; use blockifier::transaction::{ account_transaction::AccountTransaction, transaction_execution::Transaction as ExecutionTransaction, @@ -9,9 +8,8 @@ use starknet::core::crypto::compute_hash_on_elements; use starknet::core::types::{BroadcastedInvokeTransaction, BroadcastedTransaction, Felt}; use starknet_api::core::Nonce; use starknet_api::executable_transaction::InvokeTransaction; -use starknet_api::transaction::{ - Calldata, Fee, InvokeTransactionV1, TransactionHash, TransactionSignature, -}; +use starknet_api::transaction::fields::{Calldata, Fee, TransactionSignature}; +use starknet_api::transaction::{InvokeTransactionV1, TransactionHash}; /// Wrapper around a Starknet-rs transaction. /// Allows for conversion from a Starknet-rs @@ -33,37 +31,26 @@ impl BroadcastedTransactionWrapper { ) -> Result { match self.0 { BroadcastedTransaction::Invoke(invoke) => match invoke { - BroadcastedInvokeTransaction::V1(invoke_v1) => { - Ok(ExecutionTransaction::AccountTransaction( - AccountTransaction::Invoke(BlockifierInvokeTransaction { - tx: InvokeTransaction { - tx: starknet_api::transaction::InvokeTransaction::V1( - InvokeTransactionV1 { - max_fee: Fee(invoke_v1.max_fee.to_biguint().try_into()?), - signature: TransactionSignature( - invoke_v1 - .signature - .into_iter() - .map(Into::into) - .collect(), - ), - nonce: Nonce(invoke_v1.nonce), - sender_address: invoke_v1.sender_address.try_into()?, - calldata: Calldata(Arc::new(invoke_v1.calldata.to_vec())), - }, - ), - tx_hash: TransactionHash(compute_transaction_hash( - invoke_v1.sender_address, - &invoke_v1.calldata, - invoke_v1.max_fee, - chain_id, - invoke_v1.nonce, - )), - }, - only_query: false, + BroadcastedInvokeTransaction::V1(invoke_v1) => Ok(ExecutionTransaction::Account( + AccountTransaction::from(InvokeTransaction { + tx: starknet_api::transaction::InvokeTransaction::V1(InvokeTransactionV1 { + max_fee: Fee(invoke_v1.max_fee.to_biguint().try_into()?), + signature: TransactionSignature( + invoke_v1.signature.into_iter().map(Into::into).collect(), + ), + nonce: Nonce(invoke_v1.nonce), + sender_address: invoke_v1.sender_address.try_into()?, + calldata: Calldata(Arc::new(invoke_v1.calldata.to_vec())), }), - )) - } + tx_hash: TransactionHash(compute_transaction_hash( + invoke_v1.sender_address, + &invoke_v1.calldata, + invoke_v1.max_fee, + chain_id, + invoke_v1.nonce, + )), + }), + )), BroadcastedInvokeTransaction::V3(_) => { Err(eyre::eyre!("Unsupported InvokeTransaction version V3")) } diff --git a/rust-toolchain b/rust-toolchain index 2e2b8c85..5d56faf9 100644 --- a/rust-toolchain +++ b/rust-toolchain @@ -1,2 +1,2 @@ [toolchain] -channel = "1.82.0" +channel = "nightly" From 9e6418610ff6003523906112f8b54613194bcd7b Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 4 Dec 2024 14:13:46 +0800 Subject: [PATCH 39/53] update on main --- Cargo.lock | 362 +++++++++++------------------- Cargo.toml | 12 +- blockchain-tests-skip.yml | 2 +- crates/sequencer/src/sequencer.rs | 4 +- 4 files changed, 143 insertions(+), 237 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2d133940..6b460bae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -285,7 +285,7 @@ checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -420,7 +420,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -436,7 +436,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "syn-solidity", "tiny-keccak", ] @@ -452,7 +452,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "syn-solidity", ] @@ -569,6 +569,20 @@ version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +[[package]] +name = "aquamarine" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" +dependencies = [ + "include_dir", + "itertools 0.10.5", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.90", +] + [[package]] name = "aquamarine" version = "0.6.0" @@ -580,7 +594,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -837,7 +851,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -864,7 +878,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -944,41 +958,25 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.70.1" +version = "0.69.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" dependencies = [ "bitflags 2.6.0", "cexpr", "clang-sys", -<<<<<<< HEAD -<<<<<<< HEAD -<<<<<<< HEAD - "itertools 0.13.0", -======= "itertools 0.12.1", -======= - "itertools 0.10.5", ->>>>>>> af062f1 (bump native) -======= - "itertools 0.12.1", ->>>>>>> 33854b2 (bump native) "lazy_static", "lazycell", "log", "prettyplease", ->>>>>>> 595f442 (wip: cairo native) "proc-macro2", "quote", "regex", "rustc-hash 1.1.0", "shlex", -<<<<<<< HEAD - "syn 2.0.79", -======= - "syn 2.0.77", + "syn 2.0.90", "which", ->>>>>>> 595f442 (wip: cairo native) ] [[package]] @@ -998,7 +996,7 @@ dependencies = [ "regex", "rustc-hash 1.1.0", "shlex", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1090,19 +1088,8 @@ dependencies = [ "cairo-native", "cairo-vm", "derive_more 0.99.18", -<<<<<<< HEAD -<<<<<<< HEAD "indexmap 2.6.0", "itertools 0.12.1", -======= - "educe", - "indexmap 2.5.0", - "itertools 0.10.5", ->>>>>>> 595f442 (wip: cairo native) -======= - "indexmap 2.5.0", - "itertools 0.12.1", ->>>>>>> 091ca07 (update to latest sequencer) "keccak", "log", "num-bigint", @@ -1119,7 +1106,7 @@ dependencies = [ "serde_json", "sha2 0.10.8", "starknet-types-core", - "starknet_api 0.0.0 (git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "starknet_api", "starknet_sierra_compile", "strum 0.25.0", "strum_macros 0.25.3", @@ -1140,6 +1127,31 @@ dependencies = [ "zeroize", ] +[[package]] +name = "bon" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9276fe602371cd8a7f70fe68c4db55b2d3e92c570627d6ed0427646edfa5cf47" +dependencies = [ + "bon-macros", + "rustversion", +] + +[[package]] +name = "bon-macros" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94828b84b32b4f3ac3865f692fcdbc46c7d0dd87b29658a391d58a244e1ce45a" +dependencies = [ + "darling 0.20.10", + "ident_case", + "prettyplease", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.90", +] + [[package]] name = "bs58" version = "0.5.1" @@ -1299,7 +1311,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -1504,7 +1516,7 @@ checksum = "ac857ec4b564712f3e16e3314e23cc0787ab1c05cdfee83f1c8f9989a6eee40f" dependencies = [ "cairo-lang-debug", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -1763,9 +1775,9 @@ dependencies = [ [[package]] name = "cairo-lang-syntax-codegen" -version = "2.9.0-dev.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b01d505ab26ca9ce829faf3a8dd097f5d7962d2eb8f136017a260694a6a72e8" +checksum = "80bede54808f2e5d26a8702711009eefe4a12e5a8f3a427ba9b081073c8e9d36" dependencies = [ "genco", "xshell", @@ -1834,7 +1846,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9bdebc70c3d563bc30078985ae3e975aa7dc4fa233631b5e0462a924c26c0dd9" dependencies = [ "anyhow", - "aquamarine", + "aquamarine 0.5.0", "ark-ec", "ark-ff 0.4.2", "ark-secp256k1", @@ -2069,7 +2081,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2094,26 +2106,14 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -<<<<<<< HEAD -======= -name = "combine" -version = "4.6.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" -dependencies = [ - "bytes", - "memchr", -] - [[package]] name = "comrak" -version = "0.28.0" +version = "0.31.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c93ab3577cca16b4a1d80a88c2e0cd8b6e969e51696f0bbb0d1dcb0157109832" +checksum = "453dcb42e33f7b474d7e0db12e0b8d82802c88f35cf5a1d8c297d0dfcecb154f" dependencies = [ + "bon", "caseless", - "derive_builder", "entities", "memchr", "once_cell", @@ -2124,7 +2124,6 @@ dependencies = [ ] [[package]] ->>>>>>> 595f442 (wip: cairo native) name = "concat-kdf" version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -2350,7 +2349,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2386,7 +2385,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2434,7 +2433,7 @@ dependencies = [ "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2456,7 +2455,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2556,38 +2555,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", -] - -[[package]] -name = "derive_builder" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" -dependencies = [ - "derive_builder_macro", -] - -[[package]] -name = "derive_builder_core" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" -dependencies = [ - "darling 0.20.10", - "proc-macro2", - "quote", - "syn 2.0.77", -] - -[[package]] -name = "derive_builder_macro" -version = "0.20.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" -dependencies = [ - "derive_builder_core", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -2600,7 +2568,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.1", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2621,7 +2589,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "unicode-xid", ] @@ -2750,7 +2718,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2819,7 +2787,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -2863,7 +2831,7 @@ dependencies = [ "serde_yaml", "starknet", "starknet-crypto 0.7.2", - "starknet_api 0.0.0 (git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "starknet_api", "thiserror", "tokio", "tracing", @@ -2973,7 +2941,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -2993,7 +2961,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -3004,7 +2972,7 @@ checksum = "2f9ed6b3789237c8a0c1c505af1c7eb2c560df6186f01b098c3a1064ea532f38" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -3110,7 +3078,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -3303,7 +3271,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -3367,7 +3335,7 @@ checksum = "553630feadf7b76442b0849fd25fdf89b860d933623aec9693fed19af0400c78" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -3735,15 +3703,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", -<<<<<<< HEAD -<<<<<<< HEAD "socket2", -======= - "socket2 0.4.10", ->>>>>>> 29ad08f (update remote) -======= - "socket2 0.5.7", ->>>>>>> 33854b2 (bump native) "tokio", "tower-service", "tracing", @@ -4334,6 +4294,12 @@ dependencies = [ "spin", ] +[[package]] +name = "lazycell" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" + [[package]] name = "libc" version = "0.2.159" @@ -4559,29 +4525,26 @@ dependencies = [ [[package]] name = "melior" -version = "0.19.0" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5d97014786c173a839839e2a068e82516ad1eb94fca1d40013d3c5e224e7c1e" +checksum = "ee088ab94ababfb7843fbf3c6239a535f371ea23b57c75f26707c14096527874" dependencies = [ - "dashmap", "melior-macro", "mlir-sys", - "once_cell", ] [[package]] name = "melior-macro" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef7ae0ba2f96784ec407d58374c8477f5b04ec8c57a114cafef0c8f165c4b288" +checksum = "575063f5ab34758980f9441a3978b4ad8c46e8eaeb5c6cb0e73b985f056d8490" dependencies = [ "comrak", "convert_case 0.6.0", - "once_cell", "proc-macro2", "quote", "regex", - "syn 2.0.77", + "syn 2.0.90", "tblgen-alt", "unindent", ] @@ -4620,7 +4583,7 @@ dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -4994,7 +4957,7 @@ checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -5160,7 +5123,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -5224,17 +5187,7 @@ version = "0.0.0" source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" dependencies = [ "quote", - "syn 2.0.77", - "tracing", -] - -[[package]] -name = "papyrus_proc_macros" -version = "0.0.0" -source = "git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" -dependencies = [ - "quote", - "syn 2.0.77", + "syn 2.0.90", "tracing", ] @@ -5401,7 +5354,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -5445,7 +5398,7 @@ checksum = "a4502d8515ca9f32f1fb543d987f63d95a14934883db45bdb48060b6b69257f8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -5536,12 +5489,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.22" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.77", + "syn 2.0.90", ] [[package]] @@ -5609,14 +5562,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] name = "proc-macro2" -version = "1.0.87" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -5659,7 +5612,7 @@ checksum = "6ff7ff745a347b87471d859a377a9a404361e7efc2a971d73424a6d183c0fc77" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -5780,9 +5733,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -6072,7 +6025,7 @@ dependencies = [ "convert_case 0.6.0", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -6585,7 +6538,7 @@ name = "reth-mdbx-sys" version = "1.1.1" source = "git+https://github.com/paradigmxyz/reth.git?tag=v1.1.1#15c230bac20e2b1b3532c8b0d470e815fbc0cc22" dependencies = [ - "bindgen 0.69.4", + "bindgen 0.70.1", "cc", ] @@ -6631,7 +6584,7 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", - "aquamarine", + "aquamarine 0.6.0", "auto_impl", "derive_more 1.0.0", "discv5", @@ -7176,7 +7129,7 @@ version = "1.1.1" source = "git+https://github.com/paradigmxyz/reth.git?tag=v1.1.1#15c230bac20e2b1b3532c8b0d470e815fbc0cc22" dependencies = [ "alloy-primitives", - "aquamarine", + "aquamarine 0.6.0", "auto_impl", "futures-util", "metrics", @@ -7323,7 +7276,7 @@ dependencies = [ "alloy-eips", "alloy-primitives", "alloy-rlp", - "aquamarine", + "aquamarine 0.6.0", "auto_impl", "bitflags 2.6.0", "futures-util", @@ -7670,7 +7623,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -7884,7 +7837,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8027,7 +7980,7 @@ dependencies = [ "serde", "serde_json", "starknet", - "starknet_api 0.0.0 (git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "starknet_api", "tempfile", "thiserror", "tracing", @@ -8050,7 +8003,7 @@ checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8061,7 +8014,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8096,7 +8049,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8147,7 +8100,7 @@ dependencies = [ "darling 0.20.10", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8486,7 +8439,7 @@ checksum = "bbc159a1934c7be9761c237333a57febe060ace2bc9e3b337a59a37af206d19f" dependencies = [ "starknet-curve 0.4.2", "starknet-ff", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8526,7 +8479,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8986a940af916fc0a034f4e42c6ba76d94f1e97216d75447693dfd7aefaf3ef2" dependencies = [ "starknet-core", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8593,45 +8546,10 @@ dependencies = [ "cairo-lang-starknet-classes", "derive_more 0.99.18", "hex", -<<<<<<< HEAD "indexmap 2.6.0", "itertools 0.12.1", -======= - "indexmap 2.5.0", -<<<<<<< HEAD - "itertools 0.10.5", ->>>>>>> 595f442 (wip: cairo native) -======= - "itertools 0.12.1", - "num-bigint", - "papyrus_proc_macros 0.0.0 (git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", - "pretty_assertions", ->>>>>>> 091ca07 (update to latest sequencer) - "primitive-types", - "serde", - "serde_json", - "sha3", - "starknet-crypto 0.7.2", - "starknet-types-core", - "strum 0.25.0", - "strum_macros 0.25.3", - "thiserror", -] - -[[package]] -name = "starknet_api" -version = "0.0.0" -source = "git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" -dependencies = [ - "bitvec", - "cairo-lang-runner", - "cairo-lang-starknet-classes", - "derive_more 0.99.18", - "hex", - "indexmap 2.5.0", - "itertools 0.12.1", "num-bigint", - "papyrus_proc_macros 0.0.0 (git+https://github.com/starkware-libs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "papyrus_proc_macros", "pretty_assertions", "primitive-types", "serde", @@ -8657,7 +8575,7 @@ dependencies = [ "serde", "serde_json", "starknet-types-core", - "starknet_api 0.0.0 (git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022)", + "starknet_api", "tempfile", "thiserror", "validator", @@ -8725,7 +8643,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8738,7 +8656,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8773,9 +8691,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.79" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -8791,7 +8709,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -8876,7 +8794,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ecbc9175dd38627cd01d546e7b41c9a115e5773f4c98f64e2185c81ec5f45ab" dependencies = [ - "bindgen 0.69.4", + "bindgen 0.69.5", "cc", "paste", "thiserror", @@ -8923,7 +8841,7 @@ checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9048,7 +8966,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9180,7 +9098,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9589,7 +9507,7 @@ checksum = "d674d135b4a8c1d7e813e2f8d1c9a58308aee4a680323066025e53132218bd91" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9648,7 +9566,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "wasm-bindgen-shared", ] @@ -9682,7 +9600,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -9719,17 +9637,6 @@ version = "0.25.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" -[[package]] -<<<<<<< HEAD -======= -name = "webpki-roots" -version = "0.26.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "which" version = "4.4.2" @@ -9743,7 +9650,6 @@ dependencies = [ ] [[package]] ->>>>>>> 595f442 (wip: cairo native) name = "widestring" version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -9819,7 +9725,7 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -9830,7 +9736,7 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -10087,7 +9993,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] @@ -10107,7 +10013,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.79", + "syn 2.0.90", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 69e44c15..d7e2b1c8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,11 +40,11 @@ revm-interpreter = { version = "13.0", default-features = false } revm-primitives = { version = "13.0", default-features = false } # Starknet deps -cairo-lang-casm = "2.9.0-dev.0" -cairo-lang-starknet = "2.9.0-dev.0" -cairo-lang-utils = "2.9.0-dev.0" -cairo-lang-starknet-classes = "2.9.0-dev.0" -cairo-lang-sierra = "2.9.0-dev.0" +cairo-lang-casm = "=2.9.0-dev.0" +cairo-lang-starknet = "=2.9.0-dev.0" +cairo-lang-utils = "=2.9.0-dev.0" +cairo-lang-starknet-classes = "=2.9.0-dev.0" +cairo-lang-sierra = "=2.9.0-dev.0" cairo-native = "0.2.4" cairo-vm = "1.0.1" blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="e5ed51d697f678ddf27f3b0a5752065a71474022", default-features = false, features = [ @@ -52,7 +52,7 @@ blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/seque ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/starkware-libs/sequencer.git", rev="e5ed51d697f678ddf27f3b0a5752065a71474022" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="e5ed51d697f678ddf27f3b0a5752065a71474022" } # Other async-trait = "0.1" diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml index c95e7a1f..a466e0fd 100644 --- a/blockchain-tests-skip.yml +++ b/blockchain-tests-skip.yml @@ -64,7 +64,7 @@ testname: - twoOps_d0g0v0_Cancun -regex: regex: +regex: stArgsZeroOneBalance: - .* stAttackTest: diff --git a/crates/sequencer/src/sequencer.rs b/crates/sequencer/src/sequencer.rs index 56be4dd5..4ac14ff5 100644 --- a/crates/sequencer/src/sequencer.rs +++ b/crates/sequencer/src/sequencer.rs @@ -293,13 +293,13 @@ mod tests { vec![ *TEST_CONTRACT.0.key(), // destination selector!("inc"), - *ZERO_FELT, // no data + Felt::ZERO, // no data ] .into(), ), max_fee: Fee(1_000_000), signature: TransactionSignature(vec![]), - nonce: Nonce(*ZERO_FELT), + nonce: Nonce(Felt::ZERO), }); let transaction = InvokeTransaction::create(invoke_tx, &ChainId::Other("KKRT".into())).unwrap(); From 2c46a788c4601f2951f82bbcbeeeff1ea8c0bac6 Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 4 Dec 2024 14:27:48 +0800 Subject: [PATCH 40/53] fix ef-testing crate --- crates/ef-testing/program.sierra | 1226 ----------------- .../src/evm_sequencer/account/mod.rs | 6 +- .../ef-testing/src/evm_sequencer/constants.rs | 4 +- .../src/evm_sequencer/evm_state/mod.rs | 15 +- .../src/evm_sequencer/sequencer/mod.rs | 29 +- crates/ef-testing/src/models/result.rs | 4 +- crates/ef-testing/src/test_utils/mod.rs | 4 +- 7 files changed, 25 insertions(+), 1263 deletions(-) delete mode 100644 crates/ef-testing/program.sierra diff --git a/crates/ef-testing/program.sierra b/crates/ef-testing/program.sierra deleted file mode 100644 index 9adaee04..00000000 --- a/crates/ef-testing/program.sierra +++ /dev/null @@ -1,1226 +0,0 @@ -type RangeCheck = RangeCheck [storable: true, drop: false, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type ClassHash = ClassHash [storable: true, drop: true, dup: true, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type ContractAddress = ContractAddress [storable: true, drop: true, dup: true, zero_sized: false]; -type contracts::components::ownable::ownable_component::OwnershipTransferred = Struct [storable: true, drop: true, dup: true, zero_sized: false]; -type contracts::components::ownable::ownable_component::Event = Enum [storable: true, drop: true, dup: true, zero_sized: false]; -type contracts::uninitialized_account::UninitializedAccount::Event = Enum [storable: true, drop: true, dup: true, zero_sized: false]; -type StorageBaseAddress = StorageBaseAddress [storable: true, drop: true, dup: true, zero_sized: false]; -type core::starknet::storage::StoragePointer0Offset::> = Struct [storable: true, drop: true, dup: true, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Box = Box [storable: true, drop: true, dup: true, zero_sized: false]; -type Box = Box [storable: true, drop: true, dup: true, zero_sized: false]; -type felt252 = felt252 [storable: true, drop: true, dup: true, zero_sized: false]; -type u128 = u128 [storable: true, drop: true, dup: true, zero_sized: false]; -type Array = Array [storable: true, drop: true, dup: false, zero_sized: false]; -type Snapshot> = Snapshot> [storable: true, drop: true, dup: true, zero_sized: false]; -type core::array::Span:: = Struct>> [storable: true, drop: true, dup: true, zero_sized: false]; -type Array = Array [storable: true, drop: true, dup: false, zero_sized: false]; -type Snapshot> = Snapshot> [storable: true, drop: true, dup: true, zero_sized: false]; -type core::array::Span:: = Struct>> [storable: true, drop: true, dup: true, zero_sized: false]; -type u32 = u32 [storable: true, drop: true, dup: true, zero_sized: false]; -type core::starknet::info::v2::TxInfo = Struct, felt252, felt252, felt252, core::array::Span::, u128, core::array::Span::, u32, u32, core::array::Span::> [storable: true, drop: true, dup: true, zero_sized: false]; -type u64 = u64 [storable: true, drop: true, dup: true, zero_sized: false]; -type core::starknet::info::BlockInfo = Struct [storable: true, drop: true, dup: true, zero_sized: false]; -type core::starknet::info::v2::ResourceBounds = Struct [storable: true, drop: true, dup: true, zero_sized: false]; -type core::starknet::info::v2::ExecutionInfo = Struct, Box, ContractAddress, ContractAddress, felt252> [storable: true, drop: true, dup: true, zero_sized: false]; -type Box = Box [storable: true, drop: true, dup: true, zero_sized: false]; -type contracts::components::ownable::ownable_component::ComponentState:: = Struct [storable: true, drop: true, dup: true, zero_sized: true]; -type contracts::uninitialized_account::UninitializedAccount::ContractState = Struct> [storable: true, drop: true, dup: true, zero_sized: true]; -type Unit = Struct [storable: true, drop: true, dup: true, zero_sized: true]; -type Tuple = Struct [storable: true, drop: true, dup: true, zero_sized: true]; -type core::panics::Panic = Struct [storable: true, drop: true, dup: true, zero_sized: true]; -type Tuple> = Struct> [storable: true, drop: true, dup: false, zero_sized: false]; -type core::panics::PanicResult::<(contracts::uninitialized_account::UninitializedAccount::ContractState, ())> = Enum, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; -type core::option::Option::> = Enum, Unit> [storable: true, drop: true, dup: false, zero_sized: false]; -type Tuple, core::option::Option::>> = Struct, core::option::Option::>> [storable: true, drop: true, dup: false, zero_sized: false]; -type core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)> = Enum, core::option::Option::>>, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; -type Box = Box [storable: true, drop: true, dup: true, zero_sized: false]; -type core::option::Option::> = Enum, Unit> [storable: true, drop: true, dup: true, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Tuple, Unit> = Struct, Unit> [storable: true, drop: true, dup: true, zero_sized: true]; -type core::panics::PanicResult::<(contracts::components::ownable::ownable_component::ComponentState::, ())> = Enum, Unit>, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; -type Tuple = Struct [storable: true, drop: true, dup: true, zero_sized: true]; -type core::panics::PanicResult::<((),)> = Enum, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type NonZero = NonZero [storable: true, drop: true, dup: true, zero_sized: false]; -type core::option::Option:: = Enum [storable: true, drop: true, dup: true, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type Tuple> = Struct> [storable: true, drop: true, dup: true, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type StorageAddress = StorageAddress [storable: true, drop: true, dup: true, zero_sized: false]; -type core::starknet::storage::StoragePointer0Offset:: = Struct [storable: true, drop: true, dup: true, zero_sized: false]; -type BuiltinCosts = BuiltinCosts [storable: true, drop: true, dup: true, zero_sized: false]; -type System = System [storable: true, drop: false, dup: false, zero_sized: false]; -type core::panics::PanicResult::<(core::array::Span::,)> = Enum>, Tuple>> [storable: true, drop: true, dup: false, zero_sized: false]; -type Const = Const [storable: false, drop: false, dup: false, zero_sized: false]; -type GasBuiltin = GasBuiltin [storable: true, drop: false, dup: false, zero_sized: false]; - -libfunc revoke_ap_tracking = revoke_ap_tracking; -libfunc withdraw_gas = withdraw_gas; -libfunc branch_align = branch_align; -libfunc struct_deconstruct> = struct_deconstruct>; -libfunc store_temp = store_temp; -libfunc array_snapshot_pop_front = array_snapshot_pop_front; -libfunc drop>> = drop>>; -libfunc drop> = drop>; -libfunc array_new = array_new; -libfunc const_as_immediate> = const_as_immediate>; -libfunc store_temp = store_temp; -libfunc array_append = array_append; -libfunc struct_construct = struct_construct; -libfunc struct_construct>> = struct_construct>>; -libfunc enum_init,)>, 1> = enum_init,)>, 1>; -libfunc store_temp = store_temp; -libfunc store_temp = store_temp; -libfunc store_temp,)>> = store_temp,)>>; -libfunc get_builtin_costs = get_builtin_costs; -libfunc store_temp = store_temp; -libfunc withdraw_gas_all = withdraw_gas_all; -libfunc storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240> = storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>; -libfunc struct_construct> = struct_construct>; -libfunc snapshot_take> = snapshot_take>; -libfunc drop> = drop>; -libfunc struct_deconstruct> = struct_deconstruct>; -libfunc rename = rename; -libfunc storage_address_from_base = storage_address_from_base; -libfunc const_as_immediate> = const_as_immediate>; -libfunc store_temp = store_temp; -libfunc store_temp = store_temp; -libfunc storage_read_syscall = storage_read_syscall; -libfunc contract_address_try_from_felt252 = contract_address_try_from_felt252; -libfunc contract_address_to_felt252 = contract_address_to_felt252; -libfunc snapshot_take> = snapshot_take>; -libfunc drop> = drop>; -libfunc struct_construct> = struct_construct>; -libfunc struct_construct>> = struct_construct>>; -libfunc enum_init,)>, 0> = enum_init,)>, 0>; -libfunc const_as_immediate> = const_as_immediate>; -libfunc store_temp> = store_temp>; -libfunc jump = jump; -libfunc const_as_immediate> = const_as_immediate>; -libfunc drop> = drop>; -libfunc enable_ap_tracking = enable_ap_tracking; -libfunc unbox = unbox; -libfunc rename = rename; -libfunc enum_init, 0> = enum_init, 0>; -libfunc store_temp>> = store_temp>>; -libfunc store_temp> = store_temp>; -libfunc struct_construct = struct_construct; -libfunc enum_init, 1> = enum_init, 1>; -libfunc enum_match> = enum_match>; -libfunc disable_ap_tracking = disable_ap_tracking; -libfunc drop = drop; -libfunc dup = dup; -libfunc felt252_is_zero = felt252_is_zero; -libfunc const_as_immediate> = const_as_immediate>; -libfunc drop> = drop>; -libfunc struct_construct> = struct_construct>; -libfunc snapshot_take> = snapshot_take>; -libfunc function_call::assert_only_owner> = function_call::assert_only_owner>; -libfunc enum_match> = enum_match>; -libfunc drop> = drop>; -libfunc store_temp = store_temp; -libfunc function_call::_transfer_ownership> = function_call::_transfer_ownership>; -libfunc enum_match, ())>> = enum_match, ())>>; -libfunc drop, Unit>> = drop, Unit>>; -libfunc struct_deconstruct>> = struct_deconstruct>>; -libfunc drop = drop; -libfunc drop> = drop>; -libfunc drop = drop; -libfunc const_as_immediate> = const_as_immediate>; -libfunc contract_address_const<0> = contract_address_const<0>; -libfunc store_temp>> = store_temp>>; -libfunc enum_init>, 0> = enum_init>, 0>; -libfunc store_temp>> = store_temp>>; -libfunc enum_init>, 1> = enum_init>, 1>; -libfunc enum_match>> = enum_match>>; -libfunc store_temp> = store_temp>; -libfunc function_call> = function_call>; -libfunc enum_match, core::option::Option::>)>> = enum_match, core::option::Option::>)>>; -libfunc struct_deconstruct, core::option::Option::>>> = struct_deconstruct, core::option::Option::>>>; -libfunc store_temp>> = store_temp>>; -libfunc enum_init>, 1> = enum_init>, 1>; -libfunc enum_match>> = enum_match>>; -libfunc struct_construct = struct_construct; -libfunc function_call = function_call; -libfunc enum_match> = enum_match>; -libfunc drop> = drop>; -libfunc get_execution_info_v2_syscall = get_execution_info_v2_syscall; -libfunc store_temp> = store_temp>; -libfunc unbox = unbox; -libfunc struct_deconstruct = struct_deconstruct; -libfunc drop> = drop>; -libfunc drop> = drop>; -libfunc drop = drop; -libfunc const_as_immediate> = const_as_immediate>; -libfunc enum_init, 1> = enum_init, 1>; -libfunc store_temp> = store_temp>; -libfunc felt252_sub = felt252_sub; -libfunc struct_construct> = struct_construct>; -libfunc enum_init, 0> = enum_init, 0>; -libfunc const_as_immediate> = const_as_immediate>; -libfunc struct_construct>> = struct_construct>>; -libfunc snapshot_take>> = snapshot_take>>; -libfunc drop>> = drop>>; -libfunc struct_deconstruct>> = struct_deconstruct>>; -libfunc storage_write_syscall = storage_write_syscall; -libfunc struct_construct = struct_construct; -libfunc enum_init = enum_init; -libfunc enum_init = enum_init; -libfunc store_temp = store_temp; -libfunc function_call>> = function_call>>; -libfunc struct_construct, Unit>> = struct_construct, Unit>>; -libfunc enum_init, ())>, 0> = enum_init, ())>, 0>; -libfunc store_temp, ())>> = store_temp, ())>>; -libfunc enum_init, ())>, 1> = enum_init, ())>, 1>; -libfunc dup = dup; -libfunc enum_init>, 0> = enum_init>, 0>; -libfunc struct_construct, core::option::Option::>>> = struct_construct, core::option::Option::>>>; -libfunc enum_init, core::option::Option::>)>, 0> = enum_init, core::option::Option::>)>, 0>; -libfunc store_temp, core::option::Option::>)>> = store_temp, core::option::Option::>)>>; -libfunc const_as_immediate> = const_as_immediate>; -libfunc enum_init, core::option::Option::>)>, 1> = enum_init, core::option::Option::>)>, 1>; -libfunc struct_deconstruct = struct_deconstruct; -libfunc const_as_immediate> = const_as_immediate>; -libfunc call_contract_syscall = call_contract_syscall; -libfunc class_hash_try_from_felt252 = class_hash_try_from_felt252; -libfunc dup = dup; -libfunc class_hash_to_felt252 = class_hash_to_felt252; -libfunc const_as_immediate> = const_as_immediate>; -libfunc library_call_syscall = library_call_syscall; -libfunc replace_class_syscall = replace_class_syscall; -libfunc struct_deconstruct, Unit>> = struct_deconstruct, Unit>>; -libfunc struct_construct> = struct_construct>; -libfunc enum_init, 0> = enum_init, 0>; -libfunc store_temp> = store_temp>; -libfunc enum_init, 1> = enum_init, 1>; -libfunc drop = drop; -libfunc const_as_immediate> = const_as_immediate>; -libfunc drop = drop; -libfunc snapshot_take = snapshot_take; -libfunc drop = drop; -libfunc enum_match = enum_match; -libfunc const_as_immediate> = const_as_immediate>; -libfunc enum_match = enum_match; -libfunc const_as_immediate> = const_as_immediate>; -libfunc dup = dup; -libfunc struct_deconstruct = struct_deconstruct; -libfunc rename = rename; -libfunc emit_event_syscall = emit_event_syscall; - -revoke_ap_tracking() -> (); // 0 -withdraw_gas([0], [1]) { fallthrough([4], [5]) 94([6], [7]) }; // 1 -branch_align() -> (); // 2 -struct_deconstruct>([3]) -> ([8]); // 3 -store_temp([4]) -> ([4]); // 4 -array_snapshot_pop_front([8]) { fallthrough([9], [10]) 21([11]) }; // 5 -branch_align() -> (); // 6 -drop>>([9]) -> (); // 7 -drop>([10]) -> (); // 8 -array_new() -> ([12]); // 9 -const_as_immediate>() -> ([13]); // 10 -store_temp([13]) -> ([13]); // 11 -array_append([12], [13]) -> ([14]); // 12 -struct_construct() -> ([15]); // 13 -struct_construct>>([15], [14]) -> ([16]); // 14 -enum_init,)>, 1>([16]) -> ([17]); // 15 -store_temp([4]) -> ([4]); // 16 -store_temp([5]) -> ([5]); // 17 -store_temp([2]) -> ([2]); // 18 -store_temp,)>>([17]) -> ([17]); // 19 -return([4], [5], [2], [17]); // 20 -branch_align() -> (); // 21 -drop>>([11]) -> (); // 22 -get_builtin_costs() -> ([18]); // 23 -store_temp([18]) -> ([18]); // 24 -withdraw_gas_all([4], [5], [18]) { fallthrough([19], [20]) 81([21], [22]) }; // 25 -branch_align() -> (); // 26 -storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>() -> ([23]); // 27 -struct_construct>([23]) -> ([24]); // 28 -snapshot_take>([24]) -> ([25], [26]); // 29 -drop>([25]) -> (); // 30 -struct_deconstruct>([26]) -> ([27]); // 31 -rename([27]) -> ([28]); // 32 -storage_address_from_base([28]) -> ([29]); // 33 -const_as_immediate>() -> ([30]); // 34 -store_temp([30]) -> ([30]); // 35 -store_temp([29]) -> ([29]); // 36 -store_temp([19]) -> ([19]); // 37 -storage_read_syscall([20], [2], [30], [29]) { fallthrough([31], [32], [33]) 68([34], [35], [36]) }; // 38 -branch_align() -> (); // 39 -store_temp([33]) -> ([33]); // 40 -store_temp([31]) -> ([31]); // 41 -store_temp([32]) -> ([32]); // 42 -contract_address_try_from_felt252([19], [33]) { fallthrough([37], [38]) 58([39]) }; // 43 -branch_align() -> (); // 44 -array_new() -> ([40]); // 45 -contract_address_to_felt252([38]) -> ([41]); // 46 -array_append([40], [41]) -> ([42]); // 47 -snapshot_take>([42]) -> ([43], [44]); // 48 -drop>([43]) -> (); // 49 -struct_construct>([44]) -> ([45]); // 50 -struct_construct>>([45]) -> ([46]); // 51 -enum_init,)>, 0>([46]) -> ([47]); // 52 -store_temp([37]) -> ([37]); // 53 -store_temp([31]) -> ([31]); // 54 -store_temp([32]) -> ([32]); // 55 -store_temp,)>>([47]) -> ([47]); // 56 -return([37], [31], [32], [47]); // 57 -branch_align() -> (); // 58 -array_new() -> ([48]); // 59 -const_as_immediate>() -> ([49]); // 60 -store_temp([49]) -> ([49]); // 61 -array_append([48], [49]) -> ([50]); // 62 -store_temp([39]) -> ([51]); // 63 -store_temp([31]) -> ([52]); // 64 -store_temp([32]) -> ([53]); // 65 -store_temp>([50]) -> ([54]); // 66 -jump() { 73() }; // 67 -branch_align() -> (); // 68 -store_temp([19]) -> ([51]); // 69 -store_temp([34]) -> ([52]); // 70 -store_temp([35]) -> ([53]); // 71 -store_temp>([36]) -> ([54]); // 72 -struct_construct() -> ([55]); // 73 -struct_construct>>([55], [54]) -> ([56]); // 74 -enum_init,)>, 1>([56]) -> ([57]); // 75 -store_temp([51]) -> ([51]); // 76 -store_temp([52]) -> ([52]); // 77 -store_temp([53]) -> ([53]); // 78 -store_temp,)>>([57]) -> ([57]); // 79 -return([51], [52], [53], [57]); // 80 -branch_align() -> (); // 81 -array_new() -> ([58]); // 82 -const_as_immediate>() -> ([59]); // 83 -store_temp([59]) -> ([59]); // 84 -array_append([58], [59]) -> ([60]); // 85 -struct_construct() -> ([61]); // 86 -struct_construct>>([61], [60]) -> ([62]); // 87 -enum_init,)>, 1>([62]) -> ([63]); // 88 -store_temp([21]) -> ([21]); // 89 -store_temp([22]) -> ([22]); // 90 -store_temp([2]) -> ([2]); // 91 -store_temp,)>>([63]) -> ([63]); // 92 -return([21], [22], [2], [63]); // 93 -branch_align() -> (); // 94 -drop>([3]) -> (); // 95 -array_new() -> ([64]); // 96 -const_as_immediate>() -> ([65]); // 97 -store_temp([65]) -> ([65]); // 98 -array_append([64], [65]) -> ([66]); // 99 -struct_construct() -> ([67]); // 100 -struct_construct>>([67], [66]) -> ([68]); // 101 -enum_init,)>, 1>([68]) -> ([69]); // 102 -store_temp([6]) -> ([6]); // 103 -store_temp([7]) -> ([7]); // 104 -store_temp([2]) -> ([2]); // 105 -store_temp,)>>([69]) -> ([69]); // 106 -return([6], [7], [2], [69]); // 107 -revoke_ap_tracking() -> (); // 108 -withdraw_gas([0], [1]) { fallthrough([4], [5]) 262([6], [7]) }; // 109 -branch_align() -> (); // 110 -struct_deconstruct>([3]) -> ([8]); // 111 -enable_ap_tracking() -> (); // 112 -store_temp([4]) -> ([4]); // 113 -array_snapshot_pop_front([8]) { fallthrough([9], [10]) 122([11]) }; // 114 -branch_align() -> (); // 115 -unbox([10]) -> ([12]); // 116 -rename([12]) -> ([13]); // 117 -enum_init, 0>([13]) -> ([14]); // 118 -store_temp>>([9]) -> ([15]); // 119 -store_temp>([14]) -> ([16]); // 120 -jump() { 127() }; // 121 -branch_align() -> (); // 122 -struct_construct() -> ([17]); // 123 -enum_init, 1>([17]) -> ([18]); // 124 -store_temp>>([11]) -> ([15]); // 125 -store_temp>([18]) -> ([16]); // 126 -enum_match>([16]) { fallthrough([19]) 245([20]) }; // 127 -branch_align() -> (); // 128 -contract_address_try_from_felt252([4], [19]) { fallthrough([21], [22]) 241([23]) }; // 129 -branch_align() -> (); // 130 -store_temp([21]) -> ([21]); // 131 -array_snapshot_pop_front([15]) { fallthrough([24], [25]) 150([26]) }; // 132 -branch_align() -> (); // 133 -disable_ap_tracking() -> (); // 134 -drop>>([24]) -> (); // 135 -drop>([25]) -> (); // 136 -drop([22]) -> (); // 137 -array_new() -> ([27]); // 138 -const_as_immediate>() -> ([28]); // 139 -store_temp([28]) -> ([28]); // 140 -array_append([27], [28]) -> ([29]); // 141 -struct_construct() -> ([30]); // 142 -struct_construct>>([30], [29]) -> ([31]); // 143 -enum_init,)>, 1>([31]) -> ([32]); // 144 -store_temp([21]) -> ([21]); // 145 -store_temp([5]) -> ([5]); // 146 -store_temp([2]) -> ([2]); // 147 -store_temp,)>>([32]) -> ([32]); // 148 -return([21], [5], [2], [32]); // 149 -branch_align() -> (); // 150 -disable_ap_tracking() -> (); // 151 -drop>>([26]) -> (); // 152 -get_builtin_costs() -> ([33]); // 153 -store_temp([33]) -> ([33]); // 154 -withdraw_gas_all([21], [5], [33]) { fallthrough([34], [35]) 227([36], [37]) }; // 155 -branch_align() -> (); // 156 -dup([22]) -> ([22], [38]); // 157 -contract_address_to_felt252([38]) -> ([39]); // 158 -store_temp([34]) -> ([34]); // 159 -felt252_is_zero([39]) { fallthrough() 172([40]) }; // 160 -branch_align() -> (); // 161 -drop([22]) -> (); // 162 -array_new() -> ([41]); // 163 -const_as_immediate>() -> ([42]); // 164 -store_temp([42]) -> ([42]); // 165 -array_append([41], [42]) -> ([43]); // 166 -store_temp([34]) -> ([44]); // 167 -store_temp([35]) -> ([45]); // 168 -store_temp([2]) -> ([46]); // 169 -store_temp>([43]) -> ([47]); // 170 -jump() { 219() }; // 171 -branch_align() -> (); // 172 -drop>([40]) -> (); // 173 -struct_construct>() -> ([48]); // 174 -snapshot_take>([48]) -> ([49], [50]); // 175 -store_temp([34]) -> ([34]); // 176 -store_temp([35]) -> ([35]); // 177 -store_temp([2]) -> ([2]); // 178 -function_call::assert_only_owner>([34], [35], [2], [50]) -> ([51], [52], [53], [54]); // 179 -enum_match>([54]) { fallthrough([55]) 210([56]) }; // 180 -branch_align() -> (); // 181 -drop>([55]) -> (); // 182 -store_temp([51]) -> ([51]); // 183 -store_temp([52]) -> ([52]); // 184 -store_temp([53]) -> ([53]); // 185 -store_temp([22]) -> ([22]); // 186 -function_call::_transfer_ownership>([51], [52], [53], [49], [22]) -> ([57], [58], [59], [60]); // 187 -enum_match, ())>>([60]) { fallthrough([61]) 202([62]) }; // 188 -branch_align() -> (); // 189 -drop, Unit>>([61]) -> (); // 190 -array_new() -> ([63]); // 191 -snapshot_take>([63]) -> ([64], [65]); // 192 -drop>([64]) -> (); // 193 -struct_construct>([65]) -> ([66]); // 194 -struct_construct>>([66]) -> ([67]); // 195 -enum_init,)>, 0>([67]) -> ([68]); // 196 -store_temp([57]) -> ([57]); // 197 -store_temp([58]) -> ([58]); // 198 -store_temp([59]) -> ([59]); // 199 -store_temp,)>>([68]) -> ([68]); // 200 -return([57], [58], [59], [68]); // 201 -branch_align() -> (); // 202 -struct_deconstruct>>([62]) -> ([69], [70]); // 203 -drop([69]) -> (); // 204 -store_temp([57]) -> ([44]); // 205 -store_temp([58]) -> ([45]); // 206 -store_temp([59]) -> ([46]); // 207 -store_temp>([70]) -> ([47]); // 208 -jump() { 219() }; // 209 -branch_align() -> (); // 210 -drop([22]) -> (); // 211 -drop>([49]) -> (); // 212 -struct_deconstruct>>([56]) -> ([71], [72]); // 213 -drop([71]) -> (); // 214 -store_temp([51]) -> ([44]); // 215 -store_temp([52]) -> ([45]); // 216 -store_temp([53]) -> ([46]); // 217 -store_temp>([72]) -> ([47]); // 218 -struct_construct() -> ([73]); // 219 -struct_construct>>([73], [47]) -> ([74]); // 220 -enum_init,)>, 1>([74]) -> ([75]); // 221 -store_temp([44]) -> ([44]); // 222 -store_temp([45]) -> ([45]); // 223 -store_temp([46]) -> ([46]); // 224 -store_temp,)>>([75]) -> ([75]); // 225 -return([44], [45], [46], [75]); // 226 -branch_align() -> (); // 227 -drop([22]) -> (); // 228 -array_new() -> ([76]); // 229 -const_as_immediate>() -> ([77]); // 230 -store_temp([77]) -> ([77]); // 231 -array_append([76], [77]) -> ([78]); // 232 -struct_construct() -> ([79]); // 233 -struct_construct>>([79], [78]) -> ([80]); // 234 -enum_init,)>, 1>([80]) -> ([81]); // 235 -store_temp([36]) -> ([36]); // 236 -store_temp([37]) -> ([37]); // 237 -store_temp([2]) -> ([2]); // 238 -store_temp,)>>([81]) -> ([81]); // 239 -return([36], [37], [2], [81]); // 240 -branch_align() -> (); // 241 -drop>>([15]) -> (); // 242 -store_temp([23]) -> ([82]); // 243 -jump() { 249() }; // 244 -branch_align() -> (); // 245 -drop([20]) -> (); // 246 -drop>>([15]) -> (); // 247 -store_temp([4]) -> ([82]); // 248 -disable_ap_tracking() -> (); // 249 -array_new() -> ([83]); // 250 -const_as_immediate>() -> ([84]); // 251 -store_temp([84]) -> ([84]); // 252 -array_append([83], [84]) -> ([85]); // 253 -struct_construct() -> ([86]); // 254 -struct_construct>>([86], [85]) -> ([87]); // 255 -enum_init,)>, 1>([87]) -> ([88]); // 256 -store_temp([82]) -> ([82]); // 257 -store_temp([5]) -> ([5]); // 258 -store_temp([2]) -> ([2]); // 259 -store_temp,)>>([88]) -> ([88]); // 260 -return([82], [5], [2], [88]); // 261 -branch_align() -> (); // 262 -drop>([3]) -> (); // 263 -array_new() -> ([89]); // 264 -const_as_immediate>() -> ([90]); // 265 -store_temp([90]) -> ([90]); // 266 -array_append([89], [90]) -> ([91]); // 267 -struct_construct() -> ([92]); // 268 -struct_construct>>([92], [91]) -> ([93]); // 269 -enum_init,)>, 1>([93]) -> ([94]); // 270 -store_temp([6]) -> ([6]); // 271 -store_temp([7]) -> ([7]); // 272 -store_temp([2]) -> ([2]); // 273 -store_temp,)>>([94]) -> ([94]); // 274 -return([6], [7], [2], [94]); // 275 -revoke_ap_tracking() -> (); // 276 -withdraw_gas([0], [1]) { fallthrough([4], [5]) 363([6], [7]) }; // 277 -branch_align() -> (); // 278 -struct_deconstruct>([3]) -> ([8]); // 279 -store_temp([4]) -> ([4]); // 280 -array_snapshot_pop_front([8]) { fallthrough([9], [10]) 297([11]) }; // 281 -branch_align() -> (); // 282 -drop>>([9]) -> (); // 283 -drop>([10]) -> (); // 284 -array_new() -> ([12]); // 285 -const_as_immediate>() -> ([13]); // 286 -store_temp([13]) -> ([13]); // 287 -array_append([12], [13]) -> ([14]); // 288 -struct_construct() -> ([15]); // 289 -struct_construct>>([15], [14]) -> ([16]); // 290 -enum_init,)>, 1>([16]) -> ([17]); // 291 -store_temp([4]) -> ([4]); // 292 -store_temp([5]) -> ([5]); // 293 -store_temp([2]) -> ([2]); // 294 -store_temp,)>>([17]) -> ([17]); // 295 -return([4], [5], [2], [17]); // 296 -branch_align() -> (); // 297 -drop>>([11]) -> (); // 298 -get_builtin_costs() -> ([18]); // 299 -store_temp([18]) -> ([18]); // 300 -withdraw_gas_all([4], [5], [18]) { fallthrough([19], [20]) 350([21], [22]) }; // 301 -branch_align() -> (); // 302 -struct_construct>() -> ([23]); // 303 -snapshot_take>([23]) -> ([24], [25]); // 304 -store_temp([19]) -> ([19]); // 305 -store_temp([20]) -> ([20]); // 306 -store_temp([2]) -> ([2]); // 307 -function_call::assert_only_owner>([19], [20], [2], [25]) -> ([26], [27], [28], [29]); // 308 -enum_match>([29]) { fallthrough([30]) 338([31]) }; // 309 -branch_align() -> (); // 310 -drop>([30]) -> (); // 311 -contract_address_const<0>() -> ([32]); // 312 -store_temp([26]) -> ([26]); // 313 -store_temp([27]) -> ([27]); // 314 -store_temp([28]) -> ([28]); // 315 -store_temp([32]) -> ([32]); // 316 -function_call::_transfer_ownership>([26], [27], [28], [24], [32]) -> ([33], [34], [35], [36]); // 317 -enum_match, ())>>([36]) { fallthrough([37]) 332([38]) }; // 318 -branch_align() -> (); // 319 -drop, Unit>>([37]) -> (); // 320 -array_new() -> ([39]); // 321 -snapshot_take>([39]) -> ([40], [41]); // 322 -drop>([40]) -> (); // 323 -struct_construct>([41]) -> ([42]); // 324 -struct_construct>>([42]) -> ([43]); // 325 -enum_init,)>, 0>([43]) -> ([44]); // 326 -store_temp([33]) -> ([33]); // 327 -store_temp([34]) -> ([34]); // 328 -store_temp([35]) -> ([35]); // 329 -store_temp,)>>([44]) -> ([44]); // 330 -return([33], [34], [35], [44]); // 331 -branch_align() -> (); // 332 -store_temp([33]) -> ([45]); // 333 -store_temp([34]) -> ([46]); // 334 -store_temp([35]) -> ([47]); // 335 -store_temp>>([38]) -> ([48]); // 336 -jump() { 344() }; // 337 -branch_align() -> (); // 338 -drop>([24]) -> (); // 339 -store_temp([26]) -> ([45]); // 340 -store_temp([27]) -> ([46]); // 341 -store_temp([28]) -> ([47]); // 342 -store_temp>>([31]) -> ([48]); // 343 -enum_init,)>, 1>([48]) -> ([49]); // 344 -store_temp([45]) -> ([45]); // 345 -store_temp([46]) -> ([46]); // 346 -store_temp([47]) -> ([47]); // 347 -store_temp,)>>([49]) -> ([49]); // 348 -return([45], [46], [47], [49]); // 349 -branch_align() -> (); // 350 -array_new() -> ([50]); // 351 -const_as_immediate>() -> ([51]); // 352 -store_temp([51]) -> ([51]); // 353 -array_append([50], [51]) -> ([52]); // 354 -struct_construct() -> ([53]); // 355 -struct_construct>>([53], [52]) -> ([54]); // 356 -enum_init,)>, 1>([54]) -> ([55]); // 357 -store_temp([21]) -> ([21]); // 358 -store_temp([22]) -> ([22]); // 359 -store_temp([2]) -> ([2]); // 360 -store_temp,)>>([55]) -> ([55]); // 361 -return([21], [22], [2], [55]); // 362 -branch_align() -> (); // 363 -drop>([3]) -> (); // 364 -array_new() -> ([56]); // 365 -const_as_immediate>() -> ([57]); // 366 -store_temp([57]) -> ([57]); // 367 -array_append([56], [57]) -> ([58]); // 368 -struct_construct() -> ([59]); // 369 -struct_construct>>([59], [58]) -> ([60]); // 370 -enum_init,)>, 1>([60]) -> ([61]); // 371 -store_temp([6]) -> ([6]); // 372 -store_temp([7]) -> ([7]); // 373 -store_temp([2]) -> ([2]); // 374 -store_temp,)>>([61]) -> ([61]); // 375 -return([6], [7], [2], [61]); // 376 -revoke_ap_tracking() -> (); // 377 -withdraw_gas([0], [1]) { fallthrough([4], [5]) 514([6], [7]) }; // 378 -branch_align() -> (); // 379 -struct_deconstruct>([3]) -> ([8]); // 380 -enable_ap_tracking() -> (); // 381 -store_temp([4]) -> ([4]); // 382 -array_snapshot_pop_front([8]) { fallthrough([9], [10]) 389([11]) }; // 383 -branch_align() -> (); // 384 -enum_init>, 0>([10]) -> ([12]); // 385 -store_temp>>([9]) -> ([13]); // 386 -store_temp>>([12]) -> ([14]); // 387 -jump() { 394() }; // 388 -branch_align() -> (); // 389 -struct_construct() -> ([15]); // 390 -enum_init>, 1>([15]) -> ([16]); // 391 -store_temp>>([11]) -> ([13]); // 392 -store_temp>>([16]) -> ([14]); // 393 -enum_match>>([14]) { fallthrough([17]) 423([18]) }; // 394 -branch_align() -> (); // 395 -disable_ap_tracking() -> (); // 396 -unbox([17]) -> ([19]); // 397 -array_new() -> ([20]); // 398 -struct_construct>([13]) -> ([21]); // 399 -rename([19]) -> ([22]); // 400 -store_temp([4]) -> ([4]); // 401 -store_temp([5]) -> ([5]); // 402 -store_temp>([21]) -> ([21]); // 403 -store_temp>([20]) -> ([20]); // 404 -store_temp([22]) -> ([22]); // 405 -function_call>([4], [5], [21], [20], [22]) -> ([23], [24], [25]); // 406 -enum_match, core::option::Option::>)>>([25]) { fallthrough([26]) 416([27]) }; // 407 -branch_align() -> (); // 408 -struct_deconstruct, core::option::Option::>>>([26]) -> ([28], [29]); // 409 -struct_deconstruct>([28]) -> ([30]); // 410 -store_temp([23]) -> ([31]); // 411 -store_temp([24]) -> ([32]); // 412 -store_temp>>([30]) -> ([33]); // 413 -store_temp>>([29]) -> ([34]); // 414 -jump() { 432() }; // 415 -branch_align() -> (); // 416 -enum_init,)>, 1>([27]) -> ([35]); // 417 -store_temp([23]) -> ([23]); // 418 -store_temp([24]) -> ([24]); // 419 -store_temp([2]) -> ([2]); // 420 -store_temp,)>>([35]) -> ([35]); // 421 -return([23], [24], [2], [35]); // 422 -branch_align() -> (); // 423 -disable_ap_tracking() -> (); // 424 -drop([18]) -> (); // 425 -struct_construct() -> ([36]); // 426 -enum_init>, 1>([36]) -> ([37]); // 427 -store_temp([4]) -> ([31]); // 428 -store_temp([5]) -> ([32]); // 429 -store_temp>>([13]) -> ([33]); // 430 -store_temp>>([37]) -> ([34]); // 431 -enum_match>>([34]) { fallthrough([38]) 499([39]) }; // 432 -branch_align() -> (); // 433 -array_snapshot_pop_front([33]) { fallthrough([40], [41]) 451([42]) }; // 434 -branch_align() -> (); // 435 -drop>>([40]) -> (); // 436 -drop>([41]) -> (); // 437 -drop>([38]) -> (); // 438 -array_new() -> ([43]); // 439 -const_as_immediate>() -> ([44]); // 440 -store_temp([44]) -> ([44]); // 441 -array_append([43], [44]) -> ([45]); // 442 -struct_construct() -> ([46]); // 443 -struct_construct>>([46], [45]) -> ([47]); // 444 -enum_init,)>, 1>([47]) -> ([48]); // 445 -store_temp([31]) -> ([31]); // 446 -store_temp([32]) -> ([32]); // 447 -store_temp([2]) -> ([2]); // 448 -store_temp,)>>([48]) -> ([48]); // 449 -return([31], [32], [2], [48]); // 450 -branch_align() -> (); // 451 -drop>>([42]) -> (); // 452 -get_builtin_costs() -> ([49]); // 453 -store_temp([49]) -> ([49]); // 454 -withdraw_gas_all([31], [32], [49]) { fallthrough([50], [51]) 485([52], [53]) }; // 455 -branch_align() -> (); // 456 -struct_construct>() -> ([54]); // 457 -struct_construct([54]) -> ([55]); // 458 -store_temp([50]) -> ([50]); // 459 -store_temp([51]) -> ([51]); // 460 -store_temp([2]) -> ([2]); // 461 -store_temp>([38]) -> ([38]); // 462 -function_call([50], [51], [2], [55], [38]) -> ([56], [57], [58], [59]); // 463 -enum_match>([59]) { fallthrough([60]) 478([61]) }; // 464 -branch_align() -> (); // 465 -drop>([60]) -> (); // 466 -array_new() -> ([62]); // 467 -snapshot_take>([62]) -> ([63], [64]); // 468 -drop>([63]) -> (); // 469 -struct_construct>([64]) -> ([65]); // 470 -struct_construct>>([65]) -> ([66]); // 471 -enum_init,)>, 0>([66]) -> ([67]); // 472 -store_temp([56]) -> ([56]); // 473 -store_temp([57]) -> ([57]); // 474 -store_temp([58]) -> ([58]); // 475 -store_temp,)>>([67]) -> ([67]); // 476 -return([56], [57], [58], [67]); // 477 -branch_align() -> (); // 478 -enum_init,)>, 1>([61]) -> ([68]); // 479 -store_temp([56]) -> ([56]); // 480 -store_temp([57]) -> ([57]); // 481 -store_temp([58]) -> ([58]); // 482 -store_temp,)>>([68]) -> ([68]); // 483 -return([56], [57], [58], [68]); // 484 -branch_align() -> (); // 485 -drop>([38]) -> (); // 486 -array_new() -> ([69]); // 487 -const_as_immediate>() -> ([70]); // 488 -store_temp([70]) -> ([70]); // 489 -array_append([69], [70]) -> ([71]); // 490 -struct_construct() -> ([72]); // 491 -struct_construct>>([72], [71]) -> ([73]); // 492 -enum_init,)>, 1>([73]) -> ([74]); // 493 -store_temp([52]) -> ([52]); // 494 -store_temp([53]) -> ([53]); // 495 -store_temp([2]) -> ([2]); // 496 -store_temp,)>>([74]) -> ([74]); // 497 -return([52], [53], [2], [74]); // 498 -branch_align() -> (); // 499 -drop([39]) -> (); // 500 -drop>>([33]) -> (); // 501 -array_new() -> ([75]); // 502 -const_as_immediate>() -> ([76]); // 503 -store_temp([76]) -> ([76]); // 504 -array_append([75], [76]) -> ([77]); // 505 -struct_construct() -> ([78]); // 506 -struct_construct>>([78], [77]) -> ([79]); // 507 -enum_init,)>, 1>([79]) -> ([80]); // 508 -store_temp([31]) -> ([31]); // 509 -store_temp([32]) -> ([32]); // 510 -store_temp([2]) -> ([2]); // 511 -store_temp,)>>([80]) -> ([80]); // 512 -return([31], [32], [2], [80]); // 513 -branch_align() -> (); // 514 -drop>([3]) -> (); // 515 -array_new() -> ([81]); // 516 -const_as_immediate>() -> ([82]); // 517 -store_temp([82]) -> ([82]); // 518 -array_append([81], [82]) -> ([83]); // 519 -struct_construct() -> ([84]); // 520 -struct_construct>>([84], [83]) -> ([85]); // 521 -enum_init,)>, 1>([85]) -> ([86]); // 522 -store_temp([6]) -> ([6]); // 523 -store_temp([7]) -> ([7]); // 524 -store_temp([2]) -> ([2]); // 525 -store_temp,)>>([86]) -> ([86]); // 526 -return([6], [7], [2], [86]); // 527 -drop>([3]) -> (); // 528 -storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>() -> ([4]); // 529 -struct_construct>([4]) -> ([5]); // 530 -snapshot_take>([5]) -> ([6], [7]); // 531 -drop>([6]) -> (); // 532 -struct_deconstruct>([7]) -> ([8]); // 533 -rename([8]) -> ([9]); // 534 -storage_address_from_base([9]) -> ([10]); // 535 -const_as_immediate>() -> ([11]); // 536 -store_temp([11]) -> ([11]); // 537 -store_temp([10]) -> ([10]); // 538 -storage_read_syscall([1], [2], [11], [10]) { fallthrough([12], [13], [14]) 627([15], [16], [17]) }; // 539 -branch_align() -> (); // 540 -store_temp([14]) -> ([14]); // 541 -store_temp([12]) -> ([12]); // 542 -store_temp([13]) -> ([13]); // 543 -contract_address_try_from_felt252([0], [14]) { fallthrough([18], [19]) 617([20]) }; // 544 -branch_align() -> (); // 545 -store_temp([18]) -> ([18]); // 546 -get_execution_info_v2_syscall([12], [13]) { fallthrough([21], [22], [23]) 607([24], [25], [26]) }; // 547 -branch_align() -> (); // 548 -store_temp>([23]) -> ([23]); // 549 -unbox([23]) -> ([27]); // 550 -struct_deconstruct([27]) -> ([28], [29], [30], [31], [32]); // 551 -drop>([28]) -> (); // 552 -drop>([29]) -> (); // 553 -drop([31]) -> (); // 554 -drop([32]) -> (); // 555 -store_temp([30]) -> ([30]); // 556 -dup([30]) -> ([30], [33]); // 557 -contract_address_to_felt252([33]) -> ([34]); // 558 -store_temp([21]) -> ([21]); // 559 -store_temp([22]) -> ([22]); // 560 -felt252_is_zero([34]) { fallthrough() 577([35]) }; // 561 -branch_align() -> (); // 562 -drop([19]) -> (); // 563 -drop([30]) -> (); // 564 -array_new() -> ([36]); // 565 -const_as_immediate>() -> ([37]); // 566 -store_temp([37]) -> ([37]); // 567 -array_append([36], [37]) -> ([38]); // 568 -struct_construct() -> ([39]); // 569 -struct_construct>>([39], [38]) -> ([40]); // 570 -enum_init, 1>([40]) -> ([41]); // 571 -store_temp([18]) -> ([18]); // 572 -store_temp([21]) -> ([21]); // 573 -store_temp([22]) -> ([22]); // 574 -store_temp>([41]) -> ([41]); // 575 -return([18], [21], [22], [41]); // 576 -branch_align() -> (); // 577 -drop>([35]) -> (); // 578 -contract_address_to_felt252([30]) -> ([42]); // 579 -contract_address_to_felt252([19]) -> ([43]); // 580 -felt252_sub([42], [43]) -> ([44]); // 581 -store_temp([44]) -> ([44]); // 582 -felt252_is_zero([44]) { fallthrough() 593([45]) }; // 583 -branch_align() -> (); // 584 -struct_construct() -> ([46]); // 585 -struct_construct>([46]) -> ([47]); // 586 -enum_init, 0>([47]) -> ([48]); // 587 -store_temp([18]) -> ([18]); // 588 -store_temp([21]) -> ([21]); // 589 -store_temp([22]) -> ([22]); // 590 -store_temp>([48]) -> ([48]); // 591 -return([18], [21], [22], [48]); // 592 -branch_align() -> (); // 593 -drop>([45]) -> (); // 594 -array_new() -> ([49]); // 595 -const_as_immediate>() -> ([50]); // 596 -store_temp([50]) -> ([50]); // 597 -array_append([49], [50]) -> ([51]); // 598 -struct_construct() -> ([52]); // 599 -struct_construct>>([52], [51]) -> ([53]); // 600 -enum_init, 1>([53]) -> ([54]); // 601 -store_temp([18]) -> ([18]); // 602 -store_temp([21]) -> ([21]); // 603 -store_temp([22]) -> ([22]); // 604 -store_temp>([54]) -> ([54]); // 605 -return([18], [21], [22], [54]); // 606 -branch_align() -> (); // 607 -drop([19]) -> (); // 608 -struct_construct() -> ([55]); // 609 -struct_construct>>([55], [26]) -> ([56]); // 610 -enum_init, 1>([56]) -> ([57]); // 611 -store_temp([18]) -> ([18]); // 612 -store_temp([24]) -> ([24]); // 613 -store_temp([25]) -> ([25]); // 614 -store_temp>([57]) -> ([57]); // 615 -return([18], [24], [25], [57]); // 616 -branch_align() -> (); // 617 -array_new() -> ([58]); // 618 -const_as_immediate>() -> ([59]); // 619 -store_temp([59]) -> ([59]); // 620 -array_append([58], [59]) -> ([60]); // 621 -store_temp([20]) -> ([61]); // 622 -store_temp([12]) -> ([62]); // 623 -store_temp([13]) -> ([63]); // 624 -store_temp>([60]) -> ([64]); // 625 -jump() { 632() }; // 626 -branch_align() -> (); // 627 -store_temp([0]) -> ([61]); // 628 -store_temp([15]) -> ([62]); // 629 -store_temp([16]) -> ([63]); // 630 -store_temp>([17]) -> ([64]); // 631 -struct_construct() -> ([65]); // 632 -struct_construct>>([65], [64]) -> ([66]); // 633 -enum_init, 1>([66]) -> ([67]); // 634 -store_temp([61]) -> ([61]); // 635 -store_temp([62]) -> ([62]); // 636 -store_temp([63]) -> ([63]); // 637 -store_temp>([67]) -> ([67]); // 638 -return([61], [62], [63], [67]); // 639 -storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>() -> ([5]); // 640 -struct_construct>>([5]) -> ([6]); // 641 -snapshot_take>>([6]) -> ([7], [8]); // 642 -drop>>([7]) -> (); // 643 -struct_deconstruct>>([8]) -> ([9]); // 644 -rename([9]) -> ([10]); // 645 -storage_address_from_base([10]) -> ([11]); // 646 -const_as_immediate>() -> ([12]); // 647 -store_temp([12]) -> ([12]); // 648 -store_temp([11]) -> ([11]); // 649 -storage_read_syscall([1], [2], [12], [11]) { fallthrough([13], [14], [15]) 719([16], [17], [18]) }; // 650 -branch_align() -> (); // 651 -store_temp([15]) -> ([15]); // 652 -store_temp([13]) -> ([13]); // 653 -store_temp([14]) -> ([14]); // 654 -contract_address_try_from_felt252([0], [15]) { fallthrough([19], [20]) 707([21]) }; // 655 -branch_align() -> (); // 656 -storage_base_address_const<1239149872729906871793169171313897310809028090219849129902089947133222824240>() -> ([22]); // 657 -dup([4]) -> ([4], [23]); // 658 -contract_address_to_felt252([23]) -> ([24]); // 659 -storage_address_from_base([22]) -> ([25]); // 660 -const_as_immediate>() -> ([26]); // 661 -store_temp([26]) -> ([26]); // 662 -store_temp([25]) -> ([25]); // 663 -store_temp([19]) -> ([19]); // 664 -storage_write_syscall([13], [14], [26], [25], [24]) { fallthrough([27], [28]) 695([29], [30], [31]) }; // 665 -branch_align() -> (); // 666 -struct_construct([20], [4]) -> ([32]); // 667 -enum_init([32]) -> ([33]); // 668 -enum_init([33]) -> ([34]); // 669 -struct_construct>() -> ([35]); // 670 -struct_construct([35]) -> ([36]); // 671 -store_temp([27]) -> ([27]); // 672 -store_temp([28]) -> ([28]); // 673 -store_temp([34]) -> ([34]); // 674 -function_call>>([27], [28], [36], [34]) -> ([37], [38], [39]); // 675 -enum_match>([39]) { fallthrough([40]) 687([41]) }; // 676 -branch_align() -> (); // 677 -drop>([40]) -> (); // 678 -struct_construct() -> ([42]); // 679 -struct_construct, Unit>>([3], [42]) -> ([43]); // 680 -enum_init, ())>, 0>([43]) -> ([44]); // 681 -store_temp([19]) -> ([19]); // 682 -store_temp([37]) -> ([37]); // 683 -store_temp([38]) -> ([38]); // 684 -store_temp, ())>>([44]) -> ([44]); // 685 -return([19], [37], [38], [44]); // 686 -branch_align() -> (); // 687 -drop>([3]) -> (); // 688 -enum_init, ())>, 1>([41]) -> ([45]); // 689 -store_temp([19]) -> ([19]); // 690 -store_temp([37]) -> ([37]); // 691 -store_temp([38]) -> ([38]); // 692 -store_temp, ())>>([45]) -> ([45]); // 693 -return([19], [37], [38], [45]); // 694 -branch_align() -> (); // 695 -drop>([3]) -> (); // 696 -drop([4]) -> (); // 697 -drop([20]) -> (); // 698 -struct_construct() -> ([46]); // 699 -struct_construct>>([46], [31]) -> ([47]); // 700 -enum_init, ())>, 1>([47]) -> ([48]); // 701 -store_temp([19]) -> ([19]); // 702 -store_temp([29]) -> ([29]); // 703 -store_temp([30]) -> ([30]); // 704 -store_temp, ())>>([48]) -> ([48]); // 705 -return([19], [29], [30], [48]); // 706 -branch_align() -> (); // 707 -drop>([3]) -> (); // 708 -drop([4]) -> (); // 709 -array_new() -> ([49]); // 710 -const_as_immediate>() -> ([50]); // 711 -store_temp([50]) -> ([50]); // 712 -array_append([49], [50]) -> ([51]); // 713 -store_temp([21]) -> ([52]); // 714 -store_temp([13]) -> ([53]); // 715 -store_temp([14]) -> ([54]); // 716 -store_temp>([51]) -> ([55]); // 717 -jump() { 726() }; // 718 -branch_align() -> (); // 719 -drop>([3]) -> (); // 720 -drop([4]) -> (); // 721 -store_temp([0]) -> ([52]); // 722 -store_temp([16]) -> ([53]); // 723 -store_temp([17]) -> ([54]); // 724 -store_temp>([18]) -> ([55]); // 725 -struct_construct() -> ([56]); // 726 -struct_construct>>([56], [55]) -> ([57]); // 727 -enum_init, ())>, 1>([57]) -> ([58]); // 728 -store_temp([52]) -> ([52]); // 729 -store_temp([53]) -> ([53]); // 730 -store_temp([54]) -> ([54]); // 731 -store_temp, ())>>([58]) -> ([58]); // 732 -return([52], [53], [54], [58]); // 733 -disable_ap_tracking() -> (); // 734 -withdraw_gas([0], [1]) { fallthrough([5], [6]) 791([7], [8]) }; // 735 -branch_align() -> (); // 736 -dup([4]) -> ([4], [9]); // 737 -store_temp([5]) -> ([5]); // 738 -felt252_is_zero([9]) { fallthrough() 749([10]) }; // 739 -branch_align() -> (); // 740 -drop([4]) -> (); // 741 -enum_init>, 0>([3]) -> ([11]); // 742 -struct_construct, core::option::Option::>>>([2], [11]) -> ([12]); // 743 -enum_init, core::option::Option::>)>, 0>([12]) -> ([13]); // 744 -store_temp([5]) -> ([5]); // 745 -store_temp([6]) -> ([6]); // 746 -store_temp, core::option::Option::>)>>([13]) -> ([13]); // 747 -return([5], [6], [13]); // 748 -branch_align() -> (); // 749 -drop>([10]) -> (); // 750 -struct_deconstruct>([2]) -> ([14]); // 751 -enable_ap_tracking() -> (); // 752 -array_snapshot_pop_front([14]) { fallthrough([15], [16]) 761([17]) }; // 753 -branch_align() -> (); // 754 -unbox([16]) -> ([18]); // 755 -rename([18]) -> ([19]); // 756 -enum_init, 0>([19]) -> ([20]); // 757 -store_temp>>([15]) -> ([21]); // 758 -store_temp>([20]) -> ([22]); // 759 -jump() { 766() }; // 760 -branch_align() -> (); // 761 -struct_construct() -> ([23]); // 762 -enum_init, 1>([23]) -> ([24]); // 763 -store_temp>>([17]) -> ([21]); // 764 -store_temp>([24]) -> ([22]); // 765 -struct_construct>([21]) -> ([25]); // 766 -enum_match>([22]) { fallthrough([26]) 780([27]) }; // 767 -branch_align() -> (); // 768 -disable_ap_tracking() -> (); // 769 -array_append([3], [26]) -> ([28]); // 770 -const_as_immediate>() -> ([29]); // 771 -felt252_sub([4], [29]) -> ([30]); // 772 -store_temp([5]) -> ([5]); // 773 -store_temp([6]) -> ([6]); // 774 -store_temp>([25]) -> ([25]); // 775 -store_temp>([28]) -> ([28]); // 776 -store_temp([30]) -> ([30]); // 777 -function_call>([5], [6], [25], [28], [30]) -> ([31], [32], [33]); // 778 -return([31], [32], [33]); // 779 -branch_align() -> (); // 780 -disable_ap_tracking() -> (); // 781 -drop([4]) -> (); // 782 -drop>([3]) -> (); // 783 -enum_init>, 1>([27]) -> ([34]); // 784 -struct_construct, core::option::Option::>>>([25], [34]) -> ([35]); // 785 -enum_init, core::option::Option::>)>, 0>([35]) -> ([36]); // 786 -store_temp([5]) -> ([5]); // 787 -store_temp([6]) -> ([6]); // 788 -store_temp, core::option::Option::>)>>([36]) -> ([36]); // 789 -return([5], [6], [36]); // 790 -branch_align() -> (); // 791 -drop([4]) -> (); // 792 -drop>([3]) -> (); // 793 -drop>([2]) -> (); // 794 -array_new() -> ([37]); // 795 -const_as_immediate>() -> ([38]); // 796 -store_temp([38]) -> ([38]); // 797 -array_append([37], [38]) -> ([39]); // 798 -struct_construct() -> ([40]); // 799 -struct_construct>>([40], [39]) -> ([41]); // 800 -enum_init, core::option::Option::>)>, 1>([41]) -> ([42]); // 801 -store_temp([7]) -> ([7]); // 802 -store_temp([8]) -> ([8]); // 803 -store_temp, core::option::Option::>)>>([42]) -> ([42]); // 804 -return([7], [8], [42]); // 805 -get_execution_info_v2_syscall([1], [2]) { fallthrough([5], [6], [7]) 936([8], [9], [10]) }; // 806 -branch_align() -> (); // 807 -store_temp>([7]) -> ([7]); // 808 -unbox([7]) -> ([11]); // 809 -struct_deconstruct([11]) -> ([12], [13], [14], [15], [16]); // 810 -drop>([12]) -> (); // 811 -drop>([13]) -> (); // 812 -drop([15]) -> (); // 813 -drop([16]) -> (); // 814 -struct_deconstruct([3]) -> ([17]); // 815 -store_temp([0]) -> ([0]); // 816 -store_temp([5]) -> ([5]); // 817 -store_temp([6]) -> ([6]); // 818 -store_temp([14]) -> ([18]); // 819 -dup([18]) -> ([18], [14]); // 820 -function_call::_transfer_ownership>([0], [5], [6], [17], [18]) -> ([19], [20], [21], [22]); // 821 -enum_match, ())>>([22]) { fallthrough([23]) 927([24]) }; // 822 -branch_align() -> (); // 823 -array_new() -> ([25]); // 824 -const_as_immediate>() -> ([26]); // 825 -snapshot_take>([25]) -> ([27], [28]); // 826 -drop>([27]) -> (); // 827 -struct_construct>([28]) -> ([29]); // 828 -store_temp([26]) -> ([26]); // 829 -call_contract_syscall([20], [21], [14], [26], [29]) { fallthrough([30], [31], [32]) 912([33], [34], [35]) }; // 830 -branch_align() -> (); // 831 -struct_deconstruct>([32]) -> ([36]); // 832 -store_temp>>([36]) -> ([36]); // 833 -store_temp([30]) -> ([30]); // 834 -store_temp([31]) -> ([31]); // 835 -array_snapshot_pop_front([36]) { fallthrough([37], [38]) 898([39]) }; // 836 -branch_align() -> (); // 837 -drop>>([37]) -> (); // 838 -unbox([38]) -> ([40]); // 839 -rename([40]) -> ([41]); // 840 -store_temp([41]) -> ([41]); // 841 -class_hash_try_from_felt252([19], [41]) { fallthrough([42], [43]) 893([44]) }; // 842 -branch_align() -> (); // 843 -dup([43]) -> ([43], [45]); // 844 -class_hash_to_felt252([45]) -> ([46]); // 845 -array_append([4], [46]) -> ([47]); // 846 -const_as_immediate>() -> ([48]); // 847 -snapshot_take>([47]) -> ([49], [50]); // 848 -drop>([49]) -> (); // 849 -struct_construct>([50]) -> ([51]); // 850 -dup([43]) -> ([43], [52]); // 851 -store_temp([48]) -> ([48]); // 852 -store_temp>([51]) -> ([51]); // 853 -store_temp([42]) -> ([42]); // 854 -library_call_syscall([30], [31], [52], [48], [51]) { fallthrough([53], [54], [55]) 882([56], [57], [58]) }; // 855 -branch_align() -> (); // 856 -drop>([55]) -> (); // 857 -store_temp([53]) -> ([53]); // 858 -replace_class_syscall([53], [54], [43]) { fallthrough([59], [60]) 872([61], [62], [63]) }; // 859 -branch_align() -> (); // 860 -struct_deconstruct, Unit>>([23]) -> ([64], [65]); // 861 -drop([65]) -> (); // 862 -struct_construct([64]) -> ([66]); // 863 -struct_construct() -> ([67]); // 864 -struct_construct>([66], [67]) -> ([68]); // 865 -enum_init, 0>([68]) -> ([69]); // 866 -store_temp([42]) -> ([42]); // 867 -store_temp([59]) -> ([59]); // 868 -store_temp([60]) -> ([60]); // 869 -store_temp>([69]) -> ([69]); // 870 -return([42], [59], [60], [69]); // 871 -branch_align() -> (); // 872 -drop, Unit>>([23]) -> (); // 873 -struct_construct() -> ([70]); // 874 -struct_construct>>([70], [63]) -> ([71]); // 875 -enum_init, 1>([71]) -> ([72]); // 876 -store_temp([42]) -> ([42]); // 877 -store_temp([61]) -> ([61]); // 878 -store_temp([62]) -> ([62]); // 879 -store_temp>([72]) -> ([72]); // 880 -return([42], [61], [62], [72]); // 881 -branch_align() -> (); // 882 -drop, Unit>>([23]) -> (); // 883 -drop([43]) -> (); // 884 -struct_construct() -> ([73]); // 885 -struct_construct>>([73], [58]) -> ([74]); // 886 -enum_init, 1>([74]) -> ([75]); // 887 -store_temp([42]) -> ([42]); // 888 -store_temp([56]) -> ([56]); // 889 -store_temp([57]) -> ([57]); // 890 -store_temp>([75]) -> ([75]); // 891 -return([42], [56], [57], [75]); // 892 -branch_align() -> (); // 893 -drop>([4]) -> (); // 894 -drop, Unit>>([23]) -> (); // 895 -store_temp([44]) -> ([76]); // 896 -jump() { 903() }; // 897 -branch_align() -> (); // 898 -drop>>([39]) -> (); // 899 -drop>([4]) -> (); // 900 -drop, Unit>>([23]) -> (); // 901 -store_temp([19]) -> ([76]); // 902 -array_new() -> ([77]); // 903 -const_as_immediate>() -> ([78]); // 904 -store_temp([78]) -> ([78]); // 905 -array_append([77], [78]) -> ([79]); // 906 -store_temp([76]) -> ([80]); // 907 -store_temp([30]) -> ([81]); // 908 -store_temp([31]) -> ([82]); // 909 -store_temp>([79]) -> ([83]); // 910 -jump() { 919() }; // 911 -branch_align() -> (); // 912 -drop>([4]) -> (); // 913 -drop, Unit>>([23]) -> (); // 914 -store_temp([19]) -> ([80]); // 915 -store_temp([33]) -> ([81]); // 916 -store_temp([34]) -> ([82]); // 917 -store_temp>([35]) -> ([83]); // 918 -struct_construct() -> ([84]); // 919 -struct_construct>>([84], [83]) -> ([85]); // 920 -enum_init, 1>([85]) -> ([86]); // 921 -store_temp([80]) -> ([80]); // 922 -store_temp([81]) -> ([81]); // 923 -store_temp([82]) -> ([82]); // 924 -store_temp>([86]) -> ([86]); // 925 -return([80], [81], [82], [86]); // 926 -branch_align() -> (); // 927 -drop>([4]) -> (); // 928 -drop([14]) -> (); // 929 -enum_init, 1>([24]) -> ([87]); // 930 -store_temp([19]) -> ([19]); // 931 -store_temp([20]) -> ([20]); // 932 -store_temp([21]) -> ([21]); // 933 -store_temp>([87]) -> ([87]); // 934 -return([19], [20], [21], [87]); // 935 -branch_align() -> (); // 936 -drop>([4]) -> (); // 937 -drop([3]) -> (); // 938 -struct_construct() -> ([88]); // 939 -struct_construct>>([88], [10]) -> ([89]); // 940 -enum_init, 1>([89]) -> ([90]); // 941 -store_temp([0]) -> ([0]); // 942 -store_temp([8]) -> ([8]); // 943 -store_temp([9]) -> ([9]); // 944 -store_temp>([90]) -> ([90]); // 945 -return([0], [8], [9], [90]); // 946 -array_new() -> ([4]); // 947 -array_new() -> ([5]); // 948 -snapshot_take([3]) -> ([6], [7]); // 949 -drop([6]) -> (); // 950 -enum_match([7]) -> ([8]); // 951 -branch_align() -> (); // 952 -const_as_immediate>() -> ([9]); // 953 -store_temp([9]) -> ([9]); // 954 -array_append([4], [9]) -> ([10]); // 955 -enum_match([8]) -> ([11]); // 956 -branch_align() -> (); // 957 -const_as_immediate>() -> ([12]); // 958 -store_temp([12]) -> ([12]); // 959 -array_append([10], [12]) -> ([13]); // 960 -dup([11]) -> ([11], [14]); // 961 -struct_deconstruct([14]) -> ([15], [16]); // 962 -drop([16]) -> (); // 963 -rename([15]) -> ([17]); // 964 -contract_address_to_felt252([17]) -> ([18]); // 965 -array_append([5], [18]) -> ([19]); // 966 -struct_deconstruct([11]) -> ([20], [21]); // 967 -drop([20]) -> (); // 968 -rename([21]) -> ([22]); // 969 -contract_address_to_felt252([22]) -> ([23]); // 970 -array_append([19], [23]) -> ([24]); // 971 -snapshot_take>([13]) -> ([25], [26]); // 972 -drop>([25]) -> (); // 973 -snapshot_take>([24]) -> ([27], [28]); // 974 -drop>([27]) -> (); // 975 -struct_construct>([26]) -> ([29]); // 976 -struct_construct>([28]) -> ([30]); // 977 -store_temp>([29]) -> ([29]); // 978 -store_temp>([30]) -> ([30]); // 979 -emit_event_syscall([0], [1], [29], [30]) { fallthrough([31], [32]) 989([33], [34], [35]) }; // 980 -branch_align() -> (); // 981 -struct_construct() -> ([36]); // 982 -struct_construct>([2], [36]) -> ([37]); // 983 -enum_init, 0>([37]) -> ([38]); // 984 -store_temp([31]) -> ([31]); // 985 -store_temp([32]) -> ([32]); // 986 -store_temp>([38]) -> ([38]); // 987 -return([31], [32], [38]); // 988 -branch_align() -> (); // 989 -drop([2]) -> (); // 990 -struct_construct() -> ([39]); // 991 -struct_construct>>([39], [35]) -> ([40]); // 992 -enum_init, 1>([40]) -> ([41]); // 993 -store_temp([33]) -> ([33]); // 994 -store_temp([34]) -> ([34]); // 995 -store_temp>([41]) -> ([41]); // 996 -return([33], [34], [41]); // 997 - -contracts::components::ownable::ownable_component::__wrapper__Ownable__owner::@0([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); -contracts::components::ownable::ownable_component::__wrapper__Ownable__transfer_ownership::@108([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); -contracts::components::ownable::ownable_component::__wrapper__Ownable__renounce_ownership::@276([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); -contracts::uninitialized_account::UninitializedAccount::__wrapper__constructor@377([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: core::array::Span::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(core::array::Span::,)>); -contracts::components::ownable::ownable_component::InternalImpl::::assert_only_owner@528([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: contracts::components::ownable::ownable_component::ComponentState::) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<((),)>); -contracts::components::ownable::ownable_component::InternalImpl::::_transfer_ownership@640([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: contracts::components::ownable::ownable_component::ComponentState::, [4]: ContractAddress) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(contracts::components::ownable::ownable_component::ComponentState::, ())>); -core::array::deserialize_array_helper::@734([0]: RangeCheck, [1]: GasBuiltin, [2]: core::array::Span::, [3]: Array, [4]: felt252) -> (RangeCheck, GasBuiltin, core::panics::PanicResult::<(core::array::Span::, core::option::Option::>)>); -contracts::uninitialized_account::UninitializedAccount::constructor@806([0]: RangeCheck, [1]: GasBuiltin, [2]: System, [3]: contracts::uninitialized_account::UninitializedAccount::ContractState, [4]: Array) -> (RangeCheck, GasBuiltin, System, core::panics::PanicResult::<(contracts::uninitialized_account::UninitializedAccount::ContractState, ())>); -contracts::uninitialized_account::UninitializedAccount::ContractStateEventEmitter::emit::>@947([0]: GasBuiltin, [1]: System, [2]: contracts::uninitialized_account::UninitializedAccount::ContractState, [3]: contracts::uninitialized_account::UninitializedAccount::Event) -> (GasBuiltin, System, core::panics::PanicResult::<(contracts::uninitialized_account::UninitializedAccount::ContractState, ())>); diff --git a/crates/ef-testing/src/evm_sequencer/account/mod.rs b/crates/ef-testing/src/evm_sequencer/account/mod.rs index 52691a9c..d65da3a2 100644 --- a/crates/ef-testing/src/evm_sequencer/account/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/account/mod.rs @@ -7,7 +7,7 @@ use crate::starknet_storage; use alloy_consensus::constants::KECCAK_EMPTY; use alloy_primitives::keccak256; use alloy_primitives::{Address, U256}; -use blockifier::abi::{abi_utils::get_storage_var_address, sierra_types::next_storage_key}; +use starknet_api::abi::abi_utils::get_storage_var_address; use ef_tests::models::Account; use revm_interpreter::analysis::to_analysed; use revm_primitives::Bytecode; @@ -105,7 +105,7 @@ impl KakarotAccount { let code_hash_values = split_u256(code_hash); let code_hash_low_key = get_storage_var_address(ACCOUNT_CODE_HASH, &[]); - let code_hash_high_key = next_storage_key(&code_hash_low_key)?; + let code_hash_high_key = code_hash_low_key.next_storage_key()?; storage.extend([ (code_hash_low_key, Felt::from(code_hash_values[0])), (code_hash_high_key, Felt::from(code_hash_values[1])), @@ -143,7 +143,7 @@ impl KakarotAccount { let keys = split_u256(*k).map(Into::into); let values = split_u256(*v).map(Into::::into); let low_key = get_storage_var_address(ACCOUNT_STORAGE, &keys); - let high_key = next_storage_key(&low_key).unwrap(); // can fail only if low is the max key + let high_key = low_key.next_storage_key().unwrap(); // can fail only if low is the max key vec![(low_key, values[0]), (high_key, values[1])] }) .collect(); diff --git a/crates/ef-testing/src/evm_sequencer/constants.rs b/crates/ef-testing/src/evm_sequencer/constants.rs index 057c7acd..69c14387 100644 --- a/crates/ef-testing/src/evm_sequencer/constants.rs +++ b/crates/ef-testing/src/evm_sequencer/constants.rs @@ -7,11 +7,9 @@ use serde::de::DeserializeOwned; use starknet::core::types::contract::CompiledClass; use starknet::signers::VerifyingKey; use starknet::{core::types::contract::legacy::LegacyContractClass, signers::SigningKey}; -use starknet_api::felt; use starknet_api::{ contract_address, - core::{ClassHash, ContractAddress, PatriciaKey}, - patricia_key, + core::{ClassHash, ContractAddress}, }; use starknet_crypto::Felt; diff --git a/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs b/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs index 567dd669..e1c670ba 100644 --- a/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs @@ -20,11 +20,8 @@ use crate::{ use alloy_primitives::Address; use alloy_primitives::Bytes; use alloy_primitives::U256; +use starknet_api::abi::abi_utils::{get_fee_token_var_address, get_storage_var_address}; use blockifier::{ - abi::{ - abi_utils::{get_fee_token_var_address, get_storage_var_address}, - sierra_types::next_storage_key, - }, execution::errors::EntryPointExecutionError, state::state_api::{State as _, StateReader as _, StateResult}, transaction::{ @@ -112,7 +109,7 @@ impl Evm for KakarotSequencer { .set_storage_at(kakarot_address, basefee_address, low_fee.into())?; self.state_mut().set_storage_at( kakarot_address, - next_storage_key(&basefee_address)?, + basefee_address.next_storage_key()?, high_fee.into(), )?; @@ -126,7 +123,7 @@ impl Evm for KakarotSequencer { )?; self.state_mut().set_storage_at( kakarot_address, - next_storage_key(&prev_randao_address)?, + prev_randao_address.next_storage_key()?, high_prev_randao.into(), )?; @@ -187,7 +184,7 @@ impl Evm for KakarotSequencer { // Initialize the balance storage var. let balance_key_low = get_fee_token_var_address(starknet_address); - let balance_key_high = next_storage_key(&balance_key_low)?; + let balance_key_high = balance_key_low.next_storage_key()?; storage.append(&mut vec![ (balance_key_low, balance_values[0].into()), (balance_key_high, balance_values[1].into()), @@ -198,7 +195,7 @@ impl Evm for KakarotSequencer { "ERC20_allowances", &[*starknet_address.0.key(), *KAKAROT_ADDRESS.0.key()], ); - let allowance_key_high = next_storage_key(&allowance_key_low)?; + let allowance_key_high = allowance_key_low.next_storage_key()?; storage.append(&mut vec![ (allowance_key_low, u128::MAX.into()), (allowance_key_high, u128::MAX.into()), @@ -216,7 +213,7 @@ impl Evm for KakarotSequencer { fn storage_at(&mut self, evm_address: &Address, key: U256) -> StateResult { let keys = split_u256(key).map(Into::into); let key_low = get_storage_var_address(ACCOUNT_STORAGE, &keys); - let key_high = next_storage_key(&key_low)?; + let key_high = key_low.next_storage_key()?; let starknet_address = self.compute_starknet_address(evm_address)?; diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index 45c7c6cc..a78085af 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -8,36 +8,31 @@ use crate::evm_sequencer::{ ACCOUNT_PUBLIC_KEY, ERC20_BALANCES, KAKAROT_ACCOUNT_CONTRACT_CLASS_HASH, KAKAROT_BLOCK_GAS_LIMIT, KAKAROT_CHAIN_ID, KAKAROT_NATIVE_TOKEN_ADDRESS, KAKAROT_UNINITIALIZED_ACCOUNT_CLASS_HASH, OWNABLE_OWNER, - }, - ACCOUNT_CONTRACT_CLASS, ACCOUNT_CONTRACT_CLASS_HASH, BLOCK_GAS_LIMIT, CHAIN_ID, - ETH_FEE_TOKEN_ADDRESS, FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, - KAKAROT_CLASS, KAKAROT_CLASS_HASH, KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, + }, ACCOUNT_CONTRACT_CLASS_HASH, BLOCK_GAS_LIMIT, CHAIN_ID, + ETH_FEE_TOKEN_ADDRESS, FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, KAKAROT_CLASS_HASH, KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, OPENZEPPELIN_ACCOUNT_CLASS_HASH, RELAYER_ADDRESS, RELAYER_BALANCE, RELAYER_VERIFYING_KEY, - STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS, UNINITIALIZED_ACCOUNT_CLASS_HASH, + STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS_HASH, }, types::contract_class::CasmContractClassWrapper, utils::compute_starknet_address, }; -use alloy_primitives::Address; -use blockifier::blockifier::block::BlockInfo; -use starknet_api::block::{GasPrices, GasPriceVector}; +use starknet_api::block::{BlockInfo, GasPrices, GasPriceVector}; use blockifier::context::ChainInfo; use blockifier::context::{BlockContext, FeeTokenAddresses}; use blockifier::versioned_constants::VersionedConstants; use blockifier::{ - execution::contract_class::{ContractClass, ContractClassV0, ContractClassV1}, + execution::contract_class::{RunnableCompiledClass, CompiledClassV0, CompiledClassV1}, state::state_api::StateResult, }; use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::types::errors::program_errors::ProgramError; -use reth_primitives::Address; -use sequencer::{native::class_from_json_str, sequencer::Sequencer, state::State}; +use alloy_primitives::Address; +use sequencer::{sequencer::Sequencer, state::State}; use starknet::core::types::contract::{legacy::LegacyContractClass, CompiledClass}; use starknet_api::{ block::{BlockNumber, BlockTimestamp}, core::{ChainId, ClassHash, ContractAddress}, }; -use std::num::NonZeroU128; #[cfg(feature = "v0")] use crate::evm_sequencer::constants::{ @@ -187,18 +182,18 @@ impl DerefMut for KakarotSequencer { pub fn convert_contract_class_v0( class: &LegacyContractClass, -) -> Result { - Result::::Ok(ContractClass::V0( - ContractClassV0::try_from_json_string( +) -> Result { + Result::::Ok(RunnableCompiledClass::V0( + CompiledClassV0::try_from_json_string( &serde_json::to_string(class).map_err(ProgramError::Parse)?, )?, )) } -pub fn convert_contract_class_v1(class: &CompiledClass) -> Result { +pub fn convert_contract_class_v1(class: &CompiledClass) -> Result { let casm_contract_class = CasmContractClassWrapper::try_from(class)?; let casm_contract_class: CasmContractClass = casm_contract_class.into(); - Ok(ContractClass::V1(ContractClassV1::try_from( + Ok(RunnableCompiledClass::V1(CompiledClassV1::try_from( casm_contract_class, )?)) } diff --git a/crates/ef-testing/src/models/result.rs b/crates/ef-testing/src/models/result.rs index 391de0c3..52c280e0 100644 --- a/crates/ef-testing/src/models/result.rs +++ b/crates/ef-testing/src/models/result.rs @@ -81,7 +81,7 @@ impl TryFrom<&EventData> for EVMOutput { #[cfg(target_os = "macos")] mod debug_ram { use std::mem; - use std::ptr; + #[link(name = "c")] extern "C" { @@ -146,7 +146,7 @@ pub(crate) fn extract_output_and_log_execution_result( TransactionExecutionResult::Ok(info) => { /* trunk-ignore(clippy/option_if_let_else) */ if let Some(err) = info.revert_error.as_ref() { - warn!("{} reverted:\n{}", case, err.replace("\\n", "\n")); + warn!("{} reverted:\n{}", case, err.to_string()); return None; } diff --git a/crates/ef-testing/src/test_utils/mod.rs b/crates/ef-testing/src/test_utils/mod.rs index e0231cdf..3b013066 100644 --- a/crates/ef-testing/src/test_utils/mod.rs +++ b/crates/ef-testing/src/test_utils/mod.rs @@ -23,14 +23,12 @@ pub fn setup() { pub struct TestMonitor { thresholds: Vec, // thresholds in seconds - last_threshold: u64, // last reported threshold } impl TestMonitor { pub fn new(thresholds: Vec) -> Self { TestMonitor { - thresholds: thresholds, - last_threshold: 0, + thresholds, } } From ff7b32b501fddb2fd9655dd47578a315f623b5ee Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 4 Dec 2024 15:25:35 +0800 Subject: [PATCH 41/53] restore native feature --- .../ef-testing/src/evm_sequencer/constants.rs | 1 - .../src/evm_sequencer/evm_state/mod.rs | 1 - .../src/evm_sequencer/sequencer/mod.rs | 3 - crates/sequencer/src/native.rs | 92 ++++++++++--------- crates/sequencer/src/sequencer.rs | 22 +++-- crates/sequencer/src/state.rs | 4 +- 6 files changed, 64 insertions(+), 59 deletions(-) diff --git a/crates/ef-testing/src/evm_sequencer/constants.rs b/crates/ef-testing/src/evm_sequencer/constants.rs index 69c14387..b2ec9a71 100644 --- a/crates/ef-testing/src/evm_sequencer/constants.rs +++ b/crates/ef-testing/src/evm_sequencer/constants.rs @@ -21,7 +21,6 @@ where } pub fn get_raw_contract_class(contract_path: &str) -> String { - println!("path: {:?}", contract_path); fs::read_to_string(contract_path).unwrap() } diff --git a/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs b/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs index e1c670ba..5a04f2c7 100644 --- a/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs @@ -103,7 +103,6 @@ impl Evm for KakarotSequencer { // Set the base fee at index 'current_block' let [low_fee, high_fee] = split_u256(base_fee); let key = Felt::from_bytes_be_slice(b"current_block"); - println!("key: {:?}", key); let basefee_address = get_storage_var_address(KAKAROT_BASE_FEE, &[key]); self.state_mut() .set_storage_at(kakarot_address, basefee_address, low_fee.into())?; diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index a78085af..521e3dd0 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -243,9 +243,6 @@ lazy_static! { let kakarot_json = CLASS_HASH_TO_JSON_CLASS.get(&KAKAROT_CLASS_HASH).unwrap(); let account_json = CLASS_HASH_TO_JSON_CLASS.get(&ACCOUNT_CONTRACT_CLASS_HASH).unwrap(); let uninitialized_json = CLASS_HASH_TO_JSON_CLASS.get(&UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap(); - println!("Got uninitialized account's json of length {}", uninitialized_json.len()); - println!("Got account's json of length {}", account_json.len()); - println!("Got kakarot's json of length {}", kakarot_json.len()); let account_class = class_from_json_str(account_json, *ACCOUNT_CONTRACT_CLASS_HASH).unwrap_or_else(|err| panic!("{}", err)); let uninitialized_class = class_from_json_str(uninitialized_json, *UNINITIALIZED_ACCOUNT_CLASS_HASH).unwrap_or_else(|err| panic!("{}", err)); let kakarot_class = class_from_json_str(kakarot_json, *KAKAROT_CLASS_HASH).unwrap_or_else(|err| panic!("{}", err)); diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index c4e42528..5f5fe59d 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -2,9 +2,9 @@ use blockifier::execution::contract_class::{ CompiledClassV0, CompiledClassV1, RunnableCompiledClass, }; use blockifier::execution::native::contract_class::NativeCompiledClassV1; -use cairo_lang_starknet_classes::contract_class::ContractClass; +use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; +use cairo_lang_starknet_classes::contract_class::ContractClass as SierraContractClass; use cairo_native::executor::AotContractExecutor; -use cairo_native::OptLevel; use starknet_api::core::ClassHash; use lazy_static::lazy_static; @@ -36,69 +36,79 @@ fn setup_native_cache_dir() -> PathBuf { /// Load a compiled native contract into memory /// /// Tries to load the compiled contract class from library_output_path if it -/// exists, otherwise it will compile the raw_contract_class, load it into memory +/// exists, otherwise it will compile the raw_sierra_class, load it into memory /// and save the compilation artifact to library_output_path. fn native_try_from_json_string( - raw_contract_class: &str, + raw_sierra_class: &str, library_output_path: &PathBuf, ) -> Result> { - let sierra_contract_class: ContractClass = serde_json::from_str(raw_contract_class)?; + let maybe_cached_executor = AotContractExecutor::load(library_output_path); - let compiled_class = serde_json::from_str(raw_contract_class)?; + // see blockifier/src/test_utils/struct_impls.rs + let sierra_contract_class: SierraContractClass = + serde_json::from_str(raw_sierra_class).unwrap(); - let sierra_program = sierra_contract_class.extract_sierra_program()?; + let sierra_program = sierra_contract_class + .extract_sierra_program() + .expect("Cannot extract sierra program from sierra contract class"); + + // Compile the sierra contract class into casm + let casm_contract_class = + CasmContractClass::from_contract_class(sierra_contract_class.clone(), false, usize::MAX) + .expect("Cannot compile sierra contract class into casm contract class"); + let casm = CompiledClassV1::try_from(casm_contract_class) + .expect("Cannot get CompiledClassV1 from CasmContractClass"); - let maybe_cached_executor = AotContractExecutor::load(library_output_path); if let Ok(executor) = maybe_cached_executor { - println!("Loaded cached executor"); - let native_class = NativeCompiledClassV1::new(executor, compiled_class); + let native_class = NativeCompiledClassV1::new(executor, casm); return Ok(native_class); } println!("Creating new executor"); + let start_time = std::time::Instant::now(); let mut executor = AotContractExecutor::new( &sierra_program, &sierra_contract_class.entry_points_by_type, - OptLevel::Default, - )?; + cairo_native::OptLevel::Default, + ) + .expect("Cannot compile sierra into native"); + let duration = start_time.elapsed(); executor.save(library_output_path)?; - println!("Saved executor to {:?}", library_output_path); + println!("Created and saved AoTExecutor in {:.2?}", duration); - let native_class = NativeCompiledClassV1::new(executor, compiled_class); + let native_class = NativeCompiledClassV1::new(executor, casm); Ok(native_class) } pub fn class_from_json_str( - raw_json: &str, + raw_sierra: &str, class_hash: ClassHash, ) -> Result { - println!("raw json length {}", raw_json.len()); - let class_def = raw_json.to_string(); - println!("class def parsed"); - let class: RunnableCompiledClass = - if let Ok(class) = CompiledClassV0::try_from_json_string(class_def.as_str()) { - class.into() - } else if let Ok(class) = CompiledClassV1::try_from_json_string(class_def.as_str()) { - println!("v1 contract"); - class.into() - } else if let Ok(class) = { - println!("native contract"); - let library_output_path = generate_library_path(class_hash); - let maybe_class = native_try_from_json_string(class_def.as_str(), &library_output_path); - if let Ok(class) = maybe_class { - Ok(class) - } else { - println!( - "Native contract failed with error {:?}", - maybe_class.err().unwrap() - ); - Err(()) - } - } { - class.into() + let class_def = raw_sierra.to_string(); + let class: RunnableCompiledClass = if let Ok(class) = + CompiledClassV0::try_from_json_string(class_def.as_str()) + { + class.into() + } else if let Ok(class) = CompiledClassV1::try_from_json_string(class_def.as_str()) { + class.into() + } else if let Ok(class) = { + let library_output_path = generate_library_path(class_hash); + let maybe_class = + native_try_from_json_string(class_def.as_str(), &library_output_path); + if let Ok(class) = maybe_class { + Ok(class) } else { - return Err("not a valid contract class".to_string()); - }; + println!( + "Native contract failed with error {:?}", + maybe_class.err().unwrap() + ); + Err(()) + } + } { + class.into() + } else { + return Err("not a valid contract class".to_string()); + }; Ok(class) } diff --git a/crates/sequencer/src/sequencer.rs b/crates/sequencer/src/sequencer.rs index 4ac14ff5..6db4f8bd 100644 --- a/crates/sequencer/src/sequencer.rs +++ b/crates/sequencer/src/sequencer.rs @@ -119,23 +119,25 @@ mod tests { use std::fmt::Display; use std::fs::File; - use starknet_api::abi::abi_utils::get_storage_var_address; use blockifier::bouncer::BouncerConfig; use blockifier::context::ChainInfo; use blockifier::context::{BlockContext, FeeTokenAddresses}; - use blockifier::execution::contract_class::{RunnableCompiledClass, CompiledClassV0, CompiledClassV1}; + use blockifier::execution::contract_class::{ + CompiledClassV0, CompiledClassV1, RunnableCompiledClass, + }; use blockifier::state::state_api::State as BlockifierState; use blockifier::versioned_constants::VersionedConstants; use starknet::core::types::Felt; use starknet::macros::selector; + use starknet_api::abi::abi_utils::get_storage_var_address; + use starknet_api::block::{BlockInfo, GasPriceVector, GasPrices}; use starknet_api::block::{BlockNumber, BlockTimestamp}; use starknet_api::core::{ChainId, ClassHash, ContractAddress, Nonce}; use starknet_api::executable_transaction::InvokeTransaction; - use starknet_api::transaction::{InvokeTransaction as InvokeTransactionTypes, InvokeTransactionV1}; - use starknet_api::transaction::fields::{ - Calldata, Fee, TransactionSignature, + use starknet_api::transaction::fields::{Calldata, Fee, TransactionSignature}; + use starknet_api::transaction::{ + InvokeTransaction as InvokeTransactionTypes, InvokeTransactionV1, }; - use starknet_api::block::{BlockInfo, GasPrices, GasPriceVector}; use crate::constants::test_constants::{ ETH_FEE_TOKEN_ADDRESS, SEQUENCER_ADDRESS, STRK_FEE_TOKEN_ADDRESS, @@ -255,15 +257,15 @@ mod tests { block_timestamp: BlockTimestamp(1), sequencer_address: *SEQUENCER_ADDRESS, gas_prices: GasPrices { - eth_gas_prices: GasPriceVector{ + eth_gas_prices: GasPriceVector { l1_gas_price: Default::default(), l1_data_gas_price: Default::default(), - l2_gas_price: Default::default() + l2_gas_price: Default::default(), }, - strk_gas_prices: GasPriceVector{ + strk_gas_prices: GasPriceVector { l1_gas_price: Default::default(), l1_data_gas_price: Default::default(), - l2_gas_price: Default::default() + l2_gas_price: Default::default(), }, }, use_kzg_da: false, diff --git a/crates/sequencer/src/state.rs b/crates/sequencer/src/state.rs index 014baa43..33bcf674 100644 --- a/crates/sequencer/src/state.rs +++ b/crates/sequencer/src/state.rs @@ -260,9 +260,7 @@ mod tests { // Then let expected = RunnableCompiledClass::V0(CompiledClassV0::default()); - let actual = state - .get_compiled_class(ClassHash(Felt::ONE)) - .unwrap(); + let actual = state.get_compiled_class(ClassHash(Felt::ONE)).unwrap(); assert_eq!(expected, actual); } From 876c286d1020e3f122c134d8e87a908493121416 Mon Sep 17 00:00:00 2001 From: enitrat Date: Wed, 4 Dec 2024 16:47:41 +0800 Subject: [PATCH 42/53] bump sequencer to get proper versioned constant parsing --- Cargo.lock | 13 +- Cargo.toml | 7 +- .../src/evm_sequencer/account/mod.rs | 4 +- .../src/evm_sequencer/evm_state/mod.rs | 2 +- .../src/evm_sequencer/sequencer/mod.rs | 30 +-- .../resources/versioned_constants.json | 197 +++++++++++------- crates/ef-testing/src/models/result.rs | 1 - crates/ef-testing/src/test_utils/mod.rs | 4 +- crates/sequencer/src/native.rs | 45 ++-- .../src/resources/versioned_constants.json | 197 +++++++++++------- crates/sequencer/src/sequencer.rs | 25 ++- crates/sequencer/src/state.rs | 5 - crates/sequencer/src/transaction.rs | 45 ++-- 13 files changed, 340 insertions(+), 235 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6b460bae..f1ce8ae0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1073,7 +1073,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" dependencies = [ "anyhow", "ark-ec", @@ -3995,9 +3995,10 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "infra_utils" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" dependencies = [ "tokio", + "tracing", ] [[package]] @@ -5169,7 +5170,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" dependencies = [ "clap", "infra_utils", @@ -5184,7 +5185,7 @@ dependencies = [ [[package]] name = "papyrus_proc_macros" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" dependencies = [ "quote", "syn 2.0.90", @@ -8539,7 +8540,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" dependencies = [ "bitvec", "cairo-lang-runner", @@ -8565,7 +8566,7 @@ dependencies = [ [[package]] name = "starknet_sierra_compile" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=e5ed51d697f678ddf27f3b0a5752065a71474022#e5ed51d697f678ddf27f3b0a5752065a71474022" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" dependencies = [ "cairo-lang-sierra", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index d7e2b1c8..fbd712e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,12 +47,13 @@ cairo-lang-starknet-classes = "=2.9.0-dev.0" cairo-lang-sierra = "=2.9.0-dev.0" cairo-native = "0.2.4" cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev="e5ed51d697f678ddf27f3b0a5752065a71474022", default-features = false, features = [ - "testing", "cairo_native", +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev = "af682306b6f91998e83011e9e2c132e07189c51e", default-features = false, features = [ + "testing", + "cairo_native", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev="e5ed51d697f678ddf27f3b0a5752065a71474022" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev = "af682306b6f91998e83011e9e2c132e07189c51e" } # Other async-trait = "0.1" diff --git a/crates/ef-testing/src/evm_sequencer/account/mod.rs b/crates/ef-testing/src/evm_sequencer/account/mod.rs index d65da3a2..7d5b09c4 100644 --- a/crates/ef-testing/src/evm_sequencer/account/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/account/mod.rs @@ -7,11 +7,11 @@ use crate::starknet_storage; use alloy_consensus::constants::KECCAK_EMPTY; use alloy_primitives::keccak256; use alloy_primitives::{Address, U256}; -use starknet_api::abi::abi_utils::get_storage_var_address; use ef_tests::models::Account; use revm_interpreter::analysis::to_analysed; use revm_primitives::Bytecode; use starknet::core::utils::cairo_short_string_to_felt; +use starknet_api::abi::abi_utils::get_storage_var_address; use starknet_api::StarknetApiError; use starknet_api::{core::Nonce, state::StorageKey}; use starknet_crypto::{poseidon_permute_comp, Felt}; @@ -187,8 +187,8 @@ mod tests { use crate::evm_sequencer::constants::storage_variables::ACCOUNT_BYTECODE; use super::*; - use starknet_api::abi::abi_utils::get_storage_var_address; use alloy_primitives::Bytes; + use starknet_api::abi::abi_utils::get_storage_var_address; #[test] fn test_pack_byte_array_to_starkfelt_array() { diff --git a/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs b/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs index 5a04f2c7..8564d5a4 100644 --- a/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/evm_state/mod.rs @@ -20,7 +20,6 @@ use crate::{ use alloy_primitives::Address; use alloy_primitives::Bytes; use alloy_primitives::U256; -use starknet_api::abi::abi_utils::{get_fee_token_var_address, get_storage_var_address}; use blockifier::{ execution::errors::EntryPointExecutionError, state::state_api::{State as _, StateReader as _, StateResult}, @@ -32,6 +31,7 @@ use blockifier::{ use reth_primitives::TransactionSigned; use sequencer::{execution::Execution as _, transaction::BroadcastedTransactionWrapper}; use starknet::core::types::BroadcastedTransaction; +use starknet_api::abi::abi_utils::{get_fee_token_var_address, get_storage_var_address}; use starknet_api::state::StorageKey; use starknet_crypto::Felt; diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index 521e3dd0..0e7e4d2e 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -8,27 +8,29 @@ use crate::evm_sequencer::{ ACCOUNT_PUBLIC_KEY, ERC20_BALANCES, KAKAROT_ACCOUNT_CONTRACT_CLASS_HASH, KAKAROT_BLOCK_GAS_LIMIT, KAKAROT_CHAIN_ID, KAKAROT_NATIVE_TOKEN_ADDRESS, KAKAROT_UNINITIALIZED_ACCOUNT_CLASS_HASH, OWNABLE_OWNER, - }, ACCOUNT_CONTRACT_CLASS_HASH, BLOCK_GAS_LIMIT, CHAIN_ID, - ETH_FEE_TOKEN_ADDRESS, FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, KAKAROT_CLASS_HASH, KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, - OPENZEPPELIN_ACCOUNT_CLASS_HASH, RELAYER_ADDRESS, RELAYER_BALANCE, RELAYER_VERIFYING_KEY, - STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS_HASH, + }, + ACCOUNT_CONTRACT_CLASS_HASH, BLOCK_GAS_LIMIT, CHAIN_ID, ETH_FEE_TOKEN_ADDRESS, + FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, KAKAROT_CLASS_HASH, + KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, OPENZEPPELIN_ACCOUNT_CLASS_HASH, + RELAYER_ADDRESS, RELAYER_BALANCE, RELAYER_VERIFYING_KEY, STRK_FEE_TOKEN_ADDRESS, + UNINITIALIZED_ACCOUNT_CLASS_HASH, }, types::contract_class::CasmContractClassWrapper, utils::compute_starknet_address, }; -use starknet_api::block::{BlockInfo, GasPrices, GasPriceVector}; +use alloy_primitives::Address; use blockifier::context::ChainInfo; use blockifier::context::{BlockContext, FeeTokenAddresses}; use blockifier::versioned_constants::VersionedConstants; use blockifier::{ - execution::contract_class::{RunnableCompiledClass, CompiledClassV0, CompiledClassV1}, + execution::contract_class::{CompiledClassV0, CompiledClassV1, RunnableCompiledClass}, state::state_api::StateResult, }; use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::types::errors::program_errors::ProgramError; -use alloy_primitives::Address; use sequencer::{sequencer::Sequencer, state::State}; use starknet::core::types::contract::{legacy::LegacyContractClass, CompiledClass}; +use starknet_api::block::{BlockInfo, GasPriceVector, GasPrices}; use starknet_api::{ block::{BlockNumber, BlockTimestamp}, core::{ChainId, ClassHash, ContractAddress}, @@ -39,13 +41,13 @@ use crate::evm_sequencer::constants::{ storage_variables::KAKAROT_CAIRO1_HELPERS_CLASS_HASH, CAIRO1_HELPERS_CLASS, CAIRO1_HELPERS_CLASS_HASH, }; -use starknet_api::abi::abi_utils::get_storage_var_address; #[allow(unused_imports)] use blockifier::state::state_api::{ State as BlockifierState, StateReader as BlockifierStateReader, }; use lazy_static::lazy_static; use sequencer::state::State as SequencerState; +use starknet_api::abi::abi_utils::get_storage_var_address; /// Kakarot wrapper around a sequencer. #[derive(Clone)] @@ -108,15 +110,15 @@ impl KakarotSequencer { .try_into() .expect("Failed to convert to ContractAddress"), gas_prices: GasPrices { - eth_gas_prices: GasPriceVector{ + eth_gas_prices: GasPriceVector { l1_gas_price: Default::default(), l1_data_gas_price: Default::default(), - l2_gas_price: Default::default() + l2_gas_price: Default::default(), }, - strk_gas_prices: GasPriceVector{ + strk_gas_prices: GasPriceVector { l1_gas_price: Default::default(), l1_data_gas_price: Default::default(), - l2_gas_price: Default::default() + l2_gas_price: Default::default(), }, }, use_kzg_da: false, @@ -190,7 +192,9 @@ pub fn convert_contract_class_v0( )) } -pub fn convert_contract_class_v1(class: &CompiledClass) -> Result { +pub fn convert_contract_class_v1( + class: &CompiledClass, +) -> Result { let casm_contract_class = CasmContractClassWrapper::try_from(class)?; let casm_contract_class: CasmContractClass = casm_contract_class.into(); Ok(RunnableCompiledClass::V1(CompiledClassV1::try_from( diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json b/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json index 33579709..78c0ed90 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json +++ b/crates/ef-testing/src/evm_sequencer/sequencer/resources/versioned_constants.json @@ -9,31 +9,52 @@ "max_contract_bytecode_size": 81920 }, "invoke_tx_max_n_steps": 50000000, - "l2_resource_gas_costs": { + "execute_max_sierra_gas": 1000000000, + "deprecated_l2_resource_gas_costs": { "gas_per_data_felt": [128, 1000], "event_key_factor": [2, 1], - "gas_per_code_byte": [875, 1000] + "gas_per_code_byte": [32, 1000] + }, + "archival_data_gas_costs": { + "gas_per_data_felt": [5120, 1], + "event_key_factor": [2, 1], + "gas_per_code_byte": [1280, 1] }, "disable_cairo0_redeclaration": true, + "enable_stateful_compression": true, + "allocation_cost": { + "blob_cost": { + "l1_gas": 0, + "l1_data_gas": 32, + "l2_gas": 0 + }, + "gas_cost": { + "l1_gas": 551, + "l1_data_gas": 0, + "l2_gas": 0 + } + }, + "ignore_inner_event_resources": false, + "enable_reverts": true, "max_recursion_depth": 50, "segment_arena_cells": false, "os_constants": { - "block_hash_contract_address": 1, "call_contract_gas_cost": { "entry_point_gas_cost": 1, - "step_gas_cost": 10, - "syscall_base_gas_cost": 1 + "step_gas_cost": 860, + "range_check_gas_cost": 15 }, "constructor_entry_point_selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", "default_entry_point_selector": 0, "deploy_gas_cost": { "entry_point_gas_cost": 1, - "step_gas_cost": 200, - "syscall_base_gas_cost": 1 + "step_gas_cost": 1128, + "range_check_gas_cost": 18, + "pedersen_gas_cost": 7 }, "emit_event_gas_cost": { - "step_gas_cost": 10, - "syscall_base_gas_cost": 1 + "step_gas_cost": 100, + "range_check_gas_cost": 1 }, "entry_point_gas_cost": { "entry_point_initial_budget": 1, @@ -49,20 +70,18 @@ "error_invalid_input_len": "Invalid input length", "error_invalid_argument": "Invalid argument", "error_out_of_gas": "Out of gas", + "error_entry_point_failed": "ENTRYPOINT_FAILED", + "error_entry_point_not_found": "ENTRYPOINT_NOT_FOUND", "execute_entry_point_selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", - "fee_transfer_gas_cost": { - "entry_point_gas_cost": 1, - "step_gas_cost": 100 - }, "get_block_hash_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 104, + "range_check_gas_cost": 2 }, "get_execution_info_gas_cost": { - "step_gas_cost": 10, - "syscall_base_gas_cost": 1 + "step_gas_cost": 100, + "range_check_gas_cost": 1 }, - "initial_gas_cost": { + "default_initial_gas_cost": { "step_gas_cost": 500000000 }, "keccak_gas_cost": { @@ -73,99 +92,113 @@ "l1_gas_index": 0, "l1_handler_version": 0, "l2_gas": "L2_GAS", + "l1_data_gas": "L1_DATA", + "l1_data_gas_index": 2, "l2_gas_index": 1, "library_call_gas_cost": { - "call_contract_gas_cost": 1 + "entry_point_gas_cost": 1, + "step_gas_cost": 836, + "range_check_gas_cost": 15 }, "sha256_process_block_gas_cost": { - "step_gas_cost": 1852, + "step_gas_cost": 1855, "range_check_gas_cost": 65, "bitwise_builtin_gas_cost": 1115, "syscall_base_gas_cost": 1 }, "memory_hole_gas_cost": 10, "nop_entry_point_offset": -1, + "os_contract_addresses": { + "block_hash_contract_address": 1, + "alias_contract_address": 2, + "reserved_contract_address": 3 + }, "range_check_gas_cost": 70, - "pedersen_gas_cost": 0, - "bitwise_builtin_gas_cost": 594, - "ecop_gas_cost": 0, - "poseidon_gas_cost": 0, - "add_mod_gas_cost": 0, - "mul_mod_gas_cost": 0, + "pedersen_gas_cost": 4050, + "bitwise_builtin_gas_cost": 583, + "ecop_gas_cost": 4085, + "poseidon_gas_cost": 491, + "add_mod_gas_cost": 230, + "mul_mod_gas_cost": 604, "replace_class_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 104, + "range_check_gas_cost": 1 }, "secp256k1_add_gas_cost": { "range_check_gas_cost": 29, - "step_gas_cost": 406 + "step_gas_cost": 410 }, "secp256k1_get_point_from_x_gas_cost": { "memory_hole_gas_cost": 20, "range_check_gas_cost": 30, - "step_gas_cost": 391 + "step_gas_cost": 395 }, "secp256k1_get_xy_gas_cost": { "memory_hole_gas_cost": 40, "range_check_gas_cost": 11, - "step_gas_cost": 239 + "step_gas_cost": 207 }, "secp256k1_mul_gas_cost": { "memory_hole_gas_cost": 2, "range_check_gas_cost": 7045, - "step_gas_cost": 76501 + "step_gas_cost": 76505 }, "secp256k1_new_gas_cost": { "memory_hole_gas_cost": 40, "range_check_gas_cost": 35, - "step_gas_cost": 475 + "step_gas_cost": 461 }, "secp256r1_add_gas_cost": { "range_check_gas_cost": 57, - "step_gas_cost": 589 + "step_gas_cost": 593 }, "secp256r1_get_point_from_x_gas_cost": { "memory_hole_gas_cost": 20, "range_check_gas_cost": 44, - "step_gas_cost": 510 + "step_gas_cost": 514 }, "secp256r1_get_xy_gas_cost": { "memory_hole_gas_cost": 40, "range_check_gas_cost": 11, - "step_gas_cost": 241 + "step_gas_cost": 209 }, "secp256r1_mul_gas_cost": { "memory_hole_gas_cost": 2, "range_check_gas_cost": 13961, - "step_gas_cost": 125340 + "step_gas_cost": 125344 }, "secp256r1_new_gas_cost": { "memory_hole_gas_cost": 40, "range_check_gas_cost": 49, - "step_gas_cost": 594 + "step_gas_cost": 580 }, "send_message_to_l1_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 141, + "range_check_gas_cost": 1 }, "sierra_array_len_bound": 4294967296, "step_gas_cost": 100, "storage_read_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 100, + "range_check_gas_cost": 1 }, "storage_write_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 100, + "range_check_gas_cost": 1 + }, + "get_class_hash_at_gas_cost": { + "step_gas_cost": 100, + "range_check_gas_cost": 1 }, "stored_block_hash_buffer": 10, "syscall_base_gas_cost": { "step_gas_cost": 100 }, "transaction_gas_cost": { - "entry_point_gas_cost": 2, - "fee_transfer_gas_cost": 1, - "step_gas_cost": 100 + "step_gas_cost": 4098, + "pedersen_gas_cost": 4, + "range_check_gas_cost": 77, + "poseidon_gas_cost": 11 }, "transfer_entry_point_selector": "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", "validate_declare_entry_point_selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", @@ -180,7 +213,7 @@ "os_resources": { "execute_syscalls": { "CallContract": { - "n_steps": 827, + "n_steps": 866, "builtin_instance_counter": { "range_check_builtin": 15 }, @@ -201,7 +234,7 @@ "n_memory_holes": 0 }, "Deploy": { - "n_steps": 1097, + "n_steps": 1132, "builtin_instance_counter": { "pedersen_builtin": 7, "range_check_builtin": 18 @@ -280,7 +313,7 @@ "n_memory_holes": 0 }, "LibraryCall": { - "n_steps": 818, + "n_steps": 842, "builtin_instance_counter": { "range_check_builtin": 15 }, @@ -294,7 +327,7 @@ "n_memory_holes": 0 }, "ReplaceClass": { - "n_steps": 98, + "n_steps": 104, "builtin_instance_counter": { "range_check_builtin": 1 }, @@ -378,7 +411,7 @@ "n_memory_holes": 0 }, "Sha256ProcessBlock": { - "n_steps": 1855, + "n_steps": 1865, "builtin_instance_counter": { "range_check_builtin": 65, "bitwise_builtin": 1115 @@ -393,6 +426,13 @@ "n_memory_holes": 0 }, "StorageWrite": { + "n_steps": 93, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetClassHashAt": { "n_steps": 89, "builtin_instance_counter": { "range_check_builtin": 1 @@ -404,10 +444,11 @@ "Declare": { "deprecated_resources": { "constant": { - "n_steps": 2973, + "n_steps": 3203, "builtin_instance_counter": { "pedersen_builtin": 16, - "range_check_builtin": 53 + "range_check_builtin": 56, + "poseidon_builtin": 4 }, "n_memory_holes": 0 }, @@ -419,11 +460,11 @@ }, "resources": { "constant": { - "n_steps": 3079, + "n_steps": 3346, "builtin_instance_counter": { "pedersen_builtin": 4, - "range_check_builtin": 58, - "poseidon_builtin": 10 + "range_check_builtin": 64, + "poseidon_builtin": 14 }, "n_memory_holes": 0 }, @@ -437,7 +478,7 @@ "DeployAccount": { "deprecated_resources": { "constant": { - "n_steps": 4015, + "n_steps": 4161, "builtin_instance_counter": { "pedersen_builtin": 23, "range_check_builtin": 72 @@ -454,10 +495,10 @@ }, "resources": { "constant": { - "n_steps": 4137, + "n_steps": 4321, "builtin_instance_counter": { "pedersen_builtin": 11, - "range_check_builtin": 77, + "range_check_builtin": 80, "poseidon_builtin": 10 }, "n_memory_holes": 0 @@ -474,7 +515,7 @@ "InvokeFunction": { "deprecated_resources": { "constant": { - "n_steps": 3763, + "n_steps": 3918, "builtin_instance_counter": { "pedersen_builtin": 14, "range_check_builtin": 69 @@ -491,10 +532,10 @@ }, "resources": { "constant": { - "n_steps": 3904, + "n_steps": 4102, "builtin_instance_counter": { "pedersen_builtin": 4, - "range_check_builtin": 74, + "range_check_builtin": 77, "poseidon_builtin": 11 }, "n_memory_holes": 0 @@ -511,7 +552,7 @@ "L1Handler": { "deprecated_resources": { "constant": { - "n_steps": 1233, + "n_steps": 1279, "builtin_instance_counter": { "pedersen_builtin": 11, "range_check_builtin": 16 @@ -551,18 +592,22 @@ } }, "validate_max_n_steps": 1000000, + "validate_max_sierra_gas": 100000000, + "min_compiler_version_for_sierra_gas": "2.8.0", "vm_resource_fee_cost": { - "add_mod_builtin": [4, 100], - "bitwise_builtin": [16, 100], - "ec_op_builtin": [256, 100], - "ecdsa_builtin": [512, 100], - "keccak_builtin": [512, 100], - "mul_mod_builtin": [4, 100], - "n_steps": [25, 10000], - "output_builtin": [0, 1], - "pedersen_builtin": [8, 100], - "poseidon_builtin": [8, 100], - "range_check_builtin": [4, 100], - "range_check96_builtin": [4, 100] + "builtins": { + "add_mod_builtin": [4, 100], + "bitwise_builtin": [16, 100], + "ec_op_builtin": [256, 100], + "ecdsa_builtin": [512, 100], + "keccak_builtin": [512, 100], + "mul_mod_builtin": [4, 100], + "output_builtin": [0, 1], + "pedersen_builtin": [8, 100], + "poseidon_builtin": [8, 100], + "range_check_builtin": [4, 100], + "range_check96_builtin": [4, 100] + }, + "n_steps": [25, 10000] } } diff --git a/crates/ef-testing/src/models/result.rs b/crates/ef-testing/src/models/result.rs index 52c280e0..bd131b9a 100644 --- a/crates/ef-testing/src/models/result.rs +++ b/crates/ef-testing/src/models/result.rs @@ -81,7 +81,6 @@ impl TryFrom<&EventData> for EVMOutput { #[cfg(target_os = "macos")] mod debug_ram { use std::mem; - #[link(name = "c")] extern "C" { diff --git a/crates/ef-testing/src/test_utils/mod.rs b/crates/ef-testing/src/test_utils/mod.rs index 3b013066..51c4d342 100644 --- a/crates/ef-testing/src/test_utils/mod.rs +++ b/crates/ef-testing/src/test_utils/mod.rs @@ -27,9 +27,7 @@ pub struct TestMonitor { impl TestMonitor { pub fn new(thresholds: Vec) -> Self { - TestMonitor { - thresholds, - } + TestMonitor { thresholds } } pub fn run(&mut self, test_name: &str, test_fn: F) -> T diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index 5f5fe59d..f519dc9e 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -60,6 +60,7 @@ fn native_try_from_json_string( .expect("Cannot get CompiledClassV1 from CasmContractClass"); if let Ok(executor) = maybe_cached_executor { + println!("Loading cached executor"); let native_class = NativeCompiledClassV1::new(executor, casm); return Ok(native_class); } @@ -85,30 +86,28 @@ pub fn class_from_json_str( class_hash: ClassHash, ) -> Result { let class_def = raw_sierra.to_string(); - let class: RunnableCompiledClass = if let Ok(class) = - CompiledClassV0::try_from_json_string(class_def.as_str()) - { - class.into() - } else if let Ok(class) = CompiledClassV1::try_from_json_string(class_def.as_str()) { - class.into() - } else if let Ok(class) = { - let library_output_path = generate_library_path(class_hash); - let maybe_class = - native_try_from_json_string(class_def.as_str(), &library_output_path); - if let Ok(class) = maybe_class { - Ok(class) + let class: RunnableCompiledClass = + if let Ok(class) = CompiledClassV0::try_from_json_string(class_def.as_str()) { + class.into() + } else if let Ok(class) = CompiledClassV1::try_from_json_string(class_def.as_str()) { + class.into() + } else if let Ok(class) = { + let library_output_path = generate_library_path(class_hash); + let maybe_class = native_try_from_json_string(class_def.as_str(), &library_output_path); + if let Ok(class) = maybe_class { + Ok(class) + } else { + println!( + "Native contract failed with error {:?}", + maybe_class.err().unwrap() + ); + Err(()) + } + } { + class.into() } else { - println!( - "Native contract failed with error {:?}", - maybe_class.err().unwrap() - ); - Err(()) - } - } { - class.into() - } else { - return Err("not a valid contract class".to_string()); - }; + return Err("not a valid contract class".to_string()); + }; Ok(class) } diff --git a/crates/sequencer/src/resources/versioned_constants.json b/crates/sequencer/src/resources/versioned_constants.json index 33579709..78c0ed90 100644 --- a/crates/sequencer/src/resources/versioned_constants.json +++ b/crates/sequencer/src/resources/versioned_constants.json @@ -9,31 +9,52 @@ "max_contract_bytecode_size": 81920 }, "invoke_tx_max_n_steps": 50000000, - "l2_resource_gas_costs": { + "execute_max_sierra_gas": 1000000000, + "deprecated_l2_resource_gas_costs": { "gas_per_data_felt": [128, 1000], "event_key_factor": [2, 1], - "gas_per_code_byte": [875, 1000] + "gas_per_code_byte": [32, 1000] + }, + "archival_data_gas_costs": { + "gas_per_data_felt": [5120, 1], + "event_key_factor": [2, 1], + "gas_per_code_byte": [1280, 1] }, "disable_cairo0_redeclaration": true, + "enable_stateful_compression": true, + "allocation_cost": { + "blob_cost": { + "l1_gas": 0, + "l1_data_gas": 32, + "l2_gas": 0 + }, + "gas_cost": { + "l1_gas": 551, + "l1_data_gas": 0, + "l2_gas": 0 + } + }, + "ignore_inner_event_resources": false, + "enable_reverts": true, "max_recursion_depth": 50, "segment_arena_cells": false, "os_constants": { - "block_hash_contract_address": 1, "call_contract_gas_cost": { "entry_point_gas_cost": 1, - "step_gas_cost": 10, - "syscall_base_gas_cost": 1 + "step_gas_cost": 860, + "range_check_gas_cost": 15 }, "constructor_entry_point_selector": "0x28ffe4ff0f226a9107253e17a904099aa4f63a02a5621de0576e5aa71bc5194", "default_entry_point_selector": 0, "deploy_gas_cost": { "entry_point_gas_cost": 1, - "step_gas_cost": 200, - "syscall_base_gas_cost": 1 + "step_gas_cost": 1128, + "range_check_gas_cost": 18, + "pedersen_gas_cost": 7 }, "emit_event_gas_cost": { - "step_gas_cost": 10, - "syscall_base_gas_cost": 1 + "step_gas_cost": 100, + "range_check_gas_cost": 1 }, "entry_point_gas_cost": { "entry_point_initial_budget": 1, @@ -49,20 +70,18 @@ "error_invalid_input_len": "Invalid input length", "error_invalid_argument": "Invalid argument", "error_out_of_gas": "Out of gas", + "error_entry_point_failed": "ENTRYPOINT_FAILED", + "error_entry_point_not_found": "ENTRYPOINT_NOT_FOUND", "execute_entry_point_selector": "0x15d40a3d6ca2ac30f4031e42be28da9b056fef9bb7357ac5e85627ee876e5ad", - "fee_transfer_gas_cost": { - "entry_point_gas_cost": 1, - "step_gas_cost": 100 - }, "get_block_hash_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 104, + "range_check_gas_cost": 2 }, "get_execution_info_gas_cost": { - "step_gas_cost": 10, - "syscall_base_gas_cost": 1 + "step_gas_cost": 100, + "range_check_gas_cost": 1 }, - "initial_gas_cost": { + "default_initial_gas_cost": { "step_gas_cost": 500000000 }, "keccak_gas_cost": { @@ -73,99 +92,113 @@ "l1_gas_index": 0, "l1_handler_version": 0, "l2_gas": "L2_GAS", + "l1_data_gas": "L1_DATA", + "l1_data_gas_index": 2, "l2_gas_index": 1, "library_call_gas_cost": { - "call_contract_gas_cost": 1 + "entry_point_gas_cost": 1, + "step_gas_cost": 836, + "range_check_gas_cost": 15 }, "sha256_process_block_gas_cost": { - "step_gas_cost": 1852, + "step_gas_cost": 1855, "range_check_gas_cost": 65, "bitwise_builtin_gas_cost": 1115, "syscall_base_gas_cost": 1 }, "memory_hole_gas_cost": 10, "nop_entry_point_offset": -1, + "os_contract_addresses": { + "block_hash_contract_address": 1, + "alias_contract_address": 2, + "reserved_contract_address": 3 + }, "range_check_gas_cost": 70, - "pedersen_gas_cost": 0, - "bitwise_builtin_gas_cost": 594, - "ecop_gas_cost": 0, - "poseidon_gas_cost": 0, - "add_mod_gas_cost": 0, - "mul_mod_gas_cost": 0, + "pedersen_gas_cost": 4050, + "bitwise_builtin_gas_cost": 583, + "ecop_gas_cost": 4085, + "poseidon_gas_cost": 491, + "add_mod_gas_cost": 230, + "mul_mod_gas_cost": 604, "replace_class_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 104, + "range_check_gas_cost": 1 }, "secp256k1_add_gas_cost": { "range_check_gas_cost": 29, - "step_gas_cost": 406 + "step_gas_cost": 410 }, "secp256k1_get_point_from_x_gas_cost": { "memory_hole_gas_cost": 20, "range_check_gas_cost": 30, - "step_gas_cost": 391 + "step_gas_cost": 395 }, "secp256k1_get_xy_gas_cost": { "memory_hole_gas_cost": 40, "range_check_gas_cost": 11, - "step_gas_cost": 239 + "step_gas_cost": 207 }, "secp256k1_mul_gas_cost": { "memory_hole_gas_cost": 2, "range_check_gas_cost": 7045, - "step_gas_cost": 76501 + "step_gas_cost": 76505 }, "secp256k1_new_gas_cost": { "memory_hole_gas_cost": 40, "range_check_gas_cost": 35, - "step_gas_cost": 475 + "step_gas_cost": 461 }, "secp256r1_add_gas_cost": { "range_check_gas_cost": 57, - "step_gas_cost": 589 + "step_gas_cost": 593 }, "secp256r1_get_point_from_x_gas_cost": { "memory_hole_gas_cost": 20, "range_check_gas_cost": 44, - "step_gas_cost": 510 + "step_gas_cost": 514 }, "secp256r1_get_xy_gas_cost": { "memory_hole_gas_cost": 40, "range_check_gas_cost": 11, - "step_gas_cost": 241 + "step_gas_cost": 209 }, "secp256r1_mul_gas_cost": { "memory_hole_gas_cost": 2, "range_check_gas_cost": 13961, - "step_gas_cost": 125340 + "step_gas_cost": 125344 }, "secp256r1_new_gas_cost": { "memory_hole_gas_cost": 40, "range_check_gas_cost": 49, - "step_gas_cost": 594 + "step_gas_cost": 580 }, "send_message_to_l1_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 141, + "range_check_gas_cost": 1 }, "sierra_array_len_bound": 4294967296, "step_gas_cost": 100, "storage_read_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 100, + "range_check_gas_cost": 1 }, "storage_write_gas_cost": { - "step_gas_cost": 50, - "syscall_base_gas_cost": 1 + "step_gas_cost": 100, + "range_check_gas_cost": 1 + }, + "get_class_hash_at_gas_cost": { + "step_gas_cost": 100, + "range_check_gas_cost": 1 }, "stored_block_hash_buffer": 10, "syscall_base_gas_cost": { "step_gas_cost": 100 }, "transaction_gas_cost": { - "entry_point_gas_cost": 2, - "fee_transfer_gas_cost": 1, - "step_gas_cost": 100 + "step_gas_cost": 4098, + "pedersen_gas_cost": 4, + "range_check_gas_cost": 77, + "poseidon_gas_cost": 11 }, "transfer_entry_point_selector": "0x83afd3f4caedc6eebf44246fe54e38c95e3179a5ec9ea81740eca5b482d12e", "validate_declare_entry_point_selector": "0x289da278a8dc833409cabfdad1581e8e7d40e42dcaed693fa4008dcdb4963b3", @@ -180,7 +213,7 @@ "os_resources": { "execute_syscalls": { "CallContract": { - "n_steps": 827, + "n_steps": 866, "builtin_instance_counter": { "range_check_builtin": 15 }, @@ -201,7 +234,7 @@ "n_memory_holes": 0 }, "Deploy": { - "n_steps": 1097, + "n_steps": 1132, "builtin_instance_counter": { "pedersen_builtin": 7, "range_check_builtin": 18 @@ -280,7 +313,7 @@ "n_memory_holes": 0 }, "LibraryCall": { - "n_steps": 818, + "n_steps": 842, "builtin_instance_counter": { "range_check_builtin": 15 }, @@ -294,7 +327,7 @@ "n_memory_holes": 0 }, "ReplaceClass": { - "n_steps": 98, + "n_steps": 104, "builtin_instance_counter": { "range_check_builtin": 1 }, @@ -378,7 +411,7 @@ "n_memory_holes": 0 }, "Sha256ProcessBlock": { - "n_steps": 1855, + "n_steps": 1865, "builtin_instance_counter": { "range_check_builtin": 65, "bitwise_builtin": 1115 @@ -393,6 +426,13 @@ "n_memory_holes": 0 }, "StorageWrite": { + "n_steps": 93, + "builtin_instance_counter": { + "range_check_builtin": 1 + }, + "n_memory_holes": 0 + }, + "GetClassHashAt": { "n_steps": 89, "builtin_instance_counter": { "range_check_builtin": 1 @@ -404,10 +444,11 @@ "Declare": { "deprecated_resources": { "constant": { - "n_steps": 2973, + "n_steps": 3203, "builtin_instance_counter": { "pedersen_builtin": 16, - "range_check_builtin": 53 + "range_check_builtin": 56, + "poseidon_builtin": 4 }, "n_memory_holes": 0 }, @@ -419,11 +460,11 @@ }, "resources": { "constant": { - "n_steps": 3079, + "n_steps": 3346, "builtin_instance_counter": { "pedersen_builtin": 4, - "range_check_builtin": 58, - "poseidon_builtin": 10 + "range_check_builtin": 64, + "poseidon_builtin": 14 }, "n_memory_holes": 0 }, @@ -437,7 +478,7 @@ "DeployAccount": { "deprecated_resources": { "constant": { - "n_steps": 4015, + "n_steps": 4161, "builtin_instance_counter": { "pedersen_builtin": 23, "range_check_builtin": 72 @@ -454,10 +495,10 @@ }, "resources": { "constant": { - "n_steps": 4137, + "n_steps": 4321, "builtin_instance_counter": { "pedersen_builtin": 11, - "range_check_builtin": 77, + "range_check_builtin": 80, "poseidon_builtin": 10 }, "n_memory_holes": 0 @@ -474,7 +515,7 @@ "InvokeFunction": { "deprecated_resources": { "constant": { - "n_steps": 3763, + "n_steps": 3918, "builtin_instance_counter": { "pedersen_builtin": 14, "range_check_builtin": 69 @@ -491,10 +532,10 @@ }, "resources": { "constant": { - "n_steps": 3904, + "n_steps": 4102, "builtin_instance_counter": { "pedersen_builtin": 4, - "range_check_builtin": 74, + "range_check_builtin": 77, "poseidon_builtin": 11 }, "n_memory_holes": 0 @@ -511,7 +552,7 @@ "L1Handler": { "deprecated_resources": { "constant": { - "n_steps": 1233, + "n_steps": 1279, "builtin_instance_counter": { "pedersen_builtin": 11, "range_check_builtin": 16 @@ -551,18 +592,22 @@ } }, "validate_max_n_steps": 1000000, + "validate_max_sierra_gas": 100000000, + "min_compiler_version_for_sierra_gas": "2.8.0", "vm_resource_fee_cost": { - "add_mod_builtin": [4, 100], - "bitwise_builtin": [16, 100], - "ec_op_builtin": [256, 100], - "ecdsa_builtin": [512, 100], - "keccak_builtin": [512, 100], - "mul_mod_builtin": [4, 100], - "n_steps": [25, 10000], - "output_builtin": [0, 1], - "pedersen_builtin": [8, 100], - "poseidon_builtin": [8, 100], - "range_check_builtin": [4, 100], - "range_check96_builtin": [4, 100] + "builtins": { + "add_mod_builtin": [4, 100], + "bitwise_builtin": [16, 100], + "ec_op_builtin": [256, 100], + "ecdsa_builtin": [512, 100], + "keccak_builtin": [512, 100], + "mul_mod_builtin": [4, 100], + "output_builtin": [0, 1], + "pedersen_builtin": [8, 100], + "poseidon_builtin": [8, 100], + "range_check_builtin": [4, 100], + "range_check96_builtin": [4, 100] + }, + "n_steps": [25, 10000] } } diff --git a/crates/sequencer/src/sequencer.rs b/crates/sequencer/src/sequencer.rs index 6db4f8bd..499f7195 100644 --- a/crates/sequencer/src/sequencer.rs +++ b/crates/sequencer/src/sequencer.rs @@ -126,6 +126,8 @@ mod tests { CompiledClassV0, CompiledClassV1, RunnableCompiledClass, }; use blockifier::state::state_api::State as BlockifierState; + use blockifier::transaction::account_transaction::AccountTransaction; + use blockifier::transaction::transaction_execution::Transaction as ExecutionTransaction; use blockifier::versioned_constants::VersionedConstants; use starknet::core::types::Felt; use starknet::macros::selector; @@ -133,7 +135,9 @@ mod tests { use starknet_api::block::{BlockInfo, GasPriceVector, GasPrices}; use starknet_api::block::{BlockNumber, BlockTimestamp}; use starknet_api::core::{ChainId, ClassHash, ContractAddress, Nonce}; - use starknet_api::executable_transaction::InvokeTransaction; + use starknet_api::executable_transaction::{ + AccountTransaction as AccountTransactionEnum, InvokeTransaction, + }; use starknet_api::transaction::fields::{Calldata, Fee, TransactionSignature}; use starknet_api::transaction::{ InvokeTransaction as InvokeTransactionTypes, InvokeTransactionV1, @@ -288,8 +292,8 @@ mod tests { BlockContext::new(block_info, chain_info, versioned_constants, bouncer_config) } - fn test_transaction() -> Transaction { - let invoke_tx = InvokeTransactionTypes::V1(InvokeTransactionV1 { + fn test_transaction() -> ExecutionTransaction { + let invoke_tx = InvokeTransactionV1 { sender_address: *TEST_ACCOUNT, calldata: Calldata( vec![ @@ -302,10 +306,17 @@ mod tests { max_fee: Fee(1_000_000), signature: TransactionSignature(vec![]), nonce: Nonce(Felt::ZERO), - }); - let transaction = - InvokeTransaction::create(invoke_tx, &ChainId::Other("KKRT".into())).unwrap(); - Transaction::Account(transaction.into()) + }; + let transaction = InvokeTransaction::create( + InvokeTransactionTypes::V1(invoke_tx), + &ChainId::Other("KKRT".into()), + ) + .unwrap(); + + ExecutionTransaction::Account(AccountTransaction { + tx: AccountTransactionEnum::Invoke(transaction), + only_query: false, + }) } sequencer_test!(CairoVersion::V0, test_sequencer_cairo_0); diff --git a/crates/sequencer/src/state.rs b/crates/sequencer/src/state.rs index 33bcf674..45b67515 100644 --- a/crates/sequencer/src/state.rs +++ b/crates/sequencer/src/state.rs @@ -113,11 +113,6 @@ impl BlockifierState for &mut State { class_hash: ClassHash, contract_class: RunnableCompiledClass, ) -> StateResult<()> { - match contract_class { - RunnableCompiledClass::V0(_) => println!("Setting V0 contract class"), - RunnableCompiledClass::V1(_) => println!("Setting V1 contract class"), - RunnableCompiledClass::V1Native(_) => println!("Setting V1Native contract class"), - }; self.classes.insert(class_hash, contract_class); Ok(()) } diff --git a/crates/sequencer/src/transaction.rs b/crates/sequencer/src/transaction.rs index 58b37556..e0114206 100644 --- a/crates/sequencer/src/transaction.rs +++ b/crates/sequencer/src/transaction.rs @@ -7,7 +7,9 @@ use blockifier::transaction::{ use starknet::core::crypto::compute_hash_on_elements; use starknet::core::types::{BroadcastedInvokeTransaction, BroadcastedTransaction, Felt}; use starknet_api::core::Nonce; -use starknet_api::executable_transaction::InvokeTransaction; +use starknet_api::executable_transaction::{ + AccountTransaction as AccountTransactionEnum, InvokeTransaction, +}; use starknet_api::transaction::fields::{Calldata, Fee, TransactionSignature}; use starknet_api::transaction::{InvokeTransactionV1, TransactionHash}; @@ -31,26 +33,31 @@ impl BroadcastedTransactionWrapper { ) -> Result { match self.0 { BroadcastedTransaction::Invoke(invoke) => match invoke { - BroadcastedInvokeTransaction::V1(invoke_v1) => Ok(ExecutionTransaction::Account( - AccountTransaction::from(InvokeTransaction { - tx: starknet_api::transaction::InvokeTransaction::V1(InvokeTransactionV1 { - max_fee: Fee(invoke_v1.max_fee.to_biguint().try_into()?), - signature: TransactionSignature( - invoke_v1.signature.into_iter().map(Into::into).collect(), + BroadcastedInvokeTransaction::V1(invoke_v1) => { + Ok(ExecutionTransaction::Account(AccountTransaction { + tx: AccountTransactionEnum::Invoke(InvokeTransaction { + tx: starknet_api::transaction::InvokeTransaction::V1( + InvokeTransactionV1 { + max_fee: Fee(invoke_v1.max_fee.to_biguint().try_into()?), + signature: TransactionSignature( + invoke_v1.signature.into_iter().map(Into::into).collect(), + ), + nonce: Nonce(invoke_v1.nonce), + sender_address: invoke_v1.sender_address.try_into()?, + calldata: Calldata(Arc::new(invoke_v1.calldata.to_vec())), + }, ), - nonce: Nonce(invoke_v1.nonce), - sender_address: invoke_v1.sender_address.try_into()?, - calldata: Calldata(Arc::new(invoke_v1.calldata.to_vec())), + tx_hash: TransactionHash(compute_transaction_hash( + invoke_v1.sender_address, + &invoke_v1.calldata, + invoke_v1.max_fee, + chain_id, + invoke_v1.nonce, + )), }), - tx_hash: TransactionHash(compute_transaction_hash( - invoke_v1.sender_address, - &invoke_v1.calldata, - invoke_v1.max_fee, - chain_id, - invoke_v1.nonce, - )), - }), - )), + only_query: false, + })) + } BroadcastedInvokeTransaction::V3(_) => { Err(eyre::eyre!("Unsupported InvokeTransaction version V3")) } From 4d4facaf93e7f28ab6905b625feb73d93b5ff1e8 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 14:32:23 +0800 Subject: [PATCH 43/53] add required dependencies for native build --- .cargo/config.toml | 20 +++++++ .github/actions/bootstrap/action.yml | 11 ++++ .github/actions/install_rust/action.yml | 12 ++++ .github/actions/setup_native_deps/action.yml | 29 ++++++++++ .github/workflows/ci.yml | 8 +-- .github/workflows/test.yml | 11 +--- .github/workflows/trunk-check.yml | 8 +-- Cargo.lock | 12 ++-- Cargo.toml | 4 +- .../src/evm_sequencer/sequencer/mod.rs | 10 ++-- crates/ef-testing/src/models/result.rs | 1 - crates/ef-testing/src/test_utils/mod.rs | 4 +- crates/sequencer/src/native.rs | 17 +++--- scripts/dependencies.sh | 57 +++++++++++++++++++ 14 files changed, 160 insertions(+), 44 deletions(-) create mode 100644 .cargo/config.toml create mode 100644 .github/actions/bootstrap/action.yml create mode 100644 .github/actions/install_rust/action.yml create mode 100644 .github/actions/setup_native_deps/action.yml create mode 100644 scripts/dependencies.sh diff --git a/.cargo/config.toml b/.cargo/config.toml new file mode 100644 index 00000000..c06c6e3e --- /dev/null +++ b/.cargo/config.toml @@ -0,0 +1,20 @@ +# Required to have the proper environment variables set to +# build the starkware-libs/sequencer dependencies with Native mode. + +[env] +CAIRO_NATIVE_RUNTIME_LIBRARY = "./libcairo_native_runtime.a" + +# Use `lld` for linking instead of `ld`, since we run out of memory while linking with `ld` on +# 16-cores linux machines, see: +# https://nnethercote.github.io/perf-book/build-configuration.html#linking. +# TODO: remove this once `rust` stabilizes `lld` as the default linker, currently only on nightly: +# https://github.com/rust-lang/rust/issues/39915#issuecomment-618726211 +[target.x86_64-unknown-linux-gnu] +rustflags = ["-Clink-arg=-fuse-ld=lld"] +env = { "MLIR_SYS_190_PREFIX" = "/usr/lib/llvm-19", "LLVM_SYS_191_PREFIX" = "/usr/lib/llvm-19", "TABLEGEN_190_PREFIX" = "/usr/lib/llvm-19", "CAIRO_NATIVE_RUNTIME_LIBRARY" = "./libcairo_native_runtime.a" } + +[target.x86_64-apple-darwin] +env = { "LIBRARY_PATH" = "/opt/homebrew/lib", "MLIR_SYS_190_PREFIX" = "/opt/homebrew/opt/llvm@19", "LLVM_SYS_191_PREFIX" = "/opt/homebrew/opt/llvm@19", "TABLEGEN_190_PREFIX" = "/opt/homebrew/opt/llvm@19", "CAIRO_NATIVE_RUNTIME_LIBRARY" = "./libcairo_native_runtime.a" } + +[target.aarch64-apple-darwin] +env = { "LIBRARY_PATH" = "/opt/homebrew/lib", "MLIR_SYS_190_PREFIX" = "/opt/homebrew/opt/llvm@19", "LLVM_SYS_191_PREFIX" = "/opt/homebrew/opt/llvm@19", "TABLEGEN_190_PREFIX" = "/opt/homebrew/opt/llvm@19", "CAIRO_NATIVE_RUNTIME_LIBRARY" = "./libcairo_native_runtime.a" } diff --git a/.github/actions/bootstrap/action.yml b/.github/actions/bootstrap/action.yml new file mode 100644 index 00000000..f6d9099d --- /dev/null +++ b/.github/actions/bootstrap/action.yml @@ -0,0 +1,11 @@ +name: Bootstrap +description: Sets up the environment with Rust and Cairo native dependencies + +runs: + using: composite + steps: + - name: Install rust + uses: ./.github/actions/install_rust + + - name: Install cairo native + uses: ./.github/actions/setup_native_deps diff --git a/.github/actions/install_rust/action.yml b/.github/actions/install_rust/action.yml new file mode 100644 index 00000000..2201cdd2 --- /dev/null +++ b/.github/actions/install_rust/action.yml @@ -0,0 +1,12 @@ +name: Install Rust +description: Install Rust toolchain with caching + +runs: + using: composite + steps: + - uses: actions-rs/toolchain@v1 + with: + toolchain: 1.82.0 + override: true + components: clippy + - uses: Swatinem/rust-cache@v2 diff --git a/.github/actions/setup_native_deps/action.yml b/.github/actions/setup_native_deps/action.yml new file mode 100644 index 00000000..c506925f --- /dev/null +++ b/.github/actions/setup_native_deps/action.yml @@ -0,0 +1,29 @@ +name: Setup Cairo Native Dependencies +description: Sets up LLVM and GMP libraries + +outputs: + cairo-native-runtime-library: + description: The path to the cairo native runtime library + value: ${{ steps.set-env-vars.outputs.cairo-native-runtime-library }} + +runs: + using: composite + steps: + - name: Cache LLVM and Dependencies + id: cache-llvm + uses: actions/cache@v3 + with: + path: | + /usr/lib/llvm-19 + /usr/include/llvm-19 + /var/cache/apt + /var/lib/apt/lists + key: + ${{ runner.os }}-llvm-19-${{ hashFiles('scripts/dependencies.sh') }} + + - name: Install Cairo Native Runtime Dependencies + if: steps.cache-llvm.outputs.cache-hit != 'true' + id: set-runtime-deps + shell: bash + run: | + sudo ./scripts/dependencies.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 376dd07e..f9688562 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,10 +13,10 @@ permissions: read-all jobs: trunk: name: Trunk - uses: ./.github/workflows/trunk-check.yml - permissions: - checks: write - contents: read + runs-on: ubuntu-latest + steps: + - uses: ./.github/actions/bootstrap + - uses: ./.github/workflows/trunk-check.yml tests: name: Rust tests diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b182b631..34b68717 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,15 +20,8 @@ jobs: uses: actions/setup-python@v4 with: python-version: 3.x - - name: Setup rust env - uses: actions-rs/toolchain@v1 - with: - profile: minimal - components: llvm-tools-preview - override: true - toolchain: 1.82.0 - - name: Retrieve cached dependencies - uses: Swatinem/rust-cache@v2 + - name: Setup rust and cairo native env + uses: ./.github/actions/bootstrap - name: fetch ef tests run: make setup - name: fetch Kakarot diff --git a/.github/workflows/trunk-check.yml b/.github/workflows/trunk-check.yml index 6e104c86..28dd88e4 100644 --- a/.github/workflows/trunk-check.yml +++ b/.github/workflows/trunk-check.yml @@ -19,11 +19,7 @@ jobs: steps: - name: Checkout uses: actions/checkout@v3 - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.82.0 - override: true - components: clippy - - uses: Swatinem/rust-cache@v2 + - name: Setup rust and cairo native env + uses: ./.github/actions/bootstrap - name: Trunk Check uses: trunk-io/trunk-action@v1 diff --git a/Cargo.lock b/Cargo.lock index f1ce8ae0..22fb16d9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1073,7 +1073,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" dependencies = [ "anyhow", "ark-ec", @@ -3995,7 +3995,7 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "infra_utils" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" dependencies = [ "tokio", "tracing", @@ -5170,7 +5170,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" dependencies = [ "clap", "infra_utils", @@ -5185,7 +5185,7 @@ dependencies = [ [[package]] name = "papyrus_proc_macros" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" dependencies = [ "quote", "syn 2.0.90", @@ -8540,7 +8540,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" dependencies = [ "bitvec", "cairo-lang-runner", @@ -8566,7 +8566,7 @@ dependencies = [ [[package]] name = "starknet_sierra_compile" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=af682306b6f91998e83011e9e2c132e07189c51e#af682306b6f91998e83011e9e2c132e07189c51e" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" dependencies = [ "cairo-lang-sierra", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index fbd712e6..7b658f3a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,13 +47,13 @@ cairo-lang-starknet-classes = "=2.9.0-dev.0" cairo-lang-sierra = "=2.9.0-dev.0" cairo-native = "0.2.4" cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev = "af682306b6f91998e83011e9e2c132e07189c51e", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev = "9278a6ad5e3403d58deed2dd0a51e4568519e868", default-features = false, features = [ "testing", "cairo_native", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev = "af682306b6f91998e83011e9e2c132e07189c51e" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev = "9278a6ad5e3403d58deed2dd0a51e4568519e868" } # Other async-trait = "0.1" diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index 0e7e4d2e..959a7bcd 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -9,11 +9,11 @@ use crate::evm_sequencer::{ KAKAROT_BLOCK_GAS_LIMIT, KAKAROT_CHAIN_ID, KAKAROT_NATIVE_TOKEN_ADDRESS, KAKAROT_UNINITIALIZED_ACCOUNT_CLASS_HASH, OWNABLE_OWNER, }, - ACCOUNT_CONTRACT_CLASS_HASH, BLOCK_GAS_LIMIT, CHAIN_ID, ETH_FEE_TOKEN_ADDRESS, - FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, KAKAROT_CLASS_HASH, - KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, OPENZEPPELIN_ACCOUNT_CLASS_HASH, - RELAYER_ADDRESS, RELAYER_BALANCE, RELAYER_VERIFYING_KEY, STRK_FEE_TOKEN_ADDRESS, - UNINITIALIZED_ACCOUNT_CLASS_HASH, + ACCOUNT_CONTRACT_CLASS, ACCOUNT_CONTRACT_CLASS_HASH, BLOCK_GAS_LIMIT, CHAIN_ID, + ETH_FEE_TOKEN_ADDRESS, FEE_TOKEN_CLASS, FEE_TOKEN_CLASS_HASH, KAKAROT_ADDRESS, + KAKAROT_CLASS, KAKAROT_CLASS_HASH, KAKAROT_OWNER_ADDRESS, OPENZEPPELIN_ACCOUNT_CLASS, + OPENZEPPELIN_ACCOUNT_CLASS_HASH, RELAYER_ADDRESS, RELAYER_BALANCE, RELAYER_VERIFYING_KEY, + STRK_FEE_TOKEN_ADDRESS, UNINITIALIZED_ACCOUNT_CLASS, UNINITIALIZED_ACCOUNT_CLASS_HASH, }, types::contract_class::CasmContractClassWrapper, utils::compute_starknet_address, diff --git a/crates/ef-testing/src/models/result.rs b/crates/ef-testing/src/models/result.rs index bd131b9a..85a1aab4 100644 --- a/crates/ef-testing/src/models/result.rs +++ b/crates/ef-testing/src/models/result.rs @@ -143,7 +143,6 @@ pub(crate) fn extract_output_and_log_execution_result( let case = format!("{}::{}", case_category, case_name); match result { TransactionExecutionResult::Ok(info) => { - /* trunk-ignore(clippy/option_if_let_else) */ if let Some(err) = info.revert_error.as_ref() { warn!("{} reverted:\n{}", case, err.to_string()); return None; diff --git a/crates/ef-testing/src/test_utils/mod.rs b/crates/ef-testing/src/test_utils/mod.rs index 51c4d342..efc6c347 100644 --- a/crates/ef-testing/src/test_utils/mod.rs +++ b/crates/ef-testing/src/test_utils/mod.rs @@ -26,8 +26,8 @@ pub struct TestMonitor { } impl TestMonitor { - pub fn new(thresholds: Vec) -> Self { - TestMonitor { thresholds } + pub const fn new(thresholds: Vec) -> Self { + Self { thresholds } } pub fn run(&mut self, test_name: &str, test_fn: F) -> T diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index f519dc9e..7bbdb53f 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -94,15 +94,14 @@ pub fn class_from_json_str( } else if let Ok(class) = { let library_output_path = generate_library_path(class_hash); let maybe_class = native_try_from_json_string(class_def.as_str(), &library_output_path); - if let Ok(class) = maybe_class { - Ok(class) - } else { - println!( - "Native contract failed with error {:?}", - maybe_class.err().unwrap() - ); - Err(()) - } + + maybe_class.map_or_else( + |err| { + println!("Native contract failed with error {:?}", err); + Err(()) + }, + Ok, + ) } { class.into() } else { diff --git a/scripts/dependencies.sh b/scripts/dependencies.sh new file mode 100644 index 00000000..ad5cb2ce --- /dev/null +++ b/scripts/dependencies.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +set -e + +[[ ${UID} == "0" ]] || SUDO="sudo" + +function install_essential_deps_linux() { + $SUDO bash -c ' + apt update && apt install -y \ + ca-certificates \ + curl \ + git \ + gnupg \ + jq \ + libssl-dev \ + lsb-release \ + pkg-config \ + ripgrep \ + software-properties-common \ + zstd \ + wget \ + lld + ' +} + +function setup_llvm_deps() { + case "$(uname)" in + Darwin) + brew update + brew install llvm@19 + ;; + Linux) + $SUDO bash -c 'curl https://apt.llvm.org/llvm.sh -Lo llvm.sh + bash ./llvm.sh 19 all + rm -f ./llvm.sh + apt update && apt install -y \ + libgmp3-dev \ + libmlir-19-dev \ + libpolly-19-dev \ + libzstd-dev \ + mlir-19-tools + ' + ;; + *) + echo "Error: Unsupported operating system" + exit 1 + ;; + esac +} + +function main() { + [ "$(uname)" = "Linux" ] && install_essential_deps_linux + setup_llvm_deps + echo "LLVM dependencies installed successfully." +} + +main "$@" From 04e8642b52505c8befdf763a13b70adb517ca101 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 14:35:59 +0800 Subject: [PATCH 44/53] checkout before using composite actions --- .github/actions/setup_native_deps/action.yml | 2 +- .github/workflows/ci.yml | 1 + .github/workflows/test.yml | 2 +- .github/workflows/trunk-check.yml | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/actions/setup_native_deps/action.yml b/.github/actions/setup_native_deps/action.yml index c506925f..cdb5a3ea 100644 --- a/.github/actions/setup_native_deps/action.yml +++ b/.github/actions/setup_native_deps/action.yml @@ -26,4 +26,4 @@ runs: id: set-runtime-deps shell: bash run: | - sudo ./scripts/dependencies.sh + bash ./scripts/dependencies.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f9688562..8bf32069 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,6 +15,7 @@ jobs: name: Trunk runs-on: ubuntu-latest steps: + - uses: actions/checkout@v4 - uses: ./.github/actions/bootstrap - uses: ./.github/workflows/trunk-check.yml diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 34b68717..f21aa1e7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest-16-cores timeout-minutes: 45 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: diff --git a/.github/workflows/trunk-check.yml b/.github/workflows/trunk-check.yml index 28dd88e4..a907708f 100644 --- a/.github/workflows/trunk-check.yml +++ b/.github/workflows/trunk-check.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup rust and cairo native env uses: ./.github/actions/bootstrap - name: Trunk Check From 9c5b8eae09cde0960989096dc773be9b04d68df3 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 15:04:04 +0800 Subject: [PATCH 45/53] make llvm deps in path --- .github/actions/setup_native_deps/action.yml | 1 + .github/workflows/trunk-check.yml | 4 +++- scripts/dependencies.sh | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/actions/setup_native_deps/action.yml b/.github/actions/setup_native_deps/action.yml index cdb5a3ea..01547a8b 100644 --- a/.github/actions/setup_native_deps/action.yml +++ b/.github/actions/setup_native_deps/action.yml @@ -18,6 +18,7 @@ runs: /usr/include/llvm-19 /var/cache/apt /var/lib/apt/lists + /etc/profile.d/llvm19.sh key: ${{ runner.os }}-llvm-19-${{ hashFiles('scripts/dependencies.sh') }} diff --git a/.github/workflows/trunk-check.yml b/.github/workflows/trunk-check.yml index a907708f..6481f605 100644 --- a/.github/workflows/trunk-check.yml +++ b/.github/workflows/trunk-check.yml @@ -19,7 +19,9 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Setup rust and cairo native env uses: ./.github/actions/bootstrap + - name: Trunk Check - uses: trunk-io/trunk-action@v1 + uses: trunk-io/trunk-action@v1.1.19 diff --git a/scripts/dependencies.sh b/scripts/dependencies.sh index ad5cb2ce..40be63f7 100644 --- a/scripts/dependencies.sh +++ b/scripts/dependencies.sh @@ -40,6 +40,11 @@ function setup_llvm_deps() { libzstd-dev \ mlir-19-tools ' + # Add LLVM to PATH by creating a file in profile.d + echo 'export PATH=/usr/lib/llvm-19/bin:$PATH' | $SUDO tee /etc/profile.d/llvm19.sh + $SUDO chmod +x /etc/profile.d/llvm19.sh + # Source the file immediately + source /etc/profile.d/llvm19.sh ;; *) echo "Error: Unsupported operating system" From 87e029ddbd132949cd0989069c65064cfed1b47c Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 15:08:57 +0800 Subject: [PATCH 46/53] fix workflow --- .github/workflows/ci.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8bf32069..c80fbf6a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,11 +13,7 @@ permissions: read-all jobs: trunk: name: Trunk - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: ./.github/actions/bootstrap - - uses: ./.github/workflows/trunk-check.yml + uses: ./.github/workflows/trunk-check.yml tests: name: Rust tests From 70f5db156b61ddacd904c56de259d5368a759028 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 15:19:56 +0800 Subject: [PATCH 47/53] install LLVM in action instead of sh script --- .github/actions/bootstrap/action.yml | 11 --- .github/actions/install_rust/action.yml | 12 ---- .github/actions/setup_native_deps/action.yml | 30 -------- .github/workflows/ci.yml | 74 ++++++++++++++++++-- .github/workflows/test.yml | 48 ------------- .github/workflows/trunk-check.yml | 27 ------- scripts/dependencies.sh | 6 +- 7 files changed, 71 insertions(+), 137 deletions(-) delete mode 100644 .github/actions/bootstrap/action.yml delete mode 100644 .github/actions/install_rust/action.yml delete mode 100644 .github/actions/setup_native_deps/action.yml delete mode 100644 .github/workflows/test.yml delete mode 100644 .github/workflows/trunk-check.yml diff --git a/.github/actions/bootstrap/action.yml b/.github/actions/bootstrap/action.yml deleted file mode 100644 index f6d9099d..00000000 --- a/.github/actions/bootstrap/action.yml +++ /dev/null @@ -1,11 +0,0 @@ -name: Bootstrap -description: Sets up the environment with Rust and Cairo native dependencies - -runs: - using: composite - steps: - - name: Install rust - uses: ./.github/actions/install_rust - - - name: Install cairo native - uses: ./.github/actions/setup_native_deps diff --git a/.github/actions/install_rust/action.yml b/.github/actions/install_rust/action.yml deleted file mode 100644 index 2201cdd2..00000000 --- a/.github/actions/install_rust/action.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: Install Rust -description: Install Rust toolchain with caching - -runs: - using: composite - steps: - - uses: actions-rs/toolchain@v1 - with: - toolchain: 1.82.0 - override: true - components: clippy - - uses: Swatinem/rust-cache@v2 diff --git a/.github/actions/setup_native_deps/action.yml b/.github/actions/setup_native_deps/action.yml deleted file mode 100644 index 01547a8b..00000000 --- a/.github/actions/setup_native_deps/action.yml +++ /dev/null @@ -1,30 +0,0 @@ -name: Setup Cairo Native Dependencies -description: Sets up LLVM and GMP libraries - -outputs: - cairo-native-runtime-library: - description: The path to the cairo native runtime library - value: ${{ steps.set-env-vars.outputs.cairo-native-runtime-library }} - -runs: - using: composite - steps: - - name: Cache LLVM and Dependencies - id: cache-llvm - uses: actions/cache@v3 - with: - path: | - /usr/lib/llvm-19 - /usr/include/llvm-19 - /var/cache/apt - /var/lib/apt/lists - /etc/profile.d/llvm19.sh - key: - ${{ runner.os }}-llvm-19-${{ hashFiles('scripts/dependencies.sh') }} - - - name: Install Cairo Native Runtime Dependencies - if: steps.cache-llvm.outputs.cache-hit != 'true' - id: set-runtime-deps - shell: bash - run: | - bash ./scripts/dependencies.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c80fbf6a..1a6aa520 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,8 @@ --- name: Workflow - CI +# trunk-ignore(checkov/CKV2_GHA_1) + on: push: branches: [main] @@ -8,13 +10,75 @@ on: branches: - main -permissions: read-all - jobs: trunk: - name: Trunk - uses: ./.github/workflows/trunk-check.yml + runs-on: ubuntu-24.04 + env: + MLIR_SYS_190_PREFIX: /usr/lib/llvm-19/ + LLVM_SYS_191_PREFIX: /usr/lib/llvm-19/ + TABLEGEN_190_PREFIX: /usr/lib/llvm-19/ + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@1.82.0 + with: + components: clippy, rustfmt + - uses: Swatinem/rust-cache@v2 + - name: add llvm deb repository + uses: myci-actions/add-deb-repo@11 + with: + repo: deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-19 main + repo-name: llvm-repo + keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key + - name: Install LLVM + run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools + - name: Trunk Check + uses: trunk-io/trunk-action@v1.1.19 tests: name: Rust tests - uses: ./.github/workflows/test.yml + runs-on: ubuntu-latest-16-cores + env: + MLIR_SYS_190_PREFIX: /usr/lib/llvm-19/ + LLVM_SYS_191_PREFIX: /usr/lib/llvm-19/ + TABLEGEN_190_PREFIX: /usr/lib/llvm-19/ + timeout-minutes: 45 + steps: + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@1.82.0 + - uses: Swatinem/rust-cache@v2 + - name: add llvm deb repository + uses: myci-actions/add-deb-repo@11 + with: + repo: deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-19 main + repo-name: llvm-repo + keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key + - name: Install LLVM + run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.x + - name: fetch ef tests + run: make setup + - name: fetch Kakarot + run: make setup-kakarot + env: + GITHUB_TOKEN: ${{ github.token }} + - name: run tests v0 + run: | + set -o pipefail + make vm-tests-v0-ci | tee test_v0.out + - name: run tests v1 + run: | + make vm-tests-v1-ci | tee test_v1.out + set +o pipefail + - name: Retrieve ef-tests execution resources + run: python scripts/compute_resources.py + env: + KAKAROT_VERSION: v0,v1 + # upload artifacts + - name: upload resources + uses: actions/upload-artifact@v3 + with: + path: ./resources/ + name: resources-usage diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index f21aa1e7..00000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,48 +0,0 @@ -name: test - -on: - workflow_call: {} - -permissions: read-all - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-test - cancel-in-progress: true - -jobs: - test: - # trunk-ignore(actionlint/runner-label) - runs-on: ubuntu-latest-16-cores - timeout-minutes: 45 - steps: - - uses: actions/checkout@v4 - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.x - - name: Setup rust and cairo native env - uses: ./.github/actions/bootstrap - - name: fetch ef tests - run: make setup - - name: fetch Kakarot - run: make setup-kakarot - env: - GITHUB_TOKEN: ${{ github.token }} - - name: run tests v0 - run: | - set -o pipefail - make vm-tests-v0-ci | tee test_v0.out - - name: run tests v1 - run: | - make vm-tests-v1-ci | tee test_v1.out - set +o pipefail - - name: Retrieve ef-tests execution resources - run: python scripts/compute_resources.py - env: - KAKAROT_VERSION: v0,v1 - # upload artifacts - - name: upload resources - uses: actions/upload-artifact@v3 - with: - path: ./resources/ - name: resources-usage diff --git a/.github/workflows/trunk-check.yml b/.github/workflows/trunk-check.yml deleted file mode 100644 index 6481f605..00000000 --- a/.github/workflows/trunk-check.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Trunk - -on: - workflow_call: {} - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }}-trunk - cancel-in-progress: true - -jobs: - trunk_check: - name: Trunk Check Runner - runs-on: ubuntu-latest - # trunk-ignore(checkov/CKV2_GHA_1) - permissions: - checks: write # For trunk to post annotations - contents: read # For repo checkout - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup rust and cairo native env - uses: ./.github/actions/bootstrap - - - name: Trunk Check - uses: trunk-io/trunk-action@v1.1.19 diff --git a/scripts/dependencies.sh b/scripts/dependencies.sh index 40be63f7..5dac7648 100644 --- a/scripts/dependencies.sh +++ b/scripts/dependencies.sh @@ -30,11 +30,9 @@ function setup_llvm_deps() { brew install llvm@19 ;; Linux) - $SUDO bash -c 'curl https://apt.llvm.org/llvm.sh -Lo llvm.sh - bash ./llvm.sh 19 all - rm -f ./llvm.sh - apt update && apt install -y \ + $SUDO bash -c 'apt update && apt-get install -y \ libgmp3-dev \ + llvm-19 \ libmlir-19-dev \ libpolly-19-dev \ libzstd-dev \ From ecd32a3c534fb841b9278cf4193dd4d45d841fe0 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 16:51:38 +0800 Subject: [PATCH 48/53] bump sequencer dep for proper support of serde --- .github/workflows/ci.yml | 4 ++-- Cargo.lock | 12 ++++++------ Cargo.toml | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a6aa520..48f41fda 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: repo-name: llvm-repo keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key - name: Install LLVM - run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools + run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools libgmp3-dev libzstd-dev lld libssl-dev zstd - name: Trunk Check uses: trunk-io/trunk-action@v1.1.19 @@ -53,7 +53,7 @@ jobs: repo-name: llvm-repo keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key - name: Install LLVM - run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools + run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools libgmp3-dev libzstd-dev lld libssl-dev zstd - name: Set up Python uses: actions/setup-python@v4 with: diff --git a/Cargo.lock b/Cargo.lock index 22fb16d9..d2b34db4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1073,7 +1073,7 @@ dependencies = [ [[package]] name = "blockifier" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a0177488b87c28427b223598b3e04cbe9f5a8e6c#a0177488b87c28427b223598b3e04cbe9f5a8e6c" dependencies = [ "anyhow", "ark-ec", @@ -3995,7 +3995,7 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "infra_utils" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a0177488b87c28427b223598b3e04cbe9f5a8e6c#a0177488b87c28427b223598b3e04cbe9f5a8e6c" dependencies = [ "tokio", "tracing", @@ -5170,7 +5170,7 @@ dependencies = [ [[package]] name = "papyrus_config" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a0177488b87c28427b223598b3e04cbe9f5a8e6c#a0177488b87c28427b223598b3e04cbe9f5a8e6c" dependencies = [ "clap", "infra_utils", @@ -5185,7 +5185,7 @@ dependencies = [ [[package]] name = "papyrus_proc_macros" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a0177488b87c28427b223598b3e04cbe9f5a8e6c#a0177488b87c28427b223598b3e04cbe9f5a8e6c" dependencies = [ "quote", "syn 2.0.90", @@ -8540,7 +8540,7 @@ dependencies = [ [[package]] name = "starknet_api" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a0177488b87c28427b223598b3e04cbe9f5a8e6c#a0177488b87c28427b223598b3e04cbe9f5a8e6c" dependencies = [ "bitvec", "cairo-lang-runner", @@ -8566,7 +8566,7 @@ dependencies = [ [[package]] name = "starknet_sierra_compile" version = "0.0.0" -source = "git+https://github.com/kkrt-labs/sequencer.git?rev=9278a6ad5e3403d58deed2dd0a51e4568519e868#9278a6ad5e3403d58deed2dd0a51e4568519e868" +source = "git+https://github.com/kkrt-labs/sequencer.git?rev=a0177488b87c28427b223598b3e04cbe9f5a8e6c#a0177488b87c28427b223598b3e04cbe9f5a8e6c" dependencies = [ "cairo-lang-sierra", "cairo-lang-starknet-classes", diff --git a/Cargo.toml b/Cargo.toml index 7b658f3a..c55ea502 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,13 +47,13 @@ cairo-lang-starknet-classes = "=2.9.0-dev.0" cairo-lang-sierra = "=2.9.0-dev.0" cairo-native = "0.2.4" cairo-vm = "1.0.1" -blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev = "9278a6ad5e3403d58deed2dd0a51e4568519e868", default-features = false, features = [ +blockifier = { package = "blockifier", git = "https://github.com/kkrt-labs/sequencer.git", rev = "a0177488b87c28427b223598b3e04cbe9f5a8e6c", default-features = false, features = [ "testing", "cairo_native", ] } starknet = "0.12" starknet-crypto = "0.7" -starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev = "9278a6ad5e3403d58deed2dd0a51e4568519e868" } +starknet_api = { package = "starknet_api", git = "https://github.com/kkrt-labs/sequencer.git", rev = "a0177488b87c28427b223598b3e04cbe9f5a8e6c" } # Other async-trait = "0.1" From 67665de5d0691c68e171c8b130dfafb46c3562d2 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 19:04:39 +0800 Subject: [PATCH 49/53] fix trunk --- .github/workflows/ci.yml | 12 +++++++++--- blockchain-tests-skip.yml | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 48f41fda..3ae351a0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,7 +1,7 @@ --- name: Workflow - CI -# trunk-ignore(checkov/CKV2_GHA_1) +# trunk-ignore-all(checkov/CKV2_GHA_1) on: push: @@ -30,7 +30,10 @@ jobs: repo-name: llvm-repo keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key - name: Install LLVM - run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools libgmp3-dev libzstd-dev lld libssl-dev zstd + run: + sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 + clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools + libgmp3-dev libzstd-dev lld libssl-dev zstd - name: Trunk Check uses: trunk-io/trunk-action@v1.1.19 @@ -53,7 +56,10 @@ jobs: repo-name: llvm-repo keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key - name: Install LLVM - run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools libgmp3-dev libzstd-dev lld libssl-dev zstd + run: + sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 + clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools + libgmp3-dev libzstd-dev lld libssl-dev zstd - name: Set up Python uses: actions/setup-python@v4 with: diff --git a/blockchain-tests-skip.yml b/blockchain-tests-skip.yml index a466e0fd..4cedddf6 100644 --- a/blockchain-tests-skip.yml +++ b/blockchain-tests-skip.yml @@ -63,7 +63,6 @@ testname: - mulmod_d15g0v0_Cancun - twoOps_d0g0v0_Cancun - regex: stArgsZeroOneBalance: - .* From f7f2ab437c9a9dd6d09bb8a312785ada765dd5a5 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 21:22:47 +0800 Subject: [PATCH 50/53] remove old llvm in ci --- .github/workflows/ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3ae351a0..d205e189 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,6 +18,13 @@ jobs: LLVM_SYS_191_PREFIX: /usr/lib/llvm-19/ TABLEGEN_190_PREFIX: /usr/lib/llvm-19/ steps: + - name: Remove old llvm versions + shell: bash + run: | + sudo apt-get update + sudo apt-get remove -y '^llvm-.*' + sudo apt-get autoremove -y + sudo apt-get clean - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.82.0 with: From d8fa195deb407047d34a9a3ab8b1b2ca34158362 Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 21:40:14 +0800 Subject: [PATCH 51/53] set LLVM_CONFIG var to llvm-19 --- .github/workflows/ci.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d205e189..33801d74 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,14 +17,8 @@ jobs: MLIR_SYS_190_PREFIX: /usr/lib/llvm-19/ LLVM_SYS_191_PREFIX: /usr/lib/llvm-19/ TABLEGEN_190_PREFIX: /usr/lib/llvm-19/ + LLVM_CONFIG: /usr/lib/llvm-19/bin/llvm-config steps: - - name: Remove old llvm versions - shell: bash - run: | - sudo apt-get update - sudo apt-get remove -y '^llvm-.*' - sudo apt-get autoremove -y - sudo apt-get clean - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.82.0 with: @@ -36,6 +30,9 @@ jobs: repo: deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-19 main repo-name: llvm-repo keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key + - name: Update and upgrade APT + shell: bash + run: sudo apt-get update && sudo apt-get upgrade -y - name: Install LLVM run: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 From d4a7dbd471b08abfd4c691c0b2565e3904f23adc Mon Sep 17 00:00:00 2001 From: enitrat Date: Thu, 5 Dec 2024 22:21:54 +0800 Subject: [PATCH 52/53] add llvm bin to path --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33801d74..a71cc072 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,6 @@ jobs: MLIR_SYS_190_PREFIX: /usr/lib/llvm-19/ LLVM_SYS_191_PREFIX: /usr/lib/llvm-19/ TABLEGEN_190_PREFIX: /usr/lib/llvm-19/ - LLVM_CONFIG: /usr/lib/llvm-19/bin/llvm-config steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@1.82.0 @@ -38,6 +37,8 @@ jobs: sudo apt-get install llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools libgmp3-dev libzstd-dev lld libssl-dev zstd + - name: Add llvm bin to PATH + run: echo "/usr/lib/llvm-19/bin" >> $GITHUB_PATH - name: Trunk Check uses: trunk-io/trunk-action@v1.1.19 From ca366fc3af45023b3a353dcb11c5862d66d1a01f Mon Sep 17 00:00:00 2001 From: enitrat Date: Fri, 6 Dec 2024 10:29:21 +0800 Subject: [PATCH 53/53] apply suggestions --- .../src/evm_sequencer/sequencer/mod.rs | 28 ++++----------- crates/ef-testing/src/test_utils/mod.rs | 3 +- crates/sequencer/src/native.rs | 17 +++------ crates/sequencer/src/sequencer.rs | 35 +++++-------------- crates/sequencer/src/state.rs | 5 +-- 5 files changed, 24 insertions(+), 64 deletions(-) diff --git a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs index 959a7bcd..047ae6e6 100644 --- a/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs +++ b/crates/ef-testing/src/evm_sequencer/sequencer/mod.rs @@ -30,7 +30,7 @@ use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass; use cairo_vm::types::errors::program_errors::ProgramError; use sequencer::{sequencer::Sequencer, state::State}; use starknet::core::types::contract::{legacy::LegacyContractClass, CompiledClass}; -use starknet_api::block::{BlockInfo, GasPriceVector, GasPrices}; +use starknet_api::block::BlockInfo; use starknet_api::{ block::{BlockNumber, BlockTimestamp}, core::{ChainId, ClassHash, ContractAddress}, @@ -109,18 +109,7 @@ impl KakarotSequencer { ) .try_into() .expect("Failed to convert to ContractAddress"), - gas_prices: GasPrices { - eth_gas_prices: GasPriceVector { - l1_gas_price: Default::default(), - l1_data_gas_price: Default::default(), - l2_gas_price: Default::default(), - }, - strk_gas_prices: GasPriceVector { - l1_gas_price: Default::default(), - l1_data_gas_price: Default::default(), - l2_gas_price: Default::default(), - }, - }, + gas_prices: Default::default(), use_kzg_da: false, }; @@ -185,11 +174,10 @@ impl DerefMut for KakarotSequencer { pub fn convert_contract_class_v0( class: &LegacyContractClass, ) -> Result { - Result::::Ok(RunnableCompiledClass::V0( - CompiledClassV0::try_from_json_string( - &serde_json::to_string(class).map_err(ProgramError::Parse)?, - )?, - )) + Ok(CompiledClassV0::try_from_json_string( + &serde_json::to_string(class).map_err(ProgramError::Parse)?, + )? + .into()) } pub fn convert_contract_class_v1( @@ -197,9 +185,7 @@ pub fn convert_contract_class_v1( ) -> Result { let casm_contract_class = CasmContractClassWrapper::try_from(class)?; let casm_contract_class: CasmContractClass = casm_contract_class.into(); - Ok(RunnableCompiledClass::V1(CompiledClassV1::try_from( - casm_contract_class, - )?)) + Ok(CompiledClassV1::try_from(casm_contract_class)?.into()) } lazy_static! { diff --git a/crates/ef-testing/src/test_utils/mod.rs b/crates/ef-testing/src/test_utils/mod.rs index efc6c347..518d082d 100644 --- a/crates/ef-testing/src/test_utils/mod.rs +++ b/crates/ef-testing/src/test_utils/mod.rs @@ -22,7 +22,8 @@ pub fn setup() { } pub struct TestMonitor { - thresholds: Vec, // thresholds in seconds + /// thresholds in seconds + thresholds: Vec, } impl TestMonitor { diff --git a/crates/sequencer/src/native.rs b/crates/sequencer/src/native.rs index 7bbdb53f..ae6f9125 100644 --- a/crates/sequencer/src/native.rs +++ b/crates/sequencer/src/native.rs @@ -15,21 +15,14 @@ lazy_static! { } fn generate_library_path(class_hash: ClassHash) -> PathBuf { - let mut path = NATIVE_CACHE_DIR.clone(); - path.push(class_hash.to_string().trim_start_matches("0x")); - path + NATIVE_CACHE_DIR.join(class_hash.to_string().trim_start_matches("0x")) } fn setup_native_cache_dir() -> PathBuf { - let path: PathBuf = match std::env::var("NATIVE_CACHE_DIR") { - Ok(path) => path.into(), - Err(_err) => { - let mut path = std::env::current_dir().unwrap(); - path.push("native_cache"); - path - } - }; - let _ = fs::create_dir_all(&path); + let path = std::env::var("NATIVE_CACHE_DIR") + .map(PathBuf::from) + .unwrap_or_else(|_| std::env::current_dir().unwrap().join("native_cache")); + fs::create_dir_all(&path).ok(); path } diff --git a/crates/sequencer/src/sequencer.rs b/crates/sequencer/src/sequencer.rs index 499f7195..b3c69ac2 100644 --- a/crates/sequencer/src/sequencer.rs +++ b/crates/sequencer/src/sequencer.rs @@ -12,6 +12,7 @@ use blockifier::{ }, }; use starknet_api::core::ContractAddress; +use starknet_api::executable_transaction::AccountTransaction; /// Sequencer is the main struct of the sequencer crate. #[derive(Clone)] @@ -75,15 +76,9 @@ where Transaction::Account(account_tx) => { let tx = &account_tx.tx; match tx { - starknet_api::executable_transaction::AccountTransaction::Invoke(tx) => { - tx.sender_address() - } - starknet_api::executable_transaction::AccountTransaction::Declare(tx) => { - tx.sender_address() - } - starknet_api::executable_transaction::AccountTransaction::DeployAccount(tx) => { - tx.contract_address() - } + AccountTransaction::Invoke(tx) => tx.sender_address(), + AccountTransaction::Declare(tx) => tx.sender_address(), + AccountTransaction::DeployAccount(tx) => tx.contract_address(), } } Transaction::L1Handler(_) => ContractAddress::from(0u8), @@ -132,13 +127,13 @@ mod tests { use starknet::core::types::Felt; use starknet::macros::selector; use starknet_api::abi::abi_utils::get_storage_var_address; - use starknet_api::block::{BlockInfo, GasPriceVector, GasPrices}; + use starknet_api::block::BlockInfo; use starknet_api::block::{BlockNumber, BlockTimestamp}; - use starknet_api::core::{ChainId, ClassHash, ContractAddress, Nonce}; + use starknet_api::core::{ChainId, ClassHash, ContractAddress}; use starknet_api::executable_transaction::{ AccountTransaction as AccountTransactionEnum, InvokeTransaction, }; - use starknet_api::transaction::fields::{Calldata, Fee, TransactionSignature}; + use starknet_api::transaction::fields::{Calldata, Fee}; use starknet_api::transaction::{ InvokeTransaction as InvokeTransactionTypes, InvokeTransactionV1, }; @@ -260,18 +255,7 @@ mod tests { block_number: BlockNumber(1), block_timestamp: BlockTimestamp(1), sequencer_address: *SEQUENCER_ADDRESS, - gas_prices: GasPrices { - eth_gas_prices: GasPriceVector { - l1_gas_price: Default::default(), - l1_data_gas_price: Default::default(), - l2_gas_price: Default::default(), - }, - strk_gas_prices: GasPriceVector { - l1_gas_price: Default::default(), - l1_data_gas_price: Default::default(), - l2_gas_price: Default::default(), - }, - }, + gas_prices: Default::default(), use_kzg_da: false, }; @@ -304,8 +288,7 @@ mod tests { .into(), ), max_fee: Fee(1_000_000), - signature: TransactionSignature(vec![]), - nonce: Nonce(Felt::ZERO), + ..Default::default() }; let transaction = InvokeTransaction::create( InvokeTransactionTypes::V1(invoke_tx), diff --git a/crates/sequencer/src/state.rs b/crates/sequencer/src/state.rs index 45b67515..12c58fb9 100644 --- a/crates/sequencer/src/state.rs +++ b/crates/sequencer/src/state.rs @@ -247,10 +247,7 @@ mod tests { // When state - .set_contract_class( - ClassHash(Felt::ONE), - RunnableCompiledClass::V0(CompiledClassV0::default()), - ) + .set_contract_class(ClassHash(Felt::ONE), CompiledClassV0::default().into()) .unwrap(); // Then