ETH Price: $2,679.49 (-2.12%)
Gas: 0.96 Gwei

Token

Izanagi (IZANAGI)
 

Overview

Max Total Supply

1,000,000 IZANAGI

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 IZANAGI

Value
$0.00
0x5af04ae3e78f8c2f40ac462e584098321acc53dc
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:
IZANAGI

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-02
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.4;

abstract contract Context {

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

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

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);
}

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;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
  
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;  //hash address of empty contract

        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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 isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    function renouncedOwnership() 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 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;
}

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;
}

contract IZANAGI is Context, IERC20, Ownable {
    
    using SafeMath for uint256;
    using Address for address;
    
    string private _name = "Izanagi";
    string private _symbol = "IZANAGI";
    uint8 private _decimals = 9;

    address public marketingWallet = 0xE24e8092B49369E39208622e6Fe3eeF09A1DEBc9;
    address public developerWallet = 0xE24e8092B49369E39208622e6Fe3eeF09A1DEBc9;
    address public liquidityReciever;

    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;
    
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public isMarketPair;
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;
    mapping (address => bool) public blacklisted;

    //Tax setter in line 780

    uint256 _buyLiquidityFee;
    uint256 _buyMarketingFee;
    uint256 _buyDeveloperFee;
    
    uint256 _sellLiquidityFee;
    uint256 _sellMarketingFee;
    uint256 _sellDeveloperFee;

    uint256 public totalBuy;
    uint256 public totalSell;

    uint256 denominator = 1000;

    uint256 private _totalSupply = 1000_000 * 10**_decimals;   

    uint256 public minimumTokensBeforeSwap = 100 * 10**_decimals;

    uint256 public _maxTxAmount =  _totalSupply.mul(20).div(denominator);     //2%
    uint256 public _walletMax = _totalSupply.mul(20).div(denominator);    //2%

    bool public EnableTxLimit = true;
    bool public checkWalletLimit = true;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;

    uint256 public txCount;
    bool private SwitchOne;
    bool private SwitchTwo;
    bool private effectLimits;
    uint256 private _offset = 29;    //transaction count

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    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 () {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 

        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        liquidityReciever = msg.sender;

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[marketingWallet] = true;
        isExcludedFromFee[developerWallet] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        isWalletLimitExempt[address(this)] = true;
        
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[address(this)] = true;

        isMarketPair[address(uniswapPair)] = true;

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

    /*====================================
    |               Getters              |
    ====================================*/

    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));
    }

     //to recieve ETH from uniswapV2Router when swaping
    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 _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");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!blacklisted[sender] && !blacklisted[recipient],"Error: Blacklist Bots/Contracts not Allowed!!");
        
        if(!effectLimits) {
            if(txCount < _offset && !SwitchOne) {
                setStart();
                SwitchOne = true;
            }
            if(SwitchOne && !SwitchTwo && txCount > _offset) {
                setEnd();
                SwitchTwo = true;
            }
        }

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

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !isMarketPair[sender] && swapAndLiquifyEnabled) 
            {
                swapAndLiquify();
            }

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

            uint256 finalAmount = shouldTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

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

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

            emit Transfer(sender, recipient, finalAmount);
            return true;
        }
    }

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

    function swapAndLiquify() private lockTheSwap {

        uint256 contractBalance = balanceOf(address(this));

        if(contractBalance == 0) return;

        uint256 totalShares = totalBuy.add(totalSell);
        uint256 _liquidityShare = _buyLiquidityFee.add(_sellLiquidityFee);
        uint256 _MarketingShare = _buyMarketingFee.add(_sellMarketingFee);

        uint256 tokensForLP = contractBalance.mul(_liquidityShare).div(totalShares).div(2);
        uint256 tokensForSwap = contractBalance.sub(tokensForLP);

        uint256 initialBalance = address(this).balance;
        swapTokensForEth(tokensForSwap);
        uint256 amountReceived = address(this).balance.sub(initialBalance);

        uint256 totalBNBFee = totalShares.sub(_liquidityShare.div(2));
        
        uint256 amountBNBLiquidity = amountReceived.mul(_liquidityShare).div(totalBNBFee).div(2);
        uint256 amountBNBMarketing = amountReceived.mul(_MarketingShare).div(totalBNBFee);
        uint256 amountBNBDeveloper = amountReceived.sub(amountBNBLiquidity).sub(amountBNBMarketing);

        if(amountBNBMarketing > 0)
            transferToAddressETH(marketingWallet, amountBNBMarketing);

        if(amountBNBDeveloper > 0)
            transferToAddressETH(developerWallet, amountBNBDeveloper);

        if(amountBNBLiquidity > 0 && tokensForLP > 0)
            addLiquidity(tokensForLP, amountBNBLiquidity);
    }

    function transferToAddressETH(address recipient, uint256 amount) private {
        payable(recipient).transfer(amount);
    }
    
    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 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 shouldTakeFee(address sender, address recipient) internal returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isMarketPair[sender] || isMarketPair[recipient]) {
            txCount = txCount + 1;
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isMarketPair[sender]) {
            
                feeAmount = amount.mul(totalBuy).div(denominator);
            }
            else if(isMarketPair[recipient]) {

                feeAmount = amount.mul(totalSell).div(denominator);
                
            }     

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    /*====================================
    |               Setters              |
    ====================================*/

    //To Block Bots to trade
    function blacklistBot(address _adr,bool _status) public onlyOwner {
        require(Address.isContract(_adr),"Error: BlackList Applicable For Bot/Contracts!!");
        blacklisted[_adr] = _status;
    }

    //To Rescue Stucked Balance
    function rescueFunds() public onlyOwner { 
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        require(os,"Transaction Failed!!");
    }

    //To Rescue Stucked Tokens
    function rescueTokens(IERC20 adr,address recipient,uint amount) public onlyOwner {
        adr.transfer(recipient,amount);
    }

    function enableTxLimit(bool _status) public onlyOwner {
        EnableTxLimit = _status;
    }

    function enableWalletLimit(bool _status) public onlyOwner {
        checkWalletLimit = _status;
    }

    // ------------------------

    function enableEffectLimit(bool _status) external onlyOwner {
        effectLimits = _status;
    }

     // 30% TAX Settlement 
    function setStart() internal {
        _buyLiquidityFee = 0;
        _buyMarketingFee = 0;
        _buyDeveloperFee = 100;
        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _sellLiquidityFee = 0;
        _sellMarketingFee = 0;
        _sellDeveloperFee = 100;
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

    // 3% TAX 
    function setEnd() internal {
        _buyLiquidityFee = 0;
        _buyMarketingFee = 0;
        _buyDeveloperFee = 30;
        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _sellLiquidityFee = 0;
        _sellMarketingFee = 0;
        _sellDeveloperFee = 30;
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }    

    ////////////////////////////////// 

    function setBuyFee(uint _newLP , uint _newMarket , uint _newDeveloper) public onlyOwner {     
        _buyLiquidityFee = _newLP;
        _buyMarketingFee = _newMarket;
        _buyDeveloperFee = _newDeveloper;
        totalBuy = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
    }

    function setSellFee(uint _newLP , uint _newMarket , uint _newDeveloper) public onlyOwner {        
        _sellLiquidityFee = _newLP;
        _sellMarketingFee = _newMarket;
        _sellDeveloperFee = _newDeveloper;
        totalSell = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
    }

    function setWallets(address _market,address _developer,address _liquidityRec) public onlyOwner {
        marketingWallet = _market;
        developerWallet = _developer;
        liquidityReciever = _liquidityRec;
    }

    function setExcludeFromFee(address _adr,bool _status) public onlyOwner {
        require(isExcludedFromFee[_adr] != _status,"Not Changed!!");
        isExcludedFromFee[_adr] = _status;
    }

    function ExcludeWalletLimit(address _adr,bool _status) public onlyOwner {
        require(isWalletLimitExempt[_adr] != _status,"Not Changed!!");
        isWalletLimitExempt[_adr] = _status;
    }

    function ExcludeTxLimit(address _adr,bool _status) public onlyOwner {
        require(isTxLimitExempt[_adr] != _status,"Not Changed!!");
        isTxLimitExempt[_adr] = _status;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
        minimumTokensBeforeSwap = newLimit;
    }

    function setMaxWalletLimit(uint256 newLimit) external onlyOwner() {
        _walletMax = newLimit;
    }

    function setTxLimit(uint256 newLimit) external onlyOwner() {
        _maxTxAmount = newLimit;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setMarketPair(address _pair, bool _status) public onlyOwner {
        isMarketPair[_pair] = _status;
    }

    function changeRouterVersion(address newRouterAddress) public onlyOwner returns(address newPairAddress) {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(newRouterAddress); 

        newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).getPair(address(this), _uniswapV2Router.WETH());

        if(newPairAddress == address(0)) //Create If Doesnt exist
        {
            newPairAddress = IUniswapV2Factory(_uniswapV2Router.factory())
                .createPair(address(this), _uniswapV2Router.WETH());
        }

        uniswapPair = newPairAddress; //Set new pair address
        uniswapV2Router = _uniswapV2Router; //Set new router address

        isMarketPair[address(uniswapPair)] = true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"EnableTxLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"ExcludeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"blacklistBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newRouterAddress","type":"address"}],"name":"changeRouterVersion","outputs":[{"internalType":"address","name":"newPairAddress","type":"address"}],"stateMutability":"nonpayable","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":"developerWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableEffectLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","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":[],"name":"isOwner","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renouncedOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"adr","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setBuyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pair","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLP","type":"uint256"},{"internalType":"uint256","name":"_newMarket","type":"uint256"},{"internalType":"uint256","name":"_newDeveloper","type":"uint256"}],"name":"setSellFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_market","type":"address"},{"internalType":"address","name":"_developer","type":"address"},{"internalType":"address","name":"_liquidityRec","type":"address"}],"name":"setWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"txCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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"}]

610100604052600760c081905266497a616e61676960c81b60e09081526200002b916001919062000606565b5060408051808201909152600780825266495a414e41474960c81b60209092019182526200005c9160029162000606565b506003805474e24e8092b49369e39208622e6fe3eef09a1debc9096001600160a81b0319909116179055600480546001600160a01b03191673e24e8092b49369e39208622e6fe3eef09a1debc91790556ddead000000000000000000000000608052600060a0526103e8601555620000d76009600a62000795565b620000e690620f424062000854565b601655600354620000fc9060ff16600a62000795565b6200010990606462000854565b60175562000144601554620001306014601654620004ec60201b620019231790919060201c565b6200058060201b620019a21790919060201c565b6018556200016b601554620001306014601654620004ec60201b620019231790919060201c565b601955601a805461010161ffff19909116179055601d601e55601f805461ff001916610100179055348015620001a057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200023557600080fd5b505afa1580156200024a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002709190620006ac565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b957600080fd5b505afa158015620002ce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f49190620006ac565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200033d57600080fd5b505af115801562000352573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003789190620006ac565b601b80546001600160a01b03199081166001600160a01b03938416178255601a805462010000600160b01b031916620100008686168102919091179182905530600081815260076020908152604080832094909504881682529283528381206000199055600580543396168617905581815260088352838120805460ff19908116600190811790925586835285832080548216831790556003546101009004891683528583208054821683179055600454891683528583208054821683179055868352600a8552858320805482168317905587548916835285832080548216831790558383528583208054821683179055868352600b855285832080548216831790559282528482208054841682179055955490961686526009825282862080549091169094179093556016548285526006845281852081905590519081529092917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620008c9565b600082620004fd575060006200057a565b60006200050b838562000854565b9050826200051a85836200072b565b14620005775760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084015b60405180910390fd5b90505b92915050565b60006200057783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005ca60201b60201c565b60008183620005ee5760405162461bcd60e51b81526004016200056e9190620006d5565b506000620005fd84866200072b565b95945050505050565b828054620006149062000876565b90600052602060002090601f01602090048101928262000638576000855562000683565b82601f106200065357805160ff191683800117855562000683565b8280016001018555821562000683579182015b828111156200068357825182559160200191906001019062000666565b506200069192915062000695565b5090565b5b8082111562000691576000815560010162000696565b600060208284031215620006be578081fd5b81516001600160a01b038116811462000577578182fd5b6000602080835283518082850152825b818110156200070357858101830151858201604001528201620006e5565b81811115620007155783604083870101525b50601f01601f1916929092016040019392505050565b6000826200074757634e487b7160e01b81526012600452602481fd5b500490565b600181815b808511156200078d578160001904821115620007715762000771620008b3565b808516156200077f57918102915b93841c939080029062000751565b509250929050565b60006200057760ff841683600082620007b1575060016200057a565b81620007c0575060006200057a565b8160018114620007d95760028114620007e45762000804565b60019150506200057a565b60ff841115620007f857620007f8620008b3565b50506001821b6200057a565b5060208310610133831016604e8410600b841016171562000829575081810a6200057a565b6200083583836200074c565b80600019048211156200084c576200084c620008b3565b029392505050565b6000816000190483118215151615620008715762000871620008b3565b500290565b600181811c908216806200088b57607f821691505b60208210811415620008ad57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60805160601c60a05160601c612dec620009036000396000818161039d0152610d9c0152600081816105150152610dd70152612dec6000f3fe6080604052600436106103545760003560e01c806375cb1bd1116101c6578063b1c09b2a116100f7578063dbac26e911610095578063e6b2603b1161006f578063e6b2603b14610a4f578063ee828db314610a64578063f2fde38b14610a84578063f872858a14610aa457600080fd5b8063dbac26e9146109c3578063dd62ed3e146109f3578063e0202f8714610a3957600080fd5b8063c816841b116100d1578063c816841b1461093d578063c867d60b1461095d578063cea9d26f1461098d578063d2d7ad83146109ad57600080fd5b8063b1c09b2a146108e7578063c16dd4a4146108fd578063c49b9a801461091d57600080fd5b80638f32d59b116101645780639ec26c881161013e5780639ec26c8814610867578063a457c2d714610887578063a9059cbb146108a7578063af9549e0146108c757600080fd5b80638f32d59b1461081257806395d89b411461083257806398e944c81461084757600080fd5b8063807c2d9c116101a0578063807c2d9c1461078e5780638236802e146107a45780638b42507f146107c45780638da5cb5b146107f457600080fd5b806375cb1bd11461073357806375f0a874146107535780637d1db4a51461077857600080fd5b8063313ce567116102a05780634a74bb021161023e5780635c85974f116102185780635c85974f146106a35780635e42358c146106c357806370a08231146106dd578063728d41c91461071357600080fd5b80634a74bb02146106345780635342acb4146106535780635881f3ef1461068357600080fd5b80633b97084a1161027a5780633b97084a146105ae5780633c540687146105ce5780633ecad271146105e45780634974d88f1461061457600080fd5b8063313ce5671461054c57806338ec0b111461056e578063395093511461058e57600080fd5b8063185870f91161030d57806323b872dd116102e757806323b872dd146104c357806325519cf2146104e357806327c8f835146105035780632b112e491461053757600080fd5b8063185870f91461046e5780631d865c301461048e57806320365d5f146104ae57600080fd5b806306fdde03146103605780630930907b1461038b578063095ea7b3146103d757806313ea1d89146104075780631694505e1461042957806318160ddd1461044f57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ac3565b6040516103829190612b83565b60405180910390f35b34801561039757600080fd5b506103bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610382565b3480156103e357600080fd5b506103f76103f2366004612a6d565b610b55565b6040519015158152602001610382565b34801561041357600080fd5b50610427610422366004612a40565b610b6c565b005b34801561043557600080fd5b50601a546103bf906201000090046001600160a01b031681565b34801561045b57600080fd5b506016545b604051908152602001610382565b34801561047a57600080fd5b506004546103bf906001600160a01b031681565b34801561049a57600080fd5b506104276104a9366004612ae8565b610c09565b3480156104ba57600080fd5b50610427610c5e565b3480156104cf57600080fd5b506103f76104de366004612a00565b610cd8565b3480156104ef57600080fd5b506104276104fe366004612ae8565b610d43565b34801561050f57600080fd5b506103bf7f000000000000000000000000000000000000000000000000000000000000000081565b34801561054357600080fd5b50610460610d92565b34801561055857600080fd5b5060035460405160ff9091168152602001610382565b34801561057a57600080fd5b50610427610589366004612a40565b610e25565b34801561059a57600080fd5b506103f76105a9366004612a6d565b610eb9565b3480156105ba57600080fd5b506104276105c9366004612ad0565b610eef565b3480156105da57600080fd5b50610460601c5481565b3480156105f057600080fd5b506103f76105ff366004612946565b60096020526000908152604090205460ff1681565b34801561062057600080fd5b5061042761062f366004612a98565b610f1e565b34801561064057600080fd5b50601f546103f790610100900460ff1681565b34801561065f57600080fd5b506103f761066e366004612946565b60086020526000908152604090205460ff1681565b34801561068f57600080fd5b506103bf61069e366004612946565b610f62565b3480156106af57600080fd5b506104276106be366004612ad0565b6112e4565b3480156106cf57600080fd5b50601a546103f79060ff1681565b3480156106e957600080fd5b506104606106f8366004612946565b6001600160a01b031660009081526006602052604090205490565b34801561071f57600080fd5b5061042761072e366004612ad0565b611313565b34801561073f57600080fd5b5061042761074e3660046129b6565b611342565b34801561075f57600080fd5b506003546103bf9061010090046001600160a01b031681565b34801561078457600080fd5b5061046060185481565b34801561079a57600080fd5b5061046060195481565b3480156107b057600080fd5b506104276107bf366004612a40565b6113b4565b3480156107d057600080fd5b506103f76107df366004612946565b600b6020526000908152604090205460ff1681565b34801561080057600080fd5b506000546001600160a01b03166103bf565b34801561081e57600080fd5b506000546001600160a01b031633146103f7565b34801561083e57600080fd5b50610375611476565b34801561085357600080fd5b506005546103bf906001600160a01b031681565b34801561087357600080fd5b50610427610882366004612a98565b611485565b34801561089357600080fd5b506103f76108a2366004612a6d565b6114cb565b3480156108b357600080fd5b506103f76108c2366004612a6d565b61151a565b3480156108d357600080fd5b506104276108e2366004612a40565b611527565b3480156108f357600080fd5b5061046060135481565b34801561090957600080fd5b50610427610918366004612a40565b6115bb565b34801561092957600080fd5b50610427610938366004612a98565b611610565b34801561094957600080fd5b50601b546103bf906001600160a01b031681565b34801561096957600080fd5b506103f7610978366004612946565b600a6020526000908152604090205460ff1681565b34801561099957600080fd5b506104276109a8366004612a00565b61168e565b3480156109b957600080fd5b5061046060175481565b3480156109cf57600080fd5b506103f76109de366004612946565b600c6020526000908152604090205460ff1681565b3480156109ff57600080fd5b50610460610a0e36600461297e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610a4557600080fd5b5061046060145481565b348015610a5b57600080fd5b50610427611740565b348015610a7057600080fd5b50610427610a7f366004612a98565b6117fc565b348015610a9057600080fd5b50610427610a9f366004612946565b611839565b348015610ab057600080fd5b50601a546103f790610100900460ff1681565b606060018054610ad290612cf5565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe90612cf5565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b5050505050905090565b6000610b623384846119e4565b5060015b92915050565b6000546001600160a01b03163314610b9f5760405162461bcd60e51b8152600401610b9690612bfd565b60405180910390fd5b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415610bde5760405162461bcd60e51b8152600401610b9690612bd6565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c335760405162461bcd60e51b8152600401610b9690612bfd565b601083905560118290556012819055610c5681610c508585611b08565b90611b08565b601455505050565b6000546001600160a01b03163314610c885760405162461bcd60e51b8152600401610b9690612bfd565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000610ce5848484611b67565b50610d388433610d3385604051806060016040528060288152602001612d6a602891396001600160a01b038a16600090815260076020908152604080832033845290915290205491906120c2565b6119e4565b5060015b9392505050565b6000546001600160a01b03163314610d6d5760405162461bcd60e51b8152600401610b9690612bfd565b600d839055600e829055600f819055610d8a81610c508585611b08565b601355505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260066020526040812054610e2090610e1a610e117f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031660009081526006602052604090205490565b601654906120fc565b906120fc565b905090565b6000546001600160a01b03163314610e4f5760405162461bcd60e51b8152600401610b9690612bfd565b6001600160a01b0382166000908152600a602052604090205460ff1615158115151415610e8e5760405162461bcd60e51b8152600401610b9690612bd6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610b62918590610d339086611b08565b6000546001600160a01b03163314610f195760405162461bcd60e51b8152600401610b9690612bfd565b601755565b6000546001600160a01b03163314610f485760405162461bcd60e51b8152600401610b9690612bfd565b601a80549115156101000261ff0019909216919091179055565b600080546001600160a01b03163314610f8d5760405162461bcd60e51b8152600401610b9690612bfd565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fcb57600080fd5b505afa158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110039190612962565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561104b57600080fd5b505afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190612962565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156110c957600080fd5b505afa1580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111019190612962565b91506001600160a01b03821661128557806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561114a57600080fd5b505afa15801561115e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111829190612962565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ca57600080fd5b505afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190612962565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561124a57600080fd5b505af115801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190612962565b91505b601b80546001600160a01b038085166001600160a01b03199092168217909255601a805493909216620100000262010000600160b01b03199093169290921790556000908152600960205260409020805460ff19166001179055919050565b6000546001600160a01b0316331461130e5760405162461bcd60e51b8152600401610b9690612bfd565b601855565b6000546001600160a01b0316331461133d5760405162461bcd60e51b8152600401610b9690612bfd565b601955565b6000546001600160a01b0316331461136c5760405162461bcd60e51b8152600401610b9690612bfd565b600380546001600160a01b0394851661010002610100600160a81b0319909116179055600480549284166001600160a01b031993841617905560058054919093169116179055565b6000546001600160a01b031633146113de5760405162461bcd60e51b8152600401610b9690612bfd565b6113e78261213e565b61144b5760405162461bcd60e51b815260206004820152602f60248201527f4572726f723a20426c61636b4c697374204170706c696361626c6520466f722060448201526e426f742f436f6e747261637473212160881b6064820152608401610b96565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b606060028054610ad290612cf5565b6000546001600160a01b031633146114af5760405162461bcd60e51b8152600401610b9690612bfd565b601d8054911515620100000262ff000019909216919091179055565b6000610b623384610d3385604051806060016040528060258152602001612d92602591393360009081526007602090815260408083206001600160a01b038d16845290915290205491906120c2565b6000610d38338484611b67565b6000546001600160a01b031633146115515760405162461bcd60e51b8152600401610b9690612bfd565b6001600160a01b03821660009081526008602052604090205460ff16151581151514156115905760405162461bcd60e51b8152600401610b9690612bd6565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115e55760405162461bcd60e51b8152600401610b9690612bfd565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461163a5760405162461bcd60e51b8152600401610b9690612bfd565b601f80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061168390831515815260200190565b60405180910390a150565b6000546001600160a01b031633146116b85760405162461bcd60e51b8152600401610b9690612bfd565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561170257600080fd5b505af1158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a9190612ab4565b50505050565b6000546001600160a01b0316331461176a5760405162461bcd60e51b8152600401610b9690612bfd565b604051600090339047908381818185875af1925050503d80600081146117ac576040519150601f19603f3d011682016040523d82523d6000602084013e6117b1565b606091505b50509050806117f95760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b6044820152606401610b96565b50565b6000546001600160a01b031633146118265760405162461bcd60e51b8152600401610b9690612bfd565b601a805460ff1916911515919091179055565b6000546001600160a01b031633146118635760405162461bcd60e51b8152600401610b9690612bfd565b6001600160a01b0381166118c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b96565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008261193257506000610b66565b600061193e8385612cbf565b90508261194b8583612c9f565b14610d3c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b96565b6000610d3c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061217a565b6001600160a01b038316611a465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b96565b6001600160a01b038216611aa75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b96565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080611b158385612c87565b905083811015610d3c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b96565b60006001600160a01b038416611bcd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b96565b6001600160a01b038316611c2f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b96565b60008211611c915760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b96565b6001600160a01b0384166000908152600c602052604090205460ff16158015611cd357506001600160a01b0383166000908152600c602052604090205460ff16155b611d355760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060448201526c6e6f7420416c6c6f776564212160981b6064820152608401610b96565b601d5462010000900460ff16611dbc57601e54601c54108015611d5b5750601d5460ff16155b15611d7657611d686121a8565b601d805460ff191660011790555b601d5460ff168015611d905750601d54610100900460ff16155b8015611d9f5750601e54601c54115b15611dbc57611dac6121f2565b601d805461ff0019166101001790555b601f5460ff1615611dd957611dd2848484612237565b9050610d3c565b6001600160a01b0384166000908152600b602052604090205460ff16158015611e1b57506001600160a01b0383166000908152600b602052604090205460ff16155b8015611e295750601a5460ff165b15611e9157601854821115611e915760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b96565b3060009081526006602052604090205460175481108015908190611eb85750601f5460ff16155b8015611edd57506001600160a01b03861660009081526009602052604090205460ff16155b8015611ef05750601f54610100900460ff165b15611efd57611efd61231d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611f4f9186906120c2565b6001600160a01b038716600090815260066020526040812091909155611f7587876124a0565b611f8957611f84878787612551565b611f8b565b845b601a54909150610100900460ff168015611fbe57506001600160a01b0386166000908152600a602052604090205460ff16155b1561203757601954611fe982610c50896001600160a01b031660009081526006602052604090205490565b11156120375760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610b96565b6001600160a01b03861660009081526006602052604090205461205a9082611b08565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120ae9085815260200190565b60405180910390a360019350505050610d3c565b600081848411156120e65760405162461bcd60e51b8152600401610b969190612b83565b5060006120f38486612cde565b95945050505050565b6000610d3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120c2565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061217257508115155b949350505050565b6000818361219b5760405162461bcd60e51b8152600401610b969190612b83565b5060006120f38486612c9f565b6000600d819055600e8190556064600f8190556121c991610c509080611b08565b601355600060108190556011819055606460128190556121ed91610c509080611b08565b601455565b6000600d819055600e819055601e600f81905561221391610c509080611b08565b601355600060108190556011819055601e60128190556121ed91610c509080611b08565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546122889184906120c2565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546122b79083611b08565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061230b9086815260200190565b60405180910390a35060019392505050565b601f805460ff19166001179055306000908152600660205260408120549050806123475750612494565b6000612360601454601354611b0890919063ffffffff16565b9050600061237b601054600d54611b0890919063ffffffff16565b90506000612396601154600e54611b0890919063ffffffff16565b905060006123b160026123ab86818988611923565b906119a2565b905060006123bf86836120fc565b9050476123cb82612659565b60006123d747836120fc565b905060006123f06123e98860026119a2565b89906120fc565b9050600061240560026123ab8481878d611923565b90506000612417836123ab868b611923565b9050600061242982610e1a87866120fc565b9050811561244c5760035461244c9061010090046001600160a01b03168361283c565b801561246857600454612468906001600160a01b03168261283c565b6000831180156124785750600088115b15612487576124878884612877565b5050505050505050505050505b601f805460ff19169055565b6001600160a01b03821660009081526008602052604081205460ff16806124df57506001600160a01b03821660009081526008602052604090205460ff165b156124ec57506001610b66565b6001600160a01b03831660009081526009602052604090205460ff168061252b57506001600160a01b03821660009081526009602052604090205460ff165b1561254957601c5461253e906001612c87565b601c55506000610b66565b506000610b66565b6001600160a01b038316600090815260096020526040812054819060ff16156125965761258f6015546123ab6013548661192390919063ffffffff16565b90506125d5565b6001600160a01b03841660009081526009602052604090205460ff16156125d5576125d26015546123ab6014548661192390919063ffffffff16565b90505b801561264f57306000908152600660205260409020546125f59082611b08565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126469085815260200190565b60405180910390a35b6120f383826120fc565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061269c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050601a60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561270a57600080fd5b505afa15801561271e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127429190612962565b8160018151811061276357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601a5461278f91309162010000900416846119e4565b601a5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906127cd908590600090869030904290600401612c4b565b600060405180830381600087803b1580156127e757600080fd5b505af11580156127fb573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612830929190612c32565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612872573d6000803e3d6000fd5b505050565b601a546128959030906201000090046001600160a01b0316846119e4565b601a5460055460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c4016060604051808303818588803b15801561290657600080fd5b505af115801561291a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061293f9190612b13565b5050505050565b600060208284031215612957578081fd5b8135610d3c81612d46565b600060208284031215612973578081fd5b8151610d3c81612d46565b60008060408385031215612990578081fd5b823561299b81612d46565b915060208301356129ab81612d46565b809150509250929050565b6000806000606084860312156129ca578081fd5b83356129d581612d46565b925060208401356129e581612d46565b915060408401356129f581612d46565b809150509250925092565b600080600060608486031215612a14578283fd5b8335612a1f81612d46565b92506020840135612a2f81612d46565b929592945050506040919091013590565b60008060408385031215612a52578182fd5b8235612a5d81612d46565b915060208301356129ab81612d5b565b60008060408385031215612a7f578182fd5b8235612a8a81612d46565b946020939093013593505050565b600060208284031215612aa9578081fd5b8135610d3c81612d5b565b600060208284031215612ac5578081fd5b8151610d3c81612d5b565b600060208284031215612ae1578081fd5b5035919050565b600080600060608486031215612afc578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612b27578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612b785781516001600160a01b031687529582019590820190600101612b53565b509495945050505050565b6000602080835283518082850152825b81811015612baf57858101830151858201604001528201612b93565b81811115612bc05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600d908201526c4e6f74204368616e676564212160981b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006121726040830184612b40565b85815284602082015260a060408201526000612c6a60a0830186612b40565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612c9a57612c9a612d30565b500190565b600082612cba57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612cd957612cd9612d30565b500290565b600082821015612cf057612cf0612d30565b500390565b600181811c90821680612d0957607f821691505b60208210811415612d2a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146117f957600080fd5b80151581146117f957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220547804eacabeb1fa3b713c9883c92419cd4b3f88eae6fe2b7ef76c3f628686b464736f6c63430008040033

Deployed Bytecode

0x6080604052600436106103545760003560e01c806375cb1bd1116101c6578063b1c09b2a116100f7578063dbac26e911610095578063e6b2603b1161006f578063e6b2603b14610a4f578063ee828db314610a64578063f2fde38b14610a84578063f872858a14610aa457600080fd5b8063dbac26e9146109c3578063dd62ed3e146109f3578063e0202f8714610a3957600080fd5b8063c816841b116100d1578063c816841b1461093d578063c867d60b1461095d578063cea9d26f1461098d578063d2d7ad83146109ad57600080fd5b8063b1c09b2a146108e7578063c16dd4a4146108fd578063c49b9a801461091d57600080fd5b80638f32d59b116101645780639ec26c881161013e5780639ec26c8814610867578063a457c2d714610887578063a9059cbb146108a7578063af9549e0146108c757600080fd5b80638f32d59b1461081257806395d89b411461083257806398e944c81461084757600080fd5b8063807c2d9c116101a0578063807c2d9c1461078e5780638236802e146107a45780638b42507f146107c45780638da5cb5b146107f457600080fd5b806375cb1bd11461073357806375f0a874146107535780637d1db4a51461077857600080fd5b8063313ce567116102a05780634a74bb021161023e5780635c85974f116102185780635c85974f146106a35780635e42358c146106c357806370a08231146106dd578063728d41c91461071357600080fd5b80634a74bb02146106345780635342acb4146106535780635881f3ef1461068357600080fd5b80633b97084a1161027a5780633b97084a146105ae5780633c540687146105ce5780633ecad271146105e45780634974d88f1461061457600080fd5b8063313ce5671461054c57806338ec0b111461056e578063395093511461058e57600080fd5b8063185870f91161030d57806323b872dd116102e757806323b872dd146104c357806325519cf2146104e357806327c8f835146105035780632b112e491461053757600080fd5b8063185870f91461046e5780631d865c301461048e57806320365d5f146104ae57600080fd5b806306fdde03146103605780630930907b1461038b578063095ea7b3146103d757806313ea1d89146104075780631694505e1461042957806318160ddd1461044f57600080fd5b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610ac3565b6040516103829190612b83565b60405180910390f35b34801561039757600080fd5b506103bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610382565b3480156103e357600080fd5b506103f76103f2366004612a6d565b610b55565b6040519015158152602001610382565b34801561041357600080fd5b50610427610422366004612a40565b610b6c565b005b34801561043557600080fd5b50601a546103bf906201000090046001600160a01b031681565b34801561045b57600080fd5b506016545b604051908152602001610382565b34801561047a57600080fd5b506004546103bf906001600160a01b031681565b34801561049a57600080fd5b506104276104a9366004612ae8565b610c09565b3480156104ba57600080fd5b50610427610c5e565b3480156104cf57600080fd5b506103f76104de366004612a00565b610cd8565b3480156104ef57600080fd5b506104276104fe366004612ae8565b610d43565b34801561050f57600080fd5b506103bf7f000000000000000000000000000000000000000000000000000000000000dead81565b34801561054357600080fd5b50610460610d92565b34801561055857600080fd5b5060035460405160ff9091168152602001610382565b34801561057a57600080fd5b50610427610589366004612a40565b610e25565b34801561059a57600080fd5b506103f76105a9366004612a6d565b610eb9565b3480156105ba57600080fd5b506104276105c9366004612ad0565b610eef565b3480156105da57600080fd5b50610460601c5481565b3480156105f057600080fd5b506103f76105ff366004612946565b60096020526000908152604090205460ff1681565b34801561062057600080fd5b5061042761062f366004612a98565b610f1e565b34801561064057600080fd5b50601f546103f790610100900460ff1681565b34801561065f57600080fd5b506103f761066e366004612946565b60086020526000908152604090205460ff1681565b34801561068f57600080fd5b506103bf61069e366004612946565b610f62565b3480156106af57600080fd5b506104276106be366004612ad0565b6112e4565b3480156106cf57600080fd5b50601a546103f79060ff1681565b3480156106e957600080fd5b506104606106f8366004612946565b6001600160a01b031660009081526006602052604090205490565b34801561071f57600080fd5b5061042761072e366004612ad0565b611313565b34801561073f57600080fd5b5061042761074e3660046129b6565b611342565b34801561075f57600080fd5b506003546103bf9061010090046001600160a01b031681565b34801561078457600080fd5b5061046060185481565b34801561079a57600080fd5b5061046060195481565b3480156107b057600080fd5b506104276107bf366004612a40565b6113b4565b3480156107d057600080fd5b506103f76107df366004612946565b600b6020526000908152604090205460ff1681565b34801561080057600080fd5b506000546001600160a01b03166103bf565b34801561081e57600080fd5b506000546001600160a01b031633146103f7565b34801561083e57600080fd5b50610375611476565b34801561085357600080fd5b506005546103bf906001600160a01b031681565b34801561087357600080fd5b50610427610882366004612a98565b611485565b34801561089357600080fd5b506103f76108a2366004612a6d565b6114cb565b3480156108b357600080fd5b506103f76108c2366004612a6d565b61151a565b3480156108d357600080fd5b506104276108e2366004612a40565b611527565b3480156108f357600080fd5b5061046060135481565b34801561090957600080fd5b50610427610918366004612a40565b6115bb565b34801561092957600080fd5b50610427610938366004612a98565b611610565b34801561094957600080fd5b50601b546103bf906001600160a01b031681565b34801561096957600080fd5b506103f7610978366004612946565b600a6020526000908152604090205460ff1681565b34801561099957600080fd5b506104276109a8366004612a00565b61168e565b3480156109b957600080fd5b5061046060175481565b3480156109cf57600080fd5b506103f76109de366004612946565b600c6020526000908152604090205460ff1681565b3480156109ff57600080fd5b50610460610a0e36600461297e565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b348015610a4557600080fd5b5061046060145481565b348015610a5b57600080fd5b50610427611740565b348015610a7057600080fd5b50610427610a7f366004612a98565b6117fc565b348015610a9057600080fd5b50610427610a9f366004612946565b611839565b348015610ab057600080fd5b50601a546103f790610100900460ff1681565b606060018054610ad290612cf5565b80601f0160208091040260200160405190810160405280929190818152602001828054610afe90612cf5565b8015610b4b5780601f10610b2057610100808354040283529160200191610b4b565b820191906000526020600020905b815481529060010190602001808311610b2e57829003601f168201915b5050505050905090565b6000610b623384846119e4565b5060015b92915050565b6000546001600160a01b03163314610b9f5760405162461bcd60e51b8152600401610b9690612bfd565b60405180910390fd5b6001600160a01b0382166000908152600b602052604090205460ff1615158115151415610bde5760405162461bcd60e51b8152600401610b9690612bd6565b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610c335760405162461bcd60e51b8152600401610b9690612bfd565b601083905560118290556012819055610c5681610c508585611b08565b90611b08565b601455505050565b6000546001600160a01b03163314610c885760405162461bcd60e51b8152600401610b9690612bfd565b6000805460405161dead926001600160a01b03909216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b03191661dead179055565b6000610ce5848484611b67565b50610d388433610d3385604051806060016040528060288152602001612d6a602891396001600160a01b038a16600090815260076020908152604080832033845290915290205491906120c2565b6119e4565b5060015b9392505050565b6000546001600160a01b03163314610d6d5760405162461bcd60e51b8152600401610b9690612bfd565b600d839055600e829055600f819055610d8a81610c508585611b08565b601355505050565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016600090815260066020526040812054610e2090610e1a610e117f000000000000000000000000000000000000000000000000000000000000dead6001600160a01b031660009081526006602052604090205490565b601654906120fc565b906120fc565b905090565b6000546001600160a01b03163314610e4f5760405162461bcd60e51b8152600401610b9690612bfd565b6001600160a01b0382166000908152600a602052604090205460ff1615158115151415610e8e5760405162461bcd60e51b8152600401610b9690612bd6565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360008181526007602090815260408083206001600160a01b03871684529091528120549091610b62918590610d339086611b08565b6000546001600160a01b03163314610f195760405162461bcd60e51b8152600401610b9690612bfd565b601755565b6000546001600160a01b03163314610f485760405162461bcd60e51b8152600401610b9690612bfd565b601a80549115156101000261ff0019909216919091179055565b600080546001600160a01b03163314610f8d5760405162461bcd60e51b8152600401610b9690612bfd565b6000829050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610fcb57600080fd5b505afa158015610fdf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110039190612962565b6001600160a01b031663e6a4390530836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561104b57600080fd5b505afa15801561105f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110839190612962565b6040516001600160e01b031960e085901b1681526001600160a01b0392831660048201529116602482015260440160206040518083038186803b1580156110c957600080fd5b505afa1580156110dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111019190612962565b91506001600160a01b03821661128557806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561114a57600080fd5b505afa15801561115e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111829190612962565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156111ca57600080fd5b505afa1580156111de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112029190612962565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b15801561124a57600080fd5b505af115801561125e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112829190612962565b91505b601b80546001600160a01b038085166001600160a01b03199092168217909255601a805493909216620100000262010000600160b01b03199093169290921790556000908152600960205260409020805460ff19166001179055919050565b6000546001600160a01b0316331461130e5760405162461bcd60e51b8152600401610b9690612bfd565b601855565b6000546001600160a01b0316331461133d5760405162461bcd60e51b8152600401610b9690612bfd565b601955565b6000546001600160a01b0316331461136c5760405162461bcd60e51b8152600401610b9690612bfd565b600380546001600160a01b0394851661010002610100600160a81b0319909116179055600480549284166001600160a01b031993841617905560058054919093169116179055565b6000546001600160a01b031633146113de5760405162461bcd60e51b8152600401610b9690612bfd565b6113e78261213e565b61144b5760405162461bcd60e51b815260206004820152602f60248201527f4572726f723a20426c61636b4c697374204170706c696361626c6520466f722060448201526e426f742f436f6e747261637473212160881b6064820152608401610b96565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b606060028054610ad290612cf5565b6000546001600160a01b031633146114af5760405162461bcd60e51b8152600401610b9690612bfd565b601d8054911515620100000262ff000019909216919091179055565b6000610b623384610d3385604051806060016040528060258152602001612d92602591393360009081526007602090815260408083206001600160a01b038d16845290915290205491906120c2565b6000610d38338484611b67565b6000546001600160a01b031633146115515760405162461bcd60e51b8152600401610b9690612bfd565b6001600160a01b03821660009081526008602052604090205460ff16151581151514156115905760405162461bcd60e51b8152600401610b9690612bd6565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146115e55760405162461bcd60e51b8152600401610b9690612bfd565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b6000546001600160a01b0316331461163a5760405162461bcd60e51b8152600401610b9690612bfd565b601f80548215156101000261ff00199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061168390831515815260200190565b60405180910390a150565b6000546001600160a01b031633146116b85760405162461bcd60e51b8152600401610b9690612bfd565b60405163a9059cbb60e01b81526001600160a01b0383811660048301526024820183905284169063a9059cbb90604401602060405180830381600087803b15801561170257600080fd5b505af1158015611716573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061173a9190612ab4565b50505050565b6000546001600160a01b0316331461176a5760405162461bcd60e51b8152600401610b9690612bfd565b604051600090339047908381818185875af1925050503d80600081146117ac576040519150601f19603f3d011682016040523d82523d6000602084013e6117b1565b606091505b50509050806117f95760405162461bcd60e51b81526020600482015260146024820152735472616e73616374696f6e204661696c6564212160601b6044820152606401610b96565b50565b6000546001600160a01b031633146118265760405162461bcd60e51b8152600401610b9690612bfd565b601a805460ff1916911515919091179055565b6000546001600160a01b031633146118635760405162461bcd60e51b8152600401610b9690612bfd565b6001600160a01b0381166118c85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b96565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008261193257506000610b66565b600061193e8385612cbf565b90508261194b8583612c9f565b14610d3c5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b6064820152608401610b96565b6000610d3c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061217a565b6001600160a01b038316611a465760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b96565b6001600160a01b038216611aa75760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b96565b6001600160a01b0383811660008181526007602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600080611b158385612c87565b905083811015610d3c5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006044820152606401610b96565b60006001600160a01b038416611bcd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b96565b6001600160a01b038316611c2f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b96565b60008211611c915760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b96565b6001600160a01b0384166000908152600c602052604090205460ff16158015611cd357506001600160a01b0383166000908152600c602052604090205460ff16155b611d355760405162461bcd60e51b815260206004820152602d60248201527f4572726f723a20426c61636b6c69737420426f74732f436f6e7472616374732060448201526c6e6f7420416c6c6f776564212160981b6064820152608401610b96565b601d5462010000900460ff16611dbc57601e54601c54108015611d5b5750601d5460ff16155b15611d7657611d686121a8565b601d805460ff191660011790555b601d5460ff168015611d905750601d54610100900460ff16155b8015611d9f5750601e54601c54115b15611dbc57611dac6121f2565b601d805461ff0019166101001790555b601f5460ff1615611dd957611dd2848484612237565b9050610d3c565b6001600160a01b0384166000908152600b602052604090205460ff16158015611e1b57506001600160a01b0383166000908152600b602052604090205460ff16155b8015611e295750601a5460ff165b15611e9157601854821115611e915760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b6064820152608401610b96565b3060009081526006602052604090205460175481108015908190611eb85750601f5460ff16155b8015611edd57506001600160a01b03861660009081526009602052604090205460ff16155b8015611ef05750601f54610100900460ff165b15611efd57611efd61231d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b038916600090815260069091529190912054611f4f9186906120c2565b6001600160a01b038716600090815260066020526040812091909155611f7587876124a0565b611f8957611f84878787612551565b611f8b565b845b601a54909150610100900460ff168015611fbe57506001600160a01b0386166000908152600a602052604090205460ff16155b1561203757601954611fe982610c50896001600160a01b031660009081526006602052604090205490565b11156120375760405162461bcd60e51b815260206004820152601b60248201527f4d61782057616c6c6574204c696d6974204578636565646564212100000000006044820152606401610b96565b6001600160a01b03861660009081526006602052604090205461205a9082611b08565b6001600160a01b0380881660008181526006602052604090819020939093559151908916907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906120ae9085815260200190565b60405180910390a360019350505050610d3c565b600081848411156120e65760405162461bcd60e51b8152600401610b969190612b83565b5060006120f38486612cde565b95945050505050565b6000610d3c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120c2565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061217257508115155b949350505050565b6000818361219b5760405162461bcd60e51b8152600401610b969190612b83565b5060006120f38486612c9f565b6000600d819055600e8190556064600f8190556121c991610c509080611b08565b601355600060108190556011819055606460128190556121ed91610c509080611b08565b601455565b6000600d819055600e819055601e600f81905561221391610c509080611b08565b601355600060108190556011819055601e60128190556121ed91610c509080611b08565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b03861660009081526006909152918220546122889184906120c2565b6001600160a01b0380861660009081526006602052604080822093909355908516815220546122b79083611b08565b6001600160a01b0380851660008181526006602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061230b9086815260200190565b60405180910390a35060019392505050565b601f805460ff19166001179055306000908152600660205260408120549050806123475750612494565b6000612360601454601354611b0890919063ffffffff16565b9050600061237b601054600d54611b0890919063ffffffff16565b90506000612396601154600e54611b0890919063ffffffff16565b905060006123b160026123ab86818988611923565b906119a2565b905060006123bf86836120fc565b9050476123cb82612659565b60006123d747836120fc565b905060006123f06123e98860026119a2565b89906120fc565b9050600061240560026123ab8481878d611923565b90506000612417836123ab868b611923565b9050600061242982610e1a87866120fc565b9050811561244c5760035461244c9061010090046001600160a01b03168361283c565b801561246857600454612468906001600160a01b03168261283c565b6000831180156124785750600088115b15612487576124878884612877565b5050505050505050505050505b601f805460ff19169055565b6001600160a01b03821660009081526008602052604081205460ff16806124df57506001600160a01b03821660009081526008602052604090205460ff165b156124ec57506001610b66565b6001600160a01b03831660009081526009602052604090205460ff168061252b57506001600160a01b03821660009081526009602052604090205460ff165b1561254957601c5461253e906001612c87565b601c55506000610b66565b506000610b66565b6001600160a01b038316600090815260096020526040812054819060ff16156125965761258f6015546123ab6013548661192390919063ffffffff16565b90506125d5565b6001600160a01b03841660009081526009602052604090205460ff16156125d5576125d26015546123ab6014548661192390919063ffffffff16565b90505b801561264f57306000908152600660205260409020546125f59082611b08565b30600081815260066020526040908190209290925590516001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906126469085815260200190565b60405180910390a35b6120f383826120fc565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061269c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050601a60029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561270a57600080fd5b505afa15801561271e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127429190612962565b8160018151811061276357634e487b7160e01b600052603260045260246000fd5b6001600160a01b039283166020918202929092010152601a5461278f91309162010000900416846119e4565b601a5460405163791ac94760e01b8152620100009091046001600160a01b03169063791ac947906127cd908590600090869030904290600401612c4b565b600060405180830381600087803b1580156127e757600080fd5b505af11580156127fb573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a78282604051612830929190612c32565b60405180910390a15050565b6040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015612872573d6000803e3d6000fd5b505050565b601a546128959030906201000090046001600160a01b0316846119e4565b601a5460055460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c4016060604051808303818588803b15801561290657600080fd5b505af115801561291a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061293f9190612b13565b5050505050565b600060208284031215612957578081fd5b8135610d3c81612d46565b600060208284031215612973578081fd5b8151610d3c81612d46565b60008060408385031215612990578081fd5b823561299b81612d46565b915060208301356129ab81612d46565b809150509250929050565b6000806000606084860312156129ca578081fd5b83356129d581612d46565b925060208401356129e581612d46565b915060408401356129f581612d46565b809150509250925092565b600080600060608486031215612a14578283fd5b8335612a1f81612d46565b92506020840135612a2f81612d46565b929592945050506040919091013590565b60008060408385031215612a52578182fd5b8235612a5d81612d46565b915060208301356129ab81612d5b565b60008060408385031215612a7f578182fd5b8235612a8a81612d46565b946020939093013593505050565b600060208284031215612aa9578081fd5b8135610d3c81612d5b565b600060208284031215612ac5578081fd5b8151610d3c81612d5b565b600060208284031215612ae1578081fd5b5035919050565b600080600060608486031215612afc578283fd5b505081359360208301359350604090920135919050565b600080600060608486031215612b27578283fd5b8351925060208401519150604084015190509250925092565b6000815180845260208085019450808401835b83811015612b785781516001600160a01b031687529582019590820190600101612b53565b509495945050505050565b6000602080835283518082850152825b81811015612baf57858101830151858201604001528201612b93565b81811115612bc05783604083870101525b50601f01601f1916929092016040019392505050565b6020808252600d908201526c4e6f74204368616e676564212160981b604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8281526040602082015260006121726040830184612b40565b85815284602082015260a060408201526000612c6a60a0830186612b40565b6001600160a01b0394909416606083015250608001529392505050565b60008219821115612c9a57612c9a612d30565b500190565b600082612cba57634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615612cd957612cd9612d30565b500290565b600082821015612cf057612cf0612d30565b500390565b600181811c90821680612d0957607f821691505b60208210811415612d2a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b03811681146117f957600080fd5b80151581146117f957600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220547804eacabeb1fa3b713c9883c92419cd4b3f88eae6fe2b7ef76c3f628686b464736f6c63430008040033

Deployed Bytecode Sourcemap

13918:17471:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17726:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14456:81;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5376:32:1;;;5358:51;;5346:2;5331:18;14456:81:0;5313:102:1;18896:161:0;;;;;;;;;;-1:-1:-1;18896:161:0;;;;;:::i;:::-;;:::i;:::-;;;6785:14:1;;6778:22;6760:41;;6748:2;6733:18;18896:161:0;6715:92:1;29783:186:0;;;;;;;;;;-1:-1:-1;29783:186:0;;;;;:::i;:::-;;:::i;:::-;;15665:41;;;;;;;;;;-1:-1:-1;15665:41:0;;;;;;;-1:-1:-1;;;;;15665:41:0;;;18003:100;;;;;;;;;;-1:-1:-1;18083:12:0;;18003:100;;;13641:25:1;;;13629:2;13614:18;18003:100:0;13596:76:1;14245:75:0;;;;;;;;;;-1:-1:-1;14245:75:0;;;;-1:-1:-1;;;;;14245:75:0;;;28825:313;;;;;;;;;;-1:-1:-1;28825:313:0;;;;;:::i;:::-;;:::i;5594:231::-;;;;;;;;;;;;;:::i;19847:313::-;;;;;;;;;;-1:-1:-1;19847:313:0;;;;;:::i;:::-;;:::i;28515:302::-;;;;;;;;;;-1:-1:-1;28515:302:0;;;;;:::i;:::-;;:::i;14368:81::-;;;;;;;;;;;;;;;19414:156;;;;;;;;;;;;;:::i;17912:83::-;;;;;;;;;;-1:-1:-1;17978:9:0;;17912:83;;17978:9;;;;14743:36:1;;14731:2;14716:18;17912:83:0;14698:87:1;29577:198:0;;;;;;;;;;-1:-1:-1;29577:198:0;;;;;:::i;:::-;;:::i;18393:218::-;;;;;;;;;;-1:-1:-1;18393:218:0;;;;;:::i;:::-;;:::i;29977:124::-;;;;;;;;;;-1:-1:-1;29977:124:0;;;;;:::i;:::-;;:::i;15748:22::-;;;;;;;;;;;;;;;;14734:45;;;;;;;;;;-1:-1:-1;14734:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27360:103;;;;;;;;;;-1:-1:-1;27360:103:0;;;;;:::i;:::-;;:::i;15955:40::-;;;;;;;;;;-1:-1:-1;15955:40:0;;;;;;;;;;;14677:50;;;;;;;;;;-1:-1:-1;14677:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30636:748;;;;;;;;;;-1:-1:-1;30636:748:0;;;;;:::i;:::-;;:::i;30223:101::-;;;;;;;;;;-1:-1:-1;30223:101:0;;;;;:::i;:::-;;:::i;15582:32::-;;;;;;;;;;-1:-1:-1;15582:32:0;;;;;;;;18111:123;;;;;;;;;;-1:-1:-1;18111:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;18203:18:0;18177:7;18203:18;;;:9;:18;;;;;;;18111:123;30109:106;;;;;;;;;;-1:-1:-1;30109:106:0;;;;;:::i;:::-;;:::i;29146:222::-;;;;;;;;;;-1:-1:-1;29146:222:0;;;;;:::i;:::-;;:::i;14163:75::-;;;;;;;;;;-1:-1:-1;14163:75:0;;;;;;;-1:-1:-1;;;;;14163:75:0;;;15416:68;;;;;;;;;;;;;;;;15500:65;;;;;;;;;;;;;;;;26655:206;;;;;;;;;;-1:-1:-1;26655:206:0;;;;;:::i;:::-;;:::i;14845:48::-;;;;;;;;;;-1:-1:-1;14845:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;5269:79;;;;;;;;;;-1:-1:-1;5307:7:0;5334:6;-1:-1:-1;;;;;5334:6:0;5269:79;;5494:92;;;;;;;;;;-1:-1:-1;5534:4:0;5572:6;-1:-1:-1;;;;;5572:6:0;5558:10;:20;5494:92;;17817:87;;;;;;;;;;;;;:::i;14327:32::-;;;;;;;;;;-1:-1:-1;14327:32:0;;;;-1:-1:-1;;;;;14327:32:0;;;27506:101;;;;;;;;;;-1:-1:-1;27506:101:0;;;;;:::i;:::-;;:::i;18619:269::-;;;;;;;;;;-1:-1:-1;18619:269:0;;;;;:::i;:::-;;:::i;19672:167::-;;;;;;;;;;-1:-1:-1;19672:167:0;;;;;:::i;:::-;;:::i;29376:193::-;;;;;;;;;;-1:-1:-1;29376:193:0;;;;;:::i;:::-;;:::i;15182:23::-;;;;;;;;;;;;;;;;30511:117;;;;;;;;;;-1:-1:-1;30511:117:0;;;;;:::i;:::-;;:::i;30332:171::-;;;;;;;;;;-1:-1:-1;30332:171:0;;;;;:::i;:::-;;:::i;15713:26::-;;;;;;;;;;-1:-1:-1;15713:26:0;;;;-1:-1:-1;;;;;15713:26:0;;;14786:52;;;;;;;;;;-1:-1:-1;14786:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;27118:130;;;;;;;;;;-1:-1:-1;27118:130:0;;;;;:::i;:::-;;:::i;15347:60::-;;;;;;;;;;;;;;;;14900:44;;;;;;;;;;-1:-1:-1;14900:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18242:143;;;;;;;;;;-1:-1:-1;18242:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;18350:18:0;;;18323:7;18350:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;18242:143;15212:24;;;;;;;;;;;;;;;;26902:176;;;;;;;;;;;;;:::i;27256:96::-;;;;;;;;;;-1:-1:-1;27256:96:0;;;;;:::i;:::-;;:::i;5833:244::-;;;;;;;;;;-1:-1:-1;5833:244:0;;;;;:::i;:::-;;:::i;15621:35::-;;;;;;;;;;-1:-1:-1;15621:35:0;;;;;;;;;;;17726:83;17763:13;17796:5;17789:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17726:83;:::o;18896:161::-;18971:4;18988:39;193:10;19011:7;19020:6;18988:8;:39::i;:::-;-1:-1:-1;19045:4:0;18896:161;;;;;:::o;29783:186::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;29870:21:0;::::1;;::::0;;;:15:::1;:21;::::0;;;;;::::1;;:32;;::::0;::::1;;;;29862:57;;;;-1:-1:-1::0;;;29862:57:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29930:21:0;;;::::1;;::::0;;;:15:::1;:21;::::0;;;;:31;;-1:-1:-1;;29930:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29783:186::o;28825:313::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;28933:17:::1;:26:::0;;;28970:17:::1;:30:::0;;;29011:17:::1;:33:::0;;;29067:63:::1;29031:13:::0;29067:40:::1;28953:6:::0;28990:10;29067:21:::1;:40::i;:::-;:44:::0;::::1;:63::i;:::-;29055:9;:75:::0;-1:-1:-1;;;28825:313:0:o;5594:231::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;5686:6:::1;::::0;;5665:81:::1;::::0;5702:42:::1;::::0;-1:-1:-1;;;;;5686:6:0;;::::1;::::0;5665:81:::1;::::0;::::1;5757:6;:60:::0;;-1:-1:-1;;;;;;5757:60:0::1;5774:42;5757:60;::::0;;5594:231::o;19847:313::-;19945:4;19962:36;19972:6;19980:9;19991:6;19962:9;:36::i;:::-;-1:-1:-1;20009:121:0;20018:6;193:10;20040:89;20078:6;20040:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20040:19:0;;;;;;:11;:19;;;;;;;;193:10;20040:33;;;;;;;;;;:37;:89::i;:::-;20009:8;:121::i;:::-;-1:-1:-1;20148:4:0;19847:313;;;;;;:::o;28515:302::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;28619:16:::1;:25:::0;;;28655:16:::1;:29:::0;;;28695:16:::1;:32:::0;;;28749:60:::1;28714:13:::0;28749:38:::1;28638:6:::0;28674:10;28749:20:::1;:38::i;:60::-;28738:8;:71:::0;-1:-1:-1;;;28515:302:0:o;19414:156::-;-1:-1:-1;;;;;19549:11:0;18203:18;19467:7;18203:18;;;:9;:18;;;;;;19494:68;;:40;19511:22;19521:11;-1:-1:-1;;;;;18203:18:0;18177:7;18203:18;;;:9;:18;;;;;;;18111:123;19511:22;19494:12;;;:16;:40::i;:::-;:44;;:68::i;:::-;19487:75;;19414:156;:::o;29577:198::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29668:25:0;::::1;;::::0;;;:19:::1;:25;::::0;;;;;::::1;;:36;;::::0;::::1;;;;29660:61;;;;-1:-1:-1::0;;;29660:61:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29732:25:0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:35;;-1:-1:-1;;29732:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29577:198::o;18393:218::-;193:10;18481:4;18530:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18530:34:0;;;;;;;;;;18481:4;;18498:83;;18521:7;;18530:50;;18569:10;18530:38;:50::i;29977:124::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;30059:23:::1;:34:::0;29977:124::o;27360:103::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;27429:16:::1;:26:::0;;;::::1;;;;-1:-1:-1::0;;27429:26:0;;::::1;::::0;;;::::1;::::0;;27360:103::o;30636:748::-;30716:22;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;30753:35:::1;30810:16;30753:74;;30876:16;-1:-1:-1::0;;;;;30876:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;30858:53:0::1;;30920:4;30927:16;-1:-1:-1::0;;;;;30927:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30858:93;::::0;-1:-1:-1;;;;;;30858:93:0::1;::::0;;;;;;-1:-1:-1;;;;;5650:15:1;;;30858:93:0::1;::::0;::::1;5632:34:1::0;5702:15;;5682:18;;;5675:43;5567:18;;30858:93:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30841:110:::0;-1:-1:-1;;;;;;30967:28:0;::::1;30964:225;;31081:16;-1:-1:-1::0;;;;;31081:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;31063:74:0::1;;31146:4;31153:16;-1:-1:-1::0;;;;;31153:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31063:114;::::0;-1:-1:-1;;;;;;31063:114:0::1;::::0;;;;;;-1:-1:-1;;;;;5650:15:1;;;31063:114:0::1;::::0;::::1;5632:34:1::0;5702:15;;5682:18;;;5675:43;5567:18;;31063:114:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;31046:131;;30964:225;31201:11;:28:::0;;-1:-1:-1;;;;;31201:28:0;;::::1;-1:-1:-1::0;;;;;;31201:28:0;;::::1;::::0;::::1;::::0;;;31263:15:::1;:34:::0;;;;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;31263:34:0;;::::1;::::0;;;::::1;::::0;;31201:11:::1;31335:34:::0;;;:12:::1;:34;::::0;;;;:41;;-1:-1:-1;;31335:41:0::1;31201:28:::0;31335:41:::1;::::0;;31215:14;30636:748;-1:-1:-1;30636:748:0:o;30223:101::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;30293:12:::1;:23:::0;30223:101::o;30109:106::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;30186:10:::1;:21:::0;30109:106::o;29146:222::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;29252:15:::1;:25:::0;;-1:-1:-1;;;;;29252:25:0;;::::1;;;-1:-1:-1::0;;;;;;29252:25:0;;::::1;;::::0;;29288:15:::1;:28:::0;;;;::::1;-1:-1:-1::0;;;;;;29288:28:0;;::::1;;::::0;;29327:17:::1;:33:::0;;;;;::::1;::::0;::::1;;::::0;;29146:222::o;26655:206::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;26740:24:::1;26759:4;26740:18;:24::i;:::-;26732:83;;;::::0;-1:-1:-1;;;26732:83:0;;12932:2:1;26732:83:0::1;::::0;::::1;12914:21:1::0;12971:2;12951:18;;;12944:30;13010:34;12990:18;;;12983:62;-1:-1:-1;;;13061:18:1;;;13054:45;13116:19;;26732:83:0::1;12904:237:1::0;26732:83:0::1;-1:-1:-1::0;;;;;26826:17:0;;;::::1;;::::0;;;:11:::1;:17;::::0;;;;:27;;-1:-1:-1;;26826:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26655:206::o;17817:87::-;17856:13;17889:7;17882:14;;;;;:::i;27506:101::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;27577:12:::1;:22:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;27577:22:0;;::::1;::::0;;;::::1;::::0;;27506:101::o;18619:269::-;18712:4;18729:129;193:10;18752:7;18761:96;18800:15;18761:96;;;;;;;;;;;;;;;;;193:10;18761:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;18761:34:0;;;;;;;;;;;;:38;:96::i;19672:167::-;19750:4;19767:42;193:10;19791:9;19802:6;19767:9;:42::i;29376:193::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;29466:23:0;::::1;;::::0;;;:17:::1;:23;::::0;;;;;::::1;;:34;;::::0;::::1;;;;29458:59;;;;-1:-1:-1::0;;;29458:59:0::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29528:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:33;;-1:-1:-1;;29528:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;29376:193::o;30511:117::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30591:19:0;;;::::1;;::::0;;;:12:::1;:19;::::0;;;;:29;;-1:-1:-1;;30591:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30511:117::o;30332:171::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;30409:21:::1;:32:::0;;;::::1;;;;-1:-1:-1::0;;30409:32:0;;::::1;;::::0;;30457:38:::1;::::0;::::1;::::0;::::1;::::0;30433:8;6785:14:1;6778:22;6760:41;;6748:2;6733:18;;6715:92;30457:38:0::1;;;;;;;;30332:171:::0;:::o;27118:130::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;27210:30:::1;::::0;-1:-1:-1;;;27210:30:0;;-1:-1:-1;;;;;5921:32:1;;;27210:30:0::1;::::0;::::1;5903:51:1::0;5970:18;;;5963:34;;;27210:12:0;::::1;::::0;::::1;::::0;5876:18:1;;27210:30:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;27118:130:::0;;;:::o;26902:176::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;26967:58:::1;::::0;26955:7:::1;::::0;26975:10:::1;::::0;26999:21:::1;::::0;26955:7;26967:58;26955:7;26967:58;26999:21;26975:10;26967:58:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26954:71;;;27044:2;27036:34;;;::::0;-1:-1:-1;;;27036:34:0;;13348:2:1;27036:34:0::1;::::0;::::1;13330:21:1::0;13387:2;13367:18;;;13360:30;-1:-1:-1;;;13406:18:1;;;13399:50;13466:18;;27036:34:0::1;13320:170:1::0;27036:34:0::1;5473:1;26902:176::o:0;27256:96::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;27321:13:::1;:23:::0;;-1:-1:-1;;27321:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27256:96::o;5833:244::-;5403:6;;-1:-1:-1;;;;;5403:6:0;193:10;5403:22;5395:67;;;;-1:-1:-1;;;5395:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5922:22:0;::::1;5914:73;;;::::0;-1:-1:-1;;;5914:73:0;;8617:2:1;5914:73:0::1;::::0;::::1;8599:21:1::0;8656:2;8636:18;;;8629:30;8695:34;8675:18;;;8668:62;-1:-1:-1;;;8746:18:1;;;8739:36;8792:19;;5914:73:0::1;8589:228:1::0;5914:73:0::1;6024:6;::::0;;6003:38:::1;::::0;-1:-1:-1;;;;;6003:38:0;;::::1;::::0;6024:6;::::1;::::0;6003:38:::1;::::0;::::1;6052:6;:17:::0;;-1:-1:-1;;;;;;6052:17:0::1;-1:-1:-1::0;;;;;6052:17:0;;;::::1;::::0;;;::::1;::::0;;5833:244::o;1579:250::-;1637:7;1661:6;1657:47;;-1:-1:-1;1691:1:0;1684:8;;1657:47;1716:9;1728:5;1732:1;1728;:5;:::i;:::-;1716:17;-1:-1:-1;1761:1:0;1752:5;1756:1;1716:17;1752:5;:::i;:::-;:10;1744:56;;;;-1:-1:-1;;;1744:56:0;;10534:2:1;1744:56:0;;;10516:21:1;10573:2;10553:18;;;10546:30;10612:34;10592:18;;;10585:62;-1:-1:-1;;;10663:18:1;;;10656:31;10704:19;;1744:56:0;10506:223:1;1837:132:0;1895:7;1922:39;1926:1;1929;1922:39;;;;;;;;;;;;;;;;;:3;:39::i;19065:337::-;-1:-1:-1;;;;;19158:19:0;;19150:68;;;;-1:-1:-1;;;19150:68:0;;12113:2:1;19150:68:0;;;12095:21:1;12152:2;12132:18;;;12125:30;12191:34;12171:18;;;12164:62;-1:-1:-1;;;12242:18:1;;;12235:34;12286:19;;19150:68:0;12085:226:1;19150:68:0;-1:-1:-1;;;;;19237:21:0;;19229:68;;;;-1:-1:-1;;;19229:68:0;;9024:2:1;19229:68:0;;;9006:21:1;9063:2;9043:18;;;9036:30;9102:34;9082:18;;;9075:62;-1:-1:-1;;;9153:18:1;;;9146:32;9195:19;;19229:68:0;8996:224:1;19229:68:0;-1:-1:-1;;;;;19310:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19362:32;;13641:25:1;;;19362:32:0;;13614:18:1;19362:32:0;;;;;;;19065:337;;;:::o;1046:181::-;1104:7;;1136:5;1140:1;1136;:5;:::i;:::-;1124:17;;1165:1;1160;:6;;1152:46;;;;-1:-1:-1;;;1152:46:0;;9427:2:1;1152:46:0;;;9409:21:1;9466:2;9446:18;;;9439:30;9505:29;9485:18;;;9478:57;9552:18;;1152:46:0;9399:177:1;20168:2062:0;20255:4;-1:-1:-1;;;;;20282:20:0;;20274:70;;;;-1:-1:-1;;;20274:70:0;;11707:2:1;20274:70:0;;;11689:21:1;11746:2;11726:18;;;11719:30;11785:34;11765:18;;;11758:62;-1:-1:-1;;;11836:18:1;;;11829:35;11881:19;;20274:70:0;11679:227:1;20274:70:0;-1:-1:-1;;;;;20363:23:0;;20355:71;;;;-1:-1:-1;;;20355:71:0;;7857:2:1;20355:71:0;;;7839:21:1;7896:2;7876:18;;;7869:30;7935:34;7915:18;;;7908:62;-1:-1:-1;;;7986:18:1;;;7979:33;8029:19;;20355:71:0;7829:225:1;20355:71:0;20454:1;20445:6;:10;20437:64;;;;-1:-1:-1;;;20437:64:0;;11297:2:1;20437:64:0;;;11279:21:1;11336:2;11316:18;;;11309:30;11375:34;11355:18;;;11348:62;-1:-1:-1;;;11426:18:1;;;11419:39;11475:19;;20437:64:0;11269:231:1;20437:64:0;-1:-1:-1;;;;;20521:19:0;;;;;;:11;:19;;;;;;;;20520:20;:47;;;;-1:-1:-1;;;;;;20545:22:0;;;;;;:11;:22;;;;;;;;20544:23;20520:47;20512:104;;;;-1:-1:-1;;;20512:104:0;;12518:2:1;20512:104:0;;;12500:21:1;12557:2;12537:18;;;12530:30;12596:34;12576:18;;;12569:62;-1:-1:-1;;;12647:18:1;;;12640:43;12700:19;;20512:104:0;12490:235:1;20512:104:0;20641:12;;;;;;;20637:301;;20683:7;;20673;;:17;:31;;;;-1:-1:-1;20695:9:0;;;;20694:10;20673:31;20670:116;;;20725:10;:8;:10::i;:::-;20754:9;:16;;-1:-1:-1;;20754:16:0;20766:4;20754:16;;;20670:116;20803:9;;;;:23;;;;-1:-1:-1;20817:9:0;;;;;;;20816:10;20803:23;:44;;;;;20840:7;;20830;;:17;20803:44;20800:127;;;20868:8;:6;:8::i;:::-;20895:9;:16;;-1:-1:-1;;20895:16:0;;;;;20800:127;20953:16;;;;20950:1273;;;21003:41;21018:6;21026:9;21037:6;21003:14;:41::i;:::-;20996:48;;;;20950:1273;-1:-1:-1;;;;;21102:23:0;;;;;;:15;:23;;;;;;;;21101:24;:55;;;;-1:-1:-1;;;;;;21130:26:0;;;;;;:15;:26;;;;;;;;21129:27;21101:55;:72;;;;-1:-1:-1;21160:13:0;;;;21101:72;21098:187;;;21212:12;;21202:6;:22;;21194:75;;;;-1:-1:-1;;;21194:75:0;;10125:2:1;21194:75:0;;;10107:21:1;10164:2;10144:18;;;10137:30;10203:34;10183:18;;;10176:62;-1:-1:-1;;;10254:18:1;;;10247:38;10302:19;;21194:75:0;10097:230:1;21194:75:0;21351:4;21302:28;18203:18;;;:9;:18;;;;;;21427:23;;21403:47;;;;;;;21483:44;;-1:-1:-1;21511:16:0;;;;21510:17;21483:44;:69;;;;-1:-1:-1;;;;;;21532:20:0;;;;;;:12;:20;;;;;;;;21531:21;21483:69;:94;;;;-1:-1:-1;21556:21:0;;;;;;;21483:94;21479:165;;;21612:16;:14;:16::i;:::-;21680:53;;;;;;;;;;;-1:-1:-1;;;21680:53:0;;;;;;;;-1:-1:-1;;;;;21680:17:0;;-1:-1:-1;21680:17:0;;;:9;:17;;;;;;;;:53;;21702:6;;21680:21;:53::i;:::-;-1:-1:-1;;;;;21660:17:0;;;;;;:9;:17;;;;;:73;;;;21772:31;21670:6;21793:9;21772:13;:31::i;:::-;:77;;21815:34;21823:6;21831:9;21842:6;21815:7;:34::i;:::-;21772:77;;;21806:6;21772:77;21869:16;;21750:99;;-1:-1:-1;21869:16:0;;;;;:51;;;;-1:-1:-1;;;;;;21890:30:0;;;;;;:19;:30;;;;;;;;21889:31;21869:51;21866:181;;;21990:10;;21949:37;21974:11;21949:20;21959:9;-1:-1:-1;;;;;18203:18:0;18177:7;18203:18;;;:9;:18;;;;;;;18111:123;21949:37;:51;;21941:90;;;;-1:-1:-1;;;21941:90:0;;8261:2:1;21941:90:0;;;8243:21:1;8300:2;8280:18;;;8273:30;8339:29;8319:18;;;8312:57;8386:18;;21941:90:0;8233:177:1;21941:90:0;-1:-1:-1;;;;;22086:20:0;;;;;;:9;:20;;;;;;:37;;22111:11;22086:24;:37::i;:::-;-1:-1:-1;;;;;22063:20:0;;;;;;;:9;:20;;;;;;;:60;;;;22145:40;;;;;;;;;;22173:11;13641:25:1;;13629:2;13614:18;;13596:76;22145:40:0;;;;;;;;22207:4;22200:11;;;;;;;1379:192;1465:7;1501:12;1493:6;;;;1485:29;;;;-1:-1:-1;;;1485:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1525:9:0;1537:5;1541:1;1537;:5;:::i;:::-;1525:17;1379:192;-1:-1:-1;;;;;1379:192:0:o;1235:136::-;1293:7;1320:43;1324:1;1327;1320:43;;;;;;;;;;;;;;;;;:3;:43::i;2599:357::-;2659:4;2865:20;;2729:66;2905:23;;;;;;:42;;-1:-1:-1;2932:15:0;;;2905:42;2897:51;2599:357;-1:-1:-1;;;;2599:357:0:o;1977:278::-;2063:7;2098:12;2091:5;2083:28;;;;-1:-1:-1;;;2083:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2122:9:0;2134:5;2138:1;2134;:5;:::i;27644:398::-;27703:1;27684:16;:20;;;27715:16;:20;;;27765:3;27746:16;:22;;;27790:60;;:38;;27703:1;27790:20;:38::i;:60::-;27779:8;:71;27881:1;27861:17;:21;;;27893:17;:21;;;27945:3;27925:17;:23;;;27971:63;;:40;;27881:1;27971:21;:40::i;:63::-;27959:9;:75;27644:398::o;28066:394::-;28123:1;28104:16;:20;;;28135:16;:20;;;28185:2;28166:16;:21;;;28209:60;;:38;;28123:1;28209:20;:38::i;:60::-;28198:8;:71;28300:1;28280:17;:21;;;28312:17;:21;;;28364:2;28344:17;:22;;;28389:63;;:40;;28300:1;28389:21;:40::i;22238:330::-;22368:53;;;;;;;;;;;-1:-1:-1;;;22368:53:0;;;;;;;;-1:-1:-1;;;;;22368:17:0;;22331:4;22368:17;;;:9;:17;;;;;;;:53;;22390:6;;22368:21;:53::i;:::-;-1:-1:-1;;;;;22348:17:0;;;;;;;:9;:17;;;;;;:73;;;;22455:20;;;;;;;:32;;22480:6;22455:24;:32::i;:::-;-1:-1:-1;;;;;22432:20:0;;;;;;;:9;:20;;;;;;;:55;;;;22503:35;;;;;;;;;;22531:6;13641:25:1;;13629:2;13614:18;;13596:76;22503:35:0;;;;;;;;-1:-1:-1;22556:4:0;22238:330;;;;;:::o;22577:1425::-;16420:16;:23;;-1:-1:-1;;16420:23:0;16439:4;16420:23;;;22680:4:::1;-1:-1:-1::0;18203:18:0;;;:9;:18;;;;;;22636:50;-1:-1:-1;22702:20:0;22699:32:::1;;22724:7;;;22699:32;22743:19;22765:23;22778:9;;22765:8;;:12;;:23;;;;:::i;:::-;22743:45;;22799:23;22825:39;22846:17;;22825:16;;:20;;:39;;;;:::i;:::-;22799:65;;22875:23;22901:39;22922:17;;22901:16;;:20;;:39;;;;:::i;:::-;22875:65:::0;-1:-1:-1;22953:19:0::1;22975:60;23033:1;22975:53;23016:11:::0;22975:53;:15;22995;22975:19:::1;:36::i;:::-;:40:::0;::::1;:53::i;:60::-;22953:82:::0;-1:-1:-1;23046:21:0::1;23070:32;:15:::0;22953:82;23070:19:::1;:32::i;:::-;23046:56:::0;-1:-1:-1;23140:21:0::1;23172:31;23046:56:::0;23172:16:::1;:31::i;:::-;23214:22;23239:41;:21;23265:14:::0;23239:25:::1;:41::i;:::-;23214:66:::0;-1:-1:-1;23293:19:0::1;23315:39;23331:22;:15:::0;23351:1:::1;23331:19;:22::i;:::-;23315:11:::0;;:15:::1;:39::i;:::-;23293:61:::0;-1:-1:-1;23375:26:0::1;23404:59;23461:1;23404:52;23293:61:::0;23404:52;:14;23423:15;23404:18:::1;:35::i;:59::-;23375:88:::0;-1:-1:-1;23474:26:0::1;23503:52;23543:11:::0;23503:35:::1;:14:::0;23522:15;23503:18:::1;:35::i;:52::-;23474:81:::0;-1:-1:-1;23566:26:0::1;23595:62;23474:81:::0;23595:38:::1;:14:::0;23614:18;23595::::1;:38::i;:62::-;23566:91:::0;-1:-1:-1;23673:22:0;;23670:97:::1;;23731:15;::::0;23710:57:::1;::::0;23731:15:::1;::::0;::::1;-1:-1:-1::0;;;;;23731:15:0::1;23748:18:::0;23710:20:::1;:57::i;:::-;23783:22:::0;;23780:97:::1;;23841:15;::::0;23820:57:::1;::::0;-1:-1:-1;;;;;23841:15:0::1;23858:18:::0;23820:20:::1;:57::i;:::-;23914:1;23893:18;:22;:41;;;;;23933:1;23919:11;:15;23893:41;23890:104;;;23949:45;23962:11;23975:18;23949:12;:45::i;:::-;16454:1;;;;;;;;;;;;;16466:16:::0;:24;;-1:-1:-1;;16466:24:0;;;22577:1425::o;25354:397::-;-1:-1:-1;;;;;25450:25:0;;25430:4;25450:25;;;:17;:25;;;;;;;;;:57;;-1:-1:-1;;;;;;25479:28:0;;;;;;:17;:28;;;;;;;;25450:57;25447:297;;;-1:-1:-1;25531:4:0;25524:11;;25447:297;-1:-1:-1;;;;;25566:20:0;;;;;;:12;:20;;;;;;;;;:47;;-1:-1:-1;;;;;;25590:23:0;;;;;;:12;:23;;;;;;;;25566:47;25562:182;;;25640:7;;:11;;25650:1;25640:11;:::i;:::-;25630:7;:21;-1:-1:-1;25673:5:0;25666:12;;25562:182;-1:-1:-1;25727:5:0;25720:12;;25759:724;-1:-1:-1;;;;;25932:20:0;;25845:7;25932:20;;;:12;:20;;;;;;25845:7;;25932:20;;25929:275;;;25999:37;26024:11;;25999:20;26010:8;;25999:6;:10;;:20;;;;:::i;:37::-;25987:49;;25929:275;;;-1:-1:-1;;;;;26074:23:0;;;;;;:12;:23;;;;;;;;26071:133;;;26132:38;26158:11;;26132:21;26143:9;;26132:6;:10;;:21;;;;:::i;:38::-;26120:50;;26071:133;26228:13;;26225:185;;26307:4;26289:24;;;;:9;:24;;;;;;:39;;26318:9;26289:28;:39::i;:::-;26280:4;26262:24;;;;:9;:24;;;;;;;:66;;;;26352:42;;-1:-1:-1;;;;;26352:42:0;;;;;;;26384:9;13641:25:1;;13629:2;13614:18;;13596:76;26352:42:0;;;;;;;;26225:185;26433:21;:6;26444:9;26433:10;:21::i;24149:666::-;24299:16;;;24313:1;24299:16;;;;;;;;24275:21;;24299:16;;;;;;;;;;-1:-1:-1;24299:16:0;24275:40;;24344:4;24326;24331:1;24326:7;;;;;;-1:-1:-1;;;24326:7:0;;;;;;;;;;;;;;:23;-1:-1:-1;;;;;24326:23:0;;;-1:-1:-1;;;;;24326:23:0;;;;;24370:15;;;;;;;;;-1:-1:-1;;;;;24370:15:0;-1:-1:-1;;;;;24370:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24360:4;24365:1;24360:7;;;;;;-1:-1:-1;;;24360:7:0;;;;;;;;;-1:-1:-1;;;;;24360:32:0;;;:7;;;;;;;;;:32;24437:15;;24405:62;;24422:4;;24437:15;;;;24455:11;24405:8;:62::i;:::-;24506:15;;:240;;-1:-1:-1;;;24506:240:0;;:15;;;;-1:-1:-1;;;;;24506:15:0;;:66;;:240;;24587:11;;24613:1;;24657:4;;24684;;24720:15;;24506:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24772:35;24789:11;24802:4;24772:35;;;;;;;:::i;:::-;;;;;;;;24149:666;;:::o;24010:127::-;24094:35;;-1:-1:-1;;;;;24094:27:0;;;:35;;;;;24122:6;;24094:35;;;;24122:6;24094:27;:35;;;;;;;;;;;;;;;;;;;;;24010:127;;:::o;24823:523::-;25003:15;;24971:62;;24988:4;;25003:15;;;-1:-1:-1;;;;;25003:15:0;25021:11;24971:8;:62::i;:::-;25076:15;;25280:17;;25076:262;;-1:-1:-1;;;25076:262:0;;25148:4;25076:262;;;6349:34:1;6399:18;;;6392:34;;;25194:1:0;6442:18:1;;;6435:34;;;6485:18;;;6478:34;-1:-1:-1;;;;;25280:17:0;;;6528:19:1;;;6521:44;25312:15:0;6581:19:1;;;6574:35;25076:15:0;;;;;;:31;;25115:9;;6283:19:1;;25076:262:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24823:523;;:::o;14:257:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:1;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:539::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:1;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1347:7;-1:-1:-1;1406:2:1;1391:18;;1378:32;1419:33;1378:32;1419:33;:::i;:::-;1471:7;1461:17;;;1049:435;;;;;:::o;1489:466::-;1566:6;1574;1582;1635:2;1623:9;1614:7;1610:23;1606:32;1603:2;;;1656:6;1648;1641:22;1603:2;1700:9;1687:23;1719:31;1744:5;1719:31;:::i;:::-;1769:5;-1:-1:-1;1826:2:1;1811:18;;1798:32;1839:33;1798:32;1839:33;:::i;:::-;1593:362;;1891:7;;-1:-1:-1;;;1945:2:1;1930:18;;;;1917:32;;1593:362::o;1960:392::-;2025:6;2033;2086:2;2074:9;2065:7;2061:23;2057:32;2054:2;;;2107:6;2099;2092:22;2054:2;2151:9;2138:23;2170:31;2195:5;2170:31;:::i;:::-;2220:5;-1:-1:-1;2277:2:1;2262:18;;2249:32;2290:30;2249:32;2290:30;:::i;2357:325::-;2425:6;2433;2486:2;2474:9;2465:7;2461:23;2457:32;2454:2;;;2507:6;2499;2492:22;2454:2;2551:9;2538:23;2570:31;2595:5;2570:31;:::i;:::-;2620:5;2672:2;2657:18;;;;2644:32;;-1:-1:-1;;;2444:238:1:o;2687:251::-;2743:6;2796:2;2784:9;2775:7;2771:23;2767:32;2764:2;;;2817:6;2809;2802:22;2764:2;2861:9;2848:23;2880:28;2902:5;2880:28;:::i;2943:255::-;3010:6;3063:2;3051:9;3042:7;3038:23;3034:32;3031:2;;;3084:6;3076;3069:22;3031:2;3121:9;3115:16;3140:28;3162:5;3140:28;:::i;3687:190::-;3746:6;3799:2;3787:9;3778:7;3774:23;3770:32;3767:2;;;3820:6;3812;3805:22;3767:2;-1:-1:-1;3848:23:1;;3757:120;-1:-1:-1;3757:120:1:o;3882:326::-;3959:6;3967;3975;4028:2;4016:9;4007:7;4003:23;3999:32;3996:2;;;4049:6;4041;4034:22;3996:2;-1:-1:-1;;4077:23:1;;;4147:2;4132:18;;4119:32;;-1:-1:-1;4198:2:1;4183:18;;;4170:32;;3986:222;-1:-1:-1;3986:222:1:o;4213:316::-;4301:6;4309;4317;4370:2;4358:9;4349:7;4345:23;4341:32;4338:2;;;4391:6;4383;4376:22;4338:2;4425:9;4419:16;4409:26;;4475:2;4464:9;4460:18;4454:25;4444:35;;4519:2;4508:9;4504:18;4498:25;4488:35;;4328:201;;;;;:::o;4534:463::-;4587:3;4625:5;4619:12;4652:6;4647:3;4640:19;4678:4;4707:2;4702:3;4698:12;4691:19;;4744:2;4737:5;4733:14;4765:3;4777:195;4791:6;4788:1;4785:13;4777:195;;;4856:13;;-1:-1:-1;;;;;4852:39:1;4840:52;;4912:12;;;;4947:15;;;;4888:1;4806:9;4777:195;;;-1:-1:-1;4988:3:1;;4595:402;-1:-1:-1;;;;;4595:402:1:o;7047:603::-;7159:4;7188:2;7217;7206:9;7199:21;7249:6;7243:13;7292:6;7287:2;7276:9;7272:18;7265:34;7317:4;7330:140;7344:6;7341:1;7338:13;7330:140;;;7439:14;;;7435:23;;7429:30;7405:17;;;7424:2;7401:26;7394:66;7359:10;;7330:140;;;7488:6;7485:1;7482:13;7479:2;;;7558:4;7553:2;7544:6;7533:9;7529:22;7525:31;7518:45;7479:2;-1:-1:-1;7634:2:1;7613:15;-1:-1:-1;;7609:29:1;7594:45;;;;7641:2;7590:54;;7168:482;-1:-1:-1;;;7168:482:1:o;9581:337::-;9783:2;9765:21;;;9822:2;9802:18;;;9795:30;-1:-1:-1;;;9856:2:1;9841:18;;9834:43;9909:2;9894:18;;9755:163::o;10734:356::-;10936:2;10918:21;;;10955:18;;;10948:30;11014:34;11009:2;10994:18;;10987:62;11081:2;11066:18;;10908:182::o;13677:332::-;13884:6;13873:9;13866:25;13927:2;13922;13911:9;13907:18;13900:30;13847:4;13947:56;13999:2;13988:9;13984:18;13976:6;13947:56;:::i;14014:582::-;14313:6;14302:9;14295:25;14356:6;14351:2;14340:9;14336:18;14329:34;14399:3;14394:2;14383:9;14379:18;14372:31;14276:4;14420:57;14472:3;14461:9;14457:19;14449:6;14420:57;:::i;:::-;-1:-1:-1;;;;;14513:32:1;;;;14508:2;14493:18;;14486:60;-1:-1:-1;14577:3:1;14562:19;14555:35;14412:65;14285:311;-1:-1:-1;;;14285:311:1:o;14790:128::-;14830:3;14861:1;14857:6;14854:1;14851:13;14848:2;;;14867:18;;:::i;:::-;-1:-1:-1;14903:9:1;;14838:80::o;14923:217::-;14963:1;14989;14979:2;;-1:-1:-1;;;15014:31:1;;15068:4;15065:1;15058:15;15096:4;15021:1;15086:15;14979:2;-1:-1:-1;15125:9:1;;14969:171::o;15145:168::-;15185:7;15251:1;15247;15243:6;15239:14;15236:1;15233:21;15228:1;15221:9;15214:17;15210:45;15207:2;;;15258:18;;:::i;:::-;-1:-1:-1;15298:9:1;;15197:116::o;15318:125::-;15358:4;15386:1;15383;15380:8;15377:2;;;15391:18;;:::i;:::-;-1:-1:-1;15428:9:1;;15367:76::o;15448:380::-;15527:1;15523:12;;;;15570;;;15591:2;;15645:4;15637:6;15633:17;15623:27;;15591:2;15698;15690:6;15687:14;15667:18;15664:38;15661:2;;;15744:10;15739:3;15735:20;15732:1;15725:31;15779:4;15776:1;15769:15;15807:4;15804:1;15797:15;15661:2;;15503:325;;;:::o;15833:127::-;15894:10;15889:3;15885:20;15882:1;15875:31;15925:4;15922:1;15915:15;15949:4;15946:1;15939:15;15965:131;-1:-1:-1;;;;;16040:31:1;;16030:42;;16020:2;;16086:1;16083;16076:12;16101:118;16187:5;16180:13;16173:21;16166:5;16163:32;16153:2;;16209:1;16206;16199:12

Swarm Source

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