From 9d95cab1bab972cc7e9f6aa338c537403e838343 Mon Sep 17 00:00:00 2001 From: James Prestwich <10149425+prestwich@users.noreply.github.com> Date: Thu, 12 Aug 2021 15:48:37 -0700 Subject: [PATCH] Raise process gas and add tests/ (#560) * test: expose more utilities on test deploy * test: scaffold more transfer tests * test: remotely-originating roundtrip test * test: local token roundtrip test * test: local token unapproved and insufficient balance * test: basic prefill test * test: prefill test w/ local token * chore: clean unused imports * chore: regenerate typescript for core * bug: increase PROCESS_GAS further to better account for enqueue costs * deploy: aug-12 increased PROCESS_GAS * test: decrease allowed process gas to ensure buffer --- .../1628807252805/alfajores_config.json | 39 ++ .../1628807252805/alfajores_contracts.json | 22 ++ .../1628807252805/alfajores_verification.json | 77 ++++ .../1628807481166/alfajores_contracts.json | 12 + .../1628807481166/alfajores_verification.json | 44 +++ .../bridge/1628807481166/kovan_contracts.json | 13 + .../1628807481166/kovan_verification.json | 52 +++ rust/config/1628807252805/kathy-partial.json | 8 + rust/config/1628807252805/kovan_config.json | 39 ++ .../config/1628807252805/kovan_contracts.json | 22 ++ .../1628807252805/kovan_verification.json | 77 ++++ .../1628807252805/processor-partial.json | 3 + .../config/1628807252805/relayer-partial.json | 3 + .../config/1628807252805/updater-partial.json | 8 + .../config/1628807252805/watcher-partial.json | 33 ++ solidity/optics-core/contracts/Replica.sol | 4 +- .../contracts/bridge/test/MockCore.sol | 60 ++- .../src/bridge/TestBridgeDeploy.ts | 66 +++- .../optics-tests/test/bridge/bridge.test.ts | 366 ++++++++++++++++-- .../factories/GovernanceRouter__factory.ts | 2 +- .../optics-core/factories/Home__factory.ts | 2 +- .../optics-core/factories/Replica__factory.ts | 2 +- .../TestGovernanceRouter__factory.ts | 2 +- .../factories/TestHome__factory.ts | 2 +- .../factories/TestReplica__factory.ts | 2 +- .../TestXAppConnectionManager__factory.ts | 2 +- .../factories/UpdaterManager__factory.ts | 2 +- .../XAppConnectionManager__factory.ts | 2 +- .../typechain/optics-xapps/MockCore.d.ts | 164 ++++++++ .../factories/BridgeRouter__factory.ts | 2 +- .../factories/BridgeToken__factory.ts | 2 +- .../factories/ETHHelper__factory.ts | 2 +- .../factories/MockCore__factory.ts | 149 ++++++- .../factories/PingPongRouter__factory.ts | 2 +- .../factories/Replica__factory.ts | 2 +- .../factories/RouterTemplate__factory.ts | 2 +- .../XAppConnectionManager__factory.ts | 2 +- 37 files changed, 1233 insertions(+), 60 deletions(-) create mode 100644 rust/config/1628807252805/alfajores_config.json create mode 100644 rust/config/1628807252805/alfajores_contracts.json create mode 100644 rust/config/1628807252805/alfajores_verification.json create mode 100644 rust/config/1628807252805/bridge/1628807481166/alfajores_contracts.json create mode 100644 rust/config/1628807252805/bridge/1628807481166/alfajores_verification.json create mode 100644 rust/config/1628807252805/bridge/1628807481166/kovan_contracts.json create mode 100644 rust/config/1628807252805/bridge/1628807481166/kovan_verification.json create mode 100644 rust/config/1628807252805/kathy-partial.json create mode 100644 rust/config/1628807252805/kovan_config.json create mode 100644 rust/config/1628807252805/kovan_contracts.json create mode 100644 rust/config/1628807252805/kovan_verification.json create mode 100644 rust/config/1628807252805/processor-partial.json create mode 100644 rust/config/1628807252805/relayer-partial.json create mode 100644 rust/config/1628807252805/updater-partial.json create mode 100644 rust/config/1628807252805/watcher-partial.json diff --git a/rust/config/1628807252805/alfajores_config.json b/rust/config/1628807252805/alfajores_config.json new file mode 100644 index 000000000..3282406f5 --- /dev/null +++ b/rust/config/1628807252805/alfajores_config.json @@ -0,0 +1,39 @@ +{ + "signers": { + "alfajores": { + "key": "", + "type": "hexKey" + }, + "kovan": { + "key": "", + "type": "hexKey" + } + }, + "replicas": { + "kovan": { + "address": "0xeACafFb9fBCe3d4c4C5D07AF5DFa51CcF5a348b7", + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "https://kovan.infura.io/v3/5c456d7844fa40a683e934df60534c60" + } + } + }, + "home": { + "address": "0x8D09cAB9628a154d15b814113f11f19Fa8cE37A3", + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "https://alfajores-forno.celo-testnet.org" + } + }, + "tracing": { + "level": "debug", + "style": "json" + }, + "db": "db_path" +} \ No newline at end of file diff --git a/rust/config/1628807252805/alfajores_contracts.json b/rust/config/1628807252805/alfajores_contracts.json new file mode 100644 index 000000000..8311b5ab6 --- /dev/null +++ b/rust/config/1628807252805/alfajores_contracts.json @@ -0,0 +1,22 @@ +{ + "upgradeBeaconController": "0x896DFD65C87D59E7C325762109936Bc3945F1863", + "xAppConnectionManager": "0x1192B3cc8f7B2c664c53b7E2432b95fE5AfE8D88", + "updaterManager": "0x5a8dBB50b1abC6E059876582d708258B3DE0aE07", + "governance": { + "implementation": "0xEbDDd78Ee024C737660Eaf6669a18Ced8FDB83c0", + "proxy": "0x264a96F5Da65BE0c360794Cf62603835b2B712D1", + "beacon": "0x4065B6937DB4C3Bc0311F38B1710eDB5F6f78054" + }, + "home": { + "implementation": "0xba01d48f666f0fA5899d8f36b48DBCA81391fE06", + "proxy": "0x8D09cAB9628a154d15b814113f11f19Fa8cE37A3", + "beacon": "0xc7436ae92784087C58d2BEF31a16F0Fb3E12DD9e" + }, + "replicas": { + "3000": { + "implementation": "0x3878204c2dA27b8EbB89feD25Cc6028878fEC51a", + "proxy": "0x27d8008Bb9738DFBb0E546e175efe401e914Aa93", + "beacon": "0x50dc82F72c663BFB234A643f89d67C928b86f15B" + } + } +} \ No newline at end of file diff --git a/rust/config/1628807252805/alfajores_verification.json b/rust/config/1628807252805/alfajores_verification.json new file mode 100644 index 000000000..1f9b962ae --- /dev/null +++ b/rust/config/1628807252805/alfajores_verification.json @@ -0,0 +1,77 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0x896DFD65C87D59E7C325762109936Bc3945F1863", + "constructorArguments": [] + }, + { + "name": "Contract Implementation", + "address": "0xba01d48f666f0fA5899d8f36b48DBCA81391fE06", + "constructorArguments": [ + 1000 + ] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0xc7436ae92784087C58d2BEF31a16F0Fb3E12DD9e", + "constructorArguments": [ + "0xba01d48f666f0fA5899d8f36b48DBCA81391fE06", + "0x896DFD65C87D59E7C325762109936Bc3945F1863" + ] + }, + { + "name": "Contract Proxy", + "address": "0x8D09cAB9628a154d15b814113f11f19Fa8cE37A3", + "constructorArguments": [ + "0xc7436ae92784087C58d2BEF31a16F0Fb3E12DD9e", + "0xc4d66de80000000000000000000000005a8dbb50b1abc6e059876582d708258b3de0ae07" + ] + }, + { + "name": "Contract Implementation", + "address": "0xEbDDd78Ee024C737660Eaf6669a18Ced8FDB83c0", + "constructorArguments": [ + 1000, + 1 + ] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0x4065B6937DB4C3Bc0311F38B1710eDB5F6f78054", + "constructorArguments": [ + "0xEbDDd78Ee024C737660Eaf6669a18Ced8FDB83c0", + "0x896DFD65C87D59E7C325762109936Bc3945F1863" + ] + }, + { + "name": "Contract Proxy", + "address": "0x264a96F5Da65BE0c360794Cf62603835b2B712D1", + "constructorArguments": [ + "0x4065B6937DB4C3Bc0311F38B1710eDB5F6f78054", + "0x485cc9550000000000000000000000001192b3cc8f7b2c664c53b7e2432b95fe5afe8d8800000000000000000000000024f6c874f56533d9a1422e85e5c7a806ed11c036" + ] + }, + { + "name": "Contract Implementation", + "address": "0x3878204c2dA27b8EbB89feD25Cc6028878fEC51a", + "constructorArguments": [ + 1000 + ] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0x50dc82F72c663BFB234A643f89d67C928b86f15B", + "constructorArguments": [ + "0x3878204c2dA27b8EbB89feD25Cc6028878fEC51a", + "0x896DFD65C87D59E7C325762109936Bc3945F1863" + ] + }, + { + "name": "Contract Proxy", + "address": "0x27d8008Bb9738DFBb0E546e175efe401e914Aa93", + "constructorArguments": [ + "0x50dc82F72c663BFB234A643f89d67C928b86f15B", + "0xbf30a55d0000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000004177372fd9581ceb2367e0ce84adc5dad9df8d550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000" + ] + } +] \ No newline at end of file diff --git a/rust/config/1628807252805/bridge/1628807481166/alfajores_contracts.json b/rust/config/1628807252805/bridge/1628807481166/alfajores_contracts.json new file mode 100644 index 000000000..36b8f75fb --- /dev/null +++ b/rust/config/1628807252805/bridge/1628807481166/alfajores_contracts.json @@ -0,0 +1,12 @@ +{ + "bridgeRouter": { + "implementation": "0x17200253E47d2464b3a06ec0186e7afDf2b25518", + "proxy": "0x635b125c63410D658EeAE1eF98a9a11aEdB1E322", + "beacon": "0x7455b2F22aC5435E201E3E8c630b5202Da876357" + }, + "bridgeToken": { + "implementation": "0xD6F24647e373F4D95b25a8Ff87287FE76726C56A", + "proxy": "0xF7857c43618257dD8b21945accfd7ef4e73Ce256", + "beacon": "0xF3d7E8e119bC629dC35F7Dea1246AA5Ee15771bc" + } +} \ No newline at end of file diff --git a/rust/config/1628807252805/bridge/1628807481166/alfajores_verification.json b/rust/config/1628807252805/bridge/1628807481166/alfajores_verification.json new file mode 100644 index 000000000..41e708716 --- /dev/null +++ b/rust/config/1628807252805/bridge/1628807481166/alfajores_verification.json @@ -0,0 +1,44 @@ +[ + { + "name": "Contract Implementation", + "address": "0xD6F24647e373F4D95b25a8Ff87287FE76726C56A", + "constructorArguments": [] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0xF3d7E8e119bC629dC35F7Dea1246AA5Ee15771bc", + "constructorArguments": [ + "0xD6F24647e373F4D95b25a8Ff87287FE76726C56A", + "0x896DFD65C87D59E7C325762109936Bc3945F1863" + ] + }, + { + "name": "Contract Proxy", + "address": "0xF7857c43618257dD8b21945accfd7ef4e73Ce256", + "constructorArguments": [ + "0xF3d7E8e119bC629dC35F7Dea1246AA5Ee15771bc", + "0x" + ] + }, + { + "name": "Contract Implementation", + "address": "0x17200253E47d2464b3a06ec0186e7afDf2b25518", + "constructorArguments": [] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0x7455b2F22aC5435E201E3E8c630b5202Da876357", + "constructorArguments": [ + "0x17200253E47d2464b3a06ec0186e7afDf2b25518", + "0x896DFD65C87D59E7C325762109936Bc3945F1863" + ] + }, + { + "name": "Contract Proxy", + "address": "0x635b125c63410D658EeAE1eF98a9a11aEdB1E322", + "constructorArguments": [ + "0x7455b2F22aC5435E201E3E8c630b5202Da876357", + "0x485cc955000000000000000000000000f3d7e8e119bc629dc35f7dea1246aa5ee15771bc0000000000000000000000001192b3cc8f7b2c664c53b7e2432b95fe5afe8d88" + ] + } +] \ No newline at end of file diff --git a/rust/config/1628807252805/bridge/1628807481166/kovan_contracts.json b/rust/config/1628807252805/bridge/1628807481166/kovan_contracts.json new file mode 100644 index 000000000..a2e74b004 --- /dev/null +++ b/rust/config/1628807252805/bridge/1628807481166/kovan_contracts.json @@ -0,0 +1,13 @@ +{ + "bridgeRouter": { + "implementation": "0x653fd06dC14A1f7e2eF0bd09F208672E5F04E237", + "proxy": "0xd29b41335092D1427463D4e4a5fC28D90f2A695c", + "beacon": "0xc5dB53513eB47C857A5bEff381b111588CB4623F" + }, + "bridgeToken": { + "implementation": "0x311DD715Fdaf80aD5Cf2dF2d8A6C05D7207205e4", + "proxy": "0x23AA200E4AD3A4DfBC87612eb99C88bfeD742b96", + "beacon": "0x8eA98384C671E4612fDdA50B7CB9D62Bf8dD7560" + }, + "ethHelper": "0x954EdA7095D43D6A6aC055892Bd0bAE2FE330FeD" +} \ No newline at end of file diff --git a/rust/config/1628807252805/bridge/1628807481166/kovan_verification.json b/rust/config/1628807252805/bridge/1628807481166/kovan_verification.json new file mode 100644 index 000000000..5ffc1018a --- /dev/null +++ b/rust/config/1628807252805/bridge/1628807481166/kovan_verification.json @@ -0,0 +1,52 @@ +[ + { + "name": "Contract Implementation", + "address": "0x311DD715Fdaf80aD5Cf2dF2d8A6C05D7207205e4", + "constructorArguments": [] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0x8eA98384C671E4612fDdA50B7CB9D62Bf8dD7560", + "constructorArguments": [ + "0x311DD715Fdaf80aD5Cf2dF2d8A6C05D7207205e4", + "0x75Ab9C07552A630A377FAc68135402210388e05c" + ] + }, + { + "name": "Contract Proxy", + "address": "0x23AA200E4AD3A4DfBC87612eb99C88bfeD742b96", + "constructorArguments": [ + "0x8eA98384C671E4612fDdA50B7CB9D62Bf8dD7560", + "0x" + ] + }, + { + "name": "Contract Implementation", + "address": "0x653fd06dC14A1f7e2eF0bd09F208672E5F04E237", + "constructorArguments": [] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0xc5dB53513eB47C857A5bEff381b111588CB4623F", + "constructorArguments": [ + "0x653fd06dC14A1f7e2eF0bd09F208672E5F04E237", + "0x75Ab9C07552A630A377FAc68135402210388e05c" + ] + }, + { + "name": "Contract Proxy", + "address": "0xd29b41335092D1427463D4e4a5fC28D90f2A695c", + "constructorArguments": [ + "0xc5dB53513eB47C857A5bEff381b111588CB4623F", + "0x485cc9550000000000000000000000008ea98384c671e4612fdda50b7cb9d62bf8dd7560000000000000000000000000fe8a2093dd9b99db801d97ca1b0c82cdb9308708" + ] + }, + { + "name": "ETH Helper", + "address": "0x954EdA7095D43D6A6aC055892Bd0bAE2FE330FeD", + "constructorArguments": [ + "0xd0a1e359811322d97991e03f863a0c30c2cf029c", + "0xd29b41335092D1427463D4e4a5fC28D90f2A695c" + ] + } +] \ No newline at end of file diff --git a/rust/config/1628807252805/kathy-partial.json b/rust/config/1628807252805/kathy-partial.json new file mode 100644 index 000000000..46988a832 --- /dev/null +++ b/rust/config/1628807252805/kathy-partial.json @@ -0,0 +1,8 @@ +{ + "messageInterval": "100", + "chat": { + "message": "static message", + "recipient": "0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd", + "type": "static" + } +} diff --git a/rust/config/1628807252805/kovan_config.json b/rust/config/1628807252805/kovan_config.json new file mode 100644 index 000000000..60d28c321 --- /dev/null +++ b/rust/config/1628807252805/kovan_config.json @@ -0,0 +1,39 @@ +{ + "signers": { + "kovan": { + "key": "", + "type": "hexKey" + }, + "alfajores": { + "key": "", + "type": "hexKey" + } + }, + "replicas": { + "alfajores": { + "address": "0x27d8008Bb9738DFBb0E546e175efe401e914Aa93", + "domain": "1000", + "name": "alfajores", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "https://alfajores-forno.celo-testnet.org" + } + } + }, + "home": { + "address": "0x0C4501f2088c4963286CE5E9a5080a31F17b1a87", + "domain": "3000", + "name": "kovan", + "rpcStyle": "ethereum", + "connection": { + "type": "http", + "url": "https://kovan.infura.io/v3/5c456d7844fa40a683e934df60534c60" + } + }, + "tracing": { + "level": "debug", + "style": "json" + }, + "db": "db_path" +} \ No newline at end of file diff --git a/rust/config/1628807252805/kovan_contracts.json b/rust/config/1628807252805/kovan_contracts.json new file mode 100644 index 000000000..352f5217d --- /dev/null +++ b/rust/config/1628807252805/kovan_contracts.json @@ -0,0 +1,22 @@ +{ + "upgradeBeaconController": "0x75Ab9C07552A630A377FAc68135402210388e05c", + "xAppConnectionManager": "0xFE8A2093Dd9B99DB801D97Ca1b0c82cdB9308708", + "updaterManager": "0xea3b5F0fB82ef0Aee1b81dfE99A7AF7F065FD28B", + "governance": { + "implementation": "0x3ac3C18A00bA186314dc8f0Ca89D869A4262fFFB", + "proxy": "0x885A8bd4be130422AEB1Eb9Eeb9513a5D2102cad", + "beacon": "0x4d911A52837703708CB2bc733CcBD87726dEA3Cc" + }, + "home": { + "implementation": "0xf85B6D10aD90Bfd7218D7dC5E234d4421FD3fd88", + "proxy": "0x0C4501f2088c4963286CE5E9a5080a31F17b1a87", + "beacon": "0x9FEE0b4D16c630813439919e1e4Ab7f6A7E6636C" + }, + "replicas": { + "1000": { + "implementation": "0x0754Db4C98F4B28c48228103d9770f1940079934", + "proxy": "0xeACafFb9fBCe3d4c4C5D07AF5DFa51CcF5a348b7", + "beacon": "0x7274963E5A70f9d6d441847Ee000105dd710cAb5" + } + } +} \ No newline at end of file diff --git a/rust/config/1628807252805/kovan_verification.json b/rust/config/1628807252805/kovan_verification.json new file mode 100644 index 000000000..00e2c36fe --- /dev/null +++ b/rust/config/1628807252805/kovan_verification.json @@ -0,0 +1,77 @@ +[ + { + "name": "UpgradeBeaconController", + "address": "0x75Ab9C07552A630A377FAc68135402210388e05c", + "constructorArguments": [] + }, + { + "name": "Contract Implementation", + "address": "0xf85B6D10aD90Bfd7218D7dC5E234d4421FD3fd88", + "constructorArguments": [ + 3000 + ] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0x9FEE0b4D16c630813439919e1e4Ab7f6A7E6636C", + "constructorArguments": [ + "0xf85B6D10aD90Bfd7218D7dC5E234d4421FD3fd88", + "0x75Ab9C07552A630A377FAc68135402210388e05c" + ] + }, + { + "name": "Contract Proxy", + "address": "0x0C4501f2088c4963286CE5E9a5080a31F17b1a87", + "constructorArguments": [ + "0x9FEE0b4D16c630813439919e1e4Ab7f6A7E6636C", + "0xc4d66de8000000000000000000000000ea3b5f0fb82ef0aee1b81dfe99a7af7f065fd28b" + ] + }, + { + "name": "Contract Implementation", + "address": "0x3ac3C18A00bA186314dc8f0Ca89D869A4262fFFB", + "constructorArguments": [ + 3000, + 1 + ] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0x4d911A52837703708CB2bc733CcBD87726dEA3Cc", + "constructorArguments": [ + "0x3ac3C18A00bA186314dc8f0Ca89D869A4262fFFB", + "0x75Ab9C07552A630A377FAc68135402210388e05c" + ] + }, + { + "name": "Contract Proxy", + "address": "0x885A8bd4be130422AEB1Eb9Eeb9513a5D2102cad", + "constructorArguments": [ + "0x4d911A52837703708CB2bc733CcBD87726dEA3Cc", + "0x485cc955000000000000000000000000fe8a2093dd9b99db801d97ca1b0c82cdb930870800000000000000000000000024f6c874f56533d9a1422e85e5c7a806ed11c036" + ] + }, + { + "name": "Contract Implementation", + "address": "0x0754Db4C98F4B28c48228103d9770f1940079934", + "constructorArguments": [ + 3000 + ] + }, + { + "name": "Contract UpgradeBeacon", + "address": "0x7274963E5A70f9d6d441847Ee000105dd710cAb5", + "constructorArguments": [ + "0x0754Db4C98F4B28c48228103d9770f1940079934", + "0x75Ab9C07552A630A377FAc68135402210388e05c" + ] + }, + { + "name": "Contract Proxy", + "address": "0xeACafFb9fBCe3d4c4C5D07AF5DFa51CcF5a348b7", + "constructorArguments": [ + "0x7274963E5A70f9d6d441847Ee000105dd710cAb5", + "0xbf30a55d00000000000000000000000000000000000000000000000000000000000003e80000000000000000000000004177372fd9581ceb2367e0ce84adc5dad9df8d550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000" + ] + } +] \ No newline at end of file diff --git a/rust/config/1628807252805/processor-partial.json b/rust/config/1628807252805/processor-partial.json new file mode 100644 index 000000000..3cbe62b80 --- /dev/null +++ b/rust/config/1628807252805/processor-partial.json @@ -0,0 +1,3 @@ +{ + "pollingInterval": "10" +} diff --git a/rust/config/1628807252805/relayer-partial.json b/rust/config/1628807252805/relayer-partial.json new file mode 100644 index 000000000..3cbe62b80 --- /dev/null +++ b/rust/config/1628807252805/relayer-partial.json @@ -0,0 +1,3 @@ +{ + "pollingInterval": "10" +} diff --git a/rust/config/1628807252805/updater-partial.json b/rust/config/1628807252805/updater-partial.json new file mode 100644 index 000000000..a9d6f75a7 --- /dev/null +++ b/rust/config/1628807252805/updater-partial.json @@ -0,0 +1,8 @@ +{ + "pollingInterval": "5", + "updatePause": "15", + "updater": { + "key": "", + "type": "hexKey" + } +} diff --git a/rust/config/1628807252805/watcher-partial.json b/rust/config/1628807252805/watcher-partial.json new file mode 100644 index 000000000..b24e3d361 --- /dev/null +++ b/rust/config/1628807252805/watcher-partial.json @@ -0,0 +1,33 @@ +{ + "pollingInterval": "100", + "watcher": { + "key": "", + "type": "hexKey" + }, + "connectionManagers": [ + { + "address": "0x0000000000000000000000000000000000000000", + "domain": "60", + "name": "ethereum", + "rpcStyle": "ethereum", + "config": { + "connection": { + "type": "ws", + "url": "ws://localhost:8545" + } + } + }, + { + "address": "0x0000000000000000000000000000000000000000", + "domain": "61", + "name": "eth-classic", + "rpcStyle": "ethereum", + "config": { + "connection": { + "type": "ws", + "url": "ws://localhost:8545" + } + } + } + ] +} diff --git a/solidity/optics-core/contracts/Replica.sol b/solidity/optics-core/contracts/Replica.sol index f345e454a..ed0479332 100644 --- a/solidity/optics-core/contracts/Replica.sol +++ b/solidity/optics-core/contracts/Replica.sol @@ -23,9 +23,9 @@ contract Replica is Initializable, Common, QueueManager { using Message for bytes29; /// @notice Minimum gas for message processing - uint256 public constant PROCESS_GAS = 500000; + uint256 public constant PROCESS_GAS = 850000; /// @notice Reserved gas (to ensure tx completes in case message processing runs out) - uint256 public constant RESERVE_GAS = 10000; + uint256 public constant RESERVE_GAS = 15000; /// @notice Domain of home chain uint32 public remoteDomain; diff --git a/solidity/optics-xapps/contracts/bridge/test/MockCore.sol b/solidity/optics-xapps/contracts/bridge/test/MockCore.sol index e741a2ac3..b97390175 100644 --- a/solidity/optics-xapps/contracts/bridge/test/MockCore.sol +++ b/solidity/optics-xapps/contracts/bridge/test/MockCore.sol @@ -1,14 +1,36 @@ // SPDX-License-Identifier: MIT OR Apache-2.0 pragma solidity >=0.6.11; -contract MockCore { +import {MerkleTreeManager} from "@celo-org/optics-sol/contracts/Merkle.sol"; +import {QueueManager} from "@celo-org/optics-sol/contracts/Queue.sol"; + +import {Message} from "@celo-org/optics-sol/libs/Message.sol"; +import {MerkleLib} from "@celo-org/optics-sol/libs/Merkle.sol"; +import {QueueLib} from "@celo-org/optics-sol/libs/Queue.sol"; + +// We reproduce a significant amount of logic from `Home` to ensure that +// calling enqueue here is AT LEAST AS EXPENSIVE as calling it on home +contract MockCore is MerkleTreeManager, QueueManager { + using QueueLib for QueueLib.Queue; + using MerkleLib for MerkleLib.Tree; + + uint256 public constant MAX_MESSAGE_BODY_BYTES = 2 * 2**10; + event Enqueue( uint32 indexed _destination, bytes32 indexed _recipient, bytes _body ); + event Dispatch( + uint256 indexed leafIndex, + uint64 indexed destinationAndSequence, + bytes32 indexed leaf, + bytes message + ); + + mapping(uint32 => uint32) public sequences; - function localDomain() external pure returns (uint32) { + function localDomain() public pure returns (uint32) { return 5; } @@ -16,15 +38,49 @@ contract MockCore { return address(this); } + // We reproduce the logic here to simulate function enqueue( uint32 _destination, bytes32 _recipient, bytes calldata _body ) external { + require(_body.length <= MAX_MESSAGE_BODY_BYTES, "!too big"); + uint32 _sequence = sequences[_destination]; + + bytes memory _message = Message.formatMessage( + localDomain(), + bytes32(uint256(uint160(msg.sender))), + _sequence, + _destination, + _recipient, + _body + ); + bytes32 _leaf = keccak256(_message); + + tree.insert(_leaf); + queue.enqueue(root()); + + // leafIndex is count() - 1 since new leaf has already been inserted + emit Dispatch( + count() - 1, + _destinationAndSequence(_destination, _sequence), + _leaf, + _message + ); emit Enqueue(_destination, _recipient, _body); + + sequences[_destination] = _sequence + 1; } function isReplica(address) public pure returns (bool) { return true; } + + function _destinationAndSequence(uint32 _destination, uint32 _sequence) + internal + pure + returns (uint64) + { + return (uint64(_destination) << 32) | _sequence; + } } diff --git a/typescript/optics-deploy/src/bridge/TestBridgeDeploy.ts b/typescript/optics-deploy/src/bridge/TestBridgeDeploy.ts index 494cf30f7..45f01193e 100644 --- a/typescript/optics-deploy/src/bridge/TestBridgeDeploy.ts +++ b/typescript/optics-deploy/src/bridge/TestBridgeDeploy.ts @@ -1,9 +1,15 @@ -import { Signer } from 'ethers'; +import { BytesLike, ethers, Signer } from 'ethers'; import { UpgradeBeaconController, UpgradeBeaconController__factory, } from '../../../typechain/optics-core'; -import { MockCore, MockCore__factory } from '../../../typechain/optics-xapps'; +import { + BridgeRouter, + IERC20, + IERC20__factory, + MockCore, + MockCore__factory, +} from '../../../typechain/optics-xapps'; import { ContractVerificationInput } from '../deploy'; import { BridgeContracts } from './BridgeContracts'; import * as process from '.'; @@ -25,12 +31,14 @@ export default class TestBridgeDeploy { mockCore: MockCore; contracts: BridgeContracts; verificationInput: ContractVerificationInput[]; + localDomain: number; constructor( signer: Signer, mockCore: MockCore, ubc: UpgradeBeaconController, contracts: BridgeContracts, + domain: number, callerKnowsWhatTheyAreDoing: boolean = false, ) { if (!callerKnowsWhatTheyAreDoing) { @@ -41,14 +49,23 @@ export default class TestBridgeDeploy { this.mockCore = mockCore; this.contracts = contracts; this.signer = signer; + this.localDomain = domain; } static async deploy(signer: Signer): Promise { const mockCore = await new MockCore__factory(signer).deploy(); const ubc = await new UpgradeBeaconController__factory(signer).deploy(); const contracts = new BridgeContracts(); + const domain = await mockCore.localDomain(); - let deploy = new TestBridgeDeploy(signer, mockCore, ubc, contracts, true); + let deploy = new TestBridgeDeploy( + signer, + mockCore, + ubc, + contracts, + domain, + true, + ); await process.deployTokenUpgradeBeacon(deploy); await process.deployBridgeRouter(deploy); @@ -93,4 +110,47 @@ export default class TestBridgeDeploy { get config() { return { weth: '' }; } + + get bridgeRouter(): BridgeRouter | undefined { + return this.contracts.bridgeRouter?.proxy; + } + + get remoteDomain(): number { + return 1; + } + + get remoteDomainBytes(): string { + return `0x0000000${this.remoteDomain}`; + } + + get localDomainBytes(): string { + return `0x0000000${this.localDomain}`; + } + + get testToken(): string { + return `0x${'11'.repeat(32)}`; + } + + get testTokenId(): string { + return ethers.utils.hexConcat([this.remoteDomainBytes, this.testToken]); + } + + async getTestRepresentation(): Promise { + return await this.getRepresentation(this.remoteDomain, this.testToken); + } + + async getRepresentation( + domain: number, + canonicalTokenAddress: BytesLike, + ): Promise { + const reprAddr = await this.bridgeRouter![ + 'getLocalAddress(uint32,bytes32)' + ](domain, canonicalTokenAddress); + + if (domain === 0) { + return undefined; + } + + return IERC20__factory.connect(reprAddr, this.signer); + } } diff --git a/typescript/optics-tests/test/bridge/bridge.test.ts b/typescript/optics-tests/test/bridge/bridge.test.ts index 6a59f36cd..79e5018d0 100644 --- a/typescript/optics-tests/test/bridge/bridge.test.ts +++ b/typescript/optics-tests/test/bridge/bridge.test.ts @@ -4,12 +4,7 @@ import { BigNumber, BytesLike } from 'ethers'; import TestBridgeDeploy from '../../../optics-deploy/src/bridge/TestBridgeDeploy'; import { toBytes32 } from '../../lib/utils'; import { expect } from 'chai'; -import {IERC20__factory, BridgeRouter, IERC20} from '../../../typechain/optics-xapps'; - -async function getRepresentationTokenContract(deployer: Signer, bridgeRouter: BridgeRouter, domain: number, canonicalTokenAddress: BytesLike): Promise { - const reprAddr = await bridgeRouter['getLocalAddress(uint32,bytes32)'](domain, canonicalTokenAddress); - return IERC20__factory.connect(reprAddr, deployer); -} +import { BridgeToken__factory } from '../../../typechain/optics-xapps'; const BRIDGE_MESSAGE_TYPES = { INVALID: 0, @@ -24,54 +19,353 @@ const typeToBytes = (type: number) => `0x0${type}`; describe('Bridge', async () => { let deployer: Signer; - let deployerAddress: String; + let deployerAddress: string; let deployerId: BytesLike; let deploy: TestBridgeDeploy; - let transferAction: BytesLike; - let transferMessage: BytesLike; - let bridgeRouter: BridgeRouter; - - const DOMAIN = 1; - // 4-byte domain ID - const DOMAIN_BYTES = `0x0000000${DOMAIN}`; + const PROTOCOL_PROCESS_GAS = 800_000; // 1-byte Action Type - const TRANSFER_BYTES = typeToBytes(BRIDGE_MESSAGE_TYPES.TRANSFER); - - // 32-byte token address - const CANONICAL_TOKEN_ADDRESS = `0x${'11'.repeat(32)}`; - - // 36 byte token id - const TOKEN_ID = ethers.utils.concat([DOMAIN_BYTES, CANONICAL_TOKEN_ADDRESS]); + const TRANSER_TAG = typeToBytes(BRIDGE_MESSAGE_TYPES.TRANSFER); + // Numerical token value + const TOKEN_VALUE = 0xffff; // 32-byte token value - const TOKEN_VALUE = `0x${'00'.repeat(30)}ffff`; + const TOKEN_VALUE_BYTES = `0x${'00'.repeat(30)}ffff`; before(async () => { // populate deployer signer [deployer] = await ethers.getSigners(); deployerAddress = await deployer.getAddress(); - deployerId = toBytes32(await deployer.getAddress()); + deployerId = toBytes32(await deployer.getAddress()).toLowerCase(); + }); + + beforeEach(async () => { // run test deploy of bridge contracts deploy = await TestBridgeDeploy.deploy(deployer); - bridgeRouter = deploy.contracts.bridgeRouter!.proxy; - // generate transfer action - transferAction = ethers.utils.concat([TRANSFER_BYTES, deployerId, TOKEN_VALUE]); - transferMessage = ethers.utils.concat([TOKEN_ID, transferAction]); }); - it('handles a transfer message', async () => { - // first handle message for a new canonical token should deploy a representation token contract - expect(await bridgeRouter.handle( - DOMAIN, + describe('transfer message', async () => { + it('errors when missing a remote router', async () => { + expect( + deploy.bridgeRouter!.send( + ethers.constants.AddressZero, + 0, + 12378, + `0x${'00'.repeat(32)}`, + ), + ).to.be.revertedWith('!remote'); + }); + + it('remotely-originating asset roundtrip', async () => { + // generate transfer action + const transferAction = ethers.utils.hexConcat([ + TRANSER_TAG, + deployerId, + TOKEN_VALUE_BYTES, + ]); + const transferMessage = ethers.utils.hexConcat([ + deploy.testTokenId, + transferAction, + ]); + + // INBOUND + + let handleTx = await deploy.bridgeRouter!.handle( + deploy.remoteDomain, + deployerId, + transferMessage, + { gasLimit: PROTOCOL_PROCESS_GAS }, + ); + + await expect(handleTx).to.emit(deploy.bridgeRouter!, 'TokenDeployed'); + + const repr = await deploy.getTestRepresentation(); + + expect(repr).to.not.be.undefined; + expect(await repr!.balanceOf(deployer.address)).to.equal( + BigNumber.from(TOKEN_VALUE), + ); + expect(await repr!.totalSupply()).to.equal(BigNumber.from(TOKEN_VALUE)); + + // OUTBOUND, TOO MANY TOKENS + const stealTx = deploy.bridgeRouter!.send( + repr!.address, + TOKEN_VALUE * 10, + deploy.remoteDomain, + deployerId, + ); + + await expect(stealTx).to.be.revertedWith( + 'ERC20: burn amount exceeds balance', + ); + + // OUTBOUND + const sendTx = await deploy.bridgeRouter!.send( + repr!.address, + TOKEN_VALUE, + deploy.remoteDomain, + deployerId, + ); + + await expect(sendTx) + .to.emit(deploy.mockCore, 'Enqueue') + .withArgs(deploy.remoteDomain, deployerId, transferMessage); + + expect(await repr!.totalSupply()).to.equal(BigNumber.from(0)); + + // OUTBOUND, NO Tokens + const badTx = deploy.bridgeRouter!.send( + repr!.address, + TOKEN_VALUE, + deploy.remoteDomain, + deployerId, + ); + await expect(badTx).to.be.revertedWith( + 'ERC20: burn amount exceeds balance', + ); + }); + + it('locally-originating asset roundtrip', async () => { + // SETUP + + const localToken = await new BridgeToken__factory(deployer).deploy(); + await localToken.initialize(); + await localToken.mint(deployerAddress, TOKEN_VALUE); + + // generate protocol messages + const localTokenId = ethers.utils.hexConcat([ + deploy.localDomainBytes, + toBytes32(localToken.address), + ]); + const transferAction = ethers.utils.hexConcat([ + TRANSER_TAG, + deployerId, + TOKEN_VALUE_BYTES, + ]); + const transferMessage = ethers.utils.hexConcat([ + localTokenId, + transferAction, + ]); + + expect(await localToken.balanceOf(deployerAddress)).to.equal( + BigNumber.from(TOKEN_VALUE), + ); + expect(await localToken.balanceOf(deploy.bridgeRouter!.address)).to.equal( + BigNumber.from(0), + ); + + // TOKEN NOT APPROVED + const unapproved = deploy.bridgeRouter!.send( + localToken.address, + 1, + deploy.remoteDomain, + deployerId, + ); + + expect(unapproved).to.be.revertedWith( + 'ERC20: transfer amount exceeds allowance', + ); + expect(await localToken.balanceOf(deploy.bridgeRouter!.address)).to.equal( + BigNumber.from(0), + ); + + // INSUFFICIENT BALANCE + await localToken.approve( + deploy.bridgeRouter!.address, + ethers.constants.MaxUint256, + ); + + const badTx = deploy.bridgeRouter!.send( + localToken.address, + TOKEN_VALUE * 5, + deploy.remoteDomain, + deployerId, + ); + + expect(badTx).to.be.revertedWith( + 'ERC20: transfer amount exceeds balance', + ); + expect(await localToken.balanceOf(deploy.bridgeRouter!.address)).to.equal( + BigNumber.from(0), + ); + + // OUTBOUND + const sendTx = await deploy.bridgeRouter!.send( + localToken.address, + TOKEN_VALUE, + deploy.remoteDomain, + deployerId, + ); + + await expect(sendTx) + .to.emit(deploy.mockCore, 'Enqueue') + .withArgs(deploy.remoteDomain, deployerId, transferMessage); + + expect(await localToken.balanceOf(deploy.bridgeRouter!.address)).to.equal( + BigNumber.from(TOKEN_VALUE), + ); + + // INBOUND + let handleTx = await deploy.bridgeRouter!.handle( + deploy.remoteDomain, + deployerId, + transferMessage, + { gasLimit: PROTOCOL_PROCESS_GAS }, + ); + + expect(handleTx).to.not.emit(deploy.bridgeRouter!, 'TokenDeployed'); + + expect(await localToken.balanceOf(deploy.bridgeRouter!.address)).to.equal( + BigNumber.from(0), + ); + + expect(await localToken.balanceOf(deployerAddress)).to.equal( + BigNumber.from(TOKEN_VALUE), + ); + }); + }); + + describe('Prefill', async () => { + it('errors for non-existing assets', async () => { + // generate transfer action + const transferAction = ethers.utils.hexConcat([ + TRANSER_TAG, deployerId, - transferMessage - )).to.emit(bridgeRouter, "TokenDeployed"); + TOKEN_VALUE_BYTES, + ]); + const transferMessage = ethers.utils.hexConcat([ + deploy.testTokenId, + transferAction, + ]); - const repr: IERC20 = await getRepresentationTokenContract(deployer, bridgeRouter, DOMAIN, CANONICAL_TOKEN_ADDRESS); + expect(deploy.bridgeRouter!.preFill(transferMessage)).to.be.revertedWith( + '!token', + ); + }); - expect(await repr.balanceOf(deployer.address)).to.equal(BigNumber.from(TOKEN_VALUE)); - expect(await repr.totalSupply()).to.equal(BigNumber.from(TOKEN_VALUE)); + it('remotely-originating asset', async () => { + // SETUP REPRESENTATION + const setupAction = ethers.utils.hexConcat([ + TRANSER_TAG, + deployerId, + TOKEN_VALUE_BYTES, + ]); + const setupMessage = ethers.utils.hexConcat([ + deploy.testTokenId, + setupAction, + ]); + + const setupTx = await deploy.bridgeRouter!.handle( + deploy.remoteDomain, + deployerId, + setupMessage, + { gasLimit: PROTOCOL_PROCESS_GAS }, + ); + + await expect(setupTx).to.emit(deploy.bridgeRouter!, 'TokenDeployed'); + const repr = await deploy.getTestRepresentation(); + expect(await repr!.balanceOf(deployerAddress)).to.equal( + BigNumber.from(TOKEN_VALUE), + ); + + // APPROVE + await repr?.approve( + deploy.bridgeRouter!.address, + ethers.constants.MaxUint256, + ); + + // generate transfer action + const recipient = `0x${'00'.repeat(19)}ff`; + const recipientId = toBytes32(recipient); + const transferAction = ethers.utils.hexConcat([ + TRANSER_TAG, + recipientId, + TOKEN_VALUE_BYTES, + ]); + const transferMessage = ethers.utils.hexConcat([ + deploy.testTokenId, + transferAction, + ]); + + // DISPATCH PREFILL TX + const prefillTx = await deploy.bridgeRouter!.preFill(transferMessage); + await expect(prefillTx) + .to.emit(repr, 'Transfer') + .withArgs( + deployerAddress, + recipient, + BigNumber.from(TOKEN_VALUE).mul(9995).div(10000), + ); + + // DELIVER PREFILLED MESSAGE + let deliver = deploy.bridgeRouter!.handle( + deploy.remoteDomain, + deployerId, + transferMessage, + { gasLimit: PROTOCOL_PROCESS_GAS }, + ); + await expect(deliver) + .to.emit(repr, 'Transfer') + .withArgs(ethers.constants.AddressZero, deployerAddress, TOKEN_VALUE); + }); + + it('locally-originating asset', async () => { + // SETUP + + const localToken = await new BridgeToken__factory(deployer).deploy(); + await localToken.initialize(); + await localToken.mint(deployerAddress, TOKEN_VALUE); + await localToken.mint(deploy.bridgeRouter!.address, TOKEN_VALUE); + await localToken.approve( + deploy.bridgeRouter!.address, + ethers.constants.MaxUint256, + ); + + expect(await localToken.balanceOf(deployerAddress)).to.equal( + BigNumber.from(TOKEN_VALUE), + ); + expect(await localToken.balanceOf(deploy.bridgeRouter!.address)).to.equal( + BigNumber.from(TOKEN_VALUE), + ); + + // generate transfer action + const recipient = `0x${'00'.repeat(19)}ff`; + const recipientId = toBytes32(recipient); + const localTokenId = ethers.utils.hexConcat([ + deploy.localDomainBytes, + toBytes32(localToken.address), + ]); + const transferAction = ethers.utils.hexConcat([ + TRANSER_TAG, + recipientId, + TOKEN_VALUE_BYTES, + ]); + const transferMessage = ethers.utils.hexConcat([ + localTokenId, + transferAction, + ]); + + // DISPATCH PREFILL TX + const prefillTx = await deploy.bridgeRouter!.preFill(transferMessage); + await expect(prefillTx) + .to.emit(localToken, 'Transfer') + .withArgs( + deployerAddress, + recipient, + BigNumber.from(TOKEN_VALUE).mul(9995).div(10000), + ); + + // DELIVER PREFILLED MESSAGE + let deliver = deploy.bridgeRouter!.handle( + deploy.remoteDomain, + deployerId, + transferMessage, + { gasLimit: PROTOCOL_PROCESS_GAS }, + ); + await expect(deliver) + .to.emit(localToken, 'Transfer') + .withArgs(deploy.bridgeRouter!.address, deployerAddress, TOKEN_VALUE); + }); }); }); diff --git a/typescript/typechain/optics-core/factories/GovernanceRouter__factory.ts b/typescript/typechain/optics-core/factories/GovernanceRouter__factory.ts index 708dc481c..e3849c17d 100644 --- a/typescript/typechain/optics-core/factories/GovernanceRouter__factory.ts +++ b/typescript/typechain/optics-core/factories/GovernanceRouter__factory.ts @@ -475,7 +475,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200395338038062003953833981016040819052620000349162000050565b60e09190911b6001600160e01b03191660805260a05262000087565b6000806040838503121562000063578182fd5b825163ffffffff8116811462000077578283fd5b6020939093015192949293505050565b60805160e01c60a051613891620000c2600039806104a45280610f6352508061081d528061088e5280610f875280611aa552506138916000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806356d5d475116100d8578063db2021ae1161008c578063e6b3d94911610066578063e6b3d949146102a1578063e8c6f83a146102b4578063f05151df146102c757610177565b8063db2021ae1461027e578063de314b1914610291578063e54292981461029957610177565b806366cf8fab116100bd57806366cf8fab1461025b578063670a43c41461026e5780638d3638f41461027657610177565b806356d5d4751461024057806363706be31461025357610177565b806341bdc8b51161012f578063485cc95511610114578063485cc955146102055780634fedbbb5146102185780635585416c1461022b57610177565b806341bdc8b5146101df5780634626abee146101f257610177565b80632ead72f6116101605780632ead72f6146101af578063316c92b6146101cf5780633339df96146101d757610177565b80630c340a241461017c5780630ce219951461019a575b600080fd5b6101846102dc565b60405161019191906132fc565b60405180910390f35b6101ad6101a8366004613194565b6102f8565b005b6101c26101bd3660046130ec565b6103c2565b6040516101919190613328565b6101ad6103d4565b610184610522565b6101ad6101ed366004613004565b61053e565b6101ad610200366004613058565b610638565b6101ad610213366004613020565b610733565b6101ad610226366004613141565b6109c5565b610233610b8d565b604051610191919061359a565b6101ad61024e3660046131bf565b610bb1565b6101ad610e44565b6102336102693660046130d4565b610f27565b6101c2610f61565b610233610f85565b6101ad61028c366004613124565b610fa9565b610184611082565b6101c261109e565b6101ad6102af366004613004565b6110a4565b6101ad6102c2366004613194565b611183565b6102cf611234565b604051610191919061331d565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610300611234565b6103635760035473ffffffffffffffffffffffffffffffffffffffff16331461035e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b60405180910390fd5b6103b4565b60025473ffffffffffffffffffffffffffffffffffffffff1633146103b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b6103be8282611255565b5050565b60056020526000908152604090205481565b6103dc611234565b15610413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613450565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b6001541561049e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613487565b6104c8427f00000000000000000000000000000000000000000000000000000000000000006112e6565b600181905560025460405173ffffffffffffffffffffffffffffffffffffffff909116917f4c75781638d2c3a22c08e1295107f831b97683d017a1145733b743479a2ae225916105189190613328565b60405180910390a2565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b610546611234565b6105a05760035473ffffffffffffffffffffffffffffffffffffffff16331461059b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b6105f1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146105f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610640611234565b61069a5760035473ffffffffffffffffffffffffffffffffffffffff163314610695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b6106eb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b60005b8181101561072e5761072583838381811061070557fe5b90506020028101906107179190613627565b610720906136de565b611363565b506001016106ee565b505050565b600054610100900460ff168061074c575061074c611426565b8061075a575060005460ff16155b6107af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061376c602e913960400191505060405180910390fd5b600054610100900460ff1615801561081557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b3360016108437f00000000000000000000000000000000000000000000000000000000000000008383611437565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905561088c8561053e565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d3638f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561091b57600080fd5b505afa15801561092f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109539190613108565b63ffffffff1614610990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906133e4565b5050801561072e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b610a1e611234565b15610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613450565b6000610a608461152e565b90506000610a76610a71848661367e565b611580565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae057600080fd5b505afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1891906130b8565b73ffffffffffffffffffffffffffffffffffffffff1663d34686398684846040518463ffffffff1660e01b8152600401610b54939291906135ab565b600060405180830381600087803b158015610b6e57600080fd5b505af1158015610b82573d6000803e3d6000fd5b505050505050505050565b60035474010000000000000000000000000000000000000000900463ffffffff1681565b600480546040517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691635190bc5391610c06913391016132fc565b60206040518083038186803b158015610c1e57600080fd5b505afa158015610c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c569190613098565b610c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613419565b8282610c988282611755565b610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906133ad565b6000610cda84826117a2565b9050610d077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166117c6565b15610d4457610d3f610d3a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611821565b61186f565b610e3c565b610d6f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611908565b15610da757610d3f610da27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611966565b611980565b610dd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611a0b565b15610e0a57610d3f610e057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611a14565b611a2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613563565b505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b600154610ece576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103559061333f565b60006001556002546040517f5397c02652a688dd1cac8544f233b3daaf96d7a9f974af80b70ab1538359e26191610f1d9173ffffffffffffffffffffffffffffffffffffffff909116906132fc565b60405180910390a1565b60068181548110610f3757600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035473ffffffffffffffffffffffffffffffffffffffff163314610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b611002611234565b15611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613450565b600061104483611aa3565b9050611051838383611437565b801561105d57506103be565b60006110718461106c85611ad2565b611aeb565b905061107c81611b18565b50505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60025473ffffffffffffffffffffffffffffffffffffffff1633146110f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b60025460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f3b3f758030fa296b85e15008f79cd22af8ffd2a7dd360d8963dcaf8e9fa2b5ff90600090a3600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146111d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b6111dc611234565b15611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613450565b61121d8282611255565b60006112298383611d10565b905061072e81611b18565b60015460009080158015904283111590829061124d5750805b935050505090565b63ffffffff8216600081815260056020526040908190205490519091907fe1cc453e5e6d48a5e3dd7dc6c72117211d2bea20fbb91fd980ebc3e7f73fe546906112a19084908690613331565b60405180910390a2816112bd576112b783611d38565b506103be565b806112cb576112cb83611ddf565b5063ffffffff91909116600090815260056020526040902055565b60008282018381101561135a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b606060006113748360000151611e3f565b905060008173ffffffffffffffffffffffffffffffffffffffff1684602001516040516113a19190613254565b6000604051808303816000865af19150503d80600081146113de576040519150601f19603f3d011682016040523d82523d6000602084013e6113e3565b606091505b50935090508061141f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134be565b5050919050565b600061143130611e42565b15905090565b80611447576114458361152e565b505b600081611455576000611457565b825b600380547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8881168202929092177fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff858116918217948590556040519596509094908416937f4daaa39e87dee84708195369c30e97baa0665dc8562ac10535a0f3a9329943aa936115209390910416908990613610565b60405180910390a350505050565b63ffffffff81166000908152600560205260409020548061157b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103559061352c565b919050565b805160609060006002820167ffffffffffffffff811180156115a157600080fd5b506040519080825280602002602001820160405280156115cb578160200160208202803683370190505b509050611619600060016040516020016115e59190613270565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052906117a2565b8160008151811061162657fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090921660209283029190910182015260405161166c916000916115e5918691016132cc565b8160018151811061167957fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092166020928302919091019091015260005b828110156117435760008582815181106116c357fe5b6020026020010151905060006116f66000836000015184602001515185602001516040516020016115e593929190613227565b90508084600285018151811061170857fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092166020928302919091019091015250506001016116ad565b5061174d81611e48565b949350505050565b60035460009063ffffffff848116740100000000000000000000000000000000000000009092041614801561135a57505063ffffffff919091166000908152600560205260409020541490565b8151600090602084016117bd64ffffffffff85168284611e98565b95945050505050565b600060016117d383611ef9565b60ff1614801561135d5750604061180b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611f29565b6bffffffffffffffffffffffff16101592915050565b600061182c826117c6565b156118675761186060015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841690611f3d565b905061157b565b61135d611f63565b8060016118a0815b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841690611f87565b5060006118ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516612107565b905060005b8151811015611901576118f88282815181106118eb57fe5b6020026020010151611363565b506001016118d3565b5050505050565b600060025b60ff1661191983611ef9565b60ff1614801561135d575060256119517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611f29565b6bffffffffffffffffffffffff161492915050565b600061197182611908565b15611867576118606002611837565b80600261198c81611877565b5060006119ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166122aa565b905060006119f16119ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000087166122db565b611e3f565b905060006119fe83611aa3565b9050610e3c838383611437565b6000600361190d565b6000611a1f82611a0b565b15611867576118606003611837565b806003611a3a81611877565b506000611a687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166122aa565b90506000611a977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166122db565b90506119018282611255565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff90811691161490565b73ffffffffffffffffffffffffffffffffffffffff1690565b606061135a611b13611b0e6000600287876040516020016115e593929190613285565b61230c565b612341565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8257600080fd5b505afa158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906130b8565b905060005b60065481101561072e57600063ffffffff1660068281548110611bde57fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff1614611d08578173ffffffffffffffffffffffffffffffffffffffff1663d346863960068381548110611c3057fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff166005600060068681548110611c6757fe5b6000918252602080832060088304015463ffffffff6004600790941684026101000a909104168452830193909352604091820190205490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611cd593928991016135ab565b600060405180830381600087803b158015611cef57600080fd5b505af1158015611d03573d6000803e3d6000fd5b505050505b600101611bbf565b606061135a611b13611d336000600387876040516020016115e593929190613285565b612385565b63ffffffff811660009081526005602052604081208190555b6006548110156103be578163ffffffff1660068281548110611d6f57fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff161415611dd45760068181548110611da657fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff021916905550611ddc565b600101611d51565b50565b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f6008820401805460079092166004026101000a63ffffffff818102199093169390921691909102919091179055565b90565b3b151590565b6040516060906000611e5d8460208401612393565b90506000611e6a82611f29565b6bffffffffffffffffffffffff1690506000611e858361240b565b9184525082016020016040525092915050565b600080611ea5848461241f565b9050604051811115611eb5575060005b80611ee3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050611ef2565b611eee858585612491565b9150505b9392505050565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083168260016124a4565b60181c6bffffffffffffffffffffffff1690565b60d81b7affffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090565b6000611f9383836124c5565b612100576000611fb1611fa5856124e7565b64ffffffffff166124ed565b9150506000611fc68464ffffffffff166124ed565b604080517f5479706520617373657274696f6e206661696c65642e20476f742030780000006020808301919091527fffffffffffffffffffff0000000000000000000000000000000000000000000060b088811b8216603d8501527f2e20457870656374656420307800000000000000000000000000000000000000604785015285901b1660548301528251603e818403018152605e8301938490527f08c379a000000000000000000000000000000000000000000000000000000000909352606282018181528351608284015283519496509294508493839260a2019185019080838360005b838110156120c55781810151838201526020016120ad565b50505050905090810190601f1680156120f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5090919050565b606060006121397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084166001806124a4565b905060006121aa60028061216e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816611f29565b6bffffffffffffffffffffffff160360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000088169291906125c1565b905060008260ff1667ffffffffffffffff811180156121c857600080fd5b5060405190808252806020026020018201604052801561220257816020015b6121ef612eb8565b8152602001906001900390816121e75790505b50905060005b60006122357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516611f29565b6bffffffffffffffffffffffff1611156122a15761225283612651565b82828151811061225e57fe5b60209081029190910101515261227383612681565b82828151811061227f57fe5b602002602001015160200181905250612297836126c0565b9250600101612208565b50949350505050565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600160046124a4565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166005602061274b565b600061135d61231a83611966565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000166128b9565b606060008061234f84611f29565b6bffffffffffffffffffffffff16905060405191508192506123748483602001612933565b508181016020016040529052919050565b600061135d61231a83611a14565b6000604051828111156123a65760206060fd5b506000805b84518110156123fe5760008582815181106123c257fe5b602002602001015190506123d881848701612933565b506123e281611f29565b6bffffffffffffffffffffffff169290920191506001016123ab565b5061174d60008483612491565b600061241682612a5f565b60200292915050565b8181018281101561135d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60008160200360080260ff166124bb85858561274b565b901c949350505050565b60008164ffffffffff166124d8846124e7565b64ffffffffff16149392505050565b60d81c90565b600080601f5b600f8160ff1611156125555760ff600882021684901c61251281612a93565b61ffff16841793508160ff1660101461252d57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016124f3565b50600f5b60ff8160ff1610156125bb5760ff600882021684901c61257881612a93565b61ffff16831792508160ff1660001461259357601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612559565b50915091565b6000806125cd86612ac3565b6bffffffffffffffffffffffff1690506125e686612ad7565b6125fa856125f4848961241f565b9061241f565b1115612629577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061174d565b612633818661241f565b90506126478364ffffffffff168286611e98565b9695505050505050565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831682602061274b565b606061135d611b13604061269485612b01565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616919060046125c1565b60008160016126ce81611877565b5060006126da85612b01565b60400190506117bd818061270f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916611f29565b6bffffffffffffffffffffffff160360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000089169291906125c1565b600060ff821661275d57506000611ef2565b61276684611f29565b6bffffffffffffffffffffffff166127818460ff851661241f565b1115612823576127c261279385612ac3565b6bffffffffffffffffffffffff166127aa86611f29565b6bffffffffffffffffffffffff16858560ff16612b31565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156120c55781810151838201526020016120ad565b60208260ff161115612880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061379a603a913960400191505060405180910390fd5b60088202600061288f86612ac3565b6bffffffffffffffffffffffff16905060006128aa83612c8c565b91909501511695945050505050565b60006128c482612cd5565b61292f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f56616c696469747920617373657274696f6e206661696c656400000000000000604482015290519081900360640190fd5b5090565b600061293e83612d12565b612993576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806137d46028913960400191505060405180910390fd5b61299c83612cd5565b6129f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806137fc602b913960400191505060405180910390fd5b60006129fc84611f29565b6bffffffffffffffffffffffff1690506000612a1785612ac3565b6bffffffffffffffffffffffff1690506000604051905084811115612a3c5760206060fd5b8285848460045afa50612647612a51876124e7565b64ffffffffff168685612491565b60006020612a856020612a7185611f29565b6bffffffffffffffffffffffff169061241f565b81612a8c57fe5b0492915050565b6000612aa560048360ff16901c612d24565b60ff161760081b62ffff0016612aba82612d24565b60ff1617919050565b60781c6bffffffffffffffffffffffff1690565b6000612ae282611f29565b612aeb83612ac3565b016bffffffffffffffffffffffff169050919050565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660208061274b565b60606000612b3e866124ed565b9150506000612b4c866124ed565b9150506000612b5a866124ed565b9150506000612b68866124ed565b915050838383836040516020018080613827603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161374b82397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000612ce0826124e7565b64ffffffffff1664ffffffffff1415612cfb5750600061157b565b6000612d0683612ad7565b60405110199392505050565b6000612d1d82612e90565b1592915050565b600060f08083179060ff82161415612d4057603091505061157b565b8060ff1660f11415612d5657603191505061157b565b8060ff1660f21415612d6c57603291505061157b565b8060ff1660f31415612d8257603391505061157b565b8060ff1660f41415612d9857603491505061157b565b8060ff1660f51415612dae57603591505061157b565b8060ff1660f61415612dc457603691505061157b565b8060ff1660f71415612dda57603791505061157b565b8060ff1660f81415612df057603891505061157b565b8060ff1660f91415612e0657603991505061157b565b8060ff1660fa1415612e1c57606191505061157b565b8060ff1660fb1415612e3257606291505061157b565b8060ff1660fc1415612e4857606391505061157b565b8060ff1660fd1415612e5e57606491505061157b565b8060ff1660fe1415612e7457606591505061157b565b8060ff1660ff1415612e8a57606691505061157b565b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b60408051808201909152600081526060602082015290565b60008083601f840112612ee1578182fd5b50813567ffffffffffffffff811115612ef8578182fd5b6020830191508360208083028501011115612f1257600080fd5b9250929050565b600082601f830112612f29578081fd5b813567ffffffffffffffff811115612f3d57fe5b612f6e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161365a565b818152846020838601011115612f82578283fd5b816020850160208301379081016020019190915292915050565b600060408284031215612fad578081fd5b6040516040810167ffffffffffffffff8282108183111715612fcb57fe5b81604052829350843583526020850135915080821115612fea57600080fd5b50612ff785828601612f19565b6020830152505092915050565b600060208284031215613015578081fd5b813561135a81613716565b60008060408385031215613032578081fd5b823561303d81613716565b9150602083013561304d81613716565b809150509250929050565b6000806020838503121561306a578182fd5b823567ffffffffffffffff811115613080578283fd5b61308c85828601612ed0565b90969095509350505050565b6000602082840312156130a9578081fd5b8151801515811461135a578182fd5b6000602082840312156130c9578081fd5b815161135a81613716565b6000602082840312156130e5578081fd5b5035919050565b6000602082840312156130fd578081fd5b813561135a81613738565b600060208284031215613119578081fd5b815161135a81613738565b60008060408385031215613136578182fd5b823561303d81613738565b600080600060408486031215613155578081fd5b833561316081613738565b9250602084013567ffffffffffffffff81111561317b578182fd5b61318786828701612ed0565b9497909650939450505050565b600080604083850312156131a6578182fd5b82356131b181613738565b946020939093013593505050565b6000806000606084860312156131d3578283fd5b83356131de81613738565b925060208401359150604084013567ffffffffffffffff811115613200578182fd5b61320c86828701612f19565b9150509250925092565b6005811061322057fe5b60f81b9052565b600084825283602083015282516132458160408501602087016136ea565b91909101604001949350505050565b600082516132668184602087016136ea565b9190910192915050565b600061327c8284613216565b50600101919050565b60006132918286613216565b5060e09290921b7fffffffff000000000000000000000000000000000000000000000000000000001660018301526005820152602501919050565b60f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b918252602082015260400190565b60208082526016908201527f7265636f76657279206e6f7420696e6974696174656400000000000000000000604082015260600190565b60208082526014908201527f212063616c6c656420627920676f7665726e6f72000000000000000000000000604082015260600190565b6020808252600f908201527f21676f7665726e6f72526f757465720000000000000000000000000000000000604082015260600190565b6020808252818101527f58417070436f6e6e656374696f6e4d616e616765722062616420646f6d61696e604082015260600190565b60208082526008908201527f217265706c696361000000000000000000000000000000000000000000000000604082015260600190565b6020808252600b908201527f696e207265636f76657279000000000000000000000000000000000000000000604082015260600190565b6020808252601a908201527f7265636f7665727920616c726561647920696e69746961746564000000000000604082015260600190565b6020808252600b908201527f63616c6c206661696c6564000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f212063616c6c6564206279207265636f76657279206d616e6167657200000000604082015260600190565b60208082526007908201527f21726f7574657200000000000000000000000000000000000000000000000000604082015260600190565b60208082526013908201527f2176616c6964206d657373616765207479706500000000000000000000000000604082015260600190565b63ffffffff91909116815260200190565b600063ffffffff851682528360208301526060604083015282518060608401526135dc8160808501602087016136ea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b63ffffffff92831681529116602082015260400190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613266578182fd5b60405181810167ffffffffffffffff8111828210171561367657fe5b604052919050565b600067ffffffffffffffff83111561369257fe5b60206136a1818286020161365a565b8481528181019084845b878110156136d2576136c03683358901612f9c565b845292840192908401906001016136ab565b50909695505050505050565b600061135d3683612f9c565b60005b838110156137055781810151838201526020016136ed565b8381111561107c5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114611ddc57600080fd5b63ffffffff81168114611ddc57600080fdfe2e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656454797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a264697066735822122089d4f59cbd4151f339d3a1e75386bdecc074b5e5ea4af3d10543d62075266b2764736f6c63430007060033"; + "0x60c06040523480156200001157600080fd5b506040516200395338038062003953833981016040819052620000349162000050565b60e09190911b6001600160e01b03191660805260a05262000087565b6000806040838503121562000063578182fd5b825163ffffffff8116811462000077578283fd5b6020939093015192949293505050565b60805160e01c60a051613891620000c2600039806104a45280610f6352508061081d528061088e5280610f875280611aa552506138916000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806356d5d475116100d8578063db2021ae1161008c578063e6b3d94911610066578063e6b3d949146102a1578063e8c6f83a146102b4578063f05151df146102c757610177565b8063db2021ae1461027e578063de314b1914610291578063e54292981461029957610177565b806366cf8fab116100bd57806366cf8fab1461025b578063670a43c41461026e5780638d3638f41461027657610177565b806356d5d4751461024057806363706be31461025357610177565b806341bdc8b51161012f578063485cc95511610114578063485cc955146102055780634fedbbb5146102185780635585416c1461022b57610177565b806341bdc8b5146101df5780634626abee146101f257610177565b80632ead72f6116101605780632ead72f6146101af578063316c92b6146101cf5780633339df96146101d757610177565b80630c340a241461017c5780630ce219951461019a575b600080fd5b6101846102dc565b60405161019191906132fc565b60405180910390f35b6101ad6101a8366004613194565b6102f8565b005b6101c26101bd3660046130ec565b6103c2565b6040516101919190613328565b6101ad6103d4565b610184610522565b6101ad6101ed366004613004565b61053e565b6101ad610200366004613058565b610638565b6101ad610213366004613020565b610733565b6101ad610226366004613141565b6109c5565b610233610b8d565b604051610191919061359a565b6101ad61024e3660046131bf565b610bb1565b6101ad610e44565b6102336102693660046130d4565b610f27565b6101c2610f61565b610233610f85565b6101ad61028c366004613124565b610fa9565b610184611082565b6101c261109e565b6101ad6102af366004613004565b6110a4565b6101ad6102c2366004613194565b611183565b6102cf611234565b604051610191919061331d565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b610300611234565b6103635760035473ffffffffffffffffffffffffffffffffffffffff16331461035e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b60405180910390fd5b6103b4565b60025473ffffffffffffffffffffffffffffffffffffffff1633146103b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b6103be8282611255565b5050565b60056020526000908152604090205481565b6103dc611234565b15610413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613450565b60025473ffffffffffffffffffffffffffffffffffffffff163314610464576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b6001541561049e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613487565b6104c8427f00000000000000000000000000000000000000000000000000000000000000006112e6565b600181905560025460405173ffffffffffffffffffffffffffffffffffffffff909116917f4c75781638d2c3a22c08e1295107f831b97683d017a1145733b743479a2ae225916105189190613328565b60405180910390a2565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b610546611234565b6105a05760035473ffffffffffffffffffffffffffffffffffffffff16331461059b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b6105f1565b60025473ffffffffffffffffffffffffffffffffffffffff1633146105f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610640611234565b61069a5760035473ffffffffffffffffffffffffffffffffffffffff163314610695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b6106eb565b60025473ffffffffffffffffffffffffffffffffffffffff1633146106eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b60005b8181101561072e5761072583838381811061070557fe5b90506020028101906107179190613627565b610720906136de565b611363565b506001016106ee565b505050565b600054610100900460ff168061074c575061074c611426565b8061075a575060005460ff16155b6107af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061376c602e913960400191505060405180910390fd5b600054610100900460ff1615801561081557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b3360016108437f00000000000000000000000000000000000000000000000000000000000000008383611437565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861617905561088c8561053e565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d3638f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561091b57600080fd5b505afa15801561092f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109539190613108565b63ffffffff1614610990576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906133e4565b5050801561072e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b610a1e611234565b15610a55576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613450565b6000610a608461152e565b90506000610a76610a71848661367e565b611580565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae057600080fd5b505afa158015610af4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b1891906130b8565b73ffffffffffffffffffffffffffffffffffffffff1663d34686398684846040518463ffffffff1660e01b8152600401610b54939291906135ab565b600060405180830381600087803b158015610b6e57600080fd5b505af1158015610b82573d6000803e3d6000fd5b505050505050505050565b60035474010000000000000000000000000000000000000000900463ffffffff1681565b600480546040517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691635190bc5391610c06913391016132fc565b60206040518083038186803b158015610c1e57600080fd5b505afa158015610c32573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c569190613098565b610c8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613419565b8282610c988282611755565b610cce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906133ad565b6000610cda84826117a2565b9050610d077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166117c6565b15610d4457610d3f610d3a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611821565b61186f565b610e3c565b610d6f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611908565b15610da757610d3f610da27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611966565b611980565b610dd27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611a0b565b15610e0a57610d3f610e057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611a14565b611a2e565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613563565b505050505050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610e95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b600154610ece576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103559061333f565b60006001556002546040517f5397c02652a688dd1cac8544f233b3daaf96d7a9f974af80b70ab1538359e26191610f1d9173ffffffffffffffffffffffffffffffffffffffff909116906132fc565b60405180910390a1565b60068181548110610f3757600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60035473ffffffffffffffffffffffffffffffffffffffff163314610ffa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b611002611234565b15611039576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613450565b600061104483611aa3565b9050611051838383611437565b801561105d57506103be565b60006110718461106c85611ad2565b611aeb565b905061107c81611b18565b50505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60025473ffffffffffffffffffffffffffffffffffffffff1633146110f5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134f5565b60025460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f3b3f758030fa296b85e15008f79cd22af8ffd2a7dd360d8963dcaf8e9fa2b5ff90600090a3600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146111d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613376565b6111dc611234565b15611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161035590613450565b61121d8282611255565b60006112298383611d10565b905061072e81611b18565b60015460009080158015904283111590829061124d5750805b935050505090565b63ffffffff8216600081815260056020526040908190205490519091907fe1cc453e5e6d48a5e3dd7dc6c72117211d2bea20fbb91fd980ebc3e7f73fe546906112a19084908690613331565b60405180910390a2816112bd576112b783611d38565b506103be565b806112cb576112cb83611ddf565b5063ffffffff91909116600090815260056020526040902055565b60008282018381101561135a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b606060006113748360000151611e3f565b905060008173ffffffffffffffffffffffffffffffffffffffff1684602001516040516113a19190613254565b6000604051808303816000865af19150503d80600081146113de576040519150601f19603f3d011682016040523d82523d6000602084013e6113e3565b606091505b50935090508061141f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610355906134be565b5050919050565b600061143130611e42565b15905090565b80611447576114458361152e565b505b600081611455576000611457565b825b600380547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8881168202929092177fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff858116918217948590556040519596509094908416937f4daaa39e87dee84708195369c30e97baa0665dc8562ac10535a0f3a9329943aa936115209390910416908990613610565b60405180910390a350505050565b63ffffffff81166000908152600560205260409020548061157b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103559061352c565b919050565b805160609060006002820167ffffffffffffffff811180156115a157600080fd5b506040519080825280602002602001820160405280156115cb578160200160208202803683370190505b509050611619600060016040516020016115e59190613270565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152919052906117a2565b8160008151811061162657fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090921660209283029190910182015260405161166c916000916115e5918691016132cc565b8160018151811061167957fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092166020928302919091019091015260005b828110156117435760008582815181106116c357fe5b6020026020010151905060006116f66000836000015184602001515185602001516040516020016115e593929190613227565b90508084600285018151811061170857fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092166020928302919091019091015250506001016116ad565b5061174d81611e48565b949350505050565b60035460009063ffffffff848116740100000000000000000000000000000000000000009092041614801561135a57505063ffffffff919091166000908152600560205260409020541490565b8151600090602084016117bd64ffffffffff85168284611e98565b95945050505050565b600060016117d383611ef9565b60ff1614801561135d5750604061180b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611f29565b6bffffffffffffffffffffffff16101592915050565b600061182c826117c6565b156118675761186060015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841690611f3d565b905061157b565b61135d611f63565b8060016118a0815b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841690611f87565b5060006118ce7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516612107565b905060005b8151811015611901576118f88282815181106118eb57fe5b6020026020010151611363565b506001016118d3565b5050505050565b600060025b60ff1661191983611ef9565b60ff1614801561135d575060256119517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611f29565b6bffffffffffffffffffffffff161492915050565b600061197182611908565b15611867576118606002611837565b80600261198c81611877565b5060006119ba7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166122aa565b905060006119f16119ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000087166122db565b611e3f565b905060006119fe83611aa3565b9050610e3c838383611437565b6000600361190d565b6000611a1f82611a0b565b15611867576118606003611837565b806003611a3a81611877565b506000611a687fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166122aa565b90506000611a977fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166122db565b90506119018282611255565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff90811691161490565b73ffffffffffffffffffffffffffffffffffffffff1690565b606061135a611b13611b0e6000600287876040516020016115e593929190613285565b61230c565b612341565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611b8257600080fd5b505afa158015611b96573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bba91906130b8565b905060005b60065481101561072e57600063ffffffff1660068281548110611bde57fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff1614611d08578173ffffffffffffffffffffffffffffffffffffffff1663d346863960068381548110611c3057fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff166005600060068681548110611c6757fe5b6000918252602080832060088304015463ffffffff6004600790941684026101000a909104168452830193909352604091820190205490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611cd593928991016135ab565b600060405180830381600087803b158015611cef57600080fd5b505af1158015611d03573d6000803e3d6000fd5b505050505b600101611bbf565b606061135a611b13611d336000600387876040516020016115e593929190613285565b612385565b63ffffffff811660009081526005602052604081208190555b6006548110156103be578163ffffffff1660068281548110611d6f57fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff161415611dd45760068181548110611da657fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff021916905550611ddc565b600101611d51565b50565b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f6008820401805460079092166004026101000a63ffffffff818102199093169390921691909102919091179055565b90565b3b151590565b6040516060906000611e5d8460208401612393565b90506000611e6a82611f29565b6bffffffffffffffffffffffff1690506000611e858361240b565b9184525082016020016040525092915050565b600080611ea5848461241f565b9050604051811115611eb5575060005b80611ee3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050611ef2565b611eee858585612491565b9150505b9392505050565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083168260016124a4565b60181c6bffffffffffffffffffffffff1690565b60d81b7affffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090565b6000611f9383836124c5565b612100576000611fb1611fa5856124e7565b64ffffffffff166124ed565b9150506000611fc68464ffffffffff166124ed565b604080517f5479706520617373657274696f6e206661696c65642e20476f742030780000006020808301919091527fffffffffffffffffffff0000000000000000000000000000000000000000000060b088811b8216603d8501527f2e20457870656374656420307800000000000000000000000000000000000000604785015285901b1660548301528251603e818403018152605e8301938490527f08c379a000000000000000000000000000000000000000000000000000000000909352606282018181528351608284015283519496509294508493839260a2019185019080838360005b838110156120c55781810151838201526020016120ad565b50505050905090810190601f1680156120f25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5090919050565b606060006121397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084166001806124a4565b905060006121aa60028061216e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816611f29565b6bffffffffffffffffffffffff160360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000088169291906125c1565b905060008260ff1667ffffffffffffffff811180156121c857600080fd5b5060405190808252806020026020018201604052801561220257816020015b6121ef612eb8565b8152602001906001900390816121e75790505b50905060005b60006122357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516611f29565b6bffffffffffffffffffffffff1611156122a15761225283612651565b82828151811061225e57fe5b60209081029190910101515261227383612681565b82828151811061227f57fe5b602002602001015160200181905250612297836126c0565b9250600101612208565b50949350505050565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600160046124a4565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166005602061274b565b600061135d61231a83611966565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000166128b9565b606060008061234f84611f29565b6bffffffffffffffffffffffff16905060405191508192506123748483602001612933565b508181016020016040529052919050565b600061135d61231a83611a14565b6000604051828111156123a65760206060fd5b506000805b84518110156123fe5760008582815181106123c257fe5b602002602001015190506123d881848701612933565b506123e281611f29565b6bffffffffffffffffffffffff169290920191506001016123ab565b5061174d60008483612491565b600061241682612a5f565b60200292915050565b8181018281101561135d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60008160200360080260ff166124bb85858561274b565b901c949350505050565b60008164ffffffffff166124d8846124e7565b64ffffffffff16149392505050565b60d81c90565b600080601f5b600f8160ff1611156125555760ff600882021684901c61251281612a93565b61ffff16841793508160ff1660101461252d57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016124f3565b50600f5b60ff8160ff1610156125bb5760ff600882021684901c61257881612a93565b61ffff16831792508160ff1660001461259357601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612559565b50915091565b6000806125cd86612ac3565b6bffffffffffffffffffffffff1690506125e686612ad7565b6125fa856125f4848961241f565b9061241f565b1115612629577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061174d565b612633818661241f565b90506126478364ffffffffff168286611e98565b9695505050505050565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831682602061274b565b606061135d611b13604061269485612b01565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616919060046125c1565b60008160016126ce81611877565b5060006126da85612b01565b60400190506117bd818061270f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916611f29565b6bffffffffffffffffffffffff160360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000089169291906125c1565b600060ff821661275d57506000611ef2565b61276684611f29565b6bffffffffffffffffffffffff166127818460ff851661241f565b1115612823576127c261279385612ac3565b6bffffffffffffffffffffffff166127aa86611f29565b6bffffffffffffffffffffffff16858560ff16612b31565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526020600482018181528351602484015283519092839260449091019190850190808383600083156120c55781810151838201526020016120ad565b60208260ff161115612880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061379a603a913960400191505060405180910390fd5b60088202600061288f86612ac3565b6bffffffffffffffffffffffff16905060006128aa83612c8c565b91909501511695945050505050565b60006128c482612cd5565b61292f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f56616c696469747920617373657274696f6e206661696c656400000000000000604482015290519081900360640190fd5b5090565b600061293e83612d12565b612993576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806137d46028913960400191505060405180910390fd5b61299c83612cd5565b6129f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806137fc602b913960400191505060405180910390fd5b60006129fc84611f29565b6bffffffffffffffffffffffff1690506000612a1785612ac3565b6bffffffffffffffffffffffff1690506000604051905084811115612a3c5760206060fd5b8285848460045afa50612647612a51876124e7565b64ffffffffff168685612491565b60006020612a856020612a7185611f29565b6bffffffffffffffffffffffff169061241f565b81612a8c57fe5b0492915050565b6000612aa560048360ff16901c612d24565b60ff161760081b62ffff0016612aba82612d24565b60ff1617919050565b60781c6bffffffffffffffffffffffff1690565b6000612ae282611f29565b612aeb83612ac3565b016bffffffffffffffffffffffff169050919050565b600061135d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660208061274b565b60606000612b3e866124ed565b9150506000612b4c866124ed565b9150506000612b5a866124ed565b9150506000612b68866124ed565b915050838383836040516020018080613827603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161374b82397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000612ce0826124e7565b64ffffffffff1664ffffffffff1415612cfb5750600061157b565b6000612d0683612ad7565b60405110199392505050565b6000612d1d82612e90565b1592915050565b600060f08083179060ff82161415612d4057603091505061157b565b8060ff1660f11415612d5657603191505061157b565b8060ff1660f21415612d6c57603291505061157b565b8060ff1660f31415612d8257603391505061157b565b8060ff1660f41415612d9857603491505061157b565b8060ff1660f51415612dae57603591505061157b565b8060ff1660f61415612dc457603691505061157b565b8060ff1660f71415612dda57603791505061157b565b8060ff1660f81415612df057603891505061157b565b8060ff1660f91415612e0657603991505061157b565b8060ff1660fa1415612e1c57606191505061157b565b8060ff1660fb1415612e3257606291505061157b565b8060ff1660fc1415612e4857606391505061157b565b8060ff1660fd1415612e5e57606491505061157b565b8060ff1660fe1415612e7457606591505061157b565b8060ff1660ff1415612e8a57606691505061157b565b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b60408051808201909152600081526060602082015290565b60008083601f840112612ee1578182fd5b50813567ffffffffffffffff811115612ef8578182fd5b6020830191508360208083028501011115612f1257600080fd5b9250929050565b600082601f830112612f29578081fd5b813567ffffffffffffffff811115612f3d57fe5b612f6e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161365a565b818152846020838601011115612f82578283fd5b816020850160208301379081016020019190915292915050565b600060408284031215612fad578081fd5b6040516040810167ffffffffffffffff8282108183111715612fcb57fe5b81604052829350843583526020850135915080821115612fea57600080fd5b50612ff785828601612f19565b6020830152505092915050565b600060208284031215613015578081fd5b813561135a81613716565b60008060408385031215613032578081fd5b823561303d81613716565b9150602083013561304d81613716565b809150509250929050565b6000806020838503121561306a578182fd5b823567ffffffffffffffff811115613080578283fd5b61308c85828601612ed0565b90969095509350505050565b6000602082840312156130a9578081fd5b8151801515811461135a578182fd5b6000602082840312156130c9578081fd5b815161135a81613716565b6000602082840312156130e5578081fd5b5035919050565b6000602082840312156130fd578081fd5b813561135a81613738565b600060208284031215613119578081fd5b815161135a81613738565b60008060408385031215613136578182fd5b823561303d81613738565b600080600060408486031215613155578081fd5b833561316081613738565b9250602084013567ffffffffffffffff81111561317b578182fd5b61318786828701612ed0565b9497909650939450505050565b600080604083850312156131a6578182fd5b82356131b181613738565b946020939093013593505050565b6000806000606084860312156131d3578283fd5b83356131de81613738565b925060208401359150604084013567ffffffffffffffff811115613200578182fd5b61320c86828701612f19565b9150509250925092565b6005811061322057fe5b60f81b9052565b600084825283602083015282516132458160408501602087016136ea565b91909101604001949350505050565b600082516132668184602087016136ea565b9190910192915050565b600061327c8284613216565b50600101919050565b60006132918286613216565b5060e09290921b7fffffffff000000000000000000000000000000000000000000000000000000001660018301526005820152602501919050565b60f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b918252602082015260400190565b60208082526016908201527f7265636f76657279206e6f7420696e6974696174656400000000000000000000604082015260600190565b60208082526014908201527f212063616c6c656420627920676f7665726e6f72000000000000000000000000604082015260600190565b6020808252600f908201527f21676f7665726e6f72526f757465720000000000000000000000000000000000604082015260600190565b6020808252818101527f58417070436f6e6e656374696f6e4d616e616765722062616420646f6d61696e604082015260600190565b60208082526008908201527f217265706c696361000000000000000000000000000000000000000000000000604082015260600190565b6020808252600b908201527f696e207265636f76657279000000000000000000000000000000000000000000604082015260600190565b6020808252601a908201527f7265636f7665727920616c726561647920696e69746961746564000000000000604082015260600190565b6020808252600b908201527f63616c6c206661696c6564000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f212063616c6c6564206279207265636f76657279206d616e6167657200000000604082015260600190565b60208082526007908201527f21726f7574657200000000000000000000000000000000000000000000000000604082015260600190565b60208082526013908201527f2176616c6964206d657373616765207479706500000000000000000000000000604082015260600190565b63ffffffff91909116815260200190565b600063ffffffff851682528360208301526060604083015282518060608401526135dc8160808501602087016136ea565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b63ffffffff92831681529116602082015260400190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613266578182fd5b60405181810167ffffffffffffffff8111828210171561367657fe5b604052919050565b600067ffffffffffffffff83111561369257fe5b60206136a1818286020161365a565b8481528181019084845b878110156136d2576136c03683358901612f9c565b845292840192908401906001016136ab565b50909695505050505050565b600061135d3683612f9c565b60005b838110156137055781810151838201526020016136ed565b8381111561107c5750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114611ddc57600080fd5b63ffffffff81168114611ddc57600080fdfe2e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656454797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a2646970667358221220df2cac2bb18106012daf55341f2558fcbda88011f84b7aa840aa285e4c66293364736f6c63430007060033"; export class GovernanceRouter__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-core/factories/Home__factory.ts b/typescript/typechain/optics-core/factories/Home__factory.ts index bf1f7f26b..a9024478b 100644 --- a/typescript/typechain/optics-core/factories/Home__factory.ts +++ b/typescript/typechain/optics-core/factories/Home__factory.ts @@ -571,7 +571,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b5060405161286d38038061286d8339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166127fa6100736000398061096352806109945280610dce52806111fa52506127fa6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80639df6c8e1116100e3578063d34686391161008c578063f2fde38b11610066578063f2fde38b14610663578063f6d1610214610696578063fd54b2281461069e57610198565b8063d34686391461059b578063df034cd014610653578063ebf0c7171461065b57610198565b8063b31c01fb116100bd578063b31c01fb1461048d578063c19d93fb1461053f578063c4d66de81461056857610198565b80639df6c8e1146104755780639fa6a6e31461047d578063ab91c7b01461048557610198565b8063522ae002116101455780638e4e30e01161011f5780638e4e30e01461035d5780639776120e1461040f5780639d54f4191461044257610198565b8063522ae0021461031c5780638d3638f4146103245780638da5cb5b1461032c57610198565b80632bef2892116101765780632bef2892146102c257806336e104de146102f357806345630b1a1461031457610198565b806306661abd1461019d57806319d9d21a146101b75780632752e0f414610286575b600080fd5b6101a56106a6565b60408051918252519081900360200190f35b610284600480360360a08110156101cd57600080fd5b81359160208101918101906080810160608201356401000000008111156101f357600080fd5b82018360208201111561020557600080fd5b8035906020019184600183028401116401000000008311171561022757600080fd5b91939092909160208101903564010000000081111561024557600080fd5b82018360208201111561025757600080fd5b8035906020019184600183028401116401000000008311171561027957600080fd5b5090925090506106ac565b005b6102a96004803603602081101561029c57600080fd5b503563ffffffff16610909565b6040805163ffffffff9092168252519081900360200190f35b6102df600480360360208110156102d857600080fd5b5035610921565b604080519115158252519081900360200190f35b6102fb610934565b6040805192835260208301919091528051918290030190f35b6101a561095c565b6101a561098c565b6102a9610992565b6103346109b6565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102df6004803603606081101561037357600080fd5b81359160208101359181019060608101604082013564010000000081111561039a57600080fd5b8201836020820111156103ac57600080fd5b803590602001918460018302840111640100000000831117156103ce57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109d2945050505050565b6102846004803603602081101561042557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ba5565b6102846004803603602081101561045857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c37565b610334610cc6565b6101a5610ce2565b6101a5610ce8565b610284600480360360608110156104a357600080fd5b8135916020810135918101906060810160408201356401000000008111156104ca57600080fd5b8201836020820111156104dc57600080fd5b803590602001918460018302840111640100000000831117156104fe57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610cf4945050505050565b610547610e92565b6040518082600281111561055757fe5b815260200191505060405180910390f35b6102846004803603602081101561057e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610eb3565b610284600480360360608110156105b157600080fd5b63ffffffff823516916020810135918101906060810160408201356401000000008111156105de57600080fd5b8201836020820111156105f057600080fd5b8035906020019184600183028401116401000000008311171561061257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110d0945050505050565b610334611352565b6101a561136e565b6102846004803603602081101561067957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661137a565b6101a5611409565b6101a5611415565b60215490565b600260245474010000000000000000000000000000000000000000900460ff1660028111156106d757fe5b141561074457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f8601819004810282018101909252848152610786918891883591889088908190840183828082843760009201919091525061141b92505050565b80156107d557506107d586866001602002013584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061141b92505050565b80156107e657508435602086013514155b15610901576107f36114ad565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b60266020526000908152604090205463ffffffff1681565b600061092e602283611588565b92915050565b60008061094160226115f8565b156109585760255491506109556022611638565b90505b9091565b60006109877f0000000000000000000000000000000000000000000000000000000000000000611675565b905090565b61080081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60285473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260245474010000000000000000000000000000000000000000900460ff1660028111156109ff57fe5b1415610a6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610a7784848461141b565b610ae257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6025548414610b5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f7420612063757272656e7420757064617465000000000000000000000000604482015290519081900360640190fd5b610b5d602284611588565b610b9a57610b696114ad565b6040517fb015f3b3a7a56304206e1e4d15f0dad9b2914691bbe7ab34e407c53b2700a91b90600090a1506001610b9e565b5060005b9392505050565b60285473ffffffffffffffffffffffffffffffffffffffff163314610c2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e65720000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c34816116ea565b50565b60275473ffffffffffffffffffffffffffffffffffffffff163314610cbd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f21757064617465724d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b610c34816117d7565b60275473ffffffffffffffffffffffffffffffffffffffff1681565b60255481565b600061098760226115f8565b600260245474010000000000000000000000000000000000000000900460ff166002811115610d1f57fe5b1415610d8c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610d978383836109d2565b15610da157610e8d565b6000610dad6022611850565b905082811415610dbd5750610dc3565b50610da1565b8160258190555081837f000000000000000000000000000000000000000000000000000000000000000063ffffffff167f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2846040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e52578181015183820152602001610e3a565b50505050905090810190601f168015610e7f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45b505050565b60245474010000000000000000000000000000000000000000900460ff1681565b600054610100900460ff1680610ecc5750610ecc611989565b80610eda575060005460ff16155b610f2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612775602e913960400191505060405180910390fd5b600054610100900460ff16158015610f9557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610f9e3361199a565b610fa7826116ea565b610fb16022611a28565b602754604080517fdf034cd0000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163df034cd0916004808301926020929190829003018186803b15801561101c57600080fd5b505afa158015611030573d6000803e3d6000fd5b505050506040513d602081101561104657600080fd5b5051905061105381611a6c565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f9e5f57e4ee5f9eeac3131028d48f19d80820ce6fa93c4c66cc82a3e2b9837c329181900360200190a15080156110cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600260245474010000000000000000000000000000000000000000900460ff1660028111156110fb57fe5b141561116857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610800815111156111da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f21746f6f20626967000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff808416600090815260266020526040812054909116906112237f00000000000000000000000000000000000000000000000000000000000000003384888888611bf9565b80516020820120909150611238600182611ccf565b61124b61124361136e565b602290611dd7565b50806112578785611e44565b67ffffffffffffffff16600161126b6106a6565b037f1a2a870182b13cdb4a0ec2e16f96df5a0e20b1327d43564f7f0e62992a55bd6c856040518080602001828103825283818151815260200191508051906020019080838360005b838110156112cb5781810151838201526020016112b3565b50505050905090810190601f1680156112f85780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505063ffffffff938416600090815260266020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016600192909201909416179092555050565b60245473ffffffffffffffffffffffffffffffffffffffff1681565b60006109876001611e5e565b60285473ffffffffffffffffffffffffffffffffffffffff16331461140057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e65720000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c348161199a565b60006109876022611638565b60215481565b60008061142661095c565b858560405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120905061146781611e71565b60245490915073ffffffffffffffffffffffffffffffffffffffff1661148d8285611ec2565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b6114b5611f5c565b602754604080517f5b3c2cbf000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff90921691635b3c2cbf9160248082019260009290919082900301818387803b15801561152757600080fd5b505af115801561153b573d6000803e3d6000fd5b505060245460405133935073ffffffffffffffffffffffffffffffffffffffff90911691507f98064af315f26d7333ba107ba43a128ec74345f4d4e6f2549840fe092a1c8bce90600090a3565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111610b9a5760008181526001850160205260409020548314156115f057600191505061092e565b6001016115a0565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166116308282611f9d565b949350505050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b6116f381611fb7565b61175e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f21636f6e747261637420757064617465724d616e616765720000000000000000604482015290519081900360640190fd5b6027805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f958d788fb4c373604cd4c73aa8c592de127d0819b49bb4dc02c8ecd666e965bf9181900360200190a150565b6024805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f9e5f57e4ee5f9eeac3131028d48f19d80820ce6fa93c4c66cc82a3e2b9837c329181900360200190a150565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166118888282611f9d565b6118f357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff8116600090815260018501602052604090205492508215611944576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b600061199430611fb7565b15905090565b60285460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3602880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b80546fffffffffffffffffffffffffffffffff16610c345780547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600117815550565b600054610100900460ff1680611a855750611a85611989565b80611a93575060005460ff16155b611ae8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612775602e913960400191505060405180910390fd5b600054610100900460ff16158015611b4e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905580156110cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6060868686868686604051602001808763ffffffff1660e01b81526004018681526020018563ffffffff1660e01b81526004018463ffffffff1660e01b815260040183815260200182805190602001908083835b60208310611c8a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c4d565b6001836020036101000a038019825116818451168082178552505050505050905001965050505050505060405160208183030381529060405290509695505050505050565b602082015463ffffffff11611d4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6d65726b6c6520747265652066756c6c00000000000000000000000000000000604482015290519081900360640190fd5b6020820180546001019081905560005b6020811015611dd4578160011660011415611d815782848260208110611d7757fe5b0155506110cc9050565b838160208110611d8d57fe5b015483604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120925060028281611dc957fe5b049150600101611d55565b50fe5b81546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000928390048216600101918216909202919091178355811561092e576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b63ffffffff1660209190911b67ffffffff00000000161790565b600061092e82611e6c611fbd565b61247e565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008151604114611f3457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a611f528682858561253c565b9695505050505050565b602480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055565b60019103016fffffffffffffffffffffffffffffffff1690565b3b151590565b611fc5612733565b600081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560208201527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3060408201527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba8560608201527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a1934460808201527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d60a08201527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a196860c08201527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f8360e08201527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6101008201527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06101208201527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56101408201527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926101608201527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6101808201527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6101a08201527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6101c08201527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26101e08201527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6102008201527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6102208201527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06102408201527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06102608201527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26102808201527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96102a08201527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776102c08201527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526102e08201527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6103008201527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6103208201527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06103408201527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6103608201527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6103808201527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226103a08201527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356103c08201527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96103e082015290565b6020820154600090815b602081101561253457600182821c1660008683602081106124a557fe5b0154905081600114156124e8578085604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120945061252a565b848684602081106124f557fe5b602002015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094505b5050600101612488565b505092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127536022913960400191505060405180910390fd5b8360ff16601b14806125cc57508360ff16601c145b612621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127a36022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561267d573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661272a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b604051806104000160405280602090602082028036833750919291505056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c7565496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565a2646970667358221220411f0ccec0190f7c285666b083eb82d6778a5c6de1b5c8e24ad19aa6d094625164736f6c63430007060033"; + "0x60a060405234801561001057600080fd5b5060405161286d38038061286d8339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166127fa6100736000398061096352806109945280610dce52806111fa52506127fa6000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80639df6c8e1116100e3578063d34686391161008c578063f2fde38b11610066578063f2fde38b14610663578063f6d1610214610696578063fd54b2281461069e57610198565b8063d34686391461059b578063df034cd014610653578063ebf0c7171461065b57610198565b8063b31c01fb116100bd578063b31c01fb1461048d578063c19d93fb1461053f578063c4d66de81461056857610198565b80639df6c8e1146104755780639fa6a6e31461047d578063ab91c7b01461048557610198565b8063522ae002116101455780638e4e30e01161011f5780638e4e30e01461035d5780639776120e1461040f5780639d54f4191461044257610198565b8063522ae0021461031c5780638d3638f4146103245780638da5cb5b1461032c57610198565b80632bef2892116101765780632bef2892146102c257806336e104de146102f357806345630b1a1461031457610198565b806306661abd1461019d57806319d9d21a146101b75780632752e0f414610286575b600080fd5b6101a56106a6565b60408051918252519081900360200190f35b610284600480360360a08110156101cd57600080fd5b81359160208101918101906080810160608201356401000000008111156101f357600080fd5b82018360208201111561020557600080fd5b8035906020019184600183028401116401000000008311171561022757600080fd5b91939092909160208101903564010000000081111561024557600080fd5b82018360208201111561025757600080fd5b8035906020019184600183028401116401000000008311171561027957600080fd5b5090925090506106ac565b005b6102a96004803603602081101561029c57600080fd5b503563ffffffff16610909565b6040805163ffffffff9092168252519081900360200190f35b6102df600480360360208110156102d857600080fd5b5035610921565b604080519115158252519081900360200190f35b6102fb610934565b6040805192835260208301919091528051918290030190f35b6101a561095c565b6101a561098c565b6102a9610992565b6103346109b6565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102df6004803603606081101561037357600080fd5b81359160208101359181019060608101604082013564010000000081111561039a57600080fd5b8201836020820111156103ac57600080fd5b803590602001918460018302840111640100000000831117156103ce57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109d2945050505050565b6102846004803603602081101561042557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610ba5565b6102846004803603602081101561045857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c37565b610334610cc6565b6101a5610ce2565b6101a5610ce8565b610284600480360360608110156104a357600080fd5b8135916020810135918101906060810160408201356401000000008111156104ca57600080fd5b8201836020820111156104dc57600080fd5b803590602001918460018302840111640100000000831117156104fe57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610cf4945050505050565b610547610e92565b6040518082600281111561055757fe5b815260200191505060405180910390f35b6102846004803603602081101561057e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610eb3565b610284600480360360608110156105b157600080fd5b63ffffffff823516916020810135918101906060810160408201356401000000008111156105de57600080fd5b8201836020820111156105f057600080fd5b8035906020019184600183028401116401000000008311171561061257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506110d0945050505050565b610334611352565b6101a561136e565b6102846004803603602081101561067957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661137a565b6101a5611409565b6101a5611415565b60215490565b600260245474010000000000000000000000000000000000000000900460ff1660028111156106d757fe5b141561074457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f8601819004810282018101909252848152610786918891883591889088908190840183828082843760009201919091525061141b92505050565b80156107d557506107d586866001602002013584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061141b92505050565b80156107e657508435602086013514155b15610901576107f36114ad565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b60266020526000908152604090205463ffffffff1681565b600061092e602283611588565b92915050565b60008061094160226115f8565b156109585760255491506109556022611638565b90505b9091565b60006109877f0000000000000000000000000000000000000000000000000000000000000000611675565b905090565b61080081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60285473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260245474010000000000000000000000000000000000000000900460ff1660028111156109ff57fe5b1415610a6c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610a7784848461141b565b610ae257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6025548414610b5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f7420612063757272656e7420757064617465000000000000000000000000604482015290519081900360640190fd5b610b5d602284611588565b610b9a57610b696114ad565b6040517fb015f3b3a7a56304206e1e4d15f0dad9b2914691bbe7ab34e407c53b2700a91b90600090a1506001610b9e565b5060005b9392505050565b60285473ffffffffffffffffffffffffffffffffffffffff163314610c2b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e65720000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c34816116ea565b50565b60275473ffffffffffffffffffffffffffffffffffffffff163314610cbd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f21757064617465724d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b610c34816117d7565b60275473ffffffffffffffffffffffffffffffffffffffff1681565b60255481565b600061098760226115f8565b600260245474010000000000000000000000000000000000000000900460ff166002811115610d1f57fe5b1415610d8c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610d978383836109d2565b15610da157610e8d565b6000610dad6022611850565b905082811415610dbd5750610dc3565b50610da1565b8160258190555081837f000000000000000000000000000000000000000000000000000000000000000063ffffffff167f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2846040518080602001828103825283818151815260200191508051906020019080838360005b83811015610e52578181015183820152602001610e3a565b50505050905090810190601f168015610e7f5780820380516001836020036101000a031916815260200191505b509250505060405180910390a45b505050565b60245474010000000000000000000000000000000000000000900460ff1681565b600054610100900460ff1680610ecc5750610ecc611989565b80610eda575060005460ff16155b610f2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612775602e913960400191505060405180910390fd5b600054610100900460ff16158015610f9557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610f9e3361199a565b610fa7826116ea565b610fb16022611a28565b602754604080517fdf034cd0000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163df034cd0916004808301926020929190829003018186803b15801561101c57600080fd5b505afa158015611030573d6000803e3d6000fd5b505050506040513d602081101561104657600080fd5b5051905061105381611a6c565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f9e5f57e4ee5f9eeac3131028d48f19d80820ce6fa93c4c66cc82a3e2b9837c329181900360200190a15080156110cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600260245474010000000000000000000000000000000000000000900460ff1660028111156110fb57fe5b141561116857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610800815111156111da57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f21746f6f20626967000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff808416600090815260266020526040812054909116906112237f00000000000000000000000000000000000000000000000000000000000000003384888888611bf9565b80516020820120909150611238600182611ccf565b61124b61124361136e565b602290611dd7565b50806112578785611e44565b67ffffffffffffffff16600161126b6106a6565b037f1a2a870182b13cdb4a0ec2e16f96df5a0e20b1327d43564f7f0e62992a55bd6c856040518080602001828103825283818151815260200191508051906020019080838360005b838110156112cb5781810151838201526020016112b3565b50505050905090810190601f1680156112f85780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505063ffffffff938416600090815260266020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016600192909201909416179092555050565b60245473ffffffffffffffffffffffffffffffffffffffff1681565b60006109876001611e5e565b60285473ffffffffffffffffffffffffffffffffffffffff16331461140057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e65720000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610c348161199a565b60006109876022611638565b60215481565b60008061142661095c565b858560405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120905061146781611e71565b60245490915073ffffffffffffffffffffffffffffffffffffffff1661148d8285611ec2565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b6114b5611f5c565b602754604080517f5b3c2cbf000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff90921691635b3c2cbf9160248082019260009290919082900301818387803b15801561152757600080fd5b505af115801561153b573d6000803e3d6000fd5b505060245460405133935073ffffffffffffffffffffffffffffffffffffffff90911691507f98064af315f26d7333ba107ba43a128ec74345f4d4e6f2549840fe092a1c8bce90600090a3565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111610b9a5760008181526001850160205260409020548314156115f057600191505061092e565b6001016115a0565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166116308282611f9d565b949350505050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b6116f381611fb7565b61175e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f21636f6e747261637420757064617465724d616e616765720000000000000000604482015290519081900360640190fd5b6027805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f958d788fb4c373604cd4c73aa8c592de127d0819b49bb4dc02c8ecd666e965bf9181900360200190a150565b6024805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f9e5f57e4ee5f9eeac3131028d48f19d80820ce6fa93c4c66cc82a3e2b9837c329181900360200190a150565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166118888282611f9d565b6118f357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff8116600090815260018501602052604090205492508215611944576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b600061199430611fb7565b15905090565b60285460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3602880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b80546fffffffffffffffffffffffffffffffff16610c345780547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600117815550565b600054610100900460ff1680611a855750611a85611989565b80611a93575060005460ff16155b611ae8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612775602e913960400191505060405180910390fd5b600054610100900460ff16158015611b4e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905580156110cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6060868686868686604051602001808763ffffffff1660e01b81526004018681526020018563ffffffff1660e01b81526004018463ffffffff1660e01b815260040183815260200182805190602001908083835b60208310611c8a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611c4d565b6001836020036101000a038019825116818451168082178552505050505050905001965050505050505060405160208183030381529060405290509695505050505050565b602082015463ffffffff11611d4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6d65726b6c6520747265652066756c6c00000000000000000000000000000000604482015290519081900360640190fd5b6020820180546001019081905560005b6020811015611dd4578160011660011415611d815782848260208110611d7757fe5b0155506110cc9050565b838160208110611d8d57fe5b015483604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120925060028281611dc957fe5b049150600101611d55565b50fe5b81546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000928390048216600101918216909202919091178355811561092e576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b63ffffffff1660209190911b67ffffffff00000000161790565b600061092e82611e6c611fbd565b61247e565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b60008151604114611f3457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a611f528682858561253c565b9695505050505050565b602480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055565b60019103016fffffffffffffffffffffffffffffffff1690565b3b151590565b611fc5612733565b600081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560208201527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3060408201527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba8560608201527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a1934460808201527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d60a08201527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a196860c08201527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f8360e08201527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6101008201527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06101208201527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56101408201527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926101608201527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6101808201527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6101a08201527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6101c08201527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26101e08201527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6102008201527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6102208201527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06102408201527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06102608201527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26102808201527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96102a08201527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776102c08201527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526102e08201527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6103008201527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6103208201527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06103408201527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6103608201527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6103808201527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226103a08201527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356103c08201527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96103e082015290565b6020820154600090815b602081101561253457600182821c1660008683602081106124a557fe5b0154905081600114156124e8578085604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120945061252a565b848684602081106124f557fe5b602002015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094505b5050600101612488565b505092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156125b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127536022913960400191505060405180910390fd5b8360ff16601b14806125cc57508360ff16601c145b612621576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806127a36022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561267d573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661272a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b604051806104000160405280602090602082028036833750919291505056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c7565496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565a26469706673582212200540f83deec995e68f6a94b36b61f6e48a0f395bb2881b239645d04687414bd564736f6c63430007060033"; export class Home__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-core/factories/Replica__factory.ts b/typescript/typechain/optics-core/factories/Replica__factory.ts index 9373cc4a8..f80aa1139 100644 --- a/typescript/typechain/optics-core/factories/Replica__factory.ts +++ b/typescript/typechain/optics-core/factories/Replica__factory.ts @@ -540,7 +540,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506040516131583803806131588339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166130ef61006960003980610d155280610d7c52506130ef6000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638d3638f4116100ee578063b31c01fb11610097578063c19d93fb11610071578063c19d93fb14610641578063d88beda214610649578063df034cd014610651578063f6d1610214610682576101a3565b8063b31c01fb14610519578063ba739a62146105cb578063bf30a55d146105ec576101a3565b80639fa6a6e3116100c85780639fa6a6e3146104ec578063a3f81d68146104f4578063ab91c7b014610511576101a3565b80638d3638f414610436578063928bc4b21461043e578063961681dc146104e4576101a3565b806339992668116101505780636188af0e1161012a5780636188af0e146103635780637022b58e1461041157806371bfb7b814610419576101a3565b8063399926681461033257806345630b1a1461033a578063456d067214610342576101a3565b80632bbd59ca116101815780632bbd59ca146102ad5780632bef2892146102eb578063371d307114610308576101a3565b806314cfabb3146101a857806319d9d21a146101c457806325e3beda14610293575b600080fd5b6101b061068a565b604080519115158252519081900360200190f35b610291600480360360a08110156101da57600080fd5b813591602081019181019060808101606082013564010000000081111561020057600080fd5b82018360208201111561021257600080fd5b8035906020019184600183028401116401000000008311171561023457600080fd5b91939092909160208101903564010000000081111561025257600080fd5b82018360208201111561026457600080fd5b8035906020019184600183028401116401000000008311171561028657600080fd5b5090925090506106b6565b005b61029b610915565b60408051918252519081900360200190f35b6102ca600480360360208110156102c357600080fd5b503561091b565b604051808260028111156102da57fe5b815260200191505060405180910390f35b6101b06004803603602081101561030157600080fd5b5035610930565b6101b0600480360361044081101561031f57600080fd5b5080359060208101906104200135610945565b61029b610a65565b61029b610a6b565b61034a610a80565b6040805163ffffffff9092168252519081900360200190f35b610291600480360361044081101561037a57600080fd5b81019060208101813564010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955092935050506104008201359050610a8c565b610291610b18565b61029b6004803603602081101561042f57600080fd5b5035610d01565b61034a610d13565b6101b06004803603602081101561045457600080fd5b81019060208101813564010000000081111561046f57600080fd5b82018360208201111561048157600080fd5b803590602001918460018302840111640100000000831117156104a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d37945050505050565b61034a611428565b61029b611434565b6101b06004803603602081101561050a57600080fd5b503561143a565b61029b611461565b6102916004803603606081101561052f57600080fd5b81359160208101359181019060608101604082013564010000000081111561055657600080fd5b82018360208201111561056857600080fd5b8035906020019184600183028401116401000000008311171561058a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061146d945050505050565b6105d3611753565b6040805192835260208301919091528051918290030190f35b610291600480360360a081101561060257600080fd5b5063ffffffff813581169173ffffffffffffffffffffffffffffffffffffffff60208201351691604082013591606081013591608090910135166117a1565b6102ca611956565b61029b611979565b610659611980565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61029b6119a2565b600061069660026119ae565b158015906106b157506106b16106ac60026119ee565b61143a565b905090565b6002600054760100000000000000000000000000000000000000000000900460ff1660028111156106e357fe5b141561075057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f86018190048102820181019092528481526107929188918835918890889081908401838280828437600092019190915250611a8f92505050565b80156107e157506107e186866001602002013584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8f92505050565b80156107f257508435602086013514155b1561090d576107ff611b27565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b61271081565b60096020526000908152604090205460ff1681565b600061093d600283611b31565b90505b919050565b60008060008581526009602052604090205460ff16600281111561096557fe5b146109d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f214d6573736167655374617475732e4e6f6e6500000000000000000000000000604482015290519081900360640190fd5b6000610a07858560208060200260405190810160405280929190826020800280828437600092019190915250879150611bad9050565b9050610a128161143a565b15610a58575050600083815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610a5e565b60009150505b9392505050565b60055481565b6004546000906106b19063ffffffff16611c58565b60065463ffffffff1681565b610a9e83805190602001208383610945565b610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2170726f76650000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610b1283610d37565b50505050565b6002600054760100000000000000000000000000000000000000000000900460ff166002811115610b4557fe5b1415610bb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610bbc60026119ae565b610c2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080610c3460026119ae565b90505b600081118015610c4f5750610c4f6106ac60026119ee565b15610c8757610c5e6002611ccd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610c37565b81610cf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2174696d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610cfb611b2f565b50600155565b60076020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610d448382611e06565b90506000610d737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611e2a565b905063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016610dc77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611e5b565b63ffffffff1614610e3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f2164657374696e6174696f6e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001845160208087019190912060009081526009909152604090205460ff166002811115610e6357fe5b14610ecf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60085460ff16600114610f4357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f217265656e7472616e7400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600260096000610f9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616611e8c565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610fde57fe5b0217905550600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166001830163ffffffff161790556207c8305a101561108a57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f2167617300000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006110b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611ecb565b9050606073ffffffffffffffffffffffffffffffffffffffff82166207a1206111017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716611ede565b61112c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816611f0e565b61118161115a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a16611f3f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016611fb0565b604051602401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f56d5d47500000000000000000000000000000000000000000000000000000000178152905182519297509550859450925090508083835b602083106112c857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d806000811461132b576040519150601f19603f3d011682016040523d82523d6000602084013e611330565b606091505b509095509050846113f3578173ffffffffffffffffffffffffffffffffffffffff168363ffffffff167f16d8b729d8c09fdfd34c0cbac3feebd37ea7dbf51704e005df39179db55646fc836040518080602001828103825283818151815260200191508051906020019080838360005b838110156113b85781810151838201526020016113a0565b50505050905090810190601f1680156113e55780820380516001836020036101000a031916815260200191505b509250505060405180910390a35b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509092915050565b60045463ffffffff1681565b60015481565b60008181526007602052604081205480611458576000915050610940565b42101592915050565b60006106b160026119ae565b6002600054760100000000000000000000000000000000000000000000900460ff16600281111561149a57fe5b141561150757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b600061151360026119ae565b1115611595576115236002611ff4565b831461159057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420656e64206f6620717565756500000000000000000000000000000000604482015290519081900360640190fd5b611605565b826001541461160557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f742063757272656e74207570646174650000000000000000000000000000604482015290519081900360640190fd5b611610838383611a8f565b61167b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611683611b2f565b60055460008381526007602052604090204290910190556116a5600283612031565b5060045460408051602080825284518183015284518694889463ffffffff909116937f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2938893919283929083019185019080838360005b838110156117145781810151838201526020016116fc565b50505050905090810190601f1680156117415780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505050565b60008061176060026119ae565b156117885761176f60026119ee565b600081815260076020526040902054909250905061179d565b50506001546000818152600760205260409020545b9091565b600054610100900460ff16806117ba57506117ba61209e565b806117c8575060005460ff16155b61181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fa8602e913960400191505060405180910390fd5b600054610100900460ff1615801561188357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b61188c856120af565b6118966002612244565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805463ffffffff808a167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009283161790925586835560008781526007602052604090209290925560058590556006805491851691909216179055801561090d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b6207a12081565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106b16002611ff4565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166119e68282612289565b949350505050565b60006119f9826122a3565b15611a6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5080546fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b600080611a9a610a6b565b8585604051602001808481526020018381526020018281526020019350505050604051602081830303815290604052805190602001209050611adb816122d2565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff16611b078285612323565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b611b2f6123bd565b565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111611ba1576000818152600185016020526040902054831415611b99576001915050611ba7565b600101611b49565b50600090505b92915050565b8260005b6020811015611c5057600183821c166000858360208110611bce57fe5b602002015190508160011415611c145780846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209350611c46565b838160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093505b5050600101611bb1565b509392505050565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b80546000906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169116611d058282612289565b611d7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff8116600090815260018501602052604090205492508215611dc1576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b815160009060208401611e2164ffffffffff85168284612400565b95945050505050565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660246004612456565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660286004612456565b600080611e9883612477565b6bffffffffffffffffffffffff1690506000611eb38461248b565b6bffffffffffffffffffffffff169091209392505050565b600061093d611ed98361249f565b6124d0565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826004612456565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600460206124d3565b600061093d604c80611f727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861661248b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff9190911603600061267e565b6060600080611fbe8461248b565b6bffffffffffffffffffffffff1690506040519150819250611fe38483602001612704565b508181016020016040529052919050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b81546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009283900482166001019182169092029190911783558115611ba7576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b60006120a930612830565b15905090565b600054610100900460ff16806120c857506120c861209e565b806120d6575060005460ff16155b61212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fa8602e913960400191505060405180910390fd5b600054610100900460ff1615801561219157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff851602177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000179055801561224057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b80546fffffffffffffffffffffffffffffffff166122865780547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011781555b50565b60019103016fffffffffffffffffffffffffffffffff1690565b546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204161090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461239557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6123b386828585612836565b9695505050505050565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760200000000000000000000000000000000000000000000179055565b60008061240d8484612a24565b905060405181111561241d575060005b8061244b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610a5e565b611e21858585612a96565b60008160200360080260ff1661246d8585856124d3565b901c949350505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316602c60206124d3565b90565b600060ff82166124e557506000610a5e565b6124ee8461248b565b6bffffffffffffffffffffffff166125098460ff8516612a24565b11156125e85761254a61251b85612477565b6bffffffffffffffffffffffff166125328661248b565b6bffffffffffffffffffffffff16858560ff16612aa9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125ad578181015183820152602001612595565b50505050905090810190601f1680156125da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff161115612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180612ff8603a913960400191505060405180910390fd5b60088202600061265486612477565b6bffffffffffffffffffffffff169050600061266f83612c04565b91909501511695945050505050565b60008061268a86612477565b6bffffffffffffffffffffffff1690506126a386612c4d565b6126b7856126b18489612a24565b90612a24565b11156126e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009150506119e6565b6126f08186612a24565b90506123b38364ffffffffff168286612400565b600061270f83612c77565b612764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806130326028913960400191505060405180910390fd5b61276d83612c89565b6127c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061305a602b913960400191505060405180910390fd5b60006127cd8461248b565b6bffffffffffffffffffffffff16905060006127e885612477565b6bffffffffffffffffffffffff169050600060405190508481111561280d5760206060fd5b8285848460045afa506123b361282287612cc6565b64ffffffffff168685612a96565b3b151590565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156128b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612f656022913960400191505060405180910390fd5b8360ff16601b14806128c657508360ff16601c145b61291b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612fd66022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612977573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611e2157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b81810182811015611ba757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60606000612ab686612ccc565b9150506000612ac486612ccc565b9150506000612ad286612ccc565b9150506000612ae086612ccc565b915050838383836040516020018080613085603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a8201526050016021612f8782397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000612c588261248b565b612c6183612477565b016bffffffffffffffffffffffff169050919050565b6000612c8282612da0565b1592915050565b6000612c9482612cc6565b64ffffffffff1664ffffffffff1415612caf57506000610940565b6000612cba83612c4d565b60405110199392505050565b60d81c90565b600080601f5b600f8160ff161115612d345760ff600882021684901c612cf181612dc8565b61ffff16841793508160ff16601014612d0c57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612cd2565b50600f5b60ff8160ff161015612d9a5760ff600882021684901c612d5781612dc8565b61ffff16831792508160ff16600014612d7257601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612d38565b50915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b6000612dda60048360ff16901c612df8565b60ff161760081b62ffff0016612def82612df8565b60ff1617919050565b600060f08083179060ff82161415612e14576030915050610940565b8060ff1660f11415612e2a576031915050610940565b8060ff1660f21415612e40576032915050610940565b8060ff1660f31415612e56576033915050610940565b8060ff1660f41415612e6c576034915050610940565b8060ff1660f51415612e82576035915050610940565b8060ff1660f61415612e98576036915050610940565b8060ff1660f71415612eae576037915050610940565b8060ff1660f81415612ec4576038915050610940565b8060ff1660f91415612eda576039915050610940565b8060ff1660fa1415612ef0576061915050610940565b8060ff1660fb1415612f06576062915050610940565b8060ff1660fc1415612f1c576063915050610940565b8060ff1660fd1415612f32576064915050610940565b8060ff1660fe1415612f48576065915050610940565b8060ff1660ff1415612f5e576066915050610940565b5091905056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c75652e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c756554797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a26469706673582212203e0db1ae72efd55966a09c5c8b9c2cb7b78479ede6921db535b8ac07a6a55c2364736f6c63430007060033"; + "0x60a060405234801561001057600080fd5b506040516131583803806131588339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166130ef61006960003980610d155280610d7c52506130ef6000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638d3638f4116100ee578063b31c01fb11610097578063c19d93fb11610071578063c19d93fb14610641578063d88beda214610649578063df034cd014610651578063f6d1610214610682576101a3565b8063b31c01fb14610519578063ba739a62146105cb578063bf30a55d146105ec576101a3565b80639fa6a6e3116100c85780639fa6a6e3146104ec578063a3f81d68146104f4578063ab91c7b014610511576101a3565b80638d3638f414610436578063928bc4b21461043e578063961681dc146104e4576101a3565b806339992668116101505780636188af0e1161012a5780636188af0e146103635780637022b58e1461041157806371bfb7b814610419576101a3565b8063399926681461033257806345630b1a1461033a578063456d067214610342576101a3565b80632bbd59ca116101815780632bbd59ca146102ad5780632bef2892146102eb578063371d307114610308576101a3565b806314cfabb3146101a857806319d9d21a146101c457806325e3beda14610293575b600080fd5b6101b061068a565b604080519115158252519081900360200190f35b610291600480360360a08110156101da57600080fd5b813591602081019181019060808101606082013564010000000081111561020057600080fd5b82018360208201111561021257600080fd5b8035906020019184600183028401116401000000008311171561023457600080fd5b91939092909160208101903564010000000081111561025257600080fd5b82018360208201111561026457600080fd5b8035906020019184600183028401116401000000008311171561028657600080fd5b5090925090506106b6565b005b61029b610915565b60408051918252519081900360200190f35b6102ca600480360360208110156102c357600080fd5b503561091b565b604051808260028111156102da57fe5b815260200191505060405180910390f35b6101b06004803603602081101561030157600080fd5b5035610930565b6101b0600480360361044081101561031f57600080fd5b5080359060208101906104200135610945565b61029b610a65565b61029b610a6b565b61034a610a80565b6040805163ffffffff9092168252519081900360200190f35b610291600480360361044081101561037a57600080fd5b81019060208101813564010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955092935050506104008201359050610a8c565b610291610b18565b61029b6004803603602081101561042f57600080fd5b5035610d01565b61034a610d13565b6101b06004803603602081101561045457600080fd5b81019060208101813564010000000081111561046f57600080fd5b82018360208201111561048157600080fd5b803590602001918460018302840111640100000000831117156104a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d37945050505050565b61034a611428565b61029b611434565b6101b06004803603602081101561050a57600080fd5b503561143a565b61029b611461565b6102916004803603606081101561052f57600080fd5b81359160208101359181019060608101604082013564010000000081111561055657600080fd5b82018360208201111561056857600080fd5b8035906020019184600183028401116401000000008311171561058a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061146d945050505050565b6105d3611753565b6040805192835260208301919091528051918290030190f35b610291600480360360a081101561060257600080fd5b5063ffffffff813581169173ffffffffffffffffffffffffffffffffffffffff60208201351691604082013591606081013591608090910135166117a1565b6102ca611956565b61029b611979565b610659611980565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61029b6119a2565b600061069660026119ae565b158015906106b157506106b16106ac60026119ee565b61143a565b905090565b6002600054760100000000000000000000000000000000000000000000900460ff1660028111156106e357fe5b141561075057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f86018190048102820181019092528481526107929188918835918890889081908401838280828437600092019190915250611a8f92505050565b80156107e157506107e186866001602002013584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8f92505050565b80156107f257508435602086013514155b1561090d576107ff611b27565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b613a9881565b60096020526000908152604090205460ff1681565b600061093d600283611b31565b90505b919050565b60008060008581526009602052604090205460ff16600281111561096557fe5b146109d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f214d6573736167655374617475732e4e6f6e6500000000000000000000000000604482015290519081900360640190fd5b6000610a07858560208060200260405190810160405280929190826020800280828437600092019190915250879150611bad9050565b9050610a128161143a565b15610a58575050600083815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610a5e565b60009150505b9392505050565b60055481565b6004546000906106b19063ffffffff16611c58565b60065463ffffffff1681565b610a9e83805190602001208383610945565b610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2170726f76650000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610b1283610d37565b50505050565b6002600054760100000000000000000000000000000000000000000000900460ff166002811115610b4557fe5b1415610bb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610bbc60026119ae565b610c2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080610c3460026119ae565b90505b600081118015610c4f5750610c4f6106ac60026119ee565b15610c8757610c5e6002611ccd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610c37565b81610cf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2174696d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610cfb611b2f565b50600155565b60076020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610d448382611e06565b90506000610d737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611e2a565b905063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016610dc77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611e5b565b63ffffffff1614610e3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f2164657374696e6174696f6e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001845160208087019190912060009081526009909152604090205460ff166002811115610e6357fe5b14610ecf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60085460ff16600114610f4357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f217265656e7472616e7400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600260096000610f9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616611e8c565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610fde57fe5b0217905550600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166001830163ffffffff16179055620d32e85a101561108a57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f2167617300000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006110b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611ecb565b9050606073ffffffffffffffffffffffffffffffffffffffff8216620cf8506111017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716611ede565b61112c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816611f0e565b61118161115a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a16611f3f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016611fb0565b604051602401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f56d5d47500000000000000000000000000000000000000000000000000000000178152905182519297509550859450925090508083835b602083106112c857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d806000811461132b576040519150601f19603f3d011682016040523d82523d6000602084013e611330565b606091505b509095509050846113f3578173ffffffffffffffffffffffffffffffffffffffff168363ffffffff167f16d8b729d8c09fdfd34c0cbac3feebd37ea7dbf51704e005df39179db55646fc836040518080602001828103825283818151815260200191508051906020019080838360005b838110156113b85781810151838201526020016113a0565b50505050905090810190601f1680156113e55780820380516001836020036101000a031916815260200191505b509250505060405180910390a35b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509092915050565b60045463ffffffff1681565b60015481565b60008181526007602052604081205480611458576000915050610940565b42101592915050565b60006106b160026119ae565b6002600054760100000000000000000000000000000000000000000000900460ff16600281111561149a57fe5b141561150757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b600061151360026119ae565b1115611595576115236002611ff4565b831461159057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420656e64206f6620717565756500000000000000000000000000000000604482015290519081900360640190fd5b611605565b826001541461160557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f742063757272656e74207570646174650000000000000000000000000000604482015290519081900360640190fd5b611610838383611a8f565b61167b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611683611b2f565b60055460008381526007602052604090204290910190556116a5600283612031565b5060045460408051602080825284518183015284518694889463ffffffff909116937f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2938893919283929083019185019080838360005b838110156117145781810151838201526020016116fc565b50505050905090810190601f1680156117415780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505050565b60008061176060026119ae565b156117885761176f60026119ee565b600081815260076020526040902054909250905061179d565b50506001546000818152600760205260409020545b9091565b600054610100900460ff16806117ba57506117ba61209e565b806117c8575060005460ff16155b61181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fa8602e913960400191505060405180910390fd5b600054610100900460ff1615801561188357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b61188c856120af565b6118966002612244565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805463ffffffff808a167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009283161790925586835560008781526007602052604090209290925560058590556006805491851691909216179055801561090d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b620cf85081565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106b16002611ff4565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166119e68282612289565b949350505050565b60006119f9826122a3565b15611a6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5080546fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b600080611a9a610a6b565b8585604051602001808481526020018381526020018281526020019350505050604051602081830303815290604052805190602001209050611adb816122d2565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff16611b078285612323565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b611b2f6123bd565b565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111611ba1576000818152600185016020526040902054831415611b99576001915050611ba7565b600101611b49565b50600090505b92915050565b8260005b6020811015611c5057600183821c166000858360208110611bce57fe5b602002015190508160011415611c145780846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209350611c46565b838160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093505b5050600101611bb1565b509392505050565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b80546000906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169116611d058282612289565b611d7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff8116600090815260018501602052604090205492508215611dc1576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b815160009060208401611e2164ffffffffff85168284612400565b95945050505050565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660246004612456565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660286004612456565b600080611e9883612477565b6bffffffffffffffffffffffff1690506000611eb38461248b565b6bffffffffffffffffffffffff169091209392505050565b600061093d611ed98361249f565b6124d0565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826004612456565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600460206124d3565b600061093d604c80611f727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861661248b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff9190911603600061267e565b6060600080611fbe8461248b565b6bffffffffffffffffffffffff1690506040519150819250611fe38483602001612704565b508181016020016040529052919050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b81546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009283900482166001019182169092029190911783558115611ba7576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b60006120a930612830565b15905090565b600054610100900460ff16806120c857506120c861209e565b806120d6575060005460ff16155b61212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fa8602e913960400191505060405180910390fd5b600054610100900460ff1615801561219157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff851602177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000179055801561224057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b80546fffffffffffffffffffffffffffffffff166122865780547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011781555b50565b60019103016fffffffffffffffffffffffffffffffff1690565b546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204161090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461239557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6123b386828585612836565b9695505050505050565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760200000000000000000000000000000000000000000000179055565b60008061240d8484612a24565b905060405181111561241d575060005b8061244b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610a5e565b611e21858585612a96565b60008160200360080260ff1661246d8585856124d3565b901c949350505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316602c60206124d3565b90565b600060ff82166124e557506000610a5e565b6124ee8461248b565b6bffffffffffffffffffffffff166125098460ff8516612a24565b11156125e85761254a61251b85612477565b6bffffffffffffffffffffffff166125328661248b565b6bffffffffffffffffffffffff16858560ff16612aa9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125ad578181015183820152602001612595565b50505050905090810190601f1680156125da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff161115612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180612ff8603a913960400191505060405180910390fd5b60088202600061265486612477565b6bffffffffffffffffffffffff169050600061266f83612c04565b91909501511695945050505050565b60008061268a86612477565b6bffffffffffffffffffffffff1690506126a386612c4d565b6126b7856126b18489612a24565b90612a24565b11156126e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009150506119e6565b6126f08186612a24565b90506123b38364ffffffffff168286612400565b600061270f83612c77565b612764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806130326028913960400191505060405180910390fd5b61276d83612c89565b6127c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061305a602b913960400191505060405180910390fd5b60006127cd8461248b565b6bffffffffffffffffffffffff16905060006127e885612477565b6bffffffffffffffffffffffff169050600060405190508481111561280d5760206060fd5b8285848460045afa506123b361282287612cc6565b64ffffffffff168685612a96565b3b151590565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156128b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612f656022913960400191505060405180910390fd5b8360ff16601b14806128c657508360ff16601c145b61291b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612fd66022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612977573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611e2157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b81810182811015611ba757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60606000612ab686612ccc565b9150506000612ac486612ccc565b9150506000612ad286612ccc565b9150506000612ae086612ccc565b915050838383836040516020018080613085603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a8201526050016021612f8782397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000612c588261248b565b612c6183612477565b016bffffffffffffffffffffffff169050919050565b6000612c8282612da0565b1592915050565b6000612c9482612cc6565b64ffffffffff1664ffffffffff1415612caf57506000610940565b6000612cba83612c4d565b60405110199392505050565b60d81c90565b600080601f5b600f8160ff161115612d345760ff600882021684901c612cf181612dc8565b61ffff16841793508160ff16601014612d0c57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612cd2565b50600f5b60ff8160ff161015612d9a5760ff600882021684901c612d5781612dc8565b61ffff16831792508160ff16600014612d7257601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612d38565b50915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b6000612dda60048360ff16901c612df8565b60ff161760081b62ffff0016612def82612df8565b60ff1617919050565b600060f08083179060ff82161415612e14576030915050610940565b8060ff1660f11415612e2a576031915050610940565b8060ff1660f21415612e40576032915050610940565b8060ff1660f31415612e56576033915050610940565b8060ff1660f41415612e6c576034915050610940565b8060ff1660f51415612e82576035915050610940565b8060ff1660f61415612e98576036915050610940565b8060ff1660f71415612eae576037915050610940565b8060ff1660f81415612ec4576038915050610940565b8060ff1660f91415612eda576039915050610940565b8060ff1660fa1415612ef0576061915050610940565b8060ff1660fb1415612f06576062915050610940565b8060ff1660fc1415612f1c576063915050610940565b8060ff1660fd1415612f32576064915050610940565b8060ff1660fe1415612f48576065915050610940565b8060ff1660ff1415612f5e576066915050610940565b5091905056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c75652e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c756554797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a2646970667358221220c6df87026b9f16bf2a22620addf76a96c3291d5ba5d7caebb645826ee07ff4f964736f6c63430007060033"; export class Replica__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-core/factories/TestGovernanceRouter__factory.ts b/typescript/typechain/optics-core/factories/TestGovernanceRouter__factory.ts index 31dba1882..c0f183762 100644 --- a/typescript/typechain/optics-core/factories/TestGovernanceRouter__factory.ts +++ b/typescript/typechain/optics-core/factories/TestGovernanceRouter__factory.ts @@ -530,7 +530,7 @@ const _abi = [ ]; const _bytecode = - "0x60c06040523480156200001157600080fd5b5060405162003a2338038062003a23833981016040819052620000349162000050565b5060e01b6001600160e01b031916608052603260a05262000087565b6000806040838503121562000063578182fd5b825163ffffffff8116811462000077578283fd5b6020939093015192949293505050565b60805160e01c60a051613961620000c2600039806104fe528061102652508061087752806108e8528061106b5280611db352506139616000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806363706be3116100e3578063db2021ae1161008c578063e6b3d94911610066578063e6b3d94914610308578063e8c6f83a1461031b578063f05151df1461032e57610198565b8063db2021ae146102e5578063de314b19146102f8578063e54292981461030057610198565b806368b967dc116100bd57806368b967dc146102b75780638d3638f4146102ca578063c3ef2134146102d257610198565b806363706be31461029457806366cf8fab1461029c578063670a43c4146102af57610198565b80634626abee116101455780635585416c1161011f5780635585416c1461024c57806356d5d4751461026157806356f7e2981461027457610198565b80634626abee14610213578063485cc955146102265780634fedbbb51461023957610198565b8063316c92b611610176578063316c92b6146101f05780633339df96146101f857806341bdc8b51461020057610198565b80630c340a241461019d5780630ce21995146101bb5780632ead72f6146101d0575b600080fd5b6101a5610336565b6040516101b291906133cc565b60405180910390f35b6101ce6101c9366004613264565b610352565b005b6101e36101de3660046131bc565b61041c565b6040516101b291906133f8565b6101ce61042e565b6101a561057c565b6101ce61020e3660046130d4565b610598565b6101ce610221366004613128565b610692565b6101ce6102343660046130f0565b61078d565b6101ce610247366004613211565b610a1f565b610254610be7565b6040516101b2919061366a565b6101ce61026f36600461328f565b610c0b565b6102876102823660046131bc565b610e9e565b6040516101b291906133ed565b6101ce610f07565b6102546102aa3660046131a4565b610fea565b6101e3611024565b6101ce6102c5366004613264565b611048565b610254611069565b6101ce6102e03660046131f4565b61108d565b6101ce6102f33660046131f4565b61109f565b6101a5611178565b6101e3611194565b6101ce6103163660046130d4565b61119a565b6101ce610329366004613264565b611279565b610287611309565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b61035a611309565b6103bd5760035473ffffffffffffffffffffffffffffffffffffffff1633146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b60405180910390fd5b61040e565b60025473ffffffffffffffffffffffffffffffffffffffff16331461040e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b610418828261132a565b5050565b60056020526000908152604090205481565b610436611309565b1561046d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613520565b60025473ffffffffffffffffffffffffffffffffffffffff1633146104be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b600154156104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613557565b610522427f00000000000000000000000000000000000000000000000000000000000000006113bb565b600181905560025460405173ffffffffffffffffffffffffffffffffffffffff909116917f4c75781638d2c3a22c08e1295107f831b97683d017a1145733b743479a2ae2259161057291906133f8565b60405180910390a2565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6105a0611309565b6105fa5760035473ffffffffffffffffffffffffffffffffffffffff1633146105f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b61064b565b60025473ffffffffffffffffffffffffffffffffffffffff16331461064b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61069a611309565b6106f45760035473ffffffffffffffffffffffffffffffffffffffff1633146106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b610745565b60025473ffffffffffffffffffffffffffffffffffffffff163314610745576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b60005b818110156107885761077f83838381811061075f57fe5b905060200281019061077191906136f7565b61077a906137ae565b611438565b50600101610748565b505050565b600054610100900460ff16806107a657506107a66114fb565b806107b4575060005460ff16155b610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061383c602e913960400191505060405180910390fd5b600054610100900460ff1615801561086f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b33600161089d7f0000000000000000000000000000000000000000000000000000000000000000838361150c565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790556108e685610598565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d3638f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561097557600080fd5b505afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad91906131d8565b63ffffffff16146109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906134b4565b5050801561078857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b610a78611309565b15610aaf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613520565b6000610aba84611603565b90506000610ad0610acb848661374e565b611650565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3a57600080fd5b505afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b729190613188565b73ffffffffffffffffffffffffffffffffffffffff1663d34686398684846040518463ffffffff1660e01b8152600401610bae9392919061367b565b600060405180830381600087803b158015610bc857600080fd5b505af1158015610bdc573d6000803e3d6000fd5b505050505050505050565b60035474010000000000000000000000000000000000000000900463ffffffff1681565b600480546040517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691635190bc5391610c60913391016133cc565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb09190613168565b610ce6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906134e9565b8282610cf28282611825565b610d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af9061347d565b6000610d348482611872565b9050610d617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611896565b15610d9e57610d99610d947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166118f1565b61193f565b610e96565b610dc97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166119d8565b15610e0157610d99610dfc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611a36565b611a50565b610e2c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611adb565b15610e6457610d99610e5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611ae4565b611afe565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613633565b505050505050565b6000805b600654811015610efc578263ffffffff1660068281548110610ec057fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff161415610ef4576001915050610f02565b600101610ea2565b50600090505b919050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610f58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b600154610f91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af9061340f565b60006001556002546040517f5397c02652a688dd1cac8544f233b3daaf96d7a9f974af80b70ab1538359e26191610fe09173ffffffffffffffffffffffffffffffffffffffff909116906133cc565b60405180910390a1565b60068181548110610ffa57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b611052828261132a565b600061105e8383611b73565b905061078881611ba0565b7f000000000000000000000000000000000000000000000000000000000000000081565b6104188261109a83611d98565b61132a565b60035473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b6110f8611309565b1561112f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613520565b600061113a83611db1565b905061114783838361150c565b80156111535750610418565b60006111678461116285611d98565b611de0565b905061117281611ba0565b50505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60025473ffffffffffffffffffffffffffffffffffffffff1633146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b60025460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f3b3f758030fa296b85e15008f79cd22af8ffd2a7dd360d8963dcaf8e9fa2b5ff90600090a3600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146112ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b6112d2611309565b15611048576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613520565b6001546000908015801590428311159082906113225750805b935050505090565b63ffffffff8216600081815260056020526040908190205490519091907fe1cc453e5e6d48a5e3dd7dc6c72117211d2bea20fbb91fd980ebc3e7f73fe546906113769084908690613401565b60405180910390a2816113925761138c83611e08565b50610418565b806113a0576113a083611eaf565b5063ffffffff91909116600090815260056020526040902055565b60008282018381101561142f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b606060006114498360000151611f0f565b905060008173ffffffffffffffffffffffffffffffffffffffff1684602001516040516114769190613324565b6000604051808303816000865af19150503d80600081146114b3576040519150601f19603f3d011682016040523d82523d6000602084013e6114b8565b606091505b5093509050806114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af9061358e565b5050919050565b600061150630611f12565b15905090565b8061151c5761151a83611603565b505b60008161152a57600061152c565b825b600380547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8881168202929092177fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff858116918217948590556040519596509094908416937f4daaa39e87dee84708195369c30e97baa0665dc8562ac10535a0f3a9329943aa936115f593909104169089906136e0565b60405180910390a350505050565b63ffffffff811660009081526005602052604090205480610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135fc565b805160609060006002820167ffffffffffffffff8111801561167157600080fd5b5060405190808252806020026020018201604052801561169b578160200160208202803683370190505b5090506116e9600060016040516020016116b59190613340565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290611872565b816000815181106116f657fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090921660209283029190910182015260405161173c916000916116b59186910161339c565b8160018151811061174957fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092166020928302919091019091015260005b8281101561181357600085828151811061179357fe5b6020026020010151905060006117c66000836000015184602001515185602001516040516020016116b5939291906132f7565b9050808460028501815181106117d857fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090921660209283029190910190910152505060010161177d565b5061181d81611f18565b949350505050565b60035460009063ffffffff848116740100000000000000000000000000000000000000009092041614801561142f57505063ffffffff919091166000908152600560205260409020541490565b81516000906020840161188d64ffffffffff85168284611f68565b95945050505050565b600060016118a383611fc9565b60ff16148015611432575060406118db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611ff9565b6bffffffffffffffffffffffff16101592915050565b60006118fc82611896565b156119375761193060015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084169061200d565b9050610f02565b611432612033565b806001611970815b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841690612057565b50600061199e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166121d7565b905060005b81518110156119d1576119c88282815181106119bb57fe5b6020026020010151611438565b506001016119a3565b5050505050565b600060025b60ff166119e983611fc9565b60ff1614801561143257506025611a217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611ff9565b6bffffffffffffffffffffffff161492915050565b6000611a41826119d8565b15611937576119306002611907565b806002611a5c81611947565b506000611a8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000851661237a565b90506000611ac1611abc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000087166123ab565b611f0f565b90506000611ace83611db1565b9050610e9683838361150c565b600060036119dd565b6000611aef82611adb565b15611937576119306003611907565b806003611b0a81611947565b506000611b387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000851661237a565b90506000611b677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166123ab565b90506119d1828261132a565b606061142f611b9b611b966000600387876040516020016116b593929190613355565b6123dc565b612411565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0a57600080fd5b505afa158015611c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c429190613188565b905060005b60065481101561078857600063ffffffff1660068281548110611c6657fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff1614611d90578173ffffffffffffffffffffffffffffffffffffffff1663d346863960068381548110611cb857fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff166005600060068681548110611cef57fe5b6000918252602080832060088304015463ffffffff6004600790941684026101000a909104168452830193909352604091820190205490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611d5d939289910161367b565b600060405180830381600087803b158015611d7757600080fd5b505af1158015611d8b573d6000803e3d6000fd5b505050505b600101611c47565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff90811691161490565b606061142f611b9b611e036000600287876040516020016116b593929190613355565b612455565b63ffffffff811660009081526005602052604081208190555b600654811015610418578163ffffffff1660068281548110611e3f57fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff161415611ea45760068181548110611e7657fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff021916905550611eac565b600101611e21565b50565b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f6008820401805460079092166004026101000a63ffffffff818102199093169390921691909102919091179055565b90565b3b151590565b6040516060906000611f2d8460208401612463565b90506000611f3a82611ff9565b6bffffffffffffffffffffffff1690506000611f55836124db565b9184525082016020016040525092915050565b600080611f7584846124ef565b9050604051811115611f85575060005b80611fb3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050611fc2565b611fbe858585612561565b9150505b9392505050565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826001612574565b60181c6bffffffffffffffffffffffff1690565b60d81b7affffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090565b60006120638383612595565b6121d0576000612081612075856125b7565b64ffffffffff166125bd565b91505060006120968464ffffffffff166125bd565b604080517f5479706520617373657274696f6e206661696c65642e20476f742030780000006020808301919091527fffffffffffffffffffff0000000000000000000000000000000000000000000060b088811b8216603d8501527f2e20457870656374656420307800000000000000000000000000000000000000604785015285901b1660548301528251603e818403018152605e8301938490527f08c379a000000000000000000000000000000000000000000000000000000000909352606282018181528351608284015283519496509294508493839260a2019185019080838360005b8381101561219557818101518382015260200161217d565b50505050905090810190601f1680156121c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5090919050565b606060006122097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416600180612574565b9050600061227a60028061223e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816611ff9565b6bffffffffffffffffffffffff160360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816929190612691565b905060008260ff1667ffffffffffffffff8111801561229857600080fd5b506040519080825280602002602001820160405280156122d257816020015b6122bf612f88565b8152602001906001900390816122b75790505b50905060005b60006123057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516611ff9565b6bffffffffffffffffffffffff1611156123715761232283612721565b82828151811061232e57fe5b60209081029190910101515261234383612751565b82828151811061234f57fe5b60200260200101516020018190525061236783612790565b92506001016122d8565b50949350505050565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660016004612574565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166005602061281b565b60006114326123ea83611ae4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016612989565b606060008061241f84611ff9565b6bffffffffffffffffffffffff16905060405191508192506124448483602001612a03565b508181016020016040529052919050565b60006114326123ea83611a36565b6000604051828111156124765760206060fd5b506000805b84518110156124ce57600085828151811061249257fe5b602002602001015190506124a881848701612a03565b506124b281611ff9565b6bffffffffffffffffffffffff1692909201915060010161247b565b5061181d60008483612561565b60006124e682612b2f565b60200292915050565b8181018281101561143257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60008160200360080260ff1661258b85858561281b565b901c949350505050565b60008164ffffffffff166125a8846125b7565b64ffffffffff16149392505050565b60d81c90565b600080601f5b600f8160ff1611156126255760ff600882021684901c6125e281612b63565b61ffff16841793508160ff166010146125fd57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016125c3565b50600f5b60ff8160ff16101561268b5760ff600882021684901c61264881612b63565b61ffff16831792508160ff1660001461266357601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612629565b50915091565b60008061269d86612b93565b6bffffffffffffffffffffffff1690506126b686612ba7565b6126ca856126c484896124ef565b906124ef565b11156126f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061181d565b61270381866124ef565b90506127178364ffffffffff168286611f68565b9695505050505050565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831682602061281b565b6060611432611b9b604061276485612bd1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861691906004612691565b600081600161279e81611947565b5060006127aa85612bd1565b604001905061188d81806127df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916611ff9565b6bffffffffffffffffffffffff160360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916929190612691565b600060ff821661282d57506000611fc2565b61283684611ff9565b6bffffffffffffffffffffffff166128518460ff85166124ef565b11156128f35761289261286385612b93565b6bffffffffffffffffffffffff1661287a86611ff9565b6bffffffffffffffffffffffff16858560ff16612c01565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561219557818101518382015260200161217d565b60208260ff161115612950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061386a603a913960400191505060405180910390fd5b60088202600061295f86612b93565b6bffffffffffffffffffffffff169050600061297a83612d5c565b91909501511695945050505050565b600061299482612da5565b6129ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f56616c696469747920617373657274696f6e206661696c656400000000000000604482015290519081900360640190fd5b5090565b6000612a0e83612de2565b612a63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806138a46028913960400191505060405180910390fd5b612a6c83612da5565b612ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806138cc602b913960400191505060405180910390fd5b6000612acc84611ff9565b6bffffffffffffffffffffffff1690506000612ae785612b93565b6bffffffffffffffffffffffff1690506000604051905084811115612b0c5760206060fd5b8285848460045afa50612717612b21876125b7565b64ffffffffff168685612561565b60006020612b556020612b4185611ff9565b6bffffffffffffffffffffffff16906124ef565b81612b5c57fe5b0492915050565b6000612b7560048360ff16901c612df4565b60ff161760081b62ffff0016612b8a82612df4565b60ff1617919050565b60781c6bffffffffffffffffffffffff1690565b6000612bb282611ff9565b612bbb83612b93565b016bffffffffffffffffffffffff169050919050565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660208061281b565b60606000612c0e866125bd565b9150506000612c1c866125bd565b9150506000612c2a866125bd565b9150506000612c38866125bd565b9150508383838360405160200180806138f7603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161381b82397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000612db0826125b7565b64ffffffffff1664ffffffffff1415612dcb57506000610f02565b6000612dd683612ba7565b60405110199392505050565b6000612ded82612f60565b1592915050565b600060f08083179060ff82161415612e10576030915050610f02565b8060ff1660f11415612e26576031915050610f02565b8060ff1660f21415612e3c576032915050610f02565b8060ff1660f31415612e52576033915050610f02565b8060ff1660f41415612e68576034915050610f02565b8060ff1660f51415612e7e576035915050610f02565b8060ff1660f61415612e94576036915050610f02565b8060ff1660f71415612eaa576037915050610f02565b8060ff1660f81415612ec0576038915050610f02565b8060ff1660f91415612ed6576039915050610f02565b8060ff1660fa1415612eec576061915050610f02565b8060ff1660fb1415612f02576062915050610f02565b8060ff1660fc1415612f18576063915050610f02565b8060ff1660fd1415612f2e576064915050610f02565b8060ff1660fe1415612f44576065915050610f02565b8060ff1660ff1415612f5a576066915050610f02565b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b60408051808201909152600081526060602082015290565b60008083601f840112612fb1578182fd5b50813567ffffffffffffffff811115612fc8578182fd5b6020830191508360208083028501011115612fe257600080fd5b9250929050565b600082601f830112612ff9578081fd5b813567ffffffffffffffff81111561300d57fe5b61303e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161372a565b818152846020838601011115613052578283fd5b816020850160208301379081016020019190915292915050565b60006040828403121561307d578081fd5b6040516040810167ffffffffffffffff828210818311171561309b57fe5b816040528293508435835260208501359150808211156130ba57600080fd5b506130c785828601612fe9565b6020830152505092915050565b6000602082840312156130e5578081fd5b813561142f816137e6565b60008060408385031215613102578081fd5b823561310d816137e6565b9150602083013561311d816137e6565b809150509250929050565b6000806020838503121561313a578182fd5b823567ffffffffffffffff811115613150578283fd5b61315c85828601612fa0565b90969095509350505050565b600060208284031215613179578081fd5b8151801515811461142f578182fd5b600060208284031215613199578081fd5b815161142f816137e6565b6000602082840312156131b5578081fd5b5035919050565b6000602082840312156131cd578081fd5b813561142f81613808565b6000602082840312156131e9578081fd5b815161142f81613808565b60008060408385031215613206578182fd5b823561310d81613808565b600080600060408486031215613225578081fd5b833561323081613808565b9250602084013567ffffffffffffffff81111561324b578182fd5b61325786828701612fa0565b9497909650939450505050565b60008060408385031215613276578182fd5b823561328181613808565b946020939093013593505050565b6000806000606084860312156132a3578283fd5b83356132ae81613808565b925060208401359150604084013567ffffffffffffffff8111156132d0578182fd5b6132dc86828701612fe9565b9150509250925092565b600581106132f057fe5b60f81b9052565b600084825283602083015282516133158160408501602087016137ba565b91909101604001949350505050565b600082516133368184602087016137ba565b9190910192915050565b600061334c82846132e6565b50600101919050565b600061336182866132e6565b5060e09290921b7fffffffff000000000000000000000000000000000000000000000000000000001660018301526005820152602501919050565b60f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b918252602082015260400190565b60208082526016908201527f7265636f76657279206e6f7420696e6974696174656400000000000000000000604082015260600190565b60208082526014908201527f212063616c6c656420627920676f7665726e6f72000000000000000000000000604082015260600190565b6020808252600f908201527f21676f7665726e6f72526f757465720000000000000000000000000000000000604082015260600190565b6020808252818101527f58417070436f6e6e656374696f6e4d616e616765722062616420646f6d61696e604082015260600190565b60208082526008908201527f217265706c696361000000000000000000000000000000000000000000000000604082015260600190565b6020808252600b908201527f696e207265636f76657279000000000000000000000000000000000000000000604082015260600190565b6020808252601a908201527f7265636f7665727920616c726561647920696e69746961746564000000000000604082015260600190565b6020808252600b908201527f63616c6c206661696c6564000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f212063616c6c6564206279207265636f76657279206d616e6167657200000000604082015260600190565b60208082526007908201527f21726f7574657200000000000000000000000000000000000000000000000000604082015260600190565b60208082526013908201527f2176616c6964206d657373616765207479706500000000000000000000000000604082015260600190565b63ffffffff91909116815260200190565b600063ffffffff851682528360208301526060604083015282518060608401526136ac8160808501602087016137ba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b63ffffffff92831681529116602082015260400190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613336578182fd5b60405181810167ffffffffffffffff8111828210171561374657fe5b604052919050565b600067ffffffffffffffff83111561376257fe5b6020613771818286020161372a565b8481528181019084845b878110156137a257613790368335890161306c565b8452928401929084019060010161377b565b50909695505050505050565b6000611432368361306c565b60005b838110156137d55781810151838201526020016137bd565b838111156111725750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114611eac57600080fd5b63ffffffff81168114611eac57600080fdfe2e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656454797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a26469706673582212208ea81188026ec5a6f89d4428151f4e9077bcaffa915236796c5afe7b98e0f20d64736f6c63430007060033"; + "0x60c06040523480156200001157600080fd5b5060405162003a2338038062003a23833981016040819052620000349162000050565b5060e01b6001600160e01b031916608052603260a05262000087565b6000806040838503121562000063578182fd5b825163ffffffff8116811462000077578283fd5b6020939093015192949293505050565b60805160e01c60a051613961620000c2600039806104fe528061102652508061087752806108e8528061106b5280611db352506139616000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806363706be3116100e3578063db2021ae1161008c578063e6b3d94911610066578063e6b3d94914610308578063e8c6f83a1461031b578063f05151df1461032e57610198565b8063db2021ae146102e5578063de314b19146102f8578063e54292981461030057610198565b806368b967dc116100bd57806368b967dc146102b75780638d3638f4146102ca578063c3ef2134146102d257610198565b806363706be31461029457806366cf8fab1461029c578063670a43c4146102af57610198565b80634626abee116101455780635585416c1161011f5780635585416c1461024c57806356d5d4751461026157806356f7e2981461027457610198565b80634626abee14610213578063485cc955146102265780634fedbbb51461023957610198565b8063316c92b611610176578063316c92b6146101f05780633339df96146101f857806341bdc8b51461020057610198565b80630c340a241461019d5780630ce21995146101bb5780632ead72f6146101d0575b600080fd5b6101a5610336565b6040516101b291906133cc565b60405180910390f35b6101ce6101c9366004613264565b610352565b005b6101e36101de3660046131bc565b61041c565b6040516101b291906133f8565b6101ce61042e565b6101a561057c565b6101ce61020e3660046130d4565b610598565b6101ce610221366004613128565b610692565b6101ce6102343660046130f0565b61078d565b6101ce610247366004613211565b610a1f565b610254610be7565b6040516101b2919061366a565b6101ce61026f36600461328f565b610c0b565b6102876102823660046131bc565b610e9e565b6040516101b291906133ed565b6101ce610f07565b6102546102aa3660046131a4565b610fea565b6101e3611024565b6101ce6102c5366004613264565b611048565b610254611069565b6101ce6102e03660046131f4565b61108d565b6101ce6102f33660046131f4565b61109f565b6101a5611178565b6101e3611194565b6101ce6103163660046130d4565b61119a565b6101ce610329366004613264565b611279565b610287611309565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b61035a611309565b6103bd5760035473ffffffffffffffffffffffffffffffffffffffff1633146103b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b60405180910390fd5b61040e565b60025473ffffffffffffffffffffffffffffffffffffffff16331461040e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b610418828261132a565b5050565b60056020526000908152604090205481565b610436611309565b1561046d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613520565b60025473ffffffffffffffffffffffffffffffffffffffff1633146104be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b600154156104f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613557565b610522427f00000000000000000000000000000000000000000000000000000000000000006113bb565b600181905560025460405173ffffffffffffffffffffffffffffffffffffffff909116917f4c75781638d2c3a22c08e1295107f831b97683d017a1145733b743479a2ae2259161057291906133f8565b60405180910390a2565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b6105a0611309565b6105fa5760035473ffffffffffffffffffffffffffffffffffffffff1633146105f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b61064b565b60025473ffffffffffffffffffffffffffffffffffffffff16331461064b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61069a611309565b6106f45760035473ffffffffffffffffffffffffffffffffffffffff1633146106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b610745565b60025473ffffffffffffffffffffffffffffffffffffffff163314610745576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b60005b818110156107885761077f83838381811061075f57fe5b905060200281019061077191906136f7565b61077a906137ae565b611438565b50600101610748565b505050565b600054610100900460ff16806107a657506107a66114fb565b806107b4575060005460ff16155b610809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061383c602e913960400191505060405180910390fd5b600054610100900460ff1615801561086f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b33600161089d7f0000000000000000000000000000000000000000000000000000000000000000838361150c565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff86161790556108e685610598565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff16600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638d3638f46040518163ffffffff1660e01b815260040160206040518083038186803b15801561097557600080fd5b505afa158015610989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ad91906131d8565b63ffffffff16146109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906134b4565b5050801561078857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050565b60035473ffffffffffffffffffffffffffffffffffffffff163314610a70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b610a78611309565b15610aaf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613520565b6000610aba84611603565b90506000610ad0610acb848661374e565b611650565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3a57600080fd5b505afa158015610b4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b729190613188565b73ffffffffffffffffffffffffffffffffffffffff1663d34686398684846040518463ffffffff1660e01b8152600401610bae9392919061367b565b600060405180830381600087803b158015610bc857600080fd5b505af1158015610bdc573d6000803e3d6000fd5b505050505050505050565b60035474010000000000000000000000000000000000000000900463ffffffff1681565b600480546040517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911691635190bc5391610c60913391016133cc565b60206040518083038186803b158015610c7857600080fd5b505afa158015610c8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb09190613168565b610ce6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906134e9565b8282610cf28282611825565b610d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af9061347d565b6000610d348482611872565b9050610d617fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611896565b15610d9e57610d99610d947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166118f1565b61193f565b610e96565b610dc97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166119d8565b15610e0157610d99610dfc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611a36565b611a50565b610e2c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216611adb565b15610e6457610d99610e5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611ae4565b611afe565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613633565b505050505050565b6000805b600654811015610efc578263ffffffff1660068281548110610ec057fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff161415610ef4576001915050610f02565b600101610ea2565b50600090505b919050565b60025473ffffffffffffffffffffffffffffffffffffffff163314610f58576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b600154610f91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af9061340f565b60006001556002546040517f5397c02652a688dd1cac8544f233b3daaf96d7a9f974af80b70ab1538359e26191610fe09173ffffffffffffffffffffffffffffffffffffffff909116906133cc565b60405180910390a1565b60068181548110610ffa57600080fd5b9060005260206000209060089182820401919006600402915054906101000a900463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b611052828261132a565b600061105e8383611b73565b905061078881611ba0565b7f000000000000000000000000000000000000000000000000000000000000000081565b6104188261109a83611d98565b61132a565b60035473ffffffffffffffffffffffffffffffffffffffff1633146110f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b6110f8611309565b1561112f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613520565b600061113a83611db1565b905061114783838361150c565b80156111535750610418565b60006111678461116285611d98565b611de0565b905061117281611ba0565b50505050565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60015481565b60025473ffffffffffffffffffffffffffffffffffffffff1633146111eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135c5565b60025460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f3b3f758030fa296b85e15008f79cd22af8ffd2a7dd360d8963dcaf8e9fa2b5ff90600090a3600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035473ffffffffffffffffffffffffffffffffffffffff1633146112ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613446565b6112d2611309565b15611048576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af90613520565b6001546000908015801590428311159082906113225750805b935050505090565b63ffffffff8216600081815260056020526040908190205490519091907fe1cc453e5e6d48a5e3dd7dc6c72117211d2bea20fbb91fd980ebc3e7f73fe546906113769084908690613401565b60405180910390a2816113925761138c83611e08565b50610418565b806113a0576113a083611eaf565b5063ffffffff91909116600090815260056020526040902055565b60008282018381101561142f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b606060006114498360000151611f0f565b905060008173ffffffffffffffffffffffffffffffffffffffff1684602001516040516114769190613324565b6000604051808303816000865af19150503d80600081146114b3576040519150601f19603f3d011682016040523d82523d6000602084013e6114b8565b606091505b5093509050806114f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af9061358e565b5050919050565b600061150630611f12565b15905090565b8061151c5761151a83611603565b505b60008161152a57600061152c565b825b600380547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8881168202929092177fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff858116918217948590556040519596509094908416937f4daaa39e87dee84708195369c30e97baa0665dc8562ac10535a0f3a9329943aa936115f593909104169089906136e0565b60405180910390a350505050565b63ffffffff811660009081526005602052604090205480610f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103af906135fc565b805160609060006002820167ffffffffffffffff8111801561167157600080fd5b5060405190808252806020026020018201604052801561169b578160200160208202803683370190505b5090506116e9600060016040516020016116b59190613340565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290611872565b816000815181106116f657fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090921660209283029190910182015260405161173c916000916116b59186910161339c565b8160018151811061174957fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092166020928302919091019091015260005b8281101561181357600085828151811061179357fe5b6020026020010151905060006117c66000836000015184602001515185602001516040516020016116b5939291906132f7565b9050808460028501815181106117d857fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090921660209283029190910190910152505060010161177d565b5061181d81611f18565b949350505050565b60035460009063ffffffff848116740100000000000000000000000000000000000000009092041614801561142f57505063ffffffff919091166000908152600560205260409020541490565b81516000906020840161188d64ffffffffff85168284611f68565b95945050505050565b600060016118a383611fc9565b60ff16148015611432575060406118db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611ff9565b6bffffffffffffffffffffffff16101592915050565b60006118fc82611896565b156119375761193060015b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084169061200d565b9050610f02565b611432612033565b806001611970815b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841690612057565b50600061199e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166121d7565b905060005b81518110156119d1576119c88282815181106119bb57fe5b6020026020010151611438565b506001016119a3565b5050505050565b600060025b60ff166119e983611fc9565b60ff1614801561143257506025611a217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611ff9565b6bffffffffffffffffffffffff161492915050565b6000611a41826119d8565b15611937576119306002611907565b806002611a5c81611947565b506000611a8a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000851661237a565b90506000611ac1611abc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000087166123ab565b611f0f565b90506000611ace83611db1565b9050610e9683838361150c565b600060036119dd565b6000611aef82611adb565b15611937576119306003611907565b806003611b0a81611947565b506000611b387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000851661237a565b90506000611b677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166123ab565b90506119d1828261132a565b606061142f611b9b611b966000600387876040516020016116b593929190613355565b6123dc565b612411565b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0a57600080fd5b505afa158015611c1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c429190613188565b905060005b60065481101561078857600063ffffffff1660068281548110611c6657fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff1614611d90578173ffffffffffffffffffffffffffffffffffffffff1663d346863960068381548110611cb857fe5b90600052602060002090600891828204019190066004029054906101000a900463ffffffff166005600060068681548110611cef57fe5b6000918252602080832060088304015463ffffffff6004600790941684026101000a909104168452830193909352604091820190205490517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b168152611d5d939289910161367b565b600060405180830381600087803b158015611d7757600080fd5b505af1158015611d8b573d6000803e3d6000fd5b505050505b600101611c47565b73ffffffffffffffffffffffffffffffffffffffff1690565b7f000000000000000000000000000000000000000000000000000000000000000063ffffffff90811691161490565b606061142f611b9b611e036000600287876040516020016116b593929190613355565b612455565b63ffffffff811660009081526005602052604081208190555b600654811015610418578163ffffffff1660068281548110611e3f57fe5b6000918252602090912060088204015460079091166004026101000a900463ffffffff161415611ea45760068181548110611e7657fe5b90600052602060002090600891828204019190066004026101000a81549063ffffffff021916905550611eac565b600101611e21565b50565b600680546001810182556000919091527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f6008820401805460079092166004026101000a63ffffffff818102199093169390921691909102919091179055565b90565b3b151590565b6040516060906000611f2d8460208401612463565b90506000611f3a82611ff9565b6bffffffffffffffffffffffff1690506000611f55836124db565b9184525082016020016040525092915050565b600080611f7584846124ef565b9050604051811115611f85575060005b80611fb3577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050611fc2565b611fbe858585612561565b9150505b9392505050565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826001612574565b60181c6bffffffffffffffffffffffff1690565b60d81b7affffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090565b60006120638383612595565b6121d0576000612081612075856125b7565b64ffffffffff166125bd565b91505060006120968464ffffffffff166125bd565b604080517f5479706520617373657274696f6e206661696c65642e20476f742030780000006020808301919091527fffffffffffffffffffff0000000000000000000000000000000000000000000060b088811b8216603d8501527f2e20457870656374656420307800000000000000000000000000000000000000604785015285901b1660548301528251603e818403018152605e8301938490527f08c379a000000000000000000000000000000000000000000000000000000000909352606282018181528351608284015283519496509294508493839260a2019185019080838360005b8381101561219557818101518382015260200161217d565b50505050905090810190601f1680156121c25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5090919050565b606060006122097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416600180612574565b9050600061227a60028061223e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816611ff9565b6bffffffffffffffffffffffff160360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816929190612691565b905060008260ff1667ffffffffffffffff8111801561229857600080fd5b506040519080825280602002602001820160405280156122d257816020015b6122bf612f88565b8152602001906001900390816122b75790505b50905060005b60006123057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516611ff9565b6bffffffffffffffffffffffff1611156123715761232283612721565b82828151811061232e57fe5b60209081029190910101515261234383612751565b82828151811061234f57fe5b60200260200101516020018190525061236783612790565b92506001016122d8565b50949350505050565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660016004612574565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166005602061281b565b60006114326123ea83611ae4565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016612989565b606060008061241f84611ff9565b6bffffffffffffffffffffffff16905060405191508192506124448483602001612a03565b508181016020016040529052919050565b60006114326123ea83611a36565b6000604051828111156124765760206060fd5b506000805b84518110156124ce57600085828151811061249257fe5b602002602001015190506124a881848701612a03565b506124b281611ff9565b6bffffffffffffffffffffffff1692909201915060010161247b565b5061181d60008483612561565b60006124e682612b2f565b60200292915050565b8181018281101561143257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60008160200360080260ff1661258b85858561281b565b901c949350505050565b60008164ffffffffff166125a8846125b7565b64ffffffffff16149392505050565b60d81c90565b600080601f5b600f8160ff1611156126255760ff600882021684901c6125e281612b63565b61ffff16841793508160ff166010146125fd57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016125c3565b50600f5b60ff8160ff16101561268b5760ff600882021684901c61264881612b63565b61ffff16831792508160ff1660001461266357601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612629565b50915091565b60008061269d86612b93565b6bffffffffffffffffffffffff1690506126b686612ba7565b6126ca856126c484896124ef565b906124ef565b11156126f9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061181d565b61270381866124ef565b90506127178364ffffffffff168286611f68565b9695505050505050565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831682602061281b565b6060611432611b9b604061276485612bd1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861691906004612691565b600081600161279e81611947565b5060006127aa85612bd1565b604001905061188d81806127df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916611ff9565b6bffffffffffffffffffffffff160360017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008916929190612691565b600060ff821661282d57506000611fc2565b61283684611ff9565b6bffffffffffffffffffffffff166128518460ff85166124ef565b11156128f35761289261286385612b93565b6bffffffffffffffffffffffff1661287a86611ff9565b6bffffffffffffffffffffffff16858560ff16612c01565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181815283516024840152835190928392604490910191908501908083836000831561219557818101518382015260200161217d565b60208260ff161115612950576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018061386a603a913960400191505060405180910390fd5b60088202600061295f86612b93565b6bffffffffffffffffffffffff169050600061297a83612d5c565b91909501511695945050505050565b600061299482612da5565b6129ff57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f56616c696469747920617373657274696f6e206661696c656400000000000000604482015290519081900360640190fd5b5090565b6000612a0e83612de2565b612a63576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806138a46028913960400191505060405180910390fd5b612a6c83612da5565b612ac1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806138cc602b913960400191505060405180910390fd5b6000612acc84611ff9565b6bffffffffffffffffffffffff1690506000612ae785612b93565b6bffffffffffffffffffffffff1690506000604051905084811115612b0c5760206060fd5b8285848460045afa50612717612b21876125b7565b64ffffffffff168685612561565b60006020612b556020612b4185611ff9565b6bffffffffffffffffffffffff16906124ef565b81612b5c57fe5b0492915050565b6000612b7560048360ff16901c612df4565b60ff161760081b62ffff0016612b8a82612df4565b60ff1617919050565b60781c6bffffffffffffffffffffffff1690565b6000612bb282611ff9565b612bbb83612b93565b016bffffffffffffffffffffffff169050919050565b60006114327fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660208061281b565b60606000612c0e866125bd565b9150506000612c1c866125bd565b9150506000612c2a866125bd565b9150506000612c38866125bd565b9150508383838360405160200180806138f7603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161381b82397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000612db0826125b7565b64ffffffffff1664ffffffffff1415612dcb57506000610f02565b6000612dd683612ba7565b60405110199392505050565b6000612ded82612f60565b1592915050565b600060f08083179060ff82161415612e10576030915050610f02565b8060ff1660f11415612e26576031915050610f02565b8060ff1660f21415612e3c576032915050610f02565b8060ff1660f31415612e52576033915050610f02565b8060ff1660f41415612e68576034915050610f02565b8060ff1660f51415612e7e576035915050610f02565b8060ff1660f61415612e94576036915050610f02565b8060ff1660f71415612eaa576037915050610f02565b8060ff1660f81415612ec0576038915050610f02565b8060ff1660f91415612ed6576039915050610f02565b8060ff1660fa1415612eec576061915050610f02565b8060ff1660fb1415612f02576062915050610f02565b8060ff1660fc1415612f18576063915050610f02565b8060ff1660fd1415612f2e576064915050610f02565b8060ff1660fe1415612f44576065915050610f02565b8060ff1660ff1415612f5a576066915050610f02565b50919050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b60408051808201909152600081526060602082015290565b60008083601f840112612fb1578182fd5b50813567ffffffffffffffff811115612fc8578182fd5b6020830191508360208083028501011115612fe257600080fd5b9250929050565b600082601f830112612ff9578081fd5b813567ffffffffffffffff81111561300d57fe5b61303e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8401160161372a565b818152846020838601011115613052578283fd5b816020850160208301379081016020019190915292915050565b60006040828403121561307d578081fd5b6040516040810167ffffffffffffffff828210818311171561309b57fe5b816040528293508435835260208501359150808211156130ba57600080fd5b506130c785828601612fe9565b6020830152505092915050565b6000602082840312156130e5578081fd5b813561142f816137e6565b60008060408385031215613102578081fd5b823561310d816137e6565b9150602083013561311d816137e6565b809150509250929050565b6000806020838503121561313a578182fd5b823567ffffffffffffffff811115613150578283fd5b61315c85828601612fa0565b90969095509350505050565b600060208284031215613179578081fd5b8151801515811461142f578182fd5b600060208284031215613199578081fd5b815161142f816137e6565b6000602082840312156131b5578081fd5b5035919050565b6000602082840312156131cd578081fd5b813561142f81613808565b6000602082840312156131e9578081fd5b815161142f81613808565b60008060408385031215613206578182fd5b823561310d81613808565b600080600060408486031215613225578081fd5b833561323081613808565b9250602084013567ffffffffffffffff81111561324b578182fd5b61325786828701612fa0565b9497909650939450505050565b60008060408385031215613276578182fd5b823561328181613808565b946020939093013593505050565b6000806000606084860312156132a3578283fd5b83356132ae81613808565b925060208401359150604084013567ffffffffffffffff8111156132d0578182fd5b6132dc86828701612fe9565b9150509250925092565b600581106132f057fe5b60f81b9052565b600084825283602083015282516133158160408501602087016137ba565b91909101604001949350505050565b600082516133368184602087016137ba565b9190910192915050565b600061334c82846132e6565b50600101919050565b600061336182866132e6565b5060e09290921b7fffffffff000000000000000000000000000000000000000000000000000000001660018301526005820152602501919050565b60f89190911b7fff0000000000000000000000000000000000000000000000000000000000000016815260010190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b901515815260200190565b90815260200190565b918252602082015260400190565b60208082526016908201527f7265636f76657279206e6f7420696e6974696174656400000000000000000000604082015260600190565b60208082526014908201527f212063616c6c656420627920676f7665726e6f72000000000000000000000000604082015260600190565b6020808252600f908201527f21676f7665726e6f72526f757465720000000000000000000000000000000000604082015260600190565b6020808252818101527f58417070436f6e6e656374696f6e4d616e616765722062616420646f6d61696e604082015260600190565b60208082526008908201527f217265706c696361000000000000000000000000000000000000000000000000604082015260600190565b6020808252600b908201527f696e207265636f76657279000000000000000000000000000000000000000000604082015260600190565b6020808252601a908201527f7265636f7665727920616c726561647920696e69746961746564000000000000604082015260600190565b6020808252600b908201527f63616c6c206661696c6564000000000000000000000000000000000000000000604082015260600190565b6020808252601c908201527f212063616c6c6564206279207265636f76657279206d616e6167657200000000604082015260600190565b60208082526007908201527f21726f7574657200000000000000000000000000000000000000000000000000604082015260600190565b60208082526013908201527f2176616c6964206d657373616765207479706500000000000000000000000000604082015260600190565b63ffffffff91909116815260200190565b600063ffffffff851682528360208301526060604083015282518060608401526136ac8160808501602087016137ba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b63ffffffff92831681529116602082015260400190565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112613336578182fd5b60405181810167ffffffffffffffff8111828210171561374657fe5b604052919050565b600067ffffffffffffffff83111561376257fe5b6020613771818286020161372a565b8481528181019084845b878110156137a257613790368335890161306c565b8452928401929084019060010161377b565b50909695505050505050565b6000611432368361306c565b60005b838110156137d55781810151838201526020016137bd565b838111156111725750506000910152565b73ffffffffffffffffffffffffffffffffffffffff81168114611eac57600080fd5b63ffffffff81168114611eac57600080fdfe2e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656454797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a2646970667358221220b07cc61d4188dc20d237df108835512175733781934b46997cf013ca31b91cec64736f6c63430007060033"; export class TestGovernanceRouter__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-core/factories/TestHome__factory.ts b/typescript/typechain/optics-core/factories/TestHome__factory.ts index 8e524b767..800af1576 100644 --- a/typescript/typechain/optics-core/factories/TestHome__factory.ts +++ b/typescript/typechain/optics-core/factories/TestHome__factory.ts @@ -628,7 +628,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506040516129263803806129268339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166128b361007360003980610a175280610a4d5280610e8752806112b352506128b36000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80639776120e116100f9578063c4d66de811610097578063ebf0c71711610071578063ebf0c717146106e7578063f2fde38b146106ef578063f6d1610214610722578063fd54b2281461072a576101c4565b8063c4d66de8146105f4578063d346863914610627578063df034cd0146106df576101c4565b80639fa6a6e3116100d35780639fa6a6e314610509578063ab91c7b014610511578063b31c01fb14610519578063c19d93fb146105cb576101c4565b80639776120e1461049b5780639d54f419146104ce5780639df6c8e114610501576101c4565b806336e104de11610166578063522ae00211610140578063522ae002146103a85780638d3638f4146103b05780638da5cb5b146103b85780638e4e30e0146103e9576101c4565b806336e104de1461037757806345630b1a146103985780635146366e146103a0576101c4565b8063146901db116101a2578063146901db1461023357806319d9d21a1461023d5780632752e0f41461030a5780632bef289214610346576101c4565b806306661abd146101c95780630be4f422146101e3578063111b3511146101eb575b600080fd5b6101d1610732565b60408051918252519081900360200190f35b6101d1610738565b6102166004803603604081101561020157600080fd5b5063ffffffff81358116916020013516610747565b6040805167ffffffffffffffff9092168252519081900360200190f35b61023b61075c565b005b61023b600480360360a081101561025357600080fd5b813591602081019181019060808101606082013564010000000081111561027957600080fd5b82018360208201111561028b57600080fd5b803590602001918460018302840111640100000000831117156102ad57600080fd5b9193909290916020810190356401000000008111156102cb57600080fd5b8201836020820111156102dd57600080fd5b803590602001918460018302840111640100000000831117156102ff57600080fd5b509092509050610766565b61032d6004803603602081101561032057600080fd5b503563ffffffff166109c3565b6040805163ffffffff9092168252519081900360200190f35b6103636004803603602081101561035c57600080fd5b50356109db565b604080519115158252519081900360200190f35b61037f6109e8565b6040805192835260208301919091528051918290030190f35b6101d1610a10565b6101d1610a3b565b6101d1610a45565b61032d610a4b565b6103c0610a6f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610363600480360360608110156103ff57600080fd5b81359160208101359181019060608101604082013564010000000081111561042657600080fd5b82018360208201111561043857600080fd5b8035906020019184600183028401116401000000008311171561045a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a8b945050505050565b61023b600480360360208110156104b157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c5e565b61023b600480360360208110156104e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cf0565b6103c0610d7f565b6101d1610d9b565b6101d1610da1565b61023b6004803603606081101561052f57600080fd5b81359160208101359181019060608101604082013564010000000081111561055657600080fd5b82018360208201111561056857600080fd5b8035906020019184600183028401116401000000008311171561058a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610dad945050505050565b6105d3610f4b565b604051808260028111156105e357fe5b815260200191505060405180910390f35b61023b6004803603602081101561060a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f6c565b61023b6004803603606081101561063d57600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561066a57600080fd5b82018360208201111561067c57600080fd5b8035906020019184600183028401116401000000008311171561069e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611189945050505050565b6103c061140b565b6101d1611427565b61023b6004803603602081101561070557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611433565b6101d16114c2565b6101d16114ce565b60215490565b6000610742610732565b905090565b600061075383836114d4565b90505b92915050565b6107646114ee565b565b600260245474010000000000000000000000000000000000000000900460ff16600281111561079157fe5b14156107fe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f8601819004810282018101909252848152610840918891883591889088908190840183828082843760009201919091525061152f92505050565b801561088f575061088f86866001602002013584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152f92505050565b80156108a057508435602086013514155b156109bb576108ad6115c1565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b60266020526000908152604090205463ffffffff1681565b600061075660228361169c565b6000806109f5602261170c565b15610a0c576025549150610a09602261174c565b90505b9091565b60006107427f0000000000000000000000000000000000000000000000000000000000000000611789565b6000610742610a10565b61080081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60285473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260245474010000000000000000000000000000000000000000900460ff166002811115610ab857fe5b1415610b2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610b3084848461152f565b610b9b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6025548414610c0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f7420612063757272656e7420757064617465000000000000000000000000604482015290519081900360640190fd5b610c1660228461169c565b610c5357610c226115c1565b6040517fb015f3b3a7a56304206e1e4d15f0dad9b2914691bbe7ab34e407c53b2700a91b90600090a1506001610c57565b5060005b9392505050565b60285473ffffffffffffffffffffffffffffffffffffffff163314610ce457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e65720000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ced816117fe565b50565b60275473ffffffffffffffffffffffffffffffffffffffff163314610d7657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f21757064617465724d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b610ced816118eb565b60275473ffffffffffffffffffffffffffffffffffffffff1681565b60255481565b6000610742602261170c565b600260245474010000000000000000000000000000000000000000900460ff166002811115610dd857fe5b1415610e4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610e50838383610a8b565b15610e5a57610f46565b6000610e666022611964565b905082811415610e765750610e7c565b50610e5a565b8160258190555081837f000000000000000000000000000000000000000000000000000000000000000063ffffffff167f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2846040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f0b578181015183820152602001610ef3565b50505050905090810190601f168015610f385780820380516001836020036101000a031916815260200191505b509250505060405180910390a45b505050565b60245474010000000000000000000000000000000000000000900460ff1681565b600054610100900460ff1680610f855750610f85611a9d565b80610f93575060005460ff16155b610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061282e602e913960400191505060405180910390fd5b600054610100900460ff1615801561104e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b61105733611aae565b611060826117fe565b61106a6022611b3c565b602754604080517fdf034cd0000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163df034cd0916004808301926020929190829003018186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d60208110156110ff57600080fd5b5051905061110c81611b80565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f9e5f57e4ee5f9eeac3131028d48f19d80820ce6fa93c4c66cc82a3e2b9837c329181900360200190a150801561118557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600260245474010000000000000000000000000000000000000000900460ff1660028111156111b457fe5b141561122157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b6108008151111561129357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f21746f6f20626967000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff808416600090815260266020526040812054909116906112dc7f00000000000000000000000000000000000000000000000000000000000000003384888888611d0d565b805160208201209091506112f1600182611de3565b6113046112fc611427565b602290611eeb565b508061131087856114d4565b67ffffffffffffffff166001611324610732565b037f1a2a870182b13cdb4a0ec2e16f96df5a0e20b1327d43564f7f0e62992a55bd6c856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561138457818101518382015260200161136c565b50505050905090810190601f1680156113b15780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505063ffffffff938416600090815260266020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016600192909201909416179092555050565b60245473ffffffffffffffffffffffffffffffffffffffff1681565b60006107426001611f58565b60285473ffffffffffffffffffffffffffffffffffffffff1633146114b957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e65720000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ced81611aae565b6000610742602261174c565b60215481565b63ffffffff1660209190911b67ffffffff00000000161790565b602480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055565b60008061153a610a10565b858560405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120905061157b81611f6b565b60245490915073ffffffffffffffffffffffffffffffffffffffff166115a18285611fbc565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b6115c96114ee565b602754604080517f5b3c2cbf000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff90921691635b3c2cbf9160248082019260009290919082900301818387803b15801561163b57600080fd5b505af115801561164f573d6000803e3d6000fd5b505060245460405133935073ffffffffffffffffffffffffffffffffffffffff90911691507f98064af315f26d7333ba107ba43a128ec74345f4d4e6f2549840fe092a1c8bce90600090a3565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111610c53576000818152600185016020526040902054831415611704576001915050610756565b6001016116b4565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166117448282612056565b949350505050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b61180781612070565b61187257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f21636f6e747261637420757064617465724d616e616765720000000000000000604482015290519081900360640190fd5b6027805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f958d788fb4c373604cd4c73aa8c592de127d0819b49bb4dc02c8ecd666e965bf9181900360200190a150565b6024805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f9e5f57e4ee5f9eeac3131028d48f19d80820ce6fa93c4c66cc82a3e2b9837c329181900360200190a150565b80546000906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116911661199c8282612056565b611a0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff8116600090815260018501602052604090205492508215611a58576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b6000611aa830612070565b15905090565b60285460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3602880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b80546fffffffffffffffffffffffffffffffff16610ced5780547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600117815550565b600054610100900460ff1680611b995750611b99611a9d565b80611ba7575060005460ff16155b611bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061282e602e913960400191505060405180910390fd5b600054610100900460ff16158015611c6257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561118557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6060868686868686604051602001808763ffffffff1660e01b81526004018681526020018563ffffffff1660e01b81526004018463ffffffff1660e01b815260040183815260200182805190602001908083835b60208310611d9e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611d61565b6001836020036101000a038019825116818451168082178552505050505050905001965050505050505060405160208183030381529060405290509695505050505050565b602082015463ffffffff11611e5957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6d65726b6c6520747265652066756c6c00000000000000000000000000000000604482015290519081900360640190fd5b6020820180546001019081905560005b6020811015611ee8578160011660011415611e955782848260208110611e8b57fe5b0155506111859050565b838160208110611ea157fe5b015483604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120925060028281611edd57fe5b049150600101611e69565b50fe5b81546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009283900482166001019182169092029190911783558115610756576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b600061075682611f66612076565b612537565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461202e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61204c868285856125f5565b9695505050505050565b60019103016fffffffffffffffffffffffffffffffff1690565b3b151590565b61207e6127ec565b600081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560208201527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3060408201527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba8560608201527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a1934460808201527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d60a08201527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a196860c08201527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f8360e08201527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6101008201527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06101208201527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56101408201527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926101608201527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6101808201527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6101a08201527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6101c08201527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26101e08201527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6102008201527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6102208201527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06102408201527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06102608201527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26102808201527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96102a08201527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776102c08201527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526102e08201527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6103008201527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6103208201527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06103408201527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6103608201527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6103808201527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226103a08201527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356103c08201527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96103e082015290565b6020820154600090815b60208110156125ed57600182821c16600086836020811061255e57fe5b0154905081600114156125a157808560405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094506125e3565b848684602081106125ae57fe5b602002015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094505b5050600101612541565b505092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061280c6022913960400191505060405180910390fd5b8360ff16601b148061268557508360ff16601c145b6126da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061285c6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612736573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166127e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b604051806104000160405280602090602082028036833750919291505056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c7565496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565a264697066735822122074d2ab528fd541923455a49778e990df39d632f21351a462cd29cdcfc1c8409164736f6c63430007060033"; + "0x60a060405234801561001057600080fd5b506040516129263803806129268339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166128b361007360003980610a175280610a4d5280610e8752806112b352506128b36000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80639776120e116100f9578063c4d66de811610097578063ebf0c71711610071578063ebf0c717146106e7578063f2fde38b146106ef578063f6d1610214610722578063fd54b2281461072a576101c4565b8063c4d66de8146105f4578063d346863914610627578063df034cd0146106df576101c4565b80639fa6a6e3116100d35780639fa6a6e314610509578063ab91c7b014610511578063b31c01fb14610519578063c19d93fb146105cb576101c4565b80639776120e1461049b5780639d54f419146104ce5780639df6c8e114610501576101c4565b806336e104de11610166578063522ae00211610140578063522ae002146103a85780638d3638f4146103b05780638da5cb5b146103b85780638e4e30e0146103e9576101c4565b806336e104de1461037757806345630b1a146103985780635146366e146103a0576101c4565b8063146901db116101a2578063146901db1461023357806319d9d21a1461023d5780632752e0f41461030a5780632bef289214610346576101c4565b806306661abd146101c95780630be4f422146101e3578063111b3511146101eb575b600080fd5b6101d1610732565b60408051918252519081900360200190f35b6101d1610738565b6102166004803603604081101561020157600080fd5b5063ffffffff81358116916020013516610747565b6040805167ffffffffffffffff9092168252519081900360200190f35b61023b61075c565b005b61023b600480360360a081101561025357600080fd5b813591602081019181019060808101606082013564010000000081111561027957600080fd5b82018360208201111561028b57600080fd5b803590602001918460018302840111640100000000831117156102ad57600080fd5b9193909290916020810190356401000000008111156102cb57600080fd5b8201836020820111156102dd57600080fd5b803590602001918460018302840111640100000000831117156102ff57600080fd5b509092509050610766565b61032d6004803603602081101561032057600080fd5b503563ffffffff166109c3565b6040805163ffffffff9092168252519081900360200190f35b6103636004803603602081101561035c57600080fd5b50356109db565b604080519115158252519081900360200190f35b61037f6109e8565b6040805192835260208301919091528051918290030190f35b6101d1610a10565b6101d1610a3b565b6101d1610a45565b61032d610a4b565b6103c0610a6f565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610363600480360360608110156103ff57600080fd5b81359160208101359181019060608101604082013564010000000081111561042657600080fd5b82018360208201111561043857600080fd5b8035906020019184600183028401116401000000008311171561045a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a8b945050505050565b61023b600480360360208110156104b157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c5e565b61023b600480360360208110156104e457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610cf0565b6103c0610d7f565b6101d1610d9b565b6101d1610da1565b61023b6004803603606081101561052f57600080fd5b81359160208101359181019060608101604082013564010000000081111561055657600080fd5b82018360208201111561056857600080fd5b8035906020019184600183028401116401000000008311171561058a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610dad945050505050565b6105d3610f4b565b604051808260028111156105e357fe5b815260200191505060405180910390f35b61023b6004803603602081101561060a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f6c565b61023b6004803603606081101561063d57600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561066a57600080fd5b82018360208201111561067c57600080fd5b8035906020019184600183028401116401000000008311171561069e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611189945050505050565b6103c061140b565b6101d1611427565b61023b6004803603602081101561070557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611433565b6101d16114c2565b6101d16114ce565b60215490565b6000610742610732565b905090565b600061075383836114d4565b90505b92915050565b6107646114ee565b565b600260245474010000000000000000000000000000000000000000900460ff16600281111561079157fe5b14156107fe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f8601819004810282018101909252848152610840918891883591889088908190840183828082843760009201919091525061152f92505050565b801561088f575061088f86866001602002013584848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061152f92505050565b80156108a057508435602086013514155b156109bb576108ad6115c1565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b60266020526000908152604090205463ffffffff1681565b600061075660228361169c565b6000806109f5602261170c565b15610a0c576025549150610a09602261174c565b90505b9091565b60006107427f0000000000000000000000000000000000000000000000000000000000000000611789565b6000610742610a10565b61080081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60285473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260245474010000000000000000000000000000000000000000900460ff166002811115610ab857fe5b1415610b2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610b3084848461152f565b610b9b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6025548414610c0b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6e6f7420612063757272656e7420757064617465000000000000000000000000604482015290519081900360640190fd5b610c1660228461169c565b610c5357610c226115c1565b6040517fb015f3b3a7a56304206e1e4d15f0dad9b2914691bbe7ab34e407c53b2700a91b90600090a1506001610c57565b5060005b9392505050565b60285473ffffffffffffffffffffffffffffffffffffffff163314610ce457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e65720000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ced816117fe565b50565b60275473ffffffffffffffffffffffffffffffffffffffff163314610d7657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f21757064617465724d616e616765720000000000000000000000000000000000604482015290519081900360640190fd5b610ced816118eb565b60275473ffffffffffffffffffffffffffffffffffffffff1681565b60255481565b6000610742602261170c565b600260245474010000000000000000000000000000000000000000900460ff166002811115610dd857fe5b1415610e4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610e50838383610a8b565b15610e5a57610f46565b6000610e666022611964565b905082811415610e765750610e7c565b50610e5a565b8160258190555081837f000000000000000000000000000000000000000000000000000000000000000063ffffffff167f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2846040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f0b578181015183820152602001610ef3565b50505050905090810190601f168015610f385780820380516001836020036101000a031916815260200191505b509250505060405180910390a45b505050565b60245474010000000000000000000000000000000000000000900460ff1681565b600054610100900460ff1680610f855750610f85611a9d565b80610f93575060005460ff16155b610fe8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061282e602e913960400191505060405180910390fd5b600054610100900460ff1615801561104e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b61105733611aae565b611060826117fe565b61106a6022611b3c565b602754604080517fdf034cd0000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163df034cd0916004808301926020929190829003018186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d60208110156110ff57600080fd5b5051905061110c81611b80565b6040805173ffffffffffffffffffffffffffffffffffffffff8316815290517f9e5f57e4ee5f9eeac3131028d48f19d80820ce6fa93c4c66cc82a3e2b9837c329181900360200190a150801561118557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600260245474010000000000000000000000000000000000000000900460ff1660028111156111b457fe5b141561122157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b6108008151111561129357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f21746f6f20626967000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff808416600090815260266020526040812054909116906112dc7f00000000000000000000000000000000000000000000000000000000000000003384888888611d0d565b805160208201209091506112f1600182611de3565b6113046112fc611427565b602290611eeb565b508061131087856114d4565b67ffffffffffffffff166001611324610732565b037f1a2a870182b13cdb4a0ec2e16f96df5a0e20b1327d43564f7f0e62992a55bd6c856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561138457818101518382015260200161136c565b50505050905090810190601f1680156113b15780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505063ffffffff938416600090815260266020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000016600192909201909416179092555050565b60245473ffffffffffffffffffffffffffffffffffffffff1681565b60006107426001611f58565b60285473ffffffffffffffffffffffffffffffffffffffff1633146114b957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f216f776e65720000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ced81611aae565b6000610742602261174c565b60215481565b63ffffffff1660209190911b67ffffffff00000000161790565b602480547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674020000000000000000000000000000000000000000179055565b60008061153a610a10565b858560405160200180848152602001838152602001828152602001935050505060405160208183030381529060405280519060200120905061157b81611f6b565b60245490915073ffffffffffffffffffffffffffffffffffffffff166115a18285611fbc565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b6115c96114ee565b602754604080517f5b3c2cbf000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff90921691635b3c2cbf9160248082019260009290919082900301818387803b15801561163b57600080fd5b505af115801561164f573d6000803e3d6000fd5b505060245460405133935073ffffffffffffffffffffffffffffffffffffffff90911691507f98064af315f26d7333ba107ba43a128ec74345f4d4e6f2549840fe092a1c8bce90600090a3565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111610c53576000818152600185016020526040902054831415611704576001915050610756565b6001016116b4565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166117448282612056565b949350505050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b61180781612070565b61187257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f21636f6e747261637420757064617465724d616e616765720000000000000000604482015290519081900360640190fd5b6027805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f958d788fb4c373604cd4c73aa8c592de127d0819b49bb4dc02c8ecd666e965bf9181900360200190a150565b6024805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517f9e5f57e4ee5f9eeac3131028d48f19d80820ce6fa93c4c66cc82a3e2b9837c329181900360200190a150565b80546000906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116911661199c8282612056565b611a0757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff8116600090815260018501602052604090205492508215611a58576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b6000611aa830612070565b15905090565b60285460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3602880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b80546fffffffffffffffffffffffffffffffff16610ced5780547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016600117815550565b600054610100900460ff1680611b995750611b99611a9d565b80611ba7575060005460ff16155b611bfc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018061282e602e913960400191505060405180910390fd5b600054610100900460ff16158015611c6257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b602480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416177fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055801561118557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b6060868686868686604051602001808763ffffffff1660e01b81526004018681526020018563ffffffff1660e01b81526004018463ffffffff1660e01b815260040183815260200182805190602001908083835b60208310611d9e57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611d61565b6001836020036101000a038019825116818451168082178552505050505050905001965050505050505060405160208183030381529060405290509695505050505050565b602082015463ffffffff11611e5957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6d65726b6c6520747265652066756c6c00000000000000000000000000000000604482015290519081900360640190fd5b6020820180546001019081905560005b6020811015611ee8578160011660011415611e955782848260208110611e8b57fe5b0155506111859050565b838160208110611ea157fe5b015483604051602001808381526020018281526020019250505060405160208183030381529060405280519060200120925060028281611edd57fe5b049150600101611e69565b50fe5b81546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009283900482166001019182169092029190911783558115610756576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b600061075682611f66612076565b612537565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461202e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61204c868285856125f5565b9695505050505050565b60019103016fffffffffffffffffffffffffffffffff1690565b3b151590565b61207e6127ec565b600081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560208201527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3060408201527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba8560608201527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a1934460808201527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d60a08201527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a196860c08201527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f8360e08201527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6101008201527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06101208201527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56101408201527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926101608201527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6101808201527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6101a08201527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6101c08201527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26101e08201527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6102008201527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6102208201527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06102408201527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06102608201527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26102808201527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96102a08201527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776102c08201527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526102e08201527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6103008201527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6103208201527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06103408201527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6103608201527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6103808201527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226103a08201527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356103c08201527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96103e082015290565b6020820154600090815b60208110156125ed57600182821c16600086836020811061255e57fe5b0154905081600114156125a157808560405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094506125e3565b848684602081106125ae57fe5b602002015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094505b5050600101612541565b505092915050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061280c6022913960400191505060405180910390fd5b8360ff16601b148061268557508360ff16601c145b6126da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061285c6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612736573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81166127e357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b95945050505050565b604051806104000160405280602090602082028036833750919291505056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c7565496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c7565a264697066735822122007ac37cc4eb8c9eb1e63aec38ae431229cc092d2de2b32f50f206765e58162ac64736f6c63430007060033"; export class TestHome__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-core/factories/TestReplica__factory.ts b/typescript/typechain/optics-core/factories/TestReplica__factory.ts index ea83da533..16c89bdb8 100644 --- a/typescript/typechain/optics-core/factories/TestReplica__factory.ts +++ b/typescript/typechain/optics-core/factories/TestReplica__factory.ts @@ -673,7 +673,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506040516135503803806135508339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166134e761006960003980610ffb528061106252506134e76000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c8063928bc4b21161012a578063b31c01fb116100bd578063bf30a55d1161008c578063d88beda211610071578063d88beda2146108cd578063df034cd0146108d5578063f6d161021461090657610226565b8063bf30a55d14610870578063c19d93fb146108c557610226565b8063b31c01fb146106ef578063b61c19e8146107a1578063b80777ea14610847578063ba739a621461084f57610226565b80639d54f419116100f95780639d54f4191461068f5780639fa6a6e3146106c2578063a3f81d68146106ca578063ab91c7b0146106e757610226565b8063928bc4b214610511578063961681dc146105b757806396ae1a89146105bf5780639868a2731461066557610226565b806339992668116101bd57806351d7bcd71161018c5780637022b58e116101715780637022b58e146104e457806371bfb7b8146104ec5780638d3638f41461050957610226565b806351d7bcd7146104135780636188af0e1461043657610226565b806339992668146103da57806345630b1a146103e2578063456d0672146103ea5780635146366e1461040b57610226565b806325e3beda116101f957806325e3beda1461033b5780632bbd59ca146103555780632bef289214610393578063371d3071146103b057610226565b8063016bcc351461022b578063146901db1461024a57806314cfabb31461025257806319d9d21a1461026e575b600080fd5b6102486004803603602081101561024157600080fd5b503561090e565b005b610248610925565b61025a61092f565b604080519115158252519081900360200190f35b610248600480360360a081101561028457600080fd5b81359160208101918101906080810160608201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460018302840111640100000000831117156102de57600080fd5b9193909290916020810190356401000000008111156102fc57600080fd5b82018360208201111561030e57600080fd5b8035906020019184600183028401116401000000008311171561033057600080fd5b50909250905061095b565b610343610bba565b60408051918252519081900360200190f35b6103726004803603602081101561036b57600080fd5b5035610bc0565b6040518082600281111561038257fe5b815260200191505060405180910390f35b61025a600480360360208110156103a957600080fd5b5035610bd5565b61025a60048036036104408110156103c757600080fd5b5080359060208101906104200135610bea565b610343610d0a565b610343610d10565b6103f2610d25565b6040805163ffffffff9092168252519081900360200190f35b610343610d31565b6102486004803603602081101561042957600080fd5b503563ffffffff16610d3b565b610248600480360361044081101561044d57600080fd5b81019060208101813564010000000081111561046857600080fd5b82018360208201111561047a57600080fd5b8035906020019184600183028401116401000000008311171561049c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955092935050506104008201359050610d72565b610248610dfe565b6103436004803603602081101561050257600080fd5b5035610fe7565b6103f2610ff9565b61025a6004803603602081101561052757600080fd5b81019060208101813564010000000081111561054257600080fd5b82018360208201111561055457600080fd5b8035906020019184600183028401116401000000008311171561057657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061101d945050505050565b6103f261170e565b61025a600480360360208110156105d557600080fd5b8101906020810181356401000000008111156105f057600080fd5b82018360208201111561060257600080fd5b8035906020019184600183028401116401000000008311171561062457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061171a945050505050565b610343600480360361044081101561067c57600080fd5b5080359060208101906104200135611725565b610248600480360360208110156106a557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611763565b6103436117b0565b61025a600480360360208110156106e057600080fd5b50356117b6565b6103436117dd565b6102486004803603606081101561070557600080fd5b81359160208101359181019060608101604082013564010000000081111561072c57600080fd5b82018360208201111561073e57600080fd5b8035906020019184600183028401116401000000008311171561076057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117e9945050505050565b610248600480360360208110156107b757600080fd5b8101906020810181356401000000008111156107d257600080fd5b8201836020820111156107e457600080fd5b8035906020019184600183028401116401000000008311171561080657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611acf945050505050565b610343611b59565b610857611b5d565b6040805192835260208301919091528051918290030190f35b610248600480360360a081101561088657600080fd5b5063ffffffff813581169173ffffffffffffffffffffffffffffffffffffffff6020820135169160408201359160608101359160809091013516611bab565b610372611d60565b610343611d83565b6108dd611d8a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610343611dac565b600181815560009182526007602052604090912055565b61092d611db8565b565b600061093b6002611dfb565b1580159061095657506109566109516002611e33565b6117b6565b905090565b6002600054760100000000000000000000000000000000000000000000900460ff16600281111561098857fe5b14156109f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f8601819004810282018101909252848152610a379188918835918890889081908401838280828437600092019190915250611ed492505050565b8015610a865750610a8686866001602002013584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ed492505050565b8015610a9757508435602086013514155b15610bb257610aa4610925565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b61271081565b60096020526000908152604090205460ff1681565b6000610be2600283611f6c565b90505b919050565b60008060008581526009602052604090205460ff166002811115610c0a57fe5b14610c7657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f214d6573736167655374617475732e4e6f6e6500000000000000000000000000604482015290519081900360640190fd5b6000610cac858560208060200260405190810160405280929190826020800280828437600092019190915250879150611fe89050565b9050610cb7816117b6565b15610cfd575050600083815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610d03565b60009150505b9392505050565b60055481565b6004546000906109569063ffffffff16612093565b60065463ffffffff1681565b6000610956610d10565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b610d8483805190602001208383610bea565b610def57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2170726f76650000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610df88361101d565b50505050565b6002600054760100000000000000000000000000000000000000000000900460ff166002811115610e2b57fe5b1415610e9857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610ea26002611dfb565b610f0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080610f1a6002611dfb565b90505b600081118015610f355750610f356109516002611e33565b15610f6d57610f446002612108565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610f1d565b81610fd957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2174696d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610fe161092d565b50600155565b60076020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061102a8382612241565b905060006110597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612265565b905063ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166110ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416612296565b63ffffffff161461111f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f2164657374696e6174696f6e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001845160208087019190912060009081526009909152604090205460ff16600281111561114957fe5b146111b557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60085460ff1660011461122957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f217265656e7472616e7400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556002600960006112827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166122c7565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156112c457fe5b0217905550600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166001830163ffffffff161790556207c8305a101561137057604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f2167617300000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061139d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416612306565b9050606073ffffffffffffffffffffffffffffffffffffffff82166207a1206113e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612319565b6114127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816612349565b6114676114407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a1661237a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000166123eb565b604051602401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114b95781810151838201526020016114a1565b50505050905090810190601f1680156114e65780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f56d5d47500000000000000000000000000000000000000000000000000000000178152905182519297509550859450925090508083835b602083106115ae57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611571565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114611611576040519150601f19603f3d011682016040523d82523d6000602084013e611616565b606091505b509095509050846116d9578173ffffffffffffffffffffffffffffffffffffffff168363ffffffff167f16d8b729d8c09fdfd34c0cbac3feebd37ea7dbf51704e005df39179db55646fc836040518080602001828103825283818151815260200191508051906020019080838360005b8381101561169e578181015183820152602001611686565b50505050905090810190601f1680156116cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390a35b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509092915050565b60045463ffffffff1681565b6000610be28261101d565b600061175b848460208060200260405190810160405280929190826020800280828437600092019190915250869150611fe89050565b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60015481565b600081815260076020526040812054806117d4576000915050610be5565b42101592915050565b60006109566002611dfb565b6002600054760100000000000000000000000000000000000000000000900460ff16600281111561181657fe5b141561188357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b600061188f6002611dfb565b11156119115761189f600261242f565b831461190c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420656e64206f6620717565756500000000000000000000000000000000604482015290519081900360640190fd5b611981565b826001541461198157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f742063757272656e74207570646174650000000000000000000000000000604482015290519081900360640190fd5b61198c838383611ed4565b6119f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6119ff61092d565b6005546000838152600760205260409020429091019055611a2160028361246c565b5060045460408051602080825284518183015284518694889463ffffffff909116937f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2938893919283929083019185019080838360005b83811015611a90578181015183820152602001611a78565b50505050905090810190601f168015611abd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505050565b6000611adb8282612241565b9050600160096000611b0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166122c7565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115611b5057fe5b02179055505050565b4290565b600080611b6a6002611dfb565b15611b9257611b796002611e33565b6000818152600760205260409020549092509050611ba7565b50506001546000818152600760205260409020545b9091565b600054610100900460ff1680611bc45750611bc46124d9565b80611bd2575060005460ff16155b611c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806133a0602e913960400191505060405180910390fd5b600054610100900460ff16158015611c8d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611c96856124ea565b611ca0600261267f565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805463ffffffff808a167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255868355600087815260076020526040902092909255600585905560068054918516919092161790558015610bb257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b6207a12081565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610956600261242f565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760200000000000000000000000000000000000000000000179055565b80546000906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116911661175b82826126c4565b6000611e3e826126de565b15611eaa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5080546fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b600080611edf610d10565b8585604051602001808481526020018381526020018281526020019350505050604051602081830303815290604052805190602001209050611f208161270d565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff16611f4c828561275e565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111611fdc576000818152600185016020526040902054831415611fd4576001915050611fe2565b600101611f84565b50600090505b92915050565b8260005b602081101561208b57600183821c16600085836020811061200957fe5b60200201519050816001141561204f5780846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209350612081565b838160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093505b5050600101611fec565b509392505050565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b80546000906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116911661214082826126c4565b6121ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff81166000908152600185016020526040902054925082156121fc576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b81516000906020840161225c64ffffffffff851682846127f8565b95945050505050565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166024600461284e565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166028600461284e565b6000806122d38361286f565b6bffffffffffffffffffffffff16905060006122ee84612883565b6bffffffffffffffffffffffff169091209392505050565b6000610be261231483612897565b6128c8565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831682600461284e565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600460206128cb565b6000610be2604c806123ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616612883565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff91909116036000612a76565b60606000806123f984612883565b6bffffffffffffffffffffffff169050604051915081925061241e8483602001612afc565b508181016020016040529052919050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b81546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009283900482166001019182169092029190911783558115611fe2576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b60006124e430612c28565b15905090565b600054610100900460ff168061250357506125036124d9565b80612511575060005460ff16155b612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806133a0602e913960400191505060405180910390fd5b600054610100900460ff161580156125cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff851602177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000179055801561267b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b80546fffffffffffffffffffffffffffffffff166126c15780547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011781555b50565b60019103016fffffffffffffffffffffffffffffffff1690565b546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204161090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600081516041146127d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6127ee86828585612c2e565b9695505050505050565b6000806128058484612e1c565b9050604051811115612815575060005b80612843577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610d03565b61225c858585612e8e565b60008160200360080260ff166128658585856128cb565b901c949350505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316602c60206128cb565b90565b600060ff82166128dd57506000610d03565b6128e684612883565b6bffffffffffffffffffffffff166129018460ff8516612e1c565b11156129e0576129426129138561286f565b6bffffffffffffffffffffffff1661292a86612883565b6bffffffffffffffffffffffff16858560ff16612ea1565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129a557818101518382015260200161298d565b50505050905090810190601f1680156129d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff161115612a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806133f0603a913960400191505060405180910390fd5b600882026000612a4c8661286f565b6bffffffffffffffffffffffff1690506000612a6783612ffc565b91909501511695945050505050565b600080612a828661286f565b6bffffffffffffffffffffffff169050612a9b86613045565b612aaf85612aa98489612e1c565b90612e1c565b1115612ade577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061175b565b612ae88186612e1c565b90506127ee8364ffffffffff1682866127f8565b6000612b078361306f565b612b5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061342a6028913960400191505060405180910390fd5b612b6583613081565b612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613452602b913960400191505060405180910390fd5b6000612bc584612883565b6bffffffffffffffffffffffff1690506000612be08561286f565b6bffffffffffffffffffffffff1690506000604051905084811115612c055760206060fd5b8285848460045afa506127ee612c1a876130be565b64ffffffffff168685612e8e565b3b151590565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115612ca9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061335d6022913960400191505060405180910390fd5b8360ff16601b1480612cbe57508360ff16601c145b612d13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806133ce6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612d6f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661225c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b81810182811015611fe257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60606000612eae866130c4565b9150506000612ebc866130c4565b9150506000612eca866130c4565b9150506000612ed8866130c4565b91505083838383604051602001808061347d603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161337f82397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600061305082612883565b6130598361286f565b016bffffffffffffffffffffffff169050919050565b600061307a82613198565b1592915050565b600061308c826130be565b64ffffffffff1664ffffffffff14156130a757506000610be5565b60006130b283613045565b60405110199392505050565b60d81c90565b600080601f5b600f8160ff16111561312c5760ff600882021684901c6130e9816131c0565b61ffff16841793508160ff1660101461310457601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016130ca565b50600f5b60ff8160ff1610156131925760ff600882021684901c61314f816131c0565b61ffff16831792508160ff1660001461316a57601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613130565b50915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b60006131d260048360ff16901c6131f0565b60ff161760081b62ffff00166131e7826131f0565b60ff1617919050565b600060f08083179060ff8216141561320c576030915050610be5565b8060ff1660f11415613222576031915050610be5565b8060ff1660f21415613238576032915050610be5565b8060ff1660f3141561324e576033915050610be5565b8060ff1660f41415613264576034915050610be5565b8060ff1660f5141561327a576035915050610be5565b8060ff1660f61415613290576036915050610be5565b8060ff1660f714156132a6576037915050610be5565b8060ff1660f814156132bc576038915050610be5565b8060ff1660f914156132d2576039915050610be5565b8060ff1660fa14156132e8576061915050610be5565b8060ff1660fb14156132fe576062915050610be5565b8060ff1660fc1415613314576063915050610be5565b8060ff1660fd141561332a576064915050610be5565b8060ff1660fe1415613340576065915050610be5565b8060ff1660ff1415613356576066915050610be5565b5091905056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c75652e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c756554797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a26469706673582212200bbf09996d5fd1cd5a7883f44ffd6122228139d1c95a818a896f5d77cff7673364736f6c63430007060033"; + "0x60a060405234801561001057600080fd5b506040516135503803806135508339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166134e761006960003980610ffb528061106252506134e76000f3fe608060405234801561001057600080fd5b50600436106102265760003560e01c8063928bc4b21161012a578063b31c01fb116100bd578063bf30a55d1161008c578063d88beda211610071578063d88beda2146108cd578063df034cd0146108d5578063f6d161021461090657610226565b8063bf30a55d14610870578063c19d93fb146108c557610226565b8063b31c01fb146106ef578063b61c19e8146107a1578063b80777ea14610847578063ba739a621461084f57610226565b80639d54f419116100f95780639d54f4191461068f5780639fa6a6e3146106c2578063a3f81d68146106ca578063ab91c7b0146106e757610226565b8063928bc4b214610511578063961681dc146105b757806396ae1a89146105bf5780639868a2731461066557610226565b806339992668116101bd57806351d7bcd71161018c5780637022b58e116101715780637022b58e146104e457806371bfb7b8146104ec5780638d3638f41461050957610226565b806351d7bcd7146104135780636188af0e1461043657610226565b806339992668146103da57806345630b1a146103e2578063456d0672146103ea5780635146366e1461040b57610226565b806325e3beda116101f957806325e3beda1461033b5780632bbd59ca146103555780632bef289214610393578063371d3071146103b057610226565b8063016bcc351461022b578063146901db1461024a57806314cfabb31461025257806319d9d21a1461026e575b600080fd5b6102486004803603602081101561024157600080fd5b503561090e565b005b610248610925565b61025a61092f565b604080519115158252519081900360200190f35b610248600480360360a081101561028457600080fd5b81359160208101918101906080810160608201356401000000008111156102aa57600080fd5b8201836020820111156102bc57600080fd5b803590602001918460018302840111640100000000831117156102de57600080fd5b9193909290916020810190356401000000008111156102fc57600080fd5b82018360208201111561030e57600080fd5b8035906020019184600183028401116401000000008311171561033057600080fd5b50909250905061095b565b610343610bba565b60408051918252519081900360200190f35b6103726004803603602081101561036b57600080fd5b5035610bc0565b6040518082600281111561038257fe5b815260200191505060405180910390f35b61025a600480360360208110156103a957600080fd5b5035610bd5565b61025a60048036036104408110156103c757600080fd5b5080359060208101906104200135610bea565b610343610d0a565b610343610d10565b6103f2610d25565b6040805163ffffffff9092168252519081900360200190f35b610343610d31565b6102486004803603602081101561042957600080fd5b503563ffffffff16610d3b565b610248600480360361044081101561044d57600080fd5b81019060208101813564010000000081111561046857600080fd5b82018360208201111561047a57600080fd5b8035906020019184600183028401116401000000008311171561049c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955092935050506104008201359050610d72565b610248610dfe565b6103436004803603602081101561050257600080fd5b5035610fe7565b6103f2610ff9565b61025a6004803603602081101561052757600080fd5b81019060208101813564010000000081111561054257600080fd5b82018360208201111561055457600080fd5b8035906020019184600183028401116401000000008311171561057657600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061101d945050505050565b6103f261170e565b61025a600480360360208110156105d557600080fd5b8101906020810181356401000000008111156105f057600080fd5b82018360208201111561060257600080fd5b8035906020019184600183028401116401000000008311171561062457600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061171a945050505050565b610343600480360361044081101561067c57600080fd5b5080359060208101906104200135611725565b610248600480360360208110156106a557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611763565b6103436117b0565b61025a600480360360208110156106e057600080fd5b50356117b6565b6103436117dd565b6102486004803603606081101561070557600080fd5b81359160208101359181019060608101604082013564010000000081111561072c57600080fd5b82018360208201111561073e57600080fd5b8035906020019184600183028401116401000000008311171561076057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506117e9945050505050565b610248600480360360208110156107b757600080fd5b8101906020810181356401000000008111156107d257600080fd5b8201836020820111156107e457600080fd5b8035906020019184600183028401116401000000008311171561080657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611acf945050505050565b610343611b59565b610857611b5d565b6040805192835260208301919091528051918290030190f35b610248600480360360a081101561088657600080fd5b5063ffffffff813581169173ffffffffffffffffffffffffffffffffffffffff6020820135169160408201359160608101359160809091013516611bab565b610372611d60565b610343611d83565b6108dd611d8a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610343611dac565b600181815560009182526007602052604090912055565b61092d611db8565b565b600061093b6002611dfb565b1580159061095657506109566109516002611e33565b6117b6565b905090565b6002600054760100000000000000000000000000000000000000000000900460ff16600281111561098857fe5b14156109f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f8601819004810282018101909252848152610a379188918835918890889081908401838280828437600092019190915250611ed492505050565b8015610a865750610a8686866001602002013584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ed492505050565b8015610a9757508435602086013514155b15610bb257610aa4610925565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b613a9881565b60096020526000908152604090205460ff1681565b6000610be2600283611f6c565b90505b919050565b60008060008581526009602052604090205460ff166002811115610c0a57fe5b14610c7657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f214d6573736167655374617475732e4e6f6e6500000000000000000000000000604482015290519081900360640190fd5b6000610cac858560208060200260405190810160405280929190826020800280828437600092019190915250879150611fe89050565b9050610cb7816117b6565b15610cfd575050600083815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610d03565b60009150505b9392505050565b60055481565b6004546000906109569063ffffffff16612093565b60065463ffffffff1681565b6000610956610d10565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff92909216919091179055565b610d8483805190602001208383610bea565b610def57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2170726f76650000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610df88361101d565b50505050565b6002600054760100000000000000000000000000000000000000000000900460ff166002811115610e2b57fe5b1415610e9857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610ea26002611dfb565b610f0d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080610f1a6002611dfb565b90505b600081118015610f355750610f356109516002611e33565b15610f6d57610f446002612108565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610f1d565b81610fd957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2174696d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610fe161092d565b50600155565b60076020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008061102a8382612241565b905060006110597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316612265565b905063ffffffff7f0000000000000000000000000000000000000000000000000000000000000000166110ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416612296565b63ffffffff161461111f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f2164657374696e6174696f6e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001845160208087019190912060009081526009909152604090205460ff16600281111561114957fe5b146111b557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60085460ff1660011461122957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f217265656e7472616e7400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556002600960006112827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166122c7565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660018360028111156112c457fe5b0217905550600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166001830163ffffffff16179055620d32e85a101561137057604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f2167617300000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600061139d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416612306565b9050606073ffffffffffffffffffffffffffffffffffffffff8216620cf8506113e77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716612319565b6114127fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816612349565b6114676114407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a1661237a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000166123eb565b604051602401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156114b95781810151838201526020016114a1565b50505050905090810190601f1680156114e65780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f56d5d47500000000000000000000000000000000000000000000000000000000178152905182519297509550859450925090508083835b602083106115ae57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611571565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d8060008114611611576040519150601f19603f3d011682016040523d82523d6000602084013e611616565b606091505b509095509050846116d9578173ffffffffffffffffffffffffffffffffffffffff168363ffffffff167f16d8b729d8c09fdfd34c0cbac3feebd37ea7dbf51704e005df39179db55646fc836040518080602001828103825283818151815260200191508051906020019080838360005b8381101561169e578181015183820152602001611686565b50505050905090810190601f1680156116cb5780820380516001836020036101000a031916815260200191505b509250505060405180910390a35b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509092915050565b60045463ffffffff1681565b6000610be28261101d565b600061175b848460208060200260405190810160405280929190826020800280828437600092019190915250869150611fe89050565b949350505050565b6000805473ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60015481565b600081815260076020526040812054806117d4576000915050610be5565b42101592915050565b60006109566002611dfb565b6002600054760100000000000000000000000000000000000000000000900460ff16600281111561181657fe5b141561188357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b600061188f6002611dfb565b11156119115761189f600261242f565b831461190c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420656e64206f6620717565756500000000000000000000000000000000604482015290519081900360640190fd5b611981565b826001541461198157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f742063757272656e74207570646174650000000000000000000000000000604482015290519081900360640190fd5b61198c838383611ed4565b6119f757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6119ff61092d565b6005546000838152600760205260409020429091019055611a2160028361246c565b5060045460408051602080825284518183015284518694889463ffffffff909116937f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2938893919283929083019185019080838360005b83811015611a90578181015183820152602001611a78565b50505050905090810190601f168015611abd5780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505050565b6000611adb8282612241565b9050600160096000611b0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166122c7565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115611b5057fe5b02179055505050565b4290565b600080611b6a6002611dfb565b15611b9257611b796002611e33565b6000818152600760205260409020549092509050611ba7565b50506001546000818152600760205260409020545b9091565b600054610100900460ff1680611bc45750611bc46124d9565b80611bd2575060005460ff16155b611c27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806133a0602e913960400191505060405180910390fd5b600054610100900460ff16158015611c8d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611c96856124ea565b611ca0600261267f565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805463ffffffff808a167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255868355600087815260076020526040902092909255600585905560068054918516919092161790558015610bb257600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b620cf85081565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610956600261242f565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760200000000000000000000000000000000000000000000179055565b80546000906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116911661175b82826126c4565b6000611e3e826126de565b15611eaa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5080546fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b600080611edf610d10565b8585604051602001808481526020018381526020018281526020019350505050604051602081830303815290604052805190602001209050611f208161270d565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff16611f4c828561275e565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111611fdc576000818152600185016020526040902054831415611fd4576001915050611fe2565b600101611f84565b50600090505b92915050565b8260005b602081101561208b57600183821c16600085836020811061200957fe5b60200201519050816001141561204f5780846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209350612081565b838160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093505b5050600101611fec565b509392505050565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b80546000906fffffffffffffffffffffffffffffffff70010000000000000000000000000000000082048116911661214082826126c4565b6121ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff81166000908152600185016020526040902054925082156121fc576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b81516000906020840161225c64ffffffffff851682846127f8565b95945050505050565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166024600461284e565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083166028600461284e565b6000806122d38361286f565b6bffffffffffffffffffffffff16905060006122ee84612883565b6bffffffffffffffffffffffff169091209392505050565b6000610be261231483612897565b6128c8565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831682600461284e565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600460206128cb565b6000610be2604c806123ad7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616612883565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff91909116036000612a76565b60606000806123f984612883565b6bffffffffffffffffffffffff169050604051915081925061241e8483602001612afc565b508181016020016040529052919050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b81546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009283900482166001019182169092029190911783558115611fe2576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b60006124e430612c28565b15905090565b600054610100900460ff168061250357506125036124d9565b80612511575060005460ff16155b612566576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806133a0602e913960400191505060405180910390fd5b600054610100900460ff161580156125cc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff851602177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000179055801561267b57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b80546fffffffffffffffffffffffffffffffff166126c15780547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011781555b50565b60019103016fffffffffffffffffffffffffffffffff1690565b546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204161090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b600081516041146127d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6127ee86828585612c2e565b9695505050505050565b6000806128058484612e1c565b9050604051811115612815575060005b80612843577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610d03565b61225c858585612e8e565b60008160200360080260ff166128658585856128cb565b901c949350505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b6000610be27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316602c60206128cb565b90565b600060ff82166128dd57506000610d03565b6128e684612883565b6bffffffffffffffffffffffff166129018460ff8516612e1c565b11156129e0576129426129138561286f565b6bffffffffffffffffffffffff1661292a86612883565b6bffffffffffffffffffffffff16858560ff16612ea1565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156129a557818101518382015260200161298d565b50505050905090810190601f1680156129d25780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff161115612a3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806133f0603a913960400191505060405180910390fd5b600882026000612a4c8661286f565b6bffffffffffffffffffffffff1690506000612a6783612ffc565b91909501511695945050505050565b600080612a828661286f565b6bffffffffffffffffffffffff169050612a9b86613045565b612aaf85612aa98489612e1c565b90612e1c565b1115612ade577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505061175b565b612ae88186612e1c565b90506127ee8364ffffffffff1682866127f8565b6000612b078361306f565b612b5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018061342a6028913960400191505060405180910390fd5b612b6583613081565b612bba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b815260200180613452602b913960400191505060405180910390fd5b6000612bc584612883565b6bffffffffffffffffffffffff1690506000612be08561286f565b6bffffffffffffffffffffffff1690506000604051905084811115612c055760206060fd5b8285848460045afa506127ee612c1a876130be565b64ffffffffff168685612e8e565b3b151590565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115612ca9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061335d6022913960400191505060405180910390fd5b8360ff16601b1480612cbe57508360ff16601c145b612d13576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806133ce6022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612d6f573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661225c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b81810182811015611fe257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60606000612eae866130c4565b9150506000612ebc866130c4565b9150506000612eca866130c4565b9150506000612ed8866130c4565b91505083838383604051602001808061347d603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161337f82397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600061305082612883565b6130598361286f565b016bffffffffffffffffffffffff169050919050565b600061307a82613198565b1592915050565b600061308c826130be565b64ffffffffff1664ffffffffff14156130a757506000610be5565b60006130b283613045565b60405110199392505050565b60d81c90565b600080601f5b600f8160ff16111561312c5760ff600882021684901c6130e9816131c0565b61ffff16841793508160ff1660101461310457601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016130ca565b50600f5b60ff8160ff1610156131925760ff600882021684901c61314f816131c0565b61ffff16831792508160ff1660001461316a57601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613130565b50915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b60006131d260048360ff16901c6131f0565b60ff161760081b62ffff00166131e7826131f0565b60ff1617919050565b600060f08083179060ff8216141561320c576030915050610be5565b8060ff1660f11415613222576031915050610be5565b8060ff1660f21415613238576032915050610be5565b8060ff1660f3141561324e576033915050610be5565b8060ff1660f41415613264576034915050610be5565b8060ff1660f5141561327a576035915050610be5565b8060ff1660f61415613290576036915050610be5565b8060ff1660f714156132a6576037915050610be5565b8060ff1660f814156132bc576038915050610be5565b8060ff1660f914156132d2576039915050610be5565b8060ff1660fa14156132e8576061915050610be5565b8060ff1660fb14156132fe576062915050610be5565b8060ff1660fc1415613314576063915050610be5565b8060ff1660fd141561332a576064915050610be5565b8060ff1660fe1415613340576065915050610be5565b8060ff1660ff1415613356576066915050610be5565b5091905056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c75652e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c756554797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a264697066735822122087c43bc0286d08b9f5b0bc3700e4cc0ba5a5016156a39914228f0312c355ebbb64736f6c63430007060033"; export class TestReplica__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-core/factories/TestXAppConnectionManager__factory.ts b/typescript/typechain/optics-core/factories/TestXAppConnectionManager__factory.ts index 42748abb1..d0e8b660c 100644 --- a/typescript/typechain/optics-core/factories/TestXAppConnectionManager__factory.ts +++ b/typescript/typechain/optics-core/factories/TestXAppConnectionManager__factory.ts @@ -383,7 +383,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6115ff8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063b9cff16211610066578063b9cff162146103db578063e0e7a913146103fe578063f2fde38b146104b6578063f31faefb146104e957610100565b80638da5cb5b146103515780638f5d90e014610359578063916c34701461038c5780639fa92f9d146103d357610100565b80635f8b1dba116100d35780635f8b1dba146102c05780636ef0f37f1461030c578063715018a6146103415780638d3638f41461034957610100565b806323738500146101055780632f54bf6e14610207578063427ebef51461024e5780635190bc531461028d575b600080fd5b6101de6004803603608081101561011b57600080fd5b63ffffffff8235169173ffffffffffffffffffffffffffffffffffffffff60208201358116926040830135909116919081019060808101606082013564010000000081111561016957600080fd5b82018360208201111561017b57600080fd5b8035906020019184600183028401116401000000008311171561019d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610528945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61023a6004803603602081101561021d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661054f565b604080519115158252519081900360200190f35b61023a6004803603604081101561026457600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff1661058e565b61023a600480360360208110156102a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105ce565b6102f3600480360360208110156102d657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105fe565b6040805163ffffffff9092168252519081900360200190f35b61033f6004803603602081101561032257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610616565b005b61033f610705565b6102f361081c565b6101de6108b8565b61033f6004803603602081101561036f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108d4565b61033f600480360360608110156103a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169063ffffffff60208201351690604001351515610988565b6101de610ad6565b6101de600480360360208110156103f157600080fd5b503563ffffffff16610af2565b61033f6004803603606081101561041457600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561044157600080fd5b82018360208201111561045357600080fd5b8035906020019184600183028401116401000000008311171561047557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b1a945050505050565b61033f600480360360208110156104cc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d93565b61033f600480360360408110156104ff57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610f34565b600061054685610537866110a8565b610540866110a8565b856110c1565b95945050505050565b60006105596108b8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832063ffffffff8516845290915290205460ff1692915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205463ffffffff16151590565b60016020526000908152604090205463ffffffff1681565b61061e6111b7565b73ffffffffffffffffffffffffffffffffffffffff1661063c6108b8565b73ffffffffffffffffffffffffffffffffffffffff16146106be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61070d6111b7565b73ffffffffffffffffffffffffffffffffffffffff1661072b6108b8565b73ffffffffffffffffffffffffffffffffffffffff16146107ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600354604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d60208110156108b157600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6108dc6111b7565b73ffffffffffffffffffffffffffffffffffffffff166108fa6108b8565b73ffffffffffffffffffffffffffffffffffffffff161461097c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610985816111bb565b50565b6109906111b7565b73ffffffffffffffffffffffffffffffffffffffff166109ae6108b8565b73ffffffffffffffffffffffffffffffffffffffff1614610a3057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604080832063ffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815194855291840191909152805191927f517de16b526853f481451c5151e87484e1b251ec7d0302efa1019c2ece179c2c929081900390910190a2505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b63ffffffff831660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610bb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f217265706c696361206578697374730000000000000000000000000000000000604482015290519081900360640190fd5b610bbb83611283565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663df034cd06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b505050506040513d6020811015610c4157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610cc557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f2163757272656e74207570646174657200000000000000000000000000000000604482015290519081900360640190fd5b6000610cdb85610cd4846110a8565b86866110c1565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832063ffffffff8a16845290915290205490915060ff16610d8357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2176616c69642077617463686572000000000000000000000000000000000000604482015290519081900360640190fd5b610d8c826111bb565b5050505050565b610d9b6111b7565b73ffffffffffffffffffffffffffffffffffffffff16610db96108b8565b73ffffffffffffffffffffffffffffffffffffffff1614610e3b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610ea7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115606026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610f3c6111b7565b73ffffffffffffffffffffffffffffffffffffffff16610f5a6108b8565b73ffffffffffffffffffffffffffffffffffffffff1614610fdc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610fe5826111bb565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8716908117909155808452600283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168517905580519384525191927f8440df9bf8a8542634a9eb196da1735b786ed9aa2fc12b080ac34c5fa81a9234929081900390910190a25050565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000806110cd85611283565b73ffffffffffffffffffffffffffffffffffffffff166345630b1a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561111257600080fd5b505afa158015611126573d6000803e3d6000fd5b505050506040513d602081101561113c57600080fd5b50516040805160208181018490527fffffffff0000000000000000000000000000000000000000000000000000000060e08b901b1682840152604480830189905283518084039091018152606490920190925280519101209091506111a081611286565b90506111ac81856112d7565b979650505050505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600160208181526040808420805463ffffffff168086526002845282862080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559486905292825282547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690925581519384529051919283927fce1533133fb359ace801d3176bbad25ace030d714aed35e38a6293c8a60b115b929181900390910190a25050565b90565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461134957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61136786828585611371565b9695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115866022913960400191505060405180910390fd5b8360ff16601b148061140157508360ff16601c145b611456576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115a86022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114b2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661054657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565a2646970667358221220fa708f9584da402cd19fd89694d936d485e42b13e0bdd9c7759894b2e413f58264736f6c63430007060033"; + "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6115ff8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063b9cff16211610066578063b9cff162146103db578063e0e7a913146103fe578063f2fde38b146104b6578063f31faefb146104e957610100565b80638da5cb5b146103515780638f5d90e014610359578063916c34701461038c5780639fa92f9d146103d357610100565b80635f8b1dba116100d35780635f8b1dba146102c05780636ef0f37f1461030c578063715018a6146103415780638d3638f41461034957610100565b806323738500146101055780632f54bf6e14610207578063427ebef51461024e5780635190bc531461028d575b600080fd5b6101de6004803603608081101561011b57600080fd5b63ffffffff8235169173ffffffffffffffffffffffffffffffffffffffff60208201358116926040830135909116919081019060808101606082013564010000000081111561016957600080fd5b82018360208201111561017b57600080fd5b8035906020019184600183028401116401000000008311171561019d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610528945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61023a6004803603602081101561021d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661054f565b604080519115158252519081900360200190f35b61023a6004803603604081101561026457600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff1661058e565b61023a600480360360208110156102a357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105ce565b6102f3600480360360208110156102d657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105fe565b6040805163ffffffff9092168252519081900360200190f35b61033f6004803603602081101561032257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610616565b005b61033f610705565b6102f361081c565b6101de6108b8565b61033f6004803603602081101561036f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108d4565b61033f600480360360608110156103a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169063ffffffff60208201351690604001351515610988565b6101de610ad6565b6101de600480360360208110156103f157600080fd5b503563ffffffff16610af2565b61033f6004803603606081101561041457600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561044157600080fd5b82018360208201111561045357600080fd5b8035906020019184600183028401116401000000008311171561047557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b1a945050505050565b61033f600480360360208110156104cc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610d93565b61033f600480360360408110156104ff57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610f34565b600061054685610537866110a8565b610540866110a8565b856110c1565b95945050505050565b60006105596108b8565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832063ffffffff8516845290915290205460ff1692915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205463ffffffff16151590565b60016020526000908152604090205463ffffffff1681565b61061e6111b7565b73ffffffffffffffffffffffffffffffffffffffff1661063c6108b8565b73ffffffffffffffffffffffffffffffffffffffff16146106be57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61070d6111b7565b73ffffffffffffffffffffffffffffffffffffffff1661072b6108b8565b73ffffffffffffffffffffffffffffffffffffffff16146107ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600354604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801561088757600080fd5b505afa15801561089b573d6000803e3d6000fd5b505050506040513d60208110156108b157600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6108dc6111b7565b73ffffffffffffffffffffffffffffffffffffffff166108fa6108b8565b73ffffffffffffffffffffffffffffffffffffffff161461097c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610985816111bb565b50565b6109906111b7565b73ffffffffffffffffffffffffffffffffffffffff166109ae6108b8565b73ffffffffffffffffffffffffffffffffffffffff1614610a3057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604080832063ffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815194855291840191909152805191927f517de16b526853f481451c5151e87484e1b251ec7d0302efa1019c2ece179c2c929081900390910190a2505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b63ffffffff831660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610bb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f217265706c696361206578697374730000000000000000000000000000000000604482015290519081900360640190fd5b610bbb83611283565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663df034cd06040518163ffffffff1660e01b815260040160206040518083038186803b158015610c1757600080fd5b505afa158015610c2b573d6000803e3d6000fd5b505050506040513d6020811015610c4157600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610cc557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f2163757272656e74207570646174657200000000000000000000000000000000604482015290519081900360640190fd5b6000610cdb85610cd4846110a8565b86866110c1565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832063ffffffff8a16845290915290205490915060ff16610d8357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2176616c69642077617463686572000000000000000000000000000000000000604482015290519081900360640190fd5b610d8c826111bb565b5050505050565b610d9b6111b7565b73ffffffffffffffffffffffffffffffffffffffff16610db96108b8565b73ffffffffffffffffffffffffffffffffffffffff1614610e3b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610ea7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806115606026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610f3c6111b7565b73ffffffffffffffffffffffffffffffffffffffff16610f5a6108b8565b73ffffffffffffffffffffffffffffffffffffffff1614610fdc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610fe5826111bb565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8716908117909155808452600283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168517905580519384525191927f8440df9bf8a8542634a9eb196da1735b786ed9aa2fc12b080ac34c5fa81a9234929081900390910190a25050565b73ffffffffffffffffffffffffffffffffffffffff1690565b6000806110cd85611283565b73ffffffffffffffffffffffffffffffffffffffff166345630b1a6040518163ffffffff1660e01b815260040160206040518083038186803b15801561111257600080fd5b505afa158015611126573d6000803e3d6000fd5b505050506040513d602081101561113c57600080fd5b50516040805160208181018490527fffffffff0000000000000000000000000000000000000000000000000000000060e08b901b1682840152604480830189905283518084039091018152606490920190925280519101209091506111a081611286565b90506111ac81856112d7565b979650505050505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600160208181526040808420805463ffffffff168086526002845282862080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559486905292825282547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690925581519384529051919283927fce1533133fb359ace801d3176bbad25ace030d714aed35e38a6293c8a60b115b929181900390910190a25050565b90565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461134957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61136786828585611371565b9695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115866022913960400191505060405180910390fd5b8360ff16601b148061140157508360ff16601c145b611456576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806115a86022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156114b2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661054657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565a2646970667358221220b4065985b9ce207b843a52bbd5d5f1deab9735602a3b7b7ac7d8fb190d5615b564736f6c63430007060033"; export class TestXAppConnectionManager__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-core/factories/UpdaterManager__factory.ts b/typescript/typechain/optics-core/factories/UpdaterManager__factory.ts index 38d58a624..8c824f3e4 100644 --- a/typescript/typechain/optics-core/factories/UpdaterManager__factory.ts +++ b/typescript/typechain/optics-core/factories/UpdaterManager__factory.ts @@ -147,7 +147,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405260405161091d38038061091d8339818101604052602081101561002657600080fd5b505160006100326100a1565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b03929092169190911790556100a5565b3390565b610869806100b46000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100f25780639d54f41914610123578063df034cd014610156578063f2fde38b1461015e5761007d565b80635b3c2cbf146100825780636ef0f37f146100b7578063715018a6146100ea575b600080fd5b6100b56004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610191565b005b6100b5600480360360208110156100cd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661021a565b6100b56103af565b6100fa6104c6565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b56004803603602081101561013957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104e2565b6100fa610646565b6100b56004803603602081101561017457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610662565b60025473ffffffffffffffffffffffffffffffffffffffff16331461021757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f21686f6d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b50565b610222610803565b73ffffffffffffffffffffffffffffffffffffffff166102406104c6565b73ffffffffffffffffffffffffffffffffffffffff16146102c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102cb81610807565b61033657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f21636f6e747261637420686f6d65000000000000000000000000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fa6c230e5615262e310dcb42eaf014e813e5d8580abf5b00d2186ca8e9833de219181900360200190a150565b6103b7610803565b73ffffffffffffffffffffffffffffffffffffffff166103d56104c6565b73ffffffffffffffffffffffffffffffffffffffff161461045757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6104ea610803565b73ffffffffffffffffffffffffffffffffffffffff166105086104c6565b73ffffffffffffffffffffffffffffffffffffffff161461058a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217909255600254604080517f9d54f419000000000000000000000000000000000000000000000000000000008152600481019390935251921691639d54f4199160248082019260009290919082900301818387803b15801561062b57600080fd5b505af115801561063f573d6000803e3d6000fd5b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b61066a610803565b73ffffffffffffffffffffffffffffffffffffffff166106886104c6565b73ffffffffffffffffffffffffffffffffffffffff161461070a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061080e6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220c7f95edf91da0799f11b43c0ec8aac28e2d2f2b50803214748d566d88908579764736f6c63430007060033"; + "0x608060405260405161091d38038061091d8339818101604052602081101561002657600080fd5b505160006100326100a1565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b0319166001600160a01b03929092169190911790556100a5565b3390565b610869806100b46000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100f25780639d54f41914610123578063df034cd014610156578063f2fde38b1461015e5761007d565b80635b3c2cbf146100825780636ef0f37f146100b7578063715018a6146100ea575b600080fd5b6100b56004803603602081101561009857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610191565b005b6100b5600480360360208110156100cd57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661021a565b6100b56103af565b6100fa6104c6565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b56004803603602081101561013957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104e2565b6100fa610646565b6100b56004803603602081101561017457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610662565b60025473ffffffffffffffffffffffffffffffffffffffff16331461021757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f21686f6d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b50565b610222610803565b73ffffffffffffffffffffffffffffffffffffffff166102406104c6565b73ffffffffffffffffffffffffffffffffffffffff16146102c257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6102cb81610807565b61033657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f21636f6e747261637420686f6d65000000000000000000000000000000000000604482015290519081900360640190fd5b6002805473ffffffffffffffffffffffffffffffffffffffff83167fffffffffffffffffffffffff0000000000000000000000000000000000000000909116811790915560408051918252517fa6c230e5615262e310dcb42eaf014e813e5d8580abf5b00d2186ca8e9833de219181900360200190a150565b6103b7610803565b73ffffffffffffffffffffffffffffffffffffffff166103d56104c6565b73ffffffffffffffffffffffffffffffffffffffff161461045757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6104ea610803565b73ffffffffffffffffffffffffffffffffffffffff166105086104c6565b73ffffffffffffffffffffffffffffffffffffffff161461058a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff838116918217909255600254604080517f9d54f419000000000000000000000000000000000000000000000000000000008152600481019390935251921691639d54f4199160248082019260009290919082900301818387803b15801561062b57600080fd5b505af115801561063f573d6000803e3d6000fd5b5050505050565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b61066a610803565b73ffffffffffffffffffffffffffffffffffffffff166106886104c6565b73ffffffffffffffffffffffffffffffffffffffff161461070a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610776576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061080e6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a264697066735822122007e4ee1b6b2b53e3973a54ed17321cab0ec4412f972f40bf60c372ff5f530ea664736f6c63430007060033"; export class UpdaterManager__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-core/factories/XAppConnectionManager__factory.ts b/typescript/typechain/optics-core/factories/XAppConnectionManager__factory.ts index e6dac7d39..cb17b6f6d 100644 --- a/typescript/typechain/optics-core/factories/XAppConnectionManager__factory.ts +++ b/typescript/typechain/optics-core/factories/XAppConnectionManager__factory.ts @@ -349,7 +349,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6114fd8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063b9cff16211610066578063b9cff162146102f7578063e0e7a9131461031a578063f2fde38b146103d2578063f31faefb14610405576100f5565b80638da5cb5b146102445780638f5d90e014610275578063916c3470146102a85780639fa92f9d146102ef576100f5565b80635f8b1dba116100d35780635f8b1dba146101b35780636ef0f37f146101ff578063715018a6146102345780638d3638f41461023c576100f5565b80632f54bf6e146100fa578063427ebef5146101415780635190bc5314610180575b600080fd5b61012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610444565b604080519115158252519081900360200190f35b61012d6004803603604081101561015757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610483565b61012d6004803603602081101561019657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104c3565b6101e6600480360360208110156101c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f3565b6040805163ffffffff9092168252519081900360200190f35b6102326004803603602081101561021557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661050b565b005b6102326105fa565b6101e6610711565b61024c6107ad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102326004803603602081101561028b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c9565b610232600480360360608110156102be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169063ffffffff6020820135169060400135151561087d565b61024c6109cb565b61024c6004803603602081101561030d57600080fd5b503563ffffffff166109e7565b6102326004803603606081101561033057600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561035d57600080fd5b82018360208201111561036f57600080fd5b8035906020019184600183028401116401000000008311171561039157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0f945050505050565b610232600480360360208110156103e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c88565b6102326004803603604081101561041b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610e29565b600061044e6107ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832063ffffffff8516845290915290205460ff1692915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205463ffffffff16151590565b60016020526000908152604090205463ffffffff1681565b610513610f9d565b73ffffffffffffffffffffffffffffffffffffffff166105316107ad565b73ffffffffffffffffffffffffffffffffffffffff16146105b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610602610f9d565b73ffffffffffffffffffffffffffffffffffffffff166106206107ad565b73ffffffffffffffffffffffffffffffffffffffff16146106a257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600354604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801561077c57600080fd5b505afa158015610790573d6000803e3d6000fd5b505050506040513d60208110156107a657600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107d1610f9d565b73ffffffffffffffffffffffffffffffffffffffff166107ef6107ad565b73ffffffffffffffffffffffffffffffffffffffff161461087157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61087a81610fa1565b50565b610885610f9d565b73ffffffffffffffffffffffffffffffffffffffff166108a36107ad565b73ffffffffffffffffffffffffffffffffffffffff161461092557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604080832063ffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815194855291840191909152805191927f517de16b526853f481451c5151e87484e1b251ec7d0302efa1019c2ece179c2c929081900390910190a2505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b63ffffffff831660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610aa757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f217265706c696361206578697374730000000000000000000000000000000000604482015290519081900360640190fd5b610ab083611069565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663df034cd06040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0c57600080fd5b505afa158015610b20573d6000803e3d6000fd5b505050506040513d6020811015610b3657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610bba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f2163757272656e74207570646174657200000000000000000000000000000000604482015290519081900360640190fd5b6000610bd085610bc98461106c565b8686611085565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832063ffffffff8a16845290915290205490915060ff16610c7857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2176616c69642077617463686572000000000000000000000000000000000000604482015290519081900360640190fd5b610c8182610fa1565b5050505050565b610c90610f9d565b73ffffffffffffffffffffffffffffffffffffffff16610cae6107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d3057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061145e6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610e31610f9d565b73ffffffffffffffffffffffffffffffffffffffff16610e4f6107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610ed157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610eda82610fa1565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8716908117909155808452600283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168517905580519384525191927f8440df9bf8a8542634a9eb196da1735b786ed9aa2fc12b080ac34c5fa81a9234929081900390910190a25050565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600160208181526040808420805463ffffffff168086526002845282862080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559486905292825282547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690925581519384529051919283927fce1533133fb359ace801d3176bbad25ace030d714aed35e38a6293c8a60b115b929181900390910190a25050565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60008061109185611069565b73ffffffffffffffffffffffffffffffffffffffff166345630b1a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d657600080fd5b505afa1580156110ea573d6000803e3d6000fd5b505050506040513d602081101561110057600080fd5b50516040805160208181018490527fffffffff0000000000000000000000000000000000000000000000000000000060e08b901b1682840152604480830189905283518084039091018152606490920190925280519101209091506111648161117b565b905061117081856111cc565b979650505050505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461123e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61125c86828585611266565b9695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114846022913960400191505060405180910390fd5b8360ff16601b14806112f657508360ff16601c145b61134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114a66022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661145457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565a2646970667358221220da598941947636a1ca0610c5451661fde010d28b00ca4548689b55fef6f0227564736f6c63430007060033"; + "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6114fd8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063b9cff16211610066578063b9cff162146102f7578063e0e7a9131461031a578063f2fde38b146103d2578063f31faefb14610405576100f5565b80638da5cb5b146102445780638f5d90e014610275578063916c3470146102a85780639fa92f9d146102ef576100f5565b80635f8b1dba116100d35780635f8b1dba146101b35780636ef0f37f146101ff578063715018a6146102345780638d3638f41461023c576100f5565b80632f54bf6e146100fa578063427ebef5146101415780635190bc5314610180575b600080fd5b61012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610444565b604080519115158252519081900360200190f35b61012d6004803603604081101561015757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610483565b61012d6004803603602081101561019657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104c3565b6101e6600480360360208110156101c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f3565b6040805163ffffffff9092168252519081900360200190f35b6102326004803603602081101561021557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661050b565b005b6102326105fa565b6101e6610711565b61024c6107ad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102326004803603602081101561028b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c9565b610232600480360360608110156102be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169063ffffffff6020820135169060400135151561087d565b61024c6109cb565b61024c6004803603602081101561030d57600080fd5b503563ffffffff166109e7565b6102326004803603606081101561033057600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561035d57600080fd5b82018360208201111561036f57600080fd5b8035906020019184600183028401116401000000008311171561039157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0f945050505050565b610232600480360360208110156103e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c88565b6102326004803603604081101561041b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610e29565b600061044e6107ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832063ffffffff8516845290915290205460ff1692915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205463ffffffff16151590565b60016020526000908152604090205463ffffffff1681565b610513610f9d565b73ffffffffffffffffffffffffffffffffffffffff166105316107ad565b73ffffffffffffffffffffffffffffffffffffffff16146105b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610602610f9d565b73ffffffffffffffffffffffffffffffffffffffff166106206107ad565b73ffffffffffffffffffffffffffffffffffffffff16146106a257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600354604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801561077c57600080fd5b505afa158015610790573d6000803e3d6000fd5b505050506040513d60208110156107a657600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107d1610f9d565b73ffffffffffffffffffffffffffffffffffffffff166107ef6107ad565b73ffffffffffffffffffffffffffffffffffffffff161461087157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61087a81610fa1565b50565b610885610f9d565b73ffffffffffffffffffffffffffffffffffffffff166108a36107ad565b73ffffffffffffffffffffffffffffffffffffffff161461092557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604080832063ffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815194855291840191909152805191927f517de16b526853f481451c5151e87484e1b251ec7d0302efa1019c2ece179c2c929081900390910190a2505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b63ffffffff831660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610aa757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f217265706c696361206578697374730000000000000000000000000000000000604482015290519081900360640190fd5b610ab083611069565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663df034cd06040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0c57600080fd5b505afa158015610b20573d6000803e3d6000fd5b505050506040513d6020811015610b3657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610bba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f2163757272656e74207570646174657200000000000000000000000000000000604482015290519081900360640190fd5b6000610bd085610bc98461106c565b8686611085565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832063ffffffff8a16845290915290205490915060ff16610c7857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2176616c69642077617463686572000000000000000000000000000000000000604482015290519081900360640190fd5b610c8182610fa1565b5050505050565b610c90610f9d565b73ffffffffffffffffffffffffffffffffffffffff16610cae6107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d3057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061145e6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610e31610f9d565b73ffffffffffffffffffffffffffffffffffffffff16610e4f6107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610ed157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610eda82610fa1565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8716908117909155808452600283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168517905580519384525191927f8440df9bf8a8542634a9eb196da1735b786ed9aa2fc12b080ac34c5fa81a9234929081900390910190a25050565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600160208181526040808420805463ffffffff168086526002845282862080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559486905292825282547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690925581519384529051919283927fce1533133fb359ace801d3176bbad25ace030d714aed35e38a6293c8a60b115b929181900390910190a25050565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60008061109185611069565b73ffffffffffffffffffffffffffffffffffffffff166345630b1a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d657600080fd5b505afa1580156110ea573d6000803e3d6000fd5b505050506040513d602081101561110057600080fd5b50516040805160208181018490527fffffffff0000000000000000000000000000000000000000000000000000000060e08b901b1682840152604480830189905283518084039091018152606490920190925280519101209091506111648161117b565b905061117081856111cc565b979650505050505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461123e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61125c86828585611266565b9695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114846022913960400191505060405180910390fd5b8360ff16601b14806112f657508360ff16601c145b61134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114a66022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661145457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565a26469706673582212204f17ac8041e324a5f59f91db965c90bc1dcccaf2b9082b8c0e90579718fb2ae364736f6c63430007060033"; export class XAppConnectionManager__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-xapps/MockCore.d.ts b/typescript/typechain/optics-xapps/MockCore.d.ts index e9e444b00..6558892db 100644 --- a/typescript/typechain/optics-xapps/MockCore.d.ts +++ b/typescript/typechain/optics-xapps/MockCore.d.ts @@ -21,12 +21,25 @@ import { TypedEventFilter, TypedEvent, TypedListener } from "./commons"; interface MockCoreInterface extends ethers.utils.Interface { functions: { + "MAX_MESSAGE_BODY_BYTES()": FunctionFragment; + "count()": FunctionFragment; "enqueue(uint32,bytes32,bytes)": FunctionFragment; "home()": FunctionFragment; "isReplica(address)": FunctionFragment; "localDomain()": FunctionFragment; + "queueContains(bytes32)": FunctionFragment; + "queueEnd()": FunctionFragment; + "queueLength()": FunctionFragment; + "root()": FunctionFragment; + "sequences(uint32)": FunctionFragment; + "tree()": FunctionFragment; }; + encodeFunctionData( + functionFragment: "MAX_MESSAGE_BODY_BYTES", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "count", values?: undefined): string; encodeFunctionData( functionFragment: "enqueue", values: [BigNumberish, BytesLike, BytesLike] @@ -37,7 +50,27 @@ interface MockCoreInterface extends ethers.utils.Interface { functionFragment: "localDomain", values?: undefined ): string; + encodeFunctionData( + functionFragment: "queueContains", + values: [BytesLike] + ): string; + encodeFunctionData(functionFragment: "queueEnd", values?: undefined): string; + encodeFunctionData( + functionFragment: "queueLength", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "root", values?: undefined): string; + encodeFunctionData( + functionFragment: "sequences", + values: [BigNumberish] + ): string; + encodeFunctionData(functionFragment: "tree", values?: undefined): string; + decodeFunctionResult( + functionFragment: "MAX_MESSAGE_BODY_BYTES", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "count", data: BytesLike): Result; decodeFunctionResult(functionFragment: "enqueue", data: BytesLike): Result; decodeFunctionResult(functionFragment: "home", data: BytesLike): Result; decodeFunctionResult(functionFragment: "isReplica", data: BytesLike): Result; @@ -45,11 +78,25 @@ interface MockCoreInterface extends ethers.utils.Interface { functionFragment: "localDomain", data: BytesLike ): Result; + decodeFunctionResult( + functionFragment: "queueContains", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "queueEnd", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "queueLength", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "root", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "sequences", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "tree", data: BytesLike): Result; events: { + "Dispatch(uint256,uint64,bytes32,bytes)": EventFragment; "Enqueue(uint32,bytes32,bytes)": EventFragment; }; + getEvent(nameOrSignatureOrTopic: "Dispatch"): EventFragment; getEvent(nameOrSignatureOrTopic: "Enqueue"): EventFragment; } @@ -97,6 +144,10 @@ export class MockCore extends BaseContract { interface: MockCoreInterface; functions: { + MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise<[BigNumber]>; + + count(overrides?: CallOverrides): Promise<[BigNumber]>; + enqueue( _destination: BigNumberish, _recipient: BytesLike, @@ -109,8 +160,29 @@ export class MockCore extends BaseContract { isReplica(arg0: string, overrides?: CallOverrides): Promise<[boolean]>; localDomain(overrides?: CallOverrides): Promise<[number]>; + + queueContains( + _item: BytesLike, + overrides?: CallOverrides + ): Promise<[boolean]>; + + queueEnd(overrides?: CallOverrides): Promise<[string]>; + + queueLength(overrides?: CallOverrides): Promise<[BigNumber]>; + + root(overrides?: CallOverrides): Promise<[string]>; + + sequences(arg0: BigNumberish, overrides?: CallOverrides): Promise<[number]>; + + tree( + overrides?: CallOverrides + ): Promise<[BigNumber] & { count: BigNumber }>; }; + MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise; + + count(overrides?: CallOverrides): Promise; + enqueue( _destination: BigNumberish, _recipient: BytesLike, @@ -124,7 +196,23 @@ export class MockCore extends BaseContract { localDomain(overrides?: CallOverrides): Promise; + queueContains(_item: BytesLike, overrides?: CallOverrides): Promise; + + queueEnd(overrides?: CallOverrides): Promise; + + queueLength(overrides?: CallOverrides): Promise; + + root(overrides?: CallOverrides): Promise; + + sequences(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + tree(overrides?: CallOverrides): Promise; + callStatic: { + MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise; + + count(overrides?: CallOverrides): Promise; + enqueue( _destination: BigNumberish, _recipient: BytesLike, @@ -137,9 +225,39 @@ export class MockCore extends BaseContract { isReplica(arg0: string, overrides?: CallOverrides): Promise; localDomain(overrides?: CallOverrides): Promise; + + queueContains( + _item: BytesLike, + overrides?: CallOverrides + ): Promise; + + queueEnd(overrides?: CallOverrides): Promise; + + queueLength(overrides?: CallOverrides): Promise; + + root(overrides?: CallOverrides): Promise; + + sequences(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + tree(overrides?: CallOverrides): Promise; }; filters: { + Dispatch( + leafIndex?: BigNumberish | null, + destinationAndSequence?: BigNumberish | null, + leaf?: BytesLike | null, + message?: null + ): TypedEventFilter< + [BigNumber, BigNumber, string, string], + { + leafIndex: BigNumber; + destinationAndSequence: BigNumber; + leaf: string; + message: string; + } + >; + Enqueue( _destination?: BigNumberish | null, _recipient?: BytesLike | null, @@ -151,6 +269,10 @@ export class MockCore extends BaseContract { }; estimateGas: { + MAX_MESSAGE_BODY_BYTES(overrides?: CallOverrides): Promise; + + count(overrides?: CallOverrides): Promise; + enqueue( _destination: BigNumberish, _recipient: BytesLike, @@ -163,9 +285,33 @@ export class MockCore extends BaseContract { isReplica(arg0: string, overrides?: CallOverrides): Promise; localDomain(overrides?: CallOverrides): Promise; + + queueContains( + _item: BytesLike, + overrides?: CallOverrides + ): Promise; + + queueEnd(overrides?: CallOverrides): Promise; + + queueLength(overrides?: CallOverrides): Promise; + + root(overrides?: CallOverrides): Promise; + + sequences( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + tree(overrides?: CallOverrides): Promise; }; populateTransaction: { + MAX_MESSAGE_BODY_BYTES( + overrides?: CallOverrides + ): Promise; + + count(overrides?: CallOverrides): Promise; + enqueue( _destination: BigNumberish, _recipient: BytesLike, @@ -181,5 +327,23 @@ export class MockCore extends BaseContract { ): Promise; localDomain(overrides?: CallOverrides): Promise; + + queueContains( + _item: BytesLike, + overrides?: CallOverrides + ): Promise; + + queueEnd(overrides?: CallOverrides): Promise; + + queueLength(overrides?: CallOverrides): Promise; + + root(overrides?: CallOverrides): Promise; + + sequences( + arg0: BigNumberish, + overrides?: CallOverrides + ): Promise; + + tree(overrides?: CallOverrides): Promise; }; } diff --git a/typescript/typechain/optics-xapps/factories/BridgeRouter__factory.ts b/typescript/typechain/optics-xapps/factories/BridgeRouter__factory.ts index 902a5348a..01d3f5255 100644 --- a/typescript/typechain/optics-xapps/factories/BridgeRouter__factory.ts +++ b/typescript/typechain/optics-xapps/factories/BridgeRouter__factory.ts @@ -483,7 +483,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50615fe480620000216000396000f3fe60806040523480156200001157600080fd5b5060043610620001a85760003560e01c80636cdccfb811620000ed578063c3a7a0231162000099578063ce5494bb116200006f578063ce5494bb14620005b4578063d82d053114620005ea578063f2fde38b146200062c57620001a8565b8063c3a7a0231462000548578063cbcacfee1462000574578063ccf5a77c14620005aa57620001a8565b8063715018a611620000cf578063715018a614620005085780638da5cb5b1462000512578063b49c53a7146200051c57620001a8565b80636cdccfb814620004e25780636eb3d5fe14620004fe57620001a8565b806341bdc8b5116200015957806356d5d475116200012f57806356d5d4751462000382578063589b3c64146200044057806362568787146200046c57620001a8565b806341bdc8b514620002ee578063485cc9551462000324578063546d573d146200036257620001a8565b80631ecf6f9f116200018f5780631ecf6f9f146200025357806328b1aea0146200029c5780633339df9614620002e457620001a8565b806303e418c214620001ad5780631cabf08f1462000203575b600080fd5b620001e360048036036020811015620001c557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000662565b6040805163ffffffff909316835260208301919091528051918290030190f35b62000251600480360360808110156200021b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359063ffffffff604082013516906060013562000684565b005b62000273600480360360208110156200026b57600080fd5b503562000911565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6200025160048036036060811015620002b457600080fd5b50803563ffffffff16906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1662000939565b6200027362000c75565b62000251600480360360208110156200030657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000c91565b62000251600480360360408110156200033c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351662000d85565b62000273600480360360208110156200037a57600080fd5b503562000eb9565b62000251600480360360608110156200039a57600080fd5b63ffffffff82351691602081013591810190606081016040820135640100000000811115620003c857600080fd5b820183602082011115620003db57600080fd5b80359060200191846001830284011164010000000083111715620003fe57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062000ee1945050505050565b62000273600480360360408110156200045857600080fd5b5063ffffffff8135169060200135620011a4565b62000251600480360360208110156200048457600080fd5b810190602081018135640100000000811115620004a057600080fd5b820183602082011115620004b357600080fd5b80359060200191846001830284011164010000000083111715620004d657600080fd5b509092509050620011c3565b620004ec62001443565b60408051918252519081900360200190f35b620004ec62001449565b620002516200144f565b620002736200156b565b62000251600480360360408110156200053457600080fd5b5063ffffffff813516906020013562001587565b62000251600480360360408110156200056057600080fd5b5063ffffffff81351690602001356200164d565b620001e3600480360360208110156200058c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662001715565b6200027362001760565b6200025160048036036020811015620005cc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166200177c565b62000273600480360360408110156200060257600080fd5b50803563ffffffff16906020013573ffffffffffffffffffffffffffffffffffffffff1662001b09565b62000251600480360360208110156200064457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662001b21565b6068602052600090815260409020805460019091015463ffffffff9091169082565b6000620006918362001cca565b9050846200069f8162001d52565b15620006cf57620006c973ffffffffffffffffffffffffffffffffffffffff821633308862001d65565b62000765565b620006da8162001e02565b73ffffffffffffffffffffffffffffffffffffffff16639dc29fac33876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156200074b57600080fd5b505af115801562000760573d6000803e3d6000fd5b505050505b600062000773848762001e05565b9050606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620007de57600080fd5b505afa158015620007f3573d6000803e3d6000fd5b505050506040513d60208110156200080a57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1663d346863986856200083f620008388c62001e66565b8662001e8a565b6040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200089f57818101518382015260200162000885565b50505050905090810190601f168015620008cd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015620008ef57600080fd5b505af115801562000904573d6000803e3d6000fd5b5050505050505050505050565b60696020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6200094362001fd6565b73ffffffffffffffffffffffffffffffffffffffff16620009636200156b565b73ffffffffffffffffffffffffffffffffffffffff1614620009e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f40c10f1900000000000000000000000000000000000000000000000000000000815230600482015260016024820152905173ffffffffffffffffffffffffffffffffffffffff8316916340c10f1991604480830192600092919082900301818387803b15801562000a5b57600080fd5b505af115801562000a70573d6000803e3d6000fd5b5050604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815230600482015260016024820152905173ffffffffffffffffffffffffffffffffffffffff85169350639dc29fac9250604480830192600092919082900301818387803b15801562000ae957600080fd5b505af115801562000afe573d6000803e3d6000fd5b50505050600062000b10848462001fda565b905062000b3f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166200202c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260686020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9290921691909117905562000bc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000821662002078565b73ffffffffffffffffffffffffffffffffffffffff831660009081526068602052604081206001019190915562000c1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620020ba565b600090815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff949094169390931790925550505050565b60655473ffffffffffffffffffffffffffffffffffffffff1681565b62000c9b62001fd6565b73ffffffffffffffffffffffffffffffffffffffff1662000cbb6200156b565b73ffffffffffffffffffffffffffffffffffffffff161462000d3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff168062000da1575062000da1620020fd565b8062000db0575060005460ff16155b62000e07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff1615801562000e6e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b62000e798362002110565b62000e84826200226d565b801562000eb457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b505050565b606a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b62000eec33620023d3565b62000f5857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f217265706c696361000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b828262000f6682826200247f565b62000fd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f746520726f75746572000000000000000000000000000000000000604482015290519081900360640190fd5b60006200100c62000fe485836200249b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016620024c1565b905060006200103d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620024fa565b905060006200106e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084166200253e565b90506200109d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216620025d4565b15620010b557620010af828262002610565b6200119a565b620010e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000821662002819565b15620010f457620010af82826200283c565b620011217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000821662002aab565b156200113357620010af828262002ace565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f2176616c696420616374696f6e00000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050505050565b6000620011bc620011b6848462001fda565b62002fb7565b9392505050565b60006200120f62000fe4600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200249b9050565b905060006200126c620012447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416620024fa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016620030a7565b90506000620012c9620012a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166200253e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016620030b8565b90506000620012d98383620030c9565b6000818152606a602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16156200136e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21756e66696c6c65640000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152606a6020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055620013af846200316a565b90506200143a33620013e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166200320d565b6200141a620014147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000088166200324d565b6200328f565b73ffffffffffffffffffffffffffffffffffffffff851692919062001d65565b50505050505050565b61270b81565b61271081565b6200145962001fd6565b73ffffffffffffffffffffffffffffffffffffffff16620014796200156b565b73ffffffffffffffffffffffffffffffffffffffff1614620014fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b6200159162001fd6565b73ffffffffffffffffffffffffffffffffffffffff16620015b16200156b565b73ffffffffffffffffffffffffffffffffffffffff16146200163457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b63ffffffff909116600090815260666020526040902055565b6200165762001fd6565b73ffffffffffffffffffffffffffffffffffffffff16620016776200156b565b73ffffffffffffffffffffffffffffffffffffffff1614620016fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600062001708838362001fda565b905062000eb481620032a1565b73ffffffffffffffffffffffffffffffffffffffff166000908152606860209081526040918290208251808401909352805463ffffffff168084526001909101549290910182905291565b60675473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff81166000908152606860209081526040918290208251808401909352805463ffffffff16808452600190910154918301919091526200183157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2172657072000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8160006200183f8362003499565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620018dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f21646966666572656e7400000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156200194757600080fd5b505afa1580156200195c573d6000803e3d6000fd5b505050506040513d60208110156200197357600080fd5b5051604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815233600482015260248101839052905191925073ffffffffffffffffffffffffffffffffffffffff851691639dc29fac9160448082019260009290919082900301818387803b158015620019ee57600080fd5b505af115801562001a03573d6000803e3d6000fd5b5050604080517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff861693506340c10f199250604480830192600092919082900301818387803b15801562001a7c57600080fd5b505af115801562001a91573d6000803e3d6000fd5b50505060208086015186516040805186815273ffffffffffffffffffffffffffffffffffffffff898116958201959095529387168482015251339450919263ffffffff909116917fd57de5bab8e39ab8d289365584bb1583985651b6d05554e7fb2e5776ce0cb2d39181900360600190a45050505050565b6000620011bc8362001b1b84620034b0565b620011a4565b62001b2b62001fd6565b73ffffffffffffffffffffffffffffffffffffffff1662001b4b6200156b565b73ffffffffffffffffffffffffffffffffffffffff161462001bce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811662001c3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018062005e286026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b63ffffffff81166000908152606660205260409020548062001d4d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f2172656d6f746500000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b919050565b600062001d5f82620034c9565b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905262001dfc9085906200350b565b50505050565b90565b6000620011bc62001e606000600386866040516020018084600581111562001e2957fe5b60f81b815260010183815260200182815260200193505050506040516020818303038152906040526200249b90919063ffffffff16565b620030b8565b60008062001e7483620035e9565b9050620011bc8160000151826020015162001fda565b606082600162001ebf815b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084169062003669565b5062001ecb84620037f5565b62001f3757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f21616374696f6e00000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516002808252606082018352600092602083019080368337019050509050858160008151811062001f6757fe5b602002602001019062ffffff1916908162ffffff191681525050848160018151811062001f9057fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092166020928302919091019091015262001fcc8162003826565b9695505050505050565b3390565b6000620011bc6200202660008585604051602001808363ffffffff1660e01b8152600401828152602001925050506040516020818303038152906040526200249b90919063ffffffff16565b620030a7565b60008160016200203c8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516600060046200387c565b92505b5050919050565b6000816001620020888162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516600460206200389f565b600080620020c88362003a22565b6bffffffffffffffffffffffff1690506000620020e58462003a36565b6bffffffffffffffffffffffff169091209392505050565b60006200210a3062003a4a565b15905090565b600054610100900460ff16806200212c57506200212c620020fd565b806200213b575060005460ff16155b62002192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff16158015620021f957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580156200226957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600054610100900460ff168062002289575062002289620020fd565b8062002298575060005460ff16155b620022ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff161580156200235657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055620023a062003a50565b80156200226957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b606554604080517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000939290921691635190bc5391602480820192602092909190829003018186803b1580156200244b57600080fd5b505afa15801562002460573d6000803e3d6000fd5b505050506040513d60208110156200247757600080fd5b505192915050565b63ffffffff919091166000908152606660205260409020541490565b815160009060208401620024b864ffffffffff8516828462003b80565b95945050505050565b600062001d5f620024d28362003bdd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001662003c33565b60008160026200250a8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000851660006024600162003cb0565b60008160026200254e8162001e95565b5060006024620025807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000871662003a36565b6bffffffffffffffffffffffff1603905060006200259e8662003d44565b60ff16905062001fcc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000087166024848462003cb0565b60006003620025e38362003d77565b60ff1614801562001d5f575060035b620025fd8362003da9565b60058111156200260957fe5b1492915050565b8160016200261e8162001e95565b508260036200262d8162001e95565b5060006200263b8762003de7565b905060006200266c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000088166200320d565b905060006200267c8989620030c9565b6000818152606a602052604090205490915073ffffffffffffffffffffffffffffffffffffffff168015620026e3576000828152606a6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559150815b620026ee8462001d52565b156200274b576200274583620027267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008c166200324d565b73ffffffffffffffffffffffffffffffffffffffff8716919062003e3b565b6200280d565b620027568462001e02565b73ffffffffffffffffffffffffffffffffffffffff166340c10f19846200279f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008d166200324d565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015620027f357600080fd5b505af115801562002808573d6000803e3d6000fd5b505050505b50505050505050505050565b60006004620028288362003d77565b60ff1614801562001d5f57506004620025f2565b8160016200284a8162001e95565b50826004620028598162001e95565b50600062002867876200316a565b9050620028748162001d52565b15620028e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f7465206f726967696e000000000000000000000000000000000000604482015290519081900360640190fd5b620028ec8162001e02565b73ffffffffffffffffffffffffffffffffffffffff1663654935f46200293e620029387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a1662003eca565b62003f0c565b6200296f620029387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008b1662003f83565b6200299c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008b1662003fc5565b6040518463ffffffff1660e01b81526004018080602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b83811015620029f7578181015183820152602001620029dd565b50505050905090810190601f16801562002a255780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101562002a5a57818101518382015260200162002a40565b50505050905090810190601f16801562002a885780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015620008ef57600080fd5b6000600562002aba8362003d77565b60ff1614801562001d5f57506005620025f2565b81600162002adc8162001e95565b5082600562002aeb8162001e95565b50600062002b1b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000881662004007565b905062002b2881620034c9565b62002b9457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f216c6f63616c206f726967696e00000000000000000000000000000000000000604482015290519081900360640190fd5b80600062002bc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a166200202c565b9050600062002bd38262001cca565b9050600062002e1c62002d418573ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002c2857600080fd5b505af115801562002c3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101562002c8557600080fd5b810190808051604051939291908464010000000082111562002ca657600080fd5b90830190602082018581111562002cbc57600080fd5b825164010000000081118282018810171562002cd757600080fd5b82525081516020918201929091019080838360005b8381101562002d0657818101518382015260200162002cec565b50505050905090810190601f16801562002d345780820380516001836020036101000a031916815260200191505b5060405250505062004047565b62002da18673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801562002d8c57600080fd5b505afa15801562002c3d573d6000803e3d6000fd5b8673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801562002de857600080fd5b505afa15801562002dfd573d6000803e3d6000fd5b505050506040513d602081101562002e1457600080fd5b505162004091565b9050606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562002e8757600080fd5b505afa15801562002e9c573d6000803e3d6000fd5b505050506040513d602081101562002eb357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1663d3468639848462002ee1620008388a62001e66565b6040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562002f4157818101518382015260200162002f27565b50505050905090810190601f16801562002f6f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801562002f9157600080fd5b505af115801562002fa6573d6000803e3d6000fd5b505050505050505050505050505050565b600081600162002fc78162001e95565b5062002fd262004100565b63ffffffff16620030057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166200202c565b63ffffffff16141562003047576200303f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000851662004007565b925062002071565b60696000620030787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716620020ba565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff16949350505050565b600062001d5f620024d28362004111565b600062001d5f620024d28362004163565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110620030fd57fe5b602002602001019062ffffff1916908162ffffff19168152505082816001815181106200312657fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000909216602092830291909101909101526200316281620041b5565b949350505050565b60008160016200317a8162001e95565b506000620031888562002fb7565b905073ffffffffffffffffffffffffffffffffffffffff81166200206e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21746f6b656e0000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008160036200321d8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516600d620041d1565b60008160036200325d8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516602160206200387c565b600061271061270b83025b0492915050565b806001620032af8162001e95565b506000620032df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166200202c565b63ffffffff8116600090815260666020526040902054909150806200330657505062000eb4565b600062003312620041e1565b9050606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200337d57600080fd5b505afa15801562003392573d6000803e3d6000fd5b505050506040513d6020811015620033a957600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1663d34686398484620033d48a8662001e8a565b6040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620034345781810151838201526020016200341a565b50505050905090810190601f168015620034625780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156200348457600080fd5b505af11580156200280d573d6000803e3d6000fd5b600062001d5f620034aa8362004232565b62004248565b73ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526068602052604081205463ffffffff1615620035045750600062001d4d565b503b151590565b60006200356f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166200428a9092919063ffffffff16565b80519091501562000eb4578080602001905160208110156200359057600080fd5b505162000eb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018062005efd602a913960400191505060405180910390fd5b620035f362005877565b5073ffffffffffffffffffffffffffffffffffffffff81166000908152606860209081526040918290208251808401909352805463ffffffff168084526001909101549183019190915262001d4d576200364c62004100565b63ffffffff1681526200365f82620034b0565b6020820152919050565b60006200367783836200429b565b620037ee5760006200369a6200368d85620042bf565b64ffffffffff16620042c5565b9150506000620036b18464ffffffffff16620042c5565b604080517f5479706520617373657274696f6e206661696c65642e20476f742030780000006020808301919091527fffffffffffffffffffff0000000000000000000000000000000000000000000060b088811b8216603d8501527f2e20457870656374656420307800000000000000000000000000000000000000604785015285901b1660548301528251603e818403018152605e8301938490527f08c379a000000000000000000000000000000000000000000000000000000000909352606282018181528351608284015283519496509294508493839260a2019185019080838360005b83811015620037b257818101518382015260200162003798565b50505050905090810190601f168015620037e05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5090919050565b6000620038028262002819565b80620038145750620038148262002aab565b8062001d5f575062001d5f82620025d4565b60405160609060006200383d8460208401620043a3565b905060006200384c8262003a36565b6bffffffffffffffffffffffff1690506000620038698362004425565b9184525082016020016040525092915050565b60008160200360080260ff16620038958585856200389f565b901c949350505050565b600060ff8216620038b357506000620011bc565b620038be8462003a36565b6bffffffffffffffffffffffff16620038db8460ff85166200443b565b1115620039865762003923620038f18562003a22565b6bffffffffffffffffffffffff166200390a8662003a36565b6bffffffffffffffffffffffff16858560ff16620044ae565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152835160248401528351909283926044909101919085019080838360008315620037b257818101518382015260200162003798565b60208260ff161115620039e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018062005ec3603a913960400191505060405180910390fd5b600882026000620039f68662003a22565b6bffffffffffffffffffffffff169050600062003a138362004613565b91909501511695945050505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b3b151590565b600054610100900460ff168062003a6c575062003a6c620020fd565b8062003a7b575060005460ff16155b62003ad2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff1615801562003b3957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b62003b436200465c565b62003b4d62004776565b801562003b7d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b60008062003b8f84846200443b565b905060405181111562003ba0575060005b8062003bd0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050620011bc565b620024b885858562004910565b600062003bea8262004923565b1562003c295762003c2160025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084169062004983565b905062001d4d565b62001d5f620049a9565b600062003c4082620049cd565b62003cac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f56616c696469747920617373657274696f6e206661696c656400000000000000604482015290519081900360640190fd5b5090565b60008062003cbe8662003a22565b6bffffffffffffffffffffffff16905062003cd98662004a10565b62003cf18562003cea84896200443b565b906200443b565b111562003d22577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505062003162565b62003d2e81866200443b565b905062001fcc8364ffffffffff16828662003b80565b600062001d5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316602460016200387c565b600062001d5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083168260016200387c565b600062003dd87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620042bf565b60ff16600581111562001d5f57fe5b600081600162003df78162001e95565b50600062003e058562002fb7565b905073ffffffffffffffffffffffffffffffffffffffff81166200206e5762003e2e8562004a3e565b90506200206e85620032a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905262000eb49084906200350b565b600081600462003eda8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516600160206200389f565b606060005b60208160ff1610801562003f595750828160ff166020811062003f3057fe5b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b1562003f685760010162003f11565b60405191506040820160405280825282602083015250919050565b600081600462003f938162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516602160206200389f565b600081600462003fd58162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516604160016200387c565b6000816001620040178162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166010620041d1565b600062001d5f60008351620040676000866200249b90919063ffffffff16565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001691906200389f565b600062003162620040fa6000600487878760405160200180856005811115620040b657fe5b60f81b81526001018481526020018381526020018260ff1660f81b81526001019450505050506040516020818303038152906040526200249b90919063ffffffff16565b62004d90565b60006200410c62004da1565b905090565b60006024620041427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff16141562003c295762003c21600162003bf7565b60006041620041947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff16141562003c295762003c21600362003bf7565b604051600090620011bc620041cb8483620043a3565b620020ba565b6000620011bc838360146200387c565b60006200410c6200422c60006005604051602001808260058111156200420357fe5b60f81b81526001019150506040516020818303038152906040526200249b90919063ffffffff16565b62004e40565b600062001d5f8260000151836020015162001fda565b6000816001620042588162001e95565b5060696000620030787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716620020ba565b606062003162848460008562004e51565b60008164ffffffffff16620042b084620042bf565b64ffffffffff16149392505050565b60d81c90565b600080601f5b600f8160ff161115620043325760ff600882021684901c620042ed8162005016565b61ffff16841793508160ff166010146200430957601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01620042cb565b50600f5b60ff8160ff1610156200439d5760ff600882021684901c620043588162005016565b61ffff16831792508160ff166000146200437457601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0162004336565b50915091565b600060405182811115620043b75760206060fd5b506000805b845181101562004416576000858281518110620043d557fe5b60200260200101519050620043ed818487016200504a565b50620043f98162003a36565b6bffffffffffffffffffffffff16929092019150600101620043bc565b50620031626000848362004910565b6000620044328262005187565b60200292915050565b8181018281101562001d5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b60606000620044bd86620042c5565b9150506000620044cd86620042c5565b9150506000620044dd86620042c5565b9150506000620044ed86620042c5565b91505083838383604051602001808062005f7a603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602162005e7482397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600054610100900460ff168062004678575062004678620020fd565b8062004687575060005460ff16155b620046de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff1615801562003b4d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911661010017166001179055801562003b7d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff168062004792575062004792620020fd565b80620047a1575060005460ff16155b620047f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff161580156200485f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b60006200486b62001fd6565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562003b7d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b606092831b9190911790911b1760181b90565b600080620049537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff1690506065811480620049735750606681145b80620011bc575060251492915050565b60d81b7affffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090565b6000620049da82620042bf565b64ffffffffff1664ffffffffff1415620049f75750600062001d4d565b600062004a048362004a10565b60405110199392505050565b600062004a1d8262003a36565b62004a288362003a22565b016bffffffffffffffffffffffff169050919050565b600081600162004a4e8162001e95565b5062004a59620051b9565b925060608062004a69866200529d565b80925081935050508473ffffffffffffffffffffffffffffffffffffffff1663654935f4838360126040518463ffffffff1660e01b8152600401808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101562004ae957818101518382015260200162004acf565b50505050905090810190601f16801562004b175780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101562004b4c57818101518382015260200162004b32565b50505050905090810190601f16801562004b7a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801562004b9d57600080fd5b505af115801562004bb2573d6000803e3d6000fd5b5050505062004bc78662ffffff19166200202c565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260686020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9290921691909117905562004c4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000871662002078565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260686020526040812060010191909155859060699062004caa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a16620020ba565b8152602081019190915260400160002080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055851662004d287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000881662002078565b62004d557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000089166200202c565b63ffffffff167f84d5e3618bf276f3d29a931646fdd996b398a3efa3cf6bceefc1fe7f0304059f60405160405180910390a450505050919050565b600062001d5f620024d283620053d6565b606554604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801562004e0d57600080fd5b505afa15801562004e22573d6000803e3d6000fd5b505050506040513d602081101562004e3957600080fd5b5051905090565b600062001d5f620024d28362005428565b60608247101562004eae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018062005e4e6026913960400191505060405180910390fd5b62004eb98562003a4a565b62004f2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831062004f9057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910162004f51565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811462004ff4576040519150601f19603f3d011682016040523d82523d6000602084013e62004ff9565b606091505b50915091506200500b8282866200547a565b979650505050505050565b60006200502a60048360ff16901c620054ff565b60ff161760081b62ffff00166200504182620054ff565b60ff1617919050565b600062005057836200568b565b620050ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018062005f276028913960400191505060405180910390fd5b620050b983620049cd565b62005110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018062005f4f602b913960400191505060405180910390fd5b60006200511d8462003a36565b6bffffffffffffffffffffffff16905060006200513a8562003a22565b6bffffffffffffffffffffffff1690506000604051905084811115620051605760206060fd5b8285848460045afa5062001fcc6200517887620042bf565b64ffffffffff16868562004910565b60006020620051b160206200519c8562003a36565b6bffffffffffffffffffffffff16906200443b565b816200329a57fe5b606754604051600091829173ffffffffffffffffffffffffffffffffffffffff90911690620051e8906200588e565b73ffffffffffffffffffffffffffffffffffffffff909116815260406020820181905260008183018190529051918290036060019190f08015801562005232573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200527e57600080fd5b505af115801562005293573d6000803e3d6000fd5b5092935050505090565b606080826001620052ae8162001e95565b50600080620052e9620052e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000891662002078565b6200569f565b9150915062005308620053028862ffffff19166200202c565b62005777565b604080517f6f70746963732e0000000000000000000000000000000000000000000000000060208083019190915260b09390931b7fffffffffffffffffffff000000000000000000000000000000000000000000001660278201527f2e307800000000000000000000000000000000000000000000000000000000006031820152603481018590526054808201859052825180830390910181526074820184815260b48301909352985090919060940181803683370190505094506020860151602086015250505050915091565b60006042620054077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff16141562003c295762003c21600462003bf7565b60006001620054597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff16141562003c295762003c21600562003bf7565b606083156200548b575081620011bc565b8251156200549c5782518084602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152845160248401528451859391928392604401919085019080838360008315620037b257818101518382015260200162003798565b600060f08083179060ff821614156200551d57603091505062001d4d565b8060ff1660f114156200553557603191505062001d4d565b8060ff1660f214156200554d57603291505062001d4d565b8060ff1660f314156200556557603391505062001d4d565b8060ff1660f414156200557d57603491505062001d4d565b8060ff1660f514156200559557603591505062001d4d565b8060ff1660f61415620055ad57603691505062001d4d565b8060ff1660f71415620055c557603791505062001d4d565b8060ff1660f81415620055dd57603891505062001d4d565b8060ff1660f91415620055f557603991505062001d4d565b8060ff1660fa14156200560d57606191505062001d4d565b8060ff1660fb14156200562557606291505062001d4d565b8060ff1660fc14156200563d57606391505062001d4d565b8060ff1660fd14156200565557606491505062001d4d565b8060ff1660fe14156200566d57606591505062001d4d565b8060ff1660ff14156200568557606691505062001d4d565b50919050565b60006200569882620057d2565b1592915050565b600080601f5b600f8160ff1611156200570c5760ff600882021684901c620056c781620057fa565b61ffff16841793508160ff16601014620056e357601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01620056a5565b50600f5b60ff8160ff1610156200439d5760ff600882021684901c6200573281620057fa565b61ffff16831792508160ff166000146200574e57601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0162005710565b60006030815b600a8160ff161015620020715760ff600882021682600a63ffffffff87160663ffffffff160169ffffffffffffffffffff16901b83179250600a8463ffffffff1681620057c657fe5b0493506001016200577d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b60006200580e60048360ff16901c62005820565b60ff161760081b62ffff001662005041825b6040805180820190915260108082527f30313233343536373839616263646566000000000000000000000000000000006020830152600091600f841691829081106200586857fe5b016020015160f81c9392505050565b604080518082019091526000808252602082015290565b61058b806200589d8339019056fe60a060405260405161058b38038061058b8339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b506040525050506100f0826101d060201b6100291760201c565b610134576040805162461bcd60e51b815260206004820152601060248201526f18995858dbdb880858dbdb9d1c9858dd60821b604482015290519081900360640190fd5b6001600160601b0319606083901b166080526000610151836101d6565b9050610166816101d060201b6100291760201c565b6101b7576040805162461bcd60e51b815260206004820152601f60248201527f626561636f6e20696d706c656d656e746174696f6e2021636f6e747261637400604482015290519081900360640190fd5b8151156101c8576101c881836102d6565b50505061038f565b3b151590565b604051600090819081906001600160a01b0385169082818181855afa9150503d8060008114610221576040519150601f19603f3d011682016040523d82523d6000602084013e610226565b606091505b50915091508181906102b65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561027b578181015183820152602001610263565b50505050905090810190601f1680156102a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156102cc57600080fd5b5051949350505050565b6000826001600160a01b0316826040518082805190602001908083835b602083106103125780518252601f1990920191602091820191016102f3565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610372576040519150601f19603f3d011682016040523d82523d6000602084013e610377565b606091505b505090508061038a573d6000803e3d6000fd5b505050565b60805160601c6101e06103ab60003980603652506101e06000f3fe60806040523661001357610011610017565b005b6100115b61002761002261002f565b61005f565b565b3b151590565b600061005a7f0000000000000000000000000000000000000000000000000000000000000000610083565b905090565b3660008037600080366000845af43d6000803e80801561007e573d6000f35b3d6000fd5b6040516000908190819073ffffffffffffffffffffffffffffffffffffffff85169082818181855afa9150503d80600081146100db576040519150601f19603f3d011682016040523d82523d6000602084013e6100e0565b606091505b509150915081819061018a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156101a057600080fd5b505194935050505056fea26469706673582212208b196ed9b9fecbd07fd699a800d8da1a28f61cf407ed72d6aded9bf21752ce5c64736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c2e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656454797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e2033322062797465735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a26469706673582212203a8854d8922db1c50282eb635e2caeae6d2022066db93f3122975beb44e51bb664736f6c63430007060033"; + "0x608060405234801561001057600080fd5b50615fe480620000216000396000f3fe60806040523480156200001157600080fd5b5060043610620001a85760003560e01c80636cdccfb811620000ed578063c3a7a0231162000099578063ce5494bb116200006f578063ce5494bb14620005b4578063d82d053114620005ea578063f2fde38b146200062c57620001a8565b8063c3a7a0231462000548578063cbcacfee1462000574578063ccf5a77c14620005aa57620001a8565b8063715018a611620000cf578063715018a614620005085780638da5cb5b1462000512578063b49c53a7146200051c57620001a8565b80636cdccfb814620004e25780636eb3d5fe14620004fe57620001a8565b806341bdc8b5116200015957806356d5d475116200012f57806356d5d4751462000382578063589b3c64146200044057806362568787146200046c57620001a8565b806341bdc8b514620002ee578063485cc9551462000324578063546d573d146200036257620001a8565b80631ecf6f9f116200018f5780631ecf6f9f146200025357806328b1aea0146200029c5780633339df9614620002e457620001a8565b806303e418c214620001ad5780631cabf08f1462000203575b600080fd5b620001e360048036036020811015620001c557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000662565b6040805163ffffffff909316835260208301919091528051918290030190f35b62000251600480360360808110156200021b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060208101359063ffffffff604082013516906060013562000684565b005b62000273600480360360208110156200026b57600080fd5b503562000911565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6200025160048036036060811015620002b457600080fd5b50803563ffffffff16906020810135906040013573ffffffffffffffffffffffffffffffffffffffff1662000939565b6200027362000c75565b62000251600480360360208110156200030657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000c91565b62000251600480360360408110156200033c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351662000d85565b62000273600480360360208110156200037a57600080fd5b503562000eb9565b62000251600480360360608110156200039a57600080fd5b63ffffffff82351691602081013591810190606081016040820135640100000000811115620003c857600080fd5b820183602082011115620003db57600080fd5b80359060200191846001830284011164010000000083111715620003fe57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955062000ee1945050505050565b62000273600480360360408110156200045857600080fd5b5063ffffffff8135169060200135620011a4565b62000251600480360360208110156200048457600080fd5b810190602081018135640100000000811115620004a057600080fd5b820183602082011115620004b357600080fd5b80359060200191846001830284011164010000000083111715620004d657600080fd5b509092509050620011c3565b620004ec62001443565b60408051918252519081900360200190f35b620004ec62001449565b620002516200144f565b620002736200156b565b62000251600480360360408110156200053457600080fd5b5063ffffffff813516906020013562001587565b62000251600480360360408110156200056057600080fd5b5063ffffffff81351690602001356200164d565b620001e3600480360360208110156200058c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662001715565b6200027362001760565b6200025160048036036020811015620005cc57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166200177c565b62000273600480360360408110156200060257600080fd5b50803563ffffffff16906020013573ffffffffffffffffffffffffffffffffffffffff1662001b09565b62000251600480360360208110156200064457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662001b21565b6068602052600090815260409020805460019091015463ffffffff9091169082565b6000620006918362001cca565b9050846200069f8162001d52565b15620006cf57620006c973ffffffffffffffffffffffffffffffffffffffff821633308862001d65565b62000765565b620006da8162001e02565b73ffffffffffffffffffffffffffffffffffffffff16639dc29fac33876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156200074b57600080fd5b505af115801562000760573d6000803e3d6000fd5b505050505b600062000773848762001e05565b9050606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b158015620007de57600080fd5b505afa158015620007f3573d6000803e3d6000fd5b505050506040513d60208110156200080a57600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1663d346863986856200083f620008388c62001e66565b8662001e8a565b6040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156200089f57818101518382015260200162000885565b50505050905090810190601f168015620008cd5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015620008ef57600080fd5b505af115801562000904573d6000803e3d6000fd5b5050505050505050505050565b60696020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b6200094362001fd6565b73ffffffffffffffffffffffffffffffffffffffff16620009636200156b565b73ffffffffffffffffffffffffffffffffffffffff1614620009e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b604080517f40c10f1900000000000000000000000000000000000000000000000000000000815230600482015260016024820152905173ffffffffffffffffffffffffffffffffffffffff8316916340c10f1991604480830192600092919082900301818387803b15801562000a5b57600080fd5b505af115801562000a70573d6000803e3d6000fd5b5050604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815230600482015260016024820152905173ffffffffffffffffffffffffffffffffffffffff85169350639dc29fac9250604480830192600092919082900301818387803b15801562000ae957600080fd5b505af115801562000afe573d6000803e3d6000fd5b50505050600062000b10848462001fda565b905062000b3f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000082166200202c565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260686020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9290921691909117905562000bc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000821662002078565b73ffffffffffffffffffffffffffffffffffffffff831660009081526068602052604081206001019190915562000c1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620020ba565b600090815260696020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff949094169390931790925550505050565b60655473ffffffffffffffffffffffffffffffffffffffff1681565b62000c9b62001fd6565b73ffffffffffffffffffffffffffffffffffffffff1662000cbb6200156b565b73ffffffffffffffffffffffffffffffffffffffff161462000d3e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600054610100900460ff168062000da1575062000da1620020fd565b8062000db0575060005460ff16155b62000e07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff1615801562000e6e57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b62000e798362002110565b62000e84826200226d565b801562000eb457600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b505050565b606a6020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b62000eec33620023d3565b62000f5857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f217265706c696361000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b828262000f6682826200247f565b62000fd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f746520726f75746572000000000000000000000000000000000000604482015290519081900360640190fd5b60006200100c62000fe485836200249b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016620024c1565b905060006200103d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620024fa565b905060006200106e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084166200253e565b90506200109d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216620025d4565b15620010b557620010af828262002610565b6200119a565b620010e27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000821662002819565b15620010f457620010af82826200283c565b620011217fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000821662002aab565b156200113357620010af828262002ace565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f2176616c696420616374696f6e00000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050505050565b6000620011bc620011b6848462001fda565b62002fb7565b9392505050565b60006200120f62000fe4600085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092939250506200249b9050565b905060006200126c620012447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416620024fa565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016620030a7565b90506000620012c9620012a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166200253e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016620030b8565b90506000620012d98383620030c9565b6000818152606a602052604090205490915073ffffffffffffffffffffffffffffffffffffffff16156200136e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21756e66696c6c65640000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000818152606a6020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055620013af846200316a565b90506200143a33620013e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166200320d565b6200141a620014147fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000088166200324d565b6200328f565b73ffffffffffffffffffffffffffffffffffffffff851692919062001d65565b50505050505050565b61270b81565b61271081565b6200145962001fd6565b73ffffffffffffffffffffffffffffffffffffffff16620014796200156b565b73ffffffffffffffffffffffffffffffffffffffff1614620014fc57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b6200159162001fd6565b73ffffffffffffffffffffffffffffffffffffffff16620015b16200156b565b73ffffffffffffffffffffffffffffffffffffffff16146200163457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b63ffffffff909116600090815260666020526040902055565b6200165762001fd6565b73ffffffffffffffffffffffffffffffffffffffff16620016776200156b565b73ffffffffffffffffffffffffffffffffffffffff1614620016fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600062001708838362001fda565b905062000eb481620032a1565b73ffffffffffffffffffffffffffffffffffffffff166000908152606860209081526040918290208251808401909352805463ffffffff168084526001909101549290910182905291565b60675473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff81166000908152606860209081526040918290208251808401909352805463ffffffff16808452600190910154918301919091526200183157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2172657072000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8160006200183f8362003499565b90508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620018dd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f21646966666572656e7400000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008273ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156200194757600080fd5b505afa1580156200195c573d6000803e3d6000fd5b505050506040513d60208110156200197357600080fd5b5051604080517f9dc29fac00000000000000000000000000000000000000000000000000000000815233600482015260248101839052905191925073ffffffffffffffffffffffffffffffffffffffff851691639dc29fac9160448082019260009290919082900301818387803b158015620019ee57600080fd5b505af115801562001a03573d6000803e3d6000fd5b5050604080517f40c10f1900000000000000000000000000000000000000000000000000000000815233600482015260248101859052905173ffffffffffffffffffffffffffffffffffffffff861693506340c10f199250604480830192600092919082900301818387803b15801562001a7c57600080fd5b505af115801562001a91573d6000803e3d6000fd5b50505060208086015186516040805186815273ffffffffffffffffffffffffffffffffffffffff898116958201959095529387168482015251339450919263ffffffff909116917fd57de5bab8e39ab8d289365584bb1583985651b6d05554e7fb2e5776ce0cb2d39181900360600190a45050505050565b6000620011bc8362001b1b84620034b0565b620011a4565b62001b2b62001fd6565b73ffffffffffffffffffffffffffffffffffffffff1662001b4b6200156b565b73ffffffffffffffffffffffffffffffffffffffff161462001bce57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811662001c3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018062005e286026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b63ffffffff81166000908152606660205260409020548062001d4d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f2172656d6f746500000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b919050565b600062001d5f82620034c9565b92915050565b6040805173ffffffffffffffffffffffffffffffffffffffff80861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905262001dfc9085906200350b565b50505050565b90565b6000620011bc62001e606000600386866040516020018084600581111562001e2957fe5b60f81b815260010183815260200182815260200193505050506040516020818303038152906040526200249b90919063ffffffff16565b620030b8565b60008062001e7483620035e9565b9050620011bc8160000151826020015162001fda565b606082600162001ebf815b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084169062003669565b5062001ecb84620037f5565b62001f3757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f21616374696f6e00000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516002808252606082018352600092602083019080368337019050509050858160008151811062001f6757fe5b602002602001019062ffffff1916908162ffffff191681525050848160018151811062001f9057fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009092166020928302919091019091015262001fcc8162003826565b9695505050505050565b3390565b6000620011bc6200202660008585604051602001808363ffffffff1660e01b8152600401828152602001925050506040516020818303038152906040526200249b90919063ffffffff16565b620030a7565b60008160016200203c8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516600060046200387c565b92505b5050919050565b6000816001620020888162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516600460206200389f565b600080620020c88362003a22565b6bffffffffffffffffffffffff1690506000620020e58462003a36565b6bffffffffffffffffffffffff169091209392505050565b60006200210a3062003a4a565b15905090565b600054610100900460ff16806200212c57506200212c620020fd565b806200213b575060005460ff16155b62002192576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff16158015620021f957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b606780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff841617905580156200226957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b600054610100900460ff168062002289575062002289620020fd565b8062002298575060005460ff16155b620022ef576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff161580156200235657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416179055620023a062003a50565b80156200226957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555050565b606554604080517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000939290921691635190bc5391602480820192602092909190829003018186803b1580156200244b57600080fd5b505afa15801562002460573d6000803e3d6000fd5b505050506040513d60208110156200247757600080fd5b505192915050565b63ffffffff919091166000908152606660205260409020541490565b815160009060208401620024b864ffffffffff8516828462003b80565b95945050505050565b600062001d5f620024d28362003bdd565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001662003c33565b60008160026200250a8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000851660006024600162003cb0565b60008160026200254e8162001e95565b5060006024620025807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000871662003a36565b6bffffffffffffffffffffffff1603905060006200259e8662003d44565b60ff16905062001fcc7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000087166024848462003cb0565b60006003620025e38362003d77565b60ff1614801562001d5f575060035b620025fd8362003da9565b60058111156200260957fe5b1492915050565b8160016200261e8162001e95565b508260036200262d8162001e95565b5060006200263b8762003de7565b905060006200266c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000088166200320d565b905060006200267c8989620030c9565b6000818152606a602052604090205490915073ffffffffffffffffffffffffffffffffffffffff168015620026e3576000828152606a6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559150815b620026ee8462001d52565b156200274b576200274583620027267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008c166200324d565b73ffffffffffffffffffffffffffffffffffffffff8716919062003e3b565b6200280d565b620027568462001e02565b73ffffffffffffffffffffffffffffffffffffffff166340c10f19846200279f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008d166200324d565b6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015620027f357600080fd5b505af115801562002808573d6000803e3d6000fd5b505050505b50505050505050505050565b60006004620028288362003d77565b60ff1614801562001d5f57506004620025f2565b8160016200284a8162001e95565b50826004620028598162001e95565b50600062002867876200316a565b9050620028748162001d52565b15620028e157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f7465206f726967696e000000000000000000000000000000000000604482015290519081900360640190fd5b620028ec8162001e02565b73ffffffffffffffffffffffffffffffffffffffff1663654935f46200293e620029387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a1662003eca565b62003f0c565b6200296f620029387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008b1662003f83565b6200299c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008b1662003fc5565b6040518463ffffffff1660e01b81526004018080602001806020018460ff168152602001838103835286818151815260200191508051906020019080838360005b83811015620029f7578181015183820152602001620029dd565b50505050905090810190601f16801562002a255780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101562002a5a57818101518382015260200162002a40565b50505050905090810190601f16801562002a885780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015620008ef57600080fd5b6000600562002aba8362003d77565b60ff1614801562001d5f57506005620025f2565b81600162002adc8162001e95565b5082600562002aeb8162001e95565b50600062002b1b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000881662004007565b905062002b2881620034c9565b62002b9457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f216c6f63616c206f726967696e00000000000000000000000000000000000000604482015290519081900360640190fd5b80600062002bc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a166200202c565b9050600062002bd38262001cca565b9050600062002e1c62002d418573ffffffffffffffffffffffffffffffffffffffff166306fdde036040518163ffffffff1660e01b8152600401600060405180830381600087803b15801562002c2857600080fd5b505af115801562002c3d573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101562002c8557600080fd5b810190808051604051939291908464010000000082111562002ca657600080fd5b90830190602082018581111562002cbc57600080fd5b825164010000000081118282018810171562002cd757600080fd5b82525081516020918201929091019080838360005b8381101562002d0657818101518382015260200162002cec565b50505050905090810190601f16801562002d345780820380516001836020036101000a031916815260200191505b5060405250505062004047565b62002da18673ffffffffffffffffffffffffffffffffffffffff166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b15801562002d8c57600080fd5b505afa15801562002c3d573d6000803e3d6000fd5b8673ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801562002de857600080fd5b505afa15801562002dfd573d6000803e3d6000fd5b505050506040513d602081101562002e1457600080fd5b505162004091565b9050606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b15801562002e8757600080fd5b505afa15801562002e9c573d6000803e3d6000fd5b505050506040513d602081101562002eb357600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1663d3468639848462002ee1620008388a62001e66565b6040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101562002f4157818101518382015260200162002f27565b50505050905090810190601f16801562002f6f5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801562002f9157600080fd5b505af115801562002fa6573d6000803e3d6000fd5b505050505050505050505050505050565b600081600162002fc78162001e95565b5062002fd262004100565b63ffffffff16620030057fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000086166200202c565b63ffffffff16141562003047576200303f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000851662004007565b925062002071565b60696000620030787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716620020ba565b815260208101919091526040016000205473ffffffffffffffffffffffffffffffffffffffff16949350505050565b600062001d5f620024d28362004111565b600062001d5f620024d28362004163565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110620030fd57fe5b602002602001019062ffffff1916908162ffffff19168152505082816001815181106200312657fe5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000909216602092830291909101909101526200316281620041b5565b949350505050565b60008160016200317a8162001e95565b506000620031888562002fb7565b905073ffffffffffffffffffffffffffffffffffffffff81166200206e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f21746f6b656e0000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008160036200321d8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516600d620041d1565b60008160036200325d8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516602160206200387c565b600061271061270b83025b0492915050565b806001620032af8162001e95565b506000620032df7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166200202c565b63ffffffff8116600090815260666020526040902054909150806200330657505062000eb4565b600062003312620041e1565b9050606560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639fa92f9d6040518163ffffffff1660e01b815260040160206040518083038186803b1580156200337d57600080fd5b505afa15801562003392573d6000803e3d6000fd5b505050506040513d6020811015620033a957600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1663d34686398484620033d48a8662001e8a565b6040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015620034345781810151838201526020016200341a565b50505050905090810190601f168015620034625780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b1580156200348457600080fd5b505af11580156200280d573d6000803e3d6000fd5b600062001d5f620034aa8362004232565b62004248565b73ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff811660009081526068602052604081205463ffffffff1615620035045750600062001d4d565b503b151590565b60006200356f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166200428a9092919063ffffffff16565b80519091501562000eb4578080602001905160208110156200359057600080fd5b505162000eb4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018062005efd602a913960400191505060405180910390fd5b620035f362005877565b5073ffffffffffffffffffffffffffffffffffffffff81166000908152606860209081526040918290208251808401909352805463ffffffff168084526001909101549183019190915262001d4d576200364c62004100565b63ffffffff1681526200365f82620034b0565b6020820152919050565b60006200367783836200429b565b620037ee5760006200369a6200368d85620042bf565b64ffffffffff16620042c5565b9150506000620036b18464ffffffffff16620042c5565b604080517f5479706520617373657274696f6e206661696c65642e20476f742030780000006020808301919091527fffffffffffffffffffff0000000000000000000000000000000000000000000060b088811b8216603d8501527f2e20457870656374656420307800000000000000000000000000000000000000604785015285901b1660548301528251603e818403018152605e8301938490527f08c379a000000000000000000000000000000000000000000000000000000000909352606282018181528351608284015283519496509294508493839260a2019185019080838360005b83811015620037b257818101518382015260200162003798565b50505050905090810190601f168015620037e05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5090919050565b6000620038028262002819565b80620038145750620038148262002aab565b8062001d5f575062001d5f82620025d4565b60405160609060006200383d8460208401620043a3565b905060006200384c8262003a36565b6bffffffffffffffffffffffff1690506000620038698362004425565b9184525082016020016040525092915050565b60008160200360080260ff16620038958585856200389f565b901c949350505050565b600060ff8216620038b357506000620011bc565b620038be8462003a36565b6bffffffffffffffffffffffff16620038db8460ff85166200443b565b1115620039865762003923620038f18562003a22565b6bffffffffffffffffffffffff166200390a8662003a36565b6bffffffffffffffffffffffff16858560ff16620044ae565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152835160248401528351909283926044909101919085019080838360008315620037b257818101518382015260200162003798565b60208260ff161115620039e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a81526020018062005ec3603a913960400191505060405180910390fd5b600882026000620039f68662003a22565b6bffffffffffffffffffffffff169050600062003a138362004613565b91909501511695945050505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b3b151590565b600054610100900460ff168062003a6c575062003a6c620020fd565b8062003a7b575060005460ff16155b62003ad2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff1615801562003b3957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b62003b436200465c565b62003b4d62004776565b801562003b7d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b60008062003b8f84846200443b565b905060405181111562003ba0575060005b8062003bd0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050620011bc565b620024b885858562004910565b600062003bea8262004923565b1562003c295762003c2160025b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000084169062004983565b905062001d4d565b62001d5f620049a9565b600062003c4082620049cd565b62003cac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f56616c696469747920617373657274696f6e206661696c656400000000000000604482015290519081900360640190fd5b5090565b60008062003cbe8662003a22565b6bffffffffffffffffffffffff16905062003cd98662004a10565b62003cf18562003cea84896200443b565b906200443b565b111562003d22577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000091505062003162565b62003d2e81866200443b565b905062001fcc8364ffffffffff16828662003b80565b600062001d5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316602460016200387c565b600062001d5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000083168260016200387c565b600062003dd87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316620042bf565b60ff16600581111562001d5f57fe5b600081600162003df78162001e95565b50600062003e058562002fb7565b905073ffffffffffffffffffffffffffffffffffffffff81166200206e5762003e2e8562004a3e565b90506200206e85620032a1565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905262000eb49084906200350b565b600081600462003eda8162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516600160206200389f565b606060005b60208160ff1610801562003f595750828160ff166020811062003f3057fe5b1a60f81b7fff000000000000000000000000000000000000000000000000000000000000001615155b1562003f685760010162003f11565b60405191506040820160405280825282602083015250919050565b600081600462003f938162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516602160206200389f565b600081600462003fd58162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008516604160016200387c565b6000816001620040178162001e95565b506200206e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000085166010620041d1565b600062001d5f60008351620040676000866200249b90919063ffffffff16565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000001691906200389f565b600062003162620040fa6000600487878760405160200180856005811115620040b657fe5b60f81b81526001018481526020018381526020018260ff1660f81b81526001019450505050506040516020818303038152906040526200249b90919063ffffffff16565b62004d90565b60006200410c62004da1565b905090565b60006024620041427fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff16141562003c295762003c21600162003bf7565b60006041620041947fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff16141562003c295762003c21600362003bf7565b604051600090620011bc620041cb8483620043a3565b620020ba565b6000620011bc838360146200387c565b60006200410c6200422c60006005604051602001808260058111156200420357fe5b60f81b81526001019150506040516020818303038152906040526200249b90919063ffffffff16565b62004e40565b600062001d5f8260000151836020015162001fda565b6000816001620042588162001e95565b5060696000620030787fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716620020ba565b606062003162848460008562004e51565b60008164ffffffffff16620042b084620042bf565b64ffffffffff16149392505050565b60d81c90565b600080601f5b600f8160ff161115620043325760ff600882021684901c620042ed8162005016565b61ffff16841793508160ff166010146200430957601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01620042cb565b50600f5b60ff8160ff1610156200439d5760ff600882021684901c620043588162005016565b61ffff16831792508160ff166000146200437457601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0162004336565b50915091565b600060405182811115620043b75760206060fd5b506000805b845181101562004416576000858281518110620043d557fe5b60200260200101519050620043ed818487016200504a565b50620043f98162003a36565b6bffffffffffffffffffffffff16929092019150600101620043bc565b50620031626000848362004910565b6000620044328262005187565b60200292915050565b8181018281101562001d5f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b60606000620044bd86620042c5565b9150506000620044cd86620042c5565b9150506000620044dd86620042c5565b9150506000620044ed86620042c5565b91505083838383604051602001808062005f7a603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602162005e7482397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600054610100900460ff168062004678575062004678620020fd565b8062004687575060005460ff16155b620046de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff1615801562003b4d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff90911661010017166001179055801562003b7d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff168062004792575062004792620020fd565b80620047a1575060005460ff16155b620047f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e81526020018062005e95602e913960400191505060405180910390fd5b600054610100900460ff161580156200485f57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b60006200486b62001fd6565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350801562003b7d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b606092831b9190911790911b1760181b90565b600080620049537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff1690506065811480620049735750606681145b80620011bc575060251492915050565b60d81b7affffffffffffffffffffffffffffffffffffffffffffffffffffff9091161790565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000090565b6000620049da82620042bf565b64ffffffffff1664ffffffffff1415620049f75750600062001d4d565b600062004a048362004a10565b60405110199392505050565b600062004a1d8262003a36565b62004a288362003a22565b016bffffffffffffffffffffffff169050919050565b600081600162004a4e8162001e95565b5062004a59620051b9565b925060608062004a69866200529d565b80925081935050508473ffffffffffffffffffffffffffffffffffffffff1663654935f4838360126040518463ffffffff1660e01b8152600401808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101562004ae957818101518382015260200162004acf565b50505050905090810190601f16801562004b175780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101562004b4c57818101518382015260200162004b32565b50505050905090810190601f16801562004b7a5780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801562004b9d57600080fd5b505af115801562004bb2573d6000803e3d6000fd5b5050505062004bc78662ffffff19166200202c565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260686020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9290921691909117905562004c4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000871662002078565b73ffffffffffffffffffffffffffffffffffffffff8616600090815260686020526040812060010191909155859060699062004caa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a16620020ba565b8152602081019190915260400160002080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316179055851662004d287fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000881662002078565b62004d557fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000089166200202c565b63ffffffff167f84d5e3618bf276f3d29a931646fdd996b398a3efa3cf6bceefc1fe7f0304059f60405160405180910390a450505050919050565b600062001d5f620024d283620053d6565b606554604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801562004e0d57600080fd5b505afa15801562004e22573d6000803e3d6000fd5b505050506040513d602081101562004e3957600080fd5b5051905090565b600062001d5f620024d28362005428565b60608247101562004eae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018062005e4e6026913960400191505060405180910390fd5b62004eb98562003a4a565b62004f2557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831062004f9057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910162004f51565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811462004ff4576040519150601f19603f3d011682016040523d82523d6000602084013e62004ff9565b606091505b50915091506200500b8282866200547a565b979650505050505050565b60006200502a60048360ff16901c620054ff565b60ff161760081b62ffff00166200504182620054ff565b60ff1617919050565b600062005057836200568b565b620050ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602881526020018062005f276028913960400191505060405180910390fd5b620050b983620049cd565b62005110576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018062005f4f602b913960400191505060405180910390fd5b60006200511d8462003a36565b6bffffffffffffffffffffffff16905060006200513a8562003a22565b6bffffffffffffffffffffffff1690506000604051905084811115620051605760206060fd5b8285848460045afa5062001fcc6200517887620042bf565b64ffffffffff16868562004910565b60006020620051b160206200519c8562003a36565b6bffffffffffffffffffffffff16906200443b565b816200329a57fe5b606754604051600091829173ffffffffffffffffffffffffffffffffffffffff90911690620051e8906200588e565b73ffffffffffffffffffffffffffffffffffffffff909116815260406020820181905260008183018190529051918290036060019190f08015801562005232573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff16638129fc1c6040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200527e57600080fd5b505af115801562005293573d6000803e3d6000fd5b5092935050505090565b606080826001620052ae8162001e95565b50600080620052e9620052e37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000891662002078565b6200569f565b9150915062005308620053028862ffffff19166200202c565b62005777565b604080517f6f70746963732e0000000000000000000000000000000000000000000000000060208083019190915260b09390931b7fffffffffffffffffffff000000000000000000000000000000000000000000001660278201527f2e307800000000000000000000000000000000000000000000000000000000006031820152603481018590526054808201859052825180830390910181526074820184815260b48301909352985090919060940181803683370190505094506020860151602086015250505050915091565b60006042620054077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff16141562003c295762003c21600462003bf7565b60006001620054597fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000841662003a36565b6bffffffffffffffffffffffff16141562003c295762003c21600562003bf7565b606083156200548b575081620011bc565b8251156200549c5782518084602001fd5b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152845160248401528451859391928392604401919085019080838360008315620037b257818101518382015260200162003798565b600060f08083179060ff821614156200551d57603091505062001d4d565b8060ff1660f114156200553557603191505062001d4d565b8060ff1660f214156200554d57603291505062001d4d565b8060ff1660f314156200556557603391505062001d4d565b8060ff1660f414156200557d57603491505062001d4d565b8060ff1660f514156200559557603591505062001d4d565b8060ff1660f61415620055ad57603691505062001d4d565b8060ff1660f71415620055c557603791505062001d4d565b8060ff1660f81415620055dd57603891505062001d4d565b8060ff1660f91415620055f557603991505062001d4d565b8060ff1660fa14156200560d57606191505062001d4d565b8060ff1660fb14156200562557606291505062001d4d565b8060ff1660fc14156200563d57606391505062001d4d565b8060ff1660fd14156200565557606491505062001d4d565b8060ff1660fe14156200566d57606591505062001d4d565b8060ff1660ff14156200568557606691505062001d4d565b50919050565b60006200569882620057d2565b1592915050565b600080601f5b600f8160ff1611156200570c5760ff600882021684901c620056c781620057fa565b61ffff16841793508160ff16601014620056e357601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01620056a5565b50600f5b60ff8160ff1610156200439d5760ff600882021684901c6200573281620057fa565b61ffff16831792508160ff166000146200574e57601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0162005710565b60006030815b600a8160ff161015620020715760ff600882021682600a63ffffffff87160663ffffffff160169ffffffffffffffffffff16901b83179250600a8463ffffffff1681620057c657fe5b0493506001016200577d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b60006200580e60048360ff16901c62005820565b60ff161760081b62ffff001662005041825b6040805180820190915260108082527f30313233343536373839616263646566000000000000000000000000000000006020830152600091600f841691829081106200586857fe5b016020015160f81c9392505050565b604080518082019091526000808252602082015290565b61058b806200589d8339019056fe60a060405260405161058b38038061058b8339818101604052604081101561002657600080fd5b81516020830180516040519294929383019291908464010000000082111561004d57600080fd5b90830190602082018581111561006257600080fd5b825164010000000081118282018810171561007c57600080fd5b82525081516020918201929091019080838360005b838110156100a9578181015183820152602001610091565b50505050905090810190601f1680156100d65780820380516001836020036101000a031916815260200191505b506040525050506100f0826101d060201b6100291760201c565b610134576040805162461bcd60e51b815260206004820152601060248201526f18995858dbdb880858dbdb9d1c9858dd60821b604482015290519081900360640190fd5b6001600160601b0319606083901b166080526000610151836101d6565b9050610166816101d060201b6100291760201c565b6101b7576040805162461bcd60e51b815260206004820152601f60248201527f626561636f6e20696d706c656d656e746174696f6e2021636f6e747261637400604482015290519081900360640190fd5b8151156101c8576101c881836102d6565b50505061038f565b3b151590565b604051600090819081906001600160a01b0385169082818181855afa9150503d8060008114610221576040519150601f19603f3d011682016040523d82523d6000602084013e610226565b606091505b50915091508181906102b65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561027b578181015183820152602001610263565b50505050905090810190601f1680156102a85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156102cc57600080fd5b5051949350505050565b6000826001600160a01b0316826040518082805190602001908083835b602083106103125780518252601f1990920191602091820191016102f3565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610372576040519150601f19603f3d011682016040523d82523d6000602084013e610377565b606091505b505090508061038a573d6000803e3d6000fd5b505050565b60805160601c6101e06103ab60003980603652506101e06000f3fe60806040523661001357610011610017565b005b6100115b61002761002261002f565b61005f565b565b3b151590565b600061005a7f0000000000000000000000000000000000000000000000000000000000000000610083565b905090565b3660008037600080366000845af43d6000803e80801561007e573d6000f35b3d6000fd5b6040516000908190819073ffffffffffffffffffffffffffffffffffffffff85169082818181855afa9150503d80600081146100db576040519150601f19603f3d011682016040523d82523d6000602084013e6100e0565b606091505b509150915081819061018a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561014f578181015183820152602001610137565b50505050905090810190601f16801561017c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b508080602001905160208110156101a057600080fd5b505194935050505056fea26469706673582212208b196ed9b9fecbd07fd699a800d8da1a28f61cf407ed72d6aded9bf21752ce5c64736f6c634300070600334f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c2e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656454797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e2033322062797465735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656454797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a2646970667358221220a7a9ab7e2aa5448c05c4ffc9eea94d319beeeead42cb2bf5dbbfbda2e3c5662b64736f6c63430007060033"; export class BridgeRouter__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-xapps/factories/BridgeToken__factory.ts b/typescript/typechain/optics-xapps/factories/BridgeToken__factory.ts index bf7c975d1..061494288 100644 --- a/typescript/typechain/optics-xapps/factories/BridgeToken__factory.ts +++ b/typescript/typechain/optics-xapps/factories/BridgeToken__factory.ts @@ -486,7 +486,7 @@ const _abi = [ ]; const _bytecode = - "0x7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9608052610120604052600160e052603160f81b610100527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660a05261190160f01b60c05234801561007057600080fd5b5060805160a05160c05160f01c61214c6100a560003980610f30525080611356525080610c705280610ecc525061214c6000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80638129fc1c116100d8578063a457c2d71161008c578063dd62ed3e11610066578063dd62ed3e146105c5578063f2fde38b14610600578063f698da251461063357610182565b8063a457c2d7146104f5578063a9059cbb1461052e578063d505accf1461056757610182565b806395d89b41116100bd57806395d89b41146104ac578063982aaf6b146104b45780639dc29fac146104bc57610182565b80638129fc1c146104735780638da5cb5b1461047b57610182565b8063395093511161013a57806370a082311161011457806370a0823114610405578063715018a6146104385780637ecebe001461044057610182565b806339509351146102cc57806340c10f1914610305578063654935f41461034057610182565b806318160ddd1161016b57806318160ddd1461025157806323b872dd1461026b578063313ce567146102ae57610182565b806306fdde0314610187578063095ea7b314610204575b600080fd5b61018f61063b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023d6004803603604081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106ef565b604080519115158252519081900360200190f35b610259610705565b60408051918252519081900360200190f35b61023d6004803603606081101561028157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561070b565b6102b6610781565b6040805160ff9092168252519081900360200190f35b61023d600480360360408110156102e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561078a565b61033e6004803603604081101561031b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107cd565b005b61033e6004803603606081101561035657600080fd5b81019060208101813564010000000081111561037157600080fd5b82018360208201111561038357600080fd5b803590602001918460018302840111640100000000831117156103a557600080fd5b9193909290916020810190356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460018302840111640100000000831117156103f757600080fd5b91935091503560ff16610883565b6102596004803603602081101561041b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661097d565b61033e61098e565b6102596004803603602081101561045657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610aa5565b61033e610ab7565b610483610bd3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61018f610bef565b610259610c6e565b61033e600480360360408110156104d257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c92565b61023d6004803603604081101561050b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d44565b61023d6004803603604081101561054457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da0565b61033e600480360360e081101561057d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610dad565b610259600480360360408110156105db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166110da565b61033e6004803603602081101561061657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611112565b6102596112b4565b60688054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106e55780601f106106ba576101008083540402835291602001916106e5565b820191906000526020600020905b8154815290600101906020018083116106c857829003601f168201915b5050505050905090565b60006106fc3384846113aa565b50600192915050565b60675490565b60006107188484846114f1565b6107778433610772856040518060600160405280602881526020016120606028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260666020908152604080832033845290915290205491906116c3565b6113aa565b5060019392505050565b606a5460ff1690565b33600081815260666020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106fc9185906107729086611774565b6107d56117ef565b73ffffffffffffffffffffffffffffffffffffffff166107f3610bd3565b73ffffffffffffffffffffffffffffffffffffffff161461087557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61087f82826117f3565b5050565b61088b6117ef565b73ffffffffffffffffffffffffffffffffffffffff166108a9610bd3565b73ffffffffffffffffffffffffffffffffffffffff161461092b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61093760688686611ebf565b5061094460698484611ebf565b50606a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117905550505050565b600061098882611926565b92915050565b6109966117ef565b73ffffffffffffffffffffffffffffffffffffffff166109b4610bd3565b73ffffffffffffffffffffffffffffffffffffffff1614610a3657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b606b6020526000908152604090205481565b600054610100900460ff1680610ad05750610ad061194e565b80610ade575060005460ff16155b610b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612032602e913960400191505060405180910390fd5b600054610100900460ff16158015610b9957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610ba161195f565b8015610bd057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b60698054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106e55780601f106106ba576101008083540402835291602001916106e5565b7f000000000000000000000000000000000000000000000000000000000000000081565b610c9a6117ef565b73ffffffffffffffffffffffffffffffffffffffff16610cb8610bd3565b73ffffffffffffffffffffffffffffffffffffffff1614610d3a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61087f8282611a51565b60006106fc3384610772856040518060600160405280602581526020016120f26025913933600090815260666020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906116c3565b60006106fc3384846114f1565b83421115610e1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8716610e9e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332305065726d69743a206f776e6572207a65726f206164647265737300604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8088166000818152606b602090815260408083205481517f00000000000000000000000000000000000000000000000000000000000000008185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e090940190528251920191909120907f0000000000000000000000000000000000000000000000000000000000000000610f576112b4565b83604051602001808461ffff1660f01b81526002018381526020018281526020019350505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610ff1573d6000803e3d6000fd5b5050506020604051035190508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461109757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8b166000908152606b602052604090206001850190556110cd8b8b8b6113aa565b5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260666020908152604080832093909416825291909152205490565b61111a6117ef565b73ffffffffffffffffffffffffffffffffffffffff16611138610bd3565b73ffffffffffffffffffffffffffffffffffffffff16146111ba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611226576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611fc46026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6068600001604051808280546001816001161561010002031660029004801561133b5780601f1061131957610100808354040283529182019161133b565b820191906000526020600020905b815481529060010190602001808311611327575b505060408051918290038220602080840196909652828201527f0000000000000000000000000000000000000000000000000000000000000000606083015260808201959095523060a0808301919091528551808303909101815260c090910190945250508151910120905090565b73ffffffffffffffffffffffffffffffffffffffff8316611416576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806120ce6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611fea6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260666020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661155d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120a96025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166115c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611f7f6023913960400191505060405180910390fd5b6115d4838383611b9b565b61161e8160405180606001604052806026815260200161200c6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526065602052604090205491906116c3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260656020526040808220939093559084168152205461165a9082611774565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526065602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578181015183820152602001611719565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156117e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff821661187557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61188160008383611b9b565b60675461188e9082611774565b60675573ffffffffffffffffffffffffffffffffffffffff82166000908152606560205260409020546118c19082611774565b73ffffffffffffffffffffffffffffffffffffffff831660008181526065602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526065602052604090205490565b600061195930611ba0565b15905090565b600054610100900460ff1680611978575061197861194e565b80611986575060005460ff16155b6119db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612032602e913960400191505060405180910390fd5b600054610100900460ff16158015611a4157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611a49611ba6565b610ba1611cb8565b73ffffffffffffffffffffffffffffffffffffffff8216611abd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120886021913960400191505060405180910390fd5b611ac982600083611b9b565b611b1381604051806060016040528060228152602001611fa26022913973ffffffffffffffffffffffffffffffffffffffff851660009081526065602052604090205491906116c3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260656020526040902055606754611b469082611e48565b60675560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b505050565b3b151590565b600054610100900460ff1680611bbf5750611bbf61194e565b80611bcd575060005460ff16155b611c22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612032602e913960400191505060405180910390fd5b600054610100900460ff16158015610ba157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790558015610bd057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff1680611cd15750611cd161194e565b80611cdf575060005460ff16155b611d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612032602e913960400191505060405180910390fd5b600054610100900460ff16158015611d9a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b6000611da46117ef565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610bd057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600082821115611eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611ef55760008555611f59565b82601f10611f2c578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611f59565b82800160010185558215611f59579182015b82811115611f59578235825591602001919060010190611f3e565b50611f65929150611f69565b5090565b5b80821115611f655760008155600101611f6a56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa264697066735822122033fc78a93d2610918814f5d350d5a3dcdaf469d8ec95edc140e011b28efd963964736f6c63430007060033"; + "0x7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9608052610120604052600160e052603160f81b610100527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660a05261190160f01b60c05234801561007057600080fd5b5060805160a05160c05160f01c61214c6100a560003980610f30525080611356525080610c705280610ecc525061214c6000f3fe608060405234801561001057600080fd5b50600436106101825760003560e01c80638129fc1c116100d8578063a457c2d71161008c578063dd62ed3e11610066578063dd62ed3e146105c5578063f2fde38b14610600578063f698da251461063357610182565b8063a457c2d7146104f5578063a9059cbb1461052e578063d505accf1461056757610182565b806395d89b41116100bd57806395d89b41146104ac578063982aaf6b146104b45780639dc29fac146104bc57610182565b80638129fc1c146104735780638da5cb5b1461047b57610182565b8063395093511161013a57806370a082311161011457806370a0823114610405578063715018a6146104385780637ecebe001461044057610182565b806339509351146102cc57806340c10f1914610305578063654935f41461034057610182565b806318160ddd1161016b57806318160ddd1461025157806323b872dd1461026b578063313ce567146102ae57610182565b806306fdde0314610187578063095ea7b314610204575b600080fd5b61018f61063b565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023d6004803603604081101561021a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356106ef565b604080519115158252519081900360200190f35b610259610705565b60408051918252519081900360200190f35b61023d6004803603606081101561028157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561070b565b6102b6610781565b6040805160ff9092168252519081900360200190f35b61023d600480360360408110156102e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561078a565b61033e6004803603604081101561031b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107cd565b005b61033e6004803603606081101561035657600080fd5b81019060208101813564010000000081111561037157600080fd5b82018360208201111561038357600080fd5b803590602001918460018302840111640100000000831117156103a557600080fd5b9193909290916020810190356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460018302840111640100000000831117156103f757600080fd5b91935091503560ff16610883565b6102596004803603602081101561041b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661097d565b61033e61098e565b6102596004803603602081101561045657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610aa5565b61033e610ab7565b610483610bd3565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61018f610bef565b610259610c6e565b61033e600480360360408110156104d257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c92565b61023d6004803603604081101561050b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610d44565b61023d6004803603604081101561054457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610da0565b61033e600480360360e081101561057d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610dad565b610259600480360360408110156105db57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166110da565b61033e6004803603602081101561061657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611112565b6102596112b4565b60688054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106e55780601f106106ba576101008083540402835291602001916106e5565b820191906000526020600020905b8154815290600101906020018083116106c857829003601f168201915b5050505050905090565b60006106fc3384846113aa565b50600192915050565b60675490565b60006107188484846114f1565b6107778433610772856040518060600160405280602881526020016120606028913973ffffffffffffffffffffffffffffffffffffffff8a16600090815260666020908152604080832033845290915290205491906116c3565b6113aa565b5060019392505050565b606a5460ff1690565b33600081815260666020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716845290915281205490916106fc9185906107729086611774565b6107d56117ef565b73ffffffffffffffffffffffffffffffffffffffff166107f3610bd3565b73ffffffffffffffffffffffffffffffffffffffff161461087557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61087f82826117f3565b5050565b61088b6117ef565b73ffffffffffffffffffffffffffffffffffffffff166108a9610bd3565b73ffffffffffffffffffffffffffffffffffffffff161461092b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61093760688686611ebf565b5061094460698484611ebf565b50606a80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff9290921691909117905550505050565b600061098882611926565b92915050565b6109966117ef565b73ffffffffffffffffffffffffffffffffffffffff166109b4610bd3565b73ffffffffffffffffffffffffffffffffffffffff1614610a3657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b606b6020526000908152604090205481565b600054610100900460ff1680610ad05750610ad061194e565b80610ade575060005460ff16155b610b33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612032602e913960400191505060405180910390fd5b600054610100900460ff16158015610b9957600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b610ba161195f565b8015610bd057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b50565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b60698054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106e55780601f106106ba576101008083540402835291602001916106e5565b7f000000000000000000000000000000000000000000000000000000000000000081565b610c9a6117ef565b73ffffffffffffffffffffffffffffffffffffffff16610cb8610bd3565b73ffffffffffffffffffffffffffffffffffffffff1614610d3a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61087f8282611a51565b60006106fc3384610772856040518060600160405280602581526020016120f26025913933600090815260666020908152604080832073ffffffffffffffffffffffffffffffffffffffff8d16845290915290205491906116c3565b60006106fc3384846114f1565b83421115610e1c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e65000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8716610e9e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332305065726d69743a206f776e6572207a65726f206164647265737300604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8088166000818152606b602090815260408083205481517f00000000000000000000000000000000000000000000000000000000000000008185015280830195909552948b166060850152608084018a905260a0840185905260c08085018a90528151808603909101815260e090940190528251920191909120907f0000000000000000000000000000000000000000000000000000000000000000610f576112b4565b83604051602001808461ffff1660f01b81526002018381526020018281526020019350505050604051602081830303815290604052805190602001209050600060018288888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610ff1573d6000803e3d6000fd5b5050506020604051035190508a73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461109757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e61747572650000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8b166000908152606b602052604090206001850190556110cd8b8b8b6113aa565b5050505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260666020908152604080832093909416825291909152205490565b61111a6117ef565b73ffffffffffffffffffffffffffffffffffffffff16611138610bd3565b73ffffffffffffffffffffffffffffffffffffffff16146111ba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116611226576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180611fc46026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000804690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6068600001604051808280546001816001161561010002031660029004801561133b5780601f1061131957610100808354040283529182019161133b565b820191906000526020600020905b815481529060010190602001808311611327575b505060408051918290038220602080840196909652828201527f0000000000000000000000000000000000000000000000000000000000000000606083015260808201959095523060a0808301919091528551808303909101815260c090910190945250508151910120905090565b73ffffffffffffffffffffffffffffffffffffffff8316611416576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806120ce6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216611482576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180611fea6022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260666020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661155d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806120a96025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166115c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611f7f6023913960400191505060405180910390fd5b6115d4838383611b9b565b61161e8160405180606001604052806026815260200161200c6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526065602052604090205491906116c3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260656020526040808220939093559084168152205461165a9082611774565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526065602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000818484111561176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611731578181015183820152602001611719565b50505050905090810190601f16801561175e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156117e857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3390565b73ffffffffffffffffffffffffffffffffffffffff821661187557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b61188160008383611b9b565b60675461188e9082611774565b60675573ffffffffffffffffffffffffffffffffffffffff82166000908152606560205260409020546118c19082611774565b73ffffffffffffffffffffffffffffffffffffffff831660008181526065602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526065602052604090205490565b600061195930611ba0565b15905090565b600054610100900460ff1680611978575061197861194e565b80611986575060005460ff16155b6119db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612032602e913960400191505060405180910390fd5b600054610100900460ff16158015611a4157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b611a49611ba6565b610ba1611cb8565b73ffffffffffffffffffffffffffffffffffffffff8216611abd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806120886021913960400191505060405180910390fd5b611ac982600083611b9b565b611b1381604051806060016040528060228152602001611fa26022913973ffffffffffffffffffffffffffffffffffffffff851660009081526065602052604090205491906116c3565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260656020526040902055606754611b469082611e48565b60675560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b505050565b3b151590565b600054610100900460ff1680611bbf5750611bbf61194e565b80611bcd575060005460ff16155b611c22576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612032602e913960400191505060405180910390fd5b600054610100900460ff16158015610ba157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790558015610bd057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600054610100900460ff1680611cd15750611cd161194e565b80611cdf575060005460ff16155b611d34576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612032602e913960400191505060405180910390fd5b600054610100900460ff16158015611d9a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b6000611da46117ef565b603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015610bd057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16905550565b600082821115611eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611ef55760008555611f59565b82601f10611f2c578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611f59565b82800160010185558215611f59579182015b82811115611f59578235825591602001919060010190611f3e565b50611f65929150611f69565b5090565b5b80821115611f655760008155600101611f6a56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e63654f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212209809e70e981bcd76d2842a99c8d24aa1e0a17b475c1e4674239559aad0ebf80564736f6c63430007060033"; export class BridgeToken__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-xapps/factories/ETHHelper__factory.ts b/typescript/typechain/optics-xapps/factories/ETHHelper__factory.ts index 82ce7df35..4b6572bbe 100644 --- a/typescript/typechain/optics-xapps/factories/ETHHelper__factory.ts +++ b/typescript/typechain/optics-xapps/factories/ETHHelper__factory.ts @@ -101,7 +101,7 @@ const _abi = [ ]; const _bytecode = - "0x60c060405234801561001057600080fd5b5060405161045d38038061045d8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606083811b821660805282901b1660a0526040805163095ea7b360e01b81526001600160a01b038084166004830152600019602483015291519184169163095ea7b39160448082019260009290919082900301818387803b1580156100a957600080fd5b505af11580156100bd573d6000803e3d6000fd5b50505050505060805160601c60a05160601c6103626100fb6000398061023e52806102e052508061014152806101fb52806102bc52506103626000f3fe60806040526004361061005a5760003560e01c80633fc8cef3116100435780633fc8cef3146100ad578063e78cea92146100eb578063ec93e5f0146101005761005a565b806303c1d2831461005f5780632e96d5a31461008a575b600080fd5b6100886004803603604081101561007557600080fd5b5063ffffffff813516906020013561013f565b005b610088600480360360208110156100a057600080fd5b503563ffffffff166102a5565b3480156100b957600080fd5b506100c26102ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100f757600080fd5b506100c26102de565b6100886004803603604081101561011657600080fd5b50803563ffffffff16906020013573ffffffffffffffffffffffffffffffffffffffff16610302565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b5050604080517f1cabf08f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015234602483015263ffffffff881660448301526064820187905291517f00000000000000000000000000000000000000000000000000000000000000009092169450631cabf08f9350608480820193506000929182900301818387803b15801561028957600080fd5b505af115801561029d573d6000803e3d6000fd5b505050505050565b6102b7816102b233610313565b61013f565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61030f826102b283610313565b5050565b73ffffffffffffffffffffffffffffffffffffffff169056fea264697066735822122060b0da4be9749743111e1d704519850d315c2eb6ebec18513739155b296f8eb264736f6c63430007060033"; + "0x60c060405234801561001057600080fd5b5060405161045d38038061045d8339818101604052604081101561003357600080fd5b5080516020909101516001600160601b0319606083811b821660805282901b1660a0526040805163095ea7b360e01b81526001600160a01b038084166004830152600019602483015291519184169163095ea7b39160448082019260009290919082900301818387803b1580156100a957600080fd5b505af11580156100bd573d6000803e3d6000fd5b50505050505060805160601c60a05160601c6103626100fb6000398061023e52806102e052508061014152806101fb52806102bc52506103626000f3fe60806040526004361061005a5760003560e01c80633fc8cef3116100435780633fc8cef3146100ad578063e78cea92146100eb578063ec93e5f0146101005761005a565b806303c1d2831461005f5780632e96d5a31461008a575b600080fd5b6100886004803603604081101561007557600080fd5b5063ffffffff813516906020013561013f565b005b610088600480360360208110156100a057600080fd5b503563ffffffff166102a5565b3480156100b957600080fd5b506100c26102ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100f757600080fd5b506100c26102de565b6100886004803603604081101561011657600080fd5b50803563ffffffff16906020013573ffffffffffffffffffffffffffffffffffffffff16610302565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156101a757600080fd5b505af11580156101bb573d6000803e3d6000fd5b5050604080517f1cabf08f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000008116600483015234602483015263ffffffff881660448301526064820187905291517f00000000000000000000000000000000000000000000000000000000000000009092169450631cabf08f9350608480820193506000929182900301818387803b15801561028957600080fd5b505af115801561029d573d6000803e3d6000fd5b505050505050565b6102b7816102b233610313565b61013f565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61030f826102b283610313565b5050565b73ffffffffffffffffffffffffffffffffffffffff169056fea264697066735822122002ab32a61061fde5f3969e3f3dac2bd14b6c40774352376e4b7e80963710cf9b64736f6c63430007060033"; export class ETHHelper__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-xapps/factories/MockCore__factory.ts b/typescript/typechain/optics-xapps/factories/MockCore__factory.ts index f406e8066..cbb571c8c 100644 --- a/typescript/typechain/optics-xapps/factories/MockCore__factory.ts +++ b/typescript/typechain/optics-xapps/factories/MockCore__factory.ts @@ -7,6 +7,37 @@ import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { MockCore, MockCoreInterface } from "../MockCore"; const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "leafIndex", + type: "uint256", + }, + { + indexed: true, + internalType: "uint64", + name: "destinationAndSequence", + type: "uint64", + }, + { + indexed: true, + internalType: "bytes32", + name: "leaf", + type: "bytes32", + }, + { + indexed: false, + internalType: "bytes", + name: "message", + type: "bytes", + }, + ], + name: "Dispatch", + type: "event", + }, { anonymous: false, inputs: [ @@ -32,6 +63,32 @@ const _abi = [ name: "Enqueue", type: "event", }, + { + inputs: [], + name: "MAX_MESSAGE_BODY_BYTES", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "count", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, { inputs: [ { @@ -100,10 +157,100 @@ const _abi = [ stateMutability: "pure", type: "function", }, + { + inputs: [ + { + internalType: "bytes32", + name: "_item", + type: "bytes32", + }, + ], + name: "queueContains", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "queueEnd", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "queueLength", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "root", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + name: "sequences", + outputs: [ + { + internalType: "uint32", + name: "", + type: "uint32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tree", + outputs: [ + { + internalType: "uint256", + name: "count", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, ]; const _bytecode = - "0x608060405234801561001057600080fd5b5061023f806100206000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635190bc53146100515780638d3638f4146100985780639fa92f9d146100b9578063d3468639146100ea575b600080fd5b6100846004803603602081101561006757600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661016e565b604080519115158252519081900360200190f35b6100a0610174565b6040805163ffffffff9092168252519081900360200190f35b6100c1610179565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61016c6004803603606081101561010057600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561012d57600080fd5b82018360208201111561013f57600080fd5b8035906020019184600183028401116401000000008311171561016157600080fd5b50909250905061017d565b005b50600190565b600590565b3090565b828463ffffffff167f75792710cca0c980daac207dc69865f88b53833bd172dcac111b2b42758202d6848460405180806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039550909350505050a35050505056fea26469706673582212202e4a74ba3c7057a7d8dfd6458c3ad83e0061460afefa247409fdb54b1bafd76e64736f6c63430007060033"; + "0x608060405234801561001057600080fd5b50610ef4806100206000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80639fa92f9d11610081578063ebf0c7171161005b578063ebf0c71714610260578063f6d1610214610268578063fd54b22814610270576100d4565b80639fa92f9d146101a3578063ab91c7b0146101d4578063d3468639146101dc576100d4565b80635190bc53116100b25780635190bc5314610160578063522ae002146101935780638d3638f41461019b576100d4565b806306661abd146100d95780632752e0f4146100f35780632bef28921461012f575b600080fd5b6100e1610278565b60408051918252519081900360200190f35b6101166004803603602081101561010957600080fd5b503563ffffffff1661027e565b6040805163ffffffff9092168252519081900360200190f35b61014c6004803603602081101561014557600080fd5b5035610296565b604080519115158252519081900360200190f35b61014c6004803603602081101561017657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a9565b6100e16102af565b6101166102b5565b6101ab6102ba565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100e16102be565b61025e600480360360608110156101f257600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561021f57600080fd5b82018360208201111561023157600080fd5b8035906020019184600183028401116401000000008311171561025357600080fd5b5090925090506102cf565b005b6100e1610575565b6100e1610581565b6100e161058d565b60205490565b60236020526000908152604090205463ffffffff1681565b60006102a3602183610593565b92915050565b50600190565b61080081565b600590565b3090565b60006102ca602161060d565b905090565b61080081111561034057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f21746f6f20626967000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b63ffffffff808516600090815260236020526040812054909116906103bf6103666102b5565b3373ffffffffffffffffffffffffffffffffffffffff1660001b84898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061064d92505050565b805160208201209091506103d4600082610723565b6103e76103df610575565b60219061082f565b50806103f3888561089c565b67ffffffffffffffff166001610407610278565b037f1a2a870182b13cdb4a0ec2e16f96df5a0e20b1327d43564f7f0e62992a55bd6c856040518080602001828103825283818151815260200191508051906020019080838360005b8381101561046757818101518382015260200161044f565b50505050905090810190601f1680156104945780820380516001836020036101000a031916815260200191505b509250505060405180910390a4858763ffffffff167f75792710cca0c980daac207dc69865f88b53833bd172dcac111b2b42758202d6878760405180806020018281038252848482818152602001925080828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039550909350505050a3505063ffffffff948516600090815260236020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001660019290920190951617909355505050565b60006102ca60006108b6565b60006102ca60216108c9565b60205481565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1681116106035760008181526001850160205260409020548314156105fb5760019150506102a3565b6001016105ab565b5060009392505050565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166106458282610906565b949350505050565b6060868686868686604051602001808763ffffffff1660e01b81526004018681526020018563ffffffff1660e01b81526004018463ffffffff1660e01b815260040183815260200182805190602001908083835b602083106106de57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016106a1565b6001836020036101000a038019825116818451168082178552505050505050905001965050505050505060405160208183030381529060405290509695505050505050565b602082015463ffffffff1161079957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6d65726b6c6520747265652066756c6c00000000000000000000000000000000604482015290519081900360640190fd5b6020820180546001019081905560005b60208110156108285781600116600114156107d557828482602081106107cb57fe5b01555061082b9050565b8381602081106107e157fe5b01548360405160200180838152602001828152602001925050506040516020818303038152906040528051906020012092506002828161081d57fe5b0491506001016107a9565b50fe5b5050565b81546fffffffffffffffffffffffffffffffff80821670010000000000000000000000000000000092839004821660010191821690920291909117835581156102a3576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b63ffffffff1660209190911b67ffffffff00000000161790565b60006102a3826108c4610920565b610de1565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b60019103016fffffffffffffffffffffffffffffffff1690565b610928610e9f565b600081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb560208201527fb4c11951957c6f8f642c4af61cd6b24640fec6dc7fc607ee8206a99e92410d3060408201527f21ddb9a356815c3fac1026b6dec5df3124afbadb485c9ba5a3e3398a04b7ba8560608201527fe58769b32a1beaf1ea27375a44095a0d1fb664ce2dd358e7fcbfb78c26a1934460808201527f0eb01ebfc9ed27500cd4dfc979272d1f0913cc9f66540d7e8005811109e1cf2d60a08201527f887c22bd8750d34016ac3c66b5ff102dacdd73f6b014e710b51e8022af9a196860c08201527fffd70157e48063fc33c97a050f7f640233bf646cc98d9524c6b92bcf3ab56f8360e08201527f9867cc5f7f196b93bae1e27e6320742445d290f2263827498b54fec539f756af6101008201527fcefad4e508c098b9a7e1d8feb19955fb02ba9675585078710969d3440f5054e06101208201527ff9dc3e7fe016e050eff260334f18a5d4fe391d82092319f5964f2e2eb7c1c3a56101408201527ff8b13a49e282f609c317a833fb8d976d11517c571d1221a265d25af778ecf8926101608201527f3490c6ceeb450aecdc82e28293031d10c7d73bf85e57bf041a97360aa2c5d99c6101808201527fc1df82d9c4b87413eae2ef048f94b4d3554cea73d92b0f7af96e0271c691e2bb6101a08201527f5c67add7c6caf302256adedf7ab114da0acfe870d449a3a489f781d659e8becc6101c08201527fda7bce9f4e8618b6bd2f4132ce798cdc7a60e7e1460a7299e3c6342a579626d26101e08201527f2733e50f526ec2fa19a22b31e8ed50f23cd1fdf94c9154ed3a7609a2f1ff981f6102008201527fe1d3b5c807b281e4683cc6d6315cf95b9ade8641defcb32372f1c126e398ef7a6102208201527f5a2dce0a8a7f68bb74560f8f71837c2c2ebbcbf7fffb42ae1896f13f7c7479a06102408201527fb46a28b6f55540f89444f63de0378e3d121be09e06cc9ded1c20e65876d36aa06102608201527fc65e9645644786b620e2dd2ad648ddfcbf4a7e5b1a3a4ecfe7f64667a3f0b7e26102808201527ff4418588ed35a2458cffeb39b93d26f18d2ab13bdce6aee58e7b99359ec2dfd96102a08201527f5a9c16dc00d6ef18b7933a6f8dc65ccb55667138776f7dea101070dc8796e3776102c08201527f4df84f40ae0c8229d0d6069e5c8f39a7c299677a09d367fc7b05e3bc380ee6526102e08201527fcdc72595f74c7b1043d0e1ffbab734648c838dfb0527d971b602bc216c9619ef6103008201527f0abf5ac974a1ed57f4050aa510dd9c74f508277b39d7973bb2dfccc5eeb0618d6103208201527fb8cd74046ff337f0a7bf2c8e03e10f642c1886798d71806ab1e888d9e5ee87d06103408201527f838c5655cb21c6cb83313b5a631175dff4963772cce9108188b34ac87c81c41e6103608201527f662ee4dd2dd7b2bc707961b1e646c4047669dcb6584f0d8d770daf5d7e7deb2e6103808201527f388ab20e2573d171a88108e79d820e98f26c0b84aa8b2f4aa4968dbb818ea3226103a08201527f93237c50ba75ee485f4c22adf2f741400bdf8d6a9cc7df7ecae576221665d7356103c08201527f8448818bb4ae4562849e949e17ac16e0be16688e156b5cf15e098c627c0056a96103e082015290565b6020820154600090815b6020811015610e9757600182821c166000868360208110610e0857fe5b015490508160011415610e4b5780856040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209450610e8d565b84868460208110610e5857fe5b602002015160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012094505b5050600101610deb565b505092915050565b604051806104000160405280602090602082028036833750919291505056fea2646970667358221220e998c4b510d50d9c6ac23549486d65bf3c53880160b6859f611c8ab6871e0c5d64736f6c63430007060033"; export class MockCore__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-xapps/factories/PingPongRouter__factory.ts b/typescript/typechain/optics-xapps/factories/PingPongRouter__factory.ts index 378fd0b2d..26213c8d6 100644 --- a/typescript/typechain/optics-xapps/factories/PingPongRouter__factory.ts +++ b/typescript/typechain/optics-xapps/factories/PingPongRouter__factory.ts @@ -218,7 +218,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b5060405162001a4338038062001a43833981810160405260208110156200003757600080fd5b505162000044816200004b565b50620003ac565b600054610100900460ff1680620000675750620000676200011b565b8062000076575060005460ff16155b620000b35760405162461bcd60e51b815260040180806020018281038252602e81526020018062001a15602e913960400191505060405180910390fd5b600054610100900460ff16158015620000df576000805460ff1961ff0019909116610100171660011790555b606580546001600160a01b0319166001600160a01b0384161790556200010462000139565b801562000117576000805461ff00191690555b5050565b60006200013330620001f760201b6200090c1760201c565b15905090565b600054610100900460ff1680620001555750620001556200011b565b8062000164575060005460ff16155b620001a15760405162461bcd60e51b815260040180806020018281038252602e81526020018062001a15602e913960400191505060405180910390fd5b600054610100900460ff16158015620001cd576000805460ff1961ff0019909116610100171660011790555b620001d7620001fd565b620001e1620002a5565b8015620001f4576000805461ff00191690555b50565b3b151590565b600054610100900460ff1680620002195750620002196200011b565b8062000228575060005460ff16155b620002655760405162461bcd60e51b815260040180806020018281038252602e81526020018062001a15602e913960400191505060405180910390fd5b600054610100900460ff16158015620001e1576000805460ff1961ff0019909116610100171660011790558015620001f4576000805461ff001916905550565b600054610100900460ff1680620002c15750620002c16200011b565b80620002d0575060005460ff16155b6200030d5760405162461bcd60e51b815260040180806020018281038252602e81526020018062001a15602e913960400191505060405180910390fd5b600054610100900460ff1615801562000339576000805460ff1961ff0019909116610100171660011790555b600062000345620003a8565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015620001f4576000805461ff001916905550565b3390565b61165980620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063715018a61161005b578063715018a6146101ce5780638da5cb5b146101d6578063b49c53a7146101de578063f2fde38b1461020757610088565b8063025ed0691461008d5780633339df96146100b257806341bdc8b5146100e357806356d5d47514610116575b600080fd5b6100b0600480360360208110156100a357600080fd5b503563ffffffff1661023a565b005b6100ba61028a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b0600480360360208110156100f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a6565b6100b06004803603606081101561012c57600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561015957600080fd5b82018360208201111561016b57600080fd5b8035906020019184600183028401116401000000008311171561018d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610395945050505050565b6100b0610576565b6100ba61068d565b6100b0600480360360408110156101f457600080fd5b5063ffffffff81351690602001356106a9565b6100b06004803603602081101561021d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661076a565b606780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008116600163ffffffff928316818101909316919091179092556102858383836000610916565b505050565b60655473ffffffffffffffffffffffffffffffffffffffff1681565b6102ae610a7f565b73ffffffffffffffffffffffffffffffffffffffff166102cc61068d565b73ffffffffffffffffffffffffffffffffffffffff161461034e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61039e33610a83565b61040957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f217265706c696361000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b82826104158282610b2c565b61048057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f746520726f75746572000000000000000000000000000000000000604482015290519081900360640190fd5b600061048c8482610b4b565b90506104b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216610b6f565b156104cd576104c88682610b8f565b61056e565b6104f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216610b9c565b15610507576104c88682610ba5565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f2176616c696420616374696f6e00000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b61057e610a7f565b73ffffffffffffffffffffffffffffffffffffffff1661059c61068d565b73ffffffffffffffffffffffffffffffffffffffff161461061e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b6106b1610a7f565b73ffffffffffffffffffffffffffffffffffffffff166106cf61068d565b73ffffffffffffffffffffffffffffffffffffffff161461075157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b63ffffffff909116600090815260666020526040902055565b610772610a7f565b73ffffffffffffffffffffffffffffffffffffffff1661079061068d565b73ffffffffffffffffffffffffffffffffffffffff161461081257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061156e6026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803b15155b919050565b600061092185610bb2565b9050600084610939576109348484610c34565b610943565b6109438484610c7f565b905061094d610c88565b73ffffffffffffffffffffffffffffffffffffffff1663d34686398784846040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109c95781810151838201526020016109b1565b50505050905090810190601f1680156109f65780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b5050604080518681528815156020820152815163ffffffff808a1695508b1693507fc33c46696831ce09e40c8eb57b62d0d0cd48c408d38fa19f9a8ba3138415db10929181900390910190a3505050505050565b3390565b606554604080517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000939290921691635190bc5391602480820192602092909190829003018186803b158015610afa57600080fd5b505afa158015610b0e573d6000803e3d6000fd5b505050506040513d6020811015610b2457600080fd5b505192915050565b63ffffffff821660009081526066602052604090205481145b92915050565b815160009060208401610b6664ffffffffff85168284610d24565b95945050505050565b600060015b610b7d83610d85565b6002811115610b8857fe5b1492915050565b6001610285838284610dc0565b60006002610b74565b6000610285838284610dc0565b63ffffffff81166000908152606660205260409020548061091157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f2172656d6f746500000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b606060025b8383604051602001808460ff1660f81b81526001018363ffffffff1660e01b81526004018281526020019350505050604051602081830303815290604052905092915050565b60606001610c39565b606554604080517f9fa92f9d000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691639fa92f9d916004808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051905090565b600080610d318484610e7c565b9050604051811115610d41575060005b80610d6f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610d7e565b610d7a858585610eee565b9150505b9392505050565b6000610db27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316610f01565b60ff166002811115610b4557fe5b6000610ded7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316610f07565b90506000610e1c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416610f38565b604080518481528615156020820152815192935063ffffffff80851693908916927faa15aa1b86193c9d924f48e0c48b3cba78f17e281109c7de2f865c5a1c3d7009928290030190a3610e758585158385600101610916565b5050505050565b81810182811015610b4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60d81c90565b6000610b457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660016020610f65565b6000610b457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600160045b60008160200360080260ff16610f7c858585610f86565b901c949350505050565b600060ff8216610f9857506000610d7e565b610fa184611131565b6bffffffffffffffffffffffff16610fbc8460ff8516610e7c565b111561109b57610ffd610fce85611145565b6bffffffffffffffffffffffff16610fe586611131565b6bffffffffffffffffffffffff16858560ff16611159565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611060578181015183820152602001611048565b50505050905090810190601f16801561108d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff1611156110f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806115b5603a913960400191505060405180910390fd5b60088202600061110786611145565b6bffffffffffffffffffffffff1690506000611122836112b4565b91909501511695945050505050565b60181c6bffffffffffffffffffffffff1690565b60781c6bffffffffffffffffffffffff1690565b60606000611166866112fd565b9150506000611174866112fd565b9150506000611182866112fd565b9150506000611190866112fd565b9150508383838360405160200180806115ef603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161159482397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600080601f5b600f8160ff1611156113655760ff600882021684901c611322816113d1565b61ffff16841793508160ff1660101461133d57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01611303565b50600f5b60ff8160ff1610156113cb5760ff600882021684901c611388816113d1565b61ffff16831792508160ff166000146113a357601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01611369565b50915091565b60006113e360048360ff16901c611401565b60ff161760081b62ffff00166113f882611401565b60ff1617919050565b600060f08083179060ff8216141561141d576030915050610911565b8060ff1660f11415611433576031915050610911565b8060ff1660f21415611449576032915050610911565b8060ff1660f3141561145f576033915050610911565b8060ff1660f41415611475576034915050610911565b8060ff1660f5141561148b576035915050610911565b8060ff1660f614156114a1576036915050610911565b8060ff1660f714156114b7576037915050610911565b8060ff1660f814156114cd576038915050610911565b8060ff1660f914156114e3576039915050610911565b8060ff1660fa14156114f9576061915050610911565b8060ff1660fb141561150f576062915050610911565b8060ff1660fc1415611525576063915050610911565b8060ff1660fd141561153b576064915050610911565b8060ff1660fe1415611551576065915050610911565b8060ff1660ff1415611567576066915050610911565b5091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573732e20417474656d7074656420746f20696e646578206174206f666673657420307854797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a264697066735822122077f552edbefbe0a3f1bfbe1723009cc16749d93ff7288745da31511f262f9d8164736f6c63430007060033496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564"; + "0x60806040523480156200001157600080fd5b5060405162001a4338038062001a43833981810160405260208110156200003757600080fd5b505162000044816200004b565b50620003ac565b600054610100900460ff1680620000675750620000676200011b565b8062000076575060005460ff16155b620000b35760405162461bcd60e51b815260040180806020018281038252602e81526020018062001a15602e913960400191505060405180910390fd5b600054610100900460ff16158015620000df576000805460ff1961ff0019909116610100171660011790555b606580546001600160a01b0319166001600160a01b0384161790556200010462000139565b801562000117576000805461ff00191690555b5050565b60006200013330620001f760201b6200090c1760201c565b15905090565b600054610100900460ff1680620001555750620001556200011b565b8062000164575060005460ff16155b620001a15760405162461bcd60e51b815260040180806020018281038252602e81526020018062001a15602e913960400191505060405180910390fd5b600054610100900460ff16158015620001cd576000805460ff1961ff0019909116610100171660011790555b620001d7620001fd565b620001e1620002a5565b8015620001f4576000805461ff00191690555b50565b3b151590565b600054610100900460ff1680620002195750620002196200011b565b8062000228575060005460ff16155b620002655760405162461bcd60e51b815260040180806020018281038252602e81526020018062001a15602e913960400191505060405180910390fd5b600054610100900460ff16158015620001e1576000805460ff1961ff0019909116610100171660011790558015620001f4576000805461ff001916905550565b600054610100900460ff1680620002c15750620002c16200011b565b80620002d0575060005460ff16155b6200030d5760405162461bcd60e51b815260040180806020018281038252602e81526020018062001a15602e913960400191505060405180910390fd5b600054610100900460ff1615801562000339576000805460ff1961ff0019909116610100171660011790555b600062000345620003a8565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015620001f4576000805461ff001916905550565b3390565b61165980620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063715018a61161005b578063715018a6146101ce5780638da5cb5b146101d6578063b49c53a7146101de578063f2fde38b1461020757610088565b8063025ed0691461008d5780633339df96146100b257806341bdc8b5146100e357806356d5d47514610116575b600080fd5b6100b0600480360360208110156100a357600080fd5b503563ffffffff1661023a565b005b6100ba61028a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b0600480360360208110156100f957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166102a6565b6100b06004803603606081101561012c57600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561015957600080fd5b82018360208201111561016b57600080fd5b8035906020019184600183028401116401000000008311171561018d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610395945050505050565b6100b0610576565b6100ba61068d565b6100b0600480360360408110156101f457600080fd5b5063ffffffff81351690602001356106a9565b6100b06004803603602081101561021d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661076a565b606780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000008116600163ffffffff928316818101909316919091179092556102858383836000610916565b505050565b60655473ffffffffffffffffffffffffffffffffffffffff1681565b6102ae610a7f565b73ffffffffffffffffffffffffffffffffffffffff166102cc61068d565b73ffffffffffffffffffffffffffffffffffffffff161461034e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61039e33610a83565b61040957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f217265706c696361000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b82826104158282610b2c565b61048057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f746520726f75746572000000000000000000000000000000000000604482015290519081900360640190fd5b600061048c8482610b4b565b90506104b97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216610b6f565b156104cd576104c88682610b8f565b61056e565b6104f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216610b9c565b15610507576104c88682610ba5565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f2176616c696420616374696f6e00000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b61057e610a7f565b73ffffffffffffffffffffffffffffffffffffffff1661059c61068d565b73ffffffffffffffffffffffffffffffffffffffff161461061e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b6106b1610a7f565b73ffffffffffffffffffffffffffffffffffffffff166106cf61068d565b73ffffffffffffffffffffffffffffffffffffffff161461075157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b63ffffffff909116600090815260666020526040902055565b610772610a7f565b73ffffffffffffffffffffffffffffffffffffffff1661079061068d565b73ffffffffffffffffffffffffffffffffffffffff161461081257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811661087e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061156e6026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803b15155b919050565b600061092185610bb2565b9050600084610939576109348484610c34565b610943565b6109438484610c7f565b905061094d610c88565b73ffffffffffffffffffffffffffffffffffffffff1663d34686398784846040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109c95781810151838201526020016109b1565b50505050905090810190601f1680156109f65780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b5050604080518681528815156020820152815163ffffffff808a1695508b1693507fc33c46696831ce09e40c8eb57b62d0d0cd48c408d38fa19f9a8ba3138415db10929181900390910190a3505050505050565b3390565b606554604080517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000939290921691635190bc5391602480820192602092909190829003018186803b158015610afa57600080fd5b505afa158015610b0e573d6000803e3d6000fd5b505050506040513d6020811015610b2457600080fd5b505192915050565b63ffffffff821660009081526066602052604090205481145b92915050565b815160009060208401610b6664ffffffffff85168284610d24565b95945050505050565b600060015b610b7d83610d85565b6002811115610b8857fe5b1492915050565b6001610285838284610dc0565b60006002610b74565b6000610285838284610dc0565b63ffffffff81166000908152606660205260409020548061091157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f2172656d6f746500000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b606060025b8383604051602001808460ff1660f81b81526001018363ffffffff1660e01b81526004018281526020019350505050604051602081830303815290604052905092915050565b60606001610c39565b606554604080517f9fa92f9d000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691639fa92f9d916004808301926020929190829003018186803b158015610cf357600080fd5b505afa158015610d07573d6000803e3d6000fd5b505050506040513d6020811015610d1d57600080fd5b5051905090565b600080610d318484610e7c565b9050604051811115610d41575060005b80610d6f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610d7e565b610d7a858585610eee565b9150505b9392505050565b6000610db27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316610f01565b60ff166002811115610b4557fe5b6000610ded7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316610f07565b90506000610e1c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416610f38565b604080518481528615156020820152815192935063ffffffff80851693908916927faa15aa1b86193c9d924f48e0c48b3cba78f17e281109c7de2f865c5a1c3d7009928290030190a3610e758585158385600101610916565b5050505050565b81810182811015610b4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60d81c90565b6000610b457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660016020610f65565b6000610b457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600160045b60008160200360080260ff16610f7c858585610f86565b901c949350505050565b600060ff8216610f9857506000610d7e565b610fa184611131565b6bffffffffffffffffffffffff16610fbc8460ff8516610e7c565b111561109b57610ffd610fce85611145565b6bffffffffffffffffffffffff16610fe586611131565b6bffffffffffffffffffffffff16858560ff16611159565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611060578181015183820152602001611048565b50505050905090810190601f16801561108d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff1611156110f8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a8152602001806115b5603a913960400191505060405180910390fd5b60088202600061110786611145565b6bffffffffffffffffffffffff1690506000611122836112b4565b91909501511695945050505050565b60181c6bffffffffffffffffffffffff1690565b60781c6bffffffffffffffffffffffff1690565b60606000611166866112fd565b9150506000611174866112fd565b9150506000611182866112fd565b9150506000611190866112fd565b9150508383838360405160200180806115ef603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161159482397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600080601f5b600f8160ff1611156113655760ff600882021684901c611322816113d1565b61ffff16841793508160ff1660101461133d57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01611303565b50600f5b60ff8160ff1610156113cb5760ff600882021684901c611388816113d1565b61ffff16831792508160ff166000146113a357601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01611369565b50915091565b60006113e360048360ff16901c611401565b60ff161760081b62ffff00166113f882611401565b60ff1617919050565b600060f08083179060ff8216141561141d576030915050610911565b8060ff1660f11415611433576031915050610911565b8060ff1660f21415611449576032915050610911565b8060ff1660f3141561145f576033915050610911565b8060ff1660f41415611475576034915050610911565b8060ff1660f5141561148b576035915050610911565b8060ff1660f614156114a1576036915050610911565b8060ff1660f714156114b7576037915050610911565b8060ff1660f814156114cd576038915050610911565b8060ff1660f914156114e3576039915050610911565b8060ff1660fa14156114f9576061915050610911565b8060ff1660fb141561150f576062915050610911565b8060ff1660fc1415611525576063915050610911565b8060ff1660fd141561153b576064915050610911565b8060ff1660fe1415611551576065915050610911565b8060ff1660ff1415611567576066915050610911565b5091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573732e20417474656d7074656420746f20696e646578206174206f666673657420307854797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a2646970667358221220c86a63845a51a1661711e88eab07470065534e936f26a88f7afa3db0fc7c962a64736f6c63430007060033496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564"; export class PingPongRouter__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-xapps/factories/Replica__factory.ts b/typescript/typechain/optics-xapps/factories/Replica__factory.ts index 5c601fda7..f5876bf9f 100644 --- a/typescript/typechain/optics-xapps/factories/Replica__factory.ts +++ b/typescript/typechain/optics-xapps/factories/Replica__factory.ts @@ -540,7 +540,7 @@ const _abi = [ ]; const _bytecode = - "0x60a060405234801561001057600080fd5b506040516131583803806131588339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166130ef61006960003980610d155280610d7c52506130ef6000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638d3638f4116100ee578063b31c01fb11610097578063c19d93fb11610071578063c19d93fb14610641578063d88beda214610649578063df034cd014610651578063f6d1610214610682576101a3565b8063b31c01fb14610519578063ba739a62146105cb578063bf30a55d146105ec576101a3565b80639fa6a6e3116100c85780639fa6a6e3146104ec578063a3f81d68146104f4578063ab91c7b014610511576101a3565b80638d3638f414610436578063928bc4b21461043e578063961681dc146104e4576101a3565b806339992668116101505780636188af0e1161012a5780636188af0e146103635780637022b58e1461041157806371bfb7b814610419576101a3565b8063399926681461033257806345630b1a1461033a578063456d067214610342576101a3565b80632bbd59ca116101815780632bbd59ca146102ad5780632bef2892146102eb578063371d307114610308576101a3565b806314cfabb3146101a857806319d9d21a146101c457806325e3beda14610293575b600080fd5b6101b061068a565b604080519115158252519081900360200190f35b610291600480360360a08110156101da57600080fd5b813591602081019181019060808101606082013564010000000081111561020057600080fd5b82018360208201111561021257600080fd5b8035906020019184600183028401116401000000008311171561023457600080fd5b91939092909160208101903564010000000081111561025257600080fd5b82018360208201111561026457600080fd5b8035906020019184600183028401116401000000008311171561028657600080fd5b5090925090506106b6565b005b61029b610915565b60408051918252519081900360200190f35b6102ca600480360360208110156102c357600080fd5b503561091b565b604051808260028111156102da57fe5b815260200191505060405180910390f35b6101b06004803603602081101561030157600080fd5b5035610930565b6101b0600480360361044081101561031f57600080fd5b5080359060208101906104200135610945565b61029b610a65565b61029b610a6b565b61034a610a80565b6040805163ffffffff9092168252519081900360200190f35b610291600480360361044081101561037a57600080fd5b81019060208101813564010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955092935050506104008201359050610a8c565b610291610b18565b61029b6004803603602081101561042f57600080fd5b5035610d01565b61034a610d13565b6101b06004803603602081101561045457600080fd5b81019060208101813564010000000081111561046f57600080fd5b82018360208201111561048157600080fd5b803590602001918460018302840111640100000000831117156104a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d37945050505050565b61034a611428565b61029b611434565b6101b06004803603602081101561050a57600080fd5b503561143a565b61029b611461565b6102916004803603606081101561052f57600080fd5b81359160208101359181019060608101604082013564010000000081111561055657600080fd5b82018360208201111561056857600080fd5b8035906020019184600183028401116401000000008311171561058a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061146d945050505050565b6105d3611753565b6040805192835260208301919091528051918290030190f35b610291600480360360a081101561060257600080fd5b5063ffffffff813581169173ffffffffffffffffffffffffffffffffffffffff60208201351691604082013591606081013591608090910135166117a1565b6102ca611956565b61029b611979565b610659611980565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61029b6119a2565b600061069660026119ae565b158015906106b157506106b16106ac60026119ee565b61143a565b905090565b6002600054760100000000000000000000000000000000000000000000900460ff1660028111156106e357fe5b141561075057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f86018190048102820181019092528481526107929188918835918890889081908401838280828437600092019190915250611a8f92505050565b80156107e157506107e186866001602002013584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8f92505050565b80156107f257508435602086013514155b1561090d576107ff611b27565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b61271081565b60096020526000908152604090205460ff1681565b600061093d600283611b31565b90505b919050565b60008060008581526009602052604090205460ff16600281111561096557fe5b146109d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f214d6573736167655374617475732e4e6f6e6500000000000000000000000000604482015290519081900360640190fd5b6000610a07858560208060200260405190810160405280929190826020800280828437600092019190915250879150611bad9050565b9050610a128161143a565b15610a58575050600083815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610a5e565b60009150505b9392505050565b60055481565b6004546000906106b19063ffffffff16611c58565b60065463ffffffff1681565b610a9e83805190602001208383610945565b610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2170726f76650000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610b1283610d37565b50505050565b6002600054760100000000000000000000000000000000000000000000900460ff166002811115610b4557fe5b1415610bb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610bbc60026119ae565b610c2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080610c3460026119ae565b90505b600081118015610c4f5750610c4f6106ac60026119ee565b15610c8757610c5e6002611ccd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610c37565b81610cf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2174696d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610cfb611b2f565b50600155565b60076020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610d448382611e06565b90506000610d737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611e2a565b905063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016610dc77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611e5b565b63ffffffff1614610e3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f2164657374696e6174696f6e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001845160208087019190912060009081526009909152604090205460ff166002811115610e6357fe5b14610ecf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60085460ff16600114610f4357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f217265656e7472616e7400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600260096000610f9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616611e8c565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610fde57fe5b0217905550600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166001830163ffffffff161790556207c8305a101561108a57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f2167617300000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006110b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611ecb565b9050606073ffffffffffffffffffffffffffffffffffffffff82166207a1206111017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716611ede565b61112c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816611f0e565b61118161115a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a16611f3f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016611fb0565b604051602401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f56d5d47500000000000000000000000000000000000000000000000000000000178152905182519297509550859450925090508083835b602083106112c857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d806000811461132b576040519150601f19603f3d011682016040523d82523d6000602084013e611330565b606091505b509095509050846113f3578173ffffffffffffffffffffffffffffffffffffffff168363ffffffff167f16d8b729d8c09fdfd34c0cbac3feebd37ea7dbf51704e005df39179db55646fc836040518080602001828103825283818151815260200191508051906020019080838360005b838110156113b85781810151838201526020016113a0565b50505050905090810190601f1680156113e55780820380516001836020036101000a031916815260200191505b509250505060405180910390a35b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509092915050565b60045463ffffffff1681565b60015481565b60008181526007602052604081205480611458576000915050610940565b42101592915050565b60006106b160026119ae565b6002600054760100000000000000000000000000000000000000000000900460ff16600281111561149a57fe5b141561150757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b600061151360026119ae565b1115611595576115236002611ff4565b831461159057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420656e64206f6620717565756500000000000000000000000000000000604482015290519081900360640190fd5b611605565b826001541461160557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f742063757272656e74207570646174650000000000000000000000000000604482015290519081900360640190fd5b611610838383611a8f565b61167b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611683611b2f565b60055460008381526007602052604090204290910190556116a5600283612031565b5060045460408051602080825284518183015284518694889463ffffffff909116937f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2938893919283929083019185019080838360005b838110156117145781810151838201526020016116fc565b50505050905090810190601f1680156117415780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505050565b60008061176060026119ae565b156117885761176f60026119ee565b600081815260076020526040902054909250905061179d565b50506001546000818152600760205260409020545b9091565b600054610100900460ff16806117ba57506117ba61209e565b806117c8575060005460ff16155b61181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fa8602e913960400191505060405180910390fd5b600054610100900460ff1615801561188357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b61188c856120af565b6118966002612244565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805463ffffffff808a167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009283161790925586835560008781526007602052604090209290925560058590556006805491851691909216179055801561090d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b6207a12081565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106b16002611ff4565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166119e68282612289565b949350505050565b60006119f9826122a3565b15611a6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5080546fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b600080611a9a610a6b565b8585604051602001808481526020018381526020018281526020019350505050604051602081830303815290604052805190602001209050611adb816122d2565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff16611b078285612323565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b611b2f6123bd565b565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111611ba1576000818152600185016020526040902054831415611b99576001915050611ba7565b600101611b49565b50600090505b92915050565b8260005b6020811015611c5057600183821c166000858360208110611bce57fe5b602002015190508160011415611c145780846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209350611c46565b838160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093505b5050600101611bb1565b509392505050565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b80546000906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169116611d058282612289565b611d7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff8116600090815260018501602052604090205492508215611dc1576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b815160009060208401611e2164ffffffffff85168284612400565b95945050505050565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660246004612456565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660286004612456565b600080611e9883612477565b6bffffffffffffffffffffffff1690506000611eb38461248b565b6bffffffffffffffffffffffff169091209392505050565b600061093d611ed98361249f565b6124d0565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826004612456565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600460206124d3565b600061093d604c80611f727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861661248b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff9190911603600061267e565b6060600080611fbe8461248b565b6bffffffffffffffffffffffff1690506040519150819250611fe38483602001612704565b508181016020016040529052919050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b81546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009283900482166001019182169092029190911783558115611ba7576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b60006120a930612830565b15905090565b600054610100900460ff16806120c857506120c861209e565b806120d6575060005460ff16155b61212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fa8602e913960400191505060405180910390fd5b600054610100900460ff1615801561219157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff851602177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000179055801561224057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b80546fffffffffffffffffffffffffffffffff166122865780547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011781555b50565b60019103016fffffffffffffffffffffffffffffffff1690565b546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204161090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461239557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6123b386828585612836565b9695505050505050565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760200000000000000000000000000000000000000000000179055565b60008061240d8484612a24565b905060405181111561241d575060005b8061244b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610a5e565b611e21858585612a96565b60008160200360080260ff1661246d8585856124d3565b901c949350505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316602c60206124d3565b90565b600060ff82166124e557506000610a5e565b6124ee8461248b565b6bffffffffffffffffffffffff166125098460ff8516612a24565b11156125e85761254a61251b85612477565b6bffffffffffffffffffffffff166125328661248b565b6bffffffffffffffffffffffff16858560ff16612aa9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125ad578181015183820152602001612595565b50505050905090810190601f1680156125da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff161115612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180612ff8603a913960400191505060405180910390fd5b60088202600061265486612477565b6bffffffffffffffffffffffff169050600061266f83612c04565b91909501511695945050505050565b60008061268a86612477565b6bffffffffffffffffffffffff1690506126a386612c4d565b6126b7856126b18489612a24565b90612a24565b11156126e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009150506119e6565b6126f08186612a24565b90506123b38364ffffffffff168286612400565b600061270f83612c77565b612764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806130326028913960400191505060405180910390fd5b61276d83612c89565b6127c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061305a602b913960400191505060405180910390fd5b60006127cd8461248b565b6bffffffffffffffffffffffff16905060006127e885612477565b6bffffffffffffffffffffffff169050600060405190508481111561280d5760206060fd5b8285848460045afa506123b361282287612cc6565b64ffffffffff168685612a96565b3b151590565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156128b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612f656022913960400191505060405180910390fd5b8360ff16601b14806128c657508360ff16601c145b61291b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612fd66022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612977573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611e2157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b81810182811015611ba757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60606000612ab686612ccc565b9150506000612ac486612ccc565b9150506000612ad286612ccc565b9150506000612ae086612ccc565b915050838383836040516020018080613085603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a8201526050016021612f8782397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000612c588261248b565b612c6183612477565b016bffffffffffffffffffffffff169050919050565b6000612c8282612da0565b1592915050565b6000612c9482612cc6565b64ffffffffff1664ffffffffff1415612caf57506000610940565b6000612cba83612c4d565b60405110199392505050565b60d81c90565b600080601f5b600f8160ff161115612d345760ff600882021684901c612cf181612dc8565b61ffff16841793508160ff16601014612d0c57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612cd2565b50600f5b60ff8160ff161015612d9a5760ff600882021684901c612d5781612dc8565b61ffff16831792508160ff16600014612d7257601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612d38565b50915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b6000612dda60048360ff16901c612df8565b60ff161760081b62ffff0016612def82612df8565b60ff1617919050565b600060f08083179060ff82161415612e14576030915050610940565b8060ff1660f11415612e2a576031915050610940565b8060ff1660f21415612e40576032915050610940565b8060ff1660f31415612e56576033915050610940565b8060ff1660f41415612e6c576034915050610940565b8060ff1660f51415612e82576035915050610940565b8060ff1660f61415612e98576036915050610940565b8060ff1660f71415612eae576037915050610940565b8060ff1660f81415612ec4576038915050610940565b8060ff1660f91415612eda576039915050610940565b8060ff1660fa1415612ef0576061915050610940565b8060ff1660fb1415612f06576062915050610940565b8060ff1660fc1415612f1c576063915050610940565b8060ff1660fd1415612f32576064915050610940565b8060ff1660fe1415612f48576065915050610940565b8060ff1660ff1415612f5e576066915050610940565b5091905056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c75652e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c756554797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a2646970667358221220009482e63dc66494f352e0ef527cecd199275ad0d2104bd29a1e4665a7fbb33c64736f6c63430007060033"; + "0x60a060405234801561001057600080fd5b506040516131583803806131588339818101604052602081101561003357600080fd5b505160e081901b6001600160e01b03191660805263ffffffff166130ef61006960003980610d155280610d7c52506130ef6000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638d3638f4116100ee578063b31c01fb11610097578063c19d93fb11610071578063c19d93fb14610641578063d88beda214610649578063df034cd014610651578063f6d1610214610682576101a3565b8063b31c01fb14610519578063ba739a62146105cb578063bf30a55d146105ec576101a3565b80639fa6a6e3116100c85780639fa6a6e3146104ec578063a3f81d68146104f4578063ab91c7b014610511576101a3565b80638d3638f414610436578063928bc4b21461043e578063961681dc146104e4576101a3565b806339992668116101505780636188af0e1161012a5780636188af0e146103635780637022b58e1461041157806371bfb7b814610419576101a3565b8063399926681461033257806345630b1a1461033a578063456d067214610342576101a3565b80632bbd59ca116101815780632bbd59ca146102ad5780632bef2892146102eb578063371d307114610308576101a3565b806314cfabb3146101a857806319d9d21a146101c457806325e3beda14610293575b600080fd5b6101b061068a565b604080519115158252519081900360200190f35b610291600480360360a08110156101da57600080fd5b813591602081019181019060808101606082013564010000000081111561020057600080fd5b82018360208201111561021257600080fd5b8035906020019184600183028401116401000000008311171561023457600080fd5b91939092909160208101903564010000000081111561025257600080fd5b82018360208201111561026457600080fd5b8035906020019184600183028401116401000000008311171561028657600080fd5b5090925090506106b6565b005b61029b610915565b60408051918252519081900360200190f35b6102ca600480360360208110156102c357600080fd5b503561091b565b604051808260028111156102da57fe5b815260200191505060405180910390f35b6101b06004803603602081101561030157600080fd5b5035610930565b6101b0600480360361044081101561031f57600080fd5b5080359060208101906104200135610945565b61029b610a65565b61029b610a6b565b61034a610a80565b6040805163ffffffff9092168252519081900360200190f35b610291600480360361044081101561037a57600080fd5b81019060208101813564010000000081111561039557600080fd5b8201836020820111156103a757600080fd5b803590602001918460018302840111640100000000831117156103c957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955092935050506104008201359050610a8c565b610291610b18565b61029b6004803603602081101561042f57600080fd5b5035610d01565b61034a610d13565b6101b06004803603602081101561045457600080fd5b81019060208101813564010000000081111561046f57600080fd5b82018360208201111561048157600080fd5b803590602001918460018302840111640100000000831117156104a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610d37945050505050565b61034a611428565b61029b611434565b6101b06004803603602081101561050a57600080fd5b503561143a565b61029b611461565b6102916004803603606081101561052f57600080fd5b81359160208101359181019060608101604082013564010000000081111561055657600080fd5b82018360208201111561056857600080fd5b8035906020019184600183028401116401000000008311171561058a57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061146d945050505050565b6105d3611753565b6040805192835260208301919091528051918290030190f35b610291600480360360a081101561060257600080fd5b5063ffffffff813581169173ffffffffffffffffffffffffffffffffffffffff60208201351691604082013591606081013591608090910135166117a1565b6102ca611956565b61029b611979565b610659611980565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61029b6119a2565b600061069660026119ae565b158015906106b157506106b16106ac60026119ee565b61143a565b905090565b6002600054760100000000000000000000000000000000000000000000900460ff1660028111156106e357fe5b141561075057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b604080516020601f86018190048102820181019092528481526107929188918835918890889081908401838280828437600092019190915250611a8f92505050565b80156107e157506107e186866001602002013584848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611a8f92505050565b80156107f257508435602086013514155b1561090d576107ff611b27565b7f2c3f60bab4170347826231b75a920b5053941ddebc6eed6fd2c25721648b186f8686868686866040518087815260200186600260200280828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910182810360409081018252810186905290506020810160608201878780828437600083820152601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01690910184810383528581526020019050858580828437600083820152604051601f9091017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169092018290039a509098505050505050505050a15b505050505050565b613a9881565b60096020526000908152604090205460ff1681565b600061093d600283611b31565b90505b919050565b60008060008581526009602052604090205460ff16600281111561096557fe5b146109d157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f214d6573736167655374617475732e4e6f6e6500000000000000000000000000604482015290519081900360640190fd5b6000610a07858560208060200260405190810160405280929190826020800280828437600092019190915250879150611bad9050565b9050610a128161143a565b15610a58575050600083815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001908117909155610a5e565b60009150505b9392505050565b60055481565b6004546000906106b19063ffffffff16611c58565b60065463ffffffff1681565b610a9e83805190602001208383610945565b610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600660248201527f2170726f76650000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610b1283610d37565b50505050565b6002600054760100000000000000000000000000000000000000000000900460ff166002811115610b4557fe5b1415610bb257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b610bbc60026119ae565b610c2757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080610c3460026119ae565b90505b600081118015610c4f5750610c4f6106ac60026119ee565b15610c8757610c5e6002611ccd565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01610c37565b81610cf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f2174696d65000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610cfb611b2f565b50600155565b60076020526000908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600080610d448382611e06565b90506000610d737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316611e2a565b905063ffffffff7f000000000000000000000000000000000000000000000000000000000000000016610dc77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611e5b565b63ffffffff1614610e3957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f2164657374696e6174696f6e0000000000000000000000000000000000000000604482015290519081900360640190fd5b6001845160208087019190912060009081526009909152604090205460ff166002811115610e6357fe5b14610ecf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f2170656e64696e67000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60085460ff16600114610f4357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f217265656e7472616e7400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600260096000610f9c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008616611e8c565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001836002811115610fde57fe5b0217905550600680547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000166001830163ffffffff16179055620d32e85a101561108a57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048083019190915260248201527f2167617300000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60006110b77fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008416611ecb565b9050606073ffffffffffffffffffffffffffffffffffffffff8216620cf8506111017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008716611ede565b61112c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008816611f0e565b61118161115a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008a16611f3f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00000016611fb0565b604051602401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156111d35781810151838201526020016111bb565b50505050905090810190601f1680156112005780820380516001836020036101000a031916815260200191505b50604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f56d5d47500000000000000000000000000000000000000000000000000000000178152905182519297509550859450925090508083835b602083106112c857805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161128b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038160008787f1925050503d806000811461132b576040519150601f19603f3d011682016040523d82523d6000602084013e611330565b606091505b509095509050846113f3578173ffffffffffffffffffffffffffffffffffffffff168363ffffffff167f16d8b729d8c09fdfd34c0cbac3feebd37ea7dbf51704e005df39179db55646fc836040518080602001828103825283818151815260200191508051906020019080838360005b838110156113b85781810151838201526020016113a0565b50505050905090810190601f1680156113e55780820380516001836020036101000a031916815260200191505b509250505060405180910390a35b5050600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509092915050565b60045463ffffffff1681565b60015481565b60008181526007602052604081205480611458576000915050610940565b42101592915050565b60006106b160026119ae565b6002600054760100000000000000000000000000000000000000000000900460ff16600281111561149a57fe5b141561150757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6661696c65642073746174650000000000000000000000000000000000000000604482015290519081900360640190fd5b600061151360026119ae565b1115611595576115236002611ff4565b831461159057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f6e6f7420656e64206f6620717565756500000000000000000000000000000000604482015290519081900360640190fd5b611605565b826001541461160557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6e6f742063757272656e74207570646174650000000000000000000000000000604482015290519081900360640190fd5b611610838383611a8f565b61167b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f6261642073696700000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b611683611b2f565b60055460008381526007602052604090204290910190556116a5600283612031565b5060045460408051602080825284518183015284518694889463ffffffff909116937f608828ad904a0c9250c09004ba7226efb08f35a5c815bb3f76b5a8a271cd08b2938893919283929083019185019080838360005b838110156117145781810151838201526020016116fc565b50505050905090810190601f1680156117415780820380516001836020036101000a031916815260200191505b509250505060405180910390a4505050565b60008061176060026119ae565b156117885761176f60026119ee565b600081815260076020526040902054909250905061179d565b50506001546000818152600760205260409020545b9091565b600054610100900460ff16806117ba57506117ba61209e565b806117c8575060005460ff16155b61181d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fa8602e913960400191505060405180910390fd5b600054610100900460ff1615801561188357600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b61188c856120af565b6118966002612244565b600880547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660019081179091556004805463ffffffff808a167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000009283161790925586835560008781526007602052604090209290925560058590556006805491851691909216179055801561090d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055505050505050565b600054760100000000000000000000000000000000000000000000900460ff1681565b620cf85081565b60005462010000900473ffffffffffffffffffffffffffffffffffffffff1681565b60006106b16002611ff4565b80546000906fffffffffffffffffffffffffffffffff7001000000000000000000000000000000008204811691166119e68282612289565b949350505050565b60006119f9826122a3565b15611a6557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b5080546fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b600080611a9a610a6b565b8585604051602001808481526020018381526020018281526020019350505050604051602081830303815290604052805190602001209050611adb816122d2565b60005490915062010000900473ffffffffffffffffffffffffffffffffffffffff16611b078285612323565b73ffffffffffffffffffffffffffffffffffffffff161495945050505050565b611b2f6123bd565b565b81546000906fffffffffffffffffffffffffffffffff165b835470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff168111611ba1576000818152600185016020526040902054831415611b99576001915050611ba7565b600101611b49565b50600090505b92915050565b8260005b6020811015611c5057600183821c166000858360208110611bce57fe5b602002015190508160011415611c145780846040516020018083815260200182815260200192505050604051602081830303815290604052805190602001209350611c46565b838160405160200180838152602001828152602001925050506040516020818303038152906040528051906020012093505b5050600101611bb1565b509392505050565b6040805160e09290921b7fffffffff00000000000000000000000000000000000000000000000000000000166020808401919091527f4f5054494353000000000000000000000000000000000000000000000000000060248401528151808403600a018152602a909301909152815191012090565b80546000906fffffffffffffffffffffffffffffffff700100000000000000000000000000000000820481169116611d058282612289565b611d7057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f456d707479000000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6fffffffffffffffffffffffffffffffff8116600090815260018501602052604090205492508215611dc1576fffffffffffffffffffffffffffffffff811660009081526001850160205260408120555b83547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001919091016fffffffffffffffffffffffffffffffff1617909255919050565b815160009060208401611e2164ffffffffff85168284612400565b95945050505050565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660246004612456565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660286004612456565b600080611e9883612477565b6bffffffffffffffffffffffff1690506000611eb38461248b565b6bffffffffffffffffffffffff169091209392505050565b600061093d611ed98361249f565b6124d0565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316826004612456565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316600460206124d3565b600061093d604c80611f727fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861661248b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000861692916bffffffffffffffffffffffff9190911603600061267e565b6060600080611fbe8461248b565b6bffffffffffffffffffffffff1690506040519150819250611fe38483602001612704565b508181016020016040529052919050565b805470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff1660009081526001909101602052604090205490565b81546fffffffffffffffffffffffffffffffff8082167001000000000000000000000000000000009283900482166001019182169092029190911783558115611ba7576fffffffffffffffffffffffffffffffff8116600090815260019390930160205260409092205590565b60006120a930612830565b15905090565b600054610100900460ff16806120c857506120c861209e565b806120d6575060005460ff16155b61212b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180612fa8602e913960400191505060405180910390fd5b600054610100900460ff1615801561219157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff909116610100171660011790555b600080547fffffffffffffffffffff0000000000000000000000000000000000000000ffff166201000073ffffffffffffffffffffffffffffffffffffffff851602177fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760100000000000000000000000000000000000000000000179055801561224057600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1690555b5050565b80546fffffffffffffffffffffffffffffffff166122865780547fffffffffffffffffffffffffffffffff000000000000000000000000000000001660011781555b50565b60019103016fffffffffffffffffffffffffffffffff1690565b546fffffffffffffffffffffffffffffffff808216700100000000000000000000000000000000909204161090565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461239557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a6123b386828585612836565b9695505050505050565b600080547fffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffff16760200000000000000000000000000000000000000000000179055565b60008061240d8484612a24565b905060405181111561241d575060005b8061244b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610a5e565b611e21858585612a96565b60008160200360080260ff1661246d8585856124d3565b901c949350505050565b60781c6bffffffffffffffffffffffff1690565b60181c6bffffffffffffffffffffffff1690565b600061093d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316602c60206124d3565b90565b600060ff82166124e557506000610a5e565b6124ee8461248b565b6bffffffffffffffffffffffff166125098460ff8516612a24565b11156125e85761254a61251b85612477565b6bffffffffffffffffffffffff166125328661248b565b6bffffffffffffffffffffffff16858560ff16612aa9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156125ad578181015183820152602001612595565b50505050905090810190601f1680156125da5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff161115612645576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180612ff8603a913960400191505060405180910390fd5b60088202600061265486612477565b6bffffffffffffffffffffffff169050600061266f83612c04565b91909501511695945050505050565b60008061268a86612477565b6bffffffffffffffffffffffff1690506126a386612c4d565b6126b7856126b18489612a24565b90612a24565b11156126e6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009150506119e6565b6126f08186612a24565b90506123b38364ffffffffff168286612400565b600061270f83612c77565b612764576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001806130326028913960400191505060405180910390fd5b61276d83612c89565b6127c2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b81526020018061305a602b913960400191505060405180910390fd5b60006127cd8461248b565b6bffffffffffffffffffffffff16905060006127e885612477565b6bffffffffffffffffffffffff169050600060405190508481111561280d5760206060fd5b8285848460045afa506123b361282287612cc6565b64ffffffffff168685612a96565b3b151590565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156128b1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612f656022913960400191505060405180910390fd5b8360ff16601b14806128c657508360ff16601c145b61291b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612fd66022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612977573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116611e2157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b81810182811015611ba757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60606000612ab686612ccc565b9150506000612ac486612ccc565b9150506000612ad286612ccc565b9150506000612ae086612ccc565b915050838383836040516020018080613085603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a8201526050016021612f8782397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b6000612c588261248b565b612c6183612477565b016bffffffffffffffffffffffff169050919050565b6000612c8282612da0565b1592915050565b6000612c9482612cc6565b64ffffffffff1664ffffffffff1415612caf57506000610940565b6000612cba83612c4d565b60405110199392505050565b60d81c90565b600080601f5b600f8160ff161115612d345760ff600882021684901c612cf181612dc8565b61ffff16841793508160ff16601014612d0c57601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612cd2565b50600f5b60ff8160ff161015612d9a5760ff600882021684901c612d5781612dc8565b61ffff16831792508160ff16600014612d7257601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01612d38565b50915091565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000009081161490565b6000612dda60048360ff16901c612df8565b60ff161760081b62ffff0016612def82612df8565b60ff1617919050565b600060f08083179060ff82161415612e14576030915050610940565b8060ff1660f11415612e2a576031915050610940565b8060ff1660f21415612e40576032915050610940565b8060ff1660f31415612e56576033915050610940565b8060ff1660f41415612e6c576034915050610940565b8060ff1660f51415612e82576035915050610940565b8060ff1660f61415612e98576036915050610940565b8060ff1660f71415612eae576037915050610940565b8060ff1660f81415612ec4576038915050610940565b8060ff1660f91415612eda576039915050610940565b8060ff1660fa1415612ef0576061915050610940565b8060ff1660fb1415612f06576062915050610940565b8060ff1660fc1415612f1c576063915050610940565b8060ff1660fd1415612f32576064915050610940565b8060ff1660fe1415612f48576065915050610940565b8060ff1660ff1415612f5e576066915050610940565b5091905056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c75652e20417474656d7074656420746f20696e646578206174206f6666736574203078496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a656445434453413a20696e76616c6964207369676e6174757265202776272076616c756554797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f636f7079546f202d204e756c6c20706f696e74657220646572656654797065644d656d566965772f636f7079546f202d20496e76616c696420706f696e74657220646572656654797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a26469706673582212202c21f99fd3b9c839cc25d84cd9bebcf922b9964b1f00c8b3d4443d8c7f98415d64736f6c63430007060033"; export class Replica__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-xapps/factories/RouterTemplate__factory.ts b/typescript/typechain/optics-xapps/factories/RouterTemplate__factory.ts index 616e4fe9b..e3dcd6216 100644 --- a/typescript/typechain/optics-xapps/factories/RouterTemplate__factory.ts +++ b/typescript/typechain/optics-xapps/factories/RouterTemplate__factory.ts @@ -174,7 +174,7 @@ const _abi = [ ]; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200191638038062001916833981810160405260208110156200003757600080fd5b505162000044816200004b565b50620003ac565b600054610100900460ff1680620000675750620000676200011b565b8062000076575060005460ff16155b620000b35760405162461bcd60e51b815260040180806020018281038252602e815260200180620018e8602e913960400191505060405180910390fd5b600054610100900460ff16158015620000df576000805460ff1961ff0019909116610100171660011790555b606580546001600160a01b0319166001600160a01b0384161790556200010462000139565b801562000117576000805461ff00191690555b5050565b60006200013330620001f760201b620009911760201c565b15905090565b600054610100900460ff1680620001555750620001556200011b565b8062000164575060005460ff16155b620001a15760405162461bcd60e51b815260040180806020018281038252602e815260200180620018e8602e913960400191505060405180910390fd5b600054610100900460ff16158015620001cd576000805460ff1961ff0019909116610100171660011790555b620001d7620001fd565b620001e1620002a5565b8015620001f4576000805461ff00191690555b50565b3b151590565b600054610100900460ff1680620002195750620002196200011b565b8062000228575060005460ff16155b620002655760405162461bcd60e51b815260040180806020018281038252602e815260200180620018e8602e913960400191505060405180910390fd5b600054610100900460ff16158015620001e1576000805460ff1961ff0019909116610100171660011790558015620001f4576000805461ff001916905550565b600054610100900460ff1680620002c15750620002c16200011b565b80620002d0575060005460ff16155b6200030d5760405162461bcd60e51b815260040180806020018281038252602e815260200180620018e8602e913960400191505060405180910390fd5b600054610100900460ff1615801562000339576000805460ff1961ff0019909116610100171660011790555b600062000345620003a8565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015620001f4576000805461ff001916905550565b3390565b61152c80620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063715018a61161005b578063715018a6146101d45780638da5cb5b146101dc578063b49c53a7146101e4578063f2fde38b1461020d57610088565b80631984a3301461008d5780633339df96146100b857806341bdc8b5146100e957806356d5d4751461011c575b600080fd5b6100b6600480360360408110156100a357600080fd5b5063ffffffff8135169060200135610240565b005b6100c061034a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b6600480360360208110156100ff57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610366565b6100b66004803603606081101561013257600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561015f57600080fd5b82018360208201111561017157600080fd5b8035906020019184600183028401116401000000008311171561019357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610455945050505050565b6100b66105fb565b6100c0610712565b6100b6600480360360408110156101fa57600080fd5b5063ffffffff813516906020013561072e565b6100b66004803603602081101561022357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ef565b600061024b8361099b565b9050600061025883610a1d565b9050610262610a62565b73ffffffffffffffffffffffffffffffffffffffff1663d34686398584846040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102de5781810151838201526020016102c6565b50505050905090810190601f16801561030b5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561032c57600080fd5b505af1158015610340573d6000803e3d6000fd5b5050505050505050565b60655473ffffffffffffffffffffffffffffffffffffffff1681565b61036e610afe565b73ffffffffffffffffffffffffffffffffffffffff1661038c610712565b73ffffffffffffffffffffffffffffffffffffffff161461040e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61045e33610b02565b6104c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f217265706c696361000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b82826104d58282610bab565b61054057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f746520726f75746572000000000000000000000000000000000000604482015290519081900360640190fd5b600061054c8482610bca565b90506105797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216610bee565b1561058c5761058781610c0d565b6105f3565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f2176616c696420616374696f6e00000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b610603610afe565b73ffffffffffffffffffffffffffffffffffffffff16610621610712565b73ffffffffffffffffffffffffffffffffffffffff16146106a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b610736610afe565b73ffffffffffffffffffffffffffffffffffffffff16610754610712565b73ffffffffffffffffffffffffffffffffffffffff16146107d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b63ffffffff909116600090815260666020526040902055565b6107f7610afe565b73ffffffffffffffffffffffffffffffffffffffff16610815610712565b73ffffffffffffffffffffffffffffffffffffffff161461089757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806114136026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803b15155b919050565b63ffffffff81166000908152606660205260409020548061099657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f2172656d6f746500000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080517f0100000000000000000000000000000000000000000000000000000000000000602082015260218082019390935281518082039093018352604101905290565b606554604080517f9fa92f9d000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691639fa92f9d916004808301926020929190829003018186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d6020811015610af757600080fd5b5051905090565b3390565b606554604080517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000939290921691635190bc5391602480820192602092909190829003018186803b158015610b7957600080fd5b505afa158015610b8d573d6000803e3d6000fd5b505050506040513d6020811015610ba357600080fd5b505192915050565b63ffffffff821660009081526066602052604090205481145b92915050565b815160009060208401610be564ffffffffff85168284610c75565b95945050505050565b60006001610bfb83610cd6565b6001811115610c0657fe5b1492915050565b6000610c3a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316610d11565b6040805182815290519192507f2b51a16951b17b51a53e06c3041d704232f26354acf317a5b7bfeab23f4ca629919081900360200190a15050565b600080610c828484610da0565b9050604051811115610c92575060005b80610cc0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610ccf565b610ccb858585610e12565b9150505b9392505050565b6000610d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316610e25565b60ff166001811115610bc457fe5b6000610d1c82610bee565b610d71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611439602e913960400191505060405180910390fd5b610bc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660006020610e2b565b81810182811015610bc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60d81c90565b600060ff8216610e3d57506000610ccf565b610e4684610fd6565b6bffffffffffffffffffffffff16610e618460ff8516610da0565b1115610f4057610ea2610e7385610fea565b6bffffffffffffffffffffffff16610e8a86610fd6565b6bffffffffffffffffffffffff16858560ff16610ffe565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f05578181015183820152602001610eed565b50505050905090810190601f168015610f325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff161115610f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611488603a913960400191505060405180910390fd5b600882026000610fac86610fea565b6bffffffffffffffffffffffff1690506000610fc783611159565b91909501511695945050505050565b60181c6bffffffffffffffffffffffff1690565b60781c6bffffffffffffffffffffffff1690565b6060600061100b866111a2565b9150506000611019866111a2565b9150506000611027866111a2565b9150506000611035866111a2565b9150508383838360405160200180806114c2603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161146782397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600080601f5b600f8160ff16111561120a5760ff600882021684901c6111c781611276565b61ffff16841793508160ff166010146111e257601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016111a8565b50600f5b60ff8160ff1610156112705760ff600882021684901c61122d81611276565b61ffff16831792508160ff1660001461124857601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161120e565b50915091565b600061128860048360ff16901c6112a6565b60ff161760081b62ffff001661129d826112a6565b60ff1617919050565b600060f08083179060ff821614156112c2576030915050610996565b8060ff1660f114156112d8576031915050610996565b8060ff1660f214156112ee576032915050610996565b8060ff1660f31415611304576033915050610996565b8060ff1660f4141561131a576034915050610996565b8060ff1660f51415611330576035915050610996565b8060ff1660f61415611346576036915050610996565b8060ff1660f7141561135c576037915050610996565b8060ff1660f81415611372576038915050610996565b8060ff1660f91415611388576039915050610996565b8060ff1660fa141561139e576061915050610996565b8060ff1660fb14156113b4576062915050610996565b8060ff1660fc14156113ca576063915050610996565b8060ff1660fd14156113e0576064915050610996565b8060ff1660fe14156113f6576065915050610996565b8060ff1660ff141561140c576066915050610996565b5091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d65737361676554656d706c6174652f6e756d6265723a2076696577206d757374206265206f66207479706520412e20417474656d7074656420746f20696e646578206174206f666673657420307854797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a264697066735822122080cd0754924e90a95d88179a5b7da457d6f273c38769804b46a4ee939c63316364736f6c63430007060033496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564"; + "0x60806040523480156200001157600080fd5b506040516200191638038062001916833981810160405260208110156200003757600080fd5b505162000044816200004b565b50620003ac565b600054610100900460ff1680620000675750620000676200011b565b8062000076575060005460ff16155b620000b35760405162461bcd60e51b815260040180806020018281038252602e815260200180620018e8602e913960400191505060405180910390fd5b600054610100900460ff16158015620000df576000805460ff1961ff0019909116610100171660011790555b606580546001600160a01b0319166001600160a01b0384161790556200010462000139565b801562000117576000805461ff00191690555b5050565b60006200013330620001f760201b620009911760201c565b15905090565b600054610100900460ff1680620001555750620001556200011b565b8062000164575060005460ff16155b620001a15760405162461bcd60e51b815260040180806020018281038252602e815260200180620018e8602e913960400191505060405180910390fd5b600054610100900460ff16158015620001cd576000805460ff1961ff0019909116610100171660011790555b620001d7620001fd565b620001e1620002a5565b8015620001f4576000805461ff00191690555b50565b3b151590565b600054610100900460ff1680620002195750620002196200011b565b8062000228575060005460ff16155b620002655760405162461bcd60e51b815260040180806020018281038252602e815260200180620018e8602e913960400191505060405180910390fd5b600054610100900460ff16158015620001e1576000805460ff1961ff0019909116610100171660011790558015620001f4576000805461ff001916905550565b600054610100900460ff1680620002c15750620002c16200011b565b80620002d0575060005460ff16155b6200030d5760405162461bcd60e51b815260040180806020018281038252602e815260200180620018e8602e913960400191505060405180910390fd5b600054610100900460ff1615801562000339576000805460ff1961ff0019909116610100171660011790555b600062000345620003a8565b603380546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508015620001f4576000805461ff001916905550565b3390565b61152c80620003bc6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063715018a61161005b578063715018a6146101d45780638da5cb5b146101dc578063b49c53a7146101e4578063f2fde38b1461020d57610088565b80631984a3301461008d5780633339df96146100b857806341bdc8b5146100e957806356d5d4751461011c575b600080fd5b6100b6600480360360408110156100a357600080fd5b5063ffffffff8135169060200135610240565b005b6100c061034a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100b6600480360360208110156100ff57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610366565b6100b66004803603606081101561013257600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561015f57600080fd5b82018360208201111561017157600080fd5b8035906020019184600183028401116401000000008311171561019357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610455945050505050565b6100b66105fb565b6100c0610712565b6100b6600480360360408110156101fa57600080fd5b5063ffffffff813516906020013561072e565b6100b66004803603602081101561022357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107ef565b600061024b8361099b565b9050600061025883610a1d565b9050610262610a62565b73ffffffffffffffffffffffffffffffffffffffff1663d34686398584846040518463ffffffff1660e01b8152600401808463ffffffff16815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156102de5781810151838201526020016102c6565b50505050905090810190601f16801561030b5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15801561032c57600080fd5b505af1158015610340573d6000803e3d6000fd5b5050505050505050565b60655473ffffffffffffffffffffffffffffffffffffffff1681565b61036e610afe565b73ffffffffffffffffffffffffffffffffffffffff1661038c610712565b73ffffffffffffffffffffffffffffffffffffffff161461040e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b606580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b61045e33610b02565b6104c957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f217265706c696361000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b82826104d58282610bab565b61054057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2172656d6f746520726f75746572000000000000000000000000000000000000604482015290519081900360640190fd5b600061054c8482610bca565b90506105797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008216610bee565b1561058c5761058781610c0d565b6105f3565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f2176616c696420616374696f6e00000000000000000000000000000000000000604482015290519081900360640190fd5b505050505050565b610603610afe565b73ffffffffffffffffffffffffffffffffffffffff16610621610712565b73ffffffffffffffffffffffffffffffffffffffff16146106a357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60335460405160009173ffffffffffffffffffffffffffffffffffffffff16907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3603380547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60335473ffffffffffffffffffffffffffffffffffffffff1690565b610736610afe565b73ffffffffffffffffffffffffffffffffffffffff16610754610712565b73ffffffffffffffffffffffffffffffffffffffff16146107d657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b63ffffffff909116600090815260666020526040902055565b6107f7610afe565b73ffffffffffffffffffffffffffffffffffffffff16610815610712565b73ffffffffffffffffffffffffffffffffffffffff161461089757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806114136026913960400191505060405180910390fd5b60335460405173ffffffffffffffffffffffffffffffffffffffff8084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3603380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b803b15155b919050565b63ffffffff81166000908152606660205260409020548061099657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f2172656d6f746500000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b604080517f0100000000000000000000000000000000000000000000000000000000000000602082015260218082019390935281518082039093018352604101905290565b606554604080517f9fa92f9d000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691639fa92f9d916004808301926020929190829003018186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d6020811015610af757600080fd5b5051905090565b3390565b606554604080517f5190bc5300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000939290921691635190bc5391602480820192602092909190829003018186803b158015610b7957600080fd5b505afa158015610b8d573d6000803e3d6000fd5b505050506040513d6020811015610ba357600080fd5b505192915050565b63ffffffff821660009081526066602052604090205481145b92915050565b815160009060208401610be564ffffffffff85168284610c75565b95945050505050565b60006001610bfb83610cd6565b6001811115610c0657fe5b1492915050565b6000610c3a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316610d11565b6040805182815290519192507f2b51a16951b17b51a53e06c3041d704232f26354acf317a5b7bfeab23f4ca629919081900360200190a15050565b600080610c828484610da0565b9050604051811115610c92575060005b80610cc0577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000915050610ccf565b610ccb858585610e12565b9150505b9392505050565b6000610d037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000008316610e25565b60ff166001811115610bc457fe5b6000610d1c82610bee565b610d71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611439602e913960400191505060405180910390fd5b610bc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000831660006020610e2b565b81810182811015610bc457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4f766572666c6f7720647572696e67206164646974696f6e2e00000000000000604482015290519081900360640190fd5b606092831b9190911790911b1760181b90565b60d81c90565b600060ff8216610e3d57506000610ccf565b610e4684610fd6565b6bffffffffffffffffffffffff16610e618460ff8516610da0565b1115610f4057610ea2610e7385610fea565b6bffffffffffffffffffffffff16610e8a86610fd6565b6bffffffffffffffffffffffff16858560ff16610ffe565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610f05578181015183820152602001610eed565b50505050905090810190601f168015610f325780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60208260ff161115610f9d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180611488603a913960400191505060405180910390fd5b600882026000610fac86610fea565b6bffffffffffffffffffffffff1690506000610fc783611159565b91909501511695945050505050565b60181c6bffffffffffffffffffffffff1690565b60781c6bffffffffffffffffffffffff1690565b6060600061100b866111a2565b9150506000611019866111a2565b9150506000611027866111a2565b9150506000611035866111a2565b9150508383838360405160200180806114c2603591397fffffffffffff000000000000000000000000000000000000000000000000000060d087811b821660358401527f2077697468206c656e6774682030780000000000000000000000000000000000603b84015286901b16604a820152605001602161146782397fffffffffffff000000000000000000000000000000000000000000000000000060d094851b811660218301527f2077697468206c656e677468203078000000000000000000000000000000000060278301529290931b9091166036830152507f2e00000000000000000000000000000000000000000000000000000000000000603c82015260408051601d818403018152603d90920190529b9a5050505050505050505050565b7f80000000000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9091011d90565b600080601f5b600f8160ff16111561120a5760ff600882021684901c6111c781611276565b61ffff16841793508160ff166010146111e257601084901b93505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016111a8565b50600f5b60ff8160ff1610156112705760ff600882021684901c61122d81611276565b61ffff16831792508160ff1660001461124857601083901b92505b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0161120e565b50915091565b600061128860048360ff16901c6112a6565b60ff161760081b62ffff001661129d826112a6565b60ff1617919050565b600060f08083179060ff821614156112c2576030915050610996565b8060ff1660f114156112d8576031915050610996565b8060ff1660f214156112ee576032915050610996565b8060ff1660f31415611304576033915050610996565b8060ff1660f4141561131a576034915050610996565b8060ff1660f51415611330576035915050610996565b8060ff1660f61415611346576036915050610996565b8060ff1660f7141561135c576037915050610996565b8060ff1660f81415611372576038915050610996565b8060ff1660f91415611388576039915050610996565b8060ff1660fa141561139e576061915050610996565b8060ff1660fb14156113b4576062915050610996565b8060ff1660fc14156113ca576063915050610996565b8060ff1660fd14156113e0576064915050610996565b8060ff1660fe14156113f6576065915050610996565b8060ff1660ff141561140c576066915050610996565b5091905056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734d65737361676554656d706c6174652f6e756d6265723a2076696577206d757374206265206f66207479706520412e20417474656d7074656420746f20696e646578206174206f666673657420307854797065644d656d566965772f696e646578202d20417474656d7074656420746f20696e646578206d6f7265207468616e20333220627974657354797065644d656d566965772f696e646578202d204f76657272616e2074686520766965772e20536c696365206973206174203078a264697066735822122031bdbcbdfd368c078dc0c8039a712d03b2e979c037dbc3ee0ef0d5487120193c64736f6c63430007060033496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564"; export class RouterTemplate__factory extends ContractFactory { constructor(signer?: Signer) { diff --git a/typescript/typechain/optics-xapps/factories/XAppConnectionManager__factory.ts b/typescript/typechain/optics-xapps/factories/XAppConnectionManager__factory.ts index b245c3173..7488ef31a 100644 --- a/typescript/typechain/optics-xapps/factories/XAppConnectionManager__factory.ts +++ b/typescript/typechain/optics-xapps/factories/XAppConnectionManager__factory.ts @@ -349,7 +349,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6114fd8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063b9cff16211610066578063b9cff162146102f7578063e0e7a9131461031a578063f2fde38b146103d2578063f31faefb14610405576100f5565b80638da5cb5b146102445780638f5d90e014610275578063916c3470146102a85780639fa92f9d146102ef576100f5565b80635f8b1dba116100d35780635f8b1dba146101b35780636ef0f37f146101ff578063715018a6146102345780638d3638f41461023c576100f5565b80632f54bf6e146100fa578063427ebef5146101415780635190bc5314610180575b600080fd5b61012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610444565b604080519115158252519081900360200190f35b61012d6004803603604081101561015757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610483565b61012d6004803603602081101561019657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104c3565b6101e6600480360360208110156101c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f3565b6040805163ffffffff9092168252519081900360200190f35b6102326004803603602081101561021557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661050b565b005b6102326105fa565b6101e6610711565b61024c6107ad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102326004803603602081101561028b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c9565b610232600480360360608110156102be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169063ffffffff6020820135169060400135151561087d565b61024c6109cb565b61024c6004803603602081101561030d57600080fd5b503563ffffffff166109e7565b6102326004803603606081101561033057600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561035d57600080fd5b82018360208201111561036f57600080fd5b8035906020019184600183028401116401000000008311171561039157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0f945050505050565b610232600480360360208110156103e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c88565b6102326004803603604081101561041b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610e29565b600061044e6107ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832063ffffffff8516845290915290205460ff1692915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205463ffffffff16151590565b60016020526000908152604090205463ffffffff1681565b610513610f9d565b73ffffffffffffffffffffffffffffffffffffffff166105316107ad565b73ffffffffffffffffffffffffffffffffffffffff16146105b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610602610f9d565b73ffffffffffffffffffffffffffffffffffffffff166106206107ad565b73ffffffffffffffffffffffffffffffffffffffff16146106a257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600354604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801561077c57600080fd5b505afa158015610790573d6000803e3d6000fd5b505050506040513d60208110156107a657600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107d1610f9d565b73ffffffffffffffffffffffffffffffffffffffff166107ef6107ad565b73ffffffffffffffffffffffffffffffffffffffff161461087157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61087a81610fa1565b50565b610885610f9d565b73ffffffffffffffffffffffffffffffffffffffff166108a36107ad565b73ffffffffffffffffffffffffffffffffffffffff161461092557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604080832063ffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815194855291840191909152805191927f517de16b526853f481451c5151e87484e1b251ec7d0302efa1019c2ece179c2c929081900390910190a2505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b63ffffffff831660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610aa757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f217265706c696361206578697374730000000000000000000000000000000000604482015290519081900360640190fd5b610ab083611069565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663df034cd06040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0c57600080fd5b505afa158015610b20573d6000803e3d6000fd5b505050506040513d6020811015610b3657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610bba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f2163757272656e74207570646174657200000000000000000000000000000000604482015290519081900360640190fd5b6000610bd085610bc98461106c565b8686611085565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832063ffffffff8a16845290915290205490915060ff16610c7857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2176616c69642077617463686572000000000000000000000000000000000000604482015290519081900360640190fd5b610c8182610fa1565b5050505050565b610c90610f9d565b73ffffffffffffffffffffffffffffffffffffffff16610cae6107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d3057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061145e6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610e31610f9d565b73ffffffffffffffffffffffffffffffffffffffff16610e4f6107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610ed157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610eda82610fa1565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8716908117909155808452600283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168517905580519384525191927f8440df9bf8a8542634a9eb196da1735b786ed9aa2fc12b080ac34c5fa81a9234929081900390910190a25050565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600160208181526040808420805463ffffffff168086526002845282862080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559486905292825282547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690925581519384529051919283927fce1533133fb359ace801d3176bbad25ace030d714aed35e38a6293c8a60b115b929181900390910190a25050565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60008061109185611069565b73ffffffffffffffffffffffffffffffffffffffff166345630b1a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d657600080fd5b505afa1580156110ea573d6000803e3d6000fd5b505050506040513d602081101561110057600080fd5b50516040805160208181018490527fffffffff0000000000000000000000000000000000000000000000000000000060e08b901b1682840152604480830189905283518084039091018152606490920190925280519101209091506111648161117b565b905061117081856111cc565b979650505050505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461123e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61125c86828585611266565b9695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114846022913960400191505060405180910390fd5b8360ff16601b14806112f657508360ff16601c145b61134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114a66022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661145457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565a2646970667358221220db9adde11ceb0faca1d879db930b3608e085a75f8e6a39c67b0ef89eca74b6ec64736f6c63430007060033"; + "0x608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b6114fd8061007d6000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063b9cff16211610066578063b9cff162146102f7578063e0e7a9131461031a578063f2fde38b146103d2578063f31faefb14610405576100f5565b80638da5cb5b146102445780638f5d90e014610275578063916c3470146102a85780639fa92f9d146102ef576100f5565b80635f8b1dba116100d35780635f8b1dba146101b35780636ef0f37f146101ff578063715018a6146102345780638d3638f41461023c576100f5565b80632f54bf6e146100fa578063427ebef5146101415780635190bc5314610180575b600080fd5b61012d6004803603602081101561011057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610444565b604080519115158252519081900360200190f35b61012d6004803603604081101561015757600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610483565b61012d6004803603602081101561019657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104c3565b6101e6600480360360208110156101c957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104f3565b6040805163ffffffff9092168252519081900360200190f35b6102326004803603602081101561021557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661050b565b005b6102326105fa565b6101e6610711565b61024c6107ad565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6102326004803603602081101561028b57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166107c9565b610232600480360360608110156102be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169063ffffffff6020820135169060400135151561087d565b61024c6109cb565b61024c6004803603602081101561030d57600080fd5b503563ffffffff166109e7565b6102326004803603606081101561033057600080fd5b63ffffffff8235169160208101359181019060608101604082013564010000000081111561035d57600080fd5b82018360208201111561036f57600080fd5b8035906020019184600183028401116401000000008311171561039157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a0f945050505050565b610232600480360360208110156103e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610c88565b6102326004803603604081101561041b57600080fd5b50803573ffffffffffffffffffffffffffffffffffffffff16906020013563ffffffff16610e29565b600061044e6107ad565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020908152604080832063ffffffff8516845290915290205460ff1692915050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001602052604090205463ffffffff16151590565b60016020526000908152604090205463ffffffff1681565b610513610f9d565b73ffffffffffffffffffffffffffffffffffffffff166105316107ad565b73ffffffffffffffffffffffffffffffffffffffff16146105b357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600380547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610602610f9d565b73ffffffffffffffffffffffffffffffffffffffff166106206107ad565b73ffffffffffffffffffffffffffffffffffffffff16146106a257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b600354604080517f8d3638f4000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff1691638d3638f4916004808301926020929190829003018186803b15801561077c57600080fd5b505afa158015610790573d6000803e3d6000fd5b505050506040513d60208110156107a657600080fd5b5051905090565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6107d1610f9d565b73ffffffffffffffffffffffffffffffffffffffff166107ef6107ad565b73ffffffffffffffffffffffffffffffffffffffff161461087157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b61087a81610fa1565b50565b610885610f9d565b73ffffffffffffffffffffffffffffffffffffffff166108a36107ad565b73ffffffffffffffffffffffffffffffffffffffff161461092557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260046020908152604080832063ffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155815194855291840191909152805191927f517de16b526853f481451c5151e87484e1b251ec7d0302efa1019c2ece179c2c929081900390910190a2505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b63ffffffff831660009081526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610aa757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f217265706c696361206578697374730000000000000000000000000000000000604482015290519081900360640190fd5b610ab083611069565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1663df034cd06040518163ffffffff1660e01b815260040160206040518083038186803b158015610b0c57600080fd5b505afa158015610b20573d6000803e3d6000fd5b505050506040513d6020811015610b3657600080fd5b505173ffffffffffffffffffffffffffffffffffffffff1614610bba57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f2163757272656e74207570646174657200000000000000000000000000000000604482015290519081900360640190fd5b6000610bd085610bc98461106c565b8686611085565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260046020908152604080832063ffffffff8a16845290915290205490915060ff16610c7857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f2176616c69642077617463686572000000000000000000000000000000000000604482015290519081900360640190fd5b610c8182610fa1565b5050505050565b610c90610f9d565b73ffffffffffffffffffffffffffffffffffffffff16610cae6107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610d3057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8116610d9c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061145e6026913960400191505060405180910390fd5b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610e31610f9d565b73ffffffffffffffffffffffffffffffffffffffff16610e4f6107ad565b73ffffffffffffffffffffffffffffffffffffffff1614610ed157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b610eda82610fa1565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260016020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff8716908117909155808452600283529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168517905580519384525191927f8440df9bf8a8542634a9eb196da1735b786ed9aa2fc12b080ac34c5fa81a9234929081900390910190a25050565b3390565b73ffffffffffffffffffffffffffffffffffffffff81166000818152600160208181526040808420805463ffffffff168086526002845282862080547fffffffffffffffffffffffff00000000000000000000000000000000000000001690559486905292825282547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001690925581519384529051919283927fce1533133fb359ace801d3176bbad25ace030d714aed35e38a6293c8a60b115b929181900390910190a25050565b90565b73ffffffffffffffffffffffffffffffffffffffff1690565b60008061109185611069565b73ffffffffffffffffffffffffffffffffffffffff166345630b1a6040518163ffffffff1660e01b815260040160206040518083038186803b1580156110d657600080fd5b505afa1580156110ea573d6000803e3d6000fd5b505050506040513d602081101561110057600080fd5b50516040805160208181018490527fffffffff0000000000000000000000000000000000000000000000000000000060e08b901b1682840152604480830189905283518084039091018152606490920190925280519101209091506111648161117b565b905061117081856111cc565b979650505050505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b6000815160411461123e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015290519081900360640190fd5b60208201516040830151606084015160001a61125c86828585611266565b9695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156112e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114846022913960400191505060405180910390fd5b8360ff16601b14806112f657508360ff16601c145b61134b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806114a66022913960400191505060405180910390fd5b600060018686868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113a7573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811661145457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015290519081900360640190fd5b9594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565a2646970667358221220391c78d23c9bdc6f45378c78823cd5d127ffa743ffa63f6131fd26ed452ca9fa64736f6c63430007060033"; export class XAppConnectionManager__factory extends ContractFactory { constructor(signer?: Signer) {