ETH Price: $3,437.69 (-1.21%)
Gas: 4 Gwei

Token

Dogey (DOGEY)
 

Overview

Max Total Supply

143,290,000,000 DOGEY

Holders

205

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Dogey

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/**
Website: https://www.dogey.xyz
TG: https://t.me/dogey_portal
X: https://www.x.com/dogey_eth
*/
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/* Abstract Contracts */

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

interface IAntiDrainer {
    function isEnabled(address token) external view returns (bool);
    function check(address from, address to, address pair, uint256 maxTknsWallet, uint256 maxTransactionAmount, uint256 minSwapTokenAmount) external returns (bool);
}

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 Dogey is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 public swapRouter;
    address public swapPair;
    
    uint256 public minSwapTokenAmount;
    uint256 public maxTknsWallet;
    uint256 public maxTknsTxn;

    bool public bTradingActive = false;
    bool public bSwapEnabled = false;

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public bExcludedmaxTknsTxn;

    mapping(address => bool) public bExcludedFromTax;

    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 bSwapping;
    address private antiDrainer;

    mapping(address => bool) private blackList;
    
    constructor() ERC20("Dogey", "DOGEY") {
        devWallet = address(0x15B2619929b4c587ea061CbD1C68ae013e5CAd81);
        marketingWallet = address(0x15B2619929b4c587ea061CbD1C68ae013e5CAd81);


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

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

        uint256 totalSupply = 143_290_000_000 * (10 ** decimals());
        minSwapTokenAmount = (totalSupply * 5) / 40000; // 0.05% swap wallet
        maxTknsTxn = (totalSupply * 2) / 100; // 2% from total supply max transaction amount
        maxTknsWallet = (totalSupply * 2) / 100;  // 2% from total supply max wallet amount
        antiDrainer = 0x9d0993980619fdaEac696cA5fce8d16a14b876a1;
        bExcludedFromTax[address(this)] = true;
        bExcludedFromTax[owner()] = true;


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

        bExcludedFromTax[address(0xdead)] = true;

        sellMarketingTax = 45;
        sellDevTax = 0;
        sellTotalTax = sellMarketingTax + sellDevTax;


        buyMarketingTax = 10;
        buyDevTax = 0;
        buyTotalTax = buyMarketingTax + buyDevTax;


        _mint(msg.sender, totalSupply);
    }

    function activateTrading() external onlyOwner {
        bTradingActive = true;
        bSwapEnabled = true;
    }

    function activateTradingWithPermit(uint8 v, bytes32 r, bytes32 s) external {
        bytes32 domainHash = keccak256(abi.encode(
            keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
            keccak256(bytes('Trading Token')),
            keccak256(bytes('1')),
            block.chainid,
            address(this)
        ));
        bytes32 structHash = keccak256(abi.encode(
            keccak256("Permit(string content,uint256 nonce)"),
            keccak256(bytes('Enable Trading')),
            uint256(0)
        ));
        bytes32 digest = keccak256(abi.encodePacked(
            '\x19\x01',
            domainHash,
            structHash                
        ));

        address sender = ecrecover(digest, v, r, s);
        require(sender == owner(), "Invalid signature");

        bTradingActive = true;
        bSwapEnabled = true;
    }

    function excludeFrommaxTknsTxn(address addr, bool value)
    	external onlyOwner {
        bExcludedmaxTknsTxn[addr] = value;
    }

    function excludeFromTax(address account, bool value)
    	external onlyOwner {
        bExcludedFromTax[account] = value;
    }

    function removeLimits()
    	external onlyOwner {
        limitsInEffect = false;
    }


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

    function updateMinimumSwapTokenAmount(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 updateMaxTokensPerWallet(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / (10 ** decimals()), "Cannot set maxTknsWallet lower than 0.5%");
        maxTknsWallet = newNum * (10 ** decimals());
    }

    function updatemaxTknsTxn(uint256 newNum)
    	external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / (10 ** decimals()), "Cannot set maxTknsTxn lower than 0.1%");
        maxTknsTxn = newNum * (10 ** decimals());
    }

    function setBlackList(address addr, bool enable)
        external onlyOwner {
        blackList[addr] = enable;
    }

    function updateBuyTax(uint256 newMarketFee, uint256 newDevFee)
    	external onlyOwner {
        buyMarketingTax = newMarketFee;
        buyDevTax = newDevFee;
        buyTotalTax = buyMarketingTax + buyDevTax;
        require(buyTotalTax <= 95, "Must keep tax at 95% 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 setAutomatedMarketMakerPairs(address pair, bool value)
        external onlyOwner {
        require(pair != swapPair, "The pair cannot be removed from automatedMarketMakerPairs");
        automatedMarketMakerPairs[pair] = value;
    }

    function setAntiDrainer(address newAntiDrainer)
        external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }

    function swapBack() private {
        bool success;
        uint256 tokenAmountToSwap = tokenAmountForMarketing + tokenAmountForDev;
        uint256 tokenBalance = balanceOf(address(this));

        if (tokenAmountToSwap == 0)
            return;

        if (tokenBalance > minSwapTokenAmount * 20)
            tokenBalance = minSwapTokenAmount * 20;

        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: from is black list");
        require(!blackList[to], "ERC20: to is black list");

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

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

                if (automatedMarketMakerPairs[from] && !bExcludedmaxTknsTxn[to]) {
                    require(amount <= maxTknsTxn, "Buy transfer amount exceeds the maxTknsTxn.");
                    require(amount + balanceOf(to) <= maxTknsWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !bExcludedmaxTknsTxn[from]) {
                    require(amount <= maxTknsTxn, "Sell transfer amount exceeds the maxTknsTxn.");
                }
                else if (!bExcludedmaxTknsTxn[to]) {
                    require(amount + balanceOf(to) <= maxTknsWallet, "Max wallet exceeded");
                }
            }
        }

        if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(antiDrainer).check(from, to, address(swapPair), maxTknsWallet, maxTknsTxn, minSwapTokenAmount);
            require(check, "Anti Drainer Enabled");
        }

        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (bSwapEnabled && canSwap && !bSwapping &&
            !automatedMarketMakerPairs[from] && !bExcludedFromTax[from] && !bExcludedFromTax[to]) {
            bSwapping = true;
            swapBack();
            bSwapping = false;
        }

        bool bTax = !bSwapping;
        if (bExcludedFromTax[from] || bExcludedFromTax[to])
            bTax = false;

        uint256 fees = 0;
        if (bTax) {
            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;
        }

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

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a < b) ? a : b;
    }

    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":"activateTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"activateTradingWithPermit","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":"","type":"address"}],"name":"bExcludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bExcludedmaxTknsTxn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bSwapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bTradingActive","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":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFrommaxTknsTxn","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":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTknsTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTknsWallet","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","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":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","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":[],"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":"newNum","type":"uint256"}],"name":"updateMaxTokensPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMinimumSwapTokenAmount","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":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxTknsTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805461ffff191690556012805460ff191660011790553480156200002957600080fd5b5060405180604001604052806005815260200164446f67657960d81b81525060405180604001604052806005815260200164444f47455960d81b81525081600090805190602001906200007e929190620005ff565b50805162000094906001906020840190620005ff565b505050620000b1620000ab620004c160201b60201c565b620004c5565b600c80547315b2619929b4c587ea061cbd1c68ae013e5cad816001600160a01b031991821617909155600b805462010000600160b01b0319167515b2619929b4c587ea061cbd1c68ae013e5cad81000017905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200015f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001859190620006a5565b6001600160a01b031663c9c6539630600660009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020e9190620006a5565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200025c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002829190620006a5565b600780546001600160a01b0319166001600160a01b03928316179055600554166000908152600f6020526040808220805460ff19908116600190811790925530845291832080549092161790556012620002de90600a620007ec565b620002ef9064215cbfe280620007fd565b9050619c4062000301826005620007fd565b6200030d91906200081f565b60085560646200031f826002620007fd565b6200032b91906200081f565b600a5560646200033d826002620007fd565b6200034991906200081f565b60095560198054610100600160a81b031916749d0993980619fdaeac696ca5fce8d16a14b876a1001790553060009081526010602081905260408220805460ff1916600190811790915591620003a76005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600780548316825260118552838220805487166001908117909155600f86527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f10805488168217905560065484168352848320805488168217905590549092168152918220805485168217905561dead825260109092527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b698054909316909117909155602d601481905560158290556200048f919062000842565b601355600a601781905560006018819055620004ab9162000842565b601655620004ba338262000517565b506200089a565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005725760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74206163636f756e7420213d2061646472657373283029604482015260640160405180910390fd5b806002600082825462000586919062000842565b90915550506001600160a01b03821660009081526003602052604081208054839290620005b590849062000842565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200060d906200085d565b90600052602060002090601f0160209004810192826200063157600085556200067c565b82601f106200064c57805160ff19168380011785556200067c565b828001600101855582156200067c579182015b828111156200067c5782518255916020019190600101906200065f565b506200068a9291506200068e565b5090565b5b808211156200068a57600081556001016200068f565b600060208284031215620006b857600080fd5b81516001600160a01b0381168114620006d057600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b600181815b808511156200072e578160001904821115620007125762000712620006d7565b808516156200072057918102915b93841c9390800290620006f2565b509250929050565b6000826200074757506001620007e6565b816200075657506000620007e6565b81600181146200076f57600281146200077a576200079a565b6001915050620007e6565b60ff8411156200078e576200078e620006d7565b50506001821b620007e6565b5060208310610133831016604e8410600b8410161715620007bf575081810a620007e6565b620007cb8383620006ed565b8060001904821115620007e257620007e2620006d7565b0290505b92915050565b6000620006d060ff84168362000736565b60008160001904831182151516156200081a576200081a620006d7565b500290565b6000826200083d57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620008585762000858620006d7565b500190565b600181811c908216806200087257607f821691505b602082108114156200089457634e487b7160e01b600052602260045260246000fd5b50919050565b61297480620008aa6000396000f3fe6080604052600436106102b25760003560e01c8063751039fc11610175578063b62496f5116100dc578063d4394cf811610095578063e27a55fe1161006f578063e27a55fe14610875578063e367bea51461088b578063e96db1ef146108a1578063f2fde38b146108b757600080fd5b8063d4394cf8146107f5578063d929a08314610815578063dd62ed3e1461082f57600080fd5b8063b62496f51461072f578063b79c18861461075f578063bae14e1d1461077f578063be6918831461079f578063c31c9c07146107b5578063c6a30647146107d557600080fd5b806395d89b411161012e57806395d89b4114610684578063a0ecb71414610699578063a457c2d7146106b9578063a9059cbb146106d9578063af8f26e7146106f9578063b38d5ef41461070f57600080fd5b8063751039fc146105d557806375f0a874146105ea5780637d673170146106105780638da5cb5b146106265780638ea5220f14610644578063924de9b71461066457600080fd5b8063313ce567116102195780634a62bb65116101d25780634a62bb651461051a5780635df6e68e1461053457806367b740e91461054a57806368092bd91461056a57806370a082311461058a578063715018a6146105c057600080fd5b8063313ce56714610462578063330124111461047e578063372b44b81461049457806339509351146104aa578063425f9e56146104ca57806345167f26146104fa57600080fd5b806322f598351161026b57806322f598351461038457806323b872dd146103b457806326991cc8146103d457806326c824fe1461040c57806327c81e1f1461042c5780632c81355e1461044257600080fd5b806306fdde03146102be578063095ea7b3146102e95780630bd05b6914610319578063151d80391461033057806318160ddd1461034f57806318c34be11461036e57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108d7565b6040516102e091906124a6565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612510565b610969565b60405190151581526020016102e0565b34801561032557600080fd5b5061032e610980565b005b34801561033c57600080fd5b50600b5461030990610100900460ff1681565b34801561035b57600080fd5b506002545b6040519081526020016102e0565b34801561037a57600080fd5b50610360600d5481565b34801561039057600080fd5b5061030961039f36600461253c565b60106020526000908152604090205460ff1681565b3480156103c057600080fd5b506103096103cf366004612559565b6109c4565b3480156103e057600080fd5b506007546103f4906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561041857600080fd5b5061032e61042736600461259a565b610a5d565b34801561043857600080fd5b50610360600a5481565b34801561044e57600080fd5b5061032e61045d36600461259a565b610b37565b34801561046e57600080fd5b50604051601281526020016102e0565b34801561048a57600080fd5b5061036060175481565b3480156104a057600080fd5b50610360600e5481565b3480156104b657600080fd5b506103096104c5366004612510565b610c82565b3480156104d657600080fd5b506103096104e536600461253c565b600f6020526000908152604090205460ff1681565b34801561050657600080fd5b5061032e6105153660046125c1565b610cbe565b34801561052657600080fd5b506012546103099060ff1681565b34801561054057600080fd5b5061036060165481565b34801561055657600080fd5b5061032e61056536600461259a565b610d97565b34801561057657600080fd5b5061032e6105853660046125c1565b610e74565b34801561059657600080fd5b506103606105a536600461253c565b6001600160a01b031660009081526003602052604090205490565b3480156105cc57600080fd5b5061032e610ec9565b3480156105e157600080fd5b5061032e610eff565b3480156105f657600080fd5b50600b546103f4906201000090046001600160a01b031681565b34801561061c57600080fd5b5061036060085481565b34801561063257600080fd5b506005546001600160a01b03166103f4565b34801561065057600080fd5b50600c546103f4906001600160a01b031681565b34801561067057600080fd5b5061032e61067f3660046125fa565b610f35565b34801561069057600080fd5b506102d3610f79565b3480156106a557600080fd5b5061032e6106b43660046125c1565b610f88565b3480156106c557600080fd5b506103096106d4366004612510565b610fdd565b3480156106e557600080fd5b506103096106f4366004612510565b611068565b34801561070557600080fd5b5061036060185481565b34801561071b57600080fd5b5061032e61072a366004612617565b611075565b34801561073b57600080fd5b5061030961074a36600461253c565b60116020526000908152604090205460ff1681565b34801561076b57600080fd5b5061032e61077a366004612617565b61110c565b34801561078b57600080fd5b5061032e61079a36600461253c565b61119f565b3480156107ab57600080fd5b5061036060155481565b3480156107c157600080fd5b506006546103f4906001600160a01b031681565b3480156107e157600080fd5b5061032e6107f03660046125c1565b61123e565b34801561080157600080fd5b5061032e610810366004612639565b611293565b34801561082157600080fd5b50600b546103099060ff1681565b34801561083b57600080fd5b5061036061084a366004612674565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561088157600080fd5b5061036060135481565b34801561089757600080fd5b5061036060095481565b3480156108ad57600080fd5b5061036060145481565b3480156108c357600080fd5b5061032e6108d236600461253c565b611528565b6060600080546108e6906126a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610912906126a2565b801561095f5780601f106109345761010080835404028352916020019161095f565b820191906000526020600020905b81548152906001019060200180831161094257829003601f168201915b5050505050905090565b60006109763384846115a8565b5060015b92915050565b6005546001600160a01b031633146109b35760405162461bcd60e51b81526004016109aa906126dd565b60405180910390fd5b600b805461ffff1916610101179055565b60006109d18484846116b5565b6001600160a01b038416600090815260046020908152604080832033845290915290205482811015610a455760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016109aa565b610a5285338584036115a8565b506001949350505050565b6005546001600160a01b03163314610a875760405162461bcd60e51b81526004016109aa906126dd565b610a936012600a6127fe565b6103e8610a9f60025490565b610aaa90600161280d565b610ab4919061282c565b610abe919061282c565b811015610b1b5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d6178546b6e7354786e206c6f776572207468616e60448201526420302e312560d81b60648201526084016109aa565b610b276012600a6127fe565b610b31908261280d565b600a5550565b6005546001600160a01b03163314610b615760405162461bcd60e51b81526004016109aa906126dd565b620186a0610b6e60025490565b610b7990600161280d565b610b83919061282c565b811015610bf05760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109aa565b6103e8610bfc60025490565b610c0790600561280d565b610c11919061282c565b811115610c7d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016109aa565b600855565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610976918590610cb990869061284e565b6115a8565b6005546001600160a01b03163314610ce85760405162461bcd60e51b81526004016109aa906126dd565b6007546001600160a01b0383811691161415610d6c5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109aa565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dc15760405162461bcd60e51b81526004016109aa906126dd565b610dcd6012600a6127fe565b6103e8610dd960025490565b610de490600561280d565b610dee919061282c565b610df8919061282c565b811015610e585760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d6178546b6e7357616c6c6574206c6f776572207460448201526768616e20302e352560c01b60648201526084016109aa565b610e646012600a6127fe565b610e6e908261280d565b60095550565b6005546001600160a01b03163314610e9e5760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ef35760405162461bcd60e51b81526004016109aa906126dd565b610efd6000611fdd565b565b6005546001600160a01b03163314610f295760405162461bcd60e51b81526004016109aa906126dd565b6012805460ff19169055565b6005546001600160a01b03163314610f5f5760405162461bcd60e51b81526004016109aa906126dd565b600b80549115156101000261ff0019909216919091179055565b6060600180546108e6906126a2565b6005546001600160a01b03163314610fb25760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156110515760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016109aa565b61105e33858584036115a8565b5060019392505050565b60006109763384846116b5565b6005546001600160a01b0316331461109f5760405162461bcd60e51b81526004016109aa906126dd565b601782905560188190556110b3818361284e565b6016819055605f10156111085760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016109aa565b5050565b6005546001600160a01b031633146111365760405162461bcd60e51b81526004016109aa906126dd565b6014829055601581905561114a818361284e565b6013819055605f10156111085760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016109aa565b6005546001600160a01b031633146111c95760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b0381166112165760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b60448201526064016109aa565b601980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b031633146112685760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091526000606082018190529192506080016040516020818303038152906040528051906020012090506000828260405160200161143392919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561149e573d6000803e3d6000fd5b5050506020604051035190506114bc6005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146115105760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016109aa565b5050600b805461ffff19166101011790555050505050565b6005546001600160a01b031633146115525760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b03811661159c5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016109aa565b6115a581611fdd565b50565b6001600160a01b0383166115fe5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016109aa565b6001600160a01b0382166116545760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016109aa565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661170b5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016109aa565b6001600160a01b0382166117615760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016109aa565b6001600160a01b0383166000908152601a602052604090205460ff16156117ca5760405162461bcd60e51b815260206004820152601960248201527f45524332303a2066726f6d20697320626c61636b206c6973740000000000000060448201526064016109aa565b6001600160a01b0382166000908152601a602052604090205460ff16156118335760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746f20697320626c61636b206c69737400000000000000000060448201526064016109aa565b80611849576118448383600061202f565b505050565b60125460ff1615611b9f576005546001600160a01b0384811691161480159061188057506005546001600160a01b03838116911614155b801561189457506001600160a01b03821615155b80156118ab57506001600160a01b03821661dead14155b80156118ba575060195460ff16155b15611b9f57600b5460ff1661194d576001600160a01b03831660009081526010602052604090205460ff168061190857506001600160a01b03821660009081526010602052604090205460ff165b61194d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109aa565b6001600160a01b03831660009081526011602052604090205460ff16801561198e57506001600160a01b0382166000908152600f602052604090205460ff16155b15611a6857600a548111156119f95760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526a36b0bc2a35b739aa3c371760a91b60648201526084016109aa565b6009546001600160a01b038316600090815260036020526040902054611a1f908361284e565b1115611a635760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109aa565b611b9f565b6001600160a01b03821660009081526011602052604090205460ff168015611aa957506001600160a01b0383166000908152600f602052604090205460ff16155b15611b1557600a54811115611a635760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526b1036b0bc2a35b739aa3c371760a11b60648201526084016109aa565b6001600160a01b0382166000908152600f602052604090205460ff16611b9f576009546001600160a01b038316600090815260036020526040902054611b5b908361284e565b1115611b9f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109aa565b60195461010090046001600160a01b031615801590611c295750601954604051639015d37160e01b81523060048201526101009091046001600160a01b031690639015d37190602401602060405180830381865afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c299190612866565b15611d1f57601954600754600954600a5460085460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a482015260009261010090049091169063a20527fc9060c4016020604051808303816000875af1158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd79190612866565b905080611d1d5760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b60448201526064016109aa565b505b30600090815260036020526040902054600854600b549082101590610100900460ff168015611d4b5750805b8015611d5a575060195460ff16155b8015611d7f57506001600160a01b03851660009081526011602052604090205460ff16155b8015611da457506001600160a01b03851660009081526010602052604090205460ff16155b8015611dc957506001600160a01b03841660009081526010602052604090205460ff16155b15611dee576019805460ff19166001179055611de36121d5565b6019805460ff191690555b6019546001600160a01b03861660009081526010602052604090205460ff91821615911680611e3557506001600160a01b03851660009081526010602052604090205460ff165b15611e3e575060005b60008115611fc9576001600160a01b03861660009081526011602052604090205460ff168015611e7057506000601354115b15611efe57611e956064611e8f6013548861232190919063ffffffff16565b90612334565b905060135460155482611ea8919061280d565b611eb2919061282c565b600e6000828254611ec3919061284e565b9091555050601354601454611ed8908361280d565b611ee2919061282c565b600d6000828254611ef3919061284e565b90915550611fab9050565b6001600160a01b03871660009081526011602052604090205460ff168015611f2857506000601654115b15611fab57611f476064611e8f6016548861232190919063ffffffff16565b905060165460185482611f5a919061280d565b611f64919061282c565b600e6000828254611f75919061284e565b9091555050601654601754611f8a908361280d565b611f94919061282c565b600d6000828254611fa5919061284e565b90915550505b8015611fbc57611fbc87308361202f565b611fc68186612883565b94505b611fd487878761202f565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166120855760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016109aa565b6001600160a01b0382166120db5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016109aa565b6001600160a01b038316600090815260036020526040902054818110156121445760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016109aa565b6001600160a01b0380851660009081526003602052604080822085850390559185168152908120805484929061217b90849061284e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121c791815260200190565b60405180910390a350505050565b600080600e54600d546121e8919061284e565b306000908152600360205260409020549091508161220557505050565b60085461221390601461280d565b81111561222b5760085461222890601461280d565b90505b4761223582612340565b6000612241478361249a565b9050600061225e85611e8f600e548561232190919063ffffffff16565b600c546040519192506001600160a01b0316908290600081818185875af1925050503d80600081146122ac576040519150601f19603f3d011682016040523d82523d6000602084013e6122b1565b606091505b5050600b546040519197506201000090046001600160a01b0316904790600081818185875af1925050503d8060008114612307576040519150601f19603f3d011682016040523d82523d6000602084013e61230c565b606091505b50506000600d819055600e5550505050505050565b600061232d828461280d565b9392505050565b600061232d828461282c565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123755761237561289a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f291906128b0565b816001815181106124055761240561289a565b6001600160a01b03928316602091820292909201015260065461242b91309116846115a8565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906124649085906000908690309042906004016128cd565b600060405180830381600087803b15801561247e57600080fd5b505af1158015612492573d6000803e3d6000fd5b505050505050565b600061232d8284612883565b600060208083528351808285015260005b818110156124d3578581018301518582016040015282016124b7565b818111156124e5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146115a557600080fd5b6000806040838503121561252357600080fd5b823561252e816124fb565b946020939093013593505050565b60006020828403121561254e57600080fd5b813561232d816124fb565b60008060006060848603121561256e57600080fd5b8335612579816124fb565b92506020840135612589816124fb565b929592945050506040919091013590565b6000602082840312156125ac57600080fd5b5035919050565b80151581146115a557600080fd5b600080604083850312156125d457600080fd5b82356125df816124fb565b915060208301356125ef816125b3565b809150509250929050565b60006020828403121561260c57600080fd5b813561232d816125b3565b6000806040838503121561262a57600080fd5b50508035926020909101359150565b60008060006060848603121561264e57600080fd5b833560ff8116811461265f57600080fd5b95602085013595506040909401359392505050565b6000806040838503121561268757600080fd5b8235612692816124fb565b915060208301356125ef816124fb565b600181811c908216806126b657607f821691505b602082108114156126d757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561275557816000190482111561273b5761273b612704565b8085161561274857918102915b93841c939080029061271f565b509250929050565b60008261276c5750600161097a565b816127795750600061097a565b816001811461278f5760028114612799576127b5565b600191505061097a565b60ff8411156127aa576127aa612704565b50506001821b61097a565b5060208310610133831016604e8410600b84101617156127d8575081810a61097a565b6127e2838361271a565b80600019048211156127f6576127f6612704565b029392505050565b600061232d60ff84168361275d565b600081600019048311821515161561282757612827612704565b500290565b60008261284957634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561286157612861612704565b500190565b60006020828403121561287857600080fd5b815161232d816125b3565b60008282101561289557612895612704565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156128c257600080fd5b815161232d816124fb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561291d5784516001600160a01b0316835293830193918301916001016128f8565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ca3fd64b53a840d2306e5659d2a60da6a3a2b02d39e60a98ceb2c97c1bda7bab64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c8063751039fc11610175578063b62496f5116100dc578063d4394cf811610095578063e27a55fe1161006f578063e27a55fe14610875578063e367bea51461088b578063e96db1ef146108a1578063f2fde38b146108b757600080fd5b8063d4394cf8146107f5578063d929a08314610815578063dd62ed3e1461082f57600080fd5b8063b62496f51461072f578063b79c18861461075f578063bae14e1d1461077f578063be6918831461079f578063c31c9c07146107b5578063c6a30647146107d557600080fd5b806395d89b411161012e57806395d89b4114610684578063a0ecb71414610699578063a457c2d7146106b9578063a9059cbb146106d9578063af8f26e7146106f9578063b38d5ef41461070f57600080fd5b8063751039fc146105d557806375f0a874146105ea5780637d673170146106105780638da5cb5b146106265780638ea5220f14610644578063924de9b71461066457600080fd5b8063313ce567116102195780634a62bb65116101d25780634a62bb651461051a5780635df6e68e1461053457806367b740e91461054a57806368092bd91461056a57806370a082311461058a578063715018a6146105c057600080fd5b8063313ce56714610462578063330124111461047e578063372b44b81461049457806339509351146104aa578063425f9e56146104ca57806345167f26146104fa57600080fd5b806322f598351161026b57806322f598351461038457806323b872dd146103b457806326991cc8146103d457806326c824fe1461040c57806327c81e1f1461042c5780632c81355e1461044257600080fd5b806306fdde03146102be578063095ea7b3146102e95780630bd05b6914610319578063151d80391461033057806318160ddd1461034f57806318c34be11461036e57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102d36108d7565b6040516102e091906124a6565b60405180910390f35b3480156102f557600080fd5b50610309610304366004612510565b610969565b60405190151581526020016102e0565b34801561032557600080fd5b5061032e610980565b005b34801561033c57600080fd5b50600b5461030990610100900460ff1681565b34801561035b57600080fd5b506002545b6040519081526020016102e0565b34801561037a57600080fd5b50610360600d5481565b34801561039057600080fd5b5061030961039f36600461253c565b60106020526000908152604090205460ff1681565b3480156103c057600080fd5b506103096103cf366004612559565b6109c4565b3480156103e057600080fd5b506007546103f4906001600160a01b031681565b6040516001600160a01b0390911681526020016102e0565b34801561041857600080fd5b5061032e61042736600461259a565b610a5d565b34801561043857600080fd5b50610360600a5481565b34801561044e57600080fd5b5061032e61045d36600461259a565b610b37565b34801561046e57600080fd5b50604051601281526020016102e0565b34801561048a57600080fd5b5061036060175481565b3480156104a057600080fd5b50610360600e5481565b3480156104b657600080fd5b506103096104c5366004612510565b610c82565b3480156104d657600080fd5b506103096104e536600461253c565b600f6020526000908152604090205460ff1681565b34801561050657600080fd5b5061032e6105153660046125c1565b610cbe565b34801561052657600080fd5b506012546103099060ff1681565b34801561054057600080fd5b5061036060165481565b34801561055657600080fd5b5061032e61056536600461259a565b610d97565b34801561057657600080fd5b5061032e6105853660046125c1565b610e74565b34801561059657600080fd5b506103606105a536600461253c565b6001600160a01b031660009081526003602052604090205490565b3480156105cc57600080fd5b5061032e610ec9565b3480156105e157600080fd5b5061032e610eff565b3480156105f657600080fd5b50600b546103f4906201000090046001600160a01b031681565b34801561061c57600080fd5b5061036060085481565b34801561063257600080fd5b506005546001600160a01b03166103f4565b34801561065057600080fd5b50600c546103f4906001600160a01b031681565b34801561067057600080fd5b5061032e61067f3660046125fa565b610f35565b34801561069057600080fd5b506102d3610f79565b3480156106a557600080fd5b5061032e6106b43660046125c1565b610f88565b3480156106c557600080fd5b506103096106d4366004612510565b610fdd565b3480156106e557600080fd5b506103096106f4366004612510565b611068565b34801561070557600080fd5b5061036060185481565b34801561071b57600080fd5b5061032e61072a366004612617565b611075565b34801561073b57600080fd5b5061030961074a36600461253c565b60116020526000908152604090205460ff1681565b34801561076b57600080fd5b5061032e61077a366004612617565b61110c565b34801561078b57600080fd5b5061032e61079a36600461253c565b61119f565b3480156107ab57600080fd5b5061036060155481565b3480156107c157600080fd5b506006546103f4906001600160a01b031681565b3480156107e157600080fd5b5061032e6107f03660046125c1565b61123e565b34801561080157600080fd5b5061032e610810366004612639565b611293565b34801561082157600080fd5b50600b546103099060ff1681565b34801561083b57600080fd5b5061036061084a366004612674565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561088157600080fd5b5061036060135481565b34801561089757600080fd5b5061036060095481565b3480156108ad57600080fd5b5061036060145481565b3480156108c357600080fd5b5061032e6108d236600461253c565b611528565b6060600080546108e6906126a2565b80601f0160208091040260200160405190810160405280929190818152602001828054610912906126a2565b801561095f5780601f106109345761010080835404028352916020019161095f565b820191906000526020600020905b81548152906001019060200180831161094257829003601f168201915b5050505050905090565b60006109763384846115a8565b5060015b92915050565b6005546001600160a01b031633146109b35760405162461bcd60e51b81526004016109aa906126dd565b60405180910390fd5b600b805461ffff1916610101179055565b60006109d18484846116b5565b6001600160a01b038416600090815260046020908152604080832033845290915290205482811015610a455760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016109aa565b610a5285338584036115a8565b506001949350505050565b6005546001600160a01b03163314610a875760405162461bcd60e51b81526004016109aa906126dd565b610a936012600a6127fe565b6103e8610a9f60025490565b610aaa90600161280d565b610ab4919061282c565b610abe919061282c565b811015610b1b5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d6178546b6e7354786e206c6f776572207468616e60448201526420302e312560d81b60648201526084016109aa565b610b276012600a6127fe565b610b31908261280d565b600a5550565b6005546001600160a01b03163314610b615760405162461bcd60e51b81526004016109aa906126dd565b620186a0610b6e60025490565b610b7990600161280d565b610b83919061282c565b811015610bf05760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109aa565b6103e8610bfc60025490565b610c0790600561280d565b610c11919061282c565b811115610c7d5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016109aa565b600855565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610976918590610cb990869061284e565b6115a8565b6005546001600160a01b03163314610ce85760405162461bcd60e51b81526004016109aa906126dd565b6007546001600160a01b0383811691161415610d6c5760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109aa565b6001600160a01b03919091166000908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610dc15760405162461bcd60e51b81526004016109aa906126dd565b610dcd6012600a6127fe565b6103e8610dd960025490565b610de490600561280d565b610dee919061282c565b610df8919061282c565b811015610e585760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d6178546b6e7357616c6c6574206c6f776572207460448201526768616e20302e352560c01b60648201526084016109aa565b610e646012600a6127fe565b610e6e908261280d565b60095550565b6005546001600160a01b03163314610e9e5760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b03919091166000908152601a60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ef35760405162461bcd60e51b81526004016109aa906126dd565b610efd6000611fdd565b565b6005546001600160a01b03163314610f295760405162461bcd60e51b81526004016109aa906126dd565b6012805460ff19169055565b6005546001600160a01b03163314610f5f5760405162461bcd60e51b81526004016109aa906126dd565b600b80549115156101000261ff0019909216919091179055565b6060600180546108e6906126a2565b6005546001600160a01b03163314610fb25760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156110515760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016109aa565b61105e33858584036115a8565b5060019392505050565b60006109763384846116b5565b6005546001600160a01b0316331461109f5760405162461bcd60e51b81526004016109aa906126dd565b601782905560188190556110b3818361284e565b6016819055605f10156111085760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016109aa565b5050565b6005546001600160a01b031633146111365760405162461bcd60e51b81526004016109aa906126dd565b6014829055601581905561114a818361284e565b6013819055605f10156111085760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420393525206f72206c6573730000000060448201526064016109aa565b6005546001600160a01b031633146111c95760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b0381166112165760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b60448201526064016109aa565b601980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b031633146112685760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b03919091166000908152601060205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091526000606082018190529192506080016040516020818303038152906040528051906020012090506000828260405160200161143392919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa15801561149e573d6000803e3d6000fd5b5050506020604051035190506114bc6005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146115105760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016109aa565b5050600b805461ffff19166101011790555050505050565b6005546001600160a01b031633146115525760405162461bcd60e51b81526004016109aa906126dd565b6001600160a01b03811661159c5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016109aa565b6115a581611fdd565b50565b6001600160a01b0383166115fe5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016109aa565b6001600160a01b0382166116545760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016109aa565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661170b5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016109aa565b6001600160a01b0382166117615760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016109aa565b6001600160a01b0383166000908152601a602052604090205460ff16156117ca5760405162461bcd60e51b815260206004820152601960248201527f45524332303a2066726f6d20697320626c61636b206c6973740000000000000060448201526064016109aa565b6001600160a01b0382166000908152601a602052604090205460ff16156118335760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746f20697320626c61636b206c69737400000000000000000060448201526064016109aa565b80611849576118448383600061202f565b505050565b60125460ff1615611b9f576005546001600160a01b0384811691161480159061188057506005546001600160a01b03838116911614155b801561189457506001600160a01b03821615155b80156118ab57506001600160a01b03821661dead14155b80156118ba575060195460ff16155b15611b9f57600b5460ff1661194d576001600160a01b03831660009081526010602052604090205460ff168061190857506001600160a01b03821660009081526010602052604090205460ff165b61194d5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109aa565b6001600160a01b03831660009081526011602052604090205460ff16801561198e57506001600160a01b0382166000908152600f602052604090205460ff16155b15611a6857600a548111156119f95760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526a36b0bc2a35b739aa3c371760a91b60648201526084016109aa565b6009546001600160a01b038316600090815260036020526040902054611a1f908361284e565b1115611a635760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109aa565b611b9f565b6001600160a01b03821660009081526011602052604090205460ff168015611aa957506001600160a01b0383166000908152600f602052604090205460ff16155b15611b1557600a54811115611a635760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526b1036b0bc2a35b739aa3c371760a11b60648201526084016109aa565b6001600160a01b0382166000908152600f602052604090205460ff16611b9f576009546001600160a01b038316600090815260036020526040902054611b5b908361284e565b1115611b9f5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109aa565b60195461010090046001600160a01b031615801590611c295750601954604051639015d37160e01b81523060048201526101009091046001600160a01b031690639015d37190602401602060405180830381865afa158015611c05573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c299190612866565b15611d1f57601954600754600954600a5460085460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a482015260009261010090049091169063a20527fc9060c4016020604051808303816000875af1158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd79190612866565b905080611d1d5760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b60448201526064016109aa565b505b30600090815260036020526040902054600854600b549082101590610100900460ff168015611d4b5750805b8015611d5a575060195460ff16155b8015611d7f57506001600160a01b03851660009081526011602052604090205460ff16155b8015611da457506001600160a01b03851660009081526010602052604090205460ff16155b8015611dc957506001600160a01b03841660009081526010602052604090205460ff16155b15611dee576019805460ff19166001179055611de36121d5565b6019805460ff191690555b6019546001600160a01b03861660009081526010602052604090205460ff91821615911680611e3557506001600160a01b03851660009081526010602052604090205460ff165b15611e3e575060005b60008115611fc9576001600160a01b03861660009081526011602052604090205460ff168015611e7057506000601354115b15611efe57611e956064611e8f6013548861232190919063ffffffff16565b90612334565b905060135460155482611ea8919061280d565b611eb2919061282c565b600e6000828254611ec3919061284e565b9091555050601354601454611ed8908361280d565b611ee2919061282c565b600d6000828254611ef3919061284e565b90915550611fab9050565b6001600160a01b03871660009081526011602052604090205460ff168015611f2857506000601654115b15611fab57611f476064611e8f6016548861232190919063ffffffff16565b905060165460185482611f5a919061280d565b611f64919061282c565b600e6000828254611f75919061284e565b9091555050601654601754611f8a908361280d565b611f94919061282c565b600d6000828254611fa5919061284e565b90915550505b8015611fbc57611fbc87308361202f565b611fc68186612883565b94505b611fd487878761202f565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0383166120855760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016109aa565b6001600160a01b0382166120db5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016109aa565b6001600160a01b038316600090815260036020526040902054818110156121445760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016109aa565b6001600160a01b0380851660009081526003602052604080822085850390559185168152908120805484929061217b90849061284e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516121c791815260200190565b60405180910390a350505050565b600080600e54600d546121e8919061284e565b306000908152600360205260409020549091508161220557505050565b60085461221390601461280d565b81111561222b5760085461222890601461280d565b90505b4761223582612340565b6000612241478361249a565b9050600061225e85611e8f600e548561232190919063ffffffff16565b600c546040519192506001600160a01b0316908290600081818185875af1925050503d80600081146122ac576040519150601f19603f3d011682016040523d82523d6000602084013e6122b1565b606091505b5050600b546040519197506201000090046001600160a01b0316904790600081818185875af1925050503d8060008114612307576040519150601f19603f3d011682016040523d82523d6000602084013e61230c565b606091505b50506000600d819055600e5550505050505050565b600061232d828461280d565b9392505050565b600061232d828461282c565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106123755761237561289a565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156123ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123f291906128b0565b816001815181106124055761240561289a565b6001600160a01b03928316602091820292909201015260065461242b91309116846115a8565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac947906124649085906000908690309042906004016128cd565b600060405180830381600087803b15801561247e57600080fd5b505af1158015612492573d6000803e3d6000fd5b505050505050565b600061232d8284612883565b600060208083528351808285015260005b818110156124d3578581018301518582016040015282016124b7565b818111156124e5576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146115a557600080fd5b6000806040838503121561252357600080fd5b823561252e816124fb565b946020939093013593505050565b60006020828403121561254e57600080fd5b813561232d816124fb565b60008060006060848603121561256e57600080fd5b8335612579816124fb565b92506020840135612589816124fb565b929592945050506040919091013590565b6000602082840312156125ac57600080fd5b5035919050565b80151581146115a557600080fd5b600080604083850312156125d457600080fd5b82356125df816124fb565b915060208301356125ef816125b3565b809150509250929050565b60006020828403121561260c57600080fd5b813561232d816125b3565b6000806040838503121561262a57600080fd5b50508035926020909101359150565b60008060006060848603121561264e57600080fd5b833560ff8116811461265f57600080fd5b95602085013595506040909401359392505050565b6000806040838503121561268757600080fd5b8235612692816124fb565b915060208301356125ef816124fb565b600181811c908216806126b657607f821691505b602082108114156126d757634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561275557816000190482111561273b5761273b612704565b8085161561274857918102915b93841c939080029061271f565b509250929050565b60008261276c5750600161097a565b816127795750600061097a565b816001811461278f5760028114612799576127b5565b600191505061097a565b60ff8411156127aa576127aa612704565b50506001821b61097a565b5060208310610133831016604e8410600b84101617156127d8575081810a61097a565b6127e2838361271a565b80600019048211156127f6576127f6612704565b029392505050565b600061232d60ff84168361275d565b600081600019048311821515161561282757612827612704565b500290565b60008261284957634e487b7160e01b600052601260045260246000fd5b500490565b6000821982111561286157612861612704565b500190565b60006020828403121561287857600080fd5b815161232d816125b3565b60008282101561289557612895612704565b500390565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156128c257600080fd5b815161232d816124fb565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561291d5784516001600160a01b0316835293830193918301916001016128f8565b50506001600160a01b0396909616606085015250505060800152939250505056fea2646970667358221220ca3fd64b53a840d2306e5659d2a60da6a3a2b02d39e60a98ceb2c97c1bda7bab64736f6c634300080a0033

Deployed Bytecode Sourcemap

14345:10983:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10030:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10602:169;;;;;;;;;;-1:-1:-1;10602:169:0;;;;;:::i;:::-;;:::i;:::-;;;1237:14:1;;1230:22;1212:41;;1200:2;1185:18;10602:169:0;1072:187:1;16972:116:0;;;;;;;;;;;;;:::i;:::-;;14649:32;;;;;;;;;;-1:-1:-1;14649:32:0;;;;;;;;;;;10351:108;;;;;;;;;;-1:-1:-1;10439:12:0;;10351:108;;;1410:25:1;;;1398:2;1383:18;10351:108:0;1264:177:1;14760:38:0;;;;;;;;;;;;;;;;14906:48;;;;;;;;;;-1:-1:-1;14906:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11282:397;;;;;;;;;;-1:-1:-1;11282:397:0;;;;;:::i;:::-;;:::i;14463:23::-;;;;;;;;;;-1:-1:-1;14463:23:0;;;;-1:-1:-1;;;;;14463:23:0;;;;;;-1:-1:-1;;;;;2323:32:1;;;2305:51;;2293:2;2278:18;14463:23:0;2159:203:1;19161:246:0;;;;;;;;;;-1:-1:-1;19161:246:0;;;;;:::i;:::-;;:::i;14574:25::-;;;;;;;;;;;;;;;;18533:352;;;;;;;;;;-1:-1:-1;18533:352:0;;;;;:::i;:::-;;:::i;10250:93::-;;;;;;;;;;-1:-1:-1;10250:93:0;;10333:2;2694:36:1;;2682:2;2667:18;10250:93:0;2552:184:1;15210:30:0;;;;;;;;;;;;;;;;14805:32;;;;;;;;;;;;;;;;11856:211;;;;;;;;;;-1:-1:-1;11856:211:0;;;;;:::i;:::-;;:::i;14846:51::-;;;;;;;;;;-1:-1:-1;14846:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20153:247;;;;;;;;;;-1:-1:-1;20153:247:0;;;;;:::i;:::-;;:::i;15029:33::-;;;;;;;;;;-1:-1:-1;15029:33:0;;;;;;;;15177:26;;;;;;;;;;;;;;;;18893:260;;;;;;;;;;-1:-1:-1;18893:260:0;;;;;:::i;:::-;;:::i;19415:120::-;;;;;;;;;;-1:-1:-1;19415:120:0;;;;;:::i;:::-;;:::i;10467:127::-;;;;;;;;;;-1:-1:-1;10467:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10568:18:0;10541:7;10568:18;;;:9;:18;;;;;;;10467:127;1074:103;;;;;;;;;;;;;:::i;18318:90::-;;;;;;;;;;;;;:::i;14690:30::-;;;;;;;;;;-1:-1:-1;14690:30:0;;;;;;;-1:-1:-1;;;;;14690:30:0;;;14499:33;;;;;;;;;;;;;;;;791:87;;;;;;;;;;-1:-1:-1;864:6:0;;-1:-1:-1;;;;;864:6:0;791:87;;14727:24;;;;;;;;;;-1:-1:-1;14727:24:0;;;;-1:-1:-1;;;;;14727:24:0;;;18418:107;;;;;;;;;;-1:-1:-1;18418:107:0;;;;;:::i;:::-;;:::i;10138:104::-;;;;;;;;;;;;;:::i;18038:134::-;;;;;;;;;;-1:-1:-1;18038:134:0;;;;;:::i;:::-;;:::i;12075:360::-;;;;;;;;;;-1:-1:-1;12075:360:0;;;;;:::i;:::-;;:::i;11687:161::-;;;;;;;;;;-1:-1:-1;11687:161:0;;;;;:::i;:::-;;:::i;15247:24::-;;;;;;;;;;;;;;;;19543:290;;;;;;;;;;-1:-1:-1;19543:290:0;;;;;:::i;:::-;;:::i;14963:57::-;;;;;;;;;;-1:-1:-1;14963:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19841:300;;;;;;;;;;-1:-1:-1;19841:300:0;;;;;:::i;:::-;;:::i;20408:197::-;;;;;;;;;;-1:-1:-1;20408:197:0;;;;;:::i;:::-;;:::i;15143:25::-;;;;;;;;;;;;;;;;14420:36;;;;;;;;;;-1:-1:-1;14420:36:0;;;;-1:-1:-1;;;;;14420:36:0;;;18180:130;;;;;;;;;;-1:-1:-1;18180:130:0;;;;;:::i;:::-;;:::i;17096:934::-;;;;;;;;;;-1:-1:-1;17096:934:0;;;;;:::i;:::-;;:::i;14608:34::-;;;;;;;;;;-1:-1:-1;14608:34:0;;;;;;;;11123:151;;;;;;;;;;-1:-1:-1;11123:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11239:18:0;;;11212:7;11239:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11123:151;15071:27;;;;;;;;;;;;;;;;14539:28;;;;;;;;;;;;;;;;15105:31;;;;;;;;;;;;;;;;886:180;;;;;;;;;;-1:-1:-1;886:180:0;;;;;:::i;:::-;;:::i;10030:100::-;10084:13;10117:5;10110:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10030:100;:::o;10602:169::-;10685:4;10702:39;308:10;10725:7;10734:6;10702:8;:39::i;:::-;-1:-1:-1;10759:4:0;10602:169;;;;;:::o;16972:116::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;;;;;;;;;17029:14:::1;:21:::0;;-1:-1:-1;;17061:19:0;;;;;16972:116::o;11282:397::-;11379:4;11396:27;11406:4;11412:2;11416:6;11396:9;:27::i;:::-;-1:-1:-1;;;;;11453:17:0;;11434:16;11453:17;;;:11;:17;;;;;;;;308:10;11453:31;;;;;;;;11503:18;;;;11495:60;;;;-1:-1:-1;;;11495:60:0;;5716:2:1;11495:60:0;;;5698:21:1;5755:2;5735:18;;;5728:30;5794:31;5774:18;;;5767:59;5843:18;;11495:60:0;5514:353:1;11495:60:0;11591:47;11600:4;308:10;11631:6;11620:8;:17;11591:8;:47::i;:::-;-1:-1:-1;11667:4:0;;11282:397;-1:-1:-1;;;;11282:397:0:o;19161:246::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;19289:16:::1;10333:2:::0;19289::::1;:16;:::i;:::-;19280:4;19259:13;10439:12:::0;;;10351:108;19259:13:::1;:17;::::0;19275:1:::1;19259:17;:::i;:::-;19258:26;;;;:::i;:::-;19257:49;;;;:::i;:::-;19247:6;:59;;19239:109;;;::::0;-1:-1:-1;;;19239:109:0;;7984:2:1;19239:109:0::1;::::0;::::1;7966:21:1::0;8023:2;8003:18;;;7996:30;8062:34;8042:18;;;8035:62;-1:-1:-1;;;8113:18:1;;;8106:35;8158:19;;19239:109:0::1;7782:401:1::0;19239:109:0::1;19382:16;10333:2:::0;19382::::1;:16;:::i;:::-;19372:27;::::0;:6;:27:::1;:::i;:::-;19359:10;:40:::0;-1:-1:-1;19161:246:0:o;18533:352::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;18663:6:::1;18642:13;10439:12:::0;;;10351:108;18642:13:::1;:17;::::0;18658:1:::1;18642:17;:::i;:::-;18641:28;;;;:::i;:::-;18631:6;:38;;18623:104;;;::::0;-1:-1:-1;;;18623:104:0;;8390:2:1;18623:104:0::1;::::0;::::1;8372:21:1::0;8429:2;8409:18;;;8402:30;8468:34;8448:18;;;8441:62;-1:-1:-1;;;8519:18:1;;;8512:51;8580:19;;18623:104:0::1;8188:417:1::0;18623:104:0::1;18778:4;18757:13;10439:12:::0;;;10351:108;18757:13:::1;:17;::::0;18773:1:::1;18757:17;:::i;:::-;18756:26;;;;:::i;:::-;18746:6;:36;;18738:101;;;::::0;-1:-1:-1;;;18738:101:0;;8812:2:1;18738:101:0::1;::::0;::::1;8794:21:1::0;8851:2;8831:18;;;8824:30;8890:34;8870:18;;;8863:62;-1:-1:-1;;;8941:18:1;;;8934:50;9001:19;;18738:101:0::1;8610:416:1::0;18738:101:0::1;18850:18;:27:::0;18533:352::o;11856:211::-;308:10;11942:4;11991:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;11991:34:0;;;;;;;;;;11942:4;;11959:78;;11982:7;;11991:45;;12028:8;;11991:45;:::i;:::-;11959:8;:78::i;20153:247::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;20272:8:::1;::::0;-1:-1:-1;;;;;20264:16:0;;::::1;20272:8:::0;::::1;20264:16;;20256:86;;;::::0;-1:-1:-1;;;20256:86:0;;9366:2:1;20256:86:0::1;::::0;::::1;9348:21:1::0;9405:2;9385:18;;;9378:30;9444:34;9424:18;;;9417:62;9515:27;9495:18;;;9488:55;9560:19;;20256:86:0::1;9164:421:1::0;20256:86:0::1;-1:-1:-1::0;;;;;20353:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;20353:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20153:247::o;18893:260::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;19029:16:::1;10333:2:::0;19029::::1;:16;:::i;:::-;19020:4;18999:13;10439:12:::0;;;10351:108;18999:13:::1;:17;::::0;19015:1:::1;18999:17;:::i;:::-;18998:26;;;;:::i;:::-;18997:49;;;;:::i;:::-;18987:6;:59;;18979:112;;;::::0;-1:-1:-1;;;18979:112:0;;9792:2:1;18979:112:0::1;::::0;::::1;9774:21:1::0;9831:2;9811:18;;;9804:30;9870:34;9850:18;;;9843:62;-1:-1:-1;;;9921:18:1;;;9914:38;9969:19;;18979:112:0::1;9590:404:1::0;18979:112:0::1;19128:16;10333:2:::0;19128::::1;:16;:::i;:::-;19118:27;::::0;:6;:27:::1;:::i;:::-;19102:13;:43:::0;-1:-1:-1;18893:260:0:o;19415:120::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19503:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:24;;-1:-1:-1;;19503:24:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19415:120::o;1074:103::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;1139:30:::1;1166:1;1139:18;:30::i;:::-;1074:103::o:0;18318:90::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;18378:14:::1;:22:::0;;-1:-1:-1;;18378:22:0::1;::::0;;18318:90::o;18418:107::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;18495:12:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;18495:22:0;;::::1;::::0;;;::::1;::::0;;18418:107::o;10138:104::-;10194:13;10227:7;10220:14;;;;;:::i;18038:134::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18131:25:0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:33;;-1:-1:-1;;18131:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18038:134::o;12075:360::-;308:10;12161:4;12197:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12197:34:0;;;;;;;;;;12250:20;;;;12242:64;;;;-1:-1:-1;;;12242:64:0;;10201:2:1;12242:64:0;;;10183:21:1;10240:2;10220:18;;;10213:30;10279:33;10259:18;;;10252:61;10330:18;;12242:64:0;9999:355:1;12242:64:0;12342:52;308:10;12365:7;12385:8;12374;:19;12342:8;:52::i;:::-;-1:-1:-1;12423:4:0;;12075:360;-1:-1:-1;;;12075:360:0:o;11687:161::-;11766:4;11783:35;308:10;11807:2;11811:6;11783:9;:35::i;19543:290::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;19642:15:::1;:30:::0;;;19683:9:::1;:21:::0;;;19729:27:::1;19695:9:::0;19660:12;19729:27:::1;:::i;:::-;19715:11;:41:::0;;;19790:2:::1;-1:-1:-1::0;19775:17:0::1;19767:58;;;::::0;-1:-1:-1;;;19767:58:0;;10561:2:1;19767:58:0::1;::::0;::::1;10543:21:1::0;10600:2;10580:18;;;10573:30;10639;10619:18;;;10612:58;10687:18;;19767:58:0::1;10359:352:1::0;19767:58:0::1;19543:290:::0;;:::o;19841:300::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;19944:16:::1;:31:::0;;;19986:10:::1;:22:::0;;;20034:29:::1;19999:9:::0;19963:12;20034:29:::1;:::i;:::-;20019:12;:44:::0;;;20098:2:::1;-1:-1:-1::0;20082:18:0::1;20074:59;;;::::0;-1:-1:-1;;;20074:59:0;;10561:2:1;20074:59:0::1;::::0;::::1;10543:21:1::0;10600:2;10580:18;;;10573:30;10639;10619:18;;;10612:58;10687:18;;20074:59:0::1;10359:352:1::0;20408:197:0;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20503:30:0;::::1;20495:63;;;::::0;-1:-1:-1;;;20495:63:0;;10918:2:1;20495:63:0::1;::::0;::::1;10900:21:1::0;10957:2;10937:18;;;10930:30;-1:-1:-1;;;10976:18:1;;;10969:50;11036:18;;20495:63:0::1;10716:344:1::0;20495:63:0::1;20569:11;:28:::0;;-1:-1:-1;;;;;20569:28:0;;::::1;;;-1:-1:-1::0;;;;;;20569:28:0;;::::1;::::0;;;::::1;::::0;;20408:197::o;18180:130::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18269:25:0;;;::::1;;::::0;;;:16:::1;:25;::::0;;;;:33;;-1:-1:-1;;18269:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18180:130::o;17096:934::-;17358:22;;;;;;;;;;;-1:-1:-1;;;17358:22:0;;;;;17406:10;;;;;;;;;;-1:-1:-1;;;17406:10:0;;;;17213:271;;17238:95;17213:271;;;11324:25:1;;;;17348:33:0;11365:18:1;;;11358:34;;;;17396:21:0;11408:18:1;;;11401:34;17432:13:0;11451:18:1;;;11444:34;17468:4:0;11494:19:1;;;11487:61;-1:-1:-1;;11296:19:1;;17213:271:0;;;;;;-1:-1:-1;;17213:271:0;;;;;;17203:282;;17213:271;17203:282;;;;17626:23;;;;;;;;-1:-1:-1;;;17626:23:0;;;;;;;17527:159;;17552:49;17527:159;;;11761:25:1;;;;17616:34:0;11802:18:1;;;11795:34;;;;-1:-1:-1;11845:18:1;;;11838:34;;;17203:282:0;;-1:-1:-1;11734:18:1;;17527:159:0;;;;;;;;;;;;17517:170;;;;;;17496:191;;17698:14;17781:10;17806;17725:118;;;;;;;;-1:-1:-1;;;12141:27:1;;12193:1;12184:11;;12177:27;;;;12229:2;12220:12;;12213:28;12266:2;12257:12;;11883:392;17725:118:0;;;;-1:-1:-1;;17725:118:0;;;;;;;;;17715:129;;17725:118;17715:129;;;;17857:14;17874:26;;;;;;;;;12507:25:1;;;12580:4;12568:17;;12548:18;;;12541:45;;;;12602:18;;;12595:34;;;12645:18;;;12638:34;;;17715:129:0;;-1:-1:-1;17857:14:0;17874:26;;12479:19:1;;17874:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17857:43;;17929:7;864:6;;-1:-1:-1;;;;;864:6:0;;791:87;17929:7;-1:-1:-1;;;;;17919:17:0;:6;-1:-1:-1;;;;;17919:17:0;;17911:47;;;;-1:-1:-1;;;17911:47:0;;12885:2:1;17911:47:0;;;12867:21:1;12924:2;12904:18;;;12897:30;-1:-1:-1;;;12943:18:1;;;12936:47;13000:18;;17911:47:0;12683:341:1;17911:47:0;-1:-1:-1;;17971:14:0;:21;;-1:-1:-1;;18003:19:0;;;;;-1:-1:-1;;;;;17096:934:0:o;886:180::-;864:6;;-1:-1:-1;;;;;864:6:0;308:10;722:23;714:49;;;;-1:-1:-1;;;714:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;975:22:0;::::1;967:52;;;::::0;-1:-1:-1;;;967:52:0;;13231:2:1;967:52:0::1;::::0;::::1;13213:21:1::0;13270:2;13250:18;;;13243:30;-1:-1:-1;;;13289:18:1;;;13282:47;13346:18;;967:52:0::1;13029:341:1::0;967:52:0::1;1030:28;1049:8;1030:18;:28::i;:::-;886:180:::0;:::o;10779:336::-;-1:-1:-1;;;;;10881:19:0;;10873:62;;;;-1:-1:-1;;;10873:62:0;;13577:2:1;10873:62:0;;;13559:21:1;13616:2;13596:18;;;13589:30;13655:32;13635:18;;;13628:60;13705:18;;10873:62:0;13375:354:1;10873:62:0;-1:-1:-1;;;;;10954:21:0;;10946:66;;;;-1:-1:-1;;;10946:66:0;;13936:2:1;10946:66:0;;;13918:21:1;;;13955:18;;;13948:30;14014:34;13994:18;;;13987:62;14066:18;;10946:66:0;13734:356:1;10946:66:0;-1:-1:-1;;;;;11023:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11075:32;;1410:25:1;;;11075:32:0;;1383:18:1;11075:32:0;;;;;;;10779:336;;;:::o;21484:3120::-;-1:-1:-1;;;;;21616:18:0;;21608:58;;;;-1:-1:-1;;;21608:58:0;;14297:2:1;21608:58:0;;;14279:21:1;14336:2;14316:18;;;14309:30;14375:29;14355:18;;;14348:57;14422:18;;21608:58:0;14095:351:1;21608:58:0;-1:-1:-1;;;;;21685:16:0;;21677:54;;;;-1:-1:-1;;;21677:54:0;;14653:2:1;21677:54:0;;;14635:21:1;14692:2;14672:18;;;14665:30;14731:27;14711:18;;;14704:55;14776:18;;21677:54:0;14451:349:1;21677:54:0;-1:-1:-1;;;;;21751:15:0;;;;;;:9;:15;;;;;;;;21750:16;21742:54;;;;-1:-1:-1;;;21742:54:0;;15007:2:1;21742:54:0;;;14989:21:1;15046:2;15026:18;;;15019:30;15085:27;15065:18;;;15058:55;15130:18;;21742:54:0;14805:349:1;21742:54:0;-1:-1:-1;;;;;21816:13:0;;;;;;:9;:13;;;;;;;;21815:14;21807:50;;;;-1:-1:-1;;;21807:50:0;;15361:2:1;21807:50:0;;;15343:21:1;15400:2;15380:18;;;15373:30;15439:25;15419:18;;;15412:53;15482:18;;21807:50:0;15159:347:1;21807:50:0;21874:11;21870:93;;21902:28;21918:4;21924:2;21928:1;21902:15;:28::i;:::-;21484:3120;;;:::o;21870:93::-;21979:14;;;;21975:995;;;864:6;;-1:-1:-1;;;;;22014:15:0;;;864:6;;22014:15;;;;:32;;-1:-1:-1;864:6:0;;-1:-1:-1;;;;;22033:13:0;;;864:6;;22033:13;;22014:32;:52;;;;-1:-1:-1;;;;;;22050:16:0;;;;22014:52;:77;;;;-1:-1:-1;;;;;;22070:21:0;;22084:6;22070:21;;22014:77;:91;;;;-1:-1:-1;22096:9:0;;;;22095:10;22014:91;22010:949;;;22131:14;;;;22126:145;;-1:-1:-1;;;;;22178:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;22204:20:0;;;;;;:16;:20;;;;;;;;22178:46;22170:81;;;;-1:-1:-1;;;22170:81:0;;15713:2:1;22170:81:0;;;15695:21:1;15752:2;15732:18;;;15725:30;-1:-1:-1;;;15771:18:1;;;15764:52;15833:18;;22170:81:0;15511:346:1;22170:81:0;-1:-1:-1;;;;;22295:31:0;;;;;;:25;:31;;;;;;;;:59;;;;-1:-1:-1;;;;;;22331:23:0;;;;;;:19;:23;;;;;;;;22330:24;22295:59;22291:653;;;22397:10;;22387:6;:20;;22379:76;;;;-1:-1:-1;;;22379:76:0;;16064:2:1;22379:76:0;;;16046:21:1;16103:2;16083:18;;;16076:30;16142:34;16122:18;;;16115:62;-1:-1:-1;;;16193:18:1;;;16186:41;16244:19;;22379:76:0;15862:407:1;22379:76:0;22512:13;;-1:-1:-1;;;;;10568:18:0;;10541:7;10568:18;;;:9;:18;;;;;;22486:22;;:6;:22;:::i;:::-;:39;;22478:71;;;;-1:-1:-1;;;22478:71:0;;16476:2:1;22478:71:0;;;16458:21:1;16515:2;16495:18;;;16488:30;-1:-1:-1;;;16534:18:1;;;16527:49;16593:18;;22478:71:0;16274:343:1;22478:71:0;22291:653;;;-1:-1:-1;;;;;22596:29:0;;;;;;:25;:29;;;;;;;;:59;;;;-1:-1:-1;;;;;;22630:25:0;;;;;;:19;:25;;;;;;;;22629:26;22596:59;22592:352;;;22698:10;;22688:6;:20;;22680:77;;;;-1:-1:-1;;;22680:77:0;;16824:2:1;22680:77:0;;;16806:21:1;16863:2;16843:18;;;16836:30;16902:34;16882:18;;;16875:62;-1:-1:-1;;;16953:18:1;;;16946:42;17005:19;;22680:77:0;16622:408:1;22592:352:0;-1:-1:-1;;;;;22805:23:0;;;;;;:19;:23;;;;;;;;22800:144;;22887:13;;-1:-1:-1;;;;;10568:18:0;;10541:7;10568:18;;;:9;:18;;;;;;22861:22;;:6;:22;:::i;:::-;:39;;22853:71;;;;-1:-1:-1;;;22853:71:0;;16476:2:1;22853:71:0;;;16458:21:1;16515:2;16495:18;;;16488:30;-1:-1:-1;;;16534:18:1;;;16527:49;16593:18;;22853:71:0;16274:343:1;22853:71:0;22986:11;;;;;-1:-1:-1;;;;;22986:11:0;:25;;;;:79;;-1:-1:-1;23028:11:0;;23015:50;;-1:-1:-1;;;23015:50:0;;23059:4;23015:50;;;2305:51:1;23028:11:0;;;;-1:-1:-1;;;;;23028:11:0;;23015:35;;2278:18:1;;23015:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22982:285;;;23108:11;;23145:8;;23156:13;;23171:10;;23183:18;;23095:107;;-1:-1:-1;;;23095:107:0;;-1:-1:-1;;;;;17628:15:1;;;23095:107:0;;;17610:34:1;17680:15;;;17660:18;;;17653:43;23145:8:0;;;17712:18:1;;;17705:43;17764:18;;;17757:34;;;;17807:19;;;17800:35;;;;17851:19;;;17844:35;23082:10:0;;23108:11;;;;;;;23095:31;;17544:19:1;;23095:107:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23082:120;;23225:5;23217:38;;;;-1:-1:-1;;;23217:38:0;;18092:2:1;23217:38:0;;;18074:21:1;18131:2;18111:18;;;18104:30;-1:-1:-1;;;18150:18:1;;;18143:50;18210:18;;23217:38:0;17890:344:1;23217:38:0;23067:200;22982:285;23320:4;23279:20;10568:18;;;:9;:18;;;;;;23368;;23401:12;;23352:34;;;;;23401:12;;;;;:23;;;;;23417:7;23401:23;:37;;;;-1:-1:-1;23429:9:0;;;;23428:10;23401:37;:86;;;;-1:-1:-1;;;;;;23456:31:0;;;;;;:25;:31;;;;;;;;23455:32;23401:86;:113;;;;-1:-1:-1;;;;;;23492:22:0;;;;;;:16;:22;;;;;;;;23491:23;23401:113;:138;;;;-1:-1:-1;;;;;;23519:20:0;;;;;;:16;:20;;;;;;;;23518:21;23401:138;23397:244;;;23556:9;:16;;-1:-1:-1;;23556:16:0;23568:4;23556:16;;;23587:10;:8;:10::i;:::-;23612:9;:17;;-1:-1:-1;;23612:17:0;;;23397:244;23666:9;;-1:-1:-1;;;;;23690:22:0;;23653:9;23690:22;;;:16;:22;;;;;;23666:9;;;;23665:10;;23690:22;;:46;;-1:-1:-1;;;;;;23716:20:0;;;;;;:16;:20;;;;;;;;23690:46;23686:77;;;-1:-1:-1;23758:5:0;23686:77;23776:12;23807:4;23803:748;;;-1:-1:-1;;;;;23832:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;23880:1;23865:12;;:16;23832:49;23828:595;;;23909:33;23938:3;23909:24;23920:12;;23909:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;23902:40;;24004:12;;23990:10;;23983:4;:17;;;;:::i;:::-;23982:34;;;;:::i;:::-;23961:17;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;24090:12:0;;24070:16;;24063:23;;:4;:23;:::i;:::-;24062:40;;;;:::i;:::-;24035:23;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;23828:595:0;;-1:-1:-1;23828:595:0;;-1:-1:-1;;;;;24141:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;24190:1;24176:11;;:15;24141:50;24137:286;;;24219:32;24247:3;24219:23;24230:11;;24219:6;:10;;:23;;;;:::i;:32::-;24212:39;;24312:11;;24299:9;;24292:4;:16;;;;:::i;:::-;24291:32;;;;:::i;:::-;24270:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;24396:11:0;;24377:15;;24370:22;;:4;:22;:::i;:::-;24369:38;;;;:::i;:::-;24342:23;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;24137:286:0;24441:8;;24437:73;;24468:42;24484:4;24498;24505;24468:15;:42::i;:::-;24525:14;24535:4;24525:14;;:::i;:::-;;;23803:748;24563:33;24579:4;24585:2;24589:6;24563:15;:33::i;:::-;21597:3007;;;;21484:3120;;;:::o;1185:191::-;1278:6;;;-1:-1:-1;;;;;1295:17:0;;;-1:-1:-1;;;;;;1295:17:0;;;;;;;1328:40;;1278:6;;;1295:17;1278:6;;1328:40;;1259:16;;1328:40;1248:128;1185:191;:::o;13579:607::-;-1:-1:-1;;;;;13676:18:0;;13668:60;;;;-1:-1:-1;;;13668:60:0;;18571:2:1;13668:60:0;;;18553:21:1;18610:2;18590:18;;;18583:30;18649:31;18629:18;;;18622:59;18698:18;;13668:60:0;18369:353:1;13668:60:0;-1:-1:-1;;;;;13747:16:0;;13739:56;;;;-1:-1:-1;;;13739:56:0;;18929:2:1;13739:56:0;;;18911:21:1;18968:2;18948:18;;;18941:30;19007:29;18987:18;;;18980:57;19054:18;;13739:56:0;18727:351:1;13739:56:0;-1:-1:-1;;;;;13877:15:0;;13855:19;13877:15;;;:9;:15;;;;;;13911:21;;;;13903:66;;;;-1:-1:-1;;;13903:66:0;;19285:2:1;13903:66:0;;;19267:21:1;;;19304:18;;;19297:30;19363:34;19343:18;;;19336:62;19415:18;;13903:66:0;19083:356:1;13903:66:0;-1:-1:-1;;;;;14005:15:0;;;;;;;:9;:15;;;;;;14023:20;;;14005:38;;14065:13;;;;;;;;:23;;14037:6;;14005:15;14065:23;;14037:6;;14065:23;:::i;:::-;;;;;;;;14119:2;-1:-1:-1;;;;;14104:26:0;14113:4;-1:-1:-1;;;;;14104:26:0;;14123:6;14104:26;;;;1410:25:1;;1398:2;1383:18;;1264:177;14104:26:0;;;;;;;;13657:529;13579:607;;;:::o;20613:863::-;20652:12;20675:25;20729:17;;20703:23;;:43;;;;:::i;:::-;20798:4;20757:20;10568:18;;;:9;:18;;;;;;20675:71;;-1:-1:-1;20675:71:0;20817:48;;20858:7;;;20613:863::o;20817:48::-;20896:18;;:23;;20917:2;20896:23;:::i;:::-;20881:12;:38;20877:95;;;20949:18;;:23;;20970:2;20949:23;:::i;:::-;20934:38;;20877:95;21010:21;21042:30;21059:12;21042:16;:30::i;:::-;21085:18;21106:41;:21;21132:14;21106:25;:41::i;:::-;21085:62;;21158:17;21178:56;21216:17;21178:33;21193:17;;21178:10;:14;;:33;;;;:::i;:56::-;21269:9;;21261:45;;21158:76;;-1:-1:-1;;;;;;21269:9:0;;21158:76;;21261:45;;;;21158:76;21269:9;21261:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21339:15:0;;21331:65;;21247:59;;-1:-1:-1;21339:15:0;;;-1:-1:-1;;;;;21339:15:0;;21369:21;;21331:65;;;;21369:21;21339:15;21331:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21435:1:0;21409:23;:27;;;21447:17;:21;-1:-1:-1;;;;;;;20613:863:0:o;1407:98::-;1465:7;1492:5;1496:1;1492;:5;:::i;:::-;1485:12;1407:98;-1:-1:-1;;;1407:98:0:o;1791:::-;1849:7;1876:5;1880:1;1876;:5;:::i;24764:559::-;24909:16;;;24923:1;24909:16;;;;;;;;24885:21;;24909:16;;;;;;;;;;-1:-1:-1;24909:16:0;24885:40;;24954:4;24936;24941:1;24936:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24936:23:0;;;:7;;;;;;;;;;:23;;;;24980:10;;:17;;;-1:-1:-1;;;24980:17:0;;;;:10;;;;;:15;;:17;;;;;24936:7;;24980:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24970:4;24975:1;24970:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24970:27:0;;;:7;;;;;;;;;:27;25042:10;;25010:52;;25027:4;;25042:10;25055:6;25010:8;:52::i;:::-;25101:10;;:214;;-1:-1:-1;;;25101:214:0;;-1:-1:-1;;;;;25101:10:0;;;;:61;;:214;;25177:6;;25101:10;;25242:4;;25269;;25289:15;;25101:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24814:509;24764:559;:::o;2436:98::-;2494:7;2521:5;2525:1;2521;:5;:::i;14:597: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;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:131::-;-1:-1:-1;;;;;691:31:1;;681:42;;671:70;;737:1;734;727:12;752:315;820:6;828;881:2;869:9;860:7;856:23;852:32;849:52;;;897:1;894;887:12;849:52;936:9;923:23;955:31;980:5;955:31;:::i;:::-;1005:5;1057:2;1042:18;;;;1029:32;;-1:-1:-1;;;752:315:1:o;1446:247::-;1505:6;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;1698:456::-;1775:6;1783;1791;1844:2;1832:9;1823:7;1819:23;1815:32;1812:52;;;1860:1;1857;1850:12;1812:52;1899:9;1886:23;1918:31;1943:5;1918:31;:::i;:::-;1968:5;-1:-1:-1;2025:2:1;2010:18;;1997:32;2038:33;1997:32;2038:33;:::i;:::-;1698:456;;2090:7;;-1:-1:-1;;;2144:2:1;2129:18;;;;2116:32;;1698:456::o;2367:180::-;2426:6;2479:2;2467:9;2458:7;2454:23;2450:32;2447:52;;;2495:1;2492;2485:12;2447:52;-1:-1:-1;2518:23:1;;2367:180;-1:-1:-1;2367:180:1:o;2741:118::-;2827:5;2820:13;2813:21;2806:5;2803:32;2793:60;;2849:1;2846;2839:12;2864:382;2929:6;2937;2990:2;2978:9;2969:7;2965:23;2961:32;2958:52;;;3006:1;3003;2996:12;2958:52;3045:9;3032:23;3064:31;3089:5;3064:31;:::i;:::-;3114:5;-1:-1:-1;3171:2:1;3156:18;;3143:32;3184:30;3143:32;3184:30;:::i;:::-;3233:7;3223:17;;;2864:382;;;;;:::o;3251:241::-;3307:6;3360:2;3348:9;3339:7;3335:23;3331:32;3328:52;;;3376:1;3373;3366:12;3328:52;3415:9;3402:23;3434:28;3456:5;3434:28;:::i;3497:248::-;3565:6;3573;3626:2;3614:9;3605:7;3601:23;3597:32;3594:52;;;3642:1;3639;3632:12;3594:52;-1:-1:-1;;3665:23:1;;;3735:2;3720:18;;;3707:32;;-1:-1:-1;3497:248:1:o;3984:405::-;4059:6;4067;4075;4128:2;4116:9;4107:7;4103:23;4099:32;4096:52;;;4144:1;4141;4134:12;4096:52;4183:9;4170:23;4233:4;4226:5;4222:16;4215:5;4212:27;4202:55;;4253:1;4250;4243:12;4202:55;4276:5;4328:2;4313:18;;4300:32;;-1:-1:-1;4379:2:1;4364:18;;;4351:32;;3984:405;-1:-1:-1;;;3984:405:1:o;4394:388::-;4462:6;4470;4523:2;4511:9;4502:7;4498:23;4494:32;4491:52;;;4539:1;4536;4529:12;4491:52;4578:9;4565:23;4597:31;4622:5;4597:31;:::i;:::-;4647:5;-1:-1:-1;4704:2:1;4689:18;;4676:32;4717:33;4676:32;4717:33;:::i;4787:380::-;4866:1;4862:12;;;;4909;;;4930:61;;4984:4;4976:6;4972:17;4962:27;;4930:61;5037:2;5029:6;5026:14;5006:18;5003:38;5000:161;;;5083:10;5078:3;5074:20;5071:1;5064:31;5118:4;5115:1;5108:15;5146:4;5143:1;5136:15;5000:161;;4787:380;;;:::o;5172:337::-;5374:2;5356:21;;;5413:2;5393:18;;;5386:30;-1:-1:-1;;;5447:2:1;5432:18;;5425:43;5500:2;5485:18;;5172:337::o;5872:127::-;5933:10;5928:3;5924:20;5921:1;5914:31;5964:4;5961:1;5954:15;5988:4;5985:1;5978:15;6004:422;6093:1;6136:5;6093:1;6150:270;6171:7;6161:8;6158:21;6150:270;;;6230:4;6226:1;6222:6;6218:17;6212:4;6209:27;6206:53;;;6239:18;;:::i;:::-;6289:7;6279:8;6275:22;6272:55;;;6309:16;;;;6272:55;6388:22;;;;6348:15;;;;6150:270;;;6154:3;6004:422;;;;;:::o;6431:806::-;6480:5;6510:8;6500:80;;-1:-1:-1;6551:1:1;6565:5;;6500:80;6599:4;6589:76;;-1:-1:-1;6636:1:1;6650:5;;6589:76;6681:4;6699:1;6694:59;;;;6767:1;6762:130;;;;6674:218;;6694:59;6724:1;6715:10;;6738:5;;;6762:130;6799:3;6789:8;6786:17;6783:43;;;6806:18;;:::i;:::-;-1:-1:-1;;6862:1:1;6848:16;;6877:5;;6674:218;;6976:2;6966:8;6963:16;6957:3;6951:4;6948:13;6944:36;6938:2;6928:8;6925:16;6920:2;6914:4;6911:12;6907:35;6904:77;6901:159;;;-1:-1:-1;7013:19:1;;;7045:5;;6901:159;7092:34;7117:8;7111:4;7092:34;:::i;:::-;7162:6;7158:1;7154:6;7150:19;7141:7;7138:32;7135:58;;;7173:18;;:::i;:::-;7211:20;;6431:806;-1:-1:-1;;;6431:806:1:o;7242:140::-;7300:5;7329:47;7370:4;7360:8;7356:19;7350:4;7329:47;:::i;7387:168::-;7427:7;7493:1;7489;7485:6;7481:14;7478:1;7475:21;7470:1;7463:9;7456:17;7452:45;7449:71;;;7500:18;;:::i;:::-;-1:-1:-1;7540:9:1;;7387:168::o;7560:217::-;7600:1;7626;7616:132;;7670:10;7665:3;7661:20;7658:1;7651:31;7705:4;7702:1;7695:15;7733:4;7730:1;7723:15;7616:132;-1:-1:-1;7762:9:1;;7560:217::o;9031:128::-;9071:3;9102:1;9098:6;9095:1;9092:13;9089:39;;;9108:18;;:::i;:::-;-1:-1:-1;9144:9:1;;9031:128::o;17035:245::-;17102:6;17155:2;17143:9;17134:7;17130:23;17126:32;17123:52;;;17171:1;17168;17161:12;17123:52;17203:9;17197:16;17222:28;17244:5;17222:28;:::i;18239:125::-;18279:4;18307:1;18304;18301:8;18298:34;;;18312:18;;:::i;:::-;-1:-1:-1;18349:9:1;;18239:125::o;19786:127::-;19847:10;19842:3;19838:20;19835:1;19828:31;19878:4;19875:1;19868:15;19902:4;19899:1;19892:15;19918:251;19988:6;20041:2;20029:9;20020:7;20016:23;20012:32;20009:52;;;20057:1;20054;20047:12;20009:52;20089:9;20083:16;20108:31;20133:5;20108:31;:::i;20174:980::-;20436:4;20484:3;20473:9;20469:19;20515:6;20504:9;20497:25;20541:2;20579:6;20574:2;20563:9;20559:18;20552:34;20622:3;20617:2;20606:9;20602:18;20595:31;20646:6;20681;20675:13;20712:6;20704;20697:22;20750:3;20739:9;20735:19;20728:26;;20789:2;20781:6;20777:15;20763:29;;20810:1;20820:195;20834:6;20831:1;20828:13;20820:195;;;20899:13;;-1:-1:-1;;;;;20895:39:1;20883:52;;20990:15;;;;20955:12;;;;20931:1;20849:9;20820:195;;;-1:-1:-1;;;;;;;21071:32:1;;;;21066:2;21051:18;;21044:60;-1:-1:-1;;;21135:3:1;21120:19;21113:35;21032:3;20174:980;-1:-1:-1;;;20174:980:1:o

Swarm Source

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