[ { "inputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint8", "name": "decimals", "type": "uint8" }, { "internalType": "uint256", "name": "totalSupply", "type": "uint256" }, { "internalType": "uint256", "name": "maxWallet", "type": "uint256" }, { "internalType": "uint256", "name": "maxTransactionAmount", "type": "uint256" }, { "internalType": "address", "name": "marketingWallet", "type": "address" }, { "internalType": "address", "name": "mainRouter", "type": "address" }, { "internalType": "address", "name": "baseTokenForMarket", "type": "address" }, { "internalType": "address", "name": "treasuryWallet", "type": "address" }, { "internalType": "bool", "name": "isMarketingFeeBaseToken", "type": "bool" }, { "internalType": "uint24", "name": "sellLiquidityFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyLiquidityFee", "type": "uint24" }, { "internalType": "uint24", "name": "sellMarketingFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyMarketingFee", "type": "uint24" }, { "internalType": "uint24", "name": "sellTreasuryFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyTreasuryFee", "type": "uint24" }, { "internalType": "uint24", "name": "sellRewardFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyRewardFee", "type": "uint24" }, { "internalType": "uint24", "name": "sellBurnFee", "type": "uint24" }, { "internalType": "uint24", "name": "buyBurnFee", "type": "uint24" }, { "internalType": "address", "name": "feeContract", "type": "address" }, { "internalType": "address", "name": "uniswapV2Caller", "type": "address" } ], "internalType": "struct UltimateToken.Args", "name": "args", "type": "tuple" }, { "internalType": "address[]", "name": "autoApproveAddressList", "type": "address[]" }, { "internalType": "address", "name": "referrer", "type": "address" } ], "stateMutability": "payable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "ExcludedFromFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludedFromMaxTransactionAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "mainRouter", "type": "address" }, { "indexed": false, "internalType": "address", "name": "mainPair", "type": "address" }, { "indexed": false, "internalType": "address", "name": "baseTokenForMarket", "type": "address" } ], "name": "MainRouterUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketingFeeTokens", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "marketingFeeBaseTokenSwapped", "type": "uint256" } ], "name": "MarketingFeeTaken", "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": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "tokensForLiquidity", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "baseTokenForLiquidity", "type": "uint256" } ], "name": "SwapAndLiquify", "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": "amount", "type": "uint256" } ], "name": "TreasuryFeeTaken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint24", "name": "newSellBurnFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "newBuyBurnFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldSellBurnFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldBuyBurnFee", "type": "uint24" } ], "name": "UpdateBurnFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint24", "name": "newSellLiquidityFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "newBuyLiquidityFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldSellLiquidityFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldBuyLiquidityFee", "type": "uint24" } ], "name": "UpdateLiquidityFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint24", "name": "newSellMarketingFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "newBuyMarketingFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldSellMarketingFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldBuyMarketingFee", "type": "uint24" } ], "name": "UpdateMarketingFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newMarketingWallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "newIsMarketingFeeBaseToken", "type": "bool" }, { "indexed": true, "internalType": "address", "name": "oldMarketingWallet", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "oldIsMarketingFeeBaseToken", "type": "bool" } ], "name": "UpdateMarketingWallet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMaxTransactionAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMaxTransactionAmount", "type": "uint256" } ], "name": "UpdateMaxTransactionAmount", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMaxWallet", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMaxWallet", "type": "uint256" } ], "name": "UpdateMaxWallet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newMinAmountToTakeFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMinAmountToTakeFee", "type": "uint256" } ], "name": "UpdateMinAmountToTakeFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint24", "name": "newSellRewardFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "newBuyRewardFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldSellRewardFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldBuyRewardFee", "type": "uint24" } ], "name": "UpdateRewardFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint24", "name": "newSellTreasuryFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "newBuyTreasuryFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldSellTreasuryFee", "type": "uint24" }, { "indexed": false, "internalType": "uint24", "name": "oldBuyTreasuryFee", "type": "uint24" } ], "name": "UpdateTreasuryFee", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newTreasuryWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldTreasuryWallet", "type": "address" } ], "name": "UpdateTreasuryWallet", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "automatedMarketMakerPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "baseTokenForMarket", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyBurnFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyLiquidityFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyMarketingFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyRewardFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyTreasuryFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeFromMaxTransactionAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludeFromReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "includeInReward", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromFee", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isExcludedFromMaxTransactionAmount", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isExcludedFromReward", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isMarketingFeeBaseToken", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mainPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mainRouter", "outputs": [ { "internalType": "contract IUniswapV2Router02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketingWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxTransactionAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxWallet", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minAmountToTakeFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tAmount", "type": "uint256" }, { "internalType": "bool", "name": "deductTransferFee", "type": "bool" } ], "name": "reflectionFromToken", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellBurnFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellLiquidityFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellMarketingFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellRewardFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellTreasuryFee", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "rAmount", "type": "uint256" } ], "name": "tokenFromReflection", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFees", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasuryBurn", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "treasuryWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniswapV2Caller", "outputs": [ { "internalType": "contract IUniswapV2Caller", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_sellBurnFee", "type": "uint24" }, { "internalType": "uint24", "name": "_buyBurnFee", "type": "uint24" } ], "name": "updateBurnFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_sellLiquidityFee", "type": "uint24" }, { "internalType": "uint24", "name": "_buyLiquidityFee", "type": "uint24" } ], "name": "updateLiquidityFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_mainRouter", "type": "address" }, { "internalType": "address", "name": "_baseTokenForMarket", "type": "address" } ], "name": "updateMainPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_sellMarketingFee", "type": "uint24" }, { "internalType": "uint24", "name": "_buyMarketingFee", "type": "uint24" } ], "name": "updateMarketingFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_marketingWallet", "type": "address" }, { "internalType": "bool", "name": "_isMarketingFeeBaseToken", "type": "bool" } ], "name": "updateMarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxTransactionAmount", "type": "uint256" } ], "name": "updateMaxTransactionAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" } ], "name": "updateMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_minAmountToTakeFee", "type": "uint256" } ], "name": "updateMinAmountToTakeFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_sellRewardFee", "type": "uint24" }, { "internalType": "uint24", "name": "_buyRewardFee", "type": "uint24" } ], "name": "updateRewardFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "_sellTreasuryFee", "type": "uint24" }, { "internalType": "uint24", "name": "_buyTreasuryFee", "type": "uint24" } ], "name": "updateTreasuryFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_treasuryWallet", "type": "address" } ], "name": "updateTreasuryWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "withdrawETH", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "withdrawToken", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526040516200736738038062007367833981016040819052620000269162001e31565b6200003133620012ee565b6102a08301516001600160a01b031663a5970b48346004336040516001600160e01b031960e086901b16815260048101929092526001600160a01b03908116602483015260006044830152851660648201526084016000604051808303818588803b158015620000a057600080fd5b505af1158015620000b5573d6000803e3d6000fd5b5050506102c0850151600180546001600160a01b039283166001600160a01b031990911617905561010086015160028054604089015160ff16600160a01b026001600160a81b0319909116929093169190911791909117905550508251600b906200012190826200211a565b506020830151600c906200013690826200211a565b50606083015160088190556200014f90600019620021fc565b6200015d9060001962002229565b60098190553360009081526003602090815260408083209390935560085460049091529190205560c08301516001600160a01b0316620001e45760405162461bcd60e51b815260206004820152601d60248201527f6d61726b6574696e672077616c6c65742063616e206e6f74206265203000000060448201526064015b60405180910390fd5b60e08301516001600160a01b0316620002405760405162461bcd60e51b815260206004820152601b60248201527f526f7574657220616464726573732063616e206e6f74206265203000000000006044820152606401620001db565b6101208301516001600160a01b03166200029d5760405162461bcd60e51b815260206004820152601c60248201527f54726561737572792077616c6c65742063616e206e6f742062652030000000006044820152606401620001db565b8260c001516001600160a01b03168361012001516001600160a01b0316036200032f5760405162461bcd60e51b815260206004820152603560248201527f54726561737572792077616c6c65742063616e206e6f742062652073616d652060448201527f77697468206d61726b6574696e672077616c6c657400000000000000000000006064820152608401620001db565b620493e0836102600151846101e00151856102200151866101a001518761016001516200035d919062002245565b62000369919062002245565b62000375919062002245565b62000381919062002245565b62ffffff161115620003d65760405162461bcd60e51b815260206004820152601560248201527f73656c6c20746f74616c20666565203c3d2033302500000000000000000000006044820152606401620001db565b620493e0836102800151846102000151856102400151866101c0015187610180015162000404919062002245565b62000410919062002245565b6200041c919062002245565b62000428919062002245565b62ffffff1611156200047d5760405162461bcd60e51b815260206004820152601460248201527f62757920746f74616c20666565203c3d203330250000000000000000000000006044820152606401620001db565b620249f083610160015162ffffff1610620004cc5760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f083610180015162ffffff16106200051b5760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f0836101a0015162ffffff16106200056a5760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f0836101c0015162ffffff1610620005b95760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f083610220015162ffffff1610620006085760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f083610240015162ffffff1610620006575760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f0836101e0015162ffffff1610620006a65760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f083610200015162ffffff1610620006f55760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f083610260015162ffffff1610620007445760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b620249f083610280015162ffffff1610620007935760405162461bcd60e51b815260206004820152600e60248201526d6561636820666565203c2031352560901b6044820152606401620001db565b60c083015160188054610120860151601980546001600160a01b0319166001600160a01b039283161790556101408701519381166001600160a81b031990921691909117600160a01b931515840217918290556040805160ff94840494909416151584526000602085018190529392909116917fc8dfdd9b91ac62ee1bd8be3541ea02d8e584461c794c6e49e94ccf21c71ebcca910160405180910390a36019546040516000916001600160a01b0316907f79a52cbec002ef70283103eb4140713100276944fca2819713130141d04df183908390a360e0830151601d80546001600160a01b0319166001600160a01b039092169182179055604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620008c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008ee91906200226b565b6002546001600160a01b039081169116146200098357600254601d5460405163095ea7b360e01b81526001600160a01b039182166004820152600019602482015291169063095ea7b3906044016020604051808303816000875af11580156200095b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000981919062002289565b505b6001546200099f9030906001600160a01b03166000196200133e565b601d54620009bb9030906001600160a01b03166000196200133e565b60005b825181101562000ab557620009f933848381518110620009e257620009e2620022a7565b60200260200101516000196200133e60201b60201c565b6001601f600085848151811062000a145762000a14620022a7565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff02191690831515021790555060016020600085848151811062000a6e5762000a6e620022a7565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558062000aac81620022bd565b915050620009be565b50601d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000b0a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000b3091906200226b565b6002546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af115801562000b82573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000ba891906200226b565b601e80546001600160a01b0319166001600160a01b03928316908117909155601d546002546040805192851683526020830193909352909216908201527f113a6e83812f48b2f83795e33cb009afb4ba6e240c9c643c5dc75791e4ce7ab69060600160405180910390a16101608301516017805461018086015165ffffffffffff60381b1990911667010000000000000062ffffff948516810262ffffff60501b1916919091176a0100000000000000000000928516830217928390556040805191840485168252919092049092166020820152600091810182905260608101919091527fdec183740138e3a28dfd6f973ecd3bf00cd5d9b2544f6763c0a87f721444c5d19060800160405180910390a16101a0830151601780546101c086015165ffffffffffff60681b199091166d010000000000000000000000000062ffffff948516810262ffffff60801b191691909117600160801b928516830217928390556040805191840485168252919092049092166020820152600091810182905260608101919091527f70748cb9cb3bcb4dfd4fff8f2a6f23f636067b33e0244631f9abd38159c1de859060800160405180910390a16101e08301516017805461020086015165ffffffffffff60981b19909116600160981b62ffffff948516810262ffffff60b01b191691909117600160b01b928516830217928390556040805191840485168252919092049092166020820152600091810182905260608101919091527fc239c020ec275d4a3e59d37954f59c061e7302d35a1b6bad801059aafe9631ee9060800160405180910390a16102608301516017805461028086015165ffffffffffff60c81b19909116600160c81b62ffffff948516810262ffffff60e01b191691909117600160e01b928516830217928390556040805191840485168252919092049092166020820152600091810182905260608101919091527fdc717222e8a01249bcfb0a887e700321c9465eda757255fd7895bd39fab714d29060800160405180910390a16102208301516017805461024086015166ffffffffffff001990911661010062ffffff948516810262ffffff60201b191691909117640100000000928516830217928390556040805191840485168252919092049092166020820152600091810182905260608101919091527f2e7d9780ec398c47872eab5651ba43f0fa44ffed738321577e0db663fe8a05a59060800160405180910390a1612710836060015162000f449190620022d9565b601a81905560408051918252600060208301527f772a06bc936eb749842080c472181e970cd4f23bd1ab7d0b84a80aec26910434910160405180910390a1612710836060015162000f969190620022d9565b8360a001511015620010005760405162461bcd60e51b815260206004820152602c60248201527f6d61785472616e73616374696f6e416d6f756e74203e3d20746f74616c20737560448201526b070706c79202f2031303030360a41b6064820152608401620001db565b6127108360600151620010149190620022d9565b83608001511015620010735760405162461bcd60e51b815260206004820152602160248201527f6d617857616c6c6574203e3d20746f74616c20737570706c79202f20313030306044820152600360fc1b6064820152608401620001db565b6080830151601b81905560408051918252600060208301527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a160a0830151601c81905560408051918252600060208301527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a1600660209081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e228054600160ff19918216811790925560078054808401825560008051602062007347833981519152908101805461dead6001600160a01b031991821617909155306000818152604080822080548816891790558554808901875585018054851684179055601980546001600160a01b03908116845282842080548a168b17905581548854808c019099559790960180549787169790951696909617909355818152601f8852828120805487168817905560188054851682528382208054881689179055855485168252838220805488168917905533808352848320805489168a1790557fef94442dfc0e910ca743614215a10fad3ff708bf5378f9c5c958c9192b3bf004805489168a1790559880527fcbaad361c71be11fa6bdbe0e740c6259be964b32182da2da47b54472477c6a178054881689179055918152828120805487168817905590548316815281812080548616871790559254821683528083208054851686179055948252939020805490911682179055601e54620012a892169062001466565b606083015160405190815233906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a350505062002336565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316620013a25760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401620001db565b6001600160a01b038216620014055760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401620001db565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526021602052604090205481151560ff909116151503620014fe5760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401620001db565b6001600160a01b0382166000908152602160205260409020805460ff191682158015919091179091556200153d576200153782620015a5565b62001548565b62001548826200176b565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab910160405180910390a25050565b620015af620019a0565b6001600160a01b03811660009081526006602052604090205460ff16156200161a5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401620001db565b6007546032906200162d906001620022f0565b1115620016b95760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401620001db565b6001600160a01b0381166000908152600360205260409020541562001716576001600160a01b038116600090815260036020526040902054620016fc90620019fe565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600660205260408120805460ff19166001908117909155600780549182018155909152600080516020620073478339815191520180546001600160a01b0319169091179055565b62001775620019a0565b6001600160a01b03811660009081526006602052604090205460ff16620017df5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401620001db565b60005b6007548110156200199c57816001600160a01b0316600782815481106200180d576200180d620022a7565b6000918252602090912001546001600160a01b03160362001987576001600160a01b0382166000908152600360205260409020546200184b62001a88565b6001600160a01b03841660009081526004602052604090205462001870919062002306565b6001600160a01b03841660009081526003602052604090208190556009546200189b90839062002229565b620018a79190620022f0565b6009556001600160a01b0383166000908152600660205260409020805460ff1916905560078054620018dc9060019062002229565b81548110620018ef57620018ef620022a7565b600091825260209091200154600780546001600160a01b0390921691849081106200191e576200191e620022a7565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600780548062001960576200196062002320565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b806200199381620022bd565b915050620017e2565b5050565b6000546001600160a01b03163314620019fc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620001db565b565b600060095482111562001a675760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401620001db565b600062001a7362001a88565b905062001a818184620022d9565b9392505050565b6000808062001a9662001aae565b909250905062001aa78183620022d9565b9250505090565b6009546008546000918291825b60075481101562001c165782600360006007848154811062001ae15762001ae1620022a7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054118062001b50575081600460006007848154811062001b295762001b29620022a7565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1562001b6757600954600854945094505050509091565b600360006007838154811062001b815762001b81620022a7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462001bb2908462002229565b9250600460006007838154811062001bce5762001bce620022a7565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462001bff908362002229565b91508062001c0d81620022bd565b91505062001abb565b5060085460095462001c299190620022d9565b82101562001c41576009546008549350935050509091565b90939092509050565b634e487b7160e01b600052604160045260246000fd5b6040516102e081016001600160401b038111828210171562001c865762001c8662001c4a565b60405290565b604051601f8201601f191681016001600160401b038111828210171562001cb75762001cb762001c4a565b604052919050565b600082601f83011262001cd157600080fd5b81516001600160401b0381111562001ced5762001ced62001c4a565b602062001d03601f8301601f1916820162001c8c565b828152858284870101111562001d1857600080fd5b60005b8381101562001d3857858101830151828201840152820162001d1b565b506000928101909101919091529392505050565b805160ff8116811462001d5e57600080fd5b919050565b80516001600160a01b038116811462001d5e57600080fd5b8051801515811462001d5e57600080fd5b805162ffffff8116811462001d5e57600080fd5b600082601f83011262001db257600080fd5b815160206001600160401b0382111562001dd05762001dd062001c4a565b8160051b62001de182820162001c8c565b928352848101820192828101908785111562001dfc57600080fd5b83870192505b8483101562001e265762001e168362001d63565b8252918301919083019062001e02565b979650505050505050565b60008060006060848603121562001e4757600080fd5b83516001600160401b038082111562001e5f57600080fd5b908501906102e0828803121562001e7557600080fd5b62001e7f62001c60565b82518281111562001e8f57600080fd5b62001e9d8982860162001cbf565b82525060208301518281111562001eb357600080fd5b62001ec18982860162001cbf565b60208301525062001ed56040840162001d4c565b6040820152606083015160608201526080830151608082015260a083015160a082015262001f0660c0840162001d63565b60c082015262001f1960e0840162001d63565b60e082015261010062001f2e81850162001d63565b9082015261012062001f4284820162001d63565b9082015261014062001f5684820162001d7b565b9082015261016062001f6a84820162001d8c565b9082015261018062001f7e84820162001d8c565b908201526101a062001f9284820162001d8c565b908201526101c062001fa684820162001d8c565b908201526101e062001fba84820162001d8c565b9082015261020062001fce84820162001d8c565b9082015261022062001fe284820162001d8c565b9082015261024062001ff684820162001d8c565b908201526102606200200a84820162001d8c565b908201526102806200201e84820162001d8c565b908201526102a06200203284820162001d63565b908201526102c06200204684820162001d63565b9082015260208701519095509150808211156200206257600080fd5b50620020718682870162001da0565b925050620020826040850162001d63565b90509250925092565b600181811c90821680620020a057607f821691505b602082108103620020c157634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200211557600081815260208120601f850160051c81016020861015620020f05750805b601f850160051c820191505b818110156200211157828155600101620020fc565b5050505b505050565b81516001600160401b0381111562002136576200213662001c4a565b6200214e816200214784546200208b565b84620020c7565b602080601f8311600181146200218657600084156200216d5750858301515b600019600386901b1c1916600185901b17855562002111565b600085815260208120601f198616915b82811015620021b75788860151825594840194600190910190840162002196565b5085821015620021d65787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601260045260246000fd5b6000826200220e576200220e620021e6565b500690565b634e487b7160e01b600052601160045260246000fd5b818103818111156200223f576200223f62002213565b92915050565b62ffffff81811683821601908082111562002264576200226462002213565b5092915050565b6000602082840312156200227e57600080fd5b62001a818262001d63565b6000602082840312156200229c57600080fd5b62001a818262001d7b565b634e487b7160e01b600052603260045260246000fd5b600060018201620022d257620022d262002213565b5060010190565b600082620022eb57620022eb620021e6565b500490565b808201808211156200223f576200223f62002213565b80820281158282048414176200223f576200223f62002213565b634e487b7160e01b600052603160045260246000fd5b61500180620023466000396000f3fe60806040526004361061039b5760003560e01c806382685df5116101dc578063cf188ad011610102578063e71dc3f5116100a0578063f2fde38b1161006f578063f2fde38b14610b33578063f637434214610b53578063f8b45b0514610b76578063fc59d23d14610b8c57600080fd5b8063e71dc3f514610a9e578063e9481eee14610ac1578063ec44adc814610af0578063f11a24d314610b1057600080fd5b8063dd62ed3e116100dc578063dd62ed3e14610a02578063de0aad5314610a48578063df8408fe14610a69578063e086e5ec14610a8957600080fd5b8063cf188ad0146109a2578063d5bf72b7146109c2578063db4091e9146109e257600080fd5b806395d89b411161017a578063aa49802311610149578063aa49802314610919578063adb873bd14610939578063b62496f51461095c578063c8c8ebe41461098c57600080fd5b806395d89b41146108a45780639a7a23d6146108b9578063a457c2d7146108d9578063a9059cbb146108f957600080fd5b806389476069116101b6578063894760691461083b5780638da5cb5b1461085b5780638f0bc16714610879578063921369131461088157600080fd5b806382685df5146107c257806385af30c5146107e257806388f820201461080257600080fd5b80634707c551116102c15780636c516a701161025f57806375f0a8741161022e57806375f0a8741461073f5780637bce5a041461075f5780637c75ad3a14610782578063809d458d146107a257600080fd5b80636c516a70146106ca57806370a08231146106ea578063715018a61461070a57806373b9e82c1461071f57600080fd5b80635342acb41161029b5780635342acb41461063357806357e62b98146106635780635c068a8c146106845780636b2fb124146106a757600080fd5b80634707c551146105d357806348a5317e146105f357806352390c021461061357600080fd5b80632ae2f121116103395780633950935111610308578063395093511461053b5780633fd1c86d1461055b5780634549b0391461057b5780634626402b1461059b57600080fd5b80632ae2f121146104af5780632d838119146104cf578063313ce567146104ef5780633685d4191461051b57600080fd5b806313114a9d1161037557806313114a9d1461043957806318160ddd146104585780631c499ab01461046d57806323b872dd1461048f57600080fd5b806306fdde03146103a7578063095ea7b3146103d25780630cfe2f3f1461040257600080fd5b366103a257005b600080fd5b3480156103b357600080fd5b506103bc610ba2565b6040516103c99190614a39565b60405180910390f35b3480156103de57600080fd5b506103f26103ed366004614a81565b610c34565b60405190151581526020016103c9565b34801561040e57600080fd5b5060175461042590600160201b900462ffffff1681565b60405162ffffff90911681526020016103c9565b34801561044557600080fd5b50600a545b6040519081526020016103c9565b34801561046457600080fd5b5060085461044a565b34801561047957600080fd5b5061048d610488366004614aad565b610c4b565b005b34801561049b57600080fd5b506103f26104aa366004614ac6565b610cf9565b3480156104bb57600080fd5b5061048d6104ca366004614b15565b610d4b565b3480156104db57600080fd5b5061044a6104ea366004614aad565b610e0a565b3480156104fb57600080fd5b50600254600160a01b900460ff1660405160ff90911681526020016103c9565b34801561052757600080fd5b5061048d610536366004614b4e565b610e8e565b34801561054757600080fd5b506103f2610556366004614a81565b6110a4565b34801561056757600080fd5b5061048d610576366004614b83565b6110db565b34801561058757600080fd5b5061044a610596366004614bb6565b6112c9565b3480156105a757600080fd5b506019546105bb906001600160a01b031681565b6040516001600160a01b0390911681526020016103c9565b3480156105df57600080fd5b5061048d6105ee366004614b15565b6113be565b3480156105ff57600080fd5b506002546105bb906001600160a01b031681565b34801561061f57600080fd5b5061048d61062e366004614b4e565b611500565b34801561063f57600080fd5b506103f261064e366004614b4e565b601f6020526000908152604090205460ff1681565b34801561066f57600080fd5b506018546103f290600160a01b900460ff1681565b34801561069057600080fd5b5060175461042590600160b01b900462ffffff1681565b3480156106b357600080fd5b5060175461042590600160981b900462ffffff1681565b3480156106d657600080fd5b5061048d6106e5366004614bdb565b6116cc565b3480156106f657600080fd5b5061044a610705366004614b4e565b611937565b34801561071657600080fd5b5061048d611996565b34801561072b57600080fd5b5061048d61073a366004614aad565b6119aa565b34801561074b57600080fd5b506018546105bb906001600160a01b031681565b34801561076b57600080fd5b5060175461042590600160801b900462ffffff1681565b34801561078e57600080fd5b506001546105bb906001600160a01b031681565b3480156107ae57600080fd5b5061048d6107bd366004614b4e565b611a3d565b3480156107ce57600080fd5b5061048d6107dd366004614b83565b611bbf565b3480156107ee57600080fd5b50601e546105bb906001600160a01b031681565b34801561080e57600080fd5b506103f261081d366004614b4e565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561084757600080fd5b5061048d610856366004614b4e565b611daa565b34801561086757600080fd5b506000546001600160a01b03166105bb565b61048d611e89565b34801561088d57600080fd5b5060175461042590600160681b900462ffffff1681565b3480156108b057600080fd5b506103bc6122e1565b3480156108c557600080fd5b5061048d6108d4366004614b15565b6122f0565b3480156108e557600080fd5b506103f26108f4366004614a81565b612302565b34801561090557600080fd5b506103f2610914366004614a81565b612339565b34801561092557600080fd5b5061048d610934366004614aad565b612346565b34801561094557600080fd5b5060175461042590600160c81b900462ffffff1681565b34801561096857600080fd5b506103f2610977366004614b4e565b60216020526000908152604090205460ff1681565b34801561099857600080fd5b5061044a601c5481565b3480156109ae57600080fd5b50601d546105bb906001600160a01b031681565b3480156109ce57600080fd5b5061048d6109dd366004614b83565b612403565b3480156109ee57600080fd5b5061048d6109fd366004614b83565b6125f5565b348015610a0e57600080fd5b5061044a610a1d366004614bdb565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b348015610a5457600080fd5b5060175461042590610100900462ffffff1681565b348015610a7557600080fd5b5061048d610a84366004614b15565b6127e3565b348015610a9557600080fd5b5061048d61289d565b348015610aaa57600080fd5b5060175461042590600160e01b900462ffffff1681565b348015610acd57600080fd5b506103f2610adc366004614b4e565b602080526000908152604090205460ff1681565b348015610afc57600080fd5b5061048d610b0b366004614b83565b61293f565b348015610b1c57600080fd5b5060175461042590600160501b900462ffffff1681565b348015610b3f57600080fd5b5061048d610b4e366004614b4e565b612b2d565b348015610b5f57600080fd5b5060175461042590600160381b900462ffffff1681565b348015610b8257600080fd5b5061044a601b5481565b348015610b9857600080fd5b5061044a601a5481565b6060600b8054610bb190614c09565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdd90614c09565b8015610c2a5780601f10610bff57610100808354040283529160200191610c2a565b820191906000526020600020905b815481529060010190602001808311610c0d57829003601f168201915b5050505050905090565b6000610c41338484612ba3565b5060015b92915050565b610c53612cc7565b612710600854610c639190614c59565b811015610cb75760405162461bcd60e51b815260206004820181905260248201527f6d617857616c6c6574203e3d20746f74616c537570706c79202f20313030303060448201526064015b60405180910390fd5b601b546040805183815260208101929092527fff64d41f60feb77d52f64ae64a9fc3929d57a89d0cc55728762468bae5e0fe52910160405180910390a1601b55565b6000610d06848484612d21565b6001600160a01b038416600090815260056020908152604080832033808552925290912054610d41918691610d3c908690614c7b565b612ba3565b5060019392505050565b610d53612cc7565b6001600160a01b038216600090815260208052604090205481151560ff909116151503610dac5760405162461bcd60e51b8152602060048201526007602482015266616c726561647960c81b6044820152606401610cae565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527f82170bbd72c16b30c410014b7382121a699ed119a182e48a0b6cadcc89104ac991015b60405180910390a25050565b6000600954821115610e715760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610cae565b6000610e7b613108565b9050610e878184614c59565b9392505050565b610e96612cc7565b6001600160a01b03811660009081526006602052604090205460ff16610efe5760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610cae565b60005b6007548110156110a057816001600160a01b031660078281548110610f2857610f28614c8e565b6000918252602090912001546001600160a01b03160361108e576001600160a01b038216600090815260036020526040902054610f63613108565b6001600160a01b038416600090815260046020526040902054610f869190614ca4565b6001600160a01b0384166000908152600360205260409020819055600954610faf908390614c7b565b610fb99190614cbb565b6009556001600160a01b0383166000908152600660205260409020805460ff1916905560078054610fec90600190614c7b565b81548110610ffc57610ffc614c8e565b600091825260209091200154600780546001600160a01b03909216918490811061102857611028614c8e565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600780548061106757611067614cce565b600082815260209020810160001990810180546001600160a01b0319169055019055505050565b8061109881614ce4565b915050610f01565b5050565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c41918590610d3c908690614cbb565b6110e3612cc7565b601754620493e09062ffffff600160c81b82048116916101008104821691600160681b820481169161111e91600160381b9091041687614cfd565b6111289190614cfd565b6111329190614cfd565b61113c9190614cfd565b62ffffff16111561115f5760405162461bcd60e51b8152600401610cae90614d19565b601754620493e09062ffffff600160e01b8204811691600160201b8104821691600160801b820481169161119c91600160501b9091041686614cfd565b6111a69190614cfd565b6111b09190614cfd565b6111ba9190614cfd565b62ffffff1611156111dd5760405162461bcd60e51b8152600401610cae90614d48565b620249f08262ffffff1611156112055760405162461bcd60e51b8152600401610cae90614d76565b620249f08162ffffff16111561122d5760405162461bcd60e51b8152600401610cae90614d9f565b6017546040805162ffffff85811682528481166020830152600160981b8404811682840152600160b01b9093049092166060830152517fc239c020ec275d4a3e59d37954f59c061e7302d35a1b6bad801059aafe9631ee9181900360800190a16017805465ffffffffffff60981b1916600160981b62ffffff9485160262ffffff60b01b191617600160b01b9290931691909102919091179055565b600060085483111561131d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610cae565b6000611327613108565b90508261134457600061133a8286614ca4565b9250610c45915050565b60008060008060006113558961312b565b94509450945094509450600081838587898e6113719190614c7b565b61137b9190614c7b565b6113859190614c7b565b61138f9190614c7b565b6113999190614c7b565b905060006113a78883614ca4565b9850610c45975050505050505050565b5092915050565b6113c6612cc7565b6001600160a01b03821661141c5760405162461bcd60e51b815260206004820152601b60248201527f6d61726b6574696e672077616c6c65742063616e2774206265203000000000006044820152606401610cae565b6019546001600160a01b039081169083160361144a5760405162461bcd60e51b8152600401610cae90614dc7565b601854604080518315158152600160a01b830460ff16151560208201526001600160a01b03928316928516917fc8dfdd9b91ac62ee1bd8be3541ea02d8e584461c794c6e49e94ccf21c71ebcca910160405180910390a360188054911515600160a01b026001600160a81b03199092166001600160a01b039093169283179190911790556000908152601f60209081526040808320805460ff199081166001908117909255928052922080549091169091179055565b611508612cc7565b6001600160a01b03811660009081526006602052604090205460ff16156115715760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610cae565b600754603290611582906001614cbb565b111561160c5760405162461bcd60e51b815260206004820152604d60248201527f43616e6e6f74206578636c756465206d6f7265207468616e203530206163636f60448201527f756e74732e2020496e636c75646520612070726576696f75736c79206578636c60648201526c3ab232b21030b2323932b9b99760991b608482015260a401610cae565b6001600160a01b03811660009081526003602052604090205415611666576001600160a01b03811660009081526003602052604090205461164c90610e0a565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6116d4612cc7565b600280546001600160a01b0319166001600160a01b0383811691909117909155601d5483821691161461172a5761170e3083600019612ba3565b601d80546001600160a01b0319166001600160a01b0384161790555b601d60009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561177d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a19190614e1a565b6002546040516364e329cb60e11b81523060048201526001600160a01b03918216602482015291169063c9c65396906044016020604051808303816000875af11580156117f2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118169190614e1a565b601e80546001600160a01b0319166001600160a01b03928316179055601d54604080516315ab88c960e31b81529051919092169163ad5c46489160048083019260209291908290030181865afa158015611874573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118989190614e1a565b6002546001600160a01b039081169116146118cc57601d546002546118cc916001600160a01b039182169116600019613184565b601d54601e54600254604080516001600160a01b039485168152928416602084015292168183015290517f113a6e83812f48b2f83795e33cb009afb4ba6e240c9c643c5dc75791e4ce7ab69181900360600190a1601e546110a0906001600160a01b031660016132d1565b6001600160a01b03811660009081526006602052604081205460ff161561197457506001600160a01b031660009081526004602052604090205490565b6001600160a01b038216600090815260036020526040902054610c4590610e0a565b61199e612cc7565b6119a86000613401565b565b6119b2612cc7565b600081116119fb5760405162461bcd60e51b815260206004820152601660248201527506d696e416d6f756e74546f54616b65466565203e20360541b6044820152606401610cae565b601a546040805183815260208101929092527f772a06bc936eb749842080c472181e970cd4f23bd1ab7d0b84a80aec26910434910160405180910390a1601a55565b611a45612cc7565b6001600160a01b038116611a9b5760405162461bcd60e51b815260206004820152601a60248201527f54726561737572792077616c6c65742063616e277420626520300000000000006044820152606401610cae565b306001600160a01b03821603611b065760405162461bcd60e51b815260206004820152602a60248201527f54726561737572792077616c6c65742063616e2774206265207468652073616d604482015269329030b9903a37b5b2b760b11b6064820152608401610cae565b6018546001600160a01b03808316911603611b335760405162461bcd60e51b8152600401610cae90614dc7565b6019546040516001600160a01b03918216918316907f79a52cbec002ef70283103eb4140713100276944fca2819713130141d04df18390600090a3601980546001600160a01b039092166001600160a01b0319909216821790556000908152601f60209081526040808320805460ff199081166001908117909255928052922080549091169091179055565b611bc7612cc7565b601754620493e09062ffffff600160c81b8204811691600160981b8104821691600160681b8204811691611c0491600160381b9091041687614cfd565b611c0e9190614cfd565b611c189190614cfd565b611c229190614cfd565b62ffffff161115611c455760405162461bcd60e51b8152600401610cae90614d19565b601754620493e09062ffffff600160e01b8204811691600160b01b8104821691600160801b8204811691611c8291600160501b9091041686614cfd565b611c8c9190614cfd565b611c969190614cfd565b611ca09190614cfd565b62ffffff161115611cc35760405162461bcd60e51b8152600401610cae90614d48565b620249f08262ffffff161115611ceb5760405162461bcd60e51b8152600401610cae90614d76565b620249f08162ffffff161115611d135760405162461bcd60e51b8152600401610cae90614d9f565b6017546040805162ffffff858116825284811660208301526101008404811682840152600160201b9093049092166060830152517f2e7d9780ec398c47872eab5651ba43f0fa44ffed738321577e0db663fe8a05a59181900360800190a16017805466ffffffffffff00191661010062ffffff9485160266ffffff00000000191617600160201b9290931691909102919091179055565b611db2612cc7565b6001600160a01b0381163003611df85760405162461bcd60e51b815260206004820152600b60248201526a139bdd08185b1b1bddd95960aa1b6044820152606401610cae565b611e86611e0d6000546001600160a01b031690565b6040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015611e51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e759190614e37565b6001600160a01b0384169190613451565b50565b604080516002808252606082018352600092602083019080368337505060025482519293506001600160a01b031691839150600090611eca57611eca614c8e565b60200260200101906001600160a01b031690816001600160a01b0316815250503081600181518110611efe57611efe614c8e565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611f57573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f7b9190614e1a565b6001600160a01b031681600081518110611f9757611f97614c8e565b60200260200101516001600160a01b03160361202157601d5460195460405163b6f9de9560e01b81526001600160a01b039283169263b6f9de95923492611fea9260009288929116904290600401614e94565b6000604051808303818588803b15801561200357600080fd5b505af1158015612017573d6000803e3d6000fd5b5050505050612129565b6002546000906001600160a01b03166370a08231336040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401602060405180830381865afa15801561207a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061209e9190614e37565b90506120b8336002546001600160a01b0316903084613481565b601d54601954604051635c11d79560e01b81526001600160a01b0392831692635c11d795926120f592869260009289929116904290600401614ec9565b600060405180830381600087803b15801561210f57600080fd5b505af1158015612123573d6000803e3d6000fd5b50505050505b6019546001600160a01b031660009081526006602052604090205460ff1615612217576019546001600160a01b03166000908152600460205260409020546008546121749190614c7b565b6008556019546001600160a01b031660009081526003602052604090205460095461219f9190614c7b565b6009556019546001600160a01b03166000818152600460209081526040808320549051908152919291600080516020614fac833981519152910160405180910390a3601980546001600160a01b0390811660009081526003602090815260408083208390559354909216815260049091529081205550565b6019546001600160a01b031660009081526003602052604081205461223b90610e0a565b90508060085461224b9190614c7b565b6008556019546001600160a01b03166000908152600360205260409020546009546122769190614c7b565b6009556019546040518281526000916001600160a01b031690600080516020614fac8339815191529060200160405180910390a350601980546001600160a01b0390811660009081526003602090815260408083208390559354909216815260049091529081205550565b6060600c8054610bb190614c09565b6122f8612cc7565b6110a082826132d1565b3360008181526005602090815260408083206001600160a01b03871684529091528120549091610c41918590610d3c908690614c7b565b6000610c41338484612d21565b61234e612cc7565b61271060085461235e9190614c59565b8110156123c15760405162461bcd60e51b815260206004820152602b60248201527f6d61785472616e73616374696f6e416d6f756e74203e3d20746f74616c53757060448201526a0706c79202f2031303030360ac1b6064820152608401610cae565b601c546040805183815260208101929092527f35eec0711af6fbe3039535323be51b57996b6945b0d55862607c7a02e52e4507910160405180910390a1601c55565b61240b612cc7565b601754620493e09062ffffff600160c81b8204811691600160981b8104821691610100820481169161244691600160681b9091041687614cfd565b6124509190614cfd565b61245a9190614cfd565b6124649190614cfd565b62ffffff1611156124875760405162461bcd60e51b8152600401610cae90614d19565b601754620493e09062ffffff600160e01b8204811691600160b01b8104821691600160201b82048116916124c491600160801b9091041686614cfd565b6124ce9190614cfd565b6124d89190614cfd565b6124e29190614cfd565b62ffffff1611156125055760405162461bcd60e51b8152600401610cae90614d48565b620249f08262ffffff16111561252d5760405162461bcd60e51b8152600401610cae90614d76565b620249f08162ffffff1611156125555760405162461bcd60e51b8152600401610cae90614d9f565b6017546040805162ffffff85811682528481166020830152600160381b8404811682840152600160501b9093049092166060830152517fdec183740138e3a28dfd6f973ecd3bf00cd5d9b2544f6763c0a87f721444c5d19181900360800190a1601780546cffffffffffff000000000000001916600160381b62ffffff9485160262ffffff60501b191617600160501b9290931691909102919091179055565b6125fd612cc7565b601754620493e09062ffffff6101008204811691600160981b8104821691600160681b820481169161263891600160381b9091041687614cfd565b6126429190614cfd565b61264c9190614cfd565b6126569190614cfd565b62ffffff1611156126795760405162461bcd60e51b8152600401610cae90614d19565b601754620493e09062ffffff600160201b8204811691600160b01b8104821691600160801b82048116916126b691600160501b9091041686614cfd565b6126c09190614cfd565b6126ca9190614cfd565b6126d49190614cfd565b62ffffff1611156126f75760405162461bcd60e51b8152600401610cae90614d48565b620249f08262ffffff16111561271f5760405162461bcd60e51b8152600401610cae90614d76565b620249f08162ffffff1611156127475760405162461bcd60e51b8152600401610cae90614d9f565b6017546040805162ffffff85811682528481166020830152600160c81b8404811682840152600160e01b9093049092166060830152517fdc717222e8a01249bcfb0a887e700321c9465eda757255fd7895bd39fab714d29181900360800190a16017805465ffffffffffff60c81b1916600160c81b62ffffff9485160262ffffff60e01b191617600160e01b9290931691909102919091179055565b6127eb612cc7565b6001600160a01b0382166000908152601f602052604090205481151560ff9091161515036128455760405162461bcd60e51b8152602060048201526007602482015266616c726561647960c81b6044820152606401610cae565b6001600160a01b0382166000818152601f6020908152604091829020805460ff191685151590811790915591519182527f2d43abd87b27cee7b0aa8c6f7e0b4a3247b683262a83cbc2318b0df398a49aa99101610dfe565b6128a5612cc7565b600080546040516001600160a01b039091169047908381818185875af1925050503d80600081146128f2576040519150601f19603f3d011682016040523d82523d6000602084013e6128f7565b606091505b5050905080611e865760405162461bcd60e51b815260206004820152601460248201527311985a5b1959081a5b881dda5d1a191c985dd85b60621b6044820152606401610cae565b612947612cc7565b601754620493e09062ffffff600160c81b8204811691600160981b8104821691610100820481169161298291600160381b9091041687614cfd565b61298c9190614cfd565b6129969190614cfd565b6129a09190614cfd565b62ffffff1611156129c35760405162461bcd60e51b8152600401610cae90614d19565b601754620493e09062ffffff600160e01b8204811691600160b01b8104821691600160201b8204811691612a0091600160501b9091041686614cfd565b612a0a9190614cfd565b612a149190614cfd565b612a1e9190614cfd565b62ffffff161115612a415760405162461bcd60e51b8152600401610cae90614d48565b620249f08262ffffff161115612a695760405162461bcd60e51b8152600401610cae90614d76565b620249f08162ffffff161115612a915760405162461bcd60e51b8152600401610cae90614d9f565b6017546040805162ffffff85811682528481166020830152600160681b8404811682840152600160801b9093049092166060830152517f70748cb9cb3bcb4dfd4fff8f2a6f23f636067b33e0244631f9abd38159c1de859181900360800190a16017805465ffffffffffff60681b1916600160681b62ffffff9485160262ffffff60801b191617600160801b9290931691909102919091179055565b612b35612cc7565b6001600160a01b038116612b9a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cae565b611e8681613401565b6001600160a01b038316612c055760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610cae565b6001600160a01b038216612c665760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610cae565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000546001600160a01b031633146119a85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cae565b6001600160a01b038316612d855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610cae565b6001600160a01b038216612de75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610cae565b6000612df230611937565b90506000602354602254612e069190614cbb565b90506000601a548210158015612e1c5750828211155b60175490915060ff16158015612e2f5750805b8015612e505750601e54600090612e4e906001600160a01b0316611937565b115b8015612e7457506001600160a01b03851660009081526021602052604090205460ff165b15612e8157612e816134bf565b612ebc600d8054600e55600f805460105560118054601255601380546014556015805460165560009081905590819055908190559182905555565b60175460ff16158015612ee857506001600160a01b0386166000908152601f602052604090205460ff16155b8015612f0d57506001600160a01b0385166000908152601f602052604090205460ff16155b15612fde576001600160a01b03861660009081526021602052604090205460ff1615612f7b5760175462ffffff600160201b82048116600d55600160501b82048116600f55600160801b82048116601155600160b01b82048116601355600160e01b90910416601555612fde565b6001600160a01b03851660009081526021602052604090205460ff1615612fde5760175462ffffff61010082048116600d55600160381b82048116600f55600160681b82048116601155600160981b82048116601355600160c81b909104166015555b612fe9868686613d18565b61300c601654601555601454601355600e54600d55601054600f55601254601155565b60175460ff16613100576001600160a01b038616600090815260208052604090205460ff1661308757601c548411156130875760405162461bcd60e51b815260206004820152601d60248201527f45524332303a2065786365656473207472616e73666572206c696d69740000006044820152606401610cae565b6001600160a01b038516600090815260208052604090205460ff1661310057601b546130b286611937565b11156131005760405162461bcd60e51b815260206004820152601f60248201527f45524332303a2065786365656473206d61782077616c6c6574206c696d6974006044820152606401610cae565b505050505050565b6000806000613115614218565b90925090506131248183614c59565b9250505090565b60008060008060008061313d8761439b565b9050600061314a886143b9565b90506000613157896143cd565b905060006131648a6143e1565b905060006131718b6143f5565b949b939a50919850965091945092505050565b8015806131fe5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa1580156131d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131fc9190614e37565b155b6132695760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610cae565b6040516001600160a01b0383166024820152604481018290526132cc90849063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152614409565b505050565b6001600160a01b03821660009081526021602052604090205481151560ff9091161515036133675760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c756500000000000000006064820152608401610cae565b6001600160a01b0382166000908152602160205260409020805460ff191682158015919091179091556133a25761339d82611500565b6133ab565b6133ab82610e8e565b6001600160a01b03821660008181526020808052604091829020805460ff191685151590811790915591519182527fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab9101610dfe565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6040516001600160a01b0383166024820152604481018290526132cc90849063a9059cbb60e01b90606401613295565b6040516001600160a01b03808516602483015283166044820152606481018290526134b99085906323b872dd60e01b90608401613295565b50505050565b6017805460ff191660011790556022546000906134de90600290614c59565b90506000601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613535573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135599190614e1a565b6002546001600160a01b039081169116146135df576002546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156135b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135da9190614e37565b6135e1565b475b9050600080601860149054906101000a900460ff161561390d5760006024546023548661360e9190614cbb565b6136189190614cbb565b9050801561362957613629816144de565b601d54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015613673573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136979190614e1a565b6002546001600160a01b03908116911614613727576002546040516370a0823160e01b815230600482015286916001600160a01b0316906370a0823190602401602060405180830381865afa1580156136f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137189190614e37565b6137229190614c7b565b613731565b6137318547614c7b565b9050600082602354836137449190614ca4565b61374e9190614c59565b90508261375b8884614ca4565b6137659190614c59565b9450846137728284614c7b565b61377c9190614c7b565b9350801561390557601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137fb9190614e1a565b6002546001600160a01b039182169116036138ad576018546040516000916001600160a01b03169083908381818185875af1925050503d806000811461385d576040519150601f19603f3d011682016040523d82523d6000602084013e613862565b606091505b5050905080156138a7576040805160008152602081018490527f6f92bce3e91466137aa4d5474fe565c002872fb18ed6af4a856959be0a81277a910160405180910390a15b50613905565b6018546002546138ca916001600160a01b03918216911683613451565b6040805160008152602081018390527f6f92bce3e91466137aa4d5474fe565c002872fb18ed6af4a856959be0a81277a910160405180910390a15b505050613ac1565b60006024548561391d9190614cbb565b9050801561392e5761392e816144de565b601d54604080516315ab88c960e31b815290516000926001600160a01b03169163ad5c46489160048083019260209291908290030181865afa158015613978573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399c9190614e1a565b6002546001600160a01b03908116911614613a2c576002546040516370a0823160e01b815230600482015286916001600160a01b0316906370a0823190602401602060405180830381865afa1580156139f9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a1d9190614e37565b613a279190614c7b565b613a36565b613a368547614c7b565b905081613a438783614ca4565b613a4d9190614c59565b9350613a598482614c7b565b60235490935015613abe57601854602354613a819130916001600160a01b0390911690612d21565b60235460408051918252600060208301527f6f92bce3e91466137aa4d5474fe565c002872fb18ed6af4a856959be0a81277a910160405180910390a15b50505b600084118015613ad15750600082115b15613b1a57613ae08483614697565b60408051858152602081018490527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a15b8015613c9357601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613b73573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b979190614e1a565b6002546001600160a01b03918216911603613c42576019546040516000916001600160a01b03169083908381818185875af1925050503d8060008114613bf9576040519150601f19603f3d011682016040523d82523d6000602084013e613bfe565b606091505b505090508015613c3c576040518281527fe3630e0003fb3e9f9d835bb839022e52ffd576f9f35c395dd17517106f78cb339060200160405180910390a15b50613c93565b601954600254613c5f916001600160a01b03918216911683613451565b6040518181527fe3630e0003fb3e9f9d835bb839022e52ffd576f9f35c395dd17517106f78cb339060200160405180910390a15b6000602381905560248190556022819055613cad30611937565b1115613d08576000546001600160a01b031615613ced57613ce830613cda6000546001600160a01b031690565b613ce330611937565b612d21565b613d08565b601954613d089030906001600160a01b0316613ce382611937565b50506017805460ff191690555050565b6000806000806000613d298661312b565b94509450945094509450600081838587898b613d459190614c7b565b613d4f9190614c7b565b613d599190614c7b565b613d639190614c7b565b613d6d9190614c7b565b90506000613d79613108565b905082600854613d899190614c7b565b600855613d968184614ca4565b600954613da39190614c7b565b6009556040518381526000906001600160a01b038c1690600080516020614fac8339815191529060200160405180910390a385602254613de39190614cbb565b602255602354613df4908690614cbb565b602355602454613e05908590614cbb565b602455600084613e158789614cbb565b613e1f9190614cbb565b9050613e2b8282614ca4565b30600090815260036020526040902054613e459190614cbb565b3060009081526003602090815260408083209390935560069052205460ff1615613e955730600090815260046020526040902054613e84908290614cbb565b306000908152600460205260409020555b60405181815230906001600160a01b038d1690600080516020614fac8339815191529060200160405180910390a3506001600160a01b038a1660009081526006602052604090205460ff168015613f0557506001600160a01b03891660009081526006602052604090205460ff16155b15613fd8576001600160a01b038a16600090815260046020526040902054613f2e908990614c7b565b6001600160a01b038b16600090815260046020526040902055613f518189614ca4565b6001600160a01b038b16600090815260036020526040902054613f749190614c7b565b6001600160a01b038b16600090815260036020526040902055613f978183614ca4565b6001600160a01b038a16600090815260036020526040902054613fba9190614cbb565b6001600160a01b038a166000908152600360205260409020556141be565b6001600160a01b038a1660009081526006602052604090205460ff1615801561401957506001600160a01b03891660009081526006602052604090205460ff165b156140a5576140288189614ca4565b6001600160a01b038b1660009081526003602052604090205461404b9190614c7b565b6001600160a01b03808c16600090815260036020908152604080832094909455918c16815260049091522054614082908390614cbb565b6001600160a01b038a16600090815260046020526040902055613f978183614ca4565b6001600160a01b038a1660009081526006602052604090205460ff1680156140e557506001600160a01b03891660009081526006602052604090205460ff165b15614131576001600160a01b038a1660009081526004602052604090205461410e908990614c7b565b6001600160a01b038b166000908152600460205260409020556140288189614ca4565b61413b8189614ca4565b6001600160a01b038b1660009081526003602052604090205461415e9190614c7b565b6001600160a01b038b166000908152600360205260409020556141818183614ca4565b6001600160a01b038a166000908152600360205260409020546141a49190614cbb565b6001600160a01b038a166000908152600360205260409020555b6141d16141cb8289614ca4565b8861485f565b886001600160a01b03168a6001600160a01b0316600080516020614fac8339815191528460405161420491815260200190565b60405180910390a350505050505050505050565b6009546008546000918291825b60075481101561436a5782600360006007848154811061424757614247614c8e565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806142b2575081600460006007848154811061428b5761428b614c8e565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156142c857600954600854945094505050509091565b60036000600783815481106142df576142df614c8e565b60009182526020808320909101546001600160a01b0316835282019290925260400190205461430e9084614c7b565b9250600460006007838154811061432757614327614c8e565b60009182526020808320909101546001600160a01b031683528201929092526040019020546143569083614c7b565b91508061436281614ce4565b915050614225565b5060085460095461437b9190614c59565b821015614392576009546008549350935050509091565b90939092509050565b6000620f4240600d54836143af9190614ca4565b610c459190614c59565b6000620f4240600f54836143af9190614ca4565b6000620f4240601154836143af9190614ca4565b6000620f4240601354836143af9190614ca4565b6000620f4240601554836143af9190614ca4565b600061445e826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166148859092919063ffffffff16565b905080516000148061447f57508080602001905181019061447f9190614f05565b6132cc5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610cae565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061451357614513614c8e565b6001600160a01b03928316602091820292909201015260025482519116908290600190811061454457614544614c8e565b6001600160a01b03928316602091820292909201810191909152601d54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561459d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145c19190614e1a565b6001600160a01b0316816001815181106145dd576145dd614c8e565b60200260200101516001600160a01b03160361465a57601d5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061462c908590600090869030904290600401614ec9565b600060405180830381600087803b15801561464657600080fd5b505af1158015613100573d6000803e3d6000fd5b600154601d54604051637274ca1b60e11b81526001600160a01b039283169263e4e994369261462c92911690869060009087904290600401614f22565b601d60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156146ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061470e9190614e1a565b6002546001600160a01b039182169116036147bd57601d5460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015614791573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906147b69190614f61565b5050505050565b601d5460025460405162e8e33760e81b81523060048201526001600160a01b039182166024820152604481018590526064810184905260006084820181905260a482015261dead60c48201524260e482015291169063e8e3370090610104016060604051808303816000875af115801561483b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147b69190614f61565b8160095461486d9190614c7b565b600955600a5461487e908290614cbb565b600a555050565b6060614894848460008561489c565b949350505050565b6060824710156148fd5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610cae565b600080866001600160a01b031685876040516149199190614f8f565b60006040518083038185875af1925050503d8060008114614956576040519150601f19603f3d011682016040523d82523d6000602084013e61495b565b606091505b509150915061496c87838387614977565b979650505050505050565b606083156149e65782516000036149df576001600160a01b0385163b6149df5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610cae565b5081614894565b61489483838151156149fb5781518083602001fd5b8060405162461bcd60e51b8152600401610cae9190614a39565b60005b83811015614a30578181015183820152602001614a18565b50506000910152565b6020815260008251806020840152614a58816040850160208701614a15565b601f01601f19169190910160400192915050565b6001600160a01b0381168114611e8657600080fd5b60008060408385031215614a9457600080fd5b8235614a9f81614a6c565b946020939093013593505050565b600060208284031215614abf57600080fd5b5035919050565b600080600060608486031215614adb57600080fd5b8335614ae681614a6c565b92506020840135614af681614a6c565b929592945050506040919091013590565b8015158114611e8657600080fd5b60008060408385031215614b2857600080fd5b8235614b3381614a6c565b91506020830135614b4381614b07565b809150509250929050565b600060208284031215614b6057600080fd5b8135610e8781614a6c565b803562ffffff81168114614b7e57600080fd5b919050565b60008060408385031215614b9657600080fd5b614b9f83614b6b565b9150614bad60208401614b6b565b90509250929050565b60008060408385031215614bc957600080fd5b823591506020830135614b4381614b07565b60008060408385031215614bee57600080fd5b8235614bf981614a6c565b91506020830135614b4381614a6c565b600181811c90821680614c1d57607f821691505b602082108103614c3d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082614c7657634e487b7160e01b600052601260045260246000fd5b500490565b81810381811115610c4557610c45614c43565b634e487b7160e01b600052603260045260246000fd5b8082028115828204841417610c4557610c45614c43565b80820180821115610c4557610c45614c43565b634e487b7160e01b600052603160045260246000fd5b600060018201614cf657614cf6614c43565b5060010190565b62ffffff8181168382160190808211156113b7576113b7614c43565b60208082526015908201527473656c6c20746f74616c20666565203c3d2033302560581b604082015260600190565b60208082526014908201527362757920746f74616c20666565203c3d2033302560601b604082015260600190565b6020808252600f908201526e73656c6c20666565203c3d2031352560881b604082015260600190565b6020808252600e908201526d62757920666565203c3d2031352560901b604082015260600190565b60208082526033908201527f6d61726b6574696e672077616c6c65742063616e27742062652073616d6520776040820152721a5d1a08151c99585cdd5c9e481dd85b1b195d606a1b606082015260800190565b600060208284031215614e2c57600080fd5b8151610e8781614a6c565b600060208284031215614e4957600080fd5b5051919050565b600081518084526020808501945080840160005b83811015614e895781516001600160a01b031687529582019590820190600101614e64565b509495945050505050565b848152608060208201526000614ead6080830186614e50565b6001600160a01b03949094166040830152506060015292915050565b85815284602082015260a060408201526000614ee860a0830186614e50565b6001600160a01b0394909416606083015250608001529392505050565b600060208284031215614f1757600080fd5b8151610e8781614b07565b60018060a01b038616815284602082015283604082015260a060608201526000614f4f60a0830185614e50565b90508260808301529695505050505050565b600080600060608486031215614f7657600080fd5b8351925060208401519150604084015190509250925092565b60008251614fa1818460208701614a15565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a0998bef53fc625546c7e09271cfc55bc8067f2d828dc18388682ac836109ce864736f6c63430008130033a66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000003c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000032000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000001f0c586d5dc6dc856000000000000000000000000000000000000000000000001f0c586d5dc6dc856000000000000000000000000000000000000000000000001f0c586d5dc6dc856000000000000000000000000000001fefc2992469b36dc7c436820ebf52b0700652810000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2000000000000000000000000274c40a14dd597671364e30c8a43c131cc2877c800000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000017000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000017000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000170000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0dcc752af9be6a07a67934471d7cd901a6094e60000000000000000000000001ccfe8c40ef259566433716002e379dfffbf5a3e0000000000000000000000000000000000000000000000000000000000000011437279707469512045636f73797374656d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000743727970746951000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f041690d9cbe398d3d51f25c87902c1403affe66