[ { "inputs": [ { "internalType": "address", "name": "_stakingToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_sfs", "type": "address" }, { "internalType": "uint256", "name": "_tokenId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InsufficientAmount", "type": "error" }, { "inputs": [], "name": "NotAlive", "type": "error" }, { "inputs": [], "name": "NotAuthorized", "type": "error" }, { "inputs": [], "name": "NotNotifyAdmin", "type": "error" }, { "inputs": [], "name": "PeriodFinish", "type": "error" }, { "inputs": [], "name": "ReentrancyGuardReentrantCall", "type": "error" }, { "inputs": [], "name": "RewardRateTooHigh", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [], "name": "ZeroAmount", "type": "error" }, { "inputs": [], "name": "ZeroRewardRate", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "claimed0", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "claimed1", "type": "uint256" } ], "name": "ClaimFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ClaimRewards", "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": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "NotifyReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "claimFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "address", "name": "_recipient", "type": "address" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feeConverter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" } ], "name": "getReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "lastTimeRewardApplicable", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastUpdateTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "left", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "notifyRewardAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "notifyRewardMatch", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "periodFinish", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardPerToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardPerTokenStored", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "rewardRateByEpoch", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "stakingToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "userRewardPerTokenPaid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
61010060405234801561001157600080fd5b50604051613015380380613015833981016040819052610030916101b5565b60016000553360e0526001600160a01b03808516608052831660a052838361005882826100d6565b6001600160a01b0390811660c052604051630981022760e31b8152600481018590529085169250634c08113891506024016020604051808303816000875af11580156100a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100cc9190610200565b505050505061023b565b600033836001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013b9190610219565b836040516101489061018c565b6001600160a01b03938416815291831660208301529091166040820152606001604051809103906000f080158015610184573d6000803e3d6000fd5b509392505050565b6117cb8061184a83390190565b80516001600160a01b03811681146101b057600080fd5b919050565b600080600080608085870312156101cb57600080fd5b6101d485610199565b93506101e260208601610199565b92506101f060408601610199565b6060959095015193969295505050565b60006020828403121561021257600080fd5b5051919050565b60006020828403121561022b57600080fd5b61023482610199565b9392505050565b60805160a05160c05160e05161155f6102eb600039600081816103030152818161056a0152610e730152600081816102b60152818161099501528181610b1301528181610c3201528181611152015261118c01526000818161036a0152818161069b0152818161073d015281816108a701528181610ae901528181610c080152610d410152600081816102130152818161049a01528181610f190152818161102b01526110b9015261155f6000f3fe608060405234801561001057600080fd5b50600436106101575760003560e01c806394af5b63116100c3578063c8f33c911161007c578063c8f33c9114610325578063cd3daf9d1461032e578063d294f09314610336578063df136d6514610353578063ebe2b12b1461035c578063f7c618c11461036557600080fd5b806394af5b631461027e5780639aeb63d51461029e578063a14124c2146102b1578063b6b55f25146102d8578063c00007b0146102eb578063c45a0155146102fe57600080fd5b80636e553f65116101155780636e553f65146101db57806370a08231146101ee57806372f702f31461020e5780637b0a47ee1461024d57806380faa57d146102565780638b8763471461025e57600080fd5b80628cc2621461015c5780630700037d1461018257806316e64048146101a257806318160ddd146101aa5780632e1a7d4d146101b35780633c6b16ab146101c8575b600080fd5b61016f61016a366004611374565b61038c565b6040519081526020015b60405180910390f35b61016f610190366004611374565b60086020526000908152604090205481565b61016f610409565b61016f60055481565b6101c66101c1366004611391565b610440565b005b6101c66101d6366004611391565b610503565b6101c66101e93660046113aa565b61053f565b61016f6101fc366004611374565b60066020526000908152604090205481565b6102357f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610179565b61016f60025481565b61016f61054d565b61016f61026c366004611374565b60076020526000908152604090205481565b61016f61028c366004611391565b60096020526000908152604090205481565b6101c66102ac366004611391565b610560565b6102357f000000000000000000000000000000000000000000000000000000000000000081565b6101c66102e6366004611391565b610824565b6101c66102f9366004611374565b61082e565b6102357f000000000000000000000000000000000000000000000000000000000000000081565b61016f60035481565b61016f61091d565b61033e61097f565b60408051928352602083019190915201610179565b61016f60045481565b61016f60015481565b6102357f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0381166000908152600860209081526040808320546007909252822054670de0b6b3a7640000906103c261091d565b6103cc91906113f0565b6001600160a01b0385166000908152600660205260409020546103ef9190611403565b6103f9919061141a565b610403919061143c565b92915050565b6000600154421061041a5750600090565b60004260015461042a91906113f0565b90506002548161043a9190611403565b91505090565b6104486109ed565b61045133610a17565b806005600082825461046391906113f0565b909155505033600090815260066020526040812080548392906104879084906113f0565b909155506104c190506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163383610a64565b60405181815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a26105006001600055565b50565b61050b6109ed565b8060000361052c57604051631f2a200560e01b815260040160405180910390fd5b61053581610ac8565b6105006001600055565b6105498282610e35565b5050565b600061055b42600154610fcf565b905090565b6105686109ed565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663447595b46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105ea919061144f565b6001600160a01b0316336001600160a01b03161461061b57604051631004457960e31b815260040160405180910390fd5b8060000361063c57604051631f2a200560e01b815260040160405180910390fd5b600154421061065e57604051630fd1c12b60e21b815260040160405180910390fd5b61066661091d565b60045560015460009061067a9042906113f0565b905060006002548261068c9190611403565b90506106c36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086610fe7565b816106ce828561143c565b6106d8919061141a565b6002819055600960006106f04262093a808106900390565b815260200190815260200160002081905550600254600003610725576040516307ced7af60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561078c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b0919061146c565b90506107bc838261141a565b60025411156107de57604051633c6be1b360e01b815260040160405180910390fd5b4260035560405184815233907f095667752957714306e1a6ad83495404412df6fdb932fca6dc849a7ee910d4c19060200160405180910390a25050506105006001600055565b6105008133610e35565b6108366109ed565b336001600160a01b0382161461085f5760405163ea8e4eb560e01b815260040160405180910390fd5b61086881610a17565b6001600160a01b0381166000908152600860205260409020548015610912576001600160a01b038083166000908152600860205260408120556108ce907f0000000000000000000000000000000000000000000000000000000000000000168383610a64565b816001600160a01b03167f1f89f96333d3133000ee447473151fa9606543368f02271c9d95ae14f13bcc678260405161090991815260200190565b60405180910390a25b506105006001600055565b6000600554600003610930575060045490565b600554670de0b6b3a764000060025460035461094a61054d565b61095491906113f0565b61095e9190611403565b6109689190611403565b610972919061141a565b60045461055b919061143c565b60008061098a6109ed565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109d35760405163ea8e4eb560e01b815260040160405180910390fd5b6109db611026565b915091506109e96001600055565b9091565b600260005403610a1057604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b610a1f61091d565b600455610a2a61054d565b600355610a368161038c565b6001600160a01b03909116600090815260086020908152604080832093909355600454600790915291902055565b6040516001600160a01b03838116602483015260448201839052610ac391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b0383818316178352505050506111f0565b505050565b610ad061091d565b6004556001544210610bb657610b116001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084610fe7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f69e20466040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b95919061146c565b610b9f908261143c565b9050610bae62093a808261141a565b600255610cde565b600042600154610bc691906113f0565b9050600060025482610bd89190611403565b905080831015610bfb57604051632ca2f52b60e11b815260040160405180910390fd5b610c306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086610fe7565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f69e20466040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610c90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb4919061146c565b610cbe908461143c565b925062093a80610cce828561143c565b610cd8919061141a565b60025550505b60025460096000610cf44262093a808106900390565b815260200190815260200160002081905550600254600003610d29576040516307ced7af60e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610d90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db4919061146c565b9050610dc362093a808261141a565b6002541115610de557604051633c6be1b360e01b815260040160405180910390fd5b426003819055610df99062093a809061143c565b60015560405182815233907f095667752957714306e1a6ad83495404412df6fdb932fca6dc849a7ee910d4c19060200160405180910390a25050565b610e3d6109ed565b81600003610e5e57604051631f2a200560e01b815260040160405180910390fd5b604051631703e5f960e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631703e5f990602401602060405180830381865afa158015610ec2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee69190611485565b610f03576040516310f3d9c960e01b815260040160405180910390fd5b610f0c81610a17565b610f416001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085610fe7565b8160056000828254610f53919061143c565b90915550506001600160a01b03811660009081526006602052604081208054849290610f8090849061143c565b90915550506040518281526001600160a01b0382169033907f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629060200160405180910390a36105496001600055565b6000818310610fde5781610fe0565b825b9392505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526110209186918216906323b872dd90608401610a91565b50505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d294f0936040518163ffffffff1660e01b815260040160408051808303816000875af1158015611088573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ac91906114a7565b80925081935050506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004016040805180830381865afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113891906114cb565b90925090508315611177576111776001600160a01b0383167f000000000000000000000000000000000000000000000000000000000000000086610a64565b82156111b1576111b16001600160a01b0382167f000000000000000000000000000000000000000000000000000000000000000085610a64565b60408051858152602081018590527fcbf6196d7bebcbaaf53f321eecb5b4f39479879f3996f828f10012708a9442d7910160405180910390a150509091565b60006112056001600160a01b03841683611258565b9050805160001415801561122a5750808060200190518101906112289190611485565b155b15610ac357604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b6060610fe08383600084600080856001600160a01b0316848660405161127e91906114fa565b60006040518083038185875af1925050503d80600081146112bb576040519150601f19603f3d011682016040523d82523d6000602084013e6112c0565b606091505b50915091506112d08683836112da565b9695505050505050565b6060826112ef576112ea82611336565b610fe0565b815115801561130657506001600160a01b0384163b155b1561132f57604051639996b31560e01b81526001600160a01b038516600482015260240161124f565b5080610fe0565b8051156113465780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6001600160a01b038116811461050057600080fd5b60006020828403121561138657600080fd5b8135610fe08161135f565b6000602082840312156113a357600080fd5b5035919050565b600080604083850312156113bd57600080fd5b8235915060208301356113cf8161135f565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610403576104036113da565b8082028115828204841417610403576104036113da565b60008261143757634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610403576104036113da565b60006020828403121561146157600080fd5b8151610fe08161135f565b60006020828403121561147e57600080fd5b5051919050565b60006020828403121561149757600080fd5b81518015158114610fe057600080fd5b600080604083850312156114ba57600080fd5b505080516020909101519092909150565b600080604083850312156114de57600080fd5b82516114e98161135f565b60208401519092506113cf8161135f565b6000825160005b8181101561151b5760208186018101518583015201611501565b50600092019182525091905056fea264697066735822122023df1ddf68848ebcbe450ab7fe8a04053c66fb79ef0a317b91938a8f78f3661464736f6c6343000819003361012060405234801561001157600080fd5b506040516117cb3803806117cb83398101604081905261003091610235565b6001600055336080526001600160a01b0380821660a05280831660e0528316610100819052604080516303e21fa960e61b8152905185928592859263f887ea40916004808201926020929091908290030181865afa158015610096573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100ba9190610278565b6001600160a01b031660c0816001600160a01b0316815250505050506000836001600160a01b0316633041b7496040518163ffffffff1660e01b8152600401602060405180830381865afa158015610116573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061013a9190610278565b90506000846001600160a01b03166317d70f7c6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561017c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a0919061029a565b604051630981022760e31b8152600481018290529091506001600160a01b03831690634c081138906024016020604051808303816000875af11580156101ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020e919061029a565b5050505050506102b3565b80516001600160a01b038116811461023057600080fd5b919050565b60008060006060848603121561024a57600080fd5b61025384610219565b925061026160208501610219565b915061026f60408501610219565b90509250925092565b60006020828403121561028a57600080fd5b61029382610219565b9392505050565b6000602082840312156102ac57600080fd5b5051919050565b60805160a05160c05160e051610100516114746103576000396000818161011e0152818161022701526103f701526000818160f70152610b120152600081816101dc015281816106dd015261071c01526000818160b30152818161036c015281816104d3015281816105a10152818161083d0152818161096a01526109f201526000818161017b015281816102b9015281816109170152610a1401526114746000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063a6f19c8411610071578063a6f19c8414610176578063d294f0931461019d578063eaddbf1f146101ba578063f69e2046146101cf578063f887ea40146101d7578063f9759518146101fe57600080fd5b8063327107f7146100ae5780634219dc40146100f257806355b396d2146101195780637f6e42811461014057806388b344c014610156575b600080fd5b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b610148600381565b6040519081526020016100e9565b610148610164366004610fec565b60016020526000908152604090205481565b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b6101a5610207565b604080519283526020830191909152016100e9565b6101cd6101c83660046110bc565b61034c565b005b610148610902565b6100d57f000000000000000000000000000000000000000000000000000000000000000081565b6101486101f481565b600080610212610a7a565b6040516335d2155560e11b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ba42aaa90602401602060405180830381865afa158015610276573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061029a91906111b8565b6102b757604051631ea2564f60e31b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d294f0936040518163ffffffff1660e01b815260040160408051808303816000875af1158015610316573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033a91906111d5565b915091506103486001600055565b9091565b610354610a7a565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156103bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103df91906111f9565b6040516335d2155560e11b81523360048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636ba42aaa90602401602060405180830381865afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a91906111b8565b61048757604051631ea2564f60e31b815260040160405180910390fd5b6101f48311156104aa5760405163428637bb60e11b815260040160405180910390fd5b6001600160a01b0384166104d15760405163d92e233d60e01b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031603610523576040516320db826760e01b815260040160405180910390fd5b81516000819003610547576040516320db826760e01b815260040160405180910390fd5b846001600160a01b03168360008151811061056457610564611212565b6020026020010151600001516001600160a01b031614610597576040516320db826760e01b815260040160405180910390fd5b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016836105cd60018461123e565b815181106105dd576105dd611212565b6020026020010151602001516001600160a01b031614610610576040516320db826760e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201526000906001600160a01b038716906370a0823190602401602060405180830381865afa158015610657573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067b91906111f9565b90508060000361069e576040516340561e0d60e01b815260040160405180910390fd5b60006106ab858388610aa4565b9050806000036106ce576040516305fcedf360e01b815260040160405180910390fd5b6107026001600160a01b0388167f000000000000000000000000000000000000000000000000000000000000000084610c55565b604051631e82ecdb60e31b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f41766d89061075990869086908b90309042906004016112b1565b6000604051808303816000875af1158015610778573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107a091908101906112ed565b9050876001600160a01b0316336001600160a01b03167f8cb0738e1e81a2d7372c7ee89dc192c0122d3d4b47528ceb82ab3947d1e040e88584600186516107e7919061123e565b815181106107f7576107f7611212565b60200260200101518a60405161080f9392919061137e565b60405180910390a350506040516370a0823160e01b8152306004820152600092508391506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015610884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a891906111f9565b6108b2919061123e565b905080156108f15780600160006108ce4262093a808106900390565b815260200190815260200160002060008282546108eb91906113a6565b90915550505b50506108fd6001600055565b505050565b600061090c610a7a565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109555760405163ea8e4eb560e01b815260040160405180910390fd5b6040516370a0823160e01b81523060048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa1580156109b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109dd91906111f9565b90508015610a6d57610a396001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f000000000000000000000000000000000000000000000000000000000000000083610ce5565b6040518181527f75d46d90b68dabaae9c3f83d09c4dbe472247c44e5f7b51dbf62b44487c7896b9060200160405180910390a15b610a776001600055565b90565b600260005403610a9d57604051633ee5aeb560e01b815260040160405180910390fd5b6002600055565b8251600090815b81811015610c28576000868281518110610ac757610ac7611212565b60209081029190910181015180519181015160408083015190516379bc57d560e01b81526001600160a01b0394851660048201529184166024830152151560448201529092506000917f000000000000000000000000000000000000000000000000000000000000000016906379bc57d590606401602060405180830381865afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d91906113b9565b90506001600160a01b038116610b9a576000945050505050610c4e565b8151604051639e8cc04b60e01b81526001600160a01b0391821660048201526024810189905260036044820152600091831690639e8cc04b90606401602060405180830381865afa158015610bf3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1791906111f9565b97505060019092019150610aab9050565b50612710610c36848261123e565b610c4090866113d6565b610c4a91906113ed565b9150505b9392505050565b604051636eb1769f60e11b81523060048201526001600160a01b0383811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015610ca5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc991906111f9565b9050610cdf8484610cda85856113a6565b610d44565b50505050565b6040516001600160a01b038381166024830152604482018390526108fd91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610dd0565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052610d958482610e38565b610cdf576040516001600160a01b03848116602483015260006044830152610dca91869182169063095ea7b390606401610d12565b610cdf84825b6000610de56001600160a01b03841683610ee2565b90508051600014158015610e0a575080806020019051810190610e0891906111b8565b155b156108fd57604051635274afe760e01b81526001600160a01b03841660048201526024015b60405180910390fd5b6000806000846001600160a01b031684604051610e55919061140f565b6000604051808303816000865af19150503d8060008114610e92576040519150601f19603f3d011682016040523d82523d6000602084013e610e97565b606091505b5091509150818015610ec1575080511580610ec1575080806020019051810190610ec191906111b8565b8015610ed757506000856001600160a01b03163b115b925050505b92915050565b6060610c4e8383600084600080856001600160a01b03168486604051610f08919061140f565b60006040518083038185875af1925050503d8060008114610f45576040519150601f19603f3d011682016040523d82523d6000602084013e610f4a565b606091505b5091509150610f5a868383610f64565b9695505050505050565b606082610f7957610f7482610fc0565b610c4e565b8151158015610f9057506001600160a01b0384163b155b15610fb957604051639996b31560e01b81526001600160a01b0385166004820152602401610e2f565b5080610c4e565b805115610fd05780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b600060208284031215610ffe57600080fd5b5035919050565b6001600160a01b0381168114610fe957600080fd5b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156110535761105361101a565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156110825761108261101a565b604052919050565b600067ffffffffffffffff8211156110a4576110a461101a565b5060051b60200190565b8015158114610fe957600080fd5b600080600060608085870312156110d257600080fd5b84356110dd81611005565b9350602085810135935060408087013567ffffffffffffffff81111561110257600080fd5b8701601f8101891361111357600080fd5b80356111266111218261108a565b611059565b81815260609091028201840190848101908b83111561114457600080fd5b928501925b828410156111a75786848d0312156111615760008081fd5b611169611030565b843561117481611005565b81528487013561118381611005565b8188015284860135611194816110ae565b8187015282529286019290850190611149565b809750505050505050509250925092565b6000602082840312156111ca57600080fd5b8151610c4e816110ae565b600080604083850312156111e857600080fd5b505080516020909101519092909150565b60006020828403121561120b57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610edc57610edc611228565b60008151808452602080850194506020840160005b838110156112a657815180516001600160a01b03908116895284820151168489015260409081015115159088015260609096019590820190600101611266565b509495945050505050565b85815284602082015260a0604082015260006112d060a0830186611251565b6001600160a01b0394909416606083015250608001529392505050565b6000602080838503121561130057600080fd5b825167ffffffffffffffff81111561131757600080fd5b8301601f8101851361132857600080fd5b80516113366111218261108a565b81815260059190911b8201830190838101908783111561135557600080fd5b928401925b828410156113735783518252928401929084019061135a565b979650505050505050565b83815282602082015260606040820152600061139d6060830184611251565b95945050505050565b80820180821115610edc57610edc611228565b6000602082840312156113cb57600080fd5b8151610c4e81611005565b8082028115828204841417610edc57610edc611228565b60008261140a57634e487b7160e01b600052601260045260246000fd5b500490565b6000825160005b818110156114305760208186018101518583015201611416565b50600092019182525091905056fea2646970667358221220cf21f82115c185ed6ead42e2e91b05fc87d3af254ff67045766521145e6b459f64736f6c63430008190033000000000000000000000000690a74d2ec0175a69c0962b309e03021c0b5002e000000000000000000000000dfc7c877a950e49d2610114102175a06c2e3167a0000000000000000000000008680ceabcb9b56913c519c069add6bc3494b7020000000000000000000000000000000000000000000000000000000000000021f