[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_nativeRewardToken", "type": "address" }, { "components": [ { "internalType": "address", "name": "poolReward", "type": "address" }, { "internalType": "address", "name": "extraReward", "type": "address" }, { "internalType": "address", "name": "token0", "type": "address" }, { "internalType": "address", "name": "token1", "type": "address" } ], "internalType": "struct MasterChefStrategyForLP.SwapPairs", "name": "_swapPairs", "type": "tuple" }, { "internalType": "address", "name": "_stakingRewards", "type": "address" }, { "internalType": "uint256", "name": "_pid", "type": "uint256" }, { "internalType": "address", "name": "_timelock", "type": "address" }, { "components": [ { "internalType": "uint256", "name": "minTokensToReinvest", "type": "uint256" }, { "internalType": "uint256", "name": "devFeeBips", "type": "uint256" }, { "internalType": "uint256", "name": "reinvestRewardBips", "type": "uint256" } ], "internalType": "struct YakStrategyV2.StrategySettings", "name": "_strategySettings", "type": "tuple" } ], "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": [], "name": "extraToken", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "joeChef", "outputs": [ { "internalType": "contract IJoeChef", "name": "", "type": "address" } ], "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": [ { "internalType": "address", "name": "_extraTokenSwapPair", "type": "address" } ], "name": "setExtraRewardSwapPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapPairExtraReward", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapPairRewardToken", "outputs": [ { "internalType": "address", "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" }, { "stateMutability": "payable", "type": "receive" } ]
60e0604052600960a0819052685969656c642059616b60b81b60c09081526200002c91600091906200167a565b506040805180820190915260038082526216549560ea1b602090920191825262000059916001916200167a565b503480156200006757600080fd5b5060405162006100380380620061008339810160408190526200008a9162001870565b88888888888688878787878787600001518860200151888888806000620000b66200024760201b60201c565b600680546001600160a01b0319166001600160a01b03831690811790915560405191925090600090600080516020620060e0833981519152908290a350805162000100906200024b565b60208101516200011090620002db565b6040810151620001209062000392565b508851620001369060009060208c01906200167a565b50600980546001600160a01b03808b166001600160a01b031992831617909255600a8054928a16928216929092179091556080839052600b8054909116732d580f9cf2fb2d09bc411532988f2afda4e7beff1790556200019887878762000449565b620001a38462000721565b620001af600162000903565b620001ba83620009ad565b60408051600080825260208201527fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234910160405180910390a15050505050505050506200020f84878762000aaa60201b60201c565b5050601880546001600160a01b0319166001600160a01b039b909b169a909a179099555062001a429c50505050505050505050505050565b3390565b6006546001600160a01b031633146200029a5760405162461bcd60e51b81526020600482018190526024820152600080516020620060c083398151915260448201526064015b60405180910390fd5b600c5460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600c55565b6006546001600160a01b03163314620003265760405162461bcd60e51b81526020600482018190526024820152600080516020620060c0833981519152604482015260640162000291565b61271062000345601054836200166560201b620021ab1790919060201c565b11156200035157600080fd5b60115460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1601155565b6006546001600160a01b03163314620003dd5760405162461bcd60e51b81526020600482018190526024820152600080516020620060c0833981519152604482015260640162000291565b612710620003fc601154836200166560201b620021ab1790919060201c565b11156200040857600080fd5b60105460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1601055565b826001600160a01b0316826001600160a01b031614620006f257806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004a2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004c89190620019c1565b6001600160a01b0316826001600160a01b031603620005c357826001600160a01b0316816001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200052a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005509190620019c1565b6001600160a01b031614620005bd5760405162461bcd60e51b815260206004820152603f6024820152600080516020620060a083398151915260448201527f6f6573206e6f7420636f6e7461696e2065636f73797374656d20746f6b656e00606482015260840162000291565b620006f2565b806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000602573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006289190620019c1565b6001600160a01b0316826001600160a01b0316036200068a57826001600160a01b0316816001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200052a573d6000803e3d6000fd5b60405162461bcd60e51b81526020600482015260416024820152600080516020620060a083398151915260448201527f6f6573206e6f7420636f6e7461696e20706f6f6c2072657761726420746f6b656064820152603760f91b608482015260a40162000291565b601280546001600160a01b039384166001600160a01b0319918216179091556013805492909316911617905550565b6001600160a01b03811615620008e457600a5460408051630dfe168160e01b815290516001600160a01b0392831692841691630dfe16819160048083019260209291908290030181865afa1580156200077e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620007a49190620019c1565b6001600160a01b0316036200083e57806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620007f2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008189190620019c1565b601580546001600160a01b0319166001600160a01b0392909216919091179055620008c4565b806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200087d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008a39190620019c1565b601580546001600160a01b0319166001600160a01b03929092169190911790555b601480546001600160a01b0383166001600160a01b031990911617905550565b601480546001600160a01b031990811690915560158054909116905550565b6006546001600160a01b031633146200094e5760405162461bcd60e51b81526020600482018190526024820152600080516020620060c0833981519152604482015260640162000291565b600e5481151560ff9091161515036200096657600080fd5b600e805460ff19168215159081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859060200160405180910390a150565b6006546001600160a01b03163314620009f85760405162461bcd60e51b81526020600482018190526024820152600080516020620060c0833981519152604482015260640162000291565b6001600160a01b03811662000a5f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840162000291565b6006546040516001600160a01b03808416921690600080516020620060e083398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000afe573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b249190620019c1565b6001600160a01b0316826001600160a01b03161415801562000bd15750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b95573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000bbb9190620019c1565b6001600160a01b0316826001600160a01b031614155b156200137c5760408301516001600160a01b031662000c455760405162461bcd60e51b815260206004820152602960248201527f5377617020706169722030206973206e656365737361727920627574206e6f74604482015268081cdd5c1c1b1a595960ba1b606482015260840162000291565b60608301516001600160a01b031662000cb35760405162461bcd60e51b815260206004820152602960248201527f5377617020706169722031206973206e656365737361727920627574206e6f74604482015268081cdd5c1c1b1a595960ba1b606482015260840162000291565b604080840151601680546001600160a01b039283166001600160a01b03199182168117909255606087015160178054918516919092161790558251630dfe168160e01b81529251918516929091630dfe1681916004808201926020929091908290030181865afa15801562000d2c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000d529190620019c1565b6001600160a01b0316148062000de057506016546040805163d21220a760e01b815290516001600160a01b0380861693169163d21220a79160048083019260209291908290030181865afa15801562000daf573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000dd59190620019c1565b6001600160a01b0316145b62000e625760405162461bcd60e51b815260206004820152604560248201527f53776170207061697220737570706c69656420646f6573206e6f74206861766560448201527f207468652072657761726420746f6b656e206173206f6e65206f662069742773606482015264103830b4b960d91b608482015260a40162000291565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000eb6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000edc9190620019c1565b6001600160a01b0316601660009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000f39573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000f5f9190620019c1565b6001600160a01b03161480620010785750600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000fc4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fea9190620019c1565b6001600160a01b0316601660009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001047573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200106d9190620019c1565b6001600160a01b0316145b620010ec5760405162461bcd60e51b815260206004820152603860248201527f537761702070616972203020737570706c69656420646f6573206e6f74206d6160448201527f74636820746865207061697220696e207175657374696f6e0000000000000000606482015260840162000291565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001140573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011669190620019c1565b6001600160a01b0316601760009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620011c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620011e99190620019c1565b6001600160a01b03161480620013025750600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200124e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012749190620019c1565b6001600160a01b0316601760009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620012d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012f79190620019c1565b6001600160a01b0316145b620013765760405162461bcd60e51b815260206004820152603860248201527f537761702070616972203120737570706c69656420646f6573206e6f74206d6160448201527f74636820746865207061697220696e207175657374696f6e0000000000000000606482015260840162000291565b620014ed565b600960009054906101000a90046001600160a01b03166001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620013d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620013f69190620019c1565b6001600160a01b0316826001600160a01b0316036200143757600954601780546001600160a01b0319166001600160a01b03909216919091179055620014ed565b600960009054906101000a90046001600160a01b03166001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200148b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620014b19190620019c1565b6001600160a01b0316826001600160a01b031603620014ed57600954601680546001600160a01b0319166001600160a01b039092169190911790555b82600001516001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001530573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015569190620019c1565b6001600160a01b0316816001600160a01b0316036200166057816001600160a01b031683600001516001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015620015bc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620015e29190620019c1565b6001600160a01b031614620016605760405162461bcd60e51b815260206004820152603a60248201527f537761702070616972207377617050616972506f6f6c52657761726420646f6560448201527f73206e6f7420636f6e7461696e2072657761726420746f6b656e000000000000606482015260840162000291565b505050565b6000620016738284620019df565b9392505050565b828054620016889062001a06565b90600052602060002090601f016020900481019282620016ac5760008555620016f7565b82601f10620016c757805160ff1916838001178555620016f7565b82800160010185558215620016f7579182015b82811115620016f7578251825591602001919060010190620016da565b506200170592915062001709565b5090565b5b808211156200170557600081556001016200170a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562001761576200176162001720565b604052919050565b80516001600160a01b03811681146200178157600080fd5b919050565b6000608082840312156200179957600080fd5b604051608081016001600160401b0381118282101715620017be57620017be62001720565b604052905080620017cf8362001769565b8152620017df6020840162001769565b6020820152620017f26040840162001769565b6040820152620018056060840162001769565b60608201525092915050565b6000606082840312156200182457600080fd5b604051606081016001600160401b038111828210171562001849576200184962001720565b80604052508091508251815260208301516020820152604083015160408201525092915050565b60008060008060008060008060006101c08a8c0312156200189057600080fd5b89516001600160401b0380821115620018a857600080fd5b818c0191508c601f830112620018bd57600080fd5b815181811115620018d257620018d262001720565b60209150620018ea601f8201601f1916830162001736565b8181528e83838601011115620018ff57600080fd5b60005b828110156200191f57848101840151828201850152830162001902565b82811115620019315760008484840101525b509b506200194390508c820162001769565b995050506200195560408b0162001769565b96506200196560608b0162001769565b9550620019768b60808c0162001786565b9450620019876101008b0162001769565b93506101208a01519250620019a06101408b0162001769565b9150620019b28b6101608c0162001811565b90509295985092959850929598565b600060208284031215620019d457600080fd5b620016738262001769565b6000821982111562001a0157634e487b7160e01b600052601160045260246000fd5b500190565b600181811c9082168062001a1b57607f821691505b60208210810362001a3c57634e487b7160e01b600052602260045260246000fd5b50919050565b60805161461162001a8f600039600081816103c0015281816107ac015281816113d501528181611aaa0152818161245601528181612c2e01528181612fa7015261326d01526146116000f3fe6080604052600436106103905760003560e01c80638aff733d116101dc578063b9e57b8011610102578063dd62ed3e116100a0578063ed24911d1161006f578063ed24911d14610c2e578063f2fde38b14610c43578063f7c618c114610c63578063fdb5a03e14610c8357600080fd5b8063dd62ed3e14610b88578063dd8ce4d614610bce578063e21ac82514610bee578063eab89a5a14610c0e57600080fd5b8063c89039c5116100dc578063c89039c514610b08578063cff1b6ef14610b28578063d505accf14610b48578063da09c72c14610b6857600080fd5b8063b9e57b8014610ac8578063bd079f5514610add578063c4b24a4614610af357600080fd5b806399729ec11161017a578063a9059cbb11610149578063a9059cbb14610a4e578063ac0d31ff14610a6e578063b52a321f14610a8e578063b6b55f2514610aa857600080fd5b806399729ec1146109ba5780639e4e7318146109da578063a1a4ddeb14610a0e578063a8ae2b7c14610a2e57600080fd5b80638da5cb5b116101b65780638da5cb5b14610947578063909ac8f4146109655780639291d5631461098557806395d89b41146109a557600080fd5b80638aff733d146108f15780638b73e606146109075780638ba8d3451461092757600080fd5b80634bebd1e7116102c1578063715018a61161025f5780637ecebe001161022e5780637ecebe001461086457806381837230146108915780638432e894146108b15780638980f11f146108d157600080fd5b8063715018a614610804578063789139bc146108195780637ae267731461082f5780637d8820971461084f57600080fd5b80635e5eee1b1161029b5780635e5eee1b1461074c5780635ea682ea146107845780635eaec0e41461079a57806370a08231146107ce57600080fd5b80634bebd1e7146106ec5780634e77ace51461070c5780634ebb79161461072c57600080fd5b80632e1a7d4d1161032e578063313ce56711610308578063313ce5671461065f5780633bdc6e7214610686578063483c2ef01461069c5780634a970be7146106cc57600080fd5b80632e1a7d4d146105eb5780632f4f21e21461060b57806330adf81f1461062b57600080fd5b80630f23475d1161036a5780630f23475d1461056c57806318160ddd1461058157806320606b701461059757806323b872dd146105cb57600080fd5b806306fdde03146104ed5780630767711114610518578063095ea7b31461053c57600080fd5b366104e8576018546040517f1526fe270000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060048201526000916001600160a01b031690631526fe279060240160a060405180830381865afa158015610417573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043b9190613ec8565b945050505050806001600160a01b0316336001600160a01b0316148061046b57506018546001600160a01b031633145b8061048057506006546001600160a01b031633145b806104955750600b546001600160a01b031633145b6104e65760405162461bcd60e51b815260206004820152600b60248201527f6e6f7420616c6c6f77656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b005b600080fd5b3480156104f957600080fd5b50610502610c98565b60405161050f9190613f78565b60405180910390f35b34801561052457600080fd5b5061052e600f5481565b60405190815260200161050f565b34801561054857600080fd5b5061055c610557366004613f8b565b610d26565b604051901515815260200161050f565b34801561057857600080fd5b5061052e610d3d565b34801561058d57600080fd5b5061052e60025481565b3480156105a357600080fd5b5061052e7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156105d757600080fd5b5061055c6105e6366004613fb7565b610d78565b3480156105f757600080fd5b506104e6610606366004613ff8565b610e5c565b34801561061757600080fd5b506104e6610626366004613f8b565b610f39565b34801561063757600080fd5b5061052e7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b34801561066b57600080fd5b50610674601281565b60405160ff909116815260200161050f565b34801561069257600080fd5b5061052e60075481565b3480156106a857600080fd5b5061055c6106b7366004614011565b60086020526000908152604090205460ff1681565b3480156106d857600080fd5b506104e66106e7366004614044565b610f47565b3480156106f857600080fd5b506104e6610707366004614011565b610ff9565b34801561071857600080fd5b506104e6610727366004614099565b611116565b34801561073857600080fd5b506104e6610747366004613ff8565b6111bd565b34801561075857600080fd5b5060195461076c906001600160a01b031681565b6040516001600160a01b03909116815260200161050f565b34801561079057600080fd5b5061052e60115481565b3480156107a657600080fd5b5061052e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156107da57600080fd5b5061052e6107e9366004614011565b6001600160a01b031660009081526004602052604090205490565b34801561081057600080fd5b506104e6611277565b34801561082557600080fd5b5061052e600d5481565b34801561083b57600080fd5b506104e661084a3660046140b6565b611309565b34801561085b57600080fd5b5061052e6113cd565b34801561087057600080fd5b5061052e61087f366004614011565b60056020526000908152604090205481565b34801561089d57600080fd5b506104e66108ac366004613ff8565b6113fa565b3480156108bd57600080fd5b506104e66108cc366004614011565b611483565b3480156108dd57600080fd5b506104e66108ec366004613f8b565b6114e9565b3480156108fd57600080fd5b5061052e60105481565b34801561091357600080fd5b506104e6610922366004614011565b6115fe565b34801561093357600080fd5b5060185461076c906001600160a01b031681565b34801561095357600080fd5b506006546001600160a01b031661076c565b34801561097157600080fd5b5060145461076c906001600160a01b031681565b34801561099157600080fd5b506104e66109a0366004614011565b6117b9565b3480156109b157600080fd5b5061050261187c565b3480156109c657600080fd5b506104e66109d5366004613ff8565b611889565b3480156109e657600080fd5b5061052e7fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b348015610a1a57600080fd5b5060155461076c906001600160a01b031681565b348015610a3a57600080fd5b506104e6610a49366004613ff8565b611935565b348015610a5a57600080fd5b5061055c610a69366004613f8b565b6119e1565b348015610a7a57600080fd5b506104e6610a893660046140ef565b6119ee565b348015610a9a57600080fd5b50600e5461055c9060ff1681565b348015610ab457600080fd5b506104e6610ac3366004613ff8565b611c2e565b348015610ad457600080fd5b5061052e611c38565b348015610ae957600080fd5b5061052e600c5481565b348015610aff57600080fd5b5061052e611c77565b348015610b1457600080fd5b5060095461076c906001600160a01b031681565b348015610b3457600080fd5b506104e6610b43366004613ff8565b611c8b565b348015610b5457600080fd5b506104e6610b63366004614114565b611d1f565b348015610b7457600080fd5b50600b5461076c906001600160a01b031681565b348015610b9457600080fd5b5061052e610ba33660046140b6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b348015610bda57600080fd5b5061052e610be9366004613ff8565b611e32565b348015610bfa57600080fd5b506104e6610c09366004613ff8565b611e6c565b348015610c1a57600080fd5b5061052e610c29366004613ff8565b611ef5565b348015610c3a57600080fd5b5061052e611f29565b348015610c4f57600080fd5b506104e6610c5e366004614011565b611fc9565b348015610c6f57600080fd5b50600a5461076c906001600160a01b031681565b348015610c8f57600080fd5b506104e66120e9565b60008054610ca590614182565b80601f0160208091040260200160405190810160405280929190818152602001828054610cd190614182565b8015610d1e5780601f10610cf357610100808354040283529160200191610d1e565b820191906000526020600020905b815481529060010190602001808311610d0157829003601f168201915b505050505081565b6000610d333384846121b7565b5060015b92915050565b600080610d486113cd565b9050600080610d646127105b610d5e85856122c5565b906122d1565b9050610d7083826122dd565b935050505090565b6001600160a01b038316600081815260036020908152604080832033808552925282205491929091908214801590610db257506000198114155b15610e43576000610dde856040518060600160405280602f8152602001614558602f91398491906122e9565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b610e4e868686612315565b6001925050505b9392505050565b6000610e6782611ef5565b905060008111610eb95760405162461bcd60e51b815260206004820152601e60248201527f4d617374657243686566537472617465677956313a3a7769746864726177000060448201526064016104dd565b610ec281612451565b600080610ed0612710610d54565b600954909150610ef3906001600160a01b031633610eee86856122dd565b61247b565b610efd3385612565565b60405183815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364906020015b60405180910390a250505050565b610f43828261263b565b5050565b6009546040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b039091169063d505accf9060e401600060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b50505050610ff2338661263b565b5050505050565b6006546001600160a01b031633146110415760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b6001600160a01b03811660009081526008602052604090205460ff16156110aa5760405162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f720000000060448201526064016104dd565b6001600160a01b0381166000908152600860205260409020805460ff191660019081179091556007546110dc916121ab565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b6006546001600160a01b0316331461115e5760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b600e5481151560ff90911615150361117557600080fd5b600e805460ff19168215159081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e85906020015b60405180910390a150565b6006546001600160a01b031633146112055760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b6000811161121257600080fd5b604051339082156108fc029083906000818181858888f1935050505015801561123f573d6000803e3d6000fd5b506040805160008152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2891016111b2565b6006546001600160a01b031633146112bf5760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b031633146113515760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b60405163095ea7b360e01b81526001600160a01b0382811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af11580156113a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c491906141bc565b610f4357600080fd5b600080610d377f00000000000000000000000000000000000000000000000000000000000000003061283a565b6006546001600160a01b031633146114425760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b600c5460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600c55565b600b546001600160a01b031633146114dd5760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c7944657600000000000000000000000060448201526064016104dd565b6114e6816128d0565b50565b6006546001600160a01b031633146115315760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b6000811161153e57600080fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af115801561158b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115af91906141bc565b6115b857600080fd5b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28910160405180910390a15050565b6006546001600160a01b031633146116465760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b6000600754116116be5760405162461bcd60e51b815260206004820152603460248201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60448201527f6f20616c6c6f776564206465706f7369746f727300000000000000000000000060648201526084016104dd565b6001600160a01b03811660009081526008602052604090205460ff1615156001146117515760405162461bcd60e51b815260206004820152602a60248201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60448201527f6f7420616c6c6f7765640000000000000000000000000000000000000000000060648201526084016104dd565b6001600160a01b0381166000908152600860205260409020805460ff1916905560075461177f9060016122dd565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b600b546001600160a01b031633146118135760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c7944657600000000000000000000000060448201526064016104dd565b600b54604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60018054610ca590614182565b6006546001600160a01b031633146118d15760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b6127106118e9601054836121ab90919063ffffffff16565b11156118f457600080fd5b60115460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1601155565b6006546001600160a01b0316331461197d5760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b612710611995601154836121ab90919063ffffffff16565b11156119a057600080fd5b60105460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1601055565b6000610d33338484612315565b6006546001600160a01b03163314611a365760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aa391906141d9565b9050611ace7f0000000000000000000000000000000000000000000000000000000000000000612abf565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611b17573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b3b91906141d9565b905083611b4882846122dd565b1015611bbc5760405162461bcd60e51b815260206004820152602960248201527f4d617374657243686566537472617465677956313a3a7265736375654465706c60448201527f6f79656446756e6473000000000000000000000000000000000000000000000060648201526084016104dd565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234611be56113cd565b6002546040805192835260208301919091520160405180910390a1600e5460ff1615156001148015611c1957506001831515145b15611c2857611c286000611116565b50505050565b6114e6338261263b565b600080611c43611c77565b9050600c548110611c6f57611c69612710610d5e601054846122c590919063ffffffff16565b91505090565b600091505090565b600080611c82612bad565b95945050505050565b6006546001600160a01b03163314611cd35760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b8015611cde57600080fd5b600f5460408051918252602082018390527f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a910160405180910390a1600f55565b42841015611d6f5760405162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a65787069726564000000000000000000000000000000000060448201526064016104dd565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086611dbc83614208565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611e1d8882868686612e42565b611e288888886121b7565b5050505050505050565b6000611e48611e3f6113cd565b600254906122c5565b600003611e53575090565b610d37611e5e6113cd565b600254610d5e9085906122c5565b6006546001600160a01b03163314611eb45760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b600d5460408051918252602082018390527fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f910160405180910390a1600d55565b6000611f02611e3f6113cd565b600003611f1157506000919050565b610d37600254610d5e611f226113cd565b85906122c5565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b6000604051611f5e9190614221565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6006546001600160a01b031633146120115760405162461bcd60e51b8152602060048201819052602482015260008051602061453883398151915260448201526064016104dd565b6001600160a01b03811661208d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104dd565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b3233146121385760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f4100000000000000000000000060448201526064016104dd565b600080600080612146612bad565b9350935093509350600c548110156121a05760405162461bcd60e51b815260206004820152601e60248201527f4d617374657243686566537472617465677956313a3a7265696e76657374000060448201526064016104dd565b611c28828585612fa2565b6000610e5582846142bc565b6001600160a01b03831661220d5760405162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f20616464726573730000000060448201526064016104dd565b6001600160a01b0382166122635760405162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f2061646472657373000060448201526064016104dd565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6000610e5582846142d4565b6000610e5582846142f3565b6000610e558284614315565b6000818484111561230d5760405162461bcd60e51b81526004016104dd9190613f78565b505050900390565b6001600160a01b0382166123915760405162461bcd60e51b815260206004820152603460248201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260448201527f20746f20746865207a65726f206164647265737300000000000000000000000060648201526084016104dd565b6123ce816040518060600160405280602e81526020016145ae602e91396001600160a01b03861660009081526004602052604090205491906122e9565b6001600160a01b0380851660009081526004602052604080822093909355908416815220546123fd90826121ab565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906122b89085815260200190565b6114e67f0000000000000000000000000000000000000000000000000000000000000000826130eb565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af11580156124ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ee91906141bc565b6125605760405162461bcd60e51b815260206004820152602a60248201527f4d617374657243686566537472617465677956313a3a5452414e534645525f4660448201527f524f4d5f4641494c45440000000000000000000000000000000000000000000060648201526084016104dd565b505050565b6125a281604051806060016040528060278152602001614587602791396001600160a01b03851660009081526004602052604090205491906122e9565b60046000846001600160a01b03166001600160a01b03168152602001908152602001600020819055506125f2816040518060600160405280602781526020016145116027913960025491906122e9565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600e5460ff1615156001146126925760405162461bcd60e51b815260206004820152601e60248201527f4d617374657243686566537472617465677956313a3a5f6465706f736974000060448201526064016104dd565b600d54156126ca576000806000806126a8612bad565b9350935093509350600d548111156126c5576126c5828585612fa2565b505050505b6009546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af115801561273a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275e91906141bc565b6127d05760405162461bcd60e51b815260206004820152602560248201527f4d617374657243686566537472617465677956313a3a7472616e73666572206660448201527f61696c656400000000000000000000000000000000000000000000000000000060648201526084016104dd565b6000806127de612710610d54565b90506127f6846127f1610be986856122dd565b61316e565b6127ff836131f2565b836001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c84604051610f2b91815260200190565b6018546040517f93f1a40b000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b03838116602483015260009216906393f1a40b906044016040805180830381865afa1580156128a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c8919061432c565b509392505050565b6001600160a01b03811615612aa057600a54604080517f0dfe168100000000000000000000000000000000000000000000000000000000815290516001600160a01b0392831692841691630dfe16819160048083019260209291908290030181865afa158015612944573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129689190614350565b6001600160a01b0316036129fd57806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129d89190614350565b601580546001600160a01b0319166001600160a01b0392909216919091179055612a80565b806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a5f9190614350565b601580546001600160a01b0319166001600160a01b03929092169190911790555b601480546001600160a01b0383166001600160a01b031990911617905550565b601480546001600160a01b031990811690915560158054909116905550565b60095460185460405163095ea7b360e01b81526001600160a01b0391821660048201526000602482015291169063095ea7b3906044016020604051808303816000875af1158015612b14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3891906141bc565b506018546040517f5312ea8e000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0390911690635312ea8e906024015b600060405180830381600087803b158015612b9957600080fd5b505af1158015610ff2573d6000803e3d6000fd5b6012546040516370a0823160e01b815230600482015260009182918291829182916001600160a01b0316906370a0823190602401602060405180830381865afa158015612bfe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c2291906141d9565b90506000806000612c537f000000000000000000000000000000000000000000000000000000000000000030613292565b919450925090506000612c6685856121ab565b600a546012549192506000916001600160a01b03918216911603612c8a5784612caf565b601254600a54601354612caf9285926001600160a01b03918216929082169116613344565b905060006001600160a01b03841615612da5577fffffffffffffffffffffffff4ce09955c3e187ac9c0f78a5e48b1d847a0299396001600160a01b03851601612cf9575083612da5565b6014546001600160a01b031615612da5576015546040516370a0823160e01b8152306004820152612d7f916001600160a01b0316906370a0823190602401602060405180830381865afa158015612d54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d7891906141d9565b86906121ab565b600a54601454919650612da291879187916001600160a01b039182169116613344565b90505b600a546040516370a0823160e01b8152306004820152600091612e1e9184916001600160a01b0316906370a0823190602401602060405180830381865afa158015612df4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1891906141d9565b906121ab565b90506000612e2c82856121ab565b949d969c50909a50929850939650505050505050565b6000612e4c611f29565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810186905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa158015612ef2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590612f285750866001600160a01b0316816001600160a01b0316145b612f995760405162461bcd60e51b8152602060048201526024808201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160448201527f747572650000000000000000000000000000000000000000000000000000000060648201526084016104dd565b50505050505050565b612fcb7f0000000000000000000000000000000000000000000000000000000000000000613402565b6000612fe0612fd98461343a565b85906121ab565b9050612ff6612fef858461347e565b82906121ab565b506000613014612710610d5e601154856122c590919063ffffffff16565b9050801561303957600a54600b54613039916001600160a01b0390811691168361247b565b6000613056612710610d5e601054866122c590919063ffffffff16565b9050801561307557600a54613075906001600160a01b0316338361247b565b600061309361308e8361308887876122dd565b906122dd565b6135bd565b905061309e816131f2565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2346130c76113cd565b6002546040805192835260208301919091520160405180910390a150505050505050565b6018546040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101849052602481018390526001600160a01b039091169063441a3e70906044015b600060405180830381600087803b15801561315257600080fd5b505af1158015613166573d6000803e3d6000fd5b505050505050565b60025461317b90826121ab565b6002556001600160a01b0382166000908152600460205260409020546131a190826121ab565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061262f9085815260200190565b600081116132685760405162461bcd60e51b815260206004820152602960248201527f4d617374657243686566537472617465677956313a3a5f7374616b654465706f60448201527f736974546f6b656e73000000000000000000000000000000000000000000000060648201526084016104dd565b6114e67f0000000000000000000000000000000000000000000000000000000000000000826135ec565b6018546040517fffcd4263000000000000000000000000000000000000000000000000000000008152600481018490526001600160a01b038381166024830152600092839283928392839283929091169063ffcd426390604401600060405180830381865afa158015613309573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526133319190810190614383565b9298509196509450505050509250925092565b600080613351858561369e565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613395573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133b9919061446c565b5091509150866001600160a01b0316836001600160a01b0316146133d957905b6133f688836001600160701b0316836001600160701b03166136cf565b98975050505050505050565b601854604051631c57762b60e31b815260048101839052600060248201526001600160a01b039091169063e2bbb15890604401612b7f565b601254600a546000916001600160a01b03908116911603613459575090565b601254600a54601354610d379285926001600160a01b03918216929082169116613717565b600081156135b4576014546001600160a01b0316156134c357601554600a546014546134bc9285926001600160a01b03918216929082169116613717565b9050610d37565b4780156135335773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561351957600080fd5b505af115801561352d573d6000803e3d6000fd5b50505050505b6040516370a0823160e01b81523060048201526135ac90859073b31f66aa3c1e785363f0875a1b74e27b85fd66c7906370a0823190602401602060405180830381865afa158015613588573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308891906141d9565b915050610d37565b50600092915050565b600a54600954601654601754600093610d379386936001600160a01b03928316939183169290811691166138a4565b60095460185460405163095ea7b360e01b81526001600160a01b0391821660048201526024810184905291169063095ea7b3906044016020604051808303816000875af1158015613641573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061366591906141bc565b50601854604051631c57762b60e31b815260048101849052602481018390526001600160a01b039091169063e2bbb15890604401613138565b600080826001600160a01b0316846001600160a01b0316106136c15782846136c4565b83835b915091509250929050565b6000806136de856103e56122c5565b905060006136ec82856122c5565b9050600061370083612e18886103e86122c5565b905061370c82826122d1565b979650505050505050565b600080613724858561369e565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613768573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061378c919061446c565b5091509150866001600160a01b0316836001600160a01b0316146137ac57905b6000806137cc8a856001600160701b0316856001600160701b03166136cf565b9050886001600160a01b0316856001600160a01b0316146137e957905b6137fd6001600160a01b038a16888c613a56565b604080516000815260208101918290527f022c0d9f000000000000000000000000000000000000000000000000000000009091526001600160a01b0388169063022c0d9f9061385590859085903090602481016144bc565b600060405180830381600087803b15801561386f57600080fd5b505af1158015613883573d6000803e3d6000fd5b505050508181116138945781613896565b805b9a9950505050505050505050565b6000806138b28760026122d1565b90506000811161392a5760405162461bcd60e51b815260206004820152602f60248201527f4465784c6962726172793a3a5f636f6e76657274526577617264546f6b656e7360448201527f546f4465706f736974546f6b656e73000000000000000000000000000000000060648201526084016104dd565b6000856001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561396a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061398e9190614350565b9050816001600160a01b03888116908316146139b3576139b083898489613717565b90505b6000876001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a179190614350565b9050836001600160a01b038a811690831614613a3c57613a39858b848a613717565b90505b613a47898483613abd565b9b9a5050505050505050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b179052612560908490613cb2565b6000806000856001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015613b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b24919061446c565b50915091506000613b4886846001600160701b0316846001600160701b0316613d97565b905084811115613b7557849050613b7285836001600160701b0316856001600160701b0316613d97565b95505b613bec8787896001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bb8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bdc9190614350565b6001600160a01b03169190613a56565b613c2f8782896001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa158015613bb8573d6000803e3d6000fd5b6040517f6a6278420000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03881690636a627842906024016020604051808303816000875af1158015613c8e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061370c91906141d9565b6000613d07826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613daf9092919063ffffffff16565b8051909150156125605780806020019051810190613d2591906141bc565b6125605760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104dd565b6000613da783610d5e86856122c5565b949350505050565b6060613da78484600085856001600160a01b0385163b613e115760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104dd565b600080866001600160a01b03168587604051613e2d91906144f4565b60006040518083038185875af1925050503d8060008114613e6a576040519150601f19603f3d011682016040523d82523d6000602084013e613e6f565b606091505b509150915061370c82828660608315613e89575081610e55565b825115613e995782518084602001fd5b8160405162461bcd60e51b81526004016104dd9190613f78565b6001600160a01b03811681146114e657600080fd5b600080600080600060a08688031215613ee057600080fd5b8551613eeb81613eb3565b809550506020860151935060408601519250606086015191506080860151613f1281613eb3565b809150509295509295909350565b60005b83811015613f3b578181015183820152602001613f23565b83811115611c285750506000910152565b60008151808452613f64816020860160208601613f20565b601f01601f19169290920160200192915050565b602081526000610e556020830184613f4c565b60008060408385031215613f9e57600080fd5b8235613fa981613eb3565b946020939093013593505050565b600080600060608486031215613fcc57600080fd5b8335613fd781613eb3565b92506020840135613fe781613eb3565b929592945050506040919091013590565b60006020828403121561400a57600080fd5b5035919050565b60006020828403121561402357600080fd5b8135610e5581613eb3565b803560ff8116811461403f57600080fd5b919050565b600080600080600060a0868803121561405c57600080fd5b85359450602086013593506140736040870161402e565b94979396509394606081013594506080013592915050565b80151581146114e657600080fd5b6000602082840312156140ab57600080fd5b8135610e558161408b565b600080604083850312156140c957600080fd5b82356140d481613eb3565b915060208301356140e481613eb3565b809150509250929050565b6000806040838503121561410257600080fd5b8235915060208301356140e48161408b565b600080600080600080600060e0888a03121561412f57600080fd5b873561413a81613eb3565b9650602088013561414a81613eb3565b955060408801359450606088013593506141666080890161402e565b925060a0880135915060c0880135905092959891949750929550565b600181811c9082168061419657607f821691505b6020821081036141b657634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156141ce57600080fd5b8151610e558161408b565b6000602082840312156141eb57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006001820161421a5761421a6141f2565b5060010190565b600080835481600182811c91508083168061423d57607f831692505b6020808410820361425c57634e487b7160e01b86526022600452602486fd5b8180156142705760018114614281576142ae565b60ff198616895284890196506142ae565b60008a81526020902060005b868110156142a65781548b82015290850190830161428d565b505084890196505b509498975050505050505050565b600082198211156142cf576142cf6141f2565b500190565b60008160001904831182151516156142ee576142ee6141f2565b500290565b60008261431057634e487b7160e01b600052601260045260246000fd5b500490565b600082821015614327576143276141f2565b500390565b6000806040838503121561433f57600080fd5b505080516020909101519092909150565b60006020828403121561436257600080fd5b8151610e5581613eb3565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561439957600080fd5b8451935060208501516143ab81613eb3565b604086015190935067ffffffffffffffff808211156143c957600080fd5b818701915087601f8301126143dd57600080fd5b8151818111156143ef576143ef61436d565b604051601f8201601f19908116603f011681019083821181831017156144175761441761436d565b816040528281528a602084870101111561443057600080fd5b614441836020830160208801613f20565b60609990990151979a969950505050505050565b80516001600160701b038116811461403f57600080fd5b60008060006060848603121561448157600080fd5b61448a84614455565b925061449860208501614455565b9150604084015163ffffffff811681146144b157600080fd5b809150509250925092565b8481528360208201526001600160a01b03831660408201526080606082015260006144ea6080830184613f4c565b9695505050505050565b60008251614506818460208701613f20565b919091019291505056fe5f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c794f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65727472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a2646970667358221220d93f31d9fee34e5b19d931c082c15560dcd2d255a91396fdb3ac5050405b7bf864736f6c634300080d003353776170207061697220277377617050616972506f6f6c5265776172642720644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001c0000000000000000000000000e5e9d67e93ad363a50cabcb9e931279251bbefd0000000000000000000000000b31f66aa3c1e785363f0875a1b74e27b85fd66c70000000000000000000000006e84a6216ea6dacc71ee8e6b0a5b7322eebc0fdd000000000000000000000000454e67025631c065d3cfad6d71e6892f74487a150000000000000000000000000b2777b0c55aeaaeb56e86b6eefa6cc2cfa00e07000000000000000000000000e5e9d67e93ad363a50cabcb9e931279251bbefd00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000188bed1968b795d5c9022f6a0bb5931ac4c18f00000000000000000000000000000000000000000000000000000000000000004e000000000000000000000000302404cb8f34713a8b8dbf9b4989a41252332068000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000000000000000000000000000000000000000002bc000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000000000175969656c642059616b3a204a4c50204341492d41564158000000000000000000