ETH Price: $3,487.85 (+0.47%)
Gas: 6 Gwei

Token

CatFace ((=♡ᆺ♡=))
 

Overview

Max Total Supply

10,000,000 (=♡ᆺ♡=)

Holders

77

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.326177167 (=♡ᆺ♡=)

Value
$0.00
0x6971a1f61c3555d0e3e6e98dcb7263bd3eefc776
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
CatFace

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-09
*/

/*

 (=♡ᆺ♡=)

 CatFace.io
 t.me/CatFaceERC20
 twitter.com/CatFaceERC20

 Meow

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

contract Ownable is Context {
    address public _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        authorizations[_owner] = true;
        emit OwnershipTransferred(address(0), msgSender);
    }
    mapping (address => bool) internal authorizations;

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public 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 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 addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface InterfaceLP {
    function sync() external;
}


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract CatFace is Ownable, ERC20 {
    using SafeMath for uint256;

    address WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;
    

    string constant _name = "CatFace";
    string constant _symbol = unicode"(=♡ᆺ♡=)";
    uint8 constant _decimals = 9; 


    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event EditTax(uint8 Buy, uint8 Sell, uint8 Transfer);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    event set_Receivers(address marketingFeeReceiver, address catpotFeeReceiver,address burnFeeReceiver,address devFeeReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTX(uint256 maxTX);
    event set_SwapBack(uint256 Amount, bool Enabled);
  
    uint256 _totalSupply =  10000000 * 10**_decimals; 

    uint256 public _maxTxAmount = _totalSupply.mul(1).div(100);
    uint256 public _maxWalletToken = _totalSupply.mul(2).div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;  
    mapping (address => bool) isexemptfromfees;
    mapping (address => bool) isexemptfrommaxTX;

    uint256 private liquidityFee    = 1;
    uint256 private marketingFee    = 2;
    uint256 private devFee          = 0;
    uint256 private catpotFee      = 2; 
    uint256 private burnFee        = 0;
    uint256 public totalFee         = catpotFee + marketingFee + liquidityFee + devFee + burnFee;
    uint256 private feeDenominator  = 100;

    uint256 sellpercent = 100;
    uint256 buypercent = 100;
    uint256 transferpercent = 100; 

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private devFeeReceiver;
    address private catpotFeeReceiver;
    address private burnFeeReceiver;

    uint256 setRatio = 20;
    uint256 setRatioDenominator = 100;
    

    IDEXRouter public router;
    InterfaceLP private pairContract;
    address public pair;
    
    bool public TradingOpen = false; 

   
    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 5 / 1000; 
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }
    
    constructor () {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
    //    pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
    //    pairContract = InterfaceLP(pair);
       
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        isexemptfromfees[msg.sender] = true;            
        isexemptfrommaxTX[msg.sender] = true;
        isexemptfrommaxTX[pair] = true;
        isexemptfrommaxTX[marketingFeeReceiver] = true;
        isexemptfrommaxTX[address(this)] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = 0x4D11233C5694FA4b36B94cb8C35bee10ea853161;
        devFeeReceiver = msg.sender;
        catpotFeeReceiver = msg.sender;
        burnFeeReceiver = DEAD; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) {return owner();}
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    bool public liquidityAdded = false;

    function initializeLiquidity(uint256 tokenAmount, uint256 ethAmount) external onlyOwner {
        require(!liquidityAdded, "Liquidity already added.");

        // Create the pair if it doesn't exist.
        if(pair == address(0)){
            pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
            pairContract = InterfaceLP(pair);
        }

        // Approve the router to spend the tokens.
        _allowances[address(this)][address(router)] = tokenAmount;

        // Add liquidity.
        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );

        liquidityAdded = true;
    }
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

        function editMaxHolding(uint256 maxWallPercent) external onlyOwner {
         require(maxWallPercent >= 1); 
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 1000;
        emit set_MaxWallet(_maxWalletToken);
                
    }

      function noLimits () external onlyOwner {
            _maxTxAmount = _totalSupply;
            _maxWalletToken = _totalSupply;
    }

      
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(TradingOpen,"Trading not open yet");
        
          }
        
               
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(DEAD) && recipient != pair && recipient != burnFeeReceiver && recipient != marketingFeeReceiver && !isexemptfrommaxTX[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}

        checkTxLimit(sender, amount);  

        if(shouldSwapBack()){ swapBack(); }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isexemptfromfees[sender] || isexemptfromfees[recipient]) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
 
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isexemptfrommaxTX[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isexemptfromfees[sender];
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 percent = transferpercent;
        if(recipient == pair) {
            percent = sellpercent;
        } else if(sender == pair) {
            percent = buypercent;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(percent).div(feeDenominator * 100);
        uint256 burnTokens = feeAmount.mul(burnFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(burnTokens);
        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[burnFeeReceiver] = _balances[burnFeeReceiver].add(burnTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        
        if(burnTokens > 0){
            _totalSupply = _totalSupply.sub(burnTokens);
            emit Transfer(sender, ZERO, burnTokens);  
        
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

  
     function transfer() external { 
             payable(autoLiquidityReceiver).transfer(address(this).balance);
            
    }

   function clearForeignToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(tokenAddress != address(this), "tokenAddress can not be the native token");
             if(tokens == 0){
            tokens = ERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return ERC20(tokenAddress).transfer(autoLiquidityReceiver, tokens);
    }

    function setAllocation(uint256 _percentonbuy, uint256 _percentonsell, uint256 _wallettransfer) external onlyOwner {
        sellpercent = _percentonsell;
        buypercent = _percentonbuy;
        transferpercent = _wallettransfer;    
          
    }
       
    function openTrading() public onlyOwner {
        TradingOpen = true;
                                      
    }

    function lower() public onlyOwner {
       
     sellpercent = 1000;
     buypercent = 100;
     transferpercent = 0; 
    }

    function getSet() public onlyOwner {
       
     sellpercent = 1000;
     buypercent = 1000;
     transferpercent = 0; 
    }
                 
    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = checkRatio(setRatio, setRatioDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;
        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHcatpot = amountETH.mul(catpotFee).div(totalETHFee);
        uint256 amountETHdev = amountETH.mul(devFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHdev}("");
        (tmpSuccess,) = payable(catpotFeeReceiver).call{value: amountETHcatpot}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }
    
  
    function set_fees() internal {
      
        emit EditTax( uint8(totalFee.mul(buypercent).div(100)),
            uint8(totalFee.mul(sellpercent).div(100)),
            uint8(totalFee.mul(transferpercent).div(100))
            );
    }
    
    function setBreakdown(uint256 _liquidityFee, uint256 _catpotFee, uint256 _marketingFee, uint256 _devFee, uint256 _burnFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        catpotFee = _catpotFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        burnFee = _burnFee;
        totalFee = _liquidityFee.add(_catpotFee).add(_marketingFee).add(_devFee).add(_burnFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator / 1, "Fees can not be more than 100%"); 
        set_fees();
    }

   
    function setReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver, address _burnFeeReceiver, address _catpotFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = _devFeeReceiver;
        burnFeeReceiver = _burnFeeReceiver;
        catpotFeeReceiver = _catpotFeeReceiver;

        emit set_Receivers(marketingFeeReceiver, catpotFeeReceiver, burnFeeReceiver, devFeeReceiver);
    }

    function editSwapThreshold(bool _enabled, uint256 _amount) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _amount;
       emit set_SwapBack(swapThreshold, swapEnabled);
    }

    function checkRatio(uint256 ratio, uint256 accuracy) public view returns (bool) {
        return showBacking(accuracy) > ratio;
    }

    function showBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(showSupply());
    }
    
    function showSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }


}

Contract Security Audit

Contract ABI

[{"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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"Buy","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Sell","type":"uint8"},{"indexed":false,"internalType":"uint8","name":"Transfer","type":"uint8"}],"name":"EditTax","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTX","type":"uint256"}],"name":"set_MaxTX","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"catpotFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"burnFeeReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"devFeeReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"},{"indexed":false,"internalType":"bool","name":"Enabled","type":"bool"}],"name":"set_SwapBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[],"name":"TradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"ratio","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"checkRatio","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"editMaxHolding","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"editSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"initializeLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"liquidityAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"noLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentonbuy","type":"uint256"},{"internalType":"uint256","name":"_percentonsell","type":"uint256"},{"internalType":"uint256","name":"_wallettransfer","type":"uint256"}],"name":"setAllocation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_catpotFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setBreakdown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"},{"internalType":"address","name":"_burnFeeReceiver","type":"address"},{"internalType":"address","name":"_catpotFeeReceiver","type":"address"}],"name":"setReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"showBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showSupply","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":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000566565b62000021906298968062000576565b600381905562000042906064906200003b90600162000343565b90620003d6565b6004556003546200005d906064906200003b90600262000343565b6005556001600a556002600b555f600c556002600d555f600e55600e54600c54600a54600b54600d5462000092919062000590565b6200009e919062000590565b620000aa919062000590565b620000b6919062000590565b600f55606460108190556011819055601281905560138190556014601955601a55601d805461ffff60a01b1916600160a81b1790556003546103e890620000ff90600562000576565b6200010b9190620005a6565b601e55601f805461ff001916905534801562000125575f80fd5b505f80546001600160a01b031916339081178255808252600160208190526040808420805460ff191690921790915551909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601b80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155604080516315ab88c960e31b8152905163ad5c4648916004808201926020929091908290030181865afa158015620001e2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002089190620005c6565b600280546001600160a01b039283166001600160a01b031991821617909155305f818152600760209081526040808320601b548716845282528083205f1990553380845260088352818420805460ff199081166001908117909255600985528386208054821683179055601d5489168652838620805482168317905560158054909916865283862080548216831790559585528285208054909616179094556014805486168517905585548516734d11233c5694fa4b36b94cb8c35bee10ea8531611790955560168054851684179055601780548516841790556018805490941661dead17909355600354828252600690935283812083905592519092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef916200033591815260200190565b60405180910390a36200063b565b5f825f036200035457505f620003d0565b5f62000361838562000576565b905082620003708583620005a6565b14620003cd5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b5f620003cd83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200041f60201b60201c565b5f8183620004425760405162461bcd60e51b8152600401620003c49190620005ee565b505f620004508486620005a6565b95945050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620004ad57815f190482111562000491576200049162000459565b808516156200049f57918102915b93841c939080029062000472565b509250929050565b5f82620004c557506001620003d0565b81620004d357505f620003d0565b8160018114620004ec5760028114620004f75762000517565b6001915050620003d0565b60ff8411156200050b576200050b62000459565b50506001821b620003d0565b5060208310610133831016604e8410600b84101617156200053c575081810a620003d0565b6200054883836200046d565b805f19048211156200055e576200055e62000459565b029392505050565b5f620003cd60ff841683620004b5565b8082028115828204841417620003d057620003d062000459565b80820180821115620003d057620003d062000459565b5f82620005c157634e487b7160e01b5f52601260045260245ffd5b500490565b5f60208284031215620005d7575f80fd5b81516001600160a01b0381168114620003cd575f80fd5b5f6020808352835180828501525f5b818110156200061b57858101830151858201604001528201620005fd565b505f604082860101526040601f19601f8301168501019250505092915050565b6123a080620006495f395ff3fe60806040526004361061022b575f3560e01c80637d1db4a511610129578063d17b71f9116100a8578063f0a9e3651161006d578063f0a9e3651461066c578063f2b82e0a1461068b578063f2fde38b146106aa578063f887ea40146106c9578063fd65c4d6146106e8575f80fd5b8063d17b71f9146105ad578063d9443923146105cc578063dd62ed3e146105ea578063ded1e4381461062e578063e63063881461064d575f80fd5b8063a8aa1b31116100ee578063a8aa1b3114610529578063a9059cbb14610548578063b2bdfa7b14610567578063b951486d14610585578063c9567bf914610599575f80fd5b80637d1db4a51461047f578063893d20e8146104945780638a4068dd146104c45780638da5cb5b146104d857806395d89b41146104f4575f80fd5b806330c9a6a0116101b5578063571ac8b01161017a578063571ac8b0146103e35780636ddd17131461040257806370a0823114610422578063715018a61461045657806378109e541461046a575f80fd5b806330c9a6a014610362578063313ce5671461038157806331f070d91461039c5780633554dd3c146103b057806355265669146103cf575f80fd5b8063095ea7b3116101fb578063095ea7b3146102dc57806315d75b59146102fb57806318160ddd1461031a5780631df4ccfc1461032e57806323b872dd14610343575f80fd5b806301466760146102365780630445b6671461024c57806306fdde031461027457806308fd3d05146102ac575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a610707565b005b348015610257575f80fd5b50610261601e5481565b6040519081526020015b60405180910390f35b34801561027f575f80fd5b506040805180820190915260078152664361744661636560c81b60208201525b60405161026b9190611f21565b3480156102b7575f80fd5b50601d546102cc90600160a01b900460ff1681565b604051901515815260200161026b565b3480156102e7575f80fd5b506102cc6102f6366004611f80565b610746565b348015610306575f80fd5b5061024a610315366004611faa565b6107b2565b348015610325575f80fd5b50600354610261565b348015610339575f80fd5b50610261600f5481565b34801561034e575f80fd5b506102cc61035d366004611fd3565b6107ec565b34801561036d575f80fd5b5061026161037c366004612011565b6108aa565b34801561038c575f80fd5b506040516009815260200161026b565b3480156103a7575f80fd5b5061024a6108ef565b3480156103bb575f80fd5b5061024a6103ca366004612028565b610929565b3480156103da575f80fd5b50610261610a00565b3480156103ee575f80fd5b506102cc6103fd366004612095565b610a70565b34801561040d575f80fd5b50601d546102cc90600160a81b900460ff1681565b34801561042d575f80fd5b5061026161043c366004612095565b6001600160a01b03165f9081526006602052604090205490565b348015610461575f80fd5b5061024a610a7c565b348015610475575f80fd5b5061026160055481565b34801561048a575f80fd5b5061026160045481565b34801561049f575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161026b565b3480156104cf575f80fd5b5061024a610aed565b3480156104e3575f80fd5b505f546001600160a01b03166104ac565b3480156104ff575f80fd5b5060408051808201909152600d81526c283de299a1e186bae299a13d2960981b602082015261029f565b348015610534575f80fd5b50601d546104ac906001600160a01b031681565b348015610553575f80fd5b506102cc610562366004611f80565b610b26565b348015610572575f80fd5b505f546104ac906001600160a01b031681565b348015610590575f80fd5b5061024a610b32565b3480156105a4575f80fd5b5061024a610b6c565b3480156105b8575f80fd5b5061024a6105c7366004612011565b610baa565b3480156105d7575f80fd5b50601f546102cc90610100900460ff1681565b3480156105f5575f80fd5b506102616106043660046120b0565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610639575f80fd5b506102cc6106483660046120e7565b610c36565b348015610658575f80fd5b5061024a6106673660046120e7565b610c49565b348015610677575f80fd5b506102cc610686366004611f80565b610eb2565b348015610696575f80fd5b5061024a6106a5366004612107565b611042565b3480156106b5575f80fd5b5061024a6106c4366004612095565b61110f565b3480156106d4575f80fd5b50601b546104ac906001600160a01b031681565b3480156106f3575f80fd5b5061024a610702366004612153565b6111f6565b5f546001600160a01b031633146107395760405162461bcd60e51b81526004016107309061216f565b60405180910390fd5b6003546004819055600555565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107a09086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146107db5760405162461bcd60e51b81526004016107309061216f565b601191909155601291909155601355565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f1914610895576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600782528381203382529091529190912054610871918490611288565b6001600160a01b0385165f9081526007602090815260408083203384529091529020555b6108a08484846112c0565b90505b9392505050565b5f6107ac6108b6610a00565b601d546001600160a01b03165f908152600660205260409020546108e9906108e2906002905b90611617565b8590611617565b90611695565b5f546001600160a01b031633146109185760405162461bcd60e51b81526004016107309061216f565b6103e860118190556012555f601355565b5f546001600160a01b031633146109525760405162461bcd60e51b81526004016107309061216f565b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22546003549192610a6b929091610a6591906116d6565b906116d6565b905090565b5f6107ac825f19610746565b5f546001600160a01b03163314610aa55760405162461bcd60e51b81526004016107309061216f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6014546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610b23573d5f803e3d5ffd5b50565b5f6108a33384846112c0565b5f546001600160a01b03163314610b5b5760405162461bcd60e51b81526004016107309061216f565b6103e860115560646012555f601355565b5f546001600160a01b03163314610b955760405162461bcd60e51b81526004016107309061216f565b601d805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610bd35760405162461bcd60e51b81526004016107309061216f565b6001811015610be0575f80fd5b6103e881600354610bf191906121b8565b610bfb91906121cf565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b5f82610c41836108aa565b119392505050565b5f546001600160a01b03163314610c725760405162461bcd60e51b81526004016107309061216f565b601f54610100900460ff1615610cca5760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920616c72656164792061646465642e00000000000000006044820152606401610730565b601d546001600160a01b0316610dec57601b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4e91906121ee565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015610d9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc091906121ee565b601d80546001600160a01b03929092166001600160a01b03199283168117909155601c80549092161790555b305f818152600760209081526040808320601b80546001600160a01b039081168652919093529083208690559054169163f305d71991849190869080610e395f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610e5b96959493929190612209565b60606040518083038185885af1158015610e77573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e9c9190612244565b5050601f805461ff001916610100179055505050565b5f306001600160a01b03841603610f1c5760405162461bcd60e51b815260206004820152602860248201527f746f6b656e416464726573732063616e206e6f7420626520746865206e6174696044820152673b32903a37b5b2b760c11b6064820152608401610730565b815f03610f8c576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610f65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f89919061226f565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af115801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a39190612286565b5f546001600160a01b0316331461106b5760405162461bcd60e51b81526004016107309061216f565b600a869055600d859055600b849055600c839055600e82905561109c82611096858188818c8c611717565b90611717565b600f5560108190556110af6001826121cf565b600f54106110ff5760405162461bcd60e51b815260206004820152601e60248201527f466565732063616e206e6f74206265206d6f7265207468616e203130302500006044820152606401610730565b611107611775565b505050505050565b5f546001600160a01b031633146111385760405162461bcd60e51b81526004016107309061216f565b6001600160a01b03811661119d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610730565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461121f5760405162461bcd60e51b81526004016107309061216f565b601d805460ff60a81b1916600160a81b84151581029190911791829055601e8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b5f81848411156112ab5760405162461bcd60e51b81526004016107309190611f21565b505f6112b784866122a1565b95945050505050565b601f545f9060ff16156112df576112d8848484611810565b90506108a3565b6001600160a01b0384165f9081526001602052604090205460ff1615801561131f57506001600160a01b0383165f9081526001602052604090205460ff16155b1561137457601d54600160a01b900460ff166113745760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610730565b6001600160a01b0384165f9081526001602052604090205460ff161580156113a557506001600160a01b0383163014155b80156113bc57506001600160a01b03831661dead14155b80156113d65750601d546001600160a01b03848116911614155b80156113f057506018546001600160a01b03848116911614155b801561140a57506015546001600160a01b03848116911614155b801561142e57506001600160a01b0383165f9081526009602052604090205460ff16155b156114ce576001600160a01b0383165f9081526006602052604090205460055461145884836122b4565b11156114cc5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610730565b505b6114d884836118e0565b6114e061194c565b156114ed576114ed6119a0565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526006909152919091205461153e918490611288565b6001600160a01b0385165f90815260066020908152604080832093909355600890529081205460ff168061158957506001600160a01b0384165f9081526008602052604090205460ff165b61159d57611598858486611d76565b61159f565b825b6001600160a01b0385165f908152600660205260409020549091506115c49082611717565b6001600160a01b038086165f8181526006602052604090819020939093559151908716905f8051602061234b833981519152906116049085815260200190565b60405180910390a3506001949350505050565b5f825f0361162657505f6107ac565b5f61163183856121b8565b90508261163e85836121cf565b146108a35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610730565b5f6108a383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ef5565b5f6108a383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611288565b5f8061172383856122b4565b9050838110156108a35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610730565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006117b260646108e9601254600f5461161790919063ffffffff16565b6117ce60646108e9601154600f5461161790919063ffffffff16565b6117ea60646108e9601354600f5461161790919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600690915291822054611860918490611288565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461188e9083611717565b6001600160a01b038085165f8181526006602052604090819020939093559151908616905f8051602061234b833981519152906118ce9086815260200190565b60405180910390a35060019392505050565b6004548111158061190857506001600160a01b0382165f9081526009602052604090205460ff165b6119485760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610730565b5050565b601d545f906001600160a01b0316331480159061196c5750601f5460ff16155b80156119815750601d54600160a81b900460ff165b8015610a6b575050601e54305f90815260066020526040902054101590565b601f805460ff19166001179055601954601a545f916119be91610c36565b6119ca57600a546119cc565b5f5b90505f6119ef60026108e9600f546108e986601e5461161790919063ffffffff16565b90505f611a0782601e546116d690919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611a3f57611a3f6122c7565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611a7057611a706122c7565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac94790611ab99086905f908790309042906004016122db565b5f604051808303815f87803b158015611ad0575f80fd5b505af1158015611ae2573d5f803e3d5ffd5b505050505f611afa82476116d690919063ffffffff16565b90505f611b14611b0b886002611695565b600f54906116d6565b90505f611b2860026108e98481878d611617565b90505f611b44836108e9600b548761161790919063ffffffff16565b90505f611b60846108e9600d548861161790919063ffffffff16565b90505f611b7c856108e9600c548961161790919063ffffffff16565b6015546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611bcb576040519150601f19603f3d011682016040523d82523d5f602084013e611bd0565b606091505b50506016546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611c1d576040519150601f19603f3d011682016040523d82523d5f602084013e611c22565b606091505b50506017546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611c6f576040519150601f19603f3d011682016040523d82523d5f602084013e611c74565b606091505b505f9250508b159050611d5e57601b5f9054906101000a90046001600160a01b03166001600160a01b031663f305d71986308e5f8060145f9054906101000a90046001600160a01b0316426040518863ffffffff1660e01b8152600401611ce096959493929190612209565b60606040518083038185885af1158015611cfc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d219190612244565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601f805460ff1916905550505050505050505050565b601354601d545f91906001600160a01b0390811690841603611d9b5750601154611db6565b601d546001600160a01b0390811690861603611db657506012545b5f611de26010546064611dc991906121b8565b6108e9846108dc600f548a61161790919063ffffffff16565b90505f611e00600f546108e9600e548561161790919063ffffffff16565b90505f611e0d83836116d6565b305f90815260066020526040902054909150611e299082611717565b305f90815260066020526040808220929092556018546001600160a01b031681522054611e569083611717565b6018546001600160a01b039081165f9081526006602090815260409182902093909355518381523092918b16915f8051602061234b833981519152910160405180910390a38115611edf57600354611eae90836116d6565b6003556040518281525f906001600160a01b038a16905f8051602061234b8339815191529060200160405180910390a35b611ee987846116d6565b98975050505050505050565b5f8183611f155760405162461bcd60e51b81526004016107309190611f21565b505f6112b784866121cf565b5f6020808352835180828501525f5b81811015611f4c57858101830151858201604001528201611f30565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b23575f80fd5b5f8060408385031215611f91575f80fd5b8235611f9c81611f6c565b946020939093013593505050565b5f805f60608486031215611fbc575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611fe5575f80fd5b8335611ff081611f6c565b9250602084013561200081611f6c565b929592945050506040919091013590565b5f60208284031215612021575f80fd5b5035919050565b5f805f805f60a0868803121561203c575f80fd5b853561204781611f6c565b9450602086013561205781611f6c565b9350604086013561206781611f6c565b9250606086013561207781611f6c565b9150608086013561208781611f6c565b809150509295509295909350565b5f602082840312156120a5575f80fd5b81356108a381611f6c565b5f80604083850312156120c1575f80fd5b82356120cc81611f6c565b915060208301356120dc81611f6c565b809150509250929050565b5f80604083850312156120f8575f80fd5b50508035926020909101359150565b5f805f805f8060c0878903121561211c575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b8015158114610b23575f80fd5b5f8060408385031215612164575f80fd5b8235611f9c81612146565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107ac576107ac6121a4565b5f826121e957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156121fe575f80fd5b81516108a381611f6c565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612256575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561227f575f80fd5b5051919050565b5f60208284031215612296575f80fd5b81516108a381612146565b818103818111156107ac576107ac6121a4565b808201808211156107ac576107ac6121a4565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123295784516001600160a01b031683529383019391830191600101612304565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e4d2938fb5beb2029455a4c9729fd9aeaaf93ae6e5e2e01a7eb14ae6331e4fa864736f6c63430008140033

Deployed Bytecode

0x60806040526004361061022b575f3560e01c80637d1db4a511610129578063d17b71f9116100a8578063f0a9e3651161006d578063f0a9e3651461066c578063f2b82e0a1461068b578063f2fde38b146106aa578063f887ea40146106c9578063fd65c4d6146106e8575f80fd5b8063d17b71f9146105ad578063d9443923146105cc578063dd62ed3e146105ea578063ded1e4381461062e578063e63063881461064d575f80fd5b8063a8aa1b31116100ee578063a8aa1b3114610529578063a9059cbb14610548578063b2bdfa7b14610567578063b951486d14610585578063c9567bf914610599575f80fd5b80637d1db4a51461047f578063893d20e8146104945780638a4068dd146104c45780638da5cb5b146104d857806395d89b41146104f4575f80fd5b806330c9a6a0116101b5578063571ac8b01161017a578063571ac8b0146103e35780636ddd17131461040257806370a0823114610422578063715018a61461045657806378109e541461046a575f80fd5b806330c9a6a014610362578063313ce5671461038157806331f070d91461039c5780633554dd3c146103b057806355265669146103cf575f80fd5b8063095ea7b3116101fb578063095ea7b3146102dc57806315d75b59146102fb57806318160ddd1461031a5780631df4ccfc1461032e57806323b872dd14610343575f80fd5b806301466760146102365780630445b6671461024c57806306fdde031461027457806308fd3d05146102ac575f80fd5b3661023257005b5f80fd5b348015610241575f80fd5b5061024a610707565b005b348015610257575f80fd5b50610261601e5481565b6040519081526020015b60405180910390f35b34801561027f575f80fd5b506040805180820190915260078152664361744661636560c81b60208201525b60405161026b9190611f21565b3480156102b7575f80fd5b50601d546102cc90600160a01b900460ff1681565b604051901515815260200161026b565b3480156102e7575f80fd5b506102cc6102f6366004611f80565b610746565b348015610306575f80fd5b5061024a610315366004611faa565b6107b2565b348015610325575f80fd5b50600354610261565b348015610339575f80fd5b50610261600f5481565b34801561034e575f80fd5b506102cc61035d366004611fd3565b6107ec565b34801561036d575f80fd5b5061026161037c366004612011565b6108aa565b34801561038c575f80fd5b506040516009815260200161026b565b3480156103a7575f80fd5b5061024a6108ef565b3480156103bb575f80fd5b5061024a6103ca366004612028565b610929565b3480156103da575f80fd5b50610261610a00565b3480156103ee575f80fd5b506102cc6103fd366004612095565b610a70565b34801561040d575f80fd5b50601d546102cc90600160a81b900460ff1681565b34801561042d575f80fd5b5061026161043c366004612095565b6001600160a01b03165f9081526006602052604090205490565b348015610461575f80fd5b5061024a610a7c565b348015610475575f80fd5b5061026160055481565b34801561048a575f80fd5b5061026160045481565b34801561049f575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161026b565b3480156104cf575f80fd5b5061024a610aed565b3480156104e3575f80fd5b505f546001600160a01b03166104ac565b3480156104ff575f80fd5b5060408051808201909152600d81526c283de299a1e186bae299a13d2960981b602082015261029f565b348015610534575f80fd5b50601d546104ac906001600160a01b031681565b348015610553575f80fd5b506102cc610562366004611f80565b610b26565b348015610572575f80fd5b505f546104ac906001600160a01b031681565b348015610590575f80fd5b5061024a610b32565b3480156105a4575f80fd5b5061024a610b6c565b3480156105b8575f80fd5b5061024a6105c7366004612011565b610baa565b3480156105d7575f80fd5b50601f546102cc90610100900460ff1681565b3480156105f5575f80fd5b506102616106043660046120b0565b6001600160a01b039182165f90815260076020908152604080832093909416825291909152205490565b348015610639575f80fd5b506102cc6106483660046120e7565b610c36565b348015610658575f80fd5b5061024a6106673660046120e7565b610c49565b348015610677575f80fd5b506102cc610686366004611f80565b610eb2565b348015610696575f80fd5b5061024a6106a5366004612107565b611042565b3480156106b5575f80fd5b5061024a6106c4366004612095565b61110f565b3480156106d4575f80fd5b50601b546104ac906001600160a01b031681565b3480156106f3575f80fd5b5061024a610702366004612153565b6111f6565b5f546001600160a01b031633146107395760405162461bcd60e51b81526004016107309061216f565b60405180910390fd5b6003546004819055600555565b335f8181526007602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906107a09086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146107db5760405162461bcd60e51b81526004016107309061216f565b601191909155601291909155601355565b6001600160a01b0383165f9081526007602090815260408083203384529091528120545f1914610895576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152600782528381203382529091529190912054610871918490611288565b6001600160a01b0385165f9081526007602090815260408083203384529091529020555b6108a08484846112c0565b90505b9392505050565b5f6107ac6108b6610a00565b601d546001600160a01b03165f908152600660205260409020546108e9906108e2906002905b90611617565b8590611617565b90611695565b5f546001600160a01b031633146109185760405162461bcd60e51b81526004016107309061216f565b6103e860118190556012555f601355565b5f546001600160a01b031633146109525760405162461bcd60e51b81526004016107309061216f565b601480546001600160a01b038781166001600160a01b031992831617909255601580548784169083168117909155601680548785169084168117909155601880548786169085168117909155601780549587169590941685179093556040805192835260208301949094529281019190915260608101919091527f06cd79b5e338fdebb51e28f829f3333e4fda9663d4732f262d97dbbacf748b159060800160405180910390a15050505050565b60066020527f54cdd369e4e8a8515e52ca72ec816c2101831ad1f18bf44102ed171459c9b4f85461dead5f9081527f1aecba4ebe7a4e0673e4891b2b092b2228e4322380b579fb494fad3da8586e22546003549192610a6b929091610a6591906116d6565b906116d6565b905090565b5f6107ac825f19610746565b5f546001600160a01b03163314610aa55760405162461bcd60e51b81526004016107309061216f565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b6014546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015610b23573d5f803e3d5ffd5b50565b5f6108a33384846112c0565b5f546001600160a01b03163314610b5b5760405162461bcd60e51b81526004016107309061216f565b6103e860115560646012555f601355565b5f546001600160a01b03163314610b955760405162461bcd60e51b81526004016107309061216f565b601d805460ff60a01b1916600160a01b179055565b5f546001600160a01b03163314610bd35760405162461bcd60e51b81526004016107309061216f565b6001811015610be0575f80fd5b6103e881600354610bf191906121b8565b610bfb91906121cf565b60058190556040519081527f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be519060200160405180910390a150565b5f82610c41836108aa565b119392505050565b5f546001600160a01b03163314610c725760405162461bcd60e51b81526004016107309061216f565b601f54610100900460ff1615610cca5760405162461bcd60e51b815260206004820152601860248201527f4c697175696469747920616c72656164792061646465642e00000000000000006044820152606401610730565b601d546001600160a01b0316610dec57601b5f9054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d4e91906121ee565b6002546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af1158015610d9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc091906121ee565b601d80546001600160a01b03929092166001600160a01b03199283168117909155601c80549092161790555b305f818152600760209081526040808320601b80546001600160a01b039081168652919093529083208690559054169163f305d71991849190869080610e395f546001600160a01b031690565b426040518863ffffffff1660e01b8152600401610e5b96959493929190612209565b60606040518083038185885af1158015610e77573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e9c9190612244565b5050601f805461ff001916610100179055505050565b5f306001600160a01b03841603610f1c5760405162461bcd60e51b815260206004820152602860248201527f746f6b656e416464726573732063616e206e6f7420626520746865206e6174696044820152673b32903a37b5b2b760c11b6064820152608401610730565b815f03610f8c576040516370a0823160e01b81523060048201526001600160a01b038416906370a0823190602401602060405180830381865afa158015610f65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f89919061226f565b91505b604080516001600160a01b0385168152602081018490527fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f910160405180910390a160145460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529084169063a9059cbb906044016020604051808303815f875af115801561101e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108a39190612286565b5f546001600160a01b0316331461106b5760405162461bcd60e51b81526004016107309061216f565b600a869055600d859055600b849055600c839055600e82905561109c82611096858188818c8c611717565b90611717565b600f5560108190556110af6001826121cf565b600f54106110ff5760405162461bcd60e51b815260206004820152601e60248201527f466565732063616e206e6f74206265206d6f7265207468616e203130302500006044820152606401610730565b611107611775565b505050505050565b5f546001600160a01b031633146111385760405162461bcd60e51b81526004016107309061216f565b6001600160a01b03811661119d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610730565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b5f546001600160a01b0316331461121f5760405162461bcd60e51b81526004016107309061216f565b601d805460ff60a81b1916600160a81b84151581029190911791829055601e8390556040805184815260ff9290930491909116151560208301527f519582fd959400ab5e398f78c2768dea99251e8e26aed5578213b059ce4cee60910160405180910390a15050565b5f81848411156112ab5760405162461bcd60e51b81526004016107309190611f21565b505f6112b784866122a1565b95945050505050565b601f545f9060ff16156112df576112d8848484611810565b90506108a3565b6001600160a01b0384165f9081526001602052604090205460ff1615801561131f57506001600160a01b0383165f9081526001602052604090205460ff16155b1561137457601d54600160a01b900460ff166113745760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610730565b6001600160a01b0384165f9081526001602052604090205460ff161580156113a557506001600160a01b0383163014155b80156113bc57506001600160a01b03831661dead14155b80156113d65750601d546001600160a01b03848116911614155b80156113f057506018546001600160a01b03848116911614155b801561140a57506015546001600160a01b03848116911614155b801561142e57506001600160a01b0383165f9081526009602052604090205460ff16155b156114ce576001600160a01b0383165f9081526006602052604090205460055461145884836122b4565b11156114cc5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610730565b505b6114d884836118e0565b6114e061194c565b156114ed576114ed6119a0565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f9081526006909152919091205461153e918490611288565b6001600160a01b0385165f90815260066020908152604080832093909355600890529081205460ff168061158957506001600160a01b0384165f9081526008602052604090205460ff165b61159d57611598858486611d76565b61159f565b825b6001600160a01b0385165f908152600660205260409020549091506115c49082611717565b6001600160a01b038086165f8181526006602052604090819020939093559151908716905f8051602061234b833981519152906116049085815260200190565b60405180910390a3506001949350505050565b5f825f0361162657505f6107ac565b5f61163183856121b8565b90508261163e85836121cf565b146108a35760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610730565b5f6108a383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ef5565b5f6108a383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611288565b5f8061172383856122b4565b9050838110156108a35760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610730565b7f8cc651ceed4360bdb07d4dfc17daa4a6fa17092a313d2464a582a73e9b9328006117b260646108e9601254600f5461161790919063ffffffff16565b6117ce60646108e9601154600f5461161790919063ffffffff16565b6117ea60646108e9601354600f5461161790919063ffffffff16565b6040805160ff9485168152928416602084015292168183015290519081900360600190a1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f908152600690915291822054611860918490611288565b6001600160a01b038086165f90815260066020526040808220939093559085168152205461188e9083611717565b6001600160a01b038085165f8181526006602052604090819020939093559151908616905f8051602061234b833981519152906118ce9086815260200190565b60405180910390a35060019392505050565b6004548111158061190857506001600160a01b0382165f9081526009602052604090205460ff165b6119485760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610730565b5050565b601d545f906001600160a01b0316331480159061196c5750601f5460ff16155b80156119815750601d54600160a81b900460ff165b8015610a6b575050601e54305f90815260066020526040902054101590565b601f805460ff19166001179055601954601a545f916119be91610c36565b6119ca57600a546119cc565b5f5b90505f6119ef60026108e9600f546108e986601e5461161790919063ffffffff16565b90505f611a0782601e546116d690919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611a3f57611a3f6122c7565b6001600160a01b039283166020918202929092010152600254825191169082906001908110611a7057611a706122c7565b6001600160a01b039283166020918202929092010152601b5460405163791ac94760e01b81524792919091169063791ac94790611ab99086905f908790309042906004016122db565b5f604051808303815f87803b158015611ad0575f80fd5b505af1158015611ae2573d5f803e3d5ffd5b505050505f611afa82476116d690919063ffffffff16565b90505f611b14611b0b886002611695565b600f54906116d6565b90505f611b2860026108e98481878d611617565b90505f611b44836108e9600b548761161790919063ffffffff16565b90505f611b60846108e9600d548861161790919063ffffffff16565b90505f611b7c856108e9600c548961161790919063ffffffff16565b6015546040519192505f916001600160a01b039091169085908381818185875af1925050503d805f8114611bcb576040519150601f19603f3d011682016040523d82523d5f602084013e611bd0565b606091505b50506016546040519192506001600160a01b03169083905f81818185875af1925050503d805f8114611c1d576040519150601f19603f3d011682016040523d82523d5f602084013e611c22565b606091505b50506017546040519192506001600160a01b03169084905f81818185875af1925050503d805f8114611c6f576040519150601f19603f3d011682016040523d82523d5f602084013e611c74565b606091505b505f9250508b159050611d5e57601b5f9054906101000a90046001600160a01b03166001600160a01b031663f305d71986308e5f8060145f9054906101000a90046001600160a01b0316426040518863ffffffff1660e01b8152600401611ce096959493929190612209565b60606040518083038185885af1158015611cfc573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611d219190612244565b505060408051878152602081018e90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601f805460ff1916905550505050505050505050565b601354601d545f91906001600160a01b0390811690841603611d9b5750601154611db6565b601d546001600160a01b0390811690861603611db657506012545b5f611de26010546064611dc991906121b8565b6108e9846108dc600f548a61161790919063ffffffff16565b90505f611e00600f546108e9600e548561161790919063ffffffff16565b90505f611e0d83836116d6565b305f90815260066020526040902054909150611e299082611717565b305f90815260066020526040808220929092556018546001600160a01b031681522054611e569083611717565b6018546001600160a01b039081165f9081526006602090815260409182902093909355518381523092918b16915f8051602061234b833981519152910160405180910390a38115611edf57600354611eae90836116d6565b6003556040518281525f906001600160a01b038a16905f8051602061234b8339815191529060200160405180910390a35b611ee987846116d6565b98975050505050505050565b5f8183611f155760405162461bcd60e51b81526004016107309190611f21565b505f6112b784866121cf565b5f6020808352835180828501525f5b81811015611f4c57858101830151858201604001528201611f30565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610b23575f80fd5b5f8060408385031215611f91575f80fd5b8235611f9c81611f6c565b946020939093013593505050565b5f805f60608486031215611fbc575f80fd5b505081359360208301359350604090920135919050565b5f805f60608486031215611fe5575f80fd5b8335611ff081611f6c565b9250602084013561200081611f6c565b929592945050506040919091013590565b5f60208284031215612021575f80fd5b5035919050565b5f805f805f60a0868803121561203c575f80fd5b853561204781611f6c565b9450602086013561205781611f6c565b9350604086013561206781611f6c565b9250606086013561207781611f6c565b9150608086013561208781611f6c565b809150509295509295909350565b5f602082840312156120a5575f80fd5b81356108a381611f6c565b5f80604083850312156120c1575f80fd5b82356120cc81611f6c565b915060208301356120dc81611f6c565b809150509250929050565b5f80604083850312156120f8575f80fd5b50508035926020909101359150565b5f805f805f8060c0878903121561211c575f80fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b8015158114610b23575f80fd5b5f8060408385031215612164575f80fd5b8235611f9c81612146565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176107ac576107ac6121a4565b5f826121e957634e487b7160e01b5f52601260045260245ffd5b500490565b5f602082840312156121fe575f80fd5b81516108a381611f6c565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b5f805f60608486031215612256575f80fd5b8351925060208401519150604084015190509250925092565b5f6020828403121561227f575f80fd5b5051919050565b5f60208284031215612296575f80fd5b81516108a381612146565b818103818111156107ac576107ac6121a4565b808201808211156107ac576107ac6121a4565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156123295784516001600160a01b031683529383019391830191600101612304565b50506001600160a01b0396909616606085015250505060800152939250505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220e4d2938fb5beb2029455a4c9729fd9aeaaf93ae6e5e2e01a7eb14ae6331e4fa864736f6c63430008140033

Deployed Bytecode Sourcemap

5076:14592:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11231:135;;;;;;;;;;;;;:::i;:::-;;7409:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;7409:54:0;;;;;;;;8833:80;;;;;;;;;;-1:-1:-1;8905:5:0;;;;;;;;;;;;-1:-1:-1;;;8905:5:0;;;;8833:80;;;;;;;:::i;7326:31::-;;;;;;;;;;-1:-1:-1;7326:31:0;;;;-1:-1:-1;;;7326:31:0;;;;;;;;;914:14:1;;907:22;889:41;;877:2;862:18;7326:31:0;749:187:1;10073:216:0;;;;;;;;;;-1:-1:-1;10073:216:0;;;;;:::i;:::-;;:::i;15048:258::-;;;;;;;;;;-1:-1:-1;15048:258:0;;;;;:::i;:::-;;:::i;8563:88::-;;;;;;;;;;-1:-1:-1;8636:12:0;;8563:88;;6697:92;;;;;;;;;;;;;;;;10591:370;;;;;;;;;;-1:-1:-1;10591:370:0;;;;;:::i;:::-;;:::i;19368:149::-;;;;;;;;;;-1:-1:-1;19368:149:0;;;;;:::i;:::-;;:::i;8657:80::-;;;;;;;;;;-1:-1:-1;8657:80:0;;5448:1;2506:36:1;;2494:2;2479:18;8657:80:0;2364:184:1;15583:131:0;;;;;;;;;;;;;:::i;18456:545::-;;;;;;;;;;-1:-1:-1;18456:545:0;;;;;:::i;:::-;;:::i;19529:132::-;;;;;;;;;;;;;:::i;10297:122::-;;;;;;;;;;-1:-1:-1;10297:122:0;;;;;:::i;:::-;;:::i;7372:30::-;;;;;;;;;;-1:-1:-1;7372:30:0;;;;-1:-1:-1;;;7372:30:0;;;;;;9003:105;;;;;;;;;;-1:-1:-1;9003:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;9087:18:0;9069:7;9087:18;;;:9;:18;;;;;;;9003:105;1990:148;;;;;;;;;;;;;:::i;6202:61::-;;;;;;;;;;;;;;;;6137:58;;;;;;;;;;;;;;;;8919:78;;;;;;;;;;-1:-1:-1;8971:7:0;1841:6;-1:-1:-1;;;;;1841:6:0;8919:78;;;-1:-1:-1;;;;;3787:32:1;;;3769:51;;3757:2;3742:18;8919:78:0;3623:203:1;14470:130:0;;;;;;;;;;;;;:::i;1776:79::-;;;;;;;;;;-1:-1:-1;1814:7:0;1841:6;-1:-1:-1;;;;;1841:6:0;1776:79;;8743:84;;;;;;;;;;-1:-1:-1;8817:7:0;;;;;;;;;;;;-1:-1:-1;;;8817:7:0;;;;8743:84;;7294:19;;;;;;;;;;-1:-1:-1;7294:19:0;;;;-1:-1:-1;;;;;7294:19:0;;;10427:156;;;;;;;;;;-1:-1:-1;10427:156:0;;;;;:::i;:::-;;:::i;1396:21::-;;;;;;;;;;-1:-1:-1;1396:21:0;;;;-1:-1:-1;;;;;1396:21:0;;;15446:129;;;;;;;;;;;;;:::i;15321:117::-;;;;;;;;;;;;;:::i;10973:248::-;;;;;;;;;;-1:-1:-1;10973:248:0;;;;;:::i;:::-;;:::i;9255:34::-;;;;;;;;;;-1:-1:-1;9255:34:0;;;;;;;;;;;9114:133;;;;;;;;;;-1:-1:-1;9114:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9216:19:0;;;9198:7;9216:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9114:133;19225:135;;;;;;;;;;-1:-1:-1;19225:135:0;;;;;:::i;:::-;;:::i;9298:769::-;;;;;;;;;;-1:-1:-1;9298:769:0;;;;;:::i;:::-;;:::i;14607:433::-;;;;;;;;;;-1:-1:-1;14607:433:0;;;;;:::i;:::-;;:::i;17856:587::-;;;;;;;;;;-1:-1:-1;17856:587:0;;;;;:::i;:::-;;:::i;2146:244::-;;;;;;;;;;-1:-1:-1;2146:244:0;;;;;:::i;:::-;;:::i;7224:24::-;;;;;;;;;;-1:-1:-1;7224:24:0;;;;-1:-1:-1;;;;;7224:24:0;;;19009:208;;;;;;;;;;-1:-1:-1;19009:208:0;;;;;:::i;:::-;;:::i;11231:135::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;;;;;;;;;11301:12:::1;::::0;11286::::1;:27:::0;;;11328:15:::1;:30:::0;11231:135::o;10073:216::-;10177:10;10148:4;10165:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;10165:32:0;;;;;;;;;;:41;;;10222:37;10148:4;;10165:32;;10222:37;;;;10200:6;160:25:1;;148:2;133:18;;14:177;10222:37:0;;;;;;;;-1:-1:-1;10277:4:0;10073:216;;;;;:::o;15048:258::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;15173:11:::1;:28:::0;;;;15212:10:::1;:26:::0;;;;15249:15:::1;:33:::0;15048:258::o;10591:370::-;-1:-1:-1;;;;;10711:19:0;;10691:4;10711:19;;;:11;:19;;;;;;;;10731:10;10711:31;;;;;;;;-1:-1:-1;;10711:52:0;10708:186;;10813:69;;;;;;;;;;;-1:-1:-1;;;10813:69:0;;;;;;;;-1:-1:-1;;;;;10813:19:0;;-1:-1:-1;10813:19:0;;;:11;:19;;;;;10833:10;10813:31;;;;;;;;;;:69;;10849:6;;10813:35;:69::i;:::-;-1:-1:-1;;;;;10779:19:0;;;;;;:11;:19;;;;;;;;10799:10;10779:31;;;;;;;:103;10708:186;10913:40;10927:6;10935:9;10946:6;10913:13;:40::i;:::-;10906:47;;10591:370;;;;;;:::o;19368:149::-;19428:7;19455:54;19496:12;:10;:12::i;:::-;19478:4;;-1:-1:-1;;;;;19478:4:0;9069:7;9087:18;;;:9;:18;;;;;;19455:36;;19468:22;;19488:1;;19468:15;:19;;:22::i;:::-;19455:8;;:12;:36::i;:::-;:40;;:54::i;15583:131::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;15649:4:::1;15635:11;:18:::0;;;15661:10:::1;:17:::0;-1:-1:-1;15686:15:0::1;:19:::0;15583:131::o;18456:545::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;18650:21:::1;:46:::0;;-1:-1:-1;;;;;18650:46:0;;::::1;-1:-1:-1::0;;;;;;18650:46:0;;::::1;;::::0;;;18707:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18762:14:::1;:32:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18805:15:::1;:34:::0;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;;18850:17:::1;:38:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;;18906:87:::1;::::0;;6298:34:1;;;6363:2;6348:18;;6341:43;;;;6400:18;;;6393:43;;;;6467:2;6452:18;;6445:43;;;;18906:87:0::1;::::0;6247:3:1;6232:19;18906:87:0::1;;;;;;;18456:545:::0;;;;;:::o;19529:132::-;9087:9;:18;;;;5196:42;19572:7;9087:18;;;;;19599:12;;19572:7;;19599:54;;9087:18;;19599:33;;:12;:16;:33::i;:::-;:37;;:54::i;:::-;19592:61;;19529:132;:::o;10297:122::-;10352:4;10376:35;10384:7;-1:-1:-1;;10376:7:0;:35::i;1990:148::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;2097:1:::1;2081:6:::0;;2060:40:::1;::::0;-1:-1:-1;;;;;2081:6:0;;::::1;::::0;2060:40:::1;::::0;2097:1;;2060:40:::1;2128:1;2111:19:::0;;-1:-1:-1;;;;;;2111:19:0::1;::::0;;1990:148::o;14470:130::-;14524:21;;14516:62;;-1:-1:-1;;;;;14524:21:0;;;;14556;14516:62;;;;;14524:21;14516:62;14524:21;14516:62;14556:21;14524;14516:62;;;;;;;;;;;;;;;;;;;;;14470:130::o;10427:156::-;10507:4;10531:44;10545:10;10557:9;10568:6;10531:13;:44::i;15446:129::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;15511:4:::1;15497:11;:18:::0;15536:3:::1;15523:10;:16:::0;-1:-1:-1;15547:15:0::1;:19:::0;15446:129::o;15321:117::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;15372:11:::1;:18:::0;;-1:-1:-1;;;;15372:18:0::1;-1:-1:-1::0;;;15372:18:0::1;::::0;;15321:117::o;10973:248::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;11078:1:::1;11060:14;:19;;11052:28;;;::::0;::::1;;11145:4;11126:14;11111:12;;:29;;;;:::i;:::-;11110:39;;;;:::i;:::-;11092:15;:57:::0;;;11165:30:::1;::::0;160:25:1;;;11165:30:0::1;::::0;148:2:1;133:18;11165:30:0::1;;;;;;;10973:248:::0;:::o;19225:135::-;19299:4;19347:5;19323:21;19335:8;19323:11;:21::i;:::-;:29;;19225:135;-1:-1:-1;;;19225:135:0:o;9298:769::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;9406:14:::1;::::0;::::1;::::0;::::1;;;9405:15;9397:52;;;::::0;-1:-1:-1;;;9397:52:0;;7228:2:1;9397:52:0::1;::::0;::::1;7210:21:1::0;7267:2;7247:18;;;7240:30;7306:26;7286:18;;;7279:54;7350:18;;9397:52:0::1;7026:348:1::0;9397:52:0::1;9514:4;::::0;-1:-1:-1;;;;;9514:4:0::1;9511:164;;9567:6;;;;;;;;;-1:-1:-1::0;;;;;9567:6:0::1;-1:-1:-1::0;;;;;9567:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9596:4;::::0;9555:61:::1;::::0;-1:-1:-1;;;9555:61:0;;-1:-1:-1;;;;;9596:4:0;;::::1;9555:61;::::0;::::1;7847:34:1::0;9610:4:0::1;7897:18:1::0;;;7890:43;9555:40:0;::::1;::::0;::::1;::::0;7782:18:1;;9555:61:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9548:4;:68:::0;;-1:-1:-1;;;;;9548:68:0;;;::::1;-1:-1:-1::0;;;;;;9548:68:0;;::::1;::::0;::::1;::::0;;;9631:12:::1;:32:::0;;;;::::1;;::::0;;9511:164:::1;9759:4;9739:26;::::0;;;:11:::1;:26;::::0;;;;;;;9774:6:::1;::::0;;-1:-1:-1;;;;;9774:6:0;;::::1;9739:43:::0;;;;;;;;;:57;;;9836:6;;::::1;::::0;:22:::1;::::0;9866:9;;9759:4;9785:11;;9739:26;9977:7:::1;1814::::0;1841:6;-1:-1:-1;;;;;1841:6:0;;1776:79;9977:7:::1;9999:15;9836:189;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;10038:14:0::1;:21:::0;;-1:-1:-1;;10038:21:0::1;;;::::0;;-1:-1:-1;;;9298:769:0:o;14607:433::-;14690:12;14747:4;-1:-1:-1;;;;;14723:29:0;;;14715:82;;;;-1:-1:-1;;;14715:82:0;;9069:2:1;14715:82:0;;;9051:21:1;9108:2;9088:18;;;9081:30;9147:34;9127:18;;;9120:62;-1:-1:-1;;;9198:18:1;;;9191:38;9246:19;;14715:82:0;8867:404:1;14715:82:0;14816:6;14826:1;14816:11;14813:95;;14852:44;;-1:-1:-1;;;14852:44:0;;14890:4;14852:44;;;3769:51:1;-1:-1:-1;;;;;14852:29:0;;;;;3742:18:1;;14852:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14843:53;;14813:95;14923:32;;;-1:-1:-1;;;;;9657:32:1;;9639:51;;9721:2;9706:18;;9699:34;;;14923:32:0;;9612:18:1;14923:32:0;;;;;;;15002:21;;14973:59;;-1:-1:-1;;;14973:59:0;;-1:-1:-1;;;;;15002:21:0;;;14973:59;;;9639:51:1;9706:18;;;9699:34;;;14973:28:0;;;;;;9612:18:1;;14973:59:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17856:587::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;18034:12:::1;:28:::0;;;18073:9:::1;:22:::0;;;18106:12:::1;:28:::0;;;18145:6:::1;:16:::0;;;18172:7:::1;:18:::0;;;18212:75:::1;18182:8:::0;18212:61:::1;18154:7:::0;18212:61;18121:13;18212:61;18049:13;18085:10;18212:17:::1;:29::i;:::-;:33:::0;::::1;:48::i;:75::-;18201:8;:86:::0;18298:14:::1;:32:::0;;;18360:18:::1;18377:1;18315:15:::0;18360:18:::1;:::i;:::-;18349:8;;:29;18341:72;;;::::0;-1:-1:-1;;;18341:72:0;;10196:2:1;18341:72:0::1;::::0;::::1;10178:21:1::0;10235:2;10215:18;;;10208:30;10274:32;10254:18;;;10247:60;10324:18;;18341:72:0::1;9994:354:1::0;18341:72:0::1;18425:10;:8;:10::i;:::-;17856:587:::0;;;;;;:::o;2146:244::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2235:22:0;::::1;2227:73;;;::::0;-1:-1:-1;;;2227:73:0;;10555:2:1;2227:73:0::1;::::0;::::1;10537:21:1::0;10594:2;10574:18;;;10567:30;10633:34;10613:18;;;10606:62;-1:-1:-1;;;10684:18:1;;;10677:36;10730:19;;2227:73:0::1;10353:402:1::0;2227:73:0::1;2337:6;::::0;;2316:38:::1;::::0;-1:-1:-1;;;;;2316:38:0;;::::1;::::0;2337:6;::::1;::::0;2316:38:::1;::::0;::::1;2365:6;:17:::0;;-1:-1:-1;;;;;;2365:17:0::1;-1:-1:-1::0;;;;;2365:17:0;;;::::1;::::0;;;::::1;::::0;;2146:244::o;19009:208::-;1903:6;;-1:-1:-1;;;;;1903:6:0;1213:10;1903:22;1895:67;;;;-1:-1:-1;;;1895:67:0;;;;;;;:::i;:::-;19098:11:::1;:22:::0;;-1:-1:-1;;;;19098:22:0::1;-1:-1:-1::0;;;19098:22:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;19131:13:::1;:23:::0;;;19169:40:::1;::::0;;10928:25:1;;;19098:22:0::1;19197:11:::0;;;::::1;::::0;;;::::1;10996:14:1::0;10989:22;10984:2;10969:18;;10962:50;19169:40:0::1;::::0;10901:18:1;19169:40:0::1;;;;;;;19009:208:::0;;:::o;4288:192::-;4374:7;4410:12;4402:6;;;;4394:29;;;;-1:-1:-1;;;4394:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4434:9:0;4446:5;4450:1;4446;:5;:::i;:::-;4434:17;4288:192;-1:-1:-1;;;;;4288:192:0:o;11382:1238::-;11494:6;;11474:4;;11494:6;;11491:63;;;11510:41;11525:6;11533:9;11544:6;11510:14;:41::i;:::-;11503:48;;;;11491:63;-1:-1:-1;;;;;11570:22:0;;;;;;:14;:22;;;;;;;;11569:23;:53;;;;-1:-1:-1;;;;;;11597:25:0;;;;;;:14;:25;;;;;;;;11596:26;11569:53;11566:139;;;11646:11;;-1:-1:-1;;;11646:11:0;;;;11638:43;;;;-1:-1:-1;;;11638:43:0;;11358:2:1;11638:43:0;;;11340:21:1;11397:2;11377:18;;;11370:30;-1:-1:-1;;;11416:18:1;;;11409:50;11476:18;;11638:43:0;11156:344:1;11638:43:0;-1:-1:-1;;;;;11747:22:0;;;;;;:14;:22;;;;;;;;11746:23;:53;;;;-1:-1:-1;;;;;;11773:26:0;;11794:4;11773:26;;11746:53;:84;;;;-1:-1:-1;;;;;;11804:26:0;;5196:42;11804:26;;11746:84;:105;;;;-1:-1:-1;11847:4:0;;-1:-1:-1;;;;;11834:17:0;;;11847:4;;11834:17;;11746:105;:137;;;;-1:-1:-1;11868:15:0;;-1:-1:-1;;;;;11855:28:0;;;11868:15;;11855:28;;11746:137;:174;;;;-1:-1:-1;11900:20:0;;-1:-1:-1;;;;;11887:33:0;;;11900:20;;11887:33;;11746:174;:207;;;;-1:-1:-1;;;;;;11925:28:0;;;;;;:17;:28;;;;;;;;11924:29;11746:207;11742:399;;;-1:-1:-1;;;;;9087:18:0;;11969;9087;;;:9;:18;;;;;;12058:15;;12034:19;12047:6;9087:18;12034:19;:::i;:::-;12033:40;;12025:114;;;;-1:-1:-1;;;12025:114:0;;11837:2:1;12025:114:0;;;11819:21:1;11876:2;11856:18;;;11849:30;11915:34;11895:18;;;11888:62;11986:32;11966:18;;;11959:60;12036:19;;12025:114:0;11635:426:1;12025:114:0;11954:187;11742:399;12153:28;12166:6;12174;12153:12;:28::i;:::-;12199:16;:14;:16::i;:::-;12196:35;;;12218:10;:8;:10::i;:::-;12261:53;;;;;;;;;;;-1:-1:-1;;;12261:53:0;;;;;;;;-1:-1:-1;;;;;12261:17:0;;-1:-1:-1;12261:17:0;;;:9;:17;;;;;;;;:53;;12283:6;;12261:21;:53::i;:::-;-1:-1:-1;;;;;12241:17:0;;;;;;:9;:17;;;;;;;;:73;;;;12353:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;12381:27:0;;;;;;:16;:27;;;;;;;;12353:55;12352:103;;12421:34;12429:6;12437;12445:9;12421:7;:34::i;:::-;12352:103;;;12412:6;12352:103;-1:-1:-1;;;;;12489:20:0;;;;;;:9;:20;;;;;;12327:128;;-1:-1:-1;12489:40:0;;12327:128;12489:24;:40::i;:::-;-1:-1:-1;;;;;12466:20:0;;;;;;;:9;:20;;;;;;;:63;;;;12547:43;;;;;;-1:-1:-1;;;;;;;;;;;12547:43:0;;;12575:14;160:25:1;;148:2;133:18;;14:177;12547:43:0;;;;;;;;-1:-1:-1;12608:4:0;;11382:1238;-1:-1:-1;;;;11382:1238:0:o;4486:250::-;4544:7;4568:1;4573;4568:6;4564:47;;-1:-1:-1;4598:1:0;4591:8;;4564:47;4623:9;4635:5;4639:1;4635;:5;:::i;:::-;4623:17;-1:-1:-1;4668:1:0;4659:5;4663:1;4623:17;4659:5;:::i;:::-;:10;4651:56;;;;-1:-1:-1;;;4651:56:0;;12268:2:1;4651:56:0;;;12250:21:1;12307:2;12287:18;;;12280:30;12346:34;12326:18;;;12319:62;-1:-1:-1;;;12397:18:1;;;12390:31;12438:19;;4651:56:0;12066:397:1;4742:132:0;4800:7;4827:39;4831:1;4834;4827:39;;;;;;;;;;;;;;;;;:3;:39::i;4146:136::-;4204:7;4231:43;4235:1;4238;4231:43;;;;;;;;;;;;;;;;;:3;:43::i;3959:181::-;4017:7;;4049:5;4053:1;4049;:5;:::i;:::-;4037:17;;4078:1;4073;:6;;4065:46;;;;-1:-1:-1;;;4065:46:0;;12670:2:1;4065:46:0;;;12652:21:1;12709:2;12689:18;;;12682:30;12748:29;12728:18;;;12721:57;12795:18;;4065:46:0;12468:351:1;17603:241:0;17656:180;17671:33;17700:3;17671:24;17684:10;;17671:8;;:12;;:24;;;;:::i;:33::-;17726:34;17756:3;17726:25;17739:11;;17726:8;;:12;;:25;;;;:::i;:34::-;17782:38;17816:3;17782:29;17795:15;;17782:8;;:12;;:29;;;;:::i;:38::-;17656:180;;;13044:4:1;13032:17;;;13014:36;;13086:17;;;13081:2;13066:18;;13059:45;13140:17;;13120:18;;;13113:45;17656:180:0;;;;;;13002:2:1;17656:180:0;;;17603:241::o;12629:330::-;12759:53;;;;;;;;;;;-1:-1:-1;;;12759:53:0;;;;;;;;-1:-1:-1;;;;;12759:17:0;;12722:4;12759:17;;;:9;:17;;;;;;;:53;;12781:6;;12759:21;:53::i;:::-;-1:-1:-1;;;;;12739:17:0;;;;;;;:9;:17;;;;;;:73;;;;12846:20;;;;;;;:32;;12871:6;12846:24;:32::i;:::-;-1:-1:-1;;;;;12823:20:0;;;;;;;:9;:20;;;;;;;:55;;;;12894:35;;;;;;-1:-1:-1;;;;;;;;;;;12894:35:0;;;12922:6;160:25:1;;148:2;133:18;;14:177;12894:35:0;;;;;;;;-1:-1:-1;12947:4:0;12629:330;;;;;:::o;12967:168::-;13064:12;;13054:6;:22;;:51;;;-1:-1:-1;;;;;;13080:25:0;;;;;;:17;:25;;;;;;;;13054:51;13046:81;;;;-1:-1:-1;;;13046:81:0;;13371:2:1;13046:81:0;;;13353:21:1;13410:2;13390:18;;;13383:30;-1:-1:-1;;;13429:18:1;;;13422:47;13486:18;;13046:81:0;13169:341:1;13046:81:0;12967:168;;:::o;14260:197::-;14347:4;;14309;;-1:-1:-1;;;;;14347:4:0;14333:10;:18;;;;:38;;-1:-1:-1;14365:6:0;;;;14364:7;14333:38;:62;;;;-1:-1:-1;14384:11:0;;-1:-1:-1;;;14384:11:0;;;;14333:62;:116;;;;-1:-1:-1;;14436:13:0;;14426:4;14408:24;;;;:9;:24;;;;;;:41;;;14260:197::o;15739:1848::-;7511:6;:13;;-1:-1:-1;;7511:13:0;7520:4;7511:13;;;15829:8:::1;::::0;15839:19:::1;::::0;7511:6;;15818:41:::1;::::0;:10:::1;:41::i;:::-;:60;;15866:12;;15818:60;;;15862:1;15818:60;15788:90;;15889:23;15915:59;15972:1;15915:52;15958:8;;15915:38;15933:19;15915:13;;:17;;:38;;;;:::i;:59::-;15889:85;;15985:20;16008:34;16026:15;16008:13;;:17;;:34;;;;:::i;:::-;16079:16;::::0;;16093:1:::1;16079:16:::0;;;;;::::1;::::0;;15985:57;;-1:-1:-1;16055:21:0::1;::::0;16079:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;16079:16:0::1;16055:40;;16124:4;16106;16111:1;16106:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;16106:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;16150:4:::1;::::0;16140:7;;16150:4;::::1;::::0;16140;;16150;;16140:7;::::1;;;;;:::i;:::-;-1:-1:-1::0;;;;;16140:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;:14;16223:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;16223:188:0;;16189:21:::1;::::0;16223:6;;;::::1;::::0;:57:::1;::::0;:188:::1;::::0;16295:12;;16165:21:::1;::::0;16338:4;;16365::::1;::::0;16385:15:::1;::::0;16223:188:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16424:17;16444:40;16470:13;16444:21;:25;;:40;;;;:::i;:::-;16424:60:::0;-1:-1:-1;16497:19:0::1;16519:40;16532:26;:19:::0;16556:1:::1;16532:23;:26::i;:::-;16519:8;::::0;;:12:::1;:40::i;:::-;16497:62:::0;-1:-1:-1;16580:26:0::1;16609:58;16665:1;16609:51;16497:62:::0;16609:51;:9;16623:19;16609:13:::1;:34::i;:58::-;16580:87;;16678:26;16707:44;16739:11;16707:27;16721:12;;16707:9;:13;;:27;;;;:::i;:44::-;16678:73;;16762:23;16788:41;16817:11;16788:24;16802:9;;16788;:13;;:24;;;;:::i;:41::-;16762:67;;16840:20;16863:38;16889:11;16863:21;16877:6;;16863:9;:13;;:21;;;;:::i;:38::-;16943:20;::::0;16935:65:::1;::::0;16840:61;;-1:-1:-1;16915:15:0::1;::::0;-1:-1:-1;;;;;16943:20:0;;::::1;::::0;16977:18;;16915:15;16935:65;16915:15;16935:65;16977:18;16943:20;16935:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17035:14:0::1;::::0;17027:53:::1;::::0;16914:86;;-1:-1:-1;;;;;;17035:14:0::1;::::0;17063:12;;17027:53:::1;::::0;;;17063:12;17035:14;17027:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;17115:17:0::1;::::0;17107:59:::1;::::0;17011:69;;-1:-1:-1;;;;;;17115:17:0::1;::::0;17146:15;;17107:59:::1;::::0;;;17146:15;17115:17;17107:59:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;17200:5:0::1;::::0;-1:-1:-1;;17221:19:0;;;-1:-1:-1;17218:362:0::1;;17256:6;;;;;;;;;-1:-1:-1::0;;;;;17256:6:0::1;-1:-1:-1::0;;;;;17256:22:0::1;;17286:18;17332:4;17356:15;17390:1;17410::::0;17430:21:::1;;;;;;;;;-1:-1:-1::0;;;;;17430:21:0::1;17470:15;17256:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;17520:48:0::1;::::0;;15148:25:1;;;15204:2;15189:18;;15182:34;;;17520:48:0::1;::::0;-1:-1:-1;15121:18:1;17520:48:0::1;;;;;;;17218:362;-1:-1:-1::0;;7529:6:0;:14;;-1:-1:-1;;7529:14:0;;;-1:-1:-1;;;;;;;;;;15739:1848:0:o;13270:982::-;13404:15;;13446:4;;13356:7;;13404:15;-1:-1:-1;;;;;13446:4:0;;;13433:17;;;;13430:142;;-1:-1:-1;13477:11:0;;13430:142;;;13519:4;;-1:-1:-1;;;;;13519:4:0;;;13509:14;;;;13506:66;;-1:-1:-1;13550:10:0;;13506:66;13584:17;13604:59;13642:14;;13659:3;13642:20;;;;:::i;:::-;13604:33;13629:7;13604:20;13615:8;;13604:6;:10;;:20;;;;:::i;:59::-;13584:79;;13674:18;13695:36;13722:8;;13695:22;13709:7;;13695:9;:13;;:22;;;;:::i;:36::-;13674:57;-1:-1:-1;13742:22:0;13767:25;:9;13674:57;13767:13;:25::i;:::-;13848:4;13830:24;;;;:9;:24;;;;;;13742:50;;-1:-1:-1;13830:44:0;;13742:50;13830:28;:44::i;:::-;13821:4;13803:24;;;;:9;:24;;;;;;:71;;;;13924:15;;-1:-1:-1;;;;;13924:15:0;13914:26;;;;:42;;13945:10;13914:30;:42::i;:::-;13895:15;;-1:-1:-1;;;;;13895:15:0;;;13885:26;;;;:9;:26;;;;;;;;;:71;;;;13972:47;160:25:1;;;13997:4:0;;13972:47;;;;-1:-1:-1;;;;;;;;;;;13972:47:0;133:18:1;13972:47:0;;;;;;;14053:14;;14050:154;;14098:12;;:28;;14115:10;14098:16;:28::i;:::-;14083:12;:43;14146:34;;160:25:1;;;5269:42:0;;-1:-1:-1;;;;;14146:34:0;;;-1:-1:-1;;;;;;;;;;;14146:34:0;148:2:1;133:18;14146:34:0;;;;;;;14050:154;14223:21;:6;14234:9;14223:10;:21::i;:::-;14216:28;13270:982;-1:-1:-1;;;;;;;;13270:982:0:o;4880:189::-;4966:7;5001:12;4994:5;4986:28;;;;-1:-1:-1;;;4986:28:0;;;;;;;;:::i;:::-;-1:-1:-1;5025:9:0;5037:5;5041:1;5037;:5;:::i;196:548:1:-;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;941:131::-;-1:-1:-1;;;;;1016:31:1;;1006:42;;996:70;;1062:1;1059;1052:12;1077:315;1145:6;1153;1206:2;1194:9;1185:7;1181:23;1177:32;1174:52;;;1222:1;1219;1212:12;1174:52;1261:9;1248:23;1280:31;1305:5;1280:31;:::i;:::-;1330:5;1382:2;1367:18;;;;1354:32;;-1:-1:-1;;;1077:315:1:o;1397:316::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;-1:-1:-1;;1582:23:1;;;1652:2;1637:18;;1624:32;;-1:-1:-1;1703:2:1;1688:18;;;1675:32;;1397:316;-1:-1:-1;1397:316:1:o;1718:456::-;1795:6;1803;1811;1864:2;1852:9;1843:7;1839:23;1835:32;1832:52;;;1880:1;1877;1870:12;1832:52;1919:9;1906:23;1938:31;1963:5;1938:31;:::i;:::-;1988:5;-1:-1:-1;2045:2:1;2030:18;;2017:32;2058:33;2017:32;2058:33;:::i;:::-;1718:456;;2110:7;;-1:-1:-1;;;2164:2:1;2149:18;;;;2136:32;;1718:456::o;2179:180::-;2238:6;2291:2;2279:9;2270:7;2266:23;2262:32;2259:52;;;2307:1;2304;2297:12;2259:52;-1:-1:-1;2330:23:1;;2179:180;-1:-1:-1;2179:180:1:o;2553:813::-;2648:6;2656;2664;2672;2680;2733:3;2721:9;2712:7;2708:23;2704:33;2701:53;;;2750:1;2747;2740:12;2701:53;2789:9;2776:23;2808:31;2833:5;2808:31;:::i;:::-;2858:5;-1:-1:-1;2915:2:1;2900:18;;2887:32;2928:33;2887:32;2928:33;:::i;:::-;2980:7;-1:-1:-1;3039:2:1;3024:18;;3011:32;3052:33;3011:32;3052:33;:::i;:::-;3104:7;-1:-1:-1;3163:2:1;3148:18;;3135:32;3176:33;3135:32;3176:33;:::i;:::-;3228:7;-1:-1:-1;3287:3:1;3272:19;;3259:33;3301;3259;3301;:::i;:::-;3353:7;3343:17;;;2553:813;;;;;;;;:::o;3371:247::-;3430:6;3483:2;3471:9;3462:7;3458:23;3454:32;3451:52;;;3499:1;3496;3489:12;3451:52;3538:9;3525:23;3557:31;3582:5;3557:31;:::i;3831:388::-;3899:6;3907;3960:2;3948:9;3939:7;3935:23;3931:32;3928:52;;;3976:1;3973;3966:12;3928:52;4015:9;4002:23;4034:31;4059:5;4034:31;:::i;:::-;4084:5;-1:-1:-1;4141:2:1;4126:18;;4113:32;4154:33;4113:32;4154:33;:::i;:::-;4206:7;4196:17;;;3831:388;;;;;:::o;4224:248::-;4292:6;4300;4353:2;4341:9;4332:7;4328:23;4324:32;4321:52;;;4369:1;4366;4359:12;4321:52;-1:-1:-1;;4392:23:1;;;4462:2;4447:18;;;4434:32;;-1:-1:-1;4224:248:1:o;4477:523::-;4581:6;4589;4597;4605;4613;4621;4674:3;4662:9;4653:7;4649:23;4645:33;4642:53;;;4691:1;4688;4681:12;4642:53;-1:-1:-1;;4714:23:1;;;4784:2;4769:18;;4756:32;;-1:-1:-1;4835:2:1;4820:18;;4807:32;;4886:2;4871:18;;4858:32;;-1:-1:-1;4937:3:1;4922:19;;4909:33;;-1:-1:-1;4989:3:1;4974:19;4961:33;;-1:-1:-1;4477:523:1;-1:-1:-1;4477:523:1:o;5231:118::-;5317:5;5310:13;5303:21;5296:5;5293:32;5283:60;;5339:1;5336;5329:12;5354:309;5419:6;5427;5480:2;5468:9;5459:7;5455:23;5451:32;5448:52;;;5496:1;5493;5486:12;5448:52;5535:9;5522:23;5554:28;5576:5;5554:28;:::i;5668:356::-;5870:2;5852:21;;;5889:18;;;5882:30;5948:34;5943:2;5928:18;;5921:62;6015:2;6000:18;;5668:356::o;6499:127::-;6560:10;6555:3;6551:20;6548:1;6541:31;6591:4;6588:1;6581:15;6615:4;6612:1;6605:15;6631:168;6704:9;;;6735;;6752:15;;;6746:22;;6732:37;6722:71;;6773:18;;:::i;6804:217::-;6844:1;6870;6860:132;;6914:10;6909:3;6905:20;6902:1;6895:31;6949:4;6946:1;6939:15;6977:4;6974:1;6967:15;6860:132;-1:-1:-1;7006:9:1;;6804:217::o;7379:251::-;7449:6;7502:2;7490:9;7481:7;7477:23;7473:32;7470:52;;;7518:1;7515;7508:12;7470:52;7550:9;7544:16;7569:31;7594:5;7569:31;:::i;7944:607::-;-1:-1:-1;;;;;8303:15:1;;;8285:34;;8350:2;8335:18;;8328:34;;;;8393:2;8378:18;;8371:34;;;;8436:2;8421:18;;8414:34;;;;8485:15;;;8479:3;8464:19;;8457:44;8265:3;8517:19;;8510:35;;;;8234:3;8219:19;;7944:607::o;8556:306::-;8644:6;8652;8660;8713:2;8701:9;8692:7;8688:23;8684:32;8681:52;;;8729:1;8726;8719:12;8681:52;8758:9;8752:16;8742:26;;8808:2;8797:9;8793:18;8787:25;8777:35;;8852:2;8841:9;8837:18;8831:25;8821:35;;8556:306;;;;;:::o;9276:184::-;9346:6;9399:2;9387:9;9378:7;9374:23;9370:32;9367:52;;;9415:1;9412;9405:12;9367:52;-1:-1:-1;9438:16:1;;9276:184;-1:-1:-1;9276:184:1:o;9744:245::-;9811:6;9864:2;9852:9;9843:7;9839:23;9835:32;9832:52;;;9880:1;9877;9870:12;9832:52;9912:9;9906:16;9931:28;9953:5;9931:28;:::i;11023:128::-;11090:9;;;11111:11;;;11108:37;;;11125:18;;:::i;11505:125::-;11570:9;;;11591:10;;;11588:36;;;11604:18;;:::i;13647:127::-;13708:10;13703:3;13699:20;13696:1;13689:31;13739:4;13736:1;13729:15;13763:4;13760:1;13753:15;13779:980;14041:4;14089:3;14078:9;14074:19;14120:6;14109:9;14102:25;14146:2;14184:6;14179:2;14168:9;14164:18;14157:34;14227:3;14222:2;14211:9;14207:18;14200:31;14251:6;14286;14280:13;14317:6;14309;14302:22;14355:3;14344:9;14340:19;14333:26;;14394:2;14386:6;14382:15;14368:29;;14415:1;14425:195;14439:6;14436:1;14433:13;14425:195;;;14504:13;;-1:-1:-1;;;;;14500:39:1;14488:52;;14595:15;;;;14560:12;;;;14536:1;14454:9;14425:195;;;-1:-1:-1;;;;;;;14676:32:1;;;;14671:2;14656:18;;14649:60;-1:-1:-1;;;14740:3:1;14725:19;14718:35;14637:3;13779:980;-1:-1:-1;;;13779:980:1:o

Swarm Source

ipfs://e4d2938fb5beb2029455a4c9729fd9aeaaf93ae6e5e2e01a7eb14ae6331e4fa8
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.