ETH Price: $2,526.51 (+3.12%)

Token

0xSAFE (0xSAFE)
 

Overview

Max Total Supply

200,000,000 0xSAFE

Holders

94

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
793,495.924624310070406368 0xSAFE

Value
$0.00
0x8b067b16794d86521315756c47255065b7455c1d
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:
OxSAFE

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-24
*/

/* 
                0xSAFE
    the innovative blockchain project 
that is set to transform the cryptocurrency industry.

website : https://0xSafe.io
Docs : https://docs.0xSafe.io
telegram : https://t.me/OxSAFE_Portal
twitter : https://twitter.com/0x_Safe
Medium : https://oxsafe.medium.com
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;
pragma experimental ABIEncoderV2;

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IERC20 {   
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    uint256 private _totalSupply;
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

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

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }


    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}


library SafeMath {
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

    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(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    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,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 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 (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 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 (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    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 (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
}

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

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

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

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

    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
    address public constant deadAddress = address(0xdead);

    bool private swapping;

    address public marketingWallet;

    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;

    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;

    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;

    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;

    /******************/

    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) public _isExcludedMaxTransactionAmount;
    mapping(address => bool) public automatedMarketMakerPairs;

    event UpdateUniswapV2Router(
        address indexed newAddress,
        address indexed oldAddress
    );

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);

    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );

    constructor() ERC20("0xSAFE", "0xSAFE") {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);

        uint256 _buyMarketingFee = 14;
        uint256 _buyLiquidityFee = 4;

        uint256 _sellMarketingFee = 16;
        uint256 _sellLiquidityFee = 4;

        uint256 totalSupply = 200_000_000 * 1e18;

        maxTransactionAmount = 2_000_000 * 1e18;
        maxWallet = 4_000_000 * 1e18;
        swapTokensAtAmount = 200_000 * 1e18;

        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;

        marketingWallet = address(0xafC8a941Ea4A95a8D3634d05363197661E608D43); 

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);

        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);

        _mint(address(this), (totalSupply * 7)/100);
        _mint(msg.sender, (totalSupply * 93)/100);
    }

    receive() external payable {}

    function launch() public onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    // remove limits and reduce tax after token is stable
    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;

        buyMarketingFee = 3;
        buyLiquidityFee = 0;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;

        sellMarketingFee = 3;
        sellLiquidityFee = 0;
        sellTotalFees = sellMarketingFee + sellLiquidityFee;
        return true;
    }

    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns (bool) {
        return _isExcludedFromFees[account];
    }

    function updateSwapEnabled(bool enabled) external onlyOwner {
        swapEnabled = enabled;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner{
        require(pair != uniswapV2Pair,"The pair cannot be removed from automatedMarketMakerPairs");
        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function setBuy(uint256 _marketingFee, uint256 _liquidityFee) external onlyOwner {
        require(buyMarketingFee + buyLiquidityFee <= 12);
        buyMarketingFee = _marketingFee;
        buyLiquidityFee = _liquidityFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee;
    }

    function _transfer( address from, address to, uint256 amount) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");        

        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (limitsInEffect) {
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ) {
                if (!tradingActive) {
                    require(
                        _isExcludedFromFees[from] || _isExcludedFromFees[to],
                        "Trading is not active."
                    );
                }

                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to])
                    {require( amount <= maxTransactionAmount,
                        "Buy transfer amount exceeds the maxTransactionAmount.");
                     require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded");
                }
                //when sell
                else if (
                    automatedMarketMakerPairs[to] &&
                    !_isExcludedMaxTransactionAmount[from]) 
                    {require(
                        amount <= maxTransactionAmount,
                        "Sell transfer amount exceeds the maxTransactionAmount.");
                } else if (!_isExcludedMaxTransactionAmount[to]) {
                     require(
                        amount + balanceOf(to) <= maxWallet,
                        "Max wallet exceeded");
                }
            }
        }

        uint256 contractTokenBalance = balanceOf(address(this)); 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if (
            canSwap && swapEnabled && !swapping && !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] && !_isExcludedFromFees[to]
        ) {
            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if (takeFee) {
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0) {
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += (fees * sellLiquidityFee) / sellTotalFees;
                tokensForMarketing += (fees * sellMarketingFee) / sellTotalFees;
               }

            // on buy
            else if (automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += (fees * buyLiquidityFee) / buyTotalFees;
                tokensForMarketing += (fees * buyMarketingFee) / buyTotalFees;            
            }

            if (fees > 0) {               
                super._transfer(from, address(this), fees);
            }

            amount -= fees;
        }

        super._transfer(from, to, amount);
    }

    
    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount); 
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing;
        bool success;

        if  (contractBalance == 0 || totalTokensToSwap == 0) {
            return;}

        if  (contractBalance > swapTokensAtAmount * 10 )
            {contractBalance = swapTokensAtAmount * 10;}

        uint256 liquidityTokens = (contractBalance * tokensForLiquidity) /
            totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing;

        tokensForLiquidity = 0;
        tokensForMarketing = 0;

        if (liquidityTokens > 0 && ethForLiquidity > 0) {
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(
                amountToSwapForETH,
                ethForLiquidity,
                tokensForLiquidity
            );
        }

        (success, ) = address(marketingWallet).call{ value: address(this).balance}("");
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","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":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"}],"name":"setBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052600a805462ffffff191660011790553480156200002057600080fd5b5060408051808201825260068082526530785341464560d01b60208084018290528451808601909552918452908301529060036200005f8382620006e0565b5060046200006e8282620006e0565b5050506200008b620000856200038460201b60201c565b62000388565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000ad816001620003da565b6001600160a01b03811660808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620000f8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200011e9190620007ac565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200016c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001929190620007ac565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001e0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002069190620007ac565b6001600160a01b031660a081905262000221906001620003da565b60a0516200023190600162000454565b6a01a784379d99db420000006007556a034f086f3b33b684000000600955692a5a058fc295ed000000600855600e600c8190556004600d8190556010816aa56fa5b99019a5c8000000620002868286620007f4565b600b55600f83905560108290556200029f8284620007f4565b600e55600680546001600160a01b03191673afc8a941ea4a95a8d3634d05363197661e608d43179055620002e7620002df6005546001600160a01b031690565b6001620004a8565b620002f4306001620004a8565b6200030361dead6001620004a8565b620003226200031a6005546001600160a01b031690565b6001620003da565b6200032f306001620003da565b6200033e61dead6001620003da565b620003643060646200035284600762000810565b6200035e91906200082a565b62000552565b620003783360646200035284605d62000810565b5050505050506200084d565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b03163314620004295760405162461bcd60e51b815260206004820181905260248201526000805160206200291983398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6005546001600160a01b03163314620004f35760405162461bcd60e51b8152602060048201819052602482015260008051602062002919833981519152604482015260640162000420565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6001600160a01b038216620005aa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640162000420565b8060026000828254620005be9190620007f4565b90915550506001600160a01b03821660009081526020819052604081208054839290620005ed908490620007f4565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200066757607f821691505b6020821081036200068857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200063757600081815260208120601f850160051c81016020861015620006b75750805b601f850160051c820191505b81811015620006d857828155600101620006c3565b505050505050565b81516001600160401b03811115620006fc57620006fc6200063c565b62000714816200070d845462000652565b846200068e565b602080601f8311600181146200074c5760008415620007335750858301515b600019600386901b1c1916600185901b178555620006d8565b600085815260208120601f198616915b828110156200077d578886015182559484019460019091019084016200075c565b50858210156200079c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620007bf57600080fd5b81516001600160a01b0381168114620007d757600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b808201808211156200080a576200080a620007de565b92915050565b80820281158282048414176200080a576200080a620007de565b6000826200084857634e487b7160e01b600052601260045260246000fd5b500490565b60805160a05161207c6200089d6000396000818161041e0152610b13015260008181610315015281816119ec01528181611aa501528181611ae101528181611b5b0152611b82015261207c6000f3fe6080604052600436106102555760003560e01c806375f0a87411610139578063bbc0c742116100b6578063dd62ed3e1161007a578063dd62ed3e14610703578063e2f4560514610749578063f11a24d31461075f578063f2fde38b14610775578063f637434214610795578063f8b45b05146107ab57600080fd5b8063bbc0c74214610678578063c024666814610697578063c8c8ebe4146106b7578063d0f0c57c146106cd578063d85ba063146106ed57600080fd5b806395d89b41116100fd57806395d89b41146105d35780639a7a23d6146105e8578063a457c2d714610608578063a9059cbb14610628578063b62496f51461064857600080fd5b806375f0a874146105495780637bce5a04146105695780638da5cb5b1461057f578063921369131461059d578063924de9b7146105b357600080fd5b8063313ce567116101d25780636a486a8e116101965780636a486a8e146104935780636ddd1713146104a957806370a08231146104c9578063715018a6146104ff578063751039fc146105145780637571336a1461052957600080fd5b8063313ce567146103d057806339509351146103ec57806349bd5a5e1461040c5780634a62bb65146104405780634fbee1931461045a57600080fd5b806318160ddd1161021957806318160ddd1461034f5780631a8145bb1461036e5780631f3fed8f1461038457806323b872dd1461039a57806327c8f835146103ba57600080fd5b806301339c211461026157806306fdde0314610278578063095ea7b3146102a357806310d5de53146102d35780631694505e1461030357600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107c1565b005b34801561028457600080fd5b5061028d610807565b60405161029a9190611c5b565b60405180910390f35b3480156102af57600080fd5b506102c36102be366004611cbe565b610899565b604051901515815260200161029a565b3480156102df57600080fd5b506102c36102ee366004611cea565b60146020526000908152604090205460ff1681565b34801561030f57600080fd5b506103377f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161029a565b34801561035b57600080fd5b506002545b60405190815260200161029a565b34801561037a57600080fd5b5061036060125481565b34801561039057600080fd5b5061036060115481565b3480156103a657600080fd5b506102c36103b5366004611d07565b6108b0565b3480156103c657600080fd5b5061033761dead81565b3480156103dc57600080fd5b506040516012815260200161029a565b3480156103f857600080fd5b506102c3610407366004611cbe565b61095a565b34801561041857600080fd5b506103377f000000000000000000000000000000000000000000000000000000000000000081565b34801561044c57600080fd5b50600a546102c39060ff1681565b34801561046657600080fd5b506102c3610475366004611cea565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561049f57600080fd5b50610360600e5481565b3480156104b557600080fd5b50600a546102c39062010000900460ff1681565b3480156104d557600080fd5b506103606104e4366004611cea565b6001600160a01b031660009081526020819052604090205490565b34801561050b57600080fd5b50610276610996565b34801561052057600080fd5b506102c36109cc565b34801561053557600080fd5b50610276610544366004611d5d565b610a3d565b34801561055557600080fd5b50600654610337906001600160a01b031681565b34801561057557600080fd5b50610360600c5481565b34801561058b57600080fd5b506005546001600160a01b0316610337565b3480156105a957600080fd5b50610360600f5481565b3480156105bf57600080fd5b506102766105ce366004611d92565b610a92565b3480156105df57600080fd5b5061028d610ad8565b3480156105f457600080fd5b50610276610603366004611d5d565b610ae7565b34801561061457600080fd5b506102c3610623366004611cbe565b610bc6565b34801561063457600080fd5b506102c3610643366004611cbe565b610c5f565b34801561065457600080fd5b506102c3610663366004611cea565b60156020526000908152604090205460ff1681565b34801561068457600080fd5b50600a546102c390610100900460ff1681565b3480156106a357600080fd5b506102766106b2366004611d5d565b610c6c565b3480156106c357600080fd5b5061036060075481565b3480156106d957600080fd5b506102766106e8366004611dad565b610cf5565b3480156106f957600080fd5b50610360600b5481565b34801561070f57600080fd5b5061036061071e366004611dcf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561075557600080fd5b5061036060085481565b34801561076b57600080fd5b50610360600d5481565b34801561078157600080fd5b50610276610790366004611cea565b610d57565b3480156107a157600080fd5b5061036060105481565b3480156107b757600080fd5b5061036060095481565b6005546001600160a01b031633146107f45760405162461bcd60e51b81526004016107eb90611e08565b60405180910390fd5b600a805462ffff00191662010100179055565b60606003805461081690611e3d565b80601f016020809104026020016040519081016040528092919081815260200182805461084290611e3d565b801561088f5780601f106108645761010080835404028352916020019161088f565b820191906000526020600020905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60006108a6338484610df2565b5060015b92915050565b60006108bd848484610f16565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109425760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107eb565b61094f8533858403610df2565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108a6918590610991908690611e8d565b610df2565b6005546001600160a01b031633146109c05760405162461bcd60e51b81526004016107eb90611e08565b6109ca60006115c6565b565b6005546000906001600160a01b031633146109f95760405162461bcd60e51b81526004016107eb90611e08565b600a805460ff191690556003600c8190556000600d819055610a1a91611e8d565b600b556003600f81905560006010819055610a3491611e8d565b600e5550600190565b6005546001600160a01b03163314610a675760405162461bcd60e51b81526004016107eb90611e08565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610abc5760405162461bcd60e51b81526004016107eb90611e08565b600a8054911515620100000262ff000019909216919091179055565b60606004805461081690611e3d565b6005546001600160a01b03163314610b115760405162461bcd60e51b81526004016107eb90611e08565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031603610bb85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107eb565b610bc28282611618565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107eb565b610c553385858403610df2565b5060019392505050565b60006108a6338484610f16565b6005546001600160a01b03163314610c965760405162461bcd60e51b81526004016107eb90611e08565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016107eb90611e08565b600c600d54600c54610d319190611e8d565b1115610d3c57600080fd5b600c829055600d819055610d508183611e8d565b600b555050565b6005546001600160a01b03163314610d815760405162461bcd60e51b81526004016107eb90611e08565b6001600160a01b038116610de65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107eb565b610def816115c6565b50565b6001600160a01b038316610e545760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107eb565b6001600160a01b038216610eb55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107eb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f3c5760405162461bcd60e51b81526004016107eb90611ea0565b6001600160a01b038216610f625760405162461bcd60e51b81526004016107eb90611ee5565b80600003610f7b57610f768383600061166c565b505050565b600a5460ff16156112f1576005546001600160a01b03848116911614801590610fb257506005546001600160a01b03838116911614155b8015610fc657506001600160a01b03821615155b8015610fdd57506001600160a01b03821661dead14155b8015610ff35750600554600160a01b900460ff16155b156112f157600a54610100900460ff1661108b576001600160a01b03831660009081526013602052604090205460ff168061104657506001600160a01b03821660009081526013602052604090205460ff165b61108b5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107eb565b6001600160a01b03831660009081526015602052604090205460ff1680156110cc57506001600160a01b03821660009081526014602052604090205460ff16155b156111b0576007548111156111415760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107eb565b6009546001600160a01b0383166000908152602081905260409020546111679083611e8d565b11156111ab5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107eb565b6112f1565b6001600160a01b03821660009081526015602052604090205460ff1680156111f157506001600160a01b03831660009081526014602052604090205460ff16155b15611267576007548111156111ab5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107eb565b6001600160a01b03821660009081526014602052604090205460ff166112f1576009546001600160a01b0383166000908152602081905260409020546112ad9083611e8d565b11156112f15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107eb565b306000908152602081905260409020546008548110801590819061131d5750600a5462010000900460ff165b80156113335750600554600160a01b900460ff16155b801561135857506001600160a01b03851660009081526015602052604090205460ff16155b801561137d57506001600160a01b03851660009081526013602052604090205460ff16155b80156113a257506001600160a01b03841660009081526013602052604090205460ff16155b156113d0576005805460ff60a01b1916600160a01b1790556113c26117c1565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526013602052604090205460ff600160a01b90920482161591168061141e57506001600160a01b03851660009081526013602052604090205460ff165b15611427575060005b600081156115b2576001600160a01b03861660009081526015602052604090205460ff16801561145957506000600e54115b156114e75761147e6064611478600e548861196a90919063ffffffff16565b9061197d565b9050600e54601054826114919190611f28565b61149b9190611f3f565b601260008282546114ac9190611e8d565b9091555050600e54600f546114c19083611f28565b6114cb9190611f3f565b601160008282546114dc9190611e8d565b909155506115949050565b6001600160a01b03871660009081526015602052604090205460ff16801561151157506000600b54115b15611594576115306064611478600b548861196a90919063ffffffff16565b9050600b54600d54826115439190611f28565b61154d9190611f3f565b6012600082825461155e9190611e8d565b9091555050600b54600c546115739083611f28565b61157d9190611f3f565b6011600082825461158e9190611e8d565b90915550505b80156115a5576115a587308361166c565b6115af8186611f61565b94505b6115bd87878761166c565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166116925760405162461bcd60e51b81526004016107eb90611ea0565b6001600160a01b0382166116b85760405162461bcd60e51b81526004016107eb90611ee5565b6001600160a01b038316600090815260208190526040902054818110156117305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107eb565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611767908490611e8d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117b391815260200190565b60405180910390a350505050565b30600090815260208190526040812054905060006011546012546117e59190611e8d565b905060008215806117f4575081155b156117fe57505050565b60085461180c90600a611f28565b8311156118245760085461182190600a611f28565b92505b6000600283601254866118379190611f28565b6118419190611f3f565b61184b9190611f3f565b905060006118598583611989565b90504761186582611995565b60006118714783611989565b9050600061188e876114786011548561196a90919063ffffffff16565b9050600061189c8284611f61565b60006012819055601155905085158015906118b75750600081115b1561190a576118c68682611b55565b601254604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611957576040519150601f19603f3d011682016040523d82523d6000602084013e61195c565b606091505b505050505050505050505050565b60006119768284611f28565b9392505050565b60006119768284611f3f565b60006119768284611f61565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119ca576119ca611f74565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c9190611f8a565b81600181518110611a7f57611a7f611f74565b60200260200101906001600160a01b031690816001600160a01b031681525050611aca307f000000000000000000000000000000000000000000000000000000000000000084610df2565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611b1f908590600090869030904290600401611fa7565b600060405180830381600087803b158015611b3957600080fd5b505af1158015611b4d573d6000803e3d6000fd5b505050505050565b611b80307f000000000000000000000000000000000000000000000000000000000000000084610df2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d719823085600080611bc76005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611c2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c549190612018565b5050505050565b600060208083528351808285015260005b81811015611c8857858101830151858201604001528201611c6c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610def57600080fd5b60008060408385031215611cd157600080fd5b8235611cdc81611ca9565b946020939093013593505050565b600060208284031215611cfc57600080fd5b813561197681611ca9565b600080600060608486031215611d1c57600080fd5b8335611d2781611ca9565b92506020840135611d3781611ca9565b929592945050506040919091013590565b80358015158114611d5857600080fd5b919050565b60008060408385031215611d7057600080fd5b8235611d7b81611ca9565b9150611d8960208401611d48565b90509250929050565b600060208284031215611da457600080fd5b61197682611d48565b60008060408385031215611dc057600080fd5b50508035926020909101359150565b60008060408385031215611de257600080fd5b8235611ded81611ca9565b91506020830135611dfd81611ca9565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611e5157607f821691505b602082108103611e7157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108aa576108aa611e77565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176108aa576108aa611e77565b600082611f5c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108aa576108aa611e77565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f9c57600080fd5b815161197681611ca9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ff75784516001600160a01b031683529383019391830191600101611fd2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561202d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220db61e3ba15b0215a9f3618197598be8b4992bc828a29d700d440f6682932b83364736f6c634300081100334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572

Deployed Bytecode

0x6080604052600436106102555760003560e01c806375f0a87411610139578063bbc0c742116100b6578063dd62ed3e1161007a578063dd62ed3e14610703578063e2f4560514610749578063f11a24d31461075f578063f2fde38b14610775578063f637434214610795578063f8b45b05146107ab57600080fd5b8063bbc0c74214610678578063c024666814610697578063c8c8ebe4146106b7578063d0f0c57c146106cd578063d85ba063146106ed57600080fd5b806395d89b41116100fd57806395d89b41146105d35780639a7a23d6146105e8578063a457c2d714610608578063a9059cbb14610628578063b62496f51461064857600080fd5b806375f0a874146105495780637bce5a04146105695780638da5cb5b1461057f578063921369131461059d578063924de9b7146105b357600080fd5b8063313ce567116101d25780636a486a8e116101965780636a486a8e146104935780636ddd1713146104a957806370a08231146104c9578063715018a6146104ff578063751039fc146105145780637571336a1461052957600080fd5b8063313ce567146103d057806339509351146103ec57806349bd5a5e1461040c5780634a62bb65146104405780634fbee1931461045a57600080fd5b806318160ddd1161021957806318160ddd1461034f5780631a8145bb1461036e5780631f3fed8f1461038457806323b872dd1461039a57806327c8f835146103ba57600080fd5b806301339c211461026157806306fdde0314610278578063095ea7b3146102a357806310d5de53146102d35780631694505e1461030357600080fd5b3661025c57005b600080fd5b34801561026d57600080fd5b506102766107c1565b005b34801561028457600080fd5b5061028d610807565b60405161029a9190611c5b565b60405180910390f35b3480156102af57600080fd5b506102c36102be366004611cbe565b610899565b604051901515815260200161029a565b3480156102df57600080fd5b506102c36102ee366004611cea565b60146020526000908152604090205460ff1681565b34801561030f57600080fd5b506103377f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161029a565b34801561035b57600080fd5b506002545b60405190815260200161029a565b34801561037a57600080fd5b5061036060125481565b34801561039057600080fd5b5061036060115481565b3480156103a657600080fd5b506102c36103b5366004611d07565b6108b0565b3480156103c657600080fd5b5061033761dead81565b3480156103dc57600080fd5b506040516012815260200161029a565b3480156103f857600080fd5b506102c3610407366004611cbe565b61095a565b34801561041857600080fd5b506103377f000000000000000000000000e6ac4d0a6416f61b64146241b470f91c936f4efd81565b34801561044c57600080fd5b50600a546102c39060ff1681565b34801561046657600080fd5b506102c3610475366004611cea565b6001600160a01b031660009081526013602052604090205460ff1690565b34801561049f57600080fd5b50610360600e5481565b3480156104b557600080fd5b50600a546102c39062010000900460ff1681565b3480156104d557600080fd5b506103606104e4366004611cea565b6001600160a01b031660009081526020819052604090205490565b34801561050b57600080fd5b50610276610996565b34801561052057600080fd5b506102c36109cc565b34801561053557600080fd5b50610276610544366004611d5d565b610a3d565b34801561055557600080fd5b50600654610337906001600160a01b031681565b34801561057557600080fd5b50610360600c5481565b34801561058b57600080fd5b506005546001600160a01b0316610337565b3480156105a957600080fd5b50610360600f5481565b3480156105bf57600080fd5b506102766105ce366004611d92565b610a92565b3480156105df57600080fd5b5061028d610ad8565b3480156105f457600080fd5b50610276610603366004611d5d565b610ae7565b34801561061457600080fd5b506102c3610623366004611cbe565b610bc6565b34801561063457600080fd5b506102c3610643366004611cbe565b610c5f565b34801561065457600080fd5b506102c3610663366004611cea565b60156020526000908152604090205460ff1681565b34801561068457600080fd5b50600a546102c390610100900460ff1681565b3480156106a357600080fd5b506102766106b2366004611d5d565b610c6c565b3480156106c357600080fd5b5061036060075481565b3480156106d957600080fd5b506102766106e8366004611dad565b610cf5565b3480156106f957600080fd5b50610360600b5481565b34801561070f57600080fd5b5061036061071e366004611dcf565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b34801561075557600080fd5b5061036060085481565b34801561076b57600080fd5b50610360600d5481565b34801561078157600080fd5b50610276610790366004611cea565b610d57565b3480156107a157600080fd5b5061036060105481565b3480156107b757600080fd5b5061036060095481565b6005546001600160a01b031633146107f45760405162461bcd60e51b81526004016107eb90611e08565b60405180910390fd5b600a805462ffff00191662010100179055565b60606003805461081690611e3d565b80601f016020809104026020016040519081016040528092919081815260200182805461084290611e3d565b801561088f5780601f106108645761010080835404028352916020019161088f565b820191906000526020600020905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60006108a6338484610df2565b5060015b92915050565b60006108bd848484610f16565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156109425760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016107eb565b61094f8533858403610df2565b506001949350505050565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916108a6918590610991908690611e8d565b610df2565b6005546001600160a01b031633146109c05760405162461bcd60e51b81526004016107eb90611e08565b6109ca60006115c6565b565b6005546000906001600160a01b031633146109f95760405162461bcd60e51b81526004016107eb90611e08565b600a805460ff191690556003600c8190556000600d819055610a1a91611e8d565b600b556003600f81905560006010819055610a3491611e8d565b600e5550600190565b6005546001600160a01b03163314610a675760405162461bcd60e51b81526004016107eb90611e08565b6001600160a01b03919091166000908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610abc5760405162461bcd60e51b81526004016107eb90611e08565b600a8054911515620100000262ff000019909216919091179055565b60606004805461081690611e3d565b6005546001600160a01b03163314610b115760405162461bcd60e51b81526004016107eb90611e08565b7f000000000000000000000000e6ac4d0a6416f61b64146241b470f91c936f4efd6001600160a01b0316826001600160a01b031603610bb85760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016107eb565b610bc28282611618565b5050565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610c485760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107eb565b610c553385858403610df2565b5060019392505050565b60006108a6338484610f16565b6005546001600160a01b03163314610c965760405162461bcd60e51b81526004016107eb90611e08565b6001600160a01b038216600081815260136020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910160405180910390a25050565b6005546001600160a01b03163314610d1f5760405162461bcd60e51b81526004016107eb90611e08565b600c600d54600c54610d319190611e8d565b1115610d3c57600080fd5b600c829055600d819055610d508183611e8d565b600b555050565b6005546001600160a01b03163314610d815760405162461bcd60e51b81526004016107eb90611e08565b6001600160a01b038116610de65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107eb565b610def816115c6565b50565b6001600160a01b038316610e545760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107eb565b6001600160a01b038216610eb55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107eb565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610f3c5760405162461bcd60e51b81526004016107eb90611ea0565b6001600160a01b038216610f625760405162461bcd60e51b81526004016107eb90611ee5565b80600003610f7b57610f768383600061166c565b505050565b600a5460ff16156112f1576005546001600160a01b03848116911614801590610fb257506005546001600160a01b03838116911614155b8015610fc657506001600160a01b03821615155b8015610fdd57506001600160a01b03821661dead14155b8015610ff35750600554600160a01b900460ff16155b156112f157600a54610100900460ff1661108b576001600160a01b03831660009081526013602052604090205460ff168061104657506001600160a01b03821660009081526013602052604090205460ff165b61108b5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016107eb565b6001600160a01b03831660009081526015602052604090205460ff1680156110cc57506001600160a01b03821660009081526014602052604090205460ff16155b156111b0576007548111156111415760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760591b60648201526084016107eb565b6009546001600160a01b0383166000908152602081905260409020546111679083611e8d565b11156111ab5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107eb565b6112f1565b6001600160a01b03821660009081526015602052604090205460ff1680156111f157506001600160a01b03831660009081526014602052604090205460ff16155b15611267576007548111156111ab5760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a3930b739b0b1ba34b7b720b6b7bab73a1760511b60648201526084016107eb565b6001600160a01b03821660009081526014602052604090205460ff166112f1576009546001600160a01b0383166000908152602081905260409020546112ad9083611e8d565b11156112f15760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016107eb565b306000908152602081905260409020546008548110801590819061131d5750600a5462010000900460ff165b80156113335750600554600160a01b900460ff16155b801561135857506001600160a01b03851660009081526015602052604090205460ff16155b801561137d57506001600160a01b03851660009081526013602052604090205460ff16155b80156113a257506001600160a01b03841660009081526013602052604090205460ff16155b156113d0576005805460ff60a01b1916600160a01b1790556113c26117c1565b6005805460ff60a01b191690555b6005546001600160a01b03861660009081526013602052604090205460ff600160a01b90920482161591168061141e57506001600160a01b03851660009081526013602052604090205460ff165b15611427575060005b600081156115b2576001600160a01b03861660009081526015602052604090205460ff16801561145957506000600e54115b156114e75761147e6064611478600e548861196a90919063ffffffff16565b9061197d565b9050600e54601054826114919190611f28565b61149b9190611f3f565b601260008282546114ac9190611e8d565b9091555050600e54600f546114c19083611f28565b6114cb9190611f3f565b601160008282546114dc9190611e8d565b909155506115949050565b6001600160a01b03871660009081526015602052604090205460ff16801561151157506000600b54115b15611594576115306064611478600b548861196a90919063ffffffff16565b9050600b54600d54826115439190611f28565b61154d9190611f3f565b6012600082825461155e9190611e8d565b9091555050600b54600c546115739083611f28565b61157d9190611f3f565b6011600082825461158e9190611e8d565b90915550505b80156115a5576115a587308361166c565b6115af8186611f61565b94505b6115bd87878761166c565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260156020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b0383166116925760405162461bcd60e51b81526004016107eb90611ea0565b6001600160a01b0382166116b85760405162461bcd60e51b81526004016107eb90611ee5565b6001600160a01b038316600090815260208190526040902054818110156117305760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107eb565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611767908490611e8d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516117b391815260200190565b60405180910390a350505050565b30600090815260208190526040812054905060006011546012546117e59190611e8d565b905060008215806117f4575081155b156117fe57505050565b60085461180c90600a611f28565b8311156118245760085461182190600a611f28565b92505b6000600283601254866118379190611f28565b6118419190611f3f565b61184b9190611f3f565b905060006118598583611989565b90504761186582611995565b60006118714783611989565b9050600061188e876114786011548561196a90919063ffffffff16565b9050600061189c8284611f61565b60006012819055601155905085158015906118b75750600081115b1561190a576118c68682611b55565b601254604080518781526020810184905280820192909252517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a15b6006546040516001600160a01b03909116904790600081818185875af1925050503d8060008114611957576040519150601f19603f3d011682016040523d82523d6000602084013e61195c565b606091505b505050505050505050505050565b60006119768284611f28565b9392505050565b60006119768284611f3f565b60006119768284611f61565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106119ca576119ca611f74565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a48573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6c9190611f8a565b81600181518110611a7f57611a7f611f74565b60200260200101906001600160a01b031690816001600160a01b031681525050611aca307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610df2565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac94790611b1f908590600090869030904290600401611fa7565b600060405180830381600087803b158015611b3957600080fd5b505af1158015611b4d573d6000803e3d6000fd5b505050505050565b611b80307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84610df2565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663f305d719823085600080611bc76005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611c2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611c549190612018565b5050505050565b600060208083528351808285015260005b81811015611c8857858101830151858201604001528201611c6c565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610def57600080fd5b60008060408385031215611cd157600080fd5b8235611cdc81611ca9565b946020939093013593505050565b600060208284031215611cfc57600080fd5b813561197681611ca9565b600080600060608486031215611d1c57600080fd5b8335611d2781611ca9565b92506020840135611d3781611ca9565b929592945050506040919091013590565b80358015158114611d5857600080fd5b919050565b60008060408385031215611d7057600080fd5b8235611d7b81611ca9565b9150611d8960208401611d48565b90509250929050565b600060208284031215611da457600080fd5b61197682611d48565b60008060408385031215611dc057600080fd5b50508035926020909101359150565b60008060408385031215611de257600080fd5b8235611ded81611ca9565b91506020830135611dfd81611ca9565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c90821680611e5157607f821691505b602082108103611e7157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156108aa576108aa611e77565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b80820281158282048414176108aa576108aa611e77565b600082611f5c57634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156108aa576108aa611e77565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f9c57600080fd5b815161197681611ca9565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611ff75784516001600160a01b031683529383019391830191600101611fd2565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561202d57600080fd5b835192506020840151915060408401519050925092509256fea2646970667358221220db61e3ba15b0215a9f3618197598be8b4992bc828a29d700d440f6682932b83364736f6c63430008110033

Deployed Bytecode Sourcemap

15418:10841:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18676:103;;;;;;;;;;;;;:::i;:::-;;2936:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3667:169;;;;;;;;;;-1:-1:-1;3667:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;3667:169:0;1023:187:1;16355:63:0;;;;;;;;;;-1:-1:-1;16355:63:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15494:51;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1658:32:1;;;1640:51;;1628:2;1613:18;15494:51:0;1467:230:1;3257:108:0;;;;;;;;;;-1:-1:-1;3345:12:0;;3257:108;;;1848:25:1;;;1836:2;1821:18;3257:108:0;1702:177:1;16226:33:0;;;;;;;;;;;;;;;;16186;;;;;;;;;;;;;;;;4027:492;;;;;;;;;;-1:-1:-1;4027:492:0;;;;;:::i;:::-;;:::i;15597:53::-;;;;;;;;;;;;15643:6;15597:53;;3156:93;;;;;;;;;;-1:-1:-1;3156:93:0;;3239:2;2695:36:1;;2683:2;2668:18;3156:93:0;2553:184:1;4527:215:0;;;;;;;;;;-1:-1:-1;4527:215:0;;;;;:::i;:::-;;:::i;15552:38::-;;;;;;;;;;;;;;;15843:33;;;;;;;;;;-1:-1:-1;15843:33:0;;;;;;;;19564:126;;;;;;;;;;-1:-1:-1;19564:126:0;;;;;:::i;:::-;-1:-1:-1;;;;;19654:28:0;19630:4;19654:28;;;:19;:28;;;;;;;;;19564:126;16073:28;;;;;;;;;;;;;;;;15923:31;;;;;;;;;;-1:-1:-1;15923:31:0;;;;;;;;;;;3373:127;;;;;;;;;;-1:-1:-1;3373:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3474:18:0;3447:7;3474:18;;;;;;;;;;;;3373:127;1113:103;;;;;;;;;;;;;:::i;18846:368::-;;;;;;;;;;;;;:::i;19222:144::-;;;;;;;;;;-1:-1:-1;19222:144:0;;;;;:::i;:::-;;:::i;15689:30::-;;;;;;;;;;-1:-1:-1;15689:30:0;;;;-1:-1:-1;;;;;15689:30:0;;;15997;;;;;;;;;;;;;;;;890:87;;;;;;;;;;-1:-1:-1;963:6:0;;-1:-1:-1;;;;;963:6:0;890:87;;16108:31;;;;;;;;;;;;;;;;19698:100;;;;;;;;;;-1:-1:-1;19698:100:0;;;;;:::i;:::-;;:::i;3044:104::-;;;;;;;;;;;;;:::i;19806:240::-;;;;;;;;;;-1:-1:-1;19806:240:0;;;;;:::i;:::-;;:::i;4750:413::-;;;;;;;;;;-1:-1:-1;4750:413:0;;;;;:::i;:::-;;:::i;3844:175::-;;;;;;;;;;-1:-1:-1;3844:175:0;;;;;:::i;:::-;;:::i;16425:57::-;;;;;;;;;;-1:-1:-1;16425:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15883:33;;;;;;;;;;-1:-1:-1;15883:33:0;;;;;;;;;;;19374:182;;;;;;;;;;-1:-1:-1;19374:182:0;;;;;:::i;:::-;;:::i;15728:35::-;;;;;;;;;;;;;;;;20250:291;;;;;;;;;;-1:-1:-1;20250:291:0;;;;;:::i;:::-;;:::i;15963:27::-;;;;;;;;;;;;;;;;3508:151;;;;;;;;;;-1:-1:-1;3508:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3624:18:0;;;3597:7;3624:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3508:151;15770:33;;;;;;;;;;;;;;;;16034:30;;;;;;;;;;;;;;;;1224:201;;;;;;;;;;-1:-1:-1;1224:201:0;;;;;:::i;:::-;;:::i;16146:31::-;;;;;;;;;;;;;;;;15810:24;;;;;;;;;;;;;;;;18676:103;963:6;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;;;;;;;;;18722:13:::1;:20:::0;;-1:-1:-1;;18753:18:0;;;;;18676:103::o;2936:100::-;2990:13;3023:5;3016:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2936:100;:::o;3667:169::-;3750:4;3767:39;516:10;3790:7;3799:6;3767:8;:39::i;:::-;-1:-1:-1;3824:4:0;3667:169;;;;;:::o;4027:492::-;4167:4;4184:36;4194:6;4202:9;4213:6;4184:9;:36::i;:::-;-1:-1:-1;;;;;4260:19:0;;4233:24;4260:19;;;:11;:19;;;;;;;;516:10;4260:33;;;;;;;;4312:26;;;;4304:79;;;;-1:-1:-1;;;4304:79:0;;5006:2:1;4304:79:0;;;4988:21:1;5045:2;5025:18;;;5018:30;5084:34;5064:18;;;5057:62;-1:-1:-1;;;5135:18:1;;;5128:38;5183:19;;4304:79:0;4804:404:1;4304:79:0;4419:57;4428:6;516:10;4469:6;4450:16;:25;4419:8;:57::i;:::-;-1:-1:-1;4507:4:0;;4027:492;-1:-1:-1;;;;4027:492:0:o;4527:215::-;516:10;4615:4;4664:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4664:34:0;;;;;;;;;;4615:4;;4632:80;;4655:7;;4664:47;;4701:10;;4664:47;:::i;:::-;4632:8;:80::i;1113:103::-;963:6;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;1178:30:::1;1205:1;1178:18;:30::i;:::-;1113:103::o:0;18846:368::-;963:6;;18898:4;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;18915:14:::1;:22:::0;;-1:-1:-1;;18915:22:0::1;::::0;;18968:1:::1;18950:15;:19:::0;;;18932:5:::1;18980:15;:19:::0;;;19025:33:::1;::::0;::::1;:::i;:::-;19010:12;:48:::0;19090:1:::1;19071:16;:20:::0;;;-1:-1:-1;19102:16:0::1;:20:::0;;;19149:35:::1;::::0;::::1;:::i;:::-;19133:13;:51:::0;-1:-1:-1;19202:4:0::1;18846:368:::0;:::o;19222:144::-;963:6;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19312:39:0;;;::::1;;::::0;;;:31:::1;:39;::::0;;;;:46;;-1:-1:-1;;19312:46:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19222:144::o;19698:100::-;963:6;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;19769:11:::1;:21:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;19769:21:0;;::::1;::::0;;;::::1;::::0;;19698:100::o;3044:104::-;3100:13;3133:7;3126:14;;;;;:::i;19806:240::-;963:6;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;19912:13:::1;-1:-1:-1::0;;;;;19904:21:0::1;:4;-1:-1:-1::0;;;;;19904:21:0::1;::::0;19896:90:::1;;;::::0;-1:-1:-1;;;19896:90:0;;5677:2:1;19896:90:0::1;::::0;::::1;5659:21:1::0;5716:2;5696:18;;;5689:30;5755:34;5735:18;;;5728:62;5826:27;5806:18;;;5799:55;5871:19;;19896:90:0::1;5475:421:1::0;19896:90:0::1;19997:41;20026:4;20032:5;19997:28;:41::i;:::-;19806:240:::0;;:::o;4750:413::-;516:10;4843:4;4887:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4887:34:0;;;;;;;;;;4940:35;;;;4932:85;;;;-1:-1:-1;;;4932:85:0;;6103:2:1;4932:85:0;;;6085:21:1;6142:2;6122:18;;;6115:30;6181:34;6161:18;;;6154:62;-1:-1:-1;;;6232:18:1;;;6225:35;6277:19;;4932:85:0;5901:401:1;4932:85:0;5053:67;516:10;5076:7;5104:15;5085:16;:34;5053:8;:67::i;:::-;-1:-1:-1;5151:4:0;;4750:413;-1:-1:-1;;;4750:413:0:o;3844:175::-;3930:4;3947:42;516:10;3971:9;3982:6;3947:9;:42::i;19374:182::-;963:6;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19459:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19459:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19514:34;;1163:41:1;;;19514:34:0::1;::::0;1136:18:1;19514:34:0::1;;;;;;;19374:182:::0;;:::o;20250:291::-;963:6;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;20387:2:::1;20368:15;;20350;;:33;;;;:::i;:::-;:39;;20342:48;;;::::0;::::1;;20401:15;:31:::0;;;20443:15:::1;:31:::0;;;20500:33:::1;20461:13:::0;20419;20500:33:::1;:::i;:::-;20485:12;:48:::0;-1:-1:-1;;20250:291:0:o;1224:201::-;963:6;;-1:-1:-1;;;;;963:6:0;516:10;1025:23;1017:68;;;;-1:-1:-1;;;1017:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1313:22:0;::::1;1305:73;;;::::0;-1:-1:-1;;;1305:73:0;;6509:2:1;1305:73:0::1;::::0;::::1;6491:21:1::0;6548:2;6528:18;;;6521:30;6587:34;6567:18;;;6560:62;-1:-1:-1;;;6638:18:1;;;6631:36;6684:19;;1305:73:0::1;6307:402:1::0;1305:73:0::1;1389:28;1408:8;1389:18;:28::i;:::-;1224:201:::0;:::o;6918:380::-;-1:-1:-1;;;;;7054:19:0;;7046:68;;;;-1:-1:-1;;;7046:68:0;;6916:2:1;7046:68:0;;;6898:21:1;6955:2;6935:18;;;6928:30;6994:34;6974:18;;;6967:62;-1:-1:-1;;;7045:18:1;;;7038:34;7089:19;;7046:68:0;6714:400:1;7046:68:0;-1:-1:-1;;;;;7133:21:0;;7125:68;;;;-1:-1:-1;;;7125:68:0;;7321:2:1;7125:68:0;;;7303:21:1;7360:2;7340:18;;;7333:30;7399:34;7379:18;;;7372:62;-1:-1:-1;;;7450:18:1;;;7443:32;7492:19;;7125:68:0;7119:398:1;7125:68:0;-1:-1:-1;;;;;7206:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7258:32;;1848:25:1;;;7258:32:0;;1821:18:1;7258:32:0;;;;;;;6918:380;;;:::o;20549:3458::-;-1:-1:-1;;;;;20648:18:0;;20640:68;;;;-1:-1:-1;;;20640:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20727:16:0;;20719:64;;;;-1:-1:-1;;;20719:64:0;;;;;;;:::i;:::-;20808:6;20818:1;20808:11;20804:93;;20836:28;20852:4;20858:2;20862:1;20836:15;:28::i;:::-;20549:3458;;;:::o;20804:93::-;20913:14;;;;20909:1503;;;963:6;;-1:-1:-1;;;;;20966:15:0;;;963:6;;20966:15;;;;:49;;-1:-1:-1;963:6:0;;-1:-1:-1;;;;;21002:13:0;;;963:6;;21002:13;;20966:49;:86;;;;-1:-1:-1;;;;;;21036:16:0;;;;20966:86;:128;;;;-1:-1:-1;;;;;;21073:21:0;;21087:6;21073:21;;20966:128;:158;;;;-1:-1:-1;21116:8:0;;-1:-1:-1;;;21116:8:0;;;;21115:9;20966:158;20944:1457;;;21164:13;;;;;;;21159:223;;-1:-1:-1;;;;;21236:25:0;;;;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;21265:23:0;;;;;;:19;:23;;;;;;;;21236:52;21202:160;;;;-1:-1:-1;;;21202:160:0;;8534:2:1;21202:160:0;;;8516:21:1;8573:2;8553:18;;;8546:30;-1:-1:-1;;;8592:18:1;;;8585:52;8654:18;;21202:160:0;8332:346:1;21202:160:0;-1:-1:-1;;;;;21434:31:0;;;;;;:25;:31;;;;;;;;:71;;;;-1:-1:-1;;;;;;21470:35:0;;;;;;:31;:35;;;;;;;;21469:36;21434:71;21430:956;;;21548:20;;21538:6;:30;;21529:122;;;;-1:-1:-1;;;21529:122:0;;8885:2:1;21529:122:0;;;8867:21:1;8924:2;8904:18;;;8897:30;8963:34;8943:18;;;8936:62;-1:-1:-1;;;9014:18:1;;;9007:51;9075:19;;21529:122:0;8683:417:1;21529:122:0;21735:9;;-1:-1:-1;;;;;3474:18:0;;3447:7;3474:18;;;;;;;;;;;21709:22;;:6;:22;:::i;:::-;:35;;21675:118;;;;-1:-1:-1;;;21675:118:0;;9307:2:1;21675:118:0;;;9289:21:1;9346:2;9326:18;;;9319:30;-1:-1:-1;;;9365:18:1;;;9358:49;9424:18;;21675:118:0;9105:343:1;21675:118:0;21430:956;;;-1:-1:-1;;;;;21891:29:0;;;;;;:25;:29;;;;;;;;:92;;;;-1:-1:-1;;;;;;21946:37:0;;;;;;:31;:37;;;;;;;;21945:38;21891:92;21865:521;;;22052:20;;22042:6;:30;;22008:148;;;;-1:-1:-1;;;22008:148:0;;9655:2:1;22008:148:0;;;9637:21:1;9694:2;9674:18;;;9667:30;9733:34;9713:18;;;9706:62;-1:-1:-1;;;9784:18:1;;;9777:52;9846:19;;22008:148:0;9453:418:1;21865:521:0;-1:-1:-1;;;;;22187:35:0;;;;;;:31;:35;;;;;;;;22182:204;;22308:9;;-1:-1:-1;;;;;3474:18:0;;3447:7;3474:18;;;;;;;;;;;22282:22;;:6;:22;:::i;:::-;:35;;22248:118;;;;-1:-1:-1;;;22248:118:0;;9307:2:1;22248:118:0;;;9289:21:1;9346:2;9326:18;;;9319:30;-1:-1:-1;;;9365:18:1;;;9358:49;9424:18;;22248:118:0;9105:343:1;22248:118:0;22473:4;22424:28;3474:18;;;;;;;;;;;22530;;22506:42;;;;;;;22579:22;;-1:-1:-1;22590:11:0;;;;;;;22579:22;:35;;;;-1:-1:-1;22606:8:0;;-1:-1:-1;;;22606:8:0;;;;22605:9;22579:35;:71;;;;-1:-1:-1;;;;;;22619:31:0;;;;;;:25;:31;;;;;;;;22618:32;22579:71;:114;;;;-1:-1:-1;;;;;;22668:25:0;;;;;;:19;:25;;;;;;;;22667:26;22579:114;:142;;;;-1:-1:-1;;;;;;22698:23:0;;;;;;:19;:23;;;;;;;;22697:24;22579:142;22561:270;;;22748:8;:15;;-1:-1:-1;;;;22748:15:0;-1:-1:-1;;;22748:15:0;;;22778:10;:8;:10::i;:::-;22803:8;:16;;-1:-1:-1;;;;22803:16:0;;;22561:270;22859:8;;-1:-1:-1;;;;;22882:25:0;;22843:12;22882:25;;;:19;:25;;;;;;22859:8;-1:-1:-1;;;22859:8:0;;;;;22858:9;;22882:25;;:52;;-1:-1:-1;;;;;;22911:23:0;;;;;;:19;:23;;;;;;;;22882:52;22878:100;;;-1:-1:-1;22961:5:0;22878:100;22990:12;23095:7;23091:863;;;-1:-1:-1;;;;;23147:29:0;;;;;;:25;:29;;;;;;;;:50;;;;;23196:1;23180:13;;:17;23147:50;23143:647;;;23225:34;23255:3;23225:25;23236:13;;23225:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;23218:41;;23328:13;;23308:16;;23301:4;:23;;;;:::i;:::-;23300:41;;;;:::i;:::-;23278:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;;23410:13:0;;23390:16;;23383:23;;:4;:23;:::i;:::-;23382:41;;;;:::i;:::-;23360:18;;:63;;;;;;;:::i;:::-;;;;-1:-1:-1;23143:647:0;;-1:-1:-1;23143:647:0;;-1:-1:-1;;;;;23490:31:0;;;;;;:25;:31;;;;;;;;:51;;;;;23540:1;23525:12;;:16;23490:51;23486:304;;;23569:33;23598:3;23569:24;23580:12;;23569:6;:10;;:24;;;;:::i;:33::-;23562:40;;23670:12;;23651:15;;23644:4;:22;;;;:::i;:::-;23643:39;;;;:::i;:::-;23621:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23750:12:0;;23731:15;;23724:22;;:4;:22;:::i;:::-;23723:39;;;;:::i;:::-;23701:18;;:61;;;;;;;:::i;:::-;;;;-1:-1:-1;;23486:304:0;23810:8;;23806:106;;23854:42;23870:4;23884;23891;23854:15;:42::i;:::-;23928:14;23938:4;23928:14;;:::i;:::-;;;23091:863;23966:33;23982:4;23988:2;23992:6;23966:15;:33::i;:::-;20629:3378;;;;20549:3458;;;:::o;1433:191::-;1526:6;;;-1:-1:-1;;;;;1543:17:0;;;-1:-1:-1;;;;;;1543:17:0;;;;;;;1576:40;;1526:6;;;1543:17;1526:6;;1576:40;;1507:16;;1576:40;1496:128;1433:191;:::o;20054:188::-;-1:-1:-1;;;;;20137:31:0;;;;;;:25;:31;;;;;;:39;;-1:-1:-1;;20137:39:0;;;;;;;;;;20194:40;;20137:39;;:31;20194:40;;;20054:188;;:::o;5171:733::-;-1:-1:-1;;;;;5311:20:0;;5303:70;;;;-1:-1:-1;;;5303:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5392:23:0;;5384:71;;;;-1:-1:-1;;;5384:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5552:17:0;;5528:21;5552:17;;;;;;;;;;;5588:23;;;;5580:74;;;;-1:-1:-1;;;5580:74:0;;10606:2:1;5580:74:0;;;10588:21:1;10645:2;10625:18;;;10618:30;10684:34;10664:18;;;10657:62;-1:-1:-1;;;10735:18:1;;;10728:36;10781:19;;5580:74:0;10404:402:1;5580:74:0;-1:-1:-1;;;;;5690:17:0;;;:9;:17;;;;;;;;;;;5710:22;;;5690:42;;5754:20;;;;;;;;:30;;5726:6;;5690:9;5754:30;;5726:6;;5754:30;:::i;:::-;;;;;;;;5819:9;-1:-1:-1;;;;;5802:35:0;5811:6;-1:-1:-1;;;;;5802:35:0;;5830:6;5802:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;5802:35:0;;;;;;;;5292:612;5171:733;;;:::o;24869:1387::-;24952:4;24908:23;3474:18;;;;;;;;;;;24908:50;;24969:25;25018:18;;24997;;:39;;;;:::i;:::-;24969:67;-1:-1:-1;25047:12:0;25077:20;;;:46;;-1:-1:-1;25101:22:0;;25077:46;25072:76;;;25140:7;;;24869:1387::o;25072:76::-;25183:18;;:23;;25204:2;25183:23;:::i;:::-;25165:15;:41;25160:106;;;25241:18;;:23;;25262:2;25241:23;:::i;:::-;25223:41;;25160:106;25278:23;25378:1;25358:17;25323:18;;25305:15;:36;;;;:::i;:::-;25304:71;;;;:::i;:::-;:75;;;;:::i;:::-;25278:101;-1:-1:-1;25390:26:0;25419:36;:15;25278:101;25419:19;:36::i;:::-;25390:65;-1:-1:-1;25494:21:0;25526:36;25390:65;25526:16;:36::i;:::-;25575:18;25596:44;:21;25622:17;25596:25;:44::i;:::-;25575:65;;25651:23;25677:57;25716:17;25677:34;25692:18;;25677:10;:14;;:34;;;;:::i;:57::-;25651:83;-1:-1:-1;25745:23:0;25771:28;25651:83;25771:10;:28;:::i;:::-;25833:1;25812:18;:22;;;25845:18;:22;25745:54;-1:-1:-1;25884:19:0;;;;;:42;;;25925:1;25907:15;:19;25884:42;25880:278;;;25943:46;25956:15;25973;25943:12;:46::i;:::-;26113:18;;26009:137;;;11013:25:1;;;11069:2;11054:18;;11047:34;;;11097:18;;;11090:34;;;;26009:137:0;;;;;;11001:2:1;26009:137:0;;;25880:278;26192:15;;26184:64;;-1:-1:-1;;;;;26192:15:0;;;;26222:21;;26184:64;;;;26222:21;26192:15;26184:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;24869:1387:0:o;9158:98::-;9216:7;9243:5;9247:1;9243;:5;:::i;:::-;9236:12;9158:98;-1:-1:-1;;;9158:98:0:o;9264:::-;9322:7;9349:5;9353:1;9349;:5;:::i;9051:98::-;9109:7;9136:5;9140:1;9136;:5;:::i;24021:472::-;24111:16;;;24125:1;24111:16;;;;;;;;24087:21;;24111:16;;;;;;;;;;-1:-1:-1;24111:16:0;24087:40;;24156:4;24138;24143:1;24138:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;24138:23:0;;;-1:-1:-1;;;;;24138:23:0;;;;;24182:15;-1:-1:-1;;;;;24182:20:0;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24172:4;24177:1;24172:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1;;;;;24172:32:0;;;-1:-1:-1;;;;;24172:32:0;;;;;24215:62;24232:4;24247:15;24265:11;24215:8;:62::i;:::-;24289:196;;-1:-1:-1;;;24289:196:0;;-1:-1:-1;;;;;24289:15:0;:66;;;;:196;;24370:11;;24396:1;;24412:4;;24439;;24459:15;;24289:196;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24076:417;24021:472;:::o;24501:360::-;24582:62;24599:4;24614:15;24632:11;24582:8;:62::i;:::-;24655:15;-1:-1:-1;;;;;24655:31:0;;24694:9;24727:4;24747:11;24773:1;24789;24805:7;963:6;;-1:-1:-1;;;;;963:6:0;;890:87;24805:7;24655:198;;;;;;-1:-1:-1;;;;;;24655:198:0;;;-1:-1:-1;;;;;13209:15:1;;;24655:198:0;;;13191:34:1;13241:18;;;13234:34;;;;13284:18;;;13277:34;;;;13327:18;;;13320:34;13391:15;;;13370:19;;;13363:44;24827:15:0;13423:19:1;;;13416:35;13125:19;;24655:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24501:360;;:::o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:247::-;1274:6;1327:2;1315:9;1306:7;1302:23;1298:32;1295:52;;;1343:1;1340;1333:12;1295:52;1382:9;1369:23;1401:31;1426:5;1401:31;:::i;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2742:160::-;2807:20;;2863:13;;2856:21;2846:32;;2836:60;;2892:1;2889;2882:12;2836:60;2742:160;;;:::o;2907:315::-;2972:6;2980;3033:2;3021:9;3012:7;3008:23;3004:32;3001:52;;;3049:1;3046;3039:12;3001:52;3088:9;3075:23;3107:31;3132:5;3107:31;:::i;:::-;3157:5;-1:-1:-1;3181:35:1;3212:2;3197:18;;3181:35;:::i;:::-;3171:45;;2907:315;;;;;:::o;3227:180::-;3283:6;3336:2;3324:9;3315:7;3311:23;3307:32;3304:52;;;3352:1;3349;3342:12;3304:52;3375:26;3391:9;3375:26;:::i;3412:248::-;3480:6;3488;3541:2;3529:9;3520:7;3516:23;3512:32;3509:52;;;3557:1;3554;3547:12;3509:52;-1:-1:-1;;3580:23:1;;;3650:2;3635:18;;;3622:32;;-1:-1:-1;3412:248:1:o;3665:388::-;3733:6;3741;3794:2;3782:9;3773:7;3769:23;3765:32;3762:52;;;3810:1;3807;3800:12;3762:52;3849:9;3836:23;3868:31;3893:5;3868:31;:::i;:::-;3918:5;-1:-1:-1;3975:2:1;3960:18;;3947:32;3988:33;3947:32;3988:33;:::i;:::-;4040:7;4030:17;;;3665:388;;;;;:::o;4058:356::-;4260:2;4242:21;;;4279:18;;;4272:30;4338:34;4333:2;4318:18;;4311:62;4405:2;4390:18;;4058:356::o;4419:380::-;4498:1;4494:12;;;;4541;;;4562:61;;4616:4;4608:6;4604:17;4594:27;;4562:61;4669:2;4661:6;4658:14;4638:18;4635:38;4632:161;;4715:10;4710:3;4706:20;4703:1;4696:31;4750:4;4747:1;4740:15;4778:4;4775:1;4768:15;4632:161;;4419:380;;;:::o;5213:127::-;5274:10;5269:3;5265:20;5262:1;5255:31;5305:4;5302:1;5295:15;5329:4;5326:1;5319:15;5345:125;5410:9;;;5431:10;;;5428:36;;;5444:18;;:::i;7522:401::-;7724:2;7706:21;;;7763:2;7743:18;;;7736:30;7802:34;7797:2;7782:18;;7775:62;-1:-1:-1;;;7868:2:1;7853:18;;7846:35;7913:3;7898:19;;7522:401::o;7928:399::-;8130:2;8112:21;;;8169:2;8149:18;;;8142:30;8208:34;8203:2;8188:18;;8181:62;-1:-1:-1;;;8274:2:1;8259:18;;8252:33;8317:3;8302:19;;7928:399::o;9876:168::-;9949:9;;;9980;;9997:15;;;9991:22;;9977:37;9967:71;;10018:18;;:::i;10049:217::-;10089:1;10115;10105:132;;10159:10;10154:3;10150:20;10147:1;10140:31;10194:4;10191:1;10184:15;10222:4;10219:1;10212:15;10105:132;-1:-1:-1;10251:9:1;;10049:217::o;10271:128::-;10338:9;;;10359:11;;;10356:37;;;10373:18;;:::i;11477:127::-;11538:10;11533:3;11529:20;11526:1;11519:31;11569:4;11566:1;11559:15;11593:4;11590:1;11583:15;11609:251;11679:6;11732:2;11720:9;11711:7;11707:23;11703:32;11700:52;;;11748:1;11745;11738:12;11700:52;11780:9;11774:16;11799:31;11824:5;11799:31;:::i;11865:980::-;12127:4;12175:3;12164:9;12160:19;12206:6;12195:9;12188:25;12232:2;12270:6;12265:2;12254:9;12250:18;12243:34;12313:3;12308:2;12297:9;12293:18;12286:31;12337:6;12372;12366:13;12403:6;12395;12388:22;12441:3;12430:9;12426:19;12419:26;;12480:2;12472:6;12468:15;12454:29;;12501:1;12511:195;12525:6;12522:1;12519:13;12511:195;;;12590:13;;-1:-1:-1;;;;;12586:39:1;12574:52;;12681:15;;;;12646:12;;;;12622:1;12540:9;12511:195;;;-1:-1:-1;;;;;;;12762:32:1;;;;12757:2;12742:18;;12735:60;-1:-1:-1;;;12826:3:1;12811:19;12804:35;12723:3;11865:980;-1:-1:-1;;;11865:980:1:o;13462:306::-;13550:6;13558;13566;13619:2;13607:9;13598:7;13594:23;13590:32;13587:52;;;13635:1;13632;13625:12;13587:52;13664:9;13658:16;13648:26;;13714:2;13703:9;13699:18;13693:25;13683:35;;13758:2;13747:9;13743:18;13737:25;13727:35;;13462:306;;;;;:::o

Swarm Source

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