Source Code
Overview
ETH Balance
0 ETH
More Info
ContractCreator
Multichain Info
N/A
Loading...
Loading
Heuristics suggest this may be a proxy contract. Verify using the Proxy Contract Checker
Contract Source Code (Solidity Standard Json-Input format)
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"ForceWithdrawalNotReady","type":"error"},{"inputs":[],"name":"InsufficientBalance","type":"error"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidTimelock","type":"error"},{"inputs":[],"name":"NativeTransferFailed","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"TimelockNotPassed","type":"error"},{"inputs":[],"name":"TokenNotSupported","type":"error"},{"inputs":[],"name":"UnknownStatus","type":"error"},{"inputs":[],"name":"WithdrawalIsCancelled","type":"error"},{"inputs":[],"name":"WithdrawalNotFound","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes","name":"","type":"bytes"}],"name":"AvailableBalanceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"beacon","type":"address"}],"name":"BeaconUpgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":true,"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldDuration","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"TimelockDurationChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"TokenRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"withdrawalId","type":"uint64"}],"name":"WithdrawalCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"withdrawalId","type":"uint64"},{"indexed":false,"internalType":"uint8","name":"status","type":"uint8"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawalFinalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint64","name":"withdrawalId","type":"uint64"},{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint64","name":"requestedAt","type":"uint64"}],"name":"WithdrawalRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldToken","type":"address"},{"indexed":true,"internalType":"address","name":"newToken","type":"address"}],"name":"WrappedNativeTokenUpdated","type":"event"},{"inputs":[],"name":"MAX_TIMELOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MIN_TIMELOCK","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NATIVE_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_ACCEPT","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_CANCEL","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_STATUS_CANCELLED","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_STATUS_FORCED","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_STATUS_PENDING","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WITHDRAWAL_STATUS_REDEPOSITED","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"addToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64[]","name":"withdrawalIds","type":"uint64[]"},{"internalType":"uint8","name":"status","type":"uint8"}],"name":"batchFinalizeWithdrawals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"withdrawalId","type":"uint64"}],"name":"cancelWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasury","type":"address"}],"name":"changeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"claimedWithdrawals","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"depositNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"withdrawalId","type":"uint64"},{"internalType":"uint8","name":"status","type":"uint8"}],"name":"finalizeWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"withdrawalId","type":"uint64"}],"name":"forceWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getTokenBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"getUserAccount","outputs":[{"components":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"claimed","type":"uint256"}],"internalType":"struct CellBridgeUpgradeable.UserAccount","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"withdrawalId","type":"uint64"}],"name":"getWithdrawal","outputs":[{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"requestedAt","type":"uint64"},{"internalType":"uint8","name":"status","type":"uint8"}],"internalType":"struct CellBridgeUpgradeable.Withdrawal","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wrappedNativeToken","type":"address"},{"internalType":"uint256","name":"_timelockDuration","type":"uint256"},{"internalType":"address","name":"_treasury","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastBatch","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"requestWithdrawal","outputs":[{"internalType":"uint64","name":"withdrawalId","type":"uint64"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newDuration","type":"uint256"}],"name":"setTimelockDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_wrappedNativeToken","type":"address"}],"name":"setWrappedNativeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"supportedTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timelockDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"batch","type":"bytes"},{"internalType":"address","name":"token","type":"address"},{"components":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"available","type":"uint256"}],"internalType":"struct CellBridgeUpgradeable.BalanceUpdate[]","name":"updates","type":"tuple[]"}],"name":"updateAvailableBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"updatedAt","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"userAccount","outputs":[{"internalType":"uint256","name":"available","type":"uint256"},{"internalType":"uint256","name":"claimed","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"withdrawalNonce","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"","type":"uint64"}],"name":"withdrawals","outputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint64","name":"requestedAt","type":"uint64"},{"internalType":"uint8","name":"status","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"wrappedNativeToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250348015610042575f5ffd5b506001808190555061005861005d60201b60201c565b6101ee565b5f60019054906101000a900460ff16156100ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100a39061019c565b60405180910390fd5b60ff80165f5f9054906101000a900460ff1660ff16101561011a5760ff5f5f6101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff60405161011191906101d5565b60405180910390a15b565b5f82825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e6974695f8201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b5f61018660278361011c565b91506101918261012c565b604082019050919050565b5f6020820190508181035f8301526101b38161017a565b9050919050565b5f60ff82169050919050565b6101cf816101ba565b82525050565b5f6020820190506101e85f8301846101c6565b92915050565b6080516154526102225f395f818161101d015281816110ab015281816113ca01528181611458015261150701526154525ff3fe608060405260043610610280575f3560e01c80636b7e9aba1161014e578063b14f2a39116100c0578063d48bfca711610079578063d48bfca714610950578063da058ae314610978578063da95ebf7146109a0578063db6b5246146109dc578063f2fde38b146109e6578063fb0c754914610a0e57610287565b8063b14f2a3914610834578063b202dca91461085c578063bcba81a614610898578063c350a1b5146108c2578063ccf1a4b2146108ea578063d268675b1461092657610287565b80637eb8e2b0116101125780637eb8e2b0146107235780638456cb59146107635780638da5cb5b1461077957806394f1825b146107a35780639d6f2c9f146107cd578063b125aead1461080a57610287565b80636b7e9aba146106675780636f6c37e81461068f578063715018a6146106b95780637519ab50146106cf5780637b259db4146106f957610287565b80633de1ccd6116101f25780635c975abb116101ab5780635c975abb1461055f5780635fa7b58414610589578063609e0bf2146105b157806361d027b3146105d9578063675dfdb01461060357806368c4ac261461062b57610287565b80633de1ccd6146104735780633f4ba83a146104af5780634f1ef286146104c557806352d1902d146104e157806354a82aac1461050b57806354fd4d501461053557610287565b80632bd34cc9116102445780632bd34cc91461036d57806331f7d96414610395578063338b5dea146103bf5780633505d7f6146103e75780633659cfe61461040f5780633aecd0e31461043757610287565b806307132c051461028b5780630edf202d146102c7578063150fea09146102f157806317fcb39b146103195780632bbca1571461034357610287565b3661028757005b5f5ffd5b348015610296575f5ffd5b506102b160048036038101906102ac9190613cfd565b610a38565b6040516102be9190613d42565b60405180910390f35b3480156102d2575f5ffd5b506102db610a55565b6040516102e89190613d76565b60405180910390f35b3480156102fc575f5ffd5b5061031760048036038101906103129190613dc2565b610a5a565b005b348015610324575f5ffd5b5061032d610ae9565b60405161033a9190613e2c565b60405180910390f35b34801561034e575f5ffd5b50610357610b0e565b6040516103649190613e54565b60405180910390f35b348015610378575f5ffd5b50610393600480360381019061038e9190613eaa565b610b14565b005b3480156103a0575f5ffd5b506103a9610ccd565b6040516103b69190613e2c565b60405180910390f35b3480156103ca575f5ffd5b506103e560048036038101906103e09190613eff565b610ce5565b005b3480156103f2575f5ffd5b5061040d60048036038101906104089190613eaa565b610ec7565b005b34801561041a575f5ffd5b5061043560048036038101906104309190613f3d565b61101b565b005b348015610442575f5ffd5b5061045d60048036038101906104589190613f3d565b6111a1565b60405161046a9190613e54565b60405180910390f35b34801561047e575f5ffd5b5061049960048036038101906104949190613eaa565b611271565b6040516104a6919061400a565b60405180910390f35b3480156104ba575f5ffd5b506104c36113b6565b005b6104df60048036038101906104da919061415f565b6113c8565b005b3480156104ec575f5ffd5b506104f5611504565b60405161050291906141c8565b60405180910390f35b348015610516575f5ffd5b5061051f6115bb565b60405161052c9190613d76565b60405180910390f35b348015610540575f5ffd5b506105496115bf565b6040516105569190614241565b60405180910390f35b34801561056a575f5ffd5b506105736115fc565b6040516105809190613d42565b60405180910390f35b348015610594575f5ffd5b506105af60048036038101906105aa9190613f3d565b61161e565b005b3480156105bc575f5ffd5b506105d760048036038101906105d29190614313565b611739565b005b3480156105e4575f5ffd5b506105ed611945565b6040516105fa9190613e2c565b60405180910390f35b34801561060e575f5ffd5b5061062960048036038101906106249190614423565b61196a565b005b348015610636575f5ffd5b50610651600480360381019061064c9190613f3d565b611a27565b60405161065e9190613d42565b60405180910390f35b348015610672575f5ffd5b5061068d60048036038101906106889190614480565b611a44565b005b34801561069a575f5ffd5b506106a3611ab6565b6040516106b09190613d76565b60405180910390f35b3480156106c4575f5ffd5b506106cd611aba565b005b3480156106da575f5ffd5b506106e3611acd565b6040516106f091906144cd565b60405180910390f35b348015610704575f5ffd5b5061070d611ae6565b60405161071a91906144cd565b60405180910390f35b34801561072e575f5ffd5b5061074960048036038101906107449190613eaa565b611aff565b60405161075a9594939291906144e6565b60405180910390f35b34801561076e575f5ffd5b50610777611b8f565b005b348015610784575f5ffd5b5061078d611ba1565b60405161079a9190613e2c565b60405180910390f35b3480156107ae575f5ffd5b506107b7611bd6565b6040516107c49190613e54565b60405180910390f35b3480156107d8575f5ffd5b506107f360048036038101906107ee9190614537565b611bdd565b604051610801929190614575565b60405180910390f35b348015610815575f5ffd5b5061081e611c08565b60405161082b9190613d76565b60405180910390f35b34801561083f575f5ffd5b5061085a60048036038101906108559190613f3d565b611c0d565b005b348015610867575f5ffd5b50610882600480360381019061087d9190613f3d565b611cbd565b60405161088f91906145ee565b60405180910390f35b3480156108a3575f5ffd5b506108ac611d58565b6040516108b99190613d76565b60405180910390f35b3480156108cd575f5ffd5b506108e860048036038101906108e3919061460e565b611d5d565b005b3480156108f5575f5ffd5b50610910600480360381019061090b9190614537565b61204b565b60405161091d919061468b565b60405180910390f35b348015610931575f5ffd5b5061093a6120f1565b6040516109479190613d76565b60405180910390f35b34801561095b575f5ffd5b5061097660048036038101906109719190613f3d565b6120f6565b005b348015610983575f5ffd5b5061099e60048036038101906109999190613f3d565b6121fe565b005b3480156109ab575f5ffd5b506109c660048036038101906109c19190613eff565b6122c9565b6040516109d391906144cd565b60405180910390f35b6109e4612716565b005b3480156109f1575f5ffd5b50610a0c6004803603810190610a079190613f3d565b612871565b005b348015610a19575f5ffd5b50610a226128f5565b604051610a2f9190613e54565b60405180910390f35b6009602052805f5260405f205f915054906101000a900460ff1681565b600181565b610a626128f9565b62127500811115610a9f576040517ff8d10e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6004549050816004819055507f72038169cc9f1cec03b45f8ca49ee861c9d458bf1bfca7b67b926b30b40c23168183604051610add929190614575565b60405180910390a15050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b5f60075f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f816003015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610b96576040517f8d0fc1dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60ff168160030160089054906101000a900460ff1660ff1614610be6576040517f468d79e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bee612980565b73ffffffffffffffffffffffffffffffffffffffff16815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c74576040517f8d0fc1dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018160030160086101000a81548160ff021916908360ff1602179055508167ffffffffffffffff167f5381b5dfdd23d3afd9a020b901f9fe8a8d81faed504e034fb60f95368160330260405160405180910390a25050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b600260015403610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d21906146ee565b60405180910390fd5b6002600181905550610d3a612987565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610dba576040517f3dd1b30500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610df3576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610dfc612980565b9050610e2b8130848673ffffffffffffffffffffffffffffffffffffffff166129c8909392919063ffffffff16565b610e36818484612a51565b60055f9054906101000a900467ffffffffffffffff1667ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f82d8a7fa258203875a3bedce06261f126eee7e7df2ee1cacbac12226772f0d6085604051610eb39190613e54565b60405180910390a450600180819055505050565b600260015403610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f03906146ee565b60405180910390fd5b6002600181905550610f1c612987565b5f60075f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f816003015f9054906101000a900467ffffffffffffffff1690508067ffffffffffffffff16600b5f9054906101000a900467ffffffffffffffff1667ffffffffffffffff161115610fa957600b5f9054906101000a900467ffffffffffffffff1690505b6004548167ffffffffffffffff16610fc19190614739565b4267ffffffffffffffff161015611004576040517f20800e6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61100f836002612aeb565b50506001808190555050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16036110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906147dc565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166110e8612eeb565b73ffffffffffffffffffffffffffffffffffffffff161461113e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111359061486a565b60405180910390fd5b61114781612f3e565b61119e815f67ffffffffffffffff8111156111655761116461403b565b5b6040519080825280601f01601f1916602001820160405280156111975781602001600182028036833780820191505090505b505f612f49565b50565b5f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f15747905061126c565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161122a9190613e2c565b602060405180830381865afa158015611245573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611269919061489c565b90505b919050565b611279613c3e565b5f60075f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f209050806040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016003820160089054906101000a900460ff1660ff1660ff1681525050915050919050565b6113be6128f9565b6113c66130b3565b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906147dc565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611495612eeb565b73ffffffffffffffffffffffffffffffffffffffff16146114eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e29061486a565b60405180910390fd5b6114f482612f3e565b61150082826001612f49565b5050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a90614937565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f81565b60606040518060400160405280600581526020017f312e332e30000000000000000000000000000000000000000000000000000000815250905090565b5f5f611606613121565b9050805f015f9054906101000a900460ff1691505090565b6116266128f9565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361169f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd360405160405180910390a250565b611741613148565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166117c1576040517f3dd1b30500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f90505b8282905081101561188f57368383838181106117e5576117e4614955565b5b9050604002019050806020013560085f835f0160208101906118079190613f3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01819055505080806001019150506117c6565b508484600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2091826118dc929190614b89565b5042600b5f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fbd31d842382b6c04fe169fca8844bb1aae8bd7870dc08da54965d386a3d6805f8585604051611936929190614c82565b60405180910390a15050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611972613148565b6002600154036119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae906146ee565b60405180910390fd5b60026001819055506119c7612987565b5f5f90505b83839050811015611a1a575f8484838181106119eb576119ea614955565b5b9050602002016020810190611a009190613eaa565b9050611a0c8184612aeb565b5080806001019150506119cc565b5060018081905550505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b611a4c613148565b600260015403611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a88906146ee565b60405180910390fd5b6002600181905550611aa1612987565b611aab8282612aeb565b600180819055505050565b5f81565b611ac26128f9565b611acb5f6131e9565b565b600b5f9054906101000a900467ffffffffffffffff1681565b60055f9054906101000a900467ffffffffffffffff1681565b6007602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015490806003015f9054906101000a900467ffffffffffffffff16908060030160089054906101000a900460ff16905085565b611b976128f9565b611b9f6132ba565b565b5f5f611bab613329565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6212750081565b6008602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154905082565b600381565b611c156128f9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a602052805f5260405f205f915090508054611cd9906149b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611d05906149b9565b8015611d505780601f10611d2757610100808354040283529160200191611d50565b820191905f5260205f20905b815481529060010190602001808311611d3357829003601f168201915b505050505081565b600281565b5f5f60019054906101000a900460ff16159050808015611d8d575060015f5f9054906101000a900460ff1660ff16105b80611dba5750611d9c30613350565b158015611db9575060015f5f9054906101000a900460ff1660ff16145b5b611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090614d14565b60405180910390fd5b60015f5f6101000a81548160ff021916908360ff1602179055508015611e345760015f60016101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e99576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62127500831180611ea957505f83105b15611ee0576040517ff8d10e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ee9612980565b9050611ef481613372565b611efc6133cc565b8460035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836004819055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550508015612045575f5f60016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161203c9190614d6b565b60405180910390a15b50505050565b612053613ca1565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060400160405290815f8201548152602001600182015481525050905092915050565b600181565b6120fe6128f9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612163576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f784c8f4dbf0ffedd6e72c76501c545a70f8b203b30a26ce542bf92ba87c248a460405160405180910390a250565b6122066128f9565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fffd9582901c27177dbd18194ae8017f10d8b21f98a0da2ea5197e0b20dc13d7060405160405180910390a35050565b5f60026001540361230f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612306906146ee565b60405180910390fd5b600260018190555061231f612987565b5f612328612980565b90505f8303612363576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166123e3576040517f3dd1b30500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905080600101548461246e9190614739565b815f015410156124aa576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f81819054906101000a900467ffffffffffffffff16809291906124cf90614d84565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555092506040518060a001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020014267ffffffffffffffff1681526020015f60ff1681525060075f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a81548160ff021916908360ff16021790555090505083816001015f8282546126759190614739565b9250508190555083815f015f82825461268e9190614db3565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168467ffffffffffffffff167f3982217d4dab321c99285013d84866a371a94ca7872a79f94bb93adce8d1312f87426040516126ff929190614de6565b60405180910390a450506001808190555092915050565b60026001540361275b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612752906146ee565b60405180910390fd5b600260018190555061276b612987565b5f34036127a4576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6127ad612980565b90506127ce8173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34612a51565b60055f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f82d8a7fa258203875a3bedce06261f126eee7e7df2ee1cacbac12226772f0d603460405161285f9190613e54565b60405180910390a45060018081905550565b6128796128f9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128e9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016128e09190613e2c565b60405180910390fd5b6128f2816131e9565b50565b5f81565b612901612980565b73ffffffffffffffffffffffffffffffffffffffff1661291f611ba1565b73ffffffffffffffffffffffffffffffffffffffff161461297e57612942612980565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016129759190613e2c565b60405180910390fd5b565b5f33905090565b61298f6115fc565b156129c6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612a4b846323b872dd60e01b8585856040516024016129e993929190614e0d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061341c565b50505050565b5f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254612ade9190614739565b9250508190555050505050565b5f60075f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f816003015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1603612b6d576040517f8d0fc1dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60ff168260ff16148015612b995750600160ff168160030160089054906101000a900460ff1660ff16145b15612bfb57612bf2815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360020154612a51565b60039150612ca4565b600160ff168260ff1614612c6257612c5d816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16825f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600201546134e1565b612ca3565b8160ff16600160ff1614612ca2576040517f1e20256000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5f60085f835f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f836001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090508160020154816001015f828254612d7b9190614db3565b92505081905550816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16825f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168567ffffffffffffffff167f585899261aaf8efd5f03de7eb33dbd995b0b3adda857236dacd076f54f89c75d868660020154604051612e35929190614e42565b60405180910390a460075f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600282015f9055600382015f6101000a81549067ffffffffffffffff02191690556003820160086101000a81549060ff0219169055505050505050565b5f612f177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6136e9565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612f466128f9565b50565b612f747f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435f1b6136f2565b5f015f9054906101000a900460ff1615612f9657612f91836136fb565b6130ae565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612ffe57506040513d601f19601f82011682018060405250810190612ffb9190614e7d565b60015b61303d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303490614f18565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b81146130a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309890614fa6565b60405180910390fd5b506130ad8383836137b1565b5b505050565b6130bb6137dc565b5f6130c4613121565b90505f815f015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613109612980565b6040516131169190613e2c565b60405180910390a150565b5f7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b613150612980565b73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131e7576131ab612980565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016131de9190613e2c565b60405180910390fd5b565b5f6131f2613329565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6132c2612987565b5f6132cb613121565b90506001815f015f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613311612980565b60405161331e9190613e2c565b60405180910390a150565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f5f8273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f60019054906101000a900460ff166133c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b790615034565b60405180910390fd5b6133c98161381c565b50565b5f60019054906101000a900460ff1661341a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341190615034565b60405180910390fd5b565b5f61347d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166138e69092919063ffffffff16565b90505f815111156134dc578080602001905181019061349c919061507c565b6134db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d290615117565b60405180910390fd5b5b505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136075780471015613562576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161358790615162565b5f6040518083038185875af1925050503d805f81146135c1576040519150601f19603f3d011682016040523d82523d5f602084013e6135c6565b606091505b5050905080613601576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506136e4565b808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016136419190613e2c565b602060405180830381865afa15801561365c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613680919061489c565b10156136b8576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6136e382828573ffffffffffffffffffffffffffffffffffffffff166138fd9092919063ffffffff16565b5b505050565b5f819050919050565b5f819050919050565b61370481613350565b613743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373a906151e6565b60405180910390fd5b8061376f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6136e9565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6137ba83613983565b5f825111806137c65750805b156137d7576137d583836139d2565b505b505050565b6137e46115fc565b61381a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f60019054906101000a900460ff1661386a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386190615034565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036138da575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016138d19190613e2c565b60405180910390fd5b6138e3816131e9565b50565b60606138f484845f856139ff565b90509392505050565b61397e8363a9059cbb60e01b848460405160240161391c929190615204565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061341c565b505050565b61398c816136fb565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606139f783836040518060600160405280602781526020016153f660279139613b0f565b905092915050565b606082471015613a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3b9061529b565b60405180910390fd5b613a4d85613350565b613a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8390615303565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff168587604051613ab49190615351565b5f6040518083038185875af1925050503d805f8114613aee576040519150601f19603f3d011682016040523d82523d5f602084013e613af3565b606091505b5091509150613b03828286613bd8565b92505050949350505050565b6060613b1a84613350565b613b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b50906153d7565b60405180910390fd5b5f5f8573ffffffffffffffffffffffffffffffffffffffff1685604051613b809190615351565b5f60405180830381855af49150503d805f8114613bb8576040519150601f19603f3d011682016040523d82523d5f602084013e613bbd565b606091505b5091509150613bcd828286613bd8565b925050509392505050565b60608315613be857829050613c37565b5f83511115613bfa5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c2e9190614241565b60405180910390fd5b9392505050565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f67ffffffffffffffff1681526020015f60ff1681525090565b60405180604001604052805f81526020015f81525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b613cdc81613cca565b8114613ce6575f5ffd5b50565b5f81359050613cf781613cd3565b92915050565b5f60208284031215613d1257613d11613cc2565b5b5f613d1f84828501613ce9565b91505092915050565b5f8115159050919050565b613d3c81613d28565b82525050565b5f602082019050613d555f830184613d33565b92915050565b5f60ff82169050919050565b613d7081613d5b565b82525050565b5f602082019050613d895f830184613d67565b92915050565b5f819050919050565b613da181613d8f565b8114613dab575f5ffd5b50565b5f81359050613dbc81613d98565b92915050565b5f60208284031215613dd757613dd6613cc2565b5b5f613de484828501613dae565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613e1682613ded565b9050919050565b613e2681613e0c565b82525050565b5f602082019050613e3f5f830184613e1d565b92915050565b613e4e81613d8f565b82525050565b5f602082019050613e675f830184613e45565b92915050565b5f67ffffffffffffffff82169050919050565b613e8981613e6d565b8114613e93575f5ffd5b50565b5f81359050613ea481613e80565b92915050565b5f60208284031215613ebf57613ebe613cc2565b5b5f613ecc84828501613e96565b91505092915050565b613ede81613e0c565b8114613ee8575f5ffd5b50565b5f81359050613ef981613ed5565b92915050565b5f5f60408385031215613f1557613f14613cc2565b5b5f613f2285828601613eeb565b9250506020613f3385828601613dae565b9150509250929050565b5f60208284031215613f5257613f51613cc2565b5b5f613f5f84828501613eeb565b91505092915050565b613f7181613e0c565b82525050565b613f8081613d8f565b82525050565b613f8f81613e6d565b82525050565b613f9e81613d5b565b82525050565b60a082015f820151613fb85f850182613f68565b506020820151613fcb6020850182613f68565b506040820151613fde6040850182613f77565b506060820151613ff16060850182613f86565b5060808201516140046080850182613f95565b50505050565b5f60a08201905061401d5f830184613fa4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6140718261402b565b810181811067ffffffffffffffff821117156140905761408f61403b565b5b80604052505050565b5f6140a2613cb9565b90506140ae8282614068565b919050565b5f67ffffffffffffffff8211156140cd576140cc61403b565b5b6140d68261402b565b9050602081019050919050565b828183375f83830152505050565b5f6141036140fe846140b3565b614099565b90508281526020810184848401111561411f5761411e614027565b5b61412a8482856140e3565b509392505050565b5f82601f83011261414657614145614023565b5b81356141568482602086016140f1565b91505092915050565b5f5f6040838503121561417557614174613cc2565b5b5f61418285828601613eeb565b925050602083013567ffffffffffffffff8111156141a3576141a2613cc6565b5b6141af85828601614132565b9150509250929050565b6141c281613cca565b82525050565b5f6020820190506141db5f8301846141b9565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f614213826141e1565b61421d81856141eb565b935061422d8185602086016141fb565b6142368161402b565b840191505092915050565b5f6020820190508181035f8301526142598184614209565b905092915050565b5f5ffd5b5f5ffd5b5f5f83601f84011261427e5761427d614023565b5b8235905067ffffffffffffffff81111561429b5761429a614261565b5b6020830191508360018202830111156142b7576142b6614265565b5b9250929050565b5f5f83601f8401126142d3576142d2614023565b5b8235905067ffffffffffffffff8111156142f0576142ef614261565b5b60208301915083604082028301111561430c5761430b614265565b5b9250929050565b5f5f5f5f5f6060868803121561432c5761432b613cc2565b5b5f86013567ffffffffffffffff81111561434957614348613cc6565b5b61435588828901614269565b9550955050602061436888828901613eeb565b935050604086013567ffffffffffffffff81111561438957614388613cc6565b5b614395888289016142be565b92509250509295509295909350565b5f5f83601f8401126143b9576143b8614023565b5b8235905067ffffffffffffffff8111156143d6576143d5614261565b5b6020830191508360208202830111156143f2576143f1614265565b5b9250929050565b61440281613d5b565b811461440c575f5ffd5b50565b5f8135905061441d816143f9565b92915050565b5f5f5f6040848603121561443a57614439613cc2565b5b5f84013567ffffffffffffffff81111561445757614456613cc6565b5b614463868287016143a4565b935093505060206144768682870161440f565b9150509250925092565b5f5f6040838503121561449657614495613cc2565b5b5f6144a385828601613e96565b92505060206144b48582860161440f565b9150509250929050565b6144c781613e6d565b82525050565b5f6020820190506144e05f8301846144be565b92915050565b5f60a0820190506144f95f830188613e1d565b6145066020830187613e1d565b6145136040830186613e45565b61452060608301856144be565b61452d6080830184613d67565b9695505050505050565b5f5f6040838503121561454d5761454c613cc2565b5b5f61455a85828601613eeb565b925050602061456b85828601613eeb565b9150509250929050565b5f6040820190506145885f830185613e45565b6145956020830184613e45565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6145c08261459c565b6145ca81856145a6565b93506145da8185602086016141fb565b6145e38161402b565b840191505092915050565b5f6020820190508181035f83015261460681846145b6565b905092915050565b5f5f5f6060848603121561462557614624613cc2565b5b5f61463286828701613eeb565b935050602061464386828701613dae565b925050604061465486828701613eeb565b9150509250925092565b604082015f8201516146725f850182613f77565b5060208201516146856020850182613f77565b50505050565b5f60408201905061469e5f83018461465e565b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6146d8601f836141eb565b91506146e3826146a4565b602082019050919050565b5f6020820190508181035f830152614705816146cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61474382613d8f565b915061474e83613d8f565b92508282019050808211156147665761476561470c565b5b92915050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f756768205f8201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b5f6147c6602c836141eb565b91506147d18261476c565b604082019050919050565b5f6020820190508181035f8301526147f3816147ba565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f756768205f8201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b5f614854602c836141eb565b915061485f826147fa565b604082019050919050565b5f6020820190508181035f83015261488181614848565b9050919050565b5f8151905061489681613d98565b92915050565b5f602082840312156148b1576148b0613cc2565b5b5f6148be84828501614888565b91505092915050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c5f8201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b5f6149216038836141eb565b915061492c826148c7565b604082019050919050565b5f6020820190508181035f83015261494e81614915565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806149d057607f821691505b6020821081036149e3576149e261498c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614a457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614a0a565b614a4f8683614a0a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f614a8a614a85614a8084613d8f565b614a67565b613d8f565b9050919050565b5f819050919050565b614aa383614a70565b614ab7614aaf82614a91565b848454614a16565b825550505050565b5f5f905090565b614ace614abf565b614ad9818484614a9a565b505050565b5b81811015614afc57614af15f82614ac6565b600181019050614adf565b5050565b601f821115614b4157614b12816149e9565b614b1b846149fb565b81016020851015614b2a578190505b614b3e614b36856149fb565b830182614ade565b50505b505050565b5f82821c905092915050565b5f614b615f1984600802614b46565b1980831691505092915050565b5f614b798383614b52565b9150826002028217905092915050565b614b938383614982565b67ffffffffffffffff811115614bac57614bab61403b565b5b614bb682546149b9565b614bc1828285614b00565b5f601f831160018114614bee575f8415614bdc578287013590505b614be68582614b6e565b865550614c4d565b601f198416614bfc866149e9565b5f5b82811015614c2357848901358255600182019150602085019450602081019050614bfe565b86831015614c405784890135614c3c601f891682614b52565b8355505b6001600288020188555050505b50505050505050565b5f614c6183856145a6565b9350614c6e8385846140e3565b614c778361402b565b840190509392505050565b5f6020820190508181035f830152614c9b818486614c56565b90509392505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c7265615f8201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b5f614cfe602e836141eb565b9150614d0982614ca4565b604082019050919050565b5f6020820190508181035f830152614d2b81614cf2565b9050919050565b5f819050919050565b5f614d55614d50614d4b84614d32565b614a67565b613d5b565b9050919050565b614d6581614d3b565b82525050565b5f602082019050614d7e5f830184614d5c565b92915050565b5f614d8e82613e6d565b915067ffffffffffffffff8203614da857614da761470c565b5b600182019050919050565b5f614dbd82613d8f565b9150614dc883613d8f565b9250828203905081811115614de057614ddf61470c565b5b92915050565b5f604082019050614df95f830185613e45565b614e0660208301846144be565b9392505050565b5f606082019050614e205f830186613e1d565b614e2d6020830185613e1d565b614e3a6040830184613e45565b949350505050565b5f604082019050614e555f830185613d67565b614e626020830184613e45565b9392505050565b5f81519050614e7781613cd3565b92915050565b5f60208284031215614e9257614e91613cc2565b5b5f614e9f84828501614e69565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e746174695f8201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b5f614f02602e836141eb565b9150614f0d82614ea8565b604082019050919050565b5f6020820190508181035f830152614f2f81614ef6565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f785f8201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b5f614f906029836141eb565b9150614f9b82614f36565b604082019050919050565b5f6020820190508181035f830152614fbd81614f84565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420695f8201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b5f61501e602b836141eb565b915061502982614fc4565b604082019050919050565b5f6020820190508181035f83015261504b81615012565b9050919050565b61505b81613d28565b8114615065575f5ffd5b50565b5f8151905061507681615052565b92915050565b5f6020828403121561509157615090613cc2565b5b5f61509e84828501615068565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f615101602a836141eb565b915061510c826150a7565b604082019050919050565b5f6020820190508181035f83015261512e816150f5565b9050919050565b5f81905092915050565b50565b5f61514d5f83615135565b91506151588261513f565b5f82019050919050565b5f61516c82615142565b9150819050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e5f8201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b5f6151d0602d836141eb565b91506151db82615176565b604082019050919050565b5f6020820190508181035f8301526151fd816151c4565b9050919050565b5f6040820190506152175f830185613e1d565b6152246020830184613e45565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f6152856026836141eb565b91506152908261522b565b604082019050919050565b5f6020820190508181035f8301526152b281615279565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6152ed601d836141eb565b91506152f8826152b9565b602082019050919050565b5f6020820190508181035f83015261531a816152e1565b9050919050565b5f61532b8261459c565b6153358185615135565b93506153458185602086016141fb565b80840191505092915050565b5f61535c8284615321565b915081905092915050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f6153c16026836141eb565b91506153cc82615367565b604082019050919050565b5f6020820190508181035f8301526153ee816153b5565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122091476fbd4ab8c99d1b91b288ed421746f4fd571ae98703acea4bc607ab122f4e64736f6c634300081c0033
Deployed Bytecode
0x608060405260043610610280575f3560e01c80636b7e9aba1161014e578063b14f2a39116100c0578063d48bfca711610079578063d48bfca714610950578063da058ae314610978578063da95ebf7146109a0578063db6b5246146109dc578063f2fde38b146109e6578063fb0c754914610a0e57610287565b8063b14f2a3914610834578063b202dca91461085c578063bcba81a614610898578063c350a1b5146108c2578063ccf1a4b2146108ea578063d268675b1461092657610287565b80637eb8e2b0116101125780637eb8e2b0146107235780638456cb59146107635780638da5cb5b1461077957806394f1825b146107a35780639d6f2c9f146107cd578063b125aead1461080a57610287565b80636b7e9aba146106675780636f6c37e81461068f578063715018a6146106b95780637519ab50146106cf5780637b259db4146106f957610287565b80633de1ccd6116101f25780635c975abb116101ab5780635c975abb1461055f5780635fa7b58414610589578063609e0bf2146105b157806361d027b3146105d9578063675dfdb01461060357806368c4ac261461062b57610287565b80633de1ccd6146104735780633f4ba83a146104af5780634f1ef286146104c557806352d1902d146104e157806354a82aac1461050b57806354fd4d501461053557610287565b80632bd34cc9116102445780632bd34cc91461036d57806331f7d96414610395578063338b5dea146103bf5780633505d7f6146103e75780633659cfe61461040f5780633aecd0e31461043757610287565b806307132c051461028b5780630edf202d146102c7578063150fea09146102f157806317fcb39b146103195780632bbca1571461034357610287565b3661028757005b5f5ffd5b348015610296575f5ffd5b506102b160048036038101906102ac9190613cfd565b610a38565b6040516102be9190613d42565b60405180910390f35b3480156102d2575f5ffd5b506102db610a55565b6040516102e89190613d76565b60405180910390f35b3480156102fc575f5ffd5b5061031760048036038101906103129190613dc2565b610a5a565b005b348015610324575f5ffd5b5061032d610ae9565b60405161033a9190613e2c565b60405180910390f35b34801561034e575f5ffd5b50610357610b0e565b6040516103649190613e54565b60405180910390f35b348015610378575f5ffd5b50610393600480360381019061038e9190613eaa565b610b14565b005b3480156103a0575f5ffd5b506103a9610ccd565b6040516103b69190613e2c565b60405180910390f35b3480156103ca575f5ffd5b506103e560048036038101906103e09190613eff565b610ce5565b005b3480156103f2575f5ffd5b5061040d60048036038101906104089190613eaa565b610ec7565b005b34801561041a575f5ffd5b5061043560048036038101906104309190613f3d565b61101b565b005b348015610442575f5ffd5b5061045d60048036038101906104589190613f3d565b6111a1565b60405161046a9190613e54565b60405180910390f35b34801561047e575f5ffd5b5061049960048036038101906104949190613eaa565b611271565b6040516104a6919061400a565b60405180910390f35b3480156104ba575f5ffd5b506104c36113b6565b005b6104df60048036038101906104da919061415f565b6113c8565b005b3480156104ec575f5ffd5b506104f5611504565b60405161050291906141c8565b60405180910390f35b348015610516575f5ffd5b5061051f6115bb565b60405161052c9190613d76565b60405180910390f35b348015610540575f5ffd5b506105496115bf565b6040516105569190614241565b60405180910390f35b34801561056a575f5ffd5b506105736115fc565b6040516105809190613d42565b60405180910390f35b348015610594575f5ffd5b506105af60048036038101906105aa9190613f3d565b61161e565b005b3480156105bc575f5ffd5b506105d760048036038101906105d29190614313565b611739565b005b3480156105e4575f5ffd5b506105ed611945565b6040516105fa9190613e2c565b60405180910390f35b34801561060e575f5ffd5b5061062960048036038101906106249190614423565b61196a565b005b348015610636575f5ffd5b50610651600480360381019061064c9190613f3d565b611a27565b60405161065e9190613d42565b60405180910390f35b348015610672575f5ffd5b5061068d60048036038101906106889190614480565b611a44565b005b34801561069a575f5ffd5b506106a3611ab6565b6040516106b09190613d76565b60405180910390f35b3480156106c4575f5ffd5b506106cd611aba565b005b3480156106da575f5ffd5b506106e3611acd565b6040516106f091906144cd565b60405180910390f35b348015610704575f5ffd5b5061070d611ae6565b60405161071a91906144cd565b60405180910390f35b34801561072e575f5ffd5b5061074960048036038101906107449190613eaa565b611aff565b60405161075a9594939291906144e6565b60405180910390f35b34801561076e575f5ffd5b50610777611b8f565b005b348015610784575f5ffd5b5061078d611ba1565b60405161079a9190613e2c565b60405180910390f35b3480156107ae575f5ffd5b506107b7611bd6565b6040516107c49190613e54565b60405180910390f35b3480156107d8575f5ffd5b506107f360048036038101906107ee9190614537565b611bdd565b604051610801929190614575565b60405180910390f35b348015610815575f5ffd5b5061081e611c08565b60405161082b9190613d76565b60405180910390f35b34801561083f575f5ffd5b5061085a60048036038101906108559190613f3d565b611c0d565b005b348015610867575f5ffd5b50610882600480360381019061087d9190613f3d565b611cbd565b60405161088f91906145ee565b60405180910390f35b3480156108a3575f5ffd5b506108ac611d58565b6040516108b99190613d76565b60405180910390f35b3480156108cd575f5ffd5b506108e860048036038101906108e3919061460e565b611d5d565b005b3480156108f5575f5ffd5b50610910600480360381019061090b9190614537565b61204b565b60405161091d919061468b565b60405180910390f35b348015610931575f5ffd5b5061093a6120f1565b6040516109479190613d76565b60405180910390f35b34801561095b575f5ffd5b5061097660048036038101906109719190613f3d565b6120f6565b005b348015610983575f5ffd5b5061099e60048036038101906109999190613f3d565b6121fe565b005b3480156109ab575f5ffd5b506109c660048036038101906109c19190613eff565b6122c9565b6040516109d391906144cd565b60405180910390f35b6109e4612716565b005b3480156109f1575f5ffd5b50610a0c6004803603810190610a079190613f3d565b612871565b005b348015610a19575f5ffd5b50610a226128f5565b604051610a2f9190613e54565b60405180910390f35b6009602052805f5260405f205f915054906101000a900460ff1681565b600181565b610a626128f9565b62127500811115610a9f576040517ff8d10e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6004549050816004819055507f72038169cc9f1cec03b45f8ca49ee861c9d458bf1bfca7b67b926b30b40c23168183604051610add929190614575565b60405180910390a15050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b5f60075f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f816003015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1603610b96576040517f8d0fc1dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60ff168160030160089054906101000a900460ff1660ff1614610be6576040517f468d79e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bee612980565b73ffffffffffffffffffffffffffffffffffffffff16815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c74576040517f8d0fc1dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018160030160086101000a81548160ff021916908360ff1602179055508167ffffffffffffffff167f5381b5dfdd23d3afd9a020b901f9fe8a8d81faed504e034fb60f95368160330260405160405180910390a25050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b600260015403610d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d21906146ee565b60405180910390fd5b6002600181905550610d3a612987565b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610dba576040517f3dd1b30500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610df3576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610dfc612980565b9050610e2b8130848673ffffffffffffffffffffffffffffffffffffffff166129c8909392919063ffffffff16565b610e36818484612a51565b60055f9054906101000a900467ffffffffffffffff1667ffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f82d8a7fa258203875a3bedce06261f126eee7e7df2ee1cacbac12226772f0d6085604051610eb39190613e54565b60405180910390a450600180819055505050565b600260015403610f0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f03906146ee565b60405180910390fd5b6002600181905550610f1c612987565b5f60075f8367ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f816003015f9054906101000a900467ffffffffffffffff1690508067ffffffffffffffff16600b5f9054906101000a900467ffffffffffffffff1667ffffffffffffffff161115610fa957600b5f9054906101000a900467ffffffffffffffff1690505b6004548167ffffffffffffffff16610fc19190614739565b4267ffffffffffffffff161015611004576040517f20800e6f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61100f836002612aeb565b50506001808190555050565b7f000000000000000000000000102d3b156bd8230e87fd0505fc376ef7bb70443573ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16036110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906147dc565b60405180910390fd5b7f000000000000000000000000102d3b156bd8230e87fd0505fc376ef7bb70443573ffffffffffffffffffffffffffffffffffffffff166110e8612eeb565b73ffffffffffffffffffffffffffffffffffffffff161461113e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111359061486a565b60405180910390fd5b61114781612f3e565b61119e815f67ffffffffffffffff8111156111655761116461403b565b5b6040519080825280601f01601f1916602001820160405280156111975781602001600182028036833780820191505090505b505f612f49565b50565b5f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111f15747905061126c565b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161122a9190613e2c565b602060405180830381865afa158015611245573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611269919061489c565b90505b919050565b611279613c3e565b5f60075f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f209050806040518060a00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160028201548152602001600382015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016003820160089054906101000a900460ff1660ff1660ff1681525050915050919050565b6113be6128f9565b6113c66130b3565b565b7f000000000000000000000000102d3b156bd8230e87fd0505fc376ef7bb70443573ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603611456576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144d906147dc565b60405180910390fd5b7f000000000000000000000000102d3b156bd8230e87fd0505fc376ef7bb70443573ffffffffffffffffffffffffffffffffffffffff16611495612eeb565b73ffffffffffffffffffffffffffffffffffffffff16146114eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e29061486a565b60405180910390fd5b6114f482612f3e565b61150082826001612f49565b5050565b5f7f000000000000000000000000102d3b156bd8230e87fd0505fc376ef7bb70443573ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158a90614937565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b5f81565b60606040518060400160405280600581526020017f312e332e30000000000000000000000000000000000000000000000000000000815250905090565b5f5f611606613121565b9050805f015f9054906101000a900460ff1691505090565b6116266128f9565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361169f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f4c910b69fe65a61f7531b9c5042b2329ca7179c77290aa7e2eb3afa3c8511fd360405160405180910390a250565b611741613148565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166117c1576040517f3dd1b30500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f90505b8282905081101561188f57368383838181106117e5576117e4614955565b5b9050604002019050806020013560085f835f0160208101906118079190613f3d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f01819055505080806001019150506117c6565b508484600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2091826118dc929190614b89565b5042600b5f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fbd31d842382b6c04fe169fca8844bb1aae8bd7870dc08da54965d386a3d6805f8585604051611936929190614c82565b60405180910390a15050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611972613148565b6002600154036119b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ae906146ee565b60405180910390fd5b60026001819055506119c7612987565b5f5f90505b83839050811015611a1a575f8484838181106119eb576119ea614955565b5b9050602002016020810190611a009190613eaa565b9050611a0c8184612aeb565b5080806001019150506119cc565b5060018081905550505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b611a4c613148565b600260015403611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a88906146ee565b60405180910390fd5b6002600181905550611aa1612987565b611aab8282612aeb565b600180819055505050565b5f81565b611ac26128f9565b611acb5f6131e9565b565b600b5f9054906101000a900467ffffffffffffffff1681565b60055f9054906101000a900467ffffffffffffffff1681565b6007602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806002015490806003015f9054906101000a900467ffffffffffffffff16908060030160089054906101000a900460ff16905085565b611b976128f9565b611b9f6132ba565b565b5f5f611bab613329565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b6212750081565b6008602052815f5260405f20602052805f5260405f205f9150915050805f0154908060010154905082565b600381565b611c156128f9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a602052805f5260405f205f915090508054611cd9906149b9565b80601f0160208091040260200160405190810160405280929190818152602001828054611d05906149b9565b8015611d505780601f10611d2757610100808354040283529160200191611d50565b820191905f5260205f20905b815481529060010190602001808311611d3357829003601f168201915b505050505081565b600281565b5f5f60019054906101000a900460ff16159050808015611d8d575060015f5f9054906101000a900460ff1660ff16105b80611dba5750611d9c30613350565b158015611db9575060015f5f9054906101000a900460ff1660ff16145b5b611df9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df090614d14565b60405180910390fd5b60015f5f6101000a81548160ff021916908360ff1602179055508015611e345760015f60016101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611e99576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62127500831180611ea957505f83105b15611ee0576040517ff8d10e8200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f611ee9612980565b9050611ef481613372565b611efc6133cc565b8460035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836004819055508260025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550508015612045575f5f60016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161203c9190614d6b565b60405180910390a15b50505050565b612053613ca1565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060400160405290815f8201548152602001600182015481525050905092915050565b600181565b6120fe6128f9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612163576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f784c8f4dbf0ffedd6e72c76501c545a70f8b203b30a26ce542bf92ba87c248a460405160405180910390a250565b6122066128f9565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fffd9582901c27177dbd18194ae8017f10d8b21f98a0da2ea5197e0b20dc13d7060405160405180910390a35050565b5f60026001540361230f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612306906146ee565b60405180910390fd5b600260018190555061231f612987565b5f612328612980565b90505f8303612363576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166123e3576040517f3dd1b30500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905080600101548461246e9190614739565b815f015410156124aa576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f81819054906101000a900467ffffffffffffffff16809291906124cf90614d84565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555092506040518060a001604052808373ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020014267ffffffffffffffff1681526020015f60ff1681525060075f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550604082015181600201556060820151816003015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a81548160ff021916908360ff16021790555090505083816001015f8282546126759190614739565b9250508190555083815f015f82825461268e9190614db3565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168467ffffffffffffffff167f3982217d4dab321c99285013d84866a371a94ca7872a79f94bb93adce8d1312f87426040516126ff929190614de6565b60405180910390a450506001808190555092915050565b60026001540361275b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612752906146ee565b60405180910390fd5b600260018190555061276b612987565b5f34036127a4576040517f2c5211c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6127ad612980565b90506127ce8173eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee34612a51565b60055f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f82d8a7fa258203875a3bedce06261f126eee7e7df2ee1cacbac12226772f0d603460405161285f9190613e54565b60405180910390a45060018081905550565b6128796128f9565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036128e9575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016128e09190613e2c565b60405180910390fd5b6128f2816131e9565b50565b5f81565b612901612980565b73ffffffffffffffffffffffffffffffffffffffff1661291f611ba1565b73ffffffffffffffffffffffffffffffffffffffff161461297e57612942612980565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016129759190613e2c565b60405180910390fd5b565b5f33905090565b61298f6115fc565b156129c6576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612a4b846323b872dd60e01b8585856040516024016129e993929190614e0d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061341c565b50505050565b5f60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20905081815f015f828254612ade9190614739565b9250508190555050505050565b5f60075f8467ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f2090505f816003015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff1603612b6d576040517f8d0fc1dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60ff168260ff16148015612b995750600160ff168160030160089054906101000a900460ff1660ff16145b15612bfb57612bf2815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360020154612a51565b60039150612ca4565b600160ff168260ff1614612c6257612c5d816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16825f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683600201546134e1565b612ca3565b8160ff16600160ff1614612ca2576040517f1e20256000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b5f60085f835f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f836001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2090508160020154816001015f828254612d7b9190614db3565b92505081905550816001015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16825f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168567ffffffffffffffff167f585899261aaf8efd5f03de7eb33dbd995b0b3adda857236dacd076f54f89c75d868660020154604051612e35929190614e42565b60405180910390a460075f8567ffffffffffffffff1667ffffffffffffffff1681526020019081526020015f205f5f82015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600282015f9055600382015f6101000a81549067ffffffffffffffff02191690556003820160086101000a81549060ff0219169055505050505050565b5f612f177f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6136e9565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612f466128f9565b50565b612f747f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435f1b6136f2565b5f015f9054906101000a900460ff1615612f9657612f91836136fb565b6130ae565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612ffe57506040513d601f19601f82011682018060405250810190612ffb9190614e7d565b60015b61303d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161303490614f18565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b81146130a1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309890614fa6565b60405180910390fd5b506130ad8383836137b1565b5b505050565b6130bb6137dc565b5f6130c4613121565b90505f815f015f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613109612980565b6040516131169190613e2c565b60405180910390a150565b5f7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300905090565b613150612980565b73ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146131e7576131ab612980565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016131de9190613e2c565b60405180910390fd5b565b5f6131f2613329565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b6132c2612987565b5f6132cb613121565b90506001815f015f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613311612980565b60405161331e9190613e2c565b60405180910390a150565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f5f8273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b5f60019054906101000a900460ff166133c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b790615034565b60405180910390fd5b6133c98161381c565b50565b5f60019054906101000a900460ff1661341a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161341190615034565b60405180910390fd5b565b5f61347d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166138e69092919063ffffffff16565b90505f815111156134dc578080602001905181019061349c919061507c565b6134db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016134d290615117565b60405180910390fd5b5b505050565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136075780471015613562576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff168260405161358790615162565b5f6040518083038185875af1925050503d805f81146135c1576040519150601f19603f3d011682016040523d82523d5f602084013e6135c6565b606091505b5050905080613601576040517ff4b3b1bc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b506136e4565b808373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016136419190613e2c565b602060405180830381865afa15801561365c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613680919061489c565b10156136b8576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6136e382828573ffffffffffffffffffffffffffffffffffffffff166138fd9092919063ffffffff16565b5b505050565b5f819050919050565b5f819050919050565b61370481613350565b613743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161373a906151e6565b60405180910390fd5b8061376f7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6136e9565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6137ba83613983565b5f825111806137c65750805b156137d7576137d583836139d2565b505b505050565b6137e46115fc565b61381a576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f60019054906101000a900460ff1661386a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161386190615034565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036138da575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016138d19190613e2c565b60405180910390fd5b6138e3816131e9565b50565b60606138f484845f856139ff565b90509392505050565b61397e8363a9059cbb60e01b848460405160240161391c929190615204565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061341c565b505050565b61398c816136fb565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b60606139f783836040518060600160405280602781526020016153f660279139613b0f565b905092915050565b606082471015613a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3b9061529b565b60405180910390fd5b613a4d85613350565b613a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a8390615303565b60405180910390fd5b5f5f8673ffffffffffffffffffffffffffffffffffffffff168587604051613ab49190615351565b5f6040518083038185875af1925050503d805f8114613aee576040519150601f19603f3d011682016040523d82523d5f602084013e613af3565b606091505b5091509150613b03828286613bd8565b92505050949350505050565b6060613b1a84613350565b613b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b50906153d7565b60405180910390fd5b5f5f8573ffffffffffffffffffffffffffffffffffffffff1685604051613b809190615351565b5f60405180830381855af49150503d805f8114613bb8576040519150601f19603f3d011682016040523d82523d5f602084013e613bbd565b606091505b5091509150613bcd828286613bd8565b925050509392505050565b60608315613be857829050613c37565b5f83511115613bfa5782518084602001fd5b816040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c2e9190614241565b60405180910390fd5b9392505050565b6040518060a001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f73ffffffffffffffffffffffffffffffffffffffff1681526020015f81526020015f67ffffffffffffffff1681526020015f60ff1681525090565b60405180604001604052805f81526020015f81525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b613cdc81613cca565b8114613ce6575f5ffd5b50565b5f81359050613cf781613cd3565b92915050565b5f60208284031215613d1257613d11613cc2565b5b5f613d1f84828501613ce9565b91505092915050565b5f8115159050919050565b613d3c81613d28565b82525050565b5f602082019050613d555f830184613d33565b92915050565b5f60ff82169050919050565b613d7081613d5b565b82525050565b5f602082019050613d895f830184613d67565b92915050565b5f819050919050565b613da181613d8f565b8114613dab575f5ffd5b50565b5f81359050613dbc81613d98565b92915050565b5f60208284031215613dd757613dd6613cc2565b5b5f613de484828501613dae565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613e1682613ded565b9050919050565b613e2681613e0c565b82525050565b5f602082019050613e3f5f830184613e1d565b92915050565b613e4e81613d8f565b82525050565b5f602082019050613e675f830184613e45565b92915050565b5f67ffffffffffffffff82169050919050565b613e8981613e6d565b8114613e93575f5ffd5b50565b5f81359050613ea481613e80565b92915050565b5f60208284031215613ebf57613ebe613cc2565b5b5f613ecc84828501613e96565b91505092915050565b613ede81613e0c565b8114613ee8575f5ffd5b50565b5f81359050613ef981613ed5565b92915050565b5f5f60408385031215613f1557613f14613cc2565b5b5f613f2285828601613eeb565b9250506020613f3385828601613dae565b9150509250929050565b5f60208284031215613f5257613f51613cc2565b5b5f613f5f84828501613eeb565b91505092915050565b613f7181613e0c565b82525050565b613f8081613d8f565b82525050565b613f8f81613e6d565b82525050565b613f9e81613d5b565b82525050565b60a082015f820151613fb85f850182613f68565b506020820151613fcb6020850182613f68565b506040820151613fde6040850182613f77565b506060820151613ff16060850182613f86565b5060808201516140046080850182613f95565b50505050565b5f60a08201905061401d5f830184613fa4565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6140718261402b565b810181811067ffffffffffffffff821117156140905761408f61403b565b5b80604052505050565b5f6140a2613cb9565b90506140ae8282614068565b919050565b5f67ffffffffffffffff8211156140cd576140cc61403b565b5b6140d68261402b565b9050602081019050919050565b828183375f83830152505050565b5f6141036140fe846140b3565b614099565b90508281526020810184848401111561411f5761411e614027565b5b61412a8482856140e3565b509392505050565b5f82601f83011261414657614145614023565b5b81356141568482602086016140f1565b91505092915050565b5f5f6040838503121561417557614174613cc2565b5b5f61418285828601613eeb565b925050602083013567ffffffffffffffff8111156141a3576141a2613cc6565b5b6141af85828601614132565b9150509250929050565b6141c281613cca565b82525050565b5f6020820190506141db5f8301846141b9565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f614213826141e1565b61421d81856141eb565b935061422d8185602086016141fb565b6142368161402b565b840191505092915050565b5f6020820190508181035f8301526142598184614209565b905092915050565b5f5ffd5b5f5ffd5b5f5f83601f84011261427e5761427d614023565b5b8235905067ffffffffffffffff81111561429b5761429a614261565b5b6020830191508360018202830111156142b7576142b6614265565b5b9250929050565b5f5f83601f8401126142d3576142d2614023565b5b8235905067ffffffffffffffff8111156142f0576142ef614261565b5b60208301915083604082028301111561430c5761430b614265565b5b9250929050565b5f5f5f5f5f6060868803121561432c5761432b613cc2565b5b5f86013567ffffffffffffffff81111561434957614348613cc6565b5b61435588828901614269565b9550955050602061436888828901613eeb565b935050604086013567ffffffffffffffff81111561438957614388613cc6565b5b614395888289016142be565b92509250509295509295909350565b5f5f83601f8401126143b9576143b8614023565b5b8235905067ffffffffffffffff8111156143d6576143d5614261565b5b6020830191508360208202830111156143f2576143f1614265565b5b9250929050565b61440281613d5b565b811461440c575f5ffd5b50565b5f8135905061441d816143f9565b92915050565b5f5f5f6040848603121561443a57614439613cc2565b5b5f84013567ffffffffffffffff81111561445757614456613cc6565b5b614463868287016143a4565b935093505060206144768682870161440f565b9150509250925092565b5f5f6040838503121561449657614495613cc2565b5b5f6144a385828601613e96565b92505060206144b48582860161440f565b9150509250929050565b6144c781613e6d565b82525050565b5f6020820190506144e05f8301846144be565b92915050565b5f60a0820190506144f95f830188613e1d565b6145066020830187613e1d565b6145136040830186613e45565b61452060608301856144be565b61452d6080830184613d67565b9695505050505050565b5f5f6040838503121561454d5761454c613cc2565b5b5f61455a85828601613eeb565b925050602061456b85828601613eeb565b9150509250929050565b5f6040820190506145885f830185613e45565b6145956020830184613e45565b9392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6145c08261459c565b6145ca81856145a6565b93506145da8185602086016141fb565b6145e38161402b565b840191505092915050565b5f6020820190508181035f83015261460681846145b6565b905092915050565b5f5f5f6060848603121561462557614624613cc2565b5b5f61463286828701613eeb565b935050602061464386828701613dae565b925050604061465486828701613eeb565b9150509250925092565b604082015f8201516146725f850182613f77565b5060208201516146856020850182613f77565b50505050565b5f60408201905061469e5f83018461465e565b92915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6146d8601f836141eb565b91506146e3826146a4565b602082019050919050565b5f6020820190508181035f830152614705816146cc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61474382613d8f565b915061474e83613d8f565b92508282019050808211156147665761476561470c565b5b92915050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f756768205f8201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b5f6147c6602c836141eb565b91506147d18261476c565b604082019050919050565b5f6020820190508181035f8301526147f3816147ba565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f756768205f8201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b5f614854602c836141eb565b915061485f826147fa565b604082019050919050565b5f6020820190508181035f83015261488181614848565b9050919050565b5f8151905061489681613d98565b92915050565b5f602082840312156148b1576148b0613cc2565b5b5f6148be84828501614888565b91505092915050565b7f555550535570677261646561626c653a206d757374206e6f742062652063616c5f8201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b5f6149216038836141eb565b915061492c826148c7565b604082019050919050565b5f6020820190508181035f83015261494e81614915565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806149d057607f821691505b6020821081036149e3576149e261498c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614a457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614a0a565b614a4f8683614a0a565b95508019841693508086168417925050509392505050565b5f819050919050565b5f614a8a614a85614a8084613d8f565b614a67565b613d8f565b9050919050565b5f819050919050565b614aa383614a70565b614ab7614aaf82614a91565b848454614a16565b825550505050565b5f5f905090565b614ace614abf565b614ad9818484614a9a565b505050565b5b81811015614afc57614af15f82614ac6565b600181019050614adf565b5050565b601f821115614b4157614b12816149e9565b614b1b846149fb565b81016020851015614b2a578190505b614b3e614b36856149fb565b830182614ade565b50505b505050565b5f82821c905092915050565b5f614b615f1984600802614b46565b1980831691505092915050565b5f614b798383614b52565b9150826002028217905092915050565b614b938383614982565b67ffffffffffffffff811115614bac57614bab61403b565b5b614bb682546149b9565b614bc1828285614b00565b5f601f831160018114614bee575f8415614bdc578287013590505b614be68582614b6e565b865550614c4d565b601f198416614bfc866149e9565b5f5b82811015614c2357848901358255600182019150602085019450602081019050614bfe565b86831015614c405784890135614c3c601f891682614b52565b8355505b6001600288020188555050505b50505050505050565b5f614c6183856145a6565b9350614c6e8385846140e3565b614c778361402b565b840190509392505050565b5f6020820190508181035f830152614c9b818486614c56565b90509392505050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c7265615f8201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b5f614cfe602e836141eb565b9150614d0982614ca4565b604082019050919050565b5f6020820190508181035f830152614d2b81614cf2565b9050919050565b5f819050919050565b5f614d55614d50614d4b84614d32565b614a67565b613d5b565b9050919050565b614d6581614d3b565b82525050565b5f602082019050614d7e5f830184614d5c565b92915050565b5f614d8e82613e6d565b915067ffffffffffffffff8203614da857614da761470c565b5b600182019050919050565b5f614dbd82613d8f565b9150614dc883613d8f565b9250828203905081811115614de057614ddf61470c565b5b92915050565b5f604082019050614df95f830185613e45565b614e0660208301846144be565b9392505050565b5f606082019050614e205f830186613e1d565b614e2d6020830185613e1d565b614e3a6040830184613e45565b949350505050565b5f604082019050614e555f830185613d67565b614e626020830184613e45565b9392505050565b5f81519050614e7781613cd3565b92915050565b5f60208284031215614e9257614e91613cc2565b5b5f614e9f84828501614e69565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e746174695f8201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b5f614f02602e836141eb565b9150614f0d82614ea8565b604082019050919050565b5f6020820190508181035f830152614f2f81614ef6565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f785f8201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b5f614f906029836141eb565b9150614f9b82614f36565b604082019050919050565b5f6020820190508181035f830152614fbd81614f84565b9050919050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420695f8201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b5f61501e602b836141eb565b915061502982614fc4565b604082019050919050565b5f6020820190508181035f83015261504b81615012565b9050919050565b61505b81613d28565b8114615065575f5ffd5b50565b5f8151905061507681615052565b92915050565b5f6020828403121561509157615090613cc2565b5b5f61509e84828501615068565b91505092915050565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e5f8201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b5f615101602a836141eb565b915061510c826150a7565b604082019050919050565b5f6020820190508181035f83015261512e816150f5565b9050919050565b5f81905092915050565b50565b5f61514d5f83615135565b91506151588261513f565b5f82019050919050565b5f61516c82615142565b9150819050919050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e5f8201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b5f6151d0602d836141eb565b91506151db82615176565b604082019050919050565b5f6020820190508181035f8301526151fd816151c4565b9050919050565b5f6040820190506152175f830185613e1d565b6152246020830184613e45565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f5f8201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b5f6152856026836141eb565b91506152908261522b565b604082019050919050565b5f6020820190508181035f8301526152b281615279565b9050919050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000005f82015250565b5f6152ed601d836141eb565b91506152f8826152b9565b602082019050919050565b5f6020820190508181035f83015261531a816152e1565b9050919050565b5f61532b8261459c565b6153358185615135565b93506153458185602086016141fb565b80840191505092915050565b5f61535c8284615321565b915081905092915050565b7f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f5f8201527f6e74726163740000000000000000000000000000000000000000000000000000602082015250565b5f6153c16026836141eb565b91506153cc82615367565b604082019050919050565b5f6020820190508181035f8301526153ee816153b5565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122091476fbd4ab8c99d1b91b288ed421746f4fd571ae98703acea4bc607ab122f4e64736f6c634300081c0033
Loading...
Loading
Loading...
Loading
Loading...
Loading
Loading...
Loading
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.

