[ { "inputs": [ { "components": [ { "internalType": "string", "name": "name_", "type": "string" }, { "internalType": "string", "name": "symbol_", "type": "string" }, { "internalType": "uint8", "name": "decimals_", "type": "uint8" }, { "internalType": "address", "name": "creator_", "type": "address" }, { "internalType": "uint256", "name": "tTotal_", "type": "uint256" }, { "internalType": "uint256", "name": "_maxTax", "type": "uint256" }, { "components": [ { "internalType": "bool", "name": "transactionTax", "type": "bool" }, { "internalType": "bool", "name": "buyBackTax", "type": "bool" }, { "internalType": "bool", "name": "holderTax", "type": "bool" }, { "internalType": "bool", "name": "lpTax", "type": "bool" }, { "internalType": "bool", "name": "canBlacklist", "type": "bool" }, { "internalType": "bool", "name": "canMint", "type": "bool" }, { "internalType": "bool", "name": "canPause", "type": "bool" }, { "internalType": "bool", "name": "maxBalanceAfterBuy", "type": "bool" } ], "internalType": "struct TaxSettings", "name": "_settings", "type": "tuple" }, { "components": [ { "internalType": "bool", "name": "transactionTax", "type": "bool" }, { "internalType": "bool", "name": "buyBackTax", "type": "bool" }, { "internalType": "bool", "name": "holderTax", "type": "bool" }, { "internalType": "bool", "name": "lpTax", "type": "bool" }, { "internalType": "bool", "name": "canBlacklist", "type": "bool" }, { "internalType": "bool", "name": "canMint", "type": "bool" }, { "internalType": "bool", "name": "canPause", "type": "bool" }, { "internalType": "bool", "name": "maxBalanceAfterBuy", "type": "bool" } ], "internalType": "struct TaxSettings", "name": "_lockedSettings", "type": "tuple" }, { "components": [ { "components": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "internalType": "struct Fee", "name": "transactionTax", "type": "tuple" }, { "internalType": "uint256", "name": "buyBackTax", "type": "uint256" }, { "internalType": "uint256", "name": "holderTax", "type": "uint256" }, { "internalType": "uint256", "name": "lpTax", "type": "uint256" } ], "internalType": "struct Fees", "name": "_fees", "type": "tuple" }, { "internalType": "address", "name": "_transactionTaxWallet", "type": "address" }, { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "internalType": "struct Fee", "name": "fee", "type": "tuple" }, { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "bool", "name": "withdrawAsGas", "type": "bool" } ], "internalType": "struct CustomTax[]", "name": "_customTaxes", "type": "tuple[]" }, { "internalType": "uint256", "name": "lpWalletThreshold", "type": "uint256" }, { "internalType": "uint256", "name": "buyBackWalletThreshold", "type": "uint256" }, { "internalType": "uint256", "name": "_taxHelperIndex", "type": "uint256" }, { "internalType": "address", "name": "admin_", "type": "address" }, { "internalType": "address", "name": "recoveryAdmin_", "type": "address" }, { "internalType": "bool", "name": "isLossless_", "type": "bool" }, { "components": [ { "internalType": "uint256", "name": "startBlock", "type": "uint256" }, { "internalType": "uint256", "name": "endDate", "type": "uint256" }, { "internalType": "uint256", "name": "increment", "type": "uint256" }, { "internalType": "uint256", "name": "initialMaxHold", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "internalType": "struct AntiBotSettings", "name": "_antiBotSettings", "type": "tuple" }, { "internalType": "uint256", "name": "_maxBalanceAfterBuy", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "endDate", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "internalType": "struct SwapWhitelistingSettings", "name": "_swapWhitelistingSettings", "type": "tuple" } ], "internalType": "struct TaxToken.ConstructorParams", "name": "params", "type": "tuple" }, { "internalType": "address", "name": "_factory", "type": "address" } ], "stateMutability": "nonpayable", "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": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "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" }, { "stateMutability": "nonpayable", "type": "fallback" }, { "inputs": [], "name": "CONTRACT_VERSION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MaxCustom", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MaxTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address1", "type": "address" }, { "internalType": "address", "name": "_address2", "type": "address" } ], "name": "_allowances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_getCurrentSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_getRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "_isExcluded", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_tFeeTotal", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "admin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "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": [], "name": "antiBotSettings", "outputs": [ { "components": [ { "internalType": "uint256", "name": "startBlock", "type": "uint256" }, { "internalType": "uint256", "name": "endDate", "type": "uint256" }, { "internalType": "uint256", "name": "increment", "type": "uint256" }, { "internalType": "uint256", "name": "initialMaxHold", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "internalType": "struct AntiBotSettings", "name": "", "type": "tuple" } ], "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": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "buyBackBurn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "buyBackWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "customTaxLength", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_index", "type": "uint256" } ], "name": "customTaxes", "outputs": [ { "components": [ { "internalType": "string", "name": "name", "type": "string" }, { "components": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "internalType": "struct Fee", "name": "fee", "type": "tuple" }, { "internalType": "address", "name": "wallet", "type": "address" }, { "internalType": "bool", "name": "withdrawAsGas", "type": "bool" } ], "internalType": "struct CustomTax", "name": "", "type": "tuple" } ], "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": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "fees", "outputs": [ { "components": [ { "components": [ { "internalType": "uint256", "name": "buy", "type": "uint256" }, { "internalType": "uint256", "name": "sell", "type": "uint256" } ], "internalType": "struct Fee", "name": "transactionTax", "type": "tuple" }, { "internalType": "uint256", "name": "buyBackTax", "type": "uint256" }, { "internalType": "uint256", "name": "holderTax", "type": "uint256" }, { "internalType": "uint256", "name": "lpTax", "type": "uint256" } ], "internalType": "struct Fees", "name": "", "type": "tuple" } ], "stateMutability": "view", "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": "_address", "type": "address" } ], "name": "isBlacklisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isLocked", "outputs": [ { "components": [ { "internalType": "bool", "name": "transactionTax", "type": "bool" }, { "internalType": "bool", "name": "buyBackTax", "type": "bool" }, { "internalType": "bool", "name": "holderTax", "type": "bool" }, { "internalType": "bool", "name": "lpTax", "type": "bool" }, { "internalType": "bool", "name": "canBlacklist", "type": "bool" }, { "internalType": "bool", "name": "canMint", "type": "bool" }, { "internalType": "bool", "name": "canPause", "type": "bool" }, { "internalType": "bool", "name": "maxBalanceAfterBuy", "type": "bool" } ], "internalType": "struct TaxSettings", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isLosslessOn", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isLosslessTurnOffProposed", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lossless", "outputs": [ { "internalType": "contract ILosslessController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "losslessTurnOffTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "lpTokens", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lpWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketInit", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketInitBlockTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "maxBalanceAfterBuy", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "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": [], "name": "pairAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "recoveryAdmin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapWhitelistingSettings", "outputs": [ { "components": [ { "internalType": "uint256", "name": "endDate", "type": "uint256" }, { "internalType": "bool", "name": "isActive", "type": "bool" } ], "internalType": "struct SwapWhitelistingSettings", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxHelperIndex", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxSettings", "outputs": [ { "components": [ { "internalType": "bool", "name": "transactionTax", "type": "bool" }, { "internalType": "bool", "name": "buyBackTax", "type": "bool" }, { "internalType": "bool", "name": "holderTax", "type": "bool" }, { "internalType": "bool", "name": "lpTax", "type": "bool" }, { "internalType": "bool", "name": "canBlacklist", "type": "bool" }, { "internalType": "bool", "name": "canMint", "type": "bool" }, { "internalType": "bool", "name": "canPause", "type": "bool" }, { "internalType": "bool", "name": "maxBalanceAfterBuy", "type": "bool" } ], "internalType": "struct TaxSettings", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "timelockPeriod", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "transactionTaxWallet", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "from", "type": "address[]" } ], "name": "transferOutBlacklistedFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60806040523480156200001157600080fd5b5060405162004d7938038062004d79833981016040819052620000349162001597565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000816001600160a01b031663f577d9806040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000b6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000dc919062001798565b6001600160a01b0316630ef73d2c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200011a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000140919062001798565b9050600080826001600160a01b031685856040516024016200016492919062001948565b60408051601f198184030181529181526020820180516001600160e01b0316633c74db8560e11b179052516200019b919062001b34565b600060405180830381855af49150503d8060008114620001d8576040519150601f19603f3d011682016040523d82523d6000602084013e620001dd565b606091505b5091509150816200023257604481511015620001f857600080fd5b808060200190518101906200020e919062001b52565b60405162461bcd60e51b815260040162000229919062001b8a565b60405180910390fd5b601c54604080516323ba783160e21b815290516000926001600160a01b031691638ee9e0c49160048083019260209291908290030181865afa1580156200027d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a3919062001798565b905060006200038b8760800151836001600160a01b031663ced72f876040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ef573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000315919062001b9f565b846001600160a01b031663f4e1fc416040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200037a919062001b9f565b6200044160201b62001dbe1760201c565b90506000826001600160a01b0316634e7ceacb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003f4919062001798565b90506200040d88606001513384620004f960201b60201c565b601e805460ff60a81b1916600160a81b179055606088015162000432908284620006c4565b50505050505050505062001c1c565b60008080600019858709858702925082811083820303915050806000036200047d57600084116200047157600080fd5b508290049050620004f2565b8084116200048a57600080fd5b600084868809851960019081018716968790049682860381900495909211909303600082900391909104909201919091029190911760038402600290811880860282030280860282030280860282030280860282030280860282030280860290910302029150505b9392505050565b6001600160a01b0383166200053a5760405162461bcd60e51b8152600401620002299060208082526004908201526322a0a32d60e11b604082015260600190565b6001600160a01b0382166200057b5760405162461bcd60e51b8152600401620002299060208082526004908201526322a0aa2d60e11b604082015260600190565b603654610100900460ff16156200066357601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015620005d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005fd919062001798565b6001600160a01b03166347abf3be8484846040518463ffffffff1660e01b81526004016200062e9392919062001bb9565b600060405180830381600087803b1580156200064957600080fd5b505af11580156200065e573d6000803e3d6000fd5b505050505b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b601e54600090600160a81b900460ff166200070d57601e805460ff60a81b1916600160a81b1790556000620006fb858585620009b9565b905062000709818462001bdd565b9250505b603654610100900460ff16156200081157601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa15801562000769573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200078f919062001798565b6001600160a01b031663379f5c69336040516001600160e01b031960e084901b1681526001600160a01b0391821660048201528188166024820152908616604482015260648101859052608401600060405180830381600087803b158015620007f757600080fd5b505af11580156200080c573d6000803e3d6000fd5b505050505b6200081e84848462000b78565b6001600160a01b0384166000908152601160209081526040808320338452909152902054828110156200087a5760405162461bcd60e51b815260206004820152600360248201526245544160e81b604482015260640162000229565b6001600160a01b038516600090815260116020908152604080832033808552925290912054620008b9918791620008b390879062001bdd565b620004f9565b601e805460ff60a81b19169055603654610100900460ff1615620009ae57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa15801562000922573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000948919062001798565b6001600160a01b031663f49062ca3386866040518463ffffffff1660e01b8152600401620009799392919062001bb9565b600060405180830381600087803b1580156200099457600080fd5b505af1158015620009a9573d6000803e3d6000fd5b505050505b506001949350505050565b6000806001601b0160009054906101000a90046001600160a01b03166001600160a01b031663f577d9806040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a13573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a39919062001798565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000a77573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000a9d919062001798565b9050600080826001600160a01b031687878760405160240162000ac39392919062001bb9565b60408051601f198184030181529181526020820180516001600160e01b0316630da753b760e31b1790525162000afa919062001b34565b600060405180830381855af49150503d806000811462000b37576040519150601f19603f3d011682016040523d82523d6000602084013e62000b3c565b606091505b50915091508162000b5757604481511015620001f857600080fd5b8080602001905181019062000b6d919062001b9f565b979650505050505050565b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa15801562000bc3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000be9919062001798565b6001600160a01b031663c7249c576040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000c27573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000c4d919062001798565b60255490915060ff16801562000c655750602b5460ff165b801562000c8a57506001600160a01b03841660009081526018602052604090205460ff165b1562000d4957600080826001600160a01b0316848660405160240162000cb292919062001c05565b60408051601f198184030181529181526020820180516001600160e01b03166333bbcf1d60e11b1790525162000ce9919062001b34565b600060405180830381855af49150503d806000811462000d26576040519150601f19603f3d011682016040523d82523d6000602084013e62000d2b565b606091505b50915091508162000d4657604481511015620001f857600080fd5b50505b600254670100000000000000900460ff16801562000d7f57506001600160a01b03841660009081526018602052604090205460ff165b1562000e3e57600080826001600160a01b0316848660405160240162000da792919062001c05565b60408051601f198184030181529181526020820180516001600160e01b0316631cf707f160e31b1790525162000dde919062001b34565b600060405180830381855af49150503d806000811462000e1b576040519150601f19603f3d011682016040523d82523d6000602084013e62000e20565b606091505b50915091508162000e3b57604481511015620001f857600080fd5b50505b60255460ff16801562000e535750602f5460ff165b801562000e7857506001600160a01b03841660009081526018602052604090205460ff165b1562000f33576040516001600160a01b038481166024830152600091829184169060440160408051601f198184030181529181526020820180516001600160e01b0316631f35506360e11b1790525162000ed3919062001b34565b600060405180830381855af49150503d806000811462000f10576040519150601f19603f3d011682016040523d82523d6000602084013e62000f15565b606091505b50915091508162000f3057604481511015620001f857600080fd5b50505b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa15801562000f7e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000fa4919062001798565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000fe2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001008919062001798565b9050600080826001600160a01b03168787876040516024016200102e9392919062001bb9565b60408051601f198184030181529181526020820180516001600160e01b03166318703c4f60e11b1790525162001065919062001b34565b600060405180830381855af49150503d8060008114620010a2576040519150601f19603f3d011682016040523d82523d6000602084013e620010a7565b606091505b509150915081620010c257604481511015620001f857600080fd5b50505050505050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620011065762001106620010cb565b60405290565b604051608081016001600160401b0381118282101715620011065762001106620010cb565b60405161028081016001600160401b0381118282101715620011065762001106620010cb565b604051601f8201601f191681016001600160401b0381118282101715620011825762001182620010cb565b604052919050565b60005b83811015620011a75781810151838201526020016200118d565b50506000910152565b600082601f830112620011c257600080fd5b81516001600160401b03811115620011de57620011de620010cb565b620011f3601f8201601f191660200162001157565b8181528460208386010111156200120957600080fd5b6200121c8260208301602087016200118a565b949350505050565b805160ff811681146200123657600080fd5b919050565b80516001600160a01b03811681146200123657600080fd5b805180151581146200123657600080fd5b60006101008083850312156200127957600080fd5b604051908101906001600160401b03821181831017156200129e576200129e620010cb565b81604052809250620012b08462001253565b8152620012c06020850162001253565b6020820152620012d36040850162001253565b6040820152620012e66060850162001253565b6060820152620012f96080850162001253565b60808201526200130c60a0850162001253565b60a08201526200131f60c0850162001253565b60c08201526200133260e0850162001253565b60e0820152505092915050565b6000604082840312156200135257600080fd5b6200135c620010e1565b9050815181526020820151602082015292915050565b600060a082840312156200138557600080fd5b6200138f6200110c565b90506200139d83836200133f565b815260408201516020820152606082015160408201526080820151606082015292915050565b600082601f830112620013d557600080fd5b815160206001600160401b0380831115620013f457620013f4620010cb565b8260051b6200140583820162001157565b93845285810183019383810190888611156200142057600080fd5b84880192505b85831015620014d357825184811115620014405760008081fd5b880160a0818b03601f1901811315620014595760008081fd5b620014636200110c565b8783015187811115620014765760008081fd5b620014868d8a83870101620011b0565b8252506040620014998d8286016200133f565b89830152620014ab608085016200123b565b90820152620014bc83830162001253565b606082015284525050918401919084019062001426565b98975050505050505050565b600060a08284031215620014f257600080fd5b60405160a081016001600160401b0381118282101715620015175762001517620010cb565b8060405250809150825181526020830151602082015260408301516040820152606083015160608201526200154f6080840162001253565b60808201525092915050565b6000604082840312156200156e57600080fd5b62001578620010e1565b9050815181526200158c6020830162001253565b602082015292915050565b60008060408385031215620015ab57600080fd5b82516001600160401b0380821115620015c357600080fd5b908401906105608287031215620015d957600080fd5b620015e362001131565b825182811115620015f357600080fd5b6200160188828601620011b0565b8252506020830151828111156200161757600080fd5b6200162588828601620011b0565b602083015250620016396040840162001224565b60408201526200164c606084016200123b565b60608201526080830151608082015260a083015160a0820152620016748760c0850162001264565b60c08201526101c06200168a8882860162001264565b60e08301526200169f886102c0860162001372565b610100830152620016b461036085016200123b565b61012083015261038084015183811115620016ce57600080fd5b620016dc89828701620013c3565b610140840152506103a08401516101608301526103c08401516101808301526103e08401516101a08301526200171661040085016200123b565b908201526200172961042084016200123b565b6101e08201526200173e610440840162001253565b61020082015262001754876104608501620014df565b610220820152610500830151610240820152620017768761052085016200155b565b61026082015293506200178f915050602084016200123b565b90509250929050565b600060208284031215620017ab57600080fd5b620004f2826200123b565b60008151808452620017d08160208601602086016200118a565b601f01601f19169290920160200192915050565b6001600160a01b03169052565b80511515825260208101511515602083015260408101511515604083015260608101511515606083015260808101511515608083015260a08101516200183b60a084018215159052565b5060c08101516200185060c084018215159052565b5060e08101516200186560e084018215159052565b505050565b6200188082825180518252602090810151910152565b6020810151604083015260408101516060830152606081015160808301525050565b600081518084526020808501808196508360051b8101915082860160005b858110156200193b578284038952815160a08151818752620018e582880182620017b6565b91505086820151620019038888018280518252602090810151910152565b5060408201516001600160a01b03166060878101919091529091015115156080909501949094529784019790840190600101620018c0565b5091979650505050505050565b6040815260008351610560806040850152620019696105a0850183620017b6565b91506020860151603f1980868503016060870152620019898483620017b6565b935060408801519150620019a2608087018360ff169052565b60608801519150620019b860a0870183620017e4565b608088015160c087015260a088015160e087015260c08801519150610100620019e481880184620017f1565b60e08901519250610200620019fc81890185620017f1565b818a0151935062001a126103008901856200186a565b6101208a0151935062001a2a6103a0890185620017e4565b6101408a0151935082888703016103c089015262001a498685620018a2565b95506101608a01516103e08901526101808a01516104008901526101a08a01516104208901526101c08a0151935062001a87610440890185620017e4565b6101e08a0151935062001a9f610460890185620017e4565b890151801515610480890152925062001ab6915050565b5061022086015180516104a086015260208101516104c086015260408101516104e08601526060810151610500860152608081015115156105208601525061024086015161054085015261026086015162001b1f82860182805182526020908101511515910152565b505080915050620004f26020830184620017e4565b6000825162001b488184602087016200118a565b9190910192915050565b60006020828403121562001b6557600080fd5b81516001600160401b0381111562001b7c57600080fd5b6200121c84828501620011b0565b602081526000620004f26020830184620017b6565b60006020828403121562001bb257600080fd5b5051919050565b6001600160a01b039384168152919092166020820152604081019190915260600190565b8181038181111562001bff57634e487b7160e01b600052601160045260246000fd5b92915050565b9182526001600160a01b0316602082015260400190565b61314d8062001c2c6000396000f3fe608060405234801561001057600080fd5b50600436106102675760003560e01c8063024c2ddd146103cb57806306fdde03146103f1578063095ea7b3146104065780630b285b1f1461042957806318160ddd146104555780631cd348c01461045d5780631ec9801d146104775780632150ec291461048257806323b872dd146104935780632a4a09dd146104a65780632d838119146104ae5780632ecaf675146104c157806330d08211146104c957806331392fcb146104d1578063313ce567146104e657806334f6ebf5146104ff57806338b9033314610507578063395093511461050f57806342966c68146105225780634fea2c7a146105355780635c975abb146105485780635f6529a31461055057806361086b00146105615780636303516c1461056957806370a082311461057a578063715018a61461058d5780637ebae80e146105955780638da5cb5b146105da578063936af911146105e257806394e10784146105f557806395d89b41146105fd57806397a9d560146106055780639af1d35a14610622578063a0712d6814610663578063a457c2d714610676578063a4e2d63414610689578063a8b0898214610691578063a9059cbb146106a2578063b17b658d146106b5578063b22941dd146106e1578063c45a015514610701578063ccfa214f14610712578063dd62ed3e146103cb578063eb8e886314610722578063efab831c1461072a578063f10437fc14610735578063f238cc6f14610740578063f2fde38b14610748578063f851a4401461075b578063fa86f8ce1461076c578063fb1eb14b14610774578063fd8191631461077c578063fe575a87146107c8575b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa1580156102b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102d59190612bc8565b6040516366ffd66360e11b8152600080356001600160e01b03191660048301529192506001600160a01b0383169063cdffacc690602401602060405180830381865afa158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d9190612bc8565b90506001600160a01b0381166103a45760405162461bcd60e51b8152602060048201526017602482015276119d5b98dd1a5bdb88191bd95cc81b9bdd08195e1a5cdd604a1b60448201526064015b60405180910390fd5b60405136600082376000803683855af43d806000843e8180156103c5578184f35b8184fd5b005b6103de6103d9366004612be5565b6107f4565b6040519081526020015b60405180910390f35b6103f9610821565b6040516103e89190612c6e565b610419610414366004612c81565b6108b6565b60405190151581526020016103e8565b610419610437366004612cad565b6001600160a01b031660009081526012602052604090205460ff1690565b6015546103de565b601d546001600160a01b03165b6040516103e89190612cca565b60255460ff16610419565b600a546001600160a01b031661046a565b6104196104a1366004612cde565b6108cc565b600b546103de565b6103de6104bc366004612d1f565b610ba8565b6034546103de565b6026546103de565b6104d9610bf9565b6040516103e89190612d38565b601b5460ff165b60405160ff90911681526020016103e8565b61046a610c8c565b6001546103de565b61041961051d366004612c81565b610cff565b6103c9610530366004612d1f565b610e18565b6103c9610543366004612d1f565b610fca565b610419611212565b6030546001600160a01b031661046a565b6035546103de565b601e546001600160a01b031661046a565b6103de610588366004612cad565b611241565b6103c96112d0565b604080518082018252600080825260209182015281518083018352602e54808252602f5460ff16151591830191825283519081529051151591810191909152016103e8565b61046a611337565b6103c96105f0366004612dc1565b611346565b6103de6114f7565b6103f961151a565b61060d61152c565b604080519283526020830191909152016103e8565b61062a6116c6565b6040805182518051825260209081015181830152830151818301529082015160608083019190915290910151608082015260a0016103e8565b6103c9610671366004612d1f565b61170a565b610419610684366004612c81565b611746565b6104d961189f565b6023546001600160a01b031661046a565b6104196106b0366004612c81565b611932565b6104196106c3366004612cad565b6001600160a01b031660009081526018602052604090205460ff1690565b6106f46106ef366004612d1f565b611b5c565b6040516103e89190612e35565b601c546001600160a01b031661046a565b603654610100900460ff16610419565b600c546103de565b60365460ff16610419565b600d5460ff166104ed565b602d546103de565b6103c9610756366004612cad565b611c73565b6033546001600160a01b031661046a565b6024546103de565b6017546103de565b610784611d50565b6040516103e89190600060a0820190508251825260208301516020830152604083015160408301526060830151606083015260808301511515608083015292915050565b6104196107d6366004612cad565b6001600160a01b03166000908152601f602052604090205460ff1690565b6001600160a01b038083166000908152601160209081526040808320938516835292905220545b92915050565b60606001601801805461083390612e98565b80601f016020809104026020016040519081016040528092919081815260200182805461085f90612e98565b80156108ac5780601f10610881576101008083540402835291602001916108ac565b820191906000526020600020905b81548152906001019060200180831161088f57829003601f168201915b5050505050905090565b60006108c3338484611e6c565b50600192915050565b601e54600090600160a81b900460ff1661091057601e805460ff60a81b1916600160a81b179055600061090085858561202b565b905061090c8184612ee8565b9250505b603654610100900460ff1615610a0e57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa15801561096a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098e9190612bc8565b6001600160a01b031663379f5c69336040516001600160e01b031960e084901b1681526001600160a01b0391821660048201528188166024820152908616604482015260648101859052608401600060405180830381600087803b1580156109f557600080fd5b505af1158015610a09573d6000803e3d6000fd5b505050505b610a198484846121da565b6001600160a01b038416600090815260116020908152604080832033845290915290205482811015610a735760405162461bcd60e51b815260206004820152600360248201526245544160e81b604482015260640161039b565b6001600160a01b038516600090815260116020908152604080832033808552925290912054610aae918791610aa9908790612ee8565b611e6c565b601e805460ff60a81b19169055603654610100900460ff1615610b9b57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015610b15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b399190612bc8565b6001600160a01b031663f49062ca3386866040518463ffffffff1660e01b8152600401610b6893929190612efb565b600060405180830381600087803b158015610b8257600080fd5b505af1158015610b96573d6000803e3d6000fd5b505050505b60019150505b9392505050565b601654600090821115610be35760405162461bcd60e51b815260206004820152600360248201526220a62960e91b604482015260640161039b565b6000610bed6114f7565b9050610ba18184612f1f565b610c01612af9565b5060408051610100808201835260025460ff80821615158452918104821615156020840152620100008104821615159383019390935263010000008304811615156060830152600160201b8304811615156080830152600160281b83048116151560a0830152600160301b83048116151560c0830152600160381b909204909116151560e082015290565b601c54604080516322d608f360e21b815290516000926001600160a01b031691638b5823cc9160048083019260209291908290030181865afa158015610cd6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612bc8565b905090565b603654600090610100900460ff1615610de257601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015610d5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d809190612bc8565b6001600160a01b031663cf5961bb3385856040518463ffffffff1660e01b8152600401610daf93929190612efb565b600060405180830381600087803b158015610dc957600080fd5b505af1158015610ddd573d6000803e3d6000fd5b505050505b3360008181526011602090815260408083206001600160a01b03881684529091529020546108c391908590610aa9908690612f41565b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa158015610e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e869190612bc8565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee79190612bc8565b9050600080826001600160a01b031684604051602401610f0991815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316630852cd8d60e31b17905251610f3e9190612f54565b600060405180830381855af49150503d8060008114610f79576040519150601f19603f3d011682016040523d82523d6000602084013e610f7e565b606091505b509150915081610fc457604481511015610f9757600080fd5b80806020019051810190610fab9190612f86565b60405162461bcd60e51b815260040161039b9190612c6e565b50505050565b601c54602480546040516301e2e22f60e51b815260048101919091526000926001600160a01b031691633c5c45e09101602060405180830381865afa158015611017573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061103b9190612bc8565b9050336001600160a01b0382161461107a5760405162461bcd60e51b8152602060048201526002602482015261524160f01b604482015260640161039b565b61108c81611086611337565b846121da565b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa1580156110d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fa9190612bc8565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061115b9190612bc8565b9050600080826001600160a01b03168560405160240161117d91815260200190565b60408051601f198184030181529181526020820180516001600160e01b0316630852cd8d60e31b179052516111b29190612f54565b600060405180830381855af49150503d80600081146111ed576040519150601f19603f3d011682016040523d82523d6000602084013e6111f2565b606091505b50915091508161120b57604481511015610f9757600080fd5b5050505050565b600254600090600160301b900460ff16151581036112305750600090565b50601e54600160a01b900460ff1690565b60025460009062010000900460ff16156112b4576001600160a01b03821660009081526012602052604090205460ff161561129257506001600160a01b031660009081526010602052604090205490565b6001600160a01b0382166000908152600f602052604090205461081b90610ba8565b506001600160a01b031660009081526010602052604090205490565b336112d9611337565b6001600160a01b0316146112ff5760405162461bcd60e51b815260040161039b90613027565b600080546040516001600160a01b03909116906000805160206130d8833981519152908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b603654610100900460ff1661135a57600080fd5b601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa1580156113a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c89190612bc8565b6001600160a01b0316336001600160a01b03161461140e5760405162461bcd60e51b81526020600482015260036024820152621313d360ea1b604482015260640161039b565b60005b818110156114f2576114e083838381811061142e5761142e61305c565b90506020020160208101906114439190612cad565b601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa15801561148d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b19190612bc8565b6114db8686868181106114c6576114c661305c565b90506020020160208101906105889190612cad565b6121da565b806114ea81613072565b915050611411565b505050565b600080600061150461152c565b90925090506115138183612f1f565b9250505090565b60606001601901805461083390612e98565b6016546015546000918291825b60135481101561169457826001600e016000600160120184815481106115615761156161305c565b60009182526020808320909101546001600160a01b0316835282019290925260400190205411806115d25750816001600f016000600160120184815481106115ab576115ab61305c565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b156115e95750506016546015549094909350915050565b60138054600f91600091849081106116035761160361305c565b60009182526020808320909101546001600160a01b031683528201929092526040019020546116329084612ee8565b92506001600f016000600160120183815481106116515761165161305c565b60009182526020808320909101546001600160a01b031683528201929092526040019020546116809083612ee8565b91508061168c81613072565b915050611539565b506015546016546116a59190612f1f565b8210156116bd57505060165460155490939092509050565b90939092509050565b6116ce612b3d565b506040805160c0810182526004546080820190815260055460a08301528152600654602082015260075491810191909152600854606082015290565b33611713611337565b6001600160a01b0316146117395760405162461bcd60e51b815260040161039b90613027565b61174333826126f7565b50565b603654600090610100900460ff161561182957601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612bc8565b6001600160a01b031663568c75a93385856040518463ffffffff1660e01b81526004016117f693929190612efb565b600060405180830381600087803b15801561181057600080fd5b505af1158015611824573d6000803e3d6000fd5b505050505b3360009081526011602090815260408083206001600160a01b0387168452909152902054828110156118865760405162461bcd60e51b815260040161039b9060208082526004908201526322a0a12d60e11b604082015260600190565b6118953385610aa98685612ee8565b5060019392505050565b6118a7612af9565b5060408051610100808201835260035460ff80821615158452918104821615156020840152620100008104821615159383019390935263010000008304811615156060830152600160201b8304811615156080830152600160281b83048116151560a0830152600160301b83048116151560c0830152600160381b909204909116151560e082015290565b601e54600090600160a81b900460ff1661197c57601e805460ff60a81b1916600160a81b179055600061196c6119653390565b858561202b565b90506119788184612ee8565b9250505b603654610100900460ff1615611a5c57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa1580156119d6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119fa9190612bc8565b6001600160a01b0316631ffb811f3385856040518463ffffffff1660e01b8152600401611a2993929190612efb565b600060405180830381600087803b158015611a4357600080fd5b505af1158015611a57573d6000803e3d6000fd5b505050505b611a673384846121da565b601e805460ff60a81b19169055603654610100900460ff16156108c357601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015611ace573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611af29190612bc8565b6001600160a01b031663f49062ca3385856040518463ffffffff1660e01b8152600401611b2193929190612efb565b600060405180830381600087803b158015611b3b57600080fd5b505af1158015611b4f573d6000803e3d6000fd5b5050505050600192915050565b611b64612b6b565b6009805483908110611b7857611b7861305c565b9060005260206000209060040201604051806080016040529081600082018054611ba190612e98565b80601f0160208091040260200160405190810160405280929190818152602001828054611bcd90612e98565b8015611c1a5780601f10611bef57610100808354040283529160200191611c1a565b820191906000526020600020905b815481529060010190602001808311611bfd57829003601f168201915b50505091835250506040805180820182526001840154815260028401546020808301919091528301526003909201546001600160a01b03811692820192909252600160a01b90910460ff16151560609091015292915050565b33611c7c611337565b6001600160a01b031614611ca25760405162461bcd60e51b815260040161039b90613027565b6001600160a01b038116611d075760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161039b565b600080546040516001600160a01b03808516939216916000805160206130d883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b611d846040518060a00160405280600081526020016000815260200160008152602001600081526020016000151581525090565b506040805160a0810182526027548152602854602082015260295491810191909152602a546060820152602b5460ff161515608082015290565b6000808060001985870985870292508281108382030391505080600003611df75760008411611dec57600080fd5b508290049050610ba1565b808411611e0357600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6001600160a01b038316611eab5760405162461bcd60e51b815260040161039b9060208082526004908201526322a0a32d60e11b604082015260600190565b6001600160a01b038216611eea5760405162461bcd60e51b815260040161039b9060208082526004908201526322a0aa2d60e11b604082015260600190565b603654610100900460ff1615611fca57601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa158015611f44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f689190612bc8565b6001600160a01b03166347abf3be8484846040518463ffffffff1660e01b8152600401611f9793929190612efb565b600060405180830381600087803b158015611fb157600080fd5b505af1158015611fc5573d6000803e3d6000fd5b505050505b6001600160a01b0383811660008181526011602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000806001601b0160009054906101000a90046001600160a01b03166001600160a01b031663f577d9806040518163ffffffff1660e01b8152600401602060405180830381865afa158015612084573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a89190612bc8565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156120e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121099190612bc8565b9050600080826001600160a01b031687878760405160240161212d93929190612efb565b60408051601f198184030181529181526020820180516001600160e01b0316630da753b760e31b179052516121629190612f54565b600060405180830381855af49150503d806000811461219d576040519150601f19603f3d011682016040523d82523d6000602084013e6121a2565b606091505b5091509150816121bb57604481511015610f9757600080fd5b808060200190518101906121cf919061308b565b979650505050505050565b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa158015612224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122489190612bc8565b6001600160a01b031663c7249c576040518163ffffffff1660e01b8152600401602060405180830381865afa158015612285573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122a99190612bc8565b60255490915060ff1680156122c05750602b5460ff165b80156122e457506001600160a01b03841660009081526018602052604090205460ff165b1561239a57600080826001600160a01b031684866040516024016123099291906130a4565b60408051601f198184030181529181526020820180516001600160e01b03166333bbcf1d60e11b1790525161233e9190612f54565b600060405180830381855af49150503d8060008114612379576040519150601f19603f3d011682016040523d82523d6000602084013e61237e565b606091505b50915091508161239757604481511015610f9757600080fd5b50505b600254600160381b900460ff1680156123cb57506001600160a01b03841660009081526018602052604090205460ff165b1561248157600080826001600160a01b031684866040516024016123f09291906130a4565b60408051601f198184030181529181526020820180516001600160e01b0316631cf707f160e31b179052516124259190612f54565b600060405180830381855af49150503d8060008114612460576040519150601f19603f3d011682016040523d82523d6000602084013e612465565b606091505b50915091508161247e57604481511015610f9757600080fd5b50505b60255460ff1680156124955750602f5460ff165b80156124b957506001600160a01b03841660009081526018602052604090205460ff165b1561256d57600080826001600160a01b0316856040516024016124dc9190612cca565b60408051601f198184030181529181526020820180516001600160e01b0316631f35506360e11b179052516125119190612f54565b600060405180830381855af49150503d806000811461254c576040519150601f19603f3d011682016040523d82523d6000602084013e612551565b606091505b50915091508161256a57604481511015610f9757600080fd5b50505b601c54604080516301eaefb360e71b815290516000926001600160a01b03169163f577d9809160048083019260209291908290030181865afa1580156125b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125db9190612bc8565b6001600160a01b03166387265bac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612618573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061263c9190612bc8565b9050600080826001600160a01b031687878760405160240161266093929190612efb565b60408051601f198184030181529181526020820180516001600160e01b03166318703c4f60e11b179052516126959190612f54565b600060405180830381855af49150503d80600081146126d0576040519150601f19603f3d011682016040523d82523d6000602084013e6126d5565b606091505b5091509150816126ee57604481511015610f9757600080fd5b50505050505050565b6001600160a01b0382166127335760405162461bcd60e51b815260206004820152600360248201526222a6ad60e91b604482015260640161039b565b600254600160281b900460ff1661275c5760405162461bcd60e51b815260040161039b906130bb565b60025462010000900460ff16156127855760405162461bcd60e51b815260040161039b906130bb565b603654610100900460ff161561286757601c54604080516322d608f360e21b815290516001600160a01b0390921691638b5823cc916004808201926020929091908290030181865afa1580156127df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128039190612bc8565b6040516218a28b60e61b81526001600160a01b038481166004830152602482018490529190911690630628a2c090604401600060405180830381600087803b15801561284e57600080fd5b505af1158015612862573d6000803e3d6000fd5b505050505b601c54604080516323ba783160e21b815290516000926001600160a01b031691638ee9e0c49160048083019260209291908290030181865afa1580156128b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d59190612bc8565b905060006129a683836001600160a01b031663ced72f876040518163ffffffff1660e01b8152600401602060405180830381865afa15801561291b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061293f919061308b565b846001600160a01b031663f4e1fc416040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129a1919061308b565b611dbe565b90506000826001600160a01b0316634e7ceacb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a0c9190612bc8565b90508360016014016000828254612a239190612f41565b90915550506001600160a01b03811660009081526010602052604081208054849290612a50908490612f41565b90915550612a6090508285612ee8565b6001600160a01b03861660009081526010602052604081208054909190612a88908490612f41565b90915550506040518281526001600160a01b038216906000906000805160206130f88339815191529060200160405180910390a36001600160a01b03851660006000805160206130f8833981519152612ae18588612ee8565b60405190815260200160405180910390a35050505050565b6040805161010081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e081019190915290565b6040518060800160405280612b50612b99565b81526020016000815260200160008152602001600081525090565b604051806080016040528060608152602001612b85612b99565b815260006020820181905260409091015290565b604051806040016040528060008152602001600081525090565b6001600160a01b038116811461174357600080fd5b600060208284031215612bda57600080fd5b8151610ba181612bb3565b60008060408385031215612bf857600080fd5b8235612c0381612bb3565b91506020830135612c1381612bb3565b809150509250929050565b60005b83811015612c39578181015183820152602001612c21565b50506000910152565b60008151808452612c5a816020860160208601612c1e565b601f01601f19169290920160200192915050565b602081526000610ba16020830184612c42565b60008060408385031215612c9457600080fd5b8235612c9f81612bb3565b946020939093013593505050565b600060208284031215612cbf57600080fd5b8135610ba181612bb3565b6001600160a01b0391909116815260200190565b600080600060608486031215612cf357600080fd5b8335612cfe81612bb3565b92506020840135612d0e81612bb3565b929592945050506040919091013590565b600060208284031215612d3157600080fd5b5035919050565b6000610100820190508251151582526020830151151560208301526040830151151560408301526060830151151560608301526080830151612d7e608084018215159052565b5060a0830151612d9260a084018215159052565b5060c0830151612da660c084018215159052565b5060e0830151612dba60e084018215159052565b5092915050565b60008060208385031215612dd457600080fd5b82356001600160401b0380821115612deb57600080fd5b818501915085601f830112612dff57600080fd5b813581811115612e0e57600080fd5b8660208260051b8501011115612e2357600080fd5b60209290920196919550909350505050565b602081526000825160a06020840152612e5160c0840182612c42565b90506020840151612e6f604085018280518252602090810151910152565b5060408401516001600160a01b03166080840152606090930151151560a0909201919091525090565b600181811c90821680612eac57607f821691505b602082108103612ecc57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561081b5761081b612ed2565b6001600160a01b039384168152919092166020820152604081019190915260600190565b600082612f3c57634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111561081b5761081b612ed2565b60008251612f66818460208701612c1e565b9190910192915050565b634e487b7160e01b600052604160045260246000fd5b600060208284031215612f9857600080fd5b81516001600160401b0380821115612faf57600080fd5b818401915084601f830112612fc357600080fd5b815181811115612fd557612fd5612f70565b604051601f8201601f19908116603f01168101908382118183101715612ffd57612ffd612f70565b8160405282815287602084870101111561301657600080fd5b6121cf836020830160208801612c1e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006001820161308457613084612ed2565b5060010190565b60006020828403121561309d57600080fd5b5051919050565b9182526001600160a01b0316602082015260400190565b6020808252600290820152614e4d60f01b60408201526060019056fe8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a4e40b9641135954640ca80aed2c263d55c040dd710d9766ebe710002ab0c21364736f6c634300081100330000000000000000000000000000000000000000000000000000000000000040000000000000000000000000b7084866b70adad518b8fcf5aa6ada89e46e75c4000000000000000000000000000000000000000000000000000000000000056000000000000000000000000000000000000000000000000000000000000005a00000000000000000000000000000000000000000000000000000000000000012000000000000000000000000bbdd9072236854074025722dde241db5e053f05d00000000000000000000000000000000000000000052b7d2dcc80cd2e40000000000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbdd9072236854074025722dde241db5e053f05d00000000000000000000000000000000000000000000000000000000000005e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000bbdd9072236854074025722dde241db5e053f05d000000000000000000000000bbdd9072236854074025722dde241db5e053f05d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000006c6b935b8bbd4000000000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000001925734d5b8904b800000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000009476f6443616e646c650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000524474443440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000