ETH Price: $2,845.57 (-6.82%)
Gas: 11 Gwei

Token

PoofAI (POOF)
 

Overview

Max Total Supply

100,000,000 POOF

Holders

251

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0 POOF

Value
$0.00
0x0f0d51241e0ac0574535a32ec53c3af6606323a3
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:
PoofAI

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-03
*/

// SPDX-License-Identifier: MIT

// Poof - Remove Your Digital Footprint
// Website:  https://p00f.co
// Telegram: https://t.me/poofentry
// Twitter:  https://x.com/p00fAI

pragma solidity ^0.8.24;
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());
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Invalid owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "New owner is ZERO");
        _transferOwnership(newOwner);
    }

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

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

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

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

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

    function tryDiv(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 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 sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

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

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return 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 sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

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

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

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

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address to, 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 from, address to, 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 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 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;
}

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

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

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


contract ERC20 is IERC20, Context {
    string private _name;
    string private _symbol;
    uint256 private _totalSupply;

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

    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 approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: Not owner != address(0)");
        require(spender != address(0), "ERC20: Not spender != address(0)");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

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

    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        _transfer(from, to, amount);
        uint256 curAllow = _allowances[from][_msgSender()];
        require(curAllow >= amount, "ERC20: Not curAllow >= amount");
        unchecked {
            _approve(from, _msgSender(), curAllow - amount);
        }
        return true;
    }

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

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

    function decreaseAllowance(address spender, uint256 subValue) public virtual returns (bool) {
        uint256 curAllow = _allowances[_msgSender()][spender];
        require(curAllow >= subValue, "ERC20: Not curAllow >= subValue");
        unchecked {
            _approve(_msgSender(), spender, curAllow - subValue);
        }
        return true;
    }

    function _mint(
    	address account,
	    uint256 amount
    ) internal virtual {
        require(account != address(0), "ERC20: Not account != address(0)");
        _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: Not account != address(0)");
        _beforeTokenTransfer(account, address(0), amount);
        uint256 kBalance = _balances[account];
        require(kBalance >= amount, "ERC20: kBalance >= amount");
        unchecked {
            _balances[account] = kBalance - amount;
        }
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
        _afterTokenTransfer(account, address(0), amount);
    }

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

    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: Not from != address(0)");
        require(to != address(0), "ERC20: Not to != address(0)");
        _beforeTokenTransfer(from, to, amount);
        uint256 balanceFrom = _balances[from];
        require(balanceFrom >= amount, "ERC20: Not balanceFrom >= amount");
        unchecked {
            _balances[from] = balanceFrom - amount;
        }
        _balances[to] += amount;
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

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

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

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTokenAmountPerWallet;
    uint256 public maxTokenAmountPerTxn;

    bool public TradingActive = false;
    uint256 public ActiveTradingBlock;
    uint256 public PreventSwapbackBlocks;
    bool public SwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public ExcludedMaxTokenAmountPerTxn;

    mapping(address => bool) public ExcludedFromTax;

    mapping(address => bool) public automatedMarketMakerPairs;

    bool public limitsInEffect = true;

    uint256 public sellTotalTax;
    uint256 public sellMarketingTax;
    uint256 public sellDevTax;

    uint256 public buyTotalTax;
    uint256 public buyMarketingTax;
    uint256 public buyDevTax;

    
    bool private Swapping;
    mapping(address => bool) private blackList;
    
    constructor() ERC20("PoofAI", "POOF") {
        devWallet = address(0x76Ee2919D45baEFd4331683012977F6e1a784E6A);
        marketingWallet = address(0x76Ee2919D45baEFd4331683012977F6e1a784E6A);

        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

        ExcludedMaxTokenAmountPerTxn[owner()] = true;
        ExcludedMaxTokenAmountPerTxn[address(this)] = true;

        uint256 totalSupply = 100_000_000 * (10 ** decimals());
        minSwapTokenAmount = 100_000 * (10 ** decimals()); //0.1% min swap
        maxTokenAmountPerTxn = 1_250_001 * (10 ** decimals()); // 1.25% max tx amount
        maxTokenAmountPerWallet = 1_250_001 * (10 ** decimals()); // 1.25% max wallet amount
        ExcludedFromTax[address(this)] = true;
        ExcludedFromTax[owner()] = true;


        automatedMarketMakerPairs[address(swapPair)] = true;
        
        ExcludedMaxTokenAmountPerTxn[address(0xdead)] = true;
        ExcludedMaxTokenAmountPerTxn[address(swapRouter)] = true;
        ExcludedMaxTokenAmountPerTxn[address(swapPair)] = true;

        ExcludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 30;
        sellDevTax = 10;
        sellTotalTax = sellMarketingTax + sellDevTax;


        buyMarketingTax = 15;
        buyDevTax = 5;
        buyTotalTax = buyMarketingTax + buyDevTax;

        PreventSwapbackBlocks=3; 
        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        TradingActive = true;
        SwapEnabled = true;
        ActiveTradingBlock=block.number;
    }
    function updateSwapbackBlocks(uint256 newNum) external onlyOwner{
        PreventSwapbackBlocks=newNum;
    }
    function excludeFromMaxTx(address addr, bool value) external onlyOwner {
        ExcludedMaxTokenAmountPerTxn[addr] = value;
    }
    function taxExempt(address account, bool value) external onlyOwner {    	
        ExcludedFromTax[account] = value;
    }

    function limitsOff() external onlyOwner {
        limitsInEffect = false;
    }
    function toggleSwap(bool enabled) external onlyOwner {
        SwapEnabled = enabled;
    }
    function updateMinimumSwap(uint256 amount) external onlyOwner {
        require(amount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(amount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        minSwapTokenAmount = amount;
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 50, "Must keep tax at 50% or less");
    }

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 95, "Must keep tax at 95% or less");
    }
    
    function setAutomatedPair(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }
    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenAmountToSwap == 0 || tokenBalance == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 5){
            tokenBalance = minSwapTokenAmount * 5;
        }

        uint256 prevETHBalance = address(this).balance;
        swapTokensForEth(tokenBalance);

        uint256 ethBalance = address(this).balance.sub(prevETHBalance);
        uint256 ethForDev = ethBalance.mul(tokenAmountForDev).div(tokenAmountToSwap);

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

        tokenAmountForMarketing = 0;
        tokenAmountForDev = 0;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: Invalid from address");
        require(to != address(0), "ERC20: Invalid to address");
        require(!blackList[from], "ERC20: Sender is blacklisted");
        require(!blackList[to], "ERC20: Receiver is blacklisted");

        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(ExcludedFromTax[from] || ExcludedFromTax[to], "Trading is not active.");
                }

                if (automatedMarketMakerPairs[from] && !ExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn.");
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !ExcludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn.");
                }
                else if (!ExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
            }
        }
        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (SwapEnabled 
            && canSwap 
            && !Swapping 
            && !automatedMarketMakerPairs[from] 
            && !ExcludedFromTax[from] 
            && !ExcludedFromTax[to]
            && ActiveTradingBlock+PreventSwapbackBlocks <= block.number
        ) {
            Swapping = true;
            swapBack();
            Swapping = false;
        }

        bool Tax = !Swapping;
        if (ExcludedFromTax[from] || ExcludedFromTax[to])
            Tax = false;

        uint256 fees = 0; 
        uint tFee = 0;
        if (Tax) {
            if (automatedMarketMakerPairs[to] && sellTotalTax > 0) {
                fees = amount.mul(sellTotalTax).div(100);
                tokenAmountForDev += (fees * sellDevTax) / sellTotalTax;
                tokenAmountForMarketing += (fees * sellMarketingTax) / sellTotalTax;
            }
            else if (automatedMarketMakerPairs[from] && buyTotalTax > 0) {
                fees = amount.mul(buyTotalTax).div(100);
                tokenAmountForDev += (fees * buyDevTax) / buyTotalTax;
                tokenAmountForMarketing += (fees * buyMarketingTax) / buyTotalTax;
            }
            if (fees > 0)
                super._transfer(from, address(this), fees);
            amount -= fees;
        }
            if (!TradingActive){
                tFee = amount.mul(buyTotalTax).div(100);
                super._transfer(from, address(this), tFee);
                amount -= tFee;
            }
        super._transfer(from, to, amount);
    }
    receive() external payable {}
    function swapTokensForEth(uint256 amount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        _approve(address(this), address(swapRouter), amount);

        // make the swap
        swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ActiveTradingBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ExcludedMaxTokenAmountPerTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PreventSwapbackBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"activateTrading","outputs":[],"stateMutability":"nonpayable","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":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"taxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenAmountForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAmountForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateSwapbackBlocks","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805460ff19908116909155600e805482169055601580549091166001179055348015610030575f80fd5b5060405180604001604052806006815260200165506f6f66414960d01b815250604051806040016040528060048152602001632827a7a360e11b815250815f908161007b9190610635565b5060016100888282610635565b5050506100a161009c61046460201b60201c565b610468565b600f80547376ee2919d45baefd4331683012977f6e1a784e6a6001600160a01b031991821617909155600e8054610100600160a81b0319167476ee2919d45baefd4331683012977f6e1a784e6a0017905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801561014a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061016e91906106f4565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101f191906106f4565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af115801561023b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061025f91906106f4565b600780546001600160a01b0319166001600160a01b03928316179055600554165f908152601260208190526040808320805460ff19908116600190811790925530855291842080549092161790556102b890600a610817565b6102c6906305f5e100610825565b90506102d46012600a610817565b6102e190620186a0610825565b6008556102f06012600a610817565b6102fd90621312d1610825565b600a55601261030d90600a610817565b61031a90621312d1610825565b600955305f9081526013602081905260408220805460ff191660019081179091559161034e6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600780548316825260148552838220805487166001908117909155601286527f1120e10407cab1193d7c5139d9aae5536deb3d83e855f25f8e42f811c01f56f7805488168217905560065484168352848320805488168217905590549092168152918220805485168217905561dead90915260139091527f2264e2d7bacabe6058f5009f42467b9be28015e7760f87409562384c94ac271c8054909216179055601e6017819055600a60188190556104329161083c565b601655600f601a8190556005601b81905561044c9161083c565b6019556003600d5561045e33826104b9565b5061084f565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0382166105135760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74206163636f756e7420213d2061646472657373283029604482015260640160405180910390fd5b8060025f828254610524919061083c565b90915550506001600160a01b0382165f908152600360205260408120805483929061055090849061083c565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806105c657607f821691505b6020821081036105e457634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561059957805f5260205f20601f840160051c8101602085101561060f5750805b601f840160051c820191505b8181101561062e575f815560010161061b565b5050505050565b81516001600160401b0381111561064e5761064e61059e565b6106628161065c84546105b2565b846105ea565b602080601f831160018114610695575f841561067e5750858301515b5f19600386901b1c1916600185901b1785556106ec565b5f85815260208120601f198616915b828110156106c3578886015182559484019460019091019084016106a4565b50858210156106e057878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f60208284031215610704575f80fd5b81516001600160a01b038116811461071a575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b8085111561076f57815f190482111561075557610755610721565b8085161561076257918102915b93841c939080029061073a565b509250929050565b5f8261078557506001610811565b8161079157505f610811565b81600181146107a757600281146107b1576107cd565b6001915050610811565b60ff8411156107c2576107c2610721565b50506001821b610811565b5060208310610133831016604e8410600b84101617156107f0575081810a610811565b6107fa8383610735565b805f190482111561080d5761080d610721565b0290505b92915050565b5f61071a60ff841683610777565b808202811582820484141761081157610811610721565b8082018082111561081157610811610721565b6120d28061085c5f395ff3fe608060405260043610610283575f3560e01c80637d67317011610155578063be691883116100be578063dd62ed3e11610078578063dd62ed3e14610754578063e27a55fe14610798578063e96db1ef146107ad578063ea281678146107c2578063f2fde38b146107e1578063fc0217a414610800575f80fd5b8063be6918831461069f578063c31c9c07146106b4578063c410a11b146106d3578063c42c3f8814610701578063d4c989d314610716578063d5de646014610735575f80fd5b8063a9059cbb1161010f578063a9059cbb146105ea578063af8f26e714610609578063b38d229a1461061e578063b38d5ef414610633578063b62496f514610652578063b79c188614610680575f80fd5b80637d6731701461053857806380da45431461054d5780638da5cb5b1461057b5780638ea5220f1461059857806395d89b41146105b7578063a457c2d7146105cb575f80fd5b806332e40caf116101f75780635df6e68e116101b15780635df6e68e14610483578063685fbc6b146104985780636d8aa8f8146104ad57806370a08231146104cc578063715018a61461050057806375f0a87414610514575f80fd5b806332e40caf146103e95780633301241114610408578063372b44b81461041d578063395093511461043257806341c78796146104515780634a62bb651461046a575f80fd5b806318c34be11161024857806318c34be1146103305780631c55c8b614610345578063232050f91461036457806323b872dd1461037857806326991cc814610397578063313ce567146103ce575f80fd5b806301b123121461028e57806306fdde03146102b6578063095ea7b3146102d75780630bd05b691461030657806318160ddd1461031c575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a3600d5481565b6040519081526020015b60405180910390f35b3480156102c1575f80fd5b506102ca610819565b6040516102ad9190611d93565b3480156102e2575f80fd5b506102f66102f1366004611ddc565b6108a8565b60405190151581526020016102ad565b348015610311575f80fd5b5061031a6108be565b005b348015610327575f80fd5b506002546102a3565b34801561033b575f80fd5b506102a360105481565b348015610350575f80fd5b5061031a61035f366004611e1a565b610914565b34801561036f575f80fd5b5061031a6109ec565b348015610383575f80fd5b506102f6610392366004611e4d565b610a22565b3480156103a2575f80fd5b506007546103b6906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b3480156103d9575f80fd5b50604051601281526020016102ad565b3480156103f4575f80fd5b5061031a610403366004611e1a565b610ab9565b348015610413575f80fd5b506102a3601a5481565b348015610428575f80fd5b506102a360115481565b34801561043d575f80fd5b506102f661044c366004611ddc565b610b0d565b34801561045c575f80fd5b50600e546102f69060ff1681565b348015610475575f80fd5b506015546102f69060ff1681565b34801561048e575f80fd5b506102a360195481565b3480156104a3575f80fd5b506102a360095481565b3480156104b8575f80fd5b5061031a6104c7366004611e8b565b610b48565b3480156104d7575f80fd5b506102a36104e6366004611ea4565b6001600160a01b03165f9081526003602052604090205490565b34801561050b575f80fd5b5061031a610b85565b34801561051f575f80fd5b50600e546103b69061010090046001600160a01b031681565b348015610543575f80fd5b506102a360085481565b348015610558575f80fd5b506102f6610567366004611ea4565b60136020525f908152604090205460ff1681565b348015610586575f80fd5b506005546001600160a01b03166103b6565b3480156105a3575f80fd5b50600f546103b6906001600160a01b031681565b3480156105c2575f80fd5b506102ca610bba565b3480156105d6575f80fd5b506102f66105e5366004611ddc565b610bc9565b3480156105f5575f80fd5b506102f6610604366004611ddc565b610c53565b348015610614575f80fd5b506102a3601b5481565b348015610629575f80fd5b506102a3600c5481565b34801561063e575f80fd5b5061031a61064d366004611ebf565b610c5f565b34801561065d575f80fd5b506102f661066c366004611ea4565b60146020525f908152604090205460ff1681565b34801561068b575f80fd5b5061031a61069a366004611ebf565b610cf6565b3480156106aa575f80fd5b506102a360185481565b3480156106bf575f80fd5b506006546103b6906001600160a01b031681565b3480156106de575f80fd5b506102f66106ed366004611ea4565b60126020525f908152604090205460ff1681565b34801561070c575f80fd5b506102a3600a5481565b348015610721575f80fd5b5061031a610730366004611e1a565b610d89565b348015610740575f80fd5b5061031a61074f366004611edf565b610ddd565b34801561075f575f80fd5b506102a361076e366004611ef6565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156107a3575f80fd5b506102a360165481565b3480156107b8575f80fd5b506102a360175481565b3480156107cd575f80fd5b5061031a6107dc366004611edf565b610e0c565b3480156107ec575f80fd5b5061031a6107fb366004611ea4565b610f57565b34801561080b575f80fd5b50600b546102f69060ff1681565b60605f805461082790611f2d565b80601f016020809104026020016040519081016040528092919081815260200182805461085390611f2d565b801561089e5780601f106108755761010080835404028352916020019161089e565b820191905f5260205f20905b81548152906001019060200180831161088157829003601f168201915b5050505050905090565b5f6108b4338484610fd7565b5060015b92915050565b6005546001600160a01b031633146108f15760405162461bcd60e51b81526004016108e890611f65565b60405180910390fd5b600b8054600160ff199182168117909255600e8054909116909117905543600c55565b6005546001600160a01b0316331461093e5760405162461bcd60e51b81526004016108e890611f65565b6007546001600160a01b03908116908316036109c25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108e8565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a165760405162461bcd60e51b81526004016108e890611f65565b6015805460ff19169055565b5f610a2e8484846110e3565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610aa15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016108e8565b610aae8533858403610fd7565b506001949350505050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108b4918590610b43908690611fa0565b610fd7565b6005546001600160a01b03163314610b725760405162461bcd60e51b81526004016108e890611f65565b600e805460ff1916911515919091179055565b6005546001600160a01b03163314610baf5760405162461bcd60e51b81526004016108e890611f65565b610bb85f6118db565b565b60606001805461082790611f2d565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610c3c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016108e8565b610c493385858403610fd7565b5060019392505050565b5f6108b43384846110e3565b6005546001600160a01b03163314610c895760405162461bcd60e51b81526004016108e890611f65565b601a829055601b819055610c9d8183611fa0565b601981905560321015610cf25760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420353025206f72206c6573730000000060448201526064016108e8565b5050565b6005546001600160a01b03163314610d205760405162461bcd60e51b81526004016108e890611f65565b60178290556018819055610d348183611fa0565b6016819055605f1015610cf25760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016108e8565b6005546001600160a01b03163314610db35760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e075760405162461bcd60e51b81526004016108e890611f65565b600d55565b6005546001600160a01b03163314610e365760405162461bcd60e51b81526004016108e890611f65565b620186a0610e4360025490565b610e4e906001611fb3565b610e589190611fca565b811015610ec55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108e8565b6103e8610ed160025490565b610edc906005611fb3565b610ee69190611fca565b811115610f525760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108e8565b600855565b6005546001600160a01b03163314610f815760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b038116610fcb5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016108e8565b610fd4816118db565b50565b6001600160a01b03831661102d5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016108e8565b6001600160a01b0382166110835760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016108e8565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111395760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016108e8565b6001600160a01b03821661118f5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016108e8565b6001600160a01b0383165f908152601d602052604090205460ff16156111f75760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c69737465640000000060448201526064016108e8565b6001600160a01b0382165f908152601d602052604090205460ff161561125f5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20526563656976657220697320626c61636b6c6973746564000060448201526064016108e8565b805f036112765761127183835f61192c565b505050565b60155460ff16156115d7576005546001600160a01b038481169116148015906112ad57506005546001600160a01b03838116911614155b80156112c157506001600160a01b03821615155b80156112d857506001600160a01b03821661dead14155b80156112e75750601c5460ff16155b156115d757600b5460ff16611378576001600160a01b0383165f9081526013602052604090205460ff168061133357506001600160a01b0382165f9081526013602052604090205460ff165b6113785760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e8565b6001600160a01b0383165f9081526014602052604090205460ff1680156113b757506001600160a01b0382165f9081526012602052604090205460ff16155b1561149a57600a5481111561142c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016108e8565b6009546001600160a01b0383165f908152600360205260409020546114519083611fa0565b11156114955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e8565b6115d7565b6001600160a01b0382165f9081526014602052604090205460ff1680156114d957506001600160a01b0383165f9081526012602052604090205460ff16155b1561154f57600a548111156114955760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016108e8565b6001600160a01b0382165f9081526012602052604090205460ff166115d7576009546001600160a01b0383165f908152600360205260409020546115939083611fa0565b11156115d75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e8565b305f90815260036020526040902054600854600e54908210159060ff1680156115fd5750805b801561160c5750601c5460ff16155b801561163057506001600160a01b0385165f9081526014602052604090205460ff16155b801561165457506001600160a01b0385165f9081526013602052604090205460ff16155b801561167857506001600160a01b0384165f9081526013602052604090205460ff16155b8015611693575043600d54600c546116909190611fa0565b11155b156116b857601c805460ff191660011790556116ad611ad0565b601c805460ff191690555b601c546001600160a01b0386165f9081526013602052604090205460ff918216159116806116fd57506001600160a01b0385165f9081526013602052604090205460ff165b1561170557505f5b5f808215611888576001600160a01b0387165f9081526014602052604090205460ff16801561173557505f601654115b156117c15761175a606461175460165489611c1b90919063ffffffff16565b90611c2d565b91506016546018548361176d9190611fb3565b6117779190611fca565b60115f8282546117879190611fa0565b909155505060165460175461179c9084611fb3565b6117a69190611fca565b60105f8282546117b69190611fa0565b9091555061186a9050565b6001600160a01b0388165f9081526014602052604090205460ff1680156117e957505f601954115b1561186a57611808606461175460195489611c1b90919063ffffffff16565b9150601954601b548361181b9190611fb3565b6118259190611fca565b60115f8282546118359190611fa0565b9091555050601954601a5461184a9084611fb3565b6118549190611fca565b60105f8282546118649190611fa0565b90915550505b811561187b5761187b88308461192c565b6118858287611fe9565b95505b600b5460ff166118c6576118ac606461175460195489611c1b90919063ffffffff16565b90506118b988308361192c565b6118c38187611fe9565b95505b6118d188888861192c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166119825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016108e8565b6001600160a01b0382166119d85760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016108e8565b6001600160a01b0383165f9081526003602052604090205481811015611a405760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016108e8565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611a76908490611fa0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ac291815260200190565b60405180910390a350505050565b5f80601154601054611ae29190611fa0565b305f90815260036020526040902054909150811580611aff575080155b15611b0957505050565b600854611b17906005611fb3565b811115611b2f57600854611b2c906005611fb3565b90505b47611b3982611c38565b5f611b444783611d88565b90505f611b608561175460115485611c1b90919063ffffffff16565b600f546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114611bab576040519150601f19603f3d011682016040523d82523d5f602084013e611bb0565b606091505b5050600e5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114611c02576040519150601f19603f3d011682016040523d82523d5f602084013e611c07565b606091505b50505f601081905560115550505050505050565b5f611c268284611fb3565b9392505050565b5f611c268284611fca565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c6b57611c6b611ffc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cc2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce69190612010565b81600181518110611cf957611cf9611ffc565b6001600160a01b039283166020918202929092010152600654611d1f9130911684610fd7565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d579085905f9086903090429060040161202b565b5f604051808303815f87803b158015611d6e575f80fd5b505af1158015611d80573d5f803e3d5ffd5b505050505050565b5f611c268284611fe9565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610fd4575f80fd5b5f8060408385031215611ded575f80fd5b8235611df881611dc8565b946020939093013593505050565b80358015158114611e15575f80fd5b919050565b5f8060408385031215611e2b575f80fd5b8235611e3681611dc8565b9150611e4460208401611e06565b90509250929050565b5f805f60608486031215611e5f575f80fd5b8335611e6a81611dc8565b92506020840135611e7a81611dc8565b929592945050506040919091013590565b5f60208284031215611e9b575f80fd5b611c2682611e06565b5f60208284031215611eb4575f80fd5b8135611c2681611dc8565b5f8060408385031215611ed0575f80fd5b50508035926020909101359150565b5f60208284031215611eef575f80fd5b5035919050565b5f8060408385031215611f07575f80fd5b8235611f1281611dc8565b91506020830135611f2281611dc8565b809150509250929050565b600181811c90821680611f4157607f821691505b602082108103611f5f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108b8576108b8611f8c565b80820281158282048414176108b8576108b8611f8c565b5f82611fe457634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156108b8576108b8611f8c565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612020575f80fd5b8151611c2681611dc8565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561207b5784516001600160a01b031683529383019391830191600101612056565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201c9c1e1ee73eac06471aa6405b08dd2003d599014d30cf0e257ea7cd28aa8b7b64736f6c63430008190033

Deployed Bytecode

0x608060405260043610610283575f3560e01c80637d67317011610155578063be691883116100be578063dd62ed3e11610078578063dd62ed3e14610754578063e27a55fe14610798578063e96db1ef146107ad578063ea281678146107c2578063f2fde38b146107e1578063fc0217a414610800575f80fd5b8063be6918831461069f578063c31c9c07146106b4578063c410a11b146106d3578063c42c3f8814610701578063d4c989d314610716578063d5de646014610735575f80fd5b8063a9059cbb1161010f578063a9059cbb146105ea578063af8f26e714610609578063b38d229a1461061e578063b38d5ef414610633578063b62496f514610652578063b79c188614610680575f80fd5b80637d6731701461053857806380da45431461054d5780638da5cb5b1461057b5780638ea5220f1461059857806395d89b41146105b7578063a457c2d7146105cb575f80fd5b806332e40caf116101f75780635df6e68e116101b15780635df6e68e14610483578063685fbc6b146104985780636d8aa8f8146104ad57806370a08231146104cc578063715018a61461050057806375f0a87414610514575f80fd5b806332e40caf146103e95780633301241114610408578063372b44b81461041d578063395093511461043257806341c78796146104515780634a62bb651461046a575f80fd5b806318c34be11161024857806318c34be1146103305780631c55c8b614610345578063232050f91461036457806323b872dd1461037857806326991cc814610397578063313ce567146103ce575f80fd5b806301b123121461028e57806306fdde03146102b6578063095ea7b3146102d75780630bd05b691461030657806318160ddd1461031c575f80fd5b3661028a57005b5f80fd5b348015610299575f80fd5b506102a3600d5481565b6040519081526020015b60405180910390f35b3480156102c1575f80fd5b506102ca610819565b6040516102ad9190611d93565b3480156102e2575f80fd5b506102f66102f1366004611ddc565b6108a8565b60405190151581526020016102ad565b348015610311575f80fd5b5061031a6108be565b005b348015610327575f80fd5b506002546102a3565b34801561033b575f80fd5b506102a360105481565b348015610350575f80fd5b5061031a61035f366004611e1a565b610914565b34801561036f575f80fd5b5061031a6109ec565b348015610383575f80fd5b506102f6610392366004611e4d565b610a22565b3480156103a2575f80fd5b506007546103b6906001600160a01b031681565b6040516001600160a01b0390911681526020016102ad565b3480156103d9575f80fd5b50604051601281526020016102ad565b3480156103f4575f80fd5b5061031a610403366004611e1a565b610ab9565b348015610413575f80fd5b506102a3601a5481565b348015610428575f80fd5b506102a360115481565b34801561043d575f80fd5b506102f661044c366004611ddc565b610b0d565b34801561045c575f80fd5b50600e546102f69060ff1681565b348015610475575f80fd5b506015546102f69060ff1681565b34801561048e575f80fd5b506102a360195481565b3480156104a3575f80fd5b506102a360095481565b3480156104b8575f80fd5b5061031a6104c7366004611e8b565b610b48565b3480156104d7575f80fd5b506102a36104e6366004611ea4565b6001600160a01b03165f9081526003602052604090205490565b34801561050b575f80fd5b5061031a610b85565b34801561051f575f80fd5b50600e546103b69061010090046001600160a01b031681565b348015610543575f80fd5b506102a360085481565b348015610558575f80fd5b506102f6610567366004611ea4565b60136020525f908152604090205460ff1681565b348015610586575f80fd5b506005546001600160a01b03166103b6565b3480156105a3575f80fd5b50600f546103b6906001600160a01b031681565b3480156105c2575f80fd5b506102ca610bba565b3480156105d6575f80fd5b506102f66105e5366004611ddc565b610bc9565b3480156105f5575f80fd5b506102f6610604366004611ddc565b610c53565b348015610614575f80fd5b506102a3601b5481565b348015610629575f80fd5b506102a3600c5481565b34801561063e575f80fd5b5061031a61064d366004611ebf565b610c5f565b34801561065d575f80fd5b506102f661066c366004611ea4565b60146020525f908152604090205460ff1681565b34801561068b575f80fd5b5061031a61069a366004611ebf565b610cf6565b3480156106aa575f80fd5b506102a360185481565b3480156106bf575f80fd5b506006546103b6906001600160a01b031681565b3480156106de575f80fd5b506102f66106ed366004611ea4565b60126020525f908152604090205460ff1681565b34801561070c575f80fd5b506102a3600a5481565b348015610721575f80fd5b5061031a610730366004611e1a565b610d89565b348015610740575f80fd5b5061031a61074f366004611edf565b610ddd565b34801561075f575f80fd5b506102a361076e366004611ef6565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156107a3575f80fd5b506102a360165481565b3480156107b8575f80fd5b506102a360175481565b3480156107cd575f80fd5b5061031a6107dc366004611edf565b610e0c565b3480156107ec575f80fd5b5061031a6107fb366004611ea4565b610f57565b34801561080b575f80fd5b50600b546102f69060ff1681565b60605f805461082790611f2d565b80601f016020809104026020016040519081016040528092919081815260200182805461085390611f2d565b801561089e5780601f106108755761010080835404028352916020019161089e565b820191905f5260205f20905b81548152906001019060200180831161088157829003601f168201915b5050505050905090565b5f6108b4338484610fd7565b5060015b92915050565b6005546001600160a01b031633146108f15760405162461bcd60e51b81526004016108e890611f65565b60405180910390fd5b600b8054600160ff199182168117909255600e8054909116909117905543600c55565b6005546001600160a01b0316331461093e5760405162461bcd60e51b81526004016108e890611f65565b6007546001600160a01b03908116908316036109c25760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016108e8565b6001600160a01b03919091165f908152601460205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610a165760405162461bcd60e51b81526004016108e890611f65565b6015805460ff19169055565b5f610a2e8484846110e3565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610aa15760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016108e8565b610aae8533858403610fd7565b506001949350505050565b6005546001600160a01b03163314610ae35760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b03919091165f908152601360205260409020805460ff1916911515919091179055565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916108b4918590610b43908690611fa0565b610fd7565b6005546001600160a01b03163314610b725760405162461bcd60e51b81526004016108e890611f65565b600e805460ff1916911515919091179055565b6005546001600160a01b03163314610baf5760405162461bcd60e51b81526004016108e890611f65565b610bb85f6118db565b565b60606001805461082790611f2d565b335f9081526004602090815260408083206001600160a01b038616845290915281205482811015610c3c5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016108e8565b610c493385858403610fd7565b5060019392505050565b5f6108b43384846110e3565b6005546001600160a01b03163314610c895760405162461bcd60e51b81526004016108e890611f65565b601a829055601b819055610c9d8183611fa0565b601981905560321015610cf25760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420353025206f72206c6573730000000060448201526064016108e8565b5050565b6005546001600160a01b03163314610d205760405162461bcd60e51b81526004016108e890611f65565b60178290556018819055610d348183611fa0565b6016819055605f1015610cf25760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016108e8565b6005546001600160a01b03163314610db35760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b03919091165f908152601260205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610e075760405162461bcd60e51b81526004016108e890611f65565b600d55565b6005546001600160a01b03163314610e365760405162461bcd60e51b81526004016108e890611f65565b620186a0610e4360025490565b610e4e906001611fb3565b610e589190611fca565b811015610ec55760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108e8565b6103e8610ed160025490565b610edc906005611fb3565b610ee69190611fca565b811115610f525760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108e8565b600855565b6005546001600160a01b03163314610f815760405162461bcd60e51b81526004016108e890611f65565b6001600160a01b038116610fcb5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016108e8565b610fd4816118db565b50565b6001600160a01b03831661102d5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016108e8565b6001600160a01b0382166110835760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016108e8565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111395760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016108e8565b6001600160a01b03821661118f5760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016108e8565b6001600160a01b0383165f908152601d602052604090205460ff16156111f75760405162461bcd60e51b815260206004820152601c60248201527f45524332303a2053656e64657220697320626c61636b6c69737465640000000060448201526064016108e8565b6001600160a01b0382165f908152601d602052604090205460ff161561125f5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a20526563656976657220697320626c61636b6c6973746564000060448201526064016108e8565b805f036112765761127183835f61192c565b505050565b60155460ff16156115d7576005546001600160a01b038481169116148015906112ad57506005546001600160a01b03838116911614155b80156112c157506001600160a01b03821615155b80156112d857506001600160a01b03821661dead14155b80156112e75750601c5460ff16155b156115d757600b5460ff16611378576001600160a01b0383165f9081526013602052604090205460ff168061133357506001600160a01b0382165f9081526013602052604090205460ff165b6113785760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e8565b6001600160a01b0383165f9081526014602052604090205460ff1680156113b757506001600160a01b0382165f9081526012602052604090205460ff16155b1561149a57600a5481111561142c5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016108e8565b6009546001600160a01b0383165f908152600360205260409020546114519083611fa0565b11156114955760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e8565b6115d7565b6001600160a01b0382165f9081526014602052604090205460ff1680156114d957506001600160a01b0383165f9081526012602052604090205460ff16155b1561154f57600a548111156114955760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016108e8565b6001600160a01b0382165f9081526012602052604090205460ff166115d7576009546001600160a01b0383165f908152600360205260409020546115939083611fa0565b11156115d75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e8565b305f90815260036020526040902054600854600e54908210159060ff1680156115fd5750805b801561160c5750601c5460ff16155b801561163057506001600160a01b0385165f9081526014602052604090205460ff16155b801561165457506001600160a01b0385165f9081526013602052604090205460ff16155b801561167857506001600160a01b0384165f9081526013602052604090205460ff16155b8015611693575043600d54600c546116909190611fa0565b11155b156116b857601c805460ff191660011790556116ad611ad0565b601c805460ff191690555b601c546001600160a01b0386165f9081526013602052604090205460ff918216159116806116fd57506001600160a01b0385165f9081526013602052604090205460ff165b1561170557505f5b5f808215611888576001600160a01b0387165f9081526014602052604090205460ff16801561173557505f601654115b156117c15761175a606461175460165489611c1b90919063ffffffff16565b90611c2d565b91506016546018548361176d9190611fb3565b6117779190611fca565b60115f8282546117879190611fa0565b909155505060165460175461179c9084611fb3565b6117a69190611fca565b60105f8282546117b69190611fa0565b9091555061186a9050565b6001600160a01b0388165f9081526014602052604090205460ff1680156117e957505f601954115b1561186a57611808606461175460195489611c1b90919063ffffffff16565b9150601954601b548361181b9190611fb3565b6118259190611fca565b60115f8282546118359190611fa0565b9091555050601954601a5461184a9084611fb3565b6118549190611fca565b60105f8282546118649190611fa0565b90915550505b811561187b5761187b88308461192c565b6118858287611fe9565b95505b600b5460ff166118c6576118ac606461175460195489611c1b90919063ffffffff16565b90506118b988308361192c565b6118c38187611fe9565b95505b6118d188888861192c565b5050505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166119825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016108e8565b6001600160a01b0382166119d85760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016108e8565b6001600160a01b0383165f9081526003602052604090205481811015611a405760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016108e8565b6001600160a01b038085165f90815260036020526040808220858503905591851681529081208054849290611a76908490611fa0565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ac291815260200190565b60405180910390a350505050565b5f80601154601054611ae29190611fa0565b305f90815260036020526040902054909150811580611aff575080155b15611b0957505050565b600854611b17906005611fb3565b811115611b2f57600854611b2c906005611fb3565b90505b47611b3982611c38565b5f611b444783611d88565b90505f611b608561175460115485611c1b90919063ffffffff16565b600f546040519192506001600160a01b03169082905f81818185875af1925050503d805f8114611bab576040519150601f19603f3d011682016040523d82523d5f602084013e611bb0565b606091505b5050600e5460405191975061010090046001600160a01b03169047905f81818185875af1925050503d805f8114611c02576040519150601f19603f3d011682016040523d82523d5f602084013e611c07565b606091505b50505f601081905560115550505050505050565b5f611c268284611fb3565b9392505050565b5f611c268284611fca565b6040805160028082526060820183525f9260208301908036833701905050905030815f81518110611c6b57611c6b611ffc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611cc2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ce69190612010565b81600181518110611cf957611cf9611ffc565b6001600160a01b039283166020918202929092010152600654611d1f9130911684610fd7565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac94790611d579085905f9086903090429060040161202b565b5f604051808303815f87803b158015611d6e575f80fd5b505af1158015611d80573d5f803e3d5ffd5b505050505050565b5f611c268284611fe9565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b6001600160a01b0381168114610fd4575f80fd5b5f8060408385031215611ded575f80fd5b8235611df881611dc8565b946020939093013593505050565b80358015158114611e15575f80fd5b919050565b5f8060408385031215611e2b575f80fd5b8235611e3681611dc8565b9150611e4460208401611e06565b90509250929050565b5f805f60608486031215611e5f575f80fd5b8335611e6a81611dc8565b92506020840135611e7a81611dc8565b929592945050506040919091013590565b5f60208284031215611e9b575f80fd5b611c2682611e06565b5f60208284031215611eb4575f80fd5b8135611c2681611dc8565b5f8060408385031215611ed0575f80fd5b50508035926020909101359150565b5f60208284031215611eef575f80fd5b5035919050565b5f8060408385031215611f07575f80fd5b8235611f1281611dc8565b91506020830135611f2281611dc8565b809150509250929050565b600181811c90821680611f4157607f821691505b602082108103611f5f57634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808201808211156108b8576108b8611f8c565b80820281158282048414176108b8576108b8611f8c565b5f82611fe457634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156108b8576108b8611f8c565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612020575f80fd5b8151611c2681611dc8565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561207b5784516001600160a01b031683529383019391830191600101612056565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212201c9c1e1ee73eac06471aa6405b08dd2003d599014d30cf0e257ea7cd28aa8b7b64736f6c63430008190033

Deployed Bytecode Sourcemap

14093:9379:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14457:36;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;14457:36:0;;;;;;;;9778:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10350:169::-;;;;;;;;;;-1:-1:-1;10350:169:0;;;;;:::i;:::-;;:::i;:::-;;;1240:14:1;;1233:22;1215:41;;1203:2;1188:18;10350:169:0;1075:187:1;16788:156:0;;;;;;;;;;;;;:::i;:::-;;10099:108;;;;;;;;;;-1:-1:-1;10187:12:0;;10099:108;;14610:38;;;;;;;;;;;;;;;;18460:235;;;;;;;;;;-1:-1:-1;18460:235:0;;;;;:::i;:::-;;:::i;17336:81::-;;;;;;;;;;;;;:::i;11030:397::-;;;;;;;;;;-1:-1:-1;11030:397:0;;;;;:::i;:::-;;:::i;14212:23::-;;;;;;;;;;-1:-1:-1;14212:23:0;;;;-1:-1:-1;;;;;14212:23:0;;;;;;-1:-1:-1;;;;;2377:32:1;;;2359:51;;2347:2;2332:18;14212:23:0;2213:203:1;9998:93:0;;;;;;;;;;-1:-1:-1;9998:93:0;;10081:2;2563:36:1;;2551:2;2536:18;9998:93:0;2421:184:1;17205:123:0;;;;;;;;;;-1:-1:-1;17205:123:0;;;;;:::i;:::-;;:::i;15068:30::-;;;;;;;;;;;;;;;;14655:32;;;;;;;;;;;;;;;;11604:211;;;;;;;;;;-1:-1:-1;11604:211:0;;;;;:::i;:::-;;:::i;14500:31::-;;;;;;;;;;-1:-1:-1;14500:31:0;;;;;;;;14887:33;;;;;;;;;;-1:-1:-1;14887:33:0;;;;;;;;15035:26;;;;;;;;;;;;;;;;14288:38;;;;;;;;;;;;;;;;17423:93;;;;;;;;;;-1:-1:-1;17423:93:0;;;;;:::i;:::-;;:::i;10215:127::-;;;;;;;;;;-1:-1:-1;10215:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10316:18:0;10289:7;10316:18;;;:9;:18;;;;;;;10215:127;1086:103;;;;;;;;;;;;;:::i;14540:30::-;;;;;;;;;;-1:-1:-1;14540:30:0;;;;;;;-1:-1:-1;;;;;14540:30:0;;;14248:33;;;;;;;;;;;;;;;;14765:47;;;;;;;;;;-1:-1:-1;14765:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;803:87;;;;;;;;;;-1:-1:-1;876:6:0;;-1:-1:-1;;;;;876:6:0;803:87;;14577:24;;;;;;;;;;-1:-1:-1;14577:24:0;;;;-1:-1:-1;;;;;14577:24:0;;;9886:104;;;;;;;;;;;;;:::i;11823:360::-;;;;;;;;;;-1:-1:-1;11823:360:0;;;;;:::i;:::-;;:::i;11435:161::-;;;;;;;;;;-1:-1:-1;11435:161:0;;;;;:::i;:::-;;:::i;15105:24::-;;;;;;;;;;;;;;;;14417:33;;;;;;;;;;;;;;;;17865:284;;;;;;;;;;-1:-1:-1;17865:284:0;;;;;:::i;:::-;;:::i;14821:57::-;;;;;;;;;;-1:-1:-1;14821:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18157:291;;;;;;;;;;-1:-1:-1;18157:291:0;;;;;:::i;:::-;;:::i;15001:25::-;;;;;;;;;;;;;;;;14169:36;;;;;;;;;;-1:-1:-1;14169:36:0;;;;-1:-1:-1;;;;;14169:36:0;;;14696:60;;;;;;;;;;-1:-1:-1;14696:60:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14333:35;;;;;;;;;;;;;;;;17067:132;;;;;;;;;;-1:-1:-1;17067:132:0;;;;;:::i;:::-;;:::i;16950:111::-;;;;;;;;;;-1:-1:-1;16950:111:0;;;;;:::i;:::-;;:::i;10871:151::-;;;;;;;;;;-1:-1:-1;10871:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10987:18:0;;;10960:7;10987:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10871:151;14929:27;;;;;;;;;;;;;;;;14963:31;;;;;;;;;;;;;;;;17522:335;;;;;;;;;;-1:-1:-1;17522:335:0;;;;;:::i;:::-;;:::i;898:180::-;;;;;;;;;;-1:-1:-1;898:180:0;;;;;:::i;:::-;;:::i;14377:33::-;;;;;;;;;;-1:-1:-1;14377:33:0;;;;;;;;9778:100;9832:13;9865:5;9858:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9778:100;:::o;10350:169::-;10433:4;10450:39;319:10;10473:7;10482:6;10450:8;:39::i;:::-;-1:-1:-1;10507:4:0;10350:169;;;;;:::o;16788:156::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;;;;;;;;;16845:13:::1;:20:::0;;16861:4:::1;-1:-1:-1::0;;16845:20:0;;::::1;::::0;::::1;::::0;;;16876:11:::1;:18:::0;;;;::::1;::::0;;::::1;::::0;;16924:12:::1;16905:18;:31:::0;16788:156::o;18460:235::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;18567:8:::1;::::0;-1:-1:-1;;;;;18567:8:0;;::::1;18559:16:::0;;::::1;::::0;18551:86:::1;;;::::0;-1:-1:-1;;;18551:86:0;;5041:2:1;18551:86:0::1;::::0;::::1;5023:21:1::0;5080:2;5060:18;;;5053:30;5119:34;5099:18;;;5092:62;5190:27;5170:18;;;5163:55;5235:19;;18551:86:0::1;4839:421:1::0;18551:86:0::1;-1:-1:-1::0;;;;;18648:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;18648:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18460:235::o;17336:81::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17387:14:::1;:22:::0;;-1:-1:-1;;17387:22:0::1;::::0;;17336:81::o;11030:397::-;11127:4;11144:27;11154:4;11160:2;11164:6;11144:9;:27::i;:::-;-1:-1:-1;;;;;11201:17:0;;11182:16;11201:17;;;:11;:17;;;;;;;;319:10;11201:31;;;;;;;;11251:18;;;;11243:60;;;;-1:-1:-1;;;11243:60:0;;5467:2:1;11243:60:0;;;5449:21:1;5506:2;5486:18;;;5479:30;5545:31;5525:18;;;5518:59;5594:18;;11243:60:0;5265:353:1;11243:60:0;11339:47;11348:4;319:10;11379:6;11368:8;:17;11339:8;:47::i;:::-;-1:-1:-1;11415:4:0;;11030:397;-1:-1:-1;;;;11030:397:0:o;17205:123::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17288:24:0;;;::::1;;::::0;;;:15:::1;:24;::::0;;;;:32;;-1:-1:-1;;17288:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17205:123::o;11604:211::-;319:10;11690:4;11739:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11739:34:0;;;;;;;;;;11690:4;;11707:78;;11730:7;;11739:45;;11776:8;;11739:45;:::i;:::-;11707:8;:78::i;17423:93::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17487:11:::1;:21:::0;;-1:-1:-1;;17487:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17423:93::o;1086:103::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;1151:30:::1;1178:1;1151:18;:30::i;:::-;1086:103::o:0;9886:104::-;9942:13;9975:7;9968:14;;;;;:::i;11823:360::-;319:10;11909:4;11945:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11945:34:0;;;;;;;;;;11998:20;;;;11990:64;;;;-1:-1:-1;;;11990:64:0;;6087:2:1;11990:64:0;;;6069:21:1;6126:2;6106:18;;;6099:30;6165:33;6145:18;;;6138:61;6216:18;;11990:64:0;5885:355:1;11990:64:0;12090:52;319:10;12113:7;12133:8;12122;:19;12090:8;:52::i;:::-;-1:-1:-1;12171:4:0;;11823:360;-1:-1:-1;;;11823:360:0:o;11435:161::-;11514:4;11531:35;319:10;11555:2;11559:6;11531:9;:35::i;17865:284::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17958:15:::1;:30:::0;;;17999:9:::1;:21:::0;;;18045:27:::1;18011:9:::0;17976:12;18045:27:::1;:::i;:::-;18031:11;:41:::0;;;18106:2:::1;-1:-1:-1::0;18091:17:0::1;18083:58;;;::::0;-1:-1:-1;;;18083:58:0;;6447:2:1;18083:58:0::1;::::0;::::1;6429:21:1::0;6486:2;6466:18;;;6459:30;6525;6505:18;;;6498:58;6573:18;;18083:58:0::1;6245:352:1::0;18083:58:0::1;17865:284:::0;;:::o;18157:291::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;18251:16:::1;:31:::0;;;18293:10:::1;:22:::0;;;18341:29:::1;18306:9:::0;18270:12;18341:29:::1;:::i;:::-;18326:12;:44:::0;;;18405:2:::1;-1:-1:-1::0;18389:18:0::1;18381:59;;;::::0;-1:-1:-1;;;18381:59:0;;6804:2:1;18381:59:0::1;::::0;::::1;6786:21:1::0;6843:2;6823:18;;;6816:30;6882;6862:18;;;6855:58;6930:18;;18381:59:0::1;6602:352:1::0;17067:132:0;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17149:34:0;;;::::1;;::::0;;;:28:::1;:34;::::0;;;;:42;;-1:-1:-1;;17149:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;17067:132::o;16950:111::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17025:21:::1;:28:::0;16950:111::o;17522:335::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;17635:6:::1;17614:13;10187:12:::0;;;10099:108;17614:13:::1;:17;::::0;17630:1:::1;17614:17;:::i;:::-;17613:28;;;;:::i;:::-;17603:6;:38;;17595:104;;;::::0;-1:-1:-1;;;17595:104:0;;7556:2:1;17595:104:0::1;::::0;::::1;7538:21:1::0;7595:2;7575:18;;;7568:30;7634:34;7614:18;;;7607:62;-1:-1:-1;;;7685:18:1;;;7678:51;7746:19;;17595:104:0::1;7354:417:1::0;17595:104:0::1;17750:4;17729:13;10187:12:::0;;;10099:108;17729:13:::1;:17;::::0;17745:1:::1;17729:17;:::i;:::-;17728:26;;;;:::i;:::-;17718:6;:36;;17710:101;;;::::0;-1:-1:-1;;;17710:101:0;;7978:2:1;17710:101:0::1;::::0;::::1;7960:21:1::0;8017:2;7997:18;;;7990:30;8056:34;8036:18;;;8029:62;-1:-1:-1;;;8107:18:1;;;8100:50;8167:19;;17710:101:0::1;7776:416:1::0;17710:101:0::1;17822:18;:27:::0;17522:335::o;898:180::-;876:6;;-1:-1:-1;;;;;876:6:0;319:10;734:23;726:49;;;;-1:-1:-1;;;726:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;987:22:0;::::1;979:52;;;::::0;-1:-1:-1;;;979:52:0;;8399:2:1;979:52:0::1;::::0;::::1;8381:21:1::0;8438:2;8418:18;;;8411:30;-1:-1:-1;;;8457:18:1;;;8450:47;8514:18;;979:52:0::1;8197:341:1::0;979:52:0::1;1042:28;1061:8;1042:18;:28::i;:::-;898:180:::0;:::o;10527:336::-;-1:-1:-1;;;;;10629:19:0;;10621:62;;;;-1:-1:-1;;;10621:62:0;;8745:2:1;10621:62:0;;;8727:21:1;8784:2;8764:18;;;8757:30;8823:32;8803:18;;;8796:60;8873:18;;10621:62:0;8543:354:1;10621:62:0;-1:-1:-1;;;;;10702:21:0;;10694:66;;;;-1:-1:-1;;;10694:66:0;;9104:2:1;10694:66:0;;;9086:21:1;;;9123:18;;;9116:30;9182:34;9162:18;;;9155:62;9234:18;;10694:66:0;8902:356:1;10694:66:0;-1:-1:-1;;;;;10771:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10823:32;;160:25:1;;;10823:32:0;;133:18:1;10823:32:0;;;;;;;10527:336;;;:::o;19601:3266::-;-1:-1:-1;;;;;19733:18:0;;19725:58;;;;-1:-1:-1;;;19725:58:0;;9465:2:1;19725:58:0;;;9447:21:1;9504:2;9484:18;;;9477:30;9543:29;9523:18;;;9516:57;9590:18;;19725:58:0;9263:351:1;19725:58:0;-1:-1:-1;;;;;19802:16:0;;19794:54;;;;-1:-1:-1;;;19794:54:0;;9821:2:1;19794:54:0;;;9803:21:1;9860:2;9840:18;;;9833:30;9899:27;9879:18;;;9872:55;9944:18;;19794:54:0;9619:349:1;19794:54:0;-1:-1:-1;;;;;19868:15:0;;;;;;:9;:15;;;;;;;;19867:16;19859:57;;;;-1:-1:-1;;;19859:57:0;;10175:2:1;19859:57:0;;;10157:21:1;10214:2;10194:18;;;10187:30;10253;10233:18;;;10226:58;10301:18;;19859:57:0;9973:352:1;19859:57:0;-1:-1:-1;;;;;19936:13:0;;;;;;:9;:13;;;;;;;;19935:14;19927:57;;;;-1:-1:-1;;;19927:57:0;;10532:2:1;19927:57:0;;;10514:21:1;10571:2;10551:18;;;10544:30;10610:32;10590:18;;;10583:60;10660:18;;19927:57:0;10330:354:1;19927:57:0;20001:6;20011:1;20001:11;19997:93;;20029:28;20045:4;20051:2;20055:1;20029:15;:28::i;:::-;19601:3266;;;:::o;19997:93::-;20106:14;;;;20102:1078;;;876:6;;-1:-1:-1;;;;;20141:15:0;;;876:6;;20141:15;;;;:32;;-1:-1:-1;876:6:0;;-1:-1:-1;;;;;20160:13:0;;;876:6;;20160:13;;20141:32;:52;;;;-1:-1:-1;;;;;;20177:16:0;;;;20141:52;:77;;;;-1:-1:-1;;;;;;20197:21:0;;20211:6;20197:21;;20141:77;:90;;;;-1:-1:-1;20223:8:0;;;;20222:9;20141:90;20137:1032;;;20257:13;;;;20252:142;;-1:-1:-1;;;;;20303:21:0;;;;;;:15;:21;;;;;;;;;:44;;-1:-1:-1;;;;;;20328:19:0;;;;;;:15;:19;;;;;;;;20303:44;20295:79;;;;-1:-1:-1;;;20295:79:0;;10891:2:1;20295:79:0;;;10873:21:1;10930:2;10910:18;;;10903:30;-1:-1:-1;;;10949:18:1;;;10942:52;11011:18;;20295:79:0;10689:346:1;20295:79:0;-1:-1:-1;;;;;20418:31:0;;;;;;:25;:31;;;;;;;;:68;;;;-1:-1:-1;;;;;;20454:32:0;;;;;;:28;:32;;;;;;;;20453:33;20418:68;20414:740;;;20529:20;;20519:6;:30;;20511:96;;;;-1:-1:-1;;;20511:96:0;;11242:2:1;20511:96:0;;;11224:21:1;11281:2;11261:18;;;11254:30;11320:34;11300:18;;;11293:62;-1:-1:-1;;;11371:18:1;;;11364:51;11432:19;;20511:96:0;11040:417:1;20511:96:0;20664:23;;-1:-1:-1;;;;;10316:18:0;;10289:7;10316:18;;;:9;:18;;;;;;20638:22;;:6;:22;:::i;:::-;:49;;20630:81;;;;-1:-1:-1;;;20630:81:0;;11664:2:1;20630:81:0;;;11646:21:1;11703:2;11683:18;;;11676:30;-1:-1:-1;;;11722:18:1;;;11715:49;11781:18;;20630:81:0;11462:343:1;20630:81:0;20414:740;;;-1:-1:-1;;;;;20758:29:0;;;;;;:25;:29;;;;;;;;:68;;;;-1:-1:-1;;;;;;20792:34:0;;;;;;:28;:34;;;;;;;;20791:35;20758:68;20754:400;;;20869:20;;20859:6;:30;;20851:97;;;;-1:-1:-1;;;20851:97:0;;12012:2:1;20851:97:0;;;11994:21:1;12051:2;12031:18;;;12024:30;12090:34;12070:18;;;12063:62;-1:-1:-1;;;12141:18:1;;;12134:52;12203:19;;20851:97:0;11810:418:1;20754:400:0;-1:-1:-1;;;;;20996:32:0;;;;;;:28;:32;;;;;;;;20991:163;;21087:23;;-1:-1:-1;;;;;10316:18:0;;10289:7;10316:18;;;:9;:18;;;;;;21061:22;;:6;:22;:::i;:::-;:49;;21053:81;;;;-1:-1:-1;;;21053:81:0;;11664:2:1;21053:81:0;;;11646:21:1;11703:2;11683:18;;;11676:30;-1:-1:-1;;;11722:18:1;;;11715:49;11781:18;;21053:81:0;11462:343:1;21053:81:0;21231:4;21190:20;10316:18;;;:9;:18;;;;;;21279;;21312:11;;21263:34;;;;;21312:11;;:36;;;;;21341:7;21312:36;:63;;;;-1:-1:-1;21367:8:0;;;;21366:9;21312:63;:113;;;;-1:-1:-1;;;;;;21394:31:0;;;;;;:25;:31;;;;;;;;21393:32;21312:113;:153;;;;-1:-1:-1;;;;;;21444:21:0;;;;;;:15;:21;;;;;;;;21443:22;21312:153;:191;;;;-1:-1:-1;;;;;;21484:19:0;;;;;;:15;:19;;;;;;;;21483:20;21312:191;:264;;;;;21564:12;21539:21;;21520:18;;:40;;;;:::i;:::-;:56;;21312:264;21308:378;;;21603:8;:15;;-1:-1:-1;;21603:15:0;21614:4;21603:15;;;21633:10;:8;:10::i;:::-;21658:8;:16;;-1:-1:-1;;21658:16:0;;;21308:378;21710:8;;-1:-1:-1;;;;;21733:21:0;;21698:8;21733:21;;;:15;:21;;;;;;21710:8;;;;21709:9;;21733:21;;:44;;-1:-1:-1;;;;;;21758:19:0;;;;;;:15;:19;;;;;;;;21733:44;21729:74;;;-1:-1:-1;21798:5:0;21729:74;21816:12;21844:9;21872:3;21868:747;;;-1:-1:-1;;;;;21896:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;21944:1;21929:12;;:16;21896:49;21892:595;;;21973:33;22002:3;21973:24;21984:12;;21973:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;21966:40;;22068:12;;22054:10;;22047:4;:17;;;;:::i;:::-;22046:34;;;;:::i;:::-;22025:17;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;22154:12:0;;22134:16;;22127:23;;:4;:23;:::i;:::-;22126:40;;;;:::i;:::-;22099:23;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;21892:595:0;;-1:-1:-1;21892:595:0;;-1:-1:-1;;;;;22205:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;22254:1;22240:11;;:15;22205:50;22201:286;;;22283:32;22311:3;22283:23;22294:11;;22283:6;:10;;:23;;;;:::i;:32::-;22276:39;;22376:11;;22363:9;;22356:4;:16;;;;:::i;:::-;22355:32;;;;:::i;:::-;22334:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;22460:11:0;;22441:15;;22434:22;;:4;:22;:::i;:::-;22433:38;;;;:::i;:::-;22406:23;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;22201:286:0;22505:8;;22501:73;;22532:42;22548:4;22562;22569;22532:15;:42::i;:::-;22589:14;22599:4;22589:14;;:::i;:::-;;;21868:747;22634:13;;;;22629:187;;22674:32;22702:3;22674:23;22685:11;;22674:6;:10;;:23;;;;:::i;:32::-;22667:39;;22725:42;22741:4;22755;22762;22725:15;:42::i;:::-;22786:14;22796:4;22786:14;;:::i;:::-;;;22629:187;22826:33;22842:4;22848:2;22852:6;22826:15;:33::i;:::-;19714:3153;;;;;19601:3266;;;:::o;1197:191::-;1290:6;;;-1:-1:-1;;;;;1307:17:0;;;-1:-1:-1;;;;;;1307:17:0;;;;;;;1340:40;;1290:6;;;1307:17;1290:6;;1340:40;;1271:16;;1340:40;1260:128;1197:191;:::o;13327:607::-;-1:-1:-1;;;;;13424:18:0;;13416:60;;;;-1:-1:-1;;;13416:60:0;;12568:2:1;13416:60:0;;;12550:21:1;12607:2;12587:18;;;12580:30;12646:31;12626:18;;;12619:59;12695:18;;13416:60:0;12366:353:1;13416:60:0;-1:-1:-1;;;;;13495:16:0;;13487:56;;;;-1:-1:-1;;;13487:56:0;;12926:2:1;13487:56:0;;;12908:21:1;12965:2;12945:18;;;12938:30;13004:29;12984:18;;;12977:57;13051:18;;13487:56:0;12724:351:1;13487:56:0;-1:-1:-1;;;;;13625:15:0;;13603:19;13625:15;;;:9;:15;;;;;;13659:21;;;;13651:66;;;;-1:-1:-1;;;13651:66:0;;13282:2:1;13651:66:0;;;13264:21:1;;;13301:18;;;13294:30;13360:34;13340:18;;;13333:62;13412:18;;13651:66:0;13080:356:1;13651:66:0;-1:-1:-1;;;;;13753:15:0;;;;;;;:9;:15;;;;;;13771:20;;;13753:38;;13813:13;;;;;;;;:23;;13785:6;;13753:15;13813:23;;13785:6;;13813:23;:::i;:::-;;;;;;;;13867:2;-1:-1:-1;;;;;13852:26:0;13861:4;-1:-1:-1;;;;;13852:26:0;;13871:6;13852:26;;;;160:25:1;;148:2;133:18;;14:177;13852:26:0;;;;;;;;13405:529;13327:607;;;:::o;18701:892::-;18740:12;18763:25;18817:17;;18791:23;;:43;;;;:::i;:::-;18886:4;18845:20;10316:18;;;:9;:18;;;;;;18763:71;;-1:-1:-1;18907:22:0;;;:43;;-1:-1:-1;18933:17:0;;18907:43;18903:69;;;18965:7;;;18701:892::o;18903:69::-;19003:18;;:22;;19024:1;19003:22;:::i;:::-;18988:12;:37;18984:106;;;19056:18;;:22;;19077:1;19056:22;:::i;:::-;19041:37;;18984:106;19127:21;19159:30;19176:12;19159:16;:30::i;:::-;19202:18;19223:41;:21;19249:14;19223:25;:41::i;:::-;19202:62;;19275:17;19295:56;19333:17;19295:33;19310:17;;19295:10;:14;;:33;;;;:::i;:56::-;19386:9;;19378:45;;19275:76;;-1:-1:-1;;;;;;19386:9:0;;19275:76;;19378:45;;;;19275:76;19386:9;19378:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19456:15:0;;19448:65;;19364:59;;-1:-1:-1;19456:15:0;;;-1:-1:-1;;;;;19456:15:0;;19486:21;;19448:65;;;;19486:21;19456:15;19448:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19552:1:0;19526:23;:27;;;19564:17;:21;-1:-1:-1;;;;;;;18701:892:0:o;1419:98::-;1477:7;1504:5;1508:1;1504;:5;:::i;:::-;1497:12;1419:98;-1:-1:-1;;;1419:98:0:o;1803:::-;1861:7;1888:5;1892:1;1888;:5;:::i;22908:559::-;23053:16;;;23067:1;23053:16;;;;;;;;23029:21;;23053:16;;;;;;;;;;-1:-1:-1;23053:16:0;23029:40;;23098:4;23080;23085:1;23080:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23080:23:0;;;:7;;;;;;;;;;:23;;;;23124:10;;:17;;;-1:-1:-1;;;23124:17:0;;;;:10;;;;;:15;;:17;;;;;23080:7;;23124:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23114:4;23119:1;23114:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23114:27:0;;;:7;;;;;;;;;:27;23186:10;;23154:52;;23171:4;;23186:10;23199:6;23154:8;:52::i;:::-;23245:10;;:214;;-1:-1:-1;;;23245:214:0;;-1:-1:-1;;;;;23245:10:0;;;;:61;;:214;;23321:6;;23245:10;;23386:4;;23413;;23433:15;;23245:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22958:509;22908:559;:::o;2448:98::-;2506:7;2533:5;2537:1;2533;:5;:::i;196:418:1:-;345:2;334:9;327:21;308:4;377:6;371:13;420:6;415:2;404:9;400:18;393:34;479:6;474:2;466:6;462:15;457:2;446:9;442:18;436:50;535:1;530:2;521:6;510:9;506:22;502:31;495:42;605:2;598;594:7;589:2;581:6;577:15;573:29;562:9;558:45;554:54;546:62;;;196:418;;;;:::o;619:131::-;-1:-1:-1;;;;;694:31:1;;684:42;;674:70;;740:1;737;730:12;755:315;823:6;831;884:2;872:9;863:7;859:23;855:32;852:52;;;900:1;897;890:12;852:52;939:9;926:23;958:31;983:5;958:31;:::i;:::-;1008:5;1060:2;1045:18;;;;1032:32;;-1:-1:-1;;;755:315:1:o;1267:160::-;1332:20;;1388:13;;1381:21;1371:32;;1361:60;;1417:1;1414;1407:12;1361:60;1267:160;;;:::o;1432:315::-;1497:6;1505;1558:2;1546:9;1537:7;1533:23;1529:32;1526:52;;;1574:1;1571;1564:12;1526:52;1613:9;1600:23;1632:31;1657:5;1632:31;:::i;:::-;1682:5;-1:-1:-1;1706:35:1;1737:2;1722:18;;1706:35;:::i;:::-;1696:45;;1432:315;;;;;:::o;1752:456::-;1829:6;1837;1845;1898:2;1886:9;1877:7;1873:23;1869:32;1866:52;;;1914:1;1911;1904:12;1866:52;1953:9;1940:23;1972:31;1997:5;1972:31;:::i;:::-;2022:5;-1:-1:-1;2079:2:1;2064:18;;2051:32;2092:33;2051:32;2092:33;:::i;:::-;1752:456;;2144:7;;-1:-1:-1;;;2198:2:1;2183:18;;;;2170:32;;1752:456::o;2610:180::-;2666:6;2719:2;2707:9;2698:7;2694:23;2690:32;2687:52;;;2735:1;2732;2725:12;2687:52;2758:26;2774:9;2758:26;:::i;2795:247::-;2854:6;2907:2;2895:9;2886:7;2882:23;2878:32;2875:52;;;2923:1;2920;2913:12;2875:52;2962:9;2949:23;2981:31;3006:5;2981:31;:::i;3047:248::-;3115:6;3123;3176:2;3164:9;3155:7;3151:23;3147:32;3144:52;;;3192:1;3189;3182:12;3144:52;-1:-1:-1;;3215:23:1;;;3285:2;3270:18;;;3257:32;;-1:-1:-1;3047:248:1:o;3534:180::-;3593:6;3646:2;3634:9;3625:7;3621:23;3617:32;3614:52;;;3662:1;3659;3652:12;3614:52;-1:-1:-1;3685:23:1;;3534:180;-1:-1:-1;3534:180:1:o;3719:388::-;3787:6;3795;3848:2;3836:9;3827:7;3823:23;3819:32;3816:52;;;3864:1;3861;3854:12;3816:52;3903:9;3890:23;3922:31;3947:5;3922:31;:::i;:::-;3972:5;-1:-1:-1;4029:2:1;4014:18;;4001:32;4042:33;4001:32;4042:33;:::i;:::-;4094:7;4084:17;;;3719:388;;;;;:::o;4112:380::-;4191:1;4187:12;;;;4234;;;4255:61;;4309:4;4301:6;4297:17;4287:27;;4255:61;4362:2;4354:6;4351:14;4331:18;4328:38;4325:161;;4408:10;4403:3;4399:20;4396:1;4389:31;4443:4;4440:1;4433:15;4471:4;4468:1;4461:15;4325:161;;4112:380;;;:::o;4497:337::-;4699:2;4681:21;;;4738:2;4718:18;;;4711:30;-1:-1:-1;;;4772:2:1;4757:18;;4750:43;4825:2;4810:18;;4497:337::o;5623:127::-;5684:10;5679:3;5675:20;5672:1;5665:31;5715:4;5712:1;5705:15;5739:4;5736:1;5729:15;5755:125;5820:9;;;5841:10;;;5838:36;;;5854:18;;:::i;6959:168::-;7032:9;;;7063;;7080:15;;;7074:22;;7060:37;7050:71;;7101:18;;:::i;7132:217::-;7172:1;7198;7188:132;;7242:10;7237:3;7233:20;7230:1;7223:31;7277:4;7274:1;7267:15;7305:4;7302:1;7295:15;7188:132;-1:-1:-1;7334:9:1;;7132:217::o;12233:128::-;12300:9;;;12321:11;;;12318:37;;;12335:18;;:::i;13783:127::-;13844:10;13839:3;13835:20;13832:1;13825:31;13875:4;13872:1;13865:15;13899:4;13896:1;13889:15;13915:251;13985:6;14038:2;14026:9;14017:7;14013:23;14009:32;14006:52;;;14054:1;14051;14044:12;14006:52;14086:9;14080:16;14105:31;14130:5;14105:31;:::i;14171:980::-;14433:4;14481:3;14470:9;14466:19;14512:6;14501:9;14494:25;14538:2;14576:6;14571:2;14560:9;14556:18;14549:34;14619:3;14614:2;14603:9;14599:18;14592:31;14643:6;14678;14672:13;14709:6;14701;14694:22;14747:3;14736:9;14732:19;14725:26;;14786:2;14778:6;14774:15;14760:29;;14807:1;14817:195;14831:6;14828:1;14825:13;14817:195;;;14896:13;;-1:-1:-1;;;;;14892:39:1;14880:52;;14987:15;;;;14952:12;;;;14928:1;14846:9;14817:195;;;-1:-1:-1;;;;;;;15068:32:1;;;;15063:2;15048:18;;15041:60;-1:-1:-1;;;15132:3:1;15117:19;15110:35;15029:3;14171:980;-1:-1:-1;;;14171:980:1:o

Swarm Source

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