ETH Price: $3,335.56 (-3.81%)
Gas: 6.5 Gwei

Token

Dobo the neural bear (DOBO)
 

Overview

Max Total Supply

10,000,000 DOBO

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
170,000 DOBO

Value
$0.00
0xb0521f39826aD3ceAE124c02cBed997cffc31d87
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:
Dobotheneuralbear

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT


pragma solidity ^0.8.10;


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

    IUniswapV2Router02 public immutable uniswapRouter;
    address public uniswapPair;

    address public mkWallet;
    address public dvWallet;

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

    uint256 public maxTxnSize;
    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;

    bool private swapping;

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

    mapping(address => bool) public ammPairs;
    
    constructor() ERC20("Dobo the neural bear", "DOBO") {
        uniswapRouter = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), uniswapRouter.WETH());
        
        
        mkWallet = address(0x58DB7d267D27b7D50eee180Efd1fe22888EDCa2c);
        dvWallet = address(0x58DB7d267D27b7D50eee180Efd1fe22888EDCa2c);

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

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

        ammPairs[address(uniswapPair)] = true;

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

        maxTxnSize = 170_000 * 1e18; // 1.7 from total supply maxTxnSizeTxn
        maxWalletSize = 170_000 * 1e18; // 1.7 from total supply maxWalletSize

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

        sellMarketFee = 0;
        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 excludeFrommaxTxnSize(address addr, bool value) external onlyOwner {
        isExcludemaxTxnSize[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 updatemaxTxnSize(uint256 newNum) external onlyOwner {
        require(newNum >= ((totalSupply() * 1) / 1000) / 1e18, "Cannot set maxTxnSize lower than 0.1%");
        maxTxnSize = 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 <= 99, "Must keep fees at 25% or less");
    }

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

    function setBL(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(dvWallet).call{value: ethForDev}("");
        (success, ) = address(mkWallet).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] && !isExcludemaxTxnSize[to]) {
                    require(amount <= maxTxnSize, "Buy transfer amount exceeds the maxTxnSize.");
                    require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded");
                }
                //when sell
                else if (ammPairs[to] && !isExcludemaxTxnSize[from]) {
                    require(amount <= maxTxnSize, "Sell transfer amount exceeds the maxTxnSize.");
                }
                else if (!isExcludemaxTxnSize[to]) {
                    require(amount + balanceOf(to) <= maxWalletSize, "Max wallet exceeded");
                }
            }
        }

        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":"dvWallet","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":"excludeFrommaxTxnSize","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludemaxTxnSize","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":"maxTxnSize","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":"mkWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setBL","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":"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"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updatemaxTxnSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526008805462ffffff60a01b1916600160b01b1790553480156200002657600080fd5b506040518060400160405280601481526020017f446f626f20746865206e657572616c206265617200000000000000000000000081525060405180604001604052806004815260200163444f424f60e01b81525081600090816200008b91906200062c565b5060016200009a82826200062c565b505050620000b7620000b16200044560201b60201c565b62000449565b737a250d5630b4cf539739df2c5dacb4c659f2488d60808190526040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001339190620006f8565b6001600160a01b031663c9c65396306080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000183573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001a99190620006f8565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620001f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021d9190620006f8565b600680546001600160a01b039283166001600160a01b03199182161782556007805482167358db7d267d27b7d50eee180efd1fe22888edca2c9081179091556008805490921617905560805182166000908152601760208190526040808320805460ff19908116600190811790925594549095168352822080549093168417909255620002b26005546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526017909252812080548316600190811790915561dead82527f43fedf50e12e5c047fbe3576d03ab50250348e9a6030f531ab6d4ce10f5b0303805490931681179092556016906200033a6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055308152601684528281208054861660019081179091557f290d80ce586bfe95e1ebf348e3ba109df813891ad867417e64d38c5a50473b57805487168217905560065490921681526018909352912080549092161790556a084595161401484a000000612710620003da82600562000740565b620003e6919062000760565b600a556923ffb7ed6565d64000006009819055600b556000600d819055600e81905562000414908062000783565b600c556000601081905560118190556200042f908062000783565b600f556200043e33826200049b565b5062000799565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216620004f65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b80600260008282546200050a919062000783565b90915550506001600160a01b038216600090815260036020526040812080548392906200053990849062000783565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620005b357607f821691505b602082108103620005d457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200058357600081815260208120601f850160051c81016020861015620006035750805b601f850160051c820191505b8181101562000624578281556001016200060f565b505050505050565b81516001600160401b0381111562000648576200064862000588565b62000660816200065984546200059e565b84620005da565b602080601f8311600181146200069857600084156200067f5750858301515b600019600386901b1c1916600185901b17855562000624565b600085815260208120601f198616915b82811015620006c957888601518255948401946001909101908401620006a8565b5085821015620006e85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200070b57600080fd5b81516001600160a01b03811681146200072357600080fd5b9392505050565b634e487b7160e01b600052601160045260246000fd5b80820281158282048414176200075a576200075a6200072a565b92915050565b6000826200077e57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200075a576200075a6200072a565b6080516126b4620007ca60003960008181610562015281816120fd015281816121b601526121f201526126b46000f3fe6080604052600436106102975760003560e01c80638da5cb5b1161015a578063bbc0c742116100c1578063d85ba0631161007a578063d85ba063146107f2578063dd62ed3e14610808578063e2f456051461084e578063e4a1b95f14610864578063e7a996ab1461087a578063f2fde38b1461089a57600080fd5b8063bbc0c7421461073c578063c02174ca1461075d578063c02466681461077d578063c816841b1461079d578063c9567bf9146107bd578063d257b34f146107d257600080fd5b80639c3b4fdc116101135780639c3b4fdc1461068a5780639fccce32146106a0578063a0d82dc5146106b6578063a457c2d7146106cc578063a72905a2146106ec578063a9059cbb1461071c57600080fd5b80638da5cb5b146105d15780638f3fa860146105ef578063917d3a6514610605578063924de9b71461063557806395d89b4114610655578063979919aa1461066a57600080fd5b806345434032116101fe5780636ddd1713116101b75780636ddd1713146104e457806370a0823114610505578063715018a61461053b578063735de9f714610550578063751039fc1461059c5780637b1d787d146105b157600080fd5b8063454340321461041d5780634a62bb651461043d5780634fbee1931461045e5780636323d7cb1461048e57806366ca9b83146104ae5780636a486a8e146104ce57600080fd5b806324887e801161025057806324887e80146103755780632b5f295a146103955780632d99d32e146103ab578063313ce567146103cb57806335b5fb63146103e757806339509351146103fd57600080fd5b806302dbd8f8146102a357806306fdde03146102c5578063095ea7b3146102f057806318160ddd146103205780631f7ea8da1461033f57806323b872dd1461035557600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102c36102be366004612272565b6108ba565b005b3480156102d157600080fd5b506102da61095a565b6040516102e79190612294565b60405180910390f35b3480156102fc57600080fd5b5061031061030b3660046122f7565b6109ec565b60405190151581526020016102e7565b34801561032c57600080fd5b506002545b6040519081526020016102e7565b34801561034b57600080fd5b5061033160125481565b34801561036157600080fd5b50610310610370366004612323565b610a03565b34801561038157600080fd5b506102c3610390366004612364565b610aad565b3480156103a157600080fd5b5061033160095481565b3480156103b757600080fd5b506102c36103c636600461238d565b610b83565b3480156103d757600080fd5b50604051601281526020016102e7565b3480156103f357600080fd5b5061033160105481565b34801561040957600080fd5b506103106104183660046122f7565b610c47565b34801561042957600080fd5b506102c361043836600461238d565b610c83565b34801561044957600080fd5b5060085461031090600160b01b900460ff1681565b34801561046a57600080fd5b506103106104793660046123c2565b60166020526000908152604090205460ff1681565b34801561049a57600080fd5b506102c36104a93660046123df565b610cd8565b3480156104ba57600080fd5b506102c36104c9366004612272565b610f73565b3480156104da57600080fd5b50610331600f5481565b3480156104f057600080fd5b5060085461031090600160a81b900460ff1681565b34801561051157600080fd5b506103316105203660046123c2565b6001600160a01b031660009081526003602052604090205490565b34801561054757600080fd5b506102c3611006565b34801561055c57600080fd5b506105847f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102e7565b3480156105a857600080fd5b5061031061103c565b3480156105bd57600080fd5b50600854610584906001600160a01b031681565b3480156105dd57600080fd5b506005546001600160a01b0316610584565b3480156105fb57600080fd5b50610331600b5481565b34801561061157600080fd5b506103106106203660046123c2565b60176020526000908152604090205460ff1681565b34801561064157600080fd5b506102c361065036600461241a565b61107c565b34801561066157600080fd5b506102da6110c4565b34801561067657600080fd5b506102c3610685366004612364565b6110d3565b34801561069657600080fd5b50610331600e5481565b3480156106ac57600080fd5b5061033160135481565b3480156106c257600080fd5b5061033160115481565b3480156106d857600080fd5b506103106106e73660046122f7565b6111a6565b3480156106f857600080fd5b506103106107073660046123c2565b60186020526000908152604090205460ff1681565b34801561072857600080fd5b506103106107373660046122f7565b61123f565b34801561074857600080fd5b5060085461031090600160a01b900460ff1681565b34801561076957600080fd5b50600754610584906001600160a01b031681565b34801561078957600080fd5b506102c361079836600461238d565b61124c565b3480156107a957600080fd5b50600654610584906001600160a01b031681565b3480156107c957600080fd5b506102c36112a1565b3480156107de57600080fd5b506103106107ed366004612364565b6112e2565b3480156107fe57600080fd5b50610331600c5481565b34801561081457600080fd5b50610331610823366004612435565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561085a57600080fd5b50610331600a5481565b34801561087057600080fd5b50610331600d5481565b34801561088657600080fd5b506102c361089536600461238d565b611439565b3480156108a657600080fd5b506102c36108b53660046123c2565b61148e565b6005546001600160a01b031633146108ed5760405162461bcd60e51b81526004016108e49061246e565b60405180910390fd5b6010829055601181905561090181836124b9565b600f819055606310156109565760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c65737300000060448201526064016108e4565b5050565b606060008054610969906124cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610995906124cc565b80156109e25780601f106109b7576101008083540402835291602001916109e2565b820191906000526020600020905b8154815290600101906020018083116109c557829003601f168201915b5050505050905090565b60006109f9338484611529565b5060015b92915050565b6000610a1084848461164d565b6001600160a01b038416600090815260046020908152604080832033845290915290205482811015610a955760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108e4565b610aa28533858403611529565b506001949350505050565b6005546001600160a01b03163314610ad75760405162461bcd60e51b81526004016108e49061246e565b670de0b6b3a76400006103e8610aec60025490565b610af7906005612506565b610b01919061251d565b610b0b919061251d565b811015610b6b5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460448201526768616e20302e352560c01b60648201526084016108e4565b610b7d81670de0b6b3a7640000612506565b600b5550565b6005546001600160a01b03163314610bad5760405162461bcd60e51b81526004016108e49061246e565b6006546001600160a01b0390811690831603610c1c5760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b60648201526084016108e4565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109f9918590610c7e9086906124b9565b611529565b6005546001600160a01b03163314610cad5760405162461bcd60e51b81526004016108e49061246e565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df39181019190915260006060820181905291925060800160405160208183030381529060405280519060200120905060008282604051602001610e7892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610ee3573d6000803e3d6000fd5b505050602060405103519050610f016005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614610f555760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016108e4565b50506008805461ffff60a01b191661010160a01b1790555050505050565b6005546001600160a01b03163314610f9d5760405162461bcd60e51b81526004016108e49061246e565b600d829055600e819055610fb181836124b9565b600c819055601910156109565760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c65737300000060448201526064016108e4565b6005546001600160a01b031633146110305760405162461bcd60e51b81526004016108e49061246e565b61103a6000611d8d565b565b6005546000906001600160a01b031633146110695760405162461bcd60e51b81526004016108e49061246e565b506008805460ff60b01b19169055600190565b6005546001600160a01b031633146110a65760405162461bcd60e51b81526004016108e49061246e565b60088054911515600160a81b0260ff60a81b19909216919091179055565b606060018054610969906124cc565b6005546001600160a01b031633146110fd5760405162461bcd60e51b81526004016108e49061246e565b670de0b6b3a76400006103e861111260025490565b61111d906001612506565b611127919061251d565b611131919061251d565b81101561118e5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617854786e53697a65206c6f776572207468616e60448201526420302e312560d81b60648201526084016108e4565b6111a081670de0b6b3a7640000612506565b60095550565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156112285760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108e4565b6112353385858403611529565b5060019392505050565b60006109f933848461164d565b6005546001600160a01b031633146112765760405162461bcd60e51b81526004016108e49061246e565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112cb5760405162461bcd60e51b81526004016108e49061246e565b6008805461ffff60a01b191661010160a01b179055565b6005546000906001600160a01b0316331461130f5760405162461bcd60e51b81526004016108e49061246e565b620186a061131c60025490565b611327906001612506565b611331919061251d565b82101561139e5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108e4565b6103e86113aa60025490565b6113b5906005612506565b6113bf919061251d565b82111561142b5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108e4565b50600a81905560015b919050565b6005546001600160a01b031633146114635760405162461bcd60e51b81526004016108e49061246e565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114b85760405162461bcd60e51b81526004016108e49061246e565b6001600160a01b03811661151d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e4565b61152681611d8d565b50565b6001600160a01b03831661158b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e4565b6001600160a01b0382166115ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116735760405162461bcd60e51b81526004016108e49061253f565b6001600160a01b0382166116995760405162461bcd60e51b81526004016108e490612584565b6001600160a01b03831660009081526015602052604090205460ff16156116f65760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b60448201526064016108e4565b6001600160a01b03821660009081526015602052604090205460ff16156117515760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b60448201526064016108e4565b8060000361176a5761176583836000611ddf565b505050565b600854600160b01b900460ff1615611ace576005546001600160a01b038481169116148015906117a857506005546001600160a01b03838116911614155b80156117bc57506001600160a01b03821615155b80156117d357506001600160a01b03821661dead14155b80156117e2575060145460ff16155b15611ace57600854600160a01b900460ff1661187c576001600160a01b03831660009081526016602052604090205460ff168061183757506001600160a01b03821660009081526016602052604090205460ff165b61187c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e4565b6001600160a01b03831660009081526018602052604090205460ff1680156118bd57506001600160a01b03821660009081526017602052604090205460ff16155b15611997576009548111156119285760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526a36b0bc2a3c3729b4bd329760a91b60648201526084016108e4565b600b546001600160a01b03831660009081526003602052604090205461194e90836124b9565b11156119925760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e4565b611ace565b6001600160a01b03821660009081526018602052604090205460ff1680156119d857506001600160a01b03831660009081526017602052604090205460ff16155b15611a44576009548111156119925760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526b1036b0bc2a3c3729b4bd329760a11b60648201526084016108e4565b6001600160a01b03821660009081526017602052604090205460ff16611ace57600b546001600160a01b038316600090815260036020526040902054611a8a90836124b9565b1115611ace5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e4565b30600090815260036020526040902054600a5481108015908190611afb5750600854600160a81b900460ff165b8015611b0a575060145460ff16155b8015611b2f57506001600160a01b03851660009081526018602052604090205460ff16155b8015611b5457506001600160a01b03851660009081526016602052604090205460ff16155b8015611b7957506001600160a01b03841660009081526016602052604090205460ff16155b15611b9e576014805460ff19166001179055611b93611f34565b6014805460ff191690555b6014546001600160a01b03861660009081526016602052604090205460ff91821615911680611be557506001600160a01b03851660009081526016602052604090205460ff165b15611bee575060005b60008115611d79576001600160a01b03861660009081526018602052604090205460ff168015611c2057506000600f54115b15611cae57611c456064611c3f600f548861208790919063ffffffff16565b9061209a565b9050600f5460115482611c589190612506565b611c62919061251d565b60136000828254611c7391906124b9565b9091555050600f54601054611c889083612506565b611c92919061251d565b60126000828254611ca391906124b9565b90915550611d5b9050565b6001600160a01b03871660009081526018602052604090205460ff168015611cd857506000600c54115b15611d5b57611cf76064611c3f600c548861208790919063ffffffff16565b9050600c54600e5482611d0a9190612506565b611d14919061251d565b60136000828254611d2591906124b9565b9091555050600c54600d54611d3a9083612506565b611d44919061251d565b60126000828254611d5591906124b9565b90915550505b8015611d6c57611d6c873083611ddf565b611d7681866125c7565b94505b611d84878787611ddf565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611e055760405162461bcd60e51b81526004016108e49061253f565b6001600160a01b038216611e2b5760405162461bcd60e51b81526004016108e490612584565b6001600160a01b03831660009081526003602052604090205481811015611ea35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108e4565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290611eda9084906124b9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2691815260200190565b60405180910390a350505050565b3060009081526003602052604081205490506000601354601254611f5891906124b9565b90506000821580611f67575081155b15611f7157505050565b600a54611f7f906014612506565b831115611f9757600a54611f94906014612506565b92505b47611fa1846120a6565b6000611fad4783612266565b90506000611fca85611c3f6013548561208790919063ffffffff16565b6000601281905560138190556008546040519293506001600160a01b031691839181818185875af1925050503d8060008114612022576040519150601f19603f3d011682016040523d82523d6000602084013e612027565b606091505b50506007546040519195506001600160a01b0316904790600081818185875af1925050503d8060008114612077576040519150601f19603f3d011682016040523d82523d6000602084013e61207c565b606091505b505050505050505050565b60006120938284612506565b9392505050565b6000612093828461251d565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120db576120db6125da565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217d91906125f0565b81600181518110612190576121906125da565b60200260200101906001600160a01b031690816001600160a01b0316815250506121db307f000000000000000000000000000000000000000000000000000000000000000084611529565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac9479061223090859060009086903090429060040161260d565b600060405180830381600087803b15801561224a57600080fd5b505af115801561225e573d6000803e3d6000fd5b505050505050565b600061209382846125c7565b6000806040838503121561228557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156122c1578581018301518582016040015282016122a5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461152657600080fd5b6000806040838503121561230a57600080fd5b8235612315816122e2565b946020939093013593505050565b60008060006060848603121561233857600080fd5b8335612343816122e2565b92506020840135612353816122e2565b929592945050506040919091013590565b60006020828403121561237657600080fd5b5035919050565b8035801515811461143457600080fd5b600080604083850312156123a057600080fd5b82356123ab816122e2565b91506123b96020840161237d565b90509250929050565b6000602082840312156123d457600080fd5b8135612093816122e2565b6000806000606084860312156123f457600080fd5b833560ff8116811461240557600080fd5b95602085013595506040909401359392505050565b60006020828403121561242c57600080fd5b6120938261237d565b6000806040838503121561244857600080fd5b8235612453816122e2565b91506020830135612463816122e2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109fd576109fd6124a3565b600181811c908216806124e057607f821691505b60208210810361250057634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176109fd576109fd6124a3565b60008261253a57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109fd576109fd6124a3565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561260257600080fd5b8151612093816122e2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561265d5784516001600160a01b031683529383019391830191600101612638565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203cdf5417c4bc8289bac50053402b864e55192e1922e7d07556f52d3f9f17128b64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106102975760003560e01c80638da5cb5b1161015a578063bbc0c742116100c1578063d85ba0631161007a578063d85ba063146107f2578063dd62ed3e14610808578063e2f456051461084e578063e4a1b95f14610864578063e7a996ab1461087a578063f2fde38b1461089a57600080fd5b8063bbc0c7421461073c578063c02174ca1461075d578063c02466681461077d578063c816841b1461079d578063c9567bf9146107bd578063d257b34f146107d257600080fd5b80639c3b4fdc116101135780639c3b4fdc1461068a5780639fccce32146106a0578063a0d82dc5146106b6578063a457c2d7146106cc578063a72905a2146106ec578063a9059cbb1461071c57600080fd5b80638da5cb5b146105d15780638f3fa860146105ef578063917d3a6514610605578063924de9b71461063557806395d89b4114610655578063979919aa1461066a57600080fd5b806345434032116101fe5780636ddd1713116101b75780636ddd1713146104e457806370a0823114610505578063715018a61461053b578063735de9f714610550578063751039fc1461059c5780637b1d787d146105b157600080fd5b8063454340321461041d5780634a62bb651461043d5780634fbee1931461045e5780636323d7cb1461048e57806366ca9b83146104ae5780636a486a8e146104ce57600080fd5b806324887e801161025057806324887e80146103755780632b5f295a146103955780632d99d32e146103ab578063313ce567146103cb57806335b5fb63146103e757806339509351146103fd57600080fd5b806302dbd8f8146102a357806306fdde03146102c5578063095ea7b3146102f057806318160ddd146103205780631f7ea8da1461033f57806323b872dd1461035557600080fd5b3661029e57005b600080fd5b3480156102af57600080fd5b506102c36102be366004612272565b6108ba565b005b3480156102d157600080fd5b506102da61095a565b6040516102e79190612294565b60405180910390f35b3480156102fc57600080fd5b5061031061030b3660046122f7565b6109ec565b60405190151581526020016102e7565b34801561032c57600080fd5b506002545b6040519081526020016102e7565b34801561034b57600080fd5b5061033160125481565b34801561036157600080fd5b50610310610370366004612323565b610a03565b34801561038157600080fd5b506102c3610390366004612364565b610aad565b3480156103a157600080fd5b5061033160095481565b3480156103b757600080fd5b506102c36103c636600461238d565b610b83565b3480156103d757600080fd5b50604051601281526020016102e7565b3480156103f357600080fd5b5061033160105481565b34801561040957600080fd5b506103106104183660046122f7565b610c47565b34801561042957600080fd5b506102c361043836600461238d565b610c83565b34801561044957600080fd5b5060085461031090600160b01b900460ff1681565b34801561046a57600080fd5b506103106104793660046123c2565b60166020526000908152604090205460ff1681565b34801561049a57600080fd5b506102c36104a93660046123df565b610cd8565b3480156104ba57600080fd5b506102c36104c9366004612272565b610f73565b3480156104da57600080fd5b50610331600f5481565b3480156104f057600080fd5b5060085461031090600160a81b900460ff1681565b34801561051157600080fd5b506103316105203660046123c2565b6001600160a01b031660009081526003602052604090205490565b34801561054757600080fd5b506102c3611006565b34801561055c57600080fd5b506105847f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016102e7565b3480156105a857600080fd5b5061031061103c565b3480156105bd57600080fd5b50600854610584906001600160a01b031681565b3480156105dd57600080fd5b506005546001600160a01b0316610584565b3480156105fb57600080fd5b50610331600b5481565b34801561061157600080fd5b506103106106203660046123c2565b60176020526000908152604090205460ff1681565b34801561064157600080fd5b506102c361065036600461241a565b61107c565b34801561066157600080fd5b506102da6110c4565b34801561067657600080fd5b506102c3610685366004612364565b6110d3565b34801561069657600080fd5b50610331600e5481565b3480156106ac57600080fd5b5061033160135481565b3480156106c257600080fd5b5061033160115481565b3480156106d857600080fd5b506103106106e73660046122f7565b6111a6565b3480156106f857600080fd5b506103106107073660046123c2565b60186020526000908152604090205460ff1681565b34801561072857600080fd5b506103106107373660046122f7565b61123f565b34801561074857600080fd5b5060085461031090600160a01b900460ff1681565b34801561076957600080fd5b50600754610584906001600160a01b031681565b34801561078957600080fd5b506102c361079836600461238d565b61124c565b3480156107a957600080fd5b50600654610584906001600160a01b031681565b3480156107c957600080fd5b506102c36112a1565b3480156107de57600080fd5b506103106107ed366004612364565b6112e2565b3480156107fe57600080fd5b50610331600c5481565b34801561081457600080fd5b50610331610823366004612435565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b34801561085a57600080fd5b50610331600a5481565b34801561087057600080fd5b50610331600d5481565b34801561088657600080fd5b506102c361089536600461238d565b611439565b3480156108a657600080fd5b506102c36108b53660046123c2565b61148e565b6005546001600160a01b031633146108ed5760405162461bcd60e51b81526004016108e49061246e565b60405180910390fd5b6010829055601181905561090181836124b9565b600f819055606310156109565760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c65737300000060448201526064016108e4565b5050565b606060008054610969906124cc565b80601f0160208091040260200160405190810160405280929190818152602001828054610995906124cc565b80156109e25780601f106109b7576101008083540402835291602001916109e2565b820191906000526020600020905b8154815290600101906020018083116109c557829003601f168201915b5050505050905090565b60006109f9338484611529565b5060015b92915050565b6000610a1084848461164d565b6001600160a01b038416600090815260046020908152604080832033845290915290205482811015610a955760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084016108e4565b610aa28533858403611529565b506001949350505050565b6005546001600160a01b03163314610ad75760405162461bcd60e51b81526004016108e49061246e565b670de0b6b3a76400006103e8610aec60025490565b610af7906005612506565b610b01919061251d565b610b0b919061251d565b811015610b6b5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f7420736574206d617857616c6c657453697a65206c6f776572207460448201526768616e20302e352560c01b60648201526084016108e4565b610b7d81670de0b6b3a7640000612506565b600b5550565b6005546001600160a01b03163314610bad5760405162461bcd60e51b81526004016108e49061246e565b6006546001600160a01b0390811690831603610c1c5760405162461bcd60e51b815260206004820152602860248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d20604482015267616d6d506169727360c01b60648201526084016108e4565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b3360008181526004602090815260408083206001600160a01b038716845290915281205490916109f9918590610c7e9086906124b9565b611529565b6005546001600160a01b03163314610cad5760405162461bcd60e51b81526004016108e49061246e565b6001600160a01b03919091166000908152601560205260409020805460ff1916911515919091179055565b604080518082018252600d81526c2a3930b234b733902a37b5b2b760991b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f918101919091527f65e27265c2bf07e8242fee81a602df3320989bd26741589720839868a275d56c918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260009060c00160408051808303601f1901815282825280516020918201208383018352600e84526d456e61626c652054726164696e6760901b9382019390935281517f7dfdbf06c6260804b81338506aa4a709bd9f04b68ca0d2d054b8627926c90ae4918101919091527f07e4ca7f0c414d237f9df43639d0673c51201469c22695492434205e0b759df39181019190915260006060820181905291925060800160405160208183030381529060405280519060200120905060008282604051602001610e7892919061190160f01b81526002810192909252602282015260420190565b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff8a169284019290925260608301889052608083018790529092509060019060a0016020604051602081039080840390855afa158015610ee3573d6000803e3d6000fd5b505050602060405103519050610f016005546001600160a01b031690565b6001600160a01b0316816001600160a01b031614610f555760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b60448201526064016108e4565b50506008805461ffff60a01b191661010160a01b1790555050505050565b6005546001600160a01b03163314610f9d5760405162461bcd60e51b81526004016108e49061246e565b600d829055600e819055610fb181836124b9565b600c819055601910156109565760405162461bcd60e51b815260206004820152601d60248201527f4d757374206b656570206665657320617420323525206f72206c65737300000060448201526064016108e4565b6005546001600160a01b031633146110305760405162461bcd60e51b81526004016108e49061246e565b61103a6000611d8d565b565b6005546000906001600160a01b031633146110695760405162461bcd60e51b81526004016108e49061246e565b506008805460ff60b01b19169055600190565b6005546001600160a01b031633146110a65760405162461bcd60e51b81526004016108e49061246e565b60088054911515600160a81b0260ff60a81b19909216919091179055565b606060018054610969906124cc565b6005546001600160a01b031633146110fd5760405162461bcd60e51b81526004016108e49061246e565b670de0b6b3a76400006103e861111260025490565b61111d906001612506565b611127919061251d565b611131919061251d565b81101561118e5760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f7420736574206d617854786e53697a65206c6f776572207468616e60448201526420302e312560d81b60648201526084016108e4565b6111a081670de0b6b3a7640000612506565b60095550565b3360009081526004602090815260408083206001600160a01b0386168452909152812054828110156112285760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016108e4565b6112353385858403611529565b5060019392505050565b60006109f933848461164d565b6005546001600160a01b031633146112765760405162461bcd60e51b81526004016108e49061246e565b6001600160a01b03919091166000908152601660205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146112cb5760405162461bcd60e51b81526004016108e49061246e565b6008805461ffff60a01b191661010160a01b179055565b6005546000906001600160a01b0316331461130f5760405162461bcd60e51b81526004016108e49061246e565b620186a061131c60025490565b611327906001612506565b611331919061251d565b82101561139e5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b60648201526084016108e4565b6103e86113aa60025490565b6113b5906005612506565b6113bf919061251d565b82111561142b5760405162461bcd60e51b815260206004820152603460248201527f5377617020616d6f756e742063616e6e6f742062652068696768657220746861604482015273371018171a92903a37ba30b61039bab838363c9760611b60648201526084016108e4565b50600a81905560015b919050565b6005546001600160a01b031633146114635760405162461bcd60e51b81526004016108e49061246e565b6001600160a01b03919091166000908152601760205260409020805460ff1916911515919091179055565b6005546001600160a01b031633146114b85760405162461bcd60e51b81526004016108e49061246e565b6001600160a01b03811661151d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108e4565b61152681611d8d565b50565b6001600160a01b03831661158b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016108e4565b6001600160a01b0382166115ec5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016108e4565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116735760405162461bcd60e51b81526004016108e49061253f565b6001600160a01b0382166116995760405162461bcd60e51b81526004016108e490612584565b6001600160a01b03831660009081526015602052604090205460ff16156116f65760405162461bcd60e51b815260206004820152601160248201527016d99c9bdb5748189b1858dac81b1a5cdd607a1b60448201526064016108e4565b6001600160a01b03821660009081526015602052604090205460ff16156117515760405162461bcd60e51b815260206004820152600f60248201526e16dd1bd748189b1858dac81b1a5cdd608a1b60448201526064016108e4565b8060000361176a5761176583836000611ddf565b505050565b600854600160b01b900460ff1615611ace576005546001600160a01b038481169116148015906117a857506005546001600160a01b03838116911614155b80156117bc57506001600160a01b03821615155b80156117d357506001600160a01b03821661dead14155b80156117e2575060145460ff16155b15611ace57600854600160a01b900460ff1661187c576001600160a01b03831660009081526016602052604090205460ff168061183757506001600160a01b03821660009081526016602052604090205460ff165b61187c5760405162461bcd60e51b81526020600482015260166024820152752a3930b234b7339034b9903737ba1030b1ba34bb329760511b60448201526064016108e4565b6001600160a01b03831660009081526018602052604090205460ff1680156118bd57506001600160a01b03821660009081526017602052604090205460ff16155b15611997576009548111156119285760405162461bcd60e51b815260206004820152602b60248201527f427579207472616e7366657220616d6f756e742065786365656473207468652060448201526a36b0bc2a3c3729b4bd329760a91b60648201526084016108e4565b600b546001600160a01b03831660009081526003602052604090205461194e90836124b9565b11156119925760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e4565b611ace565b6001600160a01b03821660009081526018602052604090205460ff1680156119d857506001600160a01b03831660009081526017602052604090205460ff16155b15611a44576009548111156119925760405162461bcd60e51b815260206004820152602c60248201527f53656c6c207472616e7366657220616d6f756e7420657863656564732074686560448201526b1036b0bc2a3c3729b4bd329760a11b60648201526084016108e4565b6001600160a01b03821660009081526017602052604090205460ff16611ace57600b546001600160a01b038316600090815260036020526040902054611a8a90836124b9565b1115611ace5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b60448201526064016108e4565b30600090815260036020526040902054600a5481108015908190611afb5750600854600160a81b900460ff165b8015611b0a575060145460ff16155b8015611b2f57506001600160a01b03851660009081526018602052604090205460ff16155b8015611b5457506001600160a01b03851660009081526016602052604090205460ff16155b8015611b7957506001600160a01b03841660009081526016602052604090205460ff16155b15611b9e576014805460ff19166001179055611b93611f34565b6014805460ff191690555b6014546001600160a01b03861660009081526016602052604090205460ff91821615911680611be557506001600160a01b03851660009081526016602052604090205460ff165b15611bee575060005b60008115611d79576001600160a01b03861660009081526018602052604090205460ff168015611c2057506000600f54115b15611cae57611c456064611c3f600f548861208790919063ffffffff16565b9061209a565b9050600f5460115482611c589190612506565b611c62919061251d565b60136000828254611c7391906124b9565b9091555050600f54601054611c889083612506565b611c92919061251d565b60126000828254611ca391906124b9565b90915550611d5b9050565b6001600160a01b03871660009081526018602052604090205460ff168015611cd857506000600c54115b15611d5b57611cf76064611c3f600c548861208790919063ffffffff16565b9050600c54600e5482611d0a9190612506565b611d14919061251d565b60136000828254611d2591906124b9565b9091555050600c54600d54611d3a9083612506565b611d44919061251d565b60126000828254611d5591906124b9565b90915550505b8015611d6c57611d6c873083611ddf565b611d7681866125c7565b94505b611d84878787611ddf565b50505050505050565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038316611e055760405162461bcd60e51b81526004016108e49061253f565b6001600160a01b038216611e2b5760405162461bcd60e51b81526004016108e490612584565b6001600160a01b03831660009081526003602052604090205481811015611ea35760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016108e4565b6001600160a01b03808516600090815260036020526040808220858503905591851681529081208054849290611eda9084906124b9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f2691815260200190565b60405180910390a350505050565b3060009081526003602052604081205490506000601354601254611f5891906124b9565b90506000821580611f67575081155b15611f7157505050565b600a54611f7f906014612506565b831115611f9757600a54611f94906014612506565b92505b47611fa1846120a6565b6000611fad4783612266565b90506000611fca85611c3f6013548561208790919063ffffffff16565b6000601281905560138190556008546040519293506001600160a01b031691839181818185875af1925050503d8060008114612022576040519150601f19603f3d011682016040523d82523d6000602084013e612027565b606091505b50506007546040519195506001600160a01b0316904790600081818185875af1925050503d8060008114612077576040519150601f19603f3d011682016040523d82523d6000602084013e61207c565b606091505b505050505050505050565b60006120938284612506565b9392505050565b6000612093828461251d565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106120db576120db6125da565b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612159573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061217d91906125f0565b81600181518110612190576121906125da565b60200260200101906001600160a01b031690816001600160a01b0316815250506121db307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84611529565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d169063791ac9479061223090859060009086903090429060040161260d565b600060405180830381600087803b15801561224a57600080fd5b505af115801561225e573d6000803e3d6000fd5b505050505050565b600061209382846125c7565b6000806040838503121561228557600080fd5b50508035926020909101359150565b600060208083528351808285015260005b818110156122c1578581018301518582016040015282016122a5565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461152657600080fd5b6000806040838503121561230a57600080fd5b8235612315816122e2565b946020939093013593505050565b60008060006060848603121561233857600080fd5b8335612343816122e2565b92506020840135612353816122e2565b929592945050506040919091013590565b60006020828403121561237657600080fd5b5035919050565b8035801515811461143457600080fd5b600080604083850312156123a057600080fd5b82356123ab816122e2565b91506123b96020840161237d565b90509250929050565b6000602082840312156123d457600080fd5b8135612093816122e2565b6000806000606084860312156123f457600080fd5b833560ff8116811461240557600080fd5b95602085013595506040909401359392505050565b60006020828403121561242c57600080fd5b6120938261237d565b6000806040838503121561244857600080fd5b8235612453816122e2565b91506020830135612463816122e2565b809150509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052601160045260246000fd5b808201808211156109fd576109fd6124a3565b600181811c908216806124e057607f821691505b60208210810361250057634e487b7160e01b600052602260045260246000fd5b50919050565b80820281158282048414176109fd576109fd6124a3565b60008261253a57634e487b7160e01b600052601260045260246000fd5b500490565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b818103818111156109fd576109fd6124a3565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561260257600080fd5b8151612093816122e2565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561265d5784516001600160a01b031683529383019391830191600101612638565b50506001600160a01b0396909616606085015250505060800152939250505056fea26469706673582212203cdf5417c4bc8289bac50053402b864e55192e1922e7d07556f52d3f9f17128b64736f6c63430008130033

Deployed Bytecode Sourcemap

14927:10450:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20258:289;;;;;;;;;;-1:-1:-1;20258:289:0;;;;;:::i;:::-;;:::i;:::-;;10272:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11003:169;;;;;;;;;;-1:-1:-1;11003:169:0;;;;;:::i;:::-;;:::i;:::-;;;1441:14:1;;1434:22;1416:41;;1404:2;1389:18;11003:169:0;1276:187:1;10593:108:0;;;;;;;;;;-1:-1:-1;10681:12:0;;10593:108;;;1614:25:1;;;1602:2;1587:18;10593:108:0;1468:177:1;15601:30:0;;;;;;;;;;;;;;;;11363:492;;;;;;;;;;-1:-1:-1;11363:492:0;;;;;:::i;:::-;;:::i;19112:225::-;;;;;;;;;;-1:-1:-1;19112:225:0;;;;;:::i;:::-;;:::i;15287:25::-;;;;;;;;;;;;;;;;20555:189;;;;;;;;;;-1:-1:-1;20555:189:0;;;;;:::i;:::-;;:::i;10492:93::-;;;;;;;;;;-1:-1:-1;10492:93:0;;10575:2;2923:36:1;;2911:2;2896:18;10492:93:0;2781:184:1;15532:28:0;;;;;;;;;;;;;;;;11863:215;;;;;;;;;;-1:-1:-1;11863:215:0;;;;;:::i;:::-;;:::i;20752:106::-;;;;;;;;;;-1:-1:-1;20752:106:0;;;;;:::i;:::-;;:::i;15245:33::-;;;;;;;;;;-1:-1:-1;15245:33:0;;;;-1:-1:-1;;;15245:33:0;;;;;;15755:50;;;;;;;;;;-1:-1:-1;15755:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;17536:1060;;;;;;;;;;-1:-1:-1;17536:1060:0;;;;;:::i;:::-;;:::i;19968:282::-;;;;;;;;;;-1:-1:-1;19968:282:0;;;;;:::i;:::-;;:::i;15497:28::-;;;;;;;;;;;;;;;;15207:31;;;;;;;;;;-1:-1:-1;15207:31:0;;;;-1:-1:-1;;;15207:31:0;;;;;;10709:127;;;;;;;;;;-1:-1:-1;10709:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;10810:18:0;10783:7;10810:18;;;:9;:18;;;;;;;10709:127;777:103;;;;;;;;;;;;;:::i;15014:49::-;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3822:32:1;;;3804:51;;3792:2;3777:18;15014:49:0;3632:229:1;18875:121:0;;;;;;;;;;;;;:::i;15135:23::-;;;;;;;;;;-1:-1:-1;15135:23:0;;;;-1:-1:-1;;;;;15135:23:0;;;554:87;;;;;;;;;;-1:-1:-1;627:6:0;;-1:-1:-1;;;;;627:6:0;554:87;;15359:28;;;;;;;;;;;;;;;;15812:51;;;;;;;;;;-1:-1:-1;15812:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;19004:100;;;;;;;;;;-1:-1:-1;19004:100:0;;;;;:::i;:::-;;:::i;10380:104::-;;;;;;;;;;;;;:::i;19744:216::-;;;;;;;;;;-1:-1:-1;19744:216:0;;;;;:::i;:::-;;:::i;15464:24::-;;;;;;;;;;;;;;;;15638:27;;;;;;;;;;;;;;;;15567:25;;;;;;;;;;;;;;;;12086:413;;;;;;;;;;-1:-1:-1;12086:413:0;;;;;:::i;:::-;;:::i;15872:40::-;;;;;;;;;;-1:-1:-1;15872:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;11180:175;;;;;;;;;;-1:-1:-1;11180:175:0;;;;;:::i;:::-;;:::i;15167:33::-;;;;;;;;;;-1:-1:-1;15167:33:0;;;;-1:-1:-1;;;15167:33:0;;;;;;15105:23;;;;;;;;;;-1:-1:-1;15105:23:0;;;;-1:-1:-1;;;;;15105:23:0;;;18740:127;;;;;;;;;;-1:-1:-1;18740:127:0;;;;;:::i;:::-;;:::i;15070:26::-;;;;;;;;;;-1:-1:-1;15070:26:0;;;;-1:-1:-1;;;;;15070:26:0;;;17418:110;;;;;;;;;;;;;:::i;19345:391::-;;;;;;;;;;-1:-1:-1;19345:391:0;;;;;:::i;:::-;;:::i;15396:27::-;;;;;;;;;;;;;;;;10844:151;;;;;;;;;;-1:-1:-1;10844:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;10960:18:0;;;10933:7;10960:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;10844:151;15319:33;;;;;;;;;;;;;;;;15430:27;;;;;;;;;;;;;;;;18604:128;;;;;;;;;;-1:-1:-1;18604:128:0;;;;;:::i;:::-;;:::i;888:201::-;;;;;;;;;;-1:-1:-1;888:201:0;;;;;:::i;:::-;;:::i;20258:289::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;;;;;;;;;20353:13:::1;:28:::0;;;20392:10:::1;:22:::0;;;20441:26:::1;20405:9:::0;20369:12;20441:26:::1;:::i;:::-;20425:13;:42:::0;;;20503:2:::1;-1:-1:-1::0;20486:19:0::1;20478:61;;;::::0;-1:-1:-1;;;20478:61:0;;5477:2:1;20478:61:0::1;::::0;::::1;5459:21:1::0;5516:2;5496:18;;;5489:30;5555:31;5535:18;;;5528:59;5604:18;;20478:61:0::1;5275:353:1::0;20478:61:0::1;20258:289:::0;;:::o;10272:100::-;10326:13;10359:5;10352:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10272:100;:::o;11003:169::-;11086:4;11103:39;180:10;11126:7;11135:6;11103:8;:39::i;:::-;-1:-1:-1;11160:4:0;11003:169;;;;;:::o;11363:492::-;11503:4;11520:36;11530:6;11538:9;11549:6;11520:9;:36::i;:::-;-1:-1:-1;;;;;11596:19:0;;11569:24;11596:19;;;:11;:19;;;;;;;;180:10;11596:33;;;;;;;;11648:26;;;;11640:79;;;;-1:-1:-1;;;11640:79:0;;6220:2:1;11640:79:0;;;6202:21:1;6259:2;6239:18;;;6232:30;6298:34;6278:18;;;6271:62;-1:-1:-1;;;6349:18:1;;;6342:38;6397:19;;11640:79:0;6018:404:1;11640:79:0;11755:57;11764:6;180:10;11805:6;11786:16;:25;11755:8;:57::i;:::-;-1:-1:-1;11843:4:0;;11363:492;-1:-1:-1;;;;11363:492:0:o;19112:225::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;19236:4:::1;19228;19207:13;10681:12:::0;;;10593:108;19207:13:::1;:17;::::0;19223:1:::1;19207:17;:::i;:::-;19206:26;;;;:::i;:::-;19205:35;;;;:::i;:::-;19195:6;:45;;19187:98;;;::::0;-1:-1:-1;;;19187:98:0;;7024:2:1;19187:98:0::1;::::0;::::1;7006:21:1::0;7063:2;7043:18;;;7036:30;7102:34;7082:18;;;7075:62;-1:-1:-1;;;7153:18:1;;;7146:38;7201:19;;19187:98:0::1;6822:404:1::0;19187:98:0::1;19312:17;:6:::0;19322::::1;19312:17;:::i;:::-;19296:13;:33:::0;-1:-1:-1;19112:225:0:o;20555:189::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;20647:11:::1;::::0;-1:-1:-1;;;;;20647:11:0;;::::1;20639:19:::0;;::::1;::::0;20631:72:::1;;;::::0;-1:-1:-1;;;20631:72:0;;7433:2:1;20631:72:0::1;::::0;::::1;7415:21:1::0;7472:2;7452:18;;;7445:30;7511:34;7491:18;;;7484:62;-1:-1:-1;;;7562:18:1;;;7555:38;7610:19;;20631:72:0::1;7231:404:1::0;20631:72:0::1;-1:-1:-1::0;;;;;20714:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;20714:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20555:189::o;11863:215::-;180:10;11951:4;12000:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12000:34:0;;;;;;;;;;11951:4;;11968:80;;11991:7;;12000:47;;12037:10;;12000:47;:::i;:::-;11968:8;:80::i;20752:106::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20824:17:0;;;::::1;;::::0;;;:11:::1;:17;::::0;;;;:26;;-1:-1:-1;;20824:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;20752:106::o;17536:1060::-;17816:22;;;;;;;;;;;-1:-1:-1;;;17816:22:0;;;;;17868:10;;;;;;;;;;-1:-1:-1;;;17868:10:0;;;;17663:295;;17692:95;17663:295;;;7899:25:1;;;;17806:33:0;7940:18:1;;;7933:34;;;;17858:21:0;7983:18:1;;;7976:34;17898:13:0;8026:18:1;;;8019:34;17938:4:0;8069:19:1;;;8062:61;-1:-1:-1;;7871:19:1;;17663:295:0;;;;;;-1:-1:-1;;17663:295:0;;;;;;17639:330;;17663:295;17639:330;;;;18134:23;;;;;;;;-1:-1:-1;;;18134:23:0;;;;;;;18027:175;;18056:49;18027:175;;;8336:25:1;;;;18124:34:0;8377:18:1;;;8370:34;;;;-1:-1:-1;8420:18:1;;;8413:34;;;17639:330:0;;-1:-1:-1;8309:18:1;;18027:175:0;;;;;;;;;;;;18003:210;;;;;;17982:231;;18226:14;18331:10;18360;18267:134;;;;;;;;-1:-1:-1;;;8716:27:1;;8768:1;8759:11;;8752:27;;;;8804:2;8795:12;;8788:28;8841:2;8832:12;;8458:392;18267:134:0;;;;-1:-1:-1;;18267:134:0;;;;;;;;;18243:169;;18267:134;18243:169;;;;18425:14;18442:26;;;;;;;;;9082:25:1;;;9155:4;9143:17;;9123:18;;;9116:45;;;;9177:18;;;9170:34;;;9220:18;;;9213:34;;;18243:169:0;;-1:-1:-1;18425:14:0;18442:26;;9054:19:1;;18442:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18425:43;;18497:7;627:6;;-1:-1:-1;;;;;627:6:0;;554:87;18497:7;-1:-1:-1;;;;;18487:17:0;:6;-1:-1:-1;;;;;18487:17:0;;18479:47;;;;-1:-1:-1;;;18479:47:0;;9460:2:1;18479:47:0;;;9442:21:1;9499:2;9479:18;;;9472:30;-1:-1:-1;;;9518:18:1;;;9511:47;9575:18;;18479:47:0;9258:341:1;18479:47:0;-1:-1:-1;;18539:13:0;:20;;-1:-1:-1;;;;18570:18:0;-1:-1:-1;;;18570:18:0;;;-1:-1:-1;;;;;17536:1060:0:o;19968:282::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;20062:12:::1;:27:::0;;;20100:9:::1;:21:::0;;;20147:24:::1;20112:9:::0;20077:12;20147:24:::1;:::i;:::-;20132:12;:39:::0;;;20206:2:::1;-1:-1:-1::0;20190:18:0::1;20182:60;;;::::0;-1:-1:-1;;;20182:60:0;;5477:2:1;20182:60:0::1;::::0;::::1;5459:21:1::0;5516:2;5496:18;;;5489:30;5555:31;5535:18;;;5528:59;5604:18;;20182:60:0::1;5275:353:1::0;777:103:0;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;842:30:::1;869:1;842:18;:30::i;:::-;777:103::o:0;18875:121::-;627:6;;18927:4;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;-1:-1:-1;18944:14:0::1;:22:::0;;-1:-1:-1;;;;18944:22:0::1;::::0;;;18875:121;:::o;19004:100::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;19075:11:::1;:21:::0;;;::::1;;-1:-1:-1::0;;;19075:21:0::1;-1:-1:-1::0;;;;19075:21:0;;::::1;::::0;;;::::1;::::0;;19004:100::o;10380:104::-;10436:13;10469:7;10462:14;;;;;:::i;19744:216::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;19865:4:::1;19857;19836:13;10681:12:::0;;;10593:108;19836:13:::1;:17;::::0;19852:1:::1;19836:17;:::i;:::-;19835:26;;;;:::i;:::-;19834:35;;;;:::i;:::-;19824:6;:45;;19816:95;;;::::0;-1:-1:-1;;;19816:95:0;;9806:2:1;19816:95:0::1;::::0;::::1;9788:21:1::0;9845:2;9825:18;;;9818:30;9884:34;9864:18;;;9857:62;-1:-1:-1;;;9935:18:1;;;9928:35;9980:19;;19816:95:0::1;9604:401:1::0;19816:95:0::1;19935:17;:6:::0;19945::::1;19935:17;:::i;:::-;19922:10;:30:::0;-1:-1:-1;19744:216:0:o;12086:413::-;180:10;12179:4;12223:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;12223:34:0;;;;;;;;;;12276:35;;;;12268:85;;;;-1:-1:-1;;;12268:85:0;;10212:2:1;12268:85:0;;;10194:21:1;10251:2;10231:18;;;10224:30;10290:34;10270:18;;;10263:62;-1:-1:-1;;;10341:18:1;;;10334:35;10386:19;;12268:85:0;10010:401:1;12268:85:0;12389:67;180:10;12412:7;12440:15;12421:16;:34;12389:8;:67::i;:::-;-1:-1:-1;12487:4:0;;12086:413;-1:-1:-1;;;12086:413:0:o;11180:175::-;11266:4;11283:42;180:10;11307:9;11318:6;11283:9;:42::i;18740:127::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18824:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;18824:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18740:127::o;17418:110::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;17471:13:::1;:20:::0;;-1:-1:-1;;;;17502:18:0;-1:-1:-1;;;17502:18:0;;;17418:110::o;19345:391::-;627:6;;19426:4;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;19486:6:::1;19465:13;10681:12:::0;;;10593:108;19465:13:::1;:17;::::0;19481:1:::1;19465:17;:::i;:::-;19464:28;;;;:::i;:::-;19451:9;:41;;19443:107;;;::::0;-1:-1:-1;;;19443:107:0;;10618:2:1;19443:107:0::1;::::0;::::1;10600:21:1::0;10657:2;10637:18;;;10630:30;10696:34;10676:18;;;10669:62;-1:-1:-1;;;10747:18:1;;;10740:51;10808:19;;19443:107:0::1;10416:417:1::0;19443:107:0::1;19604:4;19583:13;10681:12:::0;;;10593:108;19583:13:::1;:17;::::0;19599:1:::1;19583:17;:::i;:::-;19582:26;;;;:::i;:::-;19569:9;:39;;19561:104;;;::::0;-1:-1:-1;;;19561:104:0;;11040:2:1;19561:104:0::1;::::0;::::1;11022:21:1::0;11079:2;11059:18;;;11052:30;11118:34;11098:18;;;11091:62;-1:-1:-1;;;11169:18:1;;;11162:50;11229:19;;19561:104:0::1;10838:416:1::0;19561:104:0::1;-1:-1:-1::0;19676:18:0::1;:30:::0;;;19724:4:::1;760:1;19345:391:::0;;;:::o;18604:128::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18691:25:0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:33;;-1:-1:-1;;18691:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;18604:128::o;888:201::-;627:6;;-1:-1:-1;;;;;627:6:0;180:10;689:23;681:68;;;;-1:-1:-1;;;681:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;977:22:0;::::1;969:73;;;::::0;-1:-1:-1;;;969:73:0;;11461:2:1;969:73:0::1;::::0;::::1;11443:21:1::0;11500:2;11480:18;;;11473:30;11539:34;11519:18;;;11512:62;-1:-1:-1;;;11590:18:1;;;11583:36;11636:19;;969:73:0::1;11259:402:1::0;969:73:0::1;1053:28;1072:8;1053:18;:28::i;:::-;888:201:::0;:::o;13513:380::-;-1:-1:-1;;;;;13649:19:0;;13641:68;;;;-1:-1:-1;;;13641:68:0;;11868:2:1;13641:68:0;;;11850:21:1;11907:2;11887:18;;;11880:30;11946:34;11926:18;;;11919:62;-1:-1:-1;;;11997:18:1;;;11990:34;12041:19;;13641:68:0;11666:400:1;13641:68:0;-1:-1:-1;;;;;13728:21:0;;13720:68;;;;-1:-1:-1;;;13720:68:0;;12273:2:1;13720:68:0;;;12255:21:1;12312:2;12292:18;;;12285:30;12351:34;12331:18;;;12324:62;-1:-1:-1;;;12402:18:1;;;12395:32;12444:19;;13720:68:0;12071:398:1;13720:68:0;-1:-1:-1;;;;;13801:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13853:32;;1614:25:1;;;13853:32:0;;1587:18:1;13853:32:0;;;;;;;13513:380;;;:::o;22331:2928::-;-1:-1:-1;;;;;22429:18:0;;22421:68;;;;-1:-1:-1;;;22421:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22508:16:0;;22500:64;;;;-1:-1:-1;;;22500:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22584:17:0;;;;;;:11;:17;;;;;;;;22583:18;22575:48;;;;-1:-1:-1;;;22575:48:0;;13486:2:1;22575:48:0;;;13468:21:1;13525:2;13505:18;;;13498:30;-1:-1:-1;;;13544:18:1;;;13537:47;13601:18;;22575:48:0;13284:341:1;22575:48:0;-1:-1:-1;;;;;22643:15:0;;;;;;:11;:15;;;;;;;;22642:16;22634:44;;;;-1:-1:-1;;;22634:44:0;;13832:2:1;22634:44:0;;;13814:21:1;13871:2;13851:18;;;13844:30;-1:-1:-1;;;13890:18:1;;;13883:45;13945:18;;22634:44:0;13630:339:1;22634:44:0;22695:6;22705:1;22695:11;22691:93;;22723:28;22739:4;22745:2;22749:1;22723:15;:28::i;:::-;22331:2928;;;:::o;22691:93::-;22800:14;;-1:-1:-1;;;22800:14:0;;;;22796:1088;;;627:6;;-1:-1:-1;;;;;22835:15:0;;;627:6;;22835:15;;;;:49;;-1:-1:-1;627:6:0;;-1:-1:-1;;;;;22871:13:0;;;627:6;;22871:13;;22835:49;:86;;;;-1:-1:-1;;;;;;22905:16:0;;;;22835:86;:128;;;;-1:-1:-1;;;;;;22942:21:0;;22956:6;22942:21;;22835:128;:158;;;;-1:-1:-1;22985:8:0;;;;22984:9;22835:158;22831:1042;;;23019:13;;-1:-1:-1;;;23019:13:0;;;;23014:148;;-1:-1:-1;;;;;23065:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;23093:22:0;;;;;;:18;:22;;;;;;;;23065:50;23057:85;;;;-1:-1:-1;;;23057:85:0;;14176:2:1;23057:85:0;;;14158:21:1;14215:2;14195:18;;;14188:30;-1:-1:-1;;;14234:18:1;;;14227:52;14296:18;;23057:85:0;13974:346:1;23057:85:0;-1:-1:-1;;;;;23214:14:0;;;;;;:8;:14;;;;;;;;:42;;;;-1:-1:-1;;;;;;23233:23:0;;;;;;:19;:23;;;;;;;;23232:24;23214:42;23210:648;;;23299:10;;23289:6;:20;;23281:76;;;;-1:-1:-1;;;23281:76:0;;14527:2:1;23281:76:0;;;14509:21:1;14566:2;14546:18;;;14539:30;14605:34;14585:18;;;14578:62;-1:-1:-1;;;14656:18:1;;;14649:41;14707:19;;23281:76:0;14325:407:1;23281:76:0;23414:13;;-1:-1:-1;;;;;10810:18:0;;10783:7;10810:18;;;:9;:18;;;;;;23388:22;;:6;:22;:::i;:::-;:39;;23380:71;;;;-1:-1:-1;;;23380:71:0;;14939:2:1;23380:71:0;;;14921:21:1;14978:2;14958:18;;;14951:30;-1:-1:-1;;;14997:18:1;;;14990:49;15056:18;;23380:71:0;14737:343:1;23380:71:0;23210:648;;;-1:-1:-1;;;;;23527:12:0;;;;;;:8;:12;;;;;;;;:42;;;;-1:-1:-1;;;;;;23544:25:0;;;;;;:19;:25;;;;;;;;23543:26;23527:42;23523:335;;;23612:10;;23602:6;:20;;23594:77;;;;-1:-1:-1;;;23594:77:0;;15287:2:1;23594:77:0;;;15269:21:1;15326:2;15306:18;;;15299:30;15365:34;15345:18;;;15338:62;-1:-1:-1;;;15416:18:1;;;15409:42;15468:19;;23594:77:0;15085:408:1;23523:335:0;-1:-1:-1;;;;;23719:23:0;;;;;;:19;:23;;;;;;;;23714:144;;23801:13;;-1:-1:-1;;;;;10810:18:0;;10783:7;10810:18;;;:9;:18;;;;;;23775:22;;:6;:22;:::i;:::-;:39;;23767:71;;;;-1:-1:-1;;;23767:71:0;;14939:2:1;23767:71:0;;;14921:21:1;14978:2;14958:18;;;14951:30;-1:-1:-1;;;14997:18:1;;;14990:49;15056:18;;23767:71:0;14737:343:1;23767:71:0;23940:4;23896:23;10810:18;;;:9;:18;;;;;;23991;;23972:37;;;;;;;24024:35;;-1:-1:-1;24048:11:0;;-1:-1:-1;;;24048:11:0;;;;24024:35;:61;;;;-1:-1:-1;24077:8:0;;;;24076:9;24024:61;:93;;;;-1:-1:-1;;;;;;24103:14:0;;;;;;:8;:14;;;;;;;;24102:15;24024:93;:135;;;;-1:-1:-1;;;;;;24135:24:0;;;;;;:18;:24;;;;;;;;24134:25;24024:135;:175;;;;-1:-1:-1;;;;;;24177:22:0;;;;;;:18;:22;;;;;;;;24176:23;24024:175;24020:281;;;24218:8;:15;;-1:-1:-1;;24218:15:0;24229:4;24218:15;;;24248:10;:8;:10::i;:::-;24273:8;:16;;-1:-1:-1;;24273:16:0;;;24020:281;24329:8;;-1:-1:-1;;;;;24352:24:0;;24313:12;24352:24;;;:18;:24;;;;;;24329:8;;;;24328:9;;24352:24;;:50;;-1:-1:-1;;;;;;24380:22:0;;;;;;:18;:22;;;;;;;;24352:50;24348:84;;;-1:-1:-1;24427:5:0;24348:84;24445:11;24475:7;24471:735;;;-1:-1:-1;;;;;24527:12:0;;;;;;:8;:12;;;;;;;;:33;;;;;24559:1;24543:13;;:17;24527:33;24523:554;;;24587:34;24617:3;24587:25;24598:13;;24587:6;:10;;:25;;;;:::i;:::-;:29;;:34::i;:::-;24581:40;;24677:13;;24663:10;;24657:3;:16;;;;:::i;:::-;24656:34;;;;:::i;:::-;24640:12;;:50;;;;;;;:::i;:::-;;;;-1:-1:-1;;24752:13:0;;24735;;24729:19;;:3;:19;:::i;:::-;24728:37;;;;:::i;:::-;24709:15;;:56;;;;;;;:::i;:::-;;;;-1:-1:-1;24523:554:0;;-1:-1:-1;24523:554:0;;-1:-1:-1;;;;;24827:14:0;;;;;;:8;:14;;;;;;;;:34;;;;;24860:1;24845:12;;:16;24827:34;24823:254;;;24888:33;24917:3;24888:24;24899:12;;24888:6;:10;;:24;;;;:::i;:33::-;24882:39;;24976:12;;24963:9;;24957:3;:15;;;;:::i;:::-;24956:32;;;;:::i;:::-;24940:12;;:48;;;;;;;:::i;:::-;;;;-1:-1:-1;;25049:12:0;;25033;;25027:18;;:3;:18;:::i;:::-;25026:35;;;;:::i;:::-;25007:15;;:54;;;;;;;:::i;:::-;;;;-1:-1:-1;;24823:254:0;25097:7;;25093:71;;25123:41;25139:4;25153;25160:3;25123:15;:41::i;:::-;25181:13;25191:3;25181:13;;:::i;:::-;;;24471:735;25218:33;25234:4;25240:2;25244:6;25218:15;:33::i;:::-;22410:2849;;;;22331:2928;;;:::o;1097:191::-;1190:6;;;-1:-1:-1;;;;;1207:17:0;;;-1:-1:-1;;;;;;1207:17:0;;;;;;;1240:40;;1190:6;;;1207:17;1190:6;;1240:40;;1171:16;;1240:40;1160:128;1097:191;:::o;13901:733::-;-1:-1:-1;;;;;14041:20:0;;14033:70;;;;-1:-1:-1;;;14033:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14122:23:0;;14114:71;;;;-1:-1:-1;;;14114:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;14282:17:0;;14258:21;14282:17;;;:9;:17;;;;;;14318:23;;;;14310:74;;;;-1:-1:-1;;;14310:74:0;;15833:2:1;14310:74:0;;;15815:21:1;15872:2;15852:18;;;15845:30;15911:34;15891:18;;;15884:62;-1:-1:-1;;;15962:18:1;;;15955:36;16008:19;;14310:74:0;15631:402:1;14310:74:0;-1:-1:-1;;;;;14420:17:0;;;;;;;:9;:17;;;;;;14440:22;;;14420:42;;14484:20;;;;;;;;:30;;14456:6;;14420:17;14484:30;;14456:6;;14484:30;:::i;:::-;;;;;;;;14549:9;-1:-1:-1;;;;;14532:35:0;14541:6;-1:-1:-1;;;;;14532:35:0;;14560:6;14532:35;;;;1614:25:1;;1602:2;1587:18;;1468:177;14532:35:0;;;;;;;;14022:612;13901:733;;;:::o;20866:866::-;20949:4;20905:23;10810:18;;;:9;:18;;;;;;20905:50;;20966:25;21012:12;;20994:15;;:30;;;;:::i;:::-;20966:58;-1:-1:-1;21035:12:0;21064:20;;;:46;;-1:-1:-1;21088:22:0;;21064:46;21060:72;;;21125:7;;;20866:866::o;21060:72::-;21166:18;;:23;;21187:2;21166:23;:::i;:::-;21148:15;:41;21144:101;;;21222:18;;:23;;21243:2;21222:23;:::i;:::-;21204:41;;21144:101;21286:21;21318:33;21335:15;21318:16;:33::i;:::-;21364:18;21385:44;:21;21411:17;21385:25;:44::i;:::-;21364:65;;21440:17;21460:51;21493:17;21460:28;21475:12;;21460:10;:14;;:28;;;;:::i;:51::-;21542:1;21524:15;:19;;;21554:12;:16;;;21605:8;;21597:44;;21440:71;;-1:-1:-1;;;;;;21605:8:0;;21440:71;;21597:44;21542:1;21597:44;21440:71;21605:8;21597:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21674:8:0;;21666:58;;21583;;-1:-1:-1;;;;;;21674:8:0;;21697:21;;21666:58;;;;21697:21;21674:8;21666:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;20866:866:0:o;2676:98::-;2734:7;2761:5;2765:1;2761;:5;:::i;:::-;2754:12;2676:98;-1:-1:-1;;;2676:98:0:o;2782:::-;2840:7;2867:5;2871:1;2867;:5;:::i;21740:583::-;21890:16;;;21904:1;21890:16;;;;;;;;21866:21;;21890:16;;;;;;;;;;-1:-1:-1;21890:16:0;21866:40;;21935:4;21917;21922:1;21917:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;21917:23:0;;;-1:-1:-1;;;;;21917:23:0;;;;;21961:13;-1:-1:-1;;;;;21961:18:0;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21951:4;21956:1;21951:7;;;;;;;;:::i;:::-;;;;;;:30;-1:-1:-1;;;;;21951:30:0;;;-1:-1:-1;;;;;21951:30:0;;;;;21994:60;22011:4;22026:13;22042:11;21994:8;:60::i;:::-;22093:222;;-1:-1:-1;;;22093:222:0;;-1:-1:-1;;;;;22093:13:0;:64;;;;:222;;22172:11;;22198:1;;22242:4;;22269;;22289:15;;22093:222;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21795:528;21740:583;:::o;2570:98::-;2628:7;2655:5;2659:1;2655;: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:548::-;379:4;408:2;437;426:9;419:21;469:6;463:13;512:6;507:2;496:9;492:18;485:34;537:1;547:140;561:6;558:1;555:13;547:140;;;656:14;;;652:23;;646:30;622:17;;;641:2;618:26;611:66;576:10;;547:140;;;551:3;736:1;731:2;722:6;711:9;707:22;703:31;696:42;806:2;799;795:7;790:2;782:6;778:15;774:29;763:9;759:45;755:54;747:62;;;;267:548;;;;:::o;820:131::-;-1:-1:-1;;;;;895:31:1;;885:42;;875:70;;941:1;938;931:12;956:315;1024:6;1032;1085:2;1073:9;1064:7;1060:23;1056:32;1053:52;;;1101:1;1098;1091:12;1053:52;1140:9;1127:23;1159:31;1184:5;1159:31;:::i;:::-;1209:5;1261:2;1246:18;;;;1233:32;;-1:-1:-1;;;956:315:1:o;1650:456::-;1727:6;1735;1743;1796:2;1784:9;1775:7;1771:23;1767:32;1764:52;;;1812:1;1809;1802:12;1764:52;1851:9;1838:23;1870:31;1895:5;1870:31;:::i;:::-;1920:5;-1:-1:-1;1977:2:1;1962:18;;1949:32;1990:33;1949:32;1990:33;:::i;:::-;1650:456;;2042:7;;-1:-1:-1;;;2096:2:1;2081:18;;;;2068:32;;1650:456::o;2111:180::-;2170:6;2223:2;2211:9;2202:7;2198:23;2194:32;2191:52;;;2239:1;2236;2229:12;2191:52;-1:-1:-1;2262:23:1;;2111:180;-1:-1:-1;2111:180:1:o;2296:160::-;2361:20;;2417:13;;2410:21;2400:32;;2390:60;;2446:1;2443;2436:12;2461:315;2526:6;2534;2587:2;2575:9;2566:7;2562:23;2558:32;2555:52;;;2603:1;2600;2593:12;2555:52;2642:9;2629:23;2661:31;2686:5;2661:31;:::i;:::-;2711:5;-1:-1:-1;2735:35:1;2766:2;2751:18;;2735:35;:::i;:::-;2725:45;;2461:315;;;;;:::o;2970:247::-;3029:6;3082:2;3070:9;3061:7;3057:23;3053:32;3050:52;;;3098:1;3095;3088:12;3050:52;3137:9;3124:23;3156:31;3181:5;3156:31;:::i;3222:405::-;3297:6;3305;3313;3366:2;3354:9;3345:7;3341:23;3337:32;3334:52;;;3382:1;3379;3372:12;3334:52;3421:9;3408:23;3471:4;3464:5;3460:16;3453:5;3450:27;3440:55;;3491:1;3488;3481:12;3440:55;3514:5;3566:2;3551:18;;3538:32;;-1:-1:-1;3617:2:1;3602:18;;;3589:32;;3222:405;-1:-1:-1;;;3222:405:1:o;4074:180::-;4130:6;4183:2;4171:9;4162:7;4158:23;4154:32;4151:52;;;4199:1;4196;4189:12;4151:52;4222:26;4238:9;4222:26;:::i;4259:388::-;4327:6;4335;4388:2;4376:9;4367:7;4363:23;4359:32;4356:52;;;4404:1;4401;4394:12;4356:52;4443:9;4430:23;4462:31;4487:5;4462:31;:::i;:::-;4512:5;-1:-1:-1;4569:2:1;4554:18;;4541:32;4582:33;4541:32;4582:33;:::i;:::-;4634:7;4624:17;;;4259:388;;;;;:::o;4652:356::-;4854:2;4836:21;;;4873:18;;;4866:30;4932:34;4927:2;4912:18;;4905:62;4999:2;4984:18;;4652:356::o;5013:127::-;5074:10;5069:3;5065:20;5062:1;5055:31;5105:4;5102:1;5095:15;5129:4;5126:1;5119:15;5145:125;5210:9;;;5231:10;;;5228:36;;;5244:18;;:::i;5633:380::-;5712:1;5708:12;;;;5755;;;5776:61;;5830:4;5822:6;5818:17;5808:27;;5776:61;5883:2;5875:6;5872:14;5852:18;5849:38;5846:161;;5929:10;5924:3;5920:20;5917:1;5910:31;5964:4;5961:1;5954:15;5992:4;5989:1;5982:15;5846:161;;5633:380;;;:::o;6427:168::-;6500:9;;;6531;;6548:15;;;6542:22;;6528:37;6518:71;;6569:18;;:::i;6600:217::-;6640:1;6666;6656:132;;6710:10;6705:3;6701:20;6698:1;6691:31;6745:4;6742:1;6735:15;6773:4;6770:1;6763:15;6656:132;-1:-1:-1;6802:9:1;;6600:217::o;12474:401::-;12676:2;12658:21;;;12715:2;12695:18;;;12688:30;12754:34;12749:2;12734:18;;12727:62;-1:-1:-1;;;12820:2:1;12805:18;;12798:35;12865:3;12850:19;;12474:401::o;12880:399::-;13082:2;13064:21;;;13121:2;13101:18;;;13094:30;13160:34;13155:2;13140:18;;13133:62;-1:-1:-1;;;13226:2:1;13211:18;;13204:33;13269:3;13254:19;;12880:399::o;15498:128::-;15565:9;;;15586:11;;;15583:37;;;15600:18;;:::i;16380:127::-;16441:10;16436:3;16432:20;16429:1;16422:31;16472:4;16469:1;16462:15;16496:4;16493:1;16486:15;16512:251;16582:6;16635:2;16623:9;16614:7;16610:23;16606:32;16603:52;;;16651:1;16648;16641:12;16603:52;16683:9;16677:16;16702:31;16727:5;16702:31;:::i;16768:980::-;17030:4;17078:3;17067:9;17063:19;17109:6;17098:9;17091:25;17135:2;17173:6;17168:2;17157:9;17153:18;17146:34;17216:3;17211:2;17200:9;17196:18;17189:31;17240:6;17275;17269:13;17306:6;17298;17291:22;17344:3;17333:9;17329:19;17322:26;;17383:2;17375:6;17371:15;17357:29;;17404:1;17414:195;17428:6;17425:1;17422:13;17414:195;;;17493:13;;-1:-1:-1;;;;;17489:39:1;17477:52;;17584:15;;;;17549:12;;;;17525:1;17443:9;17414:195;;;-1:-1:-1;;;;;;;17665:32:1;;;;17660:2;17645:18;;17638:60;-1:-1:-1;;;17729:3:1;17714:19;17707:35;17626:3;16768:980;-1:-1:-1;;;16768:980:1:o

Swarm Source

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