[ { "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": "_swapPairWAVAXStorm", "type": "address" }, { "internalType": "address", "name": "_swapPairToken", "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": "setAllowances", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "stakingContract", "outputs": [ { "internalType": "contract IStormChef", "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" } ]
60c060405260096080819052685969656c642059616b60b81b60a09081526200002c91600091906200096a565b506040805180820190915260038082526216549560ea1b602090920191825262000059916001916200096a565b503480156200006757600080fd5b50604051620043243803806200432483398181016040526101808110156200008e57600080fd5b8101908080516040519392919084640100000000821115620000af57600080fd5b908301906020820185811115620000c557600080fd5b8251640100000000811182820188101715620000e057600080fd5b82525081516020918201929091019080838360005b838110156200010f578181015183820152602001620000f5565b50505050905090810190601f1680156200013d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c086015160e08701516101008801516101208901516101408a0151610160909a0151989b5096995094979396929591949093909260006200019c620002f0565b600680546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004304833981519152908290a3508b51620001ee9060009060208f01906200096a565b50600a80546001600160a01b03808e166001600160a01b031992831617909255600b80548d8416908316179055601380548c8416908316179055601580548b841690831617905560148054928a16928216929092179091556016869055600c80549091163317905562000260620002f4565b6200026b84620003e7565b620002768362000491565b620002818262000581565b6200028c816200065d565b62000298600162000739565b620002a386620007ff565b604080516000808252602082015281517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234929181900390910190a150505050505050505050505062000a06565b3390565b620002fe620002f0565b6001600160a01b031662000311620008f9565b6001600160a01b0316146200035c576040805162461bcd60e51b81526020600482018190526024820152600080516020620042e4833981519152604482015290519081900360640190fd5b600a546013546040805163095ea7b360e01b81526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b158015620003b757600080fd5b505af1158015620003cc573d6000803e3d6000fd5b505050506040513d6020811015620003e357600080fd5b5050565b620003f1620002f0565b6001600160a01b031662000404620008f9565b6001600160a01b0316146200044f576040805162461bcd60e51b81526020600482018190526024820152600080516020620042e4833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b6200049b620002f0565b6001600160a01b0316620004ae620008f9565b6001600160a01b031614620004f9576040805162461bcd60e51b81526020600482018190526024820152600080516020620042e4833981519152604482015290519081900360640190fd5b612710620005336010546200051f601254856200090860201b6200252f1790919060201c565b6200090860201b6200252f1790919060201c565b11156200053f57600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b6200058b620002f0565b6001600160a01b03166200059e620008f9565b6001600160a01b031614620005e9576040805162461bcd60e51b81526020600482018190526024820152600080516020620042e4833981519152604482015290519081900360640190fd5b6127106200060f6010546200051f601154856200090860201b6200252f1790919060201c565b11156200061b57600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b62000667620002f0565b6001600160a01b03166200067a620008f9565b6001600160a01b031614620006c5576040805162461bcd60e51b81526020600482018190526024820152600080516020620042e4833981519152604482015290519081900360640190fd5b612710620006eb6012546200051f601154856200090860201b6200252f1790919060201c565b1115620006f757600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b62000743620002f0565b6001600160a01b031662000756620008f9565b6001600160a01b031614620007a1576040805162461bcd60e51b81526020600482018190526024820152600080516020620042e4833981519152604482015290519081900360640190fd5b600f5460ff1615158115151415620007b857600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b62000809620002f0565b6001600160a01b03166200081c620008f9565b6001600160a01b03161462000867576040805162461bcd60e51b81526020600482018190526024820152600080516020620042e4833981519152604482015290519081900360640190fd5b6001600160a01b038116620008ae5760405162461bcd60e51b8152600401808060200182810382526026815260200180620042be6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216906000805160206200430483398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b031690565b60008282018381101562000963576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620009ad57805160ff1916838001178555620009dd565b82800160010185558215620009dd579182015b82811115620009dd578251825591602001919060010190620009c0565b50620009eb929150620009ef565b5090565b5b80821115620009eb5760008155600101620009f0565b6138a88062000a166000396000f3fe608060405234801561001057600080fd5b50600436106103785760003560e01c80638b73e606116101d3578063c89039c511610104578063e21ac825116100a2578063ee99205c1161007c578063ee99205c14610929578063f2fde38b14610931578063f7c618c114610957578063fdb5a03e1461095f57610378565b8063e21ac825146108e7578063eab89a5a14610904578063ed24911d1461092157610378565b8063da09c72c116100de578063da09c72c1461088c578063dbd9a4d414610894578063dd62ed3e1461089c578063dd8ce4d6146108ca57610378565b8063c89039c514610816578063cff1b6ef1461081e578063d505accf1461083b57610378565b8063a9059cbb11610171578063b6b55f251161014b578063b6b55f25146107e1578063b9e57b80146107fe578063bd079f5514610806578063c4b24a461461080e57610378565b8063a9059cbb14610788578063ac0d31ff146107b4578063b52a321f146107d957610378565b806395d89b41116101ad57806395d89b411461073e57806399729ec1146107465780639e4e731814610763578063a8ae2b7c1461076b57610378565b80638b73e606146106ce5780638da5cb5b146106f45780639291d5631461071857610378565b80634bebd1e7116102ad578063789139bc1161024b5780637ecebe00116102255780637ecebe0014610657578063818372301461067d5780638980f11f1461069a5780638aff733d146106c657610378565b8063789139bc146106195780637ae26773146106215780637d8820971461064f57610378565b80635ea682ea116102875780635ea682ea146105db5780635eaec0e4146105e357806370a08231146105eb578063715018a61461061157610378565b80634bebd1e7146105795780634e77ace51461059f5780634ebb7916146105be57610378565b80632e1a7d4d1161031a578063313ce567116102f4578063313ce567146104f55780633bdc6e7214610513578063483c2ef01461051b5780634a970be71461054157610378565b80632e1a7d4d146104a25780632f4f21e2146104c157806330adf81f146104ed57610378565b80630f23475d116103565780630f23475d1461045457806318160ddd1461045c57806320606b701461046457806323b872dd1461046c57610378565b806306fdde031461037d57806307677111146103fa578063095ea7b314610414575b600080fd5b610385610967565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103bf5781810151838201526020016103a7565b50505050905090810190601f1680156103ec5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104026109f5565b60408051918252519081900360200190f35b6104406004803603604081101561042a57600080fd5b506001600160a01b0381351690602001356109fb565b604080519115158252519081900360200190f35b610402610a12565b610402610b63565b610402610b69565b6104406004803603606081101561048257600080fd5b506001600160a01b03813581169160208101359091169060400135610b8d565b6104bf600480360360208110156104b857600080fd5b5035610c6f565b005b6104bf600480360360408110156104d757600080fd5b506001600160a01b038135169060200135610d9b565b610402610da5565b6104fd610dc9565b6040805160ff9092168252519081900360200190f35b610402610dce565b6104406004803603602081101561053157600080fd5b50356001600160a01b0316610dd4565b6104bf600480360360a081101561055757600080fd5b5080359060208101359060ff6040820135169060608101359060800135610de9565b6104bf6004803603602081101561058f57600080fd5b50356001600160a01b0316610ea2565b6104bf600480360360208110156105b557600080fd5b50351515610fde565b6104bf600480360360208110156105d457600080fd5b503561109d565b610402611179565b61040261117f565b6104026004803603602081101561060157600080fd5b50356001600160a01b0316611185565b6104bf6111a4565b61040261125d565b6104bf6004803603604081101561063757600080fd5b506001600160a01b0381358116916020013516611263565b610402611352565b6104026004803603602081101561066d57600080fd5b50356001600160a01b0316611358565b6104bf6004803603602081101561069357600080fd5b503561136a565b6104bf600480360360408110156106b057600080fd5b506001600160a01b03813516906020013561140e565b610402611562565b6104bf600480360360208110156106e457600080fd5b50356001600160a01b0316611568565b6106fc6116cf565b604080516001600160a01b039092168252519081900360200190f35b6104bf6004803603602081101561072e57600080fd5b50356001600160a01b03166116de565b6103856117b4565b6104bf6004803603602081101561075c57600080fd5b503561180e565b6104026118e1565b6104bf6004803603602081101561078157600080fd5b5035611905565b6104406004803603604081101561079e57600080fd5b506001600160a01b0381351690602001356119d2565b6104bf600480360360408110156107ca57600080fd5b508035906020013515156119df565b610440611c70565b6104bf600480360360208110156107f757600080fd5b5035611c79565b610402611c86565b610402611cc7565b610402611ccd565b6106fc611dfc565b6104bf6004803603602081101561083457600080fd5b5035611e0b565b6104bf600480360360e081101561085157600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611ed8565b6106fc611fd8565b6104bf611fe7565b610402600480360360408110156108b257600080fd5b506001600160a01b03813581169160200135166120e6565b610402600480360360208110156108e057600080fd5b5035612111565b6104bf600480360360208110156108fd57600080fd5b5035612150565b6104026004803603602081101561091a57600080fd5b50356121f4565b610402612234565b6106fc612341565b6104bf6004803603602081101561094757600080fd5b50356001600160a01b0316612350565b6106fc612460565b6104bf61246f565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109ed5780601f106109c2576101008083540402835291602001916109ed565b820191906000526020600020905b8154815290600101906020018083116109d057829003601f168201915b505050505081565b60115481565b6000610a08338484612590565b5060015b92915050565b601354601654604080517f93f1a40b0000000000000000000000000000000000000000000000000000000081526004810192909252306024830152805160009384936001600160a01b03909116926393f1a40b92604480840193829003018186803b158015610a8057600080fd5b505afa158015610a94573d6000803e3d6000fd5b505050506040513d6040811015610aaa57600080fd5b505160135460165460408051631526fe2760e01b81526004810192909252519293506000926001600160a01b0390921691631526fe279160248082019260c092909190829003018186803b158015610b0157600080fd5b505afa158015610b15573d6000803e3d6000fd5b505050506040513d60c0811015610b2b57600080fd5b506080015161ffff1690506000610b4e612710610b4885856126a8565b90612701565b9050610b5a8382612743565b93505050505b90565b60025481565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610bc757506000198114155b15610c58576000610bf3856040518060600160405280602f81526020016137ef602f9139849190612781565b6001600160a01b0380891660008181526003602090815260408083209489168084529482529182902085905581518581529151949550929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92592918290030190a3505b610c63868686612818565b50600195945050505050565b6000610c7a826121f4565b90508015610d9757610c8b81612925565b60135460165460408051631526fe2760e01b81526004810192909252516000926001600160a01b031691631526fe279160248083019260c0929190829003018186803b158015610cda57600080fd5b505afa158015610cee573d6000803e3d6000fd5b505050506040513d60c0811015610d0457600080fd5b506080015161ffff1690506000610d21612710610b4885856126a8565b600a54909150610d44906001600160a01b031633610d3f8685612743565b6129e8565b610d4e3385612aab565b600954610d5b9084612743565b60095560408051848152905133917f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364919081900360200190a250505b5050565b610d978282612b80565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60075481565b60086020526000908152604090205460ff1681565b600a54604080517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018890526064810187905260ff8616608482015260a4810185905260c4810184905290516001600160a01b039092169163d505accf9160e48082019260009290919082900301818387803b158015610e7957600080fd5b505af1158015610e8d573d6000803e3d6000fd5b50505050610e9b3386612b80565b5050505050565b610eaa612d1b565b6001600160a01b0316610ebb6116cf565b6001600160a01b031614610f04576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526008602052604090205460ff1615610f72576040805162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f7200000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600860205260409020805460ff19166001908117909155600754610fa49161252f565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b610fe6612d1b565b6001600160a01b0316610ff76116cf565b6001600160a01b031614611040576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b600f5460ff161515811515141561105657600080fd5b600f805482151560ff19909116811790915560408051918252517f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859181900360200190a150565b6110a5612d1b565b6001600160a01b03166110b66116cf565b6001600160a01b0316146110ff576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b6000811161110c57600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611139573d6000803e3d6000fd5b5060408051600081526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150565b60125481565b60165481565b6001600160a01b0381166000908152600460205260409020545b919050565b6111ac612d1b565b6001600160a01b03166111bd6116cf565b6001600160a01b031614611206576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36006805473ffffffffffffffffffffffffffffffffffffffff19169055565b600e5481565b61126b612d1b565b6001600160a01b031661127c6116cf565b6001600160a01b0316146112c5576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b816001600160a01b031663095ea7b38260006040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561131d57600080fd5b505af1158015611331573d6000803e3d6000fd5b505050506040513d602081101561134757600080fd5b5051610d9757600080fd5b60095481565b60056020526000908152604090205481565b611372612d1b565b6001600160a01b03166113836116cf565b6001600160a01b0316146113cc576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b600d54604080519182526020820183905280517f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef8499011009281900390910190a1600d55565b611416612d1b565b6001600160a01b03166114276116cf565b6001600160a01b031614611470576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b6000811161147d57600080fd5b604080517fa9059cbb0000000000000000000000000000000000000000000000000000000081523360048201526024810183905290516001600160a01b0384169163a9059cbb9160448083019260209291908290030181600087803b1580156114e557600080fd5b505af11580156114f9573d6000803e3d6000fd5b505050506040513d602081101561150f57600080fd5b505161151a57600080fd5b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a15050565b60105481565b611570612d1b565b6001600160a01b03166115816116cf565b6001600160a01b0316146115ca576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b60006007541161160b5760405162461bcd60e51b81526004018080602001828103825260348152602001806136586034913960400191505060405180910390fd5b6001600160a01b03811660009081526008602052604090205460ff1615156001146116675760405162461bcd60e51b815260040180806020018281038252602a8152602001806136d7602a913960400191505060405180910390fd5b6001600160a01b0381166000908152600860205260409020805460ff19169055600754611695906001612743565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b6006546001600160a01b031690565b600c546001600160a01b0316331461173d576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79446576000000000000000000000000604482015290519081900360640190fd5b600c54604080516001600160a01b039283168152918316602083015280517fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c009281900390910190a1600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109ed5780601f106109c2576101008083540402835291602001916109ed565b611816612d1b565b6001600160a01b03166118276116cf565b6001600160a01b031614611870576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b61271061189460105461188e6011548561252f90919063ffffffff16565b9061252f565b111561189f57600080fd5b601254604080519182526020820183905280517f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d6517261319281900390910190a1601255565b7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b61190d612d1b565b6001600160a01b031661191e6116cf565b6001600160a01b031614611967576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b61271061198560125461188e6011548561252f90919063ffffffff16565b111561199057600080fd5b601054604080519182526020820183905280517fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f29281900390910190a1601055565b6000610a08338484612818565b6119e7612d1b565b6001600160a01b03166119f86116cf565b6001600160a01b031614611a41576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b600a54604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015611a8c57600080fd5b505afa158015611aa0573d6000803e3d6000fd5b505050506040513d6020811015611ab657600080fd5b5051601354601654604080517f5312ea8e0000000000000000000000000000000000000000000000000000000081526004810192909252519293506001600160a01b0390911691635312ea8e9160248082019260009290919082900301818387803b158015611b2457600080fd5b505af1158015611b38573d6000803e3d6000fd5b5050600a54604080516370a0823160e01b81523060048201529051600094506001600160a01b0390921692506370a08231916024808301926020929190829003018186803b158015611b8957600080fd5b505afa158015611b9d573d6000803e3d6000fd5b505050506040513d6020811015611bb357600080fd5b5051905083611bc28284612743565b1015611bff5760405162461bcd60e51b81526004018080602001828103825260278152602001806136b06027913960400191505060405180910390fd5b600981905560025460408051838152602081019290925280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a1600f5460ff1615156001148015611c5b57506001831515145b15611c6a57611c6a6000610fde565b50505050565b600f5460ff1681565b611c833382612b80565b50565b600080611c91611ccd565b9050600d548110611cbf57611cb7612710610b48601054846126a890919063ffffffff16565b915050610b60565b600091505090565b600d5481565b601354601654604080517fbe552b9500000000000000000000000000000000000000000000000000000000815260048101929092523060248301525160009283926001600160a01b039091169163be552b9591604480820192602092909190829003018186803b158015611d4057600080fd5b505afa158015611d54573d6000803e3d6000fd5b505050506040513d6020811015611d6a57600080fd5b5051600b54604080516370a0823160e01b815230600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b158015611dbd57600080fd5b505afa158015611dd1573d6000803e3d6000fd5b505050506040513d6020811015611de757600080fd5b50519050611df5828261252f565b9250505090565b600a546001600160a01b031681565b611e13612d1b565b6001600160a01b0316611e246116cf565b6001600160a01b031614611e6d576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b612710611e8b60105461188e6012548561252f90919063ffffffff16565b1115611e9657600080fd5b601154604080519182526020820183905280517f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a9281900390910190a1601155565b42841015611f2d576040805162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a657870697265640000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938a1660608401526080830189905260a083019390935260c08083018890528151808403909101815260e090920190528051910120611fc38882868686612d1f565b611fce888888612590565b5050505050505050565b600c546001600160a01b031681565b611fef612d1b565b6001600160a01b03166120006116cf565b6001600160a01b031614612049576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b600a54601354604080517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b03928316600482015260001960248201529051919092169163095ea7b39160448083019260209291908290030181600087803b1580156120bc57600080fd5b505af11580156120d0573d6000803e3d6000fd5b505050506040513d6020811015610d9757600080fd5b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b600061212a6009546002546126a890919063ffffffff16565b61213557508061119f565b610a0c600954610b48600254856126a890919063ffffffff16565b612158612d1b565b6001600160a01b03166121696116cf565b6001600160a01b0316146121b2576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b600e54604080519182526020820183905280517fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f9281900390910190a1600e55565b600061220d6009546002546126a890919063ffffffff16565b6122195750600061119f565b610a0c600254610b48600954856126a890919063ffffffff16565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b600060405180828054600181600116156101000203166002900480156122b75780601f106122955761010080835404028352918201916122b7565b820191906000526020600020905b8154815290600101906020018083116122a3575b505091505060405180910390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660001b6122f0612e57565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b6013546001600160a01b031681565b612358612d1b565b6001600160a01b03166123696116cf565b6001600160a01b0316146123b2576040805162461bcd60e51b81526020600482018190526024820152600080516020613749833981519152604482015290519081900360640190fd5b6001600160a01b0381166123f75760405162461bcd60e51b815260040180806020018281038252602681526020018061360b6026913960400191505060405180910390fd5b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36006805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600b546001600160a01b031681565b3233146124c3576040805162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f41000000000000000000000000604482015290519081900360640190fd5b60006124cd611ccd565b9050600d54811015612526576040805162461bcd60e51b815260206004820152601c60248201527f53746f726d5374726174656779466f7253413a3a7265696e7665737400000000604482015290519081900360640190fd5b611c8381612e5b565b600082820183811015612589576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0383166125eb576040805162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f206164647265737300000000604482015290519081900360640190fd5b6001600160a01b038216612646576040805162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b03808416600081815260036020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000826126b757506000610a0c565b828202828482816126c457fe5b04146125895760405162461bcd60e51b81526004018080602001828103825260218152602001806137286021913960400191505060405180910390fd5b600061258983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061311d565b600061258983836040518060400160405280601f81526020017f536166654d6174683a207375627472616374696f6e20756e646572666c6f77008152505b600081848411156128105760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156127d55781810151838201526020016127bd565b50505050905090810190601f1680156128025780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661285d5760405162461bcd60e51b81526004018080602001828103825260348152602001806137696034913960400191505060405180910390fd5b61289a816040518060600160405280602e8152602001613845602e91396001600160a01b0386166000908152600460205260409020549190612781565b6001600160a01b0380851660009081526004602052604080822093909355908416815220546128c9908261252f565b6001600160a01b0380841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081116129645760405162461bcd60e51b815260040180806020018281038252602a81526020018061379d602a913960400191505060405180910390fd5b601354601654604080517f441a3e70000000000000000000000000000000000000000000000000000000008152600481019290925260248201849052516001600160a01b039092169163441a3e709160448082019260009290919082900301818387803b1580156129d457600080fd5b505af1158015610e9b573d6000803e3d6000fd5b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015612a3f57600080fd5b505af1158015612a53573d6000803e3d6000fd5b505050506040513d6020811015612a6957600080fd5b5051612aa65760405162461bcd60e51b81526004018080602001828103825260288152602001806137c76028913960400191505060405180910390fd5b505050565b612ae88160405180606001604052806027815260200161381e602791396001600160a01b0385166000908152600460205260409020549190612781565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550612b3881604051806060016040528060278152602001613701602791396002549190612781565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600f5460ff161515600114612bdc576040805162461bcd60e51b815260206004820152601c60248201527f53746f726d5374726174656779466f7253413a3a5f6465706f73697400000000604482015290519081900360640190fd5b600e5415612c05576000612bee611ccd565b9050600e54811115612c0357612c0381612e5b565b505b600a54604080517f23b872dd0000000000000000000000000000000000000000000000000000000081523360048201523060248201526044810184905290516001600160a01b03909216916323b872dd916064808201926020929091908290030181600087803b158015612c7857600080fd5b505af1158015612c8c573d6000803e3d6000fd5b505050506040513d6020811015612ca257600080fd5b5051612cad57600080fd5b612cb681613182565b612cc882612cc383612111565b613222565b600954612cd5908261252f565b6009556040805182815290516001600160a01b038416917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a25050565b3390565b6000612d29612234565b8560405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612ddd573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612e135750866001600160a01b0316816001600160a01b0316145b612e4e5760405162461bcd60e51b815260040180806020018281038252602481526020018061368c6024913960400191505060405180910390fd5b50505050505050565b4690565b601354601654600c5460408051638dbdbe6d60e01b815260048101939093526000602484018190526001600160a01b03928316604485015290519190931692638dbdbe6d926064808201939182900301818387803b158015612ebc57600080fd5b505af1158015612ed0573d6000803e3d6000fd5b505050506000612ef1612710610b48601254856126a890919063ffffffff16565b90508015612f1657600b54600c54612f16916001600160a01b039081169116836129e8565b6000612f33612710610b48601154866126a890919063ffffffff16565b90508015612f5957600b54612f59906001600160a01b0316612f536116cf565b836129e8565b6000612f76612710610b48601054876126a890919063ffffffff16565b90508015612f9557600b54612f95906001600160a01b031633836129e8565b6000612fad82612fa785818989612743565b90612743565b6015549091506001600160a01b031615613084576014546001600160a01b03161561304857600b546015546000916130099184916001600160a01b039081169173b31f66aa3c1e785363f0875a1b74e27b85fd66c791166132ad565b600a5460145491925061304091839173b31f66aa3c1e785363f0875a1b74e27b85fd66c7916001600160a01b0391821691166132ad565b91505061307f565b600b5460155461307c9183916001600160a01b039182169173b31f66aa3c1e785363f0875a1b74e27b85fd66c791166132ad565b90505b6130bd565b6014546001600160a01b0316156130bd57600b54600a546014546130ba9284926001600160a01b039182169290821691166132ad565b90505b6130c681613182565b6009546130d3908261252f565b600981905560025460408051928352602083019190915280517fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2349281900390910190a15050505050565b6000818361316c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156127d55781810151838201526020016127bd565b50600083858161317857fe5b0495945050505050565b600081116131c15760405162461bcd60e51b81526004018080602001828103825260278152602001806136316027913960400191505060405180910390fd5b601354601654600c5460408051638dbdbe6d60e01b81526004810193909352602483018590526001600160a01b03918216604484015251921691638dbdbe6d9160648082019260009290919082900301818387803b1580156129d457600080fd5b60025461322f908261252f565b6002556001600160a01b038216600090815260046020526040902054613255908261252f565b6001600160a01b03831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000806132ba85856134bd565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156132f957600080fd5b505afa15801561330d573d6000803e3d6000fd5b505050506040513d606081101561332357600080fd5b50805160209091015190925090506001600160a01b038381169088161461334657905b6000806133748a856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff166134ee565b9050886001600160a01b0316856001600160a01b03161461339157905b61339c89888c613536565b60408051600080825260208201928390527f022c0d9f00000000000000000000000000000000000000000000000000000000835260248201858152604483018590523060648401819052608060848501908152845160a486018190526001600160a01b038e169663022c0d9f968a968a9691949193919260c486019290918190849084905b83811015613439578181015183820152602001613421565b50505050905090810190601f1680156134665780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561348857600080fd5b505af115801561349c573d6000803e3d6000fd5b505050508181116134ad57816134af565b805b9a9950505050505050505050565b600080826001600160a01b0316846001600160a01b0316106134e05782846134e3565b83835b915091509250929050565b6000806134fd856103e56126a8565b9050600061350b82856126a8565b9050600061351f8361188e886103e86126a8565b905061352b8282612701565b979650505050505050565b826001600160a01b031663a9059cbb83836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561358d57600080fd5b505af11580156135a1573d6000803e3d6000fd5b505050506040513d60208110156135b757600080fd5b5051612aa6576040805162461bcd60e51b815260206004820181905260248201527f4465784c6962726172793a3a5452414e534645525f46524f4d5f4641494c4544604482015290519081900360640190fdfe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737353746f726d5374726174656779466f7253413a3a5f7374616b654465706f736974546f6b656e735065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f20616c6c6f776564206465706f7369746f7273417263683a3a76616c69646174655369673a20696e76616c6964207369676e617475726553746f726d5374726174656779466f7253413a3a7265736375654465706c6f79656446756e64735065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e6f7420616c6c6f7765645f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c79536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657220746f20746865207a65726f206164647265737353746f726d5374726174656779466f7253413a3a5f77697468647261774465706f736974546f6b656e7353746f726d5374726174656779466f7253413a3a5452414e534645525f46524f4d5f4641494c45447472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a26469706673582212201f23ad96aff8d7072da78707451ef68569351a916a32e82b258637c0e244a8e164736f6c634300070300334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e00000000000000000000000000000000000000000000000000000000000000180000000000000000000000000d586e7f844cea2f87f50152665bcbc2c279d8d700000000000000000000000006afd5a1ea4b793cc1526d6dc7e99a608b356ef7b000000000000000000000000c1a97bcbacf0566fc8c40291ffe7e634964b04460000000000000000000000009613acd03dcb6ee2a03546dd7992d7df2aa62d9a00000000000000000000000087dee1cc9ffd464b79e058ba20387c1984aed86a0000000000000000000000008d36c5c6947adccd25ef49ea1aac2ceacfff0bd7000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000025800000000000000000000000000000000000000000000000000000000000000c800000000000000000000000000000000000000000000000000000000000000165969656c642059616b3a2053746f726d204441492e6500000000000000000000