From eb0def7528ff75631da0d4cac2895c2cc11292e7 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Fri, 26 Dec 2025 09:59:29 +0000 Subject: [PATCH 01/16] Add NMC configuration for integration tests --- packages/taiko-client/.gitignore | 2 + .../integration_test/entrypoint.sh | 4 + .../internal/docker/nodes/docker-compose.yml | 20 + .../nmc/chainspec/taiko-devnet.template.json | 353 ++++++++++++++++++ .../docker/nodes/nmc/taiko-devnet.cfg | 40 ++ .../taiko-client/internal/docker/start.sh | 29 +- packages/taiko-client/internal/docker/stop.sh | 16 +- 7 files changed, 456 insertions(+), 8 deletions(-) create mode 100644 packages/taiko-client/internal/docker/nodes/nmc/chainspec/taiko-devnet.template.json create mode 100644 packages/taiko-client/internal/docker/nodes/nmc/taiko-devnet.cfg diff --git a/packages/taiko-client/.gitignore b/packages/taiko-client/.gitignore index 8aa2589705c..767e7fa5c18 100644 --- a/packages/taiko-client/.gitignore +++ b/packages/taiko-client/.gitignore @@ -28,3 +28,5 @@ integration_test/nodes/deployments/mainnet.json .claude/ .code/ .bmad/ +# Generated NMC chainspec (generated from template at runtime) +internal/docker/nodes/nmc/chainspec/taiko-devnet.json diff --git a/packages/taiko-client/integration_test/entrypoint.sh b/packages/taiko-client/integration_test/entrypoint.sh index f44cbc9937a..ab9d0c2fe3c 100755 --- a/packages/taiko-client/integration_test/entrypoint.sh +++ b/packages/taiko-client/integration_test/entrypoint.sh @@ -9,6 +9,10 @@ source scripts/common.sh check_command "cast" check_command "forge" check_command "docker" +# jq is required for NMC to dynamically inject shastaTimestamp into chainspec +if [ "${L2_NODE:-}" == "l2_nmc" ]; then + check_command "jq" +fi # Ensure Shasta fork activation times are set for taiko-geth (L2) and Anvil (L1). if [ -z "${TAIKO_INTERNAL_SHASTA_TIME:-}" ] || [ -z "${ANVIL_INTERNAL_SHASTA_TIME:-}" ]; then diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index bb29c6da903..899b7743e7e 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -70,3 +70,23 @@ services: - --taiko - --taiko.internal-shasta-time - "${TAIKO_INTERNAL_SHASTA_TIME}" + + l2_nmc: + container_name: l2_nmc + image: nethermindeth/nethermind:taiko-shasta-12-26-2025 # TODO(@jmadibekov): Change to the latest stable release + restart: unless-stopped + pull_policy: always + volumes: + - .:/host + - ./nmc:/nethermind/configs + ports: + - "8545" + - "8546" + - "8551" + command: + - --config + - /nethermind/configs/taiko-devnet.cfg + - --datadir + - /nethermind/data + - --log + - DEBUG diff --git a/packages/taiko-client/internal/docker/nodes/nmc/chainspec/taiko-devnet.template.json b/packages/taiko-client/internal/docker/nodes/nmc/chainspec/taiko-devnet.template.json new file mode 100644 index 00000000000..dd6863e0e1b --- /dev/null +++ b/packages/taiko-client/internal/docker/nodes/nmc/chainspec/taiko-devnet.template.json @@ -0,0 +1,353 @@ +{ + "name": "Taiko Devnet", + "dataDir": "taiko-devnet", + "engine": { + "Taiko": { + "ontakeTransition": "0x0", + "pacayaTransition": "0x0", + "taikoL2Address": "0x1670010000000000000000000000000000010001" + } + }, + "params": { + "chainId": "0x28C59", + "maxCodeSize": "0x6000", + "maxCodeSizeTransition": "0x0", + "eip150Transition": "0x0", + "eip160Transition": "0x0", + "eip161abcTransition": "0x0", + "eip161dTransition": "0x0", + "eip155Transition": "0x0", + "eip140Transition": "0x0", + "eip211Transition": "0x0", + "eip214Transition": "0x0", + "eip658Transition": "0x0", + "eip145Transition": "0x0", + "eip1014Transition": "0x0", + "eip1052Transition": "0x0", + "eip1283Transition": "0x0", + "eip1283DisableTransition": "0x0", + "eip152Transition": "0x0", + "eip1108Transition": "0x0", + "eip1344Transition": "0x0", + "eip1884Transition": "0x0", + "eip2028Transition": "0x0", + "eip2200Transition": "0x0", + "eip2565Transition": "0x0", + "eip2929Transition": "0x0", + "eip2930Transition": "0x0", + "eip1559Transition": "0x0", + "eip1559FeeCollectorTransition": "0x0", + "feeCollector": "0x1670010000000000000000000000000000010001", + "eip1559ElasticityMultiplier": "0x2", + "eip1559BaseFeeMaxChangeDenominator": "0x8", + "eip1559BaseFeeMinValue": "0x1", + "eip3198Transition": "0x0", + "eip3529Transition": "0x0", + "eip3541Transition": "0x0", + "eip4895TransitionTimestamp": "0x0", + "eip3651TransitionTimestamp": "0x0", + "eip3855TransitionTimestamp": "0x0", + "eip3860TransitionTimestamp": "0x0", + "terminalTotalDifficulty": "0", + "eip1559BaseFeeMinValueTransition": "0x0" + }, + "genesis": { + "seal": { + "ethereum": { + "nonce": "0x0000000000000000", + "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + }, + "number": "0x0", + "difficulty": "0x0", + "author": "0x0000000000000000000000000000000000000000", + "timestamp": "0x0", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "extraData": "0x", + "baseFeePerGas": "0x1", + "gasLimit": "0x1c9c380" + }, + "nodes": [], + "accounts": { + "0x0000000000000000000000000000000000000000": { + "balance": "0x1" + }, + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x90F79bf6EB2c4f870365E785982E1f101E93b906": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x976EA74026E726554dB657fA54763abd0C3a0aa9": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x23618e81E3f5cdF7f54C3d65f7FBc0aBf5B21E8f": { + "balance": "0x21e19e0c9bab2400000" + }, + "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720": { + "balance": "0x21e19e0c9bab2400000" + }, + "0x1670010000000000000000000000000000010001": { + "balance": "0x0", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x0000000000000000000000000000000000000000000000000000000000000100": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000000000000000000000000000000000000000000101": "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010004", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000065": "0x0000000000000000000000000000000000000000000000000000000000000000" + } + }, + "0x0167001000000000000000000000000000010004": { + "balance": "0x0", + "code": "0x60806040526004361061009e575f3560e01c806379ba50971161006357806379ba509714610151578063863acc33146101655780638da5cb5b146101b0578063df6060fb146101cd578063e30c397814610200578063f2fde38b1461021d576100ad565b80623f3080146100b55780633659cfe6146100e95780634f1ef2861461010857806352d1902d1461011b578063715018a61461013d576100ad565b366100ad576100ab61023c565b005b6100ab61023c565b3480156100c0575f5ffd5b506100d46100cf366004610bd0565b6102c2565b60405190151581526020015b60405180910390f35b3480156100f4575f5ffd5b506100ab610103366004610c12565b6103eb565b6100ab610116366004610c3f565b6104d1565b348015610126575f5ffd5b5061012f6105a0565b6040519081526020016100e0565b348015610148575f5ffd5b506100ab610651565b34801561015c575f5ffd5b506100ab610664565b348015610170575f5ffd5b506101987f000000000000000000000000016700100000000000000000000000000001000181565b6040516001600160a01b0390911681526020016100e0565b3480156101bb575f5ffd5b506033546001600160a01b0316610198565b3480156101d8575f5ffd5b506101987f000000000000000000000000016700100000000000000000000000000001000581565b34801561020b575f5ffd5b506065546001600160a01b0316610198565b348015610228575f5ffd5b506100ab610237366004610c12565b6106db565b5f6102515f356001600160e01b0319166102c2565b61027b577f000000000000000000000000016700100000000000000000000000000001000161029d565b7f00000000000000000000000001670010000000000000000000000000000100055b9050365f5f375f5f365f845af43d5f5f3e8080156102b9573d5ff35b3d5ffd5b505050565b5f6001600160e01b031982166348080a4560e01b14806102f257506001600160e01b03198216630449faa360e51b145b8061030d57506001600160e01b03198216637741562f60e11b145b8061032857506001600160e01b03198216632f98047360e01b145b8061034357506001600160e01b03198216631b58bbef60e31b145b8061035e57506001600160e01b03198216632e31ecc360e21b145b8061037957506001600160e01b031982166333d5ac9b60e01b145b8061039457506001600160e01b031982166329cdc56f60e11b145b806103af57506001600160e01b0319821663a7137c0f60e01b145b806103ca57506001600160e01b031982166362d0945360e01b145b806103e557506001600160e01b03198216631753e83d60e31b145b92915050565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000416300361043c5760405162461bcd60e51b815260040161043390610d03565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100046001600160a01b03166104845f516020610e225f395f51905f52546001600160a01b031690565b6001600160a01b0316146104aa5760405162461bcd60e51b815260040161043390610d4f565b6104b38161074c565b604080515f808252602082019092526104ce91839190610754565b50565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100041630036105195760405162461bcd60e51b815260040161043390610d03565b7f00000000000000000000000001670010000000000000000000000000000100046001600160a01b03166105615f516020610e225f395f51905f52546001600160a01b031690565b6001600160a01b0316146105875760405162461bcd60e51b815260040161043390610d4f565b6105908261074c565b61059c82826001610754565b5050565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010004161461063f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610433565b505f516020610e225f395f51905f5290565b6106596108be565b6106625f610918565b565b60655433906001600160a01b031681146106d25760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610433565b6104ce81610918565b6106e36108be565b606580546001600160a01b0383166001600160a01b031990911681179091556107146033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6104ce6108be565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610787576102bd83610931565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156107e1575060408051601f3d908101601f191682019092526107de91810190610d9b565b60015b6108445760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610433565b5f516020610e225f395f51905f5281146108b25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610433565b506102bd8383836109cc565b6033546001600160a01b031633146106625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610433565b606580546001600160a01b03191690556104ce816109f6565b6001600160a01b0381163b61099e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610433565b5f516020610e225f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6109d583610a47565b5f825111806109e15750805b156102bd576109f08383610a86565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610a5081610931565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610aab8383604051806060016040528060278152602001610e4260279139610ab2565b9392505050565b60605f5f856001600160a01b031685604051610ace9190610dd4565b5f60405180830381855af49150503d805f8114610b06576040519150601f19603f3d011682016040523d82523d5f602084013e610b0b565b606091505b5091509150610b1c86838387610b26565b9695505050505050565b60608315610b945782515f03610b8d576001600160a01b0385163b610b8d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610433565b5081610b9e565b610b9e8383610ba6565b949350505050565b815115610bb65781518083602001fd5b8060405162461bcd60e51b81526004016104339190610def565b5f60208284031215610be0575f5ffd5b81356001600160e01b031981168114610aab575f5ffd5b80356001600160a01b0381168114610c0d575f5ffd5b919050565b5f60208284031215610c22575f5ffd5b610aab82610bf7565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610c50575f5ffd5b610c5983610bf7565b9150602083013567ffffffffffffffff811115610c74575f5ffd5b8301601f81018513610c84575f5ffd5b803567ffffffffffffffff811115610c9e57610c9e610c2b565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610ccd57610ccd610c2b565b604052818152828201602001871015610ce4575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215610dab575f5ffd5b5051919050565b5f5b83811015610dcc578181015183820152602001610db4565b50505f910152565b5f8251610de5818460208701610db2565b9190910192915050565b602081525f8251806020840152610e0d816040850160208701610db2565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c7dbcbc644eed34e8695667b1048a61be65e3a237403e62b5ada338a118c5caf64736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x0167001000000000000000000000000000010001": { + "balance": "0x0", + "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063aade375b11610092578063d441422111610062578063d44142211461063e578063e30c397814610671578063f2fde38b1461068e578063f940e385146106ad575f5ffd5b8063aade375b14610513578063b35893fb146105b8578063b3d5e45f146105e4578063c46e3a6614610628575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610460578063955a72441461047d5780639ee512f2146104b0578063a37ea515146104d5575f5ffd5b806379ba5097146104245780638456cb59146104385780638abf60771461044c575f5ffd5b8063363cc427116101685780634f1ef286116101385780634f1ef286146103c957806352d1902d146103dc5780635c975abb146103f0578063715018a614610410575f5ffd5b8063363cc4271461034f5780633644e515146103825780633659cfe6146103965780633f4ba83a146103b5575f5ffd5b806319ab453c116101a357806319ab453c146102b257806320ae54eb146102d35780633075db56146102f257806334cdf78d14610316575f5ffd5b806304f3bcec146101c95780630f439bd91461021457806312622e5b14610267575b5f5ffd5b3480156101d4575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021f575f5ffd5b506040805180820182525f808252602091820152815180830183526101005465ffffffffffff168082526101015491830191825283519081529051918101919091520161020b565b348015610272575f5ffd5b5061029a7f0000000000000000000000000000000000000000000000000000000000007e7e81565b6040516001600160401b03909116815260200161020b565b3480156102bd575f5ffd5b506102d16102cc36600461209d565b6106cc565b005b3480156102de575f5ffd5b506102d16102ed3660046120ce565b6107de565b3480156102fd575f5ffd5b50610306610961565b604051901515815260200161020b565b348015610321575f5ffd5b50610341610330366004612119565b60fb6020525f908152604090205481565b60405190815260200161020b565b34801561035a575f5ffd5b506101f77f000000000000000000000000167001000000000000000000000000000001000381565b34801561038d575f5ffd5b50610341610979565b3480156103a1575f5ffd5b506102d16103b036600461209d565b610987565b3480156103c0575f5ffd5b506102d1610a4e565b6102d16103d7366004612214565b610aa9565b3480156103e7575f5ffd5b50610341610b5e565b3480156103fb575f5ffd5b5061030660c954610100900460ff1660021490565b34801561041b575f5ffd5b506102d1610c0f565b34801561042f575f5ffd5b506102d1610c20565b348015610443575f5ffd5b506102d1610c97565b348015610457575f5ffd5b506101f7610cec565b34801561046b575f5ffd5b506033546001600160a01b03166101f7565b348015610488575f5ffd5b506101f77f000000000000000000000000167001000000000000000000000000000000000581565b3480156104bb575f5ffd5b506101f771777735367b36bc9b61c50022d9d0700db4ec81565b3480156104e0575f5ffd5b506104f46104ef3660046122b0565b610cf5565b604080516001600160a01b03909316835260208301919091520161020b565b34801561051e575f5ffd5b50610583604080516060810182525f8082526020820181905291810191909152506040805160608101825260ff80546001600160a01b0381168352600160a01b810490911615156020830152600160a81b900465ffffffffffff169181019190915290565b6040805182516001600160a01b031681526020808401511515908201529181015165ffffffffffff169082015260600161020b565b3480156105c3575f5ffd5b506105d76105d2366004612310565b610e58565b60405161020b919061239b565b3480156105ef575f5ffd5b506106036105fe3660046123e3565b610e8f565b6040805193151584526001600160a01b0390921660208401529082015260600161020b565b348015610633575f5ffd5b5061029a620f424081565b348015610649575f5ffd5b506103417f000000000000000000000000000000000000000000000006f05b59d3b200000081565b34801561067c575f5ffd5b506065546001600160a01b03166101f7565b348015610699575f5ffd5b506102d16106a836600461209d565b61104b565b3480156106b8575f5ffd5b506102d16106c736600461245a565b6110bc565b5f54610100900460ff16158080156106ea57505f54600160ff909116105b806107035750303b15801561070357505f5460ff166001145b61076b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561078c575f805461ff0019166101001790555b610795826111f8565b80156107da575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b3371777735367b36bc9b61c50022d9d0700db4ec1461081057604051636edaef2f60e11b815260040160405180910390fd5b610818611256565b6108226002611285565b60ff54600160a81b900465ffffffffffff16806108426020850185612491565b65ffffffffffff1610156108695760405163229329c760e01b815260040160405180910390fd5b5f65ffffffffffff82166108806020860186612491565b65ffffffffffff16119050801561089a5761089a8461129b565b6101005465ffffffffffff166108af8461147b565b5f6108bb6001436124ac565b5f81815260fb60209081526040918290208340905560ff8054610100546101015485516001600160a01b038416815265ffffffffffff8a8116968201969096529185168287015260608201529351949550600160a01b810490911615159387151593600160a81b909204909216917f90b39eb3d93f15c8be602aa56b56cfef44dd034911816607d74c24e8a2c21d1b9181900360800190a4505050506107da6001611285565b5f600261097060c95460ff1690565b60ff1614905090565b5f61098261158f565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109cf5760405162461bcd60e51b8152600401610762906124cb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a01611633565b6001600160a01b031614610a275760405162461bcd60e51b815260040161076290612517565b610a308161164e565b604080515f80825260208201909252610a4b91839190611656565b50565b610a566117c0565b610a6a60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610aa7335f6117f1565b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610af15760405162461bcd60e51b8152600401610762906124cb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b23611633565b6001600160a01b031614610b495760405162461bcd60e51b815260040161076290612517565b610b528261164e565b6107da82826001611656565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bfd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610762565b505f51602061285e5f395f51905f5290565b610c176117f5565b610aa75f61184f565b60655433906001600160a01b03168114610c8e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610762565b610a4b8161184f565b610c9f611868565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610aa73360016117f1565b5f610982611633565b5f80611000831115610d0b57508390505f610e4f565b604080516080810182525f8082526020820181905281830152606080820152905163b35893fb60e01b8152309063b35893fb90610d4e9088908890600401612563565b5f60405180830381865afa925050508015610d8a57506040513d5f823e601f3d908101601f19168201604052610d879190810190612591565b60015b610d9a57855f9250925050610e4f565b9050610da781888861189a565b610db757855f9250925050610e4f565b604181606001515114610dd057855f9250925050610e4f565b5f5f610de8610dde846118da565b846060015161198a565b90925090505f816004811115610e0057610e00612666565b141580610e1457506001600160a01b038216155b15610e2757875f94509450505050610e4f565b819450876001600160a01b0316856001600160a01b031614610e4b57826040015193505b5050505b94509492505050565b604080516080810182525f8082526020820181905291810191909152606080820152610e868284018461267a565b90505b92915050565b5f5f5f5f5f610ea08a8a8a8a610cf5565b60405163508b724360e11b81526001600160a01b038c81166004830152602482018390529294509092505f917f0000000000000000000000001670010000000000000000000000000000010003169063a116e48690604401602060405180830381865afa158015610f13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f379190612706565b905080610f69575f6001600160a01b03881615610f545787610f56565b8a5b6001975095505f94506110409350505050565b896001600160a01b0316836001600160a01b031603610f93575f8a5f955095509550505050611040565b60405163508b724360e11b81526001600160a01b0384811660048301525f60248301527f0000000000000000000000001670010000000000000000000000000000010003169063a116e48690604401602060405180830381865afa158015610ffd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110219190612706565b611036575f8a5f955095509550505050611040565b505f945090925090505b955095509592505050565b6110536117f5565b606580546001600160a01b0383166001600160a01b031990911681179091556110846033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6110c46117f5565b6110cc611256565b6110d66002611285565b6001600160a01b0381166110fd5760405163e6c4247b60e01b815260040160405180910390fd5b5f6001600160a01b0383166111265750476111216001600160a01b038316826119cc565b6111a2565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611168573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118c9190612725565b90506111a26001600160a01b03841683836119d7565b604080516001600160a01b038086168252841660208201529081018290527fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060600160405180910390a1506107da6001611285565b5f54610100900460ff1661121e5760405162461bcd60e51b81526004016107629061273c565b611226611a29565b6112446001600160a01b0382161561123e578161184f565b3361184f565b5060c9805461ff001916610100179055565b600261126460c95460ff1690565b60ff1603610aa75760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f6112da6112ac6020840184612491565b6112bc604085016020860161209d565b6112c96040860186612787565b60ff546001600160a01b0316610e8f565b60ff8054931515600160a01b026001600160a81b03199094166001600160a01b039093169290921792909217905590508015611441576001600160a01b037f00000000000000000000000016700100000000000000000000000000000100031663391396de61134f604085016020860161209d565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015611399573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bd9190612725565b5060ff54604051632f8cb47d60e21b81526001600160a01b039182166004820152602481018390527f00000000000000000000000016700100000000000000000000000000000100039091169063be32d1f4906044015f604051808303815f87803b15801561142a575f5ffd5b505af115801561143c573d5f5f3e3d5ffd5b505050505b61144e6020830183612491565b60ff805465ffffffffffff92909216600160a81b0265ffffffffffff60a81b199092169190911790555050565b5f5f611485611a4f565b610101549193509150156114b6576101015482146114b6576040516349645ffd60e01b815260040160405180910390fd5b6101018190556101005465ffffffffffff166114d56020850185612491565b65ffffffffffff16111561158a57604051631934171960e31b81526001600160a01b037f0000000000000000000000001670010000000000000000000000000000000005169063c9a0b8c89061152f9086906004016127c9565b5f604051808303815f87803b158015611546575f5ffd5b505af1158015611558573d5f5f3e3d5ffd5b5061156a925050506020840184612491565b610100805465ffffffffffff191665ffffffffffff929092169190911790555b505050565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f7893824cc05345e66765411bdc89b67d8e9de9babcc8cc47b79e1be815fcdc66918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f51602061285e5f395f51905f52546001600160a01b031690565b610a4b6117f5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116895761158a83611aec565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116e3575060408051601f3d908101601f191682019092526116e091810190612725565b60015b6117465760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610762565b5f51602061285e5f395f51905f5281146117b45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610762565b5061158a838383611b87565b6117d460c954610100900460ff1660021490565b610aa75760405163bae6e2a960e01b815260040160405180910390fd5b6107da5b6033546001600160a01b03163314610aa75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610762565b606580546001600160a01b0319169055610a4b81611bb1565b61187c60c954610100900460ff1660021490565b15610aa75760405163bae6e2a960e01b815260040160405180910390fd5b5f8265ffffffffffff16845f015165ffffffffffff161480156118d25750816001600160a01b031684602001516001600160a01b0316145b949350505050565b5f5f61195683805160208083015160409384015184517fed88a0cae89dd0c5217ed6cb075c1087a6230c0eb71389f7213d5f9c0b8eb27b8185015265ffffffffffff909416848601526001600160a01b0390911660608401526080808401919091528351808403909101815260a0909201909252805191012090565b905061198361196361158f565b8260405161190160f01b8152600281019290925260228201526042902090565b9392505050565b5f5f82516041036119be576020830151604084015160608501515f1a6119b287828585611c02565b945094505050506119c5565b505f905060025b9250929050565b6107da82825a611cbc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261158a908490611cff565b5f54610100900460ff16610aa75760405162461bcd60e51b81526004016107629061273c565b5f8080611a5d6001436124ac565b9050611a67612069565b46611fe08201525f5b60ff81108015611a835750806001018310155b15611ab4575f198184030180408360ff83066101008110611aa657611aa66127fd565b602002015250600101611a70565b5061200081209350814081611aca60ff85612811565b6101008110611adb57611adb6127fd565b602002015261200090209293915050565b6001600160a01b0381163b611b595760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610762565b5f51602061285e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611b9083611dd2565b5f82511180611b9c5750805b1561158a57611bab8383611e11565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611c3757505f90506003610e4f565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c88573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611cb0575f60019250925050610e4f565b965f9650945050505050565b815f03611cc857505050565b611ce283838360405180602001604052805f815250611e36565b61158a57604051634c67134d60e11b815260040160405180910390fd5b5f611d53826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e739092919063ffffffff16565b905080515f1480611d73575080806020019051810190611d739190612706565b61158a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610762565b611ddb81611aec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610e86838360405180606001604052806027815260200161287e60279139611e81565b5f6001600160a01b038516611e5e57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b60606118d284845f85611ef5565b60605f5f856001600160a01b031685604051611e9d9190612830565b5f60405180830381855af49150503d805f8114611ed5576040519150601f19603f3d011682016040523d82523d5f602084013e611eda565b606091505b5091509150611eeb86838387611fcc565b9695505050505050565b606082471015611f565760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610762565b5f5f866001600160a01b03168587604051611f719190612830565b5f6040518083038185875af1925050503d805f8114611fab576040519150601f19603f3d011682016040523d82523d5f602084013e611fb0565b606091505b5091509150611fc187838387611fcc565b979650505050505050565b6060831561203a5782515f03612033576001600160a01b0385163b6120335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610762565b50816118d2565b6118d2838381511561204f5781518083602001fd5b8060405162461bcd60e51b8152600401610762919061284b565b604051806120000160405280610100906020820280368337509192915050565b6001600160a01b0381168114610a4b575f5ffd5b5f602082840312156120ad575f5ffd5b813561198381612089565b5f606082840312156120c8575f5ffd5b50919050565b5f5f608083850312156120df575f5ffd5b82356001600160401b038111156120f4575f5ffd5b612100858286016120b8565b92505061211084602085016120b8565b90509250929050565b5f60208284031215612129575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561216657612166612130565b60405290565b604051601f8201601f191681016001600160401b038111828210171561219457612194612130565b604052919050565b5f6001600160401b038211156121b4576121b4612130565b50601f01601f191660200190565b5f82601f8301126121d1575f5ffd5b81356121e46121df8261219c565b61216c565b8181528460208386010111156121f8575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612225575f5ffd5b823561223081612089565b915060208301356001600160401b0381111561224a575f5ffd5b612256858286016121c2565b9150509250929050565b65ffffffffffff81168114610a4b575f5ffd5b5f5f83601f840112612283575f5ffd5b5081356001600160401b03811115612299575f5ffd5b6020830191508360208285010111156119c5575f5ffd5b5f5f5f5f606085870312156122c3575f5ffd5b84356122ce81612260565b935060208501356122de81612089565b925060408501356001600160401b038111156122f8575f5ffd5b61230487828801612273565b95989497509550505050565b5f5f60208385031215612321575f5ffd5b82356001600160401b03811115612336575f5ffd5b61234285828601612273565b90969095509350505050565b5f5b83811015612368578181015183820152602001612350565b50505f910152565b5f815180845261238781602086016020860161234e565b601f01601f19169290920160200192915050565b6020815265ffffffffffff825116602082015260018060a01b036020830151166040820152604082015160608201525f60608301516080808401526118d260a0840182612370565b5f5f5f5f5f608086880312156123f7575f5ffd5b853561240281612260565b9450602086013561241281612089565b935060408601356001600160401b0381111561242c575f5ffd5b61243888828901612273565b909450925050606086013561244c81612089565b809150509295509295909350565b5f5f6040838503121561246b575f5ffd5b823561247681612089565b9150602083013561248681612089565b809150509250929050565b5f602082840312156124a1575f5ffd5b813561198381612260565b81810381811115610e8957634e487b7160e01b5f52601160045260245ffd5b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156125a1575f5ffd5b81516001600160401b038111156125b6575f5ffd5b8201608081850312156125c7575f5ffd5b6125cf612144565b81516125da81612260565b815260208201516125ea81612089565b60208201526040828101519082015260608201516001600160401b03811115612611575f5ffd5b80830192505084601f830112612625575f5ffd5b81516126336121df8261219c565b818152866020838601011115612647575f5ffd5b61265882602083016020870161234e565b606083015250949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f6020828403121561268a575f5ffd5b81356001600160401b0381111561269f575f5ffd5b8201608081850312156126b0575f5ffd5b6126b8612144565b81356126c381612260565b815260208201356126d381612089565b60208201526040828101359082015260608201356001600160401b038111156126fa575f5ffd5b612658868285016121c2565b5f60208284031215612716575f5ffd5b81518015158114611983575f5ffd5b5f60208284031215612735575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f5f8335601e1984360301811261279c575f5ffd5b8301803591506001600160401b038211156127b5575f5ffd5b6020019150368190038213156119c5575f5ffd5b6060810182356127d881612260565b65ffffffffffff16825260208381013590830152604092830135929091019190915290565b634e487b7160e01b5f52603260045260245ffd5b5f8261282b57634e487b7160e01b5f52601260045260245ffd5b500690565b5f825161284181846020870161234e565b9190910192915050565b602081525f610e86602083018461237056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207a498c1c0671f735f7bcb8c24564f7aba58667a47f21b245cce5d6a301420da864736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x0167001000000000000000000000000000010005": { + "balance": "0x0", + "code": "0x6080604052600436106101fc575f3560e01c8063893f546011610113578063ba9f41e81161009d578063e902461a1161006d578063e902461a146105f5578063ee82ac5e1461060f578063f2fde38b1461062e578063f940e3851461064d578063fd85eb2d1461066c575f5ffd5b8063ba9f41e814610571578063da69d3db146105a4578063dac5df78146105c3578063e30c3978146105d8575f5ffd5b8063a4b23554116100e3578063a4b23554146102a1578063a7137c0f146104d1578063a7e022d1146104f7578063b310e9e914610533578063b8c7b30c14610552575f5ffd5b8063893f5460146104375780638abf60771461047b5780638da5cb5b1461048f5780639ee512f2146104ac575f5ffd5b806348080a45116101945780635c975abb116101645780635c975abb146103a857806362d09453146103c8578063715018a6146103fb57806379ba50971461040f5780638456cb5914610423575f5ffd5b806348080a451461032e5780634f1ef2861461034d57806352d1902d14610360578063539b8ade14610382575f5ffd5b80633075db56116101cf5780633075db56146102bf57806333d5ac9b146102d35780633659cfe6146102f95780633f4ba83a1461031a575f5ffd5b806304f3bcec1461020057806312622e5b1461024b578063136dc4a8146102825780632f980473146102a1575b5f5ffd5b34801561020b575f5ffd5b507f00000000000000000000000016700000000000000000000000000000000000065b6040516001600160a01b0390911681526020015b60405180910390f35b348015610256575f5ffd5b5060fe5461026a906001600160401b031681565b6040516001600160401b039091168152602001610242565b34801561028d575f5ffd5b5061026a61029c36600461269a565b61068b565b3480156102ac575f5ffd5b505f5b6040519015158152602001610242565b3480156102ca575f5ffd5b506102af6106a5565b3480156102de575f5ffd5b5060fd5461026a90600160401b90046001600160401b031681565b348015610304575f5ffd5b506103186103133660046126ee565b6106bd565b005b348015610325575f5ffd5b5061031861078d565b348015610339575f5ffd5b50610318610348366004612733565b610811565b61031861035b3660046127f3565b610a3e565b34801561036b575f5ffd5b50610374610af7565b604051908152602001610242565b34801561038d575f5ffd5b5060fd5461026a90600160801b90046001600160401b031681565b3480156103b3575f5ffd5b506102af60c954610100900460ff1660021490565b3480156103d3575f5ffd5b5061022e7f000000000000000000000000167000000000000000000000000000000000000581565b348015610406575f5ffd5b50610318610ba8565b34801561041a575f5ffd5b50610318610bb9565b34801561042e575f5ffd5b50610318610c30565b348015610442575f5ffd5b506104566104513660046128b6565b610caf565b604080519384526001600160401b039283166020850152911690820152606001610242565b348015610486575f5ffd5b5061022e610ddb565b34801561049a575f5ffd5b506033546001600160a01b031661022e565b3480156104b7575f5ffd5b5061022e71777735367b36bc9b61c50022d9d0700db4ec81565b3480156104dc575f5ffd5b5060fd5461026a90600160c01b90046001600160401b031681565b348015610502575f5ffd5b506105166105113660046128ee565b610de9565b604080519283526001600160401b03909116602083015201610242565b34801561053e575f5ffd5b5061031861054d36600461291f565b610e04565b34801561055d575f5ffd5b5060fd5461026a906001600160401b031681565b34801561057c575f5ffd5b5061026a7f000000000000000000000000000000000000000000000000000000000000000a81565b3480156105af575f5ffd5b506103186105be36600461293c565b611036565b3480156105ce575f5ffd5b5061037460fc5481565b3480156105e3575f5ffd5b506065546001600160a01b031661022e565b348015610600575f5ffd5b5061051661051136600461297f565b34801561061a575f5ffd5b506103746106293660046129c7565b61104f565b348015610639575f5ffd5b506103186106483660046126ee565b611087565b348015610658575f5ffd5b506103186106673660046129de565b6110f8565b348015610677575f5ffd5b50610318610686366004612a15565b6112af565b5f6040516372c0090b60e11b815260040160405180910390fd5b5f60026106b460c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016700000000000000000000000000000001000116300361070e5760405162461bcd60e51b815260040161070590612a56565b60405180910390fd5b7f00000000000000000000000001670000000000000000000000000000000100016001600160a01b031661074061145e565b6001600160a01b0316146107665760405162461bcd60e51b815260040161070590612aa2565b61076f81611479565b604080515f8082526020820190925261078a91839190611481565b50565b6107a160c954610100900460ff1660021490565b6107be5760405163bae6e2a960e01b815260040160405180910390fd5b6107d260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a161080f335f6115f0565b565b845f8190036108335760405163ec73295960e01b815260040160405180910390fd5b866001600160401b0316805f0361085d5760405163ec73295960e01b815260040160405180910390fd5b61086d6060860160408701612aee565b63ffffffff16805f036108935760405163ec73295960e01b815260040160405180910390fd5b6108a06020870187612b07565b60ff16805f036108c35760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec146108f557604051636494e9f760e01b815260040160405180910390fd5b600261090360c95460ff1690565b60ff16036109245760405163dfc60d8560e01b815260040160405180910390fd5b61092e60026115f8565b7f000000000000000000000000000000000000000000000000000000000000000a6001600160401b031643101561097857604051631799c89b60e01b815260040160405180910390fd5b5f610984600143612b3b565b905061098f8161160e565b6109998989611646565b6109a38b8b61172d565b6109ac8161184b565b604051633b78c86560e01b81526001600160a01b037f00000000000000000000000016700000000000000000000000000000000000051690633b78c865906109fa908a908a90600401612b4e565b5f604051808303815f87803b158015610a11575f5ffd5b505af1158015610a23573d5f5f3e3d5ffd5b5050505050610a3260016115f8565b50505050505050505050565b6001600160a01b037f0000000000000000000000000167000000000000000000000000000000010001163003610a865760405162461bcd60e51b815260040161070590612a56565b7f00000000000000000000000001670000000000000000000000000000000100016001600160a01b0316610ab861145e565b6001600160a01b031614610ade5760405162461bcd60e51b815260040161070590612aa2565b610ae782611479565b610af382826001611481565b5050565b5f306001600160a01b037f00000000000000000000000001670000000000000000000000000000000100011614610b965760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610705565b505f516020612d7e5f395f51905f5290565b610bb06118e2565b61080f5f61193c565b60655433906001600160a01b03168114610c275760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610705565b61078a8161193c565b610c4460c954610100900460ff1660021490565b15610c625760405163bae6e2a960e01b815260040160405180910390fd5b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161080f3360016115f0565b5f808080610cc06020860186612b07565b60ff16610cd36060870160408801612aee565b63ffffffff16610ce39190612b85565b60fd54909150610d07906001600160401b03600160c01b8204811691849116611955565b90935091505f610d1d6060870160408801612aee565b63ffffffff1660fd60109054906101000a90046001600160401b031688610d449190612bae565b610d4e9190612b85565b9050610d6060a0870160808801612aee565b63ffffffff1615801590610d915750610d7f60a0870160808801612aee565b63ffffffff16816001600160401b0316115b15610daf57610da660a0870160808801612aee565b63ffffffff1690505b610dcb8484838b610dc660808c0160608d01612bcd565b611a6d565b9099949850965092945050505050565b5f610de461145e565b905090565b5f5f6040516372c0090b60e11b815260040160405180910390fd5b5f54610100900460ff1615808015610e2257505f54600160ff909116105b80610e3b5750303b158015610e3b57505f5460ff166001145b610e9e5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610705565b5f805460ff191660011790558015610ebf575f805461ff0019166101001790555b610ec884611aed565b826001600160401b03165f03610ef1576040516308279a2560e31b815260040160405180910390fd5b46836001600160401b031603610f1a576040516308279a2560e31b815260040160405180910390fd5b60014611610f3b57604051638f972ecb60e01b815260040160405180910390fd5b6001600160401b03461115610f6357604051638f972ecb60e01b815260040160405180910390fd5b4315610fad5743600103610f94575f610f7d600143612b3b565b5f81815260fb602052604090209040905550610fad565b604051635a0f9e4160e11b815260040160405180910390fd5b60fe80546001600160401b0380861667ffffffffffffffff199283161790925560fd805492851692909116919091179055610fe743611b4b565b5060fc558015611030575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6040516372c0090b60e11b815260040160405180910390fd5b5f43821061105e57505f919050565b4361106b83610100612be6565b1061107557504090565b505f90815260fb602052604090205490565b61108f6118e2565b606580546001600160a01b0383166001600160a01b031990911681179091556110c06033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b806001600160a01b0381166111205760405163538ba4f960e01b815260040160405180910390fd5b61113460c954610100900460ff1660021490565b156111525760405163bae6e2a960e01b815260040160405180910390fd5b693bb4ba34323930bbb2b960b11b6111726033546001600160a01b031690565b6001600160a01b0316336001600160a01b031614806111ac5750611197816001611bdb565b6001600160a01b0316336001600160a01b0316145b6111c9576040516395383ea160e01b815260040160405180910390fd5b60026111d760c95460ff1690565b60ff16036111f85760405163dfc60d8560e01b815260040160405180910390fd5b61120260026115f8565b6001600160a01b038416611228576112236001600160a01b03841647611c7d565b6112a5565b6040516370a0823160e01b81523060048201526112a59084906001600160a01b038716906370a0823190602401602060405180830381865afa158015611270573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112949190612bf9565b6001600160a01b0387169190611c88565b61103060016115f8565b825f8190036112d15760405163ec73295960e01b815260040160405180910390fd5b846001600160401b0316805f036112fb5760405163ec73295960e01b815260040160405180910390fd5b61130b6060840160408501612aee565b63ffffffff16805f036113315760405163ec73295960e01b815260040160405180910390fd5b61133e6020850185612b07565b60ff16805f036113615760405163ec73295960e01b815260040160405180910390fd5b3371777735367b36bc9b61c50022d9d0700db4ec1461139357604051636494e9f760e01b815260040160405180910390fd5b60026113a160c95460ff1690565b60ff16036113c25760405163dfc60d8560e01b815260040160405180910390fd5b6113cc60026115f8565b7f000000000000000000000000000000000000000000000000000000000000000a6001600160401b0316431061141557604051631799c89b60e01b815260040160405180910390fd5b5f611421600143612b3b565b905061142c8161160e565b6114368787611646565b611440898961172d565b6114498161184b565b5061145460016115f8565b5050505050505050565b5f516020612d7e5f395f51905f52546001600160a01b031690565b61078a6118e2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156114b9576114b483611cda565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611513575060408051601f3d908101601f1916820190925261151091810190612bf9565b60015b6115765760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610705565b5f516020612d7e5f395f51905f5281146115e45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610705565b506114b4838383611d75565b610af36118e2565b60c9805460ff191660ff92909216919091179055565b5f5f61161983611b4b565b915091508160fc541461163f5760405163d719258d60e01b815260040160405180910390fd5b60fc555050565b5f5f5f611654854286610caf565b9250925092508248148061166557505f5b611682576040516336d54d4f60e11b815260040160405180910390fd5b60fd5460408051600160c01b83046001600160401b039081168252858116602083015292831681830152918316606083015260808201859052517f781ae5c2215806150d5c71a4ed5336e5dc3ad32aef04fc0f626a6ee0c2f8d1c89181900360a00190a160fd805477ffffffffffffffffffffffffffffffff000000000000000016600160c01b6001600160401b039485160267ffffffffffffffff19161791909216179055505050565b60fd546001600160401b03600160401b90910481169083161161174e575050565b60fe546040516313e4299d60e21b81526001600160401b0391821660048201527f73e6d340850343cc6f001515dc593377337c95a6ffe034fe1e844d4dab5da16960248201529083166044820152606481018290527f00000000000000000000000016700000000000000000000000000000000000056001600160a01b031690634f90a674906084016020604051808303815f875af11580156117f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118179190612bf9565b505060fd80546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b5f81815260fb60205260409081902082409081905560fd80546001600160401b03428116600160801b0267ffffffffffffffff60801b1983168117909355935192937f41c3f410f5c8ac36bb46b1dccef0de0f964087c9e688795fa02ecfa2c20b3fe4936118d6938693908316921691909117909182526001600160401b0316602082015260400190565b60405180910390a15050565b6033546001600160a01b0316331461080f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610705565b606580546001600160a01b031916905561078a81611d99565b5f80670de0b6b3a76400006001600160401b038616820361197c5784849250925050611a65565b6001600160401b03851615806119a35750846001600160401b0316866001600160401b0316145b806119c157506119b4815f19612c24565b856001600160401b031610155b156119d25785849250925050611a65565b5f866001600160401b0316866001600160401b0316836119f29190612c37565b6119fc9190612c24565b9050801580611a1157506001600160ff1b0381115b15611a23578585935093505050611a65565b5f611a2d82611dea565b90505f828702828902015f811260018114611a4c578582049250611a50565b5f92505b505087611a5c82612007565b95509550505050505b935093915050565b5f8080611a8963ffffffff86166001600160401b038916612be6565b9050856001600160401b03168111611aa2576001611ab5565b611ab56001600160401b03871682612b3b565b9050611ad46001600160401b03611ace83878316612019565b9061202e565b9150611ae08883612042565b9250509550959350505050565b5f54610100900460ff16611b135760405162461bcd60e51b815260040161070590612c4e565b611b1b612084565b611b396001600160a01b03821615611b33578161193c565b3361193c565b5060c9805461ff001916610100179055565b5f5f611b5561265f565b46611fe08201525f5b60ff81108015611b715750806001018510155b15611ba2575f198186030180408360ff83066101008110611b9457611b94612c99565b602002015250600101611b5e565b5061200081209250834081611bb860ff87612cad565b6101008110611bc957611bc9612c99565b60200201526120009020919391925050565b5f7f0000000000000000000000001670000000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611c50573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c749190612cc0565b90505b92915050565b610af382825a6120aa565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526114b49084906120ed565b6001600160a01b0381163b611d475760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610705565b5f516020612d7e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d7e836121c0565b5f82511180611d8a5750805b156114b45761103083836121ff565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6fffffffffffffffffffffffffffffffff811160071b81811c6001600160401b031060061b1781811c63ffffffff1060051b1781811c61ffff1060041b1781811c60ff1060031b175f8213611e4657631615e6385f526004601cfd5b7ff8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffff6f8421084210842108cc6318c6db6d54be83831c1c601f161a1890811b609f90811c6c465772b2bbbb5f824b15207a3081018102606090811d6d0388eaa27412d5aca026815d636e018202811d6d0df99ac502031bf953eff472fdcc018202811d6d13cdffb29d51d99322bdff5f2211018202811d6d0a0f742023def783a307a986912e018202811d6d01920d8043ca89b5239253284e42018202811d6c0b7a86d7375468fac667a0a527016c29508e458543d8aa4df2abee7883018302821d6d0139601a2efabe717e604cbb4894018302821d6d02247f7a7b6594320649aa03aba1018302821d6c8c3f38e95a6b1ff2ab1c3b343619018302821d6d02384773bdf1ac5676facced60901901830290911d6cb9a025d814b29c212b8b1a07cd1901909102780a09507084cc699bb0e71ea869ffffffffffffffffffffffff190105711340daa0d5f769dba1915cef59f0815a5506029190037d0267a36c0c95b3975ab3ee5b203a7614a3f75373f047d803ae7b6687f2b302017d57115e47018c7177eebf7cd370a3356a1b7863008a5ae8028c72b88642840160ae1d90565b5f611c77826001600160401b0361202e565b5f8183116120275781611c74565b5090919050565b5f81831161203c5782611c74565b50919050565b5f826001600160401b03165f0361205b57506001611c77565b611c746001846001600160401b03166120748686612224565b61207e9190612c24565b90612019565b5f54610100900460ff1661080f5760405162461bcd60e51b815260040161070590612c4e565b815f036120b657505050565b6120d083838360405180602001604052805f8152506122b2565b6114b457604051634c67134d60e11b815260040160405180910390fd5b5f612141826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166122ef9092919063ffffffff16565b905080515f14806121615750808060200190518101906121619190612cdb565b6114b45760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610705565b6121c981611cda565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611c748383604051806060016040528060278152602001612d9e602791396122fd565b5f826001600160401b03165f0361223d5761223d612cfa565b5f836001600160401b0316836001600160401b0316670de0b6b3a76400006122659190612c37565b61226f9190612c24565b9050680755bf798b4a1bf1e481111561228e5750680755bf798b4a1bf1e45b670de0b6b3a76400006122a082612371565b6122aa9190612c24565b949350505050565b5f6001600160a01b0385166122da57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b60606122aa84845f856124eb565b60605f5f856001600160a01b0316856040516123199190612d30565b5f60405180830381855af49150503d805f8114612351576040519150601f19603f3d011682016040523d82523d5f602084013e612356565b606091505b5091509150612367868383876125c2565b9695505050505050565b5f68023f2fa8f6da5b9d2819821361238857919050565b680755bf798b4a1bf1e582126123a55763a37bfec95f526004601cfd5b6503782dace9d9604e83901b0591505f60606bb17217f7d1cf79abc9e3b39884821b056001605f1b01901d6bb17217f7d1cf79abc9e3b39881029093036c240c330e9fb2d9cbaf0fd5aafb1981018102606090811d6d0277594991cfc85f6e2461837cd9018202811d6d1a521255e34f6a5061b25ef1c9c319018202811d6db1bbb201f443cf962f1a1d3db4a5018202811d6e02c72388d9f74f51a9331fed693f1419018202811d6e05180bb14799ab47a8a8cb2a527d57016d02d16720577bd19bf614176fe9ea6c10fe68e7fd37d0007b713f765084018402831d9081019084016d01d3967ed30fc4f89c02bab5708119010290911d6e0587f503bb6ea29d25fcb740196450019091026d360d7aeea093263ecc6e0ecb291760621b010574029d9dc38563c32e5c2f6dc192ee70ef65f9978af30260c3939093039290921c92915050565b60608247101561254c5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610705565b5f5f866001600160a01b031685876040516125679190612d30565b5f6040518083038185875af1925050503d805f81146125a1576040519150601f19603f3d011682016040523d82523d5f602084013e6125a6565b606091505b50915091506125b7878383876125c2565b979650505050505050565b606083156126305782515f03612629576001600160a01b0385163b6126295760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610705565b50816122aa565b6122aa83838151156126455781518083602001fd5b8060405162461bcd60e51b81526004016107059190612d4b565b604051806120000160405280610100906020820280368337509192915050565b80356001600160401b0381168114612695575f5ffd5b919050565b5f5f5f606084860312156126ac575f5ffd5b6126b58461267f565b92506126c36020850161267f565b91506126d16040850161267f565b90509250925092565b6001600160a01b038116811461078a575f5ffd5b5f602082840312156126fe575f5ffd5b8135612709816126da565b9392505050565b803563ffffffff81168114612695575f5ffd5b5f60a0828403121561203c575f5ffd5b5f5f5f5f5f5f6101208789031215612749575f5ffd5b6127528761267f565b95506020870135945061276760408801612710565b93506127768860608901612723565b92506101008701356001600160401b03811115612791575f5ffd5b8701601f810189136127a1575f5ffd5b80356001600160401b038111156127b6575f5ffd5b8960208260051b84010111156127ca575f5ffd5b60208201935080925050509295509295509295565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215612804575f5ffd5b823561280f816126da565b915060208301356001600160401b03811115612829575f5ffd5b8301601f81018513612839575f5ffd5b80356001600160401b03811115612852576128526127df565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612880576128806127df565b604052818152828201602001871015612897575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60e084860312156128c8575f5ffd5b6128d184612710565b92506128df6020850161267f565b91506126d18560408601612723565b5f5f604083850312156128ff575f5ffd5b6129088361267f565b915061291660208401612710565b90509250929050565b5f5f5f60608486031215612931575f5ffd5b83356126b5816126da565b5f5f5f5f6080858703121561294f575f5ffd5b84359350602085013592506129666040860161267f565b915061297460608601612710565b905092959194509250565b5f5f5f5f6101008587031215612993575f5ffd5b61299d8686612723565b93506129ab60a0860161267f565b92506129b960c0860161267f565b915061297460e08601612710565b5f602082840312156129d7575f5ffd5b5035919050565b5f5f604083850312156129ef575f5ffd5b82356129fa816126da565b91506020830135612a0a816126da565b809150509250929050565b5f5f5f5f6101008587031215612a29575f5ffd5b612a328561267f565b935060208501359250612a4760408601612710565b91506129748660608701612723565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215612afe575f5ffd5b611c7482612710565b5f60208284031215612b17575f5ffd5b813560ff81168114612709575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115611c7757611c77612b27565b602080825281018290525f6001600160fb1b03831115612b6c575f5ffd5b8260051b80856040850137919091016040019392505050565b6001600160401b038181168382160290811690818114612ba757612ba7612b27565b5092915050565b6001600160401b038281168282160390811115611c7757611c77612b27565b5f60208284031215612bdd575f5ffd5b611c748261267f565b80820180821115611c7757611c77612b27565b5f60208284031215612c09575f5ffd5b5051919050565b634e487b7160e01b5f52601260045260245ffd5b5f82612c3257612c32612c10565b500490565b8082028115828204841417611c7757611c77612b27565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f82612cbb57612cbb612c10565b500690565b5f60208284031215612cd0575f5ffd5b8151612709816126da565b5f60208284031215612ceb575f5ffd5b81518015158114612709575f5ffd5b634e487b7160e01b5f52600160045260245ffd5b5f5b83811015612d28578181015183820152602001612d10565b50505f910152565b5f8251612d41818460208701612d0e565b9190910192915050565b602081525f8251806020840152612d69816040850160208701612d0e565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212200355429c82d3f1c76b6e63706a927825f0571974edc5dd291fce981db4bdd92864736f6c634300081b0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000df08f82de32b8d460adbe8d72043e3a7e25a3b39" + } + }, + "0x1670010000000000000000000000000000000005": { + "balance": "0x0", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000005" + } + }, + "0x0167001000000000000000000000000000000005": { + "balance": "0x0", + "code": "0x60806040526004361061013c575f3560e01c806379ba5097116100b3578063910af6ed1161006d578063910af6ed1461036b57806391f3f74b1461038a578063c9a0b8c8146103a9578063ce9d0820146103c8578063e30c3978146103e7578063f2fde38b14610404575f5ffd5b806379ba5097146102aa5780638026b921146102be5780638456cb59146103075780638abf60771461031b5780638da5cb5b1461032f5780638e899f801461034c575f5ffd5b80633f4ba83a116101045780633f4ba83a1461020e5780634f1ef2861461022257806352d1902d146102355780635c975abb1461025757806366ca2bc014610277578063715018a614610296575f5ffd5b806304f3bcec1461014057806319ab453c1461018b5780633075db56146101ac57806332676bc6146101d05780633659cfe6146101ef575b5f5ffd5b34801561014b575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b0390911681526020015b60405180910390f35b348015610196575f5ffd5b506101aa6101a5366004612b69565b610423565b005b3480156101b7575f5ffd5b506101c061055c565b6040519015158152602001610182565b3480156101db575f5ffd5b506101c06101ea366004612b82565b610574565b3480156101fa575f5ffd5b506101aa610209366004612b69565b61058a565b348015610219575f5ffd5b506101aa610651565b6101aa610230366004612c81565b6106ac565b348015610240575f5ffd5b50610249610761565b604051908152602001610182565b348015610262575f5ffd5b506101c060c954610100900460ff1660021490565b348015610282575f5ffd5b50610249610291366004612ccb565b610812565b3480156102a1575f5ffd5b506101aa61081e565b3480156102b5575f5ffd5b506101aa61082f565b3480156102c9575f5ffd5b506102dd6102d8366004612ce2565b6108a6565b60408051825165ffffffffffff168152602080840151908201529181015190820152606001610182565b348015610312575f5ffd5b506101aa6108d8565b348015610326575f5ffd5b5061016e61092d565b34801561033a575f5ffd5b506033546001600160a01b031661016e565b348015610357575f5ffd5b506101c0610366366004612ccb565b61093b565b348015610376575f5ffd5b50610249610385366004612d1d565b61094c565b348015610395575f5ffd5b506102496103a4366004612db0565b61099d565b3480156103b4575f5ffd5b506101aa6103c3366004612dea565b610a08565b3480156103d3575f5ffd5b506101aa6103e2366004612d1d565b610b49565b3480156103f2575f5ffd5b506065546001600160a01b031661016e565b34801561040f575f5ffd5b506101aa61041e366004612b69565b610b65565b5f54610100900460ff161580801561044157505f54600160ff909116105b8061045a5750303b15801561045a57505f5460ff166001145b6104c25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156104e3575f805461ff0019166101001790555b6001600160a01b03821661050a5760405163538ba4f960e01b815260040160405180910390fd5b61051382610bd6565b8015610558575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261056b60c95460ff1690565b60ff1614905090565b5f61057f8383610c34565b151590505b92915050565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036105d25760405162461bcd60e51b81526004016104b990612e03565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b0316610604610c98565b6001600160a01b03161461062a5760405162461bcd60e51b81526004016104b990612e4f565b61063381610cb3565b604080515f8082526020820190925261064e91839190610cbb565b50565b610659610e2a565b61066d60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16106aa335f610e5b565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000051630036106f45760405162461bcd60e51b81526004016104b990612e03565b7f00000000000000000000000001670010000000000000000000000000000000056001600160a01b0316610726610c98565b6001600160a01b03161461074c5760405162461bcd60e51b81526004016104b990612e4f565b61075582610cb3565b61055882826001610cbb565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000516146108005760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016104b9565b505f5160206133d05f395f51905f5290565b5f610584338384610e63565b610826610f30565b6106aa5f610f8a565b60655433906001600160a01b0316811461089d5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016104b9565b61064e81610f8a565b6108cf60405180606001604052805f65ffffffffffff1681526020015f81526020015f81525090565b61058482610fa3565b6108e061102e565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16106aa336001610e5b565b5f610936610c98565b905090565b5f610944825490565b151592915050565b5f61095561102e565b6109628686868686611060565b600160fd5f61097289898961099d565b815260208101919091526040015f908120805460ff1916921515929092179091559695505050505050565b6040516514d251d3905360d21b60208201526001600160c01b031960c085901b1660268201526bffffffffffffffffffffffff19606084901b16602e820152604281018290525f906062016040516020818303038152906040528051906020012090505b9392505050565b336001600160a01b037f00000000000000000000000016700100000000000000000000000000000100011614610a5157604051631f67751f60e01b815260040160405180910390fd5b6040810135610a73576040516362d16b9d60e01b815260040160405180910390fd5b6020810135610a95576040516362d16b9d60e01b815260040160405180910390fd5b60408051808201825260208084018035835292840135908201529060fe905f90610abf9085612ce2565b65ffffffffffff1681526020808201929092526040015f208251815591810151600190920191909155610af490820182612ce2565b65ffffffffffff167ff726c53cbb9e62552afc4a8f1bb1d01fa9272e526a7e3a69eba93b778b3f42a682602001358360400135604051610b3e929190918252602082015260400190565b60405180910390a250565b610b5161102e565b610b5e8585858585611060565b5050505050565b610b6d610f30565b606580546001600160a01b0383166001600160a01b03199091168117909155610b9e6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff16610bfc5760405162461bcd60e51b81526004016104b990612e9b565b610c046111ef565b610c226001600160a01b03821615610c1c5781610f8a565b33610f8a565b5060c9805461ff001916610100179055565b5f6001600160a01b038316610c5c5760405163538ba4f960e01b815260040160405180910390fd5b81610c7a5760405163ec73295960e01b815260040160405180910390fd5b5f610c8646858561099d565b9050610c90815490565b949350505050565b5f5160206133d05f395f51905f52546001600160a01b031690565b61064e610f30565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610cf357610cee83611215565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610d4d575060408051601f3d908101601f19168201909252610d4a91810190612ee6565b60015b610db05760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016104b9565b5f5160206133d05f395f51905f528114610e1e5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016104b9565b50610cee8383836112b0565b610e3e60c954610100900460ff1660021490565b6106aa5760405163bae6e2a960e01b815260040160405180910390fd5b610558610f30565b5f6001600160a01b038416610e8b5760405163538ba4f960e01b815260040160405180910390fd5b82610ea95760405163ec73295960e01b815260040160405180910390fd5b81610ec75760405163ec73295960e01b815260040160405180910390fd5b610ed246858561099d565b828155604080516001600160a01b038716815260208101869052908101829052606081018490529091507f0ad2d108660a211f47bf7fb43a0443cae181624995d3d42b88ee6879d200e9739060800160405180910390a19392505050565b6033546001600160a01b031633146106aa5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104b9565b606580546001600160a01b031916905561064e816112da565b610fcc60405180606001604052805f65ffffffffffff1681526020015f81526020015f81525090565b65ffffffffffff82165f90815260fe6020526040902080548061100257604051633ca5d64760e21b815260040160405180910390fd5b6040805160608101825265ffffffffffff90951685526020850191909152600190910154908301525090565b61104260c954610100900460ff1660021490565b156106aa5760405163bae6e2a960e01b815260040160405180910390fd5b6001600160a01b0384166110875760405163538ba4f960e01b815260040160405180910390fd5b826110a55760405163ec73295960e01b815260040160405180910390fd5b5f6110b186868661099d565b90505f8290036110ef575f81815260fd602052604090205460ff166110e957604051632213945760e11b815260040160405180910390fd5b50610b5e565b5f6110fc83850185612fba565b905080516001146111205760405163073c8b9760e31b815260040160405180910390fd5b5f815f8151811061113357611133613100565b602002602001015190508060800151515f1480611153575060a081015151155b1561117157604051630b92daef60e21b815260040160405180910390fd5b5f61117f8260200151610fa3565b905081604001518160400151146111a9576040516362d16b9d60e01b815260040160405180910390fd5b6111e381604001517f000000000000000000000000B12F3Dd4d34238610f0BfF740C4A8918B11c8E3d868a86608001518760a0015161132b565b50505050505050505050565b5f54610100900460ff166106aa5760405162461bcd60e51b81526004016104b990612e9b565b6001600160a01b0381163b6112825760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016104b9565b5f5160206133d05f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6112b983611438565b5f825111806112c55750805b15610cee576112d48383611477565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f82515f146113d3576040516bffffffffffffffffffffffff19606088901b1660208201525f9061136f90603401604051602081830303815290604052858a61149c565b905080515f0361139257604051630414cd5b60e31b815260040160405180910390fd5b5f61139c826114be565b90506113c1816002815181106113b4576113b4613100565b60200260200101516114d1565b6113ca90613114565b925050506113d6565b50855b5f61140d866040516020016113ed91815260200190565b60408051601f1981840301815291905261140687611550565b8585611563565b90508061142d57604051638d9a4db360e01b815260040160405180910390fd5b509695505050505050565b61144181611215565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610a0183836040518060600160405280602781526020016133f060279139611586565b60605f6114a8856115f0565b90506114b5818585611622565b95945050505050565b60606105846114cc83611e90565b611ee2565b60605f5f5f6114df85612060565b919450925090505f8160018111156114f9576114f961313a565b14611517576040516307fe6cb960e21b815260040160405180910390fd5b6115218284613162565b85511461154157604051630b8aa6f760e31b815260040160405180910390fd5b6114b585602001518484612343565b606061058461155e836123d3565b6124ef565b5f5f61156e866115f0565b905061157c81868686612547565b9695505050505050565b60605f5f856001600160a01b0316856040516115a29190613197565b5f60405180830381855af49150503d805f81146115da576040519150601f19603f3d011682016040523d82523d5f602084013e6115df565b606091505b509150915061157c8683838761256d565b6060818051906020012060405160200161160c91815260200190565b6040516020818303038152906040529050919050565b60605f84511161166c5760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064016104b9565b5f611676846125e5565b90505f611682866126cf565b90505f8460405160200161169891815260200190565b60408051601f1981840301815291905290505f805b8451811015611e39575f8582815181106116c9576116c9613100565b60200260200101519050845183111561173b5760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016104b9565b825f036117d957805180516020918201206040516117889261176292910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6117d45760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016104b9565b6118cf565b80515160201161185f57805180516020918201206040516118039261176292910190815260200190565b6117d45760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016104b9565b8051845160208087019190912082519190920120146118cf5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016104b9565b6118db60106001613162565b81602001515103611a735784518303611a0d5761190881602001516010815181106113b4576113b4613100565b96505f8751116119805760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016104b9565b6001865161198e91906131b2565b8214611a025760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016104b9565b505050505050610a01565b5f858481518110611a2057611a20613100565b602001015160f81c60f81b60f81c90505f82602001518260ff1681518110611a4a57611a4a613100565b60200260200101519050611a5d81612730565b9550611a6a600186613162565b94505050611e30565b600281602001515103611dd7575f611a8a82612754565b90505f815f81518110611a9f57611a9f613100565b016020015160f81c90505f611ab56002836131d9565b611ac09060026131fa565b90505f611ad0848360ff16612777565b90505f611add8a89612777565b90505f611aea83836127ac565b905080835114611b625760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016104b9565b60ff851660021480611b77575060ff85166003145b15611d175780825114611bf25760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016104b9565b611c0c87602001516001815181106113b4576113b4613100565b9c505f8d5111611c845760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016104b9565b60018c51611c9291906131b2565b8814611d065760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016104b9565b505050505050505050505050610a01565b60ff85161580611d2a575060ff85166001145b15611d6957611d568760200151600181518110611d4957611d49613100565b6020026020010151612730565b9950611d62818a613162565b9850611dcc565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016104b9565b505050505050611e30565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016104b9565b506001016116ad565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016104b9565b604080518082019091525f808252602082015281515f03611ec457604051635ab458fb60e01b815260040160405180910390fd5b50604080518082019091528151815260209182019181019190915290565b60605f5f5f611ef085612060565b919450925090506001816001811115611f0b57611f0b61313a565b14611f29576040516325ce355f60e11b815260040160405180910390fd5b8451611f358385613162565b14611f5357604051630b8aa6f760e31b815260040160405180910390fd5b604080516020808252610420820190925290816020015b604080518082019091525f8082526020820152815260200190600190039081611f6a5790505093505f835b8651811015612054575f5f611fd96040518060400160405280858c5f0151611fbd91906131b2565b8152602001858c60200151611fd29190613162565b9052612060565b509150915060405180604001604052808383611ff59190613162565b8152602001848b6020015161200a9190613162565b81525088858151811061201f5761201f613100565b6020908102919091010152612035600185613162565b93506120418183613162565b61204b9084613162565b92505050611f95565b50845250919392505050565b5f5f5f835f01515f0361208657604051635ab458fb60e01b815260040160405180910390fd5b602084015180515f1a607f81116120a8575f60015f945094509450505061233c565b60b7811161213d575f6120bc6080836131b2565b905080875f0151116120e1576040516366c9448560e01b815260040160405180910390fd5b6001838101516001600160f81b031916908214801561210d5750600160ff1b6001600160f81b03198216105b1561212b5760405163babb01dd60e01b815260040160405180910390fd5b506001955093505f925061233c915050565b60bf811161221b575f61215160b7836131b2565b905080875f015111612176576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f8190036121a65760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116121d55760405163babb01dd60e01b815260040160405180910390fd5b6121df8184613162565b8951116121ff576040516366c9448560e01b815260040160405180910390fd5b61220a836001613162565b975095505f945061233c9350505050565b60f78111612265575f61222f60c0836131b2565b905080875f015111612254576040516366c9448560e01b815260040160405180910390fd5b60019550935084925061233c915050565b5f61227160f7836131b2565b905080875f015111612296576040516366c9448560e01b815260040160405180910390fd5b60018301516001600160f81b0319165f8190036122c65760405163babb01dd60e01b815260040160405180910390fd5b600184015160088302610100031c603781116122f55760405163babb01dd60e01b815260040160405180910390fd5b6122ff8184613162565b89511161231f576040516366c9448560e01b815260040160405180910390fd5b61232a836001613162565b975095506001945061233c9350505050565b9193909250565b6060816001600160401b0381111561235d5761235d612baa565b6040519080825280601f01601f191660200182016040528015612387576020820181803683370190505b5090508115610a01575f61239b8486613162565b9050602082015f5b848110156123bb5782810151828201526020016123a3565b848111156123c9575f858301525b5050509392505050565b60605f826040516020016123e991815260200190565b60408051601f1981840301815291905290505f5b60208110156124355781818151811061241857612418613100565b01602001516001600160f81b0319165f03612435576001016123fd565b6124408160206131b2565b6001600160401b0381111561245757612457612baa565b6040519080825280601f01601f191660200182016040528015612481576020820181803683370190505b5092505f5b83518110156124e757828261249a81613213565b9350815181106124ac576124ac613100565b602001015160f81c60f81b8482815181106124c9576124c9613100565b60200101906001600160f81b03191690815f1a905350600101612486565b505050919050565b60608151600114801561251b57506080825f8151811061251157612511613100565b016020015160f81c105b15612524575090565b6125308251608061282f565b8260405160200161160c92919061322b565b919050565b5f6114b584612557878686611622565b8051602091820120825192909101919091201490565b606083156125db5782515f036125d4576001600160a01b0385163b6125d45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104b9565b5081610c90565b610c9083836129d4565b8051606090806001600160401b0381111561260257612602612baa565b60405190808252806020026020018201604052801561264757816020015b60408051808201909152606080825260208201528152602001906001900390816126205790505b5091505f5b818110156126c857604051806040016040528085838151811061267157612671613100565b602002602001015181526020016126a086848151811061269357612693613100565b60200260200101516114be565b8152508382815181106126b5576126b5613100565b602090810291909101015260010161264c565b5050919050565b606080604051905082518060011b603f8101601f191683016040528083525060208401602083015f5b83811015612725578060011b8201818401515f1a8060041c8253600f8116600183015350506001016126f8565b509295945050505050565b60606020825f01511061274b57612746826114d1565b610584565b610584826129fe565b606061058461277283602001515f815181106113b4576113b4613100565b6126cf565b606082518210612795575060408051602081019091525f8152610584565b610a0183838486516127a791906131b2565b612a12565b5f5f82518451106127be5782516127c1565b83515b90505b808210801561281857508282815181106127e0576127e0613100565b602001015160f81c60f81b6001600160f81b03191684838151811061280757612807613100565b01602001516001600160f81b031916145b15612828578160010191506127c4565b5092915050565b6060603883101561289357604080516001808252818301909252906020820181803683370190505090506128638284613259565b60f81b815f8151811061287857612878613100565b60200101906001600160f81b03191690815f1a905350610584565b5f60015b6128a18186613272565b156128c757816128b081613213565b92506128c0905061010082613285565b9050612897565b6128d2826001613162565b6001600160401b038111156128e9576128e9612baa565b6040519080825280601f01601f191660200182016040528015612913576020820181803683370190505b5092506129208483613259565b61292b906037613259565b60f81b835f8151811061294057612940613100565b60200101906001600160f81b03191690815f1a905350600190505b8181116129cc5761010061296f82846131b2565b61297b9061010061337f565b6129859087613272565b61298f919061338a565b60f81b8382815181106129a4576129a4613100565b60200101906001600160f81b03191690815f1a905350806129c481613213565b91505061295b565b505092915050565b8151156129e45781518083602001fd5b8060405162461bcd60e51b81526004016104b9919061339d565b606061058482602001515f845f0151612343565b60608182601f011015612a585760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016104b9565b828284011015612a9b5760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016104b9565b81830184511015612ae25760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016104b9565b606082158015612b005760405191505f825260208201604052612b4a565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015612b39578051835260209283019201612b21565b5050858452601f01601f1916604052505b50949350505050565b80356001600160a01b0381168114612542575f5ffd5b5f60208284031215612b79575f5ffd5b610a0182612b53565b5f5f60408385031215612b93575f5ffd5b612b9c83612b53565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715612be057612be0612baa565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612c0e57612c0e612baa565b604052919050565b5f82601f830112612c25575f5ffd5b81356001600160401b03811115612c3e57612c3e612baa565b612c51601f8201601f1916602001612be6565b818152846020838601011115612c65575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612c92575f5ffd5b612c9b83612b53565b915060208301356001600160401b03811115612cb5575f5ffd5b612cc185828601612c16565b9150509250929050565b5f60208284031215612cdb575f5ffd5b5035919050565b5f60208284031215612cf2575f5ffd5b813565ffffffffffff81168114610a01575f5ffd5b80356001600160401b0381168114612542575f5ffd5b5f5f5f5f5f60808688031215612d31575f5ffd5b612d3a86612d07565b9450612d4860208701612b53565b93506040860135925060608601356001600160401b03811115612d69575f5ffd5b8601601f81018813612d79575f5ffd5b80356001600160401b03811115612d8e575f5ffd5b886020828401011115612d9f575f5ffd5b959894975092955050506020019190565b5f5f5f60608486031215612dc2575f5ffd5b612dcb84612d07565b9250612dd960208501612b53565b929592945050506040919091013590565b5f6060828403128015612dfb575f5ffd5b509092915050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215612ef6575f5ffd5b5051919050565b5f6001600160401b03821115612f1557612f15612baa565b5060051b60200190565b803560048110612542575f5ffd5b5f82601f830112612f3c575f5ffd5b8135612f4f612f4a82612efd565b612be6565b8082825260208201915060208360051b860101925085831115612f70575f5ffd5b602085015b83811015612fb05780356001600160401b03811115612f92575f5ffd5b612fa1886020838a0101612c16565b84525060209283019201612f75565b5095945050505050565b5f60208284031215612fca575f5ffd5b81356001600160401b03811115612fdf575f5ffd5b8201601f81018413612fef575f5ffd5b8035612ffd612f4a82612efd565b8082825260208201915060208360051b85010192508683111561301e575f5ffd5b602084015b8381101561142d5780356001600160401b03811115613040575f5ffd5b850160c0818a03601f19011215613055575f5ffd5b61305d612bbe565b61306960208301612d07565b815261307760408301612d07565b60208201526060820135604082015261309260808301612f1f565b606082015260a08201356001600160401b038111156130af575f5ffd5b6130be8b602083860101612f2d565b60808301525060c08201356001600160401b038111156130dc575f5ffd5b6130eb8b602083860101612f2d565b60a08301525084525060209283019201613023565b634e487b7160e01b5f52603260045260245ffd5b80516020808301519190811015613134575f198160200360031b1b821691505b50919050565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156105845761058461314e565b5f5b8381101561318f578181015183820152602001613177565b50505f910152565b5f82516131a8818460208701613175565b9190910192915050565b818103818111156105845761058461314e565b634e487b7160e01b5f52601260045260245ffd5b5f60ff8316806131eb576131eb6131c5565b8060ff84160691505092915050565b60ff82811682821603908111156105845761058461314e565b5f600182016132245761322461314e565b5060010190565b5f835161323c818460208801613175565b835190830190613250818360208801613175565b01949350505050565b60ff81811683821601908111156105845761058461314e565b5f82613280576132806131c5565b500490565b80820281158282048414176105845761058461314e565b6001815b60018411156132d7578085048111156132bb576132bb61314e565b60018416156132c957908102905b60019390931c9280026132a0565b935093915050565b5f826132ed57506001610584565b816132f957505f610584565b816001811461330f576002811461331957613335565b6001915050610584565b60ff84111561332a5761332a61314e565b50506001821b610584565b5060208310610133831016604e8410600b8410161715613358575081810a610584565b6133645f19848461329c565b805f19048211156133775761337761314e565b029392505050565b5f610a0183836132df565b5f82613398576133986131c5565b500690565b602081525f82518060208401526133bb816040850160208701613175565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220bd35d960c617985d3182acf5dd38fe730a4cc63a62059aa52f9188b94d87db8364736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x1670010000000000000000000000000000000006": { + "balance": "0x0", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0xc64d73fae391b0ac595df47d373c227e7f86156e3d98ea2db53384d097ed1368": "0x0000000000000000000000001670010000000000000000000000000000000001", + "0x874594376407a7a3ecea7d4704f3d74c6c46d5ebede74ed82e228810d8de14e8": "0x0000000000000000000000001670010000000000000000000000000000000002", + "0x2723bcf67bd1580da6815ff7d2e86d877ad3a715975e5ec695c979712859d633": "0x0000000000000000000000001670010000000000000000000000000000000003", + "0x0b9331c6e6848711b59bebda4cb38292225176ce8cfca5d6019d5b562dc3ed9e": "0x0000000000000000000000001670010000000000000000000000000000000004", + "0x30e0422248fc90822e500074357003173b9f5edac82e6cc3679f5f9b5ae0843a": "0x0000000000000000000000001670010000000000000000000000000000000005", + "0xfe44fe816c0baa33783639d99e595cb6de463e186ec113aaed043e42d2c4e279": "0x0000000000000000000000000167001000000000000000000000000000010096", + "0xd2d6c2a7f8afdb0440c97960518d1f1133dc92587d9c6884dbaff6290e06319c": "0x0000000000000000000000000167001000000000000000000000000000010097", + "0x6db8284aa664f2ba76ffc7a2219f82b728ba258e79df0e93d3eb45b5cb231a69": "0x0000000000000000000000000167001000000000000000000000000000010098", + "0xd8268ac552cc4e7bd87f3f4b36d055f134549289cc2d68715bd581a06ffb2631": "0x0000000000000000000000001670010000000000000000000000000000010001", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000006" + } + }, + "0x0167001000000000000000000000000000000006": { + "balance": "0x0", + "code": "0x6080604052600436106100fa575f3560e01c80636c6563f6116100925780638abf6077116100625780638abf6077146102515780638da5cb5b14610265578063b490d87f14610282578063e30c3978146102a1578063f2fde38b146102be575f5ffd5b80636c6563f6146101f6578063715018a61461021557806379ba5097146102295780638456cb591461023d575f5ffd5b80633f4ba83a116100cd5780633f4ba83a1461018d5780634f1ef286146101a157806352d1902d146101b45780635c975abb146101d6575f5ffd5b806304f3bcec146100fe57806319ab453c146101295780633075db561461014a5780633659cfe61461016e575b5f5ffd5b348015610109575f5ffd5b50305b6040516001600160a01b0390911681526020015b60405180910390f35b348015610134575f5ffd5b50610148610143366004610e70565b6102dd565b005b348015610155575f5ffd5b5061015e6103ef565b6040519015158152602001610120565b348015610179575f5ffd5b50610148610188366004610e70565b610407565b348015610198575f5ffd5b506101486104ce565b6101486101af366004610e9d565b610529565b3480156101bf575f5ffd5b506101c86105de565b604051908152602001610120565b3480156101e1575f5ffd5b5061015e60c954610100900460ff1660021490565b348015610201575f5ffd5b5061010c610210366004610f61565b61068f565b348015610220575f5ffd5b506101486106e0565b348015610234575f5ffd5b506101486106f1565b348015610248575f5ffd5b50610148610768565b34801561025c575f5ffd5b5061010c6107bd565b348015610270575f5ffd5b506033546001600160a01b031661010c565b34801561028d575f5ffd5b5061014861029c366004610f9b565b6107cb565b3480156102ac575f5ffd5b506065546001600160a01b031661010c565b3480156102c9575f5ffd5b506101486102d8366004610e70565b61084c565b5f54610100900460ff16158080156102fb57505f54600160ff909116105b806103145750303b15801561031457505f5460ff166001145b61037c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561039d575f805461ff0019166101001790555b6103a6826108bd565b80156103eb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f60026103fe60c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000000000616300361044f5760405162461bcd60e51b815260040161037390610fcd565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b031661048161091b565b6001600160a01b0316146104a75760405162461bcd60e51b815260040161037390611019565b6104b081610936565b604080515f808252602082019092526104cb9183919061093e565b50565b6104d6610aad565b6104ea60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610527335f610ade565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000061630036105715760405162461bcd60e51b815260040161037390610fcd565b7f00000000000000000000000001670010000000000000000000000000000000066001600160a01b03166105a361091b565b6001600160a01b0316146105c95760405162461bcd60e51b815260040161037390611019565b6105d282610936565b6103eb8282600161093e565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000000006161461067d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610373565b505f5160206111375f395f51905f5290565b5f83815260fb602090815260408083208584529091529020546001600160a01b0316801515806106bc5750815b6106d957604051631692906160e11b815260040160405180910390fd5b9392505050565b6106e8610af7565b6105275f610b51565b60655433906001600160a01b0316811461075f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610373565b6104cb81610b51565b610770610b6a565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610527336001610ade565b5f6107c661091b565b905090565b6107d3610af7565b5f83815260fb6020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917f3fd0559a7b01eb7106f9d9ce79ec76bb44f608a295878cce50856e54dba83d35910160405180910390a350505050565b610854610af7565b606580546001600160a01b0383166001600160a01b031990911681179091556108856033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff166108e35760405162461bcd60e51b815260040161037390611065565b6108eb610b9c565b6109096001600160a01b038216156109035781610b51565b33610b51565b5060c9805461ff001916610100179055565b5f5160206111375f395f51905f52546001600160a01b031690565b6104cb610af7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156109765761097183610bc2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109d0575060408051601f3d908101601f191682019092526109cd918101906110b0565b60015b610a335760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610373565b5f5160206111375f395f51905f528114610aa15760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610373565b50610971838383610c5d565b610ac160c954610100900460ff1660021490565b6105275760405163bae6e2a960e01b815260040160405180910390fd5b604051630c2b8f8f60e11b815260040160405180910390fd5b6033546001600160a01b031633146105275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610373565b606580546001600160a01b03191690556104cb81610c87565b610b7e60c954610100900460ff1660021490565b156105275760405163bae6e2a960e01b815260040160405180910390fd5b5f54610100900460ff166105275760405162461bcd60e51b815260040161037390611065565b6001600160a01b0381163b610c2f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610373565b5f5160206111375f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610c6683610cd8565b5f82511180610c725750805b1561097157610c818383610d17565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610ce181610bc2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606106d983836040518060600160405280602781526020016111576027913960605f5f856001600160a01b031685604051610d5391906110e9565b5f60405180830381855af49150503d805f8114610d8b576040519150601f19603f3d011682016040523d82523d5f602084013e610d90565b606091505b5091509150610da186838387610dab565b9695505050505050565b60608315610e195782515f03610e12576001600160a01b0385163b610e125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610373565b5081610e23565b610e238383610e2b565b949350505050565b815115610e3b5781518083602001fd5b8060405162461bcd60e51b81526004016103739190611104565b80356001600160a01b0381168114610e6b575f5ffd5b919050565b5f60208284031215610e80575f5ffd5b6106d982610e55565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610eae575f5ffd5b610eb783610e55565b9150602083013567ffffffffffffffff811115610ed2575f5ffd5b8301601f81018513610ee2575f5ffd5b803567ffffffffffffffff811115610efc57610efc610e89565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610f2b57610f2b610e89565b604052818152828201602001871015610f42575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f73575f5ffd5b833592506020840135915060408401358015158114610f90575f5ffd5b809150509250925092565b5f5f5f60608486031215610fad575f5ffd5b8335925060208401359150610fc460408501610e55565b90509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156110c0575f5ffd5b5051919050565b5f5b838110156110e15781810151838201526020016110c9565b50505f910152565b5f82516110fa8184602087016110c7565b9190910192915050565b602081525f82518060208401526111228160408501602087016110c7565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204fb2d1ba30e4594a22bb35ad3dd2c1455305698cae59d640cce902231e5c29fe64736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x1670010000000000000000000000000000010002": { + "balance": "0x0", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0xd8268ac552cc4e7bd87f3f4b36d055f134549289cc2d68715bd581a06ffb2631": "0x0000000000000000000000001670010000000000000000000000000000010001", + "0xc64d73fae391b0ac595df47d373c227e7f86156e3d98ea2db53384d097ed1368": "0x0000000000000000000000001670010000000000000000000000000000000001", + "0x30e0422248fc90822e500074357003173b9f5edac82e6cc3679f5f9b5ae0843a": "0x0000000000000000000000001670010000000000000000000000000000000005", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010002" + } + }, + "0x0167001000000000000000000000000000010002": { + "balance": "0x0", + "code": "0x6080604052600436106100fa575f3560e01c80636c6563f6116100925780638abf6077116100625780638abf6077146102515780638da5cb5b14610265578063b490d87f14610282578063e30c3978146102a1578063f2fde38b146102be575f5ffd5b80636c6563f6146101f6578063715018a61461021557806379ba5097146102295780638456cb591461023d575f5ffd5b80633f4ba83a116100cd5780633f4ba83a1461018d5780634f1ef286146101a157806352d1902d146101b45780635c975abb146101d6575f5ffd5b806304f3bcec146100fe57806319ab453c146101295780633075db561461014a5780633659cfe61461016e575b5f5ffd5b348015610109575f5ffd5b50305b6040516001600160a01b0390911681526020015b60405180910390f35b348015610134575f5ffd5b50610148610143366004610e70565b6102dd565b005b348015610155575f5ffd5b5061015e6103ef565b6040519015158152602001610120565b348015610179575f5ffd5b50610148610188366004610e70565b610407565b348015610198575f5ffd5b506101486104ce565b6101486101af366004610e9d565b610529565b3480156101bf575f5ffd5b506101c86105de565b604051908152602001610120565b3480156101e1575f5ffd5b5061015e60c954610100900460ff1660021490565b348015610201575f5ffd5b5061010c610210366004610f61565b61068f565b348015610220575f5ffd5b506101486106e0565b348015610234575f5ffd5b506101486106f1565b348015610248575f5ffd5b50610148610768565b34801561025c575f5ffd5b5061010c6107bd565b348015610270575f5ffd5b506033546001600160a01b031661010c565b34801561028d575f5ffd5b5061014861029c366004610f9b565b6107cb565b3480156102ac575f5ffd5b506065546001600160a01b031661010c565b3480156102c9575f5ffd5b506101486102d8366004610e70565b61084c565b5f54610100900460ff16158080156102fb57505f54600160ff909116105b806103145750303b15801561031457505f5460ff166001145b61037c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561039d575f805461ff0019166101001790555b6103a6826108bd565b80156103eb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f60026103fe60c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000216300361044f5760405162461bcd60e51b815260040161037390610fcd565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b031661048161091b565b6001600160a01b0316146104a75760405162461bcd60e51b815260040161037390611019565b6104b081610936565b604080515f808252602082019092526104cb9183919061093e565b50565b6104d6610aad565b6104ea60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610527335f610ade565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036105715760405162461bcd60e51b815260040161037390610fcd565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166105a361091b565b6001600160a01b0316146105c95760405162461bcd60e51b815260040161037390611019565b6105d282610936565b6103eb8282600161093e565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010002161461067d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610373565b505f5160206111375f395f51905f5290565b5f83815260fb602090815260408083208584529091529020546001600160a01b0316801515806106bc5750815b6106d957604051631692906160e11b815260040160405180910390fd5b9392505050565b6106e8610af7565b6105275f610b51565b60655433906001600160a01b0316811461075f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610373565b6104cb81610b51565b610770610b6a565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610527336001610ade565b5f6107c661091b565b905090565b6107d3610af7565b5f83815260fb6020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917f3fd0559a7b01eb7106f9d9ce79ec76bb44f608a295878cce50856e54dba83d35910160405180910390a350505050565b610854610af7565b606580546001600160a01b0383166001600160a01b031990911681179091556108856033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff166108e35760405162461bcd60e51b815260040161037390611065565b6108eb610b9c565b6109096001600160a01b038216156109035781610b51565b33610b51565b5060c9805461ff001916610100179055565b5f5160206111375f395f51905f52546001600160a01b031690565b6104cb610af7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156109765761097183610bc2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109d0575060408051601f3d908101601f191682019092526109cd918101906110b0565b60015b610a335760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610373565b5f5160206111375f395f51905f528114610aa15760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610373565b50610971838383610c5d565b610ac160c954610100900460ff1660021490565b6105275760405163bae6e2a960e01b815260040160405180910390fd5b604051630c2b8f8f60e11b815260040160405180910390fd5b6033546001600160a01b031633146105275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610373565b606580546001600160a01b03191690556104cb81610c87565b610b7e60c954610100900460ff1660021490565b156105275760405163bae6e2a960e01b815260040160405180910390fd5b5f54610100900460ff166105275760405162461bcd60e51b815260040161037390611065565b6001600160a01b0381163b610c2f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610373565b5f5160206111375f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610c6683610cd8565b5f82511180610c725750805b1561097157610c818383610d17565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610ce181610bc2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606106d983836040518060600160405280602781526020016111576027913960605f5f856001600160a01b031685604051610d5391906110e9565b5f60405180830381855af49150503d805f8114610d8b576040519150601f19603f3d011682016040523d82523d5f602084013e610d90565b606091505b5091509150610da186838387610dab565b9695505050505050565b60608315610e195782515f03610e12576001600160a01b0385163b610e125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610373565b5081610e23565b610e238383610e2b565b949350505050565b815115610e3b5781518083602001fd5b8060405162461bcd60e51b81526004016103739190611104565b80356001600160a01b0381168114610e6b575f5ffd5b919050565b5f60208284031215610e80575f5ffd5b6106d982610e55565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610eae575f5ffd5b610eb783610e55565b9150602083013567ffffffffffffffff811115610ed2575f5ffd5b8301601f81018513610ee2575f5ffd5b803567ffffffffffffffff811115610efc57610efc610e89565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610f2b57610f2b610e89565b604052818152828201602001871015610f42575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f73575f5ffd5b833592506020840135915060408401358015158114610f90575f5ffd5b809150509250925092565b5f5f5f60608486031215610fad575f5ffd5b8335925060208401359150610fc460408501610e55565b90509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156110c0575f5ffd5b5051919050565b5f5b838110156110e15781810151838201526020016110c9565b50505f910152565b5f82516110fa8184602087016110c7565b9190910192915050565b602081525f82518060208401526111228160408501602087016110c7565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204fb2d1ba30e4594a22bb35ad3dd2c1455305698cae59d640cce902231e5c29fe64736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x1670010000000000000000000000000000010003": { + "balance": "0x0", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000010003" + } + }, + "0x0167001000000000000000000000000000010003": { + "balance": "0x0", + "code": "0x6080604052600436106101fc575f3560e01c806379ba509711610113578063be32d1f41161009d578063dbaf21451161006d578063dbaf21451461069f578063e30c3978146106b3578063f2fde38b146106d0578063f3fef3a3146106ef578063ffaad6a51461070e575f5ffd5b8063be32d1f4146105ec578063c28f43921461060b578063d44142211461063e578063d703e48014610671575f5ffd5b80638abf6077116100e35780638abf6077146105335780638da5cb5b14610547578063a116e48614610564578063a7ab696114610583578063b6b55f25146105cd575f5ffd5b806379ba5097146104a55780638134f385146104b9578063831518b7146104ec5780638456cb591461051f575f5ffd5b80633659cfe61161019457806352d1902d1161016457806352d1902d1461040b5780635c975abb1461041f57806362d094531461043f578063713b5da214610472578063715018a614610491575f5ffd5b80633659cfe6146103a6578063391396de146103c55780633f4ba83a146103e45780634f1ef286146103f8575f5ffd5b8063247ce85b116101cf578063247ce85b146102cc578063288d5550146103225780633075db561461035557806333613cbe14610379575f5ffd5b806304f3bcec1461020057806312622e5b1461024b57806319ab453c1461029757806322611280146102b8575b5f5ffd5b34801561020b575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b0390911681526020015b60405180910390f35b348015610256575f5ffd5b5061027e7f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610242565b3480156102a2575f5ffd5b506102b66102b1366004611e9a565b61072d565b005b3480156102c3575f5ffd5b506102b661083f565b3480156102d7575f5ffd5b506103066102e6366004611e9a565b60fb6020525f90815260409020805460019091015465ffffffffffff1682565b6040805192835265ffffffffffff909116602083015201610242565b34801561032d575f5ffd5b5061022e7f000000000000000000000000167001000000000000000000000000000001000181565b348015610360575f5ffd5b506103696108d1565b6040519015158152602001610242565b348015610384575f5ffd5b50610398610393366004611e9a565b6108e9565b604051908152602001610242565b3480156103b1575f5ffd5b506102b66103c0366004611e9a565b610908565b3480156103d0575f5ffd5b506103986103df366004611eb3565b6109cf565b3480156103ef575f5ffd5b506102b6610a0c565b6102b6610406366004611f20565b610a65565b348015610416575f5ffd5b50610398610b1a565b34801561042a575f5ffd5b5061036960c954610100900460ff1660021490565b34801561044a575f5ffd5b5061022e7f000000000000000000000000167001000000000000000000000000000000000581565b34801561047d575f5ffd5b506102b661048c366004611fc5565b610bcb565b34801561049c575f5ffd5b506102b6610f05565b3480156104b0575f5ffd5b506102b6610f16565b3480156104c4575f5ffd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156104f7575f5ffd5b506103987f000000000000000000000000000000000000000000000000000000000000000081565b34801561052a575f5ffd5b506102b6610f8d565b34801561053e575f5ffd5b5061022e610fe2565b348015610552575f5ffd5b506033546001600160a01b031661022e565b34801561056f575f5ffd5b5061036961057e366004611eb3565b610ff0565b34801561058e575f5ffd5b506105b67f0000000000000000000000000000000000000000000000000000000000000e1081565b60405165ffffffffffff9091168152602001610242565b3480156105d8575f5ffd5b506102b66105e736600461204a565b611050565b3480156105f7575f5ffd5b506102b6610606366004611eb3565b611077565b348015610616575f5ffd5b5061022e7f000000000000000000000000000000000000000000000000000000000000000081565b348015610649575f5ffd5b506103987f000000000000000000000000000000000000000000000000000000000000000081565b34801561067c575f5ffd5b5061036961068b36600461204a565b60fc6020525f908152604090205460ff1681565b3480156106aa575f5ffd5b506102b66110ab565b3480156106be575f5ffd5b506065546001600160a01b031661022e565b3480156106db575f5ffd5b506102b66106ea366004611e9a565b6111a4565b3480156106fa575f5ffd5b506102b6610709366004611eb3565b611215565b348015610719575f5ffd5b506102b6610728366004611eb3565b6112f5565b5f54610100900460ff161580801561074b57505f54600160ff909116105b806107645750303b15801561076457505f5460ff166001145b6107cc5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156107ed575f805461ff0019166101001790555b6107f682611343565b801561083b575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6108476113a1565b61085160026113d0565b335f90815260fb60205260409020600181015465ffffffffffff16610889576040516387bdc6a960e01b815260040160405180910390fd5b60018101805465ffffffffffff1916905560405133907fc51fdb96728de385ec7859819e3997bc618362ef0dbca0ad051d856866cda3db905f90a2506108cf60016113d0565b565b5f60026108e060c95460ff1690565b60ff1614905090565b6001600160a01b0381165f90815260fb60205260408120545b92915050565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100031630036109505760405162461bcd60e51b81526004016107c390612061565b7f00000000000000000000000001670010000000000000000000000000000100036001600160a01b03166109826113e6565b6001600160a01b0316146109a85760405162461bcd60e51b81526004016107c3906120ad565b6109b181611401565b604080515f808252602082019092526109cc91839190611409565b50565b5f7f00000000000000000000000016700100000000000000000000000000000100016109fa81611573565b610a04848461159c565b949350505050565b610a1461162b565b610a2860c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16108cf335f61165c565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010003163003610aad5760405162461bcd60e51b81526004016107c390612061565b7f00000000000000000000000001670010000000000000000000000000000100036001600160a01b0316610adf6113e6565b6001600160a01b031614610b055760405162461bcd60e51b81526004016107c3906120ad565b610b0e82611401565b61083b82826001611409565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100031614610bb95760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016107c3565b505f51602061248b5f395f51905f5290565b610bd36113a1565b610bdd60026113d0565b610bf4610bef3685900385018561211c565b611664565b5f610c0c610c073686900386018661211c565b6116cf565b5f81815260fc602052604090205490915060ff1615610c3e5760405163499d3e3960e11b815260040160405180910390fd5b60405163910af6ed60e01b81526001600160a01b037f0000000000000000000000001670010000000000000000000000000000000005169063910af6ed90610cd2907f0000000000000000000000000000000000000000000000000000000000000000907f000000000000000000000000000000000000000000000000000000000000000090869089908990600401612199565b6020604051808303815f875af1158015610cee573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1291906121f1565b505f81815260fc60209081526040808320805460ff19166001179055610d4591610d40918801908801612208565b6116fe565b9050805f03610d8f57817f13fdc26e9f397a2fe2a2fbb12eb32f3651369014a9e5f099db2b010ceb810d88865f604051610d809291906122ba565b60405180910390a25050610ef6565b5f610da9610da36060880160408901611e9a565b8361159c565b9050805f03610df457827f13fdc26e9f397a2fe2a2fbb12eb32f3651369014a9e5f099db2b010ceb810d88875f604051610de49291906122ba565b60405180910390a2505050610ef6565b610e046080870160608801611e9a565b6001600160a01b0316610e1d6060880160408901611e9a565b6001600160a01b031603610e89575f600a610e398360046122e9565b610e439190612300565b90505f610e51600a84612300565b90508115610e7257610e72610e6c60808a0160608b01611e9a565b83611746565b8015610e8257610e823382611746565b5050610eb8565b5f610e95600283612300565b90508015610eb657610eb6610eb06080890160608a01611e9a565b82611746565b505b827f13fdc26e9f397a2fe2a2fbb12eb32f3651369014a9e5f099db2b010ceb810d888783604051610eea9291906122ba565b60405180910390a25050505b610f0060016113d0565b505050565b610f0d6117af565b6108cf5f611809565b60655433906001600160a01b03168114610f845760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016107c3565b6109cc81611809565b610f95611822565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16108cf33600161165c565b5f610feb6113e6565b905090565b6001600160a01b0382165f90815260fb60205260408120611031837f000000000000000000000000000000000000000000000000000000000000000061231f565b815410801590610a0457506001015465ffffffffffff16159392505050565b6110586113a1565b61106260026113d0565b61106d333383611854565b6109cc60016113d0565b7f00000000000000000000000016700100000000000000000000000000000100016110a181611573565b610f008383611746565b6110b36113a1565b6110bd60026113d0565b335f90815260fb6020526040902080546110ea57604051634555262b60e01b815260040160405180910390fd5b600181015465ffffffffffff16156111155760405163fb52063b60e01b815260040160405180910390fd5b60018101805465ffffffffffff4281811665ffffffffffff199093169290921790925533917fe670e4e82118d22a1f9ee18920455ebc958bae26a90a05d31d3378788b1b0e4491611188917f0000000000000000000000000000000000000000000000000000000000000e10169061231f565b60405190815260200160405180910390a2506108cf60016113d0565b6111ac6117af565b606580546001600160a01b0383166001600160a01b031990911681179091556111dd6033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61121d6113a1565b61122760026113d0565b335f90815260fb60205260409020600181015465ffffffffffff16158061128c57506001810154611281907f0000000000000000000000000000000000000000000000000000000000000e109065ffffffffffff16612332565b65ffffffffffff1642105b156112df5780547f0000000000000000000000000000000000000000000000000000000000000000906112c0908490612350565b10156112df576040516321f68cc160e21b815260040160405180910390fd5b6112ea3384846118e5565b5061083b60016113d0565b6112fd6113a1565b61130760026113d0565b6001600160a01b03821661132e5760405163e6c4247b60e01b815260040160405180910390fd5b611339338383611854565b61083b60016113d0565b5f54610100900460ff166113695760405162461bcd60e51b81526004016107c390612363565b61137161196f565b61138f6001600160a01b038216156113895781611809565b33611809565b5060c9805461ff001916610100179055565b60026113af60c95460ff1690565b60ff16036108cf5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f51602061248b5f395f51905f52546001600160a01b031690565b6109cc6117af565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561143c57610f0083611995565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611496575060408051601f3d908101601f19168201909252611493918101906121f1565b60015b6114f95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016107c3565b5f51602061248b5f395f51905f5281146115675760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016107c3565b50610f00838383611a30565b336001600160a01b038216146109cc576040516395383ea160e01b815260040160405180910390fd5b6001600160a01b0382165f90815260fb60205260408120805483106115c75780545f825591506115da565b80548392506115d7908390612350565b81555b811561162457836001600160a01b03167f85f32beeaff2d0019a8d196f06790c9a652191759c46643311344fd38920423c8360405161161b91815260200190565b60405180910390a25b5092915050565b61163f60c954610100900460ff1660021490565b6108cf5760405163bae6e2a960e01b815260040160405180910390fd5b61083b6117af565b5f8160200151600181111561167b5761167b612221565b0361169957604051632597709d60e21b815260040160405180910390fd5b6001816020015160018111156116b1576116b1612221565b146109cc57604051631ed6413560e31b815260040160405180910390fd5b5f816040516020016116e191906123ae565b604051602081830303815290604052805190602001209050919050565b5f600182600181111561171357611713612221565b0361173f57507f0000000000000000000000000000000000000000000000000000000000000000919050565b505f919050565b6001600160a01b0382165f90815260fb60205260409020805461176a90839061231f565b81556040518281526001600160a01b038416907f6de6fe586196fa05b73b973026c5fda3968a2933989bff3a0b6bd57644fab6069060200160405180910390a2505050565b6033546001600160a01b031633146108cf5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107c3565b606580546001600160a01b03191690556109cc81611a5a565b61183660c954610100900460ff1660021490565b156108cf5760405163bae6e2a960e01b815260040160405180910390fd5b6118896001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016843084611aab565b6118938282611746565b816001600160a01b0316836001600160a01b03167f9b864b4f862a880bff51342f7085ad151ac52d86cb54e8a4a5a29cf5c0ef15dd836040516118d891815260200190565b60405180910390a3505050565b5f6118f0848361159c565b90506119266001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168483611b16565b836001600160a01b03167f0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b4558260405161196191815260200190565b60405180910390a250505050565b5f54610100900460ff166108cf5760405162461bcd60e51b81526004016107c390612363565b6001600160a01b0381163b611a025760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016107c3565b5f51602061248b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a3983611b46565b5f82511180611a455750805b15610f0057611a548383611b85565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b0380851660248301528316604482015260648101829052611a549085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611bb1565b6040516001600160a01b038316602482015260448101829052610f0090849063a9059cbb60e01b90606401611adf565b611b4f81611995565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611baa83836040518060600160405280602781526020016124ab60279139611c84565b9392505050565b5f611c05826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611cf89092919063ffffffff16565b905080515f1480611c25575080806020019051810190611c2591906123fc565b610f005760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107c3565b60605f5f856001600160a01b031685604051611ca0919061243d565b5f60405180830381855af49150503d805f8114611cd8576040519150601f19603f3d011682016040523d82523d5f602084013e611cdd565b606091505b5091509150611cee86838387611d06565b9695505050505050565b6060610a0484845f85611d7e565b60608315611d745782515f03611d6d576001600160a01b0385163b611d6d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107c3565b5081610a04565b610a048383611e55565b606082471015611ddf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107c3565b5f5f866001600160a01b03168587604051611dfa919061243d565b5f6040518083038185875af1925050503d805f8114611e34576040519150601f19603f3d011682016040523d82523d5f602084013e611e39565b606091505b5091509150611e4a87838387611d06565b979650505050505050565b815115611e655781518083602001fd5b8060405162461bcd60e51b81526004016107c39190612458565b80356001600160a01b0381168114611e95575f5ffd5b919050565b5f60208284031215611eaa575f5ffd5b611baa82611e7f565b5f5f60408385031215611ec4575f5ffd5b611ecd83611e7f565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611f1857611f18611edb565b604052919050565b5f5f60408385031215611f31575f5ffd5b611f3a83611e7f565b9150602083013567ffffffffffffffff811115611f55575f5ffd5b8301601f81018513611f65575f5ffd5b803567ffffffffffffffff811115611f7f57611f7f611edb565b611f92601f8201601f1916602001611eef565b818152866020838501011115611fa6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f83850360a0811215611fd8575f5ffd5b6080811215611fe5575f5ffd5b50839250608084013567ffffffffffffffff811115612002575f5ffd5b8401601f81018613612012575f5ffd5b803567ffffffffffffffff811115612028575f5ffd5b866020828401011115612039575f5ffd5b939660209190910195509293505050565b5f6020828403121561205a575f5ffd5b5035919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b803565ffffffffffff81168114611e95575f5ffd5b803560028110611e95575f5ffd5b5f608082840312801561212d575f5ffd5b506040516080810167ffffffffffffffff8111828210171561215157612151611edb565b60405261215d836120f9565b815261216b6020840161210e565b602082015261217c60408401611e7f565b604082015261218d60608401611e7f565b60608201529392505050565b67ffffffffffffffff861681526001600160a01b0385166020820152604081018490526080606082018190528101829052818360a08301375f81830160a090810191909152601f909201601f19160101949350505050565b5f60208284031215612201575f5ffd5b5051919050565b5f60208284031215612218575f5ffd5b611baa8261210e565b634e487b7160e01b5f52602160045260245ffd5b6002811061225157634e487b7160e01b5f52602160045260245ffd5b9052565b65ffffffffffff612265826120f9565b1682526122746020820161210e565b6122816020840182612235565b506001600160a01b0361229660408301611e7f565b1660408301526001600160a01b036122b060608301611e7f565b1660608301525050565b60a081016122c88285612255565b8260808301529392505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610902576109026122d5565b5f8261231a57634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610902576109026122d5565b65ffffffffffff8181168382160190811115610902576109026122d5565b81810381811115610902576109026122d5565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b815165ffffffffffff16815260208083015160808301916123d190840182612235565b506040838101516001600160a01b039081169184019190915260609384015116929091019190915290565b5f6020828403121561240c575f5ffd5b81518015158114611baa575f5ffd5b5f5b8381101561243557818101518382015260200161241d565b50505f910152565b5f825161244e81846020870161241b565b9190910192915050565b602081525f825180602084015261247681604085016020870161241b565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207d56c711440e12545d7aadb39c93a465cb78c8cb8398bb0c83f97516036b245c64736f6c634300081e0033" + }, + "0x1670010000000000000000000000000000000001": { + "balance": "0x033b258556117b43a1e00000", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000001" + } + }, + "0x0167001000000000000000000000000000000001": { + "balance": "0x0", + "code": "0x6080604052600436106101fc575f3560e01c8063715018a611610113578063a730cdfb1161009d578063d0496d6a1161006d578063d0496d6a146105e2578063d1aaa5df1461062a578063e30c39781461064a578063eefbf17e14610667578063f2fde38b146106a5575f5ffd5b8063a730cdfb14610578578063b8acae0e1461058e578063be880c81146105ad578063c012fa77146105c3575f5ffd5b80638abf6077116100e35780638abf6077146104cb5780638da5cb5b146104df5780638e3881a9146104fc578063913b16cb1461053a5780639efc7a2e14610559575f5ffd5b8063715018a61461045b57806379ba50971461046f5780637cbadfaa146104835780638456cb59146104b7575f5ffd5b80633c6cf4731161019457806352d1902d1161016457806352d1902d146103b65780635862f6e1146103ca5780635c975abb146103e957806360620c6b1461040957806362d0945314610428575f5ffd5b80633c6cf473146103305780633f4ba83a1461036b578063422770fa1461037f5780634f1ef286146103a3575f5ffd5b80631bdb0037116101cf5780631bdb00371461029f5780632035065e146102c05780633075db56146102ed5780633659cfe614610311575f5ffd5b80630432873c1461020057806304f3bcec14610221578063069489a21461026c57806319ab453c14610280575b5f5ffd5b34801561020b575f5ffd5b5061021f61021a3660046129a4565b6106c4565b005b34801561022c575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b0390911681526020015b60405180910390f35b348015610277575f5ffd5b5061021f6108fc565b34801561028b575f5ffd5b5061021f61029a366004612a16565b6109b3565b6102b26102ad366004612a31565b610a79565b604051610263929190612bbd565b3480156102cb575f5ffd5b506102df6102da366004612bd5565b610d8b565b604051610263929190612c92565b3480156102f8575f5ffd5b506103016111c7565b6040519015158152602001610263565b34801561031c575f5ffd5b5061021f61032b366004612a16565b6111df565b34801561033b575f5ffd5b5061035e61034a366004612cbd565b60fc6020525f908152604090205460ff1681565b6040516102639190612cd4565b348015610376575f5ffd5b5061021f6112a6565b34801561038a575f5ffd5b5061039562030d4081565b604051908152602001610263565b61021f6103b1366004612da8565b611301565b3480156103c1575f5ffd5b506103956113b6565b3480156103d5575f5ffd5b506103016103e4366004612bd5565b611468565b3480156103f4575f5ffd5b5061030160c954610100900460ff1660021490565b348015610414575f5ffd5b50610301610423366004612a31565b6114e3565b348015610433575f5ffd5b5061024f7f000000000000000000000000167001000000000000000000000000000000000581565b348015610466575f5ffd5b5061021f6115b7565b34801561047a575f5ffd5b5061021f6115c8565b34801561048e575f5ffd5b506104a261049d366004612cbd565b61163f565b60405163ffffffff9091168152602001610263565b3480156104c2575f5ffd5b5061021f61165d565b3480156104d6575f5ffd5b5061024f6116b2565b3480156104ea575f5ffd5b506033546001600160a01b031661024f565b348015610507575f5ffd5b5061051b610516366004612e0a565b6116c0565b6040805192151583526001600160a01b03909116602083015201610263565b348015610545575f5ffd5b5061021f610554366004612a31565b6116ec565b348015610564575f5ffd5b5061021f610573366004612bd5565b61183a565b348015610583575f5ffd5b506104a26201d4c081565b348015610599575f5ffd5b506103016105a8366004612bd5565b611a8f565b3480156105b8575f5ffd5b506104a2620c350081565b3480156105ce575f5ffd5b506103956105dd366004612f23565b611af6565b3480156105ed575f5ffd5b506105f6611b25565b60408051825181526020808401516001600160a01b031690820152918101516001600160401b031690820152606001610263565b348015610635575f5ffd5b50610395610644366004612cbd565b60031890565b348015610655575f5ffd5b506065546001600160a01b031661024f565b348015610672575f5ffd5b5060fb5461068d90600160401b90046001600160401b031681565b6040516001600160401b039091168152602001610263565b3480156106b0575f5ffd5b5061021f6106bf366004612a16565b611bcc565b6106d460e0830160c08401612e0a565b6106dd81611c3d565b6106ed60a0840160808501612e0a565b6106f681611c66565b6106fe611ca2565b610706611cd4565b6107106002611d03565b5f61071d6105dd86612f54565b905061072a816001611d19565b5f610755867f0000000000000000000000001670010000000000000000000000000000000005611d6b565b156107a0576107998661012001356188b860405180602001604052805f8152508960e00160208101906107889190612a16565b6001600160a01b0316929190611e3d565b905061081a565b6107b06060870160408801612f5f565b63ffffffff1615806107bf5750845b80156107ed57506107d7610100870160e08801612a16565b6001600160a01b0316336001600160a01b031614155b1561080b576040516372b6e1c360e11b815260040160405180910390fd5b61081786835a5f611e7a565b90505b80156108305761082b826002611f9e565b6108ea565b84156108d157610841826003611f9e565b60405163019b28af60e61b81526003831860048201527f00000000000000000000000016700100000000000000000000000000000000056001600160a01b0316906366ca2bc0906024016020604051808303815f875af11580156108a7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108cb9190612f78565b506108ea565b60405163161e3ead60e01b815260040160405180910390fd5b50506108f66001611d03565b50505050565b61090461205b565b5f54600290610100900460ff1615801561092457505f5460ff8083169116105b6109495760405162461bcd60e51b815260040161094090612f8f565b60405180910390fd5b5f805460fb805467ffffffffffffffff1916905560ff82815561010083815561ff001991851661ffff19909316831717169091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b5f54610100900460ff16158080156109d157505f54600160ff909116105b806109ea5750303b1580156109ea57505f5460ff166001145b610a065760405162461bcd60e51b815260040161094090612f8f565b5f805460ff191660011790558015610a27575f805461ff0019166101001790555b610a30826120b5565b8015610a75575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201839052610140820152610adf60c0840160a08501612a16565b610ae881612113565b610af9610100850160e08601612a16565b610b0281612113565b610b1461012086016101008701612a16565b610b1d81612113565b610b2d60e0870160c08801612e0a565b610b3681611c66565b610b3e611ca2565b610b46611cd4565b610b506002611d03565b610b606060880160408901612f5f565b63ffffffff165f03610ba857610b7c6040880160208901612e0a565b6001600160401b031615610ba35760405163c9f5178760e01b815260040160405180910390fd5b610bd0565b610bb18761213a565b5f03610bd0576040516308c2ad5360e01b815260040160405180910390fd5b5f610be461051660e08a0160c08b01612e0a565b50905080610c0557604051631c6c777560e31b815260040160405180910390fd5b34610c1660408a0160208b01612e0a565b610c2e906001600160401b03166101208b0135612ff1565b14610c4c57604051634ac2abdf60e11b815260040160405180910390fd5b610c5588612f54565b60fb8054919750600160401b9091046001600160401b0316906008610c7983613004565b82546101009290920a6001600160401b03818102199093169183160217909155908116875233606088015246166080870152610cb486611af6565b9650867fe33fd33b4f45b95b1c196242240c5b5233129d724b578f95b66ce8d8aae9351787604051610ce6919061302e565b60405180910390a260405163019b28af60e61b8152600481018890527f00000000000000000000000016700100000000000000000000000000000000056001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015610d52573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d769190612f78565b5050610d826001611d03565b50505050915091565b5f5f610d95611ca2565b610d9d611cd4565b610da76002611d03565b5f5a905046610dbc60e0880160c08901612e0a565b6001600160401b031614610de357604051631c6c777560e31b815260040160405180910390fd5b610df360a0870160808801612e0a565b6001600160401b03161580610e1f575046610e1460a0880160808901612e0a565b6001600160401b0316145b15610e3d57604051631c6c777560e31b815260040160405180910390fd5b604080516080810182525f808252602082018190529181018290526060810191909152610e71610100880160e08901612a16565b6001600160a01b0316331480156060830152610ee057610e976060880160408901612f5f565b63ffffffff165f03610ebc576040516372b6e1c360e11b815260040160405180910390fd5b62030d40851115610ee057604051631e3b03c960e01b815260040160405180910390fd5b5f610eed6105dd89612f54565b9050610ef9815f611d19565b63ffffffff86166020830152610f417f000000000000000000000000167001000000000000000000000000000000000582610f3a60a08c0160808d01612e0a565b8a8a61218d565b63ffffffff1660408301525f610f77897f0000000000000000000000001670010000000000000000000000000000000005611d6b565b15610f9057506002945060019350610120880135610fd7565b5f8360600151610fa0575a610fa9565b610fa98a61213a565b9050610fbb8a84838760600151611e7a565b15610fcc57600296505f9550610fd5565b60019650600295505b505b610fe760408a0160208b01612e0a565b6001600160401b0316156111455761100560408a0160208b01612e0a565b611018906001600160401b031682612ff1565b90508260600151801561103f575061103660608a0160408b01612f5f565b63ffffffff1615155b1561114557604083015163ffffffff16614e20025a61107c6110656101408d018d613040565b6020601f909101819004026101a00160041b919050565b63ffffffff9081168701919091036201d4c00181168086525f9183916110a59183919061223816565b0390505f6110b960608d0160408e01612f5f565b63ffffffff166110cf60408e0160208f01612e0a565b6001600160401b03168302816110e7576110e7613089565b0490505f48830290505f61112b8e60200160208101906111079190612e0a565b6001600160401b0316848410156111235784840160011c611125565b845b9061224d565b9586900395905061113f33826188b8612261565b50505050505b61116d816188b861115d6101008d0160e08e01612a16565b6001600160a01b03169190612261565b6111778287611f9e565b817f8580f507761043ecdd2bdca084d6fb0109150b3d9842d854d34e3dea6d69387d8a856040516111a9929190613221565b60405180910390a2505050506111bf6001611d03565b935093915050565b5f60026111d660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036112275760405162461bcd60e51b815260040161094090613275565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b03166112596122a4565b6001600160a01b03161461127f5760405162461bcd60e51b8152600401610940906132c1565b611288816122bf565b604080515f808252602082019092526112a3918391906122c7565b50565b6112ae612431565b6112c260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16112ff335f612462565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000000011630036113495760405162461bcd60e51b815260040161094090613275565b7f00000000000000000000000001670010000000000000000000000000000000016001600160a01b031661137b6122a4565b6001600160a01b0316146113a15760405162461bcd60e51b8152600401610940906132c1565b6113aa826122bf565b610a75828260016122c7565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000116146114555760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610940565b505f5160206134db5f395f51905f525b90565b5f4661147a60a0860160808701612e0a565b6001600160401b03161461148f57505f6114dc565b6114d97f00000000000000000000000016700100000000000000000000000000000000056114c26106446105dd88612f54565b6114d260e0880160c08901612e0a565b868661246a565b90505b9392505050565b5f466114f560a0840160808501612e0a565b6001600160401b03161461150a57505f919050565b6001600160a01b037f0000000000000000000000001670010000000000000000000000000000000005166332676bc6306115466105dd86612f54565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa15801561158d573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115b1919061330d565b92915050565b6115bf61205b565b6112ff5f6124ec565b60655433906001600160a01b031681146116365760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610940565b6112a3816124ec565b5f6115b1620c35006101a06020601f8601819004020160041b613328565b611665611ca2565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16112ff336001612462565b5f6116bb6122a4565b905090565b5f5f6116d7836562726964676560d01b6001612505565b6001600160a01b038116151594909350915050565b6116fc60e0820160c08301612e0a565b61170581611c3d565b61171560a0830160808401612e0a565b61171e81611c66565b611726611ca2565b61172e611cd4565b6117386002611d03565b611749610100840160e08501612a16565b6001600160a01b0316336001600160a01b03161461177a576040516372b6e1c360e11b815260040160405180910390fd5b5f6117876105dd85612f54565b9050611794816001611d19565b61179f816003611f9e565b60405163019b28af60e61b81526003821860048201527f00000000000000000000000016700100000000000000000000000000000000056001600160a01b0316906366ca2bc0906024016020604051808303815f875af1158015611805573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118299190612f78565b50506118356001611d03565b505050565b61184a60a0840160808501612e0a565b61185381611c3d565b61186360e0850160c08601612e0a565b61186c81611c66565b611874611ca2565b61187c611cd4565b6118866002611d03565b5f6118936105dd87612f54565b905061189f815f611d19565b604051631933b5e360e11b8152306004820152602481018290527f00000000000000000000000016700100000000000000000000000000000000056001600160a01b0316906332676bc690604401602060405180830381865afa158015611908573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061192c919061330d565b6119495760405163ab035ad560e01b815260040160405180910390fd5b6119887f00000000000000000000000016700100000000000000000000000000000000056003831861198160e08a0160c08b01612e0a565b888861218d565b50611994816004611f9e565b6119bd62bc399d60e11b6119ae6080890160608a01612a16565b6001600160a01b0316906125a7565b15611a61576119dc81306119d760a08a0160808b01612e0a565b612677565b6119ec6080870160608801612a16565b6001600160a01b0316630178733a87610120013588846040518463ffffffff1660e01b8152600401611a1f929190613344565b5f604051808303818588803b158015611a36575f5ffd5b505af1158015611a48573d5f5f3e3d5ffd5b5050505050611a5c5f195f1b5f1980612677565b611a7d565b611a7d6101208701356188b861115d60c08a0160a08b01612a16565b50611a886001611d03565b5050505050565b5f46611aa160e0860160c08701612e0a565b6001600160401b031614611ab657505f6114dc565b6114d97f0000000000000000000000001670010000000000000000000000000000000005611ae66105dd87612f54565b6114d260a0880160808901612e0a565b5f81604051602001611b089190613365565b604051602081830303815290604052805190602001209050919050565b604080516060810182525f8082526020820181905291810191909152611b9c604080516060810182525f8082526020820181905291810191909152506040805160608101825260fd54815260fe546001600160a01b0381166020830152600160a01b90046001600160401b03169181019190915290565b80519091501580611bae575080515f19145b1561146557604051635ceed17360e01b815260040160405180910390fd5b611bd461205b565b606580546001600160a01b0383166001600160a01b03199091168117909155611c056033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b46816001600160401b0316146112a357604051631c6c777560e31b815260040160405180910390fd5b6001600160401b0381161580611c84575046816001600160401b0316145b156112a357604051631c6c777560e31b815260040160405180910390fd5b611cb660c954610100900460ff1660021490565b156112ff5760405163bae6e2a960e01b815260040160405180910390fd5b6002611ce260c95460ff1690565b60ff16036112ff5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b806004811115611d2b57611d2b612c6a565b5f83815260fc602052604090205460ff166004811115611d4d57611d4d612c6a565b14610a75576040516319d893ad60e21b815260040160405180910390fd5b5f80611d7f61012085016101008601612a16565b6001600160a01b031603611d95575060016115b1565b30611da861012085016101008601612a16565b6001600160a01b031603611dbe575060016115b1565b6001600160a01b038216611dda61012085016101008601612a16565b6001600160a01b031603611df0575060016115b1565b6004611e00610140850185613040565b9050101580156114dc5750637f07c94760e01b611e21610140850185613040565b611e2a9161339b565b6001600160e01b03191614159392505050565b5f6001600160a01b038516611e6557604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b5f30611e8c6080870160608801612a16565b6001600160a01b031603611ea257611ea26133d3565b610120850135158015611ec25750611ebe610140860186613040565b1590505b15611ecf57506001611f96565b825f03611edd57505f611f96565b611f0184611ef16080880160608901612a16565b6119d760a0890160808a01612e0a565b5f611f1461012087016101008801612a16565b90506101208601355f611f2b610140890189613040565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92018290525084519495509384935083925090506020850186888cf194505a90508515611f8557611f8581886126cc565b611f915f198080612677565b505050505b949350505050565b806004811115611fb057611fb0612c6a565b5f83815260fc602052604090205460ff166004811115611fd257611fd2612c6a565b03611ff0576040516319d893ad60e21b815260040160405180910390fd5b5f82815260fc60205260409020805482919060ff1916600183600481111561201a5761201a612c6a565b0217905550817f6c51882bc2ed67617f77a1e9b9a25d2caad8448647ecb093b357a603b25756348260405161204f9190612cd4565b60405180910390a25050565b6033546001600160a01b031633146112ff5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610940565b5f54610100900460ff166120db5760405162461bcd60e51b8152600401610940906133e7565b6120e36126e0565b6121016001600160a01b038216156120fb57816124ec565b336124ec565b5060c9805461ff001916610100179055565b6001600160a01b0381166112a35760405163538ba4f960e01b815260040160405180910390fd5b5f8061215461214d610140850185613040565b905061163f565b63ffffffff169050806121856121706060860160408701612f5f565b63ffffffff168361223890919063ffffffff16565b039392505050565b5f856001600160a01b031663910af6ed856121b2876562726964676560d01b5f612505565b8887876040518663ffffffff1660e01b81526004016121d5959493929190613432565b6020604051808303815f875af192505050801561220f575060408051601f3d908101601f1916820190925261220c91810190612f78565b60015b61222c576040516314504c7360e31b815260040160405180910390fd5b90505b95945050505050565b5f81831161224657816114dc565b5090919050565b5f81831161225b57826114dc565b50919050565b815f0361226d57505050565b61228783838360405180602001604052805f815250611e3d565b61183557604051634c67134d60e11b815260040160405180910390fd5b5f5160206134db5f395f51905f52546001600160a01b031690565b6112a361205b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156122fa5761183583612706565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612354575060408051601f3d908101601f1916820190925261235191810190612f78565b60015b6123b75760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610940565b5f5160206134db5f395f51905f5281146124255760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610940565b506118358383836127a1565b61244560c954610100900460ff1660021490565b6112ff5760405163bae6e2a960e01b815260040160405180910390fd5b610a7561205b565b5f856001600160a01b031663ce9d08208561248f876562726964676560d01b5f612505565b8887876040518663ffffffff1660e01b81526004016124b2959493929190613432565b5f6040518083038186803b1580156124c8575f5ffd5b505afa9250505080156124d9575060015b6124e457505f61222f565b50600161222f565b606580546001600160a01b03191690556112a3816127c5565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015612583573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114d99190613473565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251612603919061348e565b5f60405180830381855afa9150503d805f811461263b576040519150601f19603f3d011682016040523d82523d5f602084013e612640565b606091505b5091509150818015612653575080516020145b1561266f578080602001905181019061266c919061330d565b92505b505092915050565b604080516060810182528481526001600160a01b03909316602084018190526001600160401b03909216920182905260fd9290925560fe8054600160a01b9092026001600160e01b0319909216909217179055565b6126d7603f826134a9565b821015610a7557fe5b5f54610100900460ff166112ff5760405162461bcd60e51b8152600401610940906133e7565b6001600160a01b0381163b6127735760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610940565b5f5160206134db5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6127aa83612816565b5f825111806127b65750805b15611835576108f68383612855565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b61281f81612706565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606114dc83836040518060600160405280602781526020016134fb6027913960605f5f856001600160a01b031685604051612891919061348e565b5f60405180830381855af49150503d805f81146128c9576040519150601f19603f3d011682016040523d82523d5f602084013e6128ce565b606091505b50915091506128df868383876128e9565b9695505050505050565b606083156129575782515f03612950576001600160a01b0385163b6129505760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610940565b5081611f96565b611f96838381511561296c5781518083602001fd5b8060405162461bcd60e51b815260040161094091906134c8565b5f610160828403121561225b575f5ffd5b80151581146112a3575f5ffd5b5f5f604083850312156129b5575f5ffd5b82356001600160401b038111156129ca575f5ffd5b6129d685828601612986565b92505060208301356129e781612997565b809150509250929050565b6001600160a01b03811681146112a3575f5ffd5b8035612a11816129f2565b919050565b5f60208284031215612a26575f5ffd5b81356114dc816129f2565b5f60208284031215612a41575f5ffd5b81356001600160401b03811115612a56575f5ffd5b611f9684828501612986565b5f5b83811015612a7c578181015183820152602001612a64565b50505f910152565b5f8151808452612a9b816020860160208601612a62565b601f01601f19169290920160200192915050565b80516001600160401b031682525f6020820151612ad760208501826001600160401b03169052565b506040820151612aef604085018263ffffffff169052565b506060820151612b0a60608501826001600160a01b03169052565b506080820151612b2560808501826001600160401b03169052565b5060a0820151612b4060a08501826001600160a01b03169052565b5060c0820151612b5b60c08501826001600160401b03169052565b5060e0820151612b7660e08501826001600160a01b03169052565b50610100820151612b936101008501826001600160a01b03169052565b50610120820151610120840152610140820151610160610140850152611f96610160850182612a84565b828152604060208201525f6114d96040830184612aaf565b5f5f5f60408486031215612be7575f5ffd5b83356001600160401b03811115612bfc575f5ffd5b612c0886828701612986565b93505060208401356001600160401b03811115612c23575f5ffd5b8401601f81018613612c33575f5ffd5b80356001600160401b03811115612c48575f5ffd5b866020828401011115612c59575f5ffd5b939660209190910195509293505050565b634e487b7160e01b5f52602160045260245ffd5b60058110612c8e57612c8e612c6a565b9052565b60408101612ca08285612c7e565b60048310612cb057612cb0612c6a565b8260208301529392505050565b5f60208284031215612ccd575f5ffd5b5035919050565b602081016115b18284612c7e565b634e487b7160e01b5f52604160045260245ffd5b60405161016081016001600160401b0381118282101715612d1957612d19612ce2565b60405290565b5f82601f830112612d2e575f5ffd5b81356001600160401b03811115612d4757612d47612ce2565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612d7557612d75612ce2565b604052818152838201602001851015612d8c575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612db9575f5ffd5b8235612dc4816129f2565b915060208301356001600160401b03811115612dde575f5ffd5b612dea85828601612d1f565b9150509250929050565b80356001600160401b0381168114612a11575f5ffd5b5f60208284031215612e1a575f5ffd5b6114dc82612df4565b803563ffffffff81168114612a11575f5ffd5b5f6101608284031215612e47575f5ffd5b612e4f612cf6565b9050612e5a82612df4565b8152612e6860208301612df4565b6020820152612e7960408301612e23565b6040820152612e8a60608301612a06565b6060820152612e9b60808301612df4565b6080820152612eac60a08301612a06565b60a0820152612ebd60c08301612df4565b60c0820152612ece60e08301612a06565b60e0820152612ee06101008301612a06565b61010082015261012082810135908201526101408201356001600160401b03811115612f0a575f5ffd5b612f1684828501612d1f565b6101408301525092915050565b5f60208284031215612f33575f5ffd5b81356001600160401b03811115612f48575f5ffd5b611f9684828501612e36565b5f6115b13683612e36565b5f60208284031215612f6f575f5ffd5b6114dc82612e23565b5f60208284031215612f88575f5ffd5b5051919050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156115b1576115b1612fdd565b5f6001600160401b0382166001600160401b03810361302557613025612fdd565b60010192915050565b602081525f6114dc6020830184612aaf565b5f5f8335601e19843603018112613055575f5ffd5b8301803591506001600160401b0382111561306e575f5ffd5b602001915036819003821315613082575f5ffd5b9250929050565b634e487b7160e01b5f52601260045260245ffd5b5f5f8335601e198436030181126130b2575f5ffd5b83016020810192503590506001600160401b038111156130d0575f5ffd5b803603821315613082575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6131208261311383612df4565b6001600160401b03169052565b5f61312d60208301612df4565b6001600160401b0316602084015261314760408301612e23565b63ffffffff16604084015261315e60608301612a06565b6001600160a01b0316606084015261317860808301612df4565b6001600160401b0316608084015261319260a08301612a06565b6001600160a01b031660a08401526131ac60c08301612df4565b6001600160401b031660c08401526131c660e08301612a06565b6001600160a01b031660e08401526131e16101008301612a06565b6001600160a01b0316610100840152610120828101359084015261320961014083018361309d565b61016061014086015261266c610160860182846130de565b60a081525f61323360a0830185613106565b905063ffffffff835116602083015263ffffffff602084015116604083015263ffffffff60408401511660608301526060830151151560808301529392505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f6020828403121561331d575f5ffd5b81516114dc81612997565b63ffffffff81811683821601908111156115b1576115b1612fdd565b604081525f6133566040830185613106565b90508260208301529392505050565b60408152600d60408201526c5441494b4f5f4d45535341474560981b6060820152608060208201525f6114dc6080830184612aaf565b80356001600160e01b031981169060048410156133cc576001600160e01b0319600485900360031b81901b82161691505b5092915050565b634e487b7160e01b5f52600160045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160401b038616815260018060a01b0385166020820152836040820152608060608201525f6134686080830184866130de565b979650505050505050565b5f60208284031215613483575f5ffd5b81516114dc816129f2565b5f825161349f818460208701612a62565b9190910192915050565b5f826134c357634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f6114dc6020830184612a8456fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220230e603da4c184e002035b58f07991bdee50ceb87c0a20c527e9b102bda6897b64736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x1670010000000000000000000000000000000002": { + "balance": "0x0", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000201", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000002" + } + }, + "0x0167001000000000000000000000000000000002": { + "balance": "0x0", + "code": "0x60806040526004361061017b575f3560e01c80635c975abb116100cd5780638abf607711610087578063b84d9ffe11610062578063b84d9ffe1461045e578063d56ad7ac1461047e578063e30c397814610494578063f2fde38b146104b1575f5ffd5b80638abf6077146103fd5780638da5cb5b146104115780639aa8605c1461042e575f5ffd5b80635c975abb1461034e57806367090ccf1461036e578063715018a6146103ae57806379ba5097146103c25780637f07c947146103d65780638456cb59146103e9575f5ffd5b80630ecd8be9116101385780633659cfe6116101135780633659cfe6146102f45780633f4ba83a146103135780634f1ef2861461032757806352d1902d1461033a575f5ffd5b80630ecd8be9146102a257806319ab453c146102c15780633075db56146102e0575f5ffd5b80630178733a1461017f57806301ffc9a71461019457806304f3bcec146101c8578063066fe7b41461020e57806306fdde03146102535780630e7eeb7914610273575b5f5ffd5b61019261018d36600461301d565b6104d0565b005b34801561019f575f5ffd5b506101b36101ae366004613063565b610618565b60405190151581526020015b60405180910390f35b3480156101d3575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b0390911681526020016101bf565b348015610219575f5ffd5b5061024561022836600461309e565b61013060209081525f928352604080842090915290825290205481565b6040519081526020016101bf565b34801561025e575f5ffd5b506a195c98cc8c17dd985d5b1d60aa1b610245565b34801561027e575f5ffd5b506101b361028d3660046130cc565b61012f6020525f908152604090205460ff1681565b3480156102ad575f5ffd5b506101f66102bc3660046130e7565b610668565b3480156102cc575f5ffd5b506101926102db3660046130cc565b610d4f565b3480156102eb575f5ffd5b506101b3610e61565b3480156102ff575f5ffd5b5061019261030e3660046130cc565b610e79565b34801561031e575f5ffd5b50610192610f40565b610192610335366004613237565b610f9b565b348015610345575f5ffd5b50610245611050565b348015610359575f5ffd5b506101b360c954610100900460ff1660021490565b348015610379575f5ffd5b506101f661038836600461309e565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b3480156103b9575f5ffd5b50610192611101565b3480156103cd575f5ffd5b50610192611112565b6101926103e4366004613283565b611189565b3480156103f4575f5ffd5b50610192611288565b348015610408575f5ffd5b506101f66112dd565b34801561041c575f5ffd5b506033546001600160a01b03166101f6565b348015610439575f5ffd5b5061044d6104483660046130cc565b6112eb565b6040516101bf95949392919061333c565b61047161046c366004613395565b611440565b6040516101bf91906133ae565b348015610489575f5ffd5b506102456276a70081565b34801561049f575f5ffd5b506065546001600160a01b03166101f6565b3480156104bc575f5ffd5b506101926104cb3660046130cc565b611857565b6562726964676560d01b6104e3816118c8565b6104eb611904565b6104f3611936565b6104fd6002611965565b5f61050c61014085018561349e565b61051a9160049082906134e7565b810190610527919061350e565b90505f5f8280602001905181019061053f91906135ce565b9350505091505f610563838860a001602081019061055d91906130cc565b8461197b565b905061058d61012088013561057e60c08a0160a08b016130cc565b6001600160a01b031690611a20565b61059d60c0880160a089016130cc565b6001600160a01b0316867f3dea0f5955b148debf6212261e03bd80eaf8534bee43780452d16637dcc22dd5856020015184866040516105fd939291906001600160a01b039384168152919092166020820152604081019190915260600190565b60405180910390a3505050506106136001611965565b505050565b5f6001600160e01b0319821662bc399d60e11b148061064757506001600160e01b03198216637f07c94760e01b145b8061066257506001600160e01b031982166301ffc9a760e01b145b92915050565b5f610671611a2b565b610679611936565b6106836002611965565b6001600160a01b03821615806106b957506001600160a01b038281165f90815261012d6020526040902054600160401b90041615155b806106cc57506001600160a01b0382163b155b156106ea5760405163dc63f98760e01b815260040160405180910390fd5b5f6106fb60408501602086016130cc565b6001600160a01b0316148061072457504661071960208501856136c2565b6001600160401b0316145b1561074257604051638257f7f560e01b815260040160405180910390fd5b6001600160a01b0382165f90815261012f602052604090205460ff161561077c576040516375c42fc160e01b815260040160405180910390fd5b5f6101308161078e60208701876136c2565b6001600160401b031681526020019081526020015f205f8560200160208101906107b891906130cc565b6001600160a01b0316815260208101919091526040015f205490506107e06276a700826136f1565b4210156108005760405163231d35fb60e11b815260040160405180910390fd5b61012e5f61081160208701876136c2565b6001600160401b031681526020019081526020015f205f85602001602081019061083b91906130cc565b6001600160a01b03908116825260208201929092526040015f20541691508115610ba1576001600160a01b038281165f90815261012d60209081526040808320815160a08101835281546001600160401b0381168252600160401b810490961693810193909352600160e01b90940460ff1690820152600183018054929391926060840191906108ca90613704565b80601f01602080910402602001604051908101604052809291908181526020018280546108f690613704565b80156109415780601f1061091857610100808354040283529160200191610941565b820191905f5260205f20905b81548152906001019060200180831161092457829003601f168201915b5050505050815260200160028201805461095a90613704565b80601f016020809104026020016040519081016040528092919081815260200182805461098690613704565b80156109d15780601f106109a8576101008083540402835291602001916109d1565b820191905f5260205f20905b8154815290600101906020018083116109b457829003601f168201915b5050505050815250509050806040516020016109ed919061379b565b6040516020818303038152906040528051906020012085604051602001610a149190613821565b6040516020818303038152906040528051906020012014610a4857604051632f9d1d7b60e11b815260040160405180910390fd5b6001600160a01b0383165f90815261012d6020526040812080546001600160e81b031916815590610a7c6001830182612fc1565b610a89600283015f612fc1565b50506001600160a01b0383165f81815261012f60205260409020805460ff19166001179055610abf9063b8f2e0c560e01b611a85565b8015610ae05750610ae06001600160a01b03851663b8f2e0c560e01b611a85565b15610b9f5760405163b8f2e0c560e01b81526001600160a01b0385811660048301525f602483015284169063b8f2e0c5906044015f604051808303815f87803b158015610b2b575f5ffd5b505af1158015610b3d573d5f5f3e3d5ffd5b505060405163b8f2e0c560e01b81526001600160a01b038681166004830152600160248301528716925063b8f2e0c591506044015f604051808303815f87803b158015610b88575f5ffd5b505af1158015610b9a573d5f5f3e3d5ffd5b505050505b505b6001600160a01b0383165f90815261012d602052604090208490610bc582826139c4565b5083905061012e5f610bda60208801886136c2565b6001600160401b031681526020019081526020015f205f866020016020810190610c0491906130cc565b6001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550426101305f865f016020810190610c5d91906136c2565b6001600160401b031681526020019081526020015f205f866020016020810190610c8791906130cc565b6001600160a01b03166001600160a01b031681526020019081526020015f2081905550836020016020810190610cbd91906130cc565b6001600160a01b0316610cd360208601866136c2565b6001600160401b03167f031d68e1805917560c34a5f55a7dd91bef98f911190ed02cdbb53caedae6c39d8486610d0c60608a018a61349e565b610d1960808c018c61349e565b610d2960608e0160408f01613a82565b604051610d3c9796959493929190613a9d565b60405180910390a3506106626001611965565b5f54610100900460ff1615808015610d6d57505f54600160ff909116105b80610d865750303b158015610d8657505f5460ff166001145b610dee5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610e0f575f805461ff0019166101001790555b610e1882611b55565b8015610e5d575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f6002610e7060c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610ec15760405162461bcd60e51b8152600401610de590613af4565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316610ef3611bb3565b6001600160a01b031614610f195760405162461bcd60e51b8152600401610de590613b40565b610f2281611bce565b604080515f80825260208201909252610f3d91839190611bd6565b50565b610f48611d40565b610f5c60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610f99335f611d71565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000002163003610fe35760405162461bcd60e51b8152600401610de590613af4565b7f00000000000000000000000001670010000000000000000000000000000000026001600160a01b0316611015611bb3565b6001600160a01b03161461103b5760405162461bcd60e51b8152600401610de590613b40565b61104482611bce565b610e5d82826001611bd6565b5f306001600160a01b037f000000000000000000000000016700100000000000000000000000000000000216146110ef5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610de5565b505f51602061461b5f395f51905f5290565b611109611a2b565b610f995f611d79565b60655433906001600160a01b031681146111805760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610de5565b610f3d81611d79565b611191611904565b611199611936565b6111a36002611965565b5f8080806111b385870187613b97565b93509350935093505f6111c4611d92565b90506111cf83611e7e565b5f6111db86858561197b565b90506111f06001600160a01b03851634611a20565b836001600160a01b0316856001600160a01b0316835f01517f75a051823424fc80e92556c41cb0ad977ae1dcb09c68a9c38acab86b11a69f8985604001518a60200151868960405161127094939291906001600160401b039490941684526001600160a01b03928316602085015291166040830152606082015260800190565b60405180910390a4505050505050610e5d6001611965565b611290611904565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610f99336001611d71565b5f6112e6611bb3565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b84046001600160a01b031693600160e01b900460ff1692909161133390613704565b80601f016020809104026020016040519081016040528092919081815260200182805461135f90613704565b80156113aa5780601f10611381576101008083540402835291602001916113aa565b820191905f5260205f20905b81548152906001019060200180831161138d57829003601f168201915b5050505050908060020180546113bf90613704565b80601f01602080910402602001604051908101604052809291908181526020018280546113eb90613704565b80156114365780601f1061140d57610100808354040283529160200191611436565b820191905f5260205f20905b81548152906001019060200180831161141957829003601f168201915b5050505050905085565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526114a2611904565b6114aa611936565b6114b46002611965565b8160c001355f036114d857604051634299323b60e11b815260040160405180910390fd5b5f6114e960a08401608085016130cc565b6001600160a01b031603611510576040516303f8a7d360e01b815260040160405180910390fd5b61012f5f61152460a08501608086016130cc565b6001600160a01b0316815260208101919091526040015f205460ff161561155e576040516375c42fc160e01b815260040160405180910390fd5b61156e60808301606084016136c2565b6001600160401b031634101561159757604051630178ce0b60e31b815260040160405180910390fd5b6115bc6115aa60608401604085016130cc565b6115b760208501856136c2565b611eba565b5f5f5f6115c885611f18565b6040805161016081019091525f8082529396509194509250602081016115f46080890160608a016136c2565b6001600160401b0316815260200161161260c0890160a08a01613c9c565b63ffffffff1681525f60208083018290526040830191909152336060830152608090910190611643908901896136c2565b6001600160401b031681526020015f6001600160a01b031688602001602081019061166e91906130cc565b6001600160a01b0316036116825733611692565b6116926040890160208a016130cc565b6001600160a01b031681526020908101906116c9906116b3908a018a6136c2565b6a195c98cc8c17dd985d5b1d60aa1b5b5f6123b2565b6001600160a01b031681526020016116e76080890160608a016136c2565b6116fa906001600160401b031634613cb7565b815260200185905290505f6117186562726964676560d01b8261245c565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b815260040161174491906133ae565b5f6040518083038185885af115801561175f573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f191682016040526117879190810190613cd5565b9650905061179b60608801604089016130cc565b6001600160a01b03168660a001516001600160a01b0316827f256f5c87f6ab8d238ac244067613227eb6e2cd65299121135d4f778e8581e03d875f01518b5f0160208101906117ea91906136c2565b89602001518d608001602081019061180291906130cc565b604080516001600160401b0395861681529390941660208401526001600160a01b03918216838501521660608201526080810189905290519081900360a00190a450505050506118526001611965565b919050565b61185f611a2b565b606580546001600160a01b0383166001600160a01b031990911681179091556118906033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6118d381600161245c565b6001600160a01b0316336001600160a01b031614610f3d576040516395383ea160e01b815260040160405180910390fd5b61191860c954610100900460ff1660021490565b15610f995760405163bae6e2a960e01b815260040160405180910390fd5b600261194460c95460ff1690565b60ff1603610f995760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f46845f01516001600160401b0316036119ae575060208301516119a96001600160a01b03821684846124f5565b611a19565b6119b784612558565b6040516340c10f1960e01b81526001600160a01b03858116600483015260248201859052919250908216906340c10f19906044015f604051808303815f87803b158015611a02575f5ffd5b505af1158015611a14573d5f5f3e3d5ffd5b505050505b9392505050565b610e5d82825a61259a565b6033546001600160a01b03163314610f995760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610de5565b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251611ae19190613df5565b5f60405180830381855afa9150503d805f8114611b19576040519150601f19603f3d011682016040523d82523d5f602084013e611b1e565b606091505b5091509150818015611b31575080516020145b15611b4d5780806020019051810190611b4a9190613e10565b92505b505092915050565b5f54610100900460ff16611b7b5760405162461bcd60e51b8152600401610de590613e2f565b611b836125dd565b611ba16001600160a01b03821615611b9b5781611d79565b33611d79565b5060c9805461ff001916610100179055565b5f51602061461b5f395f51905f52546001600160a01b031690565b610f3d611a2b565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c095761061383612603565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c63575060408051601f3d908101601f19168201909252611c6091810190613e7a565b60015b611cc65760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610de5565b5f51602061461b5f395f51905f528114611d345760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610de5565b5061061383838361269e565b611d5460c954610100900460ff1660021490565b610f995760405163bae6e2a960e01b815260040160405180910390fd5b610e5d611a2b565b606580546001600160a01b0319169055610f3d816126c8565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611dc1816118c8565b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611dfd573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e219190613e91565b91505f611e4183604001516116c36a195c98cc8c17dd985d5b1d60aa1b90565b9050806001600160a01b031683602001516001600160a01b031614611e7957604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611e9c57506001600160a01b03811630145b15610f3d57604051635b50f3f960e01b815260040160405180910390fd5b6001600160a01b0382161580611efa5750611ee5816a195c98cc8c17dd985d5b1d60aa1b60016123b2565b6001600160a01b0316826001600160a01b0316145b15610e5d57604051635b50f3f960e01b815260040160405180910390fd5b6040805160a0810182525f8082526020820181905291810191909152606081810181905260808201819052905f8061012d81611f5a60a08801608089016130cc565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b90041615612190576040805160a08101825282546001600160401b0381168252600160401b81046001600160a01b03166020830152600160e01b900460ff169181019190915260018201805483916060840191611fda90613704565b80601f016020809104026020016040519081016040528092919081815260200182805461200690613704565b80156120515780601f1061202857610100808354040283529160200191612051565b820191905f5260205f20905b81548152906001019060200180831161203457829003601f168201915b5050505050815260200160028201805461206a90613704565b80601f016020809104026020016040519081016040528092919081815260200182805461209690613704565b80156120e15780601f106120b8576101008083540402835291602001916120e1565b820191905f5260205f20905b8154815290600101906020018083116120c457829003601f168201915b505050505081525050925061211a33308760c0013588608001602081019061210991906130cc565b6001600160a01b0316929190612719565b61212a60a08601608087016130cc565b604051630852cd8d60e31b815260c087013560048201526001600160a01b0391909116906342966c68906024015f604051808303815f87803b15801561216e575f5ffd5b505af1158015612180573d5f5f3e3d5ffd5b505050508460c001359150612332565b6040518060a00160405280466001600160401b031681526020018660800160208101906121bd91906130cc565b6001600160a01b031681526020016121e36121de60a0890160808a016130cc565b612751565b60ff1681526020016122036121fe60a0890160808a016130cc565b612805565b815260200161222061221b60a0890160808a016130cc565b6128af565b905292505f61223560a08701608088016130cc565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561227c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122a09190613e7a565b90506122bb6001600160a01b038316333060c08b0135612719565b6040516370a0823160e01b815230600482015281906001600160a01b038416906370a0823190602401602060405180830381865afa1580156122ff573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123239190613e7a565b61232d9190613cb7565b935050505b30637f07c947843361234a60608a0160408b016130cc565b8660405160200161235e9493929190613ef9565b60408051601f198184030181529082905261237b91602401613f2e565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509350509193909250565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015612430573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124549190613f40565b949350505050565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa1580156124d1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a199190613f40565b6040516001600160a01b03831660248201526044810182905261061390849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526128f5565b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b039081168552925290912054168061185257610662826129c8565b815f036125a657505050565b6125c083838360405180602001604052805f815250612bbd565b61061357604051634c67134d60e11b815260040160405180910390fd5b5f54610100900460ff16610f995760405162461bcd60e51b8152600401610de590613e2f565b6001600160a01b0381163b6126705760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610de5565b5f51602061461b5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6126a783612bfa565b5f825111806126b35750805b15610613576126c28383612c39565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040516001600160a01b03808516602483015283166044820152606481018290526126c29085906323b872dd60e01b90608401612521565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f91829182916001600160a01b038616916127969190613df5565b5f60405180830381855afa9150503d805f81146127ce576040519150601f19603f3d011682016040523d82523d5f602084013e6127d3565b606091505b50915091508180156127e6575080516020145b6127f1576012612454565b808060200190518101906124549190613f5b565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161284b9190613df5565b5f60405180830381855afa9150503d805f8114612883576040519150601f19603f3d011682016040523d82523d5f602084013e612888565b606091505b5091509150816128a65760405180602001604052805f815250612454565b61245481612c5e565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161284b9190613df5565b5f612949826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612dcb9092919063ffffffff16565b905080515f14806129695750808060200190518101906129699190613e10565b6106135760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610de5565b5f5f6129dc6033546001600160a01b031690565b60208401518451604080870151606088015160808901519251612a059695949390602401613f76565b60408051601f198184030181529190526020810180516001600160e01b0316636c0db62b60e01b1790529050612a4b6c0627269646765645f657263323609c1b5f61245c565b81604051612a5890612ff8565b612a63929190613fd8565b604051809103905ff080158015612a7c573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d602090815260409182902087518154928901519389015160ff16600160e01b0260ff60e01b1994909516600160401b026001600160e01b03199093166001600160401b03909116179190911791909116919091178155606085015191935084916001820190612afe9082613ffb565b5060808201516002820190612b139082613ffb565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b0319168885169081179091559151885160608a015160808b0151848c01519451959850929095169516937fb6b427556e8cb0ebf9175da4bc48c64c4f56e44cfaf8c3ab5ebf8e2ea130907993612baf93919291906140b5565b60405180910390a450919050565b5f6001600160a01b038516612be557604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b612c0381612603565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611a19838360405180606001604052806027815260200161463b60279139612dd9565b60606040825110612c7d578180602001905181019061066291906140ed565b8151602003612db8575f5b60208160ff16108015612cbd5750828160ff1681518110612cab57612cab61411e565b01602001516001600160f81b03191615155b15612cd45780612ccc81614132565b915050612c88565b5f8160ff166001600160401b03811115612cf057612cf061312e565b6040519080825280601f01601f191660200182016040528015612d1a576020820181803683370190505b5090505f91505b60208260ff16108015612d565750838260ff1681518110612d4457612d4461411e565b01602001516001600160f81b03191615155b15611a1957838260ff1681518110612d7057612d7061411e565b602001015160f81c60f81b818360ff1681518110612d9057612d9061411e565b60200101906001600160f81b03191690815f1a90535081612db081614132565b925050612d21565b505060408051602081019091525f815290565b606061245484845f85612e4d565b60605f5f856001600160a01b031685604051612df59190613df5565b5f60405180830381855af49150503d805f8114612e2d576040519150601f19603f3d011682016040523d82523d5f602084013e612e32565b606091505b5091509150612e4386838387612f24565b9695505050505050565b606082471015612eae5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610de5565b5f5f866001600160a01b03168587604051612ec99190613df5565b5f6040518083038185875af1925050503d805f8114612f03576040519150601f19603f3d011682016040523d82523d5f602084013e612f08565b606091505b5091509150612f1987838387612f24565b979650505050505050565b60608315612f925782515f03612f8b576001600160a01b0385163b612f8b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610de5565b5081612454565b6124548383815115612fa75781518083602001fd5b8060405162461bcd60e51b8152600401610de59190613f2e565b508054612fcd90613704565b5f825580601f10612fdc575050565b601f0160209004905f5260205f2090810190610f3d9190613005565b6104ca8061415183390190565b5b80821115613019575f8155600101613006565b5090565b5f5f6040838503121561302e575f5ffd5b82356001600160401b03811115613043575f5ffd5b83016101608186031215613055575f5ffd5b946020939093013593505050565b5f60208284031215613073575f5ffd5b81356001600160e01b031981168114611a19575f5ffd5b6001600160a01b0381168114610f3d575f5ffd5b5f5f604083850312156130af575f5ffd5b8235915060208301356130c18161308a565b809150509250929050565b5f602082840312156130dc575f5ffd5b8135611a198161308a565b5f5f604083850312156130f8575f5ffd5b82356001600160401b0381111561310d575f5ffd5b830160a0818603121561311e575f5ffd5b915060208301356130c18161308a565b634e487b7160e01b5f52604160045260245ffd5b60405160a081016001600160401b03811182821017156131645761316461312e565b60405290565b60405161016081016001600160401b03811182821017156131645761316461312e565b604051601f8201601f191681016001600160401b03811182821017156131b5576131b561312e565b604052919050565b5f6001600160401b038211156131d5576131d561312e565b50601f01601f191660200190565b5f82601f8301126131f2575f5ffd5b8135602083015f61320a613205846131bd565b61318d565b905082815285838301111561321d575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215613248575f5ffd5b82356132538161308a565b915060208301356001600160401b0381111561326d575f5ffd5b613279858286016131e3565b9150509250929050565b5f5f60208385031215613294575f5ffd5b82356001600160401b038111156132a9575f5ffd5b8301601f810185136132b9575f5ffd5b80356001600160401b038111156132ce575f5ffd5b8560208284010111156132df575f5ffd5b6020919091019590945092505050565b5f5b838110156133095781810151838201526020016132f1565b50505f910152565b5f81518084526133288160208601602086016132ef565b601f01601f19169290920160200192915050565b6001600160401b03861681526001600160a01b038516602082015260ff8416604082015260a0606082018190525f9061337790830185613311565b82810360808401526133898185613311565b98975050505050505050565b5f60e08284031280156133a6575f5ffd5b509092915050565b602081526133c86020820183516001600160401b03169052565b5f60208301516133e360408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152612454610180840182613311565b5f5f8335601e198436030181126134b3575f5ffd5b8301803591506001600160401b038211156134cc575f5ffd5b6020019150368190038213156134e0575f5ffd5b9250929050565b5f5f858511156134f5575f5ffd5b83861115613501575f5ffd5b5050820193919092039150565b5f6020828403121561351e575f5ffd5b81356001600160401b03811115613533575f5ffd5b612454848285016131e3565b6001600160401b0381168114610f3d575f5ffd5b80516118528161353f565b80516118528161308a565b60ff81168114610f3d575f5ffd5b805161185281613569565b5f82601f830112613591575f5ffd5b8151602083015f6135a4613205846131bd565b90508281528583830111156135b7575f5ffd5b6135c58360208301846132ef565b95945050505050565b5f5f5f5f608085870312156135e1575f5ffd5b84516001600160401b038111156135f6575f5ffd5b850160a08188031215613607575f5ffd5b61360f613142565b815161361a8161353f565b8152602082015161362a8161308a565b602082015261363b60408301613577565b604082015260608201516001600160401b03811115613658575f5ffd5b61366489828501613582565b60608301525060808201516001600160401b03811115613682575f5ffd5b61368e89828501613582565b60808301525094506136a490506020860161355e565b92506136b26040860161355e565b6060959095015193969295505050565b5f602082840312156136d2575f5ffd5b8135611a198161353f565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610662576106626136dd565b600181811c9082168061371857607f821691505b60208210810361373657634e487b7160e01b5f52602260045260245ffd5b50919050565b6001600160401b03815116825260018060a01b03602082015116602083015260ff60408201511660408301525f606082015160a0606085015261378260a0850182613311565b905060808301518482036080860152611b4a8282613311565b602081525f611a19602083018461373c565b803561185281613569565b5f5f8335601e198436030181126137cd575f5ffd5b83016020810192503590506001600160401b038111156137eb575f5ffd5b8036038213156134e0575f5ffd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f82356138318161353f565b6001600160401b038116602084015250602083013561384f8161308a565b6001600160a01b031660408381019190915283013561386d81613569565b60ff811660608401525061388460608401846137b8565b60a0608085015261389960c0850182846137f9565b9150506138a960808501856137b8565b848303601f190160a0860152612e438382846137f9565b601f82111561061357805f5260205f20601f840160051c810160208510156138e55750805b601f840160051c820191505b81811015613904575f81556001016138f1565b5050505050565b6001600160401b038311156139225761392261312e565b613936836139308354613704565b836138c0565b5f601f841160018114613967575f85156139505750838201355b5f19600387901b1c1916600186901b178355613904565b5f83815260208120601f198716915b828110156139965786850135825560209485019460019092019101613976565b50868210156139b2575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81356139cf8161353f565b6001600160401b03811690508154816001600160401b0319821617835560208401356139fa8161308a565b6001600160e01b031991909116909117604091821b68010000000000000000600160e01b03161782555f90830135613a3181613569565b825460ff60e01b191660e09190911b60ff60e01b1617825550613a57606083018361349e565b613a6581836001860161390b565b5050613a74608083018361349e565b6126c281836002860161390b565b5f60208284031215613a92575f5ffd5b8135611a1981613569565b6001600160a01b0388811682528716602082015260a0604082018190525f90613ac990830187896137f9565b8281036060840152613adc8186886137f9565b91505060ff8316608083015298975050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b80356118528161308a565b5f5f5f5f60808587031215613baa575f5ffd5b84356001600160401b03811115613bbf575f5ffd5b850160a08188031215613bd0575f5ffd5b613bd8613142565b8135613be38161353f565b81526020820135613bf38161308a565b6020820152613c04604083016137ad565b604082015260608201356001600160401b03811115613c21575f5ffd5b613c2d898285016131e3565b60608301525060808201356001600160401b03811115613c4b575f5ffd5b613c57898285016131e3565b6080830152509450613c6d905060208601613b8c565b9250613c7b60408601613b8c565b9396929550929360600135925050565b63ffffffff81168114610f3d575f5ffd5b5f60208284031215613cac575f5ffd5b8135611a1981613c8b565b81810381811115610662576106626136dd565b805161185281613c8b565b5f5f60408385031215613ce6575f5ffd5b825160208401519092506001600160401b03811115613d03575f5ffd5b83016101608186031215613d15575f5ffd5b613d1d61316a565b613d2682613553565b8152613d3460208301613553565b6020820152613d4560408301613cca565b6040820152613d566060830161355e565b6060820152613d6760808301613553565b6080820152613d7860a0830161355e565b60a0820152613d8960c08301613553565b60c0820152613d9a60e0830161355e565b60e0820152613dac610100830161355e565b61010082015261012082810151908201526101408201516001600160401b03811115613dd6575f5ffd5b613de287828501613582565b6101408301525080925050509250929050565b5f8251613e068184602087016132ef565b9190910192915050565b5f60208284031215613e20575f5ffd5b81518015158114611a19575f5ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f60208284031215613e8a575f5ffd5b5051919050565b5f6060828403128015613ea2575f5ffd5b50604051606081016001600160401b0381118282101715613ec557613ec561312e565b604052825181526020830151613eda8161308a565b60208201526040830151613eed8161353f565b60408201529392505050565b608081525f613f0b608083018761373c565b6001600160a01b0395861660208401529390941660408201526060015292915050565b602081525f611a196020830184613311565b5f60208284031215613f50575f5ffd5b8151611a198161308a565b5f60208284031215613f6b575f5ffd5b8151611a1981613569565b6001600160a01b038781168252861660208201526001600160401b038516604082015260ff8416606082015260c0608082018190525f90613fb990830185613311565b82810360a0840152613fcb8185613311565b9998505050505050505050565b6001600160a01b03831681526040602082018190525f9061245490830184613311565b81516001600160401b038111156140145761401461312e565b614028816140228454613704565b846138c0565b6020601f82116001811461405a575f83156140435750848201515b5f19600385901b1c1916600184901b178455613904565b5f84815260208120601f198516915b828110156140895787850151825560209485019460019092019101614069565b50848210156140a657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b606081525f6140c76060830186613311565b82810360208401526140d98186613311565b91505060ff83166040830152949350505050565b5f602082840312156140fd575f5ffd5b81516001600160401b03811115614112575f5ffd5b61245484828501613582565b634e487b7160e01b5f52603260045260245ffd5b5f60ff821660ff8103614147576141476136dd565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220029f6da1f99d20fafb083baa823c48a4ab101c98fa50f41b5ee66a808459f0e264736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x1670010000000000000000000000000000000003": { + "balance": "0x0", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000003" + } + }, + "0x0167001000000000000000000000000000000003": { + "balance": "0x0", + "code": "0x60806040526004361061013c575f3560e01c806352d1902d116100b35780638456cb591161006d5780638456cb59146103865780638abf60771461039a5780638da5cb5b146103ae5780639aa8605c146103cb578063e30c3978146103fa578063f2fde38b14610417575f5ffd5b806352d1902d146102d75780635c975abb146102eb57806367090ccf1461030b578063715018a61461034b57806379ba50971461035f5780637f07c94714610373575f5ffd5b806319ab453c1161010457806319ab453c1461023e5780631f59a8301461025d5780633075db561461027d5780633659cfe6146102915780633f4ba83a146102b05780634f1ef286146102c4575f5ffd5b80630178733a1461014057806301ffc9a71461015557806304f3bcec1461018957806306fdde03146101cf578063150b7a02146101fa575b5f5ffd5b61015361014e3660046126c0565b610436565b005b348015610160575f5ffd5b5061017461016f366004612706565b6105a3565b60405190151581526020015b60405180910390f35b348015610194575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b039091168152602001610180565b3480156101da575f5ffd5b506b195c98cdcc8c57dd985d5b1d60a21b5b604051908152602001610180565b348015610205575f5ffd5b50610225610214366004612790565b630a85bd0160e11b95945050505050565b6040516001600160e01b03199091168152602001610180565b348015610249575f5ffd5b506101536102583660046127fd565b6105f3565b61027061026b366004612818565b610705565b604051610180919061289c565b348015610288575f5ffd5b50610174610b19565b34801561029c575f5ffd5b506101536102ab3660046127fd565b610b31565b3480156102bb575f5ffd5b50610153610bf8565b6101536102d2366004612ab8565b610c53565b3480156102e2575f5ffd5b506101ec610d08565b3480156102f6575f5ffd5b5061017460c954610100900460ff1660021490565b348015610316575f5ffd5b506101b7610325366004612b04565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b348015610356575f5ffd5b50610153610db9565b34801561036a575f5ffd5b50610153610dca565b610153610381366004612b32565b610e41565b348015610391575f5ffd5b50610153610f59565b3480156103a5575f5ffd5b506101b7610fae565b3480156103b9575f5ffd5b506033546001600160a01b03166101b7565b3480156103d6575f5ffd5b506103ea6103e53660046127fd565b610fbc565b6040516101809493929190612b70565b348015610405575f5ffd5b506065546001600160a01b03166101b7565b348015610422575f5ffd5b506101536104313660046127fd565b611107565b6562726964676560d01b61044981611178565b6104516111b4565b6104596111e6565b6104636002611215565b5f610472610140850185612bbf565b610480916004908290612c01565b81019061048d9190612c28565b90505f5f828060200190518101906104a59190612d56565b9350505091505f6104c9838860a00160208101906104c391906127fd565b8461122b565b90506104f36101208801356104e460c08a0160a08b016127fd565b6001600160a01b0316906113a7565b61050360c0880160a089016127fd565b6001600160a01b0316867fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c8560200151848687516001600160401b0381111561054e5761054e61298c565b604051908082528060200260200182016040528015610577578160200160208202803683370190505b506040516105889493929190612e95565b60405180910390a35050505061059e6001611215565b505050565b5f6001600160e01b0319821662bc399d60e11b14806105d257506001600160e01b03198216637f07c94760e01b145b806105ed57506001600160e01b031982166301ffc9a760e01b145b92915050565b5f54610100900460ff161580801561061157505f54600160ff909116105b8061062a5750303b15801561062a57505f5460ff166001145b6106925760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff1916600117905580156106b3575f805461ff0019166101001790555b6106bc826113b2565b8015610701575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e0820183905261010082018390526101208201929092526101408101919091526107676111b4565b61077082612f54565b61077981611410565b6107816111e6565b61078b6002611215565b61079b6080840160608501613027565b6001600160401b03163410156107c457604051630178ce0b60e31b815260040160405180910390fd5b5f6107d260c0850185613042565b905090505f5b8181101561082b576107ed60e0860186613042565b828181106107fd576107fd613087565b905060200201355f1461082357604051634299323b60e11b815260040160405180910390fd5b6001016107d8565b5061085890506380ac58cd60e01b61084960a08601608087016127fd565b6001600160a01b031690611465565b61087557604051633ee915f560e11b815260040160405180910390fd5b61089a61088860608501604086016127fd565b6108956020860186613027565b611535565b5f5f6108a585611594565b6040805161016081019091525f808252929450909250602081016108cf6080890160608a01613027565b6001600160401b031681526020016108ed60c0890160a08a0161309b565b63ffffffff1681525f6020808301829052604083019190915233606083015260809091019061091e90890189613027565b6001600160401b031681526020015f6001600160a01b031688602001602081019061094991906127fd565b6001600160a01b03160361095d573361096d565b61096d6040890160208a016127fd565b6001600160a01b031681526020908101906109a59061098e908a018a613027565b6b195c98cdcc8c57dd985d5b1d60a21b5b5f611a6d565b6001600160a01b031681526020016109c36080890160608a01613027565b6109d6906001600160401b0316346130ca565b815260200184905290505f6109f46562726964676560d01b82611b17565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b8152600401610a20919061289c565b5f6040518083038185885af1158015610a3b573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a6391908101906130e8565b96509050610a7760608801604089016127fd565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610acd91906127fd565b610ada60c08f018f613042565b8f8060e00190610aea9190613042565b604051610afd9796959493929190613238565b60405180910390a450505050610b136001611215565b50919050565b5f6002610b2860c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610b795760405162461bcd60e51b815260040161068990613294565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610bab611bb7565b6001600160a01b031614610bd15760405162461bcd60e51b8152600401610689906132e0565b610bda81611bd2565b604080515f80825260208201909252610bf591839190611bda565b50565b610c00611d44565b610c1460c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610c51335f611d75565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000003163003610c9b5760405162461bcd60e51b815260040161068990613294565b7f00000000000000000000000001670010000000000000000000000000000000036001600160a01b0316610ccd611bb7565b6001600160a01b031614610cf35760405162461bcd60e51b8152600401610689906132e0565b610cfc82611bd2565b61070182826001611bda565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000031614610da75760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610689565b505f516020613d235f395f51905f5290565b610dc1611d79565b610c515f611dd3565b60655433906001600160a01b03168114610e385760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610689565b610bf581611dd3565b610e496111b4565b610e516111e6565b610e5b6002611215565b5f808080610e6b8587018761332c565b93509350935093505f610e7c611dec565b9050610e8783611ed9565b5f610e9386858561122b565b9050610ea86001600160a01b038516346113a7565b836001600160a01b0316856001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518a6020015186898a516001600160401b03811115610f0657610f0661298c565b604051908082528060200260200182016040528015610f2f578160200160208202803683370190505b50604051610f41959493929190613425565b60405180910390a45050505050506107016001611215565b610f616111b4565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610c51336001611d75565b5f610fb7611bb7565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610ffa9061347d565b80601f01602080910402602001604051908101604052809291908181526020018280546110269061347d565b80156110715780601f1061104857610100808354040283529160200191611071565b820191905f5260205f20905b81548152906001019060200180831161105457829003601f168201915b5050505050908060020180546110869061347d565b80601f01602080910402602001604051908101604052809291908181526020018280546110b29061347d565b80156110fd5780601f106110d4576101008083540402835291602001916110fd565b820191905f5260205f20905b8154815290600101906020018083116110e057829003601f168201915b5050505050905084565b61110f611d79565b606580546001600160a01b0383166001600160a01b031990911681179091556111406033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b611183816001611b17565b6001600160a01b0316336001600160a01b031614610bf5576040516395383ea160e01b815260040160405180910390fd5b6111c860c954610100900460ff1660021490565b15610c515760405163bae6e2a960e01b815260040160405180910390fd5b60026111f460c95460ff1690565b60ff1603610c515760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b805183515f9190466001600160401b03909116036112f557846020015191505f5b818110156112ef57826001600160a01b03166342842e0e308787858151811061127757611277613087565b60209081029190910101516040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064015f604051808303815f87803b1580156112ce575f5ffd5b505af11580156112e0573d5f5f3e3d5ffd5b5050505080600101905061124c565b5061139f565b6112fe85611f15565b91505f5b8181101561139d57826001600160a01b03166340c10f198686848151811061132c5761132c613087565b60200260200101516040518363ffffffff1660e01b81526004016113659291906001600160a01b03929092168252602082015260400190565b5f604051808303815f87803b15801561137c575f5ffd5b505af115801561138e573d5f5f3e3d5ffd5b50505050806001019050611302565b505b509392505050565b61070182825a611f5c565b5f54610100900460ff166113d85760405162461bcd60e51b8152600401610689906134af565b6113e0611f9f565b6113fe6001600160a01b038216156113f85781611dd3565b33611dd3565b5060c9805461ff001916610100179055565b8060e00151518160c00151511461143a5760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b0316610bf5576040516303f8a7d360e01b815260040160405180910390fd5b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b179052516114c191906134fa565b5f60405180830381855afa9150503d805f81146114f9576040519150601f19603f3d011682016040523d82523d5f602084013e6114fe565b606091505b5091509150818015611511575080516020145b1561152d578080602001905181019061152a9190613515565b92505b505092915050565b6001600160a01b03821615806115765750611561816b195c98cdcc8c57dd985d5b1d60a21b6001611a6d565b6001600160a01b0316826001600160a01b0316145b1561070157604051635b50f3f960e01b815260040160405180910390fd5b604080516080810182525f808252602082015260609181018290528082018290525f6115c360c0850185613042565b91505f905061012d816115dc60a08801608089016127fd565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b900416156118af576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b0316602082015260018301805491928492908401919061164d9061347d565b80601f01602080910402602001604051908101604052809291908181526020018280546116799061347d565b80156116c45780601f1061169b576101008083540402835291602001916116c4565b820191905f5260205f20905b8154815290600101906020018083116116a757829003601f168201915b505050505081526020016002820180546116dd9061347d565b80601f01602080910402602001604051908101604052809291908181526020018280546117099061347d565b80156117545780601f1061172b57610100808354040283529160200191611754565b820191905f5260205f20905b81548152906001019060200180831161173757829003601f168201915b50505050508152505092505f5b828110156118a95761177960a08701608088016127fd565b6001600160a01b03166342842e0e333061179660c08b018b613042565b868181106117a6576117a6613087565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b1580156117fa575f5ffd5b505af115801561180c573d5f5f3e3d5ffd5b506118219250505060a08701608088016127fd565b6001600160a01b03166342966c6861183c60c0890189613042565b8481811061184c5761184c613087565b905060200201356040518263ffffffff1660e01b815260040161187191815260200190565b5f604051808303815f87803b158015611888575f5ffd5b505af115801561189a573d5f5f3e3d5ffd5b50505050806001019050611761565b506119e1565b6040518060800160405280466001600160401b031681526020018660800160208101906118dc91906127fd565b6001600160a01b031681526020016119026118fd60a0890160808a016127fd565b611fc5565b815260200161191f61191a60a0890160808a016127fd565b61206f565b905292505f5b828110156119df5761193d60a08701608088016127fd565b6001600160a01b03166342842e0e333061195a60c08b018b613042565b8681811061196a5761196a613087565b6040516001600160e01b031960e088901b1681526001600160a01b039586166004820152949093166024850152506020909102013560448201526064015f604051808303815f87803b1580156119be575f5ffd5b505af11580156119d0573d5f5f3e3d5ffd5b50505050806001019050611925565b505b5030637f07c94783336119fa6060890160408a016127fd565b611a0760c08a018a613042565b604051602001611a1b959493929190613534565b60408051601f1981840301815290829052611a38916024016135c5565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050925050915091565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611aeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b0f91906135d7565b949350505050565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611b8c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb091906135d7565b9392505050565b5f516020613d235f395f51905f52546001600160a01b031690565b610bf5611d79565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611c0d5761059e836120b5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c67575060408051601f3d908101601f19168201909252611c64918101906135f2565b60015b611cca5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610689565b5f516020613d235f395f51905f528114611d385760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610689565b5061059e838383612150565b611d5860c954610100900460ff1660021490565b610c515760405163bae6e2a960e01b815260040160405180910390fd5b6107015b6033546001600160a01b03163314610c515760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610689565b606580546001600160a01b0319169055610bf58161217a565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611e1b81611178565b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611e57573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e7b9190613609565b91505f611e9c836040015161099f6b195c98cdcc8c57dd985d5b1d60a21b90565b9050806001600160a01b031683602001516001600160a01b031614611ed457604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611ef757506001600160a01b03811630145b15610bf557604051635b50f3f960e01b815260040160405180910390fd5b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611f57576105ed826121cb565b919050565b815f03611f6857505050565b611f8283838360405180602001604052805f815250612399565b61059e57604051634c67134d60e11b815260040160405180910390fd5b5f54610100900460ff16610c515760405162461bcd60e51b8152600401610689906134af565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b0386169161200b91906134fa565b5f60405180830381855afa9150503d805f8114612043576040519150601f19603f3d011682016040523d82523d5f602084013e612048565b606091505b5091509150816120665760405180602001604052805f815250611b0f565b611b0f816123d6565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b0386169161200b91906134fa565b6001600160a01b0381163b6121225760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610689565b5f516020613d235f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b61215983612543565b5f825111806121655750805b1561059e576121748383612582565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f5f6121df6033546001600160a01b031690565b60208401518451604080870151606088015191516122039594939290602401613671565b60408051601f198184030181529190526020810180516001600160e01b031663689ccd8d60e11b179052905061224a6d627269646765645f65726337323160901b5f611b17565b81604051612257906126b3565b6122629291906136bd565b604051809103905ff08015801561227b573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906122df908261372b565b50606082015160028201906122f4908261372b565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261238b92906137e5565b60405180910390a450919050565b5f6001600160a01b0385166123c157604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b606060408251106123f557818060200190518101906105ed9190613809565b8151602003612530575f5b60208160ff161080156124355750828160ff168151811061242357612423613087565b01602001516001600160f81b03191615155b1561244c57806124448161383a565b915050612400565b5f8160ff166001600160401b038111156124685761246861298c565b6040519080825280601f01601f191660200182016040528015612492576020820181803683370190505b5090505f91505b60208260ff161080156124ce5750838260ff16815181106124bc576124bc613087565b01602001516001600160f81b03191615155b15611bb057838260ff16815181106124e8576124e8613087565b602001015160f81c60f81b818360ff168151811061250857612508613087565b60200101906001600160f81b03191690815f1a905350816125288161383a565b925050612499565b505060408051602081019091525f815290565b61254c816120b5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611bb08383604051806060016040528060278152602001613d436027913960605f5f856001600160a01b0316856040516125be91906134fa565b5f60405180830381855af49150503d805f81146125f6576040519150601f19603f3d011682016040523d82523d5f602084013e6125fb565b606091505b509150915061260c86838387612616565b9695505050505050565b606083156126845782515f0361267d576001600160a01b0385163b61267d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610689565b5081611b0f565b611b0f83838151156126995781518083602001fd5b8060405162461bcd60e51b815260040161068991906135c5565b6104ca8061385983390190565b5f5f604083850312156126d1575f5ffd5b82356001600160401b038111156126e6575f5ffd5b830161016081860312156126f8575f5ffd5b946020939093013593505050565b5f60208284031215612716575f5ffd5b81356001600160e01b031981168114611bb0575f5ffd5b6001600160a01b0381168114610bf5575f5ffd5b8035611f578161272d565b5f5f83601f84011261275c575f5ffd5b5081356001600160401b03811115612772575f5ffd5b602083019150836020828501011115612789575f5ffd5b9250929050565b5f5f5f5f5f608086880312156127a4575f5ffd5b85356127af8161272d565b945060208601356127bf8161272d565b93506040860135925060608601356001600160401b038111156127e0575f5ffd5b6127ec8882890161274c565b969995985093965092949392505050565b5f6020828403121561280d575f5ffd5b8135611bb08161272d565b5f60208284031215612828575f5ffd5b81356001600160401b0381111561283d575f5ffd5b82016101008185031215611bb0575f5ffd5b5f5b83811015612869578181015183820152602001612851565b50505f910152565b5f815180845261288881602086016020860161284f565b601f01601f19169290920160200192915050565b602081526128b66020820183516001600160401b03169052565b5f60208301516128d160408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b0381166101208401525061012083015161014083015261014083015161016080840152611b0f610180840182612871565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156129c2576129c261298c565b60405290565b60405161010081016001600160401b03811182821017156129c2576129c261298c565b60405161016081016001600160401b03811182821017156129c2576129c261298c565b604051601f8201601f191681016001600160401b0381118282101715612a3657612a3661298c565b604052919050565b5f6001600160401b03821115612a5657612a5661298c565b50601f01601f191660200190565b5f82601f830112612a73575f5ffd5b8135602083015f612a8b612a8684612a3e565b612a0e565b9050828152858383011115612a9e575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612ac9575f5ffd5b8235612ad48161272d565b915060208301356001600160401b03811115612aee575f5ffd5b612afa85828601612a64565b9150509250929050565b5f5f60408385031215612b15575f5ffd5b823591506020830135612b278161272d565b809150509250929050565b5f5f60208385031215612b43575f5ffd5b82356001600160401b03811115612b58575f5ffd5b612b648582860161274c565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612ba290830185612871565b8281036060840152612bb48185612871565b979650505050505050565b5f5f8335601e19843603018112612bd4575f5ffd5b8301803591506001600160401b03821115612bed575f5ffd5b602001915036819003821315612789575f5ffd5b5f5f85851115612c0f575f5ffd5b83861115612c1b575f5ffd5b5050820193919092039150565b5f60208284031215612c38575f5ffd5b81356001600160401b03811115612c4d575f5ffd5b611b0f84828501612a64565b6001600160401b0381168114610bf5575f5ffd5b8051611f5781612c59565b8051611f578161272d565b5f82601f830112612c92575f5ffd5b8151602083015f612ca5612a8684612a3e565b9050828152858383011115612cb8575f5ffd5b612cc683602083018461284f565b95945050505050565b5f6001600160401b03821115612ce757612ce761298c565b5060051b60200190565b5f82601f830112612d00575f5ffd5b8151612d0e612a8682612ccf565b8082825260208201915060208360051b860101925085831115612d2f575f5ffd5b602085015b83811015612d4c578051835260209283019201612d34565b5095945050505050565b5f5f5f5f60808587031215612d69575f5ffd5b84516001600160401b03811115612d7e575f5ffd5b850160808188031215612d8f575f5ffd5b612d976129a0565b8151612da281612c59565b81526020820151612db28161272d565b602082015260408201516001600160401b03811115612dcf575f5ffd5b612ddb89828501612c83565b60408301525060608201516001600160401b03811115612df9575f5ffd5b612e0589828501612c83565b6060830152509450612e1b905060208601612c78565b9250612e2960408601612c78565b915060608501516001600160401b03811115612e43575f5ffd5b612e4f87828801612cf1565b91505092959194509250565b5f8151808452602084019350602083015f5b82811015612e8b578151865260209586019590910190600101612e6d565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f90612ec090830185612e5b565b8281036060840152612bb48185612e5b565b8035611f5781612c59565b63ffffffff81168114610bf5575f5ffd5b8035611f5781612edd565b5f82601f830112612f08575f5ffd5b8135612f16612a8682612ccf565b8082825260208201915060208360051b860101925085831115612f37575f5ffd5b602085015b83811015612d4c578035835260209283019201612f3c565b5f6101008236031215612f65575f5ffd5b612f6d6129c8565b612f7683612ed2565b8152612f8460208401612741565b6020820152612f9560408401612741565b6040820152612fa660608401612ed2565b6060820152612fb760808401612741565b6080820152612fc860a08401612eee565b60a082015260c08301356001600160401b03811115612fe5575f5ffd5b612ff136828601612ef9565b60c08301525060e08301356001600160401b0381111561300f575f5ffd5b61301b36828601612ef9565b60e08301525092915050565b5f60208284031215613037575f5ffd5b8135611bb081612c59565b5f5f8335601e19843603018112613057575f5ffd5b8301803591506001600160401b03821115613070575f5ffd5b6020019150600581901b3603821315612789575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f602082840312156130ab575f5ffd5b8135611bb081612edd565b634e487b7160e01b5f52601160045260245ffd5b818103818111156105ed576105ed6130b6565b8051611f5781612edd565b5f5f604083850312156130f9575f5ffd5b825160208401519092506001600160401b03811115613116575f5ffd5b83016101608186031215613128575f5ffd5b6131306129eb565b61313982612c6d565b815261314760208301612c6d565b6020820152613158604083016130dd565b604082015261316960608301612c78565b606082015261317a60808301612c6d565b608082015261318b60a08301612c78565b60a082015261319c60c08301612c6d565b60c08201526131ad60e08301612c78565b60e08201526131bf6101008301612c78565b61010082015261012082810151908201526101408201516001600160401b038111156131e9575f5ffd5b6131f587828501612c83565b6101408301525080925050509250929050565b8183525f6001600160fb1b0383111561321f575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f906132739083018688613208565b8281036080840152613286818587613208565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f6080858703121561333f575f5ffd5b84356001600160401b03811115613354575f5ffd5b850160808188031215613365575f5ffd5b61336d6129a0565b813561337881612c59565b815260208201356133888161272d565b602082015260408201356001600160401b038111156133a5575f5ffd5b6133b189828501612a64565b60408301525060608201356001600160401b038111156133cf575f5ffd5b6133db89828501612a64565b60608301525094506133f1905060208601612741565b92506133ff60408601612741565b915060608501356001600160401b03811115613419575f5ffd5b612e4f87828801612ef9565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061345f90830185612e5b565b82810360808401526134718185612e5b565b98975050505050505050565b600181811c9082168061349157607f821691505b602082108103610b1357634e487b7160e01b5f52602260045260245ffd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f825161350b81846020870161284f565b9190910192915050565b5f60208284031215613525575f5ffd5b81518015158114611bb0575f5ffd5b608081526001600160401b03865116608082015260018060a01b0360208701511660a08201525f6040870151608060c0840152613575610100840182612871565b90506060880151607f198483030160e08501526135928282612871565b6001600160a01b0389811660208701528816604086015291506135b29050565b8281036060840152613471818587613208565b602081525f611bb06020830184612871565b5f602082840312156135e7575f5ffd5b8151611bb08161272d565b5f60208284031215613602575f5ffd5b5051919050565b5f606082840312801561361a575f5ffd5b50604051606081016001600160401b038111828210171561363d5761363d61298c565b6040528251815260208301516136528161272d565b6020820152604083015161366581612c59565b60408201529392505050565b6001600160a01b038681168252851660208201526001600160401b038416604082015260a0606082018190525f906136ab90830185612871565b82810360808401526134718185612871565b6001600160a01b03831681526040602082018190525f90611b0f90830184612871565b601f82111561059e57805f5260205f20601f840160051c810160208510156137055750805b601f840160051c820191505b81811015613724575f8155600101613711565b5050505050565b81516001600160401b038111156137445761374461298c565b61375881613752845461347d565b846136e0565b6020601f82116001811461378a575f83156137735750848201515b5f19600385901b1c1916600184901b178455613724565b5f84815260208120601f198516915b828110156137b95787850151825560209485019460019092019101613799565b50848210156137d657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f6137f76040830185612871565b8281036020840152612cc68185612871565b5f60208284031215613819575f5ffd5b81516001600160401b0381111561382e575f5ffd5b611b0f84828501612c83565b5f60ff821660ff810361384f5761384f6130b6565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122021a52364203144b3263d312817cf358458288a484aae4b6fde8770aa1c5eb62364736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x1670010000000000000000000000000000000004": { + "balance": "0x0", + "code": "0x608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033", + "storage": { + "0x00000000000000000000000000000000000000000000000000000000000000c9": "0x0000000000000000000000000000000000000000000000000000000000000101", + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0167001000000000000000000000000000000004" + } + }, + "0x0167001000000000000000000000000000000004": { + "balance": "0x0", + "code": "0x608060405260043610610147575f3560e01c806367090ccf116100b35780638da5cb5b1161006d5780638da5cb5b146103765780639aa8605c14610393578063bc197c81146103c2578063e30c397814610409578063f23a6e6114610426578063f2fde38b14610452575f5ffd5b806367090ccf146102d3578063715018a61461031357806379ba5097146103275780637f07c9471461033b5780638456cb591461034e5780638abf607714610362575f5ffd5b80633075db56116101045780633075db56146102455780633659cfe6146102595780633f4ba83a146102785780634f1ef2861461028c57806352d1902d1461029f5780635c975abb146102b3575f5ffd5b80630178733a1461014b57806301ffc9a71461016057806304f3bcec1461019457806306fdde03146101da57806319ab453c146102065780631f59a83014610225575b5f5ffd5b61015e610159366004612639565b610471565b005b34801561016b575f5ffd5b5061017f61017a36600461267f565b6105a1565b60405190151581526020015b60405180910390f35b34801561019f575f5ffd5b507f00000000000000000000000016700100000000000000000000000000000000065b6040516001600160a01b03909116815260200161018b565b3480156101e5575f5ffd5b506c195c98cc4c4d4d57dd985d5b1d609a1b5b60405190815260200161018b565b348015610211575f5ffd5b5061015e6102203660046126c5565b6105c0565b6102386102333660046126e0565b6106da565b60405161018b9190612764565b348015610250575f5ffd5b5061017f610aef565b348015610264575f5ffd5b5061015e6102733660046126c5565b610b07565b348015610283575f5ffd5b5061015e610bce565b61015e61029a366004612980565b610c29565b3480156102aa575f5ffd5b506101f8610cde565b3480156102be575f5ffd5b5061017f60c954610100900460ff1660021490565b3480156102de575f5ffd5b506101c26102ed3660046129cc565b61012e60209081525f92835260408084209091529082529020546001600160a01b031681565b34801561031e575f5ffd5b5061015e610d8f565b348015610332575f5ffd5b5061015e610da0565b61015e610349366004612a3e565b610e17565b348015610359575f5ffd5b5061015e610ef2565b34801561036d575f5ffd5b506101c2610f47565b348015610381575f5ffd5b506033546001600160a01b03166101c2565b34801561039e575f5ffd5b506103b26103ad3660046126c5565b610f55565b60405161018b9493929190612a7c565b3480156103cd575f5ffd5b506103f06103dc366004612b0b565b63bc197c8160e01b98975050505050505050565b6040516001600160e01b0319909116815260200161018b565b348015610414575f5ffd5b506065546001600160a01b03166101c2565b348015610431575f5ffd5b506103f0610440366004612bcb565b63f23a6e6160e01b9695505050505050565b34801561045d575f5ffd5b5061015e61046c3660046126c5565b6110a0565b6562726964676560d01b61048481611111565b61048c61114d565b61049461117f565b61049e60026111ae565b5f6104ad610140850185612c41565b6104bb916004908290612c83565b8101906104c89190612caa565b90505f5f5f838060200190518101906104e19190612dd8565b94509450505092505f610508848960a001602081019061050191906126c5565b85856111c4565b905061053261012089013561052360c08b0160a08c016126c5565b6001600160a01b0316906112b4565b61054260c0890160a08a016126c5565b6001600160a01b0316877fe48bef18455e47bca14864ab6e82dffa29df148b051c09de95aec44ecf13598c86602001518487876040516105859493929190612f40565b60405180910390a3505050505061059c60016111ae565b505050565b5f6105ab826112bf565b806105ba57506105ba8261130e565b92915050565b5f54610100900460ff16158080156105de57505f54600160ff909116105b806105f75750303b1580156105f757505f5460ff166001145b61065f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610680575f805461ff0019166101001790555b61068982611342565b6106916113a0565b80156106d6575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60408051610160810182525f8082526020820181905291810182905260608082018390526080820183905260a0820183905260c0820183905260e08201839052610100820183905261012082019290925261014081019190915261073c61114d565b61074582612fff565b61074e816113c6565b61075661117f565b61076060026111ae565b61077060808401606085016130d2565b6001600160401b031634101561079957604051630178ce0b60e31b815260040160405180910390fd5b5f6107a760e08501856130ed565b905090505f5b81811015610800576107c260e08601866130ed565b828181106107d2576107d2613132565b905060200201355f036107f857604051634299323b60e11b815260040160405180910390fd5b6001016107ad565b5061082d9050636cdb3d1360e11b61081e60a08601608087016126c5565b6001600160a01b03169061141b565b61084a57604051633ee915f560e11b815260040160405180910390fd5b61086f61085d60608501604086016126c5565b61086a60208601866130d2565b6114eb565b5f5f61087a8561154b565b6040805161016081019091525f808252929450909250602081016108a46080890160608a016130d2565b6001600160401b031681526020016108c260c0890160a08a01613146565b63ffffffff1681525f602080830182905260408301919091523360608301526080909101906108f3908901896130d2565b6001600160401b031681526020015f6001600160a01b031688602001602081019061091e91906126c5565b6001600160a01b0316036109325733610942565b6109426040890160208a016126c5565b6001600160a01b0316815260209081019061097b90610963908a018a6130d2565b6c195c98cc4c4d4d57dd985d5b1d609a1b5b5f611a12565b6001600160a01b031681526020016109996080890160608a016130d2565b6109ac906001600160401b031634613175565b815260200184905290505f6109ca6562726964676560d01b82611ab4565b6001600160a01b0316631bdb003734846040518363ffffffff1660e01b81526004016109f69190612764565b5f6040518083038185885af1158015610a11573d5f5f3e3d5ffd5b50505050506040513d5f823e601f3d908101601f19168201604052610a399190810190613193565b96509050610a4d60608801604089016126c5565b6001600160a01b03168660a001516001600160a01b0316827fabbf62a1459339f9ac59136d313a5ccd83d2706cc6d4c04d90642520169144dc8960c0015187602001518c6080016020810190610aa391906126c5565b610ab060c08f018f6130ed565b8f8060e00190610ac091906130ed565b604051610ad397969594939291906132e3565b60405180910390a450505050610ae960016111ae565b50919050565b5f6002610afe60c95460ff1690565b60ff1614905090565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610b4f5760405162461bcd60e51b81526004016106569061333f565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610b81611b54565b6001600160a01b031614610ba75760405162461bcd60e51b81526004016106569061338b565b610bb081611b6f565b604080515f80825260208201909252610bcb91839190611b77565b50565b610bd6611ce1565b610bea60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610c27335f611d12565b565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000000004163003610c715760405162461bcd60e51b81526004016106569061333f565b7f00000000000000000000000001670010000000000000000000000000000000046001600160a01b0316610ca3611b54565b6001600160a01b031614610cc95760405162461bcd60e51b81526004016106569061338b565b610cd282611b6f565b6106d682826001611b77565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000000041614610d7d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610656565b505f516020613f005f395f51905f5290565b610d97611d16565b610c275f611d70565b60655433906001600160a01b03168114610e0e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610656565b610bcb81611d70565b610e1f61114d565b610e2761117f565b610e3160026111ae565b5f80808080610e42868801886133d7565b945094509450945094505f610e55611d89565b9050610e6084611e77565b5f610e6d878686866111c4565b9050610e826001600160a01b038616346112b4565b846001600160a01b0316866001600160a01b0316835f01517f895f73e418d1bbbad2a311d085fad00e5d98a960e9f2afa4b942071d39bec43a85604001518b60200151868a8a604051610ed99594939291906134f8565b60405180910390a4505050505050506106d660016111ae565b610efa61114d565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610c27336001611d12565b5f610f50611b54565b905090565b61012d6020525f9081526040902080546001820180546001600160401b03831693600160401b9093046001600160a01b0316929190610f9390613550565b80601f0160208091040260200160405190810160405280929190818152602001828054610fbf90613550565b801561100a5780601f10610fe15761010080835404028352916020019161100a565b820191905f5260205f20905b815481529060010190602001808311610fed57829003601f168201915b50505050509080600201805461101f90613550565b80601f016020809104026020016040519081016040528092919081815260200182805461104b90613550565b80156110965780601f1061106d57610100808354040283529160200191611096565b820191905f5260205f20905b81548152906001019060200180831161107957829003601f168201915b5050505050905084565b6110a8611d16565b606580546001600160a01b0383166001600160a01b031990911681179091556110d96033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b61111c816001611ab4565b6001600160a01b0316336001600160a01b031614610bcb576040516395383ea160e01b815260040160405180910390fd5b61116160c954610100900460ff1660021490565b15610c275760405163bae6e2a960e01b815260040160405180910390fd5b600261118d60c95460ff1690565b60ff1603610c275760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f46855f01516001600160401b03160361124257506020840151604051631759616b60e11b81526001600160a01b03821690632eb2c2d690611210903090889088908890600401613582565b5f604051808303815f87803b158015611227575f5ffd5b505af1158015611239573d5f5f3e3d5ffd5b505050506112ac565b61124b85611eb3565b60405163d81d0a1560e01b81529091506001600160a01b0382169063d81d0a159061127e908790879087906004016135db565b5f604051808303815f87803b158015611295575f5ffd5b505af11580156112a7573d5f5f3e3d5ffd5b505050505b949350505050565b6106d682825a611efa565b5f6001600160e01b0319821662bc399d60e11b14806112ee57506001600160e01b03198216637f07c94760e01b145b806105ba57506001600160e01b031982166301ffc9a760e01b1492915050565b5f6001600160e01b03198216630271189760e51b14806105ba57506301ffc9a760e01b6001600160e01b03198316146105ba565b5f54610100900460ff166113685760405162461bcd60e51b815260040161065690613610565b6113706113a0565b61138e6001600160a01b038216156113885781611d70565b33611d70565b5060c9805461ff001916610100179055565b5f54610100900460ff16610c275760405162461bcd60e51b815260040161065690613610565b8060e00151518160c0015151146113f05760405163196e8a4160e31b815260040160405180910390fd5b60808101516001600160a01b0316610bcb576040516303f8a7d360e01b815260040160405180910390fd5b6040516001600160e01b0319821660248201525f90819081906001600160a01b0386169060440160408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251611477919061365b565b5f60405180830381855afa9150503d805f81146114af576040519150601f19603f3d011682016040523d82523d5f602084013e6114b4565b606091505b50915091508180156114c7575080516020145b156114e357808060200190518101906114e09190613676565b92505b505092915050565b6001600160a01b038216158061152d5750611518816c195c98cc4c4d4d57dd985d5b1d609a1b6001611a12565b6001600160a01b0316826001600160a01b0316145b156106d657604051635b50f3f960e01b815260040160405180910390fd5b604080516080810182525f808252602082015260609181018290528082018290525f61012d8161158160a08701608088016126c5565b6001600160a01b03908116825260208201929092526040015f208054909250600160401b9004161561187b576040805160808101825282546001600160401b0381168252600160401b90046001600160a01b031660208201526001830180549192849290840191906115f290613550565b80601f016020809104026020016040519081016040528092919081815260200182805461161e90613550565b80156116695780601f1061164057610100808354040283529160200191611669565b820191905f5260205f20905b81548152906001019060200180831161164c57829003601f168201915b5050505050815260200160028201805461168290613550565b80601f01602080910402602001604051908101604052809291908181526020018280546116ae90613550565b80156116f95780601f106116d0576101008083540402835291602001916116f9565b820191905f5260205f20905b8154815290600101906020018083116116dc57829003601f168201915b505050505081525050915083608001602081019061171791906126c5565b6001600160a01b0316632eb2c2d6333061173460c08901896130ed565b61174160e08b018b6130ed565b6040518763ffffffff1660e01b815260040161176296959493929190613695565b5f604051808303815f87803b158015611779575f5ffd5b505af115801561178b573d5f5f3e3d5ffd5b505f925061179f91505060c08601866130ed565b905090505f5b81811015611874576117bd60a08701608088016126c5565b6001600160a01b031663b390c0ab6117d860c08901896130ed565b848181106117e8576117e8613132565b90506020020135888060e001906117ff91906130ed565b8581811061180f5761180f613132565b905060200201356040518363ffffffff1660e01b815260040161183c929190918252602082015260400190565b5f604051808303815f87803b158015611853575f5ffd5b505af1158015611865573d5f5f3e3d5ffd5b505050508060010190506117a5565b5050611978565b6040518060800160405280466001600160401b031681526020018560800160208101906118a891906126c5565b6001600160a01b031681526020016118ce6118c960a08801608089016126c5565b611f3d565b81526020016118eb6118e660a08801608089016126c5565b611fe7565b905291506118ff60a08501608086016126c5565b6001600160a01b0316632eb2c2d6333061191c60c08901896130ed565b61192960e08b018b6130ed565b6040518763ffffffff1660e01b815260040161194a96959493929190613695565b5f604051808303815f87803b158015611961575f5ffd5b505af1158015611973573d5f5f3e3d5ffd5b505050505b5030637f07c947823361199160608801604089016126c5565b61199e60c08901896130ed565b6119ab60e08b018b6130ed565b6040516020016119c197969594939291906136f2565b60408051601f19818403018152908290526119de916024016137a2565b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050509150915091565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81526001600160401b03861660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611a90573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112ac91906137b4565b5f7f0000000000000000000000001670010000000000000000000000000000000006604051633632b1fb60e11b81524660048201526024810185905283151560448201526001600160a01b039190911690636c6563f690606401602060405180830381865afa158015611b29573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b4d91906137b4565b9392505050565b5f516020613f005f395f51905f52546001600160a01b031690565b610bcb611d16565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615611baa5761059c8361202d565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c04575060408051601f3d908101601f19168201909252611c01918101906137cf565b60015b611c675760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610656565b5f516020613f005f395f51905f528114611cd55760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610656565b5061059c8383836120c8565b611cf560c954610100900460ff1660021490565b610c275760405163bae6e2a960e01b815260040160405180910390fd5b6106d65b6033546001600160a01b03163314610c275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610656565b606580546001600160a01b0319169055610bcb816120f2565b604080516060810182525f80825260208201819052918101919091526562726964676560d01b611db881611111565b336001600160a01b031663d0496d6a6040518163ffffffff1660e01b8152600401606060405180830381865afa158015611df4573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1891906137e6565b91505f611e3a83604001516109756c195c98cc4c4d4d57dd985d5b1d609a1b90565b9050806001600160a01b031683602001516001600160a01b031614611e7257604051632583296b60e01b815260040160405180910390fd5b505090565b6001600160a01b0381161580611e9557506001600160a01b03811630145b15610bcb57604051635b50f3f960e01b815260040160405180910390fd5b80516001600160401b03165f90815261012e60209081526040808320828501516001600160a01b0390811685529252909120541680611ef5576105ba82612143565b919050565b815f03611f0657505050565b611f2083838360405180602001604052805f815250612312565b61059c57604051634c67134d60e11b815260040160405180910390fd5b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f9182916001600160a01b03861691611f83919061365b565b5f60405180830381855afa9150503d805f8114611fbb576040519150601f19603f3d011682016040523d82523d5f602084013e611fc0565b606091505b509150915081611fde5760405180602001604052805f8152506112ac565b6112ac8161234f565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b17905290516060915f9182916001600160a01b03861691611f83919061365b565b6001600160a01b0381163b61209a5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610656565b5f516020613f005f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6120d1836124bc565b5f825111806120dd5750805b1561059c576120ec83836124fb565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f5f6121576033546001600160a01b031690565b602084015184516040808701516060880151915161217b959493929060240161384e565b60408051601f198184030181529190526020810180516001600160e01b031663689ccd8d60e11b17905290506121c36e627269646765645f6572633131353560881b5f611ab4565b816040516121d09061262c565b6121db92919061389a565b604051809103905ff0801580156121f4573d5f5f3e3d5ffd5b506001600160a01b038082165f90815261012d60209081526040918290208751815492890151909416600160401b026001600160e01b03199092166001600160401b0390941693909317178255850151919350849160018201906122589082613908565b506060820151600282019061226d9082613908565b505083516001600160401b039081165f90815261012e6020908152604080832082890180516001600160a01b039081168652919093529281902080546001600160a01b03191688851690811790915591518851828a015160608b01519351949750919094169493909316927f44977f2d30fe1e3aee2c1476f2f95aaacaf34e44b9359c403da01fcc93fd751b9261230492906139c2565b60405180910390a450919050565b5f6001600160a01b03851661233a57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b6060604082511061236e57818060200190518101906105ba91906139e6565b81516020036124a9575f5b60208160ff161080156123ae5750828160ff168151811061239c5761239c613132565b01602001516001600160f81b03191615155b156123c557806123bd81613a17565b915050612379565b5f8160ff166001600160401b038111156123e1576123e1612854565b6040519080825280601f01601f19166020018201604052801561240b576020820181803683370190505b5090505f91505b60208260ff161080156124475750838260ff168151811061243557612435613132565b01602001516001600160f81b03191615155b15611b4d57838260ff168151811061246157612461613132565b602001015160f81c60f81b818360ff168151811061248157612481613132565b60200101906001600160f81b03191690815f1a905350816124a181613a17565b925050612412565b505060408051602081019091525f815290565b6124c58161202d565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611b4d8383604051806060016040528060278152602001613f206027913960605f5f856001600160a01b031685604051612537919061365b565b5f60405180830381855af49150503d805f811461256f576040519150601f19603f3d011682016040523d82523d5f602084013e612574565b606091505b50915091506125858683838761258f565b9695505050505050565b606083156125fd5782515f036125f6576001600160a01b0385163b6125f65760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610656565b50816112ac565b6112ac83838151156126125781518083602001fd5b8060405162461bcd60e51b815260040161065691906137a2565b6104ca80613a3683390190565b5f5f6040838503121561264a575f5ffd5b82356001600160401b0381111561265f575f5ffd5b83016101608186031215612671575f5ffd5b946020939093013593505050565b5f6020828403121561268f575f5ffd5b81356001600160e01b031981168114611b4d575f5ffd5b6001600160a01b0381168114610bcb575f5ffd5b8035611ef5816126a6565b5f602082840312156126d5575f5ffd5b8135611b4d816126a6565b5f602082840312156126f0575f5ffd5b81356001600160401b03811115612705575f5ffd5b82016101008185031215611b4d575f5ffd5b5f5b83811015612731578181015183820152602001612719565b50505f910152565b5f8151808452612750816020860160208601612717565b601f01601f19169290920160200192915050565b6020815261277e6020820183516001600160401b03169052565b5f602083015161279960408401826001600160401b03169052565b50604083015163ffffffff811660608401525060608301516001600160a01b03811660808401525060808301516001600160401b03811660a08401525060a08301516001600160a01b03811660c08401525060c08301516001600160401b03811660e08401525060e08301516001600160a01b038116610100840152506101008301516001600160a01b03811661012084015250610120830151610140830152610140830151610160808401526112ac610180840182612739565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561288a5761288a612854565b60405290565b60405161010081016001600160401b038111828210171561288a5761288a612854565b60405161016081016001600160401b038111828210171561288a5761288a612854565b604051601f8201601f191681016001600160401b03811182821017156128fe576128fe612854565b604052919050565b5f6001600160401b0382111561291e5761291e612854565b50601f01601f191660200190565b5f82601f83011261293b575f5ffd5b8135602083015f61295361294e84612906565b6128d6565b9050828152858383011115612966575f5ffd5b828260208301375f92810160200192909252509392505050565b5f5f60408385031215612991575f5ffd5b823561299c816126a6565b915060208301356001600160401b038111156129b6575f5ffd5b6129c28582860161292c565b9150509250929050565b5f5f604083850312156129dd575f5ffd5b8235915060208301356129ef816126a6565b809150509250929050565b5f5f83601f840112612a0a575f5ffd5b5081356001600160401b03811115612a20575f5ffd5b602083019150836020828501011115612a37575f5ffd5b9250929050565b5f5f60208385031215612a4f575f5ffd5b82356001600160401b03811115612a64575f5ffd5b612a70858286016129fa565b90969095509350505050565b6001600160401b03851681526001600160a01b03841660208201526080604082018190525f90612aae90830185612739565b8281036060840152612ac08185612739565b979650505050505050565b5f5f83601f840112612adb575f5ffd5b5081356001600160401b03811115612af1575f5ffd5b6020830191508360208260051b8501011115612a37575f5ffd5b5f5f5f5f5f5f5f5f60a0898b031215612b22575f5ffd5b8835612b2d816126a6565b97506020890135612b3d816126a6565b965060408901356001600160401b03811115612b57575f5ffd5b612b638b828c01612acb565b90975095505060608901356001600160401b03811115612b81575f5ffd5b612b8d8b828c01612acb565b90955093505060808901356001600160401b03811115612bab575f5ffd5b612bb78b828c016129fa565b999c989b5096995094979396929594505050565b5f5f5f5f5f5f60a08789031215612be0575f5ffd5b8635612beb816126a6565b95506020870135612bfb816126a6565b9450604087013593506060870135925060808701356001600160401b03811115612c23575f5ffd5b612c2f89828a016129fa565b979a9699509497509295939492505050565b5f5f8335601e19843603018112612c56575f5ffd5b8301803591506001600160401b03821115612c6f575f5ffd5b602001915036819003821315612a37575f5ffd5b5f5f85851115612c91575f5ffd5b83861115612c9d575f5ffd5b5050820193919092039150565b5f60208284031215612cba575f5ffd5b81356001600160401b03811115612ccf575f5ffd5b6112ac8482850161292c565b6001600160401b0381168114610bcb575f5ffd5b8051611ef581612cdb565b8051611ef5816126a6565b5f82601f830112612d14575f5ffd5b8151602083015f612d2761294e84612906565b9050828152858383011115612d3a575f5ffd5b612d48836020830184612717565b95945050505050565b5f6001600160401b03821115612d6957612d69612854565b5060051b60200190565b5f82601f830112612d82575f5ffd5b8151612d9061294e82612d51565b8082825260208201915060208360051b860101925085831115612db1575f5ffd5b602085015b83811015612dce578051835260209283019201612db6565b5095945050505050565b5f5f5f5f5f60a08688031215612dec575f5ffd5b85516001600160401b03811115612e01575f5ffd5b860160808189031215612e12575f5ffd5b612e1a612868565b8151612e2581612cdb565b81526020820151612e35816126a6565b602082015260408201516001600160401b03811115612e52575f5ffd5b612e5e8a828501612d05565b60408301525060608201516001600160401b03811115612e7c575f5ffd5b612e888a828501612d05565b6060830152509550612e9e905060208701612cfa565b9350612eac60408701612cfa565b925060608601516001600160401b03811115612ec6575f5ffd5b612ed288828901612d73565b92505060808601516001600160401b03811115612eed575f5ffd5b612ef988828901612d73565b9150509295509295909350565b5f8151808452602084019350602083015f5b82811015612f36578151865260209586019590910190600101612f18565b5093949350505050565b6001600160a01b038581168252841660208201526080604082018190525f90612f6b90830185612f06565b8281036060840152612ac08185612f06565b8035611ef581612cdb565b63ffffffff81168114610bcb575f5ffd5b8035611ef581612f88565b5f82601f830112612fb3575f5ffd5b8135612fc161294e82612d51565b8082825260208201915060208360051b860101925085831115612fe2575f5ffd5b602085015b83811015612dce578035835260209283019201612fe7565b5f6101008236031215613010575f5ffd5b613018612890565b61302183612f7d565b815261302f602084016126ba565b6020820152613040604084016126ba565b604082015261305160608401612f7d565b6060820152613062608084016126ba565b608082015261307360a08401612f99565b60a082015260c08301356001600160401b03811115613090575f5ffd5b61309c36828601612fa4565b60c08301525060e08301356001600160401b038111156130ba575f5ffd5b6130c636828601612fa4565b60e08301525092915050565b5f602082840312156130e2575f5ffd5b8135611b4d81612cdb565b5f5f8335601e19843603018112613102575f5ffd5b8301803591506001600160401b0382111561311b575f5ffd5b6020019150600581901b3603821315612a37575f5ffd5b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215613156575f5ffd5b8135611b4d81612f88565b634e487b7160e01b5f52601160045260245ffd5b818103818111156105ba576105ba613161565b8051611ef581612f88565b5f5f604083850312156131a4575f5ffd5b825160208401519092506001600160401b038111156131c1575f5ffd5b830161016081860312156131d3575f5ffd5b6131db6128b3565b6131e482612cef565b81526131f260208301612cef565b602082015261320360408301613188565b604082015261321460608301612cfa565b606082015261322560808301612cef565b608082015261323660a08301612cfa565b60a082015261324760c08301612cef565b60c082015261325860e08301612cfa565b60e082015261326a6101008301612cfa565b61010082015261012082810151908201526101408201516001600160401b03811115613294575f5ffd5b6132a087828501612d05565b6101408301525080925050509250929050565b8183525f6001600160fb1b038311156132ca575f5ffd5b8260051b80836020870137939093016020019392505050565b6001600160401b03881681526001600160a01b0387811660208301528616604082015260a0606082018190525f9061331e90830186886132b3565b82810360808401526133318185876132b3565b9a9950505050505050505050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f5f5f5f5f60a086880312156133eb575f5ffd5b85356001600160401b03811115613400575f5ffd5b860160808189031215613411575f5ffd5b613419612868565b813561342481612cdb565b81526020820135613434816126a6565b602082015260408201356001600160401b03811115613451575f5ffd5b61345d8a82850161292c565b60408301525060608201356001600160401b0381111561347b575f5ffd5b6134878a82850161292c565b606083015250955061349d9050602087016126ba565b93506134ab604087016126ba565b925060608601356001600160401b038111156134c5575f5ffd5b6134d188828901612fa4565b92505060808601356001600160401b038111156134ec575f5ffd5b612ef988828901612fa4565b6001600160401b03861681526001600160a01b0385811660208301528416604082015260a0606082018190525f9061353290830185612f06565b82810360808401526135448185612f06565b98975050505050505050565b600181811c9082168061356457607f821691505b602082108103610ae957634e487b7160e01b5f52602260045260245ffd5b6001600160a01b0385811682528416602082015260a0604082018190525f906135ad90830185612f06565b82810360608401526135bf8185612f06565b83810360809094019390935250505f8152602001949350505050565b6001600160a01b03841681526060602082018190525f906135fe90830185612f06565b82810360408401526125858185612f06565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f825161366c818460208701612717565b9190910192915050565b5f60208284031215613686575f5ffd5b81518015158114611b4d575f5ffd5b6001600160a01b0387811682528616602082015260a0604082018190525f906136c190830186886132b3565b82810360608401526136d48185876132b3565b83810360809094019390935250505f81526020019695505050505050565b60a080825288516001600160401b03169082015260208801516001600160a01b031660c08201526040880151608060e08301525f90613735610120840182612739565b905060608a0151609f19848303016101008501526137538282612739565b91505061376b602084018a6001600160a01b03169052565b6001600160a01b0388166040840152828103606084015261378d8187896132b3565b905082810360808401526133318185876132b3565b602081525f611b4d6020830184612739565b5f602082840312156137c4575f5ffd5b8151611b4d816126a6565b5f602082840312156137df575f5ffd5b5051919050565b5f60608284031280156137f7575f5ffd5b50604051606081016001600160401b038111828210171561381a5761381a612854565b60405282518152602083015161382f816126a6565b6020820152604083015161384281612cdb565b60408201529392505050565b6001600160a01b038681168252851660208201526001600160401b038416604082015260a0606082018190525f9061388890830185612739565b82810360808401526135448185612739565b6001600160a01b03831681526040602082018190525f906112ac90830184612739565b601f82111561059c57805f5260205f20601f840160051c810160208510156138e25750805b601f840160051c820191505b81811015613901575f81556001016138ee565b5050505050565b81516001600160401b0381111561392157613921612854565b6139358161392f8454613550565b846138bd565b6020601f821160018114613967575f83156139505750848201515b5f19600385901b1c1916600184901b178455613901565b5f84815260208120601f198516915b828110156139965787850151825560209485019460019092019101613976565b50848210156139b357868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b604081525f6139d46040830185612739565b8281036020840152612d488185612739565b5f602082840312156139f6575f5ffd5b81516001600160401b03811115613a0b575f5ffd5b6112ac84828501612d05565b5f60ff821660ff8103613a2c57613a2c613161565b6001019291505056fe60806040526040516104ca3803806104ca833981016040819052610022916102d2565b61002d82825f610034565b50506103ed565b61003d8361005f565b5f825111806100495750805b1561005a57610058838361009e565b505b505050565b610068816100ca565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606100c383836040518060600160405280602781526020016104a36027913961017d565b9392505050565b6001600160a01b0381163b61013c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f856001600160a01b03168560405161019991906103a0565b5f60405180830381855af49150503d805f81146101d1576040519150601f19603f3d011682016040523d82523d5f602084013e6101d6565b606091505b5090925090506101e8868383876101f2565b9695505050505050565b606083156102605782515f03610259576001600160a01b0385163b6102595760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610133565b508161026a565b61026a8383610272565b949350505050565b8151156102825781518083602001fd5b8060405162461bcd60e51b815260040161013391906103bb565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156102ca5781810151838201526020016102b2565b50505f910152565b5f5f604083850312156102e3575f5ffd5b82516001600160a01b03811681146102f9575f5ffd5b60208401519092506001600160401b03811115610314575f5ffd5b8301601f81018513610324575f5ffd5b80516001600160401b0381111561033d5761033d61029c565b604051601f8201601f19908116603f011681016001600160401b038111828210171561036b5761036b61029c565b604052818152828201602001871015610382575f5ffd5b6103938260208301602086016102b0565b8093505050509250929050565b5f82516103b18184602087016102b0565b9190910192915050565b602081525f82518060208401526103d98160408501602087016102b0565b601f01601f19169190910160400192915050565b60aa806103f95f395ff3fe608060405236601057600e6013565b005b600e5b601f601b6021565b6057565b565b5f60527f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f5f375f5f365f845af43d5f5f3e8080156070573d5ff35b3d5ffdfea2646970667358221220f3cff57714eebac1dd722d446aa98658a8b56d7b4d59e3bd9d1ea66dfd37d73d64736f6c634300081e0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204351cd8e3cc988ac43dd8c81f614dec305fa2dbfbb296aaec039edabfbc07d0564736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" + } + }, + "0x0167001000000000000000000000000000010096": { + "balance": "0x0", + "code": "0x60806040526004361061021d575f3560e01c80635c975abb1161011e5780638da5cb5b116100a8578063b8f2e0c51161006d578063b8f2e0c514610653578063dd62ed3e14610672578063e30c397814610691578063f12506c1146106ae578063f2fde38b146106c2575f5ffd5b80638da5cb5b146105c357806395d89b41146105e0578063a457c2d7146105f4578063a77f151614610613578063a9059cbb14610634575f5ffd5b806379ba5097116100ee57806379ba5097146105475780637cf8ed0d1461055b5780637e4746341461057b5780638456cb591461059b5780638abf6077146105af575f5ffd5b80635c975abb146104c05780636c0db62b146104e057806370a08231146104ff578063715018a614610533575f5ffd5b80633075db56116101aa57806340c10f191161016f57806340c10f191461044557806342966c681461046457806349d12605146104835780634f1ef2861461049957806352d1902d146104ac575f5ffd5b80633075db56146103b0578063313ce567146103c45780633659cfe6146103f157806339509351146104125780633f4ba83a14610431575f5ffd5b8063095ea7b3116101f0578063095ea7b3146102ef5780630ae745481461030e57806318160ddd1461032f57806323b872dd1461034d57806326afaadd1461036c575f5ffd5b806301ffc9a71461022157806304f3bcec1461025557806306fdde031461029b578063090f9221146102bc575b5f5ffd5b34801561022c575f5ffd5b5061024061023b366004611e75565b6106e1565b60405190151581526020015b60405180910390f35b348015610260575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161024c565b3480156102a6575f5ffd5b506102af610783565b60405161024c9190611ebe565b3480156102c7575f5ffd5b506102837f000000000000000000000000167001000000000000000000000000000000000281565b3480156102fa575f5ffd5b50610240610309366004611f0b565b610813565b348015610319575f5ffd5b5061012f5461024090600160a01b900460ff1681565b34801561033a575f5ffd5b5060fd545b60405190815260200161024c565b348015610358575f5ffd5b50610240610367366004611f33565b61082a565b348015610377575f5ffd5b5061039161012d5461012e546001600160a01b0390911691565b604080516001600160a01b03909316835260208301919091520161024c565b3480156103bb575f5ffd5b5061024061084d565b3480156103cf575f5ffd5b5061012d54600160a01b900460ff165b60405160ff909116815260200161024c565b3480156103fc575f5ffd5b5061041061040b366004611f6d565b610865565b005b34801561041d575f5ffd5b5061024061042c366004611f0b565b610935565b34801561043c575f5ffd5b50610410610956565b348015610450575f5ffd5b5061041061045f366004611f0b565b6109b1565b34801561046f575f5ffd5b5061041061047e366004611f86565b610a7a565b34801561048e575f5ffd5b5061033f61012e5481565b6104106104a7366004611fb1565b610b66565b3480156104b7575f5ffd5b5061033f610c1b565b3480156104cb575f5ffd5b5061024060c954610100900460ff1660021490565b3480156104eb575f5ffd5b506104106104fa3660046120ba565b610ccc565b34801561050a575f5ffd5b5061033f610519366004611f6d565b6001600160a01b03165f90815260fb602052604090205490565b34801561053e575f5ffd5b50610410610e8a565b348015610552575f5ffd5b50610410610e9b565b348015610566575f5ffd5b5061012d54610283906001600160a01b031681565b348015610586575f5ffd5b5061012f54610283906001600160a01b031681565b3480156105a6575f5ffd5b50610410610f12565b3480156105ba575f5ffd5b50610283610f67565b3480156105ce575f5ffd5b506033546001600160a01b0316610283565b3480156105eb575f5ffd5b506102af610f75565b3480156105ff575f5ffd5b5061024061060e366004611f0b565b610f84565b34801561061e575f5ffd5b5061012d546103df90600160a01b900460ff1681565b34801561063f575f5ffd5b5061024061064e366004611f0b565b610ffe565b34801561065e575f5ffd5b5061041061066d36600461216a565b61100b565b34801561067d575f5ffd5b5061033f61068c3660046121a3565b611116565b34801561069c575f5ffd5b506065546001600160a01b0316610283565b3480156106b9575f5ffd5b50610240611140565b3480156106cd575f5ffd5b506104106106dc366004611f6d565b61116b565b5f6001600160e01b0319821663093e326b60e21b148061071157506001600160e01b03198216636c0db62b60e01b145b8061072c57506001600160e01b0319821663b8f2e0c560e01b145b8061074757506001600160e01b031982166336372b0760e01b145b8061076257506001600160e01b0319821663a219a02560e01b145b8061077d57506001600160e01b031982166301ffc9a760e01b145b92915050565b606060fe8054610792906121d4565b80601f01602080910402602001604051908101604052809291908181526020018280546107be906121d4565b80156108095780601f106107e057610100808354040283529160200191610809565b820191905f5260205f20905b8154815290600101906020018083116107ec57829003601f168201915b5050505050905090565b5f336108208185856111dc565b5060019392505050565b5f336108378582856112ff565b610842858585611377565b506001949350505050565b5f600261085c60c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961630036108b65760405162461bcd60e51b81526004016108ad9061220c565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b03166108e861152b565b6001600160a01b03161461090e5760405162461bcd60e51b81526004016108ad90612258565b61091781611546565b604080515f808252602082019092526109329183919061154e565b50565b5f336108208185856109478383611116565b61095191906122a4565b6111dc565b61095e6116b8565b61097260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16109af335f6116e9565b565b6109b96116f1565b6109c1611723565b6109cb6002611752565b6109d3611140565b156109f15760405163270bf77560e01b815260040160405180910390fd5b61012f546001600160a01b031633819003610a5857826001600160a01b0316816001600160a01b03167fe502aa3e015149f4b76a0b2b5394e3100903c4af27c3ddc98385395d3f55252684604051610a4b91815260200190565b60405180910390a3610a61565b610a6133611768565b610a6b8383611792565b50610a766001611752565b5050565b610a826116f1565b610a8a611723565b610a946002611752565b610a9c611140565b15610b495761012f546040518281526001600160a01b0390911690339082907f638edf84937fb2534b47cac985ea84d6ea4f4076315b56ea1c784d26b87e2bcb9060200160405180910390a36040516340c10f1960e01b8152336004820152602481018390526001600160a01b038216906340c10f19906044015f604051808303815f87803b158015610b2d575f5ffd5b505af1158015610b3f573d5f5f3e3d5ffd5b5050505050610b52565b610b5233611768565b610b5c338261185c565b6109326001611752565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010096163003610bae5760405162461bcd60e51b81526004016108ad9061220c565b7f00000000000000000000000001670010000000000000000000000000000100966001600160a01b0316610be061152b565b6001600160a01b031614610c065760405162461bcd60e51b81526004016108ad90612258565b610c0f82611546565b610a768282600161154e565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100961614610cba5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c000000000000000060648201526084016108ad565b505f5160206124475f395f51905f5290565b5f54610100900460ff1615808015610cea57505f54600160ff909116105b80610d035750303b158015610d0357505f5460ff166001145b610d665760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108ad565b5f805460ff191660011790558015610d87575f805461ff0019166101001790555b610d918888611999565b610d9a896119d5565b610e0b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f92019190915250611a3392505050565b61012d805461012e89905560ff8816600160a01b026001600160a81b03199091166001600160a01b038b16171790558015610e7f575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050505050565b610e92611a63565b6109af5f611abd565b60655433906001600160a01b03168114610f095760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016108ad565b61093281611abd565b610f1a6116f1565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16109af3360016116e9565b5f610f7061152b565b905090565b606060ff8054610792906121d4565b5f3381610f918286611116565b905083811015610ff15760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108ad565b61084282868684036111dc565b5f33610820818585611377565b6110136116f1565b7f000000000000000000000000167001000000000000000000000000000000000261103d81611ad6565b611045611723565b61104f6002611752565b61012f546001600160a01b038481169116148015611080575061012f60149054906101000a900460ff161515821515145b1561109e5760405163c118d2f360e01b815260040160405180910390fd5b61012f80546001600160a01b0385166001600160a81b03199091168117600160a01b851515908102919091179092556040805191825260208201929092527fa6b6f959792843a48d9d03d13595f2de7c86ae0ce12ef0fa759dd911b205e565910160405180910390a16111116001611752565b505050565b6001600160a01b039182165f90815260fc6020908152604080832093909416825291909152205490565b61012f545f906001600160a01b031615801590610f7057505061012f54600160a01b900460ff161590565b611173611a63565b606580546001600160a01b0383166001600160a01b031990911681179091556111a46033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6001600160a01b03831661123e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108ad565b6001600160a01b03821661129f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108ad565b6001600160a01b038381165f81815260fc602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61130a8484611116565b90505f19811461137157818110156113645760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016108ad565b61137184848484036111dc565b50505050565b6001600160a01b0383166113db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016108ad565b6001600160a01b03821661143d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016108ad565b611448838383611aff565b6001600160a01b0383165f90815260fb6020526040902054818110156114bf5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108ad565b6001600160a01b038085165f81815260fb602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061151e9086815260200190565b60405180910390a3611371565b5f5160206124475f395f51905f52546001600160a01b031690565b610932611a63565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156115815761111183611b10565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156115db575060408051601f3d908101601f191682019092526115d8918101906122c3565b60015b61163e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016108ad565b5f5160206124475f395f51905f5281146116ac5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016108ad565b50611111838383611bab565b6116cc60c954610100900460ff1660021490565b6109af5760405163bae6e2a960e01b815260040160405180910390fd5b610a76611a63565b61170560c954610100900460ff1660021490565b156109af5760405163bae6e2a960e01b815260040160405180910390fd5b600261173160c95460ff1690565b60ff16036109af5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b7f0000000000000000000000001670010000000000000000000000000000000002610a7681611bcf565b6001600160a01b0382166117e85760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016108ad565b6117f35f8383611aff565b8060fd5f82825461180491906122a4565b90915550506001600160a01b0382165f81815260fb60209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b0382166118bc5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016108ad565b6118c7825f83611aff565b6001600160a01b0382165f90815260fb60205260409020548181101561193a5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016108ad565b6001600160a01b0383165f81815260fb60209081526040808320868603905560fd80548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821615806119ad575080155b806119b757504681145b15610a765760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff166119fb5760405162461bcd60e51b81526004016108ad906122da565b611a03611c0d565b611a216001600160a01b03821615611a1b5781611abd565b33611abd565b5060c9805461ff001916610100179055565b5f54610100900460ff16611a595760405162461bcd60e51b81526004016108ad906122da565b610a768282611c33565b6033546001600160a01b031633146109af5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108ad565b606580546001600160a01b031916905561093281611c72565b336001600160a01b03821614610932576040516395383ea160e01b815260040160405180910390fd5b611b076116f1565b61111182611cc3565b6001600160a01b0381163b611b7d5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016108ad565b5f5160206124475f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611bb483611cec565b5f82511180611bc05750805b15611111576113718383611d2b565b6033546001600160a01b0316331480611bf05750336001600160a01b038216145b610932576040516395383ea160e01b815260040160405180910390fd5b5f54610100900460ff166109af5760405162461bcd60e51b81526004016108ad906122da565b5f54610100900460ff16611c595760405162461bcd60e51b81526004016108ad906122da565b60fe611c658382612370565b5060ff6111118282612370565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b306001600160a01b0382160361093257604051630c292c9d60e21b815260040160405180910390fd5b611cf581611b10565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611d50838360405180606001604052806027815260200161246760279139611d57565b9392505050565b60605f5f856001600160a01b031685604051611d73919061242b565b5f60405180830381855af49150503d805f8114611dab576040519150601f19603f3d011682016040523d82523d5f602084013e611db0565b606091505b5091509150611dc186838387611dcb565b9695505050505050565b60608315611e395782515f03611e32576001600160a01b0385163b611e325760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108ad565b5081611e43565b611e438383611e4b565b949350505050565b815115611e5b5781518083602001fd5b8060405162461bcd60e51b81526004016108ad9190611ebe565b5f60208284031215611e85575f5ffd5b81356001600160e01b031981168114611d50575f5ffd5b5f5b83811015611eb6578181015183820152602001611e9e565b50505f910152565b602081525f8251806020840152611edc816040850160208701611e9c565b601f01601f19169190910160400192915050565b80356001600160a01b0381168114611f06575f5ffd5b919050565b5f5f60408385031215611f1c575f5ffd5b611f2583611ef0565b946020939093013593505050565b5f5f5f60608486031215611f45575f5ffd5b611f4e84611ef0565b9250611f5c60208501611ef0565b929592945050506040919091013590565b5f60208284031215611f7d575f5ffd5b611d5082611ef0565b5f60208284031215611f96575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611fc2575f5ffd5b611fcb83611ef0565b9150602083013567ffffffffffffffff811115611fe6575f5ffd5b8301601f81018513611ff6575f5ffd5b803567ffffffffffffffff81111561201057612010611f9d565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561203f5761203f611f9d565b604052818152828201602001871015612056575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f83601f840112612085575f5ffd5b50813567ffffffffffffffff81111561209c575f5ffd5b6020830191508360208285010111156120b3575f5ffd5b9250929050565b5f5f5f5f5f5f5f5f60c0898b0312156120d1575f5ffd5b6120da89611ef0565b97506120e860208a01611ef0565b965060408901359550606089013560ff81168114612104575f5ffd5b9450608089013567ffffffffffffffff81111561211f575f5ffd5b61212b8b828c01612075565b90955093505060a089013567ffffffffffffffff81111561214a575f5ffd5b6121568b828c01612075565b999c989b5096995094979396929594505050565b5f5f6040838503121561217b575f5ffd5b61218483611ef0565b915060208301358015158114612198575f5ffd5b809150509250929050565b5f5f604083850312156121b4575f5ffd5b6121bd83611ef0565b91506121cb60208401611ef0565b90509250929050565b600181811c908216806121e857607f821691505b60208210810361220657634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8082018082111561077d57634e487b7160e01b5f52601160045260245ffd5b5f602082840312156122d3575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f82111561111157805f5260205f20601f840160051c8101602085101561234a5750805b601f840160051c820191505b81811015612369575f8155600101612356565b5050505050565b815167ffffffffffffffff81111561238a5761238a611f9d565b61239e8161239884546121d4565b84612325565b6020601f8211600181146123d0575f83156123b95750848201515b5f19600385901b1c1916600184901b178455612369565b5f84815260208120601f198516915b828110156123ff57878501518255602094850194600190920191016123df565b508482101561241c57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f825161243c818460208701611e9c565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a0424c37958987ba1a7f95f477f80554bc7c61dfeb2d7628df9af0b83570e9ea64736f6c634300081e0033" + }, + "0x0167001000000000000000000000000000010097": { + "balance": "0x0", + "code": "0x6080604052600436106101f1575f3560e01c80636352211e1161010857806395d89b411161009d578063c87b56dd1161006d578063c87b56dd14610592578063d1399b1a146105b1578063e30c3978146105d0578063e985e9c5146105ed578063f2fde38b1461060c575f5ffd5b806395d89b411461050d578063a22cb46514610521578063b88d4fde14610540578063c0bb46d61461055f575f5ffd5b80637cf8ed0d116100d85780637cf8ed0d146104a85780638456cb59146104c85780638abf6077146104dc5780638da5cb5b146104f0575f5ffd5b80636352211e1461044257806370a0823114610461578063715018a61461048057806379ba509714610494575f5ffd5b80633659cfe61161018957806342966c681161015957806342966c68146103b857806349d12605146103d75780634f1ef286146103fb57806352d1902d1461040e5780635c975abb14610422575f5ffd5b80633659cfe6146103475780633f4ba83a1461036657806340c10f191461037a57806342842e0e14610399575f5ffd5b8063095ea7b3116101c4578063095ea7b3146102af57806323b872dd146102d057806326afaadd146102ef5780633075db5614610333575f5ffd5b806301ffc9a7146101f557806304f3bcec1461022957806306fdde031461026f578063081812fc14610290575b5f5ffd5b348015610200575f5ffd5b5061021461020f36600461224b565b61062b565b60405190151581526020015b60405180910390f35b348015610234575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b039091168152602001610220565b34801561027a575f5ffd5b50610283610670565b60405161022091906122b3565b34801561029b575f5ffd5b506102576102aa3660046122c5565b610701565b3480156102ba575f5ffd5b506102ce6102c93660046122f7565b610727565b005b3480156102db575f5ffd5b506102ce6102ea36600461231f565b610840565b3480156102fa575f5ffd5b5061031461015f54610160546001600160a01b0390911691565b604080516001600160a01b039093168352602083019190915201610220565b34801561033e575f5ffd5b50610214610871565b348015610352575f5ffd5b506102ce610361366004612359565b610889565b348015610371575f5ffd5b506102ce610950565b348015610385575f5ffd5b506102ce6103943660046122f7565b6109ab565b3480156103a4575f5ffd5b506102ce6103b336600461231f565b610a03565b3480156103c3575f5ffd5b506102ce6103d23660046122c5565b610a1d565b3480156103e2575f5ffd5b506103ed6101605481565b604051908152602001610220565b6102ce610409366004612411565b610aa9565b348015610419575f5ffd5b506103ed610b5e565b34801561042d575f5ffd5b5061021460c954610100900460ff1660021490565b34801561044d575f5ffd5b5061025761045c3660046122c5565b610c0f565b34801561046c575f5ffd5b506103ed61047b366004612359565b610c6f565b34801561048b575f5ffd5b506102ce610cf4565b34801561049f575f5ffd5b506102ce610d05565b3480156104b3575f5ffd5b5061015f54610257906001600160a01b031681565b3480156104d3575f5ffd5b506102ce610d7c565b3480156104e7575f5ffd5b50610257610dd1565b3480156104fb575f5ffd5b506033546001600160a01b0316610257565b348015610518575f5ffd5b50610283610ddf565b34801561052c575f5ffd5b506102ce61053b36600461245c565b610def565b34801561054b575f5ffd5b506102ce61055a366004612495565b610dfa565b34801561056a575f5ffd5b506102577f000000000000000000000000167001000000000000000000000000000000000381565b34801561059d575f5ffd5b506102836105ac3660046122c5565b610e32565b3480156105bc575f5ffd5b506102ce6105cb36600461253e565b610e5b565b3480156105db575f5ffd5b506065546001600160a01b0316610257565b3480156105f8575f5ffd5b506102146106073660046125d7565b61100b565b348015610617575f5ffd5b506102ce610626366004612359565b611039565b5f6001600160e01b0319821663093e326b60e21b148061065b57506001600160e01b0319821663689ccd8d60e11b145b8061066a575061066a826110aa565b92915050565b606061012d805461068090612608565b80601f01602080910402602001604051908101604052809291908181526020018280546106ac90612608565b80156106f75780601f106106ce576101008083540402835291602001916106f7565b820191905f5260205f20905b8154815290600101906020018083116106da57829003601f168201915b5050505050905090565b5f61070b826110f9565b505f90815261013160205260409020546001600160a01b031690565b5f61073182610c0f565b9050806001600160a01b0316836001600160a01b0316036107a35760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806107bf57506107bf813361100b565b6108315760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000606482015260840161079a565b61083b8383611158565b505050565b61084a33826111c6565b6108665760405162461bcd60e51b815260040161079a90612640565b61083b838383611224565b5f600261088060c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971630036108d15760405162461bcd60e51b815260040161079a9061268d565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b0316610903611396565b6001600160a01b0316146109295760405162461bcd60e51b815260040161079a906126d9565b610932816113b1565b604080515f8082526020820190925261094d918391906113b9565b50565b610958611523565b61096c60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16109a9335f611554565b565b6109b361155c565b7f00000000000000000000000016700100000000000000000000000000000000036109dd8161158e565b6109e56115b7565b6109ef60026115e6565b6109f983836115fc565b61083b60016115e6565b61083b83838360405180602001604052805f815250610dfa565b610a2561155c565b7f0000000000000000000000001670010000000000000000000000000000000003610a4f8161158e565b610a576115b7565b610a6160026115e6565b33610a6b83610c0f565b6001600160a01b031614610a925760405163358bf3d960e01b815260040160405180910390fd5b610a9b82611615565b610aa560016115e6565b5050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010097163003610af15760405162461bcd60e51b815260040161079a9061268d565b7f00000000000000000000000001670010000000000000000000000000000100976001600160a01b0316610b23611396565b6001600160a01b031614610b495760405162461bcd60e51b815260040161079a906126d9565b610b52826113b1565b610aa5828260016113b9565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100971614610bfd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161079a565b505f516020612a7c5f395f51905f5290565b5f81815261012f60205260408120546001600160a01b03168061066a5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161079a565b5f6001600160a01b038216610cd85760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b606482015260840161079a565b506001600160a01b03165f908152610130602052604090205490565b610cfc6116b7565b6109a95f611711565b60655433906001600160a01b03168114610d735760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161079a565b61094d81611711565b610d8461155c565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16109a9336001611554565b5f610dda611396565b905090565b606061012e805461068090612608565b610aa533838361172a565b610e0433836111c6565b610e205760405162461bcd60e51b815260040161079a90612640565b610e2c848484846117f8565b50505050565b61015f546101605460609161066a916001600160a01b0390911690610e568561182b565b6118bb565b5f54610100900460ff1615808015610e7957505f54600160ff909116105b80610e925750303b158015610e9257505f5460ff166001145b610ef55760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161079a565b5f805460ff191660011790558015610f16575f805461ff0019166101001790555b610f208787611905565b610f2988611941565b610f9a83838080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525050604080516020601f8b0181900481028201810190925289815292508991508890819084018382808284375f9201919091525061199f92505050565b61015f80546001600160a01b0319166001600160a01b0389161790556101608690558015611001575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b6001600160a01b039182165f9081526101326020908152604080832093909416825291909152205460ff1690565b6110416116b7565b606580546001600160a01b0383166001600160a01b031990911681179091556110726033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b031982166380ac58cd60e01b14806110da57506001600160e01b03198216635b5e139f60e01b145b8061066a57506301ffc9a760e01b6001600160e01b031983161461066a565b5f81815261012f60205260409020546001600160a01b031661094d5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604482015260640161079a565b5f8181526101316020526040902080546001600160a01b0319166001600160a01b038416908117909155819061118d82610c0f565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b5f5f6111d183610c0f565b9050806001600160a01b0316846001600160a01b031614806111f857506111f8818561100b565b8061121c5750836001600160a01b031661121184610701565b6001600160a01b0316145b949350505050565b826001600160a01b031661123782610c0f565b6001600160a01b03161461125d5760405162461bcd60e51b815260040161079a90612725565b6001600160a01b0382166112bf5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161079a565b6112cc83838360016119cf565b826001600160a01b03166112df82610c0f565b6001600160a01b0316146113055760405162461bcd60e51b815260040161079a90612725565b5f8181526101316020908152604080832080546001600160a01b03199081169091556001600160a01b03878116808652610130855283862080545f190190559087168086528386208054600101905586865261012f90945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b5f516020612a7c5f395f51905f52546001600160a01b031690565b61094d6116b7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156113ec5761083b836119e5565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611446575060408051601f3d908101601f191682019092526114439181019061276a565b60015b6114a95760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161079a565b5f516020612a7c5f395f51905f5281146115175760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161079a565b5061083b838383611a80565b61153760c954610100900460ff1660021490565b6109a95760405163bae6e2a960e01b815260040160405180910390fd5b610aa56116b7565b61157060c954610100900460ff1660021490565b156109a95760405163bae6e2a960e01b815260040160405180910390fd5b336001600160a01b0382161461094d576040516395383ea160e01b815260040160405180910390fd5b60026115c560c95460ff1690565b60ff16036109a95760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b610aa5828260405180602001604052805f815250611aa4565b5f61161f82610c0f565b905061162e815f8460016119cf565b61163782610c0f565b5f8381526101316020908152604080832080546001600160a01b03199081169091556001600160a01b038516808552610130845282852080545f1901905587855261012f909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6033546001600160a01b031633146109a95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161079a565b606580546001600160a01b031916905561094d81611ad6565b816001600160a01b0316836001600160a01b03160361178b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161079a565b6001600160a01b038381165f8181526101326020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611803848484611224565b61180f84848484611b27565b610e2c5760405162461bcd60e51b815260040161079a90612781565b60605f61183783611c24565b60010190505f8167ffffffffffffffff81111561185657611856612372565b6040519080825280601f01601f191660200182016040528015611880576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461188a57509392505050565b60606118d1846001600160a01b03166014611cfb565b6118da8461182b565b836040516020016118ed939291906127d3565b60405160208183030381529060405290509392505050565b6001600160a01b0382161580611919575080155b8061192357504681145b15610aa55760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff166119675760405162461bcd60e51b815260040161079a9061285b565b61196f611e98565b61198d6001600160a01b038216156119875781611711565b33611711565b5060c9805461ff001916610100179055565b5f54610100900460ff166119c55760405162461bcd60e51b815260040161079a9061285b565b610aa58282611ebe565b6119d761155c565b6119e083611eff565b610e2c565b6001600160a01b0381163b611a525760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161079a565b5f516020612a7c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611a8983611f28565b5f82511180611a955750805b1561083b57610e2c8383611f67565b611aae8383611f8c565b611aba5f848484611b27565b61083b5760405162461bcd60e51b815260040161079a90612781565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f6001600160a01b0384163b15611c1957604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611b6a9033908990889088906004016128a6565b6020604051808303815f875af1925050508015611ba4575060408051601f3d908101601f19168201909252611ba1918101906128d8565b60015b611bff573d808015611bd1576040519150601f19603f3d011682016040523d82523d5f602084013e611bd6565b606091505b5080515f03611bf75760405162461bcd60e51b815260040161079a90612781565b805181602001fd5b6001600160e01b031916630a85bd0160e11b14905061121c565b506001949350505050565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611c625772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310611c8e576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310611cac57662386f26fc10000830492506010015b6305f5e1008310611cc4576305f5e100830492506008015b6127108310611cd857612710830492506004015b60648310611cea576064830492506002015b600a831061066a5760010192915050565b60605f611d09836002612907565b611d1490600261291e565b67ffffffffffffffff811115611d2c57611d2c612372565b6040519080825280601f01601f191660200182016040528015611d56576020820181803683370190505b509050600360fc1b815f81518110611d7057611d70612931565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611d9e57611d9e612931565b60200101906001600160f81b03191690815f1a9053505f611dc0846002612907565b611dcb90600161291e565b90505b6001811115611e42576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611dff57611dff612931565b1a60f81b828281518110611e1557611e15612931565b60200101906001600160f81b03191690815f1a90535060049490941c93611e3b81612945565b9050611dce565b508315611e915760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161079a565b9392505050565b5f54610100900460ff166109a95760405162461bcd60e51b815260040161079a9061285b565b5f54610100900460ff16611ee45760405162461bcd60e51b815260040161079a9061285b565b61012d611ef183826129a5565b5061012e61083b82826129a5565b306001600160a01b0382160361094d57604051630c292c9d60e21b815260040160405180910390fd5b611f31816119e5565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611e918383604051806060016040528060278152602001612a9c60279139612125565b6001600160a01b038216611fe25760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161079a565b5f81815261012f60205260409020546001600160a01b0316156120475760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161079a565b6120545f838360016119cf565b5f81815261012f60205260409020546001600160a01b0316156120b95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161079a565b6001600160a01b0382165f818152610130602090815260408083208054600101905584835261012f90915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60605f5f856001600160a01b0316856040516121419190612a60565b5f60405180830381855af49150503d805f8114612179576040519150601f19603f3d011682016040523d82523d5f602084013e61217e565b606091505b509150915061218f86838387612199565b9695505050505050565b606083156122075782515f03612200576001600160a01b0385163b6122005760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161079a565b508161121c565b61121c838381511561221c5781518083602001fd5b8060405162461bcd60e51b815260040161079a91906122b3565b6001600160e01b03198116811461094d575f5ffd5b5f6020828403121561225b575f5ffd5b8135611e9181612236565b5f5b83811015612280578181015183820152602001612268565b50505f910152565b5f815180845261229f816020860160208601612266565b601f01601f19169290920160200192915050565b602081525f611e916020830184612288565b5f602082840312156122d5575f5ffd5b5035919050565b80356001600160a01b03811681146122f2575f5ffd5b919050565b5f5f60408385031215612308575f5ffd5b612311836122dc565b946020939093013593505050565b5f5f5f60608486031215612331575f5ffd5b61233a846122dc565b9250612348602085016122dc565b929592945050506040919091013590565b5f60208284031215612369575f5ffd5b611e91826122dc565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112612395575f5ffd5b813567ffffffffffffffff8111156123af576123af612372565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156123de576123de612372565b6040528181528382016020018510156123f5575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612422575f5ffd5b61242b836122dc565b9150602083013567ffffffffffffffff811115612446575f5ffd5b61245285828601612386565b9150509250929050565b5f5f6040838503121561246d575f5ffd5b612476836122dc565b91506020830135801515811461248a575f5ffd5b809150509250929050565b5f5f5f5f608085870312156124a8575f5ffd5b6124b1856122dc565b93506124bf602086016122dc565b925060408501359150606085013567ffffffffffffffff8111156124e1575f5ffd5b6124ed87828801612386565b91505092959194509250565b5f5f83601f840112612509575f5ffd5b50813567ffffffffffffffff811115612520575f5ffd5b602083019150836020828501011115612537575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a031215612554575f5ffd5b61255d886122dc565b965061256b602089016122dc565b955060408801359450606088013567ffffffffffffffff81111561258d575f5ffd5b6125998a828b016124f9565b909550935050608088013567ffffffffffffffff8111156125b8575f5ffd5b6125c48a828b016124f9565b989b979a50959850939692959293505050565b5f5f604083850312156125e8575f5ffd5b6125f1836122dc565b91506125ff602084016122dc565b90509250929050565b600181811c9082168061261c57607f821691505b60208210810361263a57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b5f6020828403121561277a575f5ffd5b5051919050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6832ba3432b932bab69d60b91b81525f84516127f6816009850160208901612266565b600160fe1b600991840191820152845161281781600a840160208901612266565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b6001820152835161284e816013840160208801612266565b0160130195945050505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03858116825284166020820152604081018390526080606082018190525f9061218f90830184612288565b5f602082840312156128e8575f5ffd5b8151611e9181612236565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761066a5761066a6128f3565b8082018082111561066a5761066a6128f3565b634e487b7160e01b5f52603260045260245ffd5b5f81612953576129536128f3565b505f190190565b601f82111561083b57805f5260205f20601f840160051c8101602085101561297f5750805b601f840160051c820191505b8181101561299e575f815560010161298b565b5050505050565b815167ffffffffffffffff8111156129bf576129bf612372565b6129d3816129cd8454612608565b8461295a565b6020601f821160018114612a05575f83156129ee5750848201515b5f19600385901b1c1916600184901b17845561299e565b5f84815260208120601f198516915b82811015612a345787850151825560209485019460019092019101612a14565b5084821015612a5157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251612a71818460208701612266565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220d717ad20302054463235ef4e72f99bcdb814db9034dbb8422dfdbd14e78f284c64736f6c634300081e0033" + }, + "0x0167001000000000000000000000000000010098": { + "balance": "0x0", + "code": "0x6080604052600436106101cf575f3560e01c8063715018a6116100fd578063a22cb46511610092578063e30c397811610062578063e30c39781461053f578063e985e9c51461055c578063f242432a146105a4578063f2fde38b146105c3575f5ffd5b8063a22cb465146104c3578063b390c0ab146104e2578063d1399b1a14610501578063d81d0a1514610520575f5ffd5b80638456cb59116100cd5780638456cb591461046a5780638abf60771461047e5780638da5cb5b1461049257806395d89b41146104af575f5ffd5b8063715018a6146103ef57806379275a771461040357806379ba5097146104365780637cf8ed0d1461044a575f5ffd5b80633075db56116101735780634e1273f4116101435780634e1273f41461037c5780634f1ef286146103a857806352d1902d146103bb5780635c975abb146103cf575f5ffd5b80633075db561461031f5780633659cfe6146103335780633f4ba83a1461035257806349d1260514610366575f5ffd5b806306fdde03116101ae57806306fdde031461027a5780630e89341c1461029b57806326afaadd146102ba5780632eb2c2d6146102fe575f5ffd5b8062fdd58e146101d357806301ffc9a71461020557806304f3bcec14610234575b5f5ffd5b3480156101de575f5ffd5b506101f26101ed3660046123ec565b6105e2565b6040519081526020015b60405180910390f35b348015610210575f5ffd5b5061022461021f366004612429565b61067c565b60405190151581526020016101fc565b34801561023f575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016101fc565b348015610285575f5ffd5b5061028e6106bb565b6040516101fc9190612491565b3480156102a6575f5ffd5b5061028e6102b53660046124a3565b610748565b3480156102c5575f5ffd5b506102df61015f54610160546001600160a01b0390911691565b604080516001600160a01b0390931683526020830191909152016101fc565b348015610309575f5ffd5b5061031d6103183660046125fc565b6107db565b005b34801561032a575f5ffd5b50610224610827565b34801561033e575f5ffd5b5061031d61034d3660046126a8565b61083f565b34801561035d575f5ffd5b5061031d610906565b348015610371575f5ffd5b506101f26101605481565b348015610387575f5ffd5b5061039b6103963660046126c1565b610961565b6040516101fc91906127c8565b61031d6103b63660046127da565b610a80565b3480156103c6575f5ffd5b506101f2610b39565b3480156103da575f5ffd5b5061022460c954610100900460ff1660021490565b3480156103fa575f5ffd5b5061031d610beb565b34801561040e575f5ffd5b506102627f000000000000000000000000167001000000000000000000000000000000000481565b348015610441575f5ffd5b5061031d610bfc565b348015610455575f5ffd5b5061015f54610262906001600160a01b031681565b348015610475575f5ffd5b5061031d610c73565b348015610489575f5ffd5b50610262610cc8565b34801561049d575f5ffd5b506033546001600160a01b0316610262565b3480156104ba575f5ffd5b5061028e610cd6565b3480156104ce575f5ffd5b5061031d6104dd36600461281a565b610ce4565b3480156104ed575f5ffd5b5061031d6104fc366004612853565b610cef565b34801561050c575f5ffd5b5061031d61051b3660046128b7565b610d4d565b34801561052b575f5ffd5b5061031d61053a36600461298e565b610ecb565b34801561054a575f5ffd5b506065546001600160a01b0316610262565b348015610567575f5ffd5b50610224610576366004612a0c565b6001600160a01b039182165f90815261012e6020908152604080832093909416825291909152205460ff1690565b3480156105af575f5ffd5b5061031d6105be366004612a3d565b610f9b565b3480156105ce575f5ffd5b5061031d6105dd3660046126a8565b610fe0565b5f6001600160a01b0383166106515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b505f81815261012d602090815260408083206001600160a01b03861684529091529020545b92915050565b5f6001600160e01b03198216634d22606360e01b14806106ac57506001600160e01b0319821663689ccd8d60e11b145b80610676575061067682611051565b61016280546106c990612a90565b80601f01602080910402602001604051908101604052809291908181526020018280546106f590612a90565b80156107405780601f1061071757610100808354040283529160200191610740565b820191905f5260205f20905b81548152906001019060200180831161072357829003601f168201915b505050505081565b606061012f805461075890612a90565b80601f016020809104026020016040519081016040528092919081815260200182805461078490612a90565b80156107cf5780601f106107a6576101008083540402835291602001916107cf565b820191905f5260205f20905b8154815290600101906020018083116107b257829003601f168201915b50505050509050919050565b6001600160a01b0385163314806107f757506107f78533610576565b6108135760405162461bcd60e51b815260040161064890612ac8565b61082085858585856110a0565b5050505050565b5f600261083660c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981630036108875760405162461bcd60e51b815260040161064890612b16565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b03166108b961123b565b6001600160a01b0316146108df5760405162461bcd60e51b815260040161064890612b62565b6108e881611256565b604080515f808252602082019092526109039183919061125e565b50565b61090e6113c8565b61092260c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a161095f335f6113f9565b565b606081518351146109c65760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610648565b5f83516001600160401b038111156109e0576109e06124ba565b604051908082528060200260200182016040528015610a09578160200160208202803683370190505b5090505f5b8451811015610a7857610a53858281518110610a2c57610a2c612bae565b6020026020010151858381518110610a4657610a46612bae565b60200260200101516105e2565b828281518110610a6557610a65612bae565b6020908102919091010152600101610a0e565b509392505050565b6001600160a01b037f0000000000000000000000000167001000000000000000000000000000010098163003610ac85760405162461bcd60e51b815260040161064890612b16565b7f00000000000000000000000001670010000000000000000000000000000100986001600160a01b0316610afa61123b565b6001600160a01b031614610b205760405162461bcd60e51b815260040161064890612b62565b610b2982611256565b610b358282600161125e565b5050565b5f306001600160a01b037f00000000000000000000000001670010000000000000000000000000000100981614610bd85760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610648565b505f51602061316c5f395f51905f525b90565b610bf36113fd565b61095f5f611457565b60655433906001600160a01b03168114610c6a5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610648565b61090381611457565b610c7b611470565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a161095f3360016113f9565b5f610cd161123b565b905090565b61016180546106c990612a90565b610b353383836114a2565b610cf7611470565b7f0000000000000000000000001670010000000000000000000000000000000004610d2181611582565b610d296115ab565b610d3360026115da565b610d3e3384846115f0565b610d4860016115da565b505050565b5f54610100900460ff1615808015610d6b57505f54600160ff909116105b80610d845750303b158015610d8457505f5460ff166001145b610de75760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610648565b5f805460ff191660011790558015610e08575f805461ff0019166101001790555b610e128787611784565b610e1b886117c0565b610e3c610e37888860405180602001604052805f81525061181e565b611868565b61015f80546001600160a01b0319166001600160a01b038916179055610160869055610161610e6c858783612c06565b50610162610e7b838583612c06565b508015610ec1575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b610ed3611470565b7f0000000000000000000000001670010000000000000000000000000000000004610efd81611582565b610f056115ab565b610f0f60026115da565b610f89868686808060200260200160405190810160405280939291908181526020018383602002808284375f9201919091525050604080516020808a028281018201909352898252909350899250889182918501908490808284375f92018290525060408051602081019091529081529250611897915050565b610f9360016115da565b505050505050565b6001600160a01b038516331480610fb75750610fb78533610576565b610fd35760405162461bcd60e51b815260040161064890612ac8565b6108208585858585611a19565b610fe86113fd565b606580546001600160a01b0383166001600160a01b031990911681179091556110196033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f6001600160e01b03198216636cdb3d1360e11b148061108157506001600160e01b031982166303a24d0760e21b145b8061067657506301ffc9a760e01b6001600160e01b0319831614610676565b81518351146110c15760405162461bcd60e51b815260040161064890612cbf565b6001600160a01b0384166110e75760405162461bcd60e51b815260040161064890612d07565b336110f6818787878787611b53565b5f5b84518110156111d5575f85828151811061111457611114612bae565b602002602001015190505f85838151811061113157611131612bae565b6020908102919091018101515f84815261012d835260408082206001600160a01b038e1683529093529190912054909150818110156111825760405162461bcd60e51b815260040161064890612d4c565b5f83815261012d602090815260408083206001600160a01b038e8116855292528083208585039055908b168252812080548492906111c1908490612daa565b9091555050600190930192506110f8915050565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611225929190612dbd565b60405180910390a4610f93818787878787611b69565b5f51602061316c5f395f51905f52546001600160a01b031690565b6109036113fd565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561129157610d4883611cc3565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156112eb575060408051601f3d908101601f191682019092526112e891810190612dea565b60015b61134e5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610648565b5f51602061316c5f395f51905f5281146113bc5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610648565b50610d48838383611d5e565b6113dc60c954610100900460ff1660021490565b61095f5760405163bae6e2a960e01b815260040160405180910390fd5b610b355b6033546001600160a01b0316331461095f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610648565b606580546001600160a01b031916905561090381611d88565b61148460c954610100900460ff1660021490565b1561095f5760405163bae6e2a960e01b815260040160405180910390fd5b816001600160a01b0316836001600160a01b0316036115155760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610648565b6001600160a01b038381165f81815261012e6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b336001600160a01b03821614610903576040516395383ea160e01b815260040160405180910390fd5b60026115b960c95460ff1690565b60ff160361095f5760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b6001600160a01b0383166116525760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610648565b335f61165d84611dd9565b90505f61166984611dd9565b905061168783875f858560405180602001604052805f815250611b53565b5f85815261012d602090815260408083206001600160a01b038a168452909152902054848110156117065760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610648565b5f86815261012d602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091525f90525b50505050505050565b6001600160a01b0382161580611798575080155b806117a257504681145b15610b355760405163c118d2f360e01b815260040160405180910390fd5b5f54610100900460ff166117e65760405162461bcd60e51b815260040161064890612e01565b6117ee611e22565b61180c6001600160a01b038216156118065781611457565b33611457565b5060c9805461ff001916610100179055565b6060611834846001600160a01b03166014611e48565b61183d84611fe4565b8360405160200161185093929190612e4c565b60405160208183030381529060405290509392505050565b5f54610100900460ff1661188e5760405162461bcd60e51b815260040161064890612e01565b61090381612073565b6001600160a01b0384166118f75760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610648565b81518351146119185760405162461bcd60e51b815260040161064890612cbf565b33611927815f87878787611b53565b5f5b84518110156119b35783818151811061194457611944612bae565b602002602001015161012d5f87848151811061196257611962612bae565b602002602001015181526020019081526020015f205f886001600160a01b03166001600160a01b031681526020019081526020015f205f8282546119a69190612daa565b9091555050600101611929565b50846001600160a01b03165f6001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051611a03929190612dbd565b60405180910390a4610820815f87878787611b69565b6001600160a01b038416611a3f5760405162461bcd60e51b815260040161064890612d07565b335f611a4a85611dd9565b90505f611a5685611dd9565b9050611a66838989858589611b53565b5f86815261012d602090815260408083206001600160a01b038c16845290915290205485811015611aa95760405162461bcd60e51b815260040161064890612d4c565b5f87815261012d602090815260408083206001600160a01b038d8116855292528083208985039055908a16825281208054889290611ae8908490612daa565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611b48848a8a8a8a8a6120a2565b505050505050505050565b611b5b611470565b611b648461215c565b610f93565b6001600160a01b0384163b15610f935760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611bad9089908990889088908890600401612ed4565b6020604051808303815f875af1925050508015611be7575060408051601f3d908101601f19168201909252611be491810190612f31565b60015b611c9357611bf3612f4c565b806308c379a003611c2c5750611c07612f64565b80611c125750611c2e565b8060405162461bcd60e51b81526004016106489190612491565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610648565b6001600160e01b0319811663bc197c8160e01b1461177b5760405162461bcd60e51b815260040161064890612fde565b6001600160a01b0381163b611d305760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610648565b5f51602061316c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611d6783612185565b5f82511180611d735750805b15610d4857611d8283836121c4565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6040805160018082528183019092526060915f91906020808301908036833701905050905082815f81518110611e1157611e11612bae565b602090810291909101015292915050565b5f54610100900460ff1661095f5760405162461bcd60e51b815260040161064890612e01565b60605f611e56836002613026565b611e61906002612daa565b6001600160401b03811115611e7857611e786124ba565b6040519080825280601f01601f191660200182016040528015611ea2576020820181803683370190505b509050600360fc1b815f81518110611ebc57611ebc612bae565b60200101906001600160f81b03191690815f1a905350600f60fb1b81600181518110611eea57611eea612bae565b60200101906001600160f81b03191690815f1a9053505f611f0c846002613026565b611f17906001612daa565b90505b6001811115611f8e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611f4b57611f4b612bae565b1a60f81b828281518110611f6157611f61612bae565b60200101906001600160f81b03191690815f1a90535060049490941c93611f878161303d565b9050611f1a565b508315611fdd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610648565b9392505050565b60605f611ff0836121e9565b60010190505f816001600160401b0381111561200e5761200e6124ba565b6040519080825280601f01601f191660200182016040528015612038576020820181803683370190505b5090508181016020015b5f19016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461204257509392505050565b5f54610100900460ff166120995760405162461bcd60e51b815260040161064890612e01565b610903816122c0565b6001600160a01b0384163b15610f935760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906120e69089908990889088908890600401613052565b6020604051808303815f875af1925050508015612120575060408051601f3d908101601f1916820190925261211d91810190612f31565b60015b61212c57611bf3612f4c565b6001600160e01b0319811663f23a6e6160e01b1461177b5760405162461bcd60e51b815260040161064890612fde565b306001600160a01b0382160361090357604051630c292c9d60e21b815260040160405180910390fd5b61218e81611cc3565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060611fdd838360405180606001604052806027815260200161318c602791396122cd565b5f8072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106122275772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310612253576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061227157662386f26fc10000830492506010015b6305f5e1008310612289576305f5e100830492506008015b612710831061229d57612710830492506004015b606483106122af576064830492506002015b600a83106106765760010192915050565b61012f610b358282613096565b60605f5f856001600160a01b0316856040516122e99190613150565b5f60405180830381855af49150503d805f8114612321576040519150601f19603f3d011682016040523d82523d5f602084013e612326565b606091505b509150915061233786838387612341565b9695505050505050565b606083156123af5782515f036123a8576001600160a01b0385163b6123a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610648565b50816123b9565b6123b983836123c1565b949350505050565b815115611c125781518083602001fd5b80356001600160a01b03811681146123e7575f5ffd5b919050565b5f5f604083850312156123fd575f5ffd5b612406836123d1565b946020939093013593505050565b6001600160e01b031981168114610903575f5ffd5b5f60208284031215612439575f5ffd5b8135611fdd81612414565b5f5b8381101561245e578181015183820152602001612446565b50505f910152565b5f815180845261247d816020860160208601612444565b601f01601f19169290920160200192915050565b602081525f611fdd6020830184612466565b5f602082840312156124b3575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f191681016001600160401b03811182821017156124f3576124f36124ba565b6040525050565b5f6001600160401b03821115612512576125126124ba565b5060051b60200190565b5f82601f83011261252b575f5ffd5b8135612536816124fa565b60405161254382826124ce565b80915082815260208101915060208360051b860101925085831115612566575f5ffd5b602085015b8381101561258357803583526020928301920161256b565b5095945050505050565b5f82601f83011261259c575f5ffd5b81356001600160401b038111156125b5576125b56124ba565b6040516125cc601f8301601f1916602001826124ce565b8181528460208386010111156125e0575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f5f60a08688031215612610575f5ffd5b612619866123d1565b9450612627602087016123d1565b935060408601356001600160401b03811115612641575f5ffd5b61264d8882890161251c565b93505060608601356001600160401b03811115612668575f5ffd5b6126748882890161251c565b92505060808601356001600160401b0381111561268f575f5ffd5b61269b8882890161258d565b9150509295509295909350565b5f602082840312156126b8575f5ffd5b611fdd826123d1565b5f5f604083850312156126d2575f5ffd5b82356001600160401b038111156126e7575f5ffd5b8301601f810185136126f7575f5ffd5b8035612702816124fa565b60405161270f82826124ce565b80915082815260208101915060208360051b850101925087831115612732575f5ffd5b6020840193505b8284101561275b5761274a846123d1565b825260209384019390910190612739565b945050505060208301356001600160401b03811115612778575f5ffd5b6127848582860161251c565b9150509250929050565b5f8151808452602084019350602083015f5b828110156127be5781518652602095860195909101906001016127a0565b5093949350505050565b602081525f611fdd602083018461278e565b5f5f604083850312156127eb575f5ffd5b6127f4836123d1565b915060208301356001600160401b0381111561280e575f5ffd5b6127848582860161258d565b5f5f6040838503121561282b575f5ffd5b612834836123d1565b915060208301358015158114612848575f5ffd5b809150509250929050565b5f5f60408385031215612864575f5ffd5b50508035926020909101359150565b5f5f83601f840112612883575f5ffd5b5081356001600160401b03811115612899575f5ffd5b6020830191508360208285010111156128b0575f5ffd5b9250929050565b5f5f5f5f5f5f5f60a0888a0312156128cd575f5ffd5b6128d6886123d1565b96506128e4602089016123d1565b95506040880135945060608801356001600160401b03811115612905575f5ffd5b6129118a828b01612873565b90955093505060808801356001600160401b0381111561292f575f5ffd5b61293b8a828b01612873565b989b979a50959850939692959293505050565b5f5f83601f84011261295e575f5ffd5b5081356001600160401b03811115612974575f5ffd5b6020830191508360208260051b85010111156128b0575f5ffd5b5f5f5f5f5f606086880312156129a2575f5ffd5b6129ab866123d1565b945060208601356001600160401b038111156129c5575f5ffd5b6129d18882890161294e565b90955093505060408601356001600160401b038111156129ef575f5ffd5b6129fb8882890161294e565b969995985093965092949392505050565b5f5f60408385031215612a1d575f5ffd5b612a26836123d1565b9150612a34602084016123d1565b90509250929050565b5f5f5f5f5f60a08688031215612a51575f5ffd5b612a5a866123d1565b9450612a68602087016123d1565b9350604086013592506060860135915060808601356001600160401b0381111561268f575f5ffd5b600181811c90821680612aa457607f821691505b602082108103612ac257634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b601f821115610d4857805f5260205f20601f840160051c81016020851015612be75750805b601f840160051c820191505b81811015610820575f8155600101612bf3565b6001600160401b03831115612c1d57612c1d6124ba565b612c3183612c2b8354612a90565b83612bc2565b5f601f841160018114612c62575f8515612c4b5750838201355b5f19600387901b1c1916600186901b178355610820565b5f83815260208120601f198716915b82811015612c915786850135825560209485019460019092019101612c71565b5086821015612cad575f1960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561067657610676612d96565b604081525f612dcf604083018561278e565b8281036020840152612de1818561278e565b95945050505050565b5f60208284031215612dfa575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6832ba3432b932bab69d60b91b81525f8451612e6f816009850160208901612444565b600160fe1b6009918401918201528451612e9081600a840160208901612444565b600981830101915050712f746f6b656e5552493f75696e743235363d60701b60018201528351612ec7816013840160208801612444565b0160130195945050505050565b6001600160a01b0386811682528516602082015260a0604082018190525f90612eff9083018661278e565b8281036060840152612f11818661278e565b90508281036080840152612f258185612466565b98975050505050505050565b5f60208284031215612f41575f5ffd5b8151611fdd81612414565b5f60033d1115610be85760045f5f3e505f5160e01c90565b5f60443d1015612f715790565b6040513d600319016004823e80513d60248201116001600160401b0382111715612f9a57505090565b80820180516001600160401b03811115612fb5575050505090565b3d8401600319018282016020011115612fcf575050505090565b610a78602082850101856124ce565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b808202811582820484141761067657610676612d96565b5f8161304b5761304b612d96565b505f190190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190525f9061308b90830184612466565b979650505050505050565b81516001600160401b038111156130af576130af6124ba565b6130c3816130bd8454612a90565b84612bc2565b6020601f8211600181146130f5575f83156130de5750848201515b5f19600385901b1c1916600184901b178455610820565b5f84815260208120601f198516915b828110156131245787850151825560209485019460019092019101613104565b508482101561314157868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8251613161818460208701612444565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220a1d622100c0ded7f2341288ca71e4475d8f6e5d21718c0cc4397c387251a69e864736f6c634300081e0033" + }, + "0x5dADBb58A8ACfCaec475a08bBB4054F8874A3A8b": { + "balance": "0x0", + "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea2646970667358221220b452f9cf3fe9150f10fb7c009306e7bc2b01431c30d534cea8d74eb86000407664736f6c634300081e0033" + }, + "0x35AFc84D138F971439FD55eEF2475155d59012E0": { + "balance": "0x0", + "code": "0x730000000000000000000000000000000000000000301460806040525f5ffdfea26469706673582212201b1a58d97136e9e40404ddf8e4d8e9b8e7e1ff2a786bca7b61b374ce25e70cd864736f6c634300081e0033" + }, + "0x0167001000000000000000000000000000010099": { + "balance": "0x0", + "code": "0x608060405234801561000f575f5ffd5b50600436106100a6575f3560e01c8063395093511161006e578063395093511461011f57806370a082311461013257806395d89b411461015a578063a457c2d714610162578063a9059cbb14610175578063dd62ed3e14610188575f5ffd5b806306fdde03146100aa578063095ea7b3146100c857806318160ddd146100eb57806323b872dd146100fd578063313ce56714610110575b5f5ffd5b6100b261019b565b6040516100bf919061068a565b60405180910390f35b6100db6100d63660046106f0565b61022b565b60405190151581526020016100bf565b6002545b6040519081526020016100bf565b6100db61010b366004610718565b610244565b604051601281526020016100bf565b6100db61012d3660046106f0565b610267565b6100ef610140366004610752565b6001600160a01b03165f9081526020819052604090205490565b6100b2610288565b6100db6101703660046106f0565b610297565b6100db6101833660046106f0565b610316565b6100ef610196366004610772565b610323565b6060600380546101aa906107a3565b80601f01602080910402602001604051908101604052809291908181526020018280546101d6906107a3565b80156102215780601f106101f857610100808354040283529160200191610221565b820191905f5260205f20905b81548152906001019060200180831161020457829003601f168201915b5050505050905090565b5f3361023881858561034d565b60019150505b92915050565b5f33610251858285610470565b61025c8585856104e8565b506001949350505050565b5f336102388185856102798383610323565b61028391906107db565b61034d565b6060600480546101aa906107a3565b5f33816102a48286610323565b9050838110156103095760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b61025c828686840361034d565b5f336102388185856104e8565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610300565b6001600160a01b0382166104105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610300565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f61047b8484610323565b90505f1981146104e257818110156104d55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610300565b6104e2848484840361034d565b50505050565b6001600160a01b03831661054c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610300565b6001600160a01b0382166105ae5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610300565b6001600160a01b0383165f90815260208190526040902054818110156106255760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610300565b6001600160a01b038481165f81815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104e2565b602081525f82518060208401525f5b818110156106b65760208186018101516040868401015201610699565b505f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106eb575f5ffd5b919050565b5f5f60408385031215610701575f5ffd5b61070a836106d5565b946020939093013593505050565b5f5f5f6060848603121561072a575f5ffd5b610733846106d5565b9250610741602085016106d5565b929592945050506040919091013590565b5f60208284031215610762575f5ffd5b61076b826106d5565b9392505050565b5f5f60408385031215610783575f5ffd5b61078c836106d5565b915061079a602084016106d5565b90509250929050565b600181811c908216806107b757607f821691505b6020821081036107d557634e487b7160e01b5f52602260045260245ffd5b50919050565b8082018082111561023e57634e487b7160e01b5f52601160045260245ffdfea26469706673582212206d4e7cdb3df99621392fd5e5a0418d4b0d3a5e8b6b518af9c53ee149d753164c64736f6c634300081e0033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000003": "0x526567756c617245524332300000000000000000000000000000000000000018", + "0x0000000000000000000000000000000000000000000000000000000000000004": "0x52474c0000000000000000000000000000000000000000000000000000000006", + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000002710000", + "0x723077b8a1b173adc35e5f0e7e3662fd1208212cb629f9c128551ea7168da722": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x14e04a66bf74771820a7400ff6cf065175b3d7eb25805a5bd1633b161af5d101": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x215be5d23550ceb1beff54fb579a765903ba2ccc85b6f79bcf9bda4e8cb86034": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x6d1035fce6503985ab075a4ff3f7ce2e57cd5a9c5e6a0589dccacfea7bcb0af4": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x2a95ee547cef07a2fff0a68144824a0d9ded35ed87da118a53e1cda4aca8b944": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x7fcecd2a720442e9bc0cf1a8a6976f9fbddf6b996dc0d78af7e94dadf360d579": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x18bbf5fcf8fe870ecff419c4677497c08b2e6a5431bb94541d06c9da3f308e55": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x6e3431b4e42570cb9e3d926eb26f9e54de2df536ae0741ae16350d17a6c16ddc": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xdb302bf24b1ad5f23949da8e6b05747dc699499a995361a7bf40ec7204696d6f": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xa1d47ef1a6916dfbe65888f77739da164feb3a9a6afc95ee57e8b3e85ea5e955": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x454340b1295f9ff1c0fb9192166d0215d33f84dc5f2dc3f3e5732a4b557186bf": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x6a3bb1dada7c82a99b4a02d16da3fda07cb31d8887b9b99ec829ab67fd7a817e": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x2fe2844d12634f5dce1e2be5be96b2ea1c573f8f25171997e2f4bd943dd32f92": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x3836a017087644fbf6925ae1aca14201ce898a35434d9dea9ebd03cea44e049a": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x1c7a29f5a750951acb14fdf82a876085914eb17f15a162b054a3d2f8c92e2451": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x271927a243b678b7a071f19b4051ef93b16e397066e3fdef5bba26527e34a1a1": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x4663d660b5d810c9ab2f6dc64af7ff84ebae28a72342391622649a7fe87c93d4": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x352c3281a58937f04ef7cc7b88f3456b6ffd47f52a321c253dc083fb53a3a114": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x6d5faa5f4e671e6fe47b0eab51c62f8cebf354e21e8fdccf8cdfc0293dd341a3": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x673de83553dc3a2c0f59aa7193de392a4530feb73b9d6cd4fcef68802b8195c1": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x8b6a7148182c39c1ca0b052292befa83d09344947c23e47b300314fa8c2b8f7d": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xed4a23b4a030ee0d64ef69b276dee81d493e5efca01c0fa514e0c38f882af152": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x45124dfaa1716b8d229f646ff926377e17b887c2b2eab6a87ab0348ee1689eac": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x40f9c2870c16301e8614e56453fc5b838c4a153eb0b18c4c050efbf4f786518a": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xbd55c9294669a294e0c8fd07e2c07738e95be0123b62b752d782fe317f25ca97": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x52c0eeeba21034a69ad7cfa70f75c6fd127acd4084a4da80f30cc7540bdf990b": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x843a9befd317bdcee99c42a3adf6d00b789224beda1485c7f6e7bf327755328e": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xea09b20615ffad342fb450741e59ea6ba180fa93b8701b31fa639ef9ff50d2b0": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x39cd5e5ec54ce41a5f5b2c13ce7133998dfef654caacfb44d5c517700c217d36": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xd46a4409ebc9fc47afedecdadc89dbc0d6f46be6bdb49fd822d5143daedc83f0": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x5735d6fad3ea4f2328a1557ff1be7570df3d4c2630b448c1b7fe2781d018beb0": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x509c640066f1872118ec768fcb985c7bf4476690788ac7e112ab072ca82ab219": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xf9982658df503b792c55f860aefa42588712c9069523324d4b9ce4d9a10e2e9c": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x87d11160035f8424b7163a397fc780b278af3de5a6caa2cb71bb2b46825ce159": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x1dde801acf032acf4b3151b5edb82e0e4d872a54d9efbf3809d75efcbfa2bf8f": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x01aad34cdf9f8f5fca811e2fab1411b08778be71f547894fa0d9fafa5c1f60b2": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x65cee0cf3d643c3f3402a40ddebed72cec3dd6bac66974bff967dc0ef9e2faed": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0xaf6cadccd3f046eeb282ec0b08e44adbe45784a23f41d76b096ccb8e7f238e2b": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x2589e1958c4e4f4a5f777b0b92a3170cc21771a8d3580331a71232f8624f7628": "0x00000000000000000000000000000000000000000000000000000000000fa000", + "0x1f27de92fedf410197c8a09d0f2f03372d92b75c9889a6a61cf491395877fbcf": "0x00000000000000000000000000000000000000000000000000000000000fa000" + } + } + } +} diff --git a/packages/taiko-client/internal/docker/nodes/nmc/taiko-devnet.cfg b/packages/taiko-client/internal/docker/nodes/nmc/taiko-devnet.cfg new file mode 100644 index 00000000000..8d2ddf078db --- /dev/null +++ b/packages/taiko-client/internal/docker/nodes/nmc/taiko-devnet.cfg @@ -0,0 +1,40 @@ +{ + "Init": { + "ChainSpecPath": "/nethermind/configs/chainspec/taiko-devnet.json", + "BaseDbPath": "/nethermind/data/taiko-devnet", + "LogFileName": "taiko-devnet.log", + "IsMining": false, + "DiscoveryEnabled": false + }, + "TxPool": { + "Size": 2048, + "BlobsSupport": "Disabled" + }, + "Sync": { + "FastSync": false, + "SnapSync": false, + "PivotNumber": 0 + }, + "Pruning": { + "Mode": "None" + }, + "JsonRpc": { + "Enabled": true, + "Host": "0.0.0.0", + "Port": 8545, + "WebSocketsPort": 8546, + "EngineHost": "0.0.0.0", + "EnginePort": 8551, + "EngineEnabledModules": ["engine"], + "JwtSecretFile": "/host/jwt.hex", + "EnabledModules": ["eth", "net", "web3", "txpool", "debug", "taiko", "admin", "subscribe"] + }, + "Network": { + "DiscoveryPort": 30303, + "P2PPort": 30303 + }, + "Metrics": { + "NodeName": "Taiko Devnet NMC" + } +} + diff --git a/packages/taiko-client/internal/docker/start.sh b/packages/taiko-client/internal/docker/start.sh index 85c13ca7c7c..abacce22cb6 100755 --- a/packages/taiko-client/internal/docker/start.sh +++ b/packages/taiko-client/internal/docker/start.sh @@ -2,11 +2,32 @@ source scripts/common.sh -if [ "$L2_NODE" == "l2_geth" ];then +# Support multiple L2 node types +case "$L2_NODE" in + l2_geth) DOCKER_SERVICE_LIST=("l1_node" "l2_geth") - else - DOCKER_SERVICE_LIST=("l1_node") -fi + ;; + l2_nmc) + DOCKER_SERVICE_LIST=("l1_node" "l2_nmc") + # For NMC, we need to dynamically inject the shastaTimestamp into the chainspec + # because Nethermind uses a static chainspec file unlike taiko-geth which uses CLI flags. + # We use a template file to avoid modifying the original and to ensure clean state on each run. + NMC_CHAINSPEC_DIR="internal/docker/nodes/nmc/chainspec" + NMC_CHAINSPEC_TEMPLATE="${NMC_CHAINSPEC_DIR}/taiko-devnet.template.json" + NMC_CHAINSPEC="${NMC_CHAINSPEC_DIR}/taiko-devnet.json" + + if [ -n "${TAIKO_INTERNAL_SHASTA_TIME:-}" ] && [ -f "$NMC_CHAINSPEC_TEMPLATE" ]; then + SHASTA_HEX=$(printf "0x%x" "$TAIKO_INTERNAL_SHASTA_TIME") + echo "Generating NMC chainspec with shastaTimestamp=$SHASTA_HEX (decimal: $TAIKO_INTERNAL_SHASTA_TIME)" + # Generate chainspec from template with dynamic shastaTimestamp + jq --arg ts "$SHASTA_HEX" '.engine.Taiko.shastaTimestamp = $ts' "$NMC_CHAINSPEC_TEMPLATE" > "$NMC_CHAINSPEC" + fi + ;; + *) + echo "Error: Unknown L2_NODE: '$L2_NODE'. Supported values: l2_geth, l2_nmc" + exit 1 + ;; +esac # start docker compose services echo "starting docker compose service: ${DOCKER_SERVICE_LIST[*]}" diff --git a/packages/taiko-client/internal/docker/stop.sh b/packages/taiko-client/internal/docker/stop.sh index 61b509e50a9..efe464d43a0 100755 --- a/packages/taiko-client/internal/docker/stop.sh +++ b/packages/taiko-client/internal/docker/stop.sh @@ -2,11 +2,19 @@ source scripts/common.sh -if [ "$L2_NODE" == "l2_geth" ];then +# Support multiple L2 node types +case "$L2_NODE" in + l2_geth) DOCKER_SERVICE_LIST=("l1_node" "l2_geth") - else - DOCKER_SERVICE_LIST=("l1_node") -fi + ;; + l2_nmc) + DOCKER_SERVICE_LIST=("l1_node" "l2_nmc") + ;; + *) + echo "Error: Unknown L2_NODE: '$L2_NODE'. Supported values: l2_geth, l2_nmc" + exit 1 + ;; +esac echo "stop docker compose service: ${DOCKER_SERVICE_LIST[*]}" From 71d7891a62dba886dbb7c95d31358da5ac901116 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Fri, 26 Dec 2025 10:05:55 +0000 Subject: [PATCH 02/16] Update taiko-client test workflow to include l2_nmc execution node --- .github/workflows/taiko-client--test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index beec2d23f71..2eabe416090 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -50,7 +50,7 @@ jobs: strategy: matrix: - execution_node: [l2_geth] + execution_node: [l2_geth, l2_nmc] steps: - name: Cancel Previous Runs From d7e10ca99f6fef903acf72eb725c1b81299661cc Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Wed, 31 Dec 2025 06:31:04 +0000 Subject: [PATCH 03/16] Update error handling in proposer tests for L2_NODE environment to pass a test --- packages/taiko-client/proposer/proposer_test.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/taiko-client/proposer/proposer_test.go b/packages/taiko-client/proposer/proposer_test.go index c43bbd0722f..bf314ebbd16 100644 --- a/packages/taiko-client/proposer/proposer_test.go +++ b/packages/taiko-client/proposer/proposer_test.go @@ -450,7 +450,11 @@ func (s *ProposerTestSuite) TestProposeMultiBlobsInOneBatch() { []byte{1}, ) if err != nil { - s.Equal("replacement transaction underpriced", err.Error()) + if os.Getenv("L2_NODE") == "l2_nmc" { + s.Equal("ReplacementNotAllowed", err.Error()) + } else { + s.Equal("replacement transaction underpriced", err.Error()) + } } txsBatch[i] = append(txsBatch[i], tx) } From 3cdde8b11f3cd08b0be0214b00ef0b93581b9109 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Tue, 6 Jan 2026 09:03:39 +0000 Subject: [PATCH 04/16] Update the hardcoded error string to include NMC --- packages/taiko-client/internal/testutils/helper.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/taiko-client/internal/testutils/helper.go b/packages/taiko-client/internal/testutils/helper.go index ee3151c6dd5..750a714b494 100644 --- a/packages/taiko-client/internal/testutils/helper.go +++ b/packages/taiko-client/internal/testutils/helper.go @@ -155,8 +155,13 @@ func (s *ClientTestSuite) ProposeAndInsertValidBlock( s.Nil(err) err = s.RPCClient.L2.SendTransaction(context.Background(), signedTx) if err != nil { - // If the transaction is underpriced, we just ignore it. - s.Equal("replacement transaction underpriced", err.Error()) + // If the transaction is underpriced or a replacement is not allowed, we just ignore it. + // Geth returns "replacement transaction underpriced", Nethermind returns "ReplacementNotAllowed" + if os.Getenv("L2_NODE") == "l2_nmc" { + s.Equal("ReplacementNotAllowed", err.Error()) + } else { + s.Equal("replacement transaction underpriced", err.Error()) + } } s.InitShastaGenesisProposal() From 63e91c0d16311f15293f7b6cb69f2b946a3df3e0 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Tue, 6 Jan 2026 10:16:49 +0000 Subject: [PATCH 05/16] Update chain syncer tests to use PendingNonceAt for nonce retrieval --- .../driver/chain_syncer/chain_syncer_test.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go index 0aabe5796b7..faa58461bb9 100644 --- a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go @@ -323,7 +323,8 @@ func (s *ChainSyncerTestSuite) TestShastaProposalWithMultipleBlocks() { head1, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) + // Use PendingNonceAt to account for transactions that may be pending in the mempool + nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) s.Nil(err) testTx1, err := testutils.AssembleAndSendTestTx( @@ -373,7 +374,8 @@ func (s *ChainSyncerTestSuite) TestShastaProposalWithOneBlobAndMultipleBlocks() head1, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) + // Use PendingNonceAt to account for transactions that may be pending in the mempool + nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) s.Nil(err) batches := 100 @@ -427,7 +429,8 @@ func (s *ChainSyncerTestSuite) TestShastaProposalWithTooMuchBlocks() { head1, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) + // Use PendingNonceAt to account for transactions that may be pending in the mempool + nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) s.Nil(err) txBatch := make([]types.Transactions, manifest.ProposalMaxBlocks+1) @@ -468,7 +471,8 @@ func (s *ChainSyncerTestSuite) TestShastaProposalsWithInvalidForcedInclusion() { head, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) + // Use PendingNonceAt to account for transactions that may be pending in the mempool + nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) s.Nil(err) testTx, err := testutils.AssembleAndSendTestTx( @@ -566,7 +570,8 @@ func (s *ChainSyncerTestSuite) TestShastaProposalsWithForcedInclusion() { head, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) + // Use PendingNonceAt to account for transactions that may be pending in the mempool + nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) s.Nil(err) testTx, err := testutils.AssembleAndSendTestTx( From bd0bd043d4e5779318d38cb3a4fa6003e1985023 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Tue, 6 Jan 2026 10:55:19 +0000 Subject: [PATCH 06/16] Disable fail-fast in test workflow strategy --- .github/workflows/taiko-client--test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/taiko-client--test.yml b/.github/workflows/taiko-client--test.yml index 2eabe416090..4b5ad665a67 100644 --- a/.github/workflows/taiko-client--test.yml +++ b/.github/workflows/taiko-client--test.yml @@ -49,6 +49,7 @@ jobs: SHASTA_FORK_TAIKO_MONO_DIR: shasta-fork-taiko-mono strategy: + fail-fast: false matrix: execution_node: [l2_geth, l2_nmc] From 8feefe9739b77d6c9f39064b857b6f49dadf2faf Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Tue, 6 Jan 2026 10:57:40 +0000 Subject: [PATCH 07/16] Revert "Update chain syncer tests to use PendingNonceAt for nonce retrieval" This reverts commit f9b13d67d8ea8912b256f298920648b203ccfbd6. --- .../driver/chain_syncer/chain_syncer_test.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go index faa58461bb9..0aabe5796b7 100644 --- a/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go +++ b/packages/taiko-client/driver/chain_syncer/chain_syncer_test.go @@ -323,8 +323,7 @@ func (s *ChainSyncerTestSuite) TestShastaProposalWithMultipleBlocks() { head1, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - // Use PendingNonceAt to account for transactions that may be pending in the mempool - nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) + nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) s.Nil(err) testTx1, err := testutils.AssembleAndSendTestTx( @@ -374,8 +373,7 @@ func (s *ChainSyncerTestSuite) TestShastaProposalWithOneBlobAndMultipleBlocks() head1, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - // Use PendingNonceAt to account for transactions that may be pending in the mempool - nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) + nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) s.Nil(err) batches := 100 @@ -429,8 +427,7 @@ func (s *ChainSyncerTestSuite) TestShastaProposalWithTooMuchBlocks() { head1, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - // Use PendingNonceAt to account for transactions that may be pending in the mempool - nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) + nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) s.Nil(err) txBatch := make([]types.Transactions, manifest.ProposalMaxBlocks+1) @@ -471,8 +468,7 @@ func (s *ChainSyncerTestSuite) TestShastaProposalsWithInvalidForcedInclusion() { head, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - // Use PendingNonceAt to account for transactions that may be pending in the mempool - nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) + nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) s.Nil(err) testTx, err := testutils.AssembleAndSendTestTx( @@ -570,8 +566,7 @@ func (s *ChainSyncerTestSuite) TestShastaProposalsWithForcedInclusion() { head, err := s.RPCClient.L2.BlockByNumber(context.Background(), nil) s.Nil(err) - // Use PendingNonceAt to account for transactions that may be pending in the mempool - nonce, err := s.RPCClient.L2.PendingNonceAt(context.Background(), s.TestAddr) + nonce, err := s.RPCClient.L2.NonceAt(context.Background(), s.TestAddr, nil) s.Nil(err) testTx, err := testutils.AssembleAndSendTestTx( From 195d9e589300d4a059c9b5f890cd9f50228ae976 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Tue, 6 Jan 2026 11:08:48 +0000 Subject: [PATCH 08/16] Update l2_nmc Docker image to the latest master version --- packages/taiko-client/internal/docker/nodes/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index 899b7743e7e..115708970cd 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -73,7 +73,7 @@ services: l2_nmc: container_name: l2_nmc - image: nethermindeth/nethermind:taiko-shasta-12-26-2025 # TODO(@jmadibekov): Change to the latest stable release + image: nethermindeth/nethermind:master-5f11732 restart: unless-stopped pull_policy: always volumes: From e312e6460ff5197b8f90b2a770d3469b40fe67e7 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Thu, 8 Jan 2026 06:17:01 +0000 Subject: [PATCH 09/16] Update l2_nmc Docker image to version master-32dc74a and modify chain specification for updated contract code in internal.json in taiko-geth --- .../taiko-client/internal/docker/nodes/docker-compose.yml | 2 +- .../docker/nodes/nmc/chainspec/taiko-devnet.template.json | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index 115708970cd..b3e45c65d46 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -73,7 +73,7 @@ services: l2_nmc: container_name: l2_nmc - image: nethermindeth/nethermind:master-5f11732 + image: nethermindeth/nethermind:master-32dc74a restart: unless-stopped pull_policy: always volumes: diff --git a/packages/taiko-client/internal/docker/nodes/nmc/chainspec/taiko-devnet.template.json b/packages/taiko-client/internal/docker/nodes/nmc/chainspec/taiko-devnet.template.json index dd6863e0e1b..a9f9baa9258 100644 --- a/packages/taiko-client/internal/docker/nodes/nmc/chainspec/taiko-devnet.template.json +++ b/packages/taiko-client/internal/docker/nodes/nmc/chainspec/taiko-devnet.template.json @@ -116,14 +116,14 @@ }, "0x0167001000000000000000000000000000010004": { "balance": "0x0", - "code": "0x60806040526004361061009e575f3560e01c806379ba50971161006357806379ba509714610151578063863acc33146101655780638da5cb5b146101b0578063df6060fb146101cd578063e30c397814610200578063f2fde38b1461021d576100ad565b80623f3080146100b55780633659cfe6146100e95780634f1ef2861461010857806352d1902d1461011b578063715018a61461013d576100ad565b366100ad576100ab61023c565b005b6100ab61023c565b3480156100c0575f5ffd5b506100d46100cf366004610bd0565b6102c2565b60405190151581526020015b60405180910390f35b3480156100f4575f5ffd5b506100ab610103366004610c12565b6103eb565b6100ab610116366004610c3f565b6104d1565b348015610126575f5ffd5b5061012f6105a0565b6040519081526020016100e0565b348015610148575f5ffd5b506100ab610651565b34801561015c575f5ffd5b506100ab610664565b348015610170575f5ffd5b506101987f000000000000000000000000016700100000000000000000000000000001000181565b6040516001600160a01b0390911681526020016100e0565b3480156101bb575f5ffd5b506033546001600160a01b0316610198565b3480156101d8575f5ffd5b506101987f000000000000000000000000016700100000000000000000000000000001000581565b34801561020b575f5ffd5b506065546001600160a01b0316610198565b348015610228575f5ffd5b506100ab610237366004610c12565b6106db565b5f6102515f356001600160e01b0319166102c2565b61027b577f000000000000000000000000016700100000000000000000000000000001000161029d565b7f00000000000000000000000001670010000000000000000000000000000100055b9050365f5f375f5f365f845af43d5f5f3e8080156102b9573d5ff35b3d5ffd5b505050565b5f6001600160e01b031982166348080a4560e01b14806102f257506001600160e01b03198216630449faa360e51b145b8061030d57506001600160e01b03198216637741562f60e11b145b8061032857506001600160e01b03198216632f98047360e01b145b8061034357506001600160e01b03198216631b58bbef60e31b145b8061035e57506001600160e01b03198216632e31ecc360e21b145b8061037957506001600160e01b031982166333d5ac9b60e01b145b8061039457506001600160e01b031982166329cdc56f60e11b145b806103af57506001600160e01b0319821663a7137c0f60e01b145b806103ca57506001600160e01b031982166362d0945360e01b145b806103e557506001600160e01b03198216631753e83d60e31b145b92915050565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000416300361043c5760405162461bcd60e51b815260040161043390610d03565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100046001600160a01b03166104845f516020610e225f395f51905f52546001600160a01b031690565b6001600160a01b0316146104aa5760405162461bcd60e51b815260040161043390610d4f565b6104b38161074c565b604080515f808252602082019092526104ce91839190610754565b50565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100041630036105195760405162461bcd60e51b815260040161043390610d03565b7f00000000000000000000000001670010000000000000000000000000000100046001600160a01b03166105615f516020610e225f395f51905f52546001600160a01b031690565b6001600160a01b0316146105875760405162461bcd60e51b815260040161043390610d4f565b6105908261074c565b61059c82826001610754565b5050565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010004161461063f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610433565b505f516020610e225f395f51905f5290565b6106596108be565b6106625f610918565b565b60655433906001600160a01b031681146106d25760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610433565b6104ce81610918565b6106e36108be565b606580546001600160a01b0383166001600160a01b031990911681179091556107146033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6104ce6108be565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610787576102bd83610931565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156107e1575060408051601f3d908101601f191682019092526107de91810190610d9b565b60015b6108445760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610433565b5f516020610e225f395f51905f5281146108b25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610433565b506102bd8383836109cc565b6033546001600160a01b031633146106625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610433565b606580546001600160a01b03191690556104ce816109f6565b6001600160a01b0381163b61099e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610433565b5f516020610e225f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6109d583610a47565b5f825111806109e15750805b156102bd576109f08383610a86565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610a5081610931565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610aab8383604051806060016040528060278152602001610e4260279139610ab2565b9392505050565b60605f5f856001600160a01b031685604051610ace9190610dd4565b5f60405180830381855af49150503d805f8114610b06576040519150601f19603f3d011682016040523d82523d5f602084013e610b0b565b606091505b5091509150610b1c86838387610b26565b9695505050505050565b60608315610b945782515f03610b8d576001600160a01b0385163b610b8d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610433565b5081610b9e565b610b9e8383610ba6565b949350505050565b815115610bb65781518083602001fd5b8060405162461bcd60e51b81526004016104339190610def565b5f60208284031215610be0575f5ffd5b81356001600160e01b031981168114610aab575f5ffd5b80356001600160a01b0381168114610c0d575f5ffd5b919050565b5f60208284031215610c22575f5ffd5b610aab82610bf7565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610c50575f5ffd5b610c5983610bf7565b9150602083013567ffffffffffffffff811115610c74575f5ffd5b8301601f81018513610c84575f5ffd5b803567ffffffffffffffff811115610c9e57610c9e610c2b565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610ccd57610ccd610c2b565b604052818152828201602001871015610ce4575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215610dab575f5ffd5b5051919050565b5f5b83811015610dcc578181015183820152602001610db4565b50505f910152565b5f8251610de5818460208701610db2565b9190910192915050565b602081525f8251806020840152610e0d816040850160208701610db2565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c7dbcbc644eed34e8695667b1048a61be65e3a237403e62b5ada338a118c5caf64736f6c634300081e0033", + "code": "0x60806040526004361061009e575f3560e01c806379ba50971161006357806379ba509714610151578063863acc33146101655780638da5cb5b146101b0578063df6060fb146101cd578063e30c397814610200578063f2fde38b1461021d576100ad565b80623f3080146100b55780633659cfe6146100e95780634f1ef2861461010857806352d1902d1461011b578063715018a61461013d576100ad565b366100ad576100ab61023c565b005b6100ab61023c565b3480156100c0575f5ffd5b506100d46100cf366004610bd0565b6102c2565b60405190151581526020015b60405180910390f35b3480156100f4575f5ffd5b506100ab610103366004610c12565b6103eb565b6100ab610116366004610c3f565b6104d1565b348015610126575f5ffd5b5061012f6105a0565b6040519081526020016100e0565b348015610148575f5ffd5b506100ab610651565b34801561015c575f5ffd5b506100ab610664565b348015610170575f5ffd5b506101987f000000000000000000000000016700100000000000000000000000000001000181565b6040516001600160a01b0390911681526020016100e0565b3480156101bb575f5ffd5b506033546001600160a01b0316610198565b3480156101d8575f5ffd5b506101987f000000000000000000000000016700100000000000000000000000000001000581565b34801561020b575f5ffd5b506065546001600160a01b0316610198565b348015610228575f5ffd5b506100ab610237366004610c12565b6106db565b5f6102515f356001600160e01b0319166102c2565b61027b577f000000000000000000000000016700100000000000000000000000000001000161029d565b7f00000000000000000000000001670010000000000000000000000000000100055b9050365f5f375f5f365f845af43d5f5f3e8080156102b9573d5ff35b3d5ffd5b505050565b5f6001600160e01b031982166348080a4560e01b14806102f257506001600160e01b03198216630449faa360e51b145b8061030d57506001600160e01b03198216637741562f60e11b145b8061032857506001600160e01b03198216632f98047360e01b145b8061034357506001600160e01b03198216631b58bbef60e31b145b8061035e57506001600160e01b03198216632e31ecc360e21b145b8061037957506001600160e01b031982166333d5ac9b60e01b145b8061039457506001600160e01b031982166329cdc56f60e11b145b806103af57506001600160e01b0319821663a7137c0f60e01b145b806103ca57506001600160e01b031982166362d0945360e01b145b806103e557506001600160e01b03198216631753e83d60e31b145b92915050565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000416300361043c5760405162461bcd60e51b815260040161043390610d03565b60405180910390fd5b7f00000000000000000000000001670010000000000000000000000000000100046001600160a01b03166104845f516020610e225f395f51905f52546001600160a01b031690565b6001600160a01b0316146104aa5760405162461bcd60e51b815260040161043390610d4f565b6104b38161074c565b604080515f808252602082019092526104ce91839190610754565b50565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100041630036105195760405162461bcd60e51b815260040161043390610d03565b7f00000000000000000000000001670010000000000000000000000000000100046001600160a01b03166105615f516020610e225f395f51905f52546001600160a01b031690565b6001600160a01b0316146105875760405162461bcd60e51b815260040161043390610d4f565b6105908261074c565b61059c82826001610754565b5050565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010004161461063f5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610433565b505f516020610e225f395f51905f5290565b6106596108be565b6106625f610918565b565b60655433906001600160a01b031681146106d25760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610433565b6104ce81610918565b6106e36108be565b606580546001600160a01b0383166001600160a01b031990911681179091556107146033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6104ce6108be565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610787576102bd83610931565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156107e1575060408051601f3d908101601f191682019092526107de91810190610d9b565b60015b6108445760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610433565b5f516020610e225f395f51905f5281146108b25760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610433565b506102bd8383836109cc565b6033546001600160a01b031633146106625760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610433565b606580546001600160a01b03191690556104ce816109f6565b6001600160a01b0381163b61099e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610433565b5f516020610e225f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6109d583610a47565b5f825111806109e15750805b156102bd576109f08383610a86565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610a5081610931565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610aab8383604051806060016040528060278152602001610e4260279139610ab2565b9392505050565b60605f5f856001600160a01b031685604051610ace9190610dd4565b5f60405180830381855af49150503d805f8114610b06576040519150601f19603f3d011682016040523d82523d5f602084013e610b0b565b606091505b5091509150610b1c86838387610b26565b9695505050505050565b60608315610b945782515f03610b8d576001600160a01b0385163b610b8d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610433565b5081610b9e565b610b9e8383610ba6565b949350505050565b815115610bb65781518083602001fd5b8060405162461bcd60e51b81526004016104339190610def565b5f60208284031215610be0575f5ffd5b81356001600160e01b031981168114610aab575f5ffd5b80356001600160a01b0381168114610c0d575f5ffd5b919050565b5f60208284031215610c22575f5ffd5b610aab82610bf7565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610c50575f5ffd5b610c5983610bf7565b9150602083013567ffffffffffffffff811115610c74575f5ffd5b8301601f81018513610c84575f5ffd5b803567ffffffffffffffff811115610c9e57610c9e610c2b565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610ccd57610ccd610c2b565b604052818152828201602001871015610ce4575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b5f60208284031215610dab575f5ffd5b5051919050565b5f5b83811015610dcc578181015183820152602001610db4565b50505f910152565b5f8251610de5818460208701610db2565b9190910192915050565b602081525f8251806020840152610e0d816040850160208701610db2565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220eb5e571c4eecff7c0e963dc60b29279730d01c1876083937c197b3237d679ebb64736f6c634300081e0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" } }, "0x0167001000000000000000000000000000010001": { "balance": "0x0", - "code": "0x6080604052600436106101c5575f3560e01c806379ba5097116100f2578063aade375b11610092578063d441422111610062578063d44142211461063e578063e30c397814610671578063f2fde38b1461068e578063f940e385146106ad575f5ffd5b8063aade375b14610513578063b35893fb146105b8578063b3d5e45f146105e4578063c46e3a6614610628575f5ffd5b80638da5cb5b116100cd5780638da5cb5b14610460578063955a72441461047d5780639ee512f2146104b0578063a37ea515146104d5575f5ffd5b806379ba5097146104245780638456cb59146104385780638abf60771461044c575f5ffd5b8063363cc427116101685780634f1ef286116101385780634f1ef286146103c957806352d1902d146103dc5780635c975abb146103f0578063715018a614610410575f5ffd5b8063363cc4271461034f5780633644e515146103825780633659cfe6146103965780633f4ba83a146103b5575f5ffd5b806319ab453c116101a357806319ab453c146102b257806320ae54eb146102d35780633075db56146102f257806334cdf78d14610316575f5ffd5b806304f3bcec146101c95780630f439bd91461021457806312622e5b14610267575b5f5ffd5b3480156101d4575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561021f575f5ffd5b506040805180820182525f808252602091820152815180830183526101005465ffffffffffff168082526101015491830191825283519081529051918101919091520161020b565b348015610272575f5ffd5b5061029a7f0000000000000000000000000000000000000000000000000000000000007e7e81565b6040516001600160401b03909116815260200161020b565b3480156102bd575f5ffd5b506102d16102cc36600461209d565b6106cc565b005b3480156102de575f5ffd5b506102d16102ed3660046120ce565b6107de565b3480156102fd575f5ffd5b50610306610961565b604051901515815260200161020b565b348015610321575f5ffd5b50610341610330366004612119565b60fb6020525f908152604090205481565b60405190815260200161020b565b34801561035a575f5ffd5b506101f77f000000000000000000000000167001000000000000000000000000000001000381565b34801561038d575f5ffd5b50610341610979565b3480156103a1575f5ffd5b506102d16103b036600461209d565b610987565b3480156103c0575f5ffd5b506102d1610a4e565b6102d16103d7366004612214565b610aa9565b3480156103e7575f5ffd5b50610341610b5e565b3480156103fb575f5ffd5b5061030660c954610100900460ff1660021490565b34801561041b575f5ffd5b506102d1610c0f565b34801561042f575f5ffd5b506102d1610c20565b348015610443575f5ffd5b506102d1610c97565b348015610457575f5ffd5b506101f7610cec565b34801561046b575f5ffd5b506033546001600160a01b03166101f7565b348015610488575f5ffd5b506101f77f000000000000000000000000167001000000000000000000000000000000000581565b3480156104bb575f5ffd5b506101f771777735367b36bc9b61c50022d9d0700db4ec81565b3480156104e0575f5ffd5b506104f46104ef3660046122b0565b610cf5565b604080516001600160a01b03909316835260208301919091520161020b565b34801561051e575f5ffd5b50610583604080516060810182525f8082526020820181905291810191909152506040805160608101825260ff80546001600160a01b0381168352600160a01b810490911615156020830152600160a81b900465ffffffffffff169181019190915290565b6040805182516001600160a01b031681526020808401511515908201529181015165ffffffffffff169082015260600161020b565b3480156105c3575f5ffd5b506105d76105d2366004612310565b610e58565b60405161020b919061239b565b3480156105ef575f5ffd5b506106036105fe3660046123e3565b610e8f565b6040805193151584526001600160a01b0390921660208401529082015260600161020b565b348015610633575f5ffd5b5061029a620f424081565b348015610649575f5ffd5b506103417f000000000000000000000000000000000000000000000006f05b59d3b200000081565b34801561067c575f5ffd5b506065546001600160a01b03166101f7565b348015610699575f5ffd5b506102d16106a836600461209d565b61104b565b3480156106b8575f5ffd5b506102d16106c736600461245a565b6110bc565b5f54610100900460ff16158080156106ea57505f54600160ff909116105b806107035750303b15801561070357505f5460ff166001145b61076b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561078c575f805461ff0019166101001790555b610795826111f8565b80156107da575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b3371777735367b36bc9b61c50022d9d0700db4ec1461081057604051636edaef2f60e11b815260040160405180910390fd5b610818611256565b6108226002611285565b60ff54600160a81b900465ffffffffffff16806108426020850185612491565b65ffffffffffff1610156108695760405163229329c760e01b815260040160405180910390fd5b5f65ffffffffffff82166108806020860186612491565b65ffffffffffff16119050801561089a5761089a8461129b565b6101005465ffffffffffff166108af8461147b565b5f6108bb6001436124ac565b5f81815260fb60209081526040918290208340905560ff8054610100546101015485516001600160a01b038416815265ffffffffffff8a8116968201969096529185168287015260608201529351949550600160a01b810490911615159387151593600160a81b909204909216917f90b39eb3d93f15c8be602aa56b56cfef44dd034911816607d74c24e8a2c21d1b9181900360800190a4505050506107da6001611285565b5f600261097060c95460ff1690565b60ff1614905090565b5f61098261158f565b905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036109cf5760405162461bcd60e51b8152600401610762906124cb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a01611633565b6001600160a01b031614610a275760405162461bcd60e51b815260040161076290612517565b610a308161164e565b604080515f80825260208201909252610a4b91839190611656565b50565b610a566117c0565b610a6a60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610aa7335f6117f1565b565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610af15760405162461bcd60e51b8152600401610762906124cb565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b23611633565b6001600160a01b031614610b495760405162461bcd60e51b815260040161076290612517565b610b528261164e565b6107da82826001611656565b5f306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610bfd5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610762565b505f51602061285e5f395f51905f5290565b610c176117f5565b610aa75f61184f565b60655433906001600160a01b03168114610c8e5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610762565b610a4b8161184f565b610c9f611868565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610aa73360016117f1565b5f610982611633565b5f80611000831115610d0b57508390505f610e4f565b604080516080810182525f8082526020820181905281830152606080820152905163b35893fb60e01b8152309063b35893fb90610d4e9088908890600401612563565b5f60405180830381865afa925050508015610d8a57506040513d5f823e601f3d908101601f19168201604052610d879190810190612591565b60015b610d9a57855f9250925050610e4f565b9050610da781888861189a565b610db757855f9250925050610e4f565b604181606001515114610dd057855f9250925050610e4f565b5f5f610de8610dde846118da565b846060015161198a565b90925090505f816004811115610e0057610e00612666565b141580610e1457506001600160a01b038216155b15610e2757875f94509450505050610e4f565b819450876001600160a01b0316856001600160a01b031614610e4b57826040015193505b5050505b94509492505050565b604080516080810182525f8082526020820181905291810191909152606080820152610e868284018461267a565b90505b92915050565b5f5f5f5f5f610ea08a8a8a8a610cf5565b60405163508b724360e11b81526001600160a01b038c81166004830152602482018390529294509092505f917f0000000000000000000000001670010000000000000000000000000000010003169063a116e48690604401602060405180830381865afa158015610f13573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f379190612706565b905080610f69575f6001600160a01b03881615610f545787610f56565b8a5b6001975095505f94506110409350505050565b896001600160a01b0316836001600160a01b031603610f93575f8a5f955095509550505050611040565b60405163508b724360e11b81526001600160a01b0384811660048301525f60248301527f0000000000000000000000001670010000000000000000000000000000010003169063a116e48690604401602060405180830381865afa158015610ffd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110219190612706565b611036575f8a5f955095509550505050611040565b505f945090925090505b955095509592505050565b6110536117f5565b606580546001600160a01b0383166001600160a01b031990911681179091556110846033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b6110c46117f5565b6110cc611256565b6110d66002611285565b6001600160a01b0381166110fd5760405163e6c4247b60e01b815260040160405180910390fd5b5f6001600160a01b0383166111265750476111216001600160a01b038316826119cc565b6111a2565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611168573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061118c9190612725565b90506111a26001600160a01b03841683836119d7565b604080516001600160a01b038086168252841660208201529081018290527fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060600160405180910390a1506107da6001611285565b5f54610100900460ff1661121e5760405162461bcd60e51b81526004016107629061273c565b611226611a29565b6112446001600160a01b0382161561123e578161184f565b3361184f565b5060c9805461ff001916610100179055565b600261126460c95460ff1690565b60ff1603610aa75760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f6112da6112ac6020840184612491565b6112bc604085016020860161209d565b6112c96040860186612787565b60ff546001600160a01b0316610e8f565b60ff8054931515600160a01b026001600160a81b03199094166001600160a01b039093169290921792909217905590508015611441576001600160a01b037f00000000000000000000000016700100000000000000000000000000000100031663391396de61134f604085016020860161209d565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af1158015611399573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113bd9190612725565b5060ff54604051632f8cb47d60e21b81526001600160a01b039182166004820152602481018390527f00000000000000000000000016700100000000000000000000000000000100039091169063be32d1f4906044015f604051808303815f87803b15801561142a575f5ffd5b505af115801561143c573d5f5f3e3d5ffd5b505050505b61144e6020830183612491565b60ff805465ffffffffffff92909216600160a81b0265ffffffffffff60a81b199092169190911790555050565b5f5f611485611a4f565b610101549193509150156114b6576101015482146114b6576040516349645ffd60e01b815260040160405180910390fd5b6101018190556101005465ffffffffffff166114d56020850185612491565b65ffffffffffff16111561158a57604051631934171960e31b81526001600160a01b037f0000000000000000000000001670010000000000000000000000000000000005169063c9a0b8c89061152f9086906004016127c9565b5f604051808303815f87803b158015611546575f5ffd5b505af1158015611558573d5f5f3e3d5ffd5b5061156a925050506020840184612491565b610100805465ffffffffffff191665ffffffffffff929092169190911790555b505050565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f7893824cc05345e66765411bdc89b67d8e9de9babcc8cc47b79e1be815fcdc66918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160405160208183030381529060405280519060200120905090565b5f51602061285e5f395f51905f52546001600160a01b031690565b610a4b6117f5565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156116895761158a83611aec565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156116e3575060408051601f3d908101601f191682019092526116e091810190612725565b60015b6117465760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610762565b5f51602061285e5f395f51905f5281146117b45760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610762565b5061158a838383611b87565b6117d460c954610100900460ff1660021490565b610aa75760405163bae6e2a960e01b815260040160405180910390fd5b6107da5b6033546001600160a01b03163314610aa75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610762565b606580546001600160a01b0319169055610a4b81611bb1565b61187c60c954610100900460ff1660021490565b15610aa75760405163bae6e2a960e01b815260040160405180910390fd5b5f8265ffffffffffff16845f015165ffffffffffff161480156118d25750816001600160a01b031684602001516001600160a01b0316145b949350505050565b5f5f61195683805160208083015160409384015184517fed88a0cae89dd0c5217ed6cb075c1087a6230c0eb71389f7213d5f9c0b8eb27b8185015265ffffffffffff909416848601526001600160a01b0390911660608401526080808401919091528351808403909101815260a0909201909252805191012090565b905061198361196361158f565b8260405161190160f01b8152600281019290925260228201526042902090565b9392505050565b5f5f82516041036119be576020830151604084015160608501515f1a6119b287828585611c02565b945094505050506119c5565b505f905060025b9250929050565b6107da82825a611cbc565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261158a908490611cff565b5f54610100900460ff16610aa75760405162461bcd60e51b81526004016107629061273c565b5f8080611a5d6001436124ac565b9050611a67612069565b46611fe08201525f5b60ff81108015611a835750806001018310155b15611ab4575f198184030180408360ff83066101008110611aa657611aa66127fd565b602002015250600101611a70565b5061200081209350814081611aca60ff85612811565b6101008110611adb57611adb6127fd565b602002015261200090209293915050565b6001600160a01b0381163b611b595760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610762565b5f51602061285e5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b611b9083611dd2565b5f82511180611b9c5750805b1561158a57611bab8383611e11565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611c3757505f90506003610e4f565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611c88573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611cb0575f60019250925050610e4f565b965f9650945050505050565b815f03611cc857505050565b611ce283838360405180602001604052805f815250611e36565b61158a57604051634c67134d60e11b815260040160405180910390fd5b5f611d53826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611e739092919063ffffffff16565b905080515f1480611d73575080806020019051810190611d739190612706565b61158a5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610762565b611ddb81611aec565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b6060610e86838360405180606001604052806027815260200161287e60279139611e81565b5f6001600160a01b038516611e5e57604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b60606118d284845f85611ef5565b60605f5f856001600160a01b031685604051611e9d9190612830565b5f60405180830381855af49150503d805f8114611ed5576040519150601f19603f3d011682016040523d82523d5f602084013e611eda565b606091505b5091509150611eeb86838387611fcc565b9695505050505050565b606082471015611f565760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610762565b5f5f866001600160a01b03168587604051611f719190612830565b5f6040518083038185875af1925050503d805f8114611fab576040519150601f19603f3d011682016040523d82523d5f602084013e611fb0565b606091505b5091509150611fc187838387611fcc565b979650505050505050565b6060831561203a5782515f03612033576001600160a01b0385163b6120335760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610762565b50816118d2565b6118d2838381511561204f5781518083602001fd5b8060405162461bcd60e51b8152600401610762919061284b565b604051806120000160405280610100906020820280368337509192915050565b6001600160a01b0381168114610a4b575f5ffd5b5f602082840312156120ad575f5ffd5b813561198381612089565b5f606082840312156120c8575f5ffd5b50919050565b5f5f608083850312156120df575f5ffd5b82356001600160401b038111156120f4575f5ffd5b612100858286016120b8565b92505061211084602085016120b8565b90509250929050565b5f60208284031215612129575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b038111828210171561216657612166612130565b60405290565b604051601f8201601f191681016001600160401b038111828210171561219457612194612130565b604052919050565b5f6001600160401b038211156121b4576121b4612130565b50601f01601f191660200190565b5f82601f8301126121d1575f5ffd5b81356121e46121df8261219c565b61216c565b8181528460208386010111156121f8575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f60408385031215612225575f5ffd5b823561223081612089565b915060208301356001600160401b0381111561224a575f5ffd5b612256858286016121c2565b9150509250929050565b65ffffffffffff81168114610a4b575f5ffd5b5f5f83601f840112612283575f5ffd5b5081356001600160401b03811115612299575f5ffd5b6020830191508360208285010111156119c5575f5ffd5b5f5f5f5f606085870312156122c3575f5ffd5b84356122ce81612260565b935060208501356122de81612089565b925060408501356001600160401b038111156122f8575f5ffd5b61230487828801612273565b95989497509550505050565b5f5f60208385031215612321575f5ffd5b82356001600160401b03811115612336575f5ffd5b61234285828601612273565b90969095509350505050565b5f5b83811015612368578181015183820152602001612350565b50505f910152565b5f815180845261238781602086016020860161234e565b601f01601f19169290920160200192915050565b6020815265ffffffffffff825116602082015260018060a01b036020830151166040820152604082015160608201525f60608301516080808401526118d260a0840182612370565b5f5f5f5f5f608086880312156123f7575f5ffd5b853561240281612260565b9450602086013561241281612089565b935060408601356001600160401b0381111561242c575f5ffd5b61243888828901612273565b909450925050606086013561244c81612089565b809150509295509295909350565b5f5f6040838503121561246b575f5ffd5b823561247681612089565b9150602083013561248681612089565b809150509250929050565b5f602082840312156124a1575f5ffd5b813561198381612260565b81810381811115610e8957634e487b7160e01b5f52601160045260245ffd5b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f602082840312156125a1575f5ffd5b81516001600160401b038111156125b6575f5ffd5b8201608081850312156125c7575f5ffd5b6125cf612144565b81516125da81612260565b815260208201516125ea81612089565b60208201526040828101519082015260608201516001600160401b03811115612611575f5ffd5b80830192505084601f830112612625575f5ffd5b81516126336121df8261219c565b818152866020838601011115612647575f5ffd5b61265882602083016020870161234e565b606083015250949350505050565b634e487b7160e01b5f52602160045260245ffd5b5f6020828403121561268a575f5ffd5b81356001600160401b0381111561269f575f5ffd5b8201608081850312156126b0575f5ffd5b6126b8612144565b81356126c381612260565b815260208201356126d381612089565b60208201526040828101359082015260608201356001600160401b038111156126fa575f5ffd5b612658868285016121c2565b5f60208284031215612716575f5ffd5b81518015158114611983575f5ffd5b5f60208284031215612735575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f5f8335601e1984360301811261279c575f5ffd5b8301803591506001600160401b038211156127b5575f5ffd5b6020019150368190038213156119c5575f5ffd5b6060810182356127d881612260565b65ffffffffffff16825260208381013590830152604092830135929091019190915290565b634e487b7160e01b5f52603260045260245ffd5b5f8261282b57634e487b7160e01b5f52601260045260245ffd5b500690565b5f825161284181846020870161234e565b9190910192915050565b602081525f610e86602083018461237056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212207a498c1c0671f735f7bcb8c24564f7aba58667a47f21b245cce5d6a301420da864736f6c634300081e0033", + "code": "0x60806040526004361061013c575f3560e01c80635c975abb116100b3578063955a72441161006d578063955a7244146103ae5780639ee512f2146103e1578063c46e3a6614610406578063e30c39781461041c578063f2fde38b14610439578063f940e38514610458575f5ffd5b80635c975abb14610321578063715018a61461034157806379ba5097146103555780638456cb59146103695780638abf60771461037d5780638da5cb5b14610391575f5ffd5b806334cdf78d1161010457806334cdf78d1461026f5780633659cfe6146102a85780633f4ba83a146102c75780634f1ef286146102db578063523e6854146102ee57806352d1902d1461030d575f5ffd5b806304f3bcec146101405780630f439bd91461018b57806312622e5b146101de57806319ab453c1461022a5780633075db561461024b575b5f5ffd5b34801561014b575f5ffd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b348015610196575f5ffd5b506040805180820182525f808252602091820152815180830183526101005465ffffffffffff1680825261010154918301918252835190815290519181019190915201610182565b3480156101e9575f5ffd5b506102117f0000000000000000000000000000000000000000000000000000000000007e7e81565b60405167ffffffffffffffff9091168152602001610182565b348015610235575f5ffd5b506102496102443660046115f0565b610477565b005b348015610256575f5ffd5b5061025f610589565b6040519015158152602001610182565b34801561027a575f5ffd5b5061029a610289366004611609565b60fb6020525f908152604090205481565b604051908152602001610182565b3480156102b3575f5ffd5b506102496102c23660046115f0565b6105a1565b3480156102d2575f5ffd5b50610249610668565b6102496102e9366004611634565b6106c3565b3480156102f9575f5ffd5b506102496103083660046116f8565b610778565b348015610318575f5ffd5b5061029a610852565b34801561032c575f5ffd5b5061025f60c954610100900460ff1660021490565b34801561034c575f5ffd5b50610249610903565b348015610360575f5ffd5b50610249610914565b348015610374575f5ffd5b5061024961098b565b348015610388575f5ffd5b5061016e6109e0565b34801561039c575f5ffd5b506033546001600160a01b031661016e565b3480156103b9575f5ffd5b5061016e7f000000000000000000000000167001000000000000000000000000000000000581565b3480156103ec575f5ffd5b5061016e71777735367b36bc9b61c50022d9d0700db4ec81565b348015610411575f5ffd5b50610211620f424081565b348015610427575f5ffd5b506065546001600160a01b031661016e565b348015610444575f5ffd5b506102496104533660046115f0565b6109ee565b348015610463575f5ffd5b50610249610472366004611711565b610a5f565b5f54610100900460ff161580801561049557505f54600160ff909116105b806104ae5750303b1580156104ae57505f5460ff166001145b6105165760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff191660011790558015610537575f805461ff0019166101001790555b61054082610b9b565b8015610585575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f600261059860c95460ff1690565b60ff1614905090565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036105e95760405162461bcd60e51b815260040161050d90611742565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661061b610bf9565b6001600160a01b0316146106415760405162461bcd60e51b815260040161050d9061178e565b61064a81610c14565b604080515f8082526020820190925261066591839190610c1c565b50565b610670610d8b565b61068460c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a16106c1335f610dbc565b565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016300361070b5760405162461bcd60e51b815260040161050d90611742565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661073d610bf9565b6001600160a01b0316146107635760405162461bcd60e51b815260040161050d9061178e565b61076c82610c14565b61058582826001610c1c565b3371777735367b36bc9b61c50022d9d0700db4ec146107aa57604051636edaef2f60e11b815260040160405180910390fd5b6107b2610dc4565b6107bc6002610df3565b6101005465ffffffffffff166107d182610e09565b5f6107dd6001436117da565b5f81815260fb6020908152604091829020834090556101005461010154835165ffffffffffff808916825290921692820192909252918201529091507f7efb645089c13cff3d84f896f1bf50411e06ae8453a771bd7e3ea45ffb97ac389060600160405180910390a150506106656001610df3565b5f306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108f15760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000606482015260840161050d565b505f5160206119845f395f51905f5290565b61090b610f1c565b6106c15f610f76565b60655433906001600160a01b031681146109825760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b606482015260840161050d565b61066581610f76565b610993610f8f565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a16106c1336001610dbc565b5f6109e9610bf9565b905090565b6109f6610f1c565b606580546001600160a01b0383166001600160a01b03199091168117909155610a276033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b610a67610f1c565b610a6f610dc4565b610a796002610df3565b6001600160a01b038116610aa05760405163e6c4247b60e01b815260040160405180910390fd5b5f6001600160a01b038316610ac9575047610ac46001600160a01b03831682610fc1565b610b45565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610b0b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2f91906117f9565b9050610b456001600160a01b0384168383610fcc565b604080516001600160a01b038086168252841660208201529081018290527fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060600160405180910390a1506105856001610df3565b5f54610100900460ff16610bc15760405162461bcd60e51b815260040161050d90611810565b610bc961101e565b610be76001600160a01b03821615610be15781610f76565b33610f76565b5060c9805461ff001916610100179055565b5f5160206119845f395f51905f52546001600160a01b031690565b610665610f1c565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615610c5457610c4f83611044565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610cae575060408051601f3d908101601f19168201909252610cab918101906117f9565b60015b610d115760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b606482015260840161050d565b5f5160206119845f395f51905f528114610d7f5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b606482015260840161050d565b50610c4f8383836110df565b610d9f60c954610100900460ff1660021490565b6106c15760405163bae6e2a960e01b815260040160405180910390fd5b610585610f1c565b6002610dd260c95460ff1690565b60ff16036106c15760405163dfc60d8560e01b815260040160405180910390fd5b60c9805460ff191660ff92909216919091179055565b5f5f610e13611109565b61010154919350915015610e4457610101548214610e44576040516349645ffd60e01b815260040160405180910390fd5b6101018190556101005465ffffffffffff16610e636020850185611870565b65ffffffffffff161115610c4f57604051631934171960e31b81526001600160a01b037f0000000000000000000000001670010000000000000000000000000000000005169063c9a0b8c890610ebd908690600401611889565b5f604051808303815f87803b158015610ed4575f5ffd5b505af1158015610ee6573d5f5f3e3d5ffd5b50610ef8925050506020840184611870565b610100805465ffffffffffff191665ffffffffffff92909216919091179055505050565b6033546001600160a01b031633146106c15760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161050d565b606580546001600160a01b0319169055610665816111a6565b610fa360c954610100900460ff1660021490565b156106c15760405163bae6e2a960e01b815260040160405180910390fd5b61058582825a6111f7565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610c4f90849061123a565b5f54610100900460ff166106c15760405162461bcd60e51b815260040161050d90611810565b6001600160a01b0381163b6110b15760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161050d565b5f5160206119845f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b6110e88361130d565b5f825111806110f45750805b15610c4f57611103838361134c565b50505050565b5f80806111176001436117da565b90506111216115b5565b46611fe08201525f5b60ff8110801561113d5750806001018310155b1561116e575f198184030180408360ff83066101008110611160576111606118bb565b60200201525060010161112a565b506120008120935081408161118460ff856118cf565b6101008110611195576111956118bb565b602002015261200090209293915050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b815f0361120357505050565b61121d83838360405180602001604052805f81525061137a565b610c4f57604051634c67134d60e11b815260040160405180910390fd5b5f61128e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166113b79092919063ffffffff16565b905080515f14806112ae5750808060200190518101906112ae91906118ee565b610c4f5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161050d565b61131681611044565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b606061137183836040518060600160405280602781526020016119a4602791396113cd565b90505b92915050565b5f6001600160a01b0385166113a257604051634c67134d60e11b815260040160405180910390fd5b5f5f835160208501878988f195945050505050565b60606113c584845f85611441565b949350505050565b60605f5f856001600160a01b0316856040516113e99190611936565b5f60405180830381855af49150503d805f8114611421576040519150601f19603f3d011682016040523d82523d5f602084013e611426565b606091505b509150915061143786838387611518565b9695505050505050565b6060824710156114a25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b606482015260840161050d565b5f5f866001600160a01b031685876040516114bd9190611936565b5f6040518083038185875af1925050503d805f81146114f7576040519150601f19603f3d011682016040523d82523d5f602084013e6114fc565b606091505b509150915061150d87838387611518565b979650505050505050565b606083156115865782515f0361157f576001600160a01b0385163b61157f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161050d565b50816113c5565b6113c5838381511561159b5781518083602001fd5b8060405162461bcd60e51b815260040161050d9190611951565b604051806120000160405280610100906020820280368337509192915050565b80356001600160a01b03811681146115eb575f5ffd5b919050565b5f60208284031215611600575f5ffd5b611371826115d5565b5f60208284031215611619575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215611645575f5ffd5b61164e836115d5565b9150602083013567ffffffffffffffff811115611669575f5ffd5b8301601f81018513611679575f5ffd5b803567ffffffffffffffff81111561169357611693611620565b604051601f8201601f19908116603f0116810167ffffffffffffffff811182821017156116c2576116c2611620565b6040528181528282016020018710156116d9575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f6060828403128015611709575f5ffd5b509092915050565b5f5f60408385031215611722575f5ffd5b61172b836115d5565b9150611739602084016115d5565b90509250929050565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b8181038181111561137457634e487b7160e01b5f52601160045260245ffd5b5f60208284031215611809575f5ffd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b803565ffffffffffff811681146115eb575f5ffd5b5f60208284031215611880575f5ffd5b6113718261185b565b6060810165ffffffffffff61189d8461185b565b16825260208381013590830152604092830135929091019190915290565b634e487b7160e01b5f52603260045260245ffd5b5f826118e957634e487b7160e01b5f52601260045260245ffd5b500690565b5f602082840312156118fe575f5ffd5b8151801515811461190d575f5ffd5b9392505050565b5f5b8381101561192e578181015183820152602001611916565b50505f910152565b5f8251611947818460208701611914565b9190910192915050565b602081525f825180602084015261196f816040850160208701611914565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209cd2b2ee7a496f79da98b2e8c1e8926a1fb639afefc180fe5622c8171c367c8964736f6c634300081e0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" } @@ -193,7 +193,7 @@ }, "0x0167001000000000000000000000000000010002": { "balance": "0x0", - "code": "0x6080604052600436106100fa575f3560e01c80636c6563f6116100925780638abf6077116100625780638abf6077146102515780638da5cb5b14610265578063b490d87f14610282578063e30c3978146102a1578063f2fde38b146102be575f5ffd5b80636c6563f6146101f6578063715018a61461021557806379ba5097146102295780638456cb591461023d575f5ffd5b80633f4ba83a116100cd5780633f4ba83a1461018d5780634f1ef286146101a157806352d1902d146101b45780635c975abb146101d6575f5ffd5b806304f3bcec146100fe57806319ab453c146101295780633075db561461014a5780633659cfe61461016e575b5f5ffd5b348015610109575f5ffd5b50305b6040516001600160a01b0390911681526020015b60405180910390f35b348015610134575f5ffd5b50610148610143366004610e70565b6102dd565b005b348015610155575f5ffd5b5061015e6103ef565b6040519015158152602001610120565b348015610179575f5ffd5b50610148610188366004610e70565b610407565b348015610198575f5ffd5b506101486104ce565b6101486101af366004610e9d565b610529565b3480156101bf575f5ffd5b506101c86105de565b604051908152602001610120565b3480156101e1575f5ffd5b5061015e60c954610100900460ff1660021490565b348015610201575f5ffd5b5061010c610210366004610f61565b61068f565b348015610220575f5ffd5b506101486106e0565b348015610234575f5ffd5b506101486106f1565b348015610248575f5ffd5b50610148610768565b34801561025c575f5ffd5b5061010c6107bd565b348015610270575f5ffd5b506033546001600160a01b031661010c565b34801561028d575f5ffd5b5061014861029c366004610f9b565b6107cb565b3480156102ac575f5ffd5b506065546001600160a01b031661010c565b3480156102c9575f5ffd5b506101486102d8366004610e70565b61084c565b5f54610100900460ff16158080156102fb57505f54600160ff909116105b806103145750303b15801561031457505f5460ff166001145b61037c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561039d575f805461ff0019166101001790555b6103a6826108bd565b80156103eb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f60026103fe60c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000216300361044f5760405162461bcd60e51b815260040161037390610fcd565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b031661048161091b565b6001600160a01b0316146104a75760405162461bcd60e51b815260040161037390611019565b6104b081610936565b604080515f808252602082019092526104cb9183919061093e565b50565b6104d6610aad565b6104ea60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610527335f610ade565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036105715760405162461bcd60e51b815260040161037390610fcd565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166105a361091b565b6001600160a01b0316146105c95760405162461bcd60e51b815260040161037390611019565b6105d282610936565b6103eb8282600161093e565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010002161461067d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610373565b505f5160206111375f395f51905f5290565b5f83815260fb602090815260408083208584529091529020546001600160a01b0316801515806106bc5750815b6106d957604051631692906160e11b815260040160405180910390fd5b9392505050565b6106e8610af7565b6105275f610b51565b60655433906001600160a01b0316811461075f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610373565b6104cb81610b51565b610770610b6a565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610527336001610ade565b5f6107c661091b565b905090565b6107d3610af7565b5f83815260fb6020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917f3fd0559a7b01eb7106f9d9ce79ec76bb44f608a295878cce50856e54dba83d35910160405180910390a350505050565b610854610af7565b606580546001600160a01b0383166001600160a01b031990911681179091556108856033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff166108e35760405162461bcd60e51b815260040161037390611065565b6108eb610b9c565b6109096001600160a01b038216156109035781610b51565b33610b51565b5060c9805461ff001916610100179055565b5f5160206111375f395f51905f52546001600160a01b031690565b6104cb610af7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156109765761097183610bc2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109d0575060408051601f3d908101601f191682019092526109cd918101906110b0565b60015b610a335760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610373565b5f5160206111375f395f51905f528114610aa15760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610373565b50610971838383610c5d565b610ac160c954610100900460ff1660021490565b6105275760405163bae6e2a960e01b815260040160405180910390fd5b604051630c2b8f8f60e11b815260040160405180910390fd5b6033546001600160a01b031633146105275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610373565b606580546001600160a01b03191690556104cb81610c87565b610b7e60c954610100900460ff1660021490565b156105275760405163bae6e2a960e01b815260040160405180910390fd5b5f54610100900460ff166105275760405162461bcd60e51b815260040161037390611065565b6001600160a01b0381163b610c2f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610373565b5f5160206111375f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610c6683610cd8565b5f82511180610c725750805b1561097157610c818383610d17565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610ce181610bc2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606106d983836040518060600160405280602781526020016111576027913960605f5f856001600160a01b031685604051610d5391906110e9565b5f60405180830381855af49150503d805f8114610d8b576040519150601f19603f3d011682016040523d82523d5f602084013e610d90565b606091505b5091509150610da186838387610dab565b9695505050505050565b60608315610e195782515f03610e12576001600160a01b0385163b610e125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610373565b5081610e23565b610e238383610e2b565b949350505050565b815115610e3b5781518083602001fd5b8060405162461bcd60e51b81526004016103739190611104565b80356001600160a01b0381168114610e6b575f5ffd5b919050565b5f60208284031215610e80575f5ffd5b6106d982610e55565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610eae575f5ffd5b610eb783610e55565b9150602083013567ffffffffffffffff811115610ed2575f5ffd5b8301601f81018513610ee2575f5ffd5b803567ffffffffffffffff811115610efc57610efc610e89565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610f2b57610f2b610e89565b604052818152828201602001871015610f42575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f73575f5ffd5b833592506020840135915060408401358015158114610f90575f5ffd5b809150509250925092565b5f5f5f60608486031215610fad575f5ffd5b8335925060208401359150610fc460408501610e55565b90509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156110c0575f5ffd5b5051919050565b5f5b838110156110e15781810151838201526020016110c9565b50505f910152565b5f82516110fa8184602087016110c7565b9190910192915050565b602081525f82518060208401526111228160408501602087016110c7565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204fb2d1ba30e4594a22bb35ad3dd2c1455305698cae59d640cce902231e5c29fe64736f6c634300081e0033", + "code": "0x6080604052600436106100fa575f3560e01c80636c6563f6116100925780638abf6077116100625780638abf6077146102515780638da5cb5b14610265578063b490d87f14610282578063e30c3978146102a1578063f2fde38b146102be575f5ffd5b80636c6563f6146101f6578063715018a61461021557806379ba5097146102295780638456cb591461023d575f5ffd5b80633f4ba83a116100cd5780633f4ba83a1461018d5780634f1ef286146101a157806352d1902d146101b45780635c975abb146101d6575f5ffd5b806304f3bcec146100fe57806319ab453c146101295780633075db561461014a5780633659cfe61461016e575b5f5ffd5b348015610109575f5ffd5b50305b6040516001600160a01b0390911681526020015b60405180910390f35b348015610134575f5ffd5b50610148610143366004610e70565b6102dd565b005b348015610155575f5ffd5b5061015e6103ef565b6040519015158152602001610120565b348015610179575f5ffd5b50610148610188366004610e70565b610407565b348015610198575f5ffd5b506101486104ce565b6101486101af366004610e9d565b610529565b3480156101bf575f5ffd5b506101c86105de565b604051908152602001610120565b3480156101e1575f5ffd5b5061015e60c954610100900460ff1660021490565b348015610201575f5ffd5b5061010c610210366004610f61565b61068f565b348015610220575f5ffd5b506101486106e0565b348015610234575f5ffd5b506101486106f1565b348015610248575f5ffd5b50610148610768565b34801561025c575f5ffd5b5061010c6107bd565b348015610270575f5ffd5b506033546001600160a01b031661010c565b34801561028d575f5ffd5b5061014861029c366004610f9b565b6107cb565b3480156102ac575f5ffd5b506065546001600160a01b031661010c565b3480156102c9575f5ffd5b506101486102d8366004610e70565b61084c565b5f54610100900460ff16158080156102fb57505f54600160ff909116105b806103145750303b15801561031457505f5460ff166001145b61037c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b5f805460ff19166001179055801561039d575f805461ff0019166101001790555b6103a6826108bd565b80156103eb575f805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b5f60026103fe60c95460ff1690565b60ff1614905090565b6001600160a01b037f000000000000000000000000016700100000000000000000000000000001000216300361044f5760405162461bcd60e51b815260040161037390610fcd565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b031661048161091b565b6001600160a01b0316146104a75760405162461bcd60e51b815260040161037390611019565b6104b081610936565b604080515f808252602082019092526104cb9183919061093e565b50565b6104d6610aad565b6104ea60c9805461ff001916610100179055565b6040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa9060200160405180910390a1610527335f610ade565b565b6001600160a01b037f00000000000000000000000001670010000000000000000000000000000100021630036105715760405162461bcd60e51b815260040161037390610fcd565b7f00000000000000000000000001670010000000000000000000000000000100026001600160a01b03166105a361091b565b6001600160a01b0316146105c95760405162461bcd60e51b815260040161037390611019565b6105d282610936565b6103eb8282600161093e565b5f306001600160a01b037f0000000000000000000000000167001000000000000000000000000000010002161461067d5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610373565b505f5160206111375f395f51905f5290565b5f83815260fb602090815260408083208584529091529020546001600160a01b0316801515806106bc5750815b6106d957604051631692906160e11b815260040160405180910390fd5b9392505050565b6106e8610af7565b6105275f610b51565b60655433906001600160a01b0316811461075f5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b6064820152608401610373565b6104cb81610b51565b610770610b6a565b60c9805461ff0019166102001790556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2589060200160405180910390a1610527336001610ade565b5f6107c661091b565b905090565b6107d3610af7565b5f83815260fb6020908152604080832085845282529182902080546001600160a01b038581166001600160a01b0319831681179093558451928352169181018290529091849186917f3fd0559a7b01eb7106f9d9ce79ec76bb44f608a295878cce50856e54dba83d35910160405180910390a350505050565b610854610af7565b606580546001600160a01b0383166001600160a01b031990911681179091556108856033546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b5f54610100900460ff166108e35760405162461bcd60e51b815260040161037390611065565b6108eb610b9c565b6109096001600160a01b038216156109035781610b51565b33610b51565b5060c9805461ff001916610100179055565b5f5160206111375f395f51905f52546001600160a01b031690565b6104cb610af7565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156109765761097183610bc2565b505050565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156109d0575060408051601f3d908101601f191682019092526109cd918101906110b0565b60015b610a335760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610373565b5f5160206111375f395f51905f528114610aa15760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610373565b50610971838383610c5d565b610ac160c954610100900460ff1660021490565b6105275760405163bae6e2a960e01b815260040160405180910390fd5b604051630c2b8f8f60e11b815260040160405180910390fd5b6033546001600160a01b031633146105275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610373565b606580546001600160a01b03191690556104cb81610c87565b610b7e60c954610100900460ff1660021490565b156105275760405163bae6e2a960e01b815260040160405180910390fd5b5f54610100900460ff166105275760405162461bcd60e51b815260040161037390611065565b6001600160a01b0381163b610c2f5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610373565b5f5160206111375f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b610c6683610cd8565b5f82511180610c725750805b1561097157610c818383610d17565b50505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b610ce181610bc2565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b60606106d983836040518060600160405280602781526020016111576027913960605f5f856001600160a01b031685604051610d5391906110e9565b5f60405180830381855af49150503d805f8114610d8b576040519150601f19603f3d011682016040523d82523d5f602084013e610d90565b606091505b5091509150610da186838387610dab565b9695505050505050565b60608315610e195782515f03610e12576001600160a01b0385163b610e125760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610373565b5081610e23565b610e238383610e2b565b949350505050565b815115610e3b5781518083602001fd5b8060405162461bcd60e51b81526004016103739190611104565b80356001600160a01b0381168114610e6b575f5ffd5b919050565b5f60208284031215610e80575f5ffd5b6106d982610e55565b634e487b7160e01b5f52604160045260245ffd5b5f5f60408385031215610eae575f5ffd5b610eb783610e55565b9150602083013567ffffffffffffffff811115610ed2575f5ffd5b8301601f81018513610ee2575f5ffd5b803567ffffffffffffffff811115610efc57610efc610e89565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610f2b57610f2b610e89565b604052818152828201602001871015610f42575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f5f5f60608486031215610f73575f5ffd5b833592506020840135915060408401358015158114610f90575f5ffd5b809150509250925092565b5f5f5f60608486031215610fad575f5ffd5b8335925060208401359150610fc460408501610e55565b90509250925092565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b5f602082840312156110c0575f5ffd5b5051919050565b5f5b838110156110e15781810151838201526020016110c9565b50505f910152565b5f82516110fa8184602087016110c7565b9190910192915050565b602081525f82518060208401526111228160408501602087016110c7565b601f01601f1916919091016040019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122098be554273134ed715a1bcc7d03d01e9cc00ccc389e8b4c312941778f0169c6264736f6c634300081e0033", "storage": { "0x0000000000000000000000000000000000000000000000000000000000000033": "0x000000000000000000000000ab707cb80e7de7c75d815b1a653433f3eec44c74" } From 47cca93a31867f23dc0e7978ff099d4e019ced54 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Tue, 13 Jan 2026 13:08:21 +0000 Subject: [PATCH 10/16] Add synchronization check for txpool in forkTo method for l2_nmc --- packages/taiko-client/internal/testutils/suite.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/packages/taiko-client/internal/testutils/suite.go b/packages/taiko-client/internal/testutils/suite.go index 82558660265..f8345f6cec6 100644 --- a/packages/taiko-client/internal/testutils/suite.go +++ b/packages/taiko-client/internal/testutils/suite.go @@ -369,4 +369,19 @@ func (s *ClientTestSuite) forkTo(attributes *engine.PayloadAttributes, parentHas s.Nil(err) s.Equal(attributes.L1Origin.BlockID.Uint64(), head.Number.Uint64()) + + // For Nethermind: wait for txpool to synchronize after chain head change + // This addresses the async txpool processing race condition + if os.Getenv("L2_NODE") == "l2_nmc" { + var synced bool + err := s.RPCClient.L2Engine.CallContext( + context.Background(), + &synced, + "taikoAuth_waitForTxPoolSync", + head.Number.Int64(), + 5000, // 5 second timeout + ) + s.Nil(err) + s.True(synced, "TxPool sync failed after forkTo") + } } From 3dc7d8bf4e43286fd95744f42905b35ea2a1a0d6 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Tue, 13 Jan 2026 18:51:38 +0000 Subject: [PATCH 11/16] Update l2_nmc Docker image to taiko-shasta-13-01-2026 --- packages/taiko-client/internal/docker/nodes/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index b3e45c65d46..395fa8693d1 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -73,7 +73,7 @@ services: l2_nmc: container_name: l2_nmc - image: nethermindeth/nethermind:master-32dc74a + image: nethermindeth/nethermind:taiko-shasta-13-01-2026 restart: unless-stopped pull_policy: always volumes: From 819f151fd34a49288bd2d77ea6472dfc21585bcf Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Wed, 14 Jan 2026 17:39:09 +0000 Subject: [PATCH 12/16] Update to use new RPC --- packages/taiko-client/internal/testutils/suite.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/taiko-client/internal/testutils/suite.go b/packages/taiko-client/internal/testutils/suite.go index f8345f6cec6..2975778d3f0 100644 --- a/packages/taiko-client/internal/testutils/suite.go +++ b/packages/taiko-client/internal/testutils/suite.go @@ -238,6 +238,7 @@ func (s *ClientTestSuite) TearDownSuite() { s.RevertL1Snapshot(s.testnetL1SnapshotID) } +// xxx func (s *ClientTestSuite) SetHead(headNum *big.Int) { // For geth node, we can set the head directly. if os.Getenv("L2_NODE") == "l2_geth" { @@ -371,13 +372,14 @@ func (s *ClientTestSuite) forkTo(attributes *engine.PayloadAttributes, parentHas s.Equal(attributes.L1Origin.BlockID.Uint64(), head.Number.Uint64()) // For Nethermind: wait for txpool to synchronize after chain head change - // This addresses the async txpool processing race condition + // This addresses the async txpool processing race condition. + // Uses the debug RPC method specifically designed for integration tests. if os.Getenv("L2_NODE") == "l2_nmc" { var synced bool err := s.RPCClient.L2Engine.CallContext( context.Background(), &synced, - "taikoAuth_waitForTxPoolSync", + "taikoDebug_waitForTxPoolSync", head.Number.Int64(), 5000, // 5 second timeout ) From 50497c3d35e2c84e27ce0869dac1eb76fdb3f126 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Thu, 15 Jan 2026 16:32:49 +0000 Subject: [PATCH 13/16] Remove extra comment --- packages/taiko-client/internal/testutils/suite.go | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/taiko-client/internal/testutils/suite.go b/packages/taiko-client/internal/testutils/suite.go index 2975778d3f0..267a57a8f93 100644 --- a/packages/taiko-client/internal/testutils/suite.go +++ b/packages/taiko-client/internal/testutils/suite.go @@ -238,7 +238,6 @@ func (s *ClientTestSuite) TearDownSuite() { s.RevertL1Snapshot(s.testnetL1SnapshotID) } -// xxx func (s *ClientTestSuite) SetHead(headNum *big.Int) { // For geth node, we can set the head directly. if os.Getenv("L2_NODE") == "l2_geth" { From 18eba9a1b4da7385419ca46ac5b9ffbd2e56c0a5 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Fri, 16 Jan 2026 09:04:13 +0000 Subject: [PATCH 14/16] Update to use new RPC --- .../taiko-client/internal/testutils/suite.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/taiko-client/internal/testutils/suite.go b/packages/taiko-client/internal/testutils/suite.go index 267a57a8f93..1ecd4a11518 100644 --- a/packages/taiko-client/internal/testutils/suite.go +++ b/packages/taiko-client/internal/testutils/suite.go @@ -370,19 +370,19 @@ func (s *ClientTestSuite) forkTo(attributes *engine.PayloadAttributes, parentHas s.Equal(attributes.L1Origin.BlockID.Uint64(), head.Number.Uint64()) - // For Nethermind: wait for txpool to synchronize after chain head change - // This addresses the async txpool processing race condition. - // Uses the debug RPC method specifically designed for integration tests. + // For Nethermind: clear txpool state after chain reorg + // After a reorg, stale txpool caches would reject transaction resubmissions + // with "already known" or "nonce too low". This clears hash cache, account cache, and pending txs. + // Pending txs must be cleared because tests resubmit transactions with the same hash/nonce, + // which would be rejected as "ReplacementNotAllowed" if they remain in the pool. if os.Getenv("L2_NODE") == "l2_nmc" { - var synced bool + var cleared bool err := s.RPCClient.L2Engine.CallContext( context.Background(), - &synced, - "taikoDebug_waitForTxPoolSync", - head.Number.Int64(), - 5000, // 5 second timeout + &cleared, + "taikoDebug_clearTxPoolForReorg", ) s.Nil(err) - s.True(synced, "TxPool sync failed after forkTo") + s.True(cleared, "TxPool clear failed after forkTo") } } From e2eb7cedd0ac1850136b52cb93964365ac0ce566 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Mon, 19 Jan 2026 10:19:18 +0000 Subject: [PATCH 15/16] Update l2_nmc Docker image to taiko-shasta-19-01-2026 --- packages/taiko-client/internal/docker/nodes/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index 395fa8693d1..23bd5b7c283 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -73,7 +73,7 @@ services: l2_nmc: container_name: l2_nmc - image: nethermindeth/nethermind:taiko-shasta-13-01-2026 + image: nethermindeth/nethermind:taiko-shasta-19-01-2026 restart: unless-stopped pull_policy: always volumes: From 9a5b469fa6d6818d06bc4902805a08d01f564926 Mon Sep 17 00:00:00 2001 From: Nurbakhyt Madibekov Date: Mon, 19 Jan 2026 13:57:47 +0000 Subject: [PATCH 16/16] Update l2_nmc Docker image to use the latest master version --- packages/taiko-client/internal/docker/nodes/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/taiko-client/internal/docker/nodes/docker-compose.yml b/packages/taiko-client/internal/docker/nodes/docker-compose.yml index 23bd5b7c283..455e744df87 100644 --- a/packages/taiko-client/internal/docker/nodes/docker-compose.yml +++ b/packages/taiko-client/internal/docker/nodes/docker-compose.yml @@ -73,7 +73,7 @@ services: l2_nmc: container_name: l2_nmc - image: nethermindeth/nethermind:taiko-shasta-19-01-2026 + image: nethermindeth/nethermind:master restart: unless-stopped pull_policy: always volumes: