ETH Price: $3,399.58 (+2.03%)

Token

GameStop China (GMECN)
 

Overview

Max Total Supply

420,690,000 GMECN

Holders

142

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000080315379 GMECN

Value
$0.00
0xda89868e6c13608ea76719fbd19e4a7190855ae3
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:
GMECN

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

/*
    TG:  https://t.me/gamestopchina
    X:   https://x.com/GameStopChina
    Web: https://gamestopchina.io

*/

/* 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 maxTokenAmountPerWallet, 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 {
        // Nothing
    }

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

/* Main Contract */
contract GMECN is ERC20, Ownable {
    using SafeMath for uint256;

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

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

    address public marketingWallet;
    address public devWallet;

    uint256 public tokenAmountForMarketing;
    uint256 public tokenAmountForDev;

    mapping(address => bool) public bExcludedMaxTokenAmountPerTxn;
    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) public blackList;
    
    constructor() ERC20("GameStop China", "GMECN") {
        devWallet = address(0xa842a4a47649B7d74dc6Ebf3Da29e9aF4684A857);
        marketingWallet = address(0xa850b73CDCAa4690437bFc0B8906D46706Cf1aA8);
        swapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        swapPair = IUniswapV2Factory(swapRouter.factory()).createPair(address(this), swapRouter.WETH());

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

        uint256 totalSupply = 420690000 * (10 ** decimals());
        minSwapTokenAmount = 42069 * (10 ** decimals());
        maxTokenAmountPerTxn = 4206900 * (10 ** decimals());
        maxTokenAmountPerWallet = 4206900 * (10 ** decimals());

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

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

        bExcludedFromTax[address(0xdead)] = true;

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

        sellMarketingTax = 5;
        sellDevTax = 5;
        sellTotalTax = sellMarketingTax + sellDevTax;

        _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 excludeFromMaxTokenAmountPerTxn(address addr, bool value)
    	external onlyOwner {
        bExcludedMaxTokenAmountPerTxn[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 maxTokenAmountPerWallet lower than 0.5%");
        maxTokenAmountPerWallet = newNum * (10 ** decimals());
    }

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

    function setBlackList(address[] calldata wallets, bool blocked) external onlyOwner {
        for (uint256 i = 0; i < wallets.length; i++) {
            blackList[wallets[i]] = blocked;
        }
    }

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

    function updateSellTax(uint256 newMarketFee, uint256 newDevFee)
        external onlyOwner {
        sellMarketingTax = newMarketFee;
        sellDevTax = newDevFee;
        sellTotalTax = sellMarketingTax + sellDevTax;
        require(sellTotalTax <= 25, "Must keep tax at 25% 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 || tokenBalance == 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] && !bExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount <= maxTokenAmountPerTxn, "Buy transfer amount exceeds the maxTokenAmountPerTxn.");
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
                else if (automatedMarketMakerPairs[to] && !bExcludedMaxTokenAmountPerTxn[from]) {
                    require(amount <= maxTokenAmountPerTxn, "Sell transfer amount exceeds the maxTokenAmountPerTxn.");
                }
                else if (!bExcludedMaxTokenAmountPerTxn[to]) {
                    require(amount + balanceOf(to) <= maxTokenAmountPerWallet, "Max wallet exceeded");
                }
            }
        }

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

        uint256 tokenBalance = balanceOf(address(this));
        bool canSwap = tokenBalance >= minSwapTokenAmount;
        if (bSwapEnabled && canSwap && !bSwapping &&
            automatedMarketMakerPairs[to] && !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":"bExcludedMaxTokenAmountPerTxn","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":[{"internalType":"address","name":"","type":"address"}],"name":"blackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTokenAmountPerTxn","outputs":[],"stateMutability":"nonpayable","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":"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":"maxTokenAmountPerTxn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTokenAmountPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minSwapTokenAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"wallets","type":"address[]"},{"internalType":"bool","name":"blocked","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":"updateMaxTokenAmountPerTxn","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600b805461ffff191690556012805460ff1916600117905534801562000028575f80fd5b506040518060400160405280600e81526020016d47616d6553746f70204368696e6160901b8152506040518060400160405280600581526020016423a6a2a1a760d91b815250815f90816200007e919062000666565b5060016200008d828262000666565b505050620000aa620000a46200048860201b60201c565b6200048c565b600c805473a842a4a47649b7d74dc6ebf3da29e9af4684a8576001600160a01b031991821617909155600b805462010000600160b01b03191675a850b73cdcaa4690437bfc0b8906d46706cf1aa8000017905560068054737a250d5630b4cf539739df2c5dacb4c659f2488d9216821790556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000156573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200017c91906200072e565b6001600160a01b031663c9c653963060065f9054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200020291906200072e565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af11580156200024d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200027391906200072e565b600780546001600160a01b0319166001600160a01b03928316179055600554165f908152600f6020526040808220805460ff19908116600190811790925530845291832080549092161790556012620002ce90600a6200086c565b620002de9063191338506200087c565b9050620002ee6012600a6200086c565b620002fc9061a4556200087c565b6008556200030d6012600a6200086c565b6200031c90624031346200087c565b600a5560126200032e90600a6200086c565b6200033d90624031346200087c565b600955305f9081526010602081905260408220805460ff1916600190811790915591620003726005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182015f908120805495151560ff19968716179055600780548316825260118552838220805487166001908117909155600f86527f99629f56119585bf27511b6b7d295dffb54757453fcc3dabcf51d92028301f10805488168217905560065484168352848320805488168217905590549092168152918220805485168217905561dead90915260109091527f9e93e1db4a1f807cc22b2aecf4deeb0bf5745f1ecb319e87c68c5624c0fa6b69805490921617905560056017819055601881905562000457908062000896565b60165560056014819055601581905562000472908062000896565b601355620004813382620004dd565b50620008ac565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b038216620005385760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74206163636f756e7420213d2061646472657373283029604482015260640160405180910390fd5b8060025f8282546200054b919062000896565b90915550506001600160a01b0382165f90815260036020526040812080548392906200057990849062000896565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620005f057607f821691505b6020821081036200060f57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620005c2575f81815260208120601f850160051c810160208610156200063d5750805b601f850160051c820191505b818110156200065e5782815560010162000649565b505050505050565b81516001600160401b03811115620006825762000682620005c7565b6200069a81620006938454620005db565b8462000615565b602080601f831160018114620006d0575f8415620006b85750858301515b5f19600386901b1c1916600185901b1785556200065e565b5f85815260208120601f198616915b828110156200070057888601518255948401946001909101908401620006df565b50858210156200071e57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f602082840312156200073f575f80fd5b81516001600160a01b038116811462000756575f80fd5b9392505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620007b157815f19048211156200079557620007956200075d565b80851615620007a357918102915b93841c939080029062000776565b509250929050565b5f82620007c95750600162000866565b81620007d757505f62000866565b8160018114620007f05760028114620007fb576200081b565b600191505062000866565b60ff8411156200080f576200080f6200075d565b50506001821b62000866565b5060208310610133831016604e8410600b841016171562000840575081810a62000866565b6200084c838362000771565b805f19048211156200086257620008626200075d565b0290505b92915050565b5f6200075660ff841683620007b9565b80820281158282048414176200086657620008666200075d565b808201808211156200086657620008666200075d565b6129f680620008ba5f395ff3fe6080604052600436106102c2575f3560e01c8063751039fc1161016f578063b62496f5116100d8578063c6a3064711610092578063dd62ed3e1161006d578063dd62ed3e14610851578063e27a55fe14610895578063e96db1ef146108aa578063f2fde38b146108bf575f80fd5b8063c6a30647146107fa578063d4394cf814610819578063d929a08314610838575f80fd5b8063b62496f514610745578063b79c188614610773578063bae14e1d14610792578063be691883146107b1578063c31c9c07146107c6578063c42c3f88146107e5575f80fd5b8063924de9b711610129578063924de9b7146106a057806395d89b41146106bf578063a457c2d7146106d3578063a9059cbb146106f2578063af8f26e714610711578063b38d5ef414610726575f80fd5b8063751039fc146105f757806375f0a8741461060b5780637d673170146106305780638da5cb5b146106455780638ea5220f146106625780638f85a04314610681575f80fd5b8063372b44b81161022b5780635df6e68e116101e55780636f498e21116101c05780636f498e21146105625780637070678b1461059057806370a08231146105af578063715018a6146105e3575f80fd5b80635df6e68e1461051957806367b740e91461052e578063685fbc6b1461054d575f80fd5b8063372b44b814610460578063395093511461047557806345167f26146104945780634838d165146104b35780634a62bb65146104e1578063544d1ec9146104fa575f80fd5b806322f598351161027c57806322f598351461038d57806323b872dd146103bb57806326991cc8146103da5780632c81355e14610411578063313ce56714610430578063330124111461044b575f80fd5b806306fdde03146102cd578063095ea7b3146102f75780630bd05b6914610326578063151d80391461033c57806318160ddd1461035a57806318c34be114610378575f80fd5b366102c957005b5f80fd5b3480156102d8575f80fd5b506102e16108de565b6040516102ee91906124d8565b60405180910390f35b348015610302575f80fd5b50610316610311366004612537565b61096d565b60405190151581526020016102ee565b348015610331575f80fd5b5061033a610983565b005b348015610347575f80fd5b50600b5461031690610100900460ff1681565b348015610365575f80fd5b506002545b6040519081526020016102ee565b348015610383575f80fd5b5061036a600d5481565b348015610398575f80fd5b506103166103a7366004612561565b60106020525f908152604090205460ff1681565b3480156103c6575f80fd5b506103166103d536600461257c565b6109c7565b3480156103e5575f80fd5b506007546103f9906001600160a01b031681565b6040516001600160a01b0390911681526020016102ee565b34801561041c575f80fd5b5061033a61042b3660046125ba565b610a5e565b34801561043b575f80fd5b50604051601281526020016102ee565b348015610456575f80fd5b5061036a60175481565b34801561046b575f80fd5b5061036a600e5481565b348015610480575f80fd5b5061031661048f366004612537565b610ba9565b34801561049f575f80fd5b5061033a6104ae3660046125de565b610be4565b3480156104be575f80fd5b506103166104cd366004612561565b601a6020525f908152604090205460ff1681565b3480156104ec575f80fd5b506012546103169060ff1681565b348015610505575f80fd5b5061033a6105143660046125ba565b610cbc565b348015610524575f80fd5b5061036a60165481565b348015610539575f80fd5b5061033a6105483660046125ba565b610da0565b348015610558575f80fd5b5061036a60095481565b34801561056d575f80fd5b5061031661057c366004612561565b600f6020525f908152604090205460ff1681565b34801561059b575f80fd5b5061033a6105aa3660046125de565b610e87565b3480156105ba575f80fd5b5061036a6105c9366004612561565b6001600160a01b03165f9081526003602052604090205490565b3480156105ee575f80fd5b5061033a610edb565b348015610602575f80fd5b5061033a610f10565b348015610616575f80fd5b50600b546103f9906201000090046001600160a01b031681565b34801561063b575f80fd5b5061036a60085481565b348015610650575f80fd5b506005546001600160a01b03166103f9565b34801561066d575f80fd5b50600c546103f9906001600160a01b031681565b34801561068c575f80fd5b5061033a61069b366004612615565b610f46565b3480156106ab575f80fd5b5061033a6106ba366004612694565b610fe4565b3480156106ca575f80fd5b506102e1611028565b3480156106de575f80fd5b506103166106ed366004612537565b611037565b3480156106fd575f80fd5b5061031661070c366004612537565b6110c1565b34801561071c575f80fd5b5061036a60185481565b348015610731575f80fd5b5061033a6107403660046126af565b6110cd565b348015610750575f80fd5b5061031661075f366004612561565b60116020525f908152604090205460ff1681565b34801561077e575f80fd5b5061033a61078d3660046126af565b611164565b34801561079d575f80fd5b5061033a6107ac366004612561565b6111f7565b3480156107bc575f80fd5b5061036a60155481565b3480156107d1575f80fd5b506006546103f9906001600160a01b031681565b3480156107f0575f80fd5b5061036a600a5481565b348015610805575f80fd5b5061033a6108143660046125de565b611296565b348015610824575f80fd5b5061033a6108333660046126cf565b6112ea565b348015610843575f80fd5b50600b546103169060ff1681565b34801561085c575f80fd5b5061036a61086b366004612706565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156108a0575f80fd5b5061036a60135481565b3480156108b5575f80fd5b5061036a60145481565b3480156108ca575f80fd5b5061033a6108d9366004612561565b611579565b60605f80546108ec90612732565b80601f016020809104026020016040519081016040528092919081815260200182805461091890612732565b80156109635780601f1061093a57610100808354040283529160200191610963565b820191905f5260205f20905b81548152906001019060200180831161094657829003601f168201915b5050505050905090565b5f6109793384846115f9565b5060015b92915050565b6005546001600160a01b031633146109b65760405162461bcd60e51b81526004016109ad9061276a565b60405180910390fd5b600b805461ffff1916610101179055565b5f6109d3848484611705565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610a465760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016109ad565b610a5385338584036115f9565b506001949350505050565b6005546001600160a01b03163314610a885760405162461bcd60e51b81526004016109ad9061276a565b620186a0610a9560025490565b610aa09060016127a5565b610aaa91906127bc565b811015610b175760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109ad565b6103e8610b2360025490565b610b2e9060056127a5565b610b3891906127bc565b811115610ba45760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016109ad565b600855565b335f8181526004602090815260408083206001600160a01b03871684529091528120549091610979918590610bdf9086906127db565b6115f9565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016109ad9061276a565b6007546001600160a01b0390811690831603610c925760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109ad565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ce65760405162461bcd60e51b81526004016109ad9061276a565b610cf26012600a6128ce565b6103e8610cfe60025490565b610d099060016127a5565b610d1391906127bc565b610d1d91906127bc565b811015610d845760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060448201526e6c6f776572207468616e20302e312560881b60648201526084016109ad565b610d906012600a6128ce565b610d9a90826127a5565b600a5550565b6005546001600160a01b03163314610dca5760405162461bcd60e51b81526004016109ad9061276a565b610dd66012600a6128ce565b6103e8610de260025490565b610ded9060056127a5565b610df791906127bc565b610e0191906127bc565b811015610e6b5760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c6044820152716574206c6f776572207468616e20302e352560701b60648201526084016109ad565b610e776012600a6128ce565b610e8190826127a5565b60095550565b6005546001600160a01b03163314610eb15760405162461bcd60e51b81526004016109ad9061276a565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f055760405162461bcd60e51b81526004016109ad9061276a565b610f0e5f612020565b565b6005546001600160a01b03163314610f3a5760405162461bcd60e51b81526004016109ad9061276a565b6012805460ff19169055565b6005546001600160a01b03163314610f705760405162461bcd60e51b81526004016109ad9061276a565b5f5b82811015610fde5781601a5f868685818110610f9057610f906128dc565b9050602002016020810190610fa59190612561565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610fd6816128f0565b915050610f72565b50505050565b6005546001600160a01b0316331461100e5760405162461bcd60e51b81526004016109ad9061276a565b600b80549115156101000261ff0019909216919091179055565b6060600180546108ec90612732565b335f9081526004602090815260408083206001600160a01b0386168452909152812054828110156110aa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016109ad565b6110b733858584036115f9565b5060019392505050565b5f610979338484611705565b6005546001600160a01b031633146110f75760405162461bcd60e51b81526004016109ad9061276a565b6017829055601881905561110b81836127db565b6016819055601910156111605760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420323525206f72206c6573730000000060448201526064016109ad565b5050565b6005546001600160a01b0316331461118e5760405162461bcd60e51b81526004016109ad9061276a565b601482905560158190556111a281836127db565b6013819055601910156111605760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420323525206f72206c6573730000000060448201526064016109ad565b6005546001600160a01b031633146112215760405162461bcd60e51b81526004016109ad9061276a565b6001600160a01b03811661126e5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b60448201526064016109ad565b601980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b031633146112c05760405162461bcd60e51b81526004016109ad9061276a565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091525f606082018190529192506080016040516020818303038152906040528051906020012090505f828260405160200161148792919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156114ef573d5f803e3d5ffd5b50505060206040510351905061150d6005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146115615760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016109ad565b5050600b805461ffff19166101011790555050505050565b6005546001600160a01b031633146115a35760405162461bcd60e51b81526004016109ad9061276a565b6001600160a01b0381166115ed5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016109ad565b6115f681612020565b50565b6001600160a01b03831661164f5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016109ad565b6001600160a01b0382166116a55760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016109ad565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661175b5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016109ad565b6001600160a01b0382166117b15760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016109ad565b6001600160a01b0383165f908152601a602052604090205460ff16156118195760405162461bcd60e51b815260206004820152601960248201527f45524332303a2066726f6d20697320626c61636b206c6973740000000000000060448201526064016109ad565b6001600160a01b0382165f908152601a602052604090205460ff16156118815760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746f20697320626c61636b206c69737400000000000000000060448201526064016109ad565b805f036118985761189383835f612071565b505050565b60125460ff1615611bf9576005546001600160a01b038481169116148015906118cf57506005546001600160a01b03838116911614155b80156118e357506001600160a01b03821615155b80156118fa57506001600160a01b03821661dead14155b8015611909575060195460ff16155b15611bf957600b5460ff1661199a576001600160a01b0383165f9081526010602052604090205460ff168061195557506001600160a01b0382165f9081526010602052604090205460ff165b61199a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109ad565b6001600160a01b0383165f9081526011602052604090205460ff1680156119d957506001600160a01b0382165f908152600f602052604090205460ff16155b15611abc57600a54811115611a4e5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016109ad565b6009546001600160a01b0383165f90815260036020526040902054611a7390836127db565b1115611ab75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109ad565b611bf9565b6001600160a01b0382165f9081526011602052604090205460ff168015611afb57506001600160a01b0383165f908152600f602052604090205460ff16155b15611b7157600a54811115611ab75760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016109ad565b6001600160a01b0382165f908152600f602052604090205460ff16611bf9576009546001600160a01b0383165f90815260036020526040902054611bb590836127db565b1115611bf95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109ad565b60195461010090046001600160a01b031615801590611c815750601954604051639015d37160e01b81523060048201526101009091046001600160a01b031690639015d37190602401602060405180830381865afa158015611c5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c819190612908565b15611d7357601954600754600954600a5460085460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a48201525f9261010090049091169063a20527fc9060c4016020604051808303815f875af1158015611d07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612908565b905080611d715760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b60448201526064016109ad565b505b305f90815260036020526040902054600854600b549082101590610100900460ff168015611d9e5750805b8015611dad575060195460ff16155b8015611dd057506001600160a01b0384165f9081526011602052604090205460ff165b8015611df457506001600160a01b0385165f9081526010602052604090205460ff16155b8015611e1857506001600160a01b0384165f9081526010602052604090205460ff16155b15611e3d576019805460ff19166001179055611e32612214565b6019805460ff191690555b6019546001600160a01b0386165f9081526010602052604090205460ff91821615911680611e8257506001600160a01b0385165f9081526010602052604090205460ff165b15611e8a57505f5b5f811561200c576001600160a01b0386165f9081526011602052604090205460ff168015611eb957505f601354115b15611f4557611ede6064611ed86013548861236090919063ffffffff16565b90612372565b905060135460155482611ef191906127a5565b611efb91906127bc565b600e5f828254611f0b91906127db565b9091555050601354601454611f2090836127a5565b611f2a91906127bc565b600d5f828254611f3a91906127db565b90915550611fee9050565b6001600160a01b0387165f9081526011602052604090205460ff168015611f6d57505f601654115b15611fee57611f8c6064611ed86016548861236090919063ffffffff16565b905060165460185482611f9f91906127a5565b611fa991906127bc565b600e5f828254611fb991906127db565b9091555050601654601754611fce90836127a5565b611fd891906127bc565b600d5f828254611fe891906127db565b90915550505b8015611fff57611fff873083612071565b6120098186612923565b94505b612017878787612071565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166120c75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016109ad565b6001600160a01b03821661211d5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016109ad565b6001600160a01b0383165f90815260036020526040902054818110156121855760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016109ad565b6001600160a01b038085165f908152600360205260408082208585039055918516815290812080548492906121bb9084906127db565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161220791815260200190565b60405180910390a3610fde565b5f80600e54600d5461222691906127db565b305f90815260036020526040902054909150811580612243575080155b1561224d57505050565b60085461225b9060146127a5565b811115612273576008546122709060146127a5565b90505b4761227d8261237d565b5f61228847836124cd565b90505f6122a485611ed8600e548561236090919063ffffffff16565b600c546040519192506001600160a01b03169082905f81818185875af1925050503d805f81146122ef576040519150601f19603f3d011682016040523d82523d5f602084013e6122f4565b606091505b5050600b546040519197506201000090046001600160a01b03169047905f81818185875af1925050503d805f8114612347576040519150601f19603f3d011682016040523d82523d5f602084013e61234c565b606091505b50505f600d819055600e5550505050505050565b5f61236b82846127a5565b9392505050565b5f61236b82846127bc565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106123b0576123b06128dc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612407573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242b9190612936565b8160018151811061243e5761243e6128dc565b6001600160a01b03928316602091820292909201015260065461246491309116846115f9565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061249c9085905f90869030904290600401612951565b5f604051808303815f87803b1580156124b3575f80fd5b505af11580156124c5573d5f803e3d5ffd5b505050505050565b5f61236b8284612923565b5f6020808352835180828501525f5b81811015612503578581018301518582016040015282016124e7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115f6575f80fd5b5f8060408385031215612548575f80fd5b823561255381612523565b946020939093013593505050565b5f60208284031215612571575f80fd5b813561236b81612523565b5f805f6060848603121561258e575f80fd5b833561259981612523565b925060208401356125a981612523565b929592945050506040919091013590565b5f602082840312156125ca575f80fd5b5035919050565b80151581146115f6575f80fd5b5f80604083850312156125ef575f80fd5b82356125fa81612523565b9150602083013561260a816125d1565b809150509250929050565b5f805f60408486031215612627575f80fd5b833567ffffffffffffffff8082111561263e575f80fd5b818601915086601f830112612651575f80fd5b81358181111561265f575f80fd5b8760208260051b8501011115612673575f80fd5b60209283019550935050840135612689816125d1565b809150509250925092565b5f602082840312156126a4575f80fd5b813561236b816125d1565b5f80604083850312156126c0575f80fd5b50508035926020909101359150565b5f805f606084860312156126e1575f80fd5b833560ff811681146126f1575f80fd5b95602085013595506040909401359392505050565b5f8060408385031215612717575f80fd5b823561272281612523565b9150602083013561260a81612523565b600181811c9082168061274657607f821691505b60208210810361276457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761097d5761097d612791565b5f826127d657634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561097d5761097d612791565b600181815b8085111561282857815f190482111561280e5761280e612791565b8085161561281b57918102915b93841c93908002906127f3565b509250929050565b5f8261283e5750600161097d565b8161284a57505f61097d565b8160018114612860576002811461286a57612886565b600191505061097d565b60ff84111561287b5761287b612791565b50506001821b61097d565b5060208310610133831016604e8410600b84101617156128a9575081810a61097d565b6128b383836127ee565b805f19048211156128c6576128c6612791565b029392505050565b5f61236b60ff841683612830565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161290157612901612791565b5060010190565b5f60208284031215612918575f80fd5b815161236b816125d1565b8181038181111561097d5761097d612791565b5f60208284031215612946575f80fd5b815161236b81612523565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561299f5784516001600160a01b03168352938301939183019160010161297a565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212205eee63ac9edee947a04548234ad2e19f6339fe561e15a4668d94fda563eaf98364736f6c63430008140033

Deployed Bytecode

0x6080604052600436106102c2575f3560e01c8063751039fc1161016f578063b62496f5116100d8578063c6a3064711610092578063dd62ed3e1161006d578063dd62ed3e14610851578063e27a55fe14610895578063e96db1ef146108aa578063f2fde38b146108bf575f80fd5b8063c6a30647146107fa578063d4394cf814610819578063d929a08314610838575f80fd5b8063b62496f514610745578063b79c188614610773578063bae14e1d14610792578063be691883146107b1578063c31c9c07146107c6578063c42c3f88146107e5575f80fd5b8063924de9b711610129578063924de9b7146106a057806395d89b41146106bf578063a457c2d7146106d3578063a9059cbb146106f2578063af8f26e714610711578063b38d5ef414610726575f80fd5b8063751039fc146105f757806375f0a8741461060b5780637d673170146106305780638da5cb5b146106455780638ea5220f146106625780638f85a04314610681575f80fd5b8063372b44b81161022b5780635df6e68e116101e55780636f498e21116101c05780636f498e21146105625780637070678b1461059057806370a08231146105af578063715018a6146105e3575f80fd5b80635df6e68e1461051957806367b740e91461052e578063685fbc6b1461054d575f80fd5b8063372b44b814610460578063395093511461047557806345167f26146104945780634838d165146104b35780634a62bb65146104e1578063544d1ec9146104fa575f80fd5b806322f598351161027c57806322f598351461038d57806323b872dd146103bb57806326991cc8146103da5780632c81355e14610411578063313ce56714610430578063330124111461044b575f80fd5b806306fdde03146102cd578063095ea7b3146102f75780630bd05b6914610326578063151d80391461033c57806318160ddd1461035a57806318c34be114610378575f80fd5b366102c957005b5f80fd5b3480156102d8575f80fd5b506102e16108de565b6040516102ee91906124d8565b60405180910390f35b348015610302575f80fd5b50610316610311366004612537565b61096d565b60405190151581526020016102ee565b348015610331575f80fd5b5061033a610983565b005b348015610347575f80fd5b50600b5461031690610100900460ff1681565b348015610365575f80fd5b506002545b6040519081526020016102ee565b348015610383575f80fd5b5061036a600d5481565b348015610398575f80fd5b506103166103a7366004612561565b60106020525f908152604090205460ff1681565b3480156103c6575f80fd5b506103166103d536600461257c565b6109c7565b3480156103e5575f80fd5b506007546103f9906001600160a01b031681565b6040516001600160a01b0390911681526020016102ee565b34801561041c575f80fd5b5061033a61042b3660046125ba565b610a5e565b34801561043b575f80fd5b50604051601281526020016102ee565b348015610456575f80fd5b5061036a60175481565b34801561046b575f80fd5b5061036a600e5481565b348015610480575f80fd5b5061031661048f366004612537565b610ba9565b34801561049f575f80fd5b5061033a6104ae3660046125de565b610be4565b3480156104be575f80fd5b506103166104cd366004612561565b601a6020525f908152604090205460ff1681565b3480156104ec575f80fd5b506012546103169060ff1681565b348015610505575f80fd5b5061033a6105143660046125ba565b610cbc565b348015610524575f80fd5b5061036a60165481565b348015610539575f80fd5b5061033a6105483660046125ba565b610da0565b348015610558575f80fd5b5061036a60095481565b34801561056d575f80fd5b5061031661057c366004612561565b600f6020525f908152604090205460ff1681565b34801561059b575f80fd5b5061033a6105aa3660046125de565b610e87565b3480156105ba575f80fd5b5061036a6105c9366004612561565b6001600160a01b03165f9081526003602052604090205490565b3480156105ee575f80fd5b5061033a610edb565b348015610602575f80fd5b5061033a610f10565b348015610616575f80fd5b50600b546103f9906201000090046001600160a01b031681565b34801561063b575f80fd5b5061036a60085481565b348015610650575f80fd5b506005546001600160a01b03166103f9565b34801561066d575f80fd5b50600c546103f9906001600160a01b031681565b34801561068c575f80fd5b5061033a61069b366004612615565b610f46565b3480156106ab575f80fd5b5061033a6106ba366004612694565b610fe4565b3480156106ca575f80fd5b506102e1611028565b3480156106de575f80fd5b506103166106ed366004612537565b611037565b3480156106fd575f80fd5b5061031661070c366004612537565b6110c1565b34801561071c575f80fd5b5061036a60185481565b348015610731575f80fd5b5061033a6107403660046126af565b6110cd565b348015610750575f80fd5b5061031661075f366004612561565b60116020525f908152604090205460ff1681565b34801561077e575f80fd5b5061033a61078d3660046126af565b611164565b34801561079d575f80fd5b5061033a6107ac366004612561565b6111f7565b3480156107bc575f80fd5b5061036a60155481565b3480156107d1575f80fd5b506006546103f9906001600160a01b031681565b3480156107f0575f80fd5b5061036a600a5481565b348015610805575f80fd5b5061033a6108143660046125de565b611296565b348015610824575f80fd5b5061033a6108333660046126cf565b6112ea565b348015610843575f80fd5b50600b546103169060ff1681565b34801561085c575f80fd5b5061036a61086b366004612706565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b3480156108a0575f80fd5b5061036a60135481565b3480156108b5575f80fd5b5061036a60145481565b3480156108ca575f80fd5b5061033a6108d9366004612561565b611579565b60605f80546108ec90612732565b80601f016020809104026020016040519081016040528092919081815260200182805461091890612732565b80156109635780601f1061093a57610100808354040283529160200191610963565b820191905f5260205f20905b81548152906001019060200180831161094657829003601f168201915b5050505050905090565b5f6109793384846115f9565b5060015b92915050565b6005546001600160a01b031633146109b65760405162461bcd60e51b81526004016109ad9061276a565b60405180910390fd5b600b805461ffff1916610101179055565b5f6109d3848484611705565b6001600160a01b0384165f90815260046020908152604080832033845290915290205482811015610a465760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f7420637572416c6c6f77203e3d20616d6f756e7400000060448201526064016109ad565b610a5385338584036115f9565b506001949350505050565b6005546001600160a01b03163314610a885760405162461bcd60e51b81526004016109ad9061276a565b620186a0610a9560025490565b610aa09060016127a5565b610aaa91906127bc565b811015610b175760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016109ad565b6103e8610b2360025490565b610b2e9060056127a5565b610b3891906127bc565b811115610ba45760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016109ad565b600855565b335f8181526004602090815260408083206001600160a01b03871684529091528120549091610979918590610bdf9086906127db565b6115f9565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b81526004016109ad9061276a565b6007546001600160a01b0390811690831603610c925760405162461bcd60e51b815260206004820152603960248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527f6175746f6d617465644d61726b65744d616b657250616972730000000000000060648201526084016109ad565b6001600160a01b03919091165f908152601160205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610ce65760405162461bcd60e51b81526004016109ad9061276a565b610cf26012600a6128ce565b6103e8610cfe60025490565b610d099060016127a5565b610d1391906127bc565b610d1d91906127bc565b811015610d845760405162461bcd60e51b815260206004820152602f60248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657254786e2060448201526e6c6f776572207468616e20302e312560881b60648201526084016109ad565b610d906012600a6128ce565b610d9a90826127a5565b600a5550565b6005546001600160a01b03163314610dca5760405162461bcd60e51b81526004016109ad9061276a565b610dd66012600a6128ce565b6103e8610de260025490565b610ded9060056127a5565b610df791906127bc565b610e0191906127bc565b811015610e6b5760405162461bcd60e51b815260206004820152603260248201527f43616e6e6f7420736574206d6178546f6b656e416d6f756e7450657257616c6c6044820152716574206c6f776572207468616e20302e352560701b60648201526084016109ad565b610e776012600a6128ce565b610e8190826127a5565b60095550565b6005546001600160a01b03163314610eb15760405162461bcd60e51b81526004016109ad9061276a565b6001600160a01b03919091165f908152600f60205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314610f055760405162461bcd60e51b81526004016109ad9061276a565b610f0e5f612020565b565b6005546001600160a01b03163314610f3a5760405162461bcd60e51b81526004016109ad9061276a565b6012805460ff19169055565b6005546001600160a01b03163314610f705760405162461bcd60e51b81526004016109ad9061276a565b5f5b82811015610fde5781601a5f868685818110610f9057610f906128dc565b9050602002016020810190610fa59190612561565b6001600160a01b0316815260208101919091526040015f20805460ff191691151591909117905580610fd6816128f0565b915050610f72565b50505050565b6005546001600160a01b0316331461100e5760405162461bcd60e51b81526004016109ad9061276a565b600b80549115156101000261ff0019909216919091179055565b6060600180546108ec90612732565b335f9081526004602090815260408083206001600160a01b0386168452909152812054828110156110aa5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a204e6f7420637572416c6c6f77203e3d2073756256616c75650060448201526064016109ad565b6110b733858584036115f9565b5060019392505050565b5f610979338484611705565b6005546001600160a01b031633146110f75760405162461bcd60e51b81526004016109ad9061276a565b6017829055601881905561110b81836127db565b6016819055601910156111605760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420323525206f72206c6573730000000060448201526064016109ad565b5050565b6005546001600160a01b0316331461118e5760405162461bcd60e51b81526004016109ad9061276a565b601482905560158190556111a281836127db565b6013819055601910156111605760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702074617820617420323525206f72206c6573730000000060448201526064016109ad565b6005546001600160a01b031633146112215760405162461bcd60e51b81526004016109ad9061276a565b6001600160a01b03811661126e5760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b60448201526064016109ad565b601980546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b6005546001600160a01b031633146112c05760405162461bcd60e51b81526004016109ad9061276a565b6001600160a01b03919091165f908152601060205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a08201525f9060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df3918101919091525f606082018190529192506080016040516020818303038152906040528051906020012090505f828260405160200161148792919061190160f01b81526002810192909252602282015260420190565b60408051601f1981840301815282825280516020918201205f80855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa1580156114ef573d5f803e3d5ffd5b50505060206040510351905061150d6005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146115615760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016109ad565b5050600b805461ffff19166101011790555050505050565b6005546001600160a01b031633146115a35760405162461bcd60e51b81526004016109ad9061276a565b6001600160a01b0381166115ed5760405162461bcd60e51b81526020600482015260116024820152704e6577206f776e6572206973205a45524f60781b60448201526064016109ad565b6115f681612020565b50565b6001600160a01b03831661164f5760405162461bcd60e51b815260206004820152601e60248201527f45524332303a204e6f74206f776e657220213d2061646472657373283029000060448201526064016109ad565b6001600160a01b0382166116a55760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f74207370656e64657220213d206164647265737328302960448201526064016109ad565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661175b5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a20496e76616c69642066726f6d2061646472657373000000000060448201526064016109ad565b6001600160a01b0382166117b15760405162461bcd60e51b815260206004820152601960248201527f45524332303a20496e76616c696420746f20616464726573730000000000000060448201526064016109ad565b6001600160a01b0383165f908152601a602052604090205460ff16156118195760405162461bcd60e51b815260206004820152601960248201527f45524332303a2066726f6d20697320626c61636b206c6973740000000000000060448201526064016109ad565b6001600160a01b0382165f908152601a602052604090205460ff16156118815760405162461bcd60e51b815260206004820152601760248201527f45524332303a20746f20697320626c61636b206c69737400000000000000000060448201526064016109ad565b805f036118985761189383835f612071565b505050565b60125460ff1615611bf9576005546001600160a01b038481169116148015906118cf57506005546001600160a01b03838116911614155b80156118e357506001600160a01b03821615155b80156118fa57506001600160a01b03821661dead14155b8015611909575060195460ff16155b15611bf957600b5460ff1661199a576001600160a01b0383165f9081526010602052604090205460ff168061195557506001600160a01b0382165f9081526010602052604090205460ff165b61199a5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016109ad565b6001600160a01b0383165f9081526011602052604090205460ff1680156119d957506001600160a01b0382165f908152600f602052604090205460ff16155b15611abc57600a54811115611a4e5760405162461bcd60e51b815260206004820152603560248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201527436b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760591b60648201526084016109ad565b6009546001600160a01b0383165f90815260036020526040902054611a7390836127db565b1115611ab75760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109ad565b611bf9565b6001600160a01b0382165f9081526011602052604090205460ff168015611afb57506001600160a01b0383165f908152600f602052604090205460ff16155b15611b7157600a54811115611ab75760405162461bcd60e51b815260206004820152603660248201527f53656c6c207472616e7366657220616d6f756e742065786365656473207468656044820152751036b0bc2a37b5b2b720b6b7bab73a2832b92a3c371760511b60648201526084016109ad565b6001600160a01b0382165f908152600f602052604090205460ff16611bf9576009546001600160a01b0383165f90815260036020526040902054611bb590836127db565b1115611bf95760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016109ad565b60195461010090046001600160a01b031615801590611c815750601954604051639015d37160e01b81523060048201526101009091046001600160a01b031690639015d37190602401602060405180830381865afa158015611c5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c819190612908565b15611d7357601954600754600954600a5460085460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a48201525f9261010090049091169063a20527fc9060c4016020604051808303815f875af1158015611d07573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d2b9190612908565b905080611d715760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b60448201526064016109ad565b505b305f90815260036020526040902054600854600b549082101590610100900460ff168015611d9e5750805b8015611dad575060195460ff16155b8015611dd057506001600160a01b0384165f9081526011602052604090205460ff165b8015611df457506001600160a01b0385165f9081526010602052604090205460ff16155b8015611e1857506001600160a01b0384165f9081526010602052604090205460ff16155b15611e3d576019805460ff19166001179055611e32612214565b6019805460ff191690555b6019546001600160a01b0386165f9081526010602052604090205460ff91821615911680611e8257506001600160a01b0385165f9081526010602052604090205460ff165b15611e8a57505f5b5f811561200c576001600160a01b0386165f9081526011602052604090205460ff168015611eb957505f601354115b15611f4557611ede6064611ed86013548861236090919063ffffffff16565b90612372565b905060135460155482611ef191906127a5565b611efb91906127bc565b600e5f828254611f0b91906127db565b9091555050601354601454611f2090836127a5565b611f2a91906127bc565b600d5f828254611f3a91906127db565b90915550611fee9050565b6001600160a01b0387165f9081526011602052604090205460ff168015611f6d57505f601654115b15611fee57611f8c6064611ed86016548861236090919063ffffffff16565b905060165460185482611f9f91906127a5565b611fa991906127bc565b600e5f828254611fb991906127db565b9091555050601654601754611fce90836127a5565b611fd891906127bc565b600d5f828254611fe891906127db565b90915550505b8015611fff57611fff873083612071565b6120098186612923565b94505b612017878787612071565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b6001600160a01b0383166120c75760405162461bcd60e51b815260206004820152601d60248201527f45524332303a204e6f742066726f6d20213d206164647265737328302900000060448201526064016109ad565b6001600160a01b03821661211d5760405162461bcd60e51b815260206004820152601b60248201527f45524332303a204e6f7420746f20213d2061646472657373283029000000000060448201526064016109ad565b6001600160a01b0383165f90815260036020526040902054818110156121855760405162461bcd60e51b815260206004820181905260248201527f45524332303a204e6f742062616c616e636546726f6d203e3d20616d6f756e7460448201526064016109ad565b6001600160a01b038085165f908152600360205260408082208585039055918516815290812080548492906121bb9084906127db565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161220791815260200190565b60405180910390a3610fde565b5f80600e54600d5461222691906127db565b305f90815260036020526040902054909150811580612243575080155b1561224d57505050565b60085461225b9060146127a5565b811115612273576008546122709060146127a5565b90505b4761227d8261237d565b5f61228847836124cd565b90505f6122a485611ed8600e548561236090919063ffffffff16565b600c546040519192506001600160a01b03169082905f81818185875af1925050503d805f81146122ef576040519150601f19603f3d011682016040523d82523d5f602084013e6122f4565b606091505b5050600b546040519197506201000090046001600160a01b03169047905f81818185875af1925050503d805f8114612347576040519150601f19603f3d011682016040523d82523d5f602084013e61234c565b606091505b50505f600d819055600e5550505050505050565b5f61236b82846127a5565b9392505050565b5f61236b82846127bc565b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106123b0576123b06128dc565b6001600160a01b03928316602091820292909201810191909152600654604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612407573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061242b9190612936565b8160018151811061243e5761243e6128dc565b6001600160a01b03928316602091820292909201015260065461246491309116846115f9565b60065460405163791ac94760e01b81526001600160a01b039091169063791ac9479061249c9085905f90869030904290600401612951565b5f604051808303815f87803b1580156124b3575f80fd5b505af11580156124c5573d5f803e3d5ffd5b505050505050565b5f61236b8284612923565b5f6020808352835180828501525f5b81811015612503578581018301518582016040015282016124e7565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146115f6575f80fd5b5f8060408385031215612548575f80fd5b823561255381612523565b946020939093013593505050565b5f60208284031215612571575f80fd5b813561236b81612523565b5f805f6060848603121561258e575f80fd5b833561259981612523565b925060208401356125a981612523565b929592945050506040919091013590565b5f602082840312156125ca575f80fd5b5035919050565b80151581146115f6575f80fd5b5f80604083850312156125ef575f80fd5b82356125fa81612523565b9150602083013561260a816125d1565b809150509250929050565b5f805f60408486031215612627575f80fd5b833567ffffffffffffffff8082111561263e575f80fd5b818601915086601f830112612651575f80fd5b81358181111561265f575f80fd5b8760208260051b8501011115612673575f80fd5b60209283019550935050840135612689816125d1565b809150509250925092565b5f602082840312156126a4575f80fd5b813561236b816125d1565b5f80604083850312156126c0575f80fd5b50508035926020909101359150565b5f805f606084860312156126e1575f80fd5b833560ff811681146126f1575f80fd5b95602085013595506040909401359392505050565b5f8060408385031215612717575f80fd5b823561272281612523565b9150602083013561260a81612523565b600181811c9082168061274657607f821691505b60208210810361276457634e487b7160e01b5f52602260045260245ffd5b50919050565b6020808252600d908201526c24b73b30b634b21037bbb732b960991b604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761097d5761097d612791565b5f826127d657634e487b7160e01b5f52601260045260245ffd5b500490565b8082018082111561097d5761097d612791565b600181815b8085111561282857815f190482111561280e5761280e612791565b8085161561281b57918102915b93841c93908002906127f3565b509250929050565b5f8261283e5750600161097d565b8161284a57505f61097d565b8160018114612860576002811461286a57612886565b600191505061097d565b60ff84111561287b5761287b612791565b50506001821b61097d565b5060208310610133831016604e8410600b84101617156128a9575081810a61097d565b6128b383836127ee565b805f19048211156128c6576128c6612791565b029392505050565b5f61236b60ff841683612830565b634e487b7160e01b5f52603260045260245ffd5b5f6001820161290157612901612791565b5060010190565b5f60208284031215612918575f80fd5b815161236b816125d1565b8181038181111561097d5761097d612791565b5f60208284031215612946575f80fd5b815161236b81612523565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b8181101561299f5784516001600160a01b03168352938301939183019160010161297a565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212205eee63ac9edee947a04548234ad2e19f6339fe561e15a4668d94fda563eaf98364736f6c63430008140033

Deployed Bytecode Sourcemap

14411:11178:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10055:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10627:169;;;;;;;;;;-1:-1:-1;10627:169:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;10627:169:0;1023:187:1;16953:116:0;;;;;;;;;;;;;:::i;:::-;;14735:32;;;;;;;;;;-1:-1:-1;14735:32:0;;;;;;;;;;;10376:108;;;;;;;;;;-1:-1:-1;10464:12:0;;10376:108;;;1361:25:1;;;1349:2;1334:18;10376:108:0;1215:177:1;14846:38:0;;;;;;;;;;;;;;;;15000:48;;;;;;;;;;-1:-1:-1;15000:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11307:397;;;;;;;;;;-1:-1:-1;11307:397:0;;;;;:::i;:::-;;:::i;14529:23::-;;;;;;;;;;-1:-1:-1;14529:23:0;;;;-1:-1:-1;;;;;14529:23:0;;;;;;-1:-1:-1;;;;;2274:32:1;;;2256:51;;2244:2;2229:18;14529:23:0;2110:203:1;18532:352:0;;;;;;;;;;-1:-1:-1;18532:352:0;;;;;:::i;:::-;;:::i;10275:93::-;;;;;;;;;;-1:-1:-1;10275:93:0;;10358:2;2645:36:1;;2633:2;2618:18;10275:93:0;2503:184:1;15302:30:0;;;;;;;;;;;;;;;;14891:32;;;;;;;;;;;;;;;;11881:211;;;;;;;;;;-1:-1:-1;11881:211:0;;;;;:::i;:::-;;:::i;20286:247::-;;;;;;;;;;-1:-1:-1;20286:247:0;;;;;:::i;:::-;;:::i;15437:41::-;;;;;;;;;;-1:-1:-1;15437:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15121:33;;;;;;;;;;-1:-1:-1;15121:33:0;;;;;;;;19180:276;;;;;;;;;;-1:-1:-1;19180:276:0;;;;;:::i;:::-;;:::i;15269:26::-;;;;;;;;;;;;;;;;18892:280;;;;;;;;;;-1:-1:-1;18892:280:0;;;;;:::i;:::-;;:::i;14605:38::-;;;;;;;;;;;;;;;;14932:61;;;;;;;;;;-1:-1:-1;14932:61:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18019:154;;;;;;;;;;-1:-1:-1;18019:154:0;;;;;:::i;:::-;;:::i;10492:127::-;;;;;;;;;;-1:-1:-1;10492:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10593:18:0;10566:7;10593:18;;;:9;:18;;;;;;;10492:127;1089:103;;;;;;;;;;;;;:::i;18319:90::-;;;;;;;;;;;;;:::i;14776:30::-;;;;;;;;;;-1:-1:-1;14776:30:0;;;;;;;-1:-1:-1;;;;;14776:30:0;;;14565:33;;;;;;;;;;;;;;;;806:87;;;;;;;;;;-1:-1:-1;879:6:0;;-1:-1:-1;;;;;879:6:0;806:87;;14813:24;;;;;;;;;;-1:-1:-1;14813:24:0;;;;-1:-1:-1;;;;;14813:24:0;;;19464:204;;;;;;;;;;-1:-1:-1;19464:204:0;;;;;:::i;:::-;;:::i;18417:107::-;;;;;;;;;;-1:-1:-1;18417:107:0;;;;;:::i;:::-;;:::i;10163:104::-;;;;;;;;;;;;;:::i;12100:360::-;;;;;;;;;;-1:-1:-1;12100:360:0;;;;;:::i;:::-;;:::i;11712:161::-;;;;;;;;;;-1:-1:-1;11712:161:0;;;;;:::i;:::-;;:::i;15339:24::-;;;;;;;;;;;;;;;;19676:290;;;;;;;;;;-1:-1:-1;19676:290:0;;;;;:::i;:::-;;:::i;15055:57::-;;;;;;;;;;-1:-1:-1;15055:57:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19974:300;;;;;;;;;;-1:-1:-1;19974:300:0;;;;;:::i;:::-;;:::i;20541:197::-;;;;;;;;;;-1:-1:-1;20541:197:0;;;;;:::i;:::-;;:::i;15235:25::-;;;;;;;;;;;;;;;;14486:36;;;;;;;;;;-1:-1:-1;14486:36:0;;;;-1:-1:-1;;;;;14486:36:0;;;14650:35;;;;;;;;;;;;;;;;18181:130;;;;;;;;;;-1:-1:-1;18181:130:0;;;;;:::i;:::-;;:::i;17077:934::-;;;;;;;;;;-1:-1:-1;17077:934:0;;;;;:::i;:::-;;:::i;14694:34::-;;;;;;;;;;-1:-1:-1;14694:34:0;;;;;;;;11148:151;;;;;;;;;;-1:-1:-1;11148:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11264:18:0;;;11237:7;11264:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11148:151;15163:27;;;;;;;;;;;;;;;;15197:31;;;;;;;;;;;;;;;;901:180;;;;;;;;;;-1:-1:-1;901:180:0;;;;;:::i;:::-;;:::i;10055:100::-;10109:13;10142:5;10135:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10055:100;:::o;10627:169::-;10710:4;10727:39;323:10;10750:7;10759:6;10727:8;:39::i;:::-;-1:-1:-1;10784:4:0;10627:169;;;;;:::o;16953:116::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;;;;;;;;;17010:14:::1;:21:::0;;-1:-1:-1;;17042:19:0;;;;;16953:116::o;11307:397::-;11404:4;11421:27;11431:4;11437:2;11441:6;11421:9;:27::i;:::-;-1:-1:-1;;;;;11478:17:0;;11459:16;11478:17;;;:11;:17;;;;;;;;323:10;11478:31;;;;;;;;11528:18;;;;11520:60;;;;-1:-1:-1;;;11520:60:0;;6422:2:1;11520:60:0;;;6404:21:1;6461:2;6441:18;;;6434:30;6500:31;6480:18;;;6473:59;6549:18;;11520:60:0;6220:353:1;11520:60:0;11616:47;11625:4;323:10;11656:6;11645:8;:17;11616:8;:47::i;:::-;-1:-1:-1;11692:4:0;;11307:397;-1:-1:-1;;;;11307:397:0:o;18532:352::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;18662:6:::1;18641:13;10464:12:::0;;;10376:108;18641:13:::1;:17;::::0;18657:1:::1;18641:17;:::i;:::-;18640:28;;;;:::i;:::-;18630:6;:38;;18622:104;;;::::0;-1:-1:-1;;;18622:104:0;;7307:2:1;18622:104:0::1;::::0;::::1;7289:21:1::0;7346:2;7326:18;;;7319:30;7385:34;7365:18;;;7358:62;-1:-1:-1;;;7436:18:1;;;7429:51;7497:19;;18622:104:0::1;7105:417:1::0;18622:104:0::1;18777:4;18756:13;10464:12:::0;;;10376:108;18756:13:::1;:17;::::0;18772:1:::1;18756:17;:::i;:::-;18755:26;;;;:::i;:::-;18745:6;:36;;18737:101;;;::::0;-1:-1:-1;;;18737:101:0;;7729:2:1;18737:101:0::1;::::0;::::1;7711:21:1::0;7768:2;7748:18;;;7741:30;7807:34;7787:18;;;7780:62;-1:-1:-1;;;7858:18:1;;;7851:50;7918:19;;18737:101:0::1;7527:416:1::0;18737:101:0::1;18849:18;:27:::0;18532:352::o;11881:211::-;323:10;11967:4;12016:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12016:34:0;;;;;;;;;;11967:4;;11984:78;;12007:7;;12016:45;;12053:8;;12016:45;:::i;:::-;11984:8;:78::i;20286:247::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;20405:8:::1;::::0;-1:-1:-1;;;;;20405:8:0;;::::1;20397:16:::0;;::::1;::::0;20389:86:::1;;;::::0;-1:-1:-1;;;20389:86:0;;8280:2:1;20389:86:0::1;::::0;::::1;8262:21:1::0;8319:2;8299:18;;;8292:30;8358:34;8338:18;;;8331:62;8429:27;8409:18;;;8402:55;8474:19;;20389:86:0::1;8078:421:1::0;20389:86:0::1;-1:-1:-1::0;;;;;20486:31:0;;;::::1;;::::0;;;:25:::1;:31;::::0;;;;:39;;-1:-1:-1;;20486:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20286:247::o;19180:276::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;19318:16:::1;10358:2:::0;19318::::1;:16;:::i;:::-;19309:4;19288:13;10464:12:::0;;;10376:108;19288:13:::1;:17;::::0;19304:1:::1;19288:17;:::i;:::-;19287:26;;;;:::i;:::-;19286:49;;;;:::i;:::-;19276:6;:59;;19268:119;;;::::0;-1:-1:-1;;;19268:119:0;;10089:2:1;19268:119:0::1;::::0;::::1;10071:21:1::0;10128:2;10108:18;;;10101:30;10167:34;10147:18;;;10140:62;-1:-1:-1;;;10218:18:1;;;10211:45;10273:19;;19268:119:0::1;9887:411:1::0;19268:119:0::1;19431:16;10358:2:::0;19431::::1;:16;:::i;:::-;19421:27;::::0;:6;:27:::1;:::i;:::-;19398:20;:50:::0;-1:-1:-1;19180:276:0:o;18892:280::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;19028:16:::1;10358:2:::0;19028::::1;:16;:::i;:::-;19019:4;18998:13;10464:12:::0;;;10376:108;18998:13:::1;:17;::::0;19014:1:::1;18998:17;:::i;:::-;18997:26;;;;:::i;:::-;18996:49;;;;:::i;:::-;18986:6;:59;;18978:122;;;::::0;-1:-1:-1;;;18978:122:0;;10505:2:1;18978:122:0::1;::::0;::::1;10487:21:1::0;10544:2;10524:18;;;10517:30;10583:34;10563:18;;;10556:62;-1:-1:-1;;;10634:18:1;;;10627:48;10692:19;;18978:122:0::1;10303:414:1::0;18978:122:0::1;19147:16;10358:2:::0;19147::::1;:16;:::i;:::-;19137:27;::::0;:6;:27:::1;:::i;:::-;19111:23;:53:::0;-1:-1:-1;18892:280:0:o;18019:154::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18122:35:0;;;::::1;;::::0;;;:29:::1;:35;::::0;;;;:43;;-1:-1:-1;;18122:43:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18019:154::o;1089:103::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;1154:30:::1;1181:1;1154:18;:30::i;:::-;1089:103::o:0;18319:90::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;18379:14:::1;:22:::0;;-1:-1:-1;;18379:22:0::1;::::0;;18319:90::o;19464:204::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;19563:9:::1;19558:103;19578:18:::0;;::::1;19558:103;;;19642:7;19618:9;:21;19628:7;;19636:1;19628:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;19618:21:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;19618:21:0;:31;;-1:-1:-1;;19618:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19598:3;::::1;::::0;::::1;:::i;:::-;;;;19558:103;;;;19464:204:::0;;;:::o;18417:107::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;18494:12:::1;:22:::0;;;::::1;;;;-1:-1:-1::0;;18494:22:0;;::::1;::::0;;;::::1;::::0;;18417:107::o;10163:104::-;10219:13;10252:7;10245:14;;;;;:::i;12100:360::-;323:10;12186:4;12222:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12222:34:0;;;;;;;;;;12275:20;;;;12267:64;;;;-1:-1:-1;;;12267:64:0;;11196:2:1;12267:64:0;;;11178:21:1;11235:2;11215:18;;;11208:30;11274:33;11254:18;;;11247:61;11325:18;;12267:64:0;10994:355:1;12267:64:0;12367:52;323:10;12390:7;12410:8;12399;:19;12367:8;:52::i;:::-;-1:-1:-1;12448:4:0;;12100:360;-1:-1:-1;;;12100:360:0:o;11712:161::-;11791:4;11808:35;323:10;11832:2;11836:6;11808:9;:35::i;19676:290::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;19775:15:::1;:30:::0;;;19816:9:::1;:21:::0;;;19862:27:::1;19828:9:::0;19793:12;19862:27:::1;:::i;:::-;19848:11;:41:::0;;;19923:2:::1;-1:-1:-1::0;19908:17:0::1;19900:58;;;::::0;-1:-1:-1;;;19900:58:0;;11556:2:1;19900:58:0::1;::::0;::::1;11538:21:1::0;11595:2;11575:18;;;11568:30;11634;11614:18;;;11607:58;11682:18;;19900:58:0::1;11354:352:1::0;19900:58:0::1;19676:290:::0;;:::o;19974:300::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;20077:16:::1;:31:::0;;;20119:10:::1;:22:::0;;;20167:29:::1;20132:9:::0;20096:12;20167:29:::1;:::i;:::-;20152:12;:44:::0;;;20231:2:::1;-1:-1:-1::0;20215:18:0::1;20207:59;;;::::0;-1:-1:-1;;;20207:59:0;;11556:2:1;20207:59:0::1;::::0;::::1;11538:21:1::0;11595:2;11575:18;;;11568:30;11634;11614:18;;;11607:58;11682:18;;20207:59:0::1;11354:352:1::0;20541:197:0;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20636:30:0;::::1;20628:63;;;::::0;-1:-1:-1;;;20628:63:0;;11913:2:1;20628:63:0::1;::::0;::::1;11895:21:1::0;11952:2;11932:18;;;11925:30;-1:-1:-1;;;11971:18:1;;;11964:50;12031:18;;20628:63:0::1;11711:344:1::0;20628:63:0::1;20702:11;:28:::0;;-1:-1:-1;;;;;20702:28:0;;::::1;;;-1:-1:-1::0;;;;;;20702:28:0;;::::1;::::0;;;::::1;::::0;;20541:197::o;18181:130::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18270:25:0;;;::::1;;::::0;;;:16:::1;:25;::::0;;;;:33;;-1:-1:-1;;18270:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18181:130::o;17077:934::-;17339:22;;;;;;;;;;;-1:-1:-1;;;17339:22:0;;;;;17387:10;;;;;;;;;;-1:-1:-1;;;17387:10:0;;;;17194:271;;17219:95;17194:271;;;12319:25:1;;;;17329:33:0;12360:18:1;;;12353:34;;;;17377:21:0;12403:18:1;;;12396:34;17413:13:0;12446:18:1;;;12439:34;17449:4:0;12489:19:1;;;12482:61;-1:-1:-1;;12291:19:1;;17194:271:0;;;;;;-1:-1:-1;;17194:271:0;;;;;;17184:282;;17194:271;17184:282;;;;17607:23;;;;;;;;-1:-1:-1;;;17607:23:0;;;;;;;17508:159;;17533:49;17508:159;;;12756:25:1;;;;17597:34:0;12797:18:1;;;12790:34;;;;-1:-1:-1;12840:18:1;;;12833:34;;;17184:282:0;;-1:-1:-1;12729:18:1;;17508:159:0;;;;;;;;;;;;17498:170;;;;;;17477:191;;17679:14;17762:10;17787;17706:118;;;;;;;;-1:-1:-1;;;13136:27:1;;13188:1;13179:11;;13172:27;;;;13224:2;13215:12;;13208:28;13261:2;13252:12;;12878:392;17706:118:0;;;;-1:-1:-1;;17706:118:0;;;;;;;;;17696:129;;17706:118;17696:129;;;;17838:14;17855:26;;;;;;;;;13502:25:1;;;13575:4;13563:17;;13543:18;;;13536:45;;;;13597:18;;;13590:34;;;13640:18;;;13633:34;;;17696:129:0;;-1:-1:-1;17838:14:0;17855:26;;13474:19:1;;17855:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17838:43;;17910:7;879:6;;-1:-1:-1;;;;;879:6:0;;806:87;17910:7;-1:-1:-1;;;;;17900:17:0;:6;-1:-1:-1;;;;;17900:17:0;;17892:47;;;;-1:-1:-1;;;17892:47:0;;13880:2:1;17892:47:0;;;13862:21:1;13919:2;13899:18;;;13892:30;-1:-1:-1;;;13938:18:1;;;13931:47;13995:18;;17892:47:0;13678:341:1;17892:47:0;-1:-1:-1;;17952:14:0;:21;;-1:-1:-1;;17984:19:0;;;;;-1:-1:-1;;;;;17077:934:0:o;901:180::-;879:6;;-1:-1:-1;;;;;879:6:0;323:10;737:23;729:49;;;;-1:-1:-1;;;729:49:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;990:22:0;::::1;982:52;;;::::0;-1:-1:-1;;;982:52:0;;14226:2:1;982:52:0::1;::::0;::::1;14208:21:1::0;14265:2;14245:18;;;14238:30;-1:-1:-1;;;14284:18:1;;;14277:47;14341:18;;982:52:0::1;14024:341:1::0;982:52:0::1;1045:28;1064:8;1045:18;:28::i;:::-;901:180:::0;:::o;10804:336::-;-1:-1:-1;;;;;10906:19:0;;10898:62;;;;-1:-1:-1;;;10898:62:0;;14572:2:1;10898:62:0;;;14554:21:1;14611:2;14591:18;;;14584:30;14650:32;14630:18;;;14623:60;14700:18;;10898:62:0;14370:354:1;10898:62:0;-1:-1:-1;;;;;10979:21:0;;10971:66;;;;-1:-1:-1;;;10971:66:0;;14931:2:1;10971:66:0;;;14913:21:1;;;14950:18;;;14943:30;15009:34;14989:18;;;14982:62;15061:18;;10971:66:0;14729:356:1;10971:66:0;-1:-1:-1;;;;;11048:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;11100:32;;1361:25:1;;;11100:32:0;;1334:18:1;11100:32:0;;;;;;;10804:336;;;:::o;21638:3227::-;-1:-1:-1;;;;;21770:18:0;;21762:58;;;;-1:-1:-1;;;21762:58:0;;15292:2:1;21762:58:0;;;15274:21:1;15331:2;15311:18;;;15304:30;15370:29;15350:18;;;15343:57;15417:18;;21762:58:0;15090:351:1;21762:58:0;-1:-1:-1;;;;;21839:16:0;;21831:54;;;;-1:-1:-1;;;21831:54:0;;15648:2:1;21831:54:0;;;15630:21:1;15687:2;15667:18;;;15660:30;15726:27;15706:18;;;15699:55;15771:18;;21831:54:0;15446:349:1;21831:54:0;-1:-1:-1;;;;;21905:15:0;;;;;;:9;:15;;;;;;;;21904:16;21896:54;;;;-1:-1:-1;;;21896:54:0;;16002:2:1;21896:54:0;;;15984:21:1;16041:2;16021:18;;;16014:30;16080:27;16060:18;;;16053:55;16125:18;;21896:54:0;15800:349:1;21896:54:0;-1:-1:-1;;;;;21970:13:0;;;;;;:9;:13;;;;;;;;21969:14;21961:50;;;;-1:-1:-1;;;21961:50:0;;16356:2:1;21961:50:0;;;16338:21:1;16395:2;16375:18;;;16368:30;16434:25;16414:18;;;16407:53;16477:18;;21961:50:0;16154:347:1;21961:50:0;22028:6;22038:1;22028:11;22024:93;;22056:28;22072:4;22078:2;22082:1;22056:15;:28::i;:::-;21638:3227;;;:::o;22024:93::-;22133:14;;;;22129:1085;;;879:6;;-1:-1:-1;;;;;22168:15:0;;;879:6;;22168:15;;;;:32;;-1:-1:-1;879:6:0;;-1:-1:-1;;;;;22187:13:0;;;879:6;;22187:13;;22168:32;:52;;;;-1:-1:-1;;;;;;22204:16:0;;;;22168:52;:77;;;;-1:-1:-1;;;;;;22224:21:0;;22238:6;22224:21;;22168:77;:91;;;;-1:-1:-1;22250:9:0;;;;22249:10;22168:91;22164:1039;;;22285:14;;;;22280:145;;-1:-1:-1;;;;;22332:22:0;;;;;;:16;:22;;;;;;;;;:46;;-1:-1:-1;;;;;;22358:20:0;;;;;;:16;:20;;;;;;;;22332:46;22324:81;;;;-1:-1:-1;;;22324:81:0;;16708:2:1;22324:81:0;;;16690:21:1;16747:2;16727:18;;;16720:30;-1:-1:-1;;;16766:18:1;;;16759:52;16828:18;;22324:81:0;16506:346:1;22324:81:0;-1:-1:-1;;;;;22449:31:0;;;;;;:25;:31;;;;;;;;:69;;;;-1:-1:-1;;;;;;22485:33:0;;;;;;:29;:33;;;;;;;;22484:34;22449:69;22445:743;;;22561:20;;22551:6;:30;;22543:96;;;;-1:-1:-1;;;22543:96:0;;17059:2:1;22543:96:0;;;17041:21:1;17098:2;17078:18;;;17071:30;17137:34;17117:18;;;17110:62;-1:-1:-1;;;17188:18:1;;;17181:51;17249:19;;22543:96:0;16857:417:1;22543:96:0;22696:23;;-1:-1:-1;;;;;10593:18:0;;10566:7;10593:18;;;:9;:18;;;;;;22670:22;;:6;:22;:::i;:::-;:49;;22662:81;;;;-1:-1:-1;;;22662:81:0;;17481:2:1;22662:81:0;;;17463:21:1;17520:2;17500:18;;;17493:30;-1:-1:-1;;;17539:18:1;;;17532:49;17598:18;;22662:81:0;17279:343:1;22662:81:0;22445:743;;;-1:-1:-1;;;;;22790:29:0;;;;;;:25;:29;;;;;;;;:69;;;;-1:-1:-1;;;;;;22824:35:0;;;;;;:29;:35;;;;;;;;22823:36;22790:69;22786:402;;;22902:20;;22892:6;:30;;22884:97;;;;-1:-1:-1;;;22884:97:0;;17829:2:1;22884:97:0;;;17811:21:1;17868:2;17848:18;;;17841:30;17907:34;17887:18;;;17880:62;-1:-1:-1;;;17958:18:1;;;17951:52;18020:19;;22884:97:0;17627:418:1;22786:402:0;-1:-1:-1;;;;;23029:33:0;;;;;;:29;:33;;;;;;;;23024:164;;23121:23;;-1:-1:-1;;;;;10593:18:0;;10566:7;10593:18;;;:9;:18;;;;;;23095:22;;:6;:22;:::i;:::-;:49;;23087:81;;;;-1:-1:-1;;;23087:81:0;;17481:2:1;23087:81:0;;;17463:21:1;17520:2;17500:18;;;17493:30;-1:-1:-1;;;17539:18:1;;;17532:49;17598:18;;23087:81:0;17279:343:1;23087:81:0;23230:11;;;;;-1:-1:-1;;;;;23230:11:0;:25;;;;:79;;-1:-1:-1;23272:11:0;;23259:50;;-1:-1:-1;;;23259:50:0;;23303:4;23259:50;;;2256:51:1;23272:11:0;;;;-1:-1:-1;;;;;23272:11:0;;23259:35;;2229:18:1;;23259:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23226:305;;;23352:11;;23389:8;;23400:23;;23425:20;;23447:18;;23339:127;;-1:-1:-1;;;23339:127:0;;-1:-1:-1;;;;;18643:15:1;;;23339:127:0;;;18625:34:1;18695:15;;;18675:18;;;18668:43;23389:8:0;;;18727:18:1;;;18720:43;18779:18;;;18772:34;;;;18822:19;;;18815:35;;;;18866:19;;;18859:35;23326:10:0;;23352:11;;;;;;;23339:31;;18559:19:1;;23339:127:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23326:140;;23489:5;23481:38;;;;-1:-1:-1;;;23481:38:0;;19107:2:1;23481:38:0;;;19089:21:1;19146:2;19126:18;;;19119:30;-1:-1:-1;;;19165:18:1;;;19158:50;19225:18;;23481:38:0;18905:344:1;23481:38:0;23311:220;23226:305;23584:4;23543:20;10593:18;;;:9;:18;;;;;;23632;;23665:12;;23616:34;;;;;23665:12;;;;;:23;;;;;23681:7;23665:23;:37;;;;-1:-1:-1;23693:9:0;;;;23692:10;23665:37;:83;;;;-1:-1:-1;;;;;;23719:29:0;;;;;;:25;:29;;;;;;;;23665:83;:110;;;;-1:-1:-1;;;;;;23753:22:0;;;;;;:16;:22;;;;;;;;23752:23;23665:110;:135;;;;-1:-1:-1;;;;;;23780:20:0;;;;;;:16;:20;;;;;;;;23779:21;23665:135;23661:241;;;23817:9;:16;;-1:-1:-1;;23817:16:0;23829:4;23817:16;;;23848:10;:8;:10::i;:::-;23873:9;:17;;-1:-1:-1;;23873:17:0;;;23661:241;23927:9;;-1:-1:-1;;;;;23951:22:0;;23914:9;23951:22;;;:16;:22;;;;;;23927:9;;;;23926:10;;23951:22;;:46;;-1:-1:-1;;;;;;23977:20:0;;;;;;:16;:20;;;;;;;;23951:46;23947:77;;;-1:-1:-1;24019:5:0;23947:77;24037:12;24068:4;24064:748;;;-1:-1:-1;;;;;24093:29:0;;;;;;:25;:29;;;;;;;;:49;;;;;24141:1;24126:12;;:16;24093:49;24089:595;;;24170:33;24199:3;24170:24;24181:12;;24170:6;:10;;:24;;;;:::i;:::-;:28;;:33::i;:::-;24163:40;;24265:12;;24251:10;;24244:4;:17;;;;:::i;:::-;24243:34;;;;:::i;:::-;24222:17;;:55;;;;;;;:::i;:::-;;;;-1:-1:-1;;24351:12:0;;24331:16;;24324:23;;:4;:23;:::i;:::-;24323:40;;;;:::i;:::-;24296:23;;:67;;;;;;;:::i;:::-;;;;-1:-1:-1;24089:595:0;;-1:-1:-1;24089:595:0;;-1:-1:-1;;;;;24402:31:0;;;;;;:25;:31;;;;;;;;:50;;;;;24451:1;24437:11;;:15;24402:50;24398:286;;;24480:32;24508:3;24480:23;24491:11;;24480:6;:10;;:23;;;;:::i;:32::-;24473:39;;24573:11;;24560:9;;24553:4;:16;;;;:::i;:::-;24552:32;;;;:::i;:::-;24531:17;;:53;;;;;;;:::i;:::-;;;;-1:-1:-1;;24657:11:0;;24638:15;;24631:22;;:4;:22;:::i;:::-;24630:38;;;;:::i;:::-;24603:23;;:65;;;;;;;:::i;:::-;;;;-1:-1:-1;;24398:286:0;24702:8;;24698:73;;24729:42;24745:4;24759;24766;24729:15;:42::i;:::-;24786:14;24796:4;24786:14;;:::i;:::-;;;24064:748;24824:33;24840:4;24846:2;24850:6;24824:15;:33::i;:::-;21751:3114;;;;21638:3227;;;:::o;1200:191::-;1293:6;;;-1:-1:-1;;;;;1310:17:0;;;-1:-1:-1;;;;;;1310:17:0;;;;;;;1343:40;;1293:6;;;1310:17;1293:6;;1343:40;;1274:16;;1343:40;1263:128;1200:191;:::o;13624:607::-;-1:-1:-1;;;;;13721:18:0;;13713:60;;;;-1:-1:-1;;;13713:60:0;;19589:2:1;13713:60:0;;;19571:21:1;19628:2;19608:18;;;19601:30;19667:31;19647:18;;;19640:59;19716:18;;13713:60:0;19387:353:1;13713:60:0;-1:-1:-1;;;;;13792:16:0;;13784:56;;;;-1:-1:-1;;;13784:56:0;;19947:2:1;13784:56:0;;;19929:21:1;19986:2;19966:18;;;19959:30;20025:29;20005:18;;;19998:57;20072:18;;13784:56:0;19745:351:1;13784:56:0;-1:-1:-1;;;;;13922:15:0;;13900:19;13922:15;;;:9;:15;;;;;;13956:21;;;;13948:66;;;;-1:-1:-1;;;13948:66:0;;20303:2:1;13948:66:0;;;20285:21:1;;;20322:18;;;20315:30;20381:34;20361:18;;;20354:62;20433:18;;13948:66:0;20101:356:1;13948:66:0;-1:-1:-1;;;;;14050:15:0;;;;;;;:9;:15;;;;;;14068:20;;;14050:38;;14110:13;;;;;;;;:23;;14082:6;;14050:15;14110:23;;14082:6;;14110:23;:::i;:::-;;;;;;;;14164:2;-1:-1:-1;;;;;14149:26:0;14158:4;-1:-1:-1;;;;;14149:26:0;;14168:6;14149:26;;;;1361:25:1;;1349:2;1334:18;;1215:177;14149:26:0;;;;;;;;14186:37;21638:3227;20746:884;20785:12;20808:25;20862:17;;20836:23;;:43;;;;:::i;:::-;20931:4;20890:20;10593:18;;;:9;:18;;;;;;20808:71;;-1:-1:-1;20954:22:0;;;:43;;-1:-1:-1;20980:17:0;;20954:43;20950:69;;;21012:7;;;20746:884::o;20950:69::-;21050:18;;:23;;21071:2;21050:23;:::i;:::-;21035:12;:38;21031:95;;;21103:18;;:23;;21124:2;21103:23;:::i;:::-;21088:38;;21031:95;21164:21;21196:30;21213:12;21196:16;:30::i;:::-;21239:18;21260:41;:21;21286:14;21260:25;:41::i;:::-;21239:62;;21312:17;21332:56;21370:17;21332:33;21347:17;;21332:10;:14;;:33;;;;:::i;:56::-;21423:9;;21415:45;;21312:76;;-1:-1:-1;;;;;;21423:9:0;;21312:76;;21415:45;;;;21312:76;21423:9;21415:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21493:15:0;;21485:65;;21401:59;;-1:-1:-1;21493:15:0;;;-1:-1:-1;;;;;21493:15:0;;21523:21;;21485:65;;;;21523:21;21493:15;21485:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21589:1:0;21563:23;:27;;;21601:17;:21;-1:-1:-1;;;;;;;20746:884:0:o;1422:98::-;1480:7;1507:5;1511:1;1507;:5;:::i;:::-;1500:12;1422:98;-1:-1:-1;;;1422:98:0:o;1806:::-;1864:7;1891:5;1895:1;1891;:5;:::i;25025:559::-;25170:16;;;25184:1;25170:16;;;;;;;;25146:21;;25170:16;;;;;;;;;;-1:-1:-1;25170:16:0;25146:40;;25215:4;25197;25202:1;25197:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25197:23:0;;;:7;;;;;;;;;;:23;;;;25241:10;;:17;;;-1:-1:-1;;;25241:17:0;;;;:10;;;;;:15;;:17;;;;;25197:7;;25241:17;;;;;:10;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25231:4;25236:1;25231:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;25231:27:0;;;:7;;;;;;;;;:27;25303:10;;25271:52;;25288:4;;25303:10;25316:6;25271:8;:52::i;:::-;25362:10;;:214;;-1:-1:-1;;;25362:214:0;;-1:-1:-1;;;;;25362:10:0;;;;:61;;:214;;25438:6;;25362:10;;25503:4;;25530;;25550:15;;25362:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25075:509;25025:559;:::o;2451:98::-;2509:7;2536:5;2540:1;2536;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:247::-;1456:6;1509:2;1497:9;1488:7;1484:23;1480:32;1477:52;;;1525:1;1522;1515:12;1477:52;1564:9;1551:23;1583:31;1608:5;1583:31;:::i;1649:456::-;1726:6;1734;1742;1795:2;1783:9;1774:7;1770:23;1766:32;1763:52;;;1811:1;1808;1801:12;1763:52;1850:9;1837:23;1869:31;1894:5;1869:31;:::i;:::-;1919:5;-1:-1:-1;1976:2:1;1961:18;;1948:32;1989:33;1948:32;1989:33;:::i;:::-;1649:456;;2041:7;;-1:-1:-1;;;2095:2:1;2080:18;;;;2067:32;;1649:456::o;2318:180::-;2377:6;2430:2;2418:9;2409:7;2405:23;2401:32;2398:52;;;2446:1;2443;2436:12;2398:52;-1:-1:-1;2469:23:1;;2318:180;-1:-1:-1;2318:180:1:o;2692:118::-;2778:5;2771:13;2764:21;2757:5;2754:32;2744:60;;2800:1;2797;2790:12;2815:382;2880:6;2888;2941:2;2929:9;2920:7;2916:23;2912:32;2909:52;;;2957:1;2954;2947:12;2909:52;2996:9;2983:23;3015:31;3040:5;3015:31;:::i;:::-;3065:5;-1:-1:-1;3122:2:1;3107:18;;3094:32;3135:30;3094:32;3135:30;:::i;:::-;3184:7;3174:17;;;2815:382;;;;;:::o;3202:750::-;3294:6;3302;3310;3363:2;3351:9;3342:7;3338:23;3334:32;3331:52;;;3379:1;3376;3369:12;3331:52;3419:9;3406:23;3448:18;3489:2;3481:6;3478:14;3475:34;;;3505:1;3502;3495:12;3475:34;3543:6;3532:9;3528:22;3518:32;;3588:7;3581:4;3577:2;3573:13;3569:27;3559:55;;3610:1;3607;3600:12;3559:55;3650:2;3637:16;3676:2;3668:6;3665:14;3662:34;;;3692:1;3689;3682:12;3662:34;3747:7;3740:4;3730:6;3727:1;3723:14;3719:2;3715:23;3711:34;3708:47;3705:67;;;3768:1;3765;3758:12;3705:67;3799:4;3791:13;;;;-1:-1:-1;3823:6:1;-1:-1:-1;;3864:20:1;;3851:34;3894:28;3851:34;3894:28;:::i;:::-;3941:5;3931:15;;;3202:750;;;;;:::o;3957:241::-;4013:6;4066:2;4054:9;4045:7;4041:23;4037:32;4034:52;;;4082:1;4079;4072:12;4034:52;4121:9;4108:23;4140:28;4162:5;4140:28;:::i;4203:248::-;4271:6;4279;4332:2;4320:9;4311:7;4307:23;4303:32;4300:52;;;4348:1;4345;4338:12;4300:52;-1:-1:-1;;4371:23:1;;;4441:2;4426:18;;;4413:32;;-1:-1:-1;4203:248:1:o;4690:405::-;4765:6;4773;4781;4834:2;4822:9;4813:7;4809:23;4805:32;4802:52;;;4850:1;4847;4840:12;4802:52;4889:9;4876:23;4939:4;4932:5;4928:16;4921:5;4918:27;4908:55;;4959:1;4956;4949:12;4908:55;4982:5;5034:2;5019:18;;5006:32;;-1:-1:-1;5085:2:1;5070:18;;;5057:32;;4690:405;-1:-1:-1;;;4690:405:1:o;5100:388::-;5168:6;5176;5229:2;5217:9;5208:7;5204:23;5200:32;5197:52;;;5245:1;5242;5235:12;5197:52;5284:9;5271:23;5303:31;5328:5;5303:31;:::i;:::-;5353:5;-1:-1:-1;5410:2:1;5395:18;;5382:32;5423:33;5382:32;5423:33;:::i;5493:380::-;5572:1;5568:12;;;;5615;;;5636:61;;5690:4;5682:6;5678:17;5668:27;;5636:61;5743:2;5735:6;5732:14;5712:18;5709:38;5706:161;;5789:10;5784:3;5780:20;5777:1;5770:31;5824:4;5821:1;5814:15;5852:4;5849:1;5842:15;5706:161;;5493:380;;;:::o;5878:337::-;6080:2;6062:21;;;6119:2;6099:18;;;6092:30;-1:-1:-1;;;6153:2:1;6138:18;;6131:43;6206:2;6191:18;;5878:337::o;6578:127::-;6639:10;6634:3;6630:20;6627:1;6620:31;6670:4;6667:1;6660:15;6694:4;6691:1;6684:15;6710:168;6783:9;;;6814;;6831:15;;;6825:22;;6811:37;6801:71;;6852:18;;:::i;6883:217::-;6923:1;6949;6939:132;;6993:10;6988:3;6984:20;6981:1;6974:31;7028:4;7025:1;7018:15;7056:4;7053:1;7046:15;6939:132;-1:-1:-1;7085:9:1;;6883:217::o;7948:125::-;8013:9;;;8034:10;;;8031:36;;;8047:18;;:::i;8504:422::-;8593:1;8636:5;8593:1;8650:270;8671:7;8661:8;8658:21;8650:270;;;8730:4;8726:1;8722:6;8718:17;8712:4;8709:27;8706:53;;;8739:18;;:::i;:::-;8789:7;8779:8;8775:22;8772:55;;;8809:16;;;;8772:55;8888:22;;;;8848:15;;;;8650:270;;;8654:3;8504:422;;;;;:::o;8931:806::-;8980:5;9010:8;9000:80;;-1:-1:-1;9051:1:1;9065:5;;9000:80;9099:4;9089:76;;-1:-1:-1;9136:1:1;9150:5;;9089:76;9181:4;9199:1;9194:59;;;;9267:1;9262:130;;;;9174:218;;9194:59;9224:1;9215:10;;9238:5;;;9262:130;9299:3;9289:8;9286:17;9283:43;;;9306:18;;:::i;:::-;-1:-1:-1;;9362:1:1;9348:16;;9377:5;;9174:218;;9476:2;9466:8;9463:16;9457:3;9451:4;9448:13;9444:36;9438:2;9428:8;9425:16;9420:2;9414:4;9411:12;9407:35;9404:77;9401:159;;;-1:-1:-1;9513:19:1;;;9545:5;;9401:159;9592:34;9617:8;9611:4;9592:34;:::i;:::-;9662:6;9658:1;9654:6;9650:19;9641:7;9638:32;9635:58;;;9673:18;;:::i;:::-;9711:20;;8931:806;-1:-1:-1;;;8931:806:1:o;9742:140::-;9800:5;9829:47;9870:4;9860:8;9856:19;9850:4;9829:47;:::i;10722:127::-;10783:10;10778:3;10774:20;10771:1;10764:31;10814:4;10811:1;10804:15;10838:4;10835:1;10828:15;10854:135;10893:3;10914:17;;;10911:43;;10934:18;;:::i;:::-;-1:-1:-1;10981:1:1;10970:13;;10854:135::o;18050:245::-;18117:6;18170:2;18158:9;18149:7;18145:23;18141:32;18138:52;;;18186:1;18183;18176:12;18138:52;18218:9;18212:16;18237:28;18259:5;18237:28;:::i;19254:128::-;19321:9;;;19342:11;;;19339:37;;;19356:18;;:::i;20804:251::-;20874:6;20927:2;20915:9;20906:7;20902:23;20898:32;20895:52;;;20943:1;20940;20933:12;20895:52;20975:9;20969:16;20994:31;21019:5;20994:31;:::i;21060:980::-;21322:4;21370:3;21359:9;21355:19;21401:6;21390:9;21383:25;21427:2;21465:6;21460:2;21449:9;21445:18;21438:34;21508:3;21503:2;21492:9;21488:18;21481:31;21532:6;21567;21561:13;21598:6;21590;21583:22;21636:3;21625:9;21621:19;21614:26;;21675:2;21667:6;21663:15;21649:29;;21696:1;21706:195;21720:6;21717:1;21714:13;21706:195;;;21785:13;;-1:-1:-1;;;;;21781:39:1;21769:52;;21876:15;;;;21841:12;;;;21817:1;21735:9;21706:195;;;-1:-1:-1;;;;;;;21957:32:1;;;;21952:2;21937:18;;21930:60;-1:-1:-1;;;22021:3:1;22006:19;21999:35;21918:3;21060:980;-1:-1:-1;;;21060:980:1:o

Swarm Source

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