[ { "inputs": [ { "internalType": "uint256", "name": "pid_", "type": "uint256" }, { "internalType": "address", "name": "stakingToken_", "type": "address" }, { "internalType": "address", "name": "rewardToken_", "type": "address" }, { "internalType": "address", "name": "operator_", "type": "address" }, { "internalType": "address", "name": "rewardManager_", "type": "address" }, { "internalType": "address", "name": "lptoken_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "caller", "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": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "reward", "type": "uint256" } ], "name": "RewardPaid", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Staked", "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": "caller", "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": "user", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdrawn", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "_reward", "type": "address" } ], "name": "addExtraReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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": "amount", "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": [], "name": "clearExtraRewards", "outputs": [], "stateMutability": "nonpayable", "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": "currentRewards", "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": [], "name": "duration", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "earned", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "extraRewards", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "extraRewardsLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_account", "type": "address" }, { "internalType": "bool", "name": "_claimExtras", "type": "bool" } ], "name": "getReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "historicalRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "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": "newRewardRatio", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "operator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "periodFinish", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pid", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "shares", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "processIdleRewards", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rewards", "type": "uint256" } ], "name": "queueNewRewards", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "queuedRewards", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [], "name": "rewardManager", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": [], "name": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "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": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "stake", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakeAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_for", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "stakeFor", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "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" }, { "internalType": "bool", "name": "claim", "type": "bool" } ], "name": "withdraw", "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": [ { "internalType": "bool", "name": "claim", "type": "bool" } ], "name": "withdrawAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "claim", "type": "bool" } ], "name": "withdrawAllAndUnwrap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bool", "name": "claim", "type": "bool" } ], "name": "withdrawAndUnwrap", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ]
6101206040526000805560006001556000600455600060055560006006553480156200002a57600080fd5b50604051620036e5380380620036e5833981810160405260c08110156200005057600080fd5b508051602080830151604084015160608086015160808088015160a09889015161010089905286851b6001600160601b0319908116909a5285851b8a1690925282841b891660c0529283901b90971660e0526001600c55600d80546001600160a01b0319166001600160a01b03808a16919091179182905596979496939591949293620000ef92911690859060001990620000fb811b62001e9217901c565b5050505050506200050e565b80158062000185575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b1580156200015557600080fd5b505afa1580156200016a573d6000803e3d6000fd5b505050506040513d60208110156200018157600080fd5b5051155b620001c25760405162461bcd60e51b8152600401808060200182810382526036815260200180620036af6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b179091526200021a9185916200021f16565b505050565b60606200027b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620002db60201b62001faa179092919060201c565b8051909150156200021a578080602001905160208110156200029c57600080fd5b50516200021a5760405162461bcd60e51b815260040180806020018281038252602a81526020018062003685602a913960400191505060405180910390fd5b6060620002ec8484600085620002f6565b90505b9392505050565b606082471015620003395760405162461bcd60e51b81526004018080602001828103825260268152602001806200365f6026913960400191505060405180910390fd5b62000344856200045e565b62000396576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310620003d75780518252601f199092019160209182019101620003b6565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146200043b576040519150601f19603f3d011682016040523d82523d6000602084013e62000440565b606091505b5090925090506200045382828662000464565b979650505050505050565b3b151590565b6060831562000475575081620002ef565b825115620004865782518084602001fd5b8160405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620004d2578181015183820152602001620004b8565b50505050905090810190601f168015620005005780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b60805160601c60a05160601c60c05160601c60e05160601c610100516130ab620005b46000398061143552806117565280611e4c5280612b0a525080610a315280610c9952806111f45250806110c352806110f2528061147852806117275280612b41525080610aa35280610d795280610f77528061138e528061151152806118cb528061191852806119d95280611bb25250806116fe5280611e7052506130ab6000f3fe608060405234801561001057600080fd5b50600436106103985760003560e01c80636e553f65116101e9578063ba0876521161010f578063d55a23f4116100ad578063ebe2b12b1161007c578063ebe2b12b1461098e578063ef8b30f7146104e7578063f106845414610996578063f7c618c11461099e57610398565b8063d55a23f41461092a578063d905777e14610932578063dd62ed3e14610958578063df136d651461098657610398565b8063c6e6f592116100e9578063c6e6f5921461048a578063c8f33c91146108f4578063cd3daf9d146108fc578063ce96cb771461090457610398565b8063ba08765214610875578063c32e7202146108a9578063c63d75b6146108ce57610398565b80638dcb406111610187578063a694fc3a11610156578063a694fc3a146107f8578063a9059cbb14610815578063b3d7f6b9146104e7578063b460af941461084157610398565b80638dcb4061146107b4578063901a7d53146107bc57806394bf804d146107c457806395d89b41146107f057610398565b806372f702f3116101c357806372f702f3146107765780637b0a47ee1461077e57806380faa57d146107865780638b8763471461078e57610398565b80636e553f65146106f65780637050ccd91461072257806370a082311461075057610398565b80632ee40908116102ce57806340c354461161026c578063590a41f51161023b578063590a41f5146106a35780635e43c47b146106c057806363d38c3b146106e65780636c8bcee8146106ee57610398565b806340c354461461064257806349f039a21461065f5780634cdad5061461067e578063570ca7351461069b57610398565b806338d52e0f116102a857806338d52e0f146106045780633d18b9121461060c5780633e8b83e314610614578063402d267d1461061c57610398565b80632ee4090814610595578063313ce567146105c157806338d07436146105df57610398565b80630a28a4771161033b57806318160ddd1161031557806318160ddd146105305780631c1c6fe51461053857806323b872dd14610557578063262d3d6d1461058d57610398565b80630a28a477146104e75780630f4ef8a6146105045780630fb5a6b41461052857610398565b806306fdde031161037757806306fdde03146103e75780630700037d1461046457806307a2d13a1461048a578063095ea7b3146104a757610398565b80628cc2621461039d57806301e1d114146103d55780630569d388146103dd575b600080fd5b6103c3600480360360208110156103b357600080fd5b50356001600160a01b03166109a6565b60408051918252519081900360200190f35b6103c3610a16565b6103e5610a26565b005b6103ef610a9f565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610429578181015183820152602001610411565b50505050905090810190601f1680156104565780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103c36004803603602081101561047a57600080fd5b50356001600160a01b0316610c63565b6103c3600480360360208110156104a057600080fd5b5035610a23565b6104d3600480360360408110156104bd57600080fd5b506001600160a01b038135169060200135610c75565b604080519115158252519081900360200190f35b6103c3600480360360208110156104fd57600080fd5b5035610c8c565b61050c610c97565b604080516001600160a01b039092168252519081900360200190f35b6103c3610cbb565b6103c3610cc2565b6103e56004803603602081101561054e57600080fd5b50351515610ccc565b6104d36004803603606081101561056d57600080fd5b506001600160a01b03813581169160208101359091169060400135610cea565b6103c3610d5a565b6104d3600480360360408110156105ab57600080fd5b506001600160a01b038135169060200135610d60565b6105c9610de9565b6040805160ff9092168252519081900360200190f35b6104d3600480360360408110156105f557600080fd5b50803590602001351515610dee565b61050c61101f565b6104d361102e565b6103e5611043565b6103c36004803603602081101561063257600080fd5b50356001600160a01b031661106e565b61050c6004803603602081101561065857600080fd5b5035611075565b6103e56004803603602081101561067557600080fd5b5035151561109c565b6103c36004803603602081101561069457600080fd5b50356110b6565b61050c6110c1565b6104d3600480360360208110156106b957600080fd5b50356110e5565b6104d3600480360360208110156106d657600080fd5b50356001600160a01b03166111e7565b6103c3611307565b6103c361130d565b6103c36004803603604081101561070c57600080fd5b50803590602001356001600160a01b0316611313565b6104d36004803603604081101561073857600080fd5b506001600160a01b038135169060200135151561166e565b6103c36004803603602081101561076657600080fd5b50356001600160a01b03166118be565b61050c6118c9565b6103c36118ed565b6103c36118f3565b6103c3600480360360208110156107a457600080fd5b50356001600160a01b0316611901565b6104d3611913565b6103c36119c3565b6103c3600480360360408110156107da57600080fd5b50803590602001356001600160a01b03166119c9565b6103ef6119d5565b6104d36004803603602081101561080e57600080fd5b5035611b99565b6104d36004803603604081101561082b57600080fd5b506001600160a01b038135169060200135611c18565b6103c36004803603606081101561085757600080fd5b508035906001600160a01b0360208201358116916040013516611c25565b6103c36004803603606081101561088b57600080fd5b508035906001600160a01b0360208201358116916040013516611d5a565b6104d3600480360360408110156108bf57600080fd5b50803590602001351515611d6f565b6103c3600480360360208110156108e457600080fd5b50356001600160a01b0316611d98565b6103c3611da3565b6103c3611da9565b6103c36004803603602081101561091a57600080fd5b50356001600160a01b0316611df7565b6103c3611e02565b6103c36004803603602081101561094857600080fd5b50356001600160a01b0316611e08565b6103c36004803603604081101561096e57600080fd5b506001600160a01b0381358116916020013516611e13565b6103c3611e3e565b6103c3611e44565b6103c3611e4a565b61050c611e6e565b6001600160a01b0381166000908152600960209081526040808320546008909252822054610a0e9190610a0890670de0b6b3a764000090610a02906109f3906109ed611da9565b90611fb9565b6109fc886118be565b90612016565b9061206f565b906120d6565b90505b919050565b6000610a20610cc2565b90505b90565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a91576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b610a9d600b6000612e90565b565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166306fdde036040518163ffffffff1660e01b815260040160006040518083038186803b158015610afa57600080fd5b505afa158015610b0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610b3757600080fd5b8101908080516040519392919084640100000000821115610b5757600080fd5b908301906020820185811115610b6c57600080fd5b8251640100000000811182820188101715610b8657600080fd5b82525081516020918201929091019080838360005b83811015610bb3578181015183820152602001610b9b565b50505050905090810190601f168015610be05780820380516001836020036101000a031916815260200191505b506040525050506040516020018082805190602001908083835b60208310610c195780518252601f199092019160209182019101610bfa565b6001836020036101000a03801982511681845116808217855250505050505090500180650815985d5b1d60d21b815250600601915050604051602081830303815290604052905090565b60096020526000908152604090205481565b6000610c82338484612130565b5060015b92915050565b6000610a0e82610a23565b7f000000000000000000000000000000000000000000000000000000000000000081565b62093a8081565b6000610a2061221c565b336000908152600a6020526040902054610ce69082610dee565b5050565b600080610d35836040518060600160405280602c8152602001612f5e602c91396001600160a01b0388166000908152600e602090815260408083203384529091529020549190612222565b9050610d42853383612130565b610d4d8585856122b9565b60019150505b9392505050565b60065481565b6000610d6c82846125ed565b610da16001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856127af565b6040805183815290516001600160a01b038516917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250600192915050565b601290565b600033610df9611da9565b600355610e046118f3565b6002556001600160a01b03811615610e4b57610e1f816109a6565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b60008411610ea0576040805162461bcd60e51b815260206004820152601e60248201527f526577617264506f6f6c203a2043616e6e6f7420776974686472617720300000604482015290519081900360640190fd5b60005b600b54811015610f3357600b8181548110610eba57fe5b60009182526020822001546040805163f3fef3a360e01b81523360048201526024810189905290516001600160a01b039092169263f3fef3a39260448084019382900301818387803b158015610f0f57600080fd5b505af1158015610f23573d6000803e3d6000fd5b505060019092019150610ea39050565b50600754610f419085611fb9565b600755336000908152600a6020526040902054610f5e9085611fb9565b336000818152600a6020526040902091909155610fa6907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316908661280f565b60408051858152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a28215610fef57610fed33600161166e565b505b6040805185815290516000913391600080516020612fab8339815191529181900360200190a35060019392505050565b600d546001600160a01b031681565b600061103b33600161166e565b506001905090565b600054421015801561105757506000600454115b15610a9d57611067600454612861565b6000600455565b5060001990565b600b818154811061108257fe5b6000918252602090912001546001600160a01b0316905081565b336000908152600a6020526040902054610ce69082611d6f565b6000610a0e82610c8c565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611152576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b6004546111609083906120d6565b915060005442106111815761117482612861565b5060006004556001610a11565b6000805461119d906111969062093a80611fb9565b4290611fb9565b600154909150810260006111b785610a02846103e8612016565b905061033e8110156111d6576111cc85612861565b60006004556111dc565b60048590555b506001949350505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611254576040805162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b604482015290519081900360640190fd5b6001600160a01b0382166112a1576040805162461bcd60e51b815260206004820152600f60248201526e217265776172642073657474696e6760881b604482015290519081900360640190fd5b600b54600c116112b357506000610a11565b50600b8054600181810183556000929092527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0384166001600160a01b0319909116179055919050565b60045481565b61033e81565b60006002600c54141561136d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600c55600d5461138a906001600160a01b03163330866127af565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156113f957600080fd5b505afa15801561140d573d6000803e3d6000fd5b505050506040513d602081101561142357600080fd5b5051604080516321d0683360e11b81527f000000000000000000000000000000000000000000000000000000000000000060048201526024810187905260006044820181905291519293506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016926343a0d06692606480840193602093929083900390910190829087803b1580156114c257600080fd5b505af11580156114d6573d6000803e3d6000fd5b505050506040513d60208110156114ec57600080fd5b5050604080516370a0823160e01b815230600482015290516000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916370a0823191602480820192602092909190829003018186803b15801561155857600080fd5b505afa15801561156c573d6000803e3d6000fd5b505050506040513d602081101561158257600080fd5b50519050846115918284611fb9565b10156115cf576040805162461bcd60e51b81526020600482015260086024820152670859195c1bdcda5d60c21b604482015290519081900360640190fd5b6115d985856125ed565b604080518681526020810187905281516001600160a01b0387169233927fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d7929081900390910190a36040805186815290516001600160a01b038616917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250506001600c555090919050565b600082611679611da9565b6003556116846118f3565b6002556001600160a01b038116156116cb5761169f816109a6565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b60006116d6856109a6565b9050801561181c576001600160a01b03808616600090815260096020526040812055611725907f000000000000000000000000000000000000000000000000000000000000000016868361280f565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371192b177f000000000000000000000000000000000000000000000000000000000000000087846040518463ffffffff1660e01b815260040180848152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156117c457600080fd5b505af11580156117d8573d6000803e3d6000fd5b50506040805184815290516001600160a01b03891693507fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e048692509081900360200190a25b83156111dc5760005b600b548110156118b257600b818154811061183c57fe5b600091825260208220015460408051630c00007b60e41b81526001600160a01b038a811660048301529151919092169263c00007b0926024808201939182900301818387803b15801561188e57600080fd5b505af11580156118a2573d6000803e3d6000fd5b5050600190920191506118259050565b50506001949350505050565b6000610a0e82612985565b7f000000000000000000000000000000000000000000000000000000000000000081565b60015481565b6000610a20426000546129a0565b60086020526000908152604090205481565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231336040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561198357600080fd5b505afa158015611997573d6000803e3d6000fd5b505050506040513d60208110156119ad57600080fd5b505190506119ba81611b99565b50600191505090565b60055481565b6000610d538383611313565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015611a3057600080fd5b505afa158015611a44573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015611a6d57600080fd5b8101908080516040519392919084640100000000821115611a8d57600080fd5b908301906020820185811115611aa257600080fd5b8251640100000000811182820188101715611abc57600080fd5b82525081516020918201929091019080838360005b83811015611ae9578181015183820152602001611ad1565b50505050905090810190601f168015611b165780820380516001836020036101000a031916815260200191505b506040525050506040516020018082805190602001908083835b60208310611b4f5780518252601f199092019160209182019101611b30565b6001836020036101000a03801982511681845116808217855250505050505090500180650b5d985d5b1d60d21b815250600601915050604051602081830303815290604052905090565b6000611ba582336125ed565b611bda6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856127af565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a2506001919050565b6000610c823384846122b9565b60006002600c541415611c7f576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b6002600c55336001600160a01b03831614611ce657611ce68233611ce1876040518060600160405280602c8152602001612f5e602c91396001600160a01b0388166000908152600e602090815260408083203384529091529020549190612222565b612130565b611cf18483856129b6565b50816001600160a01b0316836001600160a01b0316336001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8788604051808381526020018281526020019250505060405180910390a450506001600c555090565b6000611d67848484611c25565b949350505050565b6000611d7c8333336129b6565b508115610c8257611d8e33600161166e565b5050600192915050565b6000610a0e8261106e565b60025481565b6000611db3610cc2565b611dc05750600354610a23565b610a20611dee611dce610cc2565b610a02670de0b6b3a76400006109fc6001546109fc6002546109ed6118f3565b600354906120d6565b6000610a0e826118be565b600b5490565b6000610a0e82611df7565b6001600160a01b039182166000908152600e6020908152604080832093909416825291909152205490565b60035481565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b801580611f18575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b158015611eea57600080fd5b505afa158015611efe573d6000803e3d6000fd5b505050506040513d6020811015611f1457600080fd5b5051155b611f535760405162461bcd60e51b81526004018080602001828103825260368152602001806130406036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b179052611fa5908490612c17565b505050565b6060611d678484600085612cc8565b600082821115612010576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60008261202557506000610c86565b8282028284828161203257fe5b0414610d535760405162461bcd60e51b8152600401808060200182810382526021815260200180612f8a6021913960400191505060405180910390fd5b60008082116120c5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816120ce57fe5b049392505050565b600082820183811015610d53576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b0383166121755760405162461bcd60e51b8152600401808060200182810382526026815260200180612ff06026913960400191505060405180910390fd5b6001600160a01b0382166121ba5760405162461bcd60e51b8152600401808060200182810382526024815260200180612f146024913960400191505060405180910390fd5b6001600160a01b038084166000818152600e6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b60075490565b600081848411156122b15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561227657818101518382015260200161225e565b50505050905090810190601f1680156122a35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b826122c2611da9565b6003556122cd6118f3565b6002556001600160a01b03811615612314576122e8816109a6565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b8261231d611da9565b6003556123286118f3565b6002556001600160a01b0381161561236f57612343816109a6565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6001600160a01b0385166123b45760405162461bcd60e51b8152600401808060200182810382526025815260200180612fcb6025913960400191505060405180910390fd5b6001600160a01b0384166123f95760405162461bcd60e51b8152600401808060200182810382526023815260200180612ecb6023913960400191505060405180910390fd5b6001600160a01b0385166000908152600a6020526040902054838110156124515760405162461bcd60e51b8152600401808060200182810382526026815260200180612eee6026913960400191505060405180910390fd5b60005b600b5481101561256657600b818154811061246b57fe5b60009182526020822001546040805163f3fef3a360e01b81526001600160a01b038b81166004830152602482018a90529151919092169263f3fef3a3926044808201939182900301818387803b1580156124c457600080fd5b505af11580156124d8573d6000803e3d6000fd5b50505050600b81815481106124e957fe5b6000918252602082200154604080516356e4bb9760e11b81526001600160a01b038a81166004830152602482018a90529151919092169263adc9772e926044808201939182900301818387803b15801561254257600080fd5b505af1158015612556573d6000803e3d6000fd5b5050600190920191506124549050565b506125718185611fb9565b6001600160a01b038088166000908152600a602052604080822093909355908716815220546125a090856120d6565b6001600160a01b038087166000818152600a602090815260409182902094909455805188815290519193928a1692600080516020612fab83398151915292918290030190a3505050505050565b806125f6611da9565b6003556126016118f3565b6002556001600160a01b038116156126485761261c816109a6565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6000831161269d576040805162461bcd60e51b815260206004820152601b60248201527f526577617264506f6f6c203a2043616e6e6f74207374616b6520300000000000604482015290519081900360640190fd5b60005b600b5481101561273457600b81815481106126b757fe5b6000918252602082200154604080516356e4bb9760e11b81526001600160a01b038781166004830152602482018990529151919092169263adc9772e926044808201939182900301818387803b15801561271057600080fd5b505af1158015612724573d6000803e3d6000fd5b5050600190920191506126a09050565b5060075461274290846120d6565b6007556001600160a01b0382166000908152600a602052604090205461276890846120d6565b6001600160a01b0383166000818152600a60209081526040808320949094558351878152935192939192600080516020612fab8339815191529281900390910190a3505050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052612809908590612c17565b50505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052611fa5908490612c17565b600061286b611da9565b6003556128766118f3565b6002556001600160a01b038116156128bd57612891816109a6565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b6006546128ca90836120d6565b60065560005442106128eb576128e38262093a8061206f565b600155612933565b600080546128f99042611fb9565b905060006129126001548361201690919063ffffffff16565b905061291e84826120d6565b935061292d8462093a8061206f565b60015550505b600582905542600281905561294b9062093a806120d6565b6000556040805183815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a15050565b6001600160a01b03166000908152600a602052604090205490565b60008183106129af5781610d53565b5090919050565b6000826129c1611da9565b6003556129cc6118f3565b6002556001600160a01b03811615612a13576129e7816109a6565b6001600160a01b0382166000908152600960209081526040808320939093556003546008909152919020555b60005b600b54811015612aaa57600b8181548110612a2d57fe5b60009182526020822001546040805163f3fef3a360e01b81526001600160a01b038981166004830152602482018b90529151919092169263f3fef3a3926044808201939182900301818387803b158015612a8657600080fd5b505af1158015612a9a573d6000803e3d6000fd5b505060019092019150612a169050565b50600754612ab89086611fb9565b6007556001600160a01b0384166000908152600a6020526040902054612ade9086611fb9565b6001600160a01b038086166000908152600a60205260408082209390935582516305335c3960e21b81527f0000000000000000000000000000000000000000000000000000000000000000600482015260248101899052868316604482015292517f0000000000000000000000000000000000000000000000000000000000000000909216926314cd70e4926064808301939282900301818387803b158015612b8657600080fd5b505af1158015612b9a573d6000803e3d6000fd5b50506040805188815290516001600160a01b03881693507f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d592509081900360200190a26040805186815290516000916001600160a01b03871691600080516020612fab8339815191529181900360200190a3506001949350505050565b6060612c6c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611faa9092919063ffffffff16565b805190915015611fa557808060200190516020811015612c8b57600080fd5b5051611fa55760405162461bcd60e51b815260040180806020018281038252602a815260200180613016602a913960400191505060405180910390fd5b606082471015612d095760405162461bcd60e51b8152600401808060200182810382526026815260200180612f386026913960400191505060405180910390fd5b612d1285612e24565b612d63576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b60208310612da25780518252601f199092019160209182019101612d83565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114612e04576040519150601f19603f3d011682016040523d82523d6000602084013e612e09565b606091505b5091509150612e19828286612e2a565b979650505050505050565b3b151590565b60608315612e39575081610d53565b825115612e495782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561227657818101518382015260200161225e565b5080546000825590600052602060002090810190612eae9190612eb1565b50565b5b80821115612ec65760008155600101612eb2565b509056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365455243343632363a20617070726f766520746f20746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c455243343632363a207769746864726177616c20616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373455243343632363a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a264697066735822122012bbd5cdc30bff7cd6196d323fe93e6127d11563d7a07815408d76d81c8a2d9164736f6c634300060c0033416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c5361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565645361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000000000000000000000000000000000000000000000001000000000000000000000000053c0a6f151d33b78a8ee70743616c30438f4666b000000000000000000000000fe8b128ba8c78aabc59d4c64cee7ff28e937992100000000000000000000000098ef32edd24e2c92525e59afc4475c1242a301840000000000000000000000002f4cdf0d46f4e3e6d4d37836e73073046138d4f70000000000000000000000000244b0025264dc5f5c113d472d579c9c994a59ce