[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "uint256", "name": "_minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "_adminFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "_reinvestRewardBips", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "AllowDepositor", "type": "event" }, { "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": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "DepositsEnabled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "token", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Recovered", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newTotalDeposits", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newTotalSupply", "type": "uint256" } ], "name": "Reinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "RemoveDepositor", "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": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateAdminFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldValue", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newValue", "type": "address" } ], "name": "UpdateDevAddr", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateDevFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMaxTokensToDepositWithoutReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateMinTokensToReinvest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldValue", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "UpdateReinvestReward", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "inputs": [], "name": "ADMIN_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEPOSITS_ENABLED", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DEV_FEE_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_TOKENS_TO_DEPOSIT_WITHOUT_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MIN_TOKENS_TO_REINVEST", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PID", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REINVEST_REWARD_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "VERSION_HASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "allowDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "allowedDepositors", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkReward", "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": "amount", "type": "uint256" } ], "name": "deposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositFor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "depositToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "depositWithPermit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "devAddr", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateDeployedBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "estimateReinvestReward", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getDepositTokensForShares", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getSharesForDepositTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numberOfAllowedDepositors", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "recoverAVAX", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "recoverERC20", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "reinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "depositor", "type": "address" } ], "name": "removeDepositor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "minReturnAmountAccepted", "type": "uint256" }, { "internalType": "bool", "name": "disableDeposits", "type": "bool" } ], "name": "rescueDeployedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "revokeAllowance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract IRouter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "setAllowances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingContract", "outputs": [ { "internalType": "contract ILydiaChef", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDeposits", "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": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "src", "type": "address" }, { "internalType": "address", "name": "dst", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateAdminFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "newValue", "type": "bool" } ], "name": "updateDepositsEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newValue", "type": "address" } ], "name": "updateDevAddr", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateDevFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMaxTokensToDepositWithoutReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateMinTokensToReinvest", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newValue", "type": "uint256" } ], "name": "updateReinvestReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60c060405260096080819052685969656c642059616b60b81b60a09081526200002c916000919062000bd2565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162000bd2565b503480156200006757600080fd5b5060405162004e5f38038062004e5f83398181016040526101608110156200008e57600080fd5b8101908080516040519392919084640100000000821115620000af57600080fd5b908301906020820185811115620000c557600080fd5b8251640100000000811182820188101715620000e057600080fd5b82525081516020918201929091019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e087015161010088015161012089015161014090990151979a509598509396929591949093929091600062000195620002db565b600680546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004e3f833981519152908290a3508a51620001e79060009060208e019062000bd2565b50600a80546001600160a01b03808d166001600160a01b031992831617909255600b80548c8416908316179055601480548b841690831617905560138054928a16928216929092179091556015869055600c8054909116331790556200024c620002df565b62000257846200064f565b6200026283620006f9565b6200026d82620007e9565b6200027881620008c5565b620002846001620009a1565b6200028f8662000a67565b604080516000808252602082015281517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234929181900390910190a1505050505050505050505062000c6e565b3390565b620002e9620002db565b6001600160a01b0316620002fc62000b61565b6001600160a01b03161462000347576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e1f833981519152604482015290519081900360640190fd5b600a546014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015620003a257600080fd5b505af1158015620003b7573d6000803e3d6000fd5b505050506040513d6020811015620003ce57600080fd5b5050600b546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200042b57600080fd5b505af115801562000440573d6000803e3d6000fd5b505050506040513d60208110156200045757600080fd5b5050600a5460408051630dfe168160e01b815290516001600160a01b0390921691630dfe168191600480820192602092909190829003018186803b1580156200049f57600080fd5b505afa158015620004b4573d6000803e3d6000fd5b505050506040513d6020811015620004cb57600080fd5b50516013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200052557600080fd5b505af11580156200053a573d6000803e3d6000fd5b505050506040513d60208110156200055157600080fd5b5050600a546040805163d21220a760e01b815290516001600160a01b039092169163d21220a791600480820192602092909190829003018186803b1580156200059957600080fd5b505afa158015620005ae573d6000803e3d6000fd5b505050506040513d6020811015620005c557600080fd5b50516013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156200061f57600080fd5b505af115801562000634573d6000803e3d6000fd5b505050506040513d60208110156200064b57600080fd5b5050565b62000659620002db565b6001600160a01b03166200066c62000b61565b6001600160a01b031614620006b7576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e1f833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b62000703620002db565b6001600160a01b03166200071662000b61565b6001600160a01b03161462000761576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e1f833981519152604482015290519081900360640190fd5b6127106200079b601054620007876012548562000b7060201b620026f91790919060201c565b62000b7060201b620026f91790919060201c565b1115620007a757600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b620007f3620002db565b6001600160a01b03166200080662000b61565b6001600160a01b03161462000851576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e1f833981519152604482015290519081900360640190fd5b61271062000877601054620007876011548562000b7060201b620026f91790919060201c565b11156200088357600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b620008cf620002db565b6001600160a01b0316620008e262000b61565b6001600160a01b0316146200092d576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e1f833981519152604482015290519081900360640190fd5b61271062000953601254620007876011548562000b7060201b620026f91790919060201c565b11156200095f57600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b620009ab620002db565b6001600160a01b0316620009be62000b61565b6001600160a01b03161462000a09576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e1f833981519152604482015290519081900360640190fd5b600f5460ff161515811515141562000a2057600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b62000a71620002db565b6001600160a01b031662000a8462000b61565b6001600160a01b03161462000acf576040805162461bcd60e51b8152602060048201819052602482015260008051602062004e1f833981519152604482015290519081900360640190fd5b6001600160a01b03811662000b165760405162461bcd60e51b815260040180806020018281038252602681526020018062004df96026913960400191505060405180910390fd5b6006546040516001600160a01b0380841692169060008051602062004e3f83398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031690565b60008282018381101562000bcb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000c1557805160ff191683800117855562000c45565b8280016001018555821562000c45579182015b8281111562000c4557825182559160200191906001019062000c28565b5062000c5392915062000c57565b5090565b5b8082111562000c53576000815560010162000c58565b61417b8062000c7e6000396000f3fe608060405234801561001057600080fd5b50600436106103835760003560e01c80638b73e606116101de578063c89039c51161010f578063e21ac825116100ad578063f2fde38b1161007c578063f2fde38b1461093c578063f7c618c114610962578063f887ea401461096a578063fdb5a03e1461097257610383565b8063e21ac825146108f2578063eab89a5a1461090f578063ed24911d1461092c578063ee99205c1461093457610383565b8063da09c72c116100e9578063da09c72c14610897578063dbd9a4d41461089f578063dd62ed3e146108a7578063dd8ce4d6146108d557610383565b8063c89039c514610821578063cff1b6ef14610829578063d505accf1461084657610383565b8063a9059cbb1161017c578063b6b55f2511610156578063b6b55f25146107ec578063b9e57b8014610809578063bd079f5514610811578063c4b24a461461081957610383565b8063a9059cbb14610793578063ac0d31ff146107bf578063b52a321f146107e457610383565b806395d89b41116101b857806395d89b411461074957806399729ec1146107515780639e4e73181461076e578063a8ae2b7c1461077657610383565b80638b73e606146106d95780638da5cb5b146106ff5780639291d5631461072357610383565b80634bebd1e7116102b8578063789139bc116102565780637ecebe00116102305780637ecebe001461066257806381837230146106885780638980f11f146106a55780638aff733d146106d157610383565b8063789139bc146106245780637ae267731461062c5780637d8820971461065a57610383565b80635ea682ea116102925780635ea682ea146105e65780635eaec0e4146105ee57806370a08231146105f6578063715018a61461061c57610383565b80634bebd1e7146105845780634e77ace5146105aa5780634ebb7916146105c957610383565b80632e1a7d4d11610325578063313ce567116102ff578063313ce567146105005780633bdc6e721461051e578063483c2ef0146105265780634a970be71461054c57610383565b80632e1a7d4d146104ad5780632f4f21e2146104cc57806330adf81f146104f857610383565b80630f23475d116103615780630f23475d1461045f57806318160ddd1461046757806320606b701461046f57806323b872dd1461047757610383565b806306fdde03146103885780630767711114610405578063095ea7b31461041f575b600080fd5b61039061097a565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103ca5781810151838201526020016103b2565b50505050905090810190601f1680156103f75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61040d610a08565b60408051918252519081900360200190f35b61044b6004803603604081101561043557600080fd5b506001600160a01b038135169060200135610a0e565b604080519115158252519081900360200190f35b61040d610a25565b61040d610ac6565b61040d610acc565b61044b6004803603606081101561048d57600080fd5b506001600160a01b03813581169160208101359091169060400135610af0565b6104ca600480360360208110156104c357600080fd5b5035610bd2565b005b6104ca600480360360408110156104e257600080fd5b506001600160a01b038135169060200135610d14565b61040d610d1e565b610508610d42565b6040805160ff9092168252519081900360200190f35b61040d610d47565b61044b6004803603602081101561053c57600080fd5b50356001600160a01b0316610d4d565b6104ca600480360360a081101561056257600080fd5b5080359060208101359060ff6040820135169060608101359060800135610d62565b6104ca6004803603602081101561059a57600080fd5b50356001600160a01b0316610e1b565b6104ca600480360360208110156105c057600080fd5b50351515610f57565b6104ca600480360360208110156105df57600080fd5b5035611016565b61040d6110f2565b61040d6110f8565b61040d6004803603602081101561060c57600080fd5b50356001600160a01b03166110fe565b6104ca61111d565b61040d6111d6565b6104ca6004803603604081101561064257600080fd5b506001600160a01b03813581169160200135166111dc565b61040d6112cb565b61040d6004803603602081101561067857600080fd5b50356001600160a01b03166112d1565b6104ca6004803603602081101561069e57600080fd5b50356112e3565b6104ca600480360360408110156106bb57600080fd5b506001600160a01b038135169060200135611387565b61040d6114c2565b6104ca600480360360208110156106ef57600080fd5b50356001600160a01b03166114c8565b61070761162f565b604080516001600160a01b039092168252519081900360200190f35b6104ca6004803603602081101561073957600080fd5b50356001600160a01b031661163e565b610390611714565b6104ca6004803603602081101561076757600080fd5b503561176e565b61040d611841565b6104ca6004803603602081101561078c57600080fd5b5035611865565b61044b600480360360408110156107a957600080fd5b506001600160a01b038135169060200135611932565b6104ca600480360360408110156107d557600080fd5b5080359060200135151561193f565b61044b611bd0565b6104ca6004803603602081101561080257600080fd5b5035611bd9565b61040d611be6565b61040d611c2d565b61040d611c33565b610707611d62565b6104ca6004803603602081101561083f57600080fd5b5035611d71565b6104ca600480360360e081101561085c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611e3e565b610707611f3e565b6104ca611f4d565b61040d600480360360408110156108bd57600080fd5b506001600160a01b03813581169160200135166122a1565b61040d600480360360208110156108eb57600080fd5b50356122cc565b6104ca6004803603602081101561090857600080fd5b503561230b565b61040d6004803603602081101561092557600080fd5b50356123af565b61040d6123ef565b6107076124fc565b6104ca6004803603602081101561095257600080fd5b50356001600160a01b031661250b565b61070761261b565b61070761262a565b6104ca612639565b6000805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a005780601f106109d557610100808354040283529160200191610a00565b820191906000526020600020905b8154815290600101906020018083116109e357829003601f168201915b505050505081565b60115481565b6000610a1b33848461275a565b5060015b92915050565b601454601554604080517f93f1a40b0000000000000000000000000000000000000000000000000000000081526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610a9357600080fd5b505afa158015610aa7573d6000803e3d6000fd5b505050506040513d6040811015610abd57600080fd5b50519150505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610b2a57506000198114155b15610bbb576000610b56856040518060600160405280602f8152602001614071602f9139849190612872565b6001600160a01b0380891660008181526003602090815260408083209489168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b610bc6868686612909565b50600195945050505050565b6000610bdd826123af565b90508015610d1057610bee81612a16565b600a546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b158015610c4257600080fd5b505af1158015610c56573d6000803e3d6000fd5b505050506040513d6020811015610c6c57600080fd5b5051610cbf576040805162461bcd60e51b815260206004820152601c60248201527f4c796469615374726174656779466f724c503a3a776974686472617700000000604482015290519081900360640190fd5b610cc93383612ad9565b600954610cd69082612bae565b60095560408051828152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a25b5050565b610d108282612bf0565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b60086020526000908152604090205460ff1681565b600a54604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b158015610df257600080fd5b505af1158015610e06573d6000803e3d6000fd5b50505050610e143386612bf0565b5050505050565b610e23612d8b565b6001600160a01b0316610e3461162f565b6001600160a01b031614610e7d576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615610eeb576040805162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600860205260409020805460ff19166001908117909155600754610f1d916126f9565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b610f5f612d8b565b6001600160a01b0316610f7061162f565b6001600160a01b031614610fb9576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b600f5460ff1615158115151415610fcf57600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b61101e612d8b565b6001600160a01b031661102f61162f565b6001600160a01b031614611078576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b6000811161108557600080fd5b604051339082156108fc029083906000818181858888f193505050501580156110b2573d6000803e3d6000fd5b5060408051600081526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150565b60125481565b60155481565b6001600160a01b0381166000908152600460205260409020545b919050565b611125612d8b565b6001600160a01b031661113661162f565b6001600160a01b03161461117f576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36006805473ffffffffffffffffffffffffffffffffffffffff19169055565b600e5481565b6111e4612d8b565b6001600160a01b03166111f561162f565b6001600160a01b03161461123e576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b816001600160a01b031663095ea7b38260006040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561129657600080fd5b505af11580156112aa573d6000803e3d6000fd5b505050506040513d60208110156112c057600080fd5b5051610d1057600080fd5b60095481565b60056020526000908152604090205481565b6112eb612d8b565b6001600160a01b03166112fc61162f565b6001600160a01b031614611345576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b61138f612d8b565b6001600160a01b03166113a061162f565b6001600160a01b0316146113e9576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b600081116113f657600080fd5b6040805163a9059cbb60e01b81523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b505050506040513d602081101561146f57600080fd5b505161147a57600080fd5b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b60105481565b6114d0612d8b565b6001600160a01b03166114e161162f565b6001600160a01b03161461152a576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b60006007541161156b5760405162461bcd60e51b8152600401808060200182810382526034815260200180613ed36034913960400191505060405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff1615156001146115c75760405162461bcd60e51b815260040180806020018281038252602a815260200180613f2b602a913960400191505060405180910390fd5b6001600160a01b0381166000908152600860205260409020805460ff191690556007546115f5906001612bae565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b600c546001600160a01b0316331461169d576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015290519081900360640190fd5b600c54604080516001600160a01b039283168152918316602083015280517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009281900390910190a1600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610a005780601f106109d557610100808354040283529160200191610a00565b611776612d8b565b6001600160a01b031661178761162f565b6001600160a01b0316146117d0576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b6127106117f46010546117ee601154856126f990919063ffffffff16565b906126f9565b11156117ff57600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b61186d612d8b565b6001600160a01b031661187e61162f565b6001600160a01b0316146118c7576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b6127106118e56012546117ee601154856126f990919063ffffffff16565b11156118f057600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6000610a1b338484612909565b611947612d8b565b6001600160a01b031661195861162f565b6001600160a01b0316146119a1576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156119ec57600080fd5b505afa158015611a00573d6000803e3d6000fd5b505050506040513d6020811015611a1657600080fd5b5051601454601554604080517f5312ea8e0000000000000000000000000000000000000000000000000000000081526004810192909252519293506001600160a01b0390911691635312ea8e9160248082019260009290919082900301818387803b158015611a8457600080fd5b505af1158015611a98573d6000803e3d6000fd5b5050600a54604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b158015611ae957600080fd5b505afa158015611afd573d6000803e3d6000fd5b505050506040513d6020811015611b1357600080fd5b5051905083611b228284612bae565b1015611b5f5760405162461bcd60e51b8152600401808060200182810382526027815260200180613fbd6027913960400191505060405180910390fd5b600981905560025460408051838152602081019290925280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a1600f5460ff1615156001148015611bbb57506001831515145b15611bca57611bca6000610f57565b50505050565b600f5460ff1681565b611be33382612bf0565b50565b600080611bf1611c33565b9050600d548110611c2557611c1d612710611c1760105484612d8f90919063ffffffff16565b90612de8565b915050610ac3565b600091505090565b600d5481565b601454601554604080517f38e45d5a00000000000000000000000000000000000000000000000000000000815260048101929092523060248301525160009283926001600160a01b03909116916338e45d5a91604480820192602092909190829003018186803b158015611ca657600080fd5b505afa158015611cba573d6000803e3d6000fd5b505050506040513d6020811015611cd057600080fd5b5051600b54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611d2357600080fd5b505afa158015611d37573d6000803e3d6000fd5b505050506040513d6020811015611d4d57600080fd5b50519050611d5b82826126f9565b9250505090565b600a546001600160a01b031681565b611d79612d8b565b6001600160a01b0316611d8a61162f565b6001600160a01b031614611dd3576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b612710611df16010546117ee601254856126f990919063ffffffff16565b1115611dfc57600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b42841015611e93576040805162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a657870697265640000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938a1660608401526080830189905260a083019390935260c08083018890528151808403909101815260e090920190528051910120611f298882868686612e2a565b611f3488888861275a565b5050505050505050565b600c546001600160a01b031681565b611f55612d8b565b6001600160a01b0316611f6661162f565b6001600160a01b031614611faf576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b600a546014546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561200957600080fd5b505af115801561201d573d6000803e3d6000fd5b505050506040513d602081101561203357600080fd5b5050600b546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561208f57600080fd5b505af11580156120a3573d6000803e3d6000fd5b505050506040513d60208110156120b957600080fd5b5050600a5460408051630dfe168160e01b815290516001600160a01b0390921691630dfe168191600480820192602092909190829003018186803b15801561210057600080fd5b505afa158015612114573d6000803e3d6000fd5b505050506040513d602081101561212a57600080fd5b50516013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561218357600080fd5b505af1158015612197573d6000803e3d6000fd5b505050506040513d60208110156121ad57600080fd5b5050600a546040805163d21220a760e01b815290516001600160a01b039092169163d21220a791600480820192602092909190829003018186803b1580156121f457600080fd5b505afa158015612208573d6000803e3d6000fd5b505050506040513d602081101561221e57600080fd5b50516013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b15801561227757600080fd5b505af115801561228b573d6000803e3d6000fd5b505050506040513d6020811015610d1057600080fd5b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b60006122e5600954600254612d8f90919063ffffffff16565b6122f0575080611118565b610a1f600954611c1760025485612d8f90919063ffffffff16565b612313612d8b565b6001600160a01b031661232461162f565b6001600160a01b03161461236d576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b600e54604080519182526020820183905280517fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f9281900390910190a1600e55565b60006123c8600954600254612d8f90919063ffffffff16565b6123d457506000611118565b610a1f600254611c1760095485612d8f90919063ffffffff16565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b600060405180828054600181600116156101000203166002900480156124725780601f10612450576101008083540402835291820191612472565b820191906000526020600020905b81548152906001019060200180831161245e575b505091505060405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b6124ab612f62565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b6014546001600160a01b031681565b612513612d8b565b6001600160a01b031661252461162f565b6001600160a01b03161461256d576040805162461bcd60e51b81526020600482018190526024820152600080516020613f9d833981519152604482015290519081900360640190fd5b6001600160a01b0381166125b25760405162461bcd60e51b8152600401808060200182810382526026815260200180613e896026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600b546001600160a01b031681565b6013546001600160a01b031681565b32331461268d576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f41000000000000000000000000604482015290519081900360640190fd5b6000612697611c33565b9050600d548110156126f0576040805162461bcd60e51b815260206004820152601c60248201527f4c796469615374726174656779466f724c503a3a7265696e7665737400000000604482015290519081900360640190fd5b611be381612f66565b600082820183811015612753576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0383166127b5576040805162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038216612810576040805162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600081848411156129015760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156128c65781810151838201526020016128ae565b50505050905090810190601f1680156128f35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661294e5760405162461bcd60e51b8152600401808060200182810382526034815260200180613fe46034913960400191505060405180910390fd5b61298b816040518060600160405280602e81526020016140f1602e91396001600160a01b0386166000908152600460205260409020549190612872565b6001600160a01b0380851660009081526004602052604080822093909355908416815220546129ba90826126f9565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008111612a555760405162461bcd60e51b815260040180806020018281038252602a8152602001806140a0602a913960400191505060405180910390fd5b601454601554604080517f441a3e70000000000000000000000000000000000000000000000000000000008152600481019290925260248201849052516001600160a01b039092169163441a3e709160448082019260009290919082900301818387803b158015612ac557600080fd5b505af1158015610e14573d6000803e3d6000fd5b612b16816040518060600160405280602781526020016140ca602791396001600160a01b0385166000908152600460205260409020549190612872565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550612b6681604051806060016040528060278152602001613f55602791396002549190612872565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600061275383836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f7700815250612872565b600f5460ff161515600114612c4c576040805162461bcd60e51b815260206004820152601c60248201527f4c796469615374726174656779466f724c503a3a5f6465706f73697400000000604482015290519081900360640190fd5b600e5415612c75576000612c5e611c33565b9050600e54811115612c7357612c7381612f66565b505b600a54604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612ce857600080fd5b505af1158015612cfc573d6000803e3d6000fd5b505050506040513d6020811015612d1257600080fd5b5051612d1d57600080fd5b612d2681613307565b612d3882612d33836122cc565b61339d565b600954612d4590826126f9565b6009556040805182815290516001600160a01b038416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25050565b3390565b600082612d9e57506000610a1f565b82820282848281612dab57fe5b04146127535760405162461bcd60e51b8152600401808060200182810382526021815260200180613f7c6021913960400191505060405180910390fd5b600061275383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613428565b6000612e346123ef565b8560405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612ee8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612f1e5750866001600160a01b0316816001600160a01b0316145b612f595760405162461bcd60e51b8152600401808060200182810382526024815260200180613f076024913960400191505060405180910390fd5b50505050505050565b4690565b60145460155460408051631c57762b60e31b8152600481019290925260006024830181905290516001600160a01b039093169263e2bbb15892604480820193929182900301818387803b158015612fbc57600080fd5b505af1158015612fd0573d6000803e3d6000fd5b505050506000612ff1612710611c1760125485612d8f90919063ffffffff16565b905080156130b957600b54600c546040805163a9059cbb60e01b81526001600160a01b039283166004820152602481018590529051919092169163a9059cbb9160448083019260209291908290030181600087803b15801561305257600080fd5b505af1158015613066573d6000803e3d6000fd5b505050506040513d602081101561307c57600080fd5b50516130b95760405162461bcd60e51b81526004018080602001828103825260228152602001806140186022913960400191505060405180910390fd5b60006130d6612710611c1760115486612d8f90919063ffffffff16565b905080156131a557600b546001600160a01b031663a9059cbb6130f761162f565b836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561313e57600080fd5b505af1158015613152573d6000803e3d6000fd5b505050506040513d602081101561316857600080fd5b50516131a55760405162461bcd60e51b8152600401808060200182810382526024815260200180613eaf6024913960400191505060405180910390fd5b60006131c2612710611c1760105487612d8f90919063ffffffff16565b9050801561328557600b546040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b039092169163a9059cbb916044808201926020929091908290030181600087803b15801561321e57600080fd5b505af1158015613232573d6000803e3d6000fd5b505050506040513d602081101561324857600080fd5b50516132855760405162461bcd60e51b8152600401808060200182810382526025815260200180613e646025913960400191505060405180910390fd5b60006132a56132a08361329a86818a8a612bae565b90612bae565b61348d565b90506132b081613307565b6009546132bd90826126f9565b600981905560025460408051928352602083019190915280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a15050505050565b600081116133465760405162461bcd60e51b815260040180806020018281038252602781526020018061411f6027913960400191505060405180910390fd5b60145460155460408051631c57762b60e31b8152600481019290925260248201849052516001600160a01b039092169163e2bbb1589160448082019260009290919082900301818387803b158015612ac557600080fd5b6002546133aa90826126f9565b6002556001600160a01b0382166000908152600460205260409020546133d090826126f9565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b600081836134775760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156128c65781810151838201526020016128ae565b50600083858161348357fe5b0495945050505050565b60008061349b836002612de8565b9050600081116134dc5760405162461bcd60e51b815260040180806020018281038252603781526020018061403a6037913960400191505060405180910390fd5b60408051600280825260608281019093529190828160200160208202803683375050600b5482519293506001600160a01b03169183915060009061351c57fe5b6001600160a01b03928316602091820292909201810191909152600a5460408051630dfe168160e01b815290519190931692630dfe1681926004808301939192829003018186803b15801561357057600080fd5b505afa158015613584573d6000803e3d6000fd5b505050506040513d602081101561359a57600080fd5b50518151829060019081106135ab57fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060008390508160018403815181106135df57fe5b60200260200101516001600160a01b0316826000815181106135fd57fe5b60200260200101516001600160a01b031614613915576013546040805163d06ca61f60e01b815260048101878152602482019283528551604483015285516060946001600160a01b03169363d06ca61f938a938993909291606401906020808601910280838360005b8381101561367e578181015183820152602001613666565b50505050905001935050505060006040518083038186803b1580156136a257600080fd5b505afa1580156136b6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156136df57600080fd5b81019080805160405193929190846401000000008211156136ff57600080fd5b90830190602082018581111561371457600080fd5b825186602082028301116401000000008211171561373157600080fd5b82525081516020918201928201910280838360005b8381101561375e578181015183820152602001613746565b5050505090500160405250505090508060018251038151811061377d57fe5b60200260200101519150601360009054906101000a90046001600160a01b03166001600160a01b03166338ed173986848630426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613820578181015183820152602001613808565b505050509050019650505050505050600060405180830381600087803b15801561384957600080fd5b505af115801561385d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561388657600080fd5b81019080805160405193929190846401000000008211156138a657600080fd5b9083019060208201858111156138bb57600080fd5b82518660208202830111640100000000821117156138d857600080fd5b82525081516020918201928201910280838360005b838110156139055781810151838201526020016138ed565b5050505090500160405250505050505b60408051600280825260608281019093529190828160200160208202803683370190505090508360008151811061394857fe5b60200260200101518160008151811061395d57fe5b6001600160a01b03928316602091820292909201810191909152600a546040805163d21220a760e01b81529051919093169263d21220a7926004808301939192829003018186803b1580156139b157600080fd5b505afa1580156139c5573d6000803e3d6000fd5b505050506040513d60208110156139db57600080fd5b50518151829060019081106139ec57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506000869050816001840381518110613a2057fe5b60200260200101516001600160a01b031682600081518110613a3e57fe5b60200260200101516001600160a01b031614613d56576013546040805163d06ca61f60e01b8152600481018a8152602482019283528551604483015285516060946001600160a01b03169363d06ca61f938d938993909291606401906020808601910280838360005b83811015613abf578181015183820152602001613aa7565b50505050905001935050505060006040518083038186803b158015613ae357600080fd5b505afa158015613af7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2057600080fd5b8101908080516040519392919084640100000000821115613b4057600080fd5b908301906020820185811115613b5557600080fd5b8251866020820283011164010000000082111715613b7257600080fd5b82525081516020918201928201910280838360005b83811015613b9f578181015183820152602001613b87565b50505050905001604052505050905080600182510381518110613bbe57fe5b60200260200101519150601360009054906101000a90046001600160a01b03166001600160a01b03166338ed173989848630426040518663ffffffff1660e01b81526004018086815260200185815260200180602001846001600160a01b03168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015613c61578181015183820152602001613c49565b505050509050019650505050505050600060405180830381600087803b158015613c8a57600080fd5b505af1158015613c9e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613cc757600080fd5b8101908080516040519392919084640100000000821115613ce757600080fd5b908301906020820185811115613cfc57600080fd5b8251866020820283011164010000000082111715613d1957600080fd5b82525081516020918201928201910280838360005b83811015613d46578181015183820152602001613d2e565b5050505090500160405250505050505b60135485516000916001600160a01b03169063e8e337009088906000198b01908110613d7e57fe5b6020026020010151856001880381518110613d9557fe5b6020026020010151888660008030426040518963ffffffff1660e01b815260040180896001600160a01b03168152602001886001600160a01b03168152602001878152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200198505050505050505050606060405180830381600087803b158015613e2657600080fd5b505af1158015613e3a573d6000803e3d6000fd5b505050506040513d6060811015613e5057600080fd5b50604001519a995050505050505050505056fe4c796469615374726174656779466f724c503a3a5f7265696e766573742c207265776172644f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c796469615374726174656779466f724c503a3a5f7265696e766573742c2061646d696e5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f20616c6c6f776564206465706f7369746f7273417263683a3a76616c69646174655369673a20696e76616c6964207369676e61747572655065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f7420616c6c6f7765645f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c79536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724c796469615374726174656779466f724c503a3a7265736375654465706c6f79656446756e64735f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f20616464726573734c796469615374726174656779466f724c503a3a5f7265696e766573742c206465764c796469615374726174656779466f724c503a3a5f636f6e76657274526577617264546f6b656e73546f4465706f736974546f6b656e737472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654c796469615374726174656779466f724c503a3a5f77697468647261774465706f736974546f6b656e735f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e63654c796469615374726174656779466f724c503a3a5f7374616b654465706f736974546f6b656e73a2646970667358221220e00f4580c7a3c908b1e1d714b2f55258f63fc405116f62b64424a9182d4225cd64736f6c634300070300334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001600000000000000000000000007abab5474385918820dfbc7f35712084a91b583a0000000000000000000000004c9b4e1ac6f24cde3660d5e4ef1ebf77c710c084000000000000000000000000fb26525b14048b7bb1f3794f6129176195db7766000000000000000000000000a52abe4676dbfd04df42ef7755f01a3c41f28d270000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd70000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000016345785d8a00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000205969656c642059616b3a204c796469612d4c50204441492e652d555344542e65