ETH Price: $3,125.44 (+0.78%)

Token

GIGABRAIN (GIGA)
 

Overview

Max Total Supply

1,000,000,000 GIGA

Holders

294

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,768.413247017407428926 GIGA

Value
$0.00
0x59DD353A69e2370ca98C1ff32587131b779a587a
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:
GIGABRAIN

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-23
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 amount)
        external
        returns (bool);

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

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

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

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

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

abstract contract IERC20Extented is IERC20 {
    function decimals() external view virtual returns (uint8);

    function name() external view virtual returns (string memory);

    function symbol() external view virtual returns (string memory);
}

contract GIGABRAIN is Context, IERC20, IERC20Extented, Ownable {
    using SafeMath for uint256;

    string private constant _name = "GIGABRAIN";
    string private constant _symbol = "GIGA";
    uint8 private constant _decimals = 18;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;

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

    mapping(address => bool) private _isExcluded;
    address[] private _excluded;
    mapping(address => bool) private _isBlackListedBot;
    // address[] private _blackListedBots;

    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 1 * 10**9 * 10**18; // 1 Billion tokens
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    uint256 private _botBlocks;
    uint256 private _firstBlock;

    // fees wrt to tax percentage
    uint256 public _rfiFee = 10; // divided by 100
    uint256 private _previousRfiFee = _rfiFee;
    uint256 public _lpFee = 10; // divided by 100
    uint256 private _previousLpFee = _lpFee;

    mapping(address => bool) private bots;
    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    uint256 private _maxTxAmount;
    uint256 private _maxWalletLimit;

    bool private tradingOpen = false;

    event FeesUpdated(uint256 _rfiFee, uint256 _lpFee);


    constructor() {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(
            address(uniswapV2Router),
            type(uint256).max
        );

        _rOwned[_msgSender()] = _rTotal;

        _maxTxAmount = _tTotal.div(100); // 1% of total supply
        _maxWalletLimit = _tTotal.div(50); // 2% of total supply

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external pure override returns (uint256) {
        return _tTotal;
    }

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

    function isBot(address account) public view returns (bool) {
        return bots[account];
    }

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

    function allowance(address owner, address spender)
        external
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function setExcludeFromFee(address account, bool excluded)
        external
        onlyOwner
    {
        _isExcludedFromFee[account] = excluded;
    }

    function updateMaxTxnAmount(uint256 newMaxTxnAmount) external onlyOwner {
        require( newMaxTxnAmount > 0, "Cant set to zero");
        require( newMaxTxnAmount <= 1000 , "Invalid input");
        _maxTxAmount = _tTotal.mul(newMaxTxnAmount).div(1000);
    }

    function updateMaxWalletLimit(uint256 newMaxWalletLimit) external onlyOwner {
        require( newMaxWalletLimit > 0, "Cant set to zero");
        require( newMaxWalletLimit <= 1000 , "Invalid input");
        _maxWalletLimit = _tTotal.mul(newMaxWalletLimit).div(1000);
    }


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

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

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

    function excludeAccount(address account) external onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _rOwned[account] = _tOwned[account].mul(_getRate());
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function removeAllFee() private {
    if (_lpFee == 0 &&  _rfiFee == 0) return;
        _previousLpFee = _lpFee;
        _previousRfiFee = _rfiFee;

        _lpFee = 0;
        _rfiFee = 0;
    }

    function setBuyFees() private {
        _lpFee = 0;
        _rfiFee = 10;
    }

    function setSellFees() private {
        _lpFee = 10;
        _rfiFee = 0;
    }


    function restoreAllFee() private {
        _lpFee = _previousLpFee;
        _rfiFee = _previousRfiFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        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");
        require(!bots[from] && !bots[to], "Bots not allowed to transfer");  


        bool takeFee = true;

        if (
            from != owner() &&
            to != owner()
        ) {
            require(tradingOpen, "Trading is not open");
            require(amount <= _maxTxAmount, "Exceeds max transaction amount");
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {//buys

                if (block.number <= _firstBlock.add(_botBlocks)) {
                    bots[to] = true;
                }
                setBuyFees();
            }

            if (from != uniswapV2Pair) { //sells, transfers

                if(to != uniswapV2Pair) {
                    require(balanceOf(to) <= _maxWalletLimit, "Wallet limit exceeds");
                }
                setSellFees();
            }
            
        }

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

        _tokenTransfer(from, to, amount, takeFee);
    }

    function openTrading(uint256 botBlocks) external onlyOwner {
        _firstBlock = block.number;
        _botBlocks = botBlocks;
        tradingOpen = true;
    }


    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) {
            removeAllFee();
        }
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
        if (!takeFee) {
            restoreAllFee();
        }
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTax
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLP(tTax);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
        if(tTax > 0) {
            emit Transfer(sender,uniswapV2Pair, tTax);
        }
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTax
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLP(tTax);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
        if(tTax > 0) {
            emit Transfer(sender,uniswapV2Pair, tTax);
        }
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTax
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLP(tTax);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
        if(tTax > 0) {
            emit Transfer(sender,uniswapV2Pair, tTax);
        }
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTax
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLP(tTax);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
        if(tTax > 0) {
            emit Transfer(sender,uniswapV2Pair, tTax);
        }
        
    }

    // sending tax to liquidity pool incentive for liquidity providers
    function _takeLP(uint256 tTax) private {
        if(tTax > 0) {
            uint256 currentRate = _getRate();
            uint256 rTax = tTax.mul(currentRate);
            _rOwned[uniswapV2Pair] = _rOwned[uniswapV2Pair].add(rTax);
            if (_isExcluded[uniswapV2Pair])
                _tOwned[uniswapV2Pair] = _tOwned[uniswapV2Pair].add(tTax);  
        }
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        uint256 taxFee = _lpFee;
        (uint256 tTransferAmount, uint256 tRfi, uint256 tTax) = _getTValues(
            tAmount,
            _rfiFee,
            taxFee
        );
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi) = _getRValues(
            tAmount,
            tRfi,
            tTax,
            currentRate
        );
        return (rAmount, rTransferAmount, rRfi, tTransferAmount, tRfi, tTax);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 rfiFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tRfi = tAmount.mul(rfiFee).div(100);
        uint256 tTax = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tRfi).sub(tTax);
        return (tTransferAmount, tRfi, tTax);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tRfi,
        uint256 tTax,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rRfi = tRfi.mul(currentRate);
        uint256 rTax = tTax.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rRfi).sub(rTax);
        return (rAmount, rTransferAmount, rRfi);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view 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.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) external onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function removeBot(address account) external onlyOwner {
        bots[account] = false;
    }

    function addBot(address account) external onlyOwner {
        bots[account] = true;
    }

    function recoverErc20token(address token, uint256 amount) external onlyOwner {
        IERC20(token).transfer(owner(),amount);
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_rfiFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_lpFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_lpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rfiFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"botBlocks","type":"uint256"}],"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":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverErc20token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"setExcludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxTxnAmount","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxWalletLimit","type":"uint256"}],"name":"updateMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526200001e6b033b2e3c9fd0803ce8000000600019620006ba565b6200002c9060001962000696565b600955600a600d819055600e819055600f8190556010556016805460ff191690553480156200005a57600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601280546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d908117909155620000de30826b033b2e3c9fd0803ce800000062000425565b806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200011857600080fd5b505afa1580156200012d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001539190620005de565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200019c57600080fd5b505afa158015620001b1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001d79190620005de565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200022057600080fd5b505af115801562000235573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025b9190620005de565b601380546001600160a01b0319166001600160a01b0392831690811790915560125460405163095ea7b360e01b81529216600483015260001960248301529063095ea7b390604401602060405180830381600087803b158015620002be57600080fd5b505af1158015620002d3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f9919062000607565b506009543360009081526002602090815260409091209190915562000338906b033b2e3c9fd0803ce8000000906064906200129262000551821b17901c565b601455620003606b033b2e3c9fd0803ce8000000603262000551602090811b6200129217901c565b6015556001600560006200037c6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526005909252902080549091166001179055620003c43390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b033b2e3c9fd0803ce80000006040516200041691815260200190565b60405180910390a350620006e7565b6001600160a01b0383166200048d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084015b60405180910390fd5b6001600160a01b038216620004f05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840162000484565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006200059b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005a260201b60201c565b9392505050565b60008183620005c65760405162461bcd60e51b815260040162000484919062000629565b506000620005d584866200067f565b95945050505050565b600060208284031215620005f0578081fd5b81516001600160a01b03811681146200059b578182fd5b60006020828403121562000619578081fd5b815180151581146200059b578182fd5b6000602080835283518082850152825b81811015620006575785810183015185820160400152820162000639565b81811115620006695783604083870101525b50601f01601f1916929092016040019392505050565b600082620006915762000691620006d1565b500490565b600082821015620006b557634e487b7160e01b81526011600452602481fd5b500390565b600082620006cc57620006cc620006d1565b500690565b634e487b7160e01b600052601260045260246000fd5b61251280620006f76000396000f3fe6080604052600436106101f25760003560e01c80635fecd9261161010d578063cba0e996116100a0578063eb171b671161006f578063eb171b6714610608578063f2cc0c181461061e578063f2fde38b1461063e578063f84354f11461065e578063ffecf5161461067e57600080fd5b8063cba0e99614610549578063d163364914610582578063dd62ed3e146105a2578063ea2f0b37146105e857600080fd5b80638da5cb5b116100dc5780638da5cb5b146104be57806395d89b41146104dc578063a9059cbb14610509578063af9549e01461052957600080fd5b80635fecd9261461044957806370a0823114610469578063715018a6146104895780638a5165131461049e57600080fd5b80632d838119116101855780634324deae116101545780634324deae146103b1578063437823ec146103d15780634549b039146103f157806349bd5a5e1461041157600080fd5b80632d8381191461031c578063313ce5671461033c5780633bbac579146103585780633bd5d1731461039157600080fd5b806315c93a7d116101c157806315c93a7d146102a857806318160ddd146102be578063203e727e146102dc57806323b872dd146102fc57600080fd5b80630614117a146101fe57806306fdde0314610215578063095ea7b31461025957806313114a9d1461028957600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021361069e565b005b34801561022157600080fd5b5060408051808201909152600981526823a4a3a0a12920a4a760b91b60208201525b604051610250919061237f565b60405180910390f35b34801561026557600080fd5b506102796102743660046122fe565b61070e565b6040519015158152602001610250565b34801561029557600080fd5b50600a545b604051908152602001610250565b3480156102b457600080fd5b5061029a600f5481565b3480156102ca57600080fd5b50676765c793fa10079d601b1b61029a565b3480156102e857600080fd5b506102136102f7366004612343565b610725565b34801561030857600080fd5b5061027961031736600461228d565b6107fb565b34801561032857600080fd5b5061029a610337366004612343565b610864565b34801561034857600080fd5b5060405160128152602001610250565b34801561036457600080fd5b50610279610373366004612241565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561039d57600080fd5b506102136103ac366004612343565b6108e8565b3480156103bd57600080fd5b506102136103cc366004612343565b6109d2565b3480156103dd57600080fd5b506102136103ec366004612241565b610aa2565b3480156103fd57600080fd5b5061029a61040c36600461235b565b610af0565b34801561041d57600080fd5b50601354610431906001600160a01b031681565b6040516001600160a01b039091168152602001610250565b34801561045557600080fd5b50610213610464366004612241565b610b86565b34801561047557600080fd5b5061029a610484366004612241565b610bd1565b34801561049557600080fd5b50610213610c30565b3480156104aa57600080fd5b506102136104b93660046122fe565b610c66565b3480156104ca57600080fd5b506000546001600160a01b0316610431565b3480156104e857600080fd5b506040805180820190915260048152634749474160e01b6020820152610243565b34801561051557600080fd5b506102796105243660046122fe565b610d36565b34801561053557600080fd5b506102136105443660046122c8565b610d43565b34801561055557600080fd5b50610279610564366004612241565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561058e57600080fd5b5061021361059d366004612343565b610d98565b3480156105ae57600080fd5b5061029a6105bd36600461225b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105f457600080fd5b50610213610603366004612241565b610dd8565b34801561061457600080fd5b5061029a600d5481565b34801561062a57600080fd5b50610213610639366004612241565b610e23565b34801561064a57600080fd5b50610213610659366004612241565b610f76565b34801561066a57600080fd5b50610213610679366004612241565b61100e565b34801561068a57600080fd5b50610213610699366004612241565b611244565b6000546001600160a01b031633146106d15760405162461bcd60e51b81526004016106c8906123d2565b60405180910390fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561070b573d6000803e3d6000fd5b50565b600061071b3384846112d4565b5060015b92915050565b6000546001600160a01b0316331461074f5760405162461bcd60e51b81526004016106c8906123d2565b600081116107925760405162461bcd60e51b815260206004820152601060248201526f43616e742073657420746f207a65726f60801b60448201526064016106c8565b6103e88111156107d45760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081a5b9c1d5d609a1b60448201526064016106c8565b6107f56103e86107ef676765c793fa10079d601b1b846113f8565b90611292565b60145550565b6000610808848484611477565b61085a8433610855856040518060600160405280602881526020016124b5602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061186b565b6112d4565b5060019392505050565b60006009548211156108cb5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106c8565b60006108d56118a5565b90506108e18382611292565b9392505050565b3360008181526006602052604090205460ff161561095d5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016106c8565b6000610968836118c8565b505050506001600160a01b0384166000908152600260205260409020549192506109949190508261192b565b6001600160a01b0383166000908152600260205260409020556009546109ba908261192b565b600955600a546109ca908461196d565b600a55505050565b6000546001600160a01b031633146109fc5760405162461bcd60e51b81526004016106c8906123d2565b60008111610a3f5760405162461bcd60e51b815260206004820152601060248201526f43616e742073657420746f207a65726f60801b60448201526064016106c8565b6103e8811115610a815760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081a5b9c1d5d609a1b60448201526064016106c8565b610a9c6103e86107ef676765c793fa10079d601b1b846113f8565b60155550565b6000546001600160a01b03163314610acc5760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000676765c793fa10079d601b1b831115610b4d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016106c8565b81610b6c576000610b5d846118c8565b5093955061071f945050505050565b6000610b77846118c8565b5092955061071f945050505050565b6000546001600160a01b03163314610bb05760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6001600160a01b03811660009081526006602052604081205460ff1615610c0e57506001600160a01b031660009081526003602052604090205490565b6001600160a01b03821660009081526002602052604090205461071f90610864565b6000546001600160a01b03163314610c5a5760405162461bcd60e51b81526004016106c8906123d2565b610c6460006119cc565b565b6000546001600160a01b03163314610c905760405162461bcd60e51b81526004016106c8906123d2565b816001600160a01b031663a9059cbb610cb16000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610cf957600080fd5b505af1158015610d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d319190612327565b505050565b600061071b338484611477565b6000546001600160a01b03163314610d6d5760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dc25760405162461bcd60e51b81526004016106c8906123d2565b43600c55600b556016805460ff19166001179055565b6000546001600160a01b03163314610e025760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610e4d5760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03811660009081526006602052604090205460ff1615610eb65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016106c8565b6001600160a01b03811660009081526002602052604090205415610f10576001600160a01b038116600090815260026020526040902054610ef690610864565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b03163314610fa05760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b0381166110055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c8565b61070b816119cc565b6000546001600160a01b031633146110385760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03811660009081526006602052604090205460ff166110a05760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016106c8565b60005b60075481101561124057816001600160a01b0316600782815481106110d857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561122e57600780546111039060019061245e565b8154811061112157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600780546001600160a01b03909216918390811061115b57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506111b36111946118a5565b6001600160a01b038416600090815260036020526040902054906113f8565b6001600160a01b038316600090815260026020908152604080832093909355600381528282208290556006905220805460ff19169055600780548061120857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061123881612475565b9150506110a3565b5050565b6000546001600160a01b0316331461126e5760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03166000908152601160205260409020805460ff19166001179055565b60006108e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a1c565b6001600160a01b0383166113365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c8565b6001600160a01b0382166113975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000826114075750600061071f565b6000611413838561243f565b905082611420858361241f565b146108e15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106c8565b6001600160a01b0383166114db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c8565b6001600160a01b03821661153d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c8565b6000811161159f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c8565b6001600160a01b03831660009081526011602052604090205460ff161580156115e157506001600160a01b03821660009081526011602052604090205460ff16155b61162d5760405162461bcd60e51b815260206004820152601c60248201527f426f7473206e6f7420616c6c6f77656420746f207472616e736665720000000060448201526064016106c8565b60016116416000546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561167057506000546001600160a01b03848116911614155b156118115760165460ff166116bd5760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1037b832b760691b60448201526064016106c8565b60145482111561170f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178207472616e73616374696f6e20616d6f756e74000060448201526064016106c8565b6013546001600160a01b03858116911614801561173a57506012546001600160a01b03848116911614155b1561178757600b54600c5461174e9161196d565b4311611778576001600160a01b0383166000908152601160205260409020805460ff191660011790555b6117876000600f55600a600d55565b6013546001600160a01b03858116911614611811576013546001600160a01b03848116911614611802576015546117bd84610bd1565b11156118025760405162461bcd60e51b815260206004820152601460248201527357616c6c6574206c696d6974206578636565647360601b60448201526064016106c8565b611811600a600f556000600d55565b6001600160a01b03841660009081526005602052604090205460ff168061185057506001600160a01b03831660009081526005602052604090205460ff165b15611859575060005b61186584848484611a4a565b50505050565b6000818484111561188f5760405162461bcd60e51b81526004016106c8919061237f565b50600061189c848661245e565b95945050505050565b60008060006118b2611bc1565b90925090506118c18282611292565b9250505090565b6000806000806000806000600f54905060008060006118ea8b600d5486611d9d565b92509250925060006118fa6118a5565b9050600080600061190d8f878787611dec565b919f509d509b50959950939750919550505050505091939550919395565b60006108e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061186b565b60008061197a8385612407565b9050838110156108e15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106c8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183611a3d5760405162461bcd60e51b81526004016106c8919061237f565b50600061189c848661241f565b80611a5757611a57611e3c565b6001600160a01b03841660009081526006602052604090205460ff168015611a9857506001600160a01b03831660009081526006602052604090205460ff16155b15611aad57611aa8848484611e6a565b611bab565b6001600160a01b03841660009081526006602052604090205460ff16158015611aee57506001600160a01b03831660009081526006602052604090205460ff165b15611afe57611aa8848484611fdc565b6001600160a01b03841660009081526006602052604090205460ff16158015611b4057506001600160a01b03831660009081526006602052604090205460ff16155b15611b5057611aa8848484612085565b6001600160a01b03841660009081526006602052604090205460ff168015611b9057506001600160a01b03831660009081526006602052604090205460ff165b15611ba057611aa88484846120c9565b611bab848484612085565b8061186557611865601054600f55600e54600d55565b6009546000908190676765c793fa10079d601b1b825b600754811015611d5c57826002600060078481548110611c0757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611c805750816003600060078481548110611c5957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611c9e57505060095493676765c793fa10079d601b1b9350915050565b611cf26002600060078481548110611cc657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061192b565b9250611d486003600060078481548110611d1c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061192b565b915080611d5481612475565b915050611bd7565b50600954611d7590676765c793fa10079d601b1b611292565b821015611d9457505060095492676765c793fa10079d601b1b92509050565b90939092509050565b6000808080611db160646107ef89896113f8565b90506000611dc460646107ef8a896113f8565b90506000611ddc82611dd68b8661192b565b9061192b565b9992985090965090945050505050565b6000808080611dfb88866113f8565b90506000611e0988876113f8565b90506000611e1788886113f8565b90506000611e2982611dd6868661192b565b939b939a50919850919650505050505050565b600f54158015611e4c5750600d54155b15611e5357565b600f8054601055600d8054600e5560009182905555565b600080600080600080611e7c876118c8565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611eae908861192b565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611edd908761192b565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611f0c908661196d565b6001600160a01b038916600090815260026020526040902055611f2e8161213c565b611f388483612201565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f7d91815260200190565b60405180910390a38015611fd1576013546040518281526001600160a01b03918216918b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b505050505050505050565b600080600080600080611fee876118c8565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612020908761192b565b6001600160a01b03808b16600090815260026020908152604080832094909455918b16815260039091522054612056908461196d565b6001600160a01b038916600090815260036020908152604080832093909355600290522054611f0c908661196d565b600080600080600080612097876118c8565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611edd908761192b565b6000806000806000806120db876118c8565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061210d908861192b565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054612020908761192b565b801561070b57600061214c6118a5565b9050600061215a83836113f8565b6013546001600160a01b0316600090815260026020526040902054909150612182908261196d565b601380546001600160a01b03908116600090815260026020908152604080832095909555925490911681526006909152205460ff1615610d31576013546001600160a01b03166000908152600360205260409020546121e1908461196d565b6013546001600160a01b0316600090815260036020526040902055505050565b60095461220e908361192b565b600955600a5461221e908261196d565b600a555050565b80356001600160a01b038116811461223c57600080fd5b919050565b600060208284031215612252578081fd5b6108e182612225565b6000806040838503121561226d578081fd5b61227683612225565b915061228460208401612225565b90509250929050565b6000806000606084860312156122a1578081fd5b6122aa84612225565b92506122b860208501612225565b9150604084013590509250925092565b600080604083850312156122da578182fd5b6122e383612225565b915060208301356122f3816124a6565b809150509250929050565b60008060408385031215612310578182fd5b61231983612225565b946020939093013593505050565b600060208284031215612338578081fd5b81516108e1816124a6565b600060208284031215612354578081fd5b5035919050565b6000806040838503121561236d578182fd5b8235915060208301356122f3816124a6565b6000602080835283518082850152825b818110156123ab5785810183015185820160400152820161238f565b818111156123bc5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561241a5761241a612490565b500190565b60008261243a57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561245957612459612490565b500290565b60008282101561247057612470612490565b500390565b600060001982141561248957612489612490565b5060010190565b634e487b7160e01b600052601160045260246000fd5b801515811461070b57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202e27a235716788fedf526d09edc5ad517fc5c692546195fd3e7c65bd6f222da964736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80635fecd9261161010d578063cba0e996116100a0578063eb171b671161006f578063eb171b6714610608578063f2cc0c181461061e578063f2fde38b1461063e578063f84354f11461065e578063ffecf5161461067e57600080fd5b8063cba0e99614610549578063d163364914610582578063dd62ed3e146105a2578063ea2f0b37146105e857600080fd5b80638da5cb5b116100dc5780638da5cb5b146104be57806395d89b41146104dc578063a9059cbb14610509578063af9549e01461052957600080fd5b80635fecd9261461044957806370a0823114610469578063715018a6146104895780638a5165131461049e57600080fd5b80632d838119116101855780634324deae116101545780634324deae146103b1578063437823ec146103d15780634549b039146103f157806349bd5a5e1461041157600080fd5b80632d8381191461031c578063313ce5671461033c5780633bbac579146103585780633bd5d1731461039157600080fd5b806315c93a7d116101c157806315c93a7d146102a857806318160ddd146102be578063203e727e146102dc57806323b872dd146102fc57600080fd5b80630614117a146101fe57806306fdde0314610215578063095ea7b31461025957806313114a9d1461028957600080fd5b366101f957005b600080fd5b34801561020a57600080fd5b5061021361069e565b005b34801561022157600080fd5b5060408051808201909152600981526823a4a3a0a12920a4a760b91b60208201525b604051610250919061237f565b60405180910390f35b34801561026557600080fd5b506102796102743660046122fe565b61070e565b6040519015158152602001610250565b34801561029557600080fd5b50600a545b604051908152602001610250565b3480156102b457600080fd5b5061029a600f5481565b3480156102ca57600080fd5b50676765c793fa10079d601b1b61029a565b3480156102e857600080fd5b506102136102f7366004612343565b610725565b34801561030857600080fd5b5061027961031736600461228d565b6107fb565b34801561032857600080fd5b5061029a610337366004612343565b610864565b34801561034857600080fd5b5060405160128152602001610250565b34801561036457600080fd5b50610279610373366004612241565b6001600160a01b031660009081526011602052604090205460ff1690565b34801561039d57600080fd5b506102136103ac366004612343565b6108e8565b3480156103bd57600080fd5b506102136103cc366004612343565b6109d2565b3480156103dd57600080fd5b506102136103ec366004612241565b610aa2565b3480156103fd57600080fd5b5061029a61040c36600461235b565b610af0565b34801561041d57600080fd5b50601354610431906001600160a01b031681565b6040516001600160a01b039091168152602001610250565b34801561045557600080fd5b50610213610464366004612241565b610b86565b34801561047557600080fd5b5061029a610484366004612241565b610bd1565b34801561049557600080fd5b50610213610c30565b3480156104aa57600080fd5b506102136104b93660046122fe565b610c66565b3480156104ca57600080fd5b506000546001600160a01b0316610431565b3480156104e857600080fd5b506040805180820190915260048152634749474160e01b6020820152610243565b34801561051557600080fd5b506102796105243660046122fe565b610d36565b34801561053557600080fd5b506102136105443660046122c8565b610d43565b34801561055557600080fd5b50610279610564366004612241565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561058e57600080fd5b5061021361059d366004612343565b610d98565b3480156105ae57600080fd5b5061029a6105bd36600461225b565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205490565b3480156105f457600080fd5b50610213610603366004612241565b610dd8565b34801561061457600080fd5b5061029a600d5481565b34801561062a57600080fd5b50610213610639366004612241565b610e23565b34801561064a57600080fd5b50610213610659366004612241565b610f76565b34801561066a57600080fd5b50610213610679366004612241565b61100e565b34801561068a57600080fd5b50610213610699366004612241565b611244565b6000546001600160a01b031633146106d15760405162461bcd60e51b81526004016106c8906123d2565b60405180910390fd5b600080546040516001600160a01b03909116914780156108fc02929091818181858888f1935050505015801561070b573d6000803e3d6000fd5b50565b600061071b3384846112d4565b5060015b92915050565b6000546001600160a01b0316331461074f5760405162461bcd60e51b81526004016106c8906123d2565b600081116107925760405162461bcd60e51b815260206004820152601060248201526f43616e742073657420746f207a65726f60801b60448201526064016106c8565b6103e88111156107d45760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081a5b9c1d5d609a1b60448201526064016106c8565b6107f56103e86107ef676765c793fa10079d601b1b846113f8565b90611292565b60145550565b6000610808848484611477565b61085a8433610855856040518060600160405280602881526020016124b5602891396001600160a01b038a166000908152600460209081526040808320338452909152902054919061186b565b6112d4565b5060019392505050565b60006009548211156108cb5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016106c8565b60006108d56118a5565b90506108e18382611292565b9392505050565b3360008181526006602052604090205460ff161561095d5760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b60648201526084016106c8565b6000610968836118c8565b505050506001600160a01b0384166000908152600260205260409020549192506109949190508261192b565b6001600160a01b0383166000908152600260205260409020556009546109ba908261192b565b600955600a546109ca908461196d565b600a55505050565b6000546001600160a01b031633146109fc5760405162461bcd60e51b81526004016106c8906123d2565b60008111610a3f5760405162461bcd60e51b815260206004820152601060248201526f43616e742073657420746f207a65726f60801b60448201526064016106c8565b6103e8811115610a815760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a59081a5b9c1d5d609a1b60448201526064016106c8565b610a9c6103e86107ef676765c793fa10079d601b1b846113f8565b60155550565b6000546001600160a01b03163314610acc5760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03166000908152600560205260409020805460ff19166001179055565b6000676765c793fa10079d601b1b831115610b4d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016106c8565b81610b6c576000610b5d846118c8565b5093955061071f945050505050565b6000610b77846118c8565b5092955061071f945050505050565b6000546001600160a01b03163314610bb05760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03166000908152601160205260409020805460ff19169055565b6001600160a01b03811660009081526006602052604081205460ff1615610c0e57506001600160a01b031660009081526003602052604090205490565b6001600160a01b03821660009081526002602052604090205461071f90610864565b6000546001600160a01b03163314610c5a5760405162461bcd60e51b81526004016106c8906123d2565b610c6460006119cc565b565b6000546001600160a01b03163314610c905760405162461bcd60e51b81526004016106c8906123d2565b816001600160a01b031663a9059cbb610cb16000546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260248101849052604401602060405180830381600087803b158015610cf957600080fd5b505af1158015610d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d319190612327565b505050565b600061071b338484611477565b6000546001600160a01b03163314610d6d5760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314610dc25760405162461bcd60e51b81526004016106c8906123d2565b43600c55600b556016805460ff19166001179055565b6000546001600160a01b03163314610e025760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6000546001600160a01b03163314610e4d5760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03811660009081526006602052604090205460ff1615610eb65760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016106c8565b6001600160a01b03811660009081526002602052604090205415610f10576001600160a01b038116600090815260026020526040902054610ef690610864565b6001600160a01b0382166000908152600360205260409020555b6001600160a01b03166000818152600660205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b03163314610fa05760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b0381166110055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016106c8565b61070b816119cc565b6000546001600160a01b031633146110385760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03811660009081526006602052604090205460ff166110a05760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c7564656400000000000000000060448201526064016106c8565b60005b60075481101561124057816001600160a01b0316600782815481106110d857634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b0316141561122e57600780546111039060019061245e565b8154811061112157634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600780546001600160a01b03909216918390811061115b57634e487b7160e01b600052603260045260246000fd5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506111b36111946118a5565b6001600160a01b038416600090815260036020526040902054906113f8565b6001600160a01b038316600090815260026020908152604080832093909355600381528282208290556006905220805460ff19169055600780548061120857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b8061123881612475565b9150506110a3565b5050565b6000546001600160a01b0316331461126e5760405162461bcd60e51b81526004016106c8906123d2565b6001600160a01b03166000908152601160205260409020805460ff19166001179055565b60006108e183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a1c565b6001600160a01b0383166113365760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016106c8565b6001600160a01b0382166113975760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016106c8565b6001600160a01b0383811660008181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000826114075750600061071f565b6000611413838561243f565b905082611420858361241f565b146108e15760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016106c8565b6001600160a01b0383166114db5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016106c8565b6001600160a01b03821661153d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016106c8565b6000811161159f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016106c8565b6001600160a01b03831660009081526011602052604090205460ff161580156115e157506001600160a01b03821660009081526011602052604090205460ff16155b61162d5760405162461bcd60e51b815260206004820152601c60248201527f426f7473206e6f7420616c6c6f77656420746f207472616e736665720000000060448201526064016106c8565b60016116416000546001600160a01b031690565b6001600160a01b0316846001600160a01b03161415801561167057506000546001600160a01b03848116911614155b156118115760165460ff166116bd5760405162461bcd60e51b81526020600482015260136024820152722a3930b234b7339034b9903737ba1037b832b760691b60448201526064016106c8565b60145482111561170f5760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178207472616e73616374696f6e20616d6f756e74000060448201526064016106c8565b6013546001600160a01b03858116911614801561173a57506012546001600160a01b03848116911614155b1561178757600b54600c5461174e9161196d565b4311611778576001600160a01b0383166000908152601160205260409020805460ff191660011790555b6117876000600f55600a600d55565b6013546001600160a01b03858116911614611811576013546001600160a01b03848116911614611802576015546117bd84610bd1565b11156118025760405162461bcd60e51b815260206004820152601460248201527357616c6c6574206c696d6974206578636565647360601b60448201526064016106c8565b611811600a600f556000600d55565b6001600160a01b03841660009081526005602052604090205460ff168061185057506001600160a01b03831660009081526005602052604090205460ff165b15611859575060005b61186584848484611a4a565b50505050565b6000818484111561188f5760405162461bcd60e51b81526004016106c8919061237f565b50600061189c848661245e565b95945050505050565b60008060006118b2611bc1565b90925090506118c18282611292565b9250505090565b6000806000806000806000600f54905060008060006118ea8b600d5486611d9d565b92509250925060006118fa6118a5565b9050600080600061190d8f878787611dec565b919f509d509b50959950939750919550505050505091939550919395565b60006108e183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061186b565b60008061197a8385612407565b9050838110156108e15760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016106c8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183611a3d5760405162461bcd60e51b81526004016106c8919061237f565b50600061189c848661241f565b80611a5757611a57611e3c565b6001600160a01b03841660009081526006602052604090205460ff168015611a9857506001600160a01b03831660009081526006602052604090205460ff16155b15611aad57611aa8848484611e6a565b611bab565b6001600160a01b03841660009081526006602052604090205460ff16158015611aee57506001600160a01b03831660009081526006602052604090205460ff165b15611afe57611aa8848484611fdc565b6001600160a01b03841660009081526006602052604090205460ff16158015611b4057506001600160a01b03831660009081526006602052604090205460ff16155b15611b5057611aa8848484612085565b6001600160a01b03841660009081526006602052604090205460ff168015611b9057506001600160a01b03831660009081526006602052604090205460ff165b15611ba057611aa88484846120c9565b611bab848484612085565b8061186557611865601054600f55600e54600d55565b6009546000908190676765c793fa10079d601b1b825b600754811015611d5c57826002600060078481548110611c0757634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611c805750816003600060078481548110611c5957634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611c9e57505060095493676765c793fa10079d601b1b9350915050565b611cf26002600060078481548110611cc657634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849061192b565b9250611d486003600060078481548110611d1c57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839061192b565b915080611d5481612475565b915050611bd7565b50600954611d7590676765c793fa10079d601b1b611292565b821015611d9457505060095492676765c793fa10079d601b1b92509050565b90939092509050565b6000808080611db160646107ef89896113f8565b90506000611dc460646107ef8a896113f8565b90506000611ddc82611dd68b8661192b565b9061192b565b9992985090965090945050505050565b6000808080611dfb88866113f8565b90506000611e0988876113f8565b90506000611e1788886113f8565b90506000611e2982611dd6868661192b565b939b939a50919850919650505050505050565b600f54158015611e4c5750600d54155b15611e5357565b600f8054601055600d8054600e5560009182905555565b600080600080600080611e7c876118c8565b6001600160a01b038f16600090815260036020526040902054959b50939950919750955093509150611eae908861192b565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054611edd908761192b565b6001600160a01b03808b1660009081526002602052604080822093909355908a1681522054611f0c908661196d565b6001600160a01b038916600090815260026020526040902055611f2e8161213c565b611f388483612201565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051611f7d91815260200190565b60405180910390a38015611fd1576013546040518281526001600160a01b03918216918b16907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b505050505050505050565b600080600080600080611fee876118c8565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150612020908761192b565b6001600160a01b03808b16600090815260026020908152604080832094909455918b16815260039091522054612056908461196d565b6001600160a01b038916600090815260036020908152604080832093909355600290522054611f0c908661196d565b600080600080600080612097876118c8565b6001600160a01b038f16600090815260026020526040902054959b50939950919750955093509150611edd908761192b565b6000806000806000806120db876118c8565b6001600160a01b038f16600090815260036020526040902054959b5093995091975095509350915061210d908861192b565b6001600160a01b038a16600090815260036020908152604080832093909355600290522054612020908761192b565b801561070b57600061214c6118a5565b9050600061215a83836113f8565b6013546001600160a01b0316600090815260026020526040902054909150612182908261196d565b601380546001600160a01b03908116600090815260026020908152604080832095909555925490911681526006909152205460ff1615610d31576013546001600160a01b03166000908152600360205260409020546121e1908461196d565b6013546001600160a01b0316600090815260036020526040902055505050565b60095461220e908361192b565b600955600a5461221e908261196d565b600a555050565b80356001600160a01b038116811461223c57600080fd5b919050565b600060208284031215612252578081fd5b6108e182612225565b6000806040838503121561226d578081fd5b61227683612225565b915061228460208401612225565b90509250929050565b6000806000606084860312156122a1578081fd5b6122aa84612225565b92506122b860208501612225565b9150604084013590509250925092565b600080604083850312156122da578182fd5b6122e383612225565b915060208301356122f3816124a6565b809150509250929050565b60008060408385031215612310578182fd5b61231983612225565b946020939093013593505050565b600060208284031215612338578081fd5b81516108e1816124a6565b600060208284031215612354578081fd5b5035919050565b6000806040838503121561236d578182fd5b8235915060208301356122f3816124a6565b6000602080835283518082850152825b818110156123ab5785810183015185820160400152820161238f565b818111156123bc5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561241a5761241a612490565b500190565b60008261243a57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561245957612459612490565b500290565b60008282101561247057612470612490565b500390565b600060001982141561248957612489612490565b5060010190565b634e487b7160e01b600052601160045260246000fd5b801515811461070b57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202e27a235716788fedf526d09edc5ad517fc5c692546195fd3e7c65bd6f222da964736f6c63430008040033

Deployed Bytecode Sourcemap

8730:17555:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26174:108;;;;;;;;;;;;;:::i;:::-;;11101:94;;;;;;;;;;-1:-1:-1;11182:5:0;;;;;;;;;;;;-1:-1:-1;;;11182:5:0;;;;11101:94;;;;;;;:::i;:::-;;;;;;;;12231:195;;;;;;;;;;-1:-1:-1;12231:195:0;;;;;:::i;:::-;;:::i;:::-;;;3041:14:1;;3034:22;3016:41;;3004:2;2989:18;12231:195:0;2971:92:1;13737:87:0;;;;;;;;;;-1:-1:-1;13806:10:0;;13737:87;;;11368:25:1;;;11356:2;11341:18;13737:87:0;11323:76:1;9826:26:0;;;;;;;;;;;;;;;;11411:97;;;;;;;;;;-1:-1:-1;;;;11411:97:0;;13174:266;;;;;;;;;;-1:-1:-1;13174:266:0;;;;;:::i;:::-;;:::i;12434:448::-;;;;;;;;;;-1:-1:-1;12434:448:0;;;;;:::i;:::-;;:::i;14746:322::-;;;;;;;;;;-1:-1:-1;14746:322:0;;;;;:::i;:::-;;:::i;11309:94::-;;;;;;;;;;-1:-1:-1;11309:94:0;;8967:2;11546:36:1;;11534:2;11519:18;11309:94:0;11501:87:1;11722:98:0;;;;;;;;;;-1:-1:-1;11722:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;11799:13:0;11775:4;11799:13;;;:4;:13;;;;;;;;;11722:98;13832:419;;;;;;;;;;-1:-1:-1;13832:419:0;;;;;:::i;:::-;;:::i;13448:279::-;;;;;;;;;;-1:-1:-1;13448:279:0;;;;;:::i;:::-;;:::i;25591:111::-;;;;;;;;;;-1:-1:-1;25591:111:0;;;;;:::i;:::-;;:::i;14259:479::-;;;;;;;;;;-1:-1:-1;14259:479:0;;;;;:::i;:::-;;:::i;10018:28::-;;;;;;;;;;-1:-1:-1;10018:28:0;;;;-1:-1:-1;;;;;10018:28:0;;;;;;-1:-1:-1;;;;;2553:32:1;;;2535:51;;2523:2;2508:18;10018:28:0;2490:102:1;25830:95:0;;;;;;;;;;-1:-1:-1;25830:95:0;;;;;:::i;:::-;;:::i;11516:198::-;;;;;;;;;;-1:-1:-1;11516:198:0;;;;;:::i;:::-;;:::i;2804:103::-;;;;;;;;;;;;;:::i;26032:134::-;;;;;;;;;;-1:-1:-1;26032:134:0;;;;;:::i;:::-;;:::i;2590:79::-;;;;;;;;;;-1:-1:-1;2628:7:0;2655:6;-1:-1:-1;;;;;2655:6:0;2590:79;;11203:98;;;;;;;;;;-1:-1:-1;11286:7:0;;;;;;;;;;;;-1:-1:-1;;;11286:7:0;;;;11203:98;;11828:201;;;;;;;;;;-1:-1:-1;11828:201:0;;;;;:::i;:::-;;:::i;13008:158::-;;;;;;;;;;-1:-1:-1;13008:158:0;;;;;:::i;:::-;;:::i;12890:110::-;;;;;;;;;;-1:-1:-1;12890:110:0;;;;;:::i;:::-;-1:-1:-1;;;;;12972:20:0;12948:4;12972:20;;;:11;:20;;;;;;;;;12890:110;18247:166;;;;;;;;;;-1:-1:-1;18247:166:0;;;;;:::i;:::-;;:::i;12037:186::-;;;;;;;;;;-1:-1:-1;12037:186:0;;;;;:::i;:::-;-1:-1:-1;;;;;12188:18:0;;;12156:7;12188:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;12037:186;25710:112;;;;;;;;;;-1:-1:-1;25710:112:0;;;;;:::i;:::-;;:::i;9726:27::-;;;;;;;;;;;;;;;;15076:331;;;;;;;;;;-1:-1:-1;15076:331:0;;;;;:::i;:::-;;:::i;3062:238::-;;;;;;;;;;-1:-1:-1;3062:238:0;;;;;:::i;:::-;;:::i;15415:542::-;;;;;;;;;;-1:-1:-1;15415:542:0;;;;;:::i;:::-;;:::i;25933:91::-;;;;;;;;;;-1:-1:-1;25933:91:0;;;;;:::i;:::-;;:::i;26174:108::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;;;;;;;;;2628:7;2655:6;;26226:48:::1;::::0;-1:-1:-1;;;;;2655:6:0;;;;26252:21:::1;26226:48:::0;::::1;;;::::0;26252:21;;26226:48;2628:7;26226:48;26252:21;2655:6;26226:48;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;26174:108::o:0;12231:195::-;12335:4;12357:39;173:10;12380:7;12389:6;12357:8;:39::i;:::-;-1:-1:-1;12414:4:0;12231:195;;;;;:::o;13174:266::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;13284:1:::1;13266:15;:19;13257:49;;;::::0;-1:-1:-1;;;13257:49:0;;6926:2:1;13257:49:0::1;::::0;::::1;6908:21:1::0;6965:2;6945:18;;;6938:30;-1:-1:-1;;;6984:18:1;;;6977:46;7040:18;;13257:49:0::1;6898:166:1::0;13257:49:0::1;13345:4;13326:15;:23;;13317:51;;;::::0;-1:-1:-1;;;13317:51:0;;9510:2:1;13317:51:0::1;::::0;::::1;9492:21:1::0;9549:2;9529:18;;;9522:30;-1:-1:-1;;;9568:18:1;;;9561:43;9621:18;;13317:51:0::1;9482:163:1::0;13317:51:0::1;13394:38;13427:4;13394:28;-1:-1:-1::0;;;13406:15:0;13394:11:::1;:28::i;:::-;:32:::0;::::1;:38::i;:::-;13379:12;:53:::0;-1:-1:-1;13174:266:0:o;12434:448::-;12568:4;12585:36;12595:6;12603:9;12614:6;12585:9;:36::i;:::-;12632:220;12655:6;173:10;12703:138;12759:6;12703:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12703:19:0;;;;;;:11;:19;;;;;;;;173:10;12703:33;;;;;;;;;;:37;:138::i;:::-;12632:8;:220::i;:::-;-1:-1:-1;12870:4:0;12434:448;;;;;:::o;14746:322::-;14840:7;14898;;14887;:18;;14865:110;;;;-1:-1:-1;;;14865:110:0;;4641:2:1;14865:110:0;;;4623:21:1;4680:2;4660:18;;;4653:30;4719:34;4699:18;;;4692:62;-1:-1:-1;;;4770:18:1;;;4763:40;4820:19;;14865:110:0;4613:232:1;14865:110:0;14986:19;15008:10;:8;:10::i;:::-;14986:32;-1:-1:-1;15036:24:0;:7;14986:32;15036:11;:24::i;:::-;15029:31;14746:322;-1:-1:-1;;;14746:322:0:o;13832:419::-;173:10;13884:14;13947:19;;;:11;:19;;;;;;;;13946:20;13924:114;;;;-1:-1:-1;;;13924:114:0;;11011:2:1;13924:114:0;;;10993:21:1;11050:2;11030:18;;;11023:30;11089:34;11069:18;;;11062:62;-1:-1:-1;;;11140:18:1;;;11133:42;11192:19;;13924:114:0;10983:234:1;13924:114:0;14050:15;14079:19;14090:7;14079:10;:19::i;:::-;-1:-1:-1;;;;;;;;;14127:15:0;;;;;;:7;:15;;;;;;14049:49;;-1:-1:-1;14127:28:0;;:15;-1:-1:-1;14049:49:0;14127:19;:28::i;:::-;-1:-1:-1;;;;;14109:15:0;;;;;;:7;:15;;;;;:46;14176:7;;:20;;14188:7;14176:11;:20::i;:::-;14166:7;:30;14220:10;;:23;;14235:7;14220:14;:23::i;:::-;14207:10;:36;-1:-1:-1;;;13832:419:0:o;13448:279::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;13564:1:::1;13544:17;:21;13535:51;;;::::0;-1:-1:-1;;;13535:51:0;;6926:2:1;13535:51:0::1;::::0;::::1;6908:21:1::0;6965:2;6945:18;;;6938:30;-1:-1:-1;;;6984:18:1;;;6977:46;7040:18;;13535:51:0::1;6898:166:1::0;13535:51:0::1;13627:4;13606:17;:25;;13597:53;;;::::0;-1:-1:-1;;;13597:53:0;;9510:2:1;13597:53:0::1;::::0;::::1;9492:21:1::0;9549:2;9529:18;;;9522:30;-1:-1:-1;;;9568:18:1;;;9561:43;9621:18;;13597:53:0::1;9482:163:1::0;13597:53:0::1;13679:40;13714:4;13679:30;-1:-1:-1::0;;;13691:17:0;13679:11:::1;:30::i;:40::-;13661:15;:58:::0;-1:-1:-1;13448:279:0:o;25591:111::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25660:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;25660:34:0::1;25690:4;25660:34;::::0;;25591:111::o;14259:479::-;14377:7;-1:-1:-1;;;14410:7:0;:18;;14402:62;;;;-1:-1:-1;;;14402:62:0;;7620:2:1;14402:62:0;;;7602:21:1;7659:2;7639:18;;;7632:30;7698:33;7678:18;;;7671:61;7749:18;;14402:62:0;7592:181:1;14402:62:0;14480:17;14475:256;;14515:15;14544:19;14555:7;14544:10;:19::i;:::-;-1:-1:-1;14514:49:0;;-1:-1:-1;14578:14:0;;-1:-1:-1;;;;;14578:14:0;14475:256;14628:23;14663:19;14674:7;14663:10;:19::i;:::-;-1:-1:-1;14625:57:0;;-1:-1:-1;14697:22:0;;-1:-1:-1;;;;;14697:22:0;25830:95;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25896:13:0::1;25912:5;25896:13:::0;;;:4:::1;:13;::::0;;;;:21;;-1:-1:-1;;25896:21:0::1;::::0;;25830:95::o;11516:198::-;-1:-1:-1;;;;;11606:20:0;;11582:7;11606:20;;;:11;:20;;;;;;;;11602:49;;;-1:-1:-1;;;;;;11635:16:0;;;;;:7;:16;;;;;;;11516:198::o;11602:49::-;-1:-1:-1;;;;;11689:16:0;;;;;;:7;:16;;;;;;11669:37;;:19;:37::i;2804:103::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;2869:30:::1;2896:1;2869:18;:30::i;:::-;2804:103::o:0;26032:134::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;26127:5:::1;-1:-1:-1::0;;;;;26120:22:0::1;;26143:7;2628::::0;2655:6;-1:-1:-1;;;;;2655:6:0;;2590:79;26143:7:::1;26120:38;::::0;-1:-1:-1;;;;;;26120:38:0::1;::::0;;;;;;-1:-1:-1;;;;;2789:32:1;;;26120:38:0::1;::::0;::::1;2771:51:1::0;2838:18;;;2831:34;;;2744:18;;26120:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;26032:134:::0;;:::o;11828:201::-;11935:4;11957:42;173:10;11981:9;11992:6;11957:9;:42::i;13008:158::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13120:27:0;;;::::1;;::::0;;;:18:::1;:27;::::0;;;;:38;;-1:-1:-1;;13120:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13008:158::o;18247:166::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;18331:12:::1;18317:11;:26:::0;18354:10:::1;:22:::0;18387:11:::1;:18:::0;;-1:-1:-1;;18387:18:0::1;-1:-1:-1::0;18387:18:0::1;::::0;;18247:166::o;25710:112::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25779:27:0::1;25809:5;25779:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;25779:35:0::1;::::0;;25710:112::o;15076:331::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15156:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;15155:21;15147:61;;;::::0;-1:-1:-1;;;15147:61:0;;6218:2:1;15147:61:0::1;::::0;::::1;6200:21:1::0;6257:2;6237:18;;;6230:30;6296:29;6276:18;;;6269:57;6343:18;;15147:61:0::1;6190:177:1::0;15147:61:0::1;-1:-1:-1::0;;;;;15223:16:0;::::1;15242:1;15223:16:::0;;;:7:::1;:16;::::0;;;;;:20;15219:109:::1;;-1:-1:-1::0;;;;;15299:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;15279:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;15260:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;15219:109:::1;-1:-1:-1::0;;;;;15338:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;15338:27:0::1;15361:4;15338:27:::0;;::::1;::::0;;;15376:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;15376:23:0::1;::::0;;::::1;::::0;;15076:331::o;3062:238::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3165:22:0;::::1;3143:110;;;::::0;-1:-1:-1;;;3143:110:0;;5052:2:1;3143:110:0::1;::::0;::::1;5034:21:1::0;5091:2;5071:18;;;5064:30;5130:34;5110:18;;;5103:62;-1:-1:-1;;;5181:18:1;;;5174:36;5227:19;;3143:110:0::1;5024:228:1::0;3143:110:0::1;3264:28;3283:8;3264:18;:28::i;15415:542::-:0;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;15494:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;15486:56;;;::::0;-1:-1:-1;;;15486:56:0;;6574:2:1;15486:56:0::1;::::0;::::1;6556:21:1::0;6613:2;6593:18;;;6586:30;6652:25;6632:18;;;6625:53;6695:18;;15486:56:0::1;6546:173:1::0;15486:56:0::1;15558:9;15553:397;15577:9;:16:::0;15573:20;::::1;15553:397;;;15635:7;-1:-1:-1::0;;;;;15619:23:0::1;:9;15629:1;15619:12;;;;;;-1:-1:-1::0;;;15619:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;15619:12:0::1;:23;15615:324;;;15678:9;15688:16:::0;;:20:::1;::::0;15707:1:::1;::::0;15688:20:::1;:::i;:::-;15678:31;;;;;;-1:-1:-1::0;;;15678:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;15663:9:::1;:12:::0;;-1:-1:-1;;;;;15678:31:0;;::::1;::::0;15673:1;;15663:12;::::1;;;-1:-1:-1::0;;;15663:12:0::1;;;;;;;;;;;;;;;;;:46;;;;;-1:-1:-1::0;;;;;15663:46:0::1;;;;;-1:-1:-1::0;;;;;15663:46:0::1;;;;;;15747:32;15768:10;:8;:10::i;:::-;-1:-1:-1::0;;;;;15747:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;:20:::1;:32::i;:::-;-1:-1:-1::0;;;;;15728:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:51;;;;15798:7:::1;:16:::0;;;;;:20;;;15837:11:::1;:20:::0;;;:28;;-1:-1:-1;;15837:28:0::1;::::0;;15884:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;15884:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;15884:15:0;;;;;-1:-1:-1;;;;;;15884:15:0::1;::::0;;;;;15553:397:::1;15415:542:::0;:::o;15615:324::-:1;15595:3:::0;::::1;::::0;::::1;:::i;:::-;;;;15553:397;;;;15415:542:::0;:::o;25933:91::-;2717:6;;-1:-1:-1;;;;;2717:6:0;173:10;2717:22;2709:67;;;;-1:-1:-1;;;2709:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25996:13:0::1;;::::0;;;:4:::1;:13;::::0;;;;:20;;-1:-1:-1;;25996:20:0::1;26012:4;25996:20;::::0;;25933:91::o;1841:132::-;1899:7;1926:39;1930:1;1933;1926:39;;;;;;;;;;;;;;;;;:3;:39::i;16477:369::-;-1:-1:-1;;;;;16604:19:0;;16596:68;;;;-1:-1:-1;;;16596:68:0;;10606:2:1;16596:68:0;;;10588:21:1;10645:2;10625:18;;;10618:30;10684:34;10664:18;;;10657:62;-1:-1:-1;;;10735:18:1;;;10728:34;10779:19;;16596:68:0;10578:226:1;16596:68:0;-1:-1:-1;;;;;16683:21:0;;16675:68;;;;-1:-1:-1;;;16675:68:0;;5459:2:1;16675:68:0;;;5441:21:1;5498:2;5478:18;;;5471:30;5537:34;5517:18;;;5510:62;-1:-1:-1;;;5588:18:1;;;5581:32;5630:19;;16675:68:0;5431:224:1;16675:68:0;-1:-1:-1;;;;;16754:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;16806:32;;11368:25:1;;;16806:32:0;;11341:18:1;16806:32:0;;;;;;;16477:369;;;:::o;1587:246::-;1645:7;1669:6;1665:47;;-1:-1:-1;1699:1:0;1692:8;;1665:47;1722:9;1734:5;1738:1;1734;:5;:::i;:::-;1722:17;-1:-1:-1;1767:1:0;1758:5;1762:1;1722:17;1758:5;:::i;:::-;:10;1750:56;;;;-1:-1:-1;;;1750:56:0;;7980:2:1;1750:56:0;;;7962:21:1;8019:2;7999:18;;;7992:30;8058:34;8038:18;;;8031:62;-1:-1:-1;;;8109:18:1;;;8102:31;8150:19;;1750:56:0;7952:223:1;16854:1385:0;-1:-1:-1;;;;;16976:18:0;;16968:68;;;;-1:-1:-1;;;16968:68:0;;10200:2:1;16968:68:0;;;10182:21:1;10239:2;10219:18;;;10212:30;10278:34;10258:18;;;10251:62;-1:-1:-1;;;10329:18:1;;;10322:35;10374:19;;16968:68:0;10172:227:1;16968:68:0;-1:-1:-1;;;;;17055:16:0;;17047:64;;;;-1:-1:-1;;;17047:64:0;;3878:2:1;17047:64:0;;;3860:21:1;3917:2;3897:18;;;3890:30;3956:34;3936:18;;;3929:62;-1:-1:-1;;;4007:18:1;;;4000:33;4050:19;;17047:64:0;3850:225:1;17047:64:0;17139:1;17130:6;:10;17122:64;;;;-1:-1:-1;;;17122:64:0;;9100:2:1;17122:64:0;;;9082:21:1;9139:2;9119:18;;;9112:30;9178:34;9158:18;;;9151:62;-1:-1:-1;;;9229:18:1;;;9222:39;9278:19;;17122:64:0;9072:231:1;17122:64:0;-1:-1:-1;;;;;17206:10:0;;;;;;:4;:10;;;;;;;;17205:11;:24;;;;-1:-1:-1;;;;;;17221:8:0;;;;;;:4;:8;;;;;;;;17220:9;17205:24;17197:65;;;;-1:-1:-1;;;17197:65:0;;8743:2:1;17197:65:0;;;8725:21:1;8782:2;8762:18;;;8755:30;8821;8801:18;;;8794:58;8869:18;;17197:65:0;8715:178:1;17197:65:0;17294:4;17337:7;2628;2655:6;-1:-1:-1;;;;;2655:6:0;;2590:79;17337:7;-1:-1:-1;;;;;17329:15:0;:4;-1:-1:-1;;;;;17329:15:0;;;:45;;;;-1:-1:-1;2628:7:0;2655:6;-1:-1:-1;;;;;17361:13:0;;;2655:6;;17361:13;;17329:45;17311:756;;;17409:11;;;;17401:43;;;;-1:-1:-1;;;17401:43:0;;9852:2:1;17401:43:0;;;9834:21:1;9891:2;9871:18;;;9864:30;-1:-1:-1;;;9910:18:1;;;9903:49;9969:18;;17401:43:0;9824:169:1;17401:43:0;17477:12;;17467:6;:22;;17459:65;;;;-1:-1:-1;;;17459:65:0;;4282:2:1;17459:65:0;;;4264:21:1;4321:2;4301:18;;;4294:30;4360:32;4340:18;;;4333:60;4410:18;;17459:65:0;4254:180:1;17459:65:0;17551:13;;-1:-1:-1;;;;;17543:21:0;;;17551:13;;17543:21;:55;;;;-1:-1:-1;17582:15:0;;-1:-1:-1;;;;;17568:30:0;;;17582:15;;17568:30;;17543:55;17539:241;;;17663:10;;17647:11;;:27;;:15;:27::i;:::-;17631:12;:43;17627:107;;-1:-1:-1;;;;;17699:8:0;;;;;;:4;:8;;;;;:15;;-1:-1:-1;;17699:15:0;17710:4;17699:15;;;17627:107;17752:12;16225:1;16216:6;:10;16247:2;16237:7;:12;16175:82;17752:12;17808:13;;-1:-1:-1;;;;;17800:21:0;;;17808:13;;17800:21;17796:246;;17872:13;;-1:-1:-1;;;;;17866:19:0;;;17872:13;;17866:19;17863:132;;17935:15;;17918:13;17928:2;17918:9;:13::i;:::-;:32;;17910:65;;;;-1:-1:-1;;;17910:65:0;;7271:2:1;17910:65:0;;;7253:21:1;7310:2;7290:18;;;7283:30;-1:-1:-1;;;7329:18:1;;;7322:50;7389:18;;17910:65:0;7243:170:1;17910:65:0;18013:13;16316:2;16307:6;:11;16339:1;16329:7;:11;16265:83;18013:13;-1:-1:-1;;;;;18083:24:0;;;;;;:18;:24;;;;;;;;;:50;;-1:-1:-1;;;;;;18111:22:0;;;;;;:18;:22;;;;;;;;18083:50;18079:98;;;-1:-1:-1;18160:5:0;18079:98;18190:41;18205:4;18211:2;18215:6;18223:7;18190:14;:41::i;:::-;16854:1385;;;;:::o;1355:224::-;1475:7;1511:12;1503:6;;;;1495:29;;;;-1:-1:-1;;;1495:29:0;;;;;;;;:::i;:::-;-1:-1:-1;1535:9:0;1547:5;1551:1;1547;:5;:::i;:::-;1535:17;1355:224;-1:-1:-1;;;;;1355:224:0:o;24806:164::-;24848:7;24869:15;24886;24905:19;:17;:19::i;:::-;24868:56;;-1:-1:-1;24868:56:0;-1:-1:-1;24942:20:0;24868:56;;24942:11;:20::i;:::-;24935:27;;;;24806:164;:::o;23060:730::-;23160:7;23182;23204;23226;23248;23270;23305:14;23322:6;;23305:23;;23340;23365:12;23379;23395:87;23421:7;23443;;23465:6;23395:11;:87::i;:::-;23339:143;;;;;;23493:19;23515:10;:8;:10::i;:::-;23493:32;;23537:15;23554:23;23579:12;23595:108;23621:7;23643:4;23662;23681:11;23595;:108::i;:::-;23536:167;;-1:-1:-1;23536:167:0;-1:-1:-1;23536:167:0;-1:-1:-1;23754:15:0;;-1:-1:-1;23771:4:0;;-1:-1:-1;23777:4:0;;-1:-1:-1;;;;;;23060:730:0;;;;;;;:::o;1211:136::-;1269:7;1296:43;1300:1;1303;1296:43;;;;;;;;;;;;;;;;;:3;:43::i;1024:179::-;1082:7;;1114:5;1118:1;1114;:5;:::i;:::-;1102:17;;1143:1;1138;:6;;1130:46;;;;-1:-1:-1;;;1130:46:0;;5862:2:1;1130:46:0;;;5844:21:1;5901:2;5881:18;;;5874:30;5940:29;5920:18;;;5913:57;5987:18;;1130:46:0;5834:177:1;3460:191:0;3534:16;3553:6;;-1:-1:-1;;;;;3570:17:0;;;-1:-1:-1;;;;;;3570:17:0;;;;;;3603:40;;3553:6;;;;;;;3603:40;;3534:16;3603:40;3460:191;;:::o;1981:223::-;2101:7;2136:12;2129:5;2121:28;;;;-1:-1:-1;;;2121:28:0;;;;;;;;:::i;:::-;-1:-1:-1;2160:9:0;2172:5;2176:1;2172;:5;:::i;18423:886::-;18579:7;18574:55;;18603:14;:12;:14::i;:::-;-1:-1:-1;;;;;18643:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;18667:22:0;;;;;;:11;:22;;;;;;;;18666:23;18643:46;18639:597;;;18706:48;18728:6;18736:9;18747:6;18706:21;:48::i;:::-;18639:597;;;-1:-1:-1;;;;;18777:19:0;;;;;;:11;:19;;;;;;;;18776:20;:46;;;;-1:-1:-1;;;;;;18800:22:0;;;;;;:11;:22;;;;;;;;18776:46;18772:464;;;18839:46;18859:6;18867:9;18878:6;18839:19;:46::i;18772:464::-;-1:-1:-1;;;;;18908:19:0;;;;;;:11;:19;;;;;;;;18907:20;:47;;;;-1:-1:-1;;;;;;18932:22:0;;;;;;:11;:22;;;;;;;;18931:23;18907:47;18903:333;;;18971:44;18989:6;18997:9;19008:6;18971:17;:44::i;18903:333::-;-1:-1:-1;;;;;19037:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;19060:22:0;;;;;;:11;:22;;;;;;;;19037:45;19033:203;;;19099:48;19121:6;19129:9;19140:6;19099:21;:48::i;19033:203::-;19180:44;19198:6;19206:9;19217:6;19180:17;:44::i;:::-;19251:7;19246:56;;19275:15;16411:14;;16402:6;:23;16446:15;;16436:7;:25;16358:111;24978:605;25076:7;;25029;;;;-1:-1:-1;;;25029:7:0;25130:338;25154:9;:16;25150:20;;25130:338;;;25238:7;25214;:21;25222:9;25232:1;25222:12;;;;;;-1:-1:-1;;;25222:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25222:12:0;25214:21;;;;;;;;;;;;;:31;;:83;;;25290:7;25266;:21;25274:9;25284:1;25274:12;;;;;;-1:-1:-1;;;25274:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25274:12:0;25266:21;;;;;;;;;;;;;:31;25214:83;25192:146;;;-1:-1:-1;;25321:7:0;;;-1:-1:-1;;;9486:18:0;-1:-1:-1;24978:605:0;-1:-1:-1;;24978:605:0:o;25192:146::-;25363:34;25375:7;:21;25383:9;25393:1;25383:12;;;;;;-1:-1:-1;;;25383:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25383:12:0;25375:21;;;;;;;;;;;;;25363:7;;:11;:34::i;:::-;25353:44;;25422:34;25434:7;:21;25442:9;25452:1;25442:12;;;;;;-1:-1:-1;;;25442:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;25442:12:0;25434:21;;;;;;;;;;;;;25422:7;;:11;:34::i;:::-;25412:44;-1:-1:-1;25172:3:0;;;;:::i;:::-;;;;25130:338;;;-1:-1:-1;25492:7:0;;:20;;-1:-1:-1;;;25492:11:0;:20::i;:::-;25482:7;:30;25478:61;;;-1:-1:-1;;25522:7:0;;;-1:-1:-1;;;9486:18:0;-1:-1:-1;24978:605:0;-1:-1:-1;24978:605:0:o;25478:61::-;25558:7;;25567;;-1:-1:-1;24978:605:0;-1:-1:-1;24978:605:0:o;23798:462::-;23965:7;;;;24059:28;24083:3;24059:19;:7;24071:6;24059:11;:19::i;:28::-;24044:43;-1:-1:-1;24098:12:0;24113:28;24137:3;24113:19;:7;24125:6;24113:11;:19::i;:28::-;24098:43;-1:-1:-1;24152:23:0;24178:27;24098:43;24178:17;:7;24190:4;24178:11;:17::i;:::-;:21;;:27::i;:::-;24152:53;24241:4;;-1:-1:-1;24247:4:0;;-1:-1:-1;23798:462:0;;-1:-1:-1;;;;;23798:462:0:o;24268:530::-;24461:7;;;;24558:24;:7;24570:11;24558;:24::i;:::-;24540:42;-1:-1:-1;24593:12:0;24608:21;:4;24617:11;24608:8;:21::i;:::-;24593:36;-1:-1:-1;24640:12:0;24655:21;:4;24664:11;24655:8;:21::i;:::-;24640:36;-1:-1:-1;24687:23:0;24713:27;24640:36;24713:17;:7;24725:4;24713:11;:17::i;:27::-;24759:7;;;;-1:-1:-1;24785:4:0;;-1:-1:-1;24268:530:0;;-1:-1:-1;;;;;;;24268:530:0:o;15965:202::-;16008:6;;:11;:28;;;;-1:-1:-1;16024:7:0;;:12;16008:28;16004:41;;;15965:202::o;16004:41::-;16072:6;;;16055:14;:23;16107:7;;;16089:15;:25;-1:-1:-1;16127:10:0;;;;16148:11;15965:202::o;20800:758::-;20951:15;20981:23;21019:12;21046:23;21084:12;21111;21137:19;21148:7;21137:10;:19::i;:::-;-1:-1:-1;;;;;21185:15:0;;;;;;:7;:15;;;;;;20936:220;;-1:-1:-1;20936:220:0;;-1:-1:-1;20936:220:0;;-1:-1:-1;20936:220:0;-1:-1:-1;20936:220:0;-1:-1:-1;20936:220:0;-1:-1:-1;21185:28:0;;21205:7;21185:19;:28::i;:::-;-1:-1:-1;;;;;21167:15:0;;;;;;:7;:15;;;;;;;;:46;;;;21242:7;:15;;;;:28;;21262:7;21242:19;:28::i;:::-;-1:-1:-1;;;;;21224:15:0;;;;;;;:7;:15;;;;;;:46;;;;21302:18;;;;;;;:39;;21325:15;21302:22;:39::i;:::-;-1:-1:-1;;;;;21281:18:0;;;;;;:7;:18;;;;;:60;21352:13;21360:4;21352:7;:13::i;:::-;21376:23;21388:4;21394;21376:11;:23::i;:::-;21432:9;-1:-1:-1;;;;;21415:44:0;21424:6;-1:-1:-1;;;;;21415:44:0;;21443:15;21415:44;;;;11368:25:1;;11356:2;11341:18;;11323:76;21415:44:0;;;;;;;;21473:8;;21470:81;;21519:13;;21503:36;;11368:25:1;;;-1:-1:-1;;;;;21519:13:0;;;;21503:36;;;;;11356:2:1;11341:18;21503:36:0;;;;;;;21470:81;20800:758;;;;;;;;;:::o;20022:770::-;20171:15;20201:23;20239:12;20266:23;20304:12;20331;20357:19;20368:7;20357:10;:19::i;:::-;-1:-1:-1;;;;;20405:15:0;;;;;;:7;:15;;;;;;20156:220;;-1:-1:-1;20156:220:0;;-1:-1:-1;20156:220:0;;-1:-1:-1;20156:220:0;-1:-1:-1;20156:220:0;-1:-1:-1;20156:220:0;-1:-1:-1;20405:28:0;;20156:220;20405:19;:28::i;:::-;-1:-1:-1;;;;;20387:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;20465:18;;;;;:7;:18;;;;;:39;;20488:15;20465:22;:39::i;:::-;-1:-1:-1;;;;;20444:18:0;;;;;;:7;:18;;;;;;;;:60;;;;20536:7;:18;;;;:39;;20559:15;20536:22;:39::i;19317:697::-;19464:15;19494:23;19532:12;19559:23;19597:12;19624;19650:19;19661:7;19650:10;:19::i;:::-;-1:-1:-1;;;;;19698:15:0;;;;;;:7;:15;;;;;;19449:220;;-1:-1:-1;19449:220:0;;-1:-1:-1;19449:220:0;;-1:-1:-1;19449:220:0;-1:-1:-1;19449:220:0;-1:-1:-1;19449:220:0;-1:-1:-1;19698:28:0;;19449:220;19698:19;:28::i;21566:839::-;21717:15;21747:23;21785:12;21812:23;21850:12;21877;21903:19;21914:7;21903:10;:19::i;:::-;-1:-1:-1;;;;;21951:15:0;;;;;;:7;:15;;;;;;21702:220;;-1:-1:-1;21702:220:0;;-1:-1:-1;21702:220:0;;-1:-1:-1;21702:220:0;-1:-1:-1;21702:220:0;-1:-1:-1;21702:220:0;-1:-1:-1;21951:28:0;;21971:7;21951:19;:28::i;:::-;-1:-1:-1;;;;;21933:15:0;;;;;;:7;:15;;;;;;;;:46;;;;22008:7;:15;;;;:28;;22028:7;22008:19;:28::i;22485:375::-;22538:8;;22535:318;;22563:19;22585:10;:8;:10::i;:::-;22563:32;-1:-1:-1;22610:12:0;22625:21;:4;22563:32;22625:8;:21::i;:::-;22694:13;;-1:-1:-1;;;;;22694:13:0;22686:22;;;;:7;:22;;;;;;22610:36;;-1:-1:-1;22686:32:0;;22610:36;22686:26;:32::i;:::-;22669:13;;;-1:-1:-1;;;;;22669:13:0;;;22661:22;;;;:7;:22;;;;;;;;:57;;;;22749:13;;;;;22737:26;;:11;:26;;;;;;;22733:106;;;22815:13;;-1:-1:-1;;;;;22815:13:0;22807:22;;;;:7;:22;;;;;;:32;;22834:4;22807:26;:32::i;:::-;22790:13;;-1:-1:-1;;;;;22790:13:0;22782:22;;;;:7;:22;;;;;:57;22535:318;;22485:375;:::o;22868:147::-;22946:7;;:17;;22958:4;22946:11;:17::i;:::-;22936:7;:27;22987:10;;:20;;23002:4;22987:14;:20::i;:::-;22974:10;:33;-1:-1:-1;;22868:147:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:270::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:338::-;745:6;753;761;814:2;802:9;793:7;789:23;785:32;782:2;;;835:6;827;820:22;782:2;863:29;882:9;863:29;:::i;:::-;853:39;;911:38;945:2;934:9;930:18;911:38;:::i;:::-;901:48;;996:2;985:9;981:18;968:32;958:42;;772:234;;;;;:::o;1011:325::-;1076:6;1084;1137:2;1125:9;1116:7;1112:23;1108:32;1105:2;;;1158:6;1150;1143:22;1105:2;1186:29;1205:9;1186:29;:::i;:::-;1176:39;;1265:2;1254:9;1250:18;1237:32;1278:28;1300:5;1278:28;:::i;:::-;1325:5;1315:15;;;1095:241;;;;;:::o;1341:264::-;1409:6;1417;1470:2;1458:9;1449:7;1445:23;1441:32;1438:2;;;1491:6;1483;1476:22;1438:2;1519:29;1538:9;1519:29;:::i;:::-;1509:39;1595:2;1580:18;;;;1567:32;;-1:-1:-1;;;1428:177:1:o;1610:255::-;1677:6;1730:2;1718:9;1709:7;1705:23;1701:32;1698:2;;;1751:6;1743;1736:22;1698:2;1788:9;1782:16;1807:28;1829:5;1807:28;:::i;1870:190::-;1929:6;1982:2;1970:9;1961:7;1957:23;1953:32;1950:2;;;2003:6;1995;1988:22;1950:2;-1:-1:-1;2031:23:1;;1940:120;-1:-1:-1;1940:120:1:o;2065:319::-;2130:6;2138;2191:2;2179:9;2170:7;2166:23;2162:32;2159:2;;;2212:6;2204;2197:22;2159:2;2253:9;2240:23;2230:33;;2313:2;2302:9;2298:18;2285:32;2326:28;2348:5;2326:28;:::i;3068:603::-;3180:4;3209:2;3238;3227:9;3220:21;3270:6;3264:13;3313:6;3308:2;3297:9;3293:18;3286:34;3338:4;3351:140;3365:6;3362:1;3359:13;3351:140;;;3460:14;;;3456:23;;3450:30;3426:17;;;3445:2;3422:26;3415:66;3380:10;;3351:140;;;3509:6;3506:1;3503:13;3500:2;;;3579:4;3574:2;3565:6;3554:9;3550:22;3546:31;3539:45;3500:2;-1:-1:-1;3655:2:1;3634:15;-1:-1:-1;;3630:29:1;3615:45;;;;3662:2;3611:54;;3189:482;-1:-1:-1;;;3189:482:1:o;8180:356::-;8382:2;8364:21;;;8401:18;;;8394:30;8460:34;8455:2;8440:18;;8433:62;8527:2;8512:18;;8354:182::o;11593:128::-;11633:3;11664:1;11660:6;11657:1;11654:13;11651:2;;;11670:18;;:::i;:::-;-1:-1:-1;11706:9:1;;11641:80::o;11726:217::-;11766:1;11792;11782:2;;-1:-1:-1;;;11817:31:1;;11871:4;11868:1;11861:15;11899:4;11824:1;11889:15;11782:2;-1:-1:-1;11928:9:1;;11772:171::o;11948:168::-;11988:7;12054:1;12050;12046:6;12042:14;12039:1;12036:21;12031:1;12024:9;12017:17;12013:45;12010:2;;;12061:18;;:::i;:::-;-1:-1:-1;12101:9:1;;12000:116::o;12121:125::-;12161:4;12189:1;12186;12183:8;12180:2;;;12194:18;;:::i;:::-;-1:-1:-1;12231:9:1;;12170:76::o;12251:135::-;12290:3;-1:-1:-1;;12311:17:1;;12308:2;;;12331:18;;:::i;:::-;-1:-1:-1;12378:1:1;12367:13;;12298:88::o;12391:127::-;12452:10;12447:3;12443:20;12440:1;12433:31;12483:4;12480:1;12473:15;12507:4;12504:1;12497:15;12523:118;12609:5;12602:13;12595:21;12588:5;12585:32;12575:2;;12631:1;12628;12621:12

Swarm Source

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