ETH Price: $2,474.90 (+1.45%)

Token

PayMingle ($MINGLE)
 

Overview

Max Total Supply

1,000,000 $MINGLE

Holders

207

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.14208029 $MINGLE

Value
$0.00
0x2deb6a9596cf5c9e5191c8f6501ae52c31ce1f88
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:
PayMingleERC20

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-28
*/

/**

PayMingle is a revolutionary cryptocurrency payment system designed to empower online shops 
and event organizers with a secure, efficient, and seamless payment solution.

With our innovative utility, we offer user-friendly payment gateways, 
empowering individuals, businesses, and platforms to effortlessly transactions with cryptocurrencies. 

Web:        https://paymingle.io
Telegram:   https://t.me/PayMingleERC 
Twitter:    https://twitter.com/PayMingleERC


*/

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.21;

abstract contract Project {
    address public marketingWallet = 0xF6A9fc60eA821cC7DCfEB10637da70c582899343;
    address public devWallet = 0x4Aec85A284cC2505Db19DF54ec43f76b512d16A2;

    string constant _name = "PayMingle";
    string constant _symbol = "$MINGLE";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**6 * 10**_decimals;

    uint256 public _maxTxAmount = (_totalSupply * 20) / 1000; 
    uint256 public _maxWalletToken = (_totalSupply * 20) / 1000; 

    uint256 public buyFee             = 5;
    uint256 public buyTotalFee        = buyFee;

    uint256 public swapLpFee          = 1;
    uint256 public swapMarketing      = 4;
    uint256 public swapTreasuryFee    = 1;
    uint256 public swapTotalFee       = swapMarketing + swapLpFee + swapTreasuryFee;

    uint256 public transFee           = 0; 
    uint256 public feeDenominator     = 100;

}

library SafeMath {


    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }


    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

  
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

   
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

   
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

  
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}



contract Ownable is Context {
    address private _owner;
    address private _previousOwner;


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

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

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }


}


interface 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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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;
}


/**
 * PayMingle Contract & Functions
 */

contract PayMingleERC20 is Project, IERC20, Ownable {
    using SafeMath for uint256;

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

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isMaxExempt;

    address public autoLiquidityReceiver;

    uint256 targetLiquidity = 15;
    uint256 targetLiquidityDenominator = 100;

    IUniswapV2Router02 public immutable contractRouter;
    address public immutable uniswapV2Pair;

    bool public tradingOpen = false;

    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 5;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 30 / 10000;
    uint256 public swapAmount = _totalSupply * 30 / 10000;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);   //Uniswap Router
    
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        contractRouter = _uniswapV2Router;

        _allowances[address(this)][address(contractRouter)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isMaxExempt[msg.sender] = true;

        isFeeExempt[marketingWallet] = true;
        isMaxExempt[marketingWallet] = true;
        isTxLimitExempt[marketingWallet] = true;

        autoLiquidityReceiver = msg.sender;

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

    receive() external payable { }

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

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }
    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

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

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

        if(sender != owner() && recipient != owner()){
            require(tradingOpen,"Trading not open yet");
        }

        bool inSell = (recipient == uniswapV2Pair);
        bool inTransfer = (recipient != uniswapV2Pair && sender != uniswapV2Pair);

        if (recipient != address(this) && 
            recipient != address(DEAD) && 
            recipient != uniswapV2Pair && 
            recipient != marketingWallet && 
            recipient != devWallet && 
            recipient != autoLiquidityReceiver
        ){
            uint256 heldTokens = balanceOf(recipient);
            if(!isMaxExempt[recipient]) {
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }
        }

        if (sender == uniswapV2Pair &&
            buyCooldownEnabled 
        ){
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }


        if(!isTxLimitExempt[recipient]) {
            checkTxLimit(sender, amount);
        }


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

        uint256 amountReceived = amount;


        if(inTransfer) {
            if(transFee > 0) {
                amountReceived = takeTransferFee(sender, amount);
            }
        } else {
            amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount, inSell) : amount;
            
            if(shouldSwapBack()){ swapBack(); }
        }

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

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

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

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

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



    function takeTransferFee(address sender, uint256 amount) internal returns (uint256) {

        uint256 feeToTake = transFee;
        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {

        uint256 feeToTake = isSell ? swapTotalFee : buyTotalFee;
        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }


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


    function clearStuckBalance(uint256 amountPercentage) external  {
        uint256 amountETH = address(this).balance;
        payable(marketingWallet).transfer(amountETH * amountPercentage / 100);
    }


    function tradingStatus(bool _status) public onlyOwner {
        tradingOpen = _status;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : swapLpFee;
        uint256 amountToLiquify = swapAmount.mul(dynamicLiquidityFee).div(swapTotalFee).div(2);
        uint256 amountToSwap = swapAmount.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

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

        uint256 totalETHFee = swapTotalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(swapLpFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(swapMarketing).div(totalETHFee);
        uint256 amountETHTreasury = amountETH.mul(swapTreasuryFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(devWallet).call{value: amountETHTreasury, gas: 30000}("");

        // Supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            contractRouter.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }



    function setIsFeeExempt(address holder, bool exempt) external onlyOwner() {
        isFeeExempt[holder] = exempt;
    }

    function setIsMaxExempt(address holder, bool exempt) external onlyOwner() {
        isMaxExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner() {
        isTxLimitExempt[holder] = exempt;
    }


    function setSwapFees(uint256 _newSwapLpFee, uint256 _newSwapMarketingFee, uint256 _newSwapTreasuryFee, uint256 _feeDenominator) external onlyOwner() {
        swapLpFee = _newSwapLpFee;
        swapMarketing = _newSwapMarketingFee;
        swapTreasuryFee = _newSwapTreasuryFee;
        swapTotalFee = _newSwapLpFee.add(_newSwapMarketingFee).add(_newSwapTreasuryFee);
        feeDenominator = _feeDenominator;
        require(swapTotalFee < 90, "Fees cannot be that high");
    }

    function setBuyFees(uint256 buyTax) external onlyOwner() {
        buyTotalFee = buyTax;
    }

    function setTreasuryFeeReceiver(address _newWallet) external onlyOwner() {
        isFeeExempt[devWallet] = false;
        isFeeExempt[_newWallet] = true;
        devWallet = _newWallet;
    }

    function setMarketingWallet(address _newWallet) external onlyOwner() {
        isFeeExempt[marketingWallet] = false;
        isFeeExempt[_newWallet] = true;

        isMaxExempt[_newWallet] = true;

        marketingWallet = _newWallet;
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _newMarketingWallet, address _newdevWallet ) external onlyOwner() {

        isFeeExempt[devWallet] = false;
        isFeeExempt[_newdevWallet] = true;
        isFeeExempt[marketingWallet] = false;
        isFeeExempt[_newMarketingWallet] = true;

        isMaxExempt[_newMarketingWallet] = true;

        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingWallet = _newMarketingWallet;
        devWallet = _newdevWallet;
    }


    function setSwapThresholdAmount(uint256 _amount) external onlyOwner() {
        swapThreshold = _amount;
    }

    function setSwapAmount(uint256 _amount) external onlyOwner() {
        if(_amount > swapThreshold) {
            swapAmount = swapThreshold;
        } else {
            swapAmount = _amount;
        }        
    }


    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner() {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

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

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(uniswapV2Pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

   
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"}],"name":"setBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_newMarketingWallet","type":"address"},{"internalType":"address","name":"_newdevWallet","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapLpFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapTreasuryFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setSwapFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setTreasuryFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transFee","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040525f80546001600160a01b031990811673f6a9fc60ea821cc7dcfeb10637da70c5828993431790915560018054909116734aec85a284cc2505db19df54ec43f76b512d16a2179055620000596009600a62000546565b6200006890620f42406200055d565b6002556103e860025460146200007f91906200055d565b6200008b919062000577565b6003556103e86002546014620000a291906200055d565b620000ae919062000577565b60045560058055600554600655600160075560046008556001600955600954600754600854620000df919062000597565b620000eb919062000597565b600a555f600b556064600c819055600f805461dead6001600160a01b03199182161782556010805490911690556017556018556019805462ffffff191662050100179055601b805460ff19166001179055600254612710906200015090601e6200055d565b6200015c919062000577565b601c55612710600254601e6200017391906200055d565b6200017f919062000577565b601d553480156200018e575f80fd5b50600d80546001600160a01b0319163390811790915560405181905f907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000226573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200024c9190620005ad565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000298573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002be9190620005ad565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801562000309573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200032f9190620005ad565b6001600160a01b0390811660a0528181166080819052305f9081526012602090815260408083209383529281528282205f1990553380835260138083528484208054600160ff199182168117909255601480865287872080548316841790556015808752888820805484168517905587548a1688529386528787208054831684179055865489168752928552868620805482168317905585549097168552908352848420805490961617909455601680546001600160a01b0319168517905560025484835260118252838320819055925192835290917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a350620005d5565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200048b57815f19048211156200046f576200046f62000437565b808516156200047d57918102915b93841c939080029062000450565b509250929050565b5f82620004a35750600162000540565b81620004b157505f62000540565b8160018114620004ca5760028114620004d557620004f5565b600191505062000540565b60ff841115620004e957620004e962000437565b50506001821b62000540565b5060208310610133831016604e8410600b84101617156200051a575081810a62000540565b6200052683836200044b565b805f19048211156200053c576200053c62000437565b0290505b92915050565b5f6200055660ff84168362000493565b9392505050565b808202811582820484141762000540576200054062000437565b5f826200059257634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111562000540576200054062000437565b5f60208284031215620005be575f80fd5b81516001600160a01b038116811462000556575f80fd5b60805160a051612322620006365f395f81816105ad01528181610fde015281816113b9015281816113f201528181611459015281816115900152611aad01525f818161069201528181611bcc01528181611c840152611e7401526123225ff3fe60806040526004361061032a575f3560e01c806367ac77b4116101a3578063a9059cbb116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b1461096b578063f53fd5841461098a578063f84ba65d1461099f578063ffb54a99146109be575f80fd5b8063dd62ed3e146108f3578063e53c30b014610937578063e632313c1461094c575f80fd5b8063d51ed1c8116100cd578063d51ed1c814610877578063d7c0103214610896578063dcf7aef3146108b5578063dd395c63146108d4575f80fd5b8063a9059cbb1461081a578063bd9ab53714610839578063ca33e64c14610858575f80fd5b806378109e541161015d578063893d20e811610138578063893d20e81461079b5780638da5cb5b146107af5780638ea5220f146107cc57806395d89b41146107eb575f80fd5b806378109e54146107525780637d1db4a5146107675780638038cbd31461077c575f80fd5b806367ac77b4146106815780636ddd1713146106b457806370a08231146106cd578063715018a614610701578063722b62ad1461071557806375f0a87414610734575f80fd5b806323b872dd1161027957806347062402116102195780635c85974f116101f45780635c85974f146106065780635d098b3814610625578063617fe0ed14610644578063658d4b7f14610662575f80fd5b8063470624021461058757806349bd5a5e1461059c578063571ac8b0146105e7575f80fd5b80632e8fa821116102545780632e8fa82114610527578063313ce5671461053c5780633705b3921461055d57806346e421a214610572575f80fd5b806323b872dd146104d557806329e04b4a146104f45780632b112e4914610513575f80fd5b80631161ae39116102e45780631ad017b9116102bf5780631ad017b9146104635780631da1db5e146104825780631e25dc54146104a1578063201e7991146104b6575f80fd5b80631161ae391461041b578063180b0d7e1461043a57806318160ddd1461044f575f80fd5b8063026f7d15146103355780630445b6671461035d57806306fdde031461037257806309302dc6146103ac578063095ea7b3146103cd5780630d295980146103fc575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b5061034a60085481565b6040519081526020015b60405180910390f35b348015610368575f80fd5b5061034a601c5481565b34801561037d575f80fd5b506040805180820190915260098152685061794d696e676c6560b81b60208201525b6040516103549190611f37565b3480156103b7575f80fd5b506103cb6103c6366004611f82565b6109d7565b005b3480156103d8575f80fd5b506103ec6103e7366004611fad565b610a2b565b6040519015158152602001610354565b348015610407575f80fd5b506103cb610416366004611feb565b610a97565b348015610426575f80fd5b506103ec610435366004612004565b610ad4565b348015610445575f80fd5b5061034a600c5481565b34801561045a575f80fd5b5060025461034a565b34801561046e575f80fd5b506103cb61047d366004612024565b610ae7565b34801561048d575f80fd5b506103cb61049c366004611f82565b610b60565b3480156104ac575f80fd5b5061034a600b5481565b3480156104c1575f80fd5b506103cb6104d0366004612004565b610bb0565b3480156104e0575f80fd5b506103ec6104ef36600461203f565b610be5565b3480156104ff575f80fd5b506103cb61050e366004611f82565b610ca3565b34801561051e575f80fd5b5061034a610cd2565b348015610532575f80fd5b5061034a601d5481565b348015610547575f80fd5b5060095b60405160ff9091168152602001610354565b348015610568575f80fd5b5061034a60065481565b34801561057d575f80fd5b5061034a60075481565b348015610592575f80fd5b5061034a60055481565b3480156105a7575f80fd5b506105cf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610354565b3480156105f2575f80fd5b506103ec610601366004612024565b610d22565b348015610611575f80fd5b506103cb610620366004611f82565b610d2e565b348015610630575f80fd5b506103cb61063f366004612024565b610d5d565b34801561064f575f80fd5b506019546103ec90610100900460ff1681565b34801561066d575f80fd5b506103cb61067c36600461207d565b610de8565b34801561068c575f80fd5b506105cf7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106bf575f80fd5b50601b546103ec9060ff1681565b3480156106d8575f80fd5b5061034a6106e7366004612024565b6001600160a01b03165f9081526011602052604090205490565b34801561070c575f80fd5b506103cb610e3c565b348015610720575f80fd5b5060195461054b9062010000900460ff1681565b34801561073f575f80fd5b505f546105cf906001600160a01b031681565b34801561075d575f80fd5b5061034a60045481565b348015610772575f80fd5b5061034a60035481565b348015610787575f80fd5b506103cb6107963660046120b0565b610eaf565b3480156107a6575f80fd5b506105cf610f5b565b3480156107ba575f80fd5b50600d546001600160a01b03166105cf565b3480156107d7575f80fd5b506001546105cf906001600160a01b031681565b3480156107f6575f80fd5b50604080518082019091526007815266244d494e474c4560c81b602082015261039f565b348015610825575f80fd5b506103ec610834366004611fad565b610f6e565b348015610844575f80fd5b506103cb610853366004611f82565b610f7a565b348015610863575f80fd5b506016546105cf906001600160a01b031681565b348015610882575f80fd5b5061034a610891366004611f82565b610fc5565b3480156108a1575f80fd5b506103cb6108b03660046120df565b61102a565b3480156108c0575f80fd5b506103cb6108cf366004611f82565b6110ec565b3480156108df575f80fd5b506103cb6108ee36600461207d565b61111b565b3480156108fe575f80fd5b5061034a61090d366004612127565b6001600160a01b039182165f90815260126020908152604080832093909416825291909152205490565b348015610942575f80fd5b5061034a600a5481565b348015610957575f80fd5b506103cb610966366004611f82565b61116f565b348015610976575f80fd5b506103cb610985366004612024565b6111b5565b348015610995575f80fd5b5061034a60095481565b3480156109aa575f80fd5b506103cb6109b936600461207d565b61129f565b3480156109c9575f80fd5b506019546103ec9060ff1681565b600d546001600160a01b03163314610a0a5760405162461bcd60e51b8152600401610a019061215e565b60405180910390fd5b6103e881600254610a1b91906121a7565b610a2591906121be565b60045550565b335f8181526012602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a859086815260200190565b60405180910390a35060015b92915050565b600d546001600160a01b03163314610ac15760405162461bcd60e51b8152600401610a019061215e565b6019805460ff1916911515919091179055565b5f82610adf83610fc5565b119392505050565b600d546001600160a01b03163314610b115760405162461bcd60e51b8152600401610a019061215e565b600180546001600160a01b039081165f90815260136020526040808220805460ff19908116909155949092168082529190208054909316821790925580546001600160a01b0319169091179055565b5f5447906001600160a01b03166108fc6064610b7c85856121a7565b610b8691906121be565b6040518115909202915f818181858888f19350505050158015610bab573d5f803e3d5ffd5b505050565b600d546001600160a01b03163314610bda5760405162461bcd60e51b8152600401610a019061215e565b601791909155601855565b6001600160a01b0383165f9081526012602090815260408083203384529091528120545f1914610c8e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601282528381203382529091529190912054610c6a9184906112f3565b6001600160a01b0385165f9081526012602090815260408083203384529091529020555b610c9984848461131e565b90505b9392505050565b600d546001600160a01b03163314610ccd5760405162461bcd60e51b8152600401610a019061215e565b601c55565b6010546001600160a01b03165f90815260116020526040812054610d1d90600f546001600160a01b03165f90815260116020526040902054610d1790600254906117f0565b906117f0565b905090565b5f610a91825f19610a2b565b600d546001600160a01b03163314610d585760405162461bcd60e51b8152600401610a019061215e565b600355565b600d546001600160a01b03163314610d875760405162461bcd60e51b8152600401610a019061215e565b5f80546001600160a01b039081168252601360209081526040808420805460ff1990811690915594909216808452828420805486166001908117909155601590925291832080549094161790925580546001600160a01b0319169091179055565b600d546001600160a01b03163314610e125760405162461bcd60e51b8152600401610a019061215e565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314610e665760405162461bcd60e51b8152600401610a019061215e565b600d546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b600d546001600160a01b03163314610ed95760405162461bcd60e51b8152600401610a019061215e565b600784905560088390556009829055610efc82610ef686866117fb565b906117fb565b600a819055600c829055605a11610f555760405162461bcd60e51b815260206004820152601860248201527f466565732063616e6e6f742062652074686174206869676800000000000000006044820152606401610a01565b50505050565b5f610d1d600d546001600160a01b031690565b5f610c9c33848461131e565b600d546001600160a01b03163314610fa45760405162461bcd60e51b8152600401610a019061215e565b6103e881600254610fb591906121a7565b610fbf91906121be565b60035550565b5f610a91610fd1610cd2565b61102461101d60026110177f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165f9081526011602052604090205490565b90611806565b8590611806565b90611811565b600d546001600160a01b031633146110545760405162461bcd60e51b8152600401610a019061215e565b600180546001600160a01b039081165f908152601360209081526040808320805460ff1990811690915595841680845281842080548816871790558354851684528184208054881690559684168084528184208054881687179055601590925282208054909516841790945560168054969092166001600160a01b031996871617909155805485169092179091558054909216179055565b600d546001600160a01b031633146111165760405162461bcd60e51b8152600401610a019061215e565b600655565b600d546001600160a01b031633146111455760405162461bcd60e51b8152600401610a019061215e565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146111995760405162461bcd60e51b8152600401610a019061215e565b601c548111156111ac57601c54601d5550565b601d8190555b50565b600d546001600160a01b031633146111df5760405162461bcd60e51b8152600401610a019061215e565b6001600160a01b0381166112445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a01565b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b031633146112c95760405162461bcd60e51b8152600401610a019061215e565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b5f81848411156113165760405162461bcd60e51b8152600401610a019190611f37565b505050900390565b601e545f9060ff161561133d5761133684848461181c565b9050610c9c565b600d546001600160a01b038581169116148015906113695750600d546001600160a01b03848116911614155b156113b75760195460ff166113b75760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a01565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03908116908416145f81158261142757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906114505750600f546001600160a01b03868116911614155b801561148e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b031614155b80156114a757505f546001600160a01b03868116911614155b80156114c157506001546001600160a01b03868116911614155b80156114db57506016546001600160a01b03868116911614155b1561158e576001600160a01b0385165f9081526011602090815260408083205460159092529091205460ff1661158c5760045461151886836121dd565b111561158c5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610a01565b505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316866001600160a01b03161480156115d65750601954610100900460ff165b1561167e576001600160a01b0385165f908152601a6020526040902054421161164f5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610a01565b6019546116659062010000900460ff16426121dd565b6001600160a01b0386165f908152601a60205260409020555b6001600160a01b0385165f9081526014602052604090205460ff166116a7576116a786856118ec565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152601190915291909120546116f89186906112f3565b6001600160a01b0387165f9081526011602052604090205583811561173157600b541561172c576117298786611958565b90505b611779565b6001600160a01b0387165f9081526013602052604090205460ff16156117575784611762565b6117628786856119f5565b905061176c611aa1565b1561177957611779611b0b565b6001600160a01b0386165f9081526011602052604090205461179b90826117fb565b6001600160a01b038088165f8181526011602052604090819020939093559151908916905f805160206122cd833981519152906117db9085815260200190565b60405180910390a35060019695505050505050565b5f610c9c82846121f0565b5f610c9c82846121dd565b5f610c9c82846121a7565b5f610c9c82846121be565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260119091529182205461186c9184906112f3565b6001600160a01b038086165f90815260116020526040808220939093559085168152205461189a90836117fb565b6001600160a01b038085165f8181526011602052604090819020939093559151908616905f805160206122cd833981519152906118da9086815260200190565b60405180910390a35060019392505050565b6003548111158061191457506001600160a01b0382165f9081526014602052604090205460ff165b6119545760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a01565b5050565b5f80600b5490505f611981600c54606461197291906121a7565b61102460646110178887611806565b305f9081526011602052604090205490915061199d90826117fb565b305f81815260116020526040908190209290925590516001600160a01b038716905f805160206122cd833981519152906119da9085815260200190565b60405180910390a36119ec84826117f0565b95945050505050565b5f8082611a0457600654611a08565b600a545b90505f611a2c600c546064611a1d91906121a7565b61102460646110178987611806565b305f90815260116020526040902054909150611a4890826117fb565b305f81815260116020526040908190209290925590516001600160a01b038816905f805160206122cd83398151915290611a859085815260200190565b60405180910390a3611a9785826117f0565b9695505050505050565b5f336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590611ade5750601e5460ff16155b8015611aec5750601b5460ff165b8015610d1d575050601c54305f90815260116020526040902054101590565b601e805460ff191660011790556017546018545f91611b2991610ad4565b611b3557600754611b37565b5f5b90505f611b5a6002611024600a5461102486601d5461180690919063ffffffff16565b90505f611b7282601d546117f090919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611baa57611baa612203565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4a9190612217565b81600181518110611c5d57611c5d612203565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611cc19086905f90879030904290600401612232565b5f604051808303815f87803b158015611cd8575f80fd5b505af1158015611cea573d5f803e3d5ffd5b505050505f611d0282476117f090919063ffffffff16565b90505f611d1c611d13886002611811565b600a54906117f0565b90505f611d3d6002611024846110246007548861180690919063ffffffff16565b90505f611d59836110246008548761180690919063ffffffff16565b90505f611d75846110246009548861180690919063ffffffff16565b5f805460405192935090916001600160a01b039091169061753090859084818181858888f193505050503d805f8114611dc9576040519150601f19603f3d011682016040523d82523d5f602084013e611dce565b606091505b50506001546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114611e20576040519150601f19603f3d011682016040523d82523d5f602084013e611e25565b606091505b505f9250508a159050611f205760165460405163f305d71960e01b8152306004820152602481018c90525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f00000000000000000000000000000000000000000000000000000000000000009091169063f305d71990869060c40160606040518083038185885af1158015611ebe573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ee391906122a1565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff19169055505050505050505050565b5f6020808352835180828501525f5b81811015611f6257858101830151858201604001528201611f46565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215611f92575f80fd5b5035919050565b6001600160a01b03811681146111b2575f80fd5b5f8060408385031215611fbe575f80fd5b8235611fc981611f99565b946020939093013593505050565b80358015158114611fe6575f80fd5b919050565b5f60208284031215611ffb575f80fd5b610c9c82611fd7565b5f8060408385031215612015575f80fd5b50508035926020909101359150565b5f60208284031215612034575f80fd5b8135610c9c81611f99565b5f805f60608486031215612051575f80fd5b833561205c81611f99565b9250602084013561206c81611f99565b929592945050506040919091013590565b5f806040838503121561208e575f80fd5b823561209981611f99565b91506120a760208401611fd7565b90509250929050565b5f805f80608085870312156120c3575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f606084860312156120f1575f80fd5b83356120fc81611f99565b9250602084013561210c81611f99565b9150604084013561211c81611f99565b809150509250925092565b5f8060408385031215612138575f80fd5b823561214381611f99565b9150602083013561215381611f99565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a9157610a91612193565b5f826121d857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a9157610a91612193565b81810381811115610a9157610a91612193565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612227575f80fd5b8151610c9c81611f99565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156122805784516001600160a01b03168352938301939183019160010161225b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122b3575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205906d1fb6a81c90608b1acd4603eab3ab1239b72114bf040881f4e8faeeb493a64736f6c63430008150033

Deployed Bytecode

0x60806040526004361061032a575f3560e01c806367ac77b4116101a3578063a9059cbb116100f2578063dd62ed3e11610092578063f2fde38b1161006d578063f2fde38b1461096b578063f53fd5841461098a578063f84ba65d1461099f578063ffb54a99146109be575f80fd5b8063dd62ed3e146108f3578063e53c30b014610937578063e632313c1461094c575f80fd5b8063d51ed1c8116100cd578063d51ed1c814610877578063d7c0103214610896578063dcf7aef3146108b5578063dd395c63146108d4575f80fd5b8063a9059cbb1461081a578063bd9ab53714610839578063ca33e64c14610858575f80fd5b806378109e541161015d578063893d20e811610138578063893d20e81461079b5780638da5cb5b146107af5780638ea5220f146107cc57806395d89b41146107eb575f80fd5b806378109e54146107525780637d1db4a5146107675780638038cbd31461077c575f80fd5b806367ac77b4146106815780636ddd1713146106b457806370a08231146106cd578063715018a614610701578063722b62ad1461071557806375f0a87414610734575f80fd5b806323b872dd1161027957806347062402116102195780635c85974f116101f45780635c85974f146106065780635d098b3814610625578063617fe0ed14610644578063658d4b7f14610662575f80fd5b8063470624021461058757806349bd5a5e1461059c578063571ac8b0146105e7575f80fd5b80632e8fa821116102545780632e8fa82114610527578063313ce5671461053c5780633705b3921461055d57806346e421a214610572575f80fd5b806323b872dd146104d557806329e04b4a146104f45780632b112e4914610513575f80fd5b80631161ae39116102e45780631ad017b9116102bf5780631ad017b9146104635780631da1db5e146104825780631e25dc54146104a1578063201e7991146104b6575f80fd5b80631161ae391461041b578063180b0d7e1461043a57806318160ddd1461044f575f80fd5b8063026f7d15146103355780630445b6671461035d57806306fdde031461037257806309302dc6146103ac578063095ea7b3146103cd5780630d295980146103fc575f80fd5b3661033157005b5f80fd5b348015610340575f80fd5b5061034a60085481565b6040519081526020015b60405180910390f35b348015610368575f80fd5b5061034a601c5481565b34801561037d575f80fd5b506040805180820190915260098152685061794d696e676c6560b81b60208201525b6040516103549190611f37565b3480156103b7575f80fd5b506103cb6103c6366004611f82565b6109d7565b005b3480156103d8575f80fd5b506103ec6103e7366004611fad565b610a2b565b6040519015158152602001610354565b348015610407575f80fd5b506103cb610416366004611feb565b610a97565b348015610426575f80fd5b506103ec610435366004612004565b610ad4565b348015610445575f80fd5b5061034a600c5481565b34801561045a575f80fd5b5060025461034a565b34801561046e575f80fd5b506103cb61047d366004612024565b610ae7565b34801561048d575f80fd5b506103cb61049c366004611f82565b610b60565b3480156104ac575f80fd5b5061034a600b5481565b3480156104c1575f80fd5b506103cb6104d0366004612004565b610bb0565b3480156104e0575f80fd5b506103ec6104ef36600461203f565b610be5565b3480156104ff575f80fd5b506103cb61050e366004611f82565b610ca3565b34801561051e575f80fd5b5061034a610cd2565b348015610532575f80fd5b5061034a601d5481565b348015610547575f80fd5b5060095b60405160ff9091168152602001610354565b348015610568575f80fd5b5061034a60065481565b34801561057d575f80fd5b5061034a60075481565b348015610592575f80fd5b5061034a60055481565b3480156105a7575f80fd5b506105cf7f000000000000000000000000b532867861193f98d825088dd6bfffd5643e655181565b6040516001600160a01b039091168152602001610354565b3480156105f2575f80fd5b506103ec610601366004612024565b610d22565b348015610611575f80fd5b506103cb610620366004611f82565b610d2e565b348015610630575f80fd5b506103cb61063f366004612024565b610d5d565b34801561064f575f80fd5b506019546103ec90610100900460ff1681565b34801561066d575f80fd5b506103cb61067c36600461207d565b610de8565b34801561068c575f80fd5b506105cf7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b3480156106bf575f80fd5b50601b546103ec9060ff1681565b3480156106d8575f80fd5b5061034a6106e7366004612024565b6001600160a01b03165f9081526011602052604090205490565b34801561070c575f80fd5b506103cb610e3c565b348015610720575f80fd5b5060195461054b9062010000900460ff1681565b34801561073f575f80fd5b505f546105cf906001600160a01b031681565b34801561075d575f80fd5b5061034a60045481565b348015610772575f80fd5b5061034a60035481565b348015610787575f80fd5b506103cb6107963660046120b0565b610eaf565b3480156107a6575f80fd5b506105cf610f5b565b3480156107ba575f80fd5b50600d546001600160a01b03166105cf565b3480156107d7575f80fd5b506001546105cf906001600160a01b031681565b3480156107f6575f80fd5b50604080518082019091526007815266244d494e474c4560c81b602082015261039f565b348015610825575f80fd5b506103ec610834366004611fad565b610f6e565b348015610844575f80fd5b506103cb610853366004611f82565b610f7a565b348015610863575f80fd5b506016546105cf906001600160a01b031681565b348015610882575f80fd5b5061034a610891366004611f82565b610fc5565b3480156108a1575f80fd5b506103cb6108b03660046120df565b61102a565b3480156108c0575f80fd5b506103cb6108cf366004611f82565b6110ec565b3480156108df575f80fd5b506103cb6108ee36600461207d565b61111b565b3480156108fe575f80fd5b5061034a61090d366004612127565b6001600160a01b039182165f90815260126020908152604080832093909416825291909152205490565b348015610942575f80fd5b5061034a600a5481565b348015610957575f80fd5b506103cb610966366004611f82565b61116f565b348015610976575f80fd5b506103cb610985366004612024565b6111b5565b348015610995575f80fd5b5061034a60095481565b3480156109aa575f80fd5b506103cb6109b936600461207d565b61129f565b3480156109c9575f80fd5b506019546103ec9060ff1681565b600d546001600160a01b03163314610a0a5760405162461bcd60e51b8152600401610a019061215e565b60405180910390fd5b6103e881600254610a1b91906121a7565b610a2591906121be565b60045550565b335f8181526012602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a859086815260200190565b60405180910390a35060015b92915050565b600d546001600160a01b03163314610ac15760405162461bcd60e51b8152600401610a019061215e565b6019805460ff1916911515919091179055565b5f82610adf83610fc5565b119392505050565b600d546001600160a01b03163314610b115760405162461bcd60e51b8152600401610a019061215e565b600180546001600160a01b039081165f90815260136020526040808220805460ff19908116909155949092168082529190208054909316821790925580546001600160a01b0319169091179055565b5f5447906001600160a01b03166108fc6064610b7c85856121a7565b610b8691906121be565b6040518115909202915f818181858888f19350505050158015610bab573d5f803e3d5ffd5b505050565b600d546001600160a01b03163314610bda5760405162461bcd60e51b8152600401610a019061215e565b601791909155601855565b6001600160a01b0383165f9081526012602090815260408083203384529091528120545f1914610c8e576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f908152601282528381203382529091529190912054610c6a9184906112f3565b6001600160a01b0385165f9081526012602090815260408083203384529091529020555b610c9984848461131e565b90505b9392505050565b600d546001600160a01b03163314610ccd5760405162461bcd60e51b8152600401610a019061215e565b601c55565b6010546001600160a01b03165f90815260116020526040812054610d1d90600f546001600160a01b03165f90815260116020526040902054610d1790600254906117f0565b906117f0565b905090565b5f610a91825f19610a2b565b600d546001600160a01b03163314610d585760405162461bcd60e51b8152600401610a019061215e565b600355565b600d546001600160a01b03163314610d875760405162461bcd60e51b8152600401610a019061215e565b5f80546001600160a01b039081168252601360209081526040808420805460ff1990811690915594909216808452828420805486166001908117909155601590925291832080549094161790925580546001600160a01b0319169091179055565b600d546001600160a01b03163314610e125760405162461bcd60e51b8152600401610a019061215e565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b600d546001600160a01b03163314610e665760405162461bcd60e51b8152600401610a019061215e565b600d546040515f916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600d80546001600160a01b0319169055565b600d546001600160a01b03163314610ed95760405162461bcd60e51b8152600401610a019061215e565b600784905560088390556009829055610efc82610ef686866117fb565b906117fb565b600a819055600c829055605a11610f555760405162461bcd60e51b815260206004820152601860248201527f466565732063616e6e6f742062652074686174206869676800000000000000006044820152606401610a01565b50505050565b5f610d1d600d546001600160a01b031690565b5f610c9c33848461131e565b600d546001600160a01b03163314610fa45760405162461bcd60e51b8152600401610a019061215e565b6103e881600254610fb591906121a7565b610fbf91906121be565b60035550565b5f610a91610fd1610cd2565b61102461101d60026110177f000000000000000000000000b532867861193f98d825088dd6bfffd5643e65516001600160a01b03165f9081526011602052604090205490565b90611806565b8590611806565b90611811565b600d546001600160a01b031633146110545760405162461bcd60e51b8152600401610a019061215e565b600180546001600160a01b039081165f908152601360209081526040808320805460ff1990811690915595841680845281842080548816871790558354851684528184208054881690559684168084528184208054881687179055601590925282208054909516841790945560168054969092166001600160a01b031996871617909155805485169092179091558054909216179055565b600d546001600160a01b031633146111165760405162461bcd60e51b8152600401610a019061215e565b600655565b600d546001600160a01b031633146111455760405162461bcd60e51b8152600401610a019061215e565b6001600160a01b03919091165f908152601560205260409020805460ff1916911515919091179055565b600d546001600160a01b031633146111995760405162461bcd60e51b8152600401610a019061215e565b601c548111156111ac57601c54601d5550565b601d8190555b50565b600d546001600160a01b031633146111df5760405162461bcd60e51b8152600401610a019061215e565b6001600160a01b0381166112445760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610a01565b600d546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3600d80546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b031633146112c95760405162461bcd60e51b8152600401610a019061215e565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b5f81848411156113165760405162461bcd60e51b8152600401610a019190611f37565b505050900390565b601e545f9060ff161561133d5761133684848461181c565b9050610c9c565b600d546001600160a01b038581169116148015906113695750600d546001600160a01b03848116911614155b156113b75760195460ff166113b75760405162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b6044820152606401610a01565b7f000000000000000000000000b532867861193f98d825088dd6bfffd5643e65516001600160a01b03908116908416145f81158261142757507f000000000000000000000000b532867861193f98d825088dd6bfffd5643e65516001600160a01b0316866001600160a01b031614155b90506001600160a01b03851630148015906114505750600f546001600160a01b03868116911614155b801561148e57507f000000000000000000000000b532867861193f98d825088dd6bfffd5643e65516001600160a01b0316856001600160a01b031614155b80156114a757505f546001600160a01b03868116911614155b80156114c157506001546001600160a01b03868116911614155b80156114db57506016546001600160a01b03868116911614155b1561158e576001600160a01b0385165f9081526011602090815260408083205460159092529091205460ff1661158c5760045461151886836121dd565b111561158c5760405162461bcd60e51b815260206004820152603e60248201527f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460448201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e00006064820152608401610a01565b505b7f000000000000000000000000b532867861193f98d825088dd6bfffd5643e65516001600160a01b0316866001600160a01b03161480156115d65750601954610100900460ff165b1561167e576001600160a01b0385165f908152601a6020526040902054421161164f5760405162461bcd60e51b815260206004820152602560248201527f506c65617365207761697420666f7220316d696e206265747765656e2074776f604482015264206275797360d81b6064820152608401610a01565b6019546116659062010000900460ff16426121dd565b6001600160a01b0386165f908152601a60205260409020555b6001600160a01b0385165f9081526014602052604090205460ff166116a7576116a786856118ec565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0389165f908152601190915291909120546116f89186906112f3565b6001600160a01b0387165f9081526011602052604090205583811561173157600b541561172c576117298786611958565b90505b611779565b6001600160a01b0387165f9081526013602052604090205460ff16156117575784611762565b6117628786856119f5565b905061176c611aa1565b1561177957611779611b0b565b6001600160a01b0386165f9081526011602052604090205461179b90826117fb565b6001600160a01b038088165f8181526011602052604090819020939093559151908916905f805160206122cd833981519152906117db9085815260200190565b60405180910390a35060019695505050505050565b5f610c9c82846121f0565b5f610c9c82846121dd565b5f610c9c82846121a7565b5f610c9c82846121be565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f90815260119091529182205461186c9184906112f3565b6001600160a01b038086165f90815260116020526040808220939093559085168152205461189a90836117fb565b6001600160a01b038085165f8181526011602052604090819020939093559151908616905f805160206122cd833981519152906118da9086815260200190565b60405180910390a35060019392505050565b6003548111158061191457506001600160a01b0382165f9081526014602052604090205460ff165b6119545760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610a01565b5050565b5f80600b5490505f611981600c54606461197291906121a7565b61102460646110178887611806565b305f9081526011602052604090205490915061199d90826117fb565b305f81815260116020526040908190209290925590516001600160a01b038716905f805160206122cd833981519152906119da9085815260200190565b60405180910390a36119ec84826117f0565b95945050505050565b5f8082611a0457600654611a08565b600a545b90505f611a2c600c546064611a1d91906121a7565b61102460646110178987611806565b305f90815260116020526040902054909150611a4890826117fb565b305f81815260116020526040908190209290925590516001600160a01b038816905f805160206122cd83398151915290611a859085815260200190565b60405180910390a3611a9785826117f0565b9695505050505050565b5f336001600160a01b037f000000000000000000000000b532867861193f98d825088dd6bfffd5643e65511614801590611ade5750601e5460ff16155b8015611aec5750601b5460ff165b8015610d1d575050601c54305f90815260116020526040902054101590565b601e805460ff191660011790556017546018545f91611b2991610ad4565b611b3557600754611b37565b5f5b90505f611b5a6002611024600a5461102486601d5461180690919063ffffffff16565b90505f611b7282601d546117f090919063ffffffff16565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f81518110611baa57611baa612203565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c26573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c4a9190612217565b81600181518110611c5d57611c5d612203565b6001600160a01b03928316602091820292909201015260405163791ac94760e01b815247917f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611cc19086905f90879030904290600401612232565b5f604051808303815f87803b158015611cd8575f80fd5b505af1158015611cea573d5f803e3d5ffd5b505050505f611d0282476117f090919063ffffffff16565b90505f611d1c611d13886002611811565b600a54906117f0565b90505f611d3d6002611024846110246007548861180690919063ffffffff16565b90505f611d59836110246008548761180690919063ffffffff16565b90505f611d75846110246009548861180690919063ffffffff16565b5f805460405192935090916001600160a01b039091169061753090859084818181858888f193505050503d805f8114611dc9576040519150601f19603f3d011682016040523d82523d5f602084013e611dce565b606091505b50506001546040519192506001600160a01b0316906175309084905f818181858888f193505050503d805f8114611e20576040519150601f19603f3d011682016040523d82523d5f602084013e611e25565b606091505b505f9250508a159050611f205760165460405163f305d71960e01b8152306004820152602481018c90525f6044820181905260648201526001600160a01b0391821660848201524260a48201527f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d9091169063f305d71990869060c40160606040518083038185885af1158015611ebe573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611ee391906122a1565b505060408051868152602081018d90527f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b450692500160405180910390a15b5050601e805460ff19169055505050505050505050565b5f6020808352835180828501525f5b81811015611f6257858101830151858201604001528201611f46565b505f604082860101526040601f19601f8301168501019250505092915050565b5f60208284031215611f92575f80fd5b5035919050565b6001600160a01b03811681146111b2575f80fd5b5f8060408385031215611fbe575f80fd5b8235611fc981611f99565b946020939093013593505050565b80358015158114611fe6575f80fd5b919050565b5f60208284031215611ffb575f80fd5b610c9c82611fd7565b5f8060408385031215612015575f80fd5b50508035926020909101359150565b5f60208284031215612034575f80fd5b8135610c9c81611f99565b5f805f60608486031215612051575f80fd5b833561205c81611f99565b9250602084013561206c81611f99565b929592945050506040919091013590565b5f806040838503121561208e575f80fd5b823561209981611f99565b91506120a760208401611fd7565b90509250929050565b5f805f80608085870312156120c3575f80fd5b5050823594602084013594506040840135936060013592509050565b5f805f606084860312156120f1575f80fd5b83356120fc81611f99565b9250602084013561210c81611f99565b9150604084013561211c81611f99565b809150509250925092565b5f8060408385031215612138575f80fd5b823561214381611f99565b9150602083013561215381611f99565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417610a9157610a91612193565b5f826121d857634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610a9157610a91612193565b81810381811115610a9157610a91612193565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612227575f80fd5b8151610c9c81611f99565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b818110156122805784516001600160a01b03168352938301939183019160010161225b565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156122b3575f80fd5b835192506020840151915060408401519050925092509256feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212205906d1fb6a81c90608b1acd4603eab3ab1239b72114bf040881f4e8faeeb493a64736f6c63430008150033

Deployed Bytecode Sourcemap

13188:13008:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1198:37;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;1198:37:0;;;;;;;;14120:56;;;;;;;;;;;;;;;;15503:80;;;;;;;;;;-1:-1:-1;15575:5:0;;;;;;;;;;;;-1:-1:-1;;;15575:5:0;;;;15503:80;;;;;;;:::i;16823:177::-;;;;;;;;;;-1:-1:-1;16823:177:0;;;;;:::i;:::-;;:::i;:::-;;15927:216;;;;;;;;;;-1:-1:-1;15927:216:0;;;;;:::i;:::-;;:::i;:::-;;;1555:14:1;;1548:22;1530:41;;1518:2;1503:18;15927:216:0;1390:187:1;21220:94:0;;;;;;;;;;-1:-1:-1;21220:94:0;;;;;:::i;:::-;;:::i;25972:150::-;;;;;;;;;;-1:-1:-1;25972:150:0;;;;;:::i;:::-;;:::i;1419:39::-;;;;;;;;;;;;;;;;15233:88;;;;;;;;;;-1:-1:-1;15306:12:0;;15233:88;;24106:196;;;;;;;;;;-1:-1:-1;24106:196:0;;;;;:::i;:::-;;:::i;21007:203::-;;;;;;;;;;-1:-1:-1;21007:203:0;;;;;:::i;:::-;;:::i;1374:37::-;;;;;;;;;;;;;;;;25446:184;;;;;;;;;;-1:-1:-1;25446:184:0;;;;;:::i;:::-;;:::i;16445:370::-;;;;;;;;;;-1:-1:-1;16445:370:0;;;;;:::i;:::-;;:::i;25095:112::-;;;;;;;;;;-1:-1:-1;25095:112:0;;;;;:::i;:::-;;:::i;25638:142::-;;;;;;;;;;;;;:::i;14183:53::-;;;;;;;;;;;;;;;;15327:80;;;;;;;;;;-1:-1:-1;859:1:0;15327:80;;;3070:4:1;3058:17;;;3040:36;;3028:2;3013:18;15327:80:0;2898:184:1;1103:42:0;;;;;;;;;;;;;;;;1154:37;;;;;;;;;;;;;;;;1059;;;;;;;;;;;;;;;;13851:38;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3251:32:1;;;3233:51;;3221:2;3206:18;13851:38:0;3087:203:1;16151:122:0;;;;;;;;;;-1:-1:-1;16151:122:0;;;;;:::i;:::-;;:::i;17186:97::-;;;;;;;;;;-1:-1:-1;17186:97:0;;;;;:::i;:::-;;:::i;24310:249::-;;;;;;;;;;-1:-1:-1;24310:249:0;;;;;:::i;:::-;;:::i;13938:37::-;;;;;;;;;;-1:-1:-1;13938:37:0;;;;;;;;;;;23111:121;;;;;;;;;;-1:-1:-1;23111:121:0;;;;;:::i;:::-;;:::i;13794:50::-;;;;;;;;;;;;;;;14083:30;;;;;;;;;;-1:-1:-1;14083:30:0;;;;;;;;15675:105;;;;;;;;;;-1:-1:-1;15675:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;15759:18:0;15741:7;15759:18;;;:9;:18;;;;;;;15675:105;4751:148;;;;;;;;;;;;;:::i;13982:38::-;;;;;;;;;;-1:-1:-1;13982:38:0;;;;;;;;;;;588:75;;;;;;;;;;-1:-1:-1;588:75:0;;;;-1:-1:-1;;;;;588:75:0;;;990:59;;;;;;;;;;;;;;;;926:56;;;;;;;;;;;;;;;;23508:486;;;;;;;;;;-1:-1:-1;23508:486:0;;;;;:::i;:::-;;:::i;15589:80::-;;;;;;;;;;;;;:::i;4537:79::-;;;;;;;;;;-1:-1:-1;4602:6:0;;-1:-1:-1;;;;;4602:6:0;4537:79;;670:69;;;;;;;;;;-1:-1:-1;670:69:0;;;;-1:-1:-1;;;;;670:69:0;;;15413:84;;;;;;;;;;-1:-1:-1;15487:7:0;;;;;;;;;;;;-1:-1:-1;;;15487:7:0;;;;15413:84;;16281:156;;;;;;;;;;-1:-1:-1;16281:156:0;;;;;:::i;:::-;;:::i;17006:172::-;;;;;;;;;;-1:-1:-1;17006:172:0;;;;;:::i;:::-;;:::i;13665:36::-;;;;;;;;;;-1:-1:-1;13665:36:0;;;;-1:-1:-1;;;;;13665:36:0;;;25788:176;;;;;;;;;;-1:-1:-1;25788:176:0;;;;;:::i;:::-;;:::i;24567:518::-;;;;;;;;;;-1:-1:-1;24567:518:0;;;;;:::i;:::-;;:::i;24002:96::-;;;;;;;;;;-1:-1:-1;24002:96:0;;;;;:::i;:::-;;:::i;23240:121::-;;;;;;;;;;-1:-1:-1;23240:121:0;;;;;:::i;:::-;;:::i;15786:133::-;;;;;;;;;;-1:-1:-1;15786:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;15888:19:0;;;15870:7;15888:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;15786:133;1286:79;;;;;;;;;;;;;;;;25215:221;;;;;;;;;;-1:-1:-1;25215:221:0;;;;;:::i;:::-;;:::i;4907:244::-;;;;;;;;;;-1:-1:-1;4907:244:0;;;;;:::i;:::-;;:::i;1242:37::-;;;;;;;;;;;;;;;;23369:129;;;;;;;;;;-1:-1:-1;23369:129:0;;;;;:::i;:::-;;:::i;13898:31::-;;;;;;;;;;-1:-1:-1;13898:31:0;;;;;;;;16823:177;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;;;;;;;;;16988:4:::1;16960:23;16945:12;;:38;;;;:::i;:::-;16944:48;;;;:::i;:::-;16926:15;:66:::0;-1:-1:-1;16823:177:0:o;15927:216::-;16031:10;16002:4;16019:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;16019:32:0;;;;;;;;;;:41;;;16076:37;16002:4;;16019:32;;16076:37;;;;16054:6;160:25:1;;148:2;133:18;;14:177;16076:37:0;;;;;;;;-1:-1:-1;16131:4:0;15927:216;;;;;:::o;21220:94::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;21285:11:::1;:21:::0;;-1:-1:-1;;21285:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21220:94::o;25972:150::-;26052:4;26108:6;26076:29;26096:8;26076:19;:29::i;:::-;:38;;25972:150;-1:-1:-1;;;25972:150:0:o;24106:196::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;24202:9:::1;::::0;;-1:-1:-1;;;;;24202:9:0;;::::1;24215:5;24190:22:::0;;;:11:::1;:22;::::0;;;;;:30;;-1:-1:-1;;24190:30:0;;::::1;::::0;;;24231:23;;;::::1;::::0;;;;;;:30;;;;::::1;::::0;::::1;::::0;;;24272:22;;-1:-1:-1;;;;;;24272:22:0::1;::::0;;::::1;::::0;;24106:196::o;21007:203::-;21081:17;21141:15;21101:21;;-1:-1:-1;;;;;21141:15:0;21133:69;21198:3;21167:28;21179:16;21101:21;21167:28;:::i;:::-;:34;;;;:::i;:::-;21133:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21070:140;21007:203;:::o;25446:184::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;25545:15:::1;:25:::0;;;;25581:26:::1;:41:::0;25446:184::o;16445:370::-;-1:-1:-1;;;;;16565:19:0;;16545:4;16565:19;;;:11;:19;;;;;;;;16585:10;16565:31;;;;;;;;-1:-1:-1;;16565:52:0;16562:186;;16667:69;;;;;;;;;;;-1:-1:-1;;;16667:69:0;;;;;;;;-1:-1:-1;;;;;16667:19:0;;-1:-1:-1;16667:19:0;;;:11;:19;;;;;16687:10;16667:31;;;;;;;;;;:69;;16703:6;;16667:35;:69::i;:::-;-1:-1:-1;;;;;16633:19:0;;;;;;:11;:19;;;;;;;;16653:10;16633:31;;;;;;;:103;16562:186;16767:40;16781:6;16789:9;16800:6;16767:13;:40::i;:::-;16760:47;;16445:370;;;;;;:::o;25095:112::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;25176:13:::1;:23:::0;25095:112::o;25638:142::-;25766:4;;-1:-1:-1;;;;;25766:4:0;25691:7;15759:18;;;:9;:18;;;;;;25718:54;;25745:4;;-1:-1:-1;;;;;25745:4:0;15741:7;15759:18;;;:9;:18;;;;;;25718:33;;:12;;;:16;:33::i;:::-;:37;;:54::i;:::-;25711:61;;25638:142;:::o;16151:122::-;16206:4;16230:35;16238:7;-1:-1:-1;;16230:7:0;:35::i;17186:97::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;17254:12:::1;:21:::0;17186:97::o;24310:249::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;24421:5:::1;24402:15:::0;;-1:-1:-1;;;;;24402:15:0;;::::1;24390:28:::0;;:11:::1;:28;::::0;;;;;;;:36;;-1:-1:-1;;24390:36:0;;::::1;::::0;;;24437:23;;;::::1;::::0;;;;;;:30;;;::::1;24402:15:::0;24437:30;;::::1;::::0;;;24480:11:::1;:23:::0;;;;;;:30;;;;::::1;;::::0;;;24523:28;;-1:-1:-1;;;;;;24523:28:0::1;::::0;;::::1;::::0;;24310:249::o;23111:121::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23196:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;23196:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23111:121::o;4751:148::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;4842:6:::1;::::0;4821:40:::1;::::0;4858:1:::1;::::0;-1:-1:-1;;;;;4842:6:0::1;::::0;4821:40:::1;::::0;4858:1;;4821:40:::1;4872:6;:19:::0;;-1:-1:-1;;;;;;4872:19:0::1;::::0;;4751:148::o;23508:486::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;23668:9:::1;:25:::0;;;23704:13:::1;:36:::0;;;23751:15:::1;:37:::0;;;23814:64:::1;23769:19:::0;23814:39:::1;23680:13:::0;23720:20;23814:17:::1;:39::i;:::-;:43:::0;::::1;:64::i;:::-;23799:12;:79:::0;;;23889:14:::1;:32:::0;;;23955:2:::1;-1:-1:-1::0;23932:54:0::1;;;::::0;-1:-1:-1;;;23932:54:0;;6257:2:1;23932:54:0::1;::::0;::::1;6239:21:1::0;6296:2;6276:18;;;6269:30;6335:26;6315:18;;;6308:54;6379:18;;23932:54:0::1;6055:348:1::0;23932:54:0::1;23508:486:::0;;;;:::o;15589:80::-;15641:7;15659;4602:6;;-1:-1:-1;;;;;4602:6:0;;4537:79;16281:156;16361:4;16385:44;16399:10;16411:9;16422:6;16385:13;:44::i;17006:172::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;17166:4:::1;17137:24;17122:12;;:39;;;;:::i;:::-;17121:49;;;;:::i;:::-;17106:12;:64:::0;-1:-1:-1;17006:172:0:o;25788:176::-;25856:7;25883:73;25933:22;:20;:22::i;:::-;25883:45;25896:31;25925:1;25896:24;25906:13;-1:-1:-1;;;;;15759:18:0;15741:7;15759:18;;;:9;:18;;;;;;;15675:105;25896:24;:28;;:31::i;:::-;25883:8;;:12;:45::i;:::-;:49;;:73::i;24567:518::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;24723:9:::1;::::0;;-1:-1:-1;;;;;24723:9:0;;::::1;24736:5;24711:22:::0;;;:11:::1;:22;::::0;;;;;;;:30;;-1:-1:-1;;24711:30:0;;::::1;::::0;;;24752:26;;::::1;::::0;;;;;;:33;;;::::1;::::0;::::1;::::0;;24808:15;;;::::1;24796:28:::0;;;;;:36;;;::::1;::::0;;24843:32;;::::1;::::0;;;;;;:39;;;::::1;::::0;::::1;::::0;;24895:11:::1;:32:::0;;;;;:39;;;;::::1;::::0;::::1;::::0;;;24947:21:::1;:46:::0;;;;;::::1;-1:-1:-1::0;;;;;;24947:46:0;;::::1;;::::0;;;25004:37;;;::::1;::::0;;::::1;::::0;;;25052:25;;;;::::1;;::::0;;24567:518::o;24002:96::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;24070:11:::1;:20:::0;24002:96::o;23240:121::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23325:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;23325:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23240:121::o;25215:221::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;25300:13:::1;;25290:7;:23;25287:134;;;25343:13;::::0;25330:10:::1;:26:::0;25215:221;:::o;25287:134::-:1;25389:10;:20:::0;;;25287:134:::1;25215:221:::0;:::o;4907:244::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4996:22:0;::::1;4988:73;;;::::0;-1:-1:-1;;;4988:73:0;;6610:2:1;4988:73:0::1;::::0;::::1;6592:21:1::0;6649:2;6629:18;;;6622:30;6688:34;6668:18;;;6661:62;-1:-1:-1;;;6739:18:1;;;6732:36;6785:19;;4988:73:0::1;6408:402:1::0;4988:73:0::1;5098:6;::::0;5077:38:::1;::::0;-1:-1:-1;;;;;5077:38:0;;::::1;::::0;5098:6:::1;::::0;5077:38:::1;::::0;5098:6:::1;::::0;5077:38:::1;5126:6;:17:::0;;-1:-1:-1;;;;;;5126:17:0::1;-1:-1:-1::0;;;;;5126:17:0;;;::::1;::::0;;;::::1;::::0;;4907:244::o;23369:129::-;4664:6;;-1:-1:-1;;;;;4664:6:0;3904:10;4664:22;4656:67;;;;-1:-1:-1;;;4656:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23458:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;23458:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23369:129::o;2048:240::-;2168:7;2229:12;2221:6;;;;2213:29;;;;-1:-1:-1;;;2213:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;2264:5:0;;;2048:240::o;17291:1992::-;17403:6;;17383:4;;17403:6;;17400:63;;;17419:41;17434:6;17442:9;17453:6;17419:14;:41::i;:::-;17412:48;;;;17400:63;4602:6;;-1:-1:-1;;;;;17478:17:0;;;4602:6;;17478:17;;;;:41;;-1:-1:-1;4602:6:0;;-1:-1:-1;;;;;17499:20:0;;;4602:6;;17499:20;;17478:41;17475:115;;;17543:11;;;;17535:43;;;;-1:-1:-1;;;17535:43:0;;7017:2:1;17535:43:0;;;6999:21:1;7056:2;7036:18;;;7029:30;-1:-1:-1;;;7075:18:1;;;7068:50;7135:18;;17535:43:0;6815:344:1;17535:43:0;17630:13;-1:-1:-1;;;;;17617:26:0;;;;;;;17602:11;17674:26;;17617;17674:53;;;17714:13;-1:-1:-1;;;;;17704:23:0;:6;-1:-1:-1;;;;;17704:23:0;;;17674:53;17655:73;-1:-1:-1;;;;;;17745:26:0;;17766:4;17745:26;;;;:70;;-1:-1:-1;17810:4:0;;-1:-1:-1;;;;;17789:26:0;;;17810:4;;17789:26;;17745:70;:114;;;;;17846:13;-1:-1:-1;;;;;17833:26:0;:9;-1:-1:-1;;;;;17833:26:0;;;17745:114;:160;;;;-1:-1:-1;17890:15:0;;-1:-1:-1;;;;;17877:28:0;;;17890:15;;17877:28;;17745:160;:200;;;;-1:-1:-1;17936:9:0;;-1:-1:-1;;;;;17923:22:0;;;17936:9;;17923:22;;17745:200;:252;;;;-1:-1:-1;17976:21:0;;-1:-1:-1;;;;;17963:34:0;;;17976:21;;17963:34;;17745:252;17741:526;;;-1:-1:-1;;;;;15759:18:0;;18023;15759;;;:9;:18;;;;;;;;;18083:11;:22;;;;;;;;;18079:177;;18159:15;;18135:19;18148:6;18135:10;:19;:::i;:::-;18134:40;;18126:114;;;;-1:-1:-1;;;18126:114:0;;7496:2:1;18126:114:0;;;7478:21:1;7535:2;7515:18;;;7508:30;7574:34;7554:18;;;7547:62;7645:32;7625:18;;;7618:60;7695:19;;18126:114:0;7294:426:1;18126:114:0;18008:259;17741:526;18293:13;-1:-1:-1;;;;;18283:23:0;:6;-1:-1:-1;;;;;18283:23:0;;:58;;;;-1:-1:-1;18323:18:0;;;;;;;18283:58;18279:273;;;-1:-1:-1;;;;;18376:24:0;;;;;;:13;:24;;;;;;18403:15;-1:-1:-1;18368:91:0;;;;-1:-1:-1;;;18368:91:0;;7927:2:1;18368:91:0;;;7909:21:1;7966:2;7946:18;;;7939:30;8005:34;7985:18;;;7978:62;-1:-1:-1;;;8056:18:1;;;8049:35;8101:19;;18368:91:0;7725:401:1;18368:91:0;18519:21;;18501:39;;18519:21;;;;;18501:15;:39;:::i;:::-;-1:-1:-1;;;;;18474:24:0;;;;;;:13;:24;;;;;:66;18279:273;-1:-1:-1;;;;;18570:26:0;;;;;;:15;:26;;;;;;;;18566:87;;18613:28;18626:6;18634;18613:12;:28::i;:::-;18687:53;;;;;;;;;;;-1:-1:-1;;;18687:53:0;;;;;;;;-1:-1:-1;;;;;18687:17:0;;-1:-1:-1;18687:17:0;;;:9;:17;;;;;;;;:53;;18709:6;;18687:21;:53::i;:::-;-1:-1:-1;;;;;18667:17:0;;;;;;:9;:17;;;;;:73;18778:6;18799:318;;;;18832:8;;:12;18829:100;;18882:31;18898:6;18906;18882:15;:31::i;:::-;18865:48;;18829:100;18799:318;;;-1:-1:-1;;;;;19890:19:0;;19865:4;19890:19;;;:11;:19;;;;;;;;19889:20;18978:64;;19036:6;18978:64;;;19002:31;19010:6;19018;19026;19002:7;:31::i;:::-;18961:81;;19074:16;:14;:16::i;:::-;19071:35;;;19093:10;:8;:10::i;:::-;-1:-1:-1;;;;;19152:20:0;;;;;;:9;:20;;;;;;:40;;19177:14;19152:24;:40::i;:::-;-1:-1:-1;;;;;19129:20:0;;;;;;;:9;:20;;;;;;;:63;;;;19210:43;;;;;;-1:-1:-1;;;;;;;;;;;19210:43:0;;;19238:14;160:25:1;;148:2;133:18;;14:177;19210:43:0;;;;;;;;-1:-1:-1;19271:4:0;;17291:1992;-1:-1:-1;;;;;;17291:1992:0:o;1604:98::-;1662:7;1689:5;1693:1;1689;:5;:::i;1496:98::-;1554:7;1581:5;1585:1;1581;:5;:::i;1714:98::-;1772:7;1799:5;1803:1;1799;:5;:::i;1826:98::-;1884:7;1911:5;1915:1;1911;:5;:::i;19291:330::-;19421:53;;;;;;;;;;;-1:-1:-1;;;19421:53:0;;;;;;;;-1:-1:-1;;;;;19421:17:0;;19384:4;19421:17;;;:9;:17;;;;;;;:53;;19443:6;;19421:21;:53::i;:::-;-1:-1:-1;;;;;19401:17:0;;;;;;;:9;:17;;;;;;:73;;;;19508:20;;;;;;;:32;;19533:6;19508:24;:32::i;:::-;-1:-1:-1;;;;;19485:20:0;;;;;;;:9;:20;;;;;;;:55;;;;19556:35;;;;;;-1:-1:-1;;;;;;;;;;;19556:35:0;;;19584:6;160:25:1;;148:2;133:18;;14:177;19556:35:0;;;;;;;;-1:-1:-1;19609:4:0;19291:330;;;;;:::o;19629:166::-;19726:12;;19716:6;:22;;:49;;;-1:-1:-1;;;;;;19742:23:0;;;;;;:15;:23;;;;;;;;19716:49;19708:79;;;;-1:-1:-1;;;19708:79:0;;8466:2:1;19708:79:0;;;8448:21:1;8505:2;8485:18;;;8478:30;-1:-1:-1;;;8524:18:1;;;8517:47;8581:18;;19708:79:0;8264:341:1;19708:79:0;19629:166;;:::o;19929:406::-;20004:7;20026:17;20046:8;;20026:28;;20065:17;20085:56;20120:14;;20137:3;20120:20;;;;:::i;:::-;20085:30;20111:3;20085:21;:6;20096:9;20085:10;:21::i;:56::-;20207:4;20189:24;;;;:9;:24;;;;;;20065:76;;-1:-1:-1;20189:39:0;;20065:76;20189:28;:39::i;:::-;20180:4;20162:24;;;;:9;:24;;;;;;;:66;;;;20244:42;;-1:-1:-1;;;;;20244:42:0;;;-1:-1:-1;;;;;;;;;;;20244:42:0;;;20276:9;160:25:1;;148:2;133:18;;14:177;20244:42:0;;;;;;;;20306:21;:6;20317:9;20306:10;:21::i;:::-;20299:28;19929:406;-1:-1:-1;;;;;19929:406:0:o;20343:438::-;20423:7;20445:17;20465:6;:35;;20489:11;;20465:35;;;20474:12;;20465:35;20445:55;;20511:17;20531:56;20566:14;;20583:3;20566:20;;;;:::i;:::-;20531:30;20557:3;20531:21;:6;20542:9;20531:10;:21::i;:56::-;20653:4;20635:24;;;;:9;:24;;;;;;20511:76;;-1:-1:-1;20635:39:0;;20511:76;20635:28;:39::i;:::-;20626:4;20608:24;;;;:9;:24;;;;;;;:66;;;;20690:42;;-1:-1:-1;;;;;20690:42:0;;;-1:-1:-1;;;;;;;;;;;20690:42:0;;;20722:9;160:25:1;;148:2;133:18;;14:177;20690:42:0;;;;;;;;20752:21;:6;20763:9;20752:10;:21::i;:::-;20745:28;20343:438;-1:-1:-1;;;;;;20343:438:0:o;20791:206::-;20840:4;20864:10;-1:-1:-1;;;;;20878:13:0;20864:27;;;;;:47;;-1:-1:-1;20905:6:0;;;;20904:7;20864:47;:71;;;;-1:-1:-1;20924:11:0;;;;20864:71;:125;;;;-1:-1:-1;;20976:13:0;;20966:4;20948:24;;;;:9;:24;;;;;;:41;;;20791:206::o;21322:1777::-;14285:6;:13;;-1:-1:-1;;14285:13:0;14294:4;14285:13;;;21417:15:::1;::::0;21434:26:::1;::::0;14285:6;;21401:60:::1;::::0;:15:::1;:60::i;:::-;:76;;21468:9;;21401:76;;;21464:1;21401:76;21371:106;;21488:23;21514:60;21572:1;21514:53;21554:12;;21514:35;21529:19;21514:10;;:14;;:35;;;;:::i;:60::-;21488:86;;21585:20;21608:31;21623:15;21608:10;;:14;;:31;;;;:::i;:::-;21676:16;::::0;;21690:1:::1;21676:16:::0;;;;;::::1;::::0;;21585:54;;-1:-1:-1;21652:21:0::1;::::0;21676:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;21676:16:0::1;21652:40;;21721:4;21703;21708:1;21703:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;21703:23:0::1;;;-1:-1:-1::0;;;;;21703:23:0::1;;;::::0;::::1;21747:14;-1:-1:-1::0;;;;;21747:19:0::1;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21737:4;21742:1;21737:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21737:31:0;;::::1;:7;::::0;;::::1;::::0;;;;;:31;21839:196:::1;::::0;-1:-1:-1;;;21839:196:0;;21805:21:::1;::::0;21839:14:::1;:65;::::0;::::1;::::0;:196:::1;::::0;21919:12;;21781:21:::1;::::0;21962:4;;21989::::1;::::0;22009:15:::1;::::0;21839:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22048:17;22068:40;22094:13;22068:21;:25;;:40;;;;:::i;:::-;22048:60:::0;-1:-1:-1;22121:19:0::1;22143:44;22160:26;:19:::0;22184:1:::1;22160:23;:26::i;:::-;22143:12;::::0;;:16:::1;:44::i;:::-;22121:66;;22200:26;22229:48;22275:1;22229:41;22258:11;22229:24;22243:9;;22229;:13;;:24;;;;:::i;:48::-;22200:77;;22288:26;22317:45;22350:11;22317:28;22331:13;;22317:9;:13;;:28;;;;:::i;:45::-;22288:74;;22373:25;22401:47;22436:11;22401:30;22415:15;;22401:9;:13;;:30;;;;:::i;:47::-;22462:15;22490::::0;;22482:72:::1;::::0;22373:75;;-1:-1:-1;22462:15:0;;-1:-1:-1;;;;;22490:15:0;;::::1;::::0;22544:5:::1;::::0;22519:18;;22462:15;22482:72;22462:15;22482:72;22519:18;22490:15;22544:5;22482:72:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;22589:9:0::1;::::0;22581:65:::1;::::0;22461:93;;-1:-1:-1;;;;;;22589:9:0::1;::::0;22636:5:::1;::::0;22612:17;;22581:65:::1;::::0;;;22612:17;22589:9;22636:5;22581:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;22704:5:0::1;::::0;-1:-1:-1;;22725:19:0;;;-1:-1:-1;22722:370:0::1;;22942:21;::::0;22760:252:::1;::::0;-1:-1:-1;;;22760:252:0;;22844:4:::1;22760:252;::::0;::::1;10666:34:1::0;10716:18;;;10709:34;;;-1:-1:-1;10759:18:1;;;10752:34;;;10802:18;;;10795:34;-1:-1:-1;;;;;22942:21:0;;::::1;10845:19:1::0;;;10838:44;22982:15:0::1;10898:19:1::0;;;10891:35;22760:14:0::1;:30:::0;;::::1;::::0;::::1;::::0;22798:18;;10600:19:1;;22760:252:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;23032:48:0::1;::::0;;11422:25:1;;;11478:2;11463:18;;11456:34;;;23032:48:0::1;::::0;-1:-1:-1;11395:18:1;23032:48:0::1;;;;;;;22722:370;-1:-1:-1::0;;14303:6:0;:14;;-1:-1:-1;;14303:14:0;;;-1:-1:-1;;;;;;;;;21322:1777:0:o;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:180::-;808:6;861:2;849:9;840:7;836:23;832:32;829:52;;;877:1;874;867:12;829:52;-1:-1:-1;900:23:1;;749:180;-1:-1:-1;749:180:1:o;934:131::-;-1:-1:-1;;;;;1009:31:1;;999:42;;989:70;;1055:1;1052;1045:12;1070:315;1138:6;1146;1199:2;1187:9;1178:7;1174:23;1170:32;1167:52;;;1215:1;1212;1205:12;1167:52;1254:9;1241:23;1273:31;1298:5;1273:31;:::i;:::-;1323:5;1375:2;1360:18;;;;1347:32;;-1:-1:-1;;;1070:315:1:o;1582:160::-;1647:20;;1703:13;;1696:21;1686:32;;1676:60;;1732:1;1729;1722:12;1676:60;1582:160;;;:::o;1747:180::-;1803:6;1856:2;1844:9;1835:7;1831:23;1827:32;1824:52;;;1872:1;1869;1862:12;1824:52;1895:26;1911:9;1895:26;:::i;1932:248::-;2000:6;2008;2061:2;2049:9;2040:7;2036:23;2032:32;2029:52;;;2077:1;2074;2067:12;2029:52;-1:-1:-1;;2100:23:1;;;2170:2;2155:18;;;2142:32;;-1:-1:-1;1932:248:1:o;2185:247::-;2244:6;2297:2;2285:9;2276:7;2272:23;2268:32;2265:52;;;2313:1;2310;2303:12;2265:52;2352:9;2339:23;2371:31;2396:5;2371:31;:::i;2437:456::-;2514:6;2522;2530;2583:2;2571:9;2562:7;2558:23;2554:32;2551:52;;;2599:1;2596;2589:12;2551:52;2638:9;2625:23;2657:31;2682:5;2657:31;:::i;:::-;2707:5;-1:-1:-1;2764:2:1;2749:18;;2736:32;2777:33;2736:32;2777:33;:::i;:::-;2437:456;;2829:7;;-1:-1:-1;;;2883:2:1;2868:18;;;;2855:32;;2437:456::o;3295:315::-;3360:6;3368;3421:2;3409:9;3400:7;3396:23;3392:32;3389:52;;;3437:1;3434;3427:12;3389:52;3476:9;3463:23;3495:31;3520:5;3495:31;:::i;:::-;3545:5;-1:-1:-1;3569:35:1;3600:2;3585:18;;3569:35;:::i;:::-;3559:45;;3295:315;;;;;:::o;3850:385::-;3936:6;3944;3952;3960;4013:3;4001:9;3992:7;3988:23;3984:33;3981:53;;;4030:1;4027;4020:12;3981:53;-1:-1:-1;;4053:23:1;;;4123:2;4108:18;;4095:32;;-1:-1:-1;4174:2:1;4159:18;;4146:32;;4225:2;4210:18;4197:32;;-1:-1:-1;3850:385:1;-1:-1:-1;3850:385:1:o;4240:529::-;4317:6;4325;4333;4386:2;4374:9;4365:7;4361:23;4357:32;4354:52;;;4402:1;4399;4392:12;4354:52;4441:9;4428:23;4460:31;4485:5;4460:31;:::i;:::-;4510:5;-1:-1:-1;4567:2:1;4552:18;;4539:32;4580:33;4539:32;4580:33;:::i;:::-;4632:7;-1:-1:-1;4691:2:1;4676:18;;4663:32;4704:33;4663:32;4704:33;:::i;:::-;4756:7;4746:17;;;4240:529;;;;;:::o;4774:388::-;4842:6;4850;4903:2;4891:9;4882:7;4878:23;4874:32;4871:52;;;4919:1;4916;4909:12;4871:52;4958:9;4945:23;4977:31;5002:5;4977:31;:::i;:::-;5027:5;-1:-1:-1;5084:2:1;5069:18;;5056:32;5097:33;5056:32;5097:33;:::i;:::-;5149:7;5139:17;;;4774:388;;;;;:::o;5167:356::-;5369:2;5351:21;;;5388:18;;;5381:30;5447:34;5442:2;5427:18;;5420:62;5514:2;5499:18;;5167:356::o;5528:127::-;5589:10;5584:3;5580:20;5577:1;5570:31;5620:4;5617:1;5610:15;5644:4;5641:1;5634:15;5660:168;5733:9;;;5764;;5781:15;;;5775:22;;5761:37;5751:71;;5802:18;;:::i;5833:217::-;5873:1;5899;5889:132;;5943:10;5938:3;5934:20;5931:1;5924:31;5978:4;5975:1;5968:15;6006:4;6003:1;5996:15;5889:132;-1:-1:-1;6035:9:1;;5833:217::o;7164:125::-;7229:9;;;7250:10;;;7247:36;;;7263:18;;:::i;8131:128::-;8198:9;;;8219:11;;;8216:37;;;8233:18;;:::i;8742:127::-;8803:10;8798:3;8794:20;8791:1;8784:31;8834:4;8831:1;8824:15;8858:4;8855:1;8848:15;8874:251;8944:6;8997:2;8985:9;8976:7;8972:23;8968:32;8965:52;;;9013:1;9010;9003:12;8965:52;9045:9;9039:16;9064:31;9089:5;9064:31;:::i;9130:980::-;9392:4;9440:3;9429:9;9425:19;9471:6;9460:9;9453:25;9497:2;9535:6;9530:2;9519:9;9515:18;9508:34;9578:3;9573:2;9562:9;9558:18;9551:31;9602:6;9637;9631:13;9668:6;9660;9653:22;9706:3;9695:9;9691:19;9684:26;;9745:2;9737:6;9733:15;9719:29;;9766:1;9776:195;9790:6;9787:1;9784:13;9776:195;;;9855:13;;-1:-1:-1;;;;;9851:39:1;9839:52;;9946:15;;;;9911:12;;;;9887:1;9805:9;9776:195;;;-1:-1:-1;;;;;;;10027:32:1;;;;10022:2;10007:18;;10000:60;-1:-1:-1;;;10091:3:1;10076:19;10069:35;9988:3;9130:980;-1:-1:-1;;;9130:980:1:o;10937:306::-;11025:6;11033;11041;11094:2;11082:9;11073:7;11069:23;11065:32;11062:52;;;11110:1;11107;11100:12;11062:52;11139:9;11133:16;11123:26;;11189:2;11178:9;11174:18;11168:25;11158:35;;11233:2;11222:9;11218:18;11212:25;11202:35;;10937:306;;;;;:::o

Swarm Source

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