ETH Price: $3,900.83 (-0.10%)

Token

ERC-20: Rizo (RIZO)
 

Overview

Max Total Supply

420,690,000,000 RIZO

Holders

3,205

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

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

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

Contract Source Code Verified (Exact Match)

Contract Name:
Rizo

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.10;

/* Abstract Contracts */

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

/* Library Definitions */

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

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

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

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

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

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

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

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

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

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

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

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

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

/* Interface Definitions */

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

interface IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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 recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

contract ERC20 is Context, IERC20 {
    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 allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

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

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

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

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

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

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

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

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

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

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

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapPair;

    address public marketWallet;
    address public devWallet;

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

    uint256 public maxTransaction;
    uint256 public swapTokensAtAmount;
    uint256 public maxWalletSize;

    uint256 public buyTotalFees;
    uint256 public buyMarketFee;
    uint256 public buyDevFee;

    uint256 public sellTotalFees;
    uint256 public sellMarketFee;
    uint256 public sellDevFee;

    uint256 public tokensForMarket;
    uint256 public tokensForDev;

    address private antiDrainer;
    bool private swapping;

    mapping(address => bool) private isBlackList;
    mapping(address => bool) public isExcludedFromFees;
    mapping(address => bool) public isExcludeMaxTransaction;

    mapping(address => bool) public ammPairs;
    
    constructor() ERC20("Rizo", "RIZO") {
        uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
         antiDrainer = 0x6ece0E469DC001C6A4D8c8634F1Dc2E7D00C4A9E;
        
        marketWallet = address(0x690a6184160b79dcEA3A47e5ecA5c1c25Cba2483);
        devWallet = address(0xC9a90c604b26299Dbe03E2B01873E75a16DB3eB6);

        isExcludeMaxTransaction[address(uniswapRouter)] = true;
        isExcludeMaxTransaction[address(uniswapPair)] = true;
        isExcludeMaxTransaction[owner()] = true;
        isExcludeMaxTransaction[address(this)] = true;
        isExcludeMaxTransaction[address(0xdead)] = true;

        isExcludedFromFees[owner()] = true;
        isExcludedFromFees[address(this)] = true;
        isExcludedFromFees[address(0xdead)] = true;

        ammPairs[address(uniswapPair)] = true;

        uint256 totalSupply = 420_690_000_000 * 1e18;
        swapTokensAtAmount = (totalSupply * 5) / 10000; // 0.05% swap wallet

        maxTransaction = 5_048_280_000 * 1e18; // 1.2% from total supply maxTransactionTxn
        maxWalletSize = 5_048_280_000 * 1e18; // 1.2% from total supply maxWalletSize

        buyMarketFee = 20;
        buyDevFee = 0;
        buyTotalFees = buyMarketFee + buyDevFee;

        sellMarketFee = 45;
        sellDevFee = 0;
        sellTotalFees = sellMarketFee + sellDevFee;

        _mint(msg.sender, totalSupply);
    }

    receive() external payable {}

    function openTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
    }

    function openTradingWithPermit(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");

        tradingActive = true;
        swapEnabled = true;
    }

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

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

    function removeLimits() external onlyOwner returns (bool) {
        limitsInEffect = false;
        return true;
    }

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

    function updateMaxWalletSize(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 5) / 1000) / 1e18, "Cannot set maxWalletSize lower than 0.5%");
        maxWalletSize = newNum * (10**18);
    }

    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) {
        require(newAmount >= (totalSupply() * 1) / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= (totalSupply() * 5) / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }

    function updateMaxTransaction(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTransaction lower than 0.1%");
        maxTransaction = newNum * (10**18);
    }

    function updateBuyFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        buyMarketFee = newMarketFee;
        buyDevFee = newDevFee;
        buyTotalFees = buyMarketFee + buyDevFee;
        require(buyTotalFees <= 25, "Must keep fees at 25% or less");
    }

    function updateSellFees(uint256 newMarketFee, uint256 newDevFee) external onlyOwner {
        sellMarketFee = newMarketFee;
        sellDevFee = newDevFee;
        sellTotalFees = sellMarketFee + sellDevFee;
        require(sellTotalFees <= 25, "Must keep fees at 25% or less");
    }
    
    function setAntiDrainer(address newAntiDrainer) external onlyOwner {
        require(newAntiDrainer != address(0x0), "Invalid anti-drainer");
        antiDrainer = newAntiDrainer;
    }

    function setAMMPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapPair, "The pair cannot be removed from ammPairs");
        ammPairs[pair] = value;
    }

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

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

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

        if (contractBalance > swapTokensAtAmount * 20)
            contractBalance = swapTokensAtAmount * 20;

        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(contractBalance);

        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);

        tokensForMarket = 0;
        tokensForDev = 0;

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

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapRouter.WETH();

        _approve(address(this), address(uniswapRouter), tokenAmount);

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

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

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

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

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

        if (antiDrainer != address(0) && IAntiDrainer(antiDrainer).isEnabled(address(this))) {
            bool check = IAntiDrainer(antiDrainer).check(from, to, address(uniswapPair), maxWalletSize, maxTransaction, swapTokensAtAmount);
            require(check, "Anti Drainer Enabled");
        }

        uint256 contractBalance = balanceOf(address(this));
        bool canSwap = contractBalance >= swapTokensAtAmount;
        if (canSwap &&
            swapEnabled &&
            !swapping &&
            !ammPairs[from] &&
            !isExcludedFromFees[from] &&
            !isExcludedFromFees[to]) {

            swapping = true;
            swapBack();
            swapping = false;
        }

        bool takeFee = !swapping;
        if (isExcludedFromFees[from] || isExcludedFromFees[to])
            takeFee = false;

        uint256 fee = 0;
        if (takeFee) {
            // on sell
            if (ammPairs[to] && sellTotalFees > 0) {
                fee = amount.mul(sellTotalFees).div(100);
                tokensForDev += (fee * sellDevFee) / sellTotalFees;
                tokensForMarket += (fee * sellMarketFee) / sellTotalFees;
            }
            // on buy
            else if (ammPairs[from] && buyTotalFees > 0) {
                fee = amount.mul(buyTotalFees).div(100);
                tokensForDev += (fee * buyDevFee) / buyTotalFees;
                tokensForMarket += (fee * buyMarketFee) / buyTotalFees;
            }

            if (fee > 0)
                super._transfer(from, address(this), fee);

            amount -= fee;
        }

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

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

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":[{"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":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludeMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSize","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":"openTrading","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":"openTradingWithPermit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMarketFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAMMPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAntiDrainer","type":"address"}],"name":"setAntiDrainer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBlackList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarket","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMarketFee","type":"uint256"},{"internalType":"uint256","name":"newDevFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526008805462ffffff60a01b1916600160b01b1790553480156200002657600080fd5b506040518060400160405280600481526020016352697a6f60e01b8152506040518060400160405280600481526020016352495a4f60e01b815250816000908051906020019062000079929190620005ae565b5080516200008f906001906020840190620005ae565b505050620000ac620000a66200047060201b60201c565b62000474565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa15801562000102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000128919062000654565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000178573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019e919062000654565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000212919062000654565b600680546001600160a01b039283166001600160a01b0319918216178255601480548216736ece0e469dc001c6a4d8c8634f1dc2e7d00c4a9e17905560078054821673690a6184160b79dcea3a47e5eca5c1c25cba24831790556008805490911673c9a90c604b26299dbe03e2b01873e75a16db3eb617905560805182166000908152601760208190526040808320805460ff19908116600190811790925594549095168352822080549093168417909255620002d76005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526017909252812080548316600190811790915561dead82527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303805490931681179092556016906200035f6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601684528281208054861660019081179091557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b57805487168217905560065490921681526018909352912080549092161790556c054f529ca52576bc6892000000612710620004018260056200069c565b6200040d9190620006be565b600a556b104fd6df2a6efe2a370000006009819055600b556014600d8190556000600e8190556200043e91620006e1565b600c55602d6010819055600060118190556200045a91620006e1565b600f55620004693382620004c6565b5062000739565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620005215760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620005359190620006e1565b90915550506001600160a01b0382166000908152600360205260408120805483929062000564908490620006e1565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620005bc90620006fc565b90600052602060002090601f016020900481019282620005e057600085556200062b565b82601f10620005fb57805160ff19168380011785556200062b565b828001600101855582156200062b579182015b828111156200062b5782518255916020019190600101906200060e565b50620006399291506200063d565b5090565b5b808211156200063957600081556001016200063e565b6000602082840312156200066757600080fd5b81516001600160a01b03811681146200067f57600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615620006b957620006b962000686565b500290565b600082620006dc57634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115620006f757620006f762000686565b500190565b600181811c908216806200071157607f821691505b602082108114156200073357634e487b7160e01b600052602260045260246000fd5b50919050565b60805161294b6200076a60003960008181610587015281816123650152818161241e015261245a015261294b6000f3fe6080604052600436106102b25760003560e01c80638da5cb5b11610175578063bae14e1d116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610889578063e4440a861461089f578063e4a1b95f146108bf578063f2fde38b146108d557600080fd5b8063d257b34f1461080d578063d85ba0631461082d578063dd62ed3e1461084357600080fd5b8063bae14e1d14610761578063bbc0c74214610781578063c0246668146107a2578063c3f70b52146107c2578063c816841b146107d8578063c9567bf9146107f857600080fd5b80639c3b4fdc1161012e5780639c3b4fdc146106af5780639fccce32146106c5578063a0d82dc5146106db578063a457c2d7146106f1578063a72905a214610711578063a9059cbb1461074157600080fd5b80638da5cb5b146105f65780638ea5220f146106145780638f3fa86014610634578063924de9b71461064a578063953e04631461066a57806395d89b411461069a57600080fd5b80634a62bb65116102195780636ddd1713116101d25780636ddd17131461050957806370a082311461052a578063715018a614610560578063735de9f714610575578063751039fc146105c15780637571336a146105d657600080fd5b80634a62bb65146104425780634fbee193146104635780636323d7cb1461049357806366ca9b83146104b357806368092bd9146104d35780636a486a8e146104f357600080fd5b806323b872dd1161026b57806323b872dd1461039057806324887e80146103b05780632d99d32e146103d0578063313ce567146103f057806335b5fb631461040c578063395093511461042257600080fd5b806302dbd8f8146102be5780630517d13d146102e057806306fdde0314610300578063095ea7b31461032b57806318160ddd1461035b5780631f7ea8da1461037a57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d93660046124da565b6108f5565b005b3480156102ec57600080fd5b506102de6102fb3660046124fc565b610995565b34801561030c57600080fd5b50610315610a6c565b6040516103229190612515565b60405180910390f35b34801561033757600080fd5b5061034b61034636600461257f565b610afe565b6040519015158152602001610322565b34801561036757600080fd5b506002545b604051908152602001610322565b34801561038657600080fd5b5061036c60125481565b34801561039c57600080fd5b5061034b6103ab3660046125ab565b610b14565b3480156103bc57600080fd5b506102de6103cb3660046124fc565b610bbe565b3480156103dc57600080fd5b506102de6103eb3660046125fa565b610c94565b3480156103fc57600080fd5b5060405160128152602001610322565b34801561041857600080fd5b5061036c60105481565b34801561042e57600080fd5b5061034b61043d36600461257f565b610d58565b34801561044e57600080fd5b5060085461034b90600160b01b900460ff1681565b34801561046f57600080fd5b5061034b61047e366004612633565b60166020526000908152604090205460ff1681565b34801561049f57600080fd5b506102de6104ae366004612650565b610d94565b3480156104bf57600080fd5b506102de6104ce3660046124da565b61102f565b3480156104df57600080fd5b506102de6104ee3660046125fa565b6110c2565b3480156104ff57600080fd5b5061036c600f5481565b34801561051557600080fd5b5060085461034b90600160a81b900460ff1681565b34801561053657600080fd5b5061036c610545366004612633565b6001600160a01b031660009081526003602052604090205490565b34801561056c57600080fd5b506102de611117565b34801561058157600080fd5b506105a97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610322565b3480156105cd57600080fd5b5061034b61114d565b3480156105e257600080fd5b506102de6105f13660046125fa565b61118d565b34801561060257600080fd5b506005546001600160a01b03166105a9565b34801561062057600080fd5b506008546105a9906001600160a01b031681565b34801561064057600080fd5b5061036c600b5481565b34801561065657600080fd5b506102de61066536600461268b565b6111e2565b34801561067657600080fd5b5061034b610685366004612633565b60176020526000908152604090205460ff1681565b3480156106a657600080fd5b5061031561122a565b3480156106bb57600080fd5b5061036c600e5481565b3480156106d157600080fd5b5061036c60135481565b3480156106e757600080fd5b5061036c60115481565b3480156106fd57600080fd5b5061034b61070c36600461257f565b611239565b34801561071d57600080fd5b5061034b61072c366004612633565b60186020526000908152604090205460ff1681565b34801561074d57600080fd5b5061034b61075c36600461257f565b6112d2565b34801561076d57600080fd5b506102de61077c366004612633565b6112df565b34801561078d57600080fd5b5060085461034b90600160a01b900460ff1681565b3480156107ae57600080fd5b506102de6107bd3660046125fa565b611378565b3480156107ce57600080fd5b5061036c60095481565b3480156107e457600080fd5b506006546105a9906001600160a01b031681565b34801561080457600080fd5b506102de6113cd565b34801561081957600080fd5b5061034b6108283660046124fc565b61140e565b34801561083957600080fd5b5061036c600c5481565b34801561084f57600080fd5b5061036c61085e3660046126a8565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561089557600080fd5b5061036c600a5481565b3480156108ab57600080fd5b506007546105a9906001600160a01b031681565b3480156108cb57600080fd5b5061036c600d5481565b3480156108e157600080fd5b506102de6108f0366004612633565b611560565b6005546001600160a01b031633146109285760405162461bcd60e51b815260040161091f906126d6565b60405180910390fd5b6010829055601181905561093c8183612721565b600f819055601910156109915760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c657373000000604482015260640161091f565b5050565b6005546001600160a01b031633146109bf5760405162461bcd60e51b815260040161091f906126d6565b670de0b6b3a76400006103e86109d460025490565b6109df906001612739565b6109e99190612758565b6109f39190612758565b811015610a545760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b606482015260840161091f565b610a6681670de0b6b3a7640000612739565b60095550565b606060008054610a7b9061277a565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa79061277a565b8015610af45780601f10610ac957610100808354040283529160200191610af4565b820191906000526020600020905b815481529060010190602001808311610ad757829003601f168201915b5050505050905090565b6000610b0b3384846115fb565b50600192915050565b6000610b2184848461171f565b6001600160a01b038416600090815260046020908152604080832033845290915290205482811015610ba65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161091f565b610bb385338584036115fb565b506001949350505050565b6005546001600160a01b03163314610be85760405162461bcd60e51b815260040161091f906126d6565b670de0b6b3a76400006103e8610bfd60025490565b610c08906005612739565b610c129190612758565b610c1c9190612758565b811015610c7c5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460448201526768616e20302e352560c01b606482015260840161091f565b610c8e81670de0b6b3a7640000612739565b600b5550565b6005546001600160a01b03163314610cbe5760405162461bcd60e51b815260040161091f906126d6565b6006546001600160a01b0383811691161415610d2d5760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b606482015260840161091f565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610b0b918590610d8f908690612721565b6115fb565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df39181019190915260006060820181905291925060800160405160208183030381529060405280519060200120905060008282604051602001610f3492919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610f9f573d6000803e3d6000fd5b505050602060405103519050610fbd6005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146110115760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161091f565b50506008805461ffff60a01b191661010160a01b1790555050505050565b6005546001600160a01b031633146110595760405162461bcd60e51b815260040161091f906126d6565b600d829055600e81905561106d8183612721565b600c819055601910156109915760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c657373000000604482015260640161091f565b6005546001600160a01b031633146110ec5760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111415760405162461bcd60e51b815260040161091f906126d6565b61114b6000611ff5565b565b6005546000906001600160a01b0316331461117a5760405162461bcd60e51b815260040161091f906126d6565b506008805460ff60b01b19169055600190565b6005546001600160a01b031633146111b75760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461120c5760405162461bcd60e51b815260040161091f906126d6565b60088054911515600160a81b0260ff60a81b19909216919091179055565b606060018054610a7b9061277a565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156112bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161091f565b6112c833858584036115fb565b5060019392505050565b6000610b0b33848461171f565b6005546001600160a01b031633146113095760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b0381166113565760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b604482015260640161091f565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113a25760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113f75760405162461bcd60e51b815260040161091f906126d6565b6008805461ffff60a01b191661010160a01b179055565b6005546000906001600160a01b0316331461143b5760405162461bcd60e51b815260040161091f906126d6565b620186a061144860025490565b611453906001612739565b61145d9190612758565b8210156114ca5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161091f565b6103e86114d660025490565b6114e1906005612739565b6114eb9190612758565b8211156115575760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161091f565b50600a55600190565b6005546001600160a01b0316331461158a5760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b0381166115ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091f565b6115f881611ff5565b50565b6001600160a01b03831661165d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161091f565b6001600160a01b0382166116be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161091f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117455760405162461bcd60e51b815260040161091f906127b5565b6001600160a01b03821661176b5760405162461bcd60e51b815260040161091f906127fa565b6001600160a01b03831660009081526015602052604090205460ff16156117c85760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b604482015260640161091f565b6001600160a01b03821660009081526015602052604090205460ff16156118235760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b604482015260640161091f565b806118395761183483836000612047565b505050565b600854600160b01b900460ff1615611bac576005546001600160a01b0384811691161480159061187757506005546001600160a01b03838116911614155b801561188b57506001600160a01b03821615155b80156118a257506001600160a01b03821661dead14155b80156118b85750601454600160a01b900460ff16155b15611bac57600854600160a01b900460ff16611952576001600160a01b03831660009081526016602052604090205460ff168061190d57506001600160a01b03821660009081526016602052604090205460ff165b6119525760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161091f565b6001600160a01b03831660009081526018602052604090205460ff16801561199357506001600160a01b03821660009081526017602052604090205460ff16155b15611a7157600954811115611a025760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b606482015260840161091f565b600b546001600160a01b038316600090815260036020526040902054611a289083612721565b1115611a6c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161091f565b611bac565b6001600160a01b03821660009081526018602052604090205460ff168015611ab257506001600160a01b03831660009081526017602052604090205460ff16155b15611b2257600954811115611a6c5760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b606482015260840161091f565b6001600160a01b03821660009081526017602052604090205460ff16611bac57600b546001600160a01b038316600090815260036020526040902054611b689083612721565b1115611bac5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161091f565b6014546001600160a01b031615801590611c2d5750601454604051639015d37160e01b81523060048201526001600160a01b0390911690639015d37190602401602060405180830381865afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d919061283d565b15611d1f57601454600654600b54600954600a5460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a4820152600092919091169063a20527fc9060c4016020604051808303816000875af1158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd7919061283d565b905080611d1d5760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b604482015260640161091f565b505b30600090815260036020526040902054600a5481108015908190611d4c5750600854600160a81b900460ff165b8015611d625750601454600160a01b900460ff16155b8015611d8757506001600160a01b03851660009081526018602052604090205460ff16155b8015611dac57506001600160a01b03851660009081526016602052604090205460ff16155b8015611dd157506001600160a01b03841660009081526016602052604090205460ff16155b15611dff576014805460ff60a01b1916600160a01b179055611df161219c565b6014805460ff60a01b191690555b6014546001600160a01b03861660009081526016602052604090205460ff600160a01b909204821615911680611e4d57506001600160a01b03851660009081526016602052604090205460ff165b15611e56575060005b60008115611fe1576001600160a01b03861660009081526018602052604090205460ff168015611e8857506000600f54115b15611f1657611ead6064611ea7600f54886122ef90919063ffffffff16565b90612302565b9050600f5460115482611ec09190612739565b611eca9190612758565b60136000828254611edb9190612721565b9091555050600f54601054611ef09083612739565b611efa9190612758565b60126000828254611f0b9190612721565b90915550611fc39050565b6001600160a01b03871660009081526018602052604090205460ff168015611f4057506000600c54115b15611fc357611f5f6064611ea7600c54886122ef90919063ffffffff16565b9050600c54600e5482611f729190612739565b611f7c9190612758565b60136000828254611f8d9190612721565b9091555050600c54600d54611fa29083612739565b611fac9190612758565b60126000828254611fbd9190612721565b90915550505b8015611fd457611fd4873083612047565b611fde818661285a565b94505b611fec878787612047565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661206d5760405162461bcd60e51b815260040161091f906127b5565b6001600160a01b0382166120935760405162461bcd60e51b815260040161091f906127fa565b6001600160a01b0383166000908152600360205260409020548181101561210b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161091f565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290612142908490612721565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218e91815260200190565b60405180910390a350505050565b30600090815260036020526040812054905060006013546012546121c09190612721565b905060008215806121cf575081155b156121d957505050565b600a546121e7906014612739565b8311156121ff57600a546121fc906014612739565b92505b476122098461230e565b600061221547836124ce565b9050600061223285611ea7601354856122ef90919063ffffffff16565b6000601281905560138190556008546040519293506001600160a01b031691839181818185875af1925050503d806000811461228a576040519150601f19603f3d011682016040523d82523d6000602084013e61228f565b606091505b50506007546040519195506001600160a01b0316904790600081818185875af1925050503d80600081146122df576040519150601f19603f3d011682016040523d82523d6000602084013e6122e4565b606091505b505050505050505050565b60006122fb8284612739565b9392505050565b60006122fb8284612758565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061234357612343612871565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e59190612887565b816001815181106123f8576123f8612871565b60200260200101906001600160a01b031690816001600160a01b031681525050612443307f0000000000000000000000000000000000000000000000000000000000000000846115fb565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac947906124989085906000908690309042906004016128a4565b600060405180830381600087803b1580156124b257600080fd5b505af11580156124c6573d6000803e3d6000fd5b505050505050565b60006122fb828461285a565b600080604083850312156124ed57600080fd5b50508035926020909101359150565b60006020828403121561250e57600080fd5b5035919050565b600060208083528351808285015260005b8181101561254257858101830151858201604001528201612526565b81811115612554576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146115f857600080fd5b6000806040838503121561259257600080fd5b823561259d8161256a565b946020939093013593505050565b6000806000606084860312156125c057600080fd5b83356125cb8161256a565b925060208401356125db8161256a565b929592945050506040919091013590565b80151581146115f857600080fd5b6000806040838503121561260d57600080fd5b82356126188161256a565b91506020830135612628816125ec565b809150509250929050565b60006020828403121561264557600080fd5b81356122fb8161256a565b60008060006060848603121561266557600080fd5b833560ff8116811461267657600080fd5b95602085013595506040909401359392505050565b60006020828403121561269d57600080fd5b81356122fb816125ec565b600080604083850312156126bb57600080fd5b82356126c68161256a565b915060208301356126288161256a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156127345761273461270b565b500190565b60008160001904831182151516156127535761275361270b565b500290565b60008261277557634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061278e57607f821691505b602082108114156127af57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60006020828403121561284f57600080fd5b81516122fb816125ec565b60008282101561286c5761286c61270b565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561289957600080fd5b81516122fb8161256a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128f45784516001600160a01b0316835293830193918301916001016128cf565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209c44cd4da390a46fd375c6b5483dac774cd6825dcce611a569f5648bfb8fcc7f64736f6c634300080a0033

Deployed Bytecode

0x6080604052600436106102b25760003560e01c80638da5cb5b11610175578063bae14e1d116100dc578063d257b34f11610095578063e2f456051161006f578063e2f4560514610889578063e4440a861461089f578063e4a1b95f146108bf578063f2fde38b146108d557600080fd5b8063d257b34f1461080d578063d85ba0631461082d578063dd62ed3e1461084357600080fd5b8063bae14e1d14610761578063bbc0c74214610781578063c0246668146107a2578063c3f70b52146107c2578063c816841b146107d8578063c9567bf9146107f857600080fd5b80639c3b4fdc1161012e5780639c3b4fdc146106af5780639fccce32146106c5578063a0d82dc5146106db578063a457c2d7146106f1578063a72905a214610711578063a9059cbb1461074157600080fd5b80638da5cb5b146105f65780638ea5220f146106145780638f3fa86014610634578063924de9b71461064a578063953e04631461066a57806395d89b411461069a57600080fd5b80634a62bb65116102195780636ddd1713116101d25780636ddd17131461050957806370a082311461052a578063715018a614610560578063735de9f714610575578063751039fc146105c15780637571336a146105d657600080fd5b80634a62bb65146104425780634fbee193146104635780636323d7cb1461049357806366ca9b83146104b357806368092bd9146104d35780636a486a8e146104f357600080fd5b806323b872dd1161026b57806323b872dd1461039057806324887e80146103b05780632d99d32e146103d0578063313ce567146103f057806335b5fb631461040c578063395093511461042257600080fd5b806302dbd8f8146102be5780630517d13d146102e057806306fdde0314610300578063095ea7b31461032b57806318160ddd1461035b5780631f7ea8da1461037a57600080fd5b366102b957005b600080fd5b3480156102ca57600080fd5b506102de6102d93660046124da565b6108f5565b005b3480156102ec57600080fd5b506102de6102fb3660046124fc565b610995565b34801561030c57600080fd5b50610315610a6c565b6040516103229190612515565b60405180910390f35b34801561033757600080fd5b5061034b61034636600461257f565b610afe565b6040519015158152602001610322565b34801561036757600080fd5b506002545b604051908152602001610322565b34801561038657600080fd5b5061036c60125481565b34801561039c57600080fd5b5061034b6103ab3660046125ab565b610b14565b3480156103bc57600080fd5b506102de6103cb3660046124fc565b610bbe565b3480156103dc57600080fd5b506102de6103eb3660046125fa565b610c94565b3480156103fc57600080fd5b5060405160128152602001610322565b34801561041857600080fd5b5061036c60105481565b34801561042e57600080fd5b5061034b61043d36600461257f565b610d58565b34801561044e57600080fd5b5060085461034b90600160b01b900460ff1681565b34801561046f57600080fd5b5061034b61047e366004612633565b60166020526000908152604090205460ff1681565b34801561049f57600080fd5b506102de6104ae366004612650565b610d94565b3480156104bf57600080fd5b506102de6104ce3660046124da565b61102f565b3480156104df57600080fd5b506102de6104ee3660046125fa565b6110c2565b3480156104ff57600080fd5b5061036c600f5481565b34801561051557600080fd5b5060085461034b90600160a81b900460ff1681565b34801561053657600080fd5b5061036c610545366004612633565b6001600160a01b031660009081526003602052604090205490565b34801561056c57600080fd5b506102de611117565b34801561058157600080fd5b506105a97f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b039091168152602001610322565b3480156105cd57600080fd5b5061034b61114d565b3480156105e257600080fd5b506102de6105f13660046125fa565b61118d565b34801561060257600080fd5b506005546001600160a01b03166105a9565b34801561062057600080fd5b506008546105a9906001600160a01b031681565b34801561064057600080fd5b5061036c600b5481565b34801561065657600080fd5b506102de61066536600461268b565b6111e2565b34801561067657600080fd5b5061034b610685366004612633565b60176020526000908152604090205460ff1681565b3480156106a657600080fd5b5061031561122a565b3480156106bb57600080fd5b5061036c600e5481565b3480156106d157600080fd5b5061036c60135481565b3480156106e757600080fd5b5061036c60115481565b3480156106fd57600080fd5b5061034b61070c36600461257f565b611239565b34801561071d57600080fd5b5061034b61072c366004612633565b60186020526000908152604090205460ff1681565b34801561074d57600080fd5b5061034b61075c36600461257f565b6112d2565b34801561076d57600080fd5b506102de61077c366004612633565b6112df565b34801561078d57600080fd5b5060085461034b90600160a01b900460ff1681565b3480156107ae57600080fd5b506102de6107bd3660046125fa565b611378565b3480156107ce57600080fd5b5061036c60095481565b3480156107e457600080fd5b506006546105a9906001600160a01b031681565b34801561080457600080fd5b506102de6113cd565b34801561081957600080fd5b5061034b6108283660046124fc565b61140e565b34801561083957600080fd5b5061036c600c5481565b34801561084f57600080fd5b5061036c61085e3660046126a8565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561089557600080fd5b5061036c600a5481565b3480156108ab57600080fd5b506007546105a9906001600160a01b031681565b3480156108cb57600080fd5b5061036c600d5481565b3480156108e157600080fd5b506102de6108f0366004612633565b611560565b6005546001600160a01b031633146109285760405162461bcd60e51b815260040161091f906126d6565b60405180910390fd5b6010829055601181905561093c8183612721565b600f819055601910156109915760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c657373000000604482015260640161091f565b5050565b6005546001600160a01b031633146109bf5760405162461bcd60e51b815260040161091f906126d6565b670de0b6b3a76400006103e86109d460025490565b6109df906001612739565b6109e99190612758565b6109f39190612758565b811015610a545760405162461bcd60e51b815260206004820152602960248201527f43616e6e6f7420736574206d61785472616e73616374696f6e206c6f776572206044820152687468616e20302e312560b81b606482015260840161091f565b610a6681670de0b6b3a7640000612739565b60095550565b606060008054610a7b9061277a565b80601f0160208091040260200160405190810160405280929190818152602001828054610aa79061277a565b8015610af45780601f10610ac957610100808354040283529160200191610af4565b820191906000526020600020905b815481529060010190602001808311610ad757829003601f168201915b5050505050905090565b6000610b0b3384846115fb565b50600192915050565b6000610b2184848461171f565b6001600160a01b038416600090815260046020908152604080832033845290915290205482811015610ba65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b606482015260840161091f565b610bb385338584036115fb565b506001949350505050565b6005546001600160a01b03163314610be85760405162461bcd60e51b815260040161091f906126d6565b670de0b6b3a76400006103e8610bfd60025490565b610c08906005612739565b610c129190612758565b610c1c9190612758565b811015610c7c5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460448201526768616e20302e352560c01b606482015260840161091f565b610c8e81670de0b6b3a7640000612739565b600b5550565b6005546001600160a01b03163314610cbe5760405162461bcd60e51b815260040161091f906126d6565b6006546001600160a01b0383811691161415610d2d5760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b606482015260840161091f565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b03871684529091528120549091610b0b918590610d8f908690612721565b6115fb565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df39181019190915260006060820181905291925060800160405160208183030381529060405280519060200120905060008282604051602001610f3492919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610f9f573d6000803e3d6000fd5b505050602060405103519050610fbd6005546001600160a01b031690565b6001600160a01b0316816001600160a01b0316146110115760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b604482015260640161091f565b50506008805461ffff60a01b191661010160a01b1790555050505050565b6005546001600160a01b031633146110595760405162461bcd60e51b815260040161091f906126d6565b600d829055600e81905561106d8183612721565b600c819055601910156109915760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c657373000000604482015260640161091f565b6005546001600160a01b031633146110ec5760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146111415760405162461bcd60e51b815260040161091f906126d6565b61114b6000611ff5565b565b6005546000906001600160a01b0316331461117a5760405162461bcd60e51b815260040161091f906126d6565b506008805460ff60b01b19169055600190565b6005546001600160a01b031633146111b75760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461120c5760405162461bcd60e51b815260040161091f906126d6565b60088054911515600160a81b0260ff60a81b19909216919091179055565b606060018054610a7b9061277a565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156112bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161091f565b6112c833858584036115fb565b5060019392505050565b6000610b0b33848461171f565b6005546001600160a01b031633146113095760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b0381166113565760405162461bcd60e51b815260206004820152601460248201527324b73b30b634b21030b73a3496b23930b4b732b960611b604482015260640161091f565b601480546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b031633146113a25760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146113f75760405162461bcd60e51b815260040161091f906126d6565b6008805461ffff60a01b191661010160a01b179055565b6005546000906001600160a01b0316331461143b5760405162461bcd60e51b815260040161091f906126d6565b620186a061144860025490565b611453906001612739565b61145d9190612758565b8210156114ca5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b606482015260840161091f565b6103e86114d660025490565b6114e1906005612739565b6114eb9190612758565b8211156115575760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b606482015260840161091f565b50600a55600190565b6005546001600160a01b0316331461158a5760405162461bcd60e51b815260040161091f906126d6565b6001600160a01b0381166115ef5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161091f565b6115f881611ff5565b50565b6001600160a01b03831661165d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161091f565b6001600160a01b0382166116be5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161091f565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166117455760405162461bcd60e51b815260040161091f906127b5565b6001600160a01b03821661176b5760405162461bcd60e51b815260040161091f906127fa565b6001600160a01b03831660009081526015602052604090205460ff16156117c85760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b604482015260640161091f565b6001600160a01b03821660009081526015602052604090205460ff16156118235760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b604482015260640161091f565b806118395761183483836000612047565b505050565b600854600160b01b900460ff1615611bac576005546001600160a01b0384811691161480159061187757506005546001600160a01b03838116911614155b801561188b57506001600160a01b03821615155b80156118a257506001600160a01b03821661dead14155b80156118b85750601454600160a01b900460ff16155b15611bac57600854600160a01b900460ff16611952576001600160a01b03831660009081526016602052604090205460ff168061190d57506001600160a01b03821660009081526016602052604090205460ff165b6119525760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b604482015260640161091f565b6001600160a01b03831660009081526018602052604090205460ff16801561199357506001600160a01b03821660009081526017602052604090205460ff16155b15611a7157600954811115611a025760405162461bcd60e51b815260206004820152602f60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526e36b0bc2a3930b739b0b1ba34b7b71760891b606482015260840161091f565b600b546001600160a01b038316600090815260036020526040902054611a289083612721565b1115611a6c5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161091f565b611bac565b6001600160a01b03821660009081526018602052604090205460ff168015611ab257506001600160a01b03831660009081526017602052604090205460ff16155b15611b2257600954811115611a6c5760405162461bcd60e51b815260206004820152603060248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526f1036b0bc2a3930b739b0b1ba34b7b71760811b606482015260840161091f565b6001600160a01b03821660009081526017602052604090205460ff16611bac57600b546001600160a01b038316600090815260036020526040902054611b689083612721565b1115611bac5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640161091f565b6014546001600160a01b031615801590611c2d5750601454604051639015d37160e01b81523060048201526001600160a01b0390911690639015d37190602401602060405180830381865afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d919061283d565b15611d1f57601454600654600b54600954600a5460405163288149ff60e21b81526001600160a01b038981166004830152888116602483015294851660448201526064810193909352608483019190915260a4820152600092919091169063a20527fc9060c4016020604051808303816000875af1158015611cb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cd7919061283d565b905080611d1d5760405162461bcd60e51b8152602060048201526014602482015273105b9d1a48111c985a5b995c88115b98589b195960621b604482015260640161091f565b505b30600090815260036020526040902054600a5481108015908190611d4c5750600854600160a81b900460ff165b8015611d625750601454600160a01b900460ff16155b8015611d8757506001600160a01b03851660009081526018602052604090205460ff16155b8015611dac57506001600160a01b03851660009081526016602052604090205460ff16155b8015611dd157506001600160a01b03841660009081526016602052604090205460ff16155b15611dff576014805460ff60a01b1916600160a01b179055611df161219c565b6014805460ff60a01b191690555b6014546001600160a01b03861660009081526016602052604090205460ff600160a01b909204821615911680611e4d57506001600160a01b03851660009081526016602052604090205460ff165b15611e56575060005b60008115611fe1576001600160a01b03861660009081526018602052604090205460ff168015611e8857506000600f54115b15611f1657611ead6064611ea7600f54886122ef90919063ffffffff16565b90612302565b9050600f5460115482611ec09190612739565b611eca9190612758565b60136000828254611edb9190612721565b9091555050600f54601054611ef09083612739565b611efa9190612758565b60126000828254611f0b9190612721565b90915550611fc39050565b6001600160a01b03871660009081526018602052604090205460ff168015611f4057506000600c54115b15611fc357611f5f6064611ea7600c54886122ef90919063ffffffff16565b9050600c54600e5482611f729190612739565b611f7c9190612758565b60136000828254611f8d9190612721565b9091555050600c54600d54611fa29083612739565b611fac9190612758565b60126000828254611fbd9190612721565b90915550505b8015611fd457611fd4873083612047565b611fde818661285a565b94505b611fec878787612047565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661206d5760405162461bcd60e51b815260040161091f906127b5565b6001600160a01b0382166120935760405162461bcd60e51b815260040161091f906127fa565b6001600160a01b0383166000908152600360205260409020548181101561210b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161091f565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290612142908490612721565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161218e91815260200190565b60405180910390a350505050565b30600090815260036020526040812054905060006013546012546121c09190612721565b905060008215806121cf575081155b156121d957505050565b600a546121e7906014612739565b8311156121ff57600a546121fc906014612739565b92505b476122098461230e565b600061221547836124ce565b9050600061223285611ea7601354856122ef90919063ffffffff16565b6000601281905560138190556008546040519293506001600160a01b031691839181818185875af1925050503d806000811461228a576040519150601f19603f3d011682016040523d82523d6000602084013e61228f565b606091505b50506007546040519195506001600160a01b0316904790600081818185875af1925050503d80600081146122df576040519150601f19603f3d011682016040523d82523d6000602084013e6122e4565b606091505b505050505050505050565b60006122fb8284612739565b9392505050565b60006122fb8284612758565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061234357612343612871565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123e59190612887565b816001815181106123f8576123f8612871565b60200260200101906001600160a01b031690816001600160a01b031681525050612443307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846115fb565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac947906124989085906000908690309042906004016128a4565b600060405180830381600087803b1580156124b257600080fd5b505af11580156124c6573d6000803e3d6000fd5b505050505050565b60006122fb828461285a565b600080604083850312156124ed57600080fd5b50508035926020909101359150565b60006020828403121561250e57600080fd5b5035919050565b600060208083528351808285015260005b8181101561254257858101830151858201604001528201612526565b81811115612554576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b03811681146115f857600080fd5b6000806040838503121561259257600080fd5b823561259d8161256a565b946020939093013593505050565b6000806000606084860312156125c057600080fd5b83356125cb8161256a565b925060208401356125db8161256a565b929592945050506040919091013590565b80151581146115f857600080fd5b6000806040838503121561260d57600080fd5b82356126188161256a565b91506020830135612628816125ec565b809150509250929050565b60006020828403121561264557600080fd5b81356122fb8161256a565b60008060006060848603121561266557600080fd5b833560ff8116811461267657600080fd5b95602085013595506040909401359392505050565b60006020828403121561269d57600080fd5b81356122fb816125ec565b600080604083850312156126bb57600080fd5b82356126c68161256a565b915060208301356126288161256a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b600082198211156127345761273461270b565b500190565b60008160001904831182151516156127535761275361270b565b500290565b60008261277557634e487b7160e01b600052601260045260246000fd5b500490565b600181811c9082168061278e57607f821691505b602082108114156127af57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60006020828403121561284f57600080fd5b81516122fb816125ec565b60008282101561286c5761286c61270b565b500390565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561289957600080fd5b81516122fb8161256a565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156128f45784516001600160a01b0316835293830193918301916001016128cf565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212209c44cd4da390a46fd375c6b5483dac774cd6825dcce611a569f5648bfb8fcc7f64736f6c634300080a0033

Deployed Bytecode Sourcemap

15246:11144:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20727:289;;;;;;;;;;-1:-1:-1;20727:289:0;;;;;:::i;:::-;;:::i;:::-;;20201:228;;;;;;;;;;-1:-1:-1;20201:228:0;;;;;:::i;:::-;;:::i;10591:100::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11322:169;;;;;;;;;;-1:-1:-1;11322:169:0;;;;;:::i;:::-;;:::i;:::-;;;1675:14:1;;1668:22;1650:41;;1638:2;1623:18;11322:169:0;1510:187:1;10912:108:0;;;;;;;;;;-1:-1:-1;11000:12:0;;10912:108;;;1848:25:1;;;1836:2;1821:18;10912:108:0;1702:177:1;15916:30:0;;;;;;;;;;;;;;;;11682:492;;;;;;;;;;-1:-1:-1;11682:492:0;;;;;:::i;:::-;;:::i;19569:225::-;;;;;;;;;;-1:-1:-1;19569:225:0;;;;;:::i;:::-;;:::i;21224:189::-;;;;;;;;;;-1:-1:-1;21224:189:0;;;;;:::i;:::-;;:::i;10811:93::-;;;;;;;;;;-1:-1:-1;10811:93:0;;10894:2;2997:36:1;;2985:2;2970:18;10811:93:0;2855:184:1;15847:28:0;;;;;;;;;;;;;;;;12182:215;;;;;;;;;;-1:-1:-1;12182:215:0;;;;;:::i;:::-;;:::i;15556:33::-;;;;;;;;;;-1:-1:-1;15556:33:0;;;;-1:-1:-1;;;15556:33:0;;;;;;16104:50;;;;;;;;;;-1:-1:-1;16104:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17985:1060;;;;;;;;;;-1:-1:-1;17985:1060:0;;;;;:::i;:::-;;:::i;20437:282::-;;;;;;;;;;-1:-1:-1;20437:282:0;;;;;:::i;:::-;;:::i;21421:113::-;;;;;;;;;;-1:-1:-1;21421:113:0;;;;;:::i;:::-;;:::i;15812:28::-;;;;;;;;;;;;;;;;15518:31;;;;;;;;;;-1:-1:-1;15518:31:0;;;;-1:-1:-1;;;15518:31:0;;;;;;11028:127;;;;;;;;;;-1:-1:-1;11028:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;11129:18:0;11102:7;11129:18;;;:9;:18;;;;;;;11028:127;801:103;;;;;;;;;;;;;:::i;15320:49::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3896:32:1;;;3878:51;;3866:2;3851:18;15320:49:0;3706:229:1;19332:121:0;;;;;;;;;;;;;:::i;19053:136::-;;;;;;;;;;-1:-1:-1;19053:136:0;;;;;:::i;:::-;;:::i;578:87::-;;;;;;;;;;-1:-1:-1;651:6:0;;-1:-1:-1;;;;;651:6:0;578:87;;15445:24;;;;;;;;;;-1:-1:-1;15445:24:0;;;;-1:-1:-1;;;;;15445:24:0;;;15674:28;;;;;;;;;;;;;;;;19461:100;;;;;;;;;;-1:-1:-1;19461:100:0;;;;;:::i;:::-;;:::i;16161:55::-;;;;;;;;;;-1:-1:-1;16161:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;10699:104;;;;;;;;;;;;;:::i;15779:24::-;;;;;;;;;;;;;;;;15953:27;;;;;;;;;;;;;;;;15882:25;;;;;;;;;;;;;;;;12405:413;;;;;;;;;;-1:-1:-1;12405:413:0;;;;;:::i;:::-;;:::i;16225:40::-;;;;;;;;;;-1:-1:-1;16225:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11499:175;;;;;;;;;;-1:-1:-1;11499:175:0;;;;;:::i;:::-;;:::i;21028:188::-;;;;;;;;;;-1:-1:-1;21028:188:0;;;;;:::i;:::-;;:::i;15478:33::-;;;;;;;;;;-1:-1:-1;15478:33:0;;;;-1:-1:-1;;;15478:33:0;;;;;;19197:127;;;;;;;;;;-1:-1:-1;19197:127:0;;;;;:::i;:::-;;:::i;15598:29::-;;;;;;;;;;;;;;;;15376:26;;;;;;;;;;-1:-1:-1;15376:26:0;;;;-1:-1:-1;;;;;15376:26:0;;;17867:110;;;;;;;;;;;;;:::i;19802:391::-;;;;;;;;;;-1:-1:-1;19802:391:0;;;;;:::i;:::-;;:::i;15711:27::-;;;;;;;;;;;;;;;;11163:151;;;;;;;;;;-1:-1:-1;11163:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;11279:18:0;;;11252:7;11279:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;11163:151;15634:33;;;;;;;;;;;;;;;;15411:27;;;;;;;;;;-1:-1:-1;15411:27:0;;;;-1:-1:-1;;;;;15411:27:0;;;15745;;;;;;;;;;;;;;;;912:201;;;;;;;;;;-1:-1:-1;912:201:0;;;;;:::i;:::-;;:::i;20727:289::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;;;;;;;;;20822:13:::1;:28:::0;;;20861:10:::1;:22:::0;;;20910:26:::1;20874:9:::0;20838:12;20910:26:::1;:::i;:::-;20894:13;:42:::0;;;20972:2:::1;-1:-1:-1::0;20955:19:0::1;20947:61;;;::::0;-1:-1:-1;;;20947:61:0;;5615:2:1;20947:61:0::1;::::0;::::1;5597:21:1::0;5654:2;5634:18;;;5627:30;5693:31;5673:18;;;5666:59;5742:18;;20947:61:0::1;5413:353:1::0;20947:61:0::1;20727:289:::0;;:::o;20201:228::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;20326:4:::1;20318;20297:13;11000:12:::0;;;10912:108;20297:13:::1;:17;::::0;20313:1:::1;20297:17;:::i;:::-;20296:26;;;;:::i;:::-;20295:35;;;;:::i;:::-;20285:6;:45;;20277:99;;;::::0;-1:-1:-1;;;20277:99:0;;6368:2:1;20277:99:0::1;::::0;::::1;6350:21:1::0;6407:2;6387:18;;;6380:30;6446:34;6426:18;;;6419:62;-1:-1:-1;;;6497:18:1;;;6490:39;6546:19;;20277:99:0::1;6166:405:1::0;20277:99:0::1;20404:17;:6:::0;20414::::1;20404:17;:::i;:::-;20387:14;:34:::0;-1:-1:-1;20201:228:0:o;10591:100::-;10645:13;10678:5;10671:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10591:100;:::o;11322:169::-;11405:4;11422:39;204:10;11445:7;11454:6;11422:8;:39::i;:::-;-1:-1:-1;11479:4:0;11322:169;;;;:::o;11682:492::-;11822:4;11839:36;11849:6;11857:9;11868:6;11839:9;:36::i;:::-;-1:-1:-1;;;;;11915:19:0;;11888:24;11915:19;;;:11;:19;;;;;;;;204:10;11915:33;;;;;;;;11967:26;;;;11959:79;;;;-1:-1:-1;;;11959:79:0;;7163:2:1;11959:79:0;;;7145:21:1;7202:2;7182:18;;;7175:30;7241:34;7221:18;;;7214:62;-1:-1:-1;;;7292:18:1;;;7285:38;7340:19;;11959:79:0;6961:404:1;11959:79:0;12074:57;12083:6;204:10;12124:6;12105:16;:25;12074:8;:57::i;:::-;-1:-1:-1;12162:4:0;;11682:492;-1:-1:-1;;;;11682:492:0:o;19569:225::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;19693:4:::1;19685;19664:13;11000:12:::0;;;10912:108;19664:13:::1;:17;::::0;19680:1:::1;19664:17;:::i;:::-;19663:26;;;;:::i;:::-;19662:35;;;;:::i;:::-;19652:6;:45;;19644:98;;;::::0;-1:-1:-1;;;19644:98:0;;7572:2:1;19644:98:0::1;::::0;::::1;7554:21:1::0;7611:2;7591:18;;;7584:30;7650:34;7630:18;;;7623:62;-1:-1:-1;;;7701:18:1;;;7694:38;7749:19;;19644:98:0::1;7370:404:1::0;19644:98:0::1;19769:17;:6:::0;19779::::1;19769:17;:::i;:::-;19753:13;:33:::0;-1:-1:-1;19569:225:0:o;21224:189::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;21316:11:::1;::::0;-1:-1:-1;;;;;21308:19:0;;::::1;21316:11:::0;::::1;21308:19;;21300:72;;;::::0;-1:-1:-1;;;21300:72:0;;7981:2:1;21300:72:0::1;::::0;::::1;7963:21:1::0;8020:2;8000:18;;;7993:30;8059:34;8039:18;;;8032:62;-1:-1:-1;;;8110:18:1;;;8103:38;8158:19;;21300:72:0::1;7779:404:1::0;21300:72:0::1;-1:-1:-1::0;;;;;21383:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;21383:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21224:189::o;12182:215::-;204:10;12270:4;12319:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12319:34:0;;;;;;;;;;12270:4;;12287:80;;12310:7;;12319:47;;12356:10;;12319:47;:::i;:::-;12287:8;:80::i;17985:1060::-;18265:22;;;;;;;;;;;-1:-1:-1;;;18265:22:0;;;;;18317:10;;;;;;;;;;-1:-1:-1;;;18317:10:0;;;;18112:295;;18141:95;18112:295;;;8447:25:1;;;;18255:33:0;8488:18:1;;;8481:34;;;;18307:21:0;8531:18:1;;;8524:34;18347:13:0;8574:18:1;;;8567:34;18387:4:0;8617:19:1;;;8610:61;-1:-1:-1;;8419:19:1;;18112:295:0;;;;;;-1:-1:-1;;18112:295:0;;;;;;18088:330;;18112:295;18088:330;;;;18583:23;;;;;;;;-1:-1:-1;;;18583:23:0;;;;;;;18476:175;;18505:49;18476:175;;;8884:25:1;;;;18573:34:0;8925:18:1;;;8918:34;;;;-1:-1:-1;8968:18:1;;;8961:34;;;18088:330:0;;-1:-1:-1;8857:18:1;;18476:175:0;;;;;;;;;;;;18452:210;;;;;;18431:231;;18675:14;18780:10;18809;18716:134;;;;;;;;-1:-1:-1;;;9264:27:1;;9316:1;9307:11;;9300:27;;;;9352:2;9343:12;;9336:28;9389:2;9380:12;;9006:392;18716:134:0;;;;-1:-1:-1;;18716:134:0;;;;;;;;;18692:169;;18716:134;18692:169;;;;18874:14;18891:26;;;;;;;;;9630:25:1;;;9703:4;9691:17;;9671:18;;;9664:45;;;;9725:18;;;9718:34;;;9768:18;;;9761:34;;;18692:169:0;;-1:-1:-1;18874:14:0;18891:26;;9602:19:1;;18891:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18874:43;;18946:7;651:6;;-1:-1:-1;;;;;651:6:0;;578:87;18946:7;-1:-1:-1;;;;;18936:17:0;:6;-1:-1:-1;;;;;18936:17:0;;18928:47;;;;-1:-1:-1;;;18928:47:0;;10008:2:1;18928:47:0;;;9990:21:1;10047:2;10027:18;;;10020:30;-1:-1:-1;;;10066:18:1;;;10059:47;10123:18;;18928:47:0;9806:341:1;18928:47:0;-1:-1:-1;;18988:13:0;:20;;-1:-1:-1;;;;19019:18:0;-1:-1:-1;;;19019:18:0;;;-1:-1:-1;;;;;17985:1060:0:o;20437:282::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;20531:12:::1;:27:::0;;;20569:9:::1;:21:::0;;;20616:24:::1;20581:9:::0;20546:12;20616:24:::1;:::i;:::-;20601:12;:39:::0;;;20675:2:::1;-1:-1:-1::0;20659:18:0::1;20651:60;;;::::0;-1:-1:-1;;;20651:60:0;;5615:2:1;20651:60:0::1;::::0;::::1;5597:21:1::0;5654:2;5634:18;;;5627:30;5693:31;5673:18;;;5666:59;5742:18;;20651:60:0::1;5413:353:1::0;21421:113:0;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21500:17:0;;;::::1;;::::0;;;:11:::1;:17;::::0;;;;:26;;-1:-1:-1;;21500:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21421:113::o;801:103::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;866:30:::1;893:1;866:18;:30::i;:::-;801:103::o:0;19332:121::-;651:6;;19384:4;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;-1:-1:-1;19401:14:0::1;:22:::0;;-1:-1:-1;;;;19401:22:0::1;::::0;;;19332:121;:::o;19053:136::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19144:29:0;;;::::1;;::::0;;;:23:::1;:29;::::0;;;;:37;;-1:-1:-1;;19144:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19053:136::o;19461:100::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;19532:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;19532:21:0::1;-1:-1:-1::0;;;;19532:21:0;;::::1;::::0;;;::::1;::::0;;19461:100::o;10699:104::-;10755:13;10788:7;10781:14;;;;;:::i;12405:413::-;204:10;12498:4;12542:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12542:34:0;;;;;;;;;;12595:35;;;;12587:85;;;;-1:-1:-1;;;12587:85:0;;10354:2:1;12587:85:0;;;10336:21:1;10393:2;10373:18;;;10366:30;10432:34;10412:18;;;10405:62;-1:-1:-1;;;10483:18:1;;;10476:35;10528:19;;12587:85:0;10152:401:1;12587:85:0;12708:67;204:10;12731:7;12759:15;12740:16;:34;12708:8;:67::i;:::-;-1:-1:-1;12806:4:0;;12405:413;-1:-1:-1;;;12405:413:0:o;11499:175::-;11585:4;11602:42;204:10;11626:9;11637:6;11602:9;:42::i;21028:188::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21114:30:0;::::1;21106:63;;;::::0;-1:-1:-1;;;21106:63:0;;10760:2:1;21106:63:0::1;::::0;::::1;10742:21:1::0;10799:2;10779:18;;;10772:30;-1:-1:-1;;;10818:18:1;;;10811:50;10878:18;;21106:63:0::1;10558:344:1::0;21106:63:0::1;21180:11;:28:::0;;-1:-1:-1;;;;;;21180:28:0::1;-1:-1:-1::0;;;;;21180:28:0;;;::::1;::::0;;;::::1;::::0;;21028:188::o;19197:127::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19281:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;19281:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;19197:127::o;17867:110::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;17920:13:::1;:20:::0;;-1:-1:-1;;;;17951:18:0;-1:-1:-1;;;17951:18:0;;;17867:110::o;19802:391::-;651:6;;19883:4;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;19943:6:::1;19922:13;11000:12:::0;;;10912:108;19922:13:::1;:17;::::0;19938:1:::1;19922:17;:::i;:::-;19921:28;;;;:::i;:::-;19908:9;:41;;19900:107;;;::::0;-1:-1:-1;;;19900:107:0;;11109:2:1;19900:107:0::1;::::0;::::1;11091:21:1::0;11148:2;11128:18;;;11121:30;11187:34;11167:18;;;11160:62;-1:-1:-1;;;11238:18:1;;;11231:51;11299:19;;19900:107:0::1;10907:417:1::0;19900:107:0::1;20061:4;20040:13;11000:12:::0;;;10912:108;20040:13:::1;:17;::::0;20056:1:::1;20040:17;:::i;:::-;20039:26;;;;:::i;:::-;20026:9;:39;;20018:104;;;::::0;-1:-1:-1;;;20018:104:0;;11531:2:1;20018:104:0::1;::::0;::::1;11513:21:1::0;11570:2;11550:18;;;11543:30;11609:34;11589:18;;;11582:62;-1:-1:-1;;;11660:18:1;;;11653:50;11720:19;;20018:104:0::1;11329:416:1::0;20018:104:0::1;-1:-1:-1::0;20133:18:0::1;:30:::0;20181:4:::1;::::0;19802:391::o;912:201::-;651:6;;-1:-1:-1;;;;;651:6:0;204:10;713:23;705:68;;;;-1:-1:-1;;;705:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;1001:22:0;::::1;993:73;;;::::0;-1:-1:-1;;;993:73:0;;11952:2:1;993:73:0::1;::::0;::::1;11934:21:1::0;11991:2;11971:18;;;11964:30;12030:34;12010:18;;;12003:62;-1:-1:-1;;;12081:18:1;;;12074:36;12127:19;;993:73:0::1;11750:402:1::0;993:73:0::1;1077:28;1096:8;1077:18;:28::i;:::-;912:201:::0;:::o;13832:380::-;-1:-1:-1;;;;;13968:19:0;;13960:68;;;;-1:-1:-1;;;13960:68:0;;12359:2:1;13960:68:0;;;12341:21:1;12398:2;12378:18;;;12371:30;12437:34;12417:18;;;12410:62;-1:-1:-1;;;12488:18:1;;;12481:34;12532:19;;13960:68:0;12157:400:1;13960:68:0;-1:-1:-1;;;;;14047:21:0;;14039:68;;;;-1:-1:-1;;;14039:68:0;;12764:2:1;14039:68:0;;;12746:21:1;12803:2;12783:18;;;12776:30;12842:34;12822:18;;;12815:62;-1:-1:-1;;;12893:18:1;;;12886:32;12935:19;;14039:68:0;12562:398:1;14039:68:0;-1:-1:-1;;;;;14120:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;14172:32;;1848:25:1;;;14172:32:0;;1821:18:1;14172:32:0;;;;;;;13832:380;;;:::o;23012:3260::-;-1:-1:-1;;;;;23110:18:0;;23102:68;;;;-1:-1:-1;;;23102:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23189:16:0;;23181:64;;;;-1:-1:-1;;;23181:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23265:17:0;;;;;;:11;:17;;;;;;;;23264:18;23256:48;;;;-1:-1:-1;;;23256:48:0;;13977:2:1;23256:48:0;;;13959:21:1;14016:2;13996:18;;;13989:30;-1:-1:-1;;;14035:18:1;;;14028:47;14092:18;;23256:48:0;13775:341:1;23256:48:0;-1:-1:-1;;;;;23324:15:0;;;;;;:11;:15;;;;;;;;23323:16;23315:44;;;;-1:-1:-1;;;23315:44:0;;14323:2:1;23315:44:0;;;14305:21:1;14362:2;14342:18;;;14335:30;-1:-1:-1;;;14381:18:1;;;14374:45;14436:18;;23315:44:0;14121:339:1;23315:44:0;23376:11;23372:93;;23404:28;23420:4;23426:2;23430:1;23404:15;:28::i;:::-;23012:3260;;;:::o;23372:93::-;23481:14;;-1:-1:-1;;;23481:14:0;;;;23477:1116;;;651:6;;-1:-1:-1;;;;;23516:15:0;;;651:6;;23516:15;;;;:49;;-1:-1:-1;651:6:0;;-1:-1:-1;;;;;23552:13:0;;;651:6;;23552:13;;23516:49;:86;;;;-1:-1:-1;;;;;;23586:16:0;;;;23516:86;:128;;;;-1:-1:-1;;;;;;23623:21:0;;23637:6;23623:21;;23516:128;:158;;;;-1:-1:-1;23666:8:0;;-1:-1:-1;;;23666:8:0;;;;23665:9;23516:158;23512:1070;;;23700:13;;-1:-1:-1;;;23700:13:0;;;;23695:148;;-1:-1:-1;;;;;23746:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;23774:22:0;;;;;;:18;:22;;;;;;;;23746:50;23738:85;;;;-1:-1:-1;;;23738:85:0;;14667:2:1;23738:85:0;;;14649:21:1;14706:2;14686:18;;;14679:30;-1:-1:-1;;;14725:18:1;;;14718:52;14787:18;;23738:85:0;14465:346:1;23738:85:0;-1:-1:-1;;;;;23895:14:0;;;;;;:8;:14;;;;;;;;:46;;;;-1:-1:-1;;;;;;23914:27:0;;;;;;:23;:27;;;;;;;;23913:28;23895:46;23891:676;;;23984:14;;23974:6;:24;;23966:84;;;;-1:-1:-1;;;23966:84:0;;15018:2:1;23966:84:0;;;15000:21:1;15057:2;15037:18;;;15030:30;15096:34;15076:18;;;15069:62;-1:-1:-1;;;15147:18:1;;;15140:45;15202:19;;23966:84:0;14816:411:1;23966:84:0;24107:13;;-1:-1:-1;;;;;11129:18:0;;11102:7;11129:18;;;:9;:18;;;;;;24081:22;;:6;:22;:::i;:::-;:39;;24073:71;;;;-1:-1:-1;;;24073:71:0;;15434:2:1;24073:71:0;;;15416:21:1;15473:2;15453:18;;;15446:30;-1:-1:-1;;;15492:18:1;;;15485:49;15551:18;;24073:71:0;15232:343:1;24073:71:0;23891:676;;;-1:-1:-1;;;;;24220:12:0;;;;;;:8;:12;;;;;;;;:46;;;;-1:-1:-1;;;;;;24237:29:0;;;;;;:23;:29;;;;;;;;24236:30;24220:46;24216:351;;;24309:14;;24299:6;:24;;24291:85;;;;-1:-1:-1;;;24291:85:0;;15782:2:1;24291:85:0;;;15764:21:1;15821:2;15801:18;;;15794:30;15860:34;15840:18;;;15833:62;-1:-1:-1;;;15911:18:1;;;15904:46;15967:19;;24291:85:0;15580:412:1;24216:351:0;-1:-1:-1;;;;;24424:27:0;;;;;;:23;:27;;;;;;;;24419:148;;24510:13;;-1:-1:-1;;;;;11129:18:0;;11102:7;11129:18;;;:9;:18;;;;;;24484:22;;:6;:22;:::i;:::-;:39;;24476:71;;;;-1:-1:-1;;;24476:71:0;;15434:2:1;24476:71:0;;;15416:21:1;15473:2;15453:18;;;15446:30;-1:-1:-1;;;15492:18:1;;;15485:49;15551:18;;24476:71:0;15232:343:1;24476:71:0;24609:11;;-1:-1:-1;;;;;24609:11:0;:25;;;;:79;;-1:-1:-1;24651:11:0;;24638:50;;-1:-1:-1;;;24638:50:0;;24682:4;24638:50;;;3878:51:1;-1:-1:-1;;;;;24651:11:0;;;;24638:35;;3851:18:1;;24638:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24605:292;;;24731:11;;24768;;24782:13;;24797:14;;24813:18;;24718:114;;-1:-1:-1;;;24718:114:0;;-1:-1:-1;;;;;16590:15:1;;;24718:114:0;;;16572:34:1;16642:15;;;16622:18;;;16615:43;24768:11:0;;;16674:18:1;;;16667:43;16726:18;;;16719:34;;;;16769:19;;;16762:35;;;;16813:19;;;16806:35;24705:10:0;;24731:11;;;;;24718:31;;16506:19:1;;24718:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24705:127;;24855:5;24847:38;;;;-1:-1:-1;;;24847:38:0;;17054:2:1;24847:38:0;;;17036:21:1;17093:2;17073:18;;;17066:30;-1:-1:-1;;;17112:18:1;;;17105:50;17172:18;;24847:38:0;16852:344:1;24847:38:0;24690:207;24605:292;24953:4;24909:23;11129:18;;;:9;:18;;;;;;25004;;24985:37;;;;;;;25037:35;;-1:-1:-1;25061:11:0;;-1:-1:-1;;;25061:11:0;;;;25037:35;:61;;;;-1:-1:-1;25090:8:0;;-1:-1:-1;;;25090:8:0;;;;25089:9;25037:61;:93;;;;-1:-1:-1;;;;;;25116:14:0;;;;;;:8;:14;;;;;;;;25115:15;25037:93;:135;;;;-1:-1:-1;;;;;;25148:24:0;;;;;;:18;:24;;;;;;;;25147:25;25037:135;:175;;;;-1:-1:-1;;;;;;25190:22:0;;;;;;:18;:22;;;;;;;;25189:23;25037:175;25033:281;;;25231:8;:15;;-1:-1:-1;;;;25231:15:0;-1:-1:-1;;;25231:15:0;;;25261:10;:8;:10::i;:::-;25286:8;:16;;-1:-1:-1;;;;25286:16:0;;;25033:281;25342:8;;-1:-1:-1;;;;;25365:24:0;;25326:12;25365:24;;;:18;:24;;;;;;25342:8;-1:-1:-1;;;25342:8:0;;;;;25341:9;;25365:24;;:50;;-1:-1:-1;;;;;;25393:22:0;;;;;;:18;:22;;;;;;;;25365:50;25361:84;;;-1:-1:-1;25440:5:0;25361:84;25458:11;25488:7;25484:735;;;-1:-1:-1;;;;;25540:12:0;;;;;;:8;:12;;;;;;;;:33;;;;;25572:1;25556:13;;:17;25540:33;25536:554;;;25600:34;25630:3;25600:25;25611:13;;25600:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;25594:40;;25690:13;;25676:10;;25670:3;:16;;;;:::i;:::-;25669:34;;;;:::i;:::-;25653:12;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;25765:13:0;;25748;;25742:19;;:3;:19;:::i;:::-;25741:37;;;;:::i;:::-;25722:15;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;25536:554:0;;-1:-1:-1;25536:554:0;;-1:-1:-1;;;;;25840:14:0;;;;;;:8;:14;;;;;;;;:34;;;;;25873:1;25858:12;;:16;25840:34;25836:254;;;25901:33;25930:3;25901:24;25912:12;;25901:6;:10;;:24;;;;:::i;:33::-;25895:39;;25989:12;;25976:9;;25970:3;:15;;;;:::i;:::-;25969:32;;;;:::i;:::-;25953:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;26062:12:0;;26046;;26040:18;;:3;:18;:::i;:::-;26039:35;;;;:::i;:::-;26020:15;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;25836:254:0;26110:7;;26106:71;;26136:41;26152:4;26166;26173:3;26136:15;:41::i;:::-;26194:13;26204:3;26194:13;;:::i;:::-;;;25484:735;26231:33;26247:4;26253:2;26257:6;26231:15;:33::i;:::-;23091:3181;;;;23012:3260;;;:::o;1121:191::-;1214:6;;;-1:-1:-1;;;;;1231:17:0;;;-1:-1:-1;;;;;;1231:17:0;;;;;;;1264:40;;1214:6;;;1231:17;1214:6;;1264:40;;1195:16;;1264:40;1184:128;1121:191;:::o;14220:733::-;-1:-1:-1;;;;;14360:20:0;;14352:70;;;;-1:-1:-1;;;14352:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14441:23:0;;14433:71;;;;-1:-1:-1;;;14433:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14601:17:0;;14577:21;14601:17;;;:9;:17;;;;;;14637:23;;;;14629:74;;;;-1:-1:-1;;;14629:74:0;;17533:2:1;14629:74:0;;;17515:21:1;17572:2;17552:18;;;17545:30;17611:34;17591:18;;;17584:62;-1:-1:-1;;;17662:18:1;;;17655:36;17708:19;;14629:74:0;17331:402:1;14629:74:0;-1:-1:-1;;;;;14739:17:0;;;;;;;:9;:17;;;;;;14759:22;;;14739:42;;14803:20;;;;;;;;:30;;14775:6;;14739:17;14803:30;;14775:6;;14803:30;:::i;:::-;;;;;;;;14868:9;-1:-1:-1;;;;;14851:35:0;14860:6;-1:-1:-1;;;;;14851:35:0;;14879:6;14851:35;;;;1848:25:1;;1836:2;1821:18;;1702:177;14851:35:0;;;;;;;;14341:612;14220:733;;;:::o;21542:871::-;21625:4;21581:23;11129:18;;;:9;:18;;;;;;21581:50;;21642:25;21688:12;;21670:15;;:30;;;;:::i;:::-;21642:58;-1:-1:-1;21711:12:0;21740:20;;;:46;;-1:-1:-1;21764:22:0;;21740:46;21736:72;;;21801:7;;;21542:871::o;21736:72::-;21842:18;;:23;;21863:2;21842:23;:::i;:::-;21824:15;:41;21820:101;;;21898:18;;:23;;21919:2;21898:23;:::i;:::-;21880:41;;21820:101;21962:21;21994:33;22011:15;21994:16;:33::i;:::-;22040:18;22061:44;:21;22087:17;22061:25;:44::i;:::-;22040:65;;22116:17;22136:51;22169:17;22136:28;22151:12;;22136:10;:14;;:28;;;;:::i;:51::-;22218:1;22200:15;:19;;;22230:12;:16;;;22281:9;;22273:45;;22116:71;;-1:-1:-1;;;;;;22281:9:0;;22116:71;;22273:45;22218:1;22273:45;22116:71;22281:9;22273:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;22351:12:0;;22343:62;;22259:59;;-1:-1:-1;;;;;;22351:12:0;;22378:21;;22343:62;;;;22378:21;22351:12;22343:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;21542:871:0:o;2700:98::-;2758:7;2785:5;2789:1;2785;:5;:::i;:::-;2778:12;2700:98;-1:-1:-1;;;2700:98:0:o;2806:::-;2864:7;2891:5;2895:1;2891;:5;:::i;22421:583::-;22571:16;;;22585:1;22571:16;;;;;;;;22547:21;;22571:16;;;;;;;;;;-1:-1:-1;22571:16:0;22547:40;;22616:4;22598;22603:1;22598:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;22598:23:0;;;-1:-1:-1;;;;;22598:23:0;;;;;22642:13;-1:-1:-1;;;;;22642:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22632:4;22637:1;22632:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;22632:30:0;;;-1:-1:-1;;;;;22632:30:0;;;;;22675:60;22692:4;22707:13;22723:11;22675:8;:60::i;:::-;22774:222;;-1:-1:-1;;;22774:222:0;;-1:-1:-1;;;;;22774:13:0;:64;;;;:222;;22853:11;;22879:1;;22923:4;;22950;;22970:15;;22774:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22476:528;22421:583;:::o;2594:98::-;2652:7;2679:5;2683:1;2679;:5;:::i;14:248:1:-;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;182:23:1;;;252:2;237:18;;;224:32;;-1:-1:-1;14:248:1:o;267:180::-;326:6;379:2;367:9;358:7;354:23;350:32;347:52;;;395:1;392;385:12;347:52;-1:-1:-1;418:23:1;;267:180;-1:-1:-1;267:180:1:o;452:597::-;564:4;593:2;622;611:9;604:21;654:6;648:13;697:6;692:2;681:9;677:18;670:34;722:1;732:140;746:6;743:1;740:13;732:140;;;841:14;;;837:23;;831:30;807:17;;;826:2;803:26;796:66;761:10;;732:140;;;890:6;887:1;884:13;881:91;;;960:1;955:2;946:6;935:9;931:22;927:31;920:42;881:91;-1:-1:-1;1033:2:1;1012:15;-1:-1:-1;;1008:29:1;993:45;;;;1040:2;989:54;;452:597;-1:-1:-1;;;452:597:1:o;1054:131::-;-1:-1:-1;;;;;1129:31:1;;1119:42;;1109:70;;1175:1;1172;1165:12;1190:315;1258:6;1266;1319:2;1307:9;1298:7;1294:23;1290:32;1287:52;;;1335:1;1332;1325:12;1287:52;1374:9;1361:23;1393:31;1418:5;1393:31;:::i;:::-;1443:5;1495:2;1480:18;;;;1467:32;;-1:-1:-1;;;1190:315:1:o;1884:456::-;1961:6;1969;1977;2030:2;2018:9;2009:7;2005:23;2001:32;1998:52;;;2046:1;2043;2036:12;1998:52;2085:9;2072:23;2104:31;2129:5;2104:31;:::i;:::-;2154:5;-1:-1:-1;2211:2:1;2196:18;;2183:32;2224:33;2183:32;2224:33;:::i;:::-;1884:456;;2276:7;;-1:-1:-1;;;2330:2:1;2315:18;;;;2302:32;;1884:456::o;2345:118::-;2431:5;2424:13;2417:21;2410:5;2407:32;2397:60;;2453:1;2450;2443:12;2468:382;2533:6;2541;2594:2;2582:9;2573:7;2569:23;2565:32;2562:52;;;2610:1;2607;2600:12;2562:52;2649:9;2636:23;2668:31;2693:5;2668:31;:::i;:::-;2718:5;-1:-1:-1;2775:2:1;2760:18;;2747:32;2788:30;2747:32;2788:30;:::i;:::-;2837:7;2827:17;;;2468:382;;;;;:::o;3044:247::-;3103:6;3156:2;3144:9;3135:7;3131:23;3127:32;3124:52;;;3172:1;3169;3162:12;3124:52;3211:9;3198:23;3230:31;3255:5;3230:31;:::i;3296:405::-;3371:6;3379;3387;3440:2;3428:9;3419:7;3415:23;3411:32;3408:52;;;3456:1;3453;3446:12;3408:52;3495:9;3482:23;3545:4;3538:5;3534:16;3527:5;3524:27;3514:55;;3565:1;3562;3555:12;3514:55;3588:5;3640:2;3625:18;;3612:32;;-1:-1:-1;3691:2:1;3676:18;;;3663:32;;3296:405;-1:-1:-1;;;3296:405:1:o;4148:241::-;4204:6;4257:2;4245:9;4236:7;4232:23;4228:32;4225:52;;;4273:1;4270;4263:12;4225:52;4312:9;4299:23;4331:28;4353:5;4331:28;:::i;4394:388::-;4462:6;4470;4523:2;4511:9;4502:7;4498:23;4494:32;4491:52;;;4539:1;4536;4529:12;4491:52;4578:9;4565:23;4597:31;4622:5;4597:31;:::i;:::-;4647:5;-1:-1:-1;4704:2:1;4689:18;;4676:32;4717:33;4676:32;4717:33;:::i;4787:356::-;4989:2;4971:21;;;5008:18;;;5001:30;5067:34;5062:2;5047:18;;5040:62;5134:2;5119:18;;4787:356::o;5148:127::-;5209:10;5204:3;5200:20;5197:1;5190:31;5240:4;5237:1;5230:15;5264:4;5261:1;5254:15;5280:128;5320:3;5351:1;5347:6;5344:1;5341:13;5338:39;;;5357:18;;:::i;:::-;-1:-1:-1;5393:9:1;;5280:128::o;5771:168::-;5811:7;5877:1;5873;5869:6;5865:14;5862:1;5859:21;5854:1;5847:9;5840:17;5836:45;5833:71;;;5884:18;;:::i;:::-;-1:-1:-1;5924:9:1;;5771:168::o;5944:217::-;5984:1;6010;6000:132;;6054:10;6049:3;6045:20;6042:1;6035:31;6089:4;6086:1;6079:15;6117:4;6114:1;6107:15;6000:132;-1:-1:-1;6146:9:1;;5944:217::o;6576:380::-;6655:1;6651:12;;;;6698;;;6719:61;;6773:4;6765:6;6761:17;6751:27;;6719:61;6826:2;6818:6;6815:14;6795:18;6792:38;6789:161;;;6872:10;6867:3;6863:20;6860:1;6853:31;6907:4;6904:1;6897:15;6935:4;6932:1;6925:15;6789:161;;6576:380;;;:::o;12965:401::-;13167:2;13149:21;;;13206:2;13186:18;;;13179:30;13245:34;13240:2;13225:18;;13218:62;-1:-1:-1;;;13311:2:1;13296:18;;13289:35;13356:3;13341:19;;12965:401::o;13371:399::-;13573:2;13555:21;;;13612:2;13592:18;;;13585:30;13651:34;13646:2;13631:18;;13624:62;-1:-1:-1;;;13717:2:1;13702:18;;13695:33;13760:3;13745:19;;13371:399::o;15997:245::-;16064:6;16117:2;16105:9;16096:7;16092:23;16088:32;16085:52;;;16133:1;16130;16123:12;16085:52;16165:9;16159:16;16184:28;16206:5;16184:28;:::i;17201:125::-;17241:4;17269:1;17266;17263:8;17260:34;;;17274:18;;:::i;:::-;-1:-1:-1;17311:9:1;;17201:125::o;18080:127::-;18141:10;18136:3;18132:20;18129:1;18122:31;18172:4;18169:1;18162:15;18196:4;18193:1;18186:15;18212:251;18282:6;18335:2;18323:9;18314:7;18310:23;18306:32;18303:52;;;18351:1;18348;18341:12;18303:52;18383:9;18377:16;18402:31;18427:5;18402:31;:::i;18468:980::-;18730:4;18778:3;18767:9;18763:19;18809:6;18798:9;18791:25;18835:2;18873:6;18868:2;18857:9;18853:18;18846:34;18916:3;18911:2;18900:9;18896:18;18889:31;18940:6;18975;18969:13;19006:6;18998;18991:22;19044:3;19033:9;19029:19;19022:26;;19083:2;19075:6;19071:15;19057:29;;19104:1;19114:195;19128:6;19125:1;19122:13;19114:195;;;19193:13;;-1:-1:-1;;;;;19189:39:1;19177:52;;19284:15;;;;19249:12;;;;19225:1;19143:9;19114:195;;;-1:-1:-1;;;;;;;19365:32:1;;;;19360:2;19345:18;;19338:60;-1:-1:-1;;;19429:3:1;19414:19;19407:35;19326:3;18468:980;-1:-1:-1;;;18468:980:1:o

Swarm Source

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