[ { "inputs": [ { "internalType": "string", "name": "_name", "type": "string" }, { "internalType": "address", "name": "_depositToken", "type": "address" }, { "internalType": "address", "name": "_swapPairDepositToken", "type": "address" }, { "components": [ { "internalType": "address", "name": "reward", "type": "address" }, { "internalType": "address", "name": "swapPair", "type": "address" } ], "internalType": "struct VariableRewardsStrategy.RewardSwapPairs[]", "name": "_rewardSwapPairs", "type": "tuple[]" }, { "internalType": "address", "name": "_stakingContract", "type": "address" }, { "internalType": "address", "name": "_boosterFeeCollector", "type": "address" }, { "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": false, "internalType": "address", "name": "rewardToken", "type": "address" }, { "indexed": false, "internalType": "address", "name": "swapPair", "type": "address" } ], "name": "AddReward", "type": "event" }, { "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": false, "internalType": "address", "name": "rewardToken", "type": "address" } ], "name": "RemoveReward", "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": "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": "_rewardToken", "type": "address" }, { "internalType": "address", "name": "_swapPair", "type": "address" } ], "name": "addReward", "outputs": [], "stateMutability": "nonpayable", "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": "boosterFeeCollector", "outputs": [ { "internalType": "contract IBoosterFeeCollector", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "calculateDepositFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "calculateWithdrawFee", "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": [ { "internalType": "address", "name": "_rewardToken", "type": "address" } ], "name": "removeReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minReturnAmountAccepted", "type": "uint256" }, { "internalType": "bool", "name": "", "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": "rewardCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardSwapPairs", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardToken", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "supportedRewards", "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": "address", "name": "_collector", "type": "address" } ], "name": "updateBoosterFeeCollector", "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": [], "name": "vectorMainStaking", "outputs": [ { "internalType": "contract IVectorMainStaking", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60e0604052600960a0819052685969656c642059616b60b81b60c09081526200002c916000919062000ada565b506040805180820190915260038082526216549560ea1b6020909201918252620000599160019162000ada565b503480156200006757600080fd5b5060405162005a2e38038062005a2e8339810160408190526200008a9162000d31565b878787878585858584848480600033600680546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062005a0e833981519152908290a3508051620000e3906200028a565b6020810151620000f3906200031a565b60408101516200010390620003d1565b5084516200011990600090602088019062000ada565b50600980546001600160a01b0386166001600160a01b031991821617909155600a8054821673b31f66aa3c1e785363f0875a1b74e27b85fd66c7179055600b8054909116732d580f9cf2fb2d09bc411532988f2afda4e7beff17905560005b8351811015620001e957620001d48482815181106200019b576200019b62000e87565b602002602001015160000151858381518110620001bc57620001bc62000e87565b6020026020010151602001516200048860201b60201c565b80620001e08162000eb3565b91505062000178565b50620001f6600162000611565b6200020182620006bb565b60408051600080825260208201527fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234910160405180910390a150505050506200025084620007b860201b60201c565b505050506001600160a01b039586166080525050601680546001600160a01b03191693909416929092179092555062000f44945050505050565b6006546001600160a01b03163314620002d95760405162461bcd60e51b81526020600482018190526024820152600080516020620059ee83398151915260448201526064015b60405180910390fd5b600c5460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600c55565b6006546001600160a01b03163314620003655760405162461bcd60e51b81526020600482018190526024820152600080516020620059ee8339815191526044820152606401620002d0565b6127106200038460105483620008a060201b620023241790919060201c565b11156200039057600080fd5b60115460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1601155565b6006546001600160a01b031633146200041c5760405162461bcd60e51b81526020600482018190526024820152600080516020620059ee8339815191526044820152606401620002d0565b6127106200043b60115483620008a060201b620023241790919060201c565b11156200044757600080fd5b60105460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1601055565b600a546001600160a01b038381169116146200054157620004cb8183600a60009054906101000a90046001600160a01b0316620008b560201b620023301760201c565b62000541576040805162461bcd60e51b81526020600482015260248101919091527f5661726961626c655265776172647353747261746567793a3a5377617020706160448201527f697220646f6573206e6f7420636f6e7461696e2072657761726420746f6b656e6064820152608401620002d0565b6001600160a01b038083166000818152601260209081526040822080549486166001600160a01b03199586161790556013805460018181018355919093527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0909092018054909416909217909255601454620005c792909162002324620008a0821b17901c565b601455604080516001600160a01b038085168252831660208201527f916e172c080569186aa7ea048268267257cf7cc49505908863f747bca8620f80910160405180910390a15050565b6006546001600160a01b031633146200065c5760405162461bcd60e51b81526020600482018190526024820152600080516020620059ee8339815191526044820152606401620002d0565b600e5481151560ff9091161515036200067457600080fd5b600e805460ff19168215159081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e859060200160405180910390a150565b6006546001600160a01b03163314620007065760405162461bcd60e51b81526020600482018190526024820152600080516020620059ee8339815191526044820152606401620002d0565b6001600160a01b0381166200076d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620002d0565b6006546040516001600160a01b0380841692169060008051602062005a0e83398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600954600a54620007e49183916001600160a01b039182169116620008b5602090811b6200233017901c565b6200087e5760405162461bcd60e51b815260206004820152605a60248201527f5661726961626c65526577617264735374726174656779466f7253413a3a737760448201527f6170506169724465706f736974546f6b656e20646f6573206e6f74206d61746360648201527f68206465706f73697420616e642072657761726420746f6b656e000000000000608482015260a401620002d0565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000620008ae828462000ecf565b9392505050565b6000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620008f6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200091c919062000eea565b6001600160a01b0316836001600160a01b03161480620009b15750836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000976573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200099c919062000eea565b6001600160a01b0316836001600160a01b0316145b801562000ab35750836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620009f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a1e919062000eea565b6001600160a01b0316826001600160a01b0316148062000ab35750836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a78573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a9e919062000eea565b6001600160a01b0316826001600160a01b0316145b801562000ad25750816001600160a01b0316836001600160a01b031614155b949350505050565b82805462000ae89062000f08565b90600052602060002090601f01602090048101928262000b0c576000855562000b57565b82601f1062000b2757805160ff191683800117855562000b57565b8280016001018555821562000b57579182015b8281111562000b5757825182559160200191906001019062000b3a565b5062000b6592915062000b69565b5090565b5b8082111562000b65576000815560010162000b6a565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562000bbb5762000bbb62000b80565b60405290565b604051601f8201601f191681016001600160401b038111828210171562000bec5762000bec62000b80565b604052919050565b80516001600160a01b038116811462000c0c57600080fd5b919050565b600082601f83011262000c2357600080fd5b815160206001600160401b0382111562000c415762000c4162000b80565b62000c51818360051b0162000bc1565b82815260069290921b8401810191818101908684111562000c7157600080fd5b8286015b8481101562000cc7576040818903121562000c905760008081fd5b62000c9a62000b96565b62000ca58262000bf4565b815262000cb485830162000bf4565b8186015283529183019160400162000c75565b509695505050505050565b60006060828403121562000ce557600080fd5b604051606081016001600160401b038111828210171562000d0a5762000d0a62000b80565b80604052508091508251815260208301516020820152604083015160408201525092915050565b600080600080600080600080610140898b03121562000d4f57600080fd5b88516001600160401b038082111562000d6757600080fd5b818b0191508b601f83011262000d7c57600080fd5b81518181111562000d915762000d9162000b80565b602062000da7601f8301601f1916820162000bc1565b8281528e8284870101111562000dbc57600080fd5b60005b8381101562000ddc57858101830151828201840152820162000dbf565b8381111562000dee5760008385840101525b509b5062000dfe8d820162000bf4565b9a50505062000e1060408c0162000bf4565b975060608b015191508082111562000e2757600080fd5b5062000e368b828c0162000c11565b95505062000e4760808a0162000bf4565b935062000e5760a08a0162000bf4565b925062000e6760c08a0162000bf4565b915062000e788a60e08b0162000cd2565b90509295985092959890939650565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820162000ec85762000ec862000e9d565b5060010190565b6000821982111562000ee55762000ee562000e9d565b500190565b60006020828403121562000efd57600080fd5b620008ae8262000bf4565b600181811c9082168062000f1d57607f821691505b60208210810362000f3e57634e487b7160e01b600052602260045260246000fd5b50919050565b608051614a8762000f676000396000818161061e0152612e4b0152614a876000f3fe608060405234801561001057600080fd5b50600436106103c55760003560e01c806381837230116101ff578063b9e57b801161011a578063dd8ce4d6116100ad578063ed24911d1161007c578063ed24911d14610887578063f2fde38b1461088f578063f7c618c1146108a2578063fdb5a03e146108b557600080fd5b8063dd8ce4d61461083b578063e21ac8251461084e578063e75ab04514610861578063eab89a5a1461087457600080fd5b8063cff1b6ef116100e9578063cff1b6ef146107c9578063d505accf146107dc578063da09c72c146107ef578063dd62ed3e1461080257600080fd5b8063b9e57b801461079d578063bd079f55146107a5578063c4b24a46146107ae578063c89039c5146107b657600080fd5b80639e4e731811610192578063a9059cbb11610161578063a9059cbb14610757578063ac0d31ff1461076a578063b52a321f1461077d578063b6b55f251461078a57600080fd5b80639e4e7318146106e1578063a4d5e67c14610708578063a5534e711461071b578063a8ae2b7c1461074457600080fd5b80638da5cb5b116101ce5780638da5cb5b146106a25780639291d563146106b357806395d89b41146106c657806399729ec1146106ce57600080fd5b806381837230146106605780638980f11f146106735780638aff733d146106865780638b73e6061461068f57600080fd5b806340b47e1a116102ef57806370a08231116102825780637ae26773116102515780637ae26773146105fe5780637d882097146106115780637e08c185146106195780637ecebe001461064057600080fd5b806370a08231146105bb578063715018a6146105e4578063789139bc146105ec57806379085425146105f557600080fd5b80634e77ace5116102be5780634e77ace5146105795780634ebb79161461058c5780635ea682ea1461059f5780636c8b4b52146105a857600080fd5b806340b47e1a1461051d578063483c2ef0146105305780634a970be7146105535780634bebd1e71461056657600080fd5b806320606b70116103675780632f4f21e2116103365780632f4f21e2146104c057806330adf81f146104d3578063313ce567146104fa5780633bdc6e721461051457600080fd5b806320606b701461047157806323b872dd14610498578063247d284b146104555780632e1a7d4d146104ab57600080fd5b80630f23475d116103a35780630f23475d146104225780630fccc4001461042a578063110560351461045557806318160ddd1461046857600080fd5b806306fdde03146103ca57806307677111146103e8578063095ea7b3146103ff575b600080fd5b6103d26108bd565b6040516103df91906143d2565b60405180910390f35b6103f1600f5481565b6040519081526020016103df565b61041261040d3660046143fa565b61094b565b60405190151581526020016103df565b6103f1610961565b60165461043d906001600160a01b031681565b6040516001600160a01b0390911681526020016103df565b6103f1610463366004614426565b61098c565b6103f160025481565b6103f17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6104126104a636600461443f565b61099d565b6104be6104b9366004614426565b610a81565b005b6104be6104ce3660046143fa565b610b89565b6103f17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b610502601281565b60405160ff90911681526020016103df565b6103f160075481565b6104be61052b366004614480565b610b97565b61041261053e3660046144b9565b60086020526000908152604090205460ff1681565b6104be6105613660046144ec565b610bfb565b6104be6105743660046144b9565b610cad565b6104be610587366004614541565b610dca565b6104be61059a366004614426565b610e71565b6103f160115481565b6104be6105b63660046144b9565b610f2b565b6103f16105c93660046144b9565b6001600160a01b031660009081526004602052604090205490565b6104be610f95565b6103f1600d5481565b6103f160145481565b6104be61060c366004614480565b611027565b6103f16110eb565b61043d7f000000000000000000000000000000000000000000000000000000000000000081565b6103f161064e3660046144b9565b60056020526000908152604090205481565b6104be61066e366004614426565b61117d565b6104be6106813660046143fa565b611206565b6103f160105481565b6104be61069d3660046144b9565b61131c565b6006546001600160a01b031661043d565b6104be6106c13660046144b9565b6114d7565b6103d261159a565b6104be6106dc366004614426565b6115a7565b6103f17fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc681565b6104be6107163660046144b9565b611653565b61043d6107293660046144b9565b6012602052600090815260409020546001600160a01b031681565b6104be610752366004614426565b611892565b6104126107653660046143fa565b61193e565b6104be61077836600461455e565b61194b565b600e546104129060ff1681565b6104be610798366004614426565b611b81565b6103f1611b8e565b6103f1600c5481565b6103f1611bd3565b60095461043d906001600160a01b031681565b6104be6107d7366004614426565b611e41565b6104be6107ea366004614583565b611ed5565b600b5461043d906001600160a01b031681565b6103f1610810366004614480565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6103f1610849366004614426565b611fe8565b6104be61085c366004614426565b612022565b61043d61086f366004614426565b6120ab565b6103f1610882366004614426565b6120d5565b6103f1612109565b6104be61089d3660046144b9565b6121a9565b600a5461043d906001600160a01b031681565b6104be6122c9565b600080546108ca906145f1565b80601f01602080910402602001604051908101604052809291908181526020018280546108f6906145f1565b80156109435780601f1061091857610100808354040283529160200191610943565b820191906000526020600020905b81548152906001019060200180831161092657829003601f168201915b505050505081565b6000610958338484612545565b50600192915050565b60008061096c6110eb565b9050600061097982612653565b90506109858282612666565b9250505090565b600061099782612653565b92915050565b6001600160a01b0383166000818152600360209081526040808320338085529252822054919290919082148015906109d757506000198114155b15610a68576000610a03856040518060600160405280602f81526020016149ce602f9139849190612672565b6001600160a01b038881166000818152600360209081526040808320948916808452948252918290208590559051848152939450919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b610a7386868661269e565b6001925050505b9392505050565b6000610a8c826120d5565b905060008111610b095760405162461bcd60e51b815260206004820152603060248201527f5661726961626c655265776172647353747261746567793a3a5769746864726160448201527f7720616d6f756e7420746f6f206c6f770000000000000000000000000000000060648201526084015b60405180910390fd5b6000610b14826127da565b90506000610b2183612653565b9050610b4433610b318484612666565b6009546001600160a01b0316919061294c565b610b4e33856129b8565b60405183815233907f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243649060200160405180910390a250505050565b610b938282612a8e565b5050565b600b546001600160a01b03163314610bf15760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c794465760000000000000000000000006044820152606401610b00565b610b938282612caf565b6009546040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b039091169063d505accf9060e401600060405180830381600087803b158015610c8457600080fd5b505af1158015610c98573d6000803e3d6000fd5b50505050610ca63386612a8e565b5050505050565b6006546001600160a01b03163314610cf55760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b6001600160a01b03811660009081526008602052604090205460ff1615610d5e5760405162461bcd60e51b815260206004820152601c60248201527f5065726d697373696f6e65643a3a616c6c6f774465706f7369746f72000000006044820152606401610b00565b6001600160a01b0381166000908152600860205260409020805460ff19166001908117909155600754610d9091612324565b6007556040516001600160a01b038216907fc0a1035c16faf8d1304056d92c00edf028f87e62b8235a938f00af9e3c0312c590600090a250565b6006546001600160a01b03163314610e125760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b600e5481151560ff909116151503610e2957600080fd5b600e805460ff19168215159081179091556040519081527f7b014ed3854e7f5cb0218d58b3c6ae7d53a68bb0af2f67bfb029ea42c38a7e85906020015b60405180910390a150565b6006546001600160a01b03163314610eb95760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b60008111610ec657600080fd5b604051339082156108fc029083906000818181858888f19350505050158015610ef3573d6000803e3d6000fd5b506040805160008152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa289101610e66565b6006546001600160a01b03163314610f735760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6006546001600160a01b03163314610fdd5760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b6006546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600680546001600160a01b0319169055565b6006546001600160a01b0316331461106f5760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b60405163095ea7b360e01b81526001600160a01b0382811660048301526000602483015283169063095ea7b3906044016020604051808303816000875af11580156110be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e2919061462b565b610b9357600080fd5b60006110f5612e0b565b6040517fa4e7f6760000000000000000000000000000000000000000000000000000000081523060048201526001600160a01b03919091169063a4e7f67690602401602060405180830381865afa158015611154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111789190614648565b905090565b6006546001600160a01b031633146111c55760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b600c5460408051918252602082018390527f481f79ac3a523b6d6db3c5a720e190e986d1cc1b41adcdf50f9caef849901100910160405180910390a1600c55565b6006546001600160a01b0316331461124e5760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b6000811161125b57600080fd5b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156112a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112cc919061462b565b6112d557600080fd5b604080516001600160a01b0384168152602081018390527f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa2891015b60405180910390a15050565b6006546001600160a01b031633146113645760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b6000600754116113dc5760405162461bcd60e51b815260206004820152603460248201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60448201527f6f20616c6c6f776564206465706f7369746f72730000000000000000000000006064820152608401610b00565b6001600160a01b03811660009081526008602052604090205460ff16151560011461146f5760405162461bcd60e51b815260206004820152602a60248201527f5065726d697373696f6e65643a3a72656d6f76654465706f7369746f722c206e60448201527f6f7420616c6c6f776564000000000000000000000000000000000000000000006064820152608401610b00565b6001600160a01b0381166000908152600860205260409020805460ff1916905560075461149d906001612666565b6007556040516001600160a01b038216907f0e86f6608b536e5339a25b65ff531f5ea91e1313d056ecd4752b35cbd16137d490600090a250565b600b546001600160a01b031633146115315760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c794465760000000000000000000000006044820152606401610b00565b600b54604080516001600160a01b03928316815291831660208301527fa8e91499ed37682f43cffb045fcc7d379a91e8c9a14e6321877ee34dee564c00910160405180910390a1600b80546001600160a01b0319166001600160a01b0392909216919091179055565b600180546108ca906145f1565b6006546001600160a01b031633146115ef5760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b6127106116076010548361232490919063ffffffff16565b111561161257600080fd5b60115460408051918252602082018390527f2a42303d002f0ba6cfe8259c91d4684443fb0b3de286ba74991175d651726131910160405180910390a1601155565b600b546001600160a01b031633146116ad5760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c794465760000000000000000000000006044820152606401610b00565b6001600160a01b038116600090815260126020526040812080546001600160a01b0319169055805b6013548110156117a157601381815481106116f2576116f2614661565b6000918252602090912001546001600160a01b039081169084160361178f57601380546001935061172490849061468d565b8154811061173457611734614661565b600091825260209091200154601380546001600160a01b03909216918390811061176057611760614661565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505b80611799816146a4565b9150506116d5565b50806118155760405162461bcd60e51b815260206004820152603460248201527f5661726961626c655265776172647353747261746567793a3a5265776172642060448201527f746f2064656c657465206e6f7420666f756e64210000000000000000000000006064820152608401610b00565b6013805480611826576118266146bd565b600082815260209020810160001990810180546001600160a01b0319169055019055601454611856906001612666565b6014556040516001600160a01b03831681527f963b7c735475147a62c589c2d7cb8ec4b0a6b7af4f97373d79ebfa42ab8aa7dc90602001611310565b6006546001600160a01b031633146118da5760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b6127106118f26011548361232490919063ffffffff16565b11156118fd57600080fd5b60105460408051918252602082018390527fe7f97d51d307dc44045597c9978bec0f842e6bb40d19b9444084cfa30d9ed4f2910160405180910390a1601055565b600061095833848461269e565b6006546001600160a01b031633146119935760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa1580156119dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a009190614648565b9050611a0a612ec7565b6009546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611a53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a779190614648565b905083611a848284612666565b1015611b1e5760405162461bcd60e51b815260206004820152604d60248201527f5661726961626c655265776172647353747261746567793a3a456d657267656e60448201527f6379207769746864726177206d696e696d756d2072657475726e20616d6f756e60648201527f74206e6f74207265616368656400000000000000000000000000000000000000608482015260a401610b00565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef234611b476110eb565b6002546040805192835260208301919091520160405180910390a1600e5460ff161515600103611b7b57611b7b6000610dca565b50505050565b611b8b3382612a8e565b50565b600080611b99611bd3565b9050600c548110611bcb57611bc5612710611bbf60105484612fce90919063ffffffff16565b90612fda565b91505090565b600091505090565b600080611bde612fe6565b6040516370a0823160e01b815230600482015290915060009073b31f66aa3c1e785363f0875a1b74e27b85fd66c7906370a0823190602401602060405180830381865afa158015611c33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c579190614648565b9050611c638147612324565b5060005b8251811015611e3a576000838281518110611c8457611c84614661565b602002602001015160000151905073b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b0316816001600160a01b031603611cf657611cef848381518110611cd457611cd4614661565b6020026020010151602001518461232490919063ffffffff16565b9250611e27565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015611d3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d619190614648565b90506000611d95868581518110611d7a57611d7a614661565b6020026020010151602001518361232490919063ffffffff16565b9050600060126000888781518110611daf57611daf614661565b602090810291909101810151516001600160a01b03908116835290820192909252604001600020541690508115801590611df157506001600160a01b03811615155b15611e2357611e20611e19838673b31f66aa3c1e785363f0875a1b74e27b85fd66c785613354565b8790612324565b95505b5050505b5080611e32816146a4565b915050611c67565b5092915050565b6006546001600160a01b03163314611e895760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b8015611e9457600080fd5b600f5460408051918252602082018390527f3cc372f330f95ac9540626dc8a25f5bf21ba607215a5d58304cb804d446f104a910160405180910390a1600f55565b42841015611f255760405162461bcd60e51b815260206004820152600f60248201527f7065726d69743a3a6578706972656400000000000000000000000000000000006044820152606401610b00565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086611f72836146a4565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611fd38882868686613420565b611fde888888612545565b5050505050505050565b6000611ffe611ff56110eb565b60025490612fce565b600003612009575090565b6109976120146110eb565b600254611bbf908590612fce565b6006546001600160a01b0316331461206a5760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b600d5460408051918252602082018390527fa5dae50539d56dfe1fb5273d883b0c39bc76750a25d036fc5fbd09ad8fd5f57f910160405180910390a1600d55565b601381815481106120bb57600080fd5b6000918252602090912001546001600160a01b0316905081565b60006120e2611ff56110eb565b6000036120f157506000919050565b610997600254611bbf6121026110eb565b8590612fce565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60001b600060405161213e91906146d3565b6040519081900390207fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc646604080516020810195909552840192909252606083015260808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6006546001600160a01b031633146121f15760405162461bcd60e51b815260206004820181905260248201526000805160206149ae8339815191526044820152606401610b00565b6001600160a01b03811661226d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610b00565b6006546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b3233146123185760405162461bcd60e51b815260206004820152601460248201527f59616b53747261746567793a3a6f6e6c79454f410000000000000000000000006044820152606401610b00565b6123226000613580565b565b6000610a7a828461476e565b6000836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015612370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123949190614786565b6001600160a01b0316836001600160a01b031614806124255750836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123ec573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124109190614786565b6001600160a01b0316836001600160a01b0316145b801561251f5750836001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa15801561246a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061248e9190614786565b6001600160a01b0316826001600160a01b0316148061251f5750836001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250a9190614786565b6001600160a01b0316826001600160a01b0316145b801561253d5750816001600160a01b0316836001600160a01b031614155b949350505050565b6001600160a01b03831661259b5760405162461bcd60e51b815260206004820152601c60248201527f5f617070726f76653a3a6f776e6572207a65726f2061646472657373000000006044820152606401610b00565b6001600160a01b0382166125f15760405162461bcd60e51b815260206004820152601e60248201527f5f617070726f76653a3a7370656e646572207a65726f206164647265737300006044820152606401610b00565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600080610a7a612710611bbf8584612fce565b6000610a7a828461468d565b600081848411156126965760405162461bcd60e51b8152600401610b0091906143d2565b505050900390565b6001600160a01b03821661271a5760405162461bcd60e51b815260206004820152603460248201527f5f7472616e73666572546f6b656e733a2063616e6e6f74207472616e7366657260448201527f20746f20746865207a65726f20616464726573730000000000000000000000006064820152608401610b00565b612757816040518060600160405280602e8152602001614a24602e91396001600160a01b0386166000908152600460205260409020549190612672565b6001600160a01b0380851660009081526004602052604080822093909355908416815220546127869082612324565b6001600160a01b0380841660008181526004602052604090819020939093559151908516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126469085815260200190565b6009546040516370a0823160e01b815230600482015260009182916001600160a01b03909116906370a0823190602401602060405180830381865afa158015612827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061284b9190614648565b9050612855612e0b565b6040517f441a3e7000000000000000000000000000000000000000000000000000000000815260048101859052600060248201526001600160a01b03919091169063441a3e7090604401600060405180830381600087803b1580156128b957600080fd5b505af11580156128cd573d6000803e3d6000fd5b50506009546040516370a0823160e01b8152306004820152600093506001600160a01b0390911691506370a0823190602401602060405180830381865afa15801561291c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129409190614648565b905061253d8183612666565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b1790526129b3908490613703565b505050565b6129f5816040518060600160405280602781526020016149fd602791396001600160a01b0385166000908152600460205260409020549190612672565b60046000846001600160a01b03166001600160a01b0316815260200190815260200160002081905550612a4581604051806060016040528060278152602001614987602791396002549190612672565b6002556040518181526000906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020015b60405180910390a35050565b600e5460ff161515600114612b0b5760405162461bcd60e51b815260206004820152602a60248201527f5661726961626c655265776172647353747261746567793a3a4465706f73697460448201527f732064697361626c6564000000000000000000000000000000000000000000006064820152608401610b00565b600d5415612b35576000612b1d611bd3565b9050600d54811115612b3357612b336001613580565b505b6009546040517f23b872dd000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303816000875af1158015612ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bc9919061462b565b612c3b5760405162461bcd60e51b815260206004820152603660248201527f5661726961626c655265776172647353747261746567793a3a4465706f73697460448201527f20746f6b656e207472616e73666572206661696c6564000000000000000000006064820152608401610b00565b6000612c4682612653565b9050612c5e83612c596108498585612666565b6137e8565b612c678261386c565b826001600160a01b03167fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c83604051612ca291815260200190565b60405180910390a2505050565b600a546001600160a01b03838116911614612d5157600a54612cdd90829084906001600160a01b0316612330565b612d51576040805162461bcd60e51b81526020600482015260248101919091527f5661726961626c655265776172647353747261746567793a3a5377617020706160448201527f697220646f6573206e6f7420636f6e7461696e2072657761726420746f6b656e6064820152608401610b00565b6001600160a01b03808316600081815260126020526040812080549385166001600160a01b03199485161790556013805460018181018355919092527f66de8ffda797e3de9c05e8fc57b3bf0ec28a930d40b0d285d93c06501cf6a0909091018054909316909117909155601454612dc891612324565b601455604080516001600160a01b038085168252831660208201527f916e172c080569186aa7ea048268267257cf7cc49505908863f747bca8620f809101611310565b6009546040517f06bfa9380000000000000000000000000000000000000000000000000000000081526001600160a01b03918216600482015260009182917f0000000000000000000000000000000000000000000000000000000000000000909116906306bfa9389060240161012060405180830381865afa158015612e95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb991906147a3565b9a9950505050505050505050565b6000612ed1612e0b565b60095460405163095ea7b360e01b81526001600160a01b0380841660048301526000602483015292935091169063095ea7b3906044016020604051808303816000875af1158015612f26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f4a919061462b565b50806001600160a01b031663441a3e70612f626110eb565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b168152600481019190915260006024820152604401600060405180830381600087803b158015612fba57600080fd5b505af1158015610ca6573d6000803e3d6000fd5b6000610a7a8284614849565b6000610a7a8284614868565b60606000612ff2612e0b565b60145490915060008167ffffffffffffffff8111156130135761301361488a565b60405190808252806020026020018201604052801561305857816020015b60408051808201909152600080825260208201528152602001906001900390816130315790505b506040516246613160e11b81527322d4002028f537599be9f666d1c4fa138522f9c8600482015290915060009081906001600160a01b03861690628cc262906024016040805180830381865afa1580156130b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130da91906148a0565b601654604051633cb6bbcb60e21b8152306004820152602481018390529294509092506000916001600160a01b039091169063f2daef2c90604401602060405180830381865afa158015613132573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131569190614648565b604080518082019091527322d4002028f537599be9f666d1c4fa138522f9c88152909150602081016131888484612666565b8152508460008151811061319e5761319e614661565b60200260200101819052506040518060400160405280735817d4f0b62a59b17f75207da1848c2ce75e7af46001600160a01b0316815260200184815250846001815181106131ee576131ee614661565b6020908102919091010152600260005b868110156133475760006013828154811061321b5761321b614661565b6000918252602090912001546001600160a01b031690507322d4002028f537599be9f666d1c4fa138522f9c881148061327057506001600160a01b038116735817d4f0b62a59b17f75207da1848c2ce75e7af4145b1561327b5750613335565b6040516246613160e11b81526001600160a01b038281166004830152600091908b1690628cc262906024016040805180830381865afa1580156132c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e691906148a0565b9150506040518060400160405280836001600160a01b031681526020018281525088858151811061331957613319614661565b6020026020010181905250838061332f906146a4565b94505050505b8061333f816146a4565b9150506131fe565b5093979650505050505050565b60008061336185856138eb565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156133a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c991906148e2565b5091509150866001600160a01b0316836001600160a01b0316146133e957905b61341488836dffffffffffffffffffffffffffff16836dffffffffffffffffffffffffffff1661391c565b98975050505050505050565b600061342a612109565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810186905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff88169284019290925260608301869052608083018590529092509060019060a0016020604051602081039080840390855afa1580156134d0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906135065750866001600160a01b0316816001600160a01b0316145b6135775760405162461bcd60e51b8152602060048201526024808201527f417263683a3a76616c69646174655369673a20696e76616c6964207369676e6160448201527f74757265000000000000000000000000000000000000000000000000000000006064820152608401610b00565b50505050505050565b61358861396a565b6000613592613b60565b90508161361157600c548110156136115760405162461bcd60e51b815260206004820152603060248201527f5661726961626c655265776172647353747261746567793a3a5265696e76657360448201527f7420616d6f756e7420746f6f206c6f77000000000000000000000000000000006064820152608401610b00565b600061362e612710611bbf60115485612fce90919063ffffffff16565b9050801561365357600b54600a54613653916001600160a01b0391821691168361294c565b6000613670612710611bbf60105486612fce90919063ffffffff16565b9050801561368f57600a5461368f906001600160a01b0316338361294c565b60006136ad6136a8836136a28787612666565b90612666565b613d9c565b90506136b88161386c565b7fc7606d21ac05cd309191543e409f0845c016120563783d70e4f41419dc0ef2346136e16110eb565b6002546040805192835260208301919091520160405180910390a15050505050565b6000613758826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613dc49092919063ffffffff16565b8051909150156129b35780806020019051810190613776919061462b565b6129b35760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610b00565b6002546137f59082612324565b6002556001600160a01b03821660009081526004602052604090205461381b9082612324565b6001600160a01b0383166000818152600460205260408082209390935591519091907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612a829085815260200190565b600081116138e25760405162461bcd60e51b815260206004820152602d60248201527f5661726961626c655265776172647353747261746567793a3a5374616b65206160448201527f6d6f756e7420746f6f206c6f77000000000000000000000000000000000000006064820152608401610b00565b611b8b81613dd3565b600080826001600160a01b0316846001600160a01b03161061390e578284613911565b83835b915091509250929050565b60008061392b856103e5612fce565b905060006139398285612fce565b905060006139538361394d886103e8612fce565b90612324565b905061395f8282612fda565b979650505050505050565b6040516370a0823160e01b81523060048201526000907322d4002028f537599be9f666d1c4fa138522f9c8906370a0823190602401602060405180830381865afa1580156139bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e09190614648565b90506139ea612e0b565b6001600160a01b0316633d18b9126040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613a2457600080fd5b505af1158015613a38573d6000803e3d6000fd5b50506040516370a0823160e01b815230600482015260009250613ab8915083907322d4002028f537599be9f666d1c4fa138522f9c8906370a0823190602401602060405180830381865afa158015613a94573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136a29190614648565b601654604051633cb6bbcb60e21b8152306004820152602481018390529192506000916001600160a01b039091169063f2daef2c90604401602060405180830381865afa158015613b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b319190614648565b6016549091506129b3907322d4002028f537599be9f666d1c4fa138522f9c8906001600160a01b03168361294c565b6040516370a0823160e01b8152306004820152600090819073b31f66aa3c1e785363f0875a1b74e27b85fd66c7906370a0823190602401602060405180830381865afa158015613bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613bd89190614648565b60135490915060005b81811015613d9457600060138281548110613bfe57613bfe614661565b6000918252602090912001546001600160a01b031690507fffffffffffffffffffffffff4ce09955c3e187ac9c0f78a5e48b1d847a0299398101613cc857478015613cc15773b31f66aa3c1e785363f0875a1b74e27b85fd66c76001600160a01b031663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015613c9257600080fd5b505af1158015613ca6573d6000803e3d6000fd5b5050505050613cbe818661232490919063ffffffff16565b94505b5050613d82565b6040516370a0823160e01b81523060048201526000906001600160a01b038316906370a0823190602401602060405180830381865afa158015613d0f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d339190614648565b90508015613d7f576001600160a01b03808316600090815260126020526040902054168015613d7d57600a54613d7a90611e1990849086906001600160a01b031685614071565b95505b505b50505b80613d8c816146a4565b915050613be1565b509092915050565b600a546009546015546000926109979285926001600160a01b03928316929182169116614071565b606061253d8484600085614209565b6000613ddd612e0b565b9050600960009054906101000a90046001600160a01b03166001600160a01b031663095ea7b3826001600160a01b0316631208e15b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613e41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e659190614786565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152602481018590526044016020604051808303816000875af1158015613eca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613eee919061462b565b506040517fb6b55f25000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b0382169063b6b55f2590602401600060405180830381600087803b158015613f4a57600080fd5b505af1158015613f5e573d6000803e3d6000fd5b50505050600960009054906101000a90046001600160a01b03166001600160a01b031663095ea7b3826001600160a01b0316631208e15b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613fc4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613fe89190614786565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152600060248201526044016020604051808303816000875af115801561404d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129b3919061462b565b60008061407e85856138eb565b509050600080846001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156140c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140e691906148e2565b5091509150866001600160a01b0316836001600160a01b03161461410657905b6000806141348a856dffffffffffffffffffffffffffff16856dffffffffffffffffffffffffffff1661391c565b9050886001600160a01b0316856001600160a01b03161461415157905b6141656001600160a01b038a16888c61294c565b604080516000815260208101918290527f022c0d9f000000000000000000000000000000000000000000000000000000009091526001600160a01b0388169063022c0d9f906141bd9085908590309060248101614932565b600060405180830381600087803b1580156141d757600080fd5b505af11580156141eb573d6000803e3d6000fd5b505050508181116141fc5781612eb9565b9998505050505050505050565b6060824710156142815760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610b00565b6001600160a01b0385163b6142d85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610b00565b600080866001600160a01b031685876040516142f4919061496a565b60006040518083038185875af1925050503d8060008114614331576040519150601f19603f3d011682016040523d82523d6000602084013e614336565b606091505b509150915061395f82828660608315614350575081610a7a565b8251156143605782518084602001fd5b8160405162461bcd60e51b8152600401610b0091906143d2565b60005b8381101561439557818101518382015260200161437d565b83811115611b7b5750506000910152565b600081518084526143be81602086016020860161437a565b601f01601f19169290920160200192915050565b602081526000610a7a60208301846143a6565b6001600160a01b0381168114611b8b57600080fd5b6000806040838503121561440d57600080fd5b8235614418816143e5565b946020939093013593505050565b60006020828403121561443857600080fd5b5035919050565b60008060006060848603121561445457600080fd5b833561445f816143e5565b9250602084013561446f816143e5565b929592945050506040919091013590565b6000806040838503121561449357600080fd5b823561449e816143e5565b915060208301356144ae816143e5565b809150509250929050565b6000602082840312156144cb57600080fd5b8135610a7a816143e5565b803560ff811681146144e757600080fd5b919050565b600080600080600060a0868803121561450457600080fd5b853594506020860135935061451b604087016144d6565b94979396509394606081013594506080013592915050565b8015158114611b8b57600080fd5b60006020828403121561455357600080fd5b8135610a7a81614533565b6000806040838503121561457157600080fd5b8235915060208301356144ae81614533565b600080600080600080600060e0888a03121561459e57600080fd5b87356145a9816143e5565b965060208801356145b9816143e5565b955060408801359450606088013593506145d5608089016144d6565b925060a0880135915060c0880135905092959891949750929550565b600181811c9082168061460557607f821691505b60208210810361462557634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561463d57600080fd5b8151610a7a81614533565b60006020828403121561465a57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008282101561469f5761469f614677565b500390565b6000600182016146b6576146b6614677565b5060010190565b634e487b7160e01b600052603160045260246000fd5b600080835481600182811c9150808316806146ef57607f831692505b6020808410820361470e57634e487b7160e01b86526022600452602486fd5b818015614722576001811461473357614760565b60ff19861689528489019650614760565b60008a81526020902060005b868110156147585781548b82015290850190830161473f565b505084890196505b509498975050505050505050565b6000821982111561478157614781614677565b500190565b60006020828403121561479857600080fd5b8151610a7a816143e5565b60008060008060008060008060006101208a8c0312156147c257600080fd5b8951985060208a01516147d481614533565b60408b01519098506147e5816143e5565b60608b01519097506147f6816143e5565b60808b015160a08c0151919750955061480e816143e5565b60c08b015160e08c01519195509350614826816143e5565b6101008b0151909250614838816143e5565b809150509295985092959850929598565b600081600019048311821515161561486357614863614677565b500290565b60008261488557634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156148b357600080fd5b505080516020909101519092909150565b80516dffffffffffffffffffffffffffff811681146144e757600080fd5b6000806000606084860312156148f757600080fd5b614900846148c4565b925061490e602085016148c4565b9150604084015163ffffffff8116811461492757600080fd5b809150509250925092565b8481528360208201526001600160a01b038316604082015260806060820152600061496060808301846143a6565b9695505050505050565b6000825161497c81846020870161437a565b919091019291505056fe5f6275726e3a206275726e20616d6f756e74206578636565647320746f74616c20737570706c794f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65727472616e7366657246726f6d3a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655f6275726e3a206275726e20616d6f756e7420657863656564732066726f6d2062616c616e63655f7472616e73666572546f6b656e733a207472616e7366657220657863656564732066726f6d2062616c616e6365a26469706673582212207153b270f1943ee2f5828e6eb12b8b39fcf3dbe2ee89cb954812b192365280f464736f6c634300080d00334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e000000000000000000000000000000000000000000000000000000000000001400000000000000000000000002b2c81e08f1af8835a78bb2a90ae924ace0ea4be0000000000000000000000004b946c91c2b1a7d7c40fb3c130cdfbaf8389094d00000000000000000000000000000000000000000000000000000000000001800000000000000000000000008b3d9f0017fa369cd8c164d0cc078bf4ca588ae5000000000000000000000000a1cfc90a52ba3453a78f460b8be1fcde068e29e7000000000000000000000000dcedf06fd33e1d7b6eb4b309f779a0e9d3172e4400000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000175969656c642059616b3a20566563746f72207341564158000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000022d4002028f537599be9f666d1c4fa138522f9c8000000000000000000000000cdfd91eea657cc2701117fe9711c9a4f61feed230000000000000000000000005817d4f0b62a59b17f75207da1848c2ce75e7af40000000000000000000000009ef0c12b787f90f59cbbe0b611b82d30cab929290000000000000000000000008729438eb15e2c8b576fcc6aecda6a148776c0f5000000000000000000000000e530dc2095ef5653205cf5ea79f8979a7028065c