diff --git a/Cargo.lock b/Cargo.lock index 82276a76..1da8453b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -17,6 +17,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" + [[package]] name = "aes" version = "0.8.4" @@ -28,6 +34,18 @@ dependencies = [ "cpufeatures", ] +[[package]] +name = "ahash" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +dependencies = [ + "cfg-if", + "once_cell", + "version_check", + "zerocopy", +] + [[package]] name = "aho-corasick" version = "1.1.3" @@ -37,20 +55,126 @@ dependencies = [ "memchr", ] +[[package]] +name = "allocator-api2" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" + +[[package]] +name = "alloy" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ba1c79677c9ce51c8d45e20845b05e6fb070ea2c863fba03ad6af2c778474bd" +dependencies = [ + "alloy-consensus 0.1.4", + "alloy-contract", + "alloy-core", + "alloy-eips 0.1.4", + "alloy-genesis 0.1.4", + "alloy-json-rpc 0.1.4", + "alloy-network", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types 0.1.4", + "alloy-serde 0.1.4", + "alloy-signer", + "alloy-signer-ledger", + "alloy-signer-local", + "alloy-signer-trezor", + "alloy-transport 0.1.4", + "alloy-transport-http", + "alloy-transport-ws", +] + +[[package]] +name = "alloy-chains" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b515e82c8468ddb6ff8db21c78a5997442f113fd8471fd5b2261b2602dd0c67" +dependencies = [ + "num_enum", + "strum", +] + [[package]] name = "alloy-consensus" version = "0.1.0" source = "git+https://github.com/alloy-rs/alloy.git?rev=cad7935#cad7935d69f433e45d190902e58b1c996b35adfa" dependencies = [ - "alloy-eips", + "alloy-eips 0.1.0", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.1.0", "c-kzg", "serde", "sha2", ] +[[package]] +name = "alloy-consensus" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da374e868f54c7f4ad2ad56829827badca388efd645f8cf5fccc61c2b5343504" +dependencies = [ + "alloy-eips 0.1.4", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.1.4", + "c-kzg", + "serde", +] + +[[package]] +name = "alloy-contract" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dc6957ff706f9e5f6fd42f52a93e4bce476b726c92d077b348de28c4a76730c" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-pubsub", + "alloy-rpc-types-eth", + "alloy-sol-types", + "alloy-transport 0.1.4", + "futures", + "futures-util", + "thiserror", +] + +[[package]] +name = "alloy-core" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "529fc6310dc1126c8de51c376cbc59c79c7f662bd742be7dc67055d5421a81b4" +dependencies = [ + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", +] + +[[package]] +name = "alloy-dyn-abi" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413902aa18a97569e60f679c23f46a18db1656d87ab4d4e49d0e1e52042f66df" +dependencies = [ + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", + "const-hex", + "itoa", + "serde", + "serde_json", + "winnow 0.6.18", +] + [[package]] name = "alloy-eips" version = "0.1.0" @@ -58,10 +182,25 @@ source = "git+https://github.com/alloy-rs/alloy.git?rev=cad7935#cad7935d69f433e4 dependencies = [ "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.1.0", + "c-kzg", + "once_cell", + "serde", +] + +[[package]] +name = "alloy-eips" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f76ecab54890cdea1e4808fc0891c7e6cfcf71fe1a9fe26810c7280ef768f4ed" +dependencies = [ + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.1.4", "c-kzg", "once_cell", "serde", + "sha2", ] [[package]] @@ -70,8 +209,31 @@ version = "0.1.0" source = "git+https://github.com/alloy-rs/alloy.git?rev=cad7935#cad7935d69f433e45d190902e58b1c996b35adfa" dependencies = [ "alloy-primitives", - "alloy-serde", + "alloy-serde 0.1.0", + "serde", +] + +[[package]] +name = "alloy-genesis" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bca15afde1b6d15e3fc1c97421262b1bbb37aee45752e3c8b6d6f13f776554ff" +dependencies = [ + "alloy-primitives", + "alloy-serde 0.1.4", + "serde", +] + +[[package]] +name = "alloy-json-abi" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc05b04ac331a9f07e3a4036ef7926e49a8bf84a99a1ccfc7e2ab55a5fcbb372" +dependencies = [ + "alloy-primitives", + "alloy-sol-type-parser", "serde", + "serde_json", ] [[package]] @@ -86,6 +248,39 @@ dependencies = [ "tracing", ] +[[package]] +name = "alloy-json-rpc" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d6f34930b7e3e2744bcc79056c217f00cb2abb33bc5d4ff88da7623c5bb078b" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", + "thiserror", + "tracing", +] + +[[package]] +name = "alloy-network" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25f6895fc31b48fa12306ef9b4f78b7764f8bd6d7d91cdb0a40e233704a0f23f" +dependencies = [ + "alloy-consensus 0.1.4", + "alloy-eips 0.1.4", + "alloy-json-rpc 0.1.4", + "alloy-primitives", + "alloy-rpc-types-eth", + "alloy-serde 0.1.4", + "alloy-signer", + "alloy-sol-types", + "async-trait", + "auto_impl", + "futures-utils-wasm", + "thiserror", +] + [[package]] name = "alloy-primitives" version = "0.7.7" @@ -108,6 +303,59 @@ dependencies = [ "tiny-keccak", ] +[[package]] +name = "alloy-provider" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c538bfa893d07e27cb4f3c1ab5f451592b7c526d511d62b576a2ce59e146e4a" +dependencies = [ + "alloy-chains", + "alloy-consensus 0.1.4", + "alloy-eips 0.1.4", + "alloy-json-rpc 0.1.4", + "alloy-network", + "alloy-primitives", + "alloy-pubsub", + "alloy-rpc-client", + "alloy-rpc-types-eth", + "alloy-transport 0.1.4", + "alloy-transport-http", + "alloy-transport-ws", + "async-stream", + "async-trait", + "auto_impl", + "dashmap", + "futures", + "futures-utils-wasm", + "lru", + "pin-project", + "reqwest", + "serde", + "serde_json", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "alloy-pubsub" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a7341322d9bc0e49f6e9fd9f2eb8e30f73806f2dd12cbb3d6bab2694c921f87" +dependencies = [ + "alloy-json-rpc 0.1.4", + "alloy-primitives", + "alloy-transport 0.1.4", + "bimap", + "futures", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", +] + [[package]] name = "alloy-rlp" version = "0.3.8" @@ -127,7 +375,31 @@ checksum = "4d0f2d905ebd295e7effec65e5f6868d153936130ae718352771de3e7d03c75c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", +] + +[[package]] +name = "alloy-rpc-client" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ba31bae67773fd5a60020bea900231f8396202b7feca4d0c70c6b59308ab4a8" +dependencies = [ + "alloy-json-rpc 0.1.4", + "alloy-primitives", + "alloy-pubsub", + "alloy-transport 0.1.4", + "alloy-transport-http", + "alloy-transport-ws", + "futures", + "pin-project", + "reqwest", + "serde", + "serde_json", + "tokio", + "tokio-stream", + "tower", + "tracing", + "url", ] [[package]] @@ -135,12 +407,12 @@ name = "alloy-rpc-types" version = "0.1.0" source = "git+https://github.com/alloy-rs/alloy.git?rev=cad7935#cad7935d69f433e45d190902e58b1c996b35adfa" dependencies = [ - "alloy-consensus", - "alloy-eips", - "alloy-genesis", + "alloy-consensus 0.1.0", + "alloy-eips 0.1.0", + "alloy-genesis 0.1.0", "alloy-primitives", "alloy-rlp", - "alloy-serde", + "alloy-serde 0.1.0", "alloy-sol-types", "itertools 0.12.1", "serde", @@ -148,6 +420,34 @@ dependencies = [ "thiserror", ] +[[package]] +name = "alloy-rpc-types" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "184a7a42c7ba9141cc9e76368356168c282c3bc3d9e5d78f3556bdfe39343447" +dependencies = [ + "alloy-rpc-types-eth", + "alloy-serde 0.1.4", +] + +[[package]] +name = "alloy-rpc-types-eth" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab4123ee21f99ba4bd31bfa36ba89112a18a500f8b452f02b35708b1b951e2b9" +dependencies = [ + "alloy-consensus 0.1.4", + "alloy-eips 0.1.4", + "alloy-primitives", + "alloy-rlp", + "alloy-serde 0.1.4", + "alloy-sol-types", + "itertools 0.13.0", + "serde", + "serde_json", + "thiserror", +] + [[package]] name = "alloy-serde" version = "0.1.0" @@ -158,6 +458,84 @@ dependencies = [ "serde_json", ] +[[package]] +name = "alloy-serde" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9416c52959e66ead795a11f4a86c248410e9e368a0765710e57055b8a1774dd6" +dependencies = [ + "alloy-primitives", + "serde", + "serde_json", +] + +[[package]] +name = "alloy-signer" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b33753c09fa1ad85e5b092b8dc2372f1e337a42e84b9b4cff9fede75ba4adb32" +dependencies = [ + "alloy-primitives", + "async-trait", + "auto_impl", + "elliptic-curve", + "k256", + "thiserror", +] + +[[package]] +name = "alloy-signer-ledger" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "575e4c924b23132234c75bd1f8f3871c1bc12ba462f76af9b59249515a38253e" +dependencies = [ + "alloy-consensus 0.1.4", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "coins-ledger", + "futures-util", + "semver 1.0.23", + "thiserror", + "tracing", +] + +[[package]] +name = "alloy-signer-local" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dfc9c26fe6c6f1bad818c9a976de9044dd12e1f75f1f156a801ee3e8148c1b6" +dependencies = [ + "alloy-consensus 0.1.4", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "elliptic-curve", + "eth-keystore", + "k256", + "rand", + "thiserror", +] + +[[package]] +name = "alloy-signer-trezor" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd82e86e4a6604fd11f84b170638d16dcdac9db6c2b5f5b91a3941b7e7af7f94" +dependencies = [ + "alloy-consensus 0.1.4", + "alloy-network", + "alloy-primitives", + "alloy-signer", + "async-trait", + "semver 1.0.23", + "thiserror", + "tracing", + "trezor-client", +] + [[package]] name = "alloy-sol-macro" version = "0.7.7" @@ -169,7 +547,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -178,6 +556,7 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" dependencies = [ + "alloy-json-abi", "alloy-sol-macro-input", "const-hex", "heck 0.5.0", @@ -185,7 +564,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", "syn-solidity", "tiny-keccak", ] @@ -196,24 +575,38 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" dependencies = [ + "alloy-json-abi", "const-hex", "dunce", "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.74", + "serde_json", + "syn 2.0.75", "syn-solidity", ] +[[package]] +name = "alloy-sol-type-parser" +version = "0.7.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbcba3ca07cf7975f15d871b721fb18031eec8bce51103907f6dcce00b255d98" +dependencies = [ + "serde", + "winnow 0.6.18", +] + [[package]] name = "alloy-sol-types" version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" dependencies = [ + "alloy-json-abi", "alloy-primitives", "alloy-sol-macro", "const-hex", + "serde", ] [[package]] @@ -221,7 +614,7 @@ name = "alloy-transport" version = "0.1.0" source = "git+https://github.com/alloy-rs/alloy.git?rev=cad7935#cad7935d69f433e45d190902e58b1c996b35adfa" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.1.0", "base64 0.22.1", "futures-util", "futures-utils-wasm", @@ -234,6 +627,58 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "alloy-transport" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01b51a291f949f755e6165c3ed562883175c97423703703355f4faa4b7d0a57c" +dependencies = [ + "alloy-json-rpc 0.1.4", + "base64 0.22.1", + "futures-util", + "futures-utils-wasm", + "serde", + "serde_json", + "thiserror", + "tokio", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-http" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86d65871f9f1cafe1ed25cde2f1303be83e6473e995a2d56c275ae4fcce6119c" +dependencies = [ + "alloy-json-rpc 0.1.4", + "alloy-transport 0.1.4", + "reqwest", + "serde_json", + "tower", + "tracing", + "url", +] + +[[package]] +name = "alloy-transport-ws" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aec83fd052684556c78c54df111433493267234d82321c2236560c752f595f20" +dependencies = [ + "alloy-pubsub", + "alloy-transport 0.1.4", + "futures", + "http", + "rustls", + "serde_json", + "tokio", + "tokio-tungstenite", + "tracing", + "ws_stream_wasm", +] + [[package]] name = "anstream" version = "0.6.15" @@ -415,9 +860,53 @@ dependencies = [ [[package]] name = "arrayvec" -version = "0.7.4" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + +[[package]] +name = "async-stream" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd56dd203fef61ac097dd65721a419ddccb106b2d2b70ba60a6b529f03961a51" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", +] + +[[package]] +name = "async-trait" +version = "0.1.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", +] + +[[package]] +name = "async_io_stream" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" +checksum = "b6d7b9decdf35d8908a7e3ef02f64c5e9b1695e230154c0e8de3969142d9b94c" +dependencies = [ + "futures", + "pharos", + "rustc_version 0.4.0", +] [[package]] name = "atomic-waker" @@ -433,7 +922,7 @@ checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -452,7 +941,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.4", "object", "rustc-demangle", ] @@ -481,6 +970,12 @@ version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +[[package]] +name = "bimap" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" + [[package]] name = "bincode" version = "1.3.3" @@ -666,6 +1161,29 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +[[package]] +name = "coins-ledger" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "166ef757aa936b45f3e5d39c344047f65ef7d25a50067246a498021a816d074b" +dependencies = [ + "async-trait", + "byteorder", + "cfg-if", + "const-hex", + "getrandom", + "hidapi-rusb", + "js-sys", + "log", + "nix 0.26.4", + "once_cell", + "thiserror", + "tokio", + "tracing", + "wasm-bindgen", + "wasm-bindgen-futures", +] + [[package]] name = "color-eyre" version = "0.6.3" @@ -807,6 +1325,34 @@ dependencies = [ "typenum", ] +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown", + "lock_api", + "once_cell", + "parking_lot_core", +] + +[[package]] +name = "data-encoding" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" + [[package]] name = "der" version = "0.7.9" @@ -847,7 +1393,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version 0.4.0", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -962,6 +1508,28 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "eth-keystore" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fda3bf123be441da5260717e0661c25a2fd9cb2b2c1d20bf2e05580047158ab" +dependencies = [ + "aes", + "ctr", + "digest 0.10.7", + "hex", + "hmac", + "pbkdf2", + "rand", + "scrypt", + "serde", + "serde_json", + "sha2", + "sha3", + "thiserror", + "uuid", +] + [[package]] name = "eyre" version = "0.6.12" @@ -1013,12 +1581,12 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "9c0596c1eac1f9e04ed902702e9878208b336edc9d6fddc8a48387349bab3666" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.8.0", ] [[package]] @@ -1066,6 +1634,21 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" +[[package]] +name = "futures" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.30" @@ -1073,6 +1656,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -1081,6 +1665,23 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +[[package]] +name = "futures-executor" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + [[package]] name = "futures-macro" version = "0.3.30" @@ -1089,7 +1690,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -1110,9 +1711,13 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ + "futures-channel", "futures-core", + "futures-io", "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", @@ -1142,8 +1747,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi", + "wasm-bindgen", ] [[package]] @@ -1186,9 +1793,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -1208,6 +1815,10 @@ name = "hashbrown" version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +dependencies = [ + "ahash", + "allocator-api2", +] [[package]] name = "heck" @@ -1245,6 +1856,18 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" +[[package]] +name = "hidapi-rusb" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efdc2ec354929a6e8f3c6b6923a4d97427ec2f764cfee8cd4bfe890946cdf08b" +dependencies = [ + "cc", + "libc", + "pkg-config", + "rusb", +] + [[package]] name = "hmac" version = "0.12.1" @@ -1459,6 +2082,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -1496,6 +2128,15 @@ dependencies = [ "sha2", ] +[[package]] +name = "keccak" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +dependencies = [ + "cpufeatures", +] + [[package]] name = "keccak-asm" version = "0.1.3" @@ -1511,10 +2152,10 @@ name = "kinode_process_lib" version = "0.8.0" source = "git+https://github.com/kinode-dao/process_lib.git?rev=7eb3a04#7eb3a04f9be79d1cc3a52fa460faeea7ba3008ed" dependencies = [ - "alloy-json-rpc", + "alloy-json-rpc 0.1.0", "alloy-primitives", - "alloy-rpc-types", - "alloy-transport", + "alloy-rpc-types 0.1.0", + "alloy-transport 0.1.0", "anyhow", "bincode", "http", @@ -1530,8 +2171,11 @@ dependencies = [ [[package]] name = "kit" -version = "0.6.11" +version = "0.7.0" dependencies = [ + "alloy", + "alloy-sol-macro", + "alloy-sol-types", "anyhow", "base64 0.21.7", "clap", @@ -1541,9 +2185,10 @@ dependencies = [ "git2", "hex", "kinode_process_lib", - "nix", + "nix 0.27.1", "regex", "reqwest", + "rpassword", "semver 1.0.23", "serde", "serde_json", @@ -1573,9 +2218,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.156" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libgit2-sys" @@ -1621,6 +2266,18 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "libusb1-sys" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da050ade7ac4ff1ba5379af847a10a10a8e284181e060105bf8d86960ce9ce0f" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "libz-sys" version = "1.1.19" @@ -1639,12 +2296,31 @@ version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +[[package]] +name = "lock_api" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +[[package]] +name = "lru" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +dependencies = [ + "hashbrown", +] + [[package]] name = "matchers" version = "0.1.0" @@ -1660,6 +2336,15 @@ version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + [[package]] name = "mime" version = "0.3.17" @@ -1685,6 +2370,15 @@ dependencies = [ "adler", ] +[[package]] +name = "miniz_oxide" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +dependencies = [ + "adler2", +] + [[package]] name = "mio" version = "1.0.2" @@ -1714,6 +2408,19 @@ dependencies = [ "tempfile", ] +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset", + "pin-utils", +] + [[package]] name = "nix" version = "0.27.1" @@ -1780,6 +2487,26 @@ dependencies = [ "libc", ] +[[package]] +name = "num_enum" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.75", +] + [[package]] name = "object" version = "0.32.2" @@ -1818,7 +2545,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -1883,6 +2610,19 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "parking_lot_core" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-targets 0.52.6", +] + [[package]] name = "password-hash" version = "0.4.2" @@ -1929,6 +2669,16 @@ dependencies = [ "ucd-trie", ] +[[package]] +name = "pharos" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9567389417feee6ce15dd6527a8a1ecac205ef62c2932bcf3d9f6fc5b78b414" +dependencies = [ + "futures", + "rustc_version 0.4.0", +] + [[package]] name = "pin-project" version = "1.1.5" @@ -1946,7 +2696,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2065,6 +2815,26 @@ dependencies = [ "unarray", ] +[[package]] +name = "protobuf" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b65f4a8ec18723a734e5dc09c173e0abf9690432da5340285d536edcb4dac190" +dependencies = [ + "once_cell", + "protobuf-support", + "thiserror", +] + +[[package]] +name = "protobuf-support" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6872f4d4f4b98303239a2b5838f5bbbb77b01ffc892d627957f37a22d7cfe69c" +dependencies = [ + "thiserror", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -2125,11 +2895,20 @@ dependencies = [ "rand_core", ] +[[package]] +name = "redox_syscall" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", @@ -2182,9 +2961,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "reqwest" -version = "0.12.5" +version = "0.12.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7d6d2a27d57148378eb5e111173f4276ad26340ecc5c49a4a2152167a2d6a37" +checksum = "f8f4955649ef5c38cc7f9e8aa41761d48fb9677197daea9984dc54f56aad5e63" dependencies = [ "base64 0.22.1", "bytes", @@ -2220,7 +2999,7 @@ dependencies = [ "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg", + "windows-registry", ] [[package]] @@ -2280,6 +3059,27 @@ dependencies = [ "serde", ] +[[package]] +name = "rpassword" +version = "7.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80472be3c897911d0137b2d2b9055faf6eeac5b14e324073d83bc17b191d7e3f" +dependencies = [ + "libc", + "rtoolbox", + "windows-sys 0.48.0", +] + +[[package]] +name = "rtoolbox" +version = "0.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +dependencies = [ + "libc", + "windows-sys 0.48.0", +] + [[package]] name = "ruint" version = "1.12.3" @@ -2310,6 +3110,16 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48fd7bd8a6377e15ad9d42a8ec25371b94ddc67abe7c8b9127bec79bebaaae18" +[[package]] +name = "rusb" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab9f9ff05b63a786553a4c02943b74b34a988448671001e9a27e2f0565cc05a4" +dependencies = [ + "libc", + "libusb1-sys", +] + [[package]] name = "rustc-demangle" version = "0.1.24" @@ -2360,6 +3170,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c58f8c84392efc0a126acce10fa59ff7b3d2ac06ab451a33f2741989b806b044" dependencies = [ "once_cell", + "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -2393,6 +3204,12 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustversion" +version = "1.0.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" + [[package]] name = "rusty-fork" version = "0.3.0" @@ -2411,6 +3228,15 @@ version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +[[package]] +name = "salsa20" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97a22f5af31f73a954c10289c93e8a50cc23d971e80ee446f1f6f7137a088213" +dependencies = [ + "cipher", +] + [[package]] name = "same-file" version = "1.0.6" @@ -2429,6 +3255,24 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "scrypt" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f9e24d2b632954ded8ab2ef9fea0a0c769ea56ea98bddbafbad22caeeadf45d" +dependencies = [ + "hmac", + "pbkdf2", + "salsa20", + "sha2", +] + [[package]] name = "sec1" version = "0.7.3" @@ -2490,6 +3334,12 @@ dependencies = [ "pest", ] +[[package]] +name = "send_wrapper" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd0b0ec5f1c1ca621c432a25813d8d60c88abe6d3e08a3eb9cf37d97a0fe3d73" + [[package]] name = "serde" version = "1.0.208" @@ -2507,7 +3357,7 @@ checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2565,6 +3415,16 @@ dependencies = [ "digest 0.10.7", ] +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest 0.10.7", + "keccak", +] + [[package]] name = "sha3-asm" version = "0.1.3" @@ -2671,6 +3531,28 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.75", +] + [[package]] name = "subtle" version = "2.6.1" @@ -2690,9 +3572,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.74" +version = "2.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" +checksum = "f6af063034fc1935ede7be0122941bafa9bacb949334d090b77ca98b5817c7d9" dependencies = [ "proc-macro2", "quote", @@ -2708,7 +3590,7 @@ dependencies = [ "paste", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2716,23 +3598,26 @@ name = "sync_wrapper" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +dependencies = [ + "futures-core", +] [[package]] name = "system-configuration" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +checksum = "658bc6ee10a9b4fcf576e9b0819d95ec16f4d2c02d39fd83ac1c8789785c4a42" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys", ] [[package]] name = "system-configuration-sys" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" dependencies = [ "core-foundation-sys", "libc", @@ -2774,7 +3659,7 @@ checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2853,9 +3738,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.39.2" +version = "1.39.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" +checksum = "9babc99b9923bfa4804bd74722ff02c0381021eafa4db9949217e3be8e84fff5" dependencies = [ "backtrace", "bytes", @@ -2876,7 +3761,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -2900,6 +3785,34 @@ dependencies = [ "tokio", ] +[[package]] +name = "tokio-stream" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +dependencies = [ + "futures-core", + "pin-project-lite", + "tokio", + "tokio-util", +] + +[[package]] +name = "tokio-tungstenite" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6989540ced10490aaf14e6bad2e3d33728a2813310a0c71d1574304c49631cd" +dependencies = [ + "futures-util", + "log", + "rustls", + "rustls-pki-types", + "tokio", + "tokio-rustls", + "tungstenite", + "webpki-roots", +] + [[package]] name = "tokio-util" version = "0.7.11" @@ -3018,7 +3931,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -3083,12 +3996,46 @@ dependencies = [ "tracing-serde", ] +[[package]] +name = "trezor-client" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f62c95b37f6c769bd65a0d0beb8b2b003e72998003b896a616a6777c645c05ed" +dependencies = [ + "byteorder", + "hex", + "protobuf", + "rusb", + "thiserror", + "tracing", +] + [[package]] name = "try-lock" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tungstenite" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8" +dependencies = [ + "byteorder", + "bytes", + "data-encoding", + "http", + "httparse", + "log", + "rand", + "rustls", + "rustls-pki-types", + "sha1", + "thiserror", + "utf-8", +] + [[package]] name = "typenum" version = "1.17.0" @@ -3157,9 +4104,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "untrusted" @@ -3178,12 +4125,28 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + [[package]] name = "utf8parse" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" +dependencies = [ + "getrandom", + "serde", +] + [[package]] name = "valuable" version = "0.1.0" @@ -3258,7 +4221,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", "wasm-bindgen-shared", ] @@ -3292,7 +4255,7 @@ checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3349,6 +4312,15 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki-roots" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd7c23921eeb1713a4e851530e9b9756e4fb0e89978582942612524cf09f01cd" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "winapi" version = "0.3.9" @@ -3380,6 +4352,36 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" @@ -3546,16 +4548,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a277a57398d4bfa075df44f501a17cfdf8542d224f0d36095a2adc7aee4ef0a5" -dependencies = [ - "cfg-if", - "windows-sys 0.48.0", -] - [[package]] name = "wit-bindgen" version = "0.24.0" @@ -3608,7 +4600,7 @@ dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -3650,6 +4642,25 @@ dependencies = [ "wasmparser", ] +[[package]] +name = "ws_stream_wasm" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7999f5f4217fe3818726b66257a4475f71e74ffd190776ad053fa159e50737f5" +dependencies = [ + "async_io_stream", + "futures", + "js-sys", + "log", + "pharos", + "rustc_version 0.4.0", + "send_wrapper", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + [[package]] name = "wyz" version = "0.5.1" @@ -3677,7 +4688,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] @@ -3697,7 +4708,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.74", + "syn 2.0.75", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index dd830ccb..138849a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "kit" -version = "0.6.11" +version = "0.7.0" edition = "2021" [build-dependencies] @@ -8,6 +8,27 @@ anyhow = "1.0" git2 = "0.18" [dependencies] +alloy = { version = "0.1.3", features = [ + "consensus", + "contract", + "json-rpc", + "network", + "provider-ws", + "providers", + "pubsub", + "rpc", + "rpc-client", + "rpc-client-ws", + "rpc-types", + "rpc-types-eth", + "signers", + "signer-keystore", + "signer-ledger", + "signer-local", + "signer-trezor", +] } +alloy-sol-macro = "0.7.6" +alloy-sol-types = "0.7.6" base64 = "0.21" clap = { version = "4.4", features = ["cargo", "string"] } color-eyre = { version = "0.6", features = ["capture-spantrace"] } @@ -18,6 +39,8 @@ kinode_process_lib = { git = "https://github.com/kinode-dao/process_lib.git", re nix = { version = "0.27", features = ["process", "signal", "term"] } regex = "1" reqwest = { version = "0.12", features = ["json"] } +# rmp-serde = "1.1.2" +rpassword = "7" semver = "1.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" diff --git a/src/boot_fake_node/mod.rs b/src/boot_fake_node/mod.rs index 3a1b5e2a..2cbbe1ee 100644 --- a/src/boot_fake_node/mod.rs +++ b/src/boot_fake_node/mod.rs @@ -448,12 +448,7 @@ pub async fn execute( let send_to_cleanup_for_cleanup = send_to_cleanup.clone(); let _cleanup_context = CleanupContext::new(send_to_cleanup_for_cleanup); - // TODO: change this to be less restrictive; currently leads to weirdness - // like an input of `fake.os` -> `fake.os.dev`. - // The reason we need it for now is that non-`.dev` nodes are not currently - // addressable. - // Once they are addressable, change this to, perhaps, `!name.contains(".") - if !fake_node_name.ends_with(".dev") { + if !fake_node_name.contains(".") { fake_node_name.push_str(".dev"); } diff --git a/src/build/mod.rs b/src/build/mod.rs index 1bf308d3..f4cfcb67 100644 --- a/src/build/mod.rs +++ b/src/build/mod.rs @@ -1,4 +1,5 @@ use std::collections::{HashMap, HashSet}; +use std::io::{Read, Write}; use std::path::{Path, PathBuf}; use std::process::Command; use std::time::SystemTime; @@ -12,7 +13,10 @@ use color_eyre::{ }; use fs_err as fs; use serde::{Deserialize, Serialize}; +use sha2::{Digest, Sha256}; use tracing::{debug, info, instrument, warn}; +use walkdir::WalkDir; +use zip::write::FileOptions; use kinode_process_lib::{PackageId, kernel_types::Erc721Metadata}; @@ -20,7 +24,6 @@ use crate::setup::{ check_js_deps, check_py_deps, check_rust_deps, get_deps, get_newest_valid_node_version, get_python_version, REQUIRED_PY_PACKAGE, }; -use crate::start_package::zip_directory; use crate::view_api; use crate::KIT_CACHE; @@ -46,6 +49,75 @@ struct CargoPackage { name: String, } +pub fn make_pkg_publisher(metadata: &Erc721Metadata) -> String { + let package_name = metadata.properties.package_name.as_str(); + let publisher = metadata.properties.publisher.as_str(); + let pkg_publisher = format!("{}:{}", package_name, publisher); + pkg_publisher +} + +pub fn make_zip_filename(package_dir: &Path, pkg_publisher: &str) -> PathBuf { + let zip_filename = package_dir.join("target").join(pkg_publisher).with_extension("zip"); + zip_filename +} + +#[instrument(level = "trace", skip_all)] +pub fn hash_zip_pkg(zip_path: &Path) -> Result { + let mut file = fs::File::open(&zip_path)?; + let mut hasher = Sha256::new(); + let mut buffer = Vec::new(); + file.read_to_end(&mut buffer)?; + hasher.update(&buffer); + let hash_result = hasher.finalize(); + Ok(format!("{hash_result:x}")) +} + +#[instrument(level = "trace", skip_all)] +pub fn zip_pkg(package_dir: &Path, pkg_publisher: &str) -> Result<(PathBuf, String)> { + let pkg_dir = package_dir.join("pkg"); + let target_dir = package_dir.join("target"); + fs::create_dir_all(&target_dir)?; + let zip_filename = make_zip_filename(package_dir, pkg_publisher); + zip_directory(&pkg_dir, &zip_filename.to_str().unwrap())?; + + let hash = hash_zip_pkg(&zip_filename)?; + Ok((zip_filename, hash)) +} + +#[instrument(level = "trace", skip_all)] +fn zip_directory(directory: &Path, zip_filename: &str) -> Result<()> { + let file = fs::File::create(zip_filename)?; + let walkdir = WalkDir::new(directory); + let it = walkdir.into_iter(); + + let mut zip = zip::ZipWriter::new(file); + + let options = FileOptions::default() + .compression_method(zip::CompressionMethod::Deflated) + .unix_permissions(0o755) + .last_modified_time(zip::DateTime::from_date_and_time(1980, 1, 1, 0, 0, 0).unwrap()); + + for entry in it { + let entry = entry?; + let path = entry.path(); + let name = path.strip_prefix(Path::new(directory))?; + + if path.is_file() { + zip.start_file(name.to_string_lossy(), options)?; + let mut f = fs::File::open(path)?; + let mut buffer = Vec::new(); + f.read_to_end(&mut buffer)?; + zip.write_all(&*buffer)?; + } else if name.as_os_str().len() != 0 { + // Only if it is not the root directory + zip.add_directory(name.to_string_lossy(), options)?; + } + } + + zip.finish()?; + Ok(()) +} + #[instrument(level = "trace", skip_all)] pub fn has_feature(cargo_toml_path: &str, feature: &str) -> Result { let cargo_toml_content = fs::read_to_string(cargo_toml_path)?; @@ -1200,7 +1272,7 @@ pub async fn execute( verbose, ignore_deps, ) - .await + .await?; } } else { if no_ui { @@ -1225,7 +1297,7 @@ pub async fn execute( let valid_node = get_newest_valid_node_version(None, None)?; if ui_only { - compile_and_copy_ui(package_dir, valid_node, verbose).await + compile_and_copy_ui(package_dir, valid_node, verbose).await?; } else { compile_package_and_ui( package_dir, @@ -1241,7 +1313,14 @@ pub async fn execute( verbose, ignore_deps, ) - .await + .await?; } } + + let metadata = read_metadata(package_dir)?; + let pkg_publisher = make_pkg_publisher(&metadata); + let (_zip_filename, hash_string) = zip_pkg(package_dir, &pkg_publisher)?; + info!("package zip hash: {hash_string}"); + + Ok(()) } diff --git a/src/chain/kinostate.json b/src/chain/kinostate.json index 4929188f..ff765c08 100644 --- a/src/chain/kinostate.json +++ b/src/chain/kinostate.json @@ -1 +1 @@ -{"block":{"number":"0xc","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x663a8c8b","gas_limit":"0x1c9c380","basefee":"0xf343234","difficulty":"0x0","prevrandao":"0x0000000000000000000000000000000000000000000000000000000000000000","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x774df111396800","code":"0x","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":0,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x5fbdb2315678afecb367f032d93f642f64180aa3":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101b75760003560e01c806374191440116100ec578063c9554a0c1161008a578063decd6bd511610064578063decd6bd5146105d4578063e32954eb146105f4578063f2fde38b14610614578063fbda8c3f1461063457600080fd5b8063c9554a0c14610525578063cf506b4a14610545578063d86e697d1461056557600080fd5b8063ac9650d8116100c6578063ac9650d814610496578063b3c65015146104c3578063c4d66de8146104e5578063c7988b371461050557600080fd5b8063741914401461042b5780638da5cb5b1461044b578063aa1fce691461046957600080fd5b80633940afcd116101595780634f1ef286116101335780634f1ef2861461039257806352d1902d146103a557806365184956146103c8578063715018a61461041657600080fd5b80633940afcd1461032f5780634a2a6add1461034f5780634f0575491461036f57600080fd5b80632363b1a6116101955780632363b1a6146102af578063300777af146102cf57806332946692146102ef5780633659cfe61461030f57600080fd5b806301ffc9a7146101bc57806305f93b5f146101f157806307a003301461028d575b600080fd5b3480156101c857600080fd5b506101dc6101d73660046125ae565b610661565b60405190151581526020015b60405180910390f35b3480156101fd57600080fd5b5061025261020c3660046125d8565b60ff602052600090815260409020546001600160801b0381169061ffff600160801b8204811691600160901b8104821691600160a01b8204811691600160b01b90041685565b604080516001600160801b03909616865261ffff9485166020870152928416928501929092528216606084015216608082015260a0016101e8565b34801561029957600080fd5b506102ad6102a83660046125f1565b610698565b005b3480156102bb57600080fd5b506102ad6102ca36600461262a565b6107f5565b3480156102db57600080fd5b506102ad6102ea36600461266d565b610963565b3480156102fb57600080fd5b506102ad61030a366004612690565b610add565b34801561031b57600080fd5b506102ad61032a366004612714565b610e9f565b34801561033b57600080fd5b506102ad61034a366004612774565b610f87565b34801561035b57600080fd5b506102ad61036a3660046127c0565b6110ed565b34801561037b57600080fd5b506102ad61038a366004612690565b505050505050565b6102ad6103a0366004612812565b6111e9565b3480156103b157600080fd5b506103ba6112b9565b6040519081526020016101e8565b3480156103d457600080fd5b506103fe6103e33660046125d8565b60fb602052600090815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561042257600080fd5b506102ad61136c565b34801561043757600080fd5b506102ad61044636600461262a565b611380565b34801561045757600080fd5b5060c9546001600160a01b03166103fe565b34801561047557600080fd5b506104896104843660046125d8565b6114f3565b6040516101e891906128d4565b3480156104a257600080fd5b506104b66104b1366004612918565b611555565b6040516101e891906129aa565b3480156104cf57600080fd5b5060005460405160ff90911681526020016101e8565b3480156104f157600080fd5b506102ad610500366004612714565b61156a565b34801561051157600080fd5b506102ad61052036600461262a565b611684565b34801561053157600080fd5b506103ba610540366004612a50565b6117f9565b34801561055157600080fd5b506102ad610560366004612a86565b6118ff565b34801561057157600080fd5b506105ad6105803660046125d8565b60fc602052600090815260409020546001600160a01b03811690600160a01b90046001600160601b031682565b604080516001600160a01b0390931683526001600160601b039091166020830152016101e8565b3480156105e057600080fd5b506102ad6105ef36600461262a565b611a7e565b34801561060057600080fd5b506104b661060f366004612774565b611bec565b34801561062057600080fd5b506102ad61062f366004612714565b611c01565b34801561064057600080fd5b506103ba61064f3660046125d8565b60fd6020526000908152604090205481565b60006001600160e01b03198216637c05e4fb60e11b148061069257506301ffc9a760e01b6001600160e01b03198316145b92915050565b600082815260fc6020526040908190205490516328b50b3560e11b81526004810184905233602482015283916001600160a01b03169063516a166a90604401602060405180830381865afa1580156106f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107189190612ada565b61073557604051634745a29b60e01b815260040160405180910390fd5b600083815260fd60205260409020829055811561078757600083815260fc6020526040902080546001600160a01b0381166001600160a01b928390046001600160601b031617918202179091556107b5565b600083815260fc6020526040902080546001600160a01b0381166001600160a01b9283900416918202179091555b50827f8ad9db565fe90ae9d4d50c51a4bf38505bfc2013675dbfd3510e0d6a4d050ba5836040516107e891815260200190565b60405180910390a2505050565b600082815260fc6020526040908190205490516328b50b3560e11b81526004810184905233602482015283916001600160a01b03169063516a166a90604401602060405180830381865afa158015610851573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108759190612ada565b61089257604051634745a29b60e01b815260040160405180910390fd5b600083815260ff60205260409020805461ffff60801b1916600160801b61ffff851690810291909117909155156108fe57600083815260fc6020526040902080546001600160a01b0381166008600160a01b928390046001600160601b0316179182021790915561092c565b600083815260fc6020526040902080546001600160a01b0381166008600160a01b9283900416918202179091555b5060405161ffff8316815283907f11424874391782446f3957eb6ca27caa9af2d78d87980762c13090bd2845f71f906020016107e8565b600082815260fc6020526040908190205490516328b50b3560e11b81526004810184905233602482015283916001600160a01b03169063516a166a90604401602060405180830381865afa1580156109bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109e39190612ada565b610a0057604051634745a29b60e01b815260040160405180910390fd5b600083815260ff6020526040902080546fffffffffffffffffffffffffffffffff19166001600160801b03841690811790915515610a7357600083815260fc6020526040902080546001600160a01b0381166004600160a01b928390046001600160601b03161791820217909155610aa1565b600083815260fc6020526040902080546001600160a01b0381166004600160a01b9283900416918202179091555b506040516001600160801b038316815283907f27831fc2ef572cce1298d5d9fc3cc1304eb5dfcea21d2190e5ad5943e4fa14fc906020016107e8565b600086815260fc6020526040908190205490516328b50b3560e11b81526004810188905233602482015287916001600160a01b03169063516a166a90604401602060405180830381865afa158015610b39573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b5d9190612ada565b610b7a57604051634745a29b60e01b815260040160405180910390fd5b600087815260fc6020526040902054600160a01b90046001600160601b03166001600160801b03871615610bb15760048117610bb6565b600481165b905061ffff861615610bcb5760088117610bd0565b600881165b905061ffff851615610be55760108117610bea565b601081165b905061ffff841615610bff5760208117610c04565b602081165b905061ffff831615610c195760408117610c1e565b604081165b90508060fc60008a815260200190815260200160002060000160146101000a8154816001600160601b0302191690836001600160601b031602179055506040518060a00160405280886001600160801b031681526020018761ffff1681526020018661ffff1681526020018561ffff1681526020018461ffff1681525060ff60008a815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a81548161ffff021916908361ffff16021790555060408201518160000160126101000a81548161ffff021916908361ffff16021790555060608201518160000160146101000a81548161ffff021916908361ffff16021790555060808201518160000160166101000a81548161ffff021916908361ffff160217905550905050877f27831fc2ef572cce1298d5d9fc3cc1304eb5dfcea21d2190e5ad5943e4fa14fc88604051610da991906001600160801b0391909116815260200190565b60405180910390a260405161ffff8716815288907f11424874391782446f3957eb6ca27caa9af2d78d87980762c13090bd2845f71f9060200160405180910390a260405161ffff8616815288907f4554b2837a782a075cb46bd0c681b73ef5e49cbcbeb3323e6f1fd9d3ec93a4c39060200160405180910390a260405161ffff8516815288907fc9b39ee25167b4c4f1ba319c61772350b508db76f73d0b25575173210386d9f39060200160405180910390a260405161ffff8416815288907f3d36ae2226b041dc65d74c772bae84c40b4ac6d1da927d7b633940d819c09c1a9060200160405180910390a25050505050505050565b6001600160a01b037f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa3163003610ef05760405162461bcd60e51b8152600401610ee790612afc565b60405180910390fd5b7f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa36001600160a01b0316610f39600080516020612d94833981519152546001600160a01b031690565b6001600160a01b031614610f5f5760405162461bcd60e51b8152600401610ee790612b48565b610f6881611c77565b60408051600080825260208201909252610f8491839190611c7f565b50565b600083815260fc6020526040908190205490516328b50b3560e11b81526004810185905233602482015284916001600160a01b03169063516a166a90604401602060405180830381865afa158015610fe3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110079190612ada565b61102457604051634745a29b60e01b815260040160405180910390fd5b600084815260fe6020526040902061103d90848461254e565b541561107e57600084815260fc6020526040902080546001600160a01b0381166002600160a01b928390046001600160601b031617918202179091556110ac565b600084815260fc6020526040902080546001600160a01b0381166002600160a01b9283900416918202179091555b50837fd5a074e1c505de1aae7c94787f2e46faf07aceba6fc0c6a5f82f223ca1de2c5784846040516110df929190612b94565b60405180910390a250505050565b600082815260fc6020526040908190205490516328b50b3560e11b81526004810184905233602482015283916001600160a01b03169063516a166a90604401602060405180830381865afa158015611149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116d9190612ada565b61118a57604051634745a29b60e01b815260040160405180910390fd5b600083815260fc60205260408082208054600160a01b8082048719166001600160601b0316026001600160a01b039091161790555184917f43a5deaf1b43fdbf7f75cf9745d253c5d17328910ab7c757e664869316fe973391a2505050565b6001600160a01b037f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa31630036112315760405162461bcd60e51b8152600401610ee790612afc565b7f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa36001600160a01b031661127a600080516020612d94833981519152546001600160a01b031690565b6001600160a01b0316146112a05760405162461bcd60e51b8152600401610ee790612b48565b6112a982611c77565b6112b582826001611c7f565b5050565b6000306001600160a01b037f0000000000000000000000005fbdb2315678afecb367f032d93f642f64180aa316146113595760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610ee7565b50600080516020612d9483398151915290565b611374611def565b61137e6000611e49565b565b600082815260fc6020526040908190205490516328b50b3560e11b81526004810184905233602482015283916001600160a01b03169063516a166a90604401602060405180830381865afa1580156113dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114009190612ada565b61141d57604051634745a29b60e01b815260040160405180910390fd5b600083815260ff60205260409020805461ffff60b01b1916600160b01b61ffff8516908102919091179091551561148d57600083815260fc60205260409081902080546001600160601b03600160a01b808304919091169093179283026001600160a01b039091161790556114bc565b600083815260fc6020526040908190208054600160a01b8082049093169283026001600160a01b039091161790555b5060405161ffff8316815283907f3d36ae2226b041dc65d74c772bae84c40b4ac6d1da927d7b633940d819c09c1a906020016107e8565b600081815260fe602090815260409182902080548351818402810184019094528084526060939283018282801561154957602002820191906000526020600020905b815481526020019060010190808311611535575b50505050509050919050565b606061156360008484611e9b565b9392505050565b600054610100900460ff161580801561158a5750600054600160ff909116105b806115a45750303b1580156115a4575060005460ff166001145b6116075760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610ee7565b6000805460ff19166001179055801561162a576000805461ff0019166101001790555b611632612060565b61163b82611e49565b80156112b5576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600082815260fc6020526040908190205490516328b50b3560e11b81526004810184905233602482015283916001600160a01b03169063516a166a90604401602060405180830381865afa1580156116e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117049190612ada565b61172157604051634745a29b60e01b815260040160405180910390fd5b600083815260ff60205260409020805461ffff60a01b1916600160a01b61ffff8516908102919091179091551561179257600083815260fc6020908152604090912080546001600160601b03600160a01b808304919091169093179283026001600160a01b039091161790556117c2565b600083815260fc602090815260409091208054600160a01b8082049093169283026001600160a01b039091161790555b5060405161ffff8316815283907fc9b39ee25167b4c4f1ba319c61772350b508db76f73d0b25575173210386d9f3906020016107e8565b600080600061183d85858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506120cb92505050565b600081815260fb602052604090205491935091506001600160a01b031633146118795760405163ae7fd2eb60e01b815260040160405180910390fd5b6040805180820182523381526000602080830182815286835260fc90915290839020915190516001600160601b0316600160a01b026001600160a01b03919091161790555182907f76a77f5ff7e4ca0adac1c931a7ad2ea83bfb7e6b8603e81917dd2dca7e90625c906118ef9088908890612bf6565b60405180910390a2509392505050565b611907611def565b60008061194e600086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506120e29050565b909250905061195e600185612c20565b811461197d5760405163b444c4ed60e01b815260040160405180910390fd5b60408051600060208083018290528284018690528351808403850181526060840180865281519183019190912080845260fb835285842080546001600160a01b038b166001600160a01b0319918216811790925560fc90945295909320805490921685179091556309201c8b60e11b90529190631240391690611a0890899089908690606401612c33565b600060405180830381600087803b158015611a2257600080fd5b505af1158015611a36573d6000803e3d6000fd5b50505050807f7db14709557f4e6eec0d0c5f0c1855b31e9667a13ef65c90c284987c677d4004878787604051611a6e93929190612c57565b60405180910390a2505050505050565b600082815260fc6020526040908190205490516328b50b3560e11b81526004810184905233602482015283916001600160a01b03169063516a166a90604401602060405180830381865afa158015611ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611afe9190612ada565b611b1b57604051634745a29b60e01b815260040160405180910390fd5b600083815260ff60205260409020805461ffff60901b1916600160901b61ffff85169081029190911790915515611b8757600083815260fc6020526040902080546001600160a01b0381166010600160a01b928390046001600160601b03161791820217909155611bb5565b600083815260fc6020526040902080546001600160a01b0381166010600160a01b9283900416918202179091555b5060405161ffff8316815283907f4554b2837a782a075cb46bd0c681b73ef5e49cbcbeb3323e6f1fd9d3ec93a4c3906020016107e8565b6060611bf9848484611e9b565b949350505050565b611c09611def565b6001600160a01b038116611c6e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ee7565b610f8481611e49565b610f84611def565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611cb757611cb2836121e9565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d11575060408051601f3d908101601f19168201909252611d0e91810190612c83565b60015b611d745760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610ee7565b600080516020612d948339815191528114611de35760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610ee7565b50611cb2838383612285565b60c9546001600160a01b0316331461137e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ee7565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60608167ffffffffffffffff811115611eb657611eb66127fc565b604051908082528060200260200182016040528015611ee957816020015b6060815260200190600190039081611ed45790505b50905060005b82811015612058578415611fab576000848483818110611f1157611f11612c9c565b9050602002810190611f239190612cb2565b611f3291602491600491612cf9565b611f3b91612d23565b9050858114611fa95760405162461bcd60e51b815260206004820152603460248201527f6d756c746963616c6c3a20416c6c207265636f726473206d7573742068617665604482015273040c240dac2e8c6d0d2dcce40dcc2dacad0c2e6d60631b6064820152608401610ee7565b505b60008030868685818110611fc157611fc1612c9c565b9050602002810190611fd39190612cb2565b604051611fe1929190612d41565b600060405180830381855af49150503d806000811461201c576040519150601f19603f3d011682016040523d82523d6000602084013e612021565b606091505b50915091508161203057600080fd5b8084848151811061204357612043612c9c565b60209081029190910101525050600101611eef565b509392505050565b600054610100900460ff1661137e5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610ee7565b6000806120d98360006122b0565b91509150915091565b600080835183106121355760405162461bcd60e51b815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e647300006044820152606401610ee7565b600084848151811061214957612149612c9c565b016020015160f81c9050604081106121a35760405162461bcd60e51b815260206004820152601960248201527f726561644c6162656c3a204c6162656c20746f6f206c6f6e67000000000000006044820152606401610ee7565b80156121c5576121be856121b8866001612d51565b836123b4565b92506121ca565b600092505b6121d48185612d51565b6121df906001612d51565b9150509250929050565b6001600160a01b0381163b6122565760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610ee7565b600080516020612d9483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61228e836123d8565b60008251118061229b5750805b15611cb2576122aa8383612418565b50505050565b6000806000806122c086866120e2565b90925090508161233557600186516122d89190612c20565b85146123265760405162461bcd60e51b815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d650000006044820152606401610ee7565b50600092508291506123ad9050565b60008061234288846122b0565b9092509050806123795760408051600060208201529081018590526060016040516020818303038152906040528051906020012090505b6040805160208101849052908101859052606001604051602081830303815290604052805190602001208195509550505050505b9250929050565b82516000906123c38385612d51565b11156123ce57600080fd5b5091016020012090565b6123e1816121e9565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606115638383604051806060016040528060278152602001612db4602791396060600080856001600160a01b0316856040516124559190612d64565b600060405180830381855af49150503d8060008114612490576040519150601f19603f3d011682016040523d82523d6000602084013e612495565b606091505b50915091506124a6868383876124b0565b9695505050505050565b6060831561251f578251600003612518576001600160a01b0385163b6125185760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ee7565b5081611bf9565b611bf983838151156125345781518083602001fd5b8060405162461bcd60e51b8152600401610ee79190612d80565b828054828255906000526020600020908101928215612589579160200282015b8281111561258957823582559160200191906001019061256e565b50612595929150612599565b5090565b5b80821115612595576000815560010161259a565b6000602082840312156125c057600080fd5b81356001600160e01b03198116811461156357600080fd5b6000602082840312156125ea57600080fd5b5035919050565b6000806040838503121561260457600080fd5b50508035926020909101359150565b803561ffff8116811461262557600080fd5b919050565b6000806040838503121561263d57600080fd5b8235915061264d60208401612613565b90509250929050565b80356001600160801b038116811461262557600080fd5b6000806040838503121561268057600080fd5b8235915061264d60208401612656565b60008060008060008060c087890312156126a957600080fd5b863595506126b960208801612656565b94506126c760408801612613565b93506126d560608801612613565b92506126e360808801612613565b91506126f160a08801612613565b90509295509295509295565b80356001600160a01b038116811461262557600080fd5b60006020828403121561272657600080fd5b611563826126fd565b60008083601f84011261274157600080fd5b50813567ffffffffffffffff81111561275957600080fd5b6020830191508360208260051b85010111156123ad57600080fd5b60008060006040848603121561278957600080fd5b83359250602084013567ffffffffffffffff8111156127a757600080fd5b6127b38682870161272f565b9497909650939450505050565b600080604083850312156127d357600080fd5b8235915060208301356001600160601b03811681146127f157600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561282557600080fd5b61282e836126fd565b9150602083013567ffffffffffffffff8082111561284b57600080fd5b818501915085601f83011261285f57600080fd5b813581811115612871576128716127fc565b604051601f8201601f19908116603f01168101908382118183101715612899576128996127fc565b816040528281528860208487010111156128b257600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561290c578351835292840192918401916001016128f0565b50909695505050505050565b6000806020838503121561292b57600080fd5b823567ffffffffffffffff81111561294257600080fd5b61294e8582860161272f565b90969095509350505050565b60005b8381101561297557818101518382015260200161295d565b50506000910152565b6000815180845261299681602086016020860161295a565b601f01601f19169290920160200192915050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015612a0157603f198886030184526129ef85835161297e565b945092850192908501906001016129d3565b5092979650505050505050565b60008083601f840112612a2057600080fd5b50813567ffffffffffffffff811115612a3857600080fd5b6020830191508360208285010111156123ad57600080fd5b60008060208385031215612a6357600080fd5b823567ffffffffffffffff811115612a7a57600080fd5b61294e85828601612a0e565b600080600060408486031215612a9b57600080fd5b833567ffffffffffffffff811115612ab257600080fd5b612abe86828701612a0e565b9094509250612ad19050602085016126fd565b90509250925092565b600060208284031215612aec57600080fd5b8151801515811461156357600080fd5b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252810182905260006001600160fb1b03831115612bb457600080fd5b8260051b80856040850137919091016040019392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081526000611bf9602083018486612bcd565b634e487b7160e01b600052601160045260246000fd5b8181038181111561069257610692612c0a565b604081526000612c47604083018587612bcd565b9050826020830152949350505050565b604081526000612c6b604083018587612bcd565b905060018060a01b0383166020830152949350505050565b600060208284031215612c9557600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112612cc957600080fd5b83018035915067ffffffffffffffff821115612ce457600080fd5b6020019150368190038213156123ad57600080fd5b60008085851115612d0957600080fd5b83861115612d1657600080fd5b5050820193919092039150565b8035602083101561069257600019602084900360031b1b1692915050565b8183823760009101908152919050565b8082018082111561069257610692612c0a565b60008251612d7681846020870161295a565b9190910192915050565b602081526000611563602083018461297e56fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220f97e4a00a4da0ccef9252d66622af43a1b0f2a010cb3a3eaaa4852b3834f5b3964736f6c63430008170033","storage":{"0x0":"0x1","0xc9":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x253e3eb16d37c7e1837927b1f26cda8e668e94265499b5b6029960f252e265f1":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","0x89e10369286ef9cf9f02a301282444f2790f3daf3700c9f6d8b018e087143ed9":"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9","0xb4b8d395f93f067314ef000ce14e32b136346d90125e0e1c80658e6a9f58e0d3":"0x1dc64a140aa3e981100a9beca4e685f962f0cf6c9","0xc6000aa414ed52babc2533706af4f41af0043952be3928dd2e96e5f8b7092d85":"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef","0xca609c0ece4ef6d2df66c5fbfc6deabe7a00a8b9f32315f9c2e2b279da03b1e5":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","0xe257a94489d11ce58249904973efb8ca1f297c844075830106f64562f316654a":"0x235a0000000000000000000000007f000001","0xf71ed6c7cbd7acefd7c3cdba7c65bee1a9cf2d9b73a80250d842d0f8f940a386":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0"}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x8a791620dd6260079bf849dc5567adc3f2fdc318":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101d85760003560e01c8063715018a611610102578063b3c6501511610095578063c9715fed11610064578063c9715fed146105a6578063e8a3d485146105c6578063e985e9c5146105db578063f2fde38b146105fb57600080fd5b8063b3c6501514610519578063b88d4fde14610546578063c4d66de814610566578063c87b56dd1461058657600080fd5b806395d89b41116100d157806395d89b4114610493578063a2207c6a146104a8578063a22cb465146104c8578063ad3cb1cc146104e857600080fd5b8063715018a6146104015780637e5b1e24146104165780637f394f3b146104365780638da5cb5b1461045657600080fd5b80634b3101941161017a5780636352211e116101495780636352211e1461037457806364e4ffb41461039457806369f1aaaf146103c157806370a08231146103e157600080fd5b80634b310194146102ee5780634f1ef2861461030e57806352d1902d1461032157806361acc37e1461034457600080fd5b8063095ea7b3116101b6578063095ea7b31461026c57806323b872dd1461028e5780633eeb46dc146102ae57806342842e0e146102ce57600080fd5b806301ffc9a7146101dd57806306fdde0314610212578063081812fc14610234575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004612295565b61061b565b60405190151581526020015b60405180910390f35b34801561021e57600080fd5b5061022761066d565b6040516102099190612302565b34801561024057600080fd5b5061025461024f366004612315565b610711565b6040516001600160a01b039091168152602001610209565b34801561027857600080fd5b5061028c610287366004612343565b610726565b005b34801561029a57600080fd5b5061028c6102a936600461236f565b610735565b3480156102ba57600080fd5b5061028c6102c93660046123f8565b6107c5565b3480156102da57600080fd5b5061028c6102e936600461236f565b610868565b3480156102fa57600080fd5b5061028c610309366004612315565b610888565b61028c61031c3660046124f5565b610908565b34801561032d57600080fd5b50610336610923565b604051908152602001610209565b34801561035057600080fd5b5061036461035f366004612315565b610940565b604051610209949392919061253a565b34801561038057600080fd5b5061025461038f366004612315565b610a78565b3480156103a057600080fd5b506103b46103af366004612315565b610a83565b6040516102099190612577565b3480156103cd57600080fd5b506103366103dc3660046125d1565b610bfe565b3480156103ed57600080fd5b506103366103fc366004612641565b610c32565b34801561040d57600080fd5b5061028c610c8e565b34801561042257600080fd5b5061028c61043136600461265e565b610ca2565b34801561044257600080fd5b506103b461045136600461269f565b610cb7565b34801561046257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610254565b34801561049f57600080fd5b50610227610eb2565b3480156104b457600080fd5b50600154610254906001600160a01b031681565b3480156104d457600080fd5b5061028c6104e336600461270a565b610ef1565b3480156104f457600080fd5b50610227604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561052557600080fd5b5061052e610efc565b6040516001600160401b039091168152602001610209565b34801561055257600080fd5b5061028c610561366004612748565b610f34565b34801561057257600080fd5b5061028c610581366004612641565b610f4b565b34801561059257600080fd5b506102276105a1366004612315565b6110ca565b3480156105b257600080fd5b5061028c6105c13660046127b3565b61116f565b3480156105d257600080fd5b506102276113cc565b3480156105e757600080fd5b506101fd6105f6366004612855565b61145e565b34801561060757600080fd5b5061028c610616366004612641565b6114ab565b60006001600160e01b031982166380ac58cd60e01b148061064c57506001600160e01b03198216635b5e139f60e01b145b8061066757506301ffc9a760e01b6001600160e01b03198316145b92915050565b600080516020612c8f833981519152805460609190819061068d90612883565b80601f01602080910402602001604051908101604052809291908181526020018280546106b990612883565b80156107065780601f106106db57610100808354040283529160200191610706565b820191906000526020600020905b8154815290600101906020018083116106e957829003601f168201915b505050505091505090565b600061071c826114e9565b5061066782611521565b61073182823361155b565b5050565b6001600160a01b03821661076457604051633250574960e11b8152600060048201526024015b60405180910390fd5b6000610771838333611568565b9050836001600160a01b0316816001600160a01b0316146107bf576040516364283d7b60e01b81526001600160a01b038086166004830152602482018490528216604482015260640161075b565b50505050565b6107ce84610a78565b6001600160a01b0316336001600160a01b0316146107fe576040516282b42960e81b815260040160405180910390fd5b60008481526020819052604090206002810161081b848683612905565b50818160030181905550847ff93ad79095f36c023b37185f46e32cfd6681ee16e1e3bfabff2653b1013eb1d7858585604051610859939291906129ed565b60405180910390a25050505050565b61088383838360405180602001604052806000815250610f34565b505050565b61089181610a78565b6001600160a01b0316336001600160a01b0316146108c1576040516282b42960e81b815260040160405180910390fd5b6108ca81611674565b6000818152602081905260408120906108e38282612231565b60018201600090556002820160006108fb9190612231565b6003820160009055505050565b6109106116af565b61091982611754565b610731828261175c565b600061092d611819565b50600080516020612caf83398151915290565b60006020819052908152604090208054819061095b90612883565b80601f016020809104026020016040519081016040528092919081815260200182805461098790612883565b80156109d45780601f106109a9576101008083540402835291602001916109d4565b820191906000526020600020905b8154815290600101906020018083116109b757829003601f168201915b5050505050908060010154908060020180546109ef90612883565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90612883565b8015610a685780601f10610a3d57610100808354040283529160200191610a68565b820191906000526020600020905b815481529060010190602001808311610a4b57829003601f168201915b5050505050908060030154905084565b6000610667826114e9565b60408051608081018252606080825260006020830181905292820181905281019190915260008281526020819052604090819020815160808101909252805482908290610acf90612883565b80601f0160208091040260200160405190810160405280929190818152602001828054610afb90612883565b8015610b485780601f10610b1d57610100808354040283529160200191610b48565b820191906000526020600020905b815481529060010190602001808311610b2b57829003601f168201915b5050505050815260200160018201548152602001600282018054610b6b90612883565b80601f0160208091040260200160405190810160405280929190818152602001828054610b9790612883565b8015610be45780601f10610bb957610100808354040283529160200191610be4565b820191906000526020600020905b815481529060010190602001808311610bc757829003601f168201915b505050505081526020016003820154815250509050919050565b60008282604051602001610c13929190612a11565b60408051601f1981840301815291905280516020909101209392505050565b6000600080516020612c8f8339815191526001600160a01b038316610c6d576040516322718ad960e21b81526000600482015260240161075b565b6001600160a01b039092166000908152600390920160205250604090205490565b610c96611862565b610ca060006118bd565b565b610caa611862565b6002610883828483612905565b6040805160808101825260608082526000602083018190529282018190528101919091526000610d5086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250610bfe92505050565b9050600080828152602001908152602001600020604051806080016040529081600082018054610d7f90612883565b80601f0160208091040260200160405190810160405280929190818152602001828054610dab90612883565b8015610df85780601f10610dcd57610100808354040283529160200191610df8565b820191906000526020600020905b815481529060010190602001808311610ddb57829003601f168201915b5050505050815260200160018201548152602001600282018054610e1b90612883565b80601f0160208091040260200160405190810160405280929190818152602001828054610e4790612883565b8015610e945780601f10610e6957610100808354040283529160200191610e94565b820191906000526020600020905b815481529060010190602001808311610e7757829003601f168201915b50505050508152602001600382015481525050915050949350505050565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793018054606091600080516020612c8f8339815191529161068d90612883565b61073133838361192e565b6000610f2f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00546001600160401b031690565b905090565b610f3f848484610735565b6107bf848484846119df565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610f905750825b90506000826001600160401b03166001148015610fac5750303b155b905081158015610fba575080155b15610fd85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561100257845460ff60401b1916600160401b1785555b61100a611b08565b61101333611b10565b6110616040518060400160405280601081526020016f4b696e6f6465204170702053746f726560801b8152506040518060400160405280600481526020016304b4150560e41b815250611b21565b600180546001600160a01b0319166001600160a01b03881617905583156110c257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60008181526020819052604090206002018054606091906110ea90612883565b80601f016020809104026020016040519081016040528092919081815260200182805461111690612883565b80156111635780601f1061113857610100808354040283529160200191611163565b820191906000526020600020905b81548152906001019060200180831161114657829003601f168201915b50505050509050919050565b60006111b086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611b3392505050565b60015460405163d86e697d60e01b8152600481018390529192506000916001600160a01b039091169063d86e697d906024016040805180830381865afa1580156111fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112229190612a40565b506040516331a9108f60e11b8152600481018490529091506001600160a01b03821690636352211e90602401602060405180830381865afa15801561126b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061128f9190612a80565b6001600160a01b0316336001600160a01b0316146112bf576040516282b42960e81b815260040160405180910390fd5b60006113348a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b9081908401838280828437600092019190915250610bfe92505050565b90506113403382611b40565b60008181526020819052604090208061135a8b8d83612905565b506001810184905560028101611371878983612905565b50848160030181905550817f9cbc17b30252391789ecc59d740af1417503d0e3aa6cbfbfc6417d52cab274cf8c8c8c8c8c8c8c6040516113b79796959493929190612a9d565b60405180910390a25050505050505050505050565b6060600280546113db90612883565b80601f016020809104026020016040519081016040528092919081815260200182805461140790612883565b80156114545780601f1061142957610100808354040283529160200191611454565b820191906000526020600020905b81548152906001019060200180831161143757829003601f168201915b5050505050905090565b6001600160a01b0391821660009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab00793056020908152604080832093909416825291909152205460ff1690565b6114b3611862565b6001600160a01b0381166114dd57604051631e4fbdf760e01b81526000600482015260240161075b565b6114e6816118bd565b50565b6000806114f583611b5a565b90506001600160a01b03811661066757604051637e27328960e01b81526004810184905260240161075b565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930460205260409020546001600160a01b031690565b6108838383836001611b94565b6000600080516020612c8f8339815191528161158385611b5a565b90506001600160a01b0384161561159f5761159f818587611caa565b6001600160a01b038116156115df576115bc600086600080611b94565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615611610576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a49150505b9392505050565b60006116836000836000611568565b90506001600160a01b03811661073157604051637e27328960e01b81526004810183905260240161075b565b306001600160a01b037f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc31816148061173657507f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3186001600160a01b031661172a600080516020612caf833981519152546001600160a01b031690565b6001600160a01b031614155b15610ca05760405163703e46dd60e11b815260040160405180910390fd5b6114e6611862565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117b6575060408051601f3d908101601f191682019092526117b391810190612aee565b60015b6117de57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161075b565b600080516020612caf833981519152811461180f57604051632a87526960e21b81526004810182905260240161075b565b6108838383611d0e565b306001600160a01b037f0000000000000000000000008a791620dd6260079bf849dc5567adc3f2fdc3181614610ca05760405163703e46dd60e11b815260040160405180910390fd5b336118947f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610ca05760405163118cdaa760e01b815233600482015260240161075b565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b600080516020612c8f8339815191526001600160a01b03831661196f57604051630b61174360e31b81526001600160a01b038416600482015260240161075b565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b6001600160a01b0383163b156107bf57604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611a21903390889087908790600401612b07565b6020604051808303816000875af1925050508015611a5c575060408051601f3d908101601f19168201909252611a5991810190612b44565b60015b611ac5573d808015611a8a576040519150601f19603f3d011682016040523d82523d6000602084013e611a8f565b606091505b508051600003611abd57604051633250574960e11b81526001600160a01b038516600482015260240161075b565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611b0157604051633250574960e11b81526001600160a01b038516600482015260240161075b565b5050505050565b610ca0611d64565b611b18611d64565b6114e681611dad565b611b29611d64565b6107318282611db5565b6000610667826000611de6565b610731828260405180602001604052806000815250611ea5565b60009081527f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930260205260409020546001600160a01b031690565b600080516020612c8f8339815191528180611bb757506001600160a01b03831615155b15611c79576000611bc7856114e9565b90506001600160a01b03841615801590611bf35750836001600160a01b0316816001600160a01b031614155b8015611c065750611c04818561145e565b155b15611c2f5760405163a9fbf51f60e01b81526001600160a01b038516600482015260240161075b565b8215611c775784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b611cb5838383611ebc565b610883576001600160a01b038316611ce357604051637e27328960e01b81526004810182905260240161075b565b60405163177e802f60e01b81526001600160a01b03831660048201526024810182905260440161075b565b611d1782611f22565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611d5c576108838282611f87565b610731611ffd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610ca057604051631afcd79f60e31b815260040160405180910390fd5b6114b3611d64565b611dbd611d64565b600080516020612c8f83398151915280611dd78482612b61565b50600181016107bf8382612b61565b6000806000611df5858561201c565b909250905081611e675760018551611e0d9190612c36565b8414611e5b5760405162461bcd60e51b815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d65000000604482015260640161075b565b50600091506106679050565b611e718582611de6565b6040805160208101929092528101839052606001604051602081830303815290604052805190602001209250505092915050565b611eaf8383612123565b61088360008484846119df565b60006001600160a01b03831615801590611f1a5750826001600160a01b0316846001600160a01b03161480611ef65750611ef6848461145e565b80611f1a5750826001600160a01b0316611f0f83611521565b6001600160a01b0316145b949350505050565b806001600160a01b03163b600003611f5857604051634c9c8ce360e01b81526001600160a01b038216600482015260240161075b565b600080516020612caf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051611fa49190612c49565b600060405180830381855af49150503d8060008114611fdf576040519150601f19603f3d011682016040523d82523d6000602084013e611fe4565b606091505b5091509150611ff4858383612188565b95945050505050565b3415610ca05760405163b398979f60e01b815260040160405180910390fd5b6000808351831061206f5760405162461bcd60e51b815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e64730000604482015260640161075b565b600084848151811061208357612083612c65565b016020015160f81c9050604081106120dd5760405162461bcd60e51b815260206004820152601960248201527f726561644c6162656c3a204c6162656c20746f6f206c6f6e6700000000000000604482015260640161075b565b80156120ff576120f8856120f2866001612c7b565b836121e4565b9250612104565b600092505b61210e8185612c7b565b612119906001612c7b565b9150509250929050565b6001600160a01b03821661214d57604051633250574960e11b81526000600482015260240161075b565b600061215b83836000611568565b90506001600160a01b03811615610883576040516339e3563760e11b81526000600482015260240161075b565b60608261219d5761219882612208565b61166d565b81511580156121b457506001600160a01b0384163b155b156121dd57604051639996b31560e01b81526001600160a01b038516600482015260240161075b565b508061166d565b82516000906121f38385612c7b565b11156121fe57600080fd5b5091016020012090565b8051156122185780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50805461223d90612883565b6000825580601f1061224d575050565b601f0160209004906000526020600020908101906114e691905b8082111561227b5760008155600101612267565b5090565b6001600160e01b0319811681146114e657600080fd5b6000602082840312156122a757600080fd5b813561166d8161227f565b60005b838110156122cd5781810151838201526020016122b5565b50506000910152565b600081518084526122ee8160208601602086016122b2565b601f01601f19169290920160200192915050565b60208152600061166d60208301846122d6565b60006020828403121561232757600080fd5b5035919050565b6001600160a01b03811681146114e657600080fd5b6000806040838503121561235657600080fd5b82356123618161232e565b946020939093013593505050565b60008060006060848603121561238457600080fd5b833561238f8161232e565b9250602084013561239f8161232e565b929592945050506040919091013590565b60008083601f8401126123c257600080fd5b5081356001600160401b038111156123d957600080fd5b6020830191508360208285010111156123f157600080fd5b9250929050565b6000806000806060858703121561240e57600080fd5b8435935060208501356001600160401b0381111561242b57600080fd5b612437878288016123b0565b9598909750949560400135949350505050565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111561247a5761247a61244a565b604051601f8501601f19908116603f011681019082821181831017156124a2576124a261244a565b816040528093508581528686860111156124bb57600080fd5b858560208301376000602087830101525050509392505050565b600082601f8301126124e657600080fd5b61166d83833560208501612460565b6000806040838503121561250857600080fd5b82356125138161232e565b915060208301356001600160401b0381111561252e57600080fd5b612119858286016124d5565b60808152600061254d60808301876122d6565b856020840152828103604084015261256581866122d6565b91505082606083015295945050505050565b60208152600082516080602084015261259360a08401826122d6565b9050602084015160408401526040840151601f198483030160608501526125ba82826122d6565b915050606084015160808401528091505092915050565b600080604083850312156125e457600080fd5b82356001600160401b03808211156125fb57600080fd5b818501915085601f83011261260f57600080fd5b61261e86833560208501612460565b9350602085013591508082111561263457600080fd5b50612119858286016124d5565b60006020828403121561265357600080fd5b813561166d8161232e565b6000806020838503121561267157600080fd5b82356001600160401b0381111561268757600080fd5b612693858286016123b0565b90969095509350505050565b600080600080604085870312156126b557600080fd5b84356001600160401b03808211156126cc57600080fd5b6126d8888389016123b0565b909650945060208701359150808211156126f157600080fd5b506126fe878288016123b0565b95989497509550505050565b6000806040838503121561271d57600080fd5b82356127288161232e565b91506020830135801515811461273d57600080fd5b809150509250929050565b6000806000806080858703121561275e57600080fd5b84356127698161232e565b935060208501356127798161232e565b92506040850135915060608501356001600160401b0381111561279b57600080fd5b6127a7878288016124d5565b91505092959194509250565b60008060008060008060006080888a0312156127ce57600080fd5b87356001600160401b03808211156127e557600080fd5b6127f18b838c016123b0565b909950975060208a013591508082111561280a57600080fd5b6128168b838c016123b0565b909750955060408a013591508082111561282f57600080fd5b5061283c8a828b016123b0565b989b979a50959894979596606090950135949350505050565b6000806040838503121561286857600080fd5b82356128738161232e565b9150602083013561273d8161232e565b600181811c9082168061289757607f821691505b6020821081036128b757634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610883576000816000526020600020601f850160051c810160208610156128e65750805b601f850160051c820191505b818110156110c2578281556001016128f2565b6001600160401b0383111561291c5761291c61244a565b6129308361292a8354612883565b836128bd565b6000601f841160018114612964576000851561294c5750838201355b600019600387901b1c1916600186901b178355611b01565b600083815260209020601f19861690835b828110156129955786850135825560209485019460019092019101612975565b50868210156129b25760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000612a016040830185876129c4565b9050826020830152949350505050565b60008351612a238184602088016122b2565b835190830190612a378183602088016122b2565b01949350505050565b60008060408385031215612a5357600080fd5b8251612a5e8161232e565b60208401519092506bffffffffffffffffffffffff8116811461273d57600080fd5b600060208284031215612a9257600080fd5b815161166d8161232e565b608081526000612ab160808301898b6129c4565b8281036020840152612ac481888a6129c4565b90508281036040840152612ad98186886129c4565b91505082606083015298975050505050505050565b600060208284031215612b0057600080fd5b5051919050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612b3a908301846122d6565b9695505050505050565b600060208284031215612b5657600080fd5b815161166d8161227f565b81516001600160401b03811115612b7a57612b7a61244a565b612b8e81612b888454612883565b846128bd565b602080601f831160018114612bc35760008415612bab5750858301515b600019600386901b1c1916600185901b1785556110c2565b600085815260208120601f198616915b82811015612bf257888601518255948401946001909101908401612bd3565b5085821015612c105787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066757610667612c20565b60008251612c5b8184602087016122b2565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b8082018082111561066757610667612c2056fe80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220e92be1cafd178656b21fe44a60ed548259497addbf1a070b00d2c841feebf36364736f6c63430008170033","storage":{"0x1":"0x5fbdb2315678afecb367f032d93f642f64180aa3","0x3229500cc9112a2de10dacba62601496b8a6ae623e4d41b5fa26d8de6d2481d":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x5d29bb9cd91f5535960c01069c57171fefa2f2ad7068e106b08f1813ad892b61":"0x1","0x664fd84b0f666ae96e4ee4d6c7d2222eb735cfa971cfc57c6ec4eb0ab11202e7":"0x706c616365686f6c646572000000000000000000000000000000000000000016","0x664fd84b0f666ae96e4ee4d6c7d2222eb735cfa971cfc57c6ec4eb0ab11202e8":"0x35a8ed91bbab6303571ca1b7d41ef593522a8c82d464ed0365c7d1778eddb6a6","0x664fd84b0f666ae96e4ee4d6c7d2222eb735cfa971cfc57c6ec4eb0ab11202e9":"0x119","0x664fd84b0f666ae96e4ee4d6c7d2222eb735cfa971cfc57c6ec4eb0ab11202ea":"0xdcf8c911146dddf37193c62b14eac3687a8d4064b74e5963d4d6bf58e0a4d439","0x80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300":"0x4b696e6f6465204170702053746f726500000000000000000000000000000020","0x80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079301":"0x4b41505000000000000000000000000000000000000000000000000000000008","0x9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0xeb2b3f25acb768bf783256f16a1bd285be54d6194aca2ec3bda77bfb498c9a23":"0x68747470733a2f2f676973742e67697468756275736572636f6e74656e742e63","0xeb2b3f25acb768bf783256f16a1bd285be54d6194aca2ec3bda77bfb498c9a24":"0x6f6d2f62697466756c2d70616e6e756c2f393235613431653235316263373766","0xeb2b3f25acb768bf783256f16a1bd285be54d6194aca2ec3bda77bfb498c9a25":"0x62313539343966626432633839643430652f7261772f64643261616539393630","0xeb2b3f25acb768bf783256f16a1bd285be54d6194aca2ec3bda77bfb498c9a26":"0x6163323631396135366630663534393734363338376631306538643362312f6d","0xeb2b3f25acb768bf783256f16a1bd285be54d6194aca2ec3bda77bfb498c9a27":"0x657461646174612e6a736f6e0000000000000000000000000000000000000000","0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x1"}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101f95760003560e01c806370a082311161010d578063b3c65015116100a0578063d123f99a1161006f578063d123f99a146105c3578063d314c607146105d6578063d5c457141461061f578063e985e9c514610635578063f2fde38b1461065557600080fd5b8063b3c6501514610546578063b88d4fde1461056d578063c1ea25f11461058d578063d1131c72146105ad57600080fd5b80638c4e3f32116100dc5780638c4e3f32146104d35780638da5cb5b146104f357806395d89b4114610511578063a22cb4651461052657600080fd5b806370a0823114610451578063715018a614610471578063819eb62514610486578063898572a6146104a657600080fd5b80633659cfe611610190578063516a166a1161015f578063516a166a146103ae57806352d1902d146103ce57806355bf3ec7146103f15780635864c817146104115780636352211e1461043157600080fd5b80633659cfe61461033b57806342842e0e1461035b578063485cc9551461037b5780634f1ef2861461039b57600080fd5b806312403916116101cc57806312403916146102c65780631492017b146102e657806323b872dd14610306578063303bc8ac1461032657600080fd5b806301ffc9a7146101fe57806306fdde0314610234578063081812fc14610256578063095ea7b3146102a4575b600080fd5b34801561020a57600080fd5b5061021f61021936600461211e565b50600090565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b50610249610675565b60405161022b919061218b565b34801561026257600080fd5b5061028c61027136600461219e565b6000908152600860205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161022b565b3480156102b057600080fd5b506102c46102bf3660046121d3565b610707565b005b3480156102d257600080fd5b506102c46102e136600461223f565b610791565b3480156102f257600080fd5b5061021f61030136600461228b565b61083d565b34801561031257600080fd5b506102c46103213660046122b7565b610894565b34801561033257600080fd5b506102496108c6565b34801561034757600080fd5b506102c46103563660046122f3565b610954565b34801561036757600080fd5b506102c46103763660046122b7565b610a3c565b34801561038757600080fd5b506102c461039636600461230e565b610a57565b6102c46103a93660046123fd565b610bcb565b3480156103ba57600080fd5b5061021f6103c936600461228b565b610c9b565b3480156103da57600080fd5b506103e3610cae565b60405190815260200161022b565b3480156103fd57600080fd5b5060005461028c906001600160a01b031681565b34801561041d57600080fd5b506102c461042c366004612441565b610d61565b34801561043d57600080fd5b5061028c61044c36600461219e565b610e32565b34801561045d57600080fd5b506103e361046c3660046122f3565b610e67565b34801561047d57600080fd5b506102c4610eac565b34801561049257600080fd5b506102c46104a1366004612486565b610ec0565b3480156104b257600080fd5b506103e36104c136600461219e565b60d46020526000908152604090205481565b3480156104df57600080fd5b506102c46104ee3660046124b0565b610ecb565b3480156104ff57600080fd5b50603e546001600160a01b031661028c565b34801561051d57600080fd5b50610249610f6b565b34801561053257600080fd5b506102c4610541366004612486565b610f7a565b34801561055257600080fd5b5061055b610f85565b60405160ff909116815260200161022b565b34801561057957600080fd5b506102c46105883660046124f3565b610f98565b34801561059957600080fd5b5061021f6105a83660046121d3565b610fcb565b3480156105b957600080fd5b506103e360015481565b6103e36105d136600461255b565b610fd7565b3480156105e257600080fd5b5061021f6105f136600461230e565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b34801561062b57600080fd5b506103e360025481565b34801561064157600080fd5b5061021f61065036600461230e565b611003565b34801561066157600080fd5b506102c46106703660046122f3565b611031565b6060600480546106849061260c565b80601f01602080910402602001604051908101604052809291908181526020018280546106b09061260c565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b5050505050905090565b600061071282610e32565b9050806001600160a01b0316836001600160a01b0316036107465760405163091fbd5360e01b815260040160405180910390fd5b336001600160a01b0382161480159061076457506107648133611003565b15610782576040516307e8a24360e21b815260040160405180910390fd5b61078c83836110a7565b505050565b600254156107b257604051630ea075bf60e21b815260040160405180910390fd5b6000546001600160a01b031633146107dd57604051637c26bcc360e01b815260040160405180910390fd5b600281905560036107ef838583612696565b50610834600084848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506111159050565b50600155505050565b60005b8015801561085057506002548314155b1561088e5761085f838361121c565b90508061088e5761086f8361124a565b1561088a57600092835260d460205260409092205491610840565b5060005b92915050565b61089e3382611262565b6108bb576040516307e8a24360e21b815260040160405180910390fd5b61078c8383836112c1565b600380546108d39061260c565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff9061260c565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b505050505081565b6001600160a01b037f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e01630036109a55760405162461bcd60e51b815260040161099c90612757565b60405180910390fd5b7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e06001600160a01b03166109ee600080516020612aac833981519152546001600160a01b031690565b6001600160a01b031614610a145760405162461bcd60e51b815260040161099c906127a3565b610a1d816113ff565b60408051600080825260208201909252610a3991839190611407565b50565b61078c83838360405180602001604052806000815250610f98565b600b54610100900460ff1615808015610a775750600b54600160ff909116105b80610a915750303b158015610a915750600b5460ff166001145b610af45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161099c565b600b805460ff191660011790558015610b1757600b805461ff0019166101001790555b604080518082018252600f81526e2e4f53204b4e5320446f6d61696e7360881b60209182015281518083019092526005825264444f544f5360d81b910152600080546001600160a01b0319166001600160a01b038516179055610b78611572565b610b81826115dd565b801561078c57600b805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0163003610c135760405162461bcd60e51b815260040161099c90612757565b7f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e06001600160a01b0316610c5c600080516020612aac833981519152546001600160a01b031690565b6001600160a01b031614610c825760405162461bcd60e51b815260040161099c906127a3565b610c8b826113ff565b610c9782826001611407565b5050565b6000610ca7838361083d565b9392505050565b6000306001600160a01b037f0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e01614610d4e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161099c565b50600080516020612aac83398151915290565b6000806000610d6f8461162f565b925092509250808203610d955760405163abddc77160e01b815260040160405180910390fd5b610d9f8233610c9b565b15610e135760006001610db18561168f565b179050610dcd8185600090815260066020526040902081905590565b506040805185815260208101859052338183015290517f7de9cdc5b55386112f86114d6e841bde7e78203bea81a912271231dffde1be769181900360600190a150610e2c565b60405163ea8e4eb560e01b815260040160405180910390fd5b50505050565b600080610e3e836116a3565b90506001600160a01b03811661088e5760405163089ba7e160e41b815260040160405180910390fd5b60006001600160a01b038216610e9057604051633d6932c760e21b815260040160405180910390fd5b506001600160a01b031660009081526007602052604090205490565b610eb46116ba565b610ebe60006115dd565b565b610c97338383611714565b816001600160a01b0316836001600160a01b031603610efd5760405163091fbd5360e01b815260040160405180910390fd5b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b6060600580546106849061260c565b610c97338383610ecb565b6000610f93600b5460ff1690565b905090565b610fa23383611262565b610fbf576040516307e8a24360e21b815260040160405180910390fd5b610e2c848484846117ab565b6000610ca783836117df565b600080610fe78787600033611823565b509050610ff88787878488886119ce565b979650505050505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b6110396116ba565b6001600160a01b03811661109e5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b610a39816115dd565b600081815260086020526040902080546001600160a01b0319166001600160a01b03841690811790915581906110dc826116a3565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080835183106111685760405162461bcd60e51b815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e64730000604482015260640161099c565b600084848151811061117c5761117c6127ef565b016020015160f81c9050604081106111d65760405162461bcd60e51b815260206004820152601960248201527f726561644c6162656c3a204c6162656c20746f6f206c6f6e6700000000000000604482015260640161099c565b80156111f8576111f1856111eb86600161281b565b83611b2f565b92506111fd565b600092505b611207818561281b565b61121290600161281b565b9150509250929050565b60006001600160a01b03821630148061123a575061123a82846117df565b80610ca75750610ca78284611262565b60008181526006602052604081205461088e90611b53565b60008061126e836116a3565b9050806001600160a01b0316846001600160a01b0316148061129557506112958185611003565b806112b957506000838152600860205260409020546001600160a01b038581169116145b949350505050565b6001600160a01b0382166000036112eb576040516328aad33f60e21b815260040160405180910390fd5b826001600160a01b03166112fe826116a3565b6001600160a01b0316146113255760405163e146af6f60e01b815260040160405180910390fd5b826001600160a01b0316611338826116a3565b6001600160a01b03161461135f5760405163e146af6f60e01b815260040160405180910390fd5b600081815260086020908152604080832080546001600160a01b03191690556001600160a01b0386811680855260078452828520805460001901905590861680855282852080546001019055858552600690935281842080546001600160601b0316606088901b6001600160601b031916179055905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610a396116ba565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561143a5761078c83611b68565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611494575060408051601f3d908101601f191682019092526114919181019061282e565b60015b6114f75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161099c565b600080516020612aac83398151915281146115665760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161099c565b5061078c838383611c04565b600b54610100900460ff16610ebe5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161099c565b603e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080600080600061164086611c29565b915091506000806116518884611c40565b6040805160208101849052908101879052919350915060600160408051808303601f1901815291905280516020909101209891975095509350505050565b60008181526006602052604081205461088e565b60008181526006602052604081205460601c61088e565b603e546001600160a01b03163314610ebe5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b816001600160a01b0316836001600160a01b03160361174657604051637417c83160e11b815260040160405180910390fd5b6001600160a01b038381166000818152600a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527fadc620d6f66bc2f5355112336dd7957aecdc5480a6d6e771c356503869756c449101610f5e565b6117b68484846112c1565b6117c284848484611d44565b610e2c57604051633a3614b760e01b815260040160405180910390fd5b6000600a60006117ee846116a3565b6001600160a01b039081168252602080830193909352604091820160009081209187168152925290205460ff16905092915050565b60008060008061186c8689898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506111159050565b909250905061187c600188612847565b81036118b45760015482146118a45760405163027a726d60e31b815260040160405180910390fd5b60025460019350935050506119c5565b6000806118c38a8a858a611823565b91509150600254821480156118e2575060096118df8985612847565b11155b156119005760405163cecd40e560e01b815260040160405180910390fd5b60408051602080820185905281830187905282518083038401815260609092018352815191810191909120600081815260d490925291812054900361195157600081815260d4602052604090208390555b8815611988576119608161124a565b61196957600091505b8161197b57611978818961121c565b91505b955093506119c592505050565b816119a657604051632b8839a960e01b815260040160405180910390fd5b60025483146119b65760006119b9565b60015b60019650965050505050505b94509492505050565b60008054604051633255528360e21b815282916001600160a01b03169063c9554a0c90611a01908b908b90600401612883565b6020604051808303816000875af1158015611a20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a44919061282e565b9150819050611a538682611e46565b611aa0611a8c86611a708560009081526006602052604090205490565b6001600160601b031981166001600160601b0383161792915050565b600084815260066020526040902081905590565b508215611b245760005460405163e32954eb60e01b81526001600160a01b039091169063e32954eb90611adb90849088908890600401612897565b6000604051808303816000875af1158015611afa573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611b229190810190612940565b505b509695505050505050565b8251600090611b3e838561281b565b1115611b4957600080fd5b5091016020012090565b600081158061088e5750506001908116141590565b6001600160a01b0381163b611bd55760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161099c565b600080516020612aac83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611c0d83611e60565b600082511180611c1a5750805b1561078c57610e2c8383611ea0565b600080611c37836000611115565b91509150915091565b600080600080611c508686611115565b909250905081611cc55760018651611c689190612847565b8514611cb65760405162461bcd60e51b815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d65000000604482015260640161099c565b5060009250829150611d3d9050565b600080611cd28884611c40565b909250905080611d095760408051600060208201529081018590526060016040516020818303038152906040528051906020012090505b6040805160208101849052908101859052606001604051602081830303815290604052805190602001208195509550505050505b9250929050565b60006001600160a01b0384163b15611e3b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d88903390899088908890600401612a3f565b6020604051808303816000875af1925050508015611dc3575060408051601f3d908101601f19168201909252611dc091810190612a72565b60015b611e21573d808015611df1576040519150601f19603f3d011682016040523d82523d6000602084013e611df6565b606091505b508051600003611e1957604051633a3614b760e01b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506112b9565b506001949350505050565b610c97828260405180602001604052806000815250611ec5565b611e6981611b68565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610ca78383604051806060016040528060278152602001612acc60279139611ef9565b611ecf8383611f71565b611edc6000848484611d44565b61078c57604051633a3614b760e01b815260040160405180910390fd5b6060600080856001600160a01b031685604051611f169190612a8f565b600060405180830381855af49150503d8060008114611f51576040519150601f19603f3d011682016040523d82523d6000602084013e611f56565b606091505b5091509150611f678683838761206a565b9695505050505050565b6001600160a01b038216611f985760405163507508af60e11b815260040160405180910390fd5b60008181526006602052604090205415611fc5576040516324a255d960e11b815260040160405180910390fd5b60008181526006602052604090205415611ff2576040516324a255d960e11b815260040160405180910390fd5b6001600160a01b038216600081815260076020908152604080832080546001019055848352600690915280822080546001600160601b0316606087901b6001600160601b03191617905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606083156120d95782516000036120d2576001600160a01b0385163b6120d25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161099c565b50816112b9565b6112b983838151156120ee5781518083602001fd5b8060405162461bcd60e51b815260040161099c919061218b565b6001600160e01b031981168114610a3957600080fd5b60006020828403121561213057600080fd5b8135610ca781612108565b60005b8381101561215657818101518382015260200161213e565b50506000910152565b6000815180845261217781602086016020860161213b565b601f01601f19169290920160200192915050565b602081526000610ca7602083018461215f565b6000602082840312156121b057600080fd5b5035919050565b80356001600160a01b03811681146121ce57600080fd5b919050565b600080604083850312156121e657600080fd5b6121ef836121b7565b946020939093013593505050565b60008083601f84011261220f57600080fd5b50813567ffffffffffffffff81111561222757600080fd5b602083019150836020828501011115611d3d57600080fd5b60008060006040848603121561225457600080fd5b833567ffffffffffffffff81111561226b57600080fd5b612277868287016121fd565b909790965060209590950135949350505050565b6000806040838503121561229e57600080fd5b823591506122ae602084016121b7565b90509250929050565b6000806000606084860312156122cc57600080fd5b6122d5846121b7565b92506122e3602085016121b7565b9150604084013590509250925092565b60006020828403121561230557600080fd5b610ca7826121b7565b6000806040838503121561232157600080fd5b61232a836121b7565b91506122ae602084016121b7565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561237757612377612338565b604052919050565b600067ffffffffffffffff82111561239957612399612338565b50601f01601f191660200190565b600082601f8301126123b857600080fd5b81356123cb6123c68261237f565b61234e565b8181528460208386010111156123e057600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561241057600080fd5b612419836121b7565b9150602083013567ffffffffffffffff81111561243557600080fd5b611212858286016123a7565b60006020828403121561245357600080fd5b813567ffffffffffffffff81111561246a57600080fd5b6112b9848285016123a7565b803580151581146121ce57600080fd5b6000806040838503121561249957600080fd5b6124a2836121b7565b91506122ae60208401612476565b6000806000606084860312156124c557600080fd5b6124ce846121b7565b92506124dc602085016121b7565b91506124ea60408501612476565b90509250925092565b6000806000806080858703121561250957600080fd5b612512856121b7565b9350612520602086016121b7565b925060408501359150606085013567ffffffffffffffff81111561254357600080fd5b61254f878288016123a7565b91505092959194509250565b60008060008060006060868803121561257357600080fd5b853567ffffffffffffffff8082111561258b57600080fd5b61259789838a016121fd565b90975095508591506125ab602089016121b7565b945060408801359150808211156125c157600080fd5b818801915088601f8301126125d557600080fd5b8135818111156125e457600080fd5b8960208260051b85010111156125f957600080fd5b9699959850939650602001949392505050565b600181811c9082168061262057607f821691505b60208210810361264057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561078c576000816000526020600020601f850160051c8101602086101561266f5750805b601f850160051c820191505b8181101561268e5782815560010161267b565b505050505050565b67ffffffffffffffff8311156126ae576126ae612338565b6126c2836126bc835461260c565b83612646565b6000601f8411600181146126f657600085156126de5750838201355b600019600387901b1c1916600186901b178355612750565b600083815260209020601f19861690835b828110156127275786850135825560209485019460019092019101612707565b50868210156127445760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561088e5761088e612805565b60006020828403121561284057600080fd5b5051919050565b8181038181111561088e5761088e612805565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006112b960208301848661285a565b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b8781101561293257868503605f190183528135368a9003601e190181126128e857600080fd5b8901848101903567ffffffffffffffff81111561290457600080fd5b80360382131561291357600080fd5b61291e87828461285a565b9650505091830191908301906001016128c2565b509298975050505050505050565b6000602080838503121561295357600080fd5b825167ffffffffffffffff8082111561296b57600080fd5b818501915085601f83011261297f57600080fd5b81518181111561299157612991612338565b8060051b6129a085820161234e565b91825283810185019185810190898411156129ba57600080fd5b86860192505b83831015612a32578251858111156129d85760008081fd5b8601603f81018b136129ea5760008081fd5b8781015160406129fc6123c68361237f565b8281528d82848601011115612a115760008081fd5b612a20838c830184870161213b565b855250505091860191908601906129c0565b9998505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f679083018461215f565b600060208284031215612a8457600080fd5b8151610ca781612108565b60008251612aa181846020870161213b565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209763cb0e3b4947d111e2f667119bd5fcf11e64bae6f57f5d40d9da15d0bce43064736f6c63430008170033","storage":{"0x0":"0x5fbdb2315678afecb367f032d93f642f64180aa3","0x1":"0x2867a984f1e2b720729197f36300671df53c43d6d5771f793e945de13f3a5a92","0x2":"0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","0x3":"0x26f730000000000000000000000000000000000000000000000000000000008","0xb":"0x1","0x3e":"0x1804c8ab1f12e6bbf3894d4083f33e07309d1f38"}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xdc64a140aa3e981100a9beca4e685f962f0cf6c9":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101f95760003560e01c806370a082311161010d578063b3c65015116100a0578063d123f99a1161006f578063d123f99a146105c3578063d314c607146105d6578063d5c457141461061f578063e985e9c514610635578063f2fde38b1461065557600080fd5b8063b3c6501514610546578063b88d4fde1461056d578063c1ea25f11461058d578063d1131c72146105ad57600080fd5b80638c4e3f32116100dc5780638c4e3f32146104d35780638da5cb5b146104f357806395d89b4114610511578063a22cb4651461052657600080fd5b806370a0823114610451578063715018a614610471578063819eb62514610486578063898572a6146104a657600080fd5b80633659cfe611610190578063516a166a1161015f578063516a166a146103ae57806352d1902d146103ce57806355bf3ec7146103f15780635864c817146104115780636352211e1461043157600080fd5b80633659cfe61461033b57806342842e0e1461035b578063485cc9551461037b5780634f1ef2861461039b57600080fd5b806312403916116101cc57806312403916146102c65780631492017b146102e657806323b872dd14610306578063303bc8ac1461032657600080fd5b806301ffc9a7146101fe57806306fdde0314610234578063081812fc14610256578063095ea7b3146102a4575b600080fd5b34801561020a57600080fd5b5061021f6102193660046120f9565b50600090565b60405190151581526020015b60405180910390f35b34801561024057600080fd5b50610249610675565b60405161022b9190612166565b34801561026257600080fd5b5061028c610271366004612179565b6000908152600860205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161022b565b3480156102b057600080fd5b506102c46102bf3660046121ae565b610707565b005b3480156102d257600080fd5b506102c46102e136600461221a565b610791565b3480156102f257600080fd5b5061021f610301366004612266565b61083d565b34801561031257600080fd5b506102c4610321366004612292565b610894565b34801561033257600080fd5b506102496108c6565b34801561034757600080fd5b506102c46103563660046122ce565b610954565b34801561036757600080fd5b506102c4610376366004612292565b610a3c565b34801561038757600080fd5b506102c46103963660046122e9565b610a57565b6102c46103a93660046123d8565b610bd1565b3480156103ba57600080fd5b5061021f6103c9366004612266565b610ca1565b3480156103da57600080fd5b506103e3610cb4565b60405190815260200161022b565b3480156103fd57600080fd5b5060005461028c906001600160a01b031681565b34801561041d57600080fd5b506102c461042c36600461241c565b610d67565b34801561043d57600080fd5b5061028c61044c366004612179565b610e38565b34801561045d57600080fd5b506103e361046c3660046122ce565b610e6d565b34801561047d57600080fd5b506102c4610eb2565b34801561049257600080fd5b506102c46104a1366004612461565b610ec6565b3480156104b257600080fd5b506103e36104c1366004612179565b60d46020526000908152604090205481565b3480156104df57600080fd5b506102c46104ee36600461248b565b610ed1565b3480156104ff57600080fd5b50603e546001600160a01b031661028c565b34801561051d57600080fd5b50610249610f71565b34801561053257600080fd5b506102c4610541366004612461565b610f80565b34801561055257600080fd5b5061055b610f8b565b60405160ff909116815260200161022b565b34801561057957600080fd5b506102c46105883660046124ce565b610f9e565b34801561059957600080fd5b5061021f6105a83660046121ae565b610fd1565b3480156105b957600080fd5b506103e360015481565b6103e36105d1366004612536565b610fdd565b3480156105e257600080fd5b5061021f6105f13660046122e9565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b34801561062b57600080fd5b506103e360025481565b34801561064157600080fd5b5061021f6106503660046122e9565b611009565b34801561066157600080fd5b506102c46106703660046122ce565b611037565b606060048054610684906125e7565b80601f01602080910402602001604051908101604052809291908181526020018280546106b0906125e7565b80156106fd5780601f106106d2576101008083540402835291602001916106fd565b820191906000526020600020905b8154815290600101906020018083116106e057829003601f168201915b5050505050905090565b600061071282610e38565b9050806001600160a01b0316836001600160a01b0316036107465760405163091fbd5360e01b815260040160405180910390fd5b336001600160a01b0382161480159061076457506107648133611009565b15610782576040516307e8a24360e21b815260040160405180910390fd5b61078c83836110ad565b505050565b600254156107b257604051630ea075bf60e21b815260040160405180910390fd5b6000546001600160a01b031633146107dd57604051637c26bcc360e01b815260040160405180910390fd5b600281905560036107ef838583612671565b50610834600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061111b9050565b50600155505050565b60005b8015801561085057506002548314155b1561088e5761085f8383611222565b90508061088e5761086f83611250565b1561088a57600092835260d460205260409092205491610840565b5060005b92915050565b61089e3382611268565b6108bb576040516307e8a24360e21b815260040160405180910390fd5b61078c8383836112c7565b600380546108d3906125e7565b80601f01602080910402602001604051908101604052809291908181526020018280546108ff906125e7565b801561094c5780601f106109215761010080835404028352916020019161094c565b820191906000526020600020905b81548152906001019060200180831161092f57829003601f168201915b505050505081565b6001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91630036109a55760405162461bcd60e51b815260040161099c90612732565b60405180910390fd5b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b03166109ee600080516020612a87833981519152546001600160a01b031690565b6001600160a01b031614610a145760405162461bcd60e51b815260040161099c9061277e565b610a1d81611405565b60408051600080825260208201909252610a399183919061140d565b50565b61078c83838360405180602001604052806000815250610f9e565b600b54610100900460ff1615808015610a775750600b54600160ff909116105b80610a915750303b158015610a915750600b5460ff166001145b610af45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161099c565b600b805460ff191660011790558015610b1757600b805461ff0019166101001790555b60408051808201825260148152732e444556204b4e532044657620446f6d61696e7360601b602091820152815180830190925260068252652227aa2222ab60d11b910152600080546001600160a01b0319166001600160a01b038516179055610b7e611578565b610b87826115e3565b801561078c57600b805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c9163003610c195760405162461bcd60e51b815260040161099c90612732565b7f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c96001600160a01b0316610c62600080516020612a87833981519152546001600160a01b031690565b6001600160a01b031614610c885760405162461bcd60e51b815260040161099c9061277e565b610c9182611405565b610c9d8282600161140d565b5050565b6000610cad838361083d565b9392505050565b6000306001600160a01b037f000000000000000000000000dc64a140aa3e981100a9beca4e685f962f0cf6c91614610d545760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161099c565b50600080516020612a8783398151915290565b6000806000610d7584611635565b925092509250808203610d9b5760405163abddc77160e01b815260040160405180910390fd5b610da58233610ca1565b15610e195760006001610db785611695565b179050610dd38185600090815260066020526040902081905590565b506040805185815260208101859052338183015290517f7de9cdc5b55386112f86114d6e841bde7e78203bea81a912271231dffde1be769181900360600190a150610e32565b60405163ea8e4eb560e01b815260040160405180910390fd5b50505050565b600080610e44836116a9565b90506001600160a01b03811661088e5760405163089ba7e160e41b815260040160405180910390fd5b60006001600160a01b038216610e9657604051633d6932c760e21b815260040160405180910390fd5b506001600160a01b031660009081526007602052604090205490565b610eba6116c0565b610ec460006115e3565b565b610c9d33838361171a565b816001600160a01b0316836001600160a01b031603610f035760405163091fbd5360e01b815260040160405180910390fd5b6001600160a01b03838116600081815260096020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3191015b60405180910390a3505050565b606060058054610684906125e7565b610c9d338383610ed1565b6000610f99600b5460ff1690565b905090565b610fa83383611268565b610fc5576040516307e8a24360e21b815260040160405180910390fd5b610e32848484846117b1565b6000610cad83836117e5565b600080610fed8787600033611829565b509050610ffe8787878488886119a9565b979650505050505050565b6001600160a01b03918216600090815260096020908152604080832093909416825291909152205460ff1690565b61103f6116c0565b6001600160a01b0381166110a45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161099c565b610a39816115e3565b600081815260086020526040902080546001600160a01b0319166001600160a01b03841690811790915581906110e2826116a9565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000808351831061116e5760405162461bcd60e51b815260206004820152601e60248201527f726561644c6162656c3a20496e646578206f7574206f6620626f756e64730000604482015260640161099c565b6000848481518110611182576111826127ca565b016020015160f81c9050604081106111dc5760405162461bcd60e51b815260206004820152601960248201527f726561644c6162656c3a204c6162656c20746f6f206c6f6e6700000000000000604482015260640161099c565b80156111fe576111f7856111f18660016127f6565b83611b0a565b9250611203565b600092505b61120d81856127f6565b6112189060016127f6565b9150509250929050565b60006001600160a01b038216301480611240575061124082846117e5565b80610cad5750610cad8284611268565b60008181526006602052604081205461088e90611b2e565b600080611274836116a9565b9050806001600160a01b0316846001600160a01b0316148061129b575061129b8185611009565b806112bf57506000838152600860205260409020546001600160a01b038581169116145b949350505050565b6001600160a01b0382166000036112f1576040516328aad33f60e21b815260040160405180910390fd5b826001600160a01b0316611304826116a9565b6001600160a01b03161461132b5760405163e146af6f60e01b815260040160405180910390fd5b826001600160a01b031661133e826116a9565b6001600160a01b0316146113655760405163e146af6f60e01b815260040160405180910390fd5b600081815260086020908152604080832080546001600160a01b03191690556001600160a01b0386811680855260078452828520805460001901905590861680855282852080546001019055858552600690935281842080546001600160601b0316606088901b6001600160601b031916179055905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610a396116c0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114405761078c83611b43565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561149a575060408051601f3d908101601f1916820190925261149791810190612809565b60015b6114fd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161099c565b600080516020612a87833981519152811461156c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161099c565b5061078c838383611bdf565b600b54610100900460ff16610ec45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840161099c565b603e80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080600080600061164686611c04565b915091506000806116578884611c1b565b6040805160208101849052908101879052919350915060600160408051808303601f1901815291905280516020909101209891975095509350505050565b60008181526006602052604081205461088e565b60008181526006602052604081205460601c61088e565b603e546001600160a01b03163314610ec45760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161099c565b816001600160a01b0316836001600160a01b03160361174c57604051637417c83160e11b815260040160405180910390fd5b6001600160a01b038381166000818152600a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527fadc620d6f66bc2f5355112336dd7957aecdc5480a6d6e771c356503869756c449101610f64565b6117bc8484846112c7565b6117c884848484611d1f565b610e3257604051633a3614b760e01b815260040160405180910390fd5b6000600a60006117f4846116a9565b6001600160a01b039081168252602080830193909352604091820160009081209187168152925290205460ff16905092915050565b6000806000806118728689898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505061111b9050565b9092509050611882600188612822565b81036118ba5760015482146118aa576040516368c8350b60e11b815260040160405180910390fd5b60025460019350935050506119a0565b6000806118c98a8a858a611829565b91509150600082856040516020016118eb929190918252602082015260400190565b60408051601f198184030181529181528151602092830120600081815260d490935290822054909250900361192c57600081815260d4602052604090208390555b88156119635761193b81611250565b61194457600091505b81611956576119538189611222565b91505b955093506119a092505050565b8161198157604051632b8839a960e01b815260040160405180910390fd5b6002548314611991576000611994565b60015b60019650965050505050505b94509492505050565b60008054604051633255528360e21b815282916001600160a01b03169063c9554a0c906119dc908b908b9060040161285e565b6020604051808303816000875af11580156119fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a1f9190612809565b9150819050611a2e8682611e21565b611a7b611a6786611a4b8560009081526006602052604090205490565b6001600160601b031981166001600160601b0383161792915050565b600084815260066020526040902081905590565b508215611aff5760005460405163e32954eb60e01b81526001600160a01b039091169063e32954eb90611ab690849088908890600401612872565b6000604051808303816000875af1158015611ad5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611afd919081019061291b565b505b509695505050505050565b8251600090611b1983856127f6565b1115611b2457600080fd5b5091016020012090565b600081158061088e5750506001908116141590565b6001600160a01b0381163b611bb05760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161099c565b600080516020612a8783398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b611be883611e3b565b600082511180611bf55750805b1561078c57610e328383611e7b565b600080611c1283600061111b565b91509150915091565b600080600080611c2b868661111b565b909250905081611ca05760018651611c439190612822565b8514611c915760405162461bcd60e51b815260206004820152601d60248201527f6e616d65686173683a204a756e6b20617420656e64206f66206e616d65000000604482015260640161099c565b5060009250829150611d189050565b600080611cad8884611c1b565b909250905080611ce45760408051600060208201529081018590526060016040516020818303038152906040528051906020012090505b6040805160208101849052908101859052606001604051602081830303815290604052805190602001208195509550505050505b9250929050565b60006001600160a01b0384163b15611e1657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611d63903390899088908890600401612a1a565b6020604051808303816000875af1925050508015611d9e575060408051601f3d908101601f19168201909252611d9b91810190612a4d565b60015b611dfc573d808015611dcc576040519150601f19603f3d011682016040523d82523d6000602084013e611dd1565b606091505b508051600003611df457604051633a3614b760e01b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506112bf565b506001949350505050565b610c9d828260405180602001604052806000815250611ea0565b611e4481611b43565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060610cad8383604051806060016040528060278152602001612aa760279139611ed4565b611eaa8383611f4c565b611eb76000848484611d1f565b61078c57604051633a3614b760e01b815260040160405180910390fd5b6060600080856001600160a01b031685604051611ef19190612a6a565b600060405180830381855af49150503d8060008114611f2c576040519150601f19603f3d011682016040523d82523d6000602084013e611f31565b606091505b5091509150611f4286838387612045565b9695505050505050565b6001600160a01b038216611f735760405163507508af60e11b815260040160405180910390fd5b60008181526006602052604090205415611fa0576040516324a255d960e11b815260040160405180910390fd5b60008181526006602052604090205415611fcd576040516324a255d960e11b815260040160405180910390fd5b6001600160a01b038216600081815260076020908152604080832080546001019055848352600690915280822080546001600160601b0316606087901b6001600160601b03191617905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b606083156120b45782516000036120ad576001600160a01b0385163b6120ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161099c565b50816112bf565b6112bf83838151156120c95781518083602001fd5b8060405162461bcd60e51b815260040161099c9190612166565b6001600160e01b031981168114610a3957600080fd5b60006020828403121561210b57600080fd5b8135610cad816120e3565b60005b83811015612131578181015183820152602001612119565b50506000910152565b60008151808452612152816020860160208601612116565b601f01601f19169290920160200192915050565b602081526000610cad602083018461213a565b60006020828403121561218b57600080fd5b5035919050565b80356001600160a01b03811681146121a957600080fd5b919050565b600080604083850312156121c157600080fd5b6121ca83612192565b946020939093013593505050565b60008083601f8401126121ea57600080fd5b50813567ffffffffffffffff81111561220257600080fd5b602083019150836020828501011115611d1857600080fd5b60008060006040848603121561222f57600080fd5b833567ffffffffffffffff81111561224657600080fd5b612252868287016121d8565b909790965060209590950135949350505050565b6000806040838503121561227957600080fd5b8235915061228960208401612192565b90509250929050565b6000806000606084860312156122a757600080fd5b6122b084612192565b92506122be60208501612192565b9150604084013590509250925092565b6000602082840312156122e057600080fd5b610cad82612192565b600080604083850312156122fc57600080fd5b61230583612192565b915061228960208401612192565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561235257612352612313565b604052919050565b600067ffffffffffffffff82111561237457612374612313565b50601f01601f191660200190565b600082601f83011261239357600080fd5b81356123a66123a18261235a565b612329565b8181528460208386010111156123bb57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156123eb57600080fd5b6123f483612192565b9150602083013567ffffffffffffffff81111561241057600080fd5b61121885828601612382565b60006020828403121561242e57600080fd5b813567ffffffffffffffff81111561244557600080fd5b6112bf84828501612382565b803580151581146121a957600080fd5b6000806040838503121561247457600080fd5b61247d83612192565b915061228960208401612451565b6000806000606084860312156124a057600080fd5b6124a984612192565b92506124b760208501612192565b91506124c560408501612451565b90509250925092565b600080600080608085870312156124e457600080fd5b6124ed85612192565b93506124fb60208601612192565b925060408501359150606085013567ffffffffffffffff81111561251e57600080fd5b61252a87828801612382565b91505092959194509250565b60008060008060006060868803121561254e57600080fd5b853567ffffffffffffffff8082111561256657600080fd5b61257289838a016121d8565b909750955085915061258660208901612192565b9450604088013591508082111561259c57600080fd5b818801915088601f8301126125b057600080fd5b8135818111156125bf57600080fd5b8960208260051b85010111156125d457600080fd5b9699959850939650602001949392505050565b600181811c908216806125fb57607f821691505b60208210810361261b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561078c576000816000526020600020601f850160051c8101602086101561264a5750805b601f850160051c820191505b8181101561266957828155600101612656565b505050505050565b67ffffffffffffffff83111561268957612689612313565b61269d8361269783546125e7565b83612621565b6000601f8411600181146126d157600085156126b95750838201355b600019600387901b1c1916600186901b17835561272b565b600083815260209020601f19861690835b8281101561270257868501358255602094850194600190920191016126e2565b508682101561271f5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8082018082111561088e5761088e6127e0565b60006020828403121561281b57600080fd5b5051919050565b8181038181111561088e5761088e6127e0565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006112bf602083018486612835565b6000604082018583526020604060208501528185835260608501905060608660051b86010192508660005b8781101561290d57868503605f190183528135368a9003601e190181126128c357600080fd5b8901848101903567ffffffffffffffff8111156128df57600080fd5b8036038213156128ee57600080fd5b6128f9878284612835565b96505050918301919083019060010161289d565b509298975050505050505050565b6000602080838503121561292e57600080fd5b825167ffffffffffffffff8082111561294657600080fd5b818501915085601f83011261295a57600080fd5b81518181111561296c5761296c612313565b8060051b61297b858201612329565b918252838101850191858101908984111561299557600080fd5b86860192505b83831015612a0d578251858111156129b35760008081fd5b8601603f81018b136129c55760008081fd5b8781015160406129d76123a18361235a565b8281528d828486010111156129ec5760008081fd5b6129fb838c8301848701612116565b8552505050918601919086019061299b565b9998505050505050505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611f429083018461213a565b600060208284031215612a5f57600080fd5b8151610cad816120e3565b60008251612a7c818460208701612116565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122012f4328677c3cffdea1d0c9f3599da459ceba9dbe0eafa9658e1ff108a22860764736f6c63430008170033","storage":{"0x0":"0x5fbdb2315678afecb367f032d93f642f64180aa3","0x1":"0x479470ac0df380f209de1c800185565472402517515e8e60ed2662ef3c4ccc3a","0x2":"0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea","0x3":"0x36465760000000000000000000000000000000000000000000000000000000a","0xb":"0x1","0x3e":"0x1804c8ab1f12e6bbf3894d4083f33e07309d1f38","0x42c9ecb41bbf615df9e85456012d62643406d811e5d8213a8a93f8f518fb8e47":"0x1","0x78fd07872bf99cd2d19d5563cf8b191b946b6894379abf336f343a2805e58fc5":"0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea","0xe8335d836f920d64b7cbce021acd32553c1e902bbc1a2184cde8cdad7de86765":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000001"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":12,"balance":"0x21e194f6adc0260204c","code":"0x","storage":{}}}} \ No newline at end of file +{"block":{"number":"0xa","coinbase":"0x0000000000000000000000000000000000000000","timestamp":"0x66b52f5d","gas_limit":"0x1c9c380","basefee":"0x131bbb0f","difficulty":"0x0","prevrandao":"0x76ee08edce344853dab8e10a67e904f7df21a57c5d481058aef9dec2c2c909cc","blob_excess_gas_and_price":{"excess_blob_gas":0,"blob_gasprice":1}},"accounts":{"0x0000000000000000000000000000000000000000":{"nonce":0,"balance":"0x564b2ef4bed69ec","code":"0x","storage":{}},"0x000000006551c19487814612e58fe06813775758":{"nonce":5,"balance":"0x0","code":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033","storage":{}},"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa":{"nonce":1,"balance":"0x0","code":"0x363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0"}},"0x05f32b3cc3888453ff71b01135b34ff8e41263f2":{"nonce":1,"balance":"0xcaa8e5bef114000","code":"0x","storage":{}},"0x14dc79964da2c08b23698b3d3cc7ca32193d9955":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x15d34aaf54267db7d7c367839aaf71a00a2c6a65":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x1a5447e634aa056fa302e48630da8425ec15a53a":{"nonce":1,"balance":"0x0","code":"0x363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf3137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea0000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea","storage":{"0x0":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x1"}},"0x23618e81e3f5cdf7f54c3d65f7fbc0abf5b21e8f":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x3c44cdddb6a900fa2b585dd299e03d12fa4293bc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x456e325fdccc143bea0ecbcf45545e2065f6518b":{"nonce":1,"balance":"0x0","code":"0x60806040526004361061001e5760003560e01c8063d1f5789414610028575b61002661003b565b005b61002661003636600461033a565b61004d565b61004b6100466100d9565b610111565b565b336001600160a01b037f000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d16146100b35760405162461bcd60e51b81526020600482015260066024820152650216b696d61760d41b60448201526064015b60405180910390fd5b60006100bd6100d9565b6001600160a01b0316036100d5576100d58282610135565b5050565b600061010c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610130573d6000f35b3d6000fd5b61013e82610190565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610188576101838282610207565b505050565b6100d561027d565b806001600160a01b03163b6000036101c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100aa565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610224919061040a565b600060405180830381855af49150503d806000811461025f576040519150601f19603f3d011682016040523d82523d6000602084013e610264565b606091505b509150915061027485838361029c565b95945050505050565b341561004b5760405163b398979f60e01b815260040160405180910390fd5b6060826102b1576102ac826102fb565b6102f4565b81511580156102c857506001600160a01b0384163b155b156102f157604051639996b31560e01b81526001600160a01b03851660048201526024016100aa565b50805b9392505050565b80511561030b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561034d57600080fd5b82356001600160a01b038116811461036457600080fd5b9150602083013567ffffffffffffffff8082111561038157600080fd5b818501915085601f83011261039557600080fd5b8135818111156103a7576103a7610324565b604051601f8201601f19908116603f011681019083821181831017156103cf576103cf610324565b816040528281528860208487010111156103e857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561042b5760208186018101518583015201610411565b50600092019182525091905056fea2646970667358221220d7d36d3d943bb5535c93e093b5c016f6bb9b948b6d00fd0068ee903fb4b4dbfb64736f6c63430008170033","storage":{}},"0x4658c6373a1e066c35815a3e4061571216c48d7a":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101435760003560e01c806374e08829116100b0578063ad3cb1cc1161006c578063ad3cb1cc146103fc578063b88d4fde1461042d578063bfa0ee741461044d578063e852398b1461046d578063e985e9c51461048d578063edc16084146104c857005b806374e088291461031f5780637788b5a81461033f5780638eaa6ac01461035f57806395d89b411461038e578063a22cb465146103bc578063ac0c10af146103dc57005b806342842e0e116100ff57806342842e0e1461025c578063485cc9551461027c5780634f1ef2861461029c57806352d1902d146102af5780636352211e146102d257806370a08231146102f257005b806301ffc9a71461014c57806306fdde0314610181578063081812fc146101b8578063095ea7b31461020657806323b872dd146102265780632ffb26801461024657005b3661014a57005b005b34801561015857600080fd5b5061016c61016736600461177c565b6104ec565b60405190151581526020015b60405180910390f35b34801561018d57600080fd5b5060408051808201909152600581526404b694d61760dc1b60208201525b60405161017891906117e9565b3480156101c457600080fd5b506101ee6101d33660046117fc565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610178565b34801561021257600080fd5b5061014a61022136600461182a565b61053e565b34801561023257600080fd5b5061014a610241366004611856565b610623565b34801561025257600080fd5b50600019546101ee565b34801561026857600080fd5b5061014a610277366004611856565b6107ff565b34801561028857600080fd5b5061014a610297366004611897565b61081f565b61014a6102aa366004611973565b6109d2565b3480156102bb57600080fd5b506102c46109e8565b604051908152602001610178565b3480156102de57600080fd5b506101ee6102ed3660046117fc565b610a05565b3480156102fe57600080fd5b506102c461030d3660046119c3565b60006020819052908152604090205481565b34801561032b57600080fd5b5061014a61033a3660046119c3565b610a1f565b34801561034b57600080fd5b506102c461035a366004611a29565b610a3a565b34801561036b57600080fd5b5061037f61037a3660046117fc565b610b48565b60405161017893929190611a95565b34801561039a57600080fd5b5060408051808201909152600581526404b494d41560dc1b60208201526101ab565b3480156103c857600080fd5b5061014a6103d7366004611ac1565b610be0565b3480156103e857600080fd5b506101ee6103f7366004611af4565b610c4c565b34801561040857600080fd5b506101ab604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561043957600080fd5b5061014a610448366004611bb4565b610e66565b34801561045957600080fd5b506101ee6104683660046117fc565b610f4b565b34801561047957600080fd5b506102c4610488366004611a29565b610f62565b34801561049957600080fd5b5061016c6104a8366004611897565b600260209081526000928352604080842090915290825290205460ff1681565b3480156104d457600080fd5b506101ee6f6551c19487814612e58fe0681377575881565b60006301ffc9a760e01b6001600160e01b03198316148061051d57506380ac58cd60e01b6001600160e01b03198316145b806105385750635b5e139f60e01b6001600160e01b03198316145b92915050565b600061054982610a05565b9050336001600160a01b038216148061058557506001600160a01b038116600090815260026020908152604080832033845290915290205460ff165b6105c75760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526001602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61062c81610a05565b6001600160a01b0316836001600160a01b0316146106795760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016105be565b6001600160a01b0382166106c35760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016105be565b336001600160a01b03841614806106f357506106de81610f4b565b6001600160a01b0316336001600160a01b0316145b8061071457506000818152600160205260409020546001600160a01b031633145b8061074257506001600160a01b038316600090815260026020908152604080832033845290915290205460ff165b61077f5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016105be565b6001600160a01b0380841660008181526020818152604080832080546000190190559386168083528483208054600190810190915586810188905586845290915283822080546001600160a01b03191690559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61081a83838360405180602001604052806000815250610e66565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156108655750825b905060008267ffffffffffffffff1660011480156108825750303b155b905081158015610890575080155b156108ae5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108d857845460ff60401b1916600160401b1785555b61091b306040516108e890611759565b6001600160a01b039091168152602001604051809103906000f080158015610914573d6000803e3d6000fd5b5060001955565b600061094b886000801b89604051806020016040528060008152506040518060200160405280600081525061106f565b6040519091506001600160a01b038216907fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c090600090a25083156109c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6109da6112f3565b6109e4828261139d565b5050565b60006109f261145a565b506000805160206122e183398151915290565b6000815460a01c15610a175760206000f35b506001015490565b6000610a296114a3565b905060028101546109e45760020155565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610a8657610a86611c20565b6020910101516001600160f81b031916603f60f91b14610ab95760405163a3b9ac9560e01b815260040160405180910390fd5b6000610ac36114a3565b9050610ad08188886114d1565b92508254610adc578083555b610ae78386866114ff565b8686604051610af7929190611c36565b604051809103902083827fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48a8a8a8a604051610b369493929190611c6f565b60405180910390a45050949350505050565b60008060608354600185015481610b6457606060405260806000f35b8160a01c610b7f578160005280602052606060405260806000f35b60018201549050815491506040516080810160018801546020601f82010460018a010160028a015b818111600003610bc35780548452602090930192600101610ba7565b505084835283602084015260606040840152806060840152508082f35b3360008181526002602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610c9857610c98611c20565b01602001516001600160f81b031916603f60f91b03610cca57604051633dcf2a3f60e11b815260040160405180910390fd5b80600081518110610cdd57610cdd611c20565b01602001516001600160f81b031916602160f81b03610d0f5760405163305bb2eb60e11b815260040160405180910390fd5b6000610d196114a3565b90506000610d28828c8c6114d1565b90508a8a604051610d3a929190611c36565b604051809103902081837fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18e8e604051610d75929190611ca1565b60405180910390a4600282015415610d9557600282015494508460028201555b610e1c8c82878c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061106f92505050565b60405190945081906001600160a01b038e16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450505098975050505050505050565b610e71848484610623565b6001600160a01b0383163b1580610f065750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610eb7903390899088908890600401611cbd565b6020604051808303816000875af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa9190611cfa565b6001600160e01b031916145b610f455760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b50505050565b6000815460a01c15610f5d5760206000f35b505490565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610fae57610fae611c20565b6020910101516001600160f81b031916602160f81b14610fe157604051636ae27d4f60e01b815260040160405180910390fd5b6000610feb6114a3565b9050610ff88188886114d1565b92508254156110125763a542ed9c60e01b60005260046000fd5b8083556110208386866114ff565b8686604051611030929190611c36565b604051809103902083827f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8a8a8a8a604051610b369493929190611c6f565b60008454156110895763d202940c60e01b60005260046000fd5b6f6551c19487814612e58fe06813775758638a54c52f6110a96000195490565b60405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018890524660448201523060648201526084810188905260a4016020604051808303816000875af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611d17565b9050808555306001860155806001600160a01b031663d1f5789460e01b858560405160240161115d929190611d34565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161119b9190611d58565b6000604051808303816000865af19150503d80600081146111d8576040519150601f19603f3d011682016040523d82523d6000602084013e6111dd565b606091505b50505060018581018790556001600160a01b03871660009081526020819052604081208054909190611210908490611d74565b90915550506001600160a01b0386163b15806112ab5750604051630a85bd0160e11b808252906001600160a01b0388169063150b7a029061125c9033906000908b908990600401611cbd565b6020604051808303816000875af115801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190611cfa565b6001600160e01b031916145b6112ea5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b95945050505050565b306001600160a01b037f0000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a16148061137a57507f0000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a6001600160a01b031661136e6000805160206122e1833981519152546001600160a01b031690565b6001600160a01b031614155b156113985760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113f7575060408051601f3d908101601f191682019092526113f491810190611d95565b60015b61141f57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105be565b6000805160206122e1833981519152811461145057604051632a87526960e21b8152600481018290526024016105be565b61081a8383611535565b306001600160a01b037f0000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a16146113985760405163703e46dd60e11b815260040160405180910390fd5b6000806114af3361158b565b92505050338154146114cc57636b38e6f660e01b60005260046000fd5b919050565b6000604051602083018101604052828482379190912060408051948552602085019190915290922092915050565b60028301828281015b8082116000036115275781358355600183019250602082019150611508565b505050806001840155505050565b61153e826115e0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156115835761081a8282611645565b6109e46116b2565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906115d29190611dae565b935093509350509193909250565b806001600160a01b03163b60000361161657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105be565b6000805160206122e183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516116629190611d58565b600060405180830381855af49150503d806000811461169d576040519150601f19603f3d011682016040523d82523d6000602084013e6116a2565b606091505b50915091506112ea8583836116d1565b34156113985760405163b398979f60e01b815260040160405180910390fd5b6060826116e6576116e182611730565b611729565b81511580156116fd57506001600160a01b0384163b155b1561172657604051639996b31560e01b81526001600160a01b03851660048201526024016105be565b50805b9392505050565b8051156117405780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104f980611de883390190565b6001600160e01b03198116811461139a57600080fd5b60006020828403121561178e57600080fd5b813561172981611766565b60005b838110156117b457818101518382015260200161179c565b50506000910152565b600081518084526117d5816020860160208601611799565b601f01601f19169290920160200192915050565b60208152600061172960208301846117bd565b60006020828403121561180e57600080fd5b5035919050565b6001600160a01b038116811461139a57600080fd5b6000806040838503121561183d57600080fd5b823561184881611815565b946020939093013593505050565b60008060006060848603121561186b57600080fd5b833561187681611815565b9250602084013561188681611815565b929592945050506040919091013590565b600080604083850312156118aa57600080fd5b82356118b581611815565b915060208301356118c581611815565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126118f757600080fd5b813567ffffffffffffffff80821115611912576119126118d0565b604051601f8301601f19908116603f0116810190828211818310171561193a5761193a6118d0565b8160405283815286602085880101111561195357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561198657600080fd5b823561199181611815565b9150602083013567ffffffffffffffff8111156119ad57600080fd5b6119b9858286016118e6565b9150509250929050565b6000602082840312156119d557600080fd5b813561172981611815565b60008083601f8401126119f257600080fd5b50813567ffffffffffffffff811115611a0a57600080fd5b602083019150836020828501011115611a2257600080fd5b9250929050565b60008060008060408587031215611a3f57600080fd5b843567ffffffffffffffff80821115611a5757600080fd5b611a63888389016119e0565b90965094506020870135915080821115611a7c57600080fd5b50611a89878288016119e0565b95989497509550505050565b6001600160a01b038481168252831660208201526060604082018190526000906112ea908301846117bd565b60008060408385031215611ad457600080fd5b8235611adf81611815565b9150602083013580151581146118c557600080fd5b60008060008060008060008060a0898b031215611b1057600080fd5b8835611b1b81611815565b9750602089013567ffffffffffffffff80821115611b3857600080fd5b611b448c838d016119e0565b909950975060408b0135915080821115611b5d57600080fd5b611b698c838d016119e0565b909750955060608b0135915080821115611b8257600080fd5b50611b8f8b828c016119e0565b9094509250506080890135611ba381611815565b809150509295985092959890939650565b60008060008060808587031215611bca57600080fd5b8435611bd581611815565b93506020850135611be581611815565b925060408501359150606085013567ffffffffffffffff811115611c0857600080fd5b611c14878288016118e6565b91505092959194509250565b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611c83604083018688611c46565b8281036020840152611c96818587611c46565b979650505050505050565b602081526000611cb5602083018486611c46565b949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611cf0908301846117bd565b9695505050505050565b600060208284031215611d0c57600080fd5b815161172981611766565b600060208284031215611d2957600080fd5b815161172981611815565b6001600160a01b0383168152604060208201819052600090611cb5908301846117bd565b60008251611d6a818460208701611799565b9190910192915050565b8082018082111561053857634e487b7160e01b600052601160045260246000fd5b600060208284031215611da757600080fd5b5051919050565b600080600060608486031215611dc357600080fd5b835192506020840151611dd581611815565b8092505060408401519050925092509256fe60a060405234801561001057600080fd5b506040516104f93803806104f983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161046f61008a60003960006058015261046f6000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b61002661003b565b005b61002661003636600461033a565b61004d565b61004b6100466100d9565b610111565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100b35760405162461bcd60e51b81526020600482015260066024820152650216b696d61760d41b60448201526064015b60405180910390fd5b60006100bd6100d9565b6001600160a01b0316036100d5576100d58282610135565b5050565b600061010c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610130573d6000f35b3d6000fd5b61013e82610190565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610188576101838282610207565b505050565b6100d561027d565b806001600160a01b03163b6000036101c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100aa565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610224919061040a565b600060405180830381855af49150503d806000811461025f576040519150601f19603f3d011682016040523d82523d6000602084013e610264565b606091505b509150915061027485838361029c565b95945050505050565b341561004b5760405163b398979f60e01b815260040160405180910390fd5b6060826102b1576102ac826102fb565b6102f4565b81511580156102c857506001600160a01b0384163b155b156102f157604051639996b31560e01b81526001600160a01b03851660048201526024016100aa565b50805b9392505050565b80511561030b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561034d57600080fd5b82356001600160a01b038116811461036457600080fd5b9150602083013567ffffffffffffffff8082111561038157600080fd5b818501915085601f83011261039557600080fd5b8135818111156103a7576103a7610324565b604051601f8201601f19908116603f011681019083821181831017156103cf576103cf610324565b816040528281528860208487010111156103e857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561042b5760208186018101518583015201610411565b50600092019182525091905056fea2646970667358221220d7d36d3d943bb5535c93e093b5c016f6bb9b948b6d00fd0068ee903fb4b4dbfb64736f6c63430008170033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220438b0639c91c57e22b22ecf3b92d62f5f5d4a41920c91ba4dd6d9f60f8f8f05e64736f6c63430008170033","storage":{}},"0x4e59b44847b379578588920ca78fbf26c0b4956c":{"nonce":3,"balance":"0x0","code":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe03601600081602082378035828234f58015156039578182fd5b8082525050506014600cf3","storage":{}},"0x70997970c51812dc3a010c7d01b50e0d17dc79c8":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x90f79bf6eb2c4f870365e785982e1f101e93b906":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x976ea74026e726554db657fa54763abd0c3a0aa9":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9965507d1a55bcc2695c58ba16fb37d819b0a4dc":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106100eb5760003560e01c80636d70f7ae1161008a578063ca3b98bb11610059578063ca3b98bb146102ad578063d087d28814610298578063f23a6e61146102c0578063fc0c546a146102ed57600080fd5b80636d70f7ae1461021a578063b0d691fe1461023a578063bc197c8114610269578063c19d93fb1461029857600080fd5b80631626ba7e116100c65780631626ba7e1461018c57806319822f7c146101ac57806351945447146101da578063523e3260146101fa57600080fd5b806223de29146100f757806301ffc9a71461011e578063150b7a021461015357600080fd5b366100f257005b600080fd5b34801561010357600080fd5b5061011c610112366004610d5a565b5050505050505050565b005b34801561012a57600080fd5b5061013e610139366004610e20565b610325565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061017361016e366004610e3d565b610351565b6040516001600160e01b0319909116815260200161014a565b34801561019857600080fd5b506101736101a7366004610ec5565b6103ad565b3480156101b857600080fd5b506101cc6101c7366004610f7f565b6104d8565b60405190815260200161014a565b6101ed6101e8366004610fe8565b61050b565b60405161014a919061109e565b34801561020657600080fd5b506101736102153660046110b1565b610584565b34801561022657600080fd5b5061013e610235366004611105565b6105ab565b34801561024657600080fd5b50604051735ff137d4b0fdcd49dca30c7cf57e578a026d2789815260200161014a565b34801561027557600080fd5b50610173610284366004611166565b63bc197c8160e01b98975050505050505050565b3480156102a457600080fd5b506101cc61064d565b6101ed6102bb366004611203565b6106da565b3480156102cc57600080fd5b506101736102db36600461127b565b63f23a6e6160e01b9695505050505050565b3480156102f957600080fd5b50610302610757565b604080519384526001600160a01b0390921660208401529082015260600161014a565b60006103308261076f565b8061034b57506001600160e01b03198216636faff5f160e01b145b92915050565b600080600061035e610757565b909350915050336001600160a01b03831614801561037b57508086145b156103995760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806103d0856020810151604082015160609092015160001a92909190565b9094509250905060ff811660000361049e57828583016020016103f2826105ab565b15801561040857506001600160a01b0382163014155b1561042357506001600160e01b0319945061034b9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610451908b9085906004016112f6565b602060405180830381865afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610492919061130f565b9550505050505061034b565b6104ad61023587838686610811565b156104c55750630b135d3f60e11b925061034b915050565b506001600160e01b031995945050505050565b60006104e261083f565b6104ec84846108a4565b90506104fb846020013561094a565b61050482610993565b9392505050565b6060610516336105ab565b80610534575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105595760405162461bcd60e51b81526004016105509061132c565b60405180910390fd5b600061056987878787875a6109ec565b925090508061057a57815160208301fd5b5095945050505050565b600061058f846105ab565b61059a5760006105a3565b630291f19360e51b5b949350505050565b60008060006105b8610757565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611389565b6001600160a01b03161480156105a357505050506001600160a01b0316151590565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d591906113a6565b905090565b60606106e5336105ab565b80610703575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b61071f5760405162461bcd60e51b81526004016105509061132c565b600061073b8888888888881561073557886109ec565b5a6109ec565b925090508061074c57815160208301fd5b509695505050505050565b6000806000610764610b0e565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806107a057506001600160e01b031982166301ffc9a760e01b145b806107bb57506001600160e01b031982166306608bdf60e21b145b806107d657506001600160e01b03198216630b135d3f60e11b145b806107f157506001600160e01b03198216630271189760e51b145b8061034b57506001600160e01b03198216635194544760e01b1492915050565b60008060008061082388888888610b1c565b9250925092506108338282610beb565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d2789146108a25760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610550565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610927826108ed6101008801886113bf565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ad92505050565b6001600160e01b0319161461094057600191505061034b565b5060009392505050565b6001600160401b0381106109905760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610550565b50565b801561099057604051600090339060001990849084818181858888f193505050503d80600081146109e0576040519150601f19603f3d011682016040523d82523d6000602084013e6109e5565b606091505b5050505050565b600060608360ff16600003610a6557876001600160a01b031683888888604051610a17929190611405565b600060405180830381858888f193505050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b606091505b509092509050610b03565b8360ff16600103610ac757876001600160a01b0316838787604051610a8b929190611405565b6000604051808303818686f4925050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610550565b965096945050505050565b600080600061076430610ca8565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b575750600091506003905082610be1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610bab573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd757506000925060019150829050610be1565b9250600091508190505b9450945094915050565b6000826003811115610bff57610bff611415565b03610c08575050565b6001826003811115610c1c57610c1c611415565b03610c3a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c4e57610c4e611415565b03610c6f5760405163fce698f760e01b815260048101829052602401610550565b6003826003811115610c8357610c83611415565b03610ca4576040516335e2f38360e21b815260048101829052602401610550565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610cef919061142b565b935093509350509193909250565b6001600160a01b038116811461099057600080fd5b60008083601f840112610d2457600080fd5b5081356001600160401b03811115610d3b57600080fd5b602083019150836020828501011115610d5357600080fd5b9250929050565b60008060008060008060008060c0898b031215610d7657600080fd5b8835610d8181610cfd565b97506020890135610d9181610cfd565b96506040890135610da181610cfd565b95506060890135945060808901356001600160401b0380821115610dc457600080fd5b610dd08c838d01610d12565b909650945060a08b0135915080821115610de957600080fd5b50610df68b828c01610d12565b999c989b5096995094979396929594505050565b6001600160e01b03198116811461099057600080fd5b600060208284031215610e3257600080fd5b813561050481610e0a565b600080600080600060808688031215610e5557600080fd5b8535610e6081610cfd565b94506020860135610e7081610cfd565b93506040860135925060608601356001600160401b03811115610e9257600080fd5b610e9e88828901610d12565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610ed857600080fd5b8235915060208301356001600160401b0380821115610ef657600080fd5b818501915085601f830112610f0a57600080fd5b813581811115610f1c57610f1c610eaf565b604051601f8201601f19908116603f01168101908382118183101715610f4457610f44610eaf565b81604052828152886020848701011115610f5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610f9457600080fd5b83356001600160401b03811115610faa57600080fd5b84016101208187031215610fbd57600080fd5b95602085013595506040909401359392505050565b803560ff81168114610fe357600080fd5b919050565b60008060008060006080868803121561100057600080fd5b853561100b81610cfd565b94506020860135935060408601356001600160401b0381111561102d57600080fd5b61103988828901610d12565b909450925061104c905060608701610fd2565b90509295509295909350565b6000815180845260005b8181101561107e57602081850181015186830182015201611062565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006105046020830184611058565b6000806000604084860312156110c657600080fd5b83356110d181610cfd565b925060208401356001600160401b038111156110ec57600080fd5b6110f886828701610d12565b9497909650939450505050565b60006020828403121561111757600080fd5b813561050481610cfd565b60008083601f84011261113457600080fd5b5081356001600160401b0381111561114b57600080fd5b6020830191508360208260051b8501011115610d5357600080fd5b60008060008060008060008060a0898b03121561118257600080fd5b883561118d81610cfd565b9750602089013561119d81610cfd565b965060408901356001600160401b03808211156111b957600080fd5b6111c58c838d01611122565b909850965060608b01359150808211156111de57600080fd5b6111ea8c838d01611122565b909650945060808b0135915080821115610de957600080fd5b60008060008060008060a0878903121561121c57600080fd5b863561122781610cfd565b95506020870135945060408701356001600160401b0381111561124957600080fd5b61125589828a01610d12565b9095509350611268905060608801610fd2565b9150608087013590509295509295509295565b60008060008060008060a0878903121561129457600080fd5b863561129f81610cfd565b955060208701356112af81610cfd565b9450604087013593506060870135925060808701356001600160401b038111156112d857600080fd5b6112e489828a01610d12565b979a9699509497509295939492505050565b8281526040602082015260006105a36040830184611058565b60006020828403121561132157600080fd5b815161050481610e0a565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561139b57600080fd5b815161050481610cfd565b6000602082840312156113b857600080fd5b5051919050565b6000808335601e198436030181126113d657600080fd5b8301803591506001600160401b038211156113f057600080fd5b602001915036819003821315610d5357600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b60008060006060848603121561144057600080fd5b83519250602084015161145281610cfd565b8092505060408401519050925092509256fea26469706673582212208d59c9ea570137cb310eeda2228ecdd5476bdf5b706694c5971e2df485849dcb64736f6c63430008170033","storage":{}},"0xa0ee7a142d267c1f36714e4a8f75612f20a79720":{"nonce":0,"balance":"0x21e19e0c9bab2400000","code":"0x","storage":{}},"0xca11bde05977b3631167028862be2a173976ca11":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033","storage":{}},"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9":{"nonce":1,"balance":"0x0","code":"0x6080604052600436106101015760003560e01c8063ac0c10af11610095578063c4d66de811610064578063c4d66de8146102f3578063ca3b98bb14610313578063d087d288146102de578063f23a6e6114610326578063fc0c546a1461035357600080fd5b8063ac0c10af14610250578063b0d691fe14610288578063bc197c81146102af578063c19d93fb146102de57600080fd5b806319822f7c116100d157806319822f7c146101c257806351945447146101f0578063523e3260146102105780636d70f7ae1461023057600080fd5b806223de291461010d57806301ffc9a714610134578063150b7a02146101695780631626ba7e146101a257600080fd5b3661010857005b600080fd5b34801561011957600080fd5b50610132610128366004610f6f565b5050505050505050565b005b34801561014057600080fd5b5061015461014f366004611035565b61038b565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611052565b6103b7565b6040516001600160e01b03199091168152602001610160565b3480156101ae57600080fd5b506101896101bd3660046110da565b610413565b3480156101ce57600080fd5b506101e26101dd366004611194565b61053e565b604051908152602001610160565b6102036101fe3660046111fd565b610571565b60405161016091906112b3565b34801561021c57600080fd5b5061018961022b3660046112c6565b6105ea565b34801561023c57600080fd5b5061015461024b36600461131a565b610611565b34801561025c57600080fd5b5061027061026b366004611337565b6106b3565b6040516001600160a01b039091168152602001610160565b34801561029457600080fd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d2789610270565b3480156102bb57600080fd5b506101896102ca36600461143a565b63bc197c8160e01b98975050505050505050565b3480156102ea57600080fd5b506101e2610742565b3480156102ff57600080fd5b5061013261030e36600461131a565b6107cf565b6102036103213660046114d7565b6108ef565b34801561033257600080fd5b5061018961034136600461154f565b63f23a6e6160e01b9695505050505050565b34801561035f57600080fd5b5061036861096c565b604080519384526001600160a01b03909216602084015290820152606001610160565b600061039682610984565b806103b157506001600160e01b03198216636faff5f160e01b145b92915050565b60008060006103c461096c565b909350915050336001600160a01b0383161480156103e157508086145b156103ff5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b600080600080610436856020810151604082015160609092015160001a92909190565b9094509250905060ff8116600003610504578285830160200161045882610611565b15801561046e57506001600160a01b0382163014155b1561048957506001600160e01b031994506103b19350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104b7908b9085906004016115ca565b602060405180830381865afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f891906115e3565b955050505050506103b1565b61051361024b87838686610a26565b1561052b5750630b135d3f60e11b92506103b1915050565b506001600160e01b031995945050505050565b6000610548610a54565b6105528484610ab9565b90506105618460200135610b5f565b61056a82610ba8565b9392505050565b606061057c33610611565b8061059a575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105bf5760405162461bcd60e51b81526004016105b690611600565b60405180910390fd5b60006105cf87878787875a610c01565b92509050806105e057815160208301fd5b5095945050505050565b60006105f584610611565b610600576000610609565b630291f19360e51b5b949350505050565b600080600061061e61096c565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610691919061165d565b6001600160a01b031614801561060957505050506001600160a01b0316151590565b6000805460405163ac0c10af60e01b81526001600160a01b039091169063ac0c10af906106f2908c908c908c908c908c908c908c908c906004016116a3565b6020604051808303816000875af1158015610711573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610735919061165d565b9998505050505050505050565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611707565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156108145750825b90506000826001600160401b031660011480156108305750303b155b90508115801561083e575080155b1561085c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561088657845460ff60401b1916600160401b1785555b600080546001600160a01b0319166001600160a01b03881617905583156108e757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60606108fa33610611565b80610918575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6109345760405162461bcd60e51b81526004016105b690611600565b60006109508888888888881561094a5788610c01565b5a610c01565b925090508061096157815160208301fd5b509695505050505050565b6000806000610979610d23565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806109b557506001600160e01b031982166301ffc9a760e01b145b806109d057506001600160e01b031982166306608bdf60e21b145b806109eb57506001600160e01b03198216630b135d3f60e11b145b80610a0657506001600160e01b03198216630271189760e51b145b806103b157506001600160e01b03198216635194544760e01b1492915050565b600080600080610a3888888888610d31565b925092509250610a488282610e00565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610ab75760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105b6565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610b3c82610b02610100880188611720565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061041392505050565b6001600160e01b03191614610b555760019150506103b1565b5060009392505050565b6001600160401b038110610ba55760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016105b6565b50565b8015610ba557604051600090339060001990849084818181858888f193505050503d8060008114610bf5576040519150601f19603f3d011682016040523d82523d6000602084013e610bfa565b606091505b5050505050565b600060608360ff16600003610c7a57876001600160a01b031683888888604051610c2c929190611766565b600060405180830381858888f193505050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b606091505b509092509050610d18565b8360ff16600103610cdc57876001600160a01b0316838787604051610ca0929190611766565b6000604051808303818686f4925050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b60448201526064016105b6565b965096945050505050565b600080600061097930610ebd565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d6c5750600091506003905082610df6565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dc0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610dec57506000925060019150829050610df6565b9250600091508190505b9450945094915050565b6000826003811115610e1457610e14611776565b03610e1d575050565b6001826003811115610e3157610e31611776565b03610e4f5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e6357610e63611776565b03610e845760405163fce698f760e01b8152600481018290526024016105b6565b6003826003811115610e9857610e98611776565b03610eb9576040516335e2f38360e21b8152600481018290526024016105b6565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610f04919061178c565b935093509350509193909250565b6001600160a01b0381168114610ba557600080fd5b60008083601f840112610f3957600080fd5b5081356001600160401b03811115610f5057600080fd5b602083019150836020828501011115610f6857600080fd5b9250929050565b60008060008060008060008060c0898b031215610f8b57600080fd5b8835610f9681610f12565b97506020890135610fa681610f12565b96506040890135610fb681610f12565b95506060890135945060808901356001600160401b0380821115610fd957600080fd5b610fe58c838d01610f27565b909650945060a08b0135915080821115610ffe57600080fd5b5061100b8b828c01610f27565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610ba557600080fd5b60006020828403121561104757600080fd5b813561056a8161101f565b60008060008060006080868803121561106a57600080fd5b853561107581610f12565b9450602086013561108581610f12565b93506040860135925060608601356001600160401b038111156110a757600080fd5b6110b388828901610f27565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110ed57600080fd5b8235915060208301356001600160401b038082111561110b57600080fd5b818501915085601f83011261111f57600080fd5b813581811115611131576111316110c4565b604051601f8201601f19908116603f01168101908382118183101715611159576111596110c4565b8160405282815288602084870101111561117257600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000606084860312156111a957600080fd5b83356001600160401b038111156111bf57600080fd5b840161012081870312156111d257600080fd5b95602085013595506040909401359392505050565b803560ff811681146111f857600080fd5b919050565b60008060008060006080868803121561121557600080fd5b853561122081610f12565b94506020860135935060408601356001600160401b0381111561124257600080fd5b61124e88828901610f27565b90945092506112619050606087016111e7565b90509295509295909350565b6000815180845260005b8181101561129357602081850181015186830182015201611277565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061056a602083018461126d565b6000806000604084860312156112db57600080fd5b83356112e681610f12565b925060208401356001600160401b0381111561130157600080fd5b61130d86828701610f27565b9497909650939450505050565b60006020828403121561132c57600080fd5b813561056a81610f12565b60008060008060008060008060a0898b03121561135357600080fd5b883561135e81610f12565b975060208901356001600160401b038082111561137a57600080fd5b6113868c838d01610f27565b909950975060408b013591508082111561139f57600080fd5b6113ab8c838d01610f27565b909750955060608b01359150808211156113c457600080fd5b506113d18b828c01610f27565b90945092505060808901356113e581610f12565b809150509295985092959890939650565b60008083601f84011261140857600080fd5b5081356001600160401b0381111561141f57600080fd5b6020830191508360208260051b8501011115610f6857600080fd5b60008060008060008060008060a0898b03121561145657600080fd5b883561146181610f12565b9750602089013561147181610f12565b965060408901356001600160401b038082111561148d57600080fd5b6114998c838d016113f6565b909850965060608b01359150808211156114b257600080fd5b6114be8c838d016113f6565b909650945060808b0135915080821115610ffe57600080fd5b60008060008060008060a087890312156114f057600080fd5b86356114fb81610f12565b95506020870135945060408701356001600160401b0381111561151d57600080fd5b61152989828a01610f27565b909550935061153c9050606088016111e7565b9150608087013590509295509295509295565b60008060008060008060a0878903121561156857600080fd5b863561157381610f12565b9550602087013561158381610f12565b9450604087013593506060870135925060808701356001600160401b038111156115ac57600080fd5b6115b889828a01610f27565b979a9699509497509295939492505050565b828152604060208201526000610609604083018461126d565b6000602082840312156115f557600080fd5b815161056a8161101f565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561166f57600080fd5b815161056a81610f12565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600060018060a01b03808b16835260a060208401526116c660a084018a8c61167a565b83810360408501526116d981898b61167a565b905083810360608501526116ee81878961167a565b9250508084166080840152509998505050505050505050565b60006020828403121561171957600080fd5b5051919050565b6000808335601e1984360301811261173757600080fd5b8301803591506001600160401b0382111561175157600080fd5b602001915036819003821315610f6857600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b6000806000606084860312156117a157600080fd5b8351925060208401516117b381610f12565b8092505060408401519050925092509256fea2646970667358221220fd7751f80d2c41fd26ad14447421a5bd7371f57e5898d2acee86a1e3b7f2e90064736f6c63430008170033","storage":{}},"0xece71a05b36ca55b895427cd9a440eef7cf3669d":{"nonce":2,"balance":"0x0","code":"0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212207367fe7b9ef3fa2391c9072e36ff3ec39572252d1ea483432e4e7893c2c164b664736f6c63430008170033","storage":{"0x0":"0x2dd7fb5ca377b1a6e2960eb139af390a24d28fa","0x1":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x2":"0x0","0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea":"0x1a5447e634aa056fa302e48630da8425ec15a53a","0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8eb":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x4658c6373a1e066c35815a3e4061571216c48d7a","0x63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4":"0xf7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","0x63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e5":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722":"0x4","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbe":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbf":"0x0","0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x1","0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff":"0x456e325fdccc143bea0ecbcf45545e2065f6518b"}},"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266":{"nonce":9,"balance":"0x21e07c2afb5c27bea29","code":"0x","storage":{}},"0xf5fab379eb87599d7b5babeddefe6efdec6164b0":{"nonce":1,"balance":"0x0","code":"0x363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf3deeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd0000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669ddeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","storage":{"0x0":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00":"0x1"}},"0xf7a5d97e1ff22d3bb60bc6f385fd90989d2964e9":{"nonce":1,"balance":"0x0","code":"0x363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf363b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e40000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4","storage":{"0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0"}}},"best_block_number":"0xa","blocks":[{"header":{"parentHash":"0x8dc67fe9a95e34f72f8d2425da710e56a95525e5eb20cb0f4ff7e085c21060e1","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xe740b83488c4f73d9248b9e7b5f7ad2df0813dbac743547a616f1f05fa46e36d","transactionsRoot":"0xb4dde6681c2d87988d94a78212ee734f29507f71dcecf7bbee0a6f7555adb3bd","receiptsRoot":"0x30fa4e7e738d2ef8b8f31c7808837ffb12bd46ed81e41041f2999b517bab69dd","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x6","gasLimit":"0x1c9c380","gasUsed":"0x1e9000","timestamp":"0x66b52f59","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1fa51416","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x4","gasLimit":"0x2a33d5","maxFeePerGas":"0xbf27a9e84","maxPriorityFeePerGas":"0xb8a2665d4","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0xba7e4f5ffaf365f350f7ece63ecd7c7865716528743b0eb41b3a7d24c17b498760a06040523060805234801561001457600080fd5b5060805161233661003e600039600081816112fe01528181611327015261146501526123366000f3fe6080604052600436106101435760003560e01c806374e08829116100b0578063ad3cb1cc1161006c578063ad3cb1cc146103fc578063b88d4fde1461042d578063bfa0ee741461044d578063e852398b1461046d578063e985e9c51461048d578063edc16084146104c857005b806374e088291461031f5780637788b5a81461033f5780638eaa6ac01461035f57806395d89b411461038e578063a22cb465146103bc578063ac0c10af146103dc57005b806342842e0e116100ff57806342842e0e1461025c578063485cc9551461027c5780634f1ef2861461029c57806352d1902d146102af5780636352211e146102d257806370a08231146102f257005b806301ffc9a71461014c57806306fdde0314610181578063081812fc146101b8578063095ea7b31461020657806323b872dd146102265780632ffb26801461024657005b3661014a57005b005b34801561015857600080fd5b5061016c61016736600461177c565b6104ec565b60405190151581526020015b60405180910390f35b34801561018d57600080fd5b5060408051808201909152600581526404b694d61760dc1b60208201525b60405161017891906117e9565b3480156101c457600080fd5b506101ee6101d33660046117fc565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610178565b34801561021257600080fd5b5061014a61022136600461182a565b61053e565b34801561023257600080fd5b5061014a610241366004611856565b610623565b34801561025257600080fd5b50600019546101ee565b34801561026857600080fd5b5061014a610277366004611856565b6107ff565b34801561028857600080fd5b5061014a610297366004611897565b61081f565b61014a6102aa366004611973565b6109d2565b3480156102bb57600080fd5b506102c46109e8565b604051908152602001610178565b3480156102de57600080fd5b506101ee6102ed3660046117fc565b610a05565b3480156102fe57600080fd5b506102c461030d3660046119c3565b60006020819052908152604090205481565b34801561032b57600080fd5b5061014a61033a3660046119c3565b610a1f565b34801561034b57600080fd5b506102c461035a366004611a29565b610a3a565b34801561036b57600080fd5b5061037f61037a3660046117fc565b610b48565b60405161017893929190611a95565b34801561039a57600080fd5b5060408051808201909152600581526404b494d41560dc1b60208201526101ab565b3480156103c857600080fd5b5061014a6103d7366004611ac1565b610be0565b3480156103e857600080fd5b506101ee6103f7366004611af4565b610c4c565b34801561040857600080fd5b506101ab604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561043957600080fd5b5061014a610448366004611bb4565b610e66565b34801561045957600080fd5b506101ee6104683660046117fc565b610f4b565b34801561047957600080fd5b506102c4610488366004611a29565b610f62565b34801561049957600080fd5b5061016c6104a8366004611897565b600260209081526000928352604080842090915290825290205460ff1681565b3480156104d457600080fd5b506101ee6f6551c19487814612e58fe0681377575881565b60006301ffc9a760e01b6001600160e01b03198316148061051d57506380ac58cd60e01b6001600160e01b03198316145b806105385750635b5e139f60e01b6001600160e01b03198316145b92915050565b600061054982610a05565b9050336001600160a01b038216148061058557506001600160a01b038116600090815260026020908152604080832033845290915290205460ff165b6105c75760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526001602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61062c81610a05565b6001600160a01b0316836001600160a01b0316146106795760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016105be565b6001600160a01b0382166106c35760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016105be565b336001600160a01b03841614806106f357506106de81610f4b565b6001600160a01b0316336001600160a01b0316145b8061071457506000818152600160205260409020546001600160a01b031633145b8061074257506001600160a01b038316600090815260026020908152604080832033845290915290205460ff165b61077f5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016105be565b6001600160a01b0380841660008181526020818152604080832080546000190190559386168083528483208054600190810190915586810188905586845290915283822080546001600160a01b03191690559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61081a83838360405180602001604052806000815250610e66565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156108655750825b905060008267ffffffffffffffff1660011480156108825750303b155b905081158015610890575080155b156108ae5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108d857845460ff60401b1916600160401b1785555b61091b306040516108e890611759565b6001600160a01b039091168152602001604051809103906000f080158015610914573d6000803e3d6000fd5b5060001955565b600061094b886000801b89604051806020016040528060008152506040518060200160405280600081525061106f565b6040519091506001600160a01b038216907fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c090600090a25083156109c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6109da6112f3565b6109e4828261139d565b5050565b60006109f261145a565b506000805160206122e183398151915290565b6000815460a01c15610a175760206000f35b506001015490565b6000610a296114a3565b905060028101546109e45760020155565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610a8657610a86611c20565b6020910101516001600160f81b031916603f60f91b14610ab95760405163a3b9ac9560e01b815260040160405180910390fd5b6000610ac36114a3565b9050610ad08188886114d1565b92508254610adc578083555b610ae78386866114ff565b8686604051610af7929190611c36565b604051809103902083827fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48a8a8a8a604051610b369493929190611c6f565b60405180910390a45050949350505050565b60008060608354600185015481610b6457606060405260806000f35b8160a01c610b7f578160005280602052606060405260806000f35b60018201549050815491506040516080810160018801546020601f82010460018a010160028a015b818111600003610bc35780548452602090930192600101610ba7565b505084835283602084015260606040840152806060840152508082f35b3360008181526002602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610c9857610c98611c20565b01602001516001600160f81b031916603f60f91b03610cca57604051633dcf2a3f60e11b815260040160405180910390fd5b80600081518110610cdd57610cdd611c20565b01602001516001600160f81b031916602160f81b03610d0f5760405163305bb2eb60e11b815260040160405180910390fd5b6000610d196114a3565b90506000610d28828c8c6114d1565b90508a8a604051610d3a929190611c36565b604051809103902081837fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18e8e604051610d75929190611ca1565b60405180910390a4600282015415610d9557600282015494508460028201555b610e1c8c82878c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061106f92505050565b60405190945081906001600160a01b038e16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450505098975050505050505050565b610e71848484610623565b6001600160a01b0383163b1580610f065750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610eb7903390899088908890600401611cbd565b6020604051808303816000875af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa9190611cfa565b6001600160e01b031916145b610f455760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b50505050565b6000815460a01c15610f5d5760206000f35b505490565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610fae57610fae611c20565b6020910101516001600160f81b031916602160f81b14610fe157604051636ae27d4f60e01b815260040160405180910390fd5b6000610feb6114a3565b9050610ff88188886114d1565b92508254156110125763a542ed9c60e01b60005260046000fd5b8083556110208386866114ff565b8686604051611030929190611c36565b604051809103902083827f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8a8a8a8a604051610b369493929190611c6f565b60008454156110895763d202940c60e01b60005260046000fd5b6f6551c19487814612e58fe06813775758638a54c52f6110a96000195490565b60405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018890524660448201523060648201526084810188905260a4016020604051808303816000875af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611d17565b9050808555306001860155806001600160a01b031663d1f5789460e01b858560405160240161115d929190611d34565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161119b9190611d58565b6000604051808303816000865af19150503d80600081146111d8576040519150601f19603f3d011682016040523d82523d6000602084013e6111dd565b606091505b50505060018581018790556001600160a01b03871660009081526020819052604081208054909190611210908490611d74565b90915550506001600160a01b0386163b15806112ab5750604051630a85bd0160e11b808252906001600160a01b0388169063150b7a029061125c9033906000908b908990600401611cbd565b6020604051808303816000875af115801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190611cfa565b6001600160e01b031916145b6112ea5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b95945050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061137a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661136e6000805160206122e1833981519152546001600160a01b031690565b6001600160a01b031614155b156113985760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113f7575060408051601f3d908101601f191682019092526113f491810190611d95565b60015b61141f57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105be565b6000805160206122e1833981519152811461145057604051632a87526960e21b8152600481018290526024016105be565b61081a8383611535565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113985760405163703e46dd60e11b815260040160405180910390fd5b6000806114af3361158b565b92505050338154146114cc57636b38e6f660e01b60005260046000fd5b919050565b6000604051602083018101604052828482379190912060408051948552602085019190915290922092915050565b60028301828281015b8082116000036115275781358355600183019250602082019150611508565b505050806001840155505050565b61153e826115e0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156115835761081a8282611645565b6109e46116b2565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906115d29190611dae565b935093509350509193909250565b806001600160a01b03163b60000361161657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105be565b6000805160206122e183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516116629190611d58565b600060405180830381855af49150503d806000811461169d576040519150601f19603f3d011682016040523d82523d6000602084013e6116a2565b606091505b50915091506112ea8583836116d1565b34156113985760405163b398979f60e01b815260040160405180910390fd5b6060826116e6576116e182611730565b611729565b81511580156116fd57506001600160a01b0384163b155b1561172657604051639996b31560e01b81526001600160a01b03851660048201526024016105be565b50805b9392505050565b8051156117405780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104f980611de883390190565b6001600160e01b03198116811461139a57600080fd5b60006020828403121561178e57600080fd5b813561172981611766565b60005b838110156117b457818101518382015260200161179c565b50506000910152565b600081518084526117d5816020860160208601611799565b601f01601f19169290920160200192915050565b60208152600061172960208301846117bd565b60006020828403121561180e57600080fd5b5035919050565b6001600160a01b038116811461139a57600080fd5b6000806040838503121561183d57600080fd5b823561184881611815565b946020939093013593505050565b60008060006060848603121561186b57600080fd5b833561187681611815565b9250602084013561188681611815565b929592945050506040919091013590565b600080604083850312156118aa57600080fd5b82356118b581611815565b915060208301356118c581611815565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126118f757600080fd5b813567ffffffffffffffff80821115611912576119126118d0565b604051601f8301601f19908116603f0116810190828211818310171561193a5761193a6118d0565b8160405283815286602085880101111561195357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561198657600080fd5b823561199181611815565b9150602083013567ffffffffffffffff8111156119ad57600080fd5b6119b9858286016118e6565b9150509250929050565b6000602082840312156119d557600080fd5b813561172981611815565b60008083601f8401126119f257600080fd5b50813567ffffffffffffffff811115611a0a57600080fd5b602083019150836020828501011115611a2257600080fd5b9250929050565b60008060008060408587031215611a3f57600080fd5b843567ffffffffffffffff80821115611a5757600080fd5b611a63888389016119e0565b90965094506020870135915080821115611a7c57600080fd5b50611a89878288016119e0565b95989497509550505050565b6001600160a01b038481168252831660208201526060604082018190526000906112ea908301846117bd565b60008060408385031215611ad457600080fd5b8235611adf81611815565b9150602083013580151581146118c557600080fd5b60008060008060008060008060a0898b031215611b1057600080fd5b8835611b1b81611815565b9750602089013567ffffffffffffffff80821115611b3857600080fd5b611b448c838d016119e0565b909950975060408b0135915080821115611b5d57600080fd5b611b698c838d016119e0565b909750955060608b0135915080821115611b8257600080fd5b50611b8f8b828c016119e0565b9094509250506080890135611ba381611815565b809150509295985092959890939650565b60008060008060808587031215611bca57600080fd5b8435611bd581611815565b93506020850135611be581611815565b925060408501359150606085013567ffffffffffffffff811115611c0857600080fd5b611c14878288016118e6565b91505092959194509250565b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611c83604083018688611c46565b8281036020840152611c96818587611c46565b979650505050505050565b602081526000611cb5602083018486611c46565b949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611cf0908301846117bd565b9695505050505050565b600060208284031215611d0c57600080fd5b815161172981611766565b600060208284031215611d2957600080fd5b815161172981611815565b6001600160a01b0383168152604060208201819052600090611cb5908301846117bd565b60008251611d6a818460208701611799565b9190910192915050565b8082018082111561053857634e487b7160e01b600052601160045260246000fd5b600060208284031215611da757600080fd5b5051919050565b600080600060608486031215611dc357600080fd5b835192506020840151611dd581611815565b8092505060408401519050925092509256fe60a060405234801561001057600080fd5b506040516104f93803806104f983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161046f61008a60003960006058015261046f6000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b61002661003b565b005b61002661003636600461033a565b61004d565b61004b6100466100d9565b610111565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100b35760405162461bcd60e51b81526020600482015260066024820152650216b696d61760d41b60448201526064015b60405180910390fd5b60006100bd6100d9565b6001600160a01b0316036100d5576100d58282610135565b5050565b600061010c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610130573d6000f35b3d6000fd5b61013e82610190565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610188576101838282610207565b505050565b6100d561027d565b806001600160a01b03163b6000036101c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100aa565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610224919061040a565b600060405180830381855af49150503d806000811461025f576040519150601f19603f3d011682016040523d82523d6000602084013e610264565b606091505b509150915061027485838361029c565b95945050505050565b341561004b5760405163b398979f60e01b815260040160405180910390fd5b6060826102b1576102ac826102fb565b6102f4565b81511580156102c857506001600160a01b0384163b155b156102f157604051639996b31560e01b81526001600160a01b03851660048201526024016100aa565b50805b9392505050565b80511561030b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561034d57600080fd5b82356001600160a01b038116811461036457600080fd5b9150602083013567ffffffffffffffff8082111561038157600080fd5b818501915085601f83011261039557600080fd5b8135818111156103a7576103a7610324565b604051601f8201601f19908116603f011681019083821181831017156103cf576103cf610324565b816040528281528860208487010111156103e857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561042b5760208186018101518583015201610411565b50600092019182525091905056fea2646970667358221220d7d36d3d943bb5535c93e093b5c016f6bb9b948b6d00fd0068ee903fb4b4dbfb64736f6c63430008170033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220438b0639c91c57e22b22ecf3b92d62f5f5d4a41920c91ba4dd6d9f60f8f8f05e64736f6c63430008170033","r":"0x48defafade154f4d9f8fd1a3957f6744d5572247e26d3f476d6bcd645c2b1b58","s":"0x5f814c74d3085ad98f58a460575c5f0843bd321ec8db0ed4b1047ca2eb2875df","yParity":"0x1","hash":"0x1b5d621d3bc39b9bbe38309073cca4507f2d9b79a237b2076f17364b98306bc1"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","transactionsRoot":"0x56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421","receiptsRoot":"0x0000000000000000000000000000000000000000000000000000000000000000","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x0","gasLimit":"0x1c9c380","gasUsed":"0x0","timestamp":"0x66b52e49","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[],"ommers":[]},{"header":{"parentHash":"0x6cf88c41127c8c869868bad1e25eb338b2e46e4af7adaa8a201a666f873467b6","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x3282a923c65e004a9e9e7367950c3abca243642281d2341ea008c443b919579d","transactionsRoot":"0x1803fa30e7132ee9d5b80785f0aea039ecfce48adb352c872377b9f418cb7b3d","receiptsRoot":"0x3e05f288e774419bcc420aa9219f9cd1ae18cb8f635f7b1deb58be8a8a598b0c","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x2","gasLimit":"0x1c9c380","gasUsed":"0xd5238","timestamp":"0x66b52f50","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x342a1c58","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"Legacy":{"nonce":"0x0","gasPrice":"0x174876e800","gasLimit":"0xf4240","value":"0x0","input":"0x608060405234801561001057600080fd5b50610ee0806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033","r":"0xedce47092c0f398cebf3ffc267f05c8e7076e3b89445e0fe50f6332273d4569b","s":"0x1b0b9d000e19b24c5869b0fc3b22b0d6fa47cd63316875cbbd577d76e6fde086","v":28,"hash":"0x07471adfe8f4ec553c1199f495be97fc8be8e0626ae307281c22534460184ed1"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x19a0946b2bbb7c32f4134a97f2097f20e1b08ae2bb2907d0a1a692a17546107e","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xfa6b3788a5f167cf9fd8a1716da68cd0faca29d589c8218b9f5a9bec34287173","transactionsRoot":"0xcc76d460798dfc2d7d75a96f9fab2b14463d2fe880a8daa95408191846fc58b2","receiptsRoot":"0x399961822e5823198005f04d11f9c7cf440c05e705212c29b6c74fff821fb051","logsBloom":"0x0001000000000000008000000000000c400000000000000000000004000000000000000000000000000400000400000000400000002000008000000000000040800000040000000000000000000002000000000000000000000004000000400002000000020100000000000000000800000000000000000000000000000000000000002000002000000800000000000400000000000080000000000000000000000000000000000000000000002000000000000000000000000000000000000000000020000000000000000000000000000001000094004000000000000020000000000000000000000001800000000020000000000000000000000000400100","difficulty":"0x0","number":"0x7","gasLimit":"0x1c9c380","gasUsed":"0x95762","timestamp":"0x66b52f5a","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x1c37a90f","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x5","gasLimit":"0xce62a","maxFeePerGas":"0xbf27a9e84","maxPriorityFeePerGas":"0xb8a2665d4","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0xba7e4f5ffaf365f350f7ece63ecd7c7865716528743b0eb41b3a7d24c17b4987608060405260405161040a38038061040a83398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60aa806103606000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212207367fe7b9ef3fa2391c9072e36ff3ec39572252d1ea483432e4e7893c2c164b664736f6c634300081700330000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000","r":"0x2fffd1c9f45974cce05a2dfb0c18deae2b663925366ba98f9bf46e173e0fd8fb","s":"0x7468523ada5a35dc97b675ea59840d56263a5c7d212cdbe8cc0e7da10881bbeb","yParity":"0x0","hash":"0x8d08419d69c1301ea72a01ee0e8ec35c65493732e0354a099f989bab5be4b8dc"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x2a28d19ebf30bc56cf87eea916654d070d60821d63b9c7505c5b3c91b1979851","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x6dae1dab73c720a462391ac1bfccca40cab83c0e599ab8f04fdf0b379a42f2d1","transactionsRoot":"0xedb92d02167bf108ce7ccb97339152e1a55ecd495f54075b193774be0b56e633","receiptsRoot":"0x6a132ac2ee1cc27083ebceb1a1a055449cee99b4d6229029c444ba858fcf41f1","logsBloom":"0x0001000000000000008000000000000c400000000000000000000004000000000000000000000000000400000480000000400000000000000000000000000000800000000000000000000008000002000000000000008000000004200000400000001000021100000100000100000800000000000000080000000010000000000000000000006000400000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000022800000200000000000000000000000002890000000000000000020000000000000000000004000000000000000000000000000000000000001404108","difficulty":"0x0","number":"0xa","gasLimit":"0x1c9c380","gasUsed":"0x335ac","timestamp":"0x66b52f5d","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x131bbb0f","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x8","gasLimit":"0x46ede","maxFeePerGas":"0xbf27a9e84","maxPriorityFeePerGas":"0xb8a2665d4","to":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","value":"0x0","accessList":[],"input":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000009637261736874657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0xa6285b2d5b78de9e04370af12e8bbbfcd4d26e350ef6beefa465d0c015453b53","s":"0x1c1c8255f6bde3c47d8e58370760f1f9590aeb20094b33b01b7c711c1f1af7fb","yParity":"0x1","hash":"0x9fb16aa913dabe51928da3f77ab1d992f700662407063becc390f171c004302b"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x1024f35cbf210a3f204bd3cd7d5f3b0123a9286323829f6df4bb268ecb144fd4","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0xfcf26516c23a83c5369d38cfa8b9d244ad36d44f675b507eb272c6d6e615a2e2","transactionsRoot":"0x52f850e4a75aaaf361b1310c353ac6e16515af6904498c7f2c456267e9b9a137","receiptsRoot":"0x5c9703f2ffac63a812dead7fae1aa7e838f2a41fb3c11e1825383d1055c2dc44","logsBloom":"0x000100000000000000a000000000000c400000000000008000000004000000000000000000000080000000000400000000000000000000000000000000000000800000000000000000000008000002000000000000008000000004000000000000000000020100000000000100000800000000000000000000000010800000000000000000002000400800000000000000000000000080000000000000000000000000001000000000002000002000000000000000000000000000000000000000000022000000200000000000000000000000002094000000000200000020010000000000000000008000000400000002000000010000000000000000400108","difficulty":"0x0","number":"0x9","gasLimit":"0x1c9c380","gasUsed":"0x3fb83","timestamp":"0x66b52f5c","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x15c8b005","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x7","gasLimit":"0x58022","maxFeePerGas":"0xbf27a9e84","maxPriorityFeePerGas":"0xb8a2665d4","to":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","value":"0x0","accessList":[],"input":"0x51945447000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164ac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000000000364657600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0x8f579cd7e358c58b957ec1a9534881e8bf1ccb72423d970b45741bc1fbfc386d","s":"0x2325ace04ebce2574d5e7633fc6177556ca2f501063081e2589bf10744b57455","yParity":"0x1","hash":"0x0bdcb30474e571f5662916de799b69089fcad83731f5298ec15cfc67dcac0ce7"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x53a26b9ef83be8588c8d5e1ad252be41f188a351c4883d1dfd9bb11d325e3c09","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x7b19be269557d4247b82b0415d38655cc7e1cdfe99bc046ab71d126cf087f35c","transactionsRoot":"0x063e7f3f7dcf77fd7f1ec2ecb41eb5e16436071107dc32f04dc34c1d8e232aff","receiptsRoot":"0x68a8db0e8a1579833ff47d0c7ca686e8549ce282b790023baae9e402104476dd","logsBloom":"0x0001000000000000008000000000000c40000000000000000000000400000000000000000000008000000000040000000000000000000000000000000000000880000000000000000000000800000200000000000000800000000420000000000000000002010000000000010000080000000000000000000000001000000000000000000000200040080000000000000000000000008000000000000000000000000000100000000000000000200000000000000000000000000000000080000000006280000020000000000000000004000000209400000000000000002000000000000040000000c000000000000000800000000000000000000000400108","difficulty":"0x0","number":"0x8","gasLimit":"0x1c9c380","gasUsed":"0x3fb77","timestamp":"0x66b52f5b","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x18d58e21","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x6","gasLimit":"0x5d2e5","maxFeePerGas":"0xbf27a9e84","maxPriorityFeePerGas":"0xb8a2665d4","to":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","value":"0x0","accessList":[],"input":"0x51945447000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164ac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000026f730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","r":"0xdb9196da9c505fce0d67b994d155bbc2b4ed680fee4c948225b5be05d7d4faec","s":"0x559a40a505878450391a3a368e6c78033b3180a875bd895d673d4dd7f60217a0","yParity":"0x0","hash":"0x5bb233ca9f07ca0544ca2acb755d7e1575ca14bff851dd9a0899688eb9900ba5"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xa6dfe52395997dd2c7a9ee566f158918839da0393bb46b8bec6651b30fbe2302","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x6193017067abcbf89abb93c2a22b2ed34272cb589c447f584846d2cbfa16d54d","transactionsRoot":"0x066b160fae4e6ca5369857fef38cada300127eff93bed3e06d3b84375621d938","receiptsRoot":"0xa6274d7ca92bcefd4532a7fe6b033555915561051631e703cb2065b9d9a9695a","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x4","gasLimit":"0x1c9c380","gasUsed":"0x122fd2","timestamp":"0x66b52f57","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2856a51e","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x2","gasLimit":"0x17a2e1","maxFeePerGas":"0xbf27a9e84","maxPriorityFeePerGas":"0xb8a2665d4","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b5061149a806100206000396000f3fe6080604052600436106100eb5760003560e01c80636d70f7ae1161008a578063ca3b98bb11610059578063ca3b98bb146102ad578063d087d28814610298578063f23a6e61146102c0578063fc0c546a146102ed57600080fd5b80636d70f7ae1461021a578063b0d691fe1461023a578063bc197c8114610269578063c19d93fb1461029857600080fd5b80631626ba7e116100c65780631626ba7e1461018c57806319822f7c146101ac57806351945447146101da578063523e3260146101fa57600080fd5b806223de29146100f757806301ffc9a71461011e578063150b7a021461015357600080fd5b366100f257005b600080fd5b34801561010357600080fd5b5061011c610112366004610d5a565b5050505050505050565b005b34801561012a57600080fd5b5061013e610139366004610e20565b610325565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061017361016e366004610e3d565b610351565b6040516001600160e01b0319909116815260200161014a565b34801561019857600080fd5b506101736101a7366004610ec5565b6103ad565b3480156101b857600080fd5b506101cc6101c7366004610f7f565b6104d8565b60405190815260200161014a565b6101ed6101e8366004610fe8565b61050b565b60405161014a919061109e565b34801561020657600080fd5b506101736102153660046110b1565b610584565b34801561022657600080fd5b5061013e610235366004611105565b6105ab565b34801561024657600080fd5b50604051735ff137d4b0fdcd49dca30c7cf57e578a026d2789815260200161014a565b34801561027557600080fd5b50610173610284366004611166565b63bc197c8160e01b98975050505050505050565b3480156102a457600080fd5b506101cc61064d565b6101ed6102bb366004611203565b6106da565b3480156102cc57600080fd5b506101736102db36600461127b565b63f23a6e6160e01b9695505050505050565b3480156102f957600080fd5b50610302610757565b604080519384526001600160a01b0390921660208401529082015260600161014a565b60006103308261076f565b8061034b57506001600160e01b03198216636faff5f160e01b145b92915050565b600080600061035e610757565b909350915050336001600160a01b03831614801561037b57508086145b156103995760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806103d0856020810151604082015160609092015160001a92909190565b9094509250905060ff811660000361049e57828583016020016103f2826105ab565b15801561040857506001600160a01b0382163014155b1561042357506001600160e01b0319945061034b9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610451908b9085906004016112f6565b602060405180830381865afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610492919061130f565b9550505050505061034b565b6104ad61023587838686610811565b156104c55750630b135d3f60e11b925061034b915050565b506001600160e01b031995945050505050565b60006104e261083f565b6104ec84846108a4565b90506104fb846020013561094a565b61050482610993565b9392505050565b6060610516336105ab565b80610534575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105595760405162461bcd60e51b81526004016105509061132c565b60405180910390fd5b600061056987878787875a6109ec565b925090508061057a57815160208301fd5b5095945050505050565b600061058f846105ab565b61059a5760006105a3565b630291f19360e51b5b949350505050565b60008060006105b8610757565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611389565b6001600160a01b03161480156105a357505050506001600160a01b0316151590565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d591906113a6565b905090565b60606106e5336105ab565b80610703575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b61071f5760405162461bcd60e51b81526004016105509061132c565b600061073b8888888888881561073557886109ec565b5a6109ec565b925090508061074c57815160208301fd5b509695505050505050565b6000806000610764610b0e565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806107a057506001600160e01b031982166301ffc9a760e01b145b806107bb57506001600160e01b031982166306608bdf60e21b145b806107d657506001600160e01b03198216630b135d3f60e11b145b806107f157506001600160e01b03198216630271189760e51b145b8061034b57506001600160e01b03198216635194544760e01b1492915050565b60008060008061082388888888610b1c565b9250925092506108338282610beb565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d2789146108a25760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610550565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610927826108ed6101008801886113bf565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ad92505050565b6001600160e01b0319161461094057600191505061034b565b5060009392505050565b6001600160401b0381106109905760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610550565b50565b801561099057604051600090339060001990849084818181858888f193505050503d80600081146109e0576040519150601f19603f3d011682016040523d82523d6000602084013e6109e5565b606091505b5050505050565b600060608360ff16600003610a6557876001600160a01b031683888888604051610a17929190611405565b600060405180830381858888f193505050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b606091505b509092509050610b03565b8360ff16600103610ac757876001600160a01b0316838787604051610a8b929190611405565b6000604051808303818686f4925050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610550565b965096945050505050565b600080600061076430610ca8565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b575750600091506003905082610be1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610bab573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd757506000925060019150829050610be1565b9250600091508190505b9450945094915050565b6000826003811115610bff57610bff611415565b03610c08575050565b6001826003811115610c1c57610c1c611415565b03610c3a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c4e57610c4e611415565b03610c6f5760405163fce698f760e01b815260048101829052602401610550565b6003826003811115610c8357610c83611415565b03610ca4576040516335e2f38360e21b815260048101829052602401610550565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610cef919061142b565b935093509350509193909250565b6001600160a01b038116811461099057600080fd5b60008083601f840112610d2457600080fd5b5081356001600160401b03811115610d3b57600080fd5b602083019150836020828501011115610d5357600080fd5b9250929050565b60008060008060008060008060c0898b031215610d7657600080fd5b8835610d8181610cfd565b97506020890135610d9181610cfd565b96506040890135610da181610cfd565b95506060890135945060808901356001600160401b0380821115610dc457600080fd5b610dd08c838d01610d12565b909650945060a08b0135915080821115610de957600080fd5b50610df68b828c01610d12565b999c989b5096995094979396929594505050565b6001600160e01b03198116811461099057600080fd5b600060208284031215610e3257600080fd5b813561050481610e0a565b600080600080600060808688031215610e5557600080fd5b8535610e6081610cfd565b94506020860135610e7081610cfd565b93506040860135925060608601356001600160401b03811115610e9257600080fd5b610e9e88828901610d12565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610ed857600080fd5b8235915060208301356001600160401b0380821115610ef657600080fd5b818501915085601f830112610f0a57600080fd5b813581811115610f1c57610f1c610eaf565b604051601f8201601f19908116603f01168101908382118183101715610f4457610f44610eaf565b81604052828152886020848701011115610f5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610f9457600080fd5b83356001600160401b03811115610faa57600080fd5b84016101208187031215610fbd57600080fd5b95602085013595506040909401359392505050565b803560ff81168114610fe357600080fd5b919050565b60008060008060006080868803121561100057600080fd5b853561100b81610cfd565b94506020860135935060408601356001600160401b0381111561102d57600080fd5b61103988828901610d12565b909450925061104c905060608701610fd2565b90509295509295909350565b6000815180845260005b8181101561107e57602081850181015186830182015201611062565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006105046020830184611058565b6000806000604084860312156110c657600080fd5b83356110d181610cfd565b925060208401356001600160401b038111156110ec57600080fd5b6110f886828701610d12565b9497909650939450505050565b60006020828403121561111757600080fd5b813561050481610cfd565b60008083601f84011261113457600080fd5b5081356001600160401b0381111561114b57600080fd5b6020830191508360208260051b8501011115610d5357600080fd5b60008060008060008060008060a0898b03121561118257600080fd5b883561118d81610cfd565b9750602089013561119d81610cfd565b965060408901356001600160401b03808211156111b957600080fd5b6111c58c838d01611122565b909850965060608b01359150808211156111de57600080fd5b6111ea8c838d01611122565b909650945060808b0135915080821115610de957600080fd5b60008060008060008060a0878903121561121c57600080fd5b863561122781610cfd565b95506020870135945060408701356001600160401b0381111561124957600080fd5b61125589828a01610d12565b9095509350611268905060608801610fd2565b9150608087013590509295509295509295565b60008060008060008060a0878903121561129457600080fd5b863561129f81610cfd565b955060208701356112af81610cfd565b9450604087013593506060870135925060808701356001600160401b038111156112d857600080fd5b6112e489828a01610d12565b979a9699509497509295939492505050565b8281526040602082015260006105a36040830184611058565b60006020828403121561132157600080fd5b815161050481610e0a565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561139b57600080fd5b815161050481610cfd565b6000602082840312156113b857600080fd5b5051919050565b6000808335601e198436030181126113d657600080fd5b8301803591506001600160401b038211156113f057600080fd5b602001915036819003821315610d5357600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b60008060006060848603121561144057600080fd5b83519250602084015161145281610cfd565b8092505060408401519050925092509256fea26469706673582212208d59c9ea570137cb310eeda2228ecdd5476bdf5b706694c5971e2df485849dcb64736f6c63430008170033","r":"0x1f76efced941539ce73ec5823a7a183cc4d64b7c7c5015a3d095b59971e89562","s":"0x6d144264c7dcbc11bcb06e8045cc5ba0f5605e9fab8f9e6b8fea6b7c7d147a92","yParity":"0x0","hash":"0x807d8700ba9c2dfc248ac4f66d68d2854d81b50296f992a8c0324ab787d24251"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xff0189e8613b096c9f4c3c1072a949a3b0a78dd0094f3505cf0598e5a10611a0","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x91e3e7b25850d81363b179720948b8a67859b2fe5435f63a77ada1d89a70aaf3","transactionsRoot":"0x974e3aff791a5fd12cfdc24aa037bae92a0115a2517e31db7120240fdf8c01d8","receiptsRoot":"0xf19d25ba88d96815b056e6495cb481958e17df55ec5b6eddcb1dc9dc0e6c9ff2","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x5","gasLimit":"0x1c9c380","gasUsed":"0x150999","timestamp":"0x66b52f58","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x23b26207","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x3","gasLimit":"0x1b5751","maxFeePerGas":"0xbf27a9e84","maxPriorityFeePerGas":"0xb8a2665d4","value":"0x0","accessList":[],"input":"0x608060405234801561001057600080fd5b506117fb806100206000396000f3fe6080604052600436106101015760003560e01c8063ac0c10af11610095578063c4d66de811610064578063c4d66de8146102f3578063ca3b98bb14610313578063d087d288146102de578063f23a6e6114610326578063fc0c546a1461035357600080fd5b8063ac0c10af14610250578063b0d691fe14610288578063bc197c81146102af578063c19d93fb146102de57600080fd5b806319822f7c116100d157806319822f7c146101c257806351945447146101f0578063523e3260146102105780636d70f7ae1461023057600080fd5b806223de291461010d57806301ffc9a714610134578063150b7a02146101695780631626ba7e146101a257600080fd5b3661010857005b600080fd5b34801561011957600080fd5b50610132610128366004610f6f565b5050505050505050565b005b34801561014057600080fd5b5061015461014f366004611035565b61038b565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611052565b6103b7565b6040516001600160e01b03199091168152602001610160565b3480156101ae57600080fd5b506101896101bd3660046110da565b610413565b3480156101ce57600080fd5b506101e26101dd366004611194565b61053e565b604051908152602001610160565b6102036101fe3660046111fd565b610571565b60405161016091906112b3565b34801561021c57600080fd5b5061018961022b3660046112c6565b6105ea565b34801561023c57600080fd5b5061015461024b36600461131a565b610611565b34801561025c57600080fd5b5061027061026b366004611337565b6106b3565b6040516001600160a01b039091168152602001610160565b34801561029457600080fd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d2789610270565b3480156102bb57600080fd5b506101896102ca36600461143a565b63bc197c8160e01b98975050505050505050565b3480156102ea57600080fd5b506101e2610742565b3480156102ff57600080fd5b5061013261030e36600461131a565b6107cf565b6102036103213660046114d7565b6108ef565b34801561033257600080fd5b5061018961034136600461154f565b63f23a6e6160e01b9695505050505050565b34801561035f57600080fd5b5061036861096c565b604080519384526001600160a01b03909216602084015290820152606001610160565b600061039682610984565b806103b157506001600160e01b03198216636faff5f160e01b145b92915050565b60008060006103c461096c565b909350915050336001600160a01b0383161480156103e157508086145b156103ff5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b600080600080610436856020810151604082015160609092015160001a92909190565b9094509250905060ff8116600003610504578285830160200161045882610611565b15801561046e57506001600160a01b0382163014155b1561048957506001600160e01b031994506103b19350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104b7908b9085906004016115ca565b602060405180830381865afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f891906115e3565b955050505050506103b1565b61051361024b87838686610a26565b1561052b5750630b135d3f60e11b92506103b1915050565b506001600160e01b031995945050505050565b6000610548610a54565b6105528484610ab9565b90506105618460200135610b5f565b61056a82610ba8565b9392505050565b606061057c33610611565b8061059a575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105bf5760405162461bcd60e51b81526004016105b690611600565b60405180910390fd5b60006105cf87878787875a610c01565b92509050806105e057815160208301fd5b5095945050505050565b60006105f584610611565b610600576000610609565b630291f19360e51b5b949350505050565b600080600061061e61096c565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610691919061165d565b6001600160a01b031614801561060957505050506001600160a01b0316151590565b6000805460405163ac0c10af60e01b81526001600160a01b039091169063ac0c10af906106f2908c908c908c908c908c908c908c908c906004016116a3565b6020604051808303816000875af1158015610711573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610735919061165d565b9998505050505050505050565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611707565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156108145750825b90506000826001600160401b031660011480156108305750303b155b90508115801561083e575080155b1561085c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561088657845460ff60401b1916600160401b1785555b600080546001600160a01b0319166001600160a01b03881617905583156108e757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60606108fa33610611565b80610918575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6109345760405162461bcd60e51b81526004016105b690611600565b60006109508888888888881561094a5788610c01565b5a610c01565b925090508061096157815160208301fd5b509695505050505050565b6000806000610979610d23565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806109b557506001600160e01b031982166301ffc9a760e01b145b806109d057506001600160e01b031982166306608bdf60e21b145b806109eb57506001600160e01b03198216630b135d3f60e11b145b80610a0657506001600160e01b03198216630271189760e51b145b806103b157506001600160e01b03198216635194544760e01b1492915050565b600080600080610a3888888888610d31565b925092509250610a488282610e00565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610ab75760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105b6565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610b3c82610b02610100880188611720565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061041392505050565b6001600160e01b03191614610b555760019150506103b1565b5060009392505050565b6001600160401b038110610ba55760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016105b6565b50565b8015610ba557604051600090339060001990849084818181858888f193505050503d8060008114610bf5576040519150601f19603f3d011682016040523d82523d6000602084013e610bfa565b606091505b5050505050565b600060608360ff16600003610c7a57876001600160a01b031683888888604051610c2c929190611766565b600060405180830381858888f193505050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b606091505b509092509050610d18565b8360ff16600103610cdc57876001600160a01b0316838787604051610ca0929190611766565b6000604051808303818686f4925050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b60448201526064016105b6565b965096945050505050565b600080600061097930610ebd565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d6c5750600091506003905082610df6565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dc0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610dec57506000925060019150829050610df6565b9250600091508190505b9450945094915050565b6000826003811115610e1457610e14611776565b03610e1d575050565b6001826003811115610e3157610e31611776565b03610e4f5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e6357610e63611776565b03610e845760405163fce698f760e01b8152600481018290526024016105b6565b6003826003811115610e9857610e98611776565b03610eb9576040516335e2f38360e21b8152600481018290526024016105b6565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610f04919061178c565b935093509350509193909250565b6001600160a01b0381168114610ba557600080fd5b60008083601f840112610f3957600080fd5b5081356001600160401b03811115610f5057600080fd5b602083019150836020828501011115610f6857600080fd5b9250929050565b60008060008060008060008060c0898b031215610f8b57600080fd5b8835610f9681610f12565b97506020890135610fa681610f12565b96506040890135610fb681610f12565b95506060890135945060808901356001600160401b0380821115610fd957600080fd5b610fe58c838d01610f27565b909650945060a08b0135915080821115610ffe57600080fd5b5061100b8b828c01610f27565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610ba557600080fd5b60006020828403121561104757600080fd5b813561056a8161101f565b60008060008060006080868803121561106a57600080fd5b853561107581610f12565b9450602086013561108581610f12565b93506040860135925060608601356001600160401b038111156110a757600080fd5b6110b388828901610f27565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110ed57600080fd5b8235915060208301356001600160401b038082111561110b57600080fd5b818501915085601f83011261111f57600080fd5b813581811115611131576111316110c4565b604051601f8201601f19908116603f01168101908382118183101715611159576111596110c4565b8160405282815288602084870101111561117257600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000606084860312156111a957600080fd5b83356001600160401b038111156111bf57600080fd5b840161012081870312156111d257600080fd5b95602085013595506040909401359392505050565b803560ff811681146111f857600080fd5b919050565b60008060008060006080868803121561121557600080fd5b853561122081610f12565b94506020860135935060408601356001600160401b0381111561124257600080fd5b61124e88828901610f27565b90945092506112619050606087016111e7565b90509295509295909350565b6000815180845260005b8181101561129357602081850181015186830182015201611277565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061056a602083018461126d565b6000806000604084860312156112db57600080fd5b83356112e681610f12565b925060208401356001600160401b0381111561130157600080fd5b61130d86828701610f27565b9497909650939450505050565b60006020828403121561132c57600080fd5b813561056a81610f12565b60008060008060008060008060a0898b03121561135357600080fd5b883561135e81610f12565b975060208901356001600160401b038082111561137a57600080fd5b6113868c838d01610f27565b909950975060408b013591508082111561139f57600080fd5b6113ab8c838d01610f27565b909750955060608b01359150808211156113c457600080fd5b506113d18b828c01610f27565b90945092505060808901356113e581610f12565b809150509295985092959890939650565b60008083601f84011261140857600080fd5b5081356001600160401b0381111561141f57600080fd5b6020830191508360208260051b8501011115610f6857600080fd5b60008060008060008060008060a0898b03121561145657600080fd5b883561146181610f12565b9750602089013561147181610f12565b965060408901356001600160401b038082111561148d57600080fd5b6114998c838d016113f6565b909850965060608b01359150808211156114b257600080fd5b6114be8c838d016113f6565b909650945060808b0135915080821115610ffe57600080fd5b60008060008060008060a087890312156114f057600080fd5b86356114fb81610f12565b95506020870135945060408701356001600160401b0381111561151d57600080fd5b61152989828a01610f27565b909550935061153c9050606088016111e7565b9150608087013590509295509295509295565b60008060008060008060a0878903121561156857600080fd5b863561157381610f12565b9550602087013561158381610f12565b9450604087013593506060870135925060808701356001600160401b038111156115ac57600080fd5b6115b889828a01610f27565b979a9699509497509295939492505050565b828152604060208201526000610609604083018461126d565b6000602082840312156115f557600080fd5b815161056a8161101f565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561166f57600080fd5b815161056a81610f12565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600060018060a01b03808b16835260a060208401526116c660a084018a8c61167a565b83810360408501526116d981898b61167a565b905083810360608501526116ee81878961167a565b9250508084166080840152509998505050505050505050565b60006020828403121561171957600080fd5b5051919050565b6000808335601e1984360301811261173757600080fd5b8301803591506001600160401b0382111561175157600080fd5b602001915036819003821315610f6857600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b6000806000606084860312156117a157600080fd5b8351925060208401516117b381610f12565b8092505060408401519050925092509256fea2646970667358221220fd7751f80d2c41fd26ad14447421a5bd7371f57e5898d2acee86a1e3b7f2e90064736f6c63430008170033","r":"0x6c2f6136435524d219e27c099d7873e959858ed71d2929e1b70d8254d7724bf5","s":"0xd6f04929bb3000558bcd3effe4ed495cf6bce61708c963908d3c4d3272add36","yParity":"0x1","hash":"0x898677c199c5c70a8700a7905dddb7c1f7f3129e97d24a8d23b28f55c404feb8"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0x3024c5987bff9db3841759e7cec74fa7001fd87ff6b47624a9a386fc79607979","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x3de0d74cb870fb6596a7a586e3c178de9c57aed5e52ba6c6fdbe4b8ae1808449","transactionsRoot":"0x8a113cbece057f79f7ff1a5a5627c31dc7e715787ef09a5cfded667b569cb45a","receiptsRoot":"0xf78dfb743fbd92ade140711c8bbc542b5e307f0ab7984eff35d751969fe57efa","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x1","gasLimit":"0x1c9c380","gasUsed":"0x5208","timestamp":"0x66b52f46","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x3b9aca00","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x0","gasLimit":"0x714d","maxFeePerGas":"0x77359401","maxPriorityFeePerGas":"0x1","to":"0x05f32b3cc3888453ff71b01135b34ff8e41263f2","value":"0xde0b6b3a7640000","accessList":[],"input":"0x","r":"0xbb08fe51e2e17111382e129078dc33eda3550d9309f90382aa6bb3014709b964","s":"0x161a8402129a9e5ef867592c39eee5254f29d5e528f03e9dd473b1839fd72972","yParity":"0x1","hash":"0x84c60f688bfc362164d95b26238bf45fff05e3a2d5cb618e1ae021c1f8250195"}},"impersonated_sender":null}],"ommers":[]},{"header":{"parentHash":"0xa0422f2fa82364e0abc58fe776f0df04c437f52d1dafce641cf2de0581fdc694","ommersHash":"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347","beneficiary":"0x0000000000000000000000000000000000000000","stateRoot":"0x35d2802556b9d2f649a49e708d0d93dd4d49c2a3aaa8c703bf8594a21683f5f6","transactionsRoot":"0x17bec869102a71a66e0f2e9667cfe4b176a3d35bca1537b966e0662648c33b7c","receiptsRoot":"0xf72a38bec2718f9187d13ea5ecf562351626ec53735b71bf3d854a5946cb55aa","logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","difficulty":"0x0","number":"0x3","gasLimit":"0x1c9c380","gasUsed":"0x2b412","timestamp":"0x66b52f56","mixHash":"0x0000000000000000000000000000000000000000000000000000000000000000","nonce":"0x0000000000000000","baseFeePerGas":"0x2e05fff4","blobGasUsed":"0x0","excessBlobGas":"0x0","extraData":"0x"},"transactions":[{"transaction":{"EIP1559":{"chainId":"0x7a69","nonce":"0x1","gasLimit":"0x3bbb6","maxFeePerGas":"0xbf27a9e84","maxPriorityFeePerGas":"0xb8a2665d4","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","value":"0x0","accessList":[],"input":"0x0000000000000000000000000000000000000000fd8eb4e1dca713016c518e31608060405234801561001057600080fd5b5061023b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033","r":"0xd93bd3b7d691d116a963c1df71c0ff2be9800457d5407a1311d24afbfa661c52","s":"0x554d8ed5d9a508f42b6e1c3bc67599cefe8648388f96adc57d5a7d3f661f5d55","yParity":"0x0","hash":"0xc992ac1ec99813fc3aa8b48d2af4c0c0e7262404ff83cc8e2932fd44d9d85f20"}},"impersonated_sender":null}],"ommers":[]}],"transactions":[{"info":{"transaction_hash":"0x807d8700ba9c2dfc248ac4f66d68d2854d81b50296f992a8c0324ab787d24251","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b5061149a806100206000396000f3fe6080604052600436106100eb5760003560e01c80636d70f7ae1161008a578063ca3b98bb11610059578063ca3b98bb146102ad578063d087d28814610298578063f23a6e61146102c0578063fc0c546a146102ed57600080fd5b80636d70f7ae1461021a578063b0d691fe1461023a578063bc197c8114610269578063c19d93fb1461029857600080fd5b80631626ba7e116100c65780631626ba7e1461018c57806319822f7c146101ac57806351945447146101da578063523e3260146101fa57600080fd5b806223de29146100f757806301ffc9a71461011e578063150b7a021461015357600080fd5b366100f257005b600080fd5b34801561010357600080fd5b5061011c610112366004610d5a565b5050505050505050565b005b34801561012a57600080fd5b5061013e610139366004610e20565b610325565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061017361016e366004610e3d565b610351565b6040516001600160e01b0319909116815260200161014a565b34801561019857600080fd5b506101736101a7366004610ec5565b6103ad565b3480156101b857600080fd5b506101cc6101c7366004610f7f565b6104d8565b60405190815260200161014a565b6101ed6101e8366004610fe8565b61050b565b60405161014a919061109e565b34801561020657600080fd5b506101736102153660046110b1565b610584565b34801561022657600080fd5b5061013e610235366004611105565b6105ab565b34801561024657600080fd5b50604051735ff137d4b0fdcd49dca30c7cf57e578a026d2789815260200161014a565b34801561027557600080fd5b50610173610284366004611166565b63bc197c8160e01b98975050505050505050565b3480156102a457600080fd5b506101cc61064d565b6101ed6102bb366004611203565b6106da565b3480156102cc57600080fd5b506101736102db36600461127b565b63f23a6e6160e01b9695505050505050565b3480156102f957600080fd5b50610302610757565b604080519384526001600160a01b0390921660208401529082015260600161014a565b60006103308261076f565b8061034b57506001600160e01b03198216636faff5f160e01b145b92915050565b600080600061035e610757565b909350915050336001600160a01b03831614801561037b57508086145b156103995760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806103d0856020810151604082015160609092015160001a92909190565b9094509250905060ff811660000361049e57828583016020016103f2826105ab565b15801561040857506001600160a01b0382163014155b1561042357506001600160e01b0319945061034b9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610451908b9085906004016112f6565b602060405180830381865afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610492919061130f565b9550505050505061034b565b6104ad61023587838686610811565b156104c55750630b135d3f60e11b925061034b915050565b506001600160e01b031995945050505050565b60006104e261083f565b6104ec84846108a4565b90506104fb846020013561094a565b61050482610993565b9392505050565b6060610516336105ab565b80610534575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105595760405162461bcd60e51b81526004016105509061132c565b60405180910390fd5b600061056987878787875a6109ec565b925090508061057a57815160208301fd5b5095945050505050565b600061058f846105ab565b61059a5760006105a3565b630291f19360e51b5b949350505050565b60008060006105b8610757565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611389565b6001600160a01b03161480156105a357505050506001600160a01b0316151590565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d591906113a6565b905090565b60606106e5336105ab565b80610703575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b61071f5760405162461bcd60e51b81526004016105509061132c565b600061073b8888888888881561073557886109ec565b5a6109ec565b925090508061074c57815160208301fd5b509695505050505050565b6000806000610764610b0e565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806107a057506001600160e01b031982166301ffc9a760e01b145b806107bb57506001600160e01b031982166306608bdf60e21b145b806107d657506001600160e01b03198216630b135d3f60e11b145b806107f157506001600160e01b03198216630271189760e51b145b8061034b57506001600160e01b03198216635194544760e01b1492915050565b60008060008061082388888888610b1c565b9250925092506108338282610beb565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d2789146108a25760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610550565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610927826108ed6101008801886113bf565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ad92505050565b6001600160e01b0319161461094057600191505061034b565b5060009392505050565b6001600160401b0381106109905760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610550565b50565b801561099057604051600090339060001990849084818181858888f193505050503d80600081146109e0576040519150601f19603f3d011682016040523d82523d6000602084013e6109e5565b606091505b5050505050565b600060608360ff16600003610a6557876001600160a01b031683888888604051610a17929190611405565b600060405180830381858888f193505050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b606091505b509092509050610b03565b8360ff16600103610ac757876001600160a01b0316838787604051610a8b929190611405565b6000604051808303818686f4925050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610550565b965096945050505050565b600080600061076430610ca8565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b575750600091506003905082610be1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610bab573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd757506000925060019150829050610be1565b9250600091508190505b9450945094915050565b6000826003811115610bff57610bff611415565b03610c08575050565b6001826003811115610c1c57610c1c611415565b03610c3a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c4e57610c4e611415565b03610c6f5760405163fce698f760e01b815260048101829052602401610550565b6003826003811115610c8357610c83611415565b03610ca4576040516335e2f38360e21b815260048101829052602401610550565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610cef919061142b565b935093509350509193909250565b6001600160a01b038116811461099057600080fd5b60008083601f840112610d2457600080fd5b5081356001600160401b03811115610d3b57600080fd5b602083019150836020828501011115610d5357600080fd5b9250929050565b60008060008060008060008060c0898b031215610d7657600080fd5b8835610d8181610cfd565b97506020890135610d9181610cfd565b96506040890135610da181610cfd565b95506060890135945060808901356001600160401b0380821115610dc457600080fd5b610dd08c838d01610d12565b909650945060a08b0135915080821115610de957600080fd5b50610df68b828c01610d12565b999c989b5096995094979396929594505050565b6001600160e01b03198116811461099057600080fd5b600060208284031215610e3257600080fd5b813561050481610e0a565b600080600080600060808688031215610e5557600080fd5b8535610e6081610cfd565b94506020860135610e7081610cfd565b93506040860135925060608601356001600160401b03811115610e9257600080fd5b610e9e88828901610d12565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610ed857600080fd5b8235915060208301356001600160401b0380821115610ef657600080fd5b818501915085601f830112610f0a57600080fd5b813581811115610f1c57610f1c610eaf565b604051601f8201601f19908116603f01168101908382118183101715610f4457610f44610eaf565b81604052828152886020848701011115610f5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610f9457600080fd5b83356001600160401b03811115610faa57600080fd5b84016101208187031215610fbd57600080fd5b95602085013595506040909401359392505050565b803560ff81168114610fe357600080fd5b919050565b60008060008060006080868803121561100057600080fd5b853561100b81610cfd565b94506020860135935060408601356001600160401b0381111561102d57600080fd5b61103988828901610d12565b909450925061104c905060608701610fd2565b90509295509295909350565b6000815180845260005b8181101561107e57602081850181015186830182015201611062565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006105046020830184611058565b6000806000604084860312156110c657600080fd5b83356110d181610cfd565b925060208401356001600160401b038111156110ec57600080fd5b6110f886828701610d12565b9497909650939450505050565b60006020828403121561111757600080fd5b813561050481610cfd565b60008083601f84011261113457600080fd5b5081356001600160401b0381111561114b57600080fd5b6020830191508360208260051b8501011115610d5357600080fd5b60008060008060008060008060a0898b03121561118257600080fd5b883561118d81610cfd565b9750602089013561119d81610cfd565b965060408901356001600160401b03808211156111b957600080fd5b6111c58c838d01611122565b909850965060608b01359150808211156111de57600080fd5b6111ea8c838d01611122565b909650945060808b0135915080821115610de957600080fd5b60008060008060008060a0878903121561121c57600080fd5b863561122781610cfd565b95506020870135945060408701356001600160401b0381111561124957600080fd5b61125589828a01610d12565b9095509350611268905060608801610fd2565b9150608087013590509295509295509295565b60008060008060008060a0878903121561129457600080fd5b863561129f81610cfd565b955060208701356112af81610cfd565b9450604087013593506060870135925060808701356001600160401b038111156112d857600080fd5b6112e489828a01610d12565b979a9699509497509295939492505050565b8281526040602082015260006105a36040830184611058565b60006020828403121561132157600080fd5b815161050481610e0a565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561139b57600080fd5b815161050481610cfd565b6000602082840312156113b857600080fd5b5051919050565b6000808335601e198436030181126113d657600080fd5b8301803591506001600160401b038211156113f057600080fd5b602001915036819003821315610d5357600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b60008060006060848603121561144057600080fd5b83519250602084015161145281610cfd565b8092505060408401519050925092509256fea26469706673582212208d59c9ea570137cb310eeda2228ecdd5476bdf5b706694c5971e2df485849dcb64736f6c63430008170033","output":"0x6080604052600436106100eb5760003560e01c80636d70f7ae1161008a578063ca3b98bb11610059578063ca3b98bb146102ad578063d087d28814610298578063f23a6e61146102c0578063fc0c546a146102ed57600080fd5b80636d70f7ae1461021a578063b0d691fe1461023a578063bc197c8114610269578063c19d93fb1461029857600080fd5b80631626ba7e116100c65780631626ba7e1461018c57806319822f7c146101ac57806351945447146101da578063523e3260146101fa57600080fd5b806223de29146100f757806301ffc9a71461011e578063150b7a021461015357600080fd5b366100f257005b600080fd5b34801561010357600080fd5b5061011c610112366004610d5a565b5050505050505050565b005b34801561012a57600080fd5b5061013e610139366004610e20565b610325565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061017361016e366004610e3d565b610351565b6040516001600160e01b0319909116815260200161014a565b34801561019857600080fd5b506101736101a7366004610ec5565b6103ad565b3480156101b857600080fd5b506101cc6101c7366004610f7f565b6104d8565b60405190815260200161014a565b6101ed6101e8366004610fe8565b61050b565b60405161014a919061109e565b34801561020657600080fd5b506101736102153660046110b1565b610584565b34801561022657600080fd5b5061013e610235366004611105565b6105ab565b34801561024657600080fd5b50604051735ff137d4b0fdcd49dca30c7cf57e578a026d2789815260200161014a565b34801561027557600080fd5b50610173610284366004611166565b63bc197c8160e01b98975050505050505050565b3480156102a457600080fd5b506101cc61064d565b6101ed6102bb366004611203565b6106da565b3480156102cc57600080fd5b506101736102db36600461127b565b63f23a6e6160e01b9695505050505050565b3480156102f957600080fd5b50610302610757565b604080519384526001600160a01b0390921660208401529082015260600161014a565b60006103308261076f565b8061034b57506001600160e01b03198216636faff5f160e01b145b92915050565b600080600061035e610757565b909350915050336001600160a01b03831614801561037b57508086145b156103995760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806103d0856020810151604082015160609092015160001a92909190565b9094509250905060ff811660000361049e57828583016020016103f2826105ab565b15801561040857506001600160a01b0382163014155b1561042357506001600160e01b0319945061034b9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610451908b9085906004016112f6565b602060405180830381865afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610492919061130f565b9550505050505061034b565b6104ad61023587838686610811565b156104c55750630b135d3f60e11b925061034b915050565b506001600160e01b031995945050505050565b60006104e261083f565b6104ec84846108a4565b90506104fb846020013561094a565b61050482610993565b9392505050565b6060610516336105ab565b80610534575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105595760405162461bcd60e51b81526004016105509061132c565b60405180910390fd5b600061056987878787875a6109ec565b925090508061057a57815160208301fd5b5095945050505050565b600061058f846105ab565b61059a5760006105a3565b630291f19360e51b5b949350505050565b60008060006105b8610757565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611389565b6001600160a01b03161480156105a357505050506001600160a01b0316151590565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d591906113a6565b905090565b60606106e5336105ab565b80610703575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b61071f5760405162461bcd60e51b81526004016105509061132c565b600061073b8888888888881561073557886109ec565b5a6109ec565b925090508061074c57815160208301fd5b509695505050505050565b6000806000610764610b0e565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806107a057506001600160e01b031982166301ffc9a760e01b145b806107bb57506001600160e01b031982166306608bdf60e21b145b806107d657506001600160e01b03198216630b135d3f60e11b145b806107f157506001600160e01b03198216630271189760e51b145b8061034b57506001600160e01b03198216635194544760e01b1492915050565b60008060008061082388888888610b1c565b9250925092506108338282610beb565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d2789146108a25760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610550565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610927826108ed6101008801886113bf565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ad92505050565b6001600160e01b0319161461094057600191505061034b565b5060009392505050565b6001600160401b0381106109905760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610550565b50565b801561099057604051600090339060001990849084818181858888f193505050503d80600081146109e0576040519150601f19603f3d011682016040523d82523d6000602084013e6109e5565b606091505b5050505050565b600060608360ff16600003610a6557876001600160a01b031683888888604051610a17929190611405565b600060405180830381858888f193505050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b606091505b509092509050610b03565b8360ff16600103610ac757876001600160a01b0316838787604051610a8b929190611405565b6000604051808303818686f4925050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610550565b965096945050505050565b600080600061076430610ca8565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b575750600091506003905082610be1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610bab573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd757506000925060019150829050610be1565b9250600091508190505b9450945094915050565b6000826003811115610bff57610bff611415565b03610c08575050565b6001826003811115610c1c57610c1c611415565b03610c3a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c4e57610c4e611415565b03610c6f5760405163fce698f760e01b815260048101829052602401610550565b6003826003811115610c8357610c83611415565b03610ca4576040516335e2f38360e21b815260048101829052602401610550565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610cef919061142b565b935093509350509193909250565b6001600160a01b038116811461099057600080fd5b60008083601f840112610d2457600080fd5b5081356001600160401b03811115610d3b57600080fd5b602083019150836020828501011115610d5357600080fd5b9250929050565b60008060008060008060008060c0898b031215610d7657600080fd5b8835610d8181610cfd565b97506020890135610d9181610cfd565b96506040890135610da181610cfd565b95506060890135945060808901356001600160401b0380821115610dc457600080fd5b610dd08c838d01610d12565b909650945060a08b0135915080821115610de957600080fd5b50610df68b828c01610d12565b999c989b5096995094979396929594505050565b6001600160e01b03198116811461099057600080fd5b600060208284031215610e3257600080fd5b813561050481610e0a565b600080600080600060808688031215610e5557600080fd5b8535610e6081610cfd565b94506020860135610e7081610cfd565b93506040860135925060608601356001600160401b03811115610e9257600080fd5b610e9e88828901610d12565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610ed857600080fd5b8235915060208301356001600160401b0380821115610ef657600080fd5b818501915085601f830112610f0a57600080fd5b813581811115610f1c57610f1c610eaf565b604051601f8201601f19908116603f01168101908382118183101715610f4457610f44610eaf565b81604052828152886020848701011115610f5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610f9457600080fd5b83356001600160401b03811115610faa57600080fd5b84016101208187031215610fbd57600080fd5b95602085013595506040909401359392505050565b803560ff81168114610fe357600080fd5b919050565b60008060008060006080868803121561100057600080fd5b853561100b81610cfd565b94506020860135935060408601356001600160401b0381111561102d57600080fd5b61103988828901610d12565b909450925061104c905060608701610fd2565b90509295509295909350565b6000815180845260005b8181101561107e57602081850181015186830182015201611062565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006105046020830184611058565b6000806000604084860312156110c657600080fd5b83356110d181610cfd565b925060208401356001600160401b038111156110ec57600080fd5b6110f886828701610d12565b9497909650939450505050565b60006020828403121561111757600080fd5b813561050481610cfd565b60008083601f84011261113457600080fd5b5081356001600160401b0381111561114b57600080fd5b6020830191508360208260051b8501011115610d5357600080fd5b60008060008060008060008060a0898b03121561118257600080fd5b883561118d81610cfd565b9750602089013561119d81610cfd565b965060408901356001600160401b03808211156111b957600080fd5b6111c58c838d01611122565b909850965060608b01359150808211156111de57600080fd5b6111ea8c838d01611122565b909650945060808b0135915080821115610de957600080fd5b60008060008060008060a0878903121561121c57600080fd5b863561122781610cfd565b95506020870135945060408701356001600160401b0381111561124957600080fd5b61125589828a01610d12565b9095509350611268905060608801610fd2565b9150608087013590509295509295509295565b60008060008060008060a0878903121561129457600080fd5b863561129f81610cfd565b955060208701356112af81610cfd565b9450604087013593506060870135925060808701356001600160401b038111156112d857600080fd5b6112e489828a01610d12565b979a9699509497509295939492505050565b8281526040602082015260006105a36040830184611058565b60006020828403121561132157600080fd5b815161050481610e0a565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561139b57600080fd5b815161050481610cfd565b6000602082840312156113b857600080fd5b5051919050565b6000808335601e198436030181126113d657600080fd5b8301803591506001600160401b038211156113f057600080fd5b602001915036819003821315610d5357600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b60008060006060848603121561144057600080fd5b83519250602084015161145281610cfd565b8092505060408401519050925092509256fea26469706673582212208d59c9ea570137cb310eeda2228ecdd5476bdf5b706694c5971e2df485849dcb64736f6c63430008170033","gas_used":1055894,"gas_limit":1413029,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080604052600436106100eb5760003560e01c80636d70f7ae1161008a578063ca3b98bb11610059578063ca3b98bb146102ad578063d087d28814610298578063f23a6e61146102c0578063fc0c546a146102ed57600080fd5b80636d70f7ae1461021a578063b0d691fe1461023a578063bc197c8114610269578063c19d93fb1461029857600080fd5b80631626ba7e116100c65780631626ba7e1461018c57806319822f7c146101ac57806351945447146101da578063523e3260146101fa57600080fd5b806223de29146100f757806301ffc9a71461011e578063150b7a021461015357600080fd5b366100f257005b600080fd5b34801561010357600080fd5b5061011c610112366004610d5a565b5050505050505050565b005b34801561012a57600080fd5b5061013e610139366004610e20565b610325565b60405190151581526020015b60405180910390f35b34801561015f57600080fd5b5061017361016e366004610e3d565b610351565b6040516001600160e01b0319909116815260200161014a565b34801561019857600080fd5b506101736101a7366004610ec5565b6103ad565b3480156101b857600080fd5b506101cc6101c7366004610f7f565b6104d8565b60405190815260200161014a565b6101ed6101e8366004610fe8565b61050b565b60405161014a919061109e565b34801561020657600080fd5b506101736102153660046110b1565b610584565b34801561022657600080fd5b5061013e610235366004611105565b6105ab565b34801561024657600080fd5b50604051735ff137d4b0fdcd49dca30c7cf57e578a026d2789815260200161014a565b34801561027557600080fd5b50610173610284366004611166565b63bc197c8160e01b98975050505050505050565b3480156102a457600080fd5b506101cc61064d565b6101ed6102bb366004611203565b6106da565b3480156102cc57600080fd5b506101736102db36600461127b565b63f23a6e6160e01b9695505050505050565b3480156102f957600080fd5b50610302610757565b604080519384526001600160a01b0390921660208401529082015260600161014a565b60006103308261076f565b8061034b57506001600160e01b03198216636faff5f160e01b145b92915050565b600080600061035e610757565b909350915050336001600160a01b03831614801561037b57508086145b156103995760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b6000806000806103d0856020810151604082015160609092015160001a92909190565b9094509250905060ff811660000361049e57828583016020016103f2826105ab565b15801561040857506001600160a01b0382163014155b1561042357506001600160e01b0319945061034b9350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e90610451908b9085906004016112f6565b602060405180830381865afa15801561046e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610492919061130f565b9550505050505061034b565b6104ad61023587838686610811565b156104c55750630b135d3f60e11b925061034b915050565b506001600160e01b031995945050505050565b60006104e261083f565b6104ec84846108a4565b90506104fb846020013561094a565b61050482610993565b9392505050565b6060610516336105ab565b80610534575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105595760405162461bcd60e51b81526004016105509061132c565b60405180910390fd5b600061056987878787875a6109ec565b925090508061057a57815160208301fd5b5095945050505050565b600061058f846105ab565b61059a5760006105a3565b630291f19360e51b5b949350505050565b60008060006105b8610757565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa158015610607573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061062b9190611389565b6001600160a01b03161480156105a357505050506001600160a01b0316151590565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156106b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106d591906113a6565b905090565b60606106e5336105ab565b80610703575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b61071f5760405162461bcd60e51b81526004016105509061132c565b600061073b8888888888881561073557886109ec565b5a6109ec565b925090508061074c57815160208301fd5b509695505050505050565b6000806000610764610b0e565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806107a057506001600160e01b031982166301ffc9a760e01b145b806107bb57506001600160e01b031982166306608bdf60e21b145b806107d657506001600160e01b03198216630b135d3f60e11b145b806107f157506001600160e01b03198216630271189760e51b145b8061034b57506001600160e01b03198216635194544760e01b1492915050565b60008060008061082388888888610b1c565b9250925092506108338282610beb565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d2789146108a25760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610550565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610927826108ed6101008801886113bf565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ad92505050565b6001600160e01b0319161461094057600191505061034b565b5060009392505050565b6001600160401b0381106109905760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b6044820152606401610550565b50565b801561099057604051600090339060001990849084818181858888f193505050503d80600081146109e0576040519150601f19603f3d011682016040523d82523d6000602084013e6109e5565b606091505b5050505050565b600060608360ff16600003610a6557876001600160a01b031683888888604051610a17929190611405565b600060405180830381858888f193505050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b606091505b509092509050610b03565b8360ff16600103610ac757876001600160a01b0316838787604051610a8b929190611405565b6000604051808303818686f4925050503d8060008114610a55576040519150601f19603f3d011682016040523d82523d6000602084013e610a5a565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b6044820152606401610550565b965096945050505050565b600080600061076430610ca8565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610b575750600091506003905082610be1565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610bab573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610bd757506000925060019150829050610be1565b9250600091508190505b9450945094915050565b6000826003811115610bff57610bff611415565b03610c08575050565b6001826003811115610c1c57610c1c611415565b03610c3a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610c4e57610c4e611415565b03610c6f5760405163fce698f760e01b815260048101829052602401610550565b6003826003811115610c8357610c83611415565b03610ca4576040516335e2f38360e21b815260048101829052602401610550565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610cef919061142b565b935093509350509193909250565b6001600160a01b038116811461099057600080fd5b60008083601f840112610d2457600080fd5b5081356001600160401b03811115610d3b57600080fd5b602083019150836020828501011115610d5357600080fd5b9250929050565b60008060008060008060008060c0898b031215610d7657600080fd5b8835610d8181610cfd565b97506020890135610d9181610cfd565b96506040890135610da181610cfd565b95506060890135945060808901356001600160401b0380821115610dc457600080fd5b610dd08c838d01610d12565b909650945060a08b0135915080821115610de957600080fd5b50610df68b828c01610d12565b999c989b5096995094979396929594505050565b6001600160e01b03198116811461099057600080fd5b600060208284031215610e3257600080fd5b813561050481610e0a565b600080600080600060808688031215610e5557600080fd5b8535610e6081610cfd565b94506020860135610e7081610cfd565b93506040860135925060608601356001600160401b03811115610e9257600080fd5b610e9e88828901610d12565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610ed857600080fd5b8235915060208301356001600160401b0380821115610ef657600080fd5b818501915085601f830112610f0a57600080fd5b813581811115610f1c57610f1c610eaf565b604051601f8201601f19908116603f01168101908382118183101715610f4457610f44610eaf565b81604052828152886020848701011115610f5d57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600060608486031215610f9457600080fd5b83356001600160401b03811115610faa57600080fd5b84016101208187031215610fbd57600080fd5b95602085013595506040909401359392505050565b803560ff81168114610fe357600080fd5b919050565b60008060008060006080868803121561100057600080fd5b853561100b81610cfd565b94506020860135935060408601356001600160401b0381111561102d57600080fd5b61103988828901610d12565b909450925061104c905060608701610fd2565b90509295509295909350565b6000815180845260005b8181101561107e57602081850181015186830182015201611062565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006105046020830184611058565b6000806000604084860312156110c657600080fd5b83356110d181610cfd565b925060208401356001600160401b038111156110ec57600080fd5b6110f886828701610d12565b9497909650939450505050565b60006020828403121561111757600080fd5b813561050481610cfd565b60008083601f84011261113457600080fd5b5081356001600160401b0381111561114b57600080fd5b6020830191508360208260051b8501011115610d5357600080fd5b60008060008060008060008060a0898b03121561118257600080fd5b883561118d81610cfd565b9750602089013561119d81610cfd565b965060408901356001600160401b03808211156111b957600080fd5b6111c58c838d01611122565b909850965060608b01359150808211156111de57600080fd5b6111ea8c838d01611122565b909650945060808b0135915080821115610de957600080fd5b60008060008060008060a0878903121561121c57600080fd5b863561122781610cfd565b95506020870135945060408701356001600160401b0381111561124957600080fd5b61125589828a01610d12565b9095509350611268905060608801610fd2565b9150608087013590509295509295509295565b60008060008060008060a0878903121561129457600080fd5b863561129f81610cfd565b955060208701356112af81610cfd565b9450604087013593506060870135925060808701356001600160401b038111156112d857600080fd5b6112e489828a01610d12565b979a9699509497509295939492505050565b8281526040602082015260006105a36040830184611058565b60006020828403121561132157600080fd5b815161050481610e0a565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561139b57600080fd5b815161050481610cfd565b6000602082840312156113b857600080fd5b5051919050565b6000808335601e198436030181126113d657600080fd5b8301803591506001600160401b038211156113f057600080fd5b602001915036819003821315610d5357600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b60008060006060848603121561144057600080fd5b83519250602084015161145281610cfd565b8092505060408401519050925092509256fea26469706673582212208d59c9ea570137cb310eeda2228ecdd5476bdf5b706694c5971e2df485849dcb64736f6c63430008170033","nonce":2,"gas_used":1191890},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x122fd2","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xff0189e8613b096c9f4c3c1072a949a3b0a78dd0094f3505cf0598e5a10611a0","block_number":4},{"info":{"transaction_hash":"0x0bdcb30474e571f5662916de799b69089fcad83731f5298ec15cfc67dcac0ce7","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x51945447000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164ac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000000000364657600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a","gas_used":236555,"gas_limit":336042,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0x456e325fdccc143bea0ecbcf45545e2065f6518b","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x51945447000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164ac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000000000364657600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a","gas_used":233781,"gas_limit":328103,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":1,"children":[3,5],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x51945447000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164ac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000000000364657600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a","gas_used":228733,"gas_limit":318054,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0},{"Call":1}]},{"parent":2,"children":[4],"idx":3,"trace":{"depth":3,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x6352211e0000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","gas_used":9543,"gas_limit":309024,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":3,"children":[],"idx":4,"trace":{"depth":4,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x4658c6373a1e066c35815a3e4061571216c48d7a","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x6352211e0000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","gas_used":4650,"gas_limit":299420,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":2,"children":[6],"idx":5,"trace":{"depth":3,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000000000364657600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x0000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a","gas_used":213793,"gas_limit":298910,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":5,"children":[7,9],"idx":6,"trace":{"depth":4,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x4658c6373a1e066c35815a3e4061571216c48d7a","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9000000000000000000000000000000000000000000000000000000000000000364657600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x0000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a","gas_used":213343,"gas_limit":293837,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b1","0x0000000000000000000000000000000000000000000000000000000000000000","0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea","0x479470ac0df380f209de1c800185565472402517515e8e60ed2662ef3c4ccc3a"],"data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000036465760000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null}},{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea"],"data":"0x"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0},{"Call":0},{"Call":1},{"Log":1}]},{"parent":6,"children":[8],"idx":7,"trace":{"depth":5,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x000000006551c19487814612e58fe06813775758","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x8a54c52f000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea0000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea","output":"0x0000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a","gas_used":72721,"gas_limit":274393,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","0x000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b","0x000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea"],"data":"0x0000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea0000000000000000000000000000000000000000000000000000000000007a69"},"decoded":{"name":null,"params":null}}],"ordering":[{"Call":0},{"Log":0}]},{"parent":7,"children":[],"idx":8,"trace":{"depth":6,"success":true,"caller":"0x000000006551c19487814612e58fe06813775758","address":"0x1a5447e634aa056fa302e48630da8425ec15a53a","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x3d60ad80600a3d3981f3363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf3137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea0000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea","output":"0x363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf3137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea0000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea","gas_used":34655,"gas_limit":235288,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":6,"children":[10],"idx":9,"trace":{"depth":5,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x1a5447e634aa056fa302e48630da8425ec15a53a","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xd1f57894000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":74286,"gas_limit":159831,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":9,"children":[11],"idx":10,"trace":{"depth":6,"success":true,"caller":"0x1a5447e634aa056fa302e48630da8425ec15a53a","address":"0x456e325fdccc143bea0ecbcf45545e2065f6518b","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xd1f57894000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":74093,"gas_limit":157177,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9"],"data":"0x"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0},{"Call":0}]},{"parent":10,"children":[],"idx":11,"trace":{"depth":7,"success":true,"caller":"0x1a5447e634aa056fa302e48630da8425ec15a53a","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xc4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","output":"0x","gas_used":46446,"gas_limit":127853,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000200000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a","nonce":7,"gas_used":260995},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3fb83","logs":[{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b1","0x0000000000000000000000000000000000000000000000000000000000000000","0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea","0x479470ac0df380f209de1c800185565472402517515e8e60ed2662ef3c4ccc3a"],"data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000036465760000000000000000000000000000000000000000000000000000000000"},{"address":"0x000000006551c19487814612e58fe06813775758","topics":["0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","0x000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b","0x000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea"],"data":"0x0000000000000000000000001a5447e634aa056fa302e48630da8425ec15a53a137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea0000000000000000000000000000000000000000000000000000000000007a69"},{"address":"0x1a5447e634aa056fa302e48630da8425ec15a53a","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9"],"data":"0x"},{"address":"0x1a5447e634aa056fa302e48630da8425ec15a53a","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x137d9e4cc0479164d40577620cb3b41b083c6e8dbf58f8523be76d207d6fd8ea"],"data":"0x"}],"logsBloom":"0x000100000000000000a000000000000c400000000000008000000004000000000000000000000080000000000400000000000000000000000000000000000000800000000000000000000008000002000000000000008000000004000000000000000000020100000000000100000800000000000000000000000010800000000000000000002000400800000000000000000000000080000000000000000000000000001000000000002000002000000000000000000000000000000000000000000022000000200000000000000000000000002094000000000200000020010000000000000000008000000400000002000000010000000000000000400108"},"block_hash":"0x2a28d19ebf30bc56cf87eea916654d070d60821d63b9c7505c5b3c91b1979851","block_number":9},{"info":{"transaction_hash":"0x84c60f688bfc362164d95b26238bf45fff05e3a2d5cb618e1ae021c1f8250195","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x05f32b3cc3888453ff71b01135b34ff8e41263f2","contract_address":null,"traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x05f32b3cc3888453ff71b01135b34ff8e41263f2","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0xde0b6b3a7640000","data":"0x","output":"0x","gas_used":0,"gas_limit":8005,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Stop","out":"0x","nonce":0,"gas_used":21000},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x5208","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x6cf88c41127c8c869868bad1e25eb338b2e46e4af7adaa8a201a666f873467b6","block_number":1},{"info":{"transaction_hash":"0x8d08419d69c1301ea72a01ee0e8ec35c65493732e0354a099f989bab5be4b8dc","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x4e59b44847b379578588920ca78fbf26c0b4956c","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xba7e4f5ffaf365f350f7ece63ecd7c7865716528743b0eb41b3a7d24c17b4987608060405260405161040a38038061040a83398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60aa806103606000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212207367fe7b9ef3fa2391c9072e36ff3ec39572252d1ea483432e4e7893c2c164b664736f6c634300081700330000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000","output":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","gas_used":573046,"gas_limit":806206,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4e59b44847b379578588920ca78fbf26c0b4956c","address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x608060405260405161040a38038061040a83398101604081905261002291610268565b61002c8282610033565b5050610352565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561008657610081828261010e565b505050565b61008e610185565b5050565b806001600160a01b03163b6000036100cd57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b03168460405161012b9190610336565b600060405180830381855af49150503d8060008114610166576040519150601f19603f3d011682016040523d82523d6000602084013e61016b565b606091505b50909250905061017c8583836101a6565b95945050505050565b34156101a45760405163b398979f60e01b815260040160405180910390fd5b565b6060826101bb576101b682610205565b6101fe565b81511580156101d257506001600160a01b0384163b155b156101fb57604051639996b31560e01b81526001600160a01b03851660048201526024016100c4565b50805b9392505050565b8051156102155780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b8381101561025f578181015183820152602001610247565b50506000910152565b6000806040838503121561027b57600080fd5b82516001600160a01b038116811461029257600080fd5b60208401519092506001600160401b03808211156102af57600080fd5b818501915085601f8301126102c357600080fd5b8151818111156102d5576102d561022e565b604051601f8201601f19908116603f011681019083821181831017156102fd576102fd61022e565b8160405282815288602084870101111561031657600080fd5b610327836020830160208801610244565b80955050505050509250929050565b60008251610348818460208701610244565b9190910192915050565b60aa806103606000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212207367fe7b9ef3fa2391c9072e36ff3ec39572252d1ea483432e4e7893c2c164b664736f6c634300081700330000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000","output":"0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212207367fe7b9ef3fa2391c9072e36ff3ec39572252d1ea483432e4e7893c2c164b664736f6c63430008170033","gas_used":540417,"gas_limit":761534,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a"],"data":"0x"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0},{"Call":0}]},{"parent":1,"children":[3,4,6],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x4658c6373a1e066c35815a3e4061571216c48d7a","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x485cc955000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0","output":"0x","gas_used":478605,"gas_limit":722646,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c0","0x00000000000000000000000002dd7fb5ca377b1a6e2960eb139af390a24d28fa"],"data":"0x"},"decoded":{"name":null,"params":null}},{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null}}],"ordering":[{"Call":0},{"Call":1},{"Call":2},{"Log":0},{"Log":1}]},{"parent":2,"children":[],"idx":3,"trace":{"depth":3,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x456e325fdccc143bea0ecbcf45545e2065f6518b","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x60a060405234801561001057600080fd5b506040516104f93803806104f983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161046f61008a60003960006058015261046f6000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b61002661003b565b005b61002661003636600461033a565b61004d565b61004b6100466100d9565b610111565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100b35760405162461bcd60e51b81526020600482015260066024820152650216b696d61760d41b60448201526064015b60405180910390fd5b60006100bd6100d9565b6001600160a01b0316036100d5576100d58282610135565b5050565b600061010c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610130573d6000f35b3d6000fd5b61013e82610190565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610188576101838282610207565b505050565b6100d561027d565b806001600160a01b03163b6000036101c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100aa565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610224919061040a565b600060405180830381855af49150503d806000811461025f576040519150601f19603f3d011682016040523d82523d6000602084013e610264565b606091505b509150915061027485838361029c565b95945050505050565b341561004b5760405163b398979f60e01b815260040160405180910390fd5b6060826102b1576102ac826102fb565b6102f4565b81511580156102c857506001600160a01b0384163b155b156102f157604051639996b31560e01b81526001600160a01b03851660048201526024016100aa565b50805b9392505050565b80511561030b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561034d57600080fd5b82356001600160a01b038116811461036457600080fd5b9150602083013567ffffffffffffffff8082111561038157600080fd5b818501915085601f83011261039557600080fd5b8135818111156103a7576103a7610324565b604051601f8201601f19908116603f011681019083821181831017156103cf576103cf610324565b816040528281528860208487010111156103e857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561042b5760208186018101518583015201610411565b50600092019182525091905056fea2646970667358221220d7d36d3d943bb5535c93e093b5c016f6bb9b948b6d00fd0068ee903fb4b4dbfb64736f6c63430008170033000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","output":"0x60806040526004361061001e5760003560e01c8063d1f5789414610028575b61002661003b565b005b61002661003636600461033a565b61004d565b61004b6100466100d9565b610111565b565b336001600160a01b037f000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d16146100b35760405162461bcd60e51b81526020600482015260066024820152650216b696d61760d41b60448201526064015b60405180910390fd5b60006100bd6100d9565b6001600160a01b0316036100d5576100d58282610135565b5050565b600061010c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610130573d6000f35b3d6000fd5b61013e82610190565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610188576101838282610207565b505050565b6100d561027d565b806001600160a01b03163b6000036101c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100aa565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610224919061040a565b600060405180830381855af49150503d806000811461025f576040519150601f19603f3d011682016040523d82523d6000602084013e610264565b606091505b509150915061027485838361029c565b95945050505050565b341561004b5760405163b398979f60e01b815260040160405180910390fd5b6060826102b1576102ac826102fb565b6102f4565b81511580156102c857506001600160a01b0384163b155b156102f157604051639996b31560e01b81526001600160a01b03851660048201526024016100aa565b50805b9392505050565b80511561030b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561034d57600080fd5b82356001600160a01b038116811461036457600080fd5b9150602083013567ffffffffffffffff8082111561038157600080fd5b818501915085601f83011261039557600080fd5b8135818111156103a7576103a7610324565b604051601f8201601f19908116603f011681019083821181831017156103cf576103cf610324565b816040528281528860208487010111156103e857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561042b5760208186018101518583015201610411565b50600092019182525091905056fea2646970667358221220d7d36d3d943bb5535c93e093b5c016f6bb9b948b6d00fd0068ee903fb4b4dbfb64736f6c63430008170033","gas_used":227491,"gas_limit":656703,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":2,"children":[5],"idx":4,"trace":{"depth":3,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x000000006551c19487814612e58fe06813775758","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x8a54c52f000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000","output":"0x00000000000000000000000002dd7fb5ca377b1a6e2960eb139af390a24d28fa","gas_used":72721,"gas_limit":405916,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","0x000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b","0x000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x00000000000000000000000002dd7fb5ca377b1a6e2960eb139af390a24d28fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69"},"decoded":{"name":null,"params":null}}],"ordering":[{"Call":0},{"Log":0}]},{"parent":4,"children":[],"idx":5,"trace":{"depth":4,"success":true,"caller":"0x000000006551c19487814612e58fe06813775758","address":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x3d60ad80600a3d3981f3363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000","output":"0x363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000","gas_used":34655,"gas_limit":364756,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":2,"children":[7],"idx":6,"trace":{"depth":3,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xd1f578940000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":27097,"gas_limit":291642,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":6,"children":[],"idx":7,"trace":{"depth":4,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0x456e325fdccc143bea0ecbcf45545e2065f6518b","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xd1f578940000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":26916,"gas_limit":286940,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","nonce":5,"gas_used":612194},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x95762","logs":[{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a"],"data":"0x"},{"address":"0x000000006551c19487814612e58fe06813775758","topics":["0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","0x000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b","0x000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","0x0000000000000000000000000000000000000000000000000000000000000000"],"data":"0x00000000000000000000000002dd7fb5ca377b1a6e2960eb139af390a24d28fa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007a69"},{"address":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c0","0x00000000000000000000000002dd7fb5ca377b1a6e2960eb139af390a24d28fa"],"data":"0x"},{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"}],"logsBloom":"0x0001000000000000008000000000000c400000000000000000000004000000000000000000000000000400000400000000400000002000008000000000000040800000040000000000000000000002000000000000000000000004000000400002000000020100000000000000000800000000000000000000000000000000000000002000002000000800000000000400000000000080000000000000000000000000000000000000000000002000000000000000000000000000000000000000000020000000000000000000000000000001000094004000000000000020000000000000000000000001800000000020000000000000000000000000400100"},"block_hash":"0x53a26b9ef83be8588c8d5e1ad252be41f188a351c4883d1dfd9bb11d325e3c09","block_number":7},{"info":{"transaction_hash":"0x07471adfe8f4ec553c1199f495be97fc8be8e0626ae307281c22534460184ed1","transaction_index":0,"from":"0x05f32b3cc3888453ff71b01135b34ff8e41263f2","to":null,"contract_address":"0xca11bde05977b3631167028862be2a173976ca11","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0x05f32b3cc3888453ff71b01135b34ff8e41263f2","address":"0xca11bde05977b3631167028862be2a173976ca11","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b50610ee0806100206000396000f3fe6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033","output":"0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033","gas_used":762392,"gas_limit":889376,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080604052600436106100f35760003560e01c80634d2301cc1161008a578063a8b0574e11610059578063a8b0574e1461025a578063bce38bd714610275578063c3077fa914610288578063ee82ac5e1461029b57600080fd5b80634d2301cc146101ec57806372425d9d1461022157806382ad56cb1461023457806386d516e81461024757600080fd5b80633408e470116100c65780633408e47014610191578063399542e9146101a45780633e64a696146101c657806342cbb15c146101d957600080fd5b80630f28c97d146100f8578063174dea711461011a578063252dba421461013a57806327e86d6e1461015b575b600080fd5b34801561010457600080fd5b50425b6040519081526020015b60405180910390f35b61012d610128366004610a85565b6102ba565b6040516101119190610bbe565b61014d610148366004610a85565b6104ef565b604051610111929190610bd8565b34801561016757600080fd5b50437fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0140610107565b34801561019d57600080fd5b5046610107565b6101b76101b2366004610c60565b610690565b60405161011193929190610cba565b3480156101d257600080fd5b5048610107565b3480156101e557600080fd5b5043610107565b3480156101f857600080fd5b50610107610207366004610ce2565b73ffffffffffffffffffffffffffffffffffffffff163190565b34801561022d57600080fd5b5044610107565b61012d610242366004610a85565b6106ab565b34801561025357600080fd5b5045610107565b34801561026657600080fd5b50604051418152602001610111565b61012d610283366004610c60565b61085a565b6101b7610296366004610a85565b610a1a565b3480156102a757600080fd5b506101076102b6366004610d18565b4090565b60606000828067ffffffffffffffff8111156102d8576102d8610d31565b60405190808252806020026020018201604052801561031e57816020015b6040805180820190915260008152606060208201528152602001906001900390816102f65790505b5092503660005b8281101561047757600085828151811061034157610341610d60565b6020026020010151905087878381811061035d5761035d610d60565b905060200281019061036f9190610d8f565b6040810135958601959093506103886020850185610ce2565b73ffffffffffffffffffffffffffffffffffffffff16816103ac6060870187610dcd565b6040516103ba929190610e32565b60006040518083038185875af1925050503d80600081146103f7576040519150601f19603f3d011682016040523d82523d6000602084013e6103fc565b606091505b50602080850191909152901515808452908501351761046d577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260846000fd5b5050600101610325565b508234146104e6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4d756c746963616c6c333a2076616c7565206d69736d6174636800000000000060448201526064015b60405180910390fd5b50505092915050565b436060828067ffffffffffffffff81111561050c5761050c610d31565b60405190808252806020026020018201604052801561053f57816020015b606081526020019060019003908161052a5790505b5091503660005b8281101561068657600087878381811061056257610562610d60565b90506020028101906105749190610e42565b92506105836020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166105a66020850185610dcd565b6040516105b4929190610e32565b6000604051808303816000865af19150503d80600081146105f1576040519150601f19603f3d011682016040523d82523d6000602084013e6105f6565b606091505b5086848151811061060957610609610d60565b602090810291909101015290508061067d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b50600101610546565b5050509250929050565b43804060606106a086868661085a565b905093509350939050565b6060818067ffffffffffffffff8111156106c7576106c7610d31565b60405190808252806020026020018201604052801561070d57816020015b6040805180820190915260008152606060208201528152602001906001900390816106e55790505b5091503660005b828110156104e657600084828151811061073057610730610d60565b6020026020010151905086868381811061074c5761074c610d60565b905060200281019061075e9190610e76565b925061076d6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff166107906040850185610dcd565b60405161079e929190610e32565b6000604051808303816000865af19150503d80600081146107db576040519150601f19603f3d011682016040523d82523d6000602084013e6107e0565b606091505b506020808401919091529015158083529084013517610851577f08c379a000000000000000000000000000000000000000000000000000000000600052602060045260176024527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060445260646000fd5b50600101610714565b6060818067ffffffffffffffff81111561087657610876610d31565b6040519080825280602002602001820160405280156108bc57816020015b6040805180820190915260008152606060208201528152602001906001900390816108945790505b5091503660005b82811015610a105760008482815181106108df576108df610d60565b602002602001015190508686838181106108fb576108fb610d60565b905060200281019061090d9190610e42565b925061091c6020840184610ce2565b73ffffffffffffffffffffffffffffffffffffffff1661093f6020850185610dcd565b60405161094d929190610e32565b6000604051808303816000865af19150503d806000811461098a576040519150601f19603f3d011682016040523d82523d6000602084013e61098f565b606091505b506020830152151581528715610a07578051610a07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4d756c746963616c6c333a2063616c6c206661696c656400000000000000000060448201526064016104dd565b506001016108c3565b5050509392505050565b6000806060610a2b60018686610690565b919790965090945092505050565b60008083601f840112610a4b57600080fd5b50813567ffffffffffffffff811115610a6357600080fd5b6020830191508360208260051b8501011115610a7e57600080fd5b9250929050565b60008060208385031215610a9857600080fd5b823567ffffffffffffffff811115610aaf57600080fd5b610abb85828601610a39565b90969095509350505050565b6000815180845260005b81811015610aed57602081850181015186830182015201610ad1565b81811115610aff576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015610bb1578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051151584528401516040858501819052610b9d81860183610ac7565b9a86019a9450505090830190600101610b4f565b5090979650505050505050565b602081526000610bd16020830184610b32565b9392505050565b600060408201848352602060408185015281855180845260608601915060608160051b870101935082870160005b82811015610c52577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0888703018452610c40868351610ac7565b95509284019290840190600101610c06565b509398975050505050505050565b600080600060408486031215610c7557600080fd5b83358015158114610c8557600080fd5b9250602084013567ffffffffffffffff811115610ca157600080fd5b610cad86828701610a39565b9497909650939450505050565b838152826020820152606060408201526000610cd96060830184610b32565b95945050505050565b600060208284031215610cf457600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610bd157600080fd5b600060208284031215610d2a57600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112610dc357600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610e0257600080fd5b83018035915067ffffffffffffffff821115610e1d57600080fd5b602001915036819003821315610a7e57600080fd5b8183823760009101908152919050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112610dc357600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610dc357600080fdfea2646970667358221220bb2b5c71a328032f97c676ae39a1ec2148d3e5d6f73d95e9b17910152d61f16264736f6c634300080c0033","nonce":0,"gas_used":873016},"receipt":{"type":"0x0","status":"0x1","cumulativeGasUsed":"0xd5238","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xa0422f2fa82364e0abc58fe776f0df04c437f52d1dafce641cf2de0581fdc694","block_number":2},{"info":{"transaction_hash":"0x898677c199c5c70a8700a7905dddb7c1f7f3129e97d24a8d23b28f55c404feb8","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":null,"contract_address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","traces":[{"parent":null,"children":[],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE","value":"0x0","data":"0x608060405234801561001057600080fd5b506117fb806100206000396000f3fe6080604052600436106101015760003560e01c8063ac0c10af11610095578063c4d66de811610064578063c4d66de8146102f3578063ca3b98bb14610313578063d087d288146102de578063f23a6e6114610326578063fc0c546a1461035357600080fd5b8063ac0c10af14610250578063b0d691fe14610288578063bc197c81146102af578063c19d93fb146102de57600080fd5b806319822f7c116100d157806319822f7c146101c257806351945447146101f0578063523e3260146102105780636d70f7ae1461023057600080fd5b806223de291461010d57806301ffc9a714610134578063150b7a02146101695780631626ba7e146101a257600080fd5b3661010857005b600080fd5b34801561011957600080fd5b50610132610128366004610f6f565b5050505050505050565b005b34801561014057600080fd5b5061015461014f366004611035565b61038b565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611052565b6103b7565b6040516001600160e01b03199091168152602001610160565b3480156101ae57600080fd5b506101896101bd3660046110da565b610413565b3480156101ce57600080fd5b506101e26101dd366004611194565b61053e565b604051908152602001610160565b6102036101fe3660046111fd565b610571565b60405161016091906112b3565b34801561021c57600080fd5b5061018961022b3660046112c6565b6105ea565b34801561023c57600080fd5b5061015461024b36600461131a565b610611565b34801561025c57600080fd5b5061027061026b366004611337565b6106b3565b6040516001600160a01b039091168152602001610160565b34801561029457600080fd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d2789610270565b3480156102bb57600080fd5b506101896102ca36600461143a565b63bc197c8160e01b98975050505050505050565b3480156102ea57600080fd5b506101e2610742565b3480156102ff57600080fd5b5061013261030e36600461131a565b6107cf565b6102036103213660046114d7565b6108ef565b34801561033257600080fd5b5061018961034136600461154f565b63f23a6e6160e01b9695505050505050565b34801561035f57600080fd5b5061036861096c565b604080519384526001600160a01b03909216602084015290820152606001610160565b600061039682610984565b806103b157506001600160e01b03198216636faff5f160e01b145b92915050565b60008060006103c461096c565b909350915050336001600160a01b0383161480156103e157508086145b156103ff5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b600080600080610436856020810151604082015160609092015160001a92909190565b9094509250905060ff8116600003610504578285830160200161045882610611565b15801561046e57506001600160a01b0382163014155b1561048957506001600160e01b031994506103b19350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104b7908b9085906004016115ca565b602060405180830381865afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f891906115e3565b955050505050506103b1565b61051361024b87838686610a26565b1561052b5750630b135d3f60e11b92506103b1915050565b506001600160e01b031995945050505050565b6000610548610a54565b6105528484610ab9565b90506105618460200135610b5f565b61056a82610ba8565b9392505050565b606061057c33610611565b8061059a575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105bf5760405162461bcd60e51b81526004016105b690611600565b60405180910390fd5b60006105cf87878787875a610c01565b92509050806105e057815160208301fd5b5095945050505050565b60006105f584610611565b610600576000610609565b630291f19360e51b5b949350505050565b600080600061061e61096c565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610691919061165d565b6001600160a01b031614801561060957505050506001600160a01b0316151590565b6000805460405163ac0c10af60e01b81526001600160a01b039091169063ac0c10af906106f2908c908c908c908c908c908c908c908c906004016116a3565b6020604051808303816000875af1158015610711573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610735919061165d565b9998505050505050505050565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611707565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156108145750825b90506000826001600160401b031660011480156108305750303b155b90508115801561083e575080155b1561085c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561088657845460ff60401b1916600160401b1785555b600080546001600160a01b0319166001600160a01b03881617905583156108e757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60606108fa33610611565b80610918575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6109345760405162461bcd60e51b81526004016105b690611600565b60006109508888888888881561094a5788610c01565b5a610c01565b925090508061096157815160208301fd5b509695505050505050565b6000806000610979610d23565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806109b557506001600160e01b031982166301ffc9a760e01b145b806109d057506001600160e01b031982166306608bdf60e21b145b806109eb57506001600160e01b03198216630b135d3f60e11b145b80610a0657506001600160e01b03198216630271189760e51b145b806103b157506001600160e01b03198216635194544760e01b1492915050565b600080600080610a3888888888610d31565b925092509250610a488282610e00565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610ab75760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105b6565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610b3c82610b02610100880188611720565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061041392505050565b6001600160e01b03191614610b555760019150506103b1565b5060009392505050565b6001600160401b038110610ba55760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016105b6565b50565b8015610ba557604051600090339060001990849084818181858888f193505050503d8060008114610bf5576040519150601f19603f3d011682016040523d82523d6000602084013e610bfa565b606091505b5050505050565b600060608360ff16600003610c7a57876001600160a01b031683888888604051610c2c929190611766565b600060405180830381858888f193505050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b606091505b509092509050610d18565b8360ff16600103610cdc57876001600160a01b0316838787604051610ca0929190611766565b6000604051808303818686f4925050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b60448201526064016105b6565b965096945050505050565b600080600061097930610ebd565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d6c5750600091506003905082610df6565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dc0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610dec57506000925060019150829050610df6565b9250600091508190505b9450945094915050565b6000826003811115610e1457610e14611776565b03610e1d575050565b6001826003811115610e3157610e31611776565b03610e4f5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e6357610e63611776565b03610e845760405163fce698f760e01b8152600481018290526024016105b6565b6003826003811115610e9857610e98611776565b03610eb9576040516335e2f38360e21b8152600481018290526024016105b6565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610f04919061178c565b935093509350509193909250565b6001600160a01b0381168114610ba557600080fd5b60008083601f840112610f3957600080fd5b5081356001600160401b03811115610f5057600080fd5b602083019150836020828501011115610f6857600080fd5b9250929050565b60008060008060008060008060c0898b031215610f8b57600080fd5b8835610f9681610f12565b97506020890135610fa681610f12565b96506040890135610fb681610f12565b95506060890135945060808901356001600160401b0380821115610fd957600080fd5b610fe58c838d01610f27565b909650945060a08b0135915080821115610ffe57600080fd5b5061100b8b828c01610f27565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610ba557600080fd5b60006020828403121561104757600080fd5b813561056a8161101f565b60008060008060006080868803121561106a57600080fd5b853561107581610f12565b9450602086013561108581610f12565b93506040860135925060608601356001600160401b038111156110a757600080fd5b6110b388828901610f27565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110ed57600080fd5b8235915060208301356001600160401b038082111561110b57600080fd5b818501915085601f83011261111f57600080fd5b813581811115611131576111316110c4565b604051601f8201601f19908116603f01168101908382118183101715611159576111596110c4565b8160405282815288602084870101111561117257600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000606084860312156111a957600080fd5b83356001600160401b038111156111bf57600080fd5b840161012081870312156111d257600080fd5b95602085013595506040909401359392505050565b803560ff811681146111f857600080fd5b919050565b60008060008060006080868803121561121557600080fd5b853561122081610f12565b94506020860135935060408601356001600160401b0381111561124257600080fd5b61124e88828901610f27565b90945092506112619050606087016111e7565b90509295509295909350565b6000815180845260005b8181101561129357602081850181015186830182015201611277565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061056a602083018461126d565b6000806000604084860312156112db57600080fd5b83356112e681610f12565b925060208401356001600160401b0381111561130157600080fd5b61130d86828701610f27565b9497909650939450505050565b60006020828403121561132c57600080fd5b813561056a81610f12565b60008060008060008060008060a0898b03121561135357600080fd5b883561135e81610f12565b975060208901356001600160401b038082111561137a57600080fd5b6113868c838d01610f27565b909950975060408b013591508082111561139f57600080fd5b6113ab8c838d01610f27565b909750955060608b01359150808211156113c457600080fd5b506113d18b828c01610f27565b90945092505060808901356113e581610f12565b809150509295985092959890939650565b60008083601f84011261140857600080fd5b5081356001600160401b0381111561141f57600080fd5b6020830191508360208260051b8501011115610f6857600080fd5b60008060008060008060008060a0898b03121561145657600080fd5b883561146181610f12565b9750602089013561147181610f12565b965060408901356001600160401b038082111561148d57600080fd5b6114998c838d016113f6565b909850965060608b01359150808211156114b257600080fd5b6114be8c838d016113f6565b909650945060808b0135915080821115610ffe57600080fd5b60008060008060008060a087890312156114f057600080fd5b86356114fb81610f12565b95506020870135945060408701356001600160401b0381111561151d57600080fd5b61152989828a01610f27565b909550935061153c9050606088016111e7565b9150608087013590509295509295509295565b60008060008060008060a0878903121561156857600080fd5b863561157381610f12565b9550602087013561158381610f12565b9450604087013593506060870135925060808701356001600160401b038111156115ac57600080fd5b6115b889828a01610f27565b979a9699509497509295939492505050565b828152604060208201526000610609604083018461126d565b6000602082840312156115f557600080fd5b815161056a8161101f565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561166f57600080fd5b815161056a81610f12565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600060018060a01b03808b16835260a060208401526116c660a084018a8c61167a565b83810360408501526116d981898b61167a565b905083810360608501526116ee81878961167a565b9250508084166080840152509998505050505050505050565b60006020828403121561171957600080fd5b5051919050565b6000808335601e1984360301811261173757600080fd5b8301803591506001600160401b0382111561175157600080fd5b602001915036819003821315610f6857600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b6000806000606084860312156117a157600080fd5b8351925060208401516117b381610f12565b8092505060408401519050925092509256fea2646970667358221220fd7751f80d2c41fd26ad14447421a5bd7371f57e5898d2acee86a1e3b7f2e90064736f6c63430008170033","output":"0x6080604052600436106101015760003560e01c8063ac0c10af11610095578063c4d66de811610064578063c4d66de8146102f3578063ca3b98bb14610313578063d087d288146102de578063f23a6e6114610326578063fc0c546a1461035357600080fd5b8063ac0c10af14610250578063b0d691fe14610288578063bc197c81146102af578063c19d93fb146102de57600080fd5b806319822f7c116100d157806319822f7c146101c257806351945447146101f0578063523e3260146102105780636d70f7ae1461023057600080fd5b806223de291461010d57806301ffc9a714610134578063150b7a02146101695780631626ba7e146101a257600080fd5b3661010857005b600080fd5b34801561011957600080fd5b50610132610128366004610f6f565b5050505050505050565b005b34801561014057600080fd5b5061015461014f366004611035565b61038b565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611052565b6103b7565b6040516001600160e01b03199091168152602001610160565b3480156101ae57600080fd5b506101896101bd3660046110da565b610413565b3480156101ce57600080fd5b506101e26101dd366004611194565b61053e565b604051908152602001610160565b6102036101fe3660046111fd565b610571565b60405161016091906112b3565b34801561021c57600080fd5b5061018961022b3660046112c6565b6105ea565b34801561023c57600080fd5b5061015461024b36600461131a565b610611565b34801561025c57600080fd5b5061027061026b366004611337565b6106b3565b6040516001600160a01b039091168152602001610160565b34801561029457600080fd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d2789610270565b3480156102bb57600080fd5b506101896102ca36600461143a565b63bc197c8160e01b98975050505050505050565b3480156102ea57600080fd5b506101e2610742565b3480156102ff57600080fd5b5061013261030e36600461131a565b6107cf565b6102036103213660046114d7565b6108ef565b34801561033257600080fd5b5061018961034136600461154f565b63f23a6e6160e01b9695505050505050565b34801561035f57600080fd5b5061036861096c565b604080519384526001600160a01b03909216602084015290820152606001610160565b600061039682610984565b806103b157506001600160e01b03198216636faff5f160e01b145b92915050565b60008060006103c461096c565b909350915050336001600160a01b0383161480156103e157508086145b156103ff5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b600080600080610436856020810151604082015160609092015160001a92909190565b9094509250905060ff8116600003610504578285830160200161045882610611565b15801561046e57506001600160a01b0382163014155b1561048957506001600160e01b031994506103b19350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104b7908b9085906004016115ca565b602060405180830381865afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f891906115e3565b955050505050506103b1565b61051361024b87838686610a26565b1561052b5750630b135d3f60e11b92506103b1915050565b506001600160e01b031995945050505050565b6000610548610a54565b6105528484610ab9565b90506105618460200135610b5f565b61056a82610ba8565b9392505050565b606061057c33610611565b8061059a575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105bf5760405162461bcd60e51b81526004016105b690611600565b60405180910390fd5b60006105cf87878787875a610c01565b92509050806105e057815160208301fd5b5095945050505050565b60006105f584610611565b610600576000610609565b630291f19360e51b5b949350505050565b600080600061061e61096c565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610691919061165d565b6001600160a01b031614801561060957505050506001600160a01b0316151590565b6000805460405163ac0c10af60e01b81526001600160a01b039091169063ac0c10af906106f2908c908c908c908c908c908c908c908c906004016116a3565b6020604051808303816000875af1158015610711573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610735919061165d565b9998505050505050505050565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611707565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156108145750825b90506000826001600160401b031660011480156108305750303b155b90508115801561083e575080155b1561085c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561088657845460ff60401b1916600160401b1785555b600080546001600160a01b0319166001600160a01b03881617905583156108e757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60606108fa33610611565b80610918575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6109345760405162461bcd60e51b81526004016105b690611600565b60006109508888888888881561094a5788610c01565b5a610c01565b925090508061096157815160208301fd5b509695505050505050565b6000806000610979610d23565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806109b557506001600160e01b031982166301ffc9a760e01b145b806109d057506001600160e01b031982166306608bdf60e21b145b806109eb57506001600160e01b03198216630b135d3f60e11b145b80610a0657506001600160e01b03198216630271189760e51b145b806103b157506001600160e01b03198216635194544760e01b1492915050565b600080600080610a3888888888610d31565b925092509250610a488282610e00565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610ab75760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105b6565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610b3c82610b02610100880188611720565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061041392505050565b6001600160e01b03191614610b555760019150506103b1565b5060009392505050565b6001600160401b038110610ba55760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016105b6565b50565b8015610ba557604051600090339060001990849084818181858888f193505050503d8060008114610bf5576040519150601f19603f3d011682016040523d82523d6000602084013e610bfa565b606091505b5050505050565b600060608360ff16600003610c7a57876001600160a01b031683888888604051610c2c929190611766565b600060405180830381858888f193505050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b606091505b509092509050610d18565b8360ff16600103610cdc57876001600160a01b0316838787604051610ca0929190611766565b6000604051808303818686f4925050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b60448201526064016105b6565b965096945050505050565b600080600061097930610ebd565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d6c5750600091506003905082610df6565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dc0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610dec57506000925060019150829050610df6565b9250600091508190505b9450945094915050565b6000826003811115610e1457610e14611776565b03610e1d575050565b6001826003811115610e3157610e31611776565b03610e4f5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e6357610e63611776565b03610e845760405163fce698f760e01b8152600481018290526024016105b6565b6003826003811115610e9857610e98611776565b03610eb9576040516335e2f38360e21b8152600481018290526024016105b6565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610f04919061178c565b935093509350509193909250565b6001600160a01b0381168114610ba557600080fd5b60008083601f840112610f3957600080fd5b5081356001600160401b03811115610f5057600080fd5b602083019150836020828501011115610f6857600080fd5b9250929050565b60008060008060008060008060c0898b031215610f8b57600080fd5b8835610f9681610f12565b97506020890135610fa681610f12565b96506040890135610fb681610f12565b95506060890135945060808901356001600160401b0380821115610fd957600080fd5b610fe58c838d01610f27565b909650945060a08b0135915080821115610ffe57600080fd5b5061100b8b828c01610f27565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610ba557600080fd5b60006020828403121561104757600080fd5b813561056a8161101f565b60008060008060006080868803121561106a57600080fd5b853561107581610f12565b9450602086013561108581610f12565b93506040860135925060608601356001600160401b038111156110a757600080fd5b6110b388828901610f27565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110ed57600080fd5b8235915060208301356001600160401b038082111561110b57600080fd5b818501915085601f83011261111f57600080fd5b813581811115611131576111316110c4565b604051601f8201601f19908116603f01168101908382118183101715611159576111596110c4565b8160405282815288602084870101111561117257600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000606084860312156111a957600080fd5b83356001600160401b038111156111bf57600080fd5b840161012081870312156111d257600080fd5b95602085013595506040909401359392505050565b803560ff811681146111f857600080fd5b919050565b60008060008060006080868803121561121557600080fd5b853561122081610f12565b94506020860135935060408601356001600160401b0381111561124257600080fd5b61124e88828901610f27565b90945092506112619050606087016111e7565b90509295509295909350565b6000815180845260005b8181101561129357602081850181015186830182015201611277565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061056a602083018461126d565b6000806000604084860312156112db57600080fd5b83356112e681610f12565b925060208401356001600160401b0381111561130157600080fd5b61130d86828701610f27565b9497909650939450505050565b60006020828403121561132c57600080fd5b813561056a81610f12565b60008060008060008060008060a0898b03121561135357600080fd5b883561135e81610f12565b975060208901356001600160401b038082111561137a57600080fd5b6113868c838d01610f27565b909950975060408b013591508082111561139f57600080fd5b6113ab8c838d01610f27565b909750955060608b01359150808211156113c457600080fd5b506113d18b828c01610f27565b90945092505060808901356113e581610f12565b809150509295985092959890939650565b60008083601f84011261140857600080fd5b5081356001600160401b0381111561141f57600080fd5b6020830191508360208260051b8501011115610f6857600080fd5b60008060008060008060008060a0898b03121561145657600080fd5b883561146181610f12565b9750602089013561147181610f12565b965060408901356001600160401b038082111561148d57600080fd5b6114998c838d016113f6565b909850965060608b01359150808211156114b257600080fd5b6114be8c838d016113f6565b909650945060808b0135915080821115610ffe57600080fd5b60008060008060008060a087890312156114f057600080fd5b86356114fb81610f12565b95506020870135945060408701356001600160401b0381111561151d57600080fd5b61152989828a01610f27565b909550935061153c9050606088016111e7565b9150608087013590509295509295509295565b60008060008060008060a0878903121561156857600080fd5b863561157381610f12565b9550602087013561158381610f12565b9450604087013593506060870135925060808701356001600160401b038111156115ac57600080fd5b6115b889828a01610f27565b979a9699509497509295939492505050565b828152604060208201526000610609604083018461126d565b6000602082840312156115f557600080fd5b815161056a8161101f565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561166f57600080fd5b815161056a81610f12565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600060018060a01b03808b16835260a060208401526116c660a084018a8c61167a565b83810360408501526116d981898b61167a565b905083810360608501526116ee81878961167a565b9250508084166080840152509998505050505050505050565b60006020828403121561171957600080fd5b5051919050565b6000808335601e1984360301811261173757600080fd5b8301803591506001600160401b0382111561175157600080fd5b602001915036819003821315610f6857600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b6000806000606084860312156117a157600080fd5b8351925060208401516117b381610f12565b8092505060408401519050925092509256fea2646970667358221220fd7751f80d2c41fd26ad14447421a5bd7371f57e5898d2acee86a1e3b7f2e90064736f6c63430008170033","gas_used":1229075,"gas_limit":1642187,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x6080604052600436106101015760003560e01c8063ac0c10af11610095578063c4d66de811610064578063c4d66de8146102f3578063ca3b98bb14610313578063d087d288146102de578063f23a6e6114610326578063fc0c546a1461035357600080fd5b8063ac0c10af14610250578063b0d691fe14610288578063bc197c81146102af578063c19d93fb146102de57600080fd5b806319822f7c116100d157806319822f7c146101c257806351945447146101f0578063523e3260146102105780636d70f7ae1461023057600080fd5b806223de291461010d57806301ffc9a714610134578063150b7a02146101695780631626ba7e146101a257600080fd5b3661010857005b600080fd5b34801561011957600080fd5b50610132610128366004610f6f565b5050505050505050565b005b34801561014057600080fd5b5061015461014f366004611035565b61038b565b60405190151581526020015b60405180910390f35b34801561017557600080fd5b50610189610184366004611052565b6103b7565b6040516001600160e01b03199091168152602001610160565b3480156101ae57600080fd5b506101896101bd3660046110da565b610413565b3480156101ce57600080fd5b506101e26101dd366004611194565b61053e565b604051908152602001610160565b6102036101fe3660046111fd565b610571565b60405161016091906112b3565b34801561021c57600080fd5b5061018961022b3660046112c6565b6105ea565b34801561023c57600080fd5b5061015461024b36600461131a565b610611565b34801561025c57600080fd5b5061027061026b366004611337565b6106b3565b6040516001600160a01b039091168152602001610160565b34801561029457600080fd5b50735ff137d4b0fdcd49dca30c7cf57e578a026d2789610270565b3480156102bb57600080fd5b506101896102ca36600461143a565b63bc197c8160e01b98975050505050505050565b3480156102ea57600080fd5b506101e2610742565b3480156102ff57600080fd5b5061013261030e36600461131a565b6107cf565b6102036103213660046114d7565b6108ef565b34801561033257600080fd5b5061018961034136600461154f565b63f23a6e6160e01b9695505050505050565b34801561035f57600080fd5b5061036861096c565b604080519384526001600160a01b03909216602084015290820152606001610160565b600061039682610984565b806103b157506001600160e01b03198216636faff5f160e01b145b92915050565b60008060006103c461096c565b909350915050336001600160a01b0383161480156103e157508086145b156103ff5760405163b79e3f3f60e01b815260040160405180910390fd5b50630a85bd0160e11b979650505050505050565b600080600080610436856020810151604082015160609092015160001a92909190565b9094509250905060ff8116600003610504578285830160200161045882610611565b15801561046e57506001600160a01b0382163014155b1561048957506001600160e01b031994506103b19350505050565b604051630b135d3f60e11b81526001600160a01b03831690631626ba7e906104b7908b9085906004016115ca565b602060405180830381865afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f891906115e3565b955050505050506103b1565b61051361024b87838686610a26565b1561052b5750630b135d3f60e11b92506103b1915050565b506001600160e01b031995945050505050565b6000610548610a54565b6105528484610ab9565b90506105618460200135610b5f565b61056a82610ba8565b9392505050565b606061057c33610611565b8061059a575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6105bf5760405162461bcd60e51b81526004016105b690611600565b60405180910390fd5b60006105cf87878787875a610c01565b92509050806105e057815160208301fd5b5095945050505050565b60006105f584610611565b610600576000610609565b630291f19360e51b5b949350505050565b600080600061061e61096c565b6040516331a9108f60e11b81526004810182905291945092506001600160a01b038087169250841690636352211e90602401602060405180830381865afa15801561066d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610691919061165d565b6001600160a01b031614801561060957505050506001600160a01b0316151590565b6000805460405163ac0c10af60e01b81526001600160a01b039091169063ac0c10af906106f2908c908c908c908c908c908c908c908c906004016116a3565b6020604051808303816000875af1158015610711573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610735919061165d565b9998505050505050505050565b6000735ff137d4b0fdcd49dca30c7cf57e578a026d2789604051631aab3f0d60e11b8152306004820152600060248201526001600160a01b0391909116906335567e1a90604401602060405180830381865afa1580156107a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ca9190611707565b905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156108145750825b90506000826001600160401b031660011480156108305750303b155b90508115801561083e575080155b1561085c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561088657845460ff60401b1916600160401b1785555b600080546001600160a01b0319166001600160a01b03881617905583156108e757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60606108fa33610611565b80610918575033735ff137d4b0fdcd49dca30c7cf57e578a026d2789145b6109345760405162461bcd60e51b81526004016105b690611600565b60006109508888888888881561094a5788610c01565b5a610c01565b925090508061096157815160208301fd5b509695505050505050565b6000806000610979610d23565b925092509250909192565b60006001600160e01b03198216637b6f9da960e11b14806109b557506001600160e01b031982166301ffc9a760e01b145b806109d057506001600160e01b031982166306608bdf60e21b145b806109eb57506001600160e01b03198216630b135d3f60e11b145b80610a0657506001600160e01b03198216630271189760e51b145b806103b157506001600160e01b03198216635194544760e01b1492915050565b600080600080610a3888888888610d31565b925092509250610a488282610e00565b50909695505050505050565b33735ff137d4b0fdcd49dca30c7cf57e578a026d278914610ab75760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016105b6565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c829052603c8120630b135d3f60e11b610b3c82610b02610100880188611720565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061041392505050565b6001600160e01b03191614610b555760019150506103b1565b5060009392505050565b6001600160401b038110610ba55760405162461bcd60e51b815260206004820152600d60248201526c496e76616c6964206e6f6e636560981b60448201526064016105b6565b50565b8015610ba557604051600090339060001990849084818181858888f193505050503d8060008114610bf5576040519150601f19603f3d011682016040523d82523d6000602084013e610bfa565b606091505b5050505050565b600060608360ff16600003610c7a57876001600160a01b031683888888604051610c2c929190611766565b600060405180830381858888f193505050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b606091505b509092509050610d18565b8360ff16600103610cdc57876001600160a01b0316838787604051610ca0929190611766565b6000604051808303818686f4925050503d8060008114610c6a576040519150601f19603f3d011682016040523d82523d6000602084013e610c6f565b60405162461bcd60e51b815260206004820152601160248201527024b73b30b634b21037b832b930ba34b7b760791b60448201526064016105b6565b965096945050505050565b600080600061097930610ebd565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115610d6c5750600091506003905082610df6565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015610dc0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116610dec57506000925060019150829050610df6565b9250600091508190505b9450945094915050565b6000826003811115610e1457610e14611776565b03610e1d575050565b6001826003811115610e3157610e31611776565b03610e4f5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115610e6357610e63611776565b03610e845760405163fce698f760e01b8152600481018290526024016105b6565b6003826003811115610e9857610e98611776565b03610eb9576040516335e2f38360e21b8152600481018290526024016105b6565b5050565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c80806020019051810190610f04919061178c565b935093509350509193909250565b6001600160a01b0381168114610ba557600080fd5b60008083601f840112610f3957600080fd5b5081356001600160401b03811115610f5057600080fd5b602083019150836020828501011115610f6857600080fd5b9250929050565b60008060008060008060008060c0898b031215610f8b57600080fd5b8835610f9681610f12565b97506020890135610fa681610f12565b96506040890135610fb681610f12565b95506060890135945060808901356001600160401b0380821115610fd957600080fd5b610fe58c838d01610f27565b909650945060a08b0135915080821115610ffe57600080fd5b5061100b8b828c01610f27565b999c989b5096995094979396929594505050565b6001600160e01b031981168114610ba557600080fd5b60006020828403121561104757600080fd5b813561056a8161101f565b60008060008060006080868803121561106a57600080fd5b853561107581610f12565b9450602086013561108581610f12565b93506040860135925060608601356001600160401b038111156110a757600080fd5b6110b388828901610f27565b969995985093965092949392505050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156110ed57600080fd5b8235915060208301356001600160401b038082111561110b57600080fd5b818501915085601f83011261111f57600080fd5b813581811115611131576111316110c4565b604051601f8201601f19908116603f01168101908382118183101715611159576111596110c4565b8160405282815288602084870101111561117257600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000606084860312156111a957600080fd5b83356001600160401b038111156111bf57600080fd5b840161012081870312156111d257600080fd5b95602085013595506040909401359392505050565b803560ff811681146111f857600080fd5b919050565b60008060008060006080868803121561121557600080fd5b853561122081610f12565b94506020860135935060408601356001600160401b0381111561124257600080fd5b61124e88828901610f27565b90945092506112619050606087016111e7565b90509295509295909350565b6000815180845260005b8181101561129357602081850181015186830182015201611277565b506000602082860101526020601f19601f83011685010191505092915050565b60208152600061056a602083018461126d565b6000806000604084860312156112db57600080fd5b83356112e681610f12565b925060208401356001600160401b0381111561130157600080fd5b61130d86828701610f27565b9497909650939450505050565b60006020828403121561132c57600080fd5b813561056a81610f12565b60008060008060008060008060a0898b03121561135357600080fd5b883561135e81610f12565b975060208901356001600160401b038082111561137a57600080fd5b6113868c838d01610f27565b909950975060408b013591508082111561139f57600080fd5b6113ab8c838d01610f27565b909750955060608b01359150808211156113c457600080fd5b506113d18b828c01610f27565b90945092505060808901356113e581610f12565b809150509295985092959890939650565b60008083601f84011261140857600080fd5b5081356001600160401b0381111561141f57600080fd5b6020830191508360208260051b8501011115610f6857600080fd5b60008060008060008060008060a0898b03121561145657600080fd5b883561146181610f12565b9750602089013561147181610f12565b965060408901356001600160401b038082111561148d57600080fd5b6114998c838d016113f6565b909850965060608b01359150808211156114b257600080fd5b6114be8c838d016113f6565b909650945060808b0135915080821115610ffe57600080fd5b60008060008060008060a087890312156114f057600080fd5b86356114fb81610f12565b95506020870135945060408701356001600160401b0381111561151d57600080fd5b61152989828a01610f27565b909550935061153c9050606088016111e7565b9150608087013590509295509295509295565b60008060008060008060a0878903121561156857600080fd5b863561157381610f12565b9550602087013561158381610f12565b9450604087013593506060870135925060808701356001600160401b038111156115ac57600080fd5b6115b889828a01610f27565b979a9699509497509295939492505050565b828152604060208201526000610609604083018461126d565b6000602082840312156115f557600080fd5b815161056a8161101f565b6020808252603e908201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460408201527f6f72206f722074686520656e74727920706f696e7420636f6e74726163740000606082015260800190565b60006020828403121561166f57600080fd5b815161056a81610f12565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b600060018060a01b03808b16835260a060208401526116c660a084018a8c61167a565b83810360408501526116d981898b61167a565b905083810360608501526116ee81878961167a565b9250508084166080840152509998505050505050505050565b60006020828403121561171957600080fd5b5051919050565b6000808335601e1984360301811261173757600080fd5b8301803591506001600160401b0382111561175157600080fd5b602001915036819003821315610f6857600080fd5b8183823760009101908152919050565b634e487b7160e01b600052602160045260246000fd5b6000806000606084860312156117a157600080fd5b8351925060208401516117b381610f12565b8092505060408401519050925092509256fea2646970667358221220fd7751f80d2c41fd26ad14447421a5bd7371f57e5898d2acee86a1e3b7f2e90064736f6c63430008170033","nonce":3,"gas_used":1378713},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x150999","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x8dc67fe9a95e34f72f8d2425da710e56a95525e5eb20cb0f4ff7e085c21060e1","block_number":5},{"info":{"transaction_hash":"0x1b5d621d3bc39b9bbe38309073cca4507f2d9b79a237b2076f17364b98306bc1","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x4e59b44847b379578588920ca78fbf26c0b4956c","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xba7e4f5ffaf365f350f7ece63ecd7c7865716528743b0eb41b3a7d24c17b498760a06040523060805234801561001457600080fd5b5060805161233661003e600039600081816112fe01528181611327015261146501526123366000f3fe6080604052600436106101435760003560e01c806374e08829116100b0578063ad3cb1cc1161006c578063ad3cb1cc146103fc578063b88d4fde1461042d578063bfa0ee741461044d578063e852398b1461046d578063e985e9c51461048d578063edc16084146104c857005b806374e088291461031f5780637788b5a81461033f5780638eaa6ac01461035f57806395d89b411461038e578063a22cb465146103bc578063ac0c10af146103dc57005b806342842e0e116100ff57806342842e0e1461025c578063485cc9551461027c5780634f1ef2861461029c57806352d1902d146102af5780636352211e146102d257806370a08231146102f257005b806301ffc9a71461014c57806306fdde0314610181578063081812fc146101b8578063095ea7b31461020657806323b872dd146102265780632ffb26801461024657005b3661014a57005b005b34801561015857600080fd5b5061016c61016736600461177c565b6104ec565b60405190151581526020015b60405180910390f35b34801561018d57600080fd5b5060408051808201909152600581526404b694d61760dc1b60208201525b60405161017891906117e9565b3480156101c457600080fd5b506101ee6101d33660046117fc565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610178565b34801561021257600080fd5b5061014a61022136600461182a565b61053e565b34801561023257600080fd5b5061014a610241366004611856565b610623565b34801561025257600080fd5b50600019546101ee565b34801561026857600080fd5b5061014a610277366004611856565b6107ff565b34801561028857600080fd5b5061014a610297366004611897565b61081f565b61014a6102aa366004611973565b6109d2565b3480156102bb57600080fd5b506102c46109e8565b604051908152602001610178565b3480156102de57600080fd5b506101ee6102ed3660046117fc565b610a05565b3480156102fe57600080fd5b506102c461030d3660046119c3565b60006020819052908152604090205481565b34801561032b57600080fd5b5061014a61033a3660046119c3565b610a1f565b34801561034b57600080fd5b506102c461035a366004611a29565b610a3a565b34801561036b57600080fd5b5061037f61037a3660046117fc565b610b48565b60405161017893929190611a95565b34801561039a57600080fd5b5060408051808201909152600581526404b494d41560dc1b60208201526101ab565b3480156103c857600080fd5b5061014a6103d7366004611ac1565b610be0565b3480156103e857600080fd5b506101ee6103f7366004611af4565b610c4c565b34801561040857600080fd5b506101ab604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561043957600080fd5b5061014a610448366004611bb4565b610e66565b34801561045957600080fd5b506101ee6104683660046117fc565b610f4b565b34801561047957600080fd5b506102c4610488366004611a29565b610f62565b34801561049957600080fd5b5061016c6104a8366004611897565b600260209081526000928352604080842090915290825290205460ff1681565b3480156104d457600080fd5b506101ee6f6551c19487814612e58fe0681377575881565b60006301ffc9a760e01b6001600160e01b03198316148061051d57506380ac58cd60e01b6001600160e01b03198316145b806105385750635b5e139f60e01b6001600160e01b03198316145b92915050565b600061054982610a05565b9050336001600160a01b038216148061058557506001600160a01b038116600090815260026020908152604080832033845290915290205460ff165b6105c75760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526001602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61062c81610a05565b6001600160a01b0316836001600160a01b0316146106795760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016105be565b6001600160a01b0382166106c35760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016105be565b336001600160a01b03841614806106f357506106de81610f4b565b6001600160a01b0316336001600160a01b0316145b8061071457506000818152600160205260409020546001600160a01b031633145b8061074257506001600160a01b038316600090815260026020908152604080832033845290915290205460ff165b61077f5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016105be565b6001600160a01b0380841660008181526020818152604080832080546000190190559386168083528483208054600190810190915586810188905586845290915283822080546001600160a01b03191690559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61081a83838360405180602001604052806000815250610e66565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156108655750825b905060008267ffffffffffffffff1660011480156108825750303b155b905081158015610890575080155b156108ae5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108d857845460ff60401b1916600160401b1785555b61091b306040516108e890611759565b6001600160a01b039091168152602001604051809103906000f080158015610914573d6000803e3d6000fd5b5060001955565b600061094b886000801b89604051806020016040528060008152506040518060200160405280600081525061106f565b6040519091506001600160a01b038216907fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c090600090a25083156109c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6109da6112f3565b6109e4828261139d565b5050565b60006109f261145a565b506000805160206122e183398151915290565b6000815460a01c15610a175760206000f35b506001015490565b6000610a296114a3565b905060028101546109e45760020155565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610a8657610a86611c20565b6020910101516001600160f81b031916603f60f91b14610ab95760405163a3b9ac9560e01b815260040160405180910390fd5b6000610ac36114a3565b9050610ad08188886114d1565b92508254610adc578083555b610ae78386866114ff565b8686604051610af7929190611c36565b604051809103902083827fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48a8a8a8a604051610b369493929190611c6f565b60405180910390a45050949350505050565b60008060608354600185015481610b6457606060405260806000f35b8160a01c610b7f578160005280602052606060405260806000f35b60018201549050815491506040516080810160018801546020601f82010460018a010160028a015b818111600003610bc35780548452602090930192600101610ba7565b505084835283602084015260606040840152806060840152508082f35b3360008181526002602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610c9857610c98611c20565b01602001516001600160f81b031916603f60f91b03610cca57604051633dcf2a3f60e11b815260040160405180910390fd5b80600081518110610cdd57610cdd611c20565b01602001516001600160f81b031916602160f81b03610d0f5760405163305bb2eb60e11b815260040160405180910390fd5b6000610d196114a3565b90506000610d28828c8c6114d1565b90508a8a604051610d3a929190611c36565b604051809103902081837fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18e8e604051610d75929190611ca1565b60405180910390a4600282015415610d9557600282015494508460028201555b610e1c8c82878c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061106f92505050565b60405190945081906001600160a01b038e16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450505098975050505050505050565b610e71848484610623565b6001600160a01b0383163b1580610f065750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610eb7903390899088908890600401611cbd565b6020604051808303816000875af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa9190611cfa565b6001600160e01b031916145b610f455760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b50505050565b6000815460a01c15610f5d5760206000f35b505490565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610fae57610fae611c20565b6020910101516001600160f81b031916602160f81b14610fe157604051636ae27d4f60e01b815260040160405180910390fd5b6000610feb6114a3565b9050610ff88188886114d1565b92508254156110125763a542ed9c60e01b60005260046000fd5b8083556110208386866114ff565b8686604051611030929190611c36565b604051809103902083827f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8a8a8a8a604051610b369493929190611c6f565b60008454156110895763d202940c60e01b60005260046000fd5b6f6551c19487814612e58fe06813775758638a54c52f6110a96000195490565b60405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018890524660448201523060648201526084810188905260a4016020604051808303816000875af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611d17565b9050808555306001860155806001600160a01b031663d1f5789460e01b858560405160240161115d929190611d34565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161119b9190611d58565b6000604051808303816000865af19150503d80600081146111d8576040519150601f19603f3d011682016040523d82523d6000602084013e6111dd565b606091505b50505060018581018790556001600160a01b03871660009081526020819052604081208054909190611210908490611d74565b90915550506001600160a01b0386163b15806112ab5750604051630a85bd0160e11b808252906001600160a01b0388169063150b7a029061125c9033906000908b908990600401611cbd565b6020604051808303816000875af115801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190611cfa565b6001600160e01b031916145b6112ea5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b95945050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061137a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661136e6000805160206122e1833981519152546001600160a01b031690565b6001600160a01b031614155b156113985760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113f7575060408051601f3d908101601f191682019092526113f491810190611d95565b60015b61141f57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105be565b6000805160206122e1833981519152811461145057604051632a87526960e21b8152600481018290526024016105be565b61081a8383611535565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113985760405163703e46dd60e11b815260040160405180910390fd5b6000806114af3361158b565b92505050338154146114cc57636b38e6f660e01b60005260046000fd5b919050565b6000604051602083018101604052828482379190912060408051948552602085019190915290922092915050565b60028301828281015b8082116000036115275781358355600183019250602082019150611508565b505050806001840155505050565b61153e826115e0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156115835761081a8282611645565b6109e46116b2565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906115d29190611dae565b935093509350509193909250565b806001600160a01b03163b60000361161657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105be565b6000805160206122e183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516116629190611d58565b600060405180830381855af49150503d806000811461169d576040519150601f19603f3d011682016040523d82523d6000602084013e6116a2565b606091505b50915091506112ea8583836116d1565b34156113985760405163b398979f60e01b815260040160405180910390fd5b6060826116e6576116e182611730565b611729565b81511580156116fd57506001600160a01b0384163b155b1561172657604051639996b31560e01b81526001600160a01b03851660048201526024016105be565b50805b9392505050565b8051156117405780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104f980611de883390190565b6001600160e01b03198116811461139a57600080fd5b60006020828403121561178e57600080fd5b813561172981611766565b60005b838110156117b457818101518382015260200161179c565b50506000910152565b600081518084526117d5816020860160208601611799565b601f01601f19169290920160200192915050565b60208152600061172960208301846117bd565b60006020828403121561180e57600080fd5b5035919050565b6001600160a01b038116811461139a57600080fd5b6000806040838503121561183d57600080fd5b823561184881611815565b946020939093013593505050565b60008060006060848603121561186b57600080fd5b833561187681611815565b9250602084013561188681611815565b929592945050506040919091013590565b600080604083850312156118aa57600080fd5b82356118b581611815565b915060208301356118c581611815565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126118f757600080fd5b813567ffffffffffffffff80821115611912576119126118d0565b604051601f8301601f19908116603f0116810190828211818310171561193a5761193a6118d0565b8160405283815286602085880101111561195357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561198657600080fd5b823561199181611815565b9150602083013567ffffffffffffffff8111156119ad57600080fd5b6119b9858286016118e6565b9150509250929050565b6000602082840312156119d557600080fd5b813561172981611815565b60008083601f8401126119f257600080fd5b50813567ffffffffffffffff811115611a0a57600080fd5b602083019150836020828501011115611a2257600080fd5b9250929050565b60008060008060408587031215611a3f57600080fd5b843567ffffffffffffffff80821115611a5757600080fd5b611a63888389016119e0565b90965094506020870135915080821115611a7c57600080fd5b50611a89878288016119e0565b95989497509550505050565b6001600160a01b038481168252831660208201526060604082018190526000906112ea908301846117bd565b60008060408385031215611ad457600080fd5b8235611adf81611815565b9150602083013580151581146118c557600080fd5b60008060008060008060008060a0898b031215611b1057600080fd5b8835611b1b81611815565b9750602089013567ffffffffffffffff80821115611b3857600080fd5b611b448c838d016119e0565b909950975060408b0135915080821115611b5d57600080fd5b611b698c838d016119e0565b909750955060608b0135915080821115611b8257600080fd5b50611b8f8b828c016119e0565b9094509250506080890135611ba381611815565b809150509295985092959890939650565b60008060008060808587031215611bca57600080fd5b8435611bd581611815565b93506020850135611be581611815565b925060408501359150606085013567ffffffffffffffff811115611c0857600080fd5b611c14878288016118e6565b91505092959194509250565b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611c83604083018688611c46565b8281036020840152611c96818587611c46565b979650505050505050565b602081526000611cb5602083018486611c46565b949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611cf0908301846117bd565b9695505050505050565b600060208284031215611d0c57600080fd5b815161172981611766565b600060208284031215611d2957600080fd5b815161172981611815565b6001600160a01b0383168152604060208201819052600090611cb5908301846117bd565b60008251611d6a818460208701611799565b9190910192915050565b8082018082111561053857634e487b7160e01b600052601160045260246000fd5b600060208284031215611da757600080fd5b5051919050565b600080600060608486031215611dc357600080fd5b835192506020840151611dd581611815565b8092505060408401519050925092509256fe60a060405234801561001057600080fd5b506040516104f93803806104f983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161046f61008a60003960006058015261046f6000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b61002661003b565b005b61002661003636600461033a565b61004d565b61004b6100466100d9565b610111565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100b35760405162461bcd60e51b81526020600482015260066024820152650216b696d61760d41b60448201526064015b60405180910390fd5b60006100bd6100d9565b6001600160a01b0316036100d5576100d58282610135565b5050565b600061010c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610130573d6000f35b3d6000fd5b61013e82610190565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610188576101838282610207565b505050565b6100d561027d565b806001600160a01b03163b6000036101c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100aa565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610224919061040a565b600060405180830381855af49150503d806000811461025f576040519150601f19603f3d011682016040523d82523d6000602084013e610264565b606091505b509150915061027485838361029c565b95945050505050565b341561004b5760405163b398979f60e01b815260040160405180910390fd5b6060826102b1576102ac826102fb565b6102f4565b81511580156102c857506001600160a01b0384163b155b156102f157604051639996b31560e01b81526001600160a01b03851660048201526024016100aa565b50805b9392505050565b80511561030b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561034d57600080fd5b82356001600160a01b038116811461036457600080fd5b9150602083013567ffffffffffffffff8082111561038157600080fd5b818501915085601f83011261039557600080fd5b8135818111156103a7576103a7610324565b604051601f8201601f19908116603f011681019083821181831017156103cf576103cf610324565b816040528281528860208487010111156103e857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561042b5760208186018101518583015201610411565b50600092019182525091905056fea2646970667358221220d7d36d3d943bb5535c93e093b5c016f6bb9b948b6d00fd0068ee903fb4b4dbfb64736f6c63430008170033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220438b0639c91c57e22b22ecf3b92d62f5f5d4a41920c91ba4dd6d9f60f8f8f05e64736f6c63430008170033","output":"0x4658c6373a1e066c35815a3e4061571216c48d7a","gas_used":1840968,"gas_limit":2603805,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4e59b44847b379578588920ca78fbf26c0b4956c","address":"0x4658c6373a1e066c35815a3e4061571216c48d7a","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x60a06040523060805234801561001457600080fd5b5060805161233661003e600039600081816112fe01528181611327015261146501526123366000f3fe6080604052600436106101435760003560e01c806374e08829116100b0578063ad3cb1cc1161006c578063ad3cb1cc146103fc578063b88d4fde1461042d578063bfa0ee741461044d578063e852398b1461046d578063e985e9c51461048d578063edc16084146104c857005b806374e088291461031f5780637788b5a81461033f5780638eaa6ac01461035f57806395d89b411461038e578063a22cb465146103bc578063ac0c10af146103dc57005b806342842e0e116100ff57806342842e0e1461025c578063485cc9551461027c5780634f1ef2861461029c57806352d1902d146102af5780636352211e146102d257806370a08231146102f257005b806301ffc9a71461014c57806306fdde0314610181578063081812fc146101b8578063095ea7b31461020657806323b872dd146102265780632ffb26801461024657005b3661014a57005b005b34801561015857600080fd5b5061016c61016736600461177c565b6104ec565b60405190151581526020015b60405180910390f35b34801561018d57600080fd5b5060408051808201909152600581526404b694d61760dc1b60208201525b60405161017891906117e9565b3480156101c457600080fd5b506101ee6101d33660046117fc565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610178565b34801561021257600080fd5b5061014a61022136600461182a565b61053e565b34801561023257600080fd5b5061014a610241366004611856565b610623565b34801561025257600080fd5b50600019546101ee565b34801561026857600080fd5b5061014a610277366004611856565b6107ff565b34801561028857600080fd5b5061014a610297366004611897565b61081f565b61014a6102aa366004611973565b6109d2565b3480156102bb57600080fd5b506102c46109e8565b604051908152602001610178565b3480156102de57600080fd5b506101ee6102ed3660046117fc565b610a05565b3480156102fe57600080fd5b506102c461030d3660046119c3565b60006020819052908152604090205481565b34801561032b57600080fd5b5061014a61033a3660046119c3565b610a1f565b34801561034b57600080fd5b506102c461035a366004611a29565b610a3a565b34801561036b57600080fd5b5061037f61037a3660046117fc565b610b48565b60405161017893929190611a95565b34801561039a57600080fd5b5060408051808201909152600581526404b494d41560dc1b60208201526101ab565b3480156103c857600080fd5b5061014a6103d7366004611ac1565b610be0565b3480156103e857600080fd5b506101ee6103f7366004611af4565b610c4c565b34801561040857600080fd5b506101ab604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561043957600080fd5b5061014a610448366004611bb4565b610e66565b34801561045957600080fd5b506101ee6104683660046117fc565b610f4b565b34801561047957600080fd5b506102c4610488366004611a29565b610f62565b34801561049957600080fd5b5061016c6104a8366004611897565b600260209081526000928352604080842090915290825290205460ff1681565b3480156104d457600080fd5b506101ee6f6551c19487814612e58fe0681377575881565b60006301ffc9a760e01b6001600160e01b03198316148061051d57506380ac58cd60e01b6001600160e01b03198316145b806105385750635b5e139f60e01b6001600160e01b03198316145b92915050565b600061054982610a05565b9050336001600160a01b038216148061058557506001600160a01b038116600090815260026020908152604080832033845290915290205460ff165b6105c75760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526001602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61062c81610a05565b6001600160a01b0316836001600160a01b0316146106795760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016105be565b6001600160a01b0382166106c35760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016105be565b336001600160a01b03841614806106f357506106de81610f4b565b6001600160a01b0316336001600160a01b0316145b8061071457506000818152600160205260409020546001600160a01b031633145b8061074257506001600160a01b038316600090815260026020908152604080832033845290915290205460ff165b61077f5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016105be565b6001600160a01b0380841660008181526020818152604080832080546000190190559386168083528483208054600190810190915586810188905586845290915283822080546001600160a01b03191690559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61081a83838360405180602001604052806000815250610e66565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156108655750825b905060008267ffffffffffffffff1660011480156108825750303b155b905081158015610890575080155b156108ae5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108d857845460ff60401b1916600160401b1785555b61091b306040516108e890611759565b6001600160a01b039091168152602001604051809103906000f080158015610914573d6000803e3d6000fd5b5060001955565b600061094b886000801b89604051806020016040528060008152506040518060200160405280600081525061106f565b6040519091506001600160a01b038216907fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c090600090a25083156109c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6109da6112f3565b6109e4828261139d565b5050565b60006109f261145a565b506000805160206122e183398151915290565b6000815460a01c15610a175760206000f35b506001015490565b6000610a296114a3565b905060028101546109e45760020155565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610a8657610a86611c20565b6020910101516001600160f81b031916603f60f91b14610ab95760405163a3b9ac9560e01b815260040160405180910390fd5b6000610ac36114a3565b9050610ad08188886114d1565b92508254610adc578083555b610ae78386866114ff565b8686604051610af7929190611c36565b604051809103902083827fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48a8a8a8a604051610b369493929190611c6f565b60405180910390a45050949350505050565b60008060608354600185015481610b6457606060405260806000f35b8160a01c610b7f578160005280602052606060405260806000f35b60018201549050815491506040516080810160018801546020601f82010460018a010160028a015b818111600003610bc35780548452602090930192600101610ba7565b505084835283602084015260606040840152806060840152508082f35b3360008181526002602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610c9857610c98611c20565b01602001516001600160f81b031916603f60f91b03610cca57604051633dcf2a3f60e11b815260040160405180910390fd5b80600081518110610cdd57610cdd611c20565b01602001516001600160f81b031916602160f81b03610d0f5760405163305bb2eb60e11b815260040160405180910390fd5b6000610d196114a3565b90506000610d28828c8c6114d1565b90508a8a604051610d3a929190611c36565b604051809103902081837fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18e8e604051610d75929190611ca1565b60405180910390a4600282015415610d9557600282015494508460028201555b610e1c8c82878c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061106f92505050565b60405190945081906001600160a01b038e16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450505098975050505050505050565b610e71848484610623565b6001600160a01b0383163b1580610f065750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610eb7903390899088908890600401611cbd565b6020604051808303816000875af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa9190611cfa565b6001600160e01b031916145b610f455760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b50505050565b6000815460a01c15610f5d5760206000f35b505490565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610fae57610fae611c20565b6020910101516001600160f81b031916602160f81b14610fe157604051636ae27d4f60e01b815260040160405180910390fd5b6000610feb6114a3565b9050610ff88188886114d1565b92508254156110125763a542ed9c60e01b60005260046000fd5b8083556110208386866114ff565b8686604051611030929190611c36565b604051809103902083827f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8a8a8a8a604051610b369493929190611c6f565b60008454156110895763d202940c60e01b60005260046000fd5b6f6551c19487814612e58fe06813775758638a54c52f6110a96000195490565b60405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018890524660448201523060648201526084810188905260a4016020604051808303816000875af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611d17565b9050808555306001860155806001600160a01b031663d1f5789460e01b858560405160240161115d929190611d34565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161119b9190611d58565b6000604051808303816000865af19150503d80600081146111d8576040519150601f19603f3d011682016040523d82523d6000602084013e6111dd565b606091505b50505060018581018790556001600160a01b03871660009081526020819052604081208054909190611210908490611d74565b90915550506001600160a01b0386163b15806112ab5750604051630a85bd0160e11b808252906001600160a01b0388169063150b7a029061125c9033906000908b908990600401611cbd565b6020604051808303816000875af115801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190611cfa565b6001600160e01b031916145b6112ea5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b95945050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061137a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661136e6000805160206122e1833981519152546001600160a01b031690565b6001600160a01b031614155b156113985760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113f7575060408051601f3d908101601f191682019092526113f491810190611d95565b60015b61141f57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105be565b6000805160206122e1833981519152811461145057604051632a87526960e21b8152600481018290526024016105be565b61081a8383611535565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146113985760405163703e46dd60e11b815260040160405180910390fd5b6000806114af3361158b565b92505050338154146114cc57636b38e6f660e01b60005260046000fd5b919050565b6000604051602083018101604052828482379190912060408051948552602085019190915290922092915050565b60028301828281015b8082116000036115275781358355600183019250602082019150611508565b505050806001840155505050565b61153e826115e0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156115835761081a8282611645565b6109e46116b2565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906115d29190611dae565b935093509350509193909250565b806001600160a01b03163b60000361161657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105be565b6000805160206122e183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516116629190611d58565b600060405180830381855af49150503d806000811461169d576040519150601f19603f3d011682016040523d82523d6000602084013e6116a2565b606091505b50915091506112ea8583836116d1565b34156113985760405163b398979f60e01b815260040160405180910390fd5b6060826116e6576116e182611730565b611729565b81511580156116fd57506001600160a01b0384163b155b1561172657604051639996b31560e01b81526001600160a01b03851660048201526024016105be565b50805b9392505050565b8051156117405780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104f980611de883390190565b6001600160e01b03198116811461139a57600080fd5b60006020828403121561178e57600080fd5b813561172981611766565b60005b838110156117b457818101518382015260200161179c565b50506000910152565b600081518084526117d5816020860160208601611799565b601f01601f19169290920160200192915050565b60208152600061172960208301846117bd565b60006020828403121561180e57600080fd5b5035919050565b6001600160a01b038116811461139a57600080fd5b6000806040838503121561183d57600080fd5b823561184881611815565b946020939093013593505050565b60008060006060848603121561186b57600080fd5b833561187681611815565b9250602084013561188681611815565b929592945050506040919091013590565b600080604083850312156118aa57600080fd5b82356118b581611815565b915060208301356118c581611815565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126118f757600080fd5b813567ffffffffffffffff80821115611912576119126118d0565b604051601f8301601f19908116603f0116810190828211818310171561193a5761193a6118d0565b8160405283815286602085880101111561195357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561198657600080fd5b823561199181611815565b9150602083013567ffffffffffffffff8111156119ad57600080fd5b6119b9858286016118e6565b9150509250929050565b6000602082840312156119d557600080fd5b813561172981611815565b60008083601f8401126119f257600080fd5b50813567ffffffffffffffff811115611a0a57600080fd5b602083019150836020828501011115611a2257600080fd5b9250929050565b60008060008060408587031215611a3f57600080fd5b843567ffffffffffffffff80821115611a5757600080fd5b611a63888389016119e0565b90965094506020870135915080821115611a7c57600080fd5b50611a89878288016119e0565b95989497509550505050565b6001600160a01b038481168252831660208201526060604082018190526000906112ea908301846117bd565b60008060408385031215611ad457600080fd5b8235611adf81611815565b9150602083013580151581146118c557600080fd5b60008060008060008060008060a0898b031215611b1057600080fd5b8835611b1b81611815565b9750602089013567ffffffffffffffff80821115611b3857600080fd5b611b448c838d016119e0565b909950975060408b0135915080821115611b5d57600080fd5b611b698c838d016119e0565b909750955060608b0135915080821115611b8257600080fd5b50611b8f8b828c016119e0565b9094509250506080890135611ba381611815565b809150509295985092959890939650565b60008060008060808587031215611bca57600080fd5b8435611bd581611815565b93506020850135611be581611815565b925060408501359150606085013567ffffffffffffffff811115611c0857600080fd5b611c14878288016118e6565b91505092959194509250565b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611c83604083018688611c46565b8281036020840152611c96818587611c46565b979650505050505050565b602081526000611cb5602083018486611c46565b949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611cf0908301846117bd565b9695505050505050565b600060208284031215611d0c57600080fd5b815161172981611766565b600060208284031215611d2957600080fd5b815161172981611815565b6001600160a01b0383168152604060208201819052600090611cb5908301846117bd565b60008251611d6a818460208701611799565b9190910192915050565b8082018082111561053857634e487b7160e01b600052601160045260246000fd5b600060208284031215611da757600080fd5b5051919050565b600080600060608486031215611dc357600080fd5b835192506020840151611dd581611815565b8092505060408401519050925092509256fe60a060405234801561001057600080fd5b506040516104f93803806104f983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161046f61008a60003960006058015261046f6000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b61002661003b565b005b61002661003636600461033a565b61004d565b61004b6100466100d9565b610111565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100b35760405162461bcd60e51b81526020600482015260066024820152650216b696d61760d41b60448201526064015b60405180910390fd5b60006100bd6100d9565b6001600160a01b0316036100d5576100d58282610135565b5050565b600061010c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610130573d6000f35b3d6000fd5b61013e82610190565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610188576101838282610207565b505050565b6100d561027d565b806001600160a01b03163b6000036101c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100aa565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610224919061040a565b600060405180830381855af49150503d806000811461025f576040519150601f19603f3d011682016040523d82523d6000602084013e610264565b606091505b509150915061027485838361029c565b95945050505050565b341561004b5760405163b398979f60e01b815260040160405180910390fd5b6060826102b1576102ac826102fb565b6102f4565b81511580156102c857506001600160a01b0384163b155b156102f157604051639996b31560e01b81526001600160a01b03851660048201526024016100aa565b50805b9392505050565b80511561030b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561034d57600080fd5b82356001600160a01b038116811461036457600080fd5b9150602083013567ffffffffffffffff8082111561038157600080fd5b818501915085601f83011261039557600080fd5b8135818111156103a7576103a7610324565b604051601f8201601f19908116603f011681019083821181831017156103cf576103cf610324565b816040528281528860208487010111156103e857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561042b5760208186018101518583015201610411565b50600092019182525091905056fea2646970667358221220d7d36d3d943bb5535c93e093b5c016f6bb9b948b6d00fd0068ee903fb4b4dbfb64736f6c63430008170033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220438b0639c91c57e22b22ecf3b92d62f5f5d4a41920c91ba4dd6d9f60f8f8f05e64736f6c63430008170033","output":"0x6080604052600436106101435760003560e01c806374e08829116100b0578063ad3cb1cc1161006c578063ad3cb1cc146103fc578063b88d4fde1461042d578063bfa0ee741461044d578063e852398b1461046d578063e985e9c51461048d578063edc16084146104c857005b806374e088291461031f5780637788b5a81461033f5780638eaa6ac01461035f57806395d89b411461038e578063a22cb465146103bc578063ac0c10af146103dc57005b806342842e0e116100ff57806342842e0e1461025c578063485cc9551461027c5780634f1ef2861461029c57806352d1902d146102af5780636352211e146102d257806370a08231146102f257005b806301ffc9a71461014c57806306fdde0314610181578063081812fc146101b8578063095ea7b31461020657806323b872dd146102265780632ffb26801461024657005b3661014a57005b005b34801561015857600080fd5b5061016c61016736600461177c565b6104ec565b60405190151581526020015b60405180910390f35b34801561018d57600080fd5b5060408051808201909152600581526404b694d61760dc1b60208201525b60405161017891906117e9565b3480156101c457600080fd5b506101ee6101d33660046117fc565b6001602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610178565b34801561021257600080fd5b5061014a61022136600461182a565b61053e565b34801561023257600080fd5b5061014a610241366004611856565b610623565b34801561025257600080fd5b50600019546101ee565b34801561026857600080fd5b5061014a610277366004611856565b6107ff565b34801561028857600080fd5b5061014a610297366004611897565b61081f565b61014a6102aa366004611973565b6109d2565b3480156102bb57600080fd5b506102c46109e8565b604051908152602001610178565b3480156102de57600080fd5b506101ee6102ed3660046117fc565b610a05565b3480156102fe57600080fd5b506102c461030d3660046119c3565b60006020819052908152604090205481565b34801561032b57600080fd5b5061014a61033a3660046119c3565b610a1f565b34801561034b57600080fd5b506102c461035a366004611a29565b610a3a565b34801561036b57600080fd5b5061037f61037a3660046117fc565b610b48565b60405161017893929190611a95565b34801561039a57600080fd5b5060408051808201909152600581526404b494d41560dc1b60208201526101ab565b3480156103c857600080fd5b5061014a6103d7366004611ac1565b610be0565b3480156103e857600080fd5b506101ee6103f7366004611af4565b610c4c565b34801561040857600080fd5b506101ab604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561043957600080fd5b5061014a610448366004611bb4565b610e66565b34801561045957600080fd5b506101ee6104683660046117fc565b610f4b565b34801561047957600080fd5b506102c4610488366004611a29565b610f62565b34801561049957600080fd5b5061016c6104a8366004611897565b600260209081526000928352604080842090915290825290205460ff1681565b3480156104d457600080fd5b506101ee6f6551c19487814612e58fe0681377575881565b60006301ffc9a760e01b6001600160e01b03198316148061051d57506380ac58cd60e01b6001600160e01b03198316145b806105385750635b5e139f60e01b6001600160e01b03198316145b92915050565b600061054982610a05565b9050336001600160a01b038216148061058557506001600160a01b038116600090815260026020908152604080832033845290915290205460ff165b6105c75760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526001602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b61062c81610a05565b6001600160a01b0316836001600160a01b0316146106795760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b60448201526064016105be565b6001600160a01b0382166106c35760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b60448201526064016105be565b336001600160a01b03841614806106f357506106de81610f4b565b6001600160a01b0316336001600160a01b0316145b8061071457506000818152600160205260409020546001600160a01b031633145b8061074257506001600160a01b038316600090815260026020908152604080832033845290915290205460ff165b61077f5760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064016105be565b6001600160a01b0380841660008181526020818152604080832080546000190190559386168083528483208054600190810190915586810188905586845290915283822080546001600160a01b03191690559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61081a83838360405180602001604052806000815250610e66565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156108655750825b905060008267ffffffffffffffff1660011480156108825750303b155b905081158015610890575080155b156108ae5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156108d857845460ff60401b1916600160401b1785555b61091b306040516108e890611759565b6001600160a01b039091168152602001604051809103906000f080158015610914573d6000803e3d6000fd5b5060001955565b600061094b886000801b89604051806020016040528060008152506040518060200160405280600081525061106f565b6040519091506001600160a01b038216907fa7dcba07b3032d87953767c0eed546a5eb7e52648856b776ba4ad8a1ff1bf3c090600090a25083156109c957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6109da6112f3565b6109e4828261139d565b5050565b60006109f261145a565b506000805160206122e183398151915290565b6000815460a01c15610a175760206000f35b506001015490565b6000610a296114a3565b905060028101546109e45760020155565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610a8657610a86611c20565b6020910101516001600160f81b031916603f60f91b14610ab95760405163a3b9ac9560e01b815260040160405180910390fd5b6000610ac36114a3565b9050610ad08188886114d1565b92508254610adc578083555b610ae78386866114ff565b8686604051610af7929190611c36565b604051809103902083827fe40d9f1ec78dfc3c5a94c3edae28058ba092a8f65ce8a199731840a3d20f82f48a8a8a8a604051610b369493929190611c6f565b60405180910390a45050949350505050565b60008060608354600185015481610b6457606060405260806000f35b8160a01c610b7f578160005280602052606060405260806000f35b60018201549050815491506040516080810160018801546020601f82010460018a010160028a015b818111600003610bc35780548452602090930192600101610ba7565b505084835283602084015260606040840152806060840152508082f35b3360008181526002602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b600087878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610c9857610c98611c20565b01602001516001600160f81b031916603f60f91b03610cca57604051633dcf2a3f60e11b815260040160405180910390fd5b80600081518110610cdd57610cdd611c20565b01602001516001600160f81b031916602160f81b03610d0f5760405163305bb2eb60e11b815260040160405180910390fd5b6000610d196114a3565b90506000610d28828c8c6114d1565b90508a8a604051610d3a929190611c36565b604051809103902081837fb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b18e8e604051610d75929190611ca1565b60405180910390a4600282015415610d9557600282015494508460028201555b610e1c8c82878c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061106f92505050565b60405190945081906001600160a01b038e16906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450505098975050505050505050565b610e71848484610623565b6001600160a01b0383163b1580610f065750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610eb7903390899088908890600401611cbd565b6020604051808303816000875af1158015610ed6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610efa9190611cfa565b6001600160e01b031916145b610f455760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b50505050565b6000815460a01c15610f5d5760206000f35b505490565b600084848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250845185945090925015159050610fae57610fae611c20565b6020910101516001600160f81b031916602160f81b14610fe157604051636ae27d4f60e01b815260040160405180910390fd5b6000610feb6114a3565b9050610ff88188886114d1565b92508254156110125763a542ed9c60e01b60005260046000fd5b8083556110208386866114ff565b8686604051611030929190611c36565b604051809103902083827f6df41fff09a97e34e341514998993ce9f4542c3fa8358931a96c9fff178c3adb8a8a8a8a604051610b369493929190611c6f565b60008454156110895763d202940c60e01b60005260046000fd5b6f6551c19487814612e58fe06813775758638a54c52f6110a96000195490565b60405160e083901b6001600160e01b03191681526001600160a01b039091166004820152602481018890524660448201523060648201526084810188905260a4016020604051808303816000875af1158015611109573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061112d9190611d17565b9050808555306001860155806001600160a01b031663d1f5789460e01b858560405160240161115d929190611d34565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161119b9190611d58565b6000604051808303816000865af19150503d80600081146111d8576040519150601f19603f3d011682016040523d82523d6000602084013e6111dd565b606091505b50505060018581018790556001600160a01b03871660009081526020819052604081208054909190611210908490611d74565b90915550506001600160a01b0386163b15806112ab5750604051630a85bd0160e11b808252906001600160a01b0388169063150b7a029061125c9033906000908b908990600401611cbd565b6020604051808303816000875af115801561127b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061129f9190611cfa565b6001600160e01b031916145b6112ea5760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b60448201526064016105be565b95945050505050565b306001600160a01b037f0000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a16148061137a57507f0000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a6001600160a01b031661136e6000805160206122e1833981519152546001600160a01b031690565b6001600160a01b031614155b156113985760405163703e46dd60e11b815260040160405180910390fd5b565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156113f7575060408051601f3d908101601f191682019092526113f491810190611d95565b60015b61141f57604051634c9c8ce360e01b81526001600160a01b03831660048201526024016105be565b6000805160206122e1833981519152811461145057604051632a87526960e21b8152600481018290526024016105be565b61081a8383611535565b306001600160a01b037f0000000000000000000000004658c6373a1e066c35815a3e4061571216c48d7a16146113985760405163703e46dd60e11b815260040160405180910390fd5b6000806114af3361158b565b92505050338154146114cc57636b38e6f660e01b60005260046000fd5b919050565b6000604051602083018101604052828482379190912060408051948552602085019190915290922092915050565b60028301828281015b8082116000036115275781358355600183019250602082019150611508565b505050806001840155505050565b61153e826115e0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156115835761081a8282611645565b6109e46116b2565b60408051606080825260808201909252600091829182918291906020820181803683370190505090506060604d60208301873c808060200190518101906115d29190611dae565b935093509350509193909250565b806001600160a01b03163b60000361161657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016105be565b6000805160206122e183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516116629190611d58565b600060405180830381855af49150503d806000811461169d576040519150601f19603f3d011682016040523d82523d6000602084013e6116a2565b606091505b50915091506112ea8583836116d1565b34156113985760405163b398979f60e01b815260040160405180910390fd5b6060826116e6576116e182611730565b611729565b81511580156116fd57506001600160a01b0384163b155b1561172657604051639996b31560e01b81526001600160a01b03851660048201526024016105be565b50805b9392505050565b8051156117405780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6104f980611de883390190565b6001600160e01b03198116811461139a57600080fd5b60006020828403121561178e57600080fd5b813561172981611766565b60005b838110156117b457818101518382015260200161179c565b50506000910152565b600081518084526117d5816020860160208601611799565b601f01601f19169290920160200192915050565b60208152600061172960208301846117bd565b60006020828403121561180e57600080fd5b5035919050565b6001600160a01b038116811461139a57600080fd5b6000806040838503121561183d57600080fd5b823561184881611815565b946020939093013593505050565b60008060006060848603121561186b57600080fd5b833561187681611815565b9250602084013561188681611815565b929592945050506040919091013590565b600080604083850312156118aa57600080fd5b82356118b581611815565b915060208301356118c581611815565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126118f757600080fd5b813567ffffffffffffffff80821115611912576119126118d0565b604051601f8301601f19908116603f0116810190828211818310171561193a5761193a6118d0565b8160405283815286602085880101111561195357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561198657600080fd5b823561199181611815565b9150602083013567ffffffffffffffff8111156119ad57600080fd5b6119b9858286016118e6565b9150509250929050565b6000602082840312156119d557600080fd5b813561172981611815565b60008083601f8401126119f257600080fd5b50813567ffffffffffffffff811115611a0a57600080fd5b602083019150836020828501011115611a2257600080fd5b9250929050565b60008060008060408587031215611a3f57600080fd5b843567ffffffffffffffff80821115611a5757600080fd5b611a63888389016119e0565b90965094506020870135915080821115611a7c57600080fd5b50611a89878288016119e0565b95989497509550505050565b6001600160a01b038481168252831660208201526060604082018190526000906112ea908301846117bd565b60008060408385031215611ad457600080fd5b8235611adf81611815565b9150602083013580151581146118c557600080fd5b60008060008060008060008060a0898b031215611b1057600080fd5b8835611b1b81611815565b9750602089013567ffffffffffffffff80821115611b3857600080fd5b611b448c838d016119e0565b909950975060408b0135915080821115611b5d57600080fd5b611b698c838d016119e0565b909750955060608b0135915080821115611b8257600080fd5b50611b8f8b828c016119e0565b9094509250506080890135611ba381611815565b809150509295985092959890939650565b60008060008060808587031215611bca57600080fd5b8435611bd581611815565b93506020850135611be581611815565b925060408501359150606085013567ffffffffffffffff811115611c0857600080fd5b611c14878288016118e6565b91505092959194509250565b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000611c83604083018688611c46565b8281036020840152611c96818587611c46565b979650505050505050565b602081526000611cb5602083018486611c46565b949350505050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611cf0908301846117bd565b9695505050505050565b600060208284031215611d0c57600080fd5b815161172981611766565b600060208284031215611d2957600080fd5b815161172981611815565b6001600160a01b0383168152604060208201819052600090611cb5908301846117bd565b60008251611d6a818460208701611799565b9190910192915050565b8082018082111561053857634e487b7160e01b600052601160045260246000fd5b600060208284031215611da757600080fd5b5051919050565b600080600060608486031215611dc357600080fd5b835192506020840151611dd581611815565b8092505060408401519050925092509256fe60a060405234801561001057600080fd5b506040516104f93803806104f983398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b60805161046f61008a60003960006058015261046f6000f3fe60806040526004361061001e5760003560e01c8063d1f5789414610028575b61002661003b565b005b61002661003636600461033a565b61004d565b61004b6100466100d9565b610111565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146100b35760405162461bcd60e51b81526020600482015260066024820152650216b696d61760d41b60448201526064015b60405180910390fd5b60006100bd6100d9565b6001600160a01b0316036100d5576100d58282610135565b5050565b600061010c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015610130573d6000f35b3d6000fd5b61013e82610190565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610188576101838282610207565b505050565b6100d561027d565b806001600160a01b03163b6000036101c657604051634c9c8ce360e01b81526001600160a01b03821660048201526024016100aa565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610224919061040a565b600060405180830381855af49150503d806000811461025f576040519150601f19603f3d011682016040523d82523d6000602084013e610264565b606091505b509150915061027485838361029c565b95945050505050565b341561004b5760405163b398979f60e01b815260040160405180910390fd5b6060826102b1576102ac826102fb565b6102f4565b81511580156102c857506001600160a01b0384163b155b156102f157604051639996b31560e01b81526001600160a01b03851660048201526024016100aa565b50805b9392505050565b80511561030b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561034d57600080fd5b82356001600160a01b038116811461036457600080fd5b9150602083013567ffffffffffffffff8082111561038157600080fd5b818501915085601f83011261039557600080fd5b8135818111156103a7576103a7610324565b604051601f8201601f19908116603f011681019083821181831017156103cf576103cf610324565b816040528281528860208487010111156103e857600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000825160005b8181101561042b5760208186018101518583015201610411565b50600092019182525091905056fea2646970667358221220d7d36d3d943bb5535c93e093b5c016f6bb9b948b6d00fd0068ee903fb4b4dbfb64736f6c63430008170033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220438b0639c91c57e22b22ecf3b92d62f5f5d4a41920c91ba4dd6d9f60f8f8f05e64736f6c63430008170033","gas_used":1804754,"gas_limit":2527516,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x4658c6373a1e066c35815a3e4061571216c48d7a","nonce":4,"gas_used":2002944},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x1e9000","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0x19a0946b2bbb7c32f4134a97f2097f20e1b08ae2bb2907d0a1a692a17546107e","block_number":6},{"info":{"transaction_hash":"0x5bb233ca9f07ca0544ca2acb755d7e1575ca14bff851dd9a0899688eb9900ba5","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x51945447000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164ac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000026f730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0","gas_used":236555,"gas_limit":357241,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0x456e325fdccc143bea0ecbcf45545e2065f6518b","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x51945447000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164ac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000026f730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0","gas_used":233781,"gas_limit":348970,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":1,"children":[3,5],"idx":2,"trace":{"depth":2,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0x9fe46736679d2d9a65f0992f2272de9f3c7fa6e0","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x51945447000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164ac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000026f730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0","gas_used":228733,"gas_limit":338595,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0},{"Call":1}]},{"parent":2,"children":[4],"idx":3,"trace":{"depth":3,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"STATICCALL","value":"0x0","data":"0x6352211e0000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","gas_used":9543,"gas_limit":329244,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":3,"children":[],"idx":4,"trace":{"depth":4,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x4658c6373a1e066c35815a3e4061571216c48d7a","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0x6352211e0000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","gas_used":4650,"gas_limit":319324,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":2,"children":[6],"idx":5,"trace":{"depth":3,"success":true,"caller":"0x02dd7fb5ca377b1a6e2960eb139af390a24d28fa","address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000026f730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0","gas_used":213793,"gas_limit":319130,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":5,"children":[7,9],"idx":6,"trace":{"depth":4,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x4658c6373a1e066c35815a3e4061571216c48d7a","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000140000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000026f730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0","gas_used":213343,"gas_limit":313741,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b1","0x0000000000000000000000000000000000000000000000000000000000000000","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","0x2867a984f1e2b720729197f36300671df53c43d6d5771f793e945de13f3a5a92"],"data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000026f73000000000000000000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null}},{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd"],"data":"0x"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0},{"Call":0},{"Call":1},{"Log":1}]},{"parent":6,"children":[8],"idx":7,"trace":{"depth":5,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x000000006551c19487814612e58fe06813775758","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x8a54c52f000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518bdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd0000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669ddeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","output":"0x000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0","gas_used":72721,"gas_limit":293986,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","0x000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b","0x000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd"],"data":"0x000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0deeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd0000000000000000000000000000000000000000000000000000000000007a69"},"decoded":{"name":null,"params":null}}],"ordering":[{"Call":0},{"Log":0}]},{"parent":7,"children":[],"idx":8,"trace":{"depth":6,"success":true,"caller":"0x000000006551c19487814612e58fe06813775758","address":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x3d60ad80600a3d3981f3363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf3deeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd0000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669ddeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","output":"0x363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf3deeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd0000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669ddeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","gas_used":34655,"gas_limit":254575,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":6,"children":[10],"idx":9,"trace":{"depth":5,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xd1f57894000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":74286,"gas_limit":179424,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":9,"children":[11],"idx":10,"trace":{"depth":6,"success":true,"caller":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","address":"0x456e325fdccc143bea0ecbcf45545e2065f6518b","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xd1f57894000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc900000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000024c4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d00000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":74093,"gas_limit":176463,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9"],"data":"0x"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0},{"Call":0}]},{"parent":10,"children":[],"idx":11,"trace":{"depth":7,"success":true,"caller":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xc4d66de8000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","output":"0x","gas_used":46446,"gas_limit":146838,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0","nonce":6,"gas_used":260983},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x3fb77","logs":[{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b1","0x0000000000000000000000000000000000000000000000000000000000000000","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","0x2867a984f1e2b720729197f36300671df53c43d6d5771f793e945de13f3a5a92"],"data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000026f73000000000000000000000000000000000000000000000000000000000000"},{"address":"0x000000006551c19487814612e58fe06813775758","topics":["0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","0x000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b","0x000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd"],"data":"0x000000000000000000000000f5fab379eb87599d7b5babeddefe6efdec6164b0deeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd0000000000000000000000000000000000000000000000000000000000007a69"},{"address":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000cf7ed3acca5a467e9e704c703e8d87f634fb0fc9"],"data":"0x"},{"address":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"],"data":"0x0000000000000000000000000000000000000000000000000000000000000001"},{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd"],"data":"0x"}],"logsBloom":"0x0001000000000000008000000000000c40000000000000000000000400000000000000000000008000000000040000000000000000000000000000000000000880000000000000000000000800000200000000000000800000000420000000000000000002010000000000010000080000000000000000000000001000000000000000000000200040080000000000000000000000008000000000000000000000000000100000000000000000200000000000000000000000000000000080000000006280000020000000000000000004000000209400000000000000002000000000000040000000c000000000000000800000000000000000000000400108"},"block_hash":"0x1024f35cbf210a3f204bd3cd7d5f3b0123a9286323829f6df4bb268ecb144fd4","block_number":8},{"info":{"transaction_hash":"0xc992ac1ec99813fc3aa8b48d2af4c0c0e7262404ff83cc8e2932fd44d9d85f20","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0x4e59b44847b379578588920ca78fbf26c0b4956c","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0x4e59b44847b379578588920ca78fbf26c0b4956c","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x0000000000000000000000000000000000000000fd8eb4e1dca713016c518e31608060405234801561001057600080fd5b5061023b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033","output":"0x000000006551c19487814612e58fe06813775758","gas_used":146706,"gas_limit":214198,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[],"idx":1,"trace":{"depth":1,"success":true,"caller":"0x4e59b44847b379578588920ca78fbf26c0b4956c","address":"0x000000006551c19487814612e58fe06813775758","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x608060405234801561001057600080fd5b5061023b806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033","output":"0x608060405234801561001057600080fd5b50600436106100365760003560e01c8063246a00211461003b5780638a54c52f1461006a575b600080fd5b61004e6100493660046101b7565b61007d565b6040516001600160a01b03909116815260200160405180910390f35b61004e6100783660046101b7565b6100e1565b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b60015284601552605560002060601b60601c60005260206000f35b600060806024608c376e5af43d82803e903d91602b57fd5bf3606c5285605d52733d60ad80600a3d3981f3363d3d373d3d3d363d7360495260ff60005360b76055206035523060601b600152846015526055600020803b61018b578560b760556000f580610157576320188a596000526004601cfd5b80606c52508284887f79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf887226060606ca46020606cf35b8060601b60601c60005260206000f35b80356001600160a01b03811681146101b257600080fd5b919050565b600080600080600060a086880312156101cf57600080fd5b6101d88661019b565b945060208601359350604086013592506101f46060870161019b565b94979396509194608001359291505056fea2646970667358221220ea2fe53af507453c64dd7c1db05549fa47a298dfb825d6d11e1689856135f16764736f6c63430008110033","gas_used":114359,"gas_limit":179053,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]}],"exit":"Return","out":"0x000000006551c19487814612e58fe06813775758","nonce":1,"gas_used":177170},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x2b412","logs":[],"logsBloom":"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"},"block_hash":"0xa6dfe52395997dd2c7a9ee566f158918839da0393bb46b8bec6651b30fbe2302","block_number":3},{"info":{"transaction_hash":"0x9fb16aa913dabe51928da3f77ab1d992f700662407063becc390f171c004302b","transaction_index":0,"from":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","to":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","contract_address":null,"traces":[{"parent":null,"children":[1],"idx":0,"trace":{"depth":0,"success":true,"caller":"0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266","address":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000009637261736874657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","gas_used":187496,"gas_limit":267674,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":0,"children":[2],"idx":1,"trace":{"depth":1,"success":true,"caller":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","address":"0x456e325fdccc143bea0ecbcf45545e2065f6518b","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000009637261736874657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","gas_used":184776,"gas_limit":260850,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":1,"children":[3],"idx":2,"trace":{"depth":2,"success":true,"caller":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","address":"0xcf7ed3acca5a467e9e704c703e8d87f634fb0fc9","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000009637261736874657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","gas_used":179782,"gas_limit":251899,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":2,"children":[4],"idx":3,"trace":{"depth":3,"success":true,"caller":"0xf5fab379eb87599d7b5babeddefe6efdec6164b0","address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000009637261736874657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","gas_used":172800,"gas_limit":241426,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":3,"children":[5,7],"idx":4,"trace":{"depth":4,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x4658c6373a1e066c35815a3e4061571216c48d7a","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xac0c10af000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001000000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e00000000000000000000000000000000000000000000000000000000000000009637261736874657374000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","output":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","gas_used":167862,"gas_limit":232834,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b1","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","0x63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4","0xc50f8ec9fa07f712dbfd7d9be3ca44c7f0dab30a118db944dbce43fdd5c576bb"],"data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000096372617368746573740000000000000000000000000000000000000000000000"},"decoded":{"name":null,"params":null}},{"raw_log":{"topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4"],"data":"0x"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0},{"Call":0},{"Call":1},{"Log":1}]},{"parent":4,"children":[6],"idx":5,"trace":{"depth":5,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0x000000006551c19487814612e58fe06813775758","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0x8a54c52f000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e40000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4","output":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","gas_used":72721,"gas_limit":212386,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","0x000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b","0x000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","0x63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4"],"data":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e963b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e40000000000000000000000000000000000000000000000000000000000007a69"},"decoded":{"name":null,"params":null}}],"ordering":[{"Call":0},{"Log":0}]},{"parent":5,"children":[],"idx":6,"trace":{"depth":6,"success":true,"caller":"0x000000006551c19487814612e58fe06813775758","address":"0xf7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","maybe_precompile":false,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CREATE2","value":"0x0","data":"0x3d60ad80600a3d3981f3363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf363b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e40000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4","output":"0x363d3d373d3d3d363d73456e325fdccc143bea0ecbcf45545e2065f6518b5af43d82803e903d91602b57fd5bf363b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e40000000000000000000000000000000000000000000000000000000000007a69000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4","gas_used":34655,"gas_limit":174250,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[]},{"parent":4,"children":[8],"idx":7,"trace":{"depth":5,"success":true,"caller":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","address":"0xf7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"CALL","value":"0x0","data":"0xd1f578940000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":27097,"gas_limit":98099,"status":"Return","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[],"ordering":[{"Call":0}]},{"parent":7,"children":[],"idx":8,"trace":{"depth":6,"success":true,"caller":"0xf7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","address":"0x456e325fdccc143bea0ecbcf45545e2065f6518b","maybe_precompile":null,"selfdestruct_refund_target":null,"selfdestruct_transferred_value":null,"kind":"DELEGATECALL","value":"0x0","data":"0xd1f578940000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000","output":"0x","gas_used":26916,"gas_limit":96421,"status":"Stop","steps":[],"decoded":{"label":null,"return_data":null,"call_data":null}},"logs":[{"raw_log":{"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},"decoded":{"name":null,"params":null}}],"ordering":[{"Log":0}]}],"exit":"Return","out":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","nonce":8,"gas_used":210348},"receipt":{"type":"0x2","status":"0x1","cumulativeGasUsed":"0x335ac","logs":[{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xb59dae5eda69178326b6517bb1aa33e208bf2ac347e30d3a5daf0ecb6249f7b1","0xdeeac81ae11b64e7cab86d089c306e5d223552a630f02633ce170d2786ff1bbd","0x63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4","0xc50f8ec9fa07f712dbfd7d9be3ca44c7f0dab30a118db944dbce43fdd5c576bb"],"data":"0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000096372617368746573740000000000000000000000000000000000000000000000"},{"address":"0x000000006551c19487814612e58fe06813775758","topics":["0x79f19b3655ee38b1ce526556b7731a20c8f218fbda4a3990b6cc4172fdf88722","0x000000000000000000000000456e325fdccc143bea0ecbcf45545e2065f6518b","0x000000000000000000000000ece71a05b36ca55b895427cd9a440eef7cf3669d","0x63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4"],"data":"0x000000000000000000000000f7a5d97e1ff22d3bb60bc6f385fd90989d2964e963b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e40000000000000000000000000000000000000000000000000000000000007a69"},{"address":"0xf7a5d97e1ff22d3bb60bc6f385fd90989d2964e9","topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000009fe46736679d2d9a65f0992f2272de9f3c7fa6e0"],"data":"0x"},{"address":"0xece71a05b36ca55b895427cd9a440eef7cf3669d","topics":["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266","0x63b0f6e449a1a5b519c3c1a3d0a947799dd2fe6d852423a5e9e287ad5dc211e4"],"data":"0x"}],"logsBloom":"0x0001000000000000008000000000000c400000000000000000000004000000000000000000000000000400000480000000400000000000000000000000000000800000000000000000000008000002000000000000008000000004200000400000001000021100000100000100000800000000000000080000000010000000000000000000006000400000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000022800000200000000000000000000000002890000000000000000020000000000000000000004000000000000000000000000000000000000001404108"},"block_hash":"0x401d66b8486fff5e3687d944fc57036545544c4bdfc06665a8846b5dcd0ff355","block_number":10}]} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 0edeccdf..dac74098 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,6 +7,7 @@ pub mod connect; pub mod dev_ui; pub mod inject_message; pub mod new; +pub mod publish; pub mod remove_package; pub mod reset_cache; pub mod run_tests; diff --git a/src/main.rs b/src/main.rs index b3e16ae1..6b525b8c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,8 +17,8 @@ use tracing_subscriber::{ use kit::{ boot_fake_node, boot_real_node, build, build_start_package, chain, connect, dev_ui, - inject_message, new, remove_package, reset_cache, run_tests, setup, start_package, update, - view_api, KIT_LOG_PATH_DEFAULT, + inject_message, new, publish, remove_package, reset_cache, run_tests, setup, start_package, + update, view_api, KIT_LOG_PATH_DEFAULT, }; const MAX_REMOTE_VALUES: usize = 3; @@ -36,6 +36,11 @@ struct Commit { sha: String, } +fn parse_u128_with_underscores(s: &str) -> Result { + let clean_string = s.replace('_', ""); + clean_string.parse::().map_err(|_| "Invalid number format") +} + async fn get_latest_commit_sha_from_branch( owner: &str, repo: &str, @@ -330,6 +335,39 @@ async fn execute( *ui, ) } + Some(("publish", matches)) => { + let package_dir = PathBuf::from(matches.get_one::("DIR").unwrap()); + let metadata_uri = matches.get_one::("URI").unwrap(); + let keystore_path = matches + .get_one::("PATH") + .and_then(|kp| Some(PathBuf::from(kp))); + let ledger = matches.get_one::("LEDGER").unwrap(); + let trezor = matches.get_one::("TREZOR").unwrap(); + let rpc_uri = matches.get_one::("RPC_URI").unwrap(); + let real = matches.get_one::("REAL").unwrap(); + let unpublish = matches.get_one::("UNPUBLISH").unwrap(); + let gas_limit = matches.get_one::("GAS_LIMIT").unwrap(); + let max_priority_fee = matches + .get_one::("MAX_PRIORITY_FEE_PER_GAS") + .and_then(|mpf| Some(mpf.clone())); + let max_fee_per_gas = matches + .get_one::("MAX_FEE_PER_GAS") + .and_then(|mfpg| Some(mfpg.clone())); + + publish::execute( + &package_dir, + metadata_uri, + keystore_path, + ledger, + trezor, + rpc_uri, + real, + unpublish, + *gas_limit, + max_priority_fee, + max_fee_per_gas, + ).await + } Some(("remove-package", matches)) => { let package_name = matches .get_one::("PACKAGE") @@ -483,7 +521,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .arg(Arg::new("RPC_ENDPOINT") .action(ArgAction::Set) .long("rpc") - .help("Ethereum RPC endpoint (wss://)") + .help("Ethereum Optimism mainnet RPC endpoint (wss://)") .required(false) ) .arg(Arg::new("PERSIST") @@ -560,7 +598,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .arg(Arg::new("RPC_ENDPOINT") .action(ArgAction::Set) .long("rpc") - .help("Ethereum RPC endpoint (wss://)") + .help("Ethereum Optimism mainnet RPC endpoint (wss://)") .required(false) ) //.arg(Arg::new("PASSWORD") // TODO: with develop 0.8.0 @@ -777,7 +815,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::SetTrue) .short('d') .long("disconnect") - .help("If set, disconnect an existing tunnel (default: connect a new tunnel)") + .help("If set, disconnect an existing tunnel [default: connect a new tunnel]") .required(false) ) .arg(Arg::new("HOST") @@ -850,7 +888,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .action(ArgAction::Set) .short('n') .long("node") - .help("Node ID (default: our)") + .help("Node ID [default: our]") .required(false) ) .arg(Arg::new("PATH") @@ -911,6 +949,87 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .required(false) ) ) + .subcommand(Command::new("publish") + .about("Publish or update a package") + .visible_alias("p") + .arg(Arg::new("DIR") + .action(ArgAction::Set) + .help("The package directory to publish") + .default_value(current_dir) + ) + .arg(Arg::new("PATH") + .action(ArgAction::Set) + .short('k') + .long("keystore-path") + .help("Path to private key keystore (choose 1 of `k`, `l`, `t`)") // TODO: add link to docs? + .required(false) + ) + .arg(Arg::new("LEDGER") + .action(ArgAction::SetTrue) + .short('l') + .long("ledger") + .help("Use Ledger private key (choose 1 of `k`, `l`, `t`)") + .required(false) + ) + .arg(Arg::new("TREZOR") + .action(ArgAction::SetTrue) + .short('t') + .long("trezor") + .help("Use Trezor private key (choose 1 of `k`, `l`, `t`)") + .required(false) + ) + .arg(Arg::new("URI") + .action(ArgAction::Set) + .short('u') + .long("metadata-uri") + .help("URI where metadata lives") + .required(true) + ) + .arg(Arg::new("RPC_URI") + .action(ArgAction::Set) + .short('r') + .long("rpc") + .help("Ethereum Optimism mainnet RPC endpoint (wss://)") + .required(true) + ) + .arg(Arg::new("REAL") + .action(ArgAction::SetTrue) + .short('e') + .long("real") + .help("If set, deploy to real network [default: fake node]") + .required(false) + ) + .arg(Arg::new("UNPUBLISH") + .action(ArgAction::SetTrue) + .long("unpublish") + .help("If set, unpublish existing published package [default: publish a package]") + ) + .arg(Arg::new("GAS_LIMIT") + .action(ArgAction::Set) + .short('g') + .long("gas-limit") + .help("The ETH transaction gas limit") + .default_value("1_000_000") + .value_parser(clap::builder::ValueParser::new(parse_u128_with_underscores)) + .required(false) + ) + .arg(Arg::new("MAX_PRIORITY_FEE_PER_GAS") + .action(ArgAction::Set) + .short('p') + .long("priority-fee") + .help("The ETH transaction max priority fee per gas [default: estimated from network conditions]") + .value_parser(clap::builder::ValueParser::new(parse_u128_with_underscores)) + .required(false) + ) + .arg(Arg::new("MAX_FEE_PER_GAS") + .action(ArgAction::Set) + .short('f') + .long("fee-per-gas") + .help("The ETH transaction max fee per gas [default: estimated from network conditions]") + .value_parser(clap::builder::ValueParser::new(parse_u128_with_underscores)) + .required(false) + ) + ) .subcommand(Command::new("remove-package") .about("Remove a running package from a node") .visible_alias("r") @@ -1000,7 +1119,7 @@ async fn make_app(current_dir: &std::ffi::OsString) -> Result { .visible_alias("v") .arg(Arg::new("PACKAGE_ID") .action(ArgAction::Set) - .help("Get API of this package (default: list all APIs)") + .help("Get API of this package [default: list all APIs]") .required(false) ) .arg(Arg::new("NODE_PORT") diff --git a/src/new/templates/rust/no-ui/chat/pkg/scripts.json b/src/new/templates/rust/no-ui/chat/pkg/scripts.json index e89b6733..1c1e9fbe 100644 --- a/src/new/templates/rust/no-ui/chat/pkg/scripts.json +++ b/src/new/templates/rust/no-ui/chat/pkg/scripts.json @@ -3,11 +3,10 @@ "root": false, "public": false, "request_networking": false, - "request_capabilities": [ - "chat:chat:template.os" - ], + "request_capabilities": [], "grant_capabilities": [ "chat:chat:template.os" - ] + ], + "wit_version": 0 } } diff --git a/src/new/templates/rust/no-ui/fibonacci/pkg/scripts.json b/src/new/templates/rust/no-ui/fibonacci/pkg/scripts.json index 521fcac8..28a7d99b 100644 --- a/src/new/templates/rust/no-ui/fibonacci/pkg/scripts.json +++ b/src/new/templates/rust/no-ui/fibonacci/pkg/scripts.json @@ -3,11 +3,10 @@ "root": false, "public": false, "request_networking": false, - "request_capabilities": [ - "fibonacci:fibonacci:template.os" - ], + "request_capabilities": [], "grant_capabilities": [ "fibonacci:fibonacci:template.os" - ] + ], + "wit_version": 0 } } diff --git a/src/new/templates/rust/no-ui/file_transfer/pkg/scripts.json b/src/new/templates/rust/no-ui/file_transfer/pkg/scripts.json index 381b699e..957a6d60 100644 --- a/src/new/templates/rust/no-ui/file_transfer/pkg/scripts.json +++ b/src/new/templates/rust/no-ui/file_transfer/pkg/scripts.json @@ -3,9 +3,7 @@ "root": false, "public": false, "request_networking": false, - "request_capabilities": [ - "file_transfer:file_transfer:template.os" - ], + "request_capabilities": [], "grant_capabilities": [ "file_transfer:file_transfer:template.os" ], @@ -15,9 +13,7 @@ "root": false, "public": false, "request_networking": true, - "request_capabilities": [ - "file_transfer:file_transfer:template.os" - ], + "request_capabilities": [], "grant_capabilities": [ "file_transfer:file_transfer:template.os" ], diff --git a/src/publish/mod.rs b/src/publish/mod.rs new file mode 100644 index 00000000..15d2e992 --- /dev/null +++ b/src/publish/mod.rs @@ -0,0 +1,412 @@ +use std::path::{Path, PathBuf}; +use std::str::FromStr; + +use alloy::{ + network::{eip2718::Encodable2718, EthereumWallet, TransactionBuilder}, + primitives::{keccak256, Address, Bytes, B256, U256}, + providers::{Provider, ProviderBuilder, RootProvider}, + pubsub::PubSubFrontend, + rpc::{ + client::WsConnect, + types::eth::{TransactionInput, TransactionRequest}, + }, + signers::{ledger, local::LocalSigner, trezor}, +}; +use alloy_sol_macro::sol; +use alloy_sol_types::SolCall; +use color_eyre::eyre::{eyre, Result}; +use fs_err as fs; +use tracing::{info, instrument}; + +use kinode_process_lib::kernel_types::Erc721Metadata; + +use crate::build::{download_file, make_pkg_publisher, read_metadata, zip_pkg}; + +sol! { + function mint ( + address who, + bytes calldata label, + bytes calldata initialization, + bytes calldata erc721Data, + address implementation + ) external returns ( + address tba + ); + + function get ( + bytes32 node + ) external view returns ( + address tba, + address owner, + bytes data, + ); + + function note ( + bytes calldata note, + bytes calldata data + ) external returns ( + bytes32 notenode + ); + + // tba account + function execute( + address to, + uint256 value, + bytes calldata data, + uint8 operation + ) external payable returns (bytes memory returnData); + + + struct Call { + address target; + bytes callData; + } + + function aggregate( + Call[] calldata calls + ) external payable returns (uint256 blockNumber, bytes[] memory returnData); +} + +const FAKE_KIMAP_ADDRESS: &str = "0xEce71a05B36CA55B895427cD9a440eEF7Cf3669D"; +const FAKE_CHAIN_ID: u64 = 31337; + +const REAL_KIMAP_ADDRESS: &str = "0xcA92476B2483aBD5D82AEBF0b56701Bb2e9be658"; +const MULTICALL_ADDRESS: &str = "0xcA11bde05977b3631167028862bE2a173976CA11"; +const KINO_ACCOUNT_IMPL: &str = "0x38766C70a4FB2f23137D9251a1aA12b1143fC716"; +const REAL_CHAIN_ID: u64 = 10; + +#[instrument(level = "trace", skip_all)] +fn calculate_metadata_hash(package_dir: &Path) -> Result { + let metadata_text = fs::read_to_string(package_dir.join("metadata.json"))?; + let hash = keccak256(metadata_text.as_bytes()); + Ok(format!("0x{}", hex::encode(hash))) +} + +#[instrument(level = "trace", skip_all)] +fn read_keystore(keystore_path: &Path) -> Result<(Address, EthereumWallet)> { + let password = rpassword::prompt_password("Enter password: ")?; + let signer = LocalSigner::decrypt_keystore(keystore_path, password)?; + let address = signer.address(); + let wallet = EthereumWallet::from(signer); + Ok((address, wallet)) +} + +#[instrument(level = "trace", skip_all)] +async fn read_ledger(chain_id: u64) -> Result<(Address, EthereumWallet)> { + let signer = ledger::LedgerSigner::new( + ledger::HDPath::LedgerLive(0), + Some(chain_id), + ).await?; + let address = signer.get_address().await?; + let wallet = EthereumWallet::from(signer); + Ok((address, wallet)) +} + +#[instrument(level = "trace", skip_all)] +async fn read_trezor(chain_id: u64) -> Result<(Address, EthereumWallet)> { + let signer = trezor::TrezorSigner::new( + trezor::HDPath::TrezorLive(0), + Some(chain_id), + ).await?; + let address = signer.get_address().await?; + let wallet = EthereumWallet::from(signer); + Ok((address, wallet)) +} + +fn namehash(name: &str) -> [u8; 32] { + let mut node = B256::default(); + + if name.is_empty() { + return node.into(); + } + let mut labels: Vec<&str> = name.split(".").collect(); + labels.reverse(); + for label in labels.iter() { + let label_hash = keccak256(label.as_bytes()); + node = keccak256([node, label_hash].concat()); + } + node.into() +} + +#[instrument(level = "trace", skip_all)] +async fn check_remote_metadata(metadata: &Erc721Metadata, metadata_uri: &str, package_dir: &Path) -> Result { + let remote_metadata_dir = PathBuf::from(format!( + "/tmp/kinode-kit-cache/{}", + metadata.name.as_ref().unwrap(), + )); + if !remote_metadata_dir.exists() { + fs::create_dir_all(&remote_metadata_dir)?; + } + let remote_metadata_path = remote_metadata_dir.join("metadata.json"); + download_file(metadata_uri, &remote_metadata_path).await?; + let remote_metadata = read_metadata(&remote_metadata_dir)?; + + // TODO: add derive(PartialEq) to Erc721 + if serde_json::to_string(&metadata)? != serde_json::to_string(&remote_metadata)? { + let local_path = package_dir + .join("metadata.json") + .canonicalize() + .ok() + .and_then(|p| p.to_str().map(|s| s.to_string())) + .unwrap_or_default(); + return Err(eyre!( + "\x1B]8;;file://{}\x1B\\Local\x1B]8;;\x1B\\ and \x1B]8;;{}\x1B\\remote\x1B]8;;\x1B\\ metadata do not match", + local_path, + metadata_uri, + )); + } + let metadata_hash = calculate_metadata_hash(package_dir)?; + Ok(metadata_hash) +} + +#[instrument(level = "trace", skip_all)] +fn check_pkg_hash(metadata: &Erc721Metadata, package_dir: &Path, metadata_uri: &str) -> Result<()> { + let pkg_publisher = make_pkg_publisher(&metadata); + let (_, pkg_hash) = zip_pkg(package_dir, &pkg_publisher)?; + let current_version = &metadata.properties.current_version; + let expected_pkg_hash = metadata + .properties + .code_hashes + .get(current_version) + .cloned() + .unwrap_or_default(); + if pkg_hash != expected_pkg_hash { + return Err(eyre!( + "Zipped pkg hashes to '{}' not '{}' as expected for current_version {} based on published metadata at \x1B]8;;{}\x1B\\{}\x1B]8;;\x1B\\", + pkg_hash, + expected_pkg_hash, + current_version, + metadata_uri, + metadata_uri, + )); + } + Ok(()) +} + +#[instrument(level = "trace", skip_all)] +fn make_multicall( + metadata_uri: &str, + metadata_hash: &str, + kimap: Address, + multicall_address: Address, +) -> Vec { + // Create metadata calls + let metadata_uri_call = noteCall { + note: "~metadata-uri".into(), + data: metadata_uri.to_string().into(), + } + .abi_encode(); + let metadata_hash_call = noteCall { + note: "~metadata-hash".into(), + data: metadata_hash.to_string().into(), + } + .abi_encode(); + + let calls = vec![ + Call { + target: kimap, + callData: metadata_uri_call.into(), + }, + Call { + target: kimap, + callData: metadata_hash_call.into(), + }, + ]; + + let notes_multicall = aggregateCall { calls }.abi_encode(); + + let init_call = executeCall { + to: multicall_address, + value: U256::from(0), + data: notes_multicall.into(), + operation: 1, + } + .abi_encode(); + + init_call +} + +#[instrument(level = "trace", skip_all)] +async fn kimap_get( + node: &str, + kimap: Address, + provider: &RootProvider, +) -> Result<(Address, Address, Option)> { + let node = namehash(&node); + let get_tx = TransactionRequest::default().to(kimap).input( + getCall { + node: node.into(), + } + .abi_encode() + .into(), + ); + + let get_call = provider.call(&get_tx).await?; + let decoded = getCall::abi_decode_returns(&get_call, false)?; + + let tba = decoded.tba; + let owner = decoded.owner; + let data = if decoded.data == Bytes::default() { + None + } else { + Some(decoded.data) + }; + Ok((tba, owner, data)) +} + +#[instrument(level = "trace", skip_all)] +async fn prepare_kimap_put( + multicall: Vec, + name: String, + publisher: &str, + kimap: Address, + provider: &RootProvider, + wallet_address: Address, + kino_account_impl: Address, +) -> Result<(Address, Vec)> { + // if app_tba exists, update existing state; + // else mint it & add new state + let (app_tba, owner, _) = kimap_get( + &format!("{}.{}", name, publisher), + kimap, + &provider, + ).await?; + let is_update = app_tba != Address::default() && owner == wallet_address; + + let (to, call) = if is_update { + ( + app_tba, + multicall, + ) + } else { + let (publisher_tba, _, _) = kimap_get( + &publisher, + kimap, + &provider, + ).await?; + let mint_call = mintCall { + who: wallet_address, + label: name.into(), + initialization: multicall.into(), + erc721Data: Bytes::default(), + implementation: kino_account_impl, + } + .abi_encode(); + let call = executeCall { + to: kimap, + value: U256::from(0), + data: mint_call.into(), + operation: 0, + } + .abi_encode(); + ( + publisher_tba, + call, + ) + }; + Ok((to, call)) +} + +#[instrument(level = "trace", skip_all)] +pub async fn execute( + package_dir: &Path, + metadata_uri: &str, + keystore_path: Option, + ledger: &bool, + trezor: &bool, + rpc_uri: &str, + real: &bool, + unpublish: &bool, + gas_limit: u128, + max_priority_fee_per_gas: Option, + max_fee_per_gas: Option, +) -> Result<()> { + if !package_dir.join("pkg").exists() { + return Err(eyre!( + "Required `pkg/` dir not found within given input dir {:?} (or cwd, if none given). Please re-run targeting a package.", + package_dir, + )); + } + + let chain_id = if *real { REAL_CHAIN_ID } else { FAKE_CHAIN_ID }; + let (wallet_address, wallet) = match (keystore_path, *ledger, *trezor) { + (Some(ref kp), false, false) => read_keystore(kp)?, + (None, true, false) => read_ledger(chain_id).await?, + (None, false, true) => read_trezor(chain_id).await?, + _ => return Err(eyre!("Must supply one and only one of `--keystore_path`, `--ledger`, or `--trezor`")), + }; + + let metadata = read_metadata(package_dir)?; + + let metadata_hash = check_remote_metadata(&metadata, metadata_uri, package_dir).await?; + check_pkg_hash(&metadata, package_dir, metadata_uri)?; + + let name = metadata.name.clone().unwrap(); + let publisher = metadata.properties.publisher.clone(); + + let ws = WsConnect::new(rpc_uri); + let provider: RootProvider = ProviderBuilder::default().on_ws(ws).await?; + + let kimap = Address::from_str( + if *real { + REAL_KIMAP_ADDRESS + } else { + FAKE_KIMAP_ADDRESS + } + )?; + let multicall_address = Address::from_str(MULTICALL_ADDRESS)?; + let kino_account_impl = Address::from_str(KINO_ACCOUNT_IMPL)?; + + let (to, call) = if *unpublish { + let app_node = format!("{}.{}", name, publisher); + let (app_tba, owner, _) = kimap_get( + &app_node, + kimap, + &provider, + ).await?; + let exists = app_tba != Address::default() && owner == wallet_address; + if !exists { + return Err(eyre!("Can't find {app_node} to unpublish.")); + } + + let multicall = make_multicall("", "", kimap, multicall_address); + (app_tba, multicall) + } else { + let multicall = make_multicall(metadata_uri, &metadata_hash, kimap, multicall_address); + + prepare_kimap_put( + multicall, + name.clone(), + &publisher, + kimap, + &provider, + wallet_address, + kino_account_impl, + ).await? + }; + + let nonce = provider.get_transaction_count(wallet_address).await?; + let gas_price = provider.get_gas_price().await?; + + let tx = TransactionRequest::default() + .to(to) + .input(TransactionInput::new(call.into())) + .nonce(nonce) + .with_chain_id(chain_id) + .with_gas_limit(gas_limit) + .with_max_priority_fee_per_gas(max_priority_fee_per_gas.unwrap_or_else(|| gas_price)) + .with_max_fee_per_gas(max_fee_per_gas.unwrap_or_else(|| gas_price)); + + let tx_envelope = tx.build(&wallet).await?; + let tx_encoded = tx_envelope.encoded_2718(); + let tx = provider.send_raw_transaction(&tx_encoded).await?; + + let tx_hash = format!("{:?}", tx.tx_hash()); + let link = format!( + "\x1B]8;;https://optimistic.etherscan.io/tx/{}\x1B\\{}\x1B]8;;\x1B\\", + tx_hash, + tx_hash, + ); + info!("{} {name} tx sent: {link}", if *unpublish { "unpublish" } else { "publish" }); + Ok(()) +} diff --git a/src/remove_package/mod.rs b/src/remove_package/mod.rs index 2dbe2de9..e3303e84 100644 --- a/src/remove_package/mod.rs +++ b/src/remove_package/mod.rs @@ -8,7 +8,6 @@ use tracing::{info, instrument}; use kinode_process_lib::kernel_types::Erc721Metadata; use crate::inject_message; -use crate::start_package::interact_with_package; #[instrument(level = "trace", skip_all)] pub async fn execute( @@ -32,7 +31,19 @@ pub async fn execute( }; // Create and send uninstall request - let uninstall_request = interact_with_package("Uninstall", None, &package_name, &publisher)?; + let body = serde_json::json!({ + "Uninstall": { + "package_id": {"package_name": package_name, "publisher_node": publisher}, + } + }); + let uninstall_request = inject_message::make_message( + "main:app_store:sys", + Some(15), + &body.to_string(), + None, + None, + None, + )?; let response = inject_message::send_request(url, uninstall_request).await?; if response.status() != 200 { process::exit(1); diff --git a/src/run_tests/mod.rs b/src/run_tests/mod.rs index 4a96c944..83556354 100644 --- a/src/run_tests/mod.rs +++ b/src/run_tests/mod.rs @@ -1,5 +1,5 @@ -use std::process::Command; use std::path::{Path, PathBuf}; +use std::process::Command; use std::sync::Arc; use color_eyre::{eyre::eyre, Result, Section}; @@ -65,19 +65,26 @@ fn load_config(config_path: &Path) -> Result<(PathBuf, Config)> { } else { let possible_config_path = config_path.join("test").join("tests.toml"); if !possible_config_path.exists() { - return Err(eyre!("Could not find `tests.toml within given path {config_path:?}")); + return Err(eyre!( + "Could not find `tests.toml within given path {config_path:?}" + )); } if possible_config_path.is_file() { // case 3 possible_config_path } else { - return Err(eyre!("Could not find `tests.toml within given path {config_path:?}")); + return Err(eyre!( + "Could not find `tests.toml within given path {config_path:?}" + )); } } }; let content = fs::read_to_string(&config_path)?; - Ok((config_path, toml::from_str::(&content)?.expand_home_paths())) + Ok(( + config_path, + toml::from_str::(&content)?.expand_home_paths(), + )) } fn get_basename(file_path: &Path) -> Option<&str> { @@ -110,7 +117,7 @@ fn make_node_names(nodes: Vec) -> Result> { get_basename(&node.home) .and_then(|base| Some(base.to_string())) .and_then(|mut base| { - if !base.ends_with(".dev") { + if !base.contains(".") { base.push_str(".dev"); } Some(base) @@ -198,13 +205,8 @@ async fn boot_nodes( args.extend_from_slice(&["--password".into(), password.clone()]); }; - // TODO: change this to be less restrictive; currently leads to weirdness - // like an input of `fake.os` -> `fake.os.dev`. - // The reason we need it for now is that non-`.dev` nodes are not currently - // addressable. - // Once they are addressable, change this to, perhaps, `!name.contains(".") let mut name = node.fake_node_name.clone(); - if !name.ends_with(".dev") { + if !name.contains(".") { name.push_str(".dev"); } @@ -286,11 +288,9 @@ async fn build_packages( .setup_packages .iter() .cloned() - .map(|s| { - SetupPackage { - path: test_dir_path.join(s.path).canonicalize().unwrap(), - run: s.run, - } + .map(|s| SetupPackage { + path: test_dir_path.join(s.path).canonicalize().unwrap(), + run: s.run, }) .collect(); let test_package_paths: Vec = test @@ -339,7 +339,8 @@ async fn build_packages( Arc::clone(&node_cleanup_infos), &send_to_kill, Arc::clone(&node_handles), - ).await?; + ) + .await?; info!("Done starting node to host dependencies."); let url = format!("http://localhost:{port}"); @@ -363,7 +364,8 @@ async fn build_packages( false, false, false, - ).await?; + ) + .await?; start_package::execute(&path, &url).await?; } @@ -382,7 +384,8 @@ async fn build_packages( false, false, false, - ).await?; + ) + .await?; } for test_package_path in &test_package_paths { build::execute( @@ -399,7 +402,8 @@ async fn build_packages( false, false, false, - ).await?; + ) + .await?; } info!("Cleaning up node to host dependencies."); @@ -462,10 +466,7 @@ async fn load_setups(setup_paths: &Vec, port: u16) -> Result<()> { for setup_path in setup_paths { if setup_path.run { - start_package::execute( - &setup_path.path, - &format!("http://localhost:{}", port), - ).await?; + start_package::execute(&setup_path.path, &format!("http://localhost:{}", port)).await?; } load_process(&setup_path.path, "setup", &port).await?; } @@ -530,7 +531,7 @@ async fn load_caps(test_package_paths: &Vec, port: u16) -> Result<()> { serde_json::json!({ "request_capabilities": manifest.request_capabilities, "grant_capabilities": manifest.grant_capabilities, - }) + }), ); } let caps = serde_json::to_vec(&caps)?; @@ -558,7 +559,6 @@ async fn load_caps(test_package_paths: &Vec, port: u16) -> Result<()> { Ok(()) } - #[instrument(level = "trace", skip_all)] async fn load_tests(test_package_paths: &Vec, port: u16) -> Result<()> { info!("Loading tests..."); @@ -664,13 +664,8 @@ async fn handle_test( test_dir_path: &Path, persist_home: bool, ) -> Result<()> { - let (setup_packages, test_package_paths) = build_packages( - &test, - test_dir_path, - &detached, - &persist_home, - runtime_path, - ).await?; + let (setup_packages, test_package_paths) = + build_packages(&test, test_dir_path, &detached, &persist_home, runtime_path).await?; let SetupCleanupReturn { send_to_cleanup, @@ -682,7 +677,8 @@ async fn handle_test( node_handles, } = setup_cleanup(&detached, &persist_home).await?; - let setup_scripts: Vec = test.setup_scripts + let setup_scripts: Vec = test + .setup_scripts .iter() .map(|s| { let p = test_dir_path.join(&s.path).canonicalize().unwrap(); @@ -712,7 +708,8 @@ async fn handle_test( Arc::clone(&node_cleanup_infos), &send_to_kill, Arc::clone(&node_handles), - ).await?; + ) + .await?; for node in &test.nodes { load_setups(&setup_packages, node.port.clone()).await?; @@ -738,10 +735,7 @@ async fn handle_test( } else { format!("{} {}", p, script.args) }; - build::run_command( - Command::new("bash").args(["-c", &command]), - false, - )?; + build::run_command(Command::new("bash").args(["-c", &command]), false)?; } if tests_result.is_ok() { @@ -767,18 +761,16 @@ pub async fn execute(config_path: PathBuf) -> Result<()> { // TODO: factor out with boot_fake_node? let runtime_path = match config.runtime { - Runtime::FetchVersion(ref version) => boot_fake_node::get_runtime_binary(version, true).await?, + Runtime::FetchVersion(ref version) => { + boot_fake_node::get_runtime_binary(version, true).await? + } Runtime::RepoPath(runtime_path) => { if !runtime_path.exists() { return Err(eyre!("RepoPath {:?} does not exist.", runtime_path)); } if runtime_path.is_dir() { // Compile the runtime binary - boot_fake_node::compile_runtime( - &runtime_path, - config.runtime_build_release, - true, - )?; + boot_fake_node::compile_runtime(&runtime_path, config.runtime_build_release, true)?; runtime_path .join("target") .join(if config.runtime_build_release { @@ -802,7 +794,8 @@ pub async fn execute(config_path: PathBuf) -> Result<()> { test, &test_dir_path, config.persist_home, - ).await?; + ) + .await?; } Ok(()) diff --git a/src/start_package/mod.rs b/src/start_package/mod.rs index e9f35a6e..ca70cd1a 100644 --- a/src/start_package/mod.rs +++ b/src/start_package/mod.rs @@ -1,47 +1,25 @@ -use sha2::{Digest, Sha256}; -use std::io::{Read, Write}; use std::path::Path; use color_eyre::{eyre::eyre, Result, Section}; use fs_err as fs; use serde_json::json; use tracing::{info, instrument}; -use walkdir::WalkDir; -use zip::write::FileOptions; use kinode_process_lib::kernel_types::{Erc721Metadata, PackageManifestEntry}; -use crate::{build::read_metadata, inject_message, KIT_LOG_PATH_DEFAULT}; +use crate::build::{hash_zip_pkg, make_pkg_publisher, make_zip_filename, read_metadata}; +use crate::{inject_message, KIT_LOG_PATH_DEFAULT}; #[instrument(level = "trace", skip_all)] fn new_package( node: Option<&str>, package_name: &str, publisher_node: &str, - metadata: &Erc721Metadata, bytes_path: &str, ) -> Result { let message = json!({ "NewPackage": { "package_id": {"package_name": package_name, "publisher_node": publisher_node}, - "metadata": { - "name": metadata.name, - "description": metadata.description, - "image": metadata.image, - "external_url": metadata.external_url, - "animation_url": metadata.animation_url, - "properties": { - "package_name": metadata.properties.package_name, - "publisher": metadata.properties.publisher, - "current_version": metadata.properties.current_version, - "mirrors": metadata.properties.mirrors, - "code_hashes": metadata.properties.code_hashes.clone().into_iter().collect::>(), - "license": metadata.properties.license, - "screenshots": metadata.properties.screenshots, - "wit_version": metadata.properties.wit_version, - "dependencies": metadata.properties.dependencies, - }, - }, "mirror": true } }); @@ -57,63 +35,51 @@ fn new_package( } #[instrument(level = "trace", skip_all)] -pub fn interact_with_package( - request_type: &str, +fn install( node: Option<&str>, package_name: &str, publisher_node: &str, + hash_string: &str, + metadata: &Erc721Metadata, ) -> Result { - let message = json!({ - request_type: { - "package_name": package_name, - "publisher_node": publisher_node, + let body = json!({ + "Install": { + "package_id": { + "package_name": package_name, + "publisher_node": publisher_node, + }, + "version_hash": hash_string, + "metadata": { + "name": metadata.name, + "description": metadata.description, + "image": metadata.image, + "external_url": metadata.external_url, + "animation_url": metadata.animation_url, + "properties": { + "package_name": metadata.properties.package_name, + "publisher": metadata.properties.publisher, + "current_version": metadata.properties.current_version, + "mirrors": metadata.properties.mirrors, + "code_hashes": metadata.properties.code_hashes.clone().into_iter().collect::>(), + "license": metadata.properties.license, + "screenshots": metadata.properties.screenshots, + "wit_version": metadata.properties.wit_version, + "dependencies": metadata.properties.dependencies, + }, + }, } }); inject_message::make_message( "main:app_store:sys", Some(15), - &message.to_string(), + &body.to_string(), node, None, None, ) } -#[instrument(level = "trace", skip_all)] -pub fn zip_directory(directory: &Path, zip_filename: &str) -> Result<()> { - let file = fs::File::create(zip_filename)?; - let walkdir = WalkDir::new(directory); - let it = walkdir.into_iter(); - - let mut zip = zip::ZipWriter::new(file); - - let options = FileOptions::default() - .compression_method(zip::CompressionMethod::Deflated) - .unix_permissions(0o755) - .last_modified_time(zip::DateTime::from_date_and_time(1980, 1, 1, 0, 0, 0).unwrap()); - - for entry in it { - let entry = entry?; - let path = entry.path(); - let name = path.strip_prefix(Path::new(directory))?; - - if path.is_file() { - zip.start_file(name.to_string_lossy(), options)?; - let mut f = fs::File::open(path)?; - let mut buffer = Vec::new(); - f.read_to_end(&mut buffer)?; - zip.write_all(&*buffer)?; - } else if name.as_os_str().len() != 0 { - // Only if it is not the root directory - zip.add_directory(name.to_string_lossy(), options)?; - } - } - - zip.finish()?; - Ok(()) -} - #[instrument(level = "trace", skip_all)] pub async fn execute(package_dir: &Path, url: &str) -> Result<()> { if !package_dir.join("pkg").exists() { @@ -126,7 +92,13 @@ pub async fn execute(package_dir: &Path, url: &str) -> Result<()> { let metadata = read_metadata(package_dir)?; let package_name = metadata.properties.package_name.as_str(); let publisher = metadata.properties.publisher.as_str(); - let pkg_publisher = format!("{}:{}", package_name, publisher); + let pkg_publisher = make_pkg_publisher(&metadata); + let zip_filename = make_zip_filename(package_dir, &pkg_publisher); + + if !zip_filename.exists() { + return Err(eyre!("Missing pkg zip.") + .with_suggestion(|| "Try `kit build`ing package first.")); + } let manifest = fs::File::open(pkg_dir.join("manifest.json")) .with_suggestion(|| "Missing required manifest.json file. See discussion at https://book.kinode.org/my_first_app/chapter_1.html?highlight=manifest.json#pkgmanifestjson")?; @@ -145,26 +117,13 @@ pub async fn execute(package_dir: &Path, url: &str) -> Result<()> { } info!("{}", pkg_publisher); + let hash_string = hash_zip_pkg(&zip_filename)?; - // Create zip and put it in /target - let target_dir = package_dir.join("target"); - fs::create_dir_all(&target_dir)?; - let zip_filename = target_dir.join(&pkg_publisher).with_extension("zip"); - zip_directory(&pkg_dir, &zip_filename.to_str().unwrap())?; - - let mut file = fs::File::open(&zip_filename)?; - let mut hasher = Sha256::new(); - let mut buffer = Vec::new(); - file.read_to_end(&mut buffer)?; - hasher.update(&buffer); - let hash_result = hasher.finalize(); - info!("package zip hash: {:x}", hash_result); // Create and send new package request let new_pkg_request = new_package( None, package_name, publisher, - &metadata, zip_filename.to_str().unwrap(), )?; let response = inject_message::send_request(url, new_pkg_request).await?; @@ -189,8 +148,13 @@ pub async fn execute(package_dir: &Path, url: &str) -> Result<()> { )); } - // Install package - let install_request = interact_with_package("Install", None, package_name, publisher)?; + let install_request = install( + None, + package_name, + publisher, + &hash_string, + &metadata, + )?; let response = inject_message::send_request(url, install_request).await?; let inject_message::Response { ref body, .. } = inject_message::parse_response(response).await?;