ETH Price: $2,869.20 (-3.05%)

Token

FTDex (FTD)

Overview

Max Total Supply

1,000,000,000 FTD

Holders

299 (0.00%)

Market

Price

$0.0002 @ 0.000000 ETH

Onchain Market Cap

-

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 9 Decimals)

Balance
50,138.362348063 FTD

Value
$8.59 ( ~0.00299386628833814 ETH) [0.0050%]
0x1ebb73f5f47bcc3d7dc1dabf7284875e3ae40e07
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

FTDEX Finance is an easy-to-use built-in decentralized trading protocol that supports low swap fees and zero price impact on trades.

Contract Source Code Verified (Exact Match)

Contract Name:
FTDex

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-02-14
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;

interface IERC20 {
    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);
}

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

    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 transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, 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 _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 _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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

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

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

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    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, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract FTDex is ERC20, Ownable {
    uint256 public buyFee = 1;
    uint256 public sellFee = 1;

    address public marketingWallet = 0xF6A95617461bF29Fb7C7eA353775809F0E0f351b;

    bool public walletToWalletTransferWithoutFee = true;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;
    
    address private DEAD = 0x000000000000000000000000000000000000dEaD;

    bool    private swapping;
    uint256 public swapTokensAtAmount;

    bool    public  tradingEnabled;
    uint256 private launchedAt;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public automatedMarketMakerPairs;
    mapping (address => bool) private _isExcludedFromMaxTxLimit;

    bool    public maxTransactionLimitEnabled = true;
    uint256 private maxTransactionRateBuy  = 10; // 1%
    uint256 private maxTransactionRateSell = 10; // 1%

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event FeesUpdated(uint256 buyFee, uint256 sellFee);
    event MarketingWalletChanged(address marketingWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndSendMarketing(uint256 tokensSwapped, uint256 bnbSend);
    event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded);
    event MaxTransactionLimitRatesChanged(uint256 maxTransferRateBuy, uint256 maxTransferRateSell);
    event MaxTransactionLimitStateChanged(bool maxTransactionLimit);

    constructor () ERC20("FTDex", "FTD") 
    {       
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x1b02dA8Cb0d097eB8D57A175b88c7D8b47997506);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(0)] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[DEAD] = true;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[DEAD] = true;
        _isExcludedFromFees[address(this)] = true;
        
        _mint(owner(), 1e9 * (10 ** 9));
        swapTokensAtAmount = totalSupply() / 5000;
    }

    receive() external payable {
  	}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "Owner cannot claim native tokens");
        if (token == address(0x0)) {
            payable(msg.sender).transfer(address(this).balance);
            return;
        }
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        ERC20token.transfer(msg.sender, balance);
    }

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendETH(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 20 && _sellFee <= 30, "Max buy fee is 20% and max sell fee is 30%");
        buyFee = _buyFee;
        sellFee = _sellFee;
        emit FeesUpdated(buyFee, sellFee);
    }

    function enableWalletToWalletTransferWithoutFee(bool enable) external onlyOwner {
        require(walletToWalletTransferWithoutFee != enable, "Wallet to wallet transfer without fee is already set to that value");
        walletToWalletTransferWithoutFee = enable;
    }

    function changeMarketingWallet(address _marketingWallet) external onlyOwner {
        require(_marketingWallet != marketingWallet, "Marketing wallet is already that address");
        require(!isContract(_marketingWallet), "Marketing wallet cannot be a contract");
        marketingWallet = _marketingWallet;
        emit MarketingWalletChanged(marketingWallet);
    }

    function enableTrading() external onlyOwner {
        require(launchedAt == 0, "Trading already enabled");
        launchedAt = block.timestamp;
        tradingEnabled = true;
    }

    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(
            tradingEnabled ||
            _isExcludedFromFees[from] || 
            _isExcludedFromFees[to],
            "Trading is not enabled yet"
        );

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

        if (maxTransactionLimitEnabled) {
            if (_isExcludedFromMaxTxLimit[from] == false
                && _isExcludedFromMaxTxLimit[to] == false
            ) {
                if (from == uniswapV2Pair) {
                    require(amount <= maxTransferAmountBuy(), "AntiWhale: Transfer amount exceeds the maxTransferAmount");
                }else{
                    require(amount <= maxTransferAmountSell(), "AntiWhale: Transfer amount exceeds the maxTransferAmount");
                }
            }
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( canSwap &&
            !swapping &&
            automatedMarketMakerPairs[to]
        ) {
            swapping = true;
            
            if(contractTokenBalance > swapTokensAtAmount * 10){
                contractTokenBalance = swapTokensAtAmount * 10;
            }
            
            swapAndSendMarketing(contractTokenBalance);

            swapping = false;
        }

        bool takeFee = !swapping;

        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if(walletToWalletTransferWithoutFee && from != uniswapV2Pair && to != uniswapV2Pair) {
            takeFee = false;
        }

        if(takeFee) {
            uint256 _totalFees;
            if(from == uniswapV2Pair) {
                _totalFees = buyFee;
            } else {
                _totalFees = sellFee;
            }
        	uint256 fees = amount * _totalFees / 100;
        	
        	amount = amount - fees;

            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);

    }

    function swapAndSendMarketing(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;

        sendETH(payable(marketingWallet), newBalance);

        emit SwapAndSendMarketing(tokenAmount, newBalance);
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 100000, "SwapTokensAtAmount must be greater than 0.001% of total supply");
        swapTokensAtAmount = newAmount;
    }

    function setEnableMaxTransactionLimit(bool enable) external onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already that state");
        maxTransactionLimitEnabled = enable;
        emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled);
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
    
    function maxTransferAmountBuy() public view returns (uint256) {
        return totalSupply() * maxTransactionRateBuy / 1000;
    }

    function maxTransferAmountSell() public view returns (uint256) {
        return totalSupply() * maxTransactionRateSell / 1000;
    }

    function setMaxTransactionRates_Denominator1000(uint256 _maxTransactionRateBuy, uint256 _maxTransactionRateSell) external onlyOwner {
        require(_maxTransactionRateSell >= 1 && _maxTransactionRateBuy >= 1, "Max Transaction limit cannot be lower than 0.1% of total supply"); 
        maxTransactionRateBuy  = _maxTransactionRateBuy;
        maxTransactionRateSell = _maxTransactionRateSell;
        emit MaxTransactionLimitRatesChanged(maxTransactionRateBuy, maxTransactionRateSell);
    }

    function setExcludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner {
        require(_isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        _isExcludedFromMaxTxLimit[account] = exclude;
        emit ExcludedFromMaxTransactionLimit(account, exclude);
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingWallet","type":"address"}],"name":"MarketingWalletChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransferRateBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransferRateSell","type":"uint256"}],"name":"MaxTransactionLimitRatesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","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":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"bnbSend","type":"uint256"}],"name":"SwapAndSendMarketing","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":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"changeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","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":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"enableWalletToWalletTransferWithoutFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransferAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"setExcludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionRateBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionRateSell","type":"uint256"}],"name":"setMaxTransactionRates_Denominator1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"setSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","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":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","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":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletToWalletTransferWithoutFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600160068190556007819055600880547401f6a95617461bf29fb7c7ea353775809f0e0f351b6001600160a81b0319909116179055600b80546001600160a01b03191661dead1790556012805460ff19169091179055600a60138190556014553480156200007157600080fd5b506040518060400160405280600581526020016408ca888caf60db1b8152506040518060400160405280600381526020016211951160ea1b8152508160039081620000bd9190620007e3565b506004620000cc8282620007e3565b5050506000620000e16200043960201b60201c565b600580546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506000731b02da8cb0d097eb8d57a175b88c7d8b4799750690506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000189573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001af9190620008af565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002239190620008af565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000271573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002979190620008af565b600980546001600160a01b038086166001600160a01b03199283168117909355600a805491851691909216179055909150620002d89030906000196200043d565b620002e581600162000569565b600160116000620002fe6005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905560119093527f4ad3b33220dddc71b994a52d72c06b10862965f7d926534c05c00fb7e819e7b78054851660019081179091553084528284208054861682179055600b54909116835290822080549093168117909255600f90620003976005546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600b549091168152600f9092528082208054841660019081179091553083529120805490921617905562000414620004056005546001600160a01b031690565b670de0b6b3a764000062000655565b6113886200042160025490565b6200042d9190620008e1565b600c55506200092c9050565b3390565b6001600160a01b038316620004a55760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620005085760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200049c565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03821660009081526010602052604090205481151560ff909116151503620006015760405162461bcd60e51b815260206004820152603860248201527f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160448201527f6c72656164792073657420746f20746861742076616c7565000000000000000060648201526084016200049c565b6001600160a01b038216600081815260106020526040808220805460ff191685151590811790915590519092917fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab91a35050565b6001600160a01b038216620006ad5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016200049c565b8060026000828254620006c1919062000904565b90915550506001600160a01b03821660009081526020819052604081208054839290620006f090849062000904565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200076a57607f821691505b6020821081036200078b57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200073a57600081815260208120601f850160051c81016020861015620007ba5750805b601f850160051c820191505b81811015620007db57828155600101620007c6565b505050505050565b81516001600160401b03811115620007ff57620007ff6200073f565b620008178162000810845462000755565b8462000791565b602080601f8311600181146200084f5760008415620008365750858301515b600019600386901b1c1916600185901b178555620007db565b600085815260208120601f198616915b8281101562000880578886015182559484019460019091019084016200085f565b50858210156200089f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620008c257600080fd5b81516001600160a01b0381168114620008da57600080fd5b9392505050565b600082620008ff57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156200092657634e487b7160e01b600052601160045260246000fd5b92915050565b612258806200093c6000396000f3fe6080604052600436106102295760003560e01c806356a6cabf11610123578063a457c2d7116100ab578063c02466681161006f578063c024666814610689578063dd62ed3e146106a9578063e2f45605146106ef578063f2fde38b14610705578063f9d0831a1461072557600080fd5b8063a457c2d7146105d9578063a9059cbb146105f9578063afa4f3b214610619578063b62496f514610639578063bb85c6d11461066957600080fd5b8063715018a6116100f2578063715018a61461055c57806375f0a874146105715780638a8c523c146105915780638da5cb5b146105a657806395d89b41146105c457600080fd5b806356a6cabf146104c65780635e8217e1146104e65780636db794371461050657806370a082311461052657600080fd5b80632b14ca56116101b15780634706240211610175578063470624021461041d57806349bd5a5e146104335780634ada218b146104535780634fbee1931461046d5780635654d0b3146104a657600080fd5b80632b14ca561461039c5780632ba86bf2146103b2578063313ce567146103cc57806339509351146103e85780633d161d0f1461040857600080fd5b80631529fbbf116101f85780631529fbbf146102d55780631694505e146102f657806318160ddd1461032e57806318d9ceae1461034357806323b872dd1461037c57600080fd5b806306fdde03146102355780630795895314610260578063095ea7b314610283578063150c880c146102b357600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610745565b6040516102579190611db6565b60405180910390f35b34801561026c57600080fd5b506102756107d7565b604051908152602001610257565b34801561028f57600080fd5b506102a361029e366004611e19565b610801565b6040519015158152602001610257565b3480156102bf57600080fd5b506102d36102ce366004611e53565b610818565b005b3480156102e157600080fd5b506008546102a390600160a01b900460ff1681565b34801561030257600080fd5b50600954610316906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b34801561033a57600080fd5b50600254610275565b34801561034f57600080fd5b506102a361035e366004611e8c565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561038857600080fd5b506102a3610397366004611eb0565b610927565b3480156103a857600080fd5b5061027560075481565b3480156103be57600080fd5b506012546102a39060ff1681565b3480156103d857600080fd5b5060405160098152602001610257565b3480156103f457600080fd5b506102a3610403366004611e19565b6109d8565b34801561041457600080fd5b50610275610a14565b34801561042957600080fd5b5061027560065481565b34801561043f57600080fd5b50600a54610316906001600160a01b031681565b34801561045f57600080fd5b50600d546102a39060ff1681565b34801561047957600080fd5b506102a3610488366004611e8c565b6001600160a01b03166000908152600f602052604090205460ff1690565b3480156104b257600080fd5b506102d36104c1366004611ef1565b610a25565b3480156104d257600080fd5b506102d36104e1366004611ef1565b610b00565b3480156104f257600080fd5b506102d3610501366004611f0e565b610be4565b34801561051257600080fd5b506102d3610521366004611f0e565b610cda565b34801561053257600080fd5b50610275610541366004611e8c565b6001600160a01b031660009081526020819052604090205490565b34801561056857600080fd5b506102d3610db5565b34801561057d57600080fd5b50600854610316906001600160a01b031681565b34801561059d57600080fd5b506102d3610e29565b3480156105b257600080fd5b506005546001600160a01b0316610316565b3480156105d057600080fd5b5061024a610eb6565b3480156105e557600080fd5b506102a36105f4366004611e19565b610ec5565b34801561060557600080fd5b506102a3610614366004611e19565b610f5e565b34801561062557600080fd5b506102d3610634366004611f30565b610f6b565b34801561064557600080fd5b506102a3610654366004611e8c565b60106020526000908152604090205460ff1681565b34801561067557600080fd5b506102d3610684366004611e8c565b611025565b34801561069557600080fd5b506102d36106a4366004611e53565b611172565b3480156106b557600080fd5b506102756106c4366004611f49565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106fb57600080fd5b50610275600c5481565b34801561071157600080fd5b506102d3610720366004611e8c565b611277565b34801561073157600080fd5b506102d3610740366004611e8c565b611362565b60606003805461075490611f77565b80601f016020809104026020016040519081016040528092919081815260200182805461078090611f77565b80156107cd5780601f106107a2576101008083540402835291602001916107cd565b820191906000526020600020905b8154815290600101906020018083116107b057829003601f168201915b5050505050905090565b60006103e86014546107e860025490565b6107f29190611fc7565b6107fc9190611fe6565b905090565b600061080e33848461150a565b5060015b92915050565b6005546001600160a01b0316331461084b5760405162461bcd60e51b815260040161084290612008565b60405180910390fd5b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036108c75760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f207468617420736044820152637461746560e01b6064820152608401610842565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6001600160a01b038316600090815260016020908152604080832033845290915281205460001981146109c257828110156109b55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610842565b6109c2853385840361150a565b6109cd85858561162e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161080e918590610a0f90869061203d565b61150a565b60006103e86013546107e860025490565b6005546001600160a01b03163314610a4f5760405162461bcd60e51b815260040161084290612008565b801515600860149054906101000a900460ff16151503610ae25760405162461bcd60e51b815260206004820152604260248201527f57616c6c657420746f2077616c6c6574207472616e7366657220776974686f7560448201527f742066656520697320616c72656164792073657420746f20746861742076616c606482015261756560f01b608482015260a401610842565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6005546001600160a01b03163314610b2a5760405162461bcd60e51b815260040161084290612008565b60125460ff16151581151503610b965760405162461bcd60e51b815260206004820152602b60248201527f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960448201526a207468617420737461746560a81b6064820152608401610842565b6012805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf906020015b60405180910390a150565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b815260040161084290612008565b60018110158015610c20575060018210155b610c925760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c79006064820152608401610842565b6013829055601481905560408051838152602081018390527f2a88f79986e057b8152c19cea35cd214cf53364efbf95d5b22b37797c05be55f91015b60405180910390a15050565b6005546001600160a01b03163314610d045760405162461bcd60e51b815260040161084290612008565b60148211158015610d165750601e8111155b610d755760405162461bcd60e51b815260206004820152602a60248201527f4d617820627579206665652069732032302520616e64206d61782073656c6c206044820152696665652069732033302560b01b6064820152608401610842565b6006829055600781905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a19101610cce565b6005546001600160a01b03163314610ddf5760405162461bcd60e51b815260040161084290612008565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e535760405162461bcd60e51b815260040161084290612008565b600e5415610ea35760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610842565b42600e55600d805460ff19166001179055565b60606004805461075490611f77565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f475760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610842565b610f54338585840361150a565b5060019392505050565b600061080e33848461162e565b6005546001600160a01b03163314610f955760405162461bcd60e51b815260040161084290612008565b620186a0610fa260025490565b610fac9190611fe6565b81116110205760405162461bcd60e51b815260206004820152603e60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e30303125206f6620746f74616c20737570706c7900006064820152608401610842565b600c55565b6005546001600160a01b0316331461104f5760405162461bcd60e51b815260040161084290612008565b6008546001600160a01b03908116908216036110be5760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b6064820152608401610842565b6001600160a01b0381163b156111245760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e6044820152641d1c9858dd60da1b6064820152608401610842565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610bd9565b6005546001600160a01b0316331461119c5760405162461bcd60e51b815260040161084290612008565b6001600160a01b0382166000908152600f602052604090205481151560ff90911615150361121f5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610842565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910161091b565b6005546001600160a01b031633146112a15760405162461bcd60e51b815260040161084290612008565b6001600160a01b0381166113065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610842565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461138c5760405162461bcd60e51b815260040161084290612008565b306001600160a01b038216036113e45760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e736044820152606401610842565b6001600160a01b0381166114225760405133904780156108fc02916000818181858888f1935050505015801561141e573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561146b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148f9190612050565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190612069565b5050505b50565b6001600160a01b03831661156c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610842565b6001600160a01b0382166115cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610842565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116545760405162461bcd60e51b815260040161084290612086565b6001600160a01b03821661167a5760405162461bcd60e51b8152600401610842906120cb565b600d5460ff16806116a357506001600160a01b0383166000908152600f602052604090205460ff165b806116c657506001600160a01b0382166000908152600f602052604090205460ff165b6117125760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610842565b8060000361172b57611726838360006119a2565b505050565b60125460ff16156117e6576001600160a01b03831660009081526011602052604090205460ff1615801561177857506001600160a01b03821660009081526011602052604090205460ff16155b156117e657600a546001600160a01b03908116908416036117bf5761179b610a14565b8111156117ba5760405162461bcd60e51b81526004016108429061210e565b6117e6565b6117c76107d7565b8111156117e65760405162461bcd60e51b81526004016108429061210e565b30600090815260208190526040902054600c54811080159081906118145750600b54600160a01b900460ff16155b801561183857506001600160a01b03841660009081526010602052604090205460ff165b1561188d57600b805460ff60a01b1916600160a01b179055600c5461185e90600a611fc7565b82111561187657600c5461187390600a611fc7565b91505b61187f82611af6565b600b805460ff60a01b191690555b600b546001600160a01b0386166000908152600f602052604090205460ff600160a01b9092048216159116806118db57506001600160a01b0385166000908152600f602052604090205460ff165b156118e4575060005b600854600160a01b900460ff16801561190b5750600a546001600160a01b03878116911614155b80156119255750600a546001600160a01b03868116911614155b1561192e575060005b801561198f57600a546000906001600160a01b0390811690881603611956575060065461195b565b506007545b600060646119698388611fc7565b6119739190611fe6565b905061197f818761216b565b955061198c8830836119a2565b50505b61199a8686866119a2565b505050505050565b6001600160a01b0383166119c85760405162461bcd60e51b815260040161084290612086565b6001600160a01b0382166119ee5760405162461bcd60e51b8152600401610842906120cb565b6001600160a01b03831660009081526020819052604090205481811015611a665760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610842565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611a9d90849061203d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ae991815260200190565b60405180910390a3611503565b604080516002808252606082018352479260009291906020830190803683370190505090503081600081518110611b2f57611b2f61217e565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bac9190612194565b81600181518110611bbf57611bbf61217e565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac94790611c059086906000908690309042906004016121b1565b600060405180830381600087803b158015611c1f57600080fd5b505af1158015611c33573d6000803e3d6000fd5b5050505060008247611c45919061216b565b600854909150611c5e906001600160a01b031682611c9d565b60408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b80471015611ced5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610842565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d3a576040519150601f19603f3d011682016040523d82523d6000602084013e611d3f565b606091505b50509050806117265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610842565b600060208083528351808285015260005b81811015611de357858101830151858201604001528201611dc7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461150757600080fd5b60008060408385031215611e2c57600080fd5b8235611e3781611e04565b946020939093013593505050565b801515811461150757600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e04565b91506020830135611e8181611e45565b809150509250929050565b600060208284031215611e9e57600080fd5b8135611ea981611e04565b9392505050565b600080600060608486031215611ec557600080fd5b8335611ed081611e04565b92506020840135611ee081611e04565b929592945050506040919091013590565b600060208284031215611f0357600080fd5b8135611ea981611e45565b60008060408385031215611f2157600080fd5b50508035926020909101359150565b600060208284031215611f4257600080fd5b5035919050565b60008060408385031215611f5c57600080fd5b8235611f6781611e04565b91506020830135611e8181611e04565b600181811c90821680611f8b57607f821691505b602082108103611fab57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611fe157611fe1611fb1565b500290565b60008261200357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561081257610812611fb1565b60006020828403121561206257600080fd5b5051919050565b60006020828403121561207b57600080fd5b8151611ea981611e45565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73666572416d6f756e740000000000000000606082015260800190565b8181038181111561081257610812611fb1565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156121a657600080fd5b8151611ea981611e04565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122015784516001600160a01b0316835293830193918301916001016121dc565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122079b82416acd1f7fccbbe571c1882bd5fa9ab96c7c2ca9693345c026be5171e3264736f6c63430008100033

Deployed Bytecode

0x6080604052600436106102295760003560e01c806356a6cabf11610123578063a457c2d7116100ab578063c02466681161006f578063c024666814610689578063dd62ed3e146106a9578063e2f45605146106ef578063f2fde38b14610705578063f9d0831a1461072557600080fd5b8063a457c2d7146105d9578063a9059cbb146105f9578063afa4f3b214610619578063b62496f514610639578063bb85c6d11461066957600080fd5b8063715018a6116100f2578063715018a61461055c57806375f0a874146105715780638a8c523c146105915780638da5cb5b146105a657806395d89b41146105c457600080fd5b806356a6cabf146104c65780635e8217e1146104e65780636db794371461050657806370a082311461052657600080fd5b80632b14ca56116101b15780634706240211610175578063470624021461041d57806349bd5a5e146104335780634ada218b146104535780634fbee1931461046d5780635654d0b3146104a657600080fd5b80632b14ca561461039c5780632ba86bf2146103b2578063313ce567146103cc57806339509351146103e85780633d161d0f1461040857600080fd5b80631529fbbf116101f85780631529fbbf146102d55780631694505e146102f657806318160ddd1461032e57806318d9ceae1461034357806323b872dd1461037c57600080fd5b806306fdde03146102355780630795895314610260578063095ea7b314610283578063150c880c146102b357600080fd5b3661023057005b600080fd5b34801561024157600080fd5b5061024a610745565b6040516102579190611db6565b60405180910390f35b34801561026c57600080fd5b506102756107d7565b604051908152602001610257565b34801561028f57600080fd5b506102a361029e366004611e19565b610801565b6040519015158152602001610257565b3480156102bf57600080fd5b506102d36102ce366004611e53565b610818565b005b3480156102e157600080fd5b506008546102a390600160a01b900460ff1681565b34801561030257600080fd5b50600954610316906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b34801561033a57600080fd5b50600254610275565b34801561034f57600080fd5b506102a361035e366004611e8c565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561038857600080fd5b506102a3610397366004611eb0565b610927565b3480156103a857600080fd5b5061027560075481565b3480156103be57600080fd5b506012546102a39060ff1681565b3480156103d857600080fd5b5060405160098152602001610257565b3480156103f457600080fd5b506102a3610403366004611e19565b6109d8565b34801561041457600080fd5b50610275610a14565b34801561042957600080fd5b5061027560065481565b34801561043f57600080fd5b50600a54610316906001600160a01b031681565b34801561045f57600080fd5b50600d546102a39060ff1681565b34801561047957600080fd5b506102a3610488366004611e8c565b6001600160a01b03166000908152600f602052604090205460ff1690565b3480156104b257600080fd5b506102d36104c1366004611ef1565b610a25565b3480156104d257600080fd5b506102d36104e1366004611ef1565b610b00565b3480156104f257600080fd5b506102d3610501366004611f0e565b610be4565b34801561051257600080fd5b506102d3610521366004611f0e565b610cda565b34801561053257600080fd5b50610275610541366004611e8c565b6001600160a01b031660009081526020819052604090205490565b34801561056857600080fd5b506102d3610db5565b34801561057d57600080fd5b50600854610316906001600160a01b031681565b34801561059d57600080fd5b506102d3610e29565b3480156105b257600080fd5b506005546001600160a01b0316610316565b3480156105d057600080fd5b5061024a610eb6565b3480156105e557600080fd5b506102a36105f4366004611e19565b610ec5565b34801561060557600080fd5b506102a3610614366004611e19565b610f5e565b34801561062557600080fd5b506102d3610634366004611f30565b610f6b565b34801561064557600080fd5b506102a3610654366004611e8c565b60106020526000908152604090205460ff1681565b34801561067557600080fd5b506102d3610684366004611e8c565b611025565b34801561069557600080fd5b506102d36106a4366004611e53565b611172565b3480156106b557600080fd5b506102756106c4366004611f49565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b3480156106fb57600080fd5b50610275600c5481565b34801561071157600080fd5b506102d3610720366004611e8c565b611277565b34801561073157600080fd5b506102d3610740366004611e8c565b611362565b60606003805461075490611f77565b80601f016020809104026020016040519081016040528092919081815260200182805461078090611f77565b80156107cd5780601f106107a2576101008083540402835291602001916107cd565b820191906000526020600020905b8154815290600101906020018083116107b057829003601f168201915b5050505050905090565b60006103e86014546107e860025490565b6107f29190611fc7565b6107fc9190611fe6565b905090565b600061080e33848461150a565b5060015b92915050565b6005546001600160a01b0316331461084b5760405162461bcd60e51b815260040161084290612008565b60405180910390fd5b6001600160a01b03821660009081526011602052604090205481151560ff9091161515036108c75760405162461bcd60e51b8152602060048201526024808201527f4163636f756e7420697320616c72656164792073657420746f207468617420736044820152637461746560e01b6064820152608401610842565b6001600160a01b038216600081815260116020908152604091829020805460ff191685151590811790915591519182527f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c1091015b60405180910390a25050565b6001600160a01b038316600090815260016020908152604080832033845290915281205460001981146109c257828110156109b55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610842565b6109c2853385840361150a565b6109cd85858561162e565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161080e918590610a0f90869061203d565b61150a565b60006103e86013546107e860025490565b6005546001600160a01b03163314610a4f5760405162461bcd60e51b815260040161084290612008565b801515600860149054906101000a900460ff16151503610ae25760405162461bcd60e51b815260206004820152604260248201527f57616c6c657420746f2077616c6c6574207472616e7366657220776974686f7560448201527f742066656520697320616c72656164792073657420746f20746861742076616c606482015261756560f01b608482015260a401610842565b60088054911515600160a01b0260ff60a01b19909216919091179055565b6005546001600160a01b03163314610b2a5760405162461bcd60e51b815260040161084290612008565b60125460ff16151581151503610b965760405162461bcd60e51b815260206004820152602b60248201527f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960448201526a207468617420737461746560a81b6064820152608401610842565b6012805460ff191682151590811790915560405160ff909116151581527fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf906020015b60405180910390a150565b6005546001600160a01b03163314610c0e5760405162461bcd60e51b815260040161084290612008565b60018110158015610c20575060018210155b610c925760405162461bcd60e51b815260206004820152603f60248201527f4d6178205472616e73616374696f6e206c696d69742063616e6e6f742062652060448201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c79006064820152608401610842565b6013829055601481905560408051838152602081018390527f2a88f79986e057b8152c19cea35cd214cf53364efbf95d5b22b37797c05be55f91015b60405180910390a15050565b6005546001600160a01b03163314610d045760405162461bcd60e51b815260040161084290612008565b60148211158015610d165750601e8111155b610d755760405162461bcd60e51b815260206004820152602a60248201527f4d617820627579206665652069732032302520616e64206d61782073656c6c206044820152696665652069732033302560b01b6064820152608401610842565b6006829055600781905560408051838152602081018390527f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a19101610cce565b6005546001600160a01b03163314610ddf5760405162461bcd60e51b815260040161084290612008565b6005546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600580546001600160a01b0319169055565b6005546001600160a01b03163314610e535760405162461bcd60e51b815260040161084290612008565b600e5415610ea35760405162461bcd60e51b815260206004820152601760248201527f54726164696e6720616c726561647920656e61626c65640000000000000000006044820152606401610842565b42600e55600d805460ff19166001179055565b60606004805461075490611f77565b3360009081526001602090815260408083206001600160a01b038616845290915281205482811015610f475760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610842565b610f54338585840361150a565b5060019392505050565b600061080e33848461162e565b6005546001600160a01b03163314610f955760405162461bcd60e51b815260040161084290612008565b620186a0610fa260025490565b610fac9190611fe6565b81116110205760405162461bcd60e51b815260206004820152603e60248201527f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460448201527f6572207468616e20302e30303125206f6620746f74616c20737570706c7900006064820152608401610842565b600c55565b6005546001600160a01b0316331461104f5760405162461bcd60e51b815260040161084290612008565b6008546001600160a01b03908116908216036110be5760405162461bcd60e51b815260206004820152602860248201527f4d61726b6574696e672077616c6c657420697320616c72656164792074686174604482015267206164647265737360c01b6064820152608401610842565b6001600160a01b0381163b156111245760405162461bcd60e51b815260206004820152602560248201527f4d61726b6574696e672077616c6c65742063616e6e6f74206265206120636f6e6044820152641d1c9858dd60da1b6064820152608401610842565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527fa964ba5c52d7e7bfcae4fb1ae4db9f211756d0e618e85fac5283b882a39e7a0b90602001610bd9565b6005546001600160a01b0316331461119c5760405162461bcd60e51b815260040161084290612008565b6001600160a01b0382166000908152600f602052604090205481151560ff90911615150361121f5760405162461bcd60e51b815260206004820152602a60248201527f4163636f756e7420697320616c7265616479207468652076616c7565206f6620604482015269276578636c756465642760b01b6064820152608401610842565b6001600160a01b0382166000818152600f6020908152604091829020805460ff191685151590811790915591519182527f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7910161091b565b6005546001600160a01b031633146112a15760405162461bcd60e51b815260040161084290612008565b6001600160a01b0381166113065760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610842565b6005546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b6005546001600160a01b0316331461138c5760405162461bcd60e51b815260040161084290612008565b306001600160a01b038216036113e45760405162461bcd60e51b815260206004820181905260248201527f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e736044820152606401610842565b6001600160a01b0381166114225760405133904780156108fc02916000818181858888f1935050505015801561141e573d6000803e3d6000fd5b5050565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a0823190602401602060405180830381865afa15801561146b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148f9190612050565b60405163a9059cbb60e01b8152336004820152602481018290529091506001600160a01b0383169063a9059cbb906044016020604051808303816000875af11580156114df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115039190612069565b5050505b50565b6001600160a01b03831661156c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610842565b6001600160a01b0382166115cd5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610842565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166116545760405162461bcd60e51b815260040161084290612086565b6001600160a01b03821661167a5760405162461bcd60e51b8152600401610842906120cb565b600d5460ff16806116a357506001600160a01b0383166000908152600f602052604090205460ff165b806116c657506001600160a01b0382166000908152600f602052604090205460ff165b6117125760405162461bcd60e51b815260206004820152601a60248201527f54726164696e67206973206e6f7420656e61626c6564207965740000000000006044820152606401610842565b8060000361172b57611726838360006119a2565b505050565b60125460ff16156117e6576001600160a01b03831660009081526011602052604090205460ff1615801561177857506001600160a01b03821660009081526011602052604090205460ff16155b156117e657600a546001600160a01b03908116908416036117bf5761179b610a14565b8111156117ba5760405162461bcd60e51b81526004016108429061210e565b6117e6565b6117c76107d7565b8111156117e65760405162461bcd60e51b81526004016108429061210e565b30600090815260208190526040902054600c54811080159081906118145750600b54600160a01b900460ff16155b801561183857506001600160a01b03841660009081526010602052604090205460ff165b1561188d57600b805460ff60a01b1916600160a01b179055600c5461185e90600a611fc7565b82111561187657600c5461187390600a611fc7565b91505b61187f82611af6565b600b805460ff60a01b191690555b600b546001600160a01b0386166000908152600f602052604090205460ff600160a01b9092048216159116806118db57506001600160a01b0385166000908152600f602052604090205460ff165b156118e4575060005b600854600160a01b900460ff16801561190b5750600a546001600160a01b03878116911614155b80156119255750600a546001600160a01b03868116911614155b1561192e575060005b801561198f57600a546000906001600160a01b0390811690881603611956575060065461195b565b506007545b600060646119698388611fc7565b6119739190611fe6565b905061197f818761216b565b955061198c8830836119a2565b50505b61199a8686866119a2565b505050505050565b6001600160a01b0383166119c85760405162461bcd60e51b815260040161084290612086565b6001600160a01b0382166119ee5760405162461bcd60e51b8152600401610842906120cb565b6001600160a01b03831660009081526020819052604090205481811015611a665760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610842565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290611a9d90849061203d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611ae991815260200190565b60405180910390a3611503565b604080516002808252606082018352479260009291906020830190803683370190505090503081600081518110611b2f57611b2f61217e565b6001600160a01b03928316602091820292909201810191909152600954604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015611b88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bac9190612194565b81600181518110611bbf57611bbf61217e565b6001600160a01b03928316602091820292909201015260095460405163791ac94760e01b815291169063791ac94790611c059086906000908690309042906004016121b1565b600060405180830381600087803b158015611c1f57600080fd5b505af1158015611c33573d6000803e3d6000fd5b5050505060008247611c45919061216b565b600854909150611c5e906001600160a01b031682611c9d565b60408051858152602081018390527f957ad1fc6d4d41da6d1a8d37303289ef3c4b78e0285ff5df1e12070ef0e62999910160405180910390a150505050565b80471015611ced5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610842565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611d3a576040519150601f19603f3d011682016040523d82523d6000602084013e611d3f565b606091505b50509050806117265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610842565b600060208083528351808285015260005b81811015611de357858101830151858201604001528201611dc7565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461150757600080fd5b60008060408385031215611e2c57600080fd5b8235611e3781611e04565b946020939093013593505050565b801515811461150757600080fd5b60008060408385031215611e6657600080fd5b8235611e7181611e04565b91506020830135611e8181611e45565b809150509250929050565b600060208284031215611e9e57600080fd5b8135611ea981611e04565b9392505050565b600080600060608486031215611ec557600080fd5b8335611ed081611e04565b92506020840135611ee081611e04565b929592945050506040919091013590565b600060208284031215611f0357600080fd5b8135611ea981611e45565b60008060408385031215611f2157600080fd5b50508035926020909101359150565b600060208284031215611f4257600080fd5b5035919050565b60008060408385031215611f5c57600080fd5b8235611f6781611e04565b91506020830135611e8181611e04565b600181811c90821680611f8b57607f821691505b602082108103611fab57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611fe157611fe1611fb1565b500290565b60008261200357634e487b7160e01b600052601260045260246000fd5b500490565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b8082018082111561081257610812611fb1565b60006020828403121561206257600080fd5b5051919050565b60006020828403121561207b57600080fd5b8151611ea981611e45565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560408201527f647320746865206d61785472616e73666572416d6f756e740000000000000000606082015260800190565b8181038181111561081257610812611fb1565b634e487b7160e01b600052603260045260246000fd5b6000602082840312156121a657600080fd5b8151611ea981611e04565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156122015784516001600160a01b0316835293830193918301916001016121dc565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122079b82416acd1f7fccbbe571c1882bd5fa9ab96c7c2ca9693345c026be5171e3264736f6c63430008100033

Deployed Bytecode Sourcemap

15407:10253:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2736:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24683:134;;;;;;;;;;;;;:::i;:::-;;;713:25:1;;;701:2;686:18;24683:134:0;567:177:1;3649:169:0;;;;;;;;;;-1:-1:-1;3649:169:0;;;;;:::i;:::-;;:::i;:::-;;;1370:14:1;;1363:22;1345:41;;1333:2;1318:18;3649:169:0;1205:187:1;25331:326:0;;;;;;;;;;-1:-1:-1;25331:326:0;;;;;:::i;:::-;;:::i;:::-;;15598:51;;;;;;;;;;-1:-1:-1;15598:51:0;;;;-1:-1:-1;;;15598:51:0;;;;;;15658:41;;;;;;;;;;-1:-1:-1;15658:41:0;;;;-1:-1:-1;;;;;15658:41:0;;;;;;-1:-1:-1;;;;;2098:32:1;;;2080:51;;2068:2;2053:18;15658:41:0;1907:230:1;3056:108:0;;;;;;;;;;-1:-1:-1;3144:12:0;;3056:108;;24390:141;;;;;;;;;;-1:-1:-1;24390:141:0;;;;;:::i;:::-;-1:-1:-1;;;;;24489:34:0;24465:4;24489:34;;;:25;:34;;;;;;;;;24390:141;3826:573;;;;;;;;;;-1:-1:-1;3826:573:0;;;;;:::i;:::-;;:::i;15479:26::-;;;;;;;;;;;;;;;;16160:48;;;;;;;;;;-1:-1:-1;16160:48:0;;;;;;;;2956:92;;;;;;;;;;-1:-1:-1;2956:92:0;;3039:1;2997:36:1;;2985:2;2970:18;2956:92:0;2855:184:1;4407:215:0;;;;;;;;;;-1:-1:-1;4407:215:0;;;;;:::i;:::-;;:::i;24543:132::-;;;;;;;;;;;;;:::i;15447:25::-;;;;;;;;;;;;;;;;15706:29;;;;;;;;;;-1:-1:-1;15706:29:0;;;;-1:-1:-1;;;;;15706:29:0;;;15895:30;;;;;;;;;;-1:-1:-1;15895:30:0;;;;;;;;19503:125;;;;;;;;;;-1:-1:-1;19503:125:0;;;;;:::i;:::-;-1:-1:-1;;;;;19592:28:0;19568:4;19592:28;;;:19;:28;;;;;;;;;19503:125;19923:272;;;;;;;;;;-1:-1:-1;19923:272:0;;;;;:::i;:::-;;:::i;24080:302::-;;;;;;;;;;-1:-1:-1;24080:302:0;;;;;:::i;:::-;;:::i;24825:498::-;;;;;;;;;;-1:-1:-1;24825:498:0;;;;;:::i;:::-;;:::i;19636:279::-;;;;;;;;;;-1:-1:-1;19636:279:0;;;;;:::i;:::-;;:::i;3172:127::-;;;;;;;;;;-1:-1:-1;3172:127:0;;;;;:::i;:::-;-1:-1:-1;;;;;3273:18:0;3246:7;3273:18;;;;;;;;;;;;3172:127;1923:148;;;;;;;;;;;;;:::i;15514:75::-;;;;;;;;;;-1:-1:-1;15514:75:0;;;;-1:-1:-1;;;;;15514:75:0;;;20584:185;;;;;;;;;;;;;:::i;1709:79::-;;;;;;;;;;-1:-1:-1;1774:6:0;;-1:-1:-1;;;;;1774:6:0;1709:79;;2844:104;;;;;;;;;;;;;:::i;4630:413::-;;;;;;;;;;-1:-1:-1;4630:413:0;;;;;:::i;:::-;;:::i;3307:175::-;;;;;;;;;;-1:-1:-1;3307:175:0;;;;;:::i;:::-;;:::i;23835:237::-;;;;;;;;;;-1:-1:-1;23835:237:0;;;;;:::i;:::-;;:::i;16027:58::-;;;;;;;;;;-1:-1:-1;16027:58:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;20203:373;;;;;;;;;;-1:-1:-1;20203:373:0;;;;;:::i;:::-;;:::i;19203:292::-;;;;;;;;;;-1:-1:-1;19203:292:0;;;;;:::i;:::-;;:::i;3490:151::-;;;;;;;;;;-1:-1:-1;3490:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;3606:18:0;;;3579:7;3606:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3490:151;15853:33;;;;;;;;;;;;;;;;2079:244;;;;;;;;;;-1:-1:-1;2079:244:0;;;;;:::i;:::-;;:::i;17992:441::-;;;;;;;;;;-1:-1:-1;17992:441:0;;;;;:::i;:::-;;:::i;2736:100::-;2790:13;2823:5;2816:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2736:100;:::o;24683:134::-;24737:7;24805:4;24780:22;;24764:13;3144:12;;;3056:108;24764:13;:38;;;;:::i;:::-;:45;;;;:::i;:::-;24757:52;;24683:134;:::o;3649:169::-;3732:4;3749:39;1112:10;3772:7;3781:6;3749:8;:39::i;:::-;-1:-1:-1;3806:4:0;3649:169;;;;;:::o;25331:326::-;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;25443:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;:45;::::1;;:34;::::0;;::::1;:45;;::::0;25435:94:::1;;;::::0;-1:-1:-1;;;25435:94:0;;5804:2:1;25435:94:0::1;::::0;::::1;5786:21:1::0;5843:2;5823:18;;;5816:30;5882:34;5862:18;;;5855:62;-1:-1:-1;;;5933:18:1;;;5926:34;5977:19;;25435:94:0::1;5602:400:1::0;25435:94:0::1;-1:-1:-1::0;;;;;25540:34:0;::::1;;::::0;;;:25:::1;:34;::::0;;;;;;;;:44;;-1:-1:-1;;25540:44:0::1;::::0;::::1;;::::0;;::::1;::::0;;;25600:49;;1345:41:1;;;25600:49:0::1;::::0;1318:18:1;25600:49:0::1;;;;;;;;25331:326:::0;;:::o;3826:573::-;-1:-1:-1;;;;;4010:19:0;;3966:4;4010:19;;;:11;:19;;;;;;;;1112:10;4010:33;;;;;;;;-1:-1:-1;;4058:37:0;;4054:265;;4140:6;4120:16;:26;;4112:79;;;;-1:-1:-1;;;4112:79:0;;6209:2:1;4112:79:0;;;6191:21:1;6248:2;6228:18;;;6221:30;6287:34;6267:18;;;6260:62;-1:-1:-1;;;6338:18:1;;;6331:38;6386:19;;4112:79:0;6007:404:1;4112:79:0;4235:57;4244:6;1112:10;4285:6;4266:16;:25;4235:8;:57::i;:::-;4331:36;4341:6;4349:9;4360:6;4331:9;:36::i;:::-;-1:-1:-1;4387:4:0;;3826:573;-1:-1:-1;;;;3826:573:0:o;4407:215::-;1112:10;4495:4;4544:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4544:34:0;;;;;;;;;;4495:4;;4512:80;;4535:7;;4544:47;;4581:10;;4544:47;:::i;:::-;4512:8;:80::i;24543:132::-;24596:7;24663:4;24639:21;;24623:13;3144:12;;;3056:108;19923:272;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;20058:6:::1;20022:42;;:32;;;;;;;;;;;:42;;::::0;20014:121:::1;;;::::0;-1:-1:-1;;;20014:121:0;;6748:2:1;20014:121:0::1;::::0;::::1;6730:21:1::0;6787:2;6767:18;;;6760:30;6826:34;6806:18;;;6799:62;6897:34;6877:18;;;6870:62;-1:-1:-1;;;6948:19:1;;;6941:33;6991:19;;20014:121:0::1;6546:470:1::0;20014:121:0::1;20146:32;:41:::0;;;::::1;;-1:-1:-1::0;;;20146:41:0::1;-1:-1:-1::0;;;;20146:41:0;;::::1;::::0;;;::::1;::::0;;19923:272::o;24080:302::-;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;24179:26:::1;::::0;::::1;;24169:36;;::::0;::::1;;::::0;24161:92:::1;;;::::0;-1:-1:-1;;;24161:92:0;;7223:2:1;24161:92:0::1;::::0;::::1;7205:21:1::0;7262:2;7242:18;;;7235:30;7301:34;7281:18;;;7274:62;-1:-1:-1;;;7352:18:1;;;7345:41;7403:19;;24161:92:0::1;7021:407:1::0;24161:92:0::1;24264:26;:35:::0;;-1:-1:-1;;24264:35:0::1;::::0;::::1;;::::0;;::::1;::::0;;;24315:59:::1;::::0;24264:35:::1;24347:26:::0;;;1370:14:1;1363:22;1345:41;;24315:59:0::1;::::0;1333:2:1;1318:18;24315:59:0::1;;;;;;;;24080:302:::0;:::o;24825:498::-;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;25003:1:::1;24976:23;:28;;:59;;;;;25034:1;25008:22;:27;;24976:59;24968:135;;;::::0;-1:-1:-1;;;24968:135:0;;7635:2:1;24968:135:0::1;::::0;::::1;7617:21:1::0;7674:2;7654:18;;;7647:30;7713:34;7693:18;;;7686:62;7784:33;7764:18;;;7757:61;7835:19;;24968:135:0::1;7433:427:1::0;24968:135:0::1;25115:21;:47:::0;;;25173:22:::1;:48:::0;;;25237:78:::1;::::0;;8039:25:1;;;8095:2;8080:18;;8073:34;;;25237:78:0::1;::::0;8012:18:1;25237:78:0::1;;;;;;;;24825:498:::0;;:::o;19636:279::-;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;19740:2:::1;19729:7;:13;;:31;;;;;19758:2;19746:8;:14;;19729:31;19721:86;;;::::0;-1:-1:-1;;;19721:86:0;;8320:2:1;19721:86:0::1;::::0;::::1;8302:21:1::0;8359:2;8339:18;;;8332:30;8398:34;8378:18;;;8371:62;-1:-1:-1;;;8449:18:1;;;8442:40;8499:19;;19721:86:0::1;8118:406:1::0;19721:86:0::1;19818:6;:16:::0;;;19845:7:::1;:18:::0;;;19879:28:::1;::::0;;8039:25:1;;;8095:2;8080:18;;8073:34;;;19879:28:0::1;::::0;8012:18:1;19879:28:0::1;7865:248:1::0;1923:148:0;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;2014:6:::1;::::0;1993:40:::1;::::0;2030:1:::1;::::0;-1:-1:-1;;;;;2014:6:0::1;::::0;1993:40:::1;::::0;2030:1;;1993:40:::1;2044:6;:19:::0;;-1:-1:-1;;;;;;2044:19:0::1;::::0;;1923:148::o;20584:185::-;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;20647:10:::1;::::0;:15;20639:51:::1;;;::::0;-1:-1:-1;;;20639:51:0;;8731:2:1;20639:51:0::1;::::0;::::1;8713:21:1::0;8770:2;8750:18;;;8743:30;8809:25;8789:18;;;8782:53;8852:18;;20639:51:0::1;8529:347:1::0;20639:51:0::1;20714:15;20701:10;:28:::0;20740:14:::1;:21:::0;;-1:-1:-1;;20740:21:0::1;20757:4;20740:21;::::0;;20584:185::o;2844:104::-;2900:13;2933:7;2926:14;;;;;:::i;4630:413::-;1112:10;4723:4;4767:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;4767:34:0;;;;;;;;;;4820:35;;;;4812:85;;;;-1:-1:-1;;;4812:85:0;;9083:2:1;4812:85:0;;;9065:21:1;9122:2;9102:18;;;9095:30;9161:34;9141:18;;;9134:62;-1:-1:-1;;;9212:18:1;;;9205:35;9257:19;;4812:85:0;8881:401:1;4812:85:0;4933:67;1112:10;4956:7;4984:15;4965:16;:34;4933:8;:67::i;:::-;-1:-1:-1;5031:4:0;;4630:413;-1:-1:-1;;;4630:413:0:o;3307:175::-;3393:4;3410:42;1112:10;3434:9;3445:6;3410:9;:42::i;23835:237::-;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;23950:6:::1;23934:13;3144:12:::0;;;3056:108;23934:13:::1;:22;;;;:::i;:::-;23922:9;:34;23914:109;;;::::0;-1:-1:-1;;;23914:109:0;;9489:2:1;23914:109:0::1;::::0;::::1;9471:21:1::0;9528:2;9508:18;;;9501:30;9567:34;9547:18;;;9540:62;9638:32;9618:18;;;9611:60;9688:19;;23914:109:0::1;9287:426:1::0;23914:109:0::1;24034:18;:30:::0;23835:237::o;20203:373::-;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;20318:15:::1;::::0;-1:-1:-1;;;;;20318:15:0;;::::1;20298:35:::0;;::::1;::::0;20290:88:::1;;;::::0;-1:-1:-1;;;20290:88:0;;9920:2:1;20290:88:0::1;::::0;::::1;9902:21:1::0;9959:2;9939:18;;;9932:30;9998:34;9978:18;;;9971:62;-1:-1:-1;;;10049:18:1;;;10042:38;10097:19;;20290:88:0::1;9718:404:1::0;20290:88:0::1;-1:-1:-1::0;;;;;18525:19:0;;;:23;20389:79:::1;;;::::0;-1:-1:-1;;;20389:79:0;;10329:2:1;20389:79:0::1;::::0;::::1;10311:21:1::0;10368:2;10348:18;;;10341:30;10407:34;10387:18;;;10380:62;-1:-1:-1;;;10458:18:1;;;10451:35;10503:19;;20389:79:0::1;10127:401:1::0;20389:79:0::1;20479:15;:34:::0;;-1:-1:-1;;;;;;20479:34:0::1;-1:-1:-1::0;;;;;20479:34:0;::::1;::::0;;::::1;::::0;;;20529:39:::1;::::0;2080:51:1;;;20529:39:0::1;::::0;2068:2:1;2053:18;20529:39:0::1;1907:230:1::0;19203:292:0;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;19298:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;:40;::::1;;:28;::::0;;::::1;:40;;::::0;19290:95:::1;;;::::0;-1:-1:-1;;;19290:95:0;;10735:2:1;19290:95:0::1;::::0;::::1;10717:21:1::0;10774:2;10754:18;;;10747:30;10813:34;10793:18;;;10786:62;-1:-1:-1;;;10864:18:1;;;10857:40;10914:19;;19290:95:0::1;10533:406:1::0;19290:95:0::1;-1:-1:-1::0;;;;;19396:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;19396:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;19453:34;;1345:41:1;;;19453:34:0::1;::::0;1318:18:1;19453:34:0::1;1205:187:1::0;2079:244:0;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2168:22:0;::::1;2160:73;;;::::0;-1:-1:-1;;;2160:73:0;;11146:2:1;2160:73:0::1;::::0;::::1;11128:21:1::0;11185:2;11165:18;;;11158:30;11224:34;11204:18;;;11197:62;-1:-1:-1;;;11275:18:1;;;11268:36;11321:19;;2160:73:0::1;10944:402:1::0;2160:73:0::1;2270:6;::::0;2249:38:::1;::::0;-1:-1:-1;;;;;2249:38:0;;::::1;::::0;2270:6:::1;::::0;2249:38:::1;::::0;2270:6:::1;::::0;2249:38:::1;2298:6;:17:::0;;-1:-1:-1;;;;;;2298:17:0::1;-1:-1:-1::0;;;;;2298:17:0;;;::::1;::::0;;;::::1;::::0;;2079:244::o;17992:441::-;1836:6;;-1:-1:-1;;;;;1836:6:0;1112:10;1836:22;1828:67;;;;-1:-1:-1;;;1828:67:0;;;;;;;:::i;:::-;18088:4:::1;-1:-1:-1::0;;;;;18071:22:0;::::1;::::0;18063:67:::1;;;::::0;-1:-1:-1;;;18063:67:0;;11553:2:1;18063:67:0::1;::::0;::::1;11535:21:1::0;;;11572:18;;;11565:30;11631:34;11611:18;;;11604:62;11683:18;;18063:67:0::1;11351:356:1::0;18063:67:0::1;-1:-1:-1::0;;;;;18145:21:0;::::1;18141:126;;18183:51;::::0;18191:10:::1;::::0;18212:21:::1;18183:51:::0;::::1;;;::::0;::::1;::::0;;;18212:21;18191:10;18183:51;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;17992:441:::0;:::o;18141:126::-:1;18339:35;::::0;-1:-1:-1;;;18339:35:0;;18368:4:::1;18339:35;::::0;::::1;2080:51:1::0;18304:5:0;;18277:17:::1;::::0;-1:-1:-1;;;;;18339:20:0;::::1;::::0;::::1;::::0;2053:18:1;;18339:35:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18385:40;::::0;-1:-1:-1;;;18385:40:0;;18405:10:::1;18385:40;::::0;::::1;12075:51:1::0;12142:18;;;12135:34;;;18321:53:0;;-1:-1:-1;;;;;;18385:19:0;::::1;::::0;::::1;::::0;12048:18:1;;18385:40:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18052:381;;1906:1;17992:441:::0;:::o;6798:380::-;-1:-1:-1;;;;;6934:19:0;;6926:68;;;;-1:-1:-1;;;6926:68:0;;12632:2:1;6926:68:0;;;12614:21:1;12671:2;12651:18;;;12644:30;12710:34;12690:18;;;12683:62;-1:-1:-1;;;12761:18:1;;;12754:34;12805:19;;6926:68:0;12430:400:1;6926:68:0;-1:-1:-1;;;;;7013:21:0;;7005:68;;;;-1:-1:-1;;;7005:68:0;;13037:2:1;7005:68:0;;;13019:21:1;13076:2;13056:18;;;13049:30;13115:34;13095:18;;;13088:62;-1:-1:-1;;;13166:18:1;;;13159:32;13208:19;;7005:68:0;12835:398:1;7005:68:0;-1:-1:-1;;;;;7086:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7138:32;;713:25:1;;;7138:32:0;;686:18:1;7138:32:0;;;;;;;6798:380;;;:::o;20777:2368::-;-1:-1:-1;;;;;20910:18:0;;20902:68;;;;-1:-1:-1;;;20902:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;20989:16:0;;20981:64;;;;-1:-1:-1;;;20981:64:0;;;;;;;:::i;:::-;21080:14;;;;;:56;;-1:-1:-1;;;;;;21111:25:0;;;;;;:19;:25;;;;;;;;21080:56;:97;;;-1:-1:-1;;;;;;21154:23:0;;;;;;:19;:23;;;;;;;;21080:97;21058:173;;;;-1:-1:-1;;;21058:173:0;;14250:2:1;21058:173:0;;;14232:21:1;14289:2;14269:18;;;14262:30;14328:28;14308:18;;;14301:56;14374:18;;21058:173:0;14048:350:1;21058:173:0;21247:6;21257:1;21247:11;21244:92;;21275:28;21291:4;21297:2;21301:1;21275:15;:28::i;:::-;20777:2368;;;:::o;21244:92::-;21352:26;;;;21348:531;;;-1:-1:-1;;;;;21399:31:0;;;;;;:25;:31;;;;;;;;:40;;;:99;;-1:-1:-1;;;;;;21460:29:0;;;;;;:25;:29;;;;;;;;:38;21399:99;21395:473;;;21545:13;;-1:-1:-1;;;;;21545:13:0;;;21537:21;;;;21533:320;;21601:22;:20;:22::i;:::-;21591:6;:32;;21583:101;;;;-1:-1:-1;;;21583:101:0;;;;;;;:::i;:::-;21533:320;;;21749:23;:21;:23::i;:::-;21739:6;:33;;21731:102;;;;-1:-1:-1;;;21731:102:0;;;;;;;:::i;:::-;21934:4;21885:28;3273:18;;;;;;;;;;;21992;;21968:42;;;;;;;22027:33;;-1:-1:-1;22052:8:0;;-1:-1:-1;;;22052:8:0;;;;22051:9;22027:33;:79;;;;-1:-1:-1;;;;;;22077:29:0;;;;;;:25;:29;;;;;;;;22027:79;22023:400;;;22133:8;:15;;-1:-1:-1;;;;22133:15:0;-1:-1:-1;;;22133:15:0;;;22203:18;;:23;;22224:2;22203:23;:::i;:::-;22180:20;:46;22177:131;;;22269:18;;:23;;22290:2;22269:23;:::i;:::-;22246:46;;22177:131;22336:42;22357:20;22336;:42::i;:::-;22395:8;:16;;-1:-1:-1;;;;22395:16:0;;;22023:400;22451:8;;-1:-1:-1;;;;;22475:25:0;;22435:12;22475:25;;;:19;:25;;;;;;22451:8;-1:-1:-1;;;22451:8:0;;;;;22450:9;;22475:25;;:52;;-1:-1:-1;;;;;;22504:23:0;;;;;;:19;:23;;;;;;;;22475:52;22472:99;;;-1:-1:-1;22554:5:0;22472:99;22586:32;;-1:-1:-1;;;22586:32:0;;;;:57;;;;-1:-1:-1;22630:13:0;;-1:-1:-1;;;;;22622:21:0;;;22630:13;;22622:21;;22586:57;:80;;;;-1:-1:-1;22653:13:0;;-1:-1:-1;;;;;22647:19:0;;;22653:13;;22647:19;;22586:80;22583:127;;;-1:-1:-1;22693:5:0;22583:127;22725:7;22722:368;;;22793:13;;22749:18;;-1:-1:-1;;;;;22793:13:0;;;22785:21;;;;22782:141;;-1:-1:-1;22840:6:0;;22782:141;;;-1:-1:-1;22900:7:0;;22782:141;22934:12;22971:3;22949:19;22958:10;22949:6;:19;:::i;:::-;:25;;;;:::i;:::-;22934:40;-1:-1:-1;23006:13:0;22934:40;23006:6;:13;:::i;:::-;22997:22;;23036:42;23052:4;23066;23073;23036:15;:42::i;:::-;22734:356;;22722:368;23102:33;23118:4;23124:2;23128:6;23102:15;:33::i;:::-;20891:2254;;;20777:2368;;;:::o;5051:733::-;-1:-1:-1;;;;;5191:20:0;;5183:70;;;;-1:-1:-1;;;5183:70:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5272:23:0;;5264:71;;;;-1:-1:-1;;;5264:71:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5432:17:0;;5408:21;5432:17;;;;;;;;;;;5468:23;;;;5460:74;;;;-1:-1:-1;;;5460:74:0;;15163:2:1;5460:74:0;;;15145:21:1;15202:2;15182:18;;;15175:30;15241:34;15221:18;;;15214:62;-1:-1:-1;;;15292:18:1;;;15285:36;15338:19;;5460:74:0;14961:402:1;5460:74:0;-1:-1:-1;;;;;5570:17:0;;;:9;:17;;;;;;;;;;;5590:22;;;5570:42;;5634:20;;;;;;;;:30;;5606:6;;5570:9;5634:30;;5606:6;;5634:30;:::i;:::-;;;;;;;;5699:9;-1:-1:-1;;;;;5682:35:0;5691:6;-1:-1:-1;;;;;5682:35:0;;5710:6;5682:35;;;;713:25:1;;701:2;686:18;;567:177;5682:35:0;;;;;;;;5730:46;20777:2368;23153:674;23306:16;;;23320:1;23306:16;;;;;;;;23248:21;;23223:22;;23306:16;23320:1;23306:16;;;;;;;;;;-1:-1:-1;23306:16:0;23282:40;;23351:4;23333;23338:1;23333:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23333:23:0;;;:7;;;;;;;;;;:23;;;;23377:15;;:22;;;-1:-1:-1;;;23377:22:0;;;;:15;;;;;:20;;:22;;;;;23333:7;;23377:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23367:4;23372:1;23367:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;23367:32:0;;;:7;;;;;;;;;:32;23412:15;;:214;;-1:-1:-1;;;23412:214:0;;:15;;;:66;;:214;;23493:11;;23412:15;;23563:4;;23590;;23610:15;;23412:214;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23639:18;23684:14;23660:21;:38;;;;:::i;:::-;23727:15;;23639:59;;-1:-1:-1;23711:45:0;;-1:-1:-1;;;;;23727:15:0;23639:59;23711:7;:45::i;:::-;23774;;;8039:25:1;;;8095:2;8080:18;;8073:34;;;23774:45:0;;8012:18:1;23774:45:0;;;;;;;23212:615;;;23153:674;:::o;18564:315::-;18677:6;18652:21;:31;;18644:73;;;;-1:-1:-1;;;18644:73:0;;17075:2:1;18644:73:0;;;17057:21:1;17114:2;17094:18;;;17087:30;17153:31;17133:18;;;17126:59;17202:18;;18644:73:0;16873:353:1;18644:73:0;18731:12;18749:9;-1:-1:-1;;;;;18749:14:0;18771:6;18749:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18730:52;;;18801:7;18793:78;;;;-1:-1:-1;;;18793:78:0;;17643:2:1;18793:78:0;;;17625:21:1;17682:2;17662:18;;;17655:30;17721:34;17701:18;;;17694:62;17792:28;17772:18;;;17765:56;17838:19;;18793:78:0;17441:422:1;14:548;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:315;953:6;961;1014:2;1002:9;993:7;989:23;985:32;982:52;;;1030:1;1027;1020:12;982:52;1069:9;1056:23;1088:31;1113:5;1088:31;:::i;:::-;1138:5;1190:2;1175:18;;;;1162:32;;-1:-1:-1;;;885:315:1:o;1397:118::-;1483:5;1476:13;1469:21;1462:5;1459:32;1449:60;;1505:1;1502;1495:12;1520:382;1585:6;1593;1646:2;1634:9;1625:7;1621:23;1617:32;1614:52;;;1662:1;1659;1652:12;1614:52;1701:9;1688:23;1720:31;1745:5;1720:31;:::i;:::-;1770:5;-1:-1:-1;1827:2:1;1812:18;;1799:32;1840:30;1799:32;1840:30;:::i;:::-;1889:7;1879:17;;;1520:382;;;;;:::o;2142:247::-;2201:6;2254:2;2242:9;2233:7;2229:23;2225:32;2222:52;;;2270:1;2267;2260:12;2222:52;2309:9;2296:23;2328:31;2353:5;2328:31;:::i;:::-;2378:5;2142:247;-1:-1:-1;;;2142:247:1:o;2394:456::-;2471:6;2479;2487;2540:2;2528:9;2519:7;2515:23;2511:32;2508:52;;;2556:1;2553;2546:12;2508:52;2595:9;2582:23;2614:31;2639:5;2614:31;:::i;:::-;2664:5;-1:-1:-1;2721:2:1;2706:18;;2693:32;2734:33;2693:32;2734:33;:::i;:::-;2394:456;;2786:7;;-1:-1:-1;;;2840:2:1;2825:18;;;;2812:32;;2394:456::o;3252:241::-;3308:6;3361:2;3349:9;3340:7;3336:23;3332:32;3329:52;;;3377:1;3374;3367:12;3329:52;3416:9;3403:23;3435:28;3457:5;3435:28;:::i;3498:248::-;3566:6;3574;3627:2;3615:9;3606:7;3602:23;3598:32;3595:52;;;3643:1;3640;3633:12;3595:52;-1:-1:-1;;3666:23:1;;;3736:2;3721:18;;;3708:32;;-1:-1:-1;3498:248:1:o;3751:180::-;3810:6;3863:2;3851:9;3842:7;3838:23;3834:32;3831:52;;;3879:1;3876;3869:12;3831:52;-1:-1:-1;3902:23:1;;3751:180;-1:-1:-1;3751:180:1:o;3936:388::-;4004:6;4012;4065:2;4053:9;4044:7;4040:23;4036:32;4033:52;;;4081:1;4078;4071:12;4033:52;4120:9;4107:23;4139:31;4164:5;4139:31;:::i;:::-;4189:5;-1:-1:-1;4246:2:1;4231:18;;4218:32;4259:33;4218:32;4259:33;:::i;4329:380::-;4408:1;4404:12;;;;4451;;;4472:61;;4526:4;4518:6;4514:17;4504:27;;4472:61;4579:2;4571:6;4568:14;4548:18;4545:38;4542:161;;4625:10;4620:3;4616:20;4613:1;4606:31;4660:4;4657:1;4650:15;4688:4;4685:1;4678:15;4542:161;;4329:380;;;:::o;4714:127::-;4775:10;4770:3;4766:20;4763:1;4756:31;4806:4;4803:1;4796:15;4830:4;4827:1;4820:15;4846:168;4886:7;4952:1;4948;4944:6;4940:14;4937:1;4934:21;4929:1;4922:9;4915:17;4911:45;4908:71;;;4959:18;;:::i;:::-;-1:-1:-1;4999:9:1;;4846:168::o;5019:217::-;5059:1;5085;5075:132;;5129:10;5124:3;5120:20;5117:1;5110:31;5164:4;5161:1;5154:15;5192:4;5189:1;5182:15;5075:132;-1:-1:-1;5221:9:1;;5019:217::o;5241:356::-;5443:2;5425:21;;;5462:18;;;5455:30;5521:34;5516:2;5501:18;;5494:62;5588:2;5573:18;;5241:356::o;6416:125::-;6481:9;;;6502:10;;;6499:36;;;6515:18;;:::i;11712:184::-;11782:6;11835:2;11823:9;11814:7;11810:23;11806:32;11803:52;;;11851:1;11848;11841:12;11803:52;-1:-1:-1;11874:16:1;;11712:184;-1:-1:-1;11712:184:1:o;12180:245::-;12247:6;12300:2;12288:9;12279:7;12275:23;12271:32;12268:52;;;12316:1;12313;12306:12;12268:52;12348:9;12342:16;12367:28;12389:5;12367:28;:::i;13238:401::-;13440:2;13422:21;;;13479:2;13459:18;;;13452:30;13518:34;13513:2;13498:18;;13491:62;-1:-1:-1;;;13584:2:1;13569:18;;13562:35;13629:3;13614:19;;13238:401::o;13644:399::-;13846:2;13828:21;;;13885:2;13865:18;;;13858:30;13924:34;13919:2;13904:18;;13897:62;-1:-1:-1;;;13990:2:1;13975:18;;13968:33;14033:3;14018:19;;13644:399::o;14403:420::-;14605:2;14587:21;;;14644:2;14624:18;;;14617:30;14683:34;14678:2;14663:18;;14656:62;14754:26;14749:2;14734:18;;14727:54;14813:3;14798:19;;14403:420::o;14828:128::-;14895:9;;;14916:11;;;14913:37;;;14930:18;;:::i;15500:127::-;15561:10;15556:3;15552:20;15549:1;15542:31;15592:4;15589:1;15582:15;15616:4;15613:1;15606:15;15632:251;15702:6;15755:2;15743:9;15734:7;15730:23;15726:32;15723:52;;;15771:1;15768;15761:12;15723:52;15803:9;15797:16;15822:31;15847:5;15822:31;:::i;15888:980::-;16150:4;16198:3;16187:9;16183:19;16229:6;16218:9;16211:25;16255:2;16293:6;16288:2;16277:9;16273:18;16266:34;16336:3;16331:2;16320:9;16316:18;16309:31;16360:6;16395;16389:13;16426:6;16418;16411:22;16464:3;16453:9;16449:19;16442:26;;16503:2;16495:6;16491:15;16477:29;;16524:1;16534:195;16548:6;16545:1;16542:13;16534:195;;;16613:13;;-1:-1:-1;;;;;16609:39:1;16597:52;;16704:15;;;;16669:12;;;;16645:1;16563:9;16534:195;;;-1:-1:-1;;;;;;;16785:32:1;;;;16780:2;16765:18;;16758:60;-1:-1:-1;;;16849:3:1;16834:19;16827:35;16746:3;15888:980;-1:-1:-1;;;15888:980:1:o

Swarm Source

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