Source Code
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Source Code (Solidity Standard Json-Input format)
Contract Security Audit
No Contract Security Audit SubmittedSubmit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AccessControlBadConfirmation","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"name":"AccessControlUnauthorizedAccount","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxDeposit","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxMint","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxRedeem","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"name":"ERC4626ExceededMaxWithdraw","type":"error"},{"inputs":[],"name":"InvalidInitialization","type":"error"},{"inputs":[],"name":"NotInitializing","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"SafeERC20FailedOperation","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint64","name":"version","type":"uint64"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"limit","type":"uint256"}],"name":"LimitSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"assets","type":"uint256"}],"name":"Pull","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"assets","type":"uint256"},{"components":[{"internalType":"bytes32","name":"guid","type":"bytes32"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"components":[{"internalType":"uint256","name":"nativeFee","type":"uint256"},{"internalType":"uint256","name":"lzTokenFee","type":"uint256"}],"internalType":"struct MessagingFee","name":"fee","type":"tuple"}],"indexed":false,"internalType":"struct MessagingReceipt","name":"msgReceipt","type":"tuple"},{"components":[{"internalType":"uint256","name":"amountSentLD","type":"uint256"},{"internalType":"uint256","name":"amountReceivedLD","type":"uint256"}],"indexed":false,"internalType":"struct OFTReceipt","name":"oftReceipt","type":"tuple"}],"name":"PushToTarget","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[{"components":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"mellowOFTAdapter","type":"address"},{"internalType":"uint256","name":"epochDuration","type":"uint256"},{"internalType":"uint32","name":"targetEndpointId","type":"uint32"},{"internalType":"bytes32","name":"targetCoreAddress","type":"bytes32"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"oracleMaxAge","type":"uint256"},{"internalType":"address","name":"pushRoleHolder","type":"address"},{"internalType":"address","name":"setWithdrawalDelayRoleHolder","type":"address"},{"internalType":"address","name":"setValueRoleHolder","type":"address"},{"internalType":"address","name":"setMaxAgeRoleHolder","type":"address"},{"internalType":"address","name":"setLimitRoleHolder","type":"address"}],"indexed":false,"internalType":"struct ISourceCoreStorage.InitParams","name":"params","type":"tuple"},{"indexed":false,"internalType":"contract IWithdrawalQueue","name":"withdrawalQueue","type":"address"},{"indexed":false,"internalType":"contract IOracle","name":"oracle","type":"address"}],"name":"SourceCoreStorageInitialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"sender","type":"address"},{"indexed":true,"internalType":"address","name":"receiver","type":"address"},{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"assets","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"Withdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"uint256","name":"shares","type":"uint256"}],"name":"WithdrawalRequested","type":"event"},{"inputs":[],"name":"D18","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PUSH_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SET_LIMIT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"asset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"convertToAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"convertToShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"getRoleMember","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMemberCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleMembers","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"address","name":"mellowOFTAdapter","type":"address"},{"internalType":"uint256","name":"epochDuration","type":"uint256"},{"internalType":"uint32","name":"targetEndpointId","type":"uint32"},{"internalType":"bytes32","name":"targetCoreAddress","type":"bytes32"},{"internalType":"uint256","name":"limit","type":"uint256"},{"internalType":"uint256","name":"oracleMaxAge","type":"uint256"},{"internalType":"address","name":"pushRoleHolder","type":"address"},{"internalType":"address","name":"setWithdrawalDelayRoleHolder","type":"address"},{"internalType":"address","name":"setValueRoleHolder","type":"address"},{"internalType":"address","name":"setMaxAgeRoleHolder","type":"address"},{"internalType":"address","name":"setLimitRoleHolder","type":"address"}],"internalType":"struct ISourceCoreStorage.InitParams","name":"params","type":"tuple"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"maxDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"maxMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"maxWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"}],"name":"mint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oftAdapter","outputs":[{"internalType":"contract IMellowOFTAdapter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"oracle","outputs":[{"internalType":"contract IOracle","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewMint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"previewRedeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"previewWithdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"assets","type":"uint256"}],"name":"pull","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pushToTarget","outputs":[{"internalType":"uint256","name":"assets","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"redeem","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"}],"name":"requestWithdrawal","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"limit_","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"targetCoreAddress","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"targetEndpointId","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalAssets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"assets","type":"uint256"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawalQueue","outputs":[{"internalType":"contract IWithdrawalQueue","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60a060405234801561000f575f80fd5b50610018610021565b336080526100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051614cd06100eb5f395f6112250152614cd05ff3fe6080604052600436106102a5575f3560e01c80639010d07c1161016f578063b7aff8ca116100d8578063cf70adb911610092578063dd48366b1161006d578063dd48366b14610887578063dd62ed3e146108ba578063e3f5aeb9146108d9578063ef8b30f7146107e4575f80fd5b8063cf70adb914610841578063d547741f14610849578063d905777e14610868575f80fd5b8063b7aff8ca14610787578063ba087652146107a6578063c63d75b6146107c5578063c6e6f592146107e4578063ca15c87314610803578063ce96cb7714610822575f80fd5b8063a3246ad311610129578063a3246ad314610698578063a4d66daf146106c4578063a9059cbb146106f7578063b2d147f814610716578063b3d7f6b914610749578063b460af9414610768575f80fd5b80639010d07c146105f557806391d148541461061457806394bf804d1461063357806395d89b41146106525780639ee679e814610666578063a217fddf14610685575f80fd5b8063313ce567116102115780634cdad506116101cb5780634cdad5061461035357806364c0ca5c146105485780636de8eeb9146105675780636e553f65146105a357806370a08231146105c25780637dc0d1d0146105e1575f80fd5b8063313ce5671461044e578063316615c71461047457806336568abe146104ca57806337d5fe99146104e957806338d52e0f14610515578063402d267d14610529575f80fd5b80630a28a477116102625780630a28a4771461039157806318160ddd146103b057806323b872dd146103d0578063248a9ca3146103ef57806327ea6f2b1461040e5780632f2ff15d1461042f575f80fd5b806301e1d114146102a957806301ffc9a7146102d05780630296d875146102ff57806306fdde031461033257806307a2d13a14610353578063095ea7b314610372575b5f80fd5b3480156102b4575f80fd5b506102bd6108f4565b6040519081526020015b60405180910390f35b3480156102db575f80fd5b506102ef6102ea366004612dd1565b610987565b60405190151581526020016102c7565b34801561030a575f80fd5b506102bd7f96a1da749a4a26fdd253960e5fda95d5ef9d6c3050dfb2b8f866a7a1559c17bd81565b34801561033d575f80fd5b506103466109b1565b6040516102c79190612e45565b34801561035e575f80fd5b506102bd61036d366004612e57565b610a71565b34801561037d575f80fd5b506102ef61038c366004612e92565b610a7c565b34801561039c575f80fd5b506102bd6103ab366004612e57565b610a93565b3480156103bb575f80fd5b505f80516020614c1b833981519152546102bd565b3480156103db575f80fd5b506102ef6103ea366004612ebc565b610a9f565b3480156103fa575f80fd5b506102bd610409366004612e57565b610ac4565b348015610419575f80fd5b5061042d610428366004612e57565b610ae4565b005b34801561043a575f80fd5b5061042d610449366004612efa565b610b6b565b348015610459575f80fd5b50610462610b8d565b60405160ff90911681526020016102c7565b34801561047f575f80fd5b506104b57feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded0254600160a01b900463ffffffff1690565b60405163ffffffff90911681526020016102c7565b3480156104d5575f80fd5b5061042d6104e4366004612efa565b610bbc565b3480156104f4575f80fd5b506104fd610bf4565b6040516001600160a01b0390911681526020016102c7565b348015610520575f80fd5b506104fd610c22565b348015610534575f80fd5b506102bd610543366004612f28565b610c3d565b348015610553575f80fd5b5061042d610562366004612f43565b610ca5565b348015610572575f80fd5b507feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded01546001600160a01b03166104fd565b3480156105ae575f80fd5b506102bd6105bd366004612efa565b610d89565b3480156105cd575f80fd5b506102bd6105dc366004612f28565b610e09565b3480156105ec575f80fd5b506104fd610e2f565b348015610600575f80fd5b506104fd61060f366004612f43565b610e5d565b34801561061f575f80fd5b506102ef61062e366004612efa565b610e82565b34801561063e575f80fd5b506102bd61064d366004612efa565b610eb8565b34801561065d575f80fd5b50610346610f20565b348015610671575f80fd5b5061042d610680366004612e57565b610f5e565b348015610690575f80fd5b506102bd5f81565b3480156106a3575f80fd5b506106b76106b2366004612e57565b6110d3565b6040516102c79190612f63565b3480156106cf575f80fd5b507feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded04546102bd565b348015610702575f80fd5b506102ef610711366004612e92565b6110fc565b348015610721575f80fd5b506102bd7fde376a1cfb023748af2eb0ebb6132b3c122c17f3646371be17b6e138b7a0e8fb81565b348015610754575f80fd5b506102bd610763366004612e57565b611109565b348015610773575f80fd5b506102bd610782366004612faf565b611115565b348015610792575f80fd5b5061042d6107a1366004612fee565b61116b565b3480156107b1575f80fd5b506102bd6107c0366004612faf565b6112f1565b3480156107d0575f80fd5b506102bd6107df366004612f28565b61133e565b3480156107ef575f80fd5b506102bd6107fe366004612e57565b611361565b34801561080e575f80fd5b506102bd61081d366004612e57565b61136c565b34801561082d575f80fd5b506102bd61083c366004612f28565b611390565b6102bd6113a3565b348015610854575f80fd5b5061042d610863366004612efa565b6117b8565b348015610873575f80fd5b506102bd610882366004612f28565b6117d4565b348015610892575f80fd5b507feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded03546102bd565b3480156108c5575f80fd5b506102bd6108d4366004613026565b6117de565b3480156108e4575f80fd5b506102bd670de0b6b3a764000081565b5f61098261090d5f80516020614c1b8339815191525490565b610915610e2f565b6001600160a01b031663209652556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109749190613052565b670de0b6b3a7640000611827565b905090565b5f6001600160e01b03198216635a05180f60e01b14806109ab57506109ab826118dd565b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f80516020614bfb833981519152916109ef90613069565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90613069565b8015610a665780601f10610a3d57610100808354040283529160200191610a66565b820191905f5260205f20905b815481529060010190602001808311610a4957829003601f168201915b505050505091505090565b5f6109ab825f611911565b5f33610a89818585611955565b5060019392505050565b5f6109ab826001611962565b5f33610aac85828561199d565b610ab78585856119e8565b60019150505b9392505050565b5f9081525f80516020614c3b833981519152602052604090206001015490565b7f96a1da749a4a26fdd253960e5fda95d5ef9d6c3050dfb2b8f866a7a1559c17bd610b0e81611a45565b817feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded00600401556040518281527f7d1a55ee29901de9a5e2d20f853f61213bff6006324e6f9b275c9e46b031d6169060200160405180910390a15050565b610b7482610ac4565b610b7d81611a45565b610b878383611a4f565b50505050565b5f805f80516020614c5b83398151915290505f8154610bb69190600160a01b900460ff166130b5565b91505090565b6001600160a01b0381163314610be55760405163334bd91960e11b815260040160405180910390fd5b610bef8282611a91565b505050565b7feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded00546001600160a01b031690565b5f80516020614c5b833981519152546001600160a01b031690565b5f80610c677feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded045490565b90505f198103610c7a57505f1992915050565b5f610c836108f4565b905080821015610c93575f610c9d565b610c9d81836130ce565b949350505050565b33610cae610bf4565b6001600160a01b0316816001600160a01b031614610d255760405162461bcd60e51b815260206004820152602960248201527f536f75726365436f72653a206f6e6c79207769746864726177616c51756575656044820152680818d85b881c1d5b1b60ba1b60648201526084015b60405180910390fd5b610d2f8184611aca565b610d4c8183610d3c610c22565b6001600160a01b03169190611b02565b8183826001600160a01b03167f1124c1cb6d2b0dd5018aac5a4467e5f6cedd2ccd2069f454266ff7ddb83de5b560405160405180910390a4505050565b5f610d92611b61565b610d9a610bf4565b6001600160a01b031663ecf143cf6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610dd1575f80fd5b505af1158015610de3573d5f803e3d5ffd5b50505050610df18383611b98565b90506109ab60015f80516020614c7b83398151915255565b6001600160a01b03165f9081525f80516020614bfb833981519152602052604090205490565b7feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded02546001600160a01b031690565b5f8281525f80516020614bdb833981519152602081905260408220610c9d9084611be4565b5f9182525f80516020614c3b833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610ec1611b61565b610ec9610bf4565b6001600160a01b031663ecf143cf6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610f00575f80fd5b505af1158015610f12573d5f803e3d5ffd5b50505050610df18383611bef565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f80516020614bfb833981519152916109ef90613069565b610f66611b61565b610f6e610bf4565b6001600160a01b031663ecf143cf6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610fa5575f80fd5b505af1158015610fb7573d5f803e3d5ffd5b50505050805f0361100a5760405162461bcd60e51b815260206004820152601760248201527f536f75726365436f72653a207a65726f207368617265730000000000000000006044820152606401610d1c565b3361101d81611017610bf4565b846119e8565b611025610bf4565b60405163c8c01a5560e01b81526001600160a01b03838116600483015260248201859052919091169063c8c01a55906044015f604051808303815f87803b15801561106e575f80fd5b505af1158015611080573d5f803e3d5ffd5b50506040518492506001600160a01b03841691507fe670e4e82118d22a1f9ee18920455ebc958bae26a90a05d31d3378788b1b0e44905f90a3506110d060015f80516020614c7b83398151915255565b50565b5f8181525f80516020614bdb8339815191526020819052604090912060609190610abd90611c3b565b5f33610a898185856119e8565b5f6109ab826001611911565b5f8061112083611390565b90508085111561114957828582604051633fa733bb60e21b8152600401610d1c939291906130e1565b5f61115386610a93565b90506111623386868985611c47565b95945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156111b05750825b90505f8267ffffffffffffffff1660011480156111cc5750303b155b9050811580156111da575080155b156111f85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561122257845460ff60401b1916600160401b1785555b337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161461129a5760405162461bcd60e51b815260206004820152601860248201527f536f75726365436f72653a206e6f74206465706c6f79657200000000000000006044820152606401610d1c565b6112a386611c8f565b83156112e957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f806112fc836117d4565b90508085111561132557828582604051632e52afbb60e21b8152600401610d1c939291906130e1565b5f61132f86610a71565b9050611162338686848a611c47565b5f8061134983610c3d565b90505f19810361135c57505f1992915050565b610abd815b5f6109ab825f611962565b5f8181525f80516020614bdb833981519152602081905260408220610abd90612351565b5f6109ab61139d83610e09565b5f611911565b5f6113ac611b61565b6113b4610bf4565b6001600160a01b031663ecf143cf6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156113eb575f80fd5b505af11580156113fd573d5f803e3d5ffd5b505050507fde376a1cfb023748af2eb0ebb6132b3c122c17f3646371be17b6e138b7a0e8fb61142b81611a45565b5f611434610c22565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561147b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149f9190613052565b90505f6114aa610bf4565b6001600160a01b0316633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115099190613052565b9050801561153e575f61151b82610a71565b9050828110611530575f95505050505061179e565b61153a81846130ce565b9250505b5f6115707feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded01546001600160a01b031690565b60405163180ef33160e31b8152600481018590529091506001600160a01b0382169063c077998890602401602060405180830381865afa1580156115b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115da9190613052565b9550855f036115ef575f95505050505061179e565b6116036001600160a01b038516828861235a565b5f80826001600160a01b031663c7c7f5b3346040518060e001604052806116557feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded0254600160a01b900463ffffffff1690565b63ffffffff1681526020016116887feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded035490565b815260208082018e905260408083018f905280515f808252818401835260608501919091528151818152808401835260808501528151818152808401835260a090940193909352805180820182523481529182019290925290516001600160e01b031960e086901b1681526117039291903390600401613116565b60c06040518083038185885af115801561171f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611744919061321b565b909250905061175d6001600160a01b038716845f6123dc565b877f03a86efa44d8d4b7e061e119af6772039c42fa1ae444c2f2adeff44015ead8bd838360405161178f9291906132ab565b60405180910390a25050505050505b506117b560015f80516020614c7b83398151915255565b90565b6117c182610ac4565b6117ca81611a45565b610b878383611a91565b5f6109ab82610e09565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f838302815f1985870982811083820303915050805f0361185b57838281611851576118516132fd565b0492505050610abd565b80841161187257611872600385150260111861246b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f6001600160e01b03198216637965db0b60e01b14806109ab57506301ffc9a760e01b6001600160e01b03198316146109ab565b5f610abd61191d6108f4565b611928906001613311565b6119335f600a613404565b5f80516020614c1b8339815191525461194c9190613311565b8591908561247c565b610bef83838360016124be565b5f610abd61197182600a613404565b5f80516020614c1b8339815191525461198a9190613311565b6119926108f4565b61194c906001613311565b5f6119a884846117de565b90505f19811015610b8757818110156119da57828183604051637dc7a0d960e11b8152600401610d1c939291906130e1565b610b8784848484035f6124be565b6001600160a01b038316611a1157604051634b637e8f60e11b81525f6004820152602401610d1c565b6001600160a01b038216611a3a5760405163ec442f0560e01b81525f6004820152602401610d1c565b610bef8383836125a2565b6110d081336126c8565b5f5f80516020614bdb83398151915281611a698585612701565b90508015610c9d575f858152602083905260409020611a8890856127a2565b50949350505050565b5f5f80516020614bdb83398151915281611aab85856127b6565b90508015610c9d575f858152602083905260409020611a88908561282f565b6001600160a01b038216611af357604051634b637e8f60e11b81525f6004820152602401610d1c565b611afe825f836125a2565b5050565b6040516001600160a01b03838116602483015260448201839052610bef91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612843565b5f80516020614c7b833981519152805460011901611b9257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f80611ba383610c3d565b905080841115611bcc57828482604051633c8097d960e11b8152600401610d1c939291906130e1565b5f611bd685611361565b9050610c9d338587846128af565b5f610abd838361292c565b5f80611bfa8361133e565b905080841115611c235782848260405163284ff66760e01b8152600401610d1c939291906130e1565b5f611c2d85611109565b9050610c9d338583886128af565b60605f610abd83612952565b60405162461bcd60e51b815260206004820152601b60248201527f536f75726365436f72653a206e6f7420696d706c656d656e74656400000000006044820152606401610d1c565b611c976129ab565b5f611ca56020830183612f28565b6001600160a01b03161480611cd157505f611cc66080830160608401612f28565b6001600160a01b0316145b80611cde575060c0810135155b15611d2b5760405162461bcd60e51b815260206004820152601f60248201527f536f75726365436f726553746f726167653a207a65726f2061646472657373006044820152606401610d1c565b60808101351580611d4f5750611d4760c0820160a08301613425565b63ffffffff16155b80611d5d5750610100810135155b15611daa5760405162461bcd60e51b815260206004820152601d60248201527f536f75726365436f726553746f726167653a207a65726f2076616c75650000006044820152606401610d1c565b5f611dbb6080830160608401612f28565b6001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1a919061343e565b9050611ea6611e2c6020840184613459565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611e6d925050506040850185613459565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506129f692505050565b611eaf81612a08565b611ec55f611ec06020850185612f28565b611a4f565b505f7feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded009050826080013582604051611efc90612db7565b9182526001600160a01b03166020820152604001604051809103905ff080158015611f29573d5f803e3d5ffd5b5081546001600160a01b0319166001600160a01b0391909116178155611f556080840160608501612f28565b6001820180546001600160a01b0319166001600160a01b0392909216918217905560405163189acdbd60e31b815230600482015263c4d66de8906024015f604051808303815f87803b158015611fa9575f80fd5b505af1158015611fbb573d5f803e3d5ffd5b5050505030670de0b6b3a7640000846101000135604051611fdb90612dc4565b611fe7939291906130e1565b604051809103905ff080158015612000573d5f803e3d5ffd5b506002820180546001600160a01b0319166001600160a01b039290921691909117905561203360c0840160a08501613425565b60028201805463ffffffff92909216600160a01b0263ffffffff60a01b1990921691909117905560c0830135600382015560e083013560048201555f61208161014085016101208601612f28565b6001600160a01b0316146120c7576120c57fde376a1cfb023748af2eb0ebb6132b3c122c17f3646371be17b6e138b7a0e8fb611ec061014086016101208701612f28565b505b5f6120da61016085016101408601612f28565b6001600160a01b031614612166576121646120f3610bf4565b6001600160a01b031663293259e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121529190613052565b611ec061016086016101408701612f28565b505b5f61217961018085016101608601612f28565b6001600160a01b03161461220557612203612192610e2f565b6001600160a01b03166343a642c36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f19190613052565b611ec061018086016101608701612f28565b505b5f6122186101a085016101808601612f28565b6001600160a01b0316146122a4576122a2612231610e2f565b6001600160a01b031663243ddf276040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122909190613052565b611ec06101a086016101808701612f28565b505b5f6122b76101c085016101a08601612f28565b6001600160a01b0316146122fd576122fb7f96a1da749a4a26fdd253960e5fda95d5ef9d6c3050dfb2b8f866a7a1559c17bd611ec06101c086016101a08701612f28565b505b805460028201546040517f520cdf6fdeae6c5a875815838d1377e6099d0cbeacd09cf57486b679bd0b3f3e926123449287926001600160a01b03928316929091169061350d565b60405180910390a1505050565b5f6109ab825490565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156123a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cb9190613052565b9050610b8784846123dc8585613311565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261242d8482612a19565b610b87576040516001600160a01b0384811660248301525f604483015261246191869182169063095ea7b390606401611b2f565b610b878482612843565b634e487b715f52806020526024601cfd5b5f6124a961248983612a62565b80156124a457505f848061249f5761249f6132fd565b868809115b151590565b6124b4868686611827565b6111629190613311565b5f80516020614bfb8339815191526001600160a01b0385166124f55760405163e602df0560e01b81525f6004820152602401610d1c565b6001600160a01b03841661251e57604051634a1406b160e11b81525f6004820152602401610d1c565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561259b57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161259291815260200190565b60405180910390a35b5050505050565b5f80516020614bfb8339815191526001600160a01b0384166125dc5781816002015f8282546125d19190613311565b909155506126399050565b6001600160a01b0384165f908152602082905260409020548281101561261b5784818460405163391434e360e21b8152600401610d1c939291906130e1565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316612657576002810180548390039055612675565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126ba91815260200190565b60405180910390a350505050565b6126d28282610e82565b611afe5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610d1c565b5f5f80516020614c3b83398151915261271a8484610e82565b612799575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561274f3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109ab565b5f9150506109ab565b5f610abd836001600160a01b038416612a8e565b5f5f80516020614c3b8339815191526127cf8484610e82565b15612799575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109ab565b5f610abd836001600160a01b038416612ada565b5f8060205f8451602086015f885af180612862576040513d5f823e3d81fd5b50505f513d91508115612879578060011415612886565b6001600160a01b0384163b155b15610b8757604051635274afe760e01b81526001600160a01b0385166004820152602401610d1c565b5f80516020614c5b83398151915280546128d4906001600160a01b0316863086612bb4565b6128de8483612bed565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051612592929190918252602082015260400190565b5f825f018281548110612941576129416136c4565b905f5260205f200154905092915050565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561299f57602002820191905f5260205f20905b81548152602001906001019080831161298b575b50505050509050919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129f457604051631afcd79f60e31b815260040160405180910390fd5b565b6129fe6129ab565b611afe8282612c21565b612a106129ab565b6110d081612c71565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612a5857508115612a4a5780600114612a58565b5f866001600160a01b03163b115b9695505050505050565b5f6002826003811115612a7757612a776136d8565b612a8191906136ec565b60ff166001149050919050565b5f818152600183016020526040812054612ad357508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556109ab565b505f6109ab565b5f8181526001830160205260408120548015612799575f612afc6001836130ce565b85549091505f90612b0f906001906130ce565b9050808214612b6e575f865f018281548110612b2d57612b2d6136c4565b905f5260205f200154905080875f018481548110612b4d57612b4d6136c4565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080612b7f57612b7f613719565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109ab565b6040516001600160a01b038481166024830152838116604483015260648201839052610b879186918216906323b872dd90608401611b2f565b6001600160a01b038216612c165760405163ec442f0560e01b81525f6004820152602401610d1c565b611afe5f83836125a2565b612c296129ab565b5f80516020614bfb8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03612c628482613771565b5060048101610b878382613771565b612c796129ab565b5f80516020614c5b8339815191525f80612c9284612ce1565b9150915081612ca2576012612ca4565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b03871691612d279161382d565b5f60405180830381855afa9150503d805f8114612d5f576040519150601f19603f3d011682016040523d82523d5f602084013e612d64565b606091505b5091509150818015612d7857506020815110155b15612dab575f81806020019051810190612d929190613052565b905060ff8111612da9576001969095509350505050565b505b505f9485945092505050565b610e268061384983390190565b61056c8061466f83390190565b5f60208284031215612de1575f80fd5b81356001600160e01b031981168114610abd575f80fd5b5f5b83811015612e12578181015183820152602001612dfa565b50505f910152565b5f8151808452612e31816020860160208601612df8565b601f01601f19169290920160200192915050565b602081525f610abd6020830184612e1a565b5f60208284031215612e67575f80fd5b5035919050565b6001600160a01b03811681146110d0575f80fd5b8035612e8d81612e6e565b919050565b5f8060408385031215612ea3575f80fd5b8235612eae81612e6e565b946020939093013593505050565b5f805f60608486031215612ece575f80fd5b8335612ed981612e6e565b92506020840135612ee981612e6e565b929592945050506040919091013590565b5f8060408385031215612f0b575f80fd5b823591506020830135612f1d81612e6e565b809150509250929050565b5f60208284031215612f38575f80fd5b8135610abd81612e6e565b5f8060408385031215612f54575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b81811015612fa35783516001600160a01b031683529284019291840191600101612f7e565b50909695505050505050565b5f805f60608486031215612fc1575f80fd5b833592506020840135612fd381612e6e565b91506040840135612fe381612e6e565b809150509250925092565b5f60208284031215612ffe575f80fd5b813567ffffffffffffffff811115613014575f80fd5b82016101c08185031215610abd575f80fd5b5f8060408385031215613037575f80fd5b823561304281612e6e565b91506020830135612f1d81612e6e565b5f60208284031215613062575f80fd5b5051919050565b600181811c9082168061307d57607f821691505b60208210810361309b57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156109ab576109ab6130a1565b818103818111156109ab576109ab6130a1565b6001600160a01b039390931683526020830191909152604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b6080815263ffffffff8451166080820152602084015160a0820152604084015160c0820152606084015160e08201525f608085015160e0610100840152613161610160840182612e1a565b905060a0860151607f1980858403016101208601526131808383612e1a565b925060c0880151915080858403016101408601525061319f8282612e1a565b925050506131ba602083018580518252602090810151910152565b6001600160a01b0383166060830152610c9d565b5f604082840312156131de575f80fd5b6040516040810181811067ffffffffffffffff8211171561320157613201613102565b604052825181526020928301519281019290925250919050565b5f8082840360c081121561322d575f80fd5b608081121561323a575f80fd5b506040516060810167ffffffffffffffff828210818311171561325f5761325f613102565b816040528551835260208601519150808216821461327b575f80fd5b50602082015261328e85604086016131ce565b604082015291506132a284608085016131ce565b90509250929050565b5f60c0820190508351825267ffffffffffffffff602085015116602083015260408401516132e6604084018280518252602090810151910152565b5082516080830152602083015160a0830152610abd565b634e487b7160e01b5f52601260045260245ffd5b808201808211156109ab576109ab6130a1565b600181815b8085111561335e57815f1904821115613344576133446130a1565b8085161561335157918102915b93841c9390800290613329565b509250929050565b5f82613374575060016109ab565b8161338057505f6109ab565b816001811461339657600281146133a0576133bc565b60019150506109ab565b60ff8411156133b1576133b16130a1565b50506001821b6109ab565b5060208310610133831016604e8410600b84101617156133df575081810a6109ab565b6133e98383613324565b805f19048211156133fc576133fc6130a1565b029392505050565b5f610abd60ff841683613366565b803563ffffffff81168114612e8d575f80fd5b5f60208284031215613435575f80fd5b610abd82613412565b5f6020828403121561344e575f80fd5b8151610abd81612e6e565b5f808335601e1984360301811261346e575f80fd5b83018035915067ffffffffffffffff821115613488575f80fd5b60200191503681900382131561349c575f80fd5b9250929050565b5f808335601e198436030181126134b8575f80fd5b830160208101925035905067ffffffffffffffff8111156134d7575f80fd5b80360382131561349c575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6060815261352e6060820161352186612e82565b6001600160a01b03169052565b5f61353c60208601866134a3565b6101c0806080860152613554610220860183856134e5565b925061356360408901896134a3565b868503605f190160a0880152925061357c8484836134e5565b93505061358b60608901612e82565b6001600160a01b03811660c08701529150608088013560e08601526135b260a08901613412565b91506101006135c88187018463ffffffff169052565b610120925060c08901358387015261014060e08a013581880152610160828b0135818901526135f8858c01612e82565b94506101809250613613838901866001600160a01b03169052565b61361e828c01612e82565b94506101a09150613639828901866001600160a01b03169052565b613644818c01612e82565b94505061365b838801856001600160a01b03169052565b613666828b01612e82565b6001600160a01b0381166101e08901529350613683818b01612e82565b935050505061369e6102008501826001600160a01b03169052565b506001600160a01b038516602084015290506001600160a01b0383166040830152610c9d565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061370a57634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b634e487b7160e01b5f52603160045260245ffd5b601f821115610bef57805f5260205f20601f840160051c810160208510156137525750805b601f840160051c820191505b8181101561259b575f815560010161375e565b815167ffffffffffffffff81111561378b5761378b613102565b61379f816137998454613069565b8461372d565b602080601f8311600181146137d2575f84156137bb5750858301515b5f19600386901b1c1916600185901b1785556112e9565b5f85815260208120601f198616915b82811015613800578886015182559484019460019091019084016137e1565b508582101561381d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f825161383e818460208701612df8565b919091019291505056fe6101006040525f60015562093a8060025534801561001b575f80fd5b50604051610e26380380610e2683398101604081905261003a9161005a565b60015f55336080526001600160a01b031660a05260c0524260e052610094565b5f806040838503121561006b575f80fd5b825160208401519092506001600160a01b0381168114610089575f80fd5b809150509250929050565b60805160a05160c05160e051610d126101145f395f81816101eb015281816102e2015261074f01525f8181610186015281816102be015261071501525f818161013e01528181610684015261087d01525f818161022c015281816103290152818161049f015281816107c801528181610850015261091d0152610d125ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c8063906bf4c111610093578063d2c13da511610063578063d2c13da514610263578063ddd5e1b214610276578063e78307ca14610289578063ecf143cf146102b3575f80fd5b8063906bf4c114610215578063a7ab69611461021e578063bc6e4c1d14610227578063c8c01a551461024e575f80fd5b806357a858fc116100ce57806357a858fc146101a85780635cc07076146101c75780637358c57a146101e6578063766718081461020d575f80fd5b8063293259e6146100ff57806338d52e0f146101395780633a98ef39146101785780634ff0876a14610181575b5f80fd5b6101267f6ba3266b6b024a2f2f534b52db30d3c928ad457154b7b52aa79c6b2ba256fb2981565b6040519081526020015b60405180910390f35b6101607f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b61012660065481565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101266101b6366004610b9e565b60056020525f908152604090205481565b6101266101d5366004610b9e565b60046020525f908152604090205481565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101266102bb565b61012660015481565b61012660025481565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b61026161025c366004610bd0565b610316565b005b610261610271366004610b9e565b610461565b610126610284366004610bf8565b61058f565b610126610297366004610bf8565b600360209081525f928352604080842090915290825290205481565b6102616106f5565b5f7f00000000000000000000000000000000000000000000000000000000000000006103077f000000000000000000000000000000000000000000000000000000000000000042610c36565b6103119190610c5d565b905090565b61031e6109e5565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039b5760405162461bcd60e51b815260206004820152601a60248201527f5769746864726177616c51756575653a20666f7262696464656e00000000000060448201526064015b60405180910390fd5b6103a36106f5565b5f6103ac6102bb565b90508160065f8282546103bf9190610c7c565b90915550505f81815260056020526040812080548492906103e1908490610c7c565b90915550505f8181526003602090815260408083206001600160a01b038716845290915281208054849290610417908490610c7c565b909155505060405182906001600160a01b0385169083907f950cc922e79d4067e221a468683f7d798d1be2da8bec745fe110c373e356d47c905f90a45061045d60015f55565b5050565b604051632474521560e21b81527f6ba3266b6b024a2f2f534b52db30d3c928ad457154b7b52aa79c6b2ba256fb2960048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156104ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105109190610c8f565b61055c5760405162461bcd60e51b815260206004820152601a60248201527f5769746864726177616c51756575653a20666f7262696464656e0000000000006044820152606401610392565b600282905560405182907f41777346a14390a3108e351819fbec31854ee0a25e66bd476cb2747b3be7f5fe905f90a25050565b5f6105986109e5565b6105a06106f5565b60015483106105b057505f6106e6565b5f83815260036020908152604080832033808552925282205490918190036105dc575f925050506106e6565b5f8581526003602090815260408083206001600160a01b03861684528252808320839055878352600482528083205460059092529091205461061f918391610a0d565b9250825f03610632575f925050506106e6565b5f858152600460205260408120805485929061064f908490610c36565b90915550505f8581526005602052604081208054839290610671908490610c36565b909155506106ab90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585610ac4565b82826001600160a01b0316867f3ed1528b0fdc7c5207c1bf935e34a667e13656b9ed165260c522be0bc544f30360405160405180910390a450505b6106ef60015f55565b92915050565b6001545f6107016102bb565b905080820361070e575050565b60025442907f000000000000000000000000000000000000000000000000000000000000000061073f856001610c7c565b6107499190610cae565b610773907f0000000000000000000000000000000000000000000000000000000000000000610c7c565b61077d9190610c7c565b1115610787575050565b5f82815260056020526040812054908190036107b0576107a8836001610c7c565b600155505050565b60405163266d6a8360e11b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634cdad50690602401602060405180830381865afa158015610815573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108399190610cc5565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156108c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e69190610cc5565b90508015806108f457508082115b15610900575050505050565b604051631930329760e21b815260048101849052602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906364c0ca5c906044015f604051808303815f87803b158015610966575f80fd5b505af1158015610978573d5f803e3d5ffd5b505050508260065f82825461098d9190610c36565b90915550505f8581526004602052604090208290556109ad856001610c7c565b6001556040518290849087907f9f91f86ba4cce0d81918dae655b4c7da4b597e5d6bf0786b0add9f9b47339c2a905f90a45050505050565b60025f5403610a0757604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f838302815f1985870982811083820303915050805f03610a4157838281610a3757610a37610c49565b0492505050610abd565b808411610a5857610a586003851502601118610b1b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610b16908490610b2c565b505050565b634e487b715f52806020526024601cfd5b5f8060205f8451602086015f885af180610b4b576040513d5f823e3d81fd5b50505f513d91508115610b62578060011415610b6f565b6001600160a01b0384163b155b15610b9857604051635274afe760e01b81526001600160a01b0385166004820152602401610392565b50505050565b5f60208284031215610bae575f80fd5b5035919050565b80356001600160a01b0381168114610bcb575f80fd5b919050565b5f8060408385031215610be1575f80fd5b610bea83610bb5565b946020939093013593505050565b5f8060408385031215610c09575f80fd5b82359150610c1960208401610bb5565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ef576106ef610c22565b634e487b7160e01b5f52601260045260245ffd5b5f82610c7757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106ef576106ef610c22565b5f60208284031215610c9f575f80fd5b81518015158114610abd575f80fd5b80820281158282048414176106ef576106ef610c22565b5f60208284031215610cd5575f80fd5b505191905056fea26469706673582212208312af6de5d614471961d29979309aa2092ebde2e940c3ca98c976bd24c38d4764736f6c6343000819003360a0604052348015600e575f80fd5b5060405161056c38038061056c833981016040819052602b916046565b6001600160a01b039092166080525f55426001556002556083565b5f805f606084860312156057575f80fd5b83516001600160a01b0381168114606c575f80fd5b602085015160409095015190969495509392505050565b6080516104c36100a95f395f81816101440152818161021d015261034701526104c35ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c8063552410771161006357806355241077146101055780635ae28fc91461011a578063687043c51461012d578063d0b06f5d14610136578063f2f4eb261461013f575f80fd5b80632096525514610094578063243ddf27146100af5780633fa4f245146100d657806343a642c3146100de575b5f80fd5b61009c61017e565b6040519081526020015b60405180910390f35b61009c7f7bbf9aef3d31793416726c26f176c7819dc8835894f672164a8c307f65407b2e81565b61009c5f5481565b61009c7fa9146fff3103c7a809874c345ee6b6c99f1d8c7b9043121571b2a4f2bb2557a081565b61011861011336600461042b565b6101df565b005b61011861012836600461042b565b610309565b61009c60025481565b61009c60015481565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a6565b5f426002546001546101909190610442565b10156101d95760405162461bcd60e51b81526020600482015260136024820152724f7261636c653a207374616c652076616c756560681b60448201526064015b60405180910390fd5b505f5490565b604051632474521560e21b81527fa9146fff3103c7a809874c345ee6b6c99f1d8c7b9043121571b2a4f2bb2557a060048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa15801561026a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028e9190610467565b6102ce5760405162461bcd60e51b815260206004820152601160248201527027b930b1b6329d103337b93134b23232b760791b60448201526064016101d0565b5f8281554260018190556040519091829185917f69be06033bef8d755e18606a27d6d07393aabbd1800776e503af2c8a03b7c68191a3505050565b604051632474521560e21b81527f7bbf9aef3d31793416726c26f176c7819dc8835894f672164a8c307f65407b2e60048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015610394573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b89190610467565b6103f85760405162461bcd60e51b815260206004820152601160248201527027b930b1b6329d103337b93134b23232b760791b60448201526064016101d0565b600282905560405182907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c081870905f90a25050565b5f6020828403121561043b575f80fd5b5035919050565b8082018082111561046157634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215610477575f80fd5b81518015158114610486575f80fd5b939250505056fea2646970667358221220ff9e517fd9c1a55f49d34d6215ca63e6b87d9b720391da0b0fec6b280582fb5f64736f6c63430008190033c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0202dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220700eddb01ab5bab3efe94edde5925dd5ce8221411f2040c8138357ca8e1c1a7f64736f6c63430008190033
Deployed Bytecode
0x6080604052600436106102a5575f3560e01c80639010d07c1161016f578063b7aff8ca116100d8578063cf70adb911610092578063dd48366b1161006d578063dd48366b14610887578063dd62ed3e146108ba578063e3f5aeb9146108d9578063ef8b30f7146107e4575f80fd5b8063cf70adb914610841578063d547741f14610849578063d905777e14610868575f80fd5b8063b7aff8ca14610787578063ba087652146107a6578063c63d75b6146107c5578063c6e6f592146107e4578063ca15c87314610803578063ce96cb7714610822575f80fd5b8063a3246ad311610129578063a3246ad314610698578063a4d66daf146106c4578063a9059cbb146106f7578063b2d147f814610716578063b3d7f6b914610749578063b460af9414610768575f80fd5b80639010d07c146105f557806391d148541461061457806394bf804d1461063357806395d89b41146106525780639ee679e814610666578063a217fddf14610685575f80fd5b8063313ce567116102115780634cdad506116101cb5780634cdad5061461035357806364c0ca5c146105485780636de8eeb9146105675780636e553f65146105a357806370a08231146105c25780637dc0d1d0146105e1575f80fd5b8063313ce5671461044e578063316615c71461047457806336568abe146104ca57806337d5fe99146104e957806338d52e0f14610515578063402d267d14610529575f80fd5b80630a28a477116102625780630a28a4771461039157806318160ddd146103b057806323b872dd146103d0578063248a9ca3146103ef57806327ea6f2b1461040e5780632f2ff15d1461042f575f80fd5b806301e1d114146102a957806301ffc9a7146102d05780630296d875146102ff57806306fdde031461033257806307a2d13a14610353578063095ea7b314610372575b5f80fd5b3480156102b4575f80fd5b506102bd6108f4565b6040519081526020015b60405180910390f35b3480156102db575f80fd5b506102ef6102ea366004612dd1565b610987565b60405190151581526020016102c7565b34801561030a575f80fd5b506102bd7f96a1da749a4a26fdd253960e5fda95d5ef9d6c3050dfb2b8f866a7a1559c17bd81565b34801561033d575f80fd5b506103466109b1565b6040516102c79190612e45565b34801561035e575f80fd5b506102bd61036d366004612e57565b610a71565b34801561037d575f80fd5b506102ef61038c366004612e92565b610a7c565b34801561039c575f80fd5b506102bd6103ab366004612e57565b610a93565b3480156103bb575f80fd5b505f80516020614c1b833981519152546102bd565b3480156103db575f80fd5b506102ef6103ea366004612ebc565b610a9f565b3480156103fa575f80fd5b506102bd610409366004612e57565b610ac4565b348015610419575f80fd5b5061042d610428366004612e57565b610ae4565b005b34801561043a575f80fd5b5061042d610449366004612efa565b610b6b565b348015610459575f80fd5b50610462610b8d565b60405160ff90911681526020016102c7565b34801561047f575f80fd5b506104b57feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded0254600160a01b900463ffffffff1690565b60405163ffffffff90911681526020016102c7565b3480156104d5575f80fd5b5061042d6104e4366004612efa565b610bbc565b3480156104f4575f80fd5b506104fd610bf4565b6040516001600160a01b0390911681526020016102c7565b348015610520575f80fd5b506104fd610c22565b348015610534575f80fd5b506102bd610543366004612f28565b610c3d565b348015610553575f80fd5b5061042d610562366004612f43565b610ca5565b348015610572575f80fd5b507feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded01546001600160a01b03166104fd565b3480156105ae575f80fd5b506102bd6105bd366004612efa565b610d89565b3480156105cd575f80fd5b506102bd6105dc366004612f28565b610e09565b3480156105ec575f80fd5b506104fd610e2f565b348015610600575f80fd5b506104fd61060f366004612f43565b610e5d565b34801561061f575f80fd5b506102ef61062e366004612efa565b610e82565b34801561063e575f80fd5b506102bd61064d366004612efa565b610eb8565b34801561065d575f80fd5b50610346610f20565b348015610671575f80fd5b5061042d610680366004612e57565b610f5e565b348015610690575f80fd5b506102bd5f81565b3480156106a3575f80fd5b506106b76106b2366004612e57565b6110d3565b6040516102c79190612f63565b3480156106cf575f80fd5b507feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded04546102bd565b348015610702575f80fd5b506102ef610711366004612e92565b6110fc565b348015610721575f80fd5b506102bd7fde376a1cfb023748af2eb0ebb6132b3c122c17f3646371be17b6e138b7a0e8fb81565b348015610754575f80fd5b506102bd610763366004612e57565b611109565b348015610773575f80fd5b506102bd610782366004612faf565b611115565b348015610792575f80fd5b5061042d6107a1366004612fee565b61116b565b3480156107b1575f80fd5b506102bd6107c0366004612faf565b6112f1565b3480156107d0575f80fd5b506102bd6107df366004612f28565b61133e565b3480156107ef575f80fd5b506102bd6107fe366004612e57565b611361565b34801561080e575f80fd5b506102bd61081d366004612e57565b61136c565b34801561082d575f80fd5b506102bd61083c366004612f28565b611390565b6102bd6113a3565b348015610854575f80fd5b5061042d610863366004612efa565b6117b8565b348015610873575f80fd5b506102bd610882366004612f28565b6117d4565b348015610892575f80fd5b507feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded03546102bd565b3480156108c5575f80fd5b506102bd6108d4366004613026565b6117de565b3480156108e4575f80fd5b506102bd670de0b6b3a764000081565b5f61098261090d5f80516020614c1b8339815191525490565b610915610e2f565b6001600160a01b031663209652556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109749190613052565b670de0b6b3a7640000611827565b905090565b5f6001600160e01b03198216635a05180f60e01b14806109ab57506109ab826118dd565b92915050565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0380546060915f80516020614bfb833981519152916109ef90613069565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1b90613069565b8015610a665780601f10610a3d57610100808354040283529160200191610a66565b820191905f5260205f20905b815481529060010190602001808311610a4957829003601f168201915b505050505091505090565b5f6109ab825f611911565b5f33610a89818585611955565b5060019392505050565b5f6109ab826001611962565b5f33610aac85828561199d565b610ab78585856119e8565b60019150505b9392505050565b5f9081525f80516020614c3b833981519152602052604090206001015490565b7f96a1da749a4a26fdd253960e5fda95d5ef9d6c3050dfb2b8f866a7a1559c17bd610b0e81611a45565b817feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded00600401556040518281527f7d1a55ee29901de9a5e2d20f853f61213bff6006324e6f9b275c9e46b031d6169060200160405180910390a15050565b610b7482610ac4565b610b7d81611a45565b610b878383611a4f565b50505050565b5f805f80516020614c5b83398151915290505f8154610bb69190600160a01b900460ff166130b5565b91505090565b6001600160a01b0381163314610be55760405163334bd91960e11b815260040160405180910390fd5b610bef8282611a91565b505050565b7feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded00546001600160a01b031690565b5f80516020614c5b833981519152546001600160a01b031690565b5f80610c677feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded045490565b90505f198103610c7a57505f1992915050565b5f610c836108f4565b905080821015610c93575f610c9d565b610c9d81836130ce565b949350505050565b33610cae610bf4565b6001600160a01b0316816001600160a01b031614610d255760405162461bcd60e51b815260206004820152602960248201527f536f75726365436f72653a206f6e6c79207769746864726177616c51756575656044820152680818d85b881c1d5b1b60ba1b60648201526084015b60405180910390fd5b610d2f8184611aca565b610d4c8183610d3c610c22565b6001600160a01b03169190611b02565b8183826001600160a01b03167f1124c1cb6d2b0dd5018aac5a4467e5f6cedd2ccd2069f454266ff7ddb83de5b560405160405180910390a4505050565b5f610d92611b61565b610d9a610bf4565b6001600160a01b031663ecf143cf6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610dd1575f80fd5b505af1158015610de3573d5f803e3d5ffd5b50505050610df18383611b98565b90506109ab60015f80516020614c7b83398151915255565b6001600160a01b03165f9081525f80516020614bfb833981519152602052604090205490565b7feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded02546001600160a01b031690565b5f8281525f80516020614bdb833981519152602081905260408220610c9d9084611be4565b5f9182525f80516020614c3b833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b5f610ec1611b61565b610ec9610bf4565b6001600160a01b031663ecf143cf6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610f00575f80fd5b505af1158015610f12573d5f803e3d5ffd5b50505050610df18383611bef565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f80516020614bfb833981519152916109ef90613069565b610f66611b61565b610f6e610bf4565b6001600160a01b031663ecf143cf6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610fa5575f80fd5b505af1158015610fb7573d5f803e3d5ffd5b50505050805f0361100a5760405162461bcd60e51b815260206004820152601760248201527f536f75726365436f72653a207a65726f207368617265730000000000000000006044820152606401610d1c565b3361101d81611017610bf4565b846119e8565b611025610bf4565b60405163c8c01a5560e01b81526001600160a01b03838116600483015260248201859052919091169063c8c01a55906044015f604051808303815f87803b15801561106e575f80fd5b505af1158015611080573d5f803e3d5ffd5b50506040518492506001600160a01b03841691507fe670e4e82118d22a1f9ee18920455ebc958bae26a90a05d31d3378788b1b0e44905f90a3506110d060015f80516020614c7b83398151915255565b50565b5f8181525f80516020614bdb8339815191526020819052604090912060609190610abd90611c3b565b5f33610a898185856119e8565b5f6109ab826001611911565b5f8061112083611390565b90508085111561114957828582604051633fa733bb60e21b8152600401610d1c939291906130e1565b5f61115386610a93565b90506111623386868985611c47565b95945050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156111b05750825b90505f8267ffffffffffffffff1660011480156111cc5750303b155b9050811580156111da575080155b156111f85760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561122257845460ff60401b1916600160401b1785555b337f000000000000000000000000e98be1e5538fcbd716c506052eb1fd5d6fc495a36001600160a01b03161461129a5760405162461bcd60e51b815260206004820152601860248201527f536f75726365436f72653a206e6f74206465706c6f79657200000000000000006044820152606401610d1c565b6112a386611c8f565b83156112e957845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b5f806112fc836117d4565b90508085111561132557828582604051632e52afbb60e21b8152600401610d1c939291906130e1565b5f61132f86610a71565b9050611162338686848a611c47565b5f8061134983610c3d565b90505f19810361135c57505f1992915050565b610abd815b5f6109ab825f611962565b5f8181525f80516020614bdb833981519152602081905260408220610abd90612351565b5f6109ab61139d83610e09565b5f611911565b5f6113ac611b61565b6113b4610bf4565b6001600160a01b031663ecf143cf6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156113eb575f80fd5b505af11580156113fd573d5f803e3d5ffd5b505050507fde376a1cfb023748af2eb0ebb6132b3c122c17f3646371be17b6e138b7a0e8fb61142b81611a45565b5f611434610c22565b6040516370a0823160e01b81523060048201529091505f906001600160a01b038316906370a0823190602401602060405180830381865afa15801561147b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061149f9190613052565b90505f6114aa610bf4565b6001600160a01b0316633a98ef396040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115099190613052565b9050801561153e575f61151b82610a71565b9050828110611530575f95505050505061179e565b61153a81846130ce565b9250505b5f6115707feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded01546001600160a01b031690565b60405163180ef33160e31b8152600481018590529091506001600160a01b0382169063c077998890602401602060405180830381865afa1580156115b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115da9190613052565b9550855f036115ef575f95505050505061179e565b6116036001600160a01b038516828861235a565b5f80826001600160a01b031663c7c7f5b3346040518060e001604052806116557feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded0254600160a01b900463ffffffff1690565b63ffffffff1681526020016116887feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded035490565b815260208082018e905260408083018f905280515f808252818401835260608501919091528151818152808401835260808501528151818152808401835260a090940193909352805180820182523481529182019290925290516001600160e01b031960e086901b1681526117039291903390600401613116565b60c06040518083038185885af115801561171f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611744919061321b565b909250905061175d6001600160a01b038716845f6123dc565b877f03a86efa44d8d4b7e061e119af6772039c42fa1ae444c2f2adeff44015ead8bd838360405161178f9291906132ab565b60405180910390a25050505050505b506117b560015f80516020614c7b83398151915255565b90565b6117c182610ac4565b6117ca81611a45565b610b878383611a91565b5f6109ab82610e09565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b5f838302815f1985870982811083820303915050805f0361185b57838281611851576118516132fd565b0492505050610abd565b80841161187257611872600385150260111861246b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f6001600160e01b03198216637965db0b60e01b14806109ab57506301ffc9a760e01b6001600160e01b03198316146109ab565b5f610abd61191d6108f4565b611928906001613311565b6119335f600a613404565b5f80516020614c1b8339815191525461194c9190613311565b8591908561247c565b610bef83838360016124be565b5f610abd61197182600a613404565b5f80516020614c1b8339815191525461198a9190613311565b6119926108f4565b61194c906001613311565b5f6119a884846117de565b90505f19811015610b8757818110156119da57828183604051637dc7a0d960e11b8152600401610d1c939291906130e1565b610b8784848484035f6124be565b6001600160a01b038316611a1157604051634b637e8f60e11b81525f6004820152602401610d1c565b6001600160a01b038216611a3a5760405163ec442f0560e01b81525f6004820152602401610d1c565b610bef8383836125a2565b6110d081336126c8565b5f5f80516020614bdb83398151915281611a698585612701565b90508015610c9d575f858152602083905260409020611a8890856127a2565b50949350505050565b5f5f80516020614bdb83398151915281611aab85856127b6565b90508015610c9d575f858152602083905260409020611a88908561282f565b6001600160a01b038216611af357604051634b637e8f60e11b81525f6004820152602401610d1c565b611afe825f836125a2565b5050565b6040516001600160a01b03838116602483015260448201839052610bef91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050612843565b5f80516020614c7b833981519152805460011901611b9257604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f80611ba383610c3d565b905080841115611bcc57828482604051633c8097d960e11b8152600401610d1c939291906130e1565b5f611bd685611361565b9050610c9d338587846128af565b5f610abd838361292c565b5f80611bfa8361133e565b905080841115611c235782848260405163284ff66760e01b8152600401610d1c939291906130e1565b5f611c2d85611109565b9050610c9d338583886128af565b60605f610abd83612952565b60405162461bcd60e51b815260206004820152601b60248201527f536f75726365436f72653a206e6f7420696d706c656d656e74656400000000006044820152606401610d1c565b611c976129ab565b5f611ca56020830183612f28565b6001600160a01b03161480611cd157505f611cc66080830160608401612f28565b6001600160a01b0316145b80611cde575060c0810135155b15611d2b5760405162461bcd60e51b815260206004820152601f60248201527f536f75726365436f726553746f726167653a207a65726f2061646472657373006044820152606401610d1c565b60808101351580611d4f5750611d4760c0820160a08301613425565b63ffffffff16155b80611d5d5750610100810135155b15611daa5760405162461bcd60e51b815260206004820152601d60248201527f536f75726365436f726553746f726167653a207a65726f2076616c75650000006044820152606401610d1c565b5f611dbb6080830160608401612f28565b6001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611df6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e1a919061343e565b9050611ea6611e2c6020840184613459565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250611e6d925050506040850185613459565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f920191909152506129f692505050565b611eaf81612a08565b611ec55f611ec06020850185612f28565b611a4f565b505f7feb30039081bb57aacc4645369147b1654132a2ddcd85d2f761c6128c51fded009050826080013582604051611efc90612db7565b9182526001600160a01b03166020820152604001604051809103905ff080158015611f29573d5f803e3d5ffd5b5081546001600160a01b0319166001600160a01b0391909116178155611f556080840160608501612f28565b6001820180546001600160a01b0319166001600160a01b0392909216918217905560405163189acdbd60e31b815230600482015263c4d66de8906024015f604051808303815f87803b158015611fa9575f80fd5b505af1158015611fbb573d5f803e3d5ffd5b5050505030670de0b6b3a7640000846101000135604051611fdb90612dc4565b611fe7939291906130e1565b604051809103905ff080158015612000573d5f803e3d5ffd5b506002820180546001600160a01b0319166001600160a01b039290921691909117905561203360c0840160a08501613425565b60028201805463ffffffff92909216600160a01b0263ffffffff60a01b1990921691909117905560c0830135600382015560e083013560048201555f61208161014085016101208601612f28565b6001600160a01b0316146120c7576120c57fde376a1cfb023748af2eb0ebb6132b3c122c17f3646371be17b6e138b7a0e8fb611ec061014086016101208701612f28565b505b5f6120da61016085016101408601612f28565b6001600160a01b031614612166576121646120f3610bf4565b6001600160a01b031663293259e66040518163ffffffff1660e01b8152600401602060405180830381865afa15801561212e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121529190613052565b611ec061016086016101408701612f28565b505b5f61217961018085016101608601612f28565b6001600160a01b03161461220557612203612192610e2f565b6001600160a01b03166343a642c36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121f19190613052565b611ec061018086016101608701612f28565b505b5f6122186101a085016101808601612f28565b6001600160a01b0316146122a4576122a2612231610e2f565b6001600160a01b031663243ddf276040518163ffffffff1660e01b8152600401602060405180830381865afa15801561226c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122909190613052565b611ec06101a086016101808701612f28565b505b5f6122b76101c085016101a08601612f28565b6001600160a01b0316146122fd576122fb7f96a1da749a4a26fdd253960e5fda95d5ef9d6c3050dfb2b8f866a7a1559c17bd611ec06101c086016101a08701612f28565b505b805460028201546040517f520cdf6fdeae6c5a875815838d1377e6099d0cbeacd09cf57486b679bd0b3f3e926123449287926001600160a01b03928316929091169061350d565b60405180910390a1505050565b5f6109ab825490565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301525f919085169063dd62ed3e90604401602060405180830381865afa1580156123a7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123cb9190613052565b9050610b8784846123dc8585613311565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b17905261242d8482612a19565b610b87576040516001600160a01b0384811660248301525f604483015261246191869182169063095ea7b390606401611b2f565b610b878482612843565b634e487b715f52806020526024601cfd5b5f6124a961248983612a62565b80156124a457505f848061249f5761249f6132fd565b868809115b151590565b6124b4868686611827565b6111629190613311565b5f80516020614bfb8339815191526001600160a01b0385166124f55760405163e602df0560e01b81525f6004820152602401610d1c565b6001600160a01b03841661251e57604051634a1406b160e11b81525f6004820152602401610d1c565b6001600160a01b038086165f9081526001830160209081526040808320938816835292905220839055811561259b57836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161259291815260200190565b60405180910390a35b5050505050565b5f80516020614bfb8339815191526001600160a01b0384166125dc5781816002015f8282546125d19190613311565b909155506126399050565b6001600160a01b0384165f908152602082905260409020548281101561261b5784818460405163391434e360e21b8152600401610d1c939291906130e1565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316612657576002810180548390039055612675565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126ba91815260200190565b60405180910390a350505050565b6126d28282610e82565b611afe5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610d1c565b5f5f80516020614c3b83398151915261271a8484610e82565b612799575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561274f3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109ab565b5f9150506109ab565b5f610abd836001600160a01b038416612a8e565b5f5f80516020614c3b8339815191526127cf8484610e82565b15612799575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109ab565b5f610abd836001600160a01b038416612ada565b5f8060205f8451602086015f885af180612862576040513d5f823e3d81fd5b50505f513d91508115612879578060011415612886565b6001600160a01b0384163b155b15610b8757604051635274afe760e01b81526001600160a01b0385166004820152602401610d1c565b5f80516020614c5b83398151915280546128d4906001600160a01b0316863086612bb4565b6128de8483612bed565b836001600160a01b0316856001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d78585604051612592929190918252602082015260400190565b5f825f018281548110612941576129416136c4565b905f5260205f200154905092915050565b6060815f0180548060200260200160405190810160405280929190818152602001828054801561299f57602002820191905f5260205f20905b81548152602001906001019080831161298b575b50505050509050919050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166129f457604051631afcd79f60e31b815260040160405180910390fd5b565b6129fe6129ab565b611afe8282612c21565b612a106129ab565b6110d081612c71565b5f805f8060205f8651602088015f8a5af192503d91505f519050828015612a5857508115612a4a5780600114612a58565b5f866001600160a01b03163b115b9695505050505050565b5f6002826003811115612a7757612a776136d8565b612a8191906136ec565b60ff166001149050919050565b5f818152600183016020526040812054612ad357508154600181810184555f8481526020808220909301849055845484825282860190935260409020919091556109ab565b505f6109ab565b5f8181526001830160205260408120548015612799575f612afc6001836130ce565b85549091505f90612b0f906001906130ce565b9050808214612b6e575f865f018281548110612b2d57612b2d6136c4565b905f5260205f200154905080875f018481548110612b4d57612b4d6136c4565b5f918252602080832090910192909255918252600188019052604090208390555b8554869080612b7f57612b7f613719565b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f9055600193505050506109ab565b6040516001600160a01b038481166024830152838116604483015260648201839052610b879186918216906323b872dd90608401611b2f565b6001600160a01b038216612c165760405163ec442f0560e01b81525f6004820152602401610d1c565b611afe5f83836125a2565b612c296129ab565b5f80516020614bfb8339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace03612c628482613771565b5060048101610b878382613771565b612c796129ab565b5f80516020614c5b8339815191525f80612c9284612ce1565b9150915081612ca2576012612ca4565b805b83546001600160a81b031916600160a01b60ff92909216919091026001600160a01b031916176001600160a01b0394909416939093179091555050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290515f918291829182916001600160a01b03871691612d279161382d565b5f60405180830381855afa9150503d805f8114612d5f576040519150601f19603f3d011682016040523d82523d5f602084013e612d64565b606091505b5091509150818015612d7857506020815110155b15612dab575f81806020019051810190612d929190613052565b905060ff8111612da9576001969095509350505050565b505b505f9485945092505050565b610e268061384983390190565b61056c8061466f83390190565b5f60208284031215612de1575f80fd5b81356001600160e01b031981168114610abd575f80fd5b5f5b83811015612e12578181015183820152602001612dfa565b50505f910152565b5f8151808452612e31816020860160208601612df8565b601f01601f19169290920160200192915050565b602081525f610abd6020830184612e1a565b5f60208284031215612e67575f80fd5b5035919050565b6001600160a01b03811681146110d0575f80fd5b8035612e8d81612e6e565b919050565b5f8060408385031215612ea3575f80fd5b8235612eae81612e6e565b946020939093013593505050565b5f805f60608486031215612ece575f80fd5b8335612ed981612e6e565b92506020840135612ee981612e6e565b929592945050506040919091013590565b5f8060408385031215612f0b575f80fd5b823591506020830135612f1d81612e6e565b809150509250929050565b5f60208284031215612f38575f80fd5b8135610abd81612e6e565b5f8060408385031215612f54575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b81811015612fa35783516001600160a01b031683529284019291840191600101612f7e565b50909695505050505050565b5f805f60608486031215612fc1575f80fd5b833592506020840135612fd381612e6e565b91506040840135612fe381612e6e565b809150509250925092565b5f60208284031215612ffe575f80fd5b813567ffffffffffffffff811115613014575f80fd5b82016101c08185031215610abd575f80fd5b5f8060408385031215613037575f80fd5b823561304281612e6e565b91506020830135612f1d81612e6e565b5f60208284031215613062575f80fd5b5051919050565b600181811c9082168061307d57607f821691505b60208210810361309b57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b60ff81811683821601908111156109ab576109ab6130a1565b818103818111156109ab576109ab6130a1565b6001600160a01b039390931683526020830191909152604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b6080815263ffffffff8451166080820152602084015160a0820152604084015160c0820152606084015160e08201525f608085015160e0610100840152613161610160840182612e1a565b905060a0860151607f1980858403016101208601526131808383612e1a565b925060c0880151915080858403016101408601525061319f8282612e1a565b925050506131ba602083018580518252602090810151910152565b6001600160a01b0383166060830152610c9d565b5f604082840312156131de575f80fd5b6040516040810181811067ffffffffffffffff8211171561320157613201613102565b604052825181526020928301519281019290925250919050565b5f8082840360c081121561322d575f80fd5b608081121561323a575f80fd5b506040516060810167ffffffffffffffff828210818311171561325f5761325f613102565b816040528551835260208601519150808216821461327b575f80fd5b50602082015261328e85604086016131ce565b604082015291506132a284608085016131ce565b90509250929050565b5f60c0820190508351825267ffffffffffffffff602085015116602083015260408401516132e6604084018280518252602090810151910152565b5082516080830152602083015160a0830152610abd565b634e487b7160e01b5f52601260045260245ffd5b808201808211156109ab576109ab6130a1565b600181815b8085111561335e57815f1904821115613344576133446130a1565b8085161561335157918102915b93841c9390800290613329565b509250929050565b5f82613374575060016109ab565b8161338057505f6109ab565b816001811461339657600281146133a0576133bc565b60019150506109ab565b60ff8411156133b1576133b16130a1565b50506001821b6109ab565b5060208310610133831016604e8410600b84101617156133df575081810a6109ab565b6133e98383613324565b805f19048211156133fc576133fc6130a1565b029392505050565b5f610abd60ff841683613366565b803563ffffffff81168114612e8d575f80fd5b5f60208284031215613435575f80fd5b610abd82613412565b5f6020828403121561344e575f80fd5b8151610abd81612e6e565b5f808335601e1984360301811261346e575f80fd5b83018035915067ffffffffffffffff821115613488575f80fd5b60200191503681900382131561349c575f80fd5b9250929050565b5f808335601e198436030181126134b8575f80fd5b830160208101925035905067ffffffffffffffff8111156134d7575f80fd5b80360382131561349c575f80fd5b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b6060815261352e6060820161352186612e82565b6001600160a01b03169052565b5f61353c60208601866134a3565b6101c0806080860152613554610220860183856134e5565b925061356360408901896134a3565b868503605f190160a0880152925061357c8484836134e5565b93505061358b60608901612e82565b6001600160a01b03811660c08701529150608088013560e08601526135b260a08901613412565b91506101006135c88187018463ffffffff169052565b610120925060c08901358387015261014060e08a013581880152610160828b0135818901526135f8858c01612e82565b94506101809250613613838901866001600160a01b03169052565b61361e828c01612e82565b94506101a09150613639828901866001600160a01b03169052565b613644818c01612e82565b94505061365b838801856001600160a01b03169052565b613666828b01612e82565b6001600160a01b0381166101e08901529350613683818b01612e82565b935050505061369e6102008501826001600160a01b03169052565b506001600160a01b038516602084015290506001600160a01b0383166040830152610c9d565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52602160045260245ffd5b5f60ff83168061370a57634e487b7160e01b5f52601260045260245ffd5b8060ff84160691505092915050565b634e487b7160e01b5f52603160045260245ffd5b601f821115610bef57805f5260205f20601f840160051c810160208510156137525750805b601f840160051c820191505b8181101561259b575f815560010161375e565b815167ffffffffffffffff81111561378b5761378b613102565b61379f816137998454613069565b8461372d565b602080601f8311600181146137d2575f84156137bb5750858301515b5f19600386901b1c1916600185901b1785556112e9565b5f85815260208120601f198616915b82811015613800578886015182559484019460019091019084016137e1565b508582101561381d57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f825161383e818460208701612df8565b919091019291505056fe6101006040525f60015562093a8060025534801561001b575f80fd5b50604051610e26380380610e2683398101604081905261003a9161005a565b60015f55336080526001600160a01b031660a05260c0524260e052610094565b5f806040838503121561006b575f80fd5b825160208401519092506001600160a01b0381168114610089575f80fd5b809150509250929050565b60805160a05160c05160e051610d126101145f395f81816101eb015281816102e2015261074f01525f8181610186015281816102be015261071501525f818161013e01528181610684015261087d01525f818161022c015281816103290152818161049f015281816107c801528181610850015261091d0152610d125ff3fe608060405234801561000f575f80fd5b50600436106100fb575f3560e01c8063906bf4c111610093578063d2c13da511610063578063d2c13da514610263578063ddd5e1b214610276578063e78307ca14610289578063ecf143cf146102b3575f80fd5b8063906bf4c114610215578063a7ab69611461021e578063bc6e4c1d14610227578063c8c01a551461024e575f80fd5b806357a858fc116100ce57806357a858fc146101a85780635cc07076146101c75780637358c57a146101e6578063766718081461020d575f80fd5b8063293259e6146100ff57806338d52e0f146101395780633a98ef39146101785780634ff0876a14610181575b5f80fd5b6101267f6ba3266b6b024a2f2f534b52db30d3c928ad457154b7b52aa79c6b2ba256fb2981565b6040519081526020015b60405180910390f35b6101607f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610130565b61012660065481565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101266101b6366004610b9e565b60056020525f908152604090205481565b6101266101d5366004610b9e565b60046020525f908152604090205481565b6101267f000000000000000000000000000000000000000000000000000000000000000081565b6101266102bb565b61012660015481565b61012660025481565b6101607f000000000000000000000000000000000000000000000000000000000000000081565b61026161025c366004610bd0565b610316565b005b610261610271366004610b9e565b610461565b610126610284366004610bf8565b61058f565b610126610297366004610bf8565b600360209081525f928352604080842090915290825290205481565b6102616106f5565b5f7f00000000000000000000000000000000000000000000000000000000000000006103077f000000000000000000000000000000000000000000000000000000000000000042610c36565b6103119190610c5d565b905090565b61031e6109e5565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461039b5760405162461bcd60e51b815260206004820152601a60248201527f5769746864726177616c51756575653a20666f7262696464656e00000000000060448201526064015b60405180910390fd5b6103a36106f5565b5f6103ac6102bb565b90508160065f8282546103bf9190610c7c565b90915550505f81815260056020526040812080548492906103e1908490610c7c565b90915550505f8181526003602090815260408083206001600160a01b038716845290915281208054849290610417908490610c7c565b909155505060405182906001600160a01b0385169083907f950cc922e79d4067e221a468683f7d798d1be2da8bec745fe110c373e356d47c905f90a45061045d60015f55565b5050565b604051632474521560e21b81527f6ba3266b6b024a2f2f534b52db30d3c928ad457154b7b52aa79c6b2ba256fb2960048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa1580156104ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105109190610c8f565b61055c5760405162461bcd60e51b815260206004820152601a60248201527f5769746864726177616c51756575653a20666f7262696464656e0000000000006044820152606401610392565b600282905560405182907f41777346a14390a3108e351819fbec31854ee0a25e66bd476cb2747b3be7f5fe905f90a25050565b5f6105986109e5565b6105a06106f5565b60015483106105b057505f6106e6565b5f83815260036020908152604080832033808552925282205490918190036105dc575f925050506106e6565b5f8581526003602090815260408083206001600160a01b03861684528252808320839055878352600482528083205460059092529091205461061f918391610a0d565b9250825f03610632575f925050506106e6565b5f858152600460205260408120805485929061064f908490610c36565b90915550505f8581526005602052604081208054839290610671908490610c36565b909155506106ab90506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168585610ac4565b82826001600160a01b0316867f3ed1528b0fdc7c5207c1bf935e34a667e13656b9ed165260c522be0bc544f30360405160405180910390a450505b6106ef60015f55565b92915050565b6001545f6107016102bb565b905080820361070e575050565b60025442907f000000000000000000000000000000000000000000000000000000000000000061073f856001610c7c565b6107499190610cae565b610773907f0000000000000000000000000000000000000000000000000000000000000000610c7c565b61077d9190610c7c565b1115610787575050565b5f82815260056020526040812054908190036107b0576107a8836001610c7c565b600155505050565b60405163266d6a8360e11b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634cdad50690602401602060405180830381865afa158015610815573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108399190610cc5565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301529192505f917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156108c2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108e69190610cc5565b90508015806108f457508082115b15610900575050505050565b604051631930329760e21b815260048101849052602481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906364c0ca5c906044015f604051808303815f87803b158015610966575f80fd5b505af1158015610978573d5f803e3d5ffd5b505050508260065f82825461098d9190610c36565b90915550505f8581526004602052604090208290556109ad856001610c7c565b6001556040518290849087907f9f91f86ba4cce0d81918dae655b4c7da4b597e5d6bf0786b0add9f9b47339c2a905f90a45050505050565b60025f5403610a0757604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f838302815f1985870982811083820303915050805f03610a4157838281610a3757610a37610c49565b0492505050610abd565b808411610a5857610a586003851502601118610b1b565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610b16908490610b2c565b505050565b634e487b715f52806020526024601cfd5b5f8060205f8451602086015f885af180610b4b576040513d5f823e3d81fd5b50505f513d91508115610b62578060011415610b6f565b6001600160a01b0384163b155b15610b9857604051635274afe760e01b81526001600160a01b0385166004820152602401610392565b50505050565b5f60208284031215610bae575f80fd5b5035919050565b80356001600160a01b0381168114610bcb575f80fd5b919050565b5f8060408385031215610be1575f80fd5b610bea83610bb5565b946020939093013593505050565b5f8060408385031215610c09575f80fd5b82359150610c1960208401610bb5565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b818103818111156106ef576106ef610c22565b634e487b7160e01b5f52601260045260245ffd5b5f82610c7757634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156106ef576106ef610c22565b5f60208284031215610c9f575f80fd5b81518015158114610abd575f80fd5b80820281158282048414176106ef576106ef610c22565b5f60208284031215610cd5575f80fd5b505191905056fea26469706673582212208312af6de5d614471961d29979309aa2092ebde2e940c3ca98c976bd24c38d4764736f6c6343000819003360a0604052348015600e575f80fd5b5060405161056c38038061056c833981016040819052602b916046565b6001600160a01b039092166080525f55426001556002556083565b5f805f606084860312156057575f80fd5b83516001600160a01b0381168114606c575f80fd5b602085015160409095015190969495509392505050565b6080516104c36100a95f395f81816101440152818161021d015261034701526104c35ff3fe608060405234801561000f575f80fd5b5060043610610090575f3560e01c8063552410771161006357806355241077146101055780635ae28fc91461011a578063687043c51461012d578063d0b06f5d14610136578063f2f4eb261461013f575f80fd5b80632096525514610094578063243ddf27146100af5780633fa4f245146100d657806343a642c3146100de575b5f80fd5b61009c61017e565b6040519081526020015b60405180910390f35b61009c7f7bbf9aef3d31793416726c26f176c7819dc8835894f672164a8c307f65407b2e81565b61009c5f5481565b61009c7fa9146fff3103c7a809874c345ee6b6c99f1d8c7b9043121571b2a4f2bb2557a081565b61011861011336600461042b565b6101df565b005b61011861012836600461042b565b610309565b61009c60025481565b61009c60015481565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100a6565b5f426002546001546101909190610442565b10156101d95760405162461bcd60e51b81526020600482015260136024820152724f7261636c653a207374616c652076616c756560681b60448201526064015b60405180910390fd5b505f5490565b604051632474521560e21b81527fa9146fff3103c7a809874c345ee6b6c99f1d8c7b9043121571b2a4f2bb2557a060048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa15801561026a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061028e9190610467565b6102ce5760405162461bcd60e51b815260206004820152601160248201527027b930b1b6329d103337b93134b23232b760791b60448201526064016101d0565b5f8281554260018190556040519091829185917f69be06033bef8d755e18606a27d6d07393aabbd1800776e503af2c8a03b7c68191a3505050565b604051632474521560e21b81527f7bbf9aef3d31793416726c26f176c7819dc8835894f672164a8c307f65407b2e60048201819052336024830152907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391d1485490604401602060405180830381865afa158015610394573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103b89190610467565b6103f85760405162461bcd60e51b815260206004820152601160248201527027b930b1b6329d103337b93134b23232b760791b60448201526064016101d0565b600282905560405182907f6777d8e4257e9f6a86d2f91b2b9fceaeb931d8b35249fbb63203c2dc0c081870905f90a25050565b5f6020828403121561043b575f80fd5b5035919050565b8082018082111561046157634e487b7160e01b5f52601160045260245ffd5b92915050565b5f60208284031215610477575f80fd5b81518015158114610486575f80fd5b939250505056fea2646970667358221220ff9e517fd9c1a55f49d34d6215ca63e6b87d9b720391da0b0fec6b280582fb5f64736f6c63430008190033c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0052c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0202dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268000773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a2646970667358221220700eddb01ab5bab3efe94edde5925dd5ce8221411f2040c8138357ca8e1c1a7f64736f6c63430008190033
🤖 Code Reader Beta
Generate instant answers for your smart contract questions using Al Models. Read more.
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in FRAX
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.

