ETH Price: $2,264.36 (+2.14%)

Token

Bitlink (BTK)
 

Overview

Max Total Supply

10,000,000,000 BTK

Holders

168 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
16,666.6667 BTK

Value
$0.00
0x61f4e0111ca69a2547b56ce9e6a93d38b02175d3
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Bitlink is an innovative ecosystem for digital asset trading. BTK token empowers the Bitlink platform economy and community using Web3 Integration, spot/contract trading, and NFT mining services.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Bitlink

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 200 runs

Other Settings:
london EvmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-30
*/

// SPDX-License-Identifier: MIT LICENSE
pragma solidity ^0.8.8;

interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(
        address owner,
        address spender
    ) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view virtual override returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5.05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless this function is
     * overridden;
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(
        address account
    ) public view virtual override returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(
        address owner,
        address spender
    ) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(
        address spender,
        uint256 amount
    ) public virtual override returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * Requirements:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(
            fromBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

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

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

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

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    /**
     * @dev Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(
                currentAllowance >= amount,
                "ERC20: insufficient allowance"
            );
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to 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 IUniswapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

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

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

    function allPairsLength() external view returns (uint256);

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

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

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

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

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

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

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

contract Bitlink is ERC20, Ownable {
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public _isExcludedFromFee;
    mapping(address => bool) public _isBot;

    uint8 private _decimals = 18;
    uint256 private _tTotal = 10_000_000_000 * 10 ** _decimals;

    uint256 private buyBurnFee = 5;
    uint256 private sellBurnFee = 5;

    IUniswapV2Router public immutable uniswapV2Router =
        IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    mapping(address => bool) public swapPairList;

    address constant _dead = 0x000000000000000000000000000000000000dEaD;

    bool public tradeEnabled = false;
    uint256 public launchedAt = 0;
    uint256 public killBotSeconds = 30;
    address public _creator;

    constructor() ERC20("Bitlink", "BTK") {
        _isExcludedFromFee[owner()] = true;
        _creator = owner();
        _mint(_msgSender(), _tTotal);
    }

    function excludeMultipleAccountsFromFee(
        address[] calldata accounts,
        bool excluded
    ) public onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function setBots(
        address[] calldata account,
        bool value
    ) external onlyOwner {
        for (uint256 i = 0; i < account.length; i++) {
            _isBot[account[i]] = value;
        }
    }

    function setBurnFeePercent(
        uint256 _buyBurnFee,
        uint256 _sellBurnFee
    ) external onlyOwner {
        require(_buyBurnFee <= 10 && _sellBurnFee <= 10, "Fee must <= 10%");
        buyBurnFee = _buyBurnFee;
        sellBurnFee = _sellBurnFee;
    }

    function setTradeEnabled(bool _enabled) public onlyOwner {
        require(
            tradeEnabled == false && tradeEnabled != _enabled,
            "tradeEnabled"
        );
        tradeEnabled = _enabled;
        if (launchedAt == 0) launchedAt = block.timestamp;
    }

    function setSwapPairList(
        address _uniswapV2Pair,
        bool _val
    ) public onlyOwner {
        swapPairList[_uniswapV2Pair] = _val;
    }

    function getFeesPercent() external view returns (uint256, uint256) {
        return (buyBurnFee, sellBurnFee);
    }

    receive() external payable {}

    function transfer(
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        return _tokenTransfer(_msgSender(), to, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(sender, spender, amount);
        return _tokenTransfer(sender, recipient, amount);
    }

    function _tokenTransfer(
        address from,
        address to,
        uint256 amount
    ) private returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(!_isBot[from], "bot address");

        if (
            !tradeEnabled &&
            (!_isExcludedFromFee[from] && !_isExcludedFromFee[to])
        ) {
            revert("Can't transfer now");
        }
        if (
            block.timestamp - launchedAt <= killBotSeconds &&
            swapPairList[from] &&
            !_isExcludedFromFee[to]
        ) {
            _isBot[to] = true;
        }
        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        if (takeFee) {
            uint256 fees;
            if (swapPairList[from] && buyBurnFee > 0) {
                fees = (amount * buyBurnFee) / 100;
            }
            if (swapPairList[to] && sellBurnFee > 0) {
                fees = (amount * sellBurnFee) / 100;
            }
            if (fees > 0) {
                amount = amount - fees;
                _transfer(from, _dead, fees);
            }
        }
        _transfer(from, to, amount);
        return true;
    }

    function withdrawETH() public {
        uint256 ethers = address(this).balance;
        if (ethers > 0) payable(_creator).transfer(ethers);
    }

    function withdrawToken(address[] calldata tokenAddr) public {
        unchecked {
            for (uint256 index = 0; index < tokenAddr.length; ++index) {
                IERC20 erc20 = IERC20(tokenAddr[index]);
                uint256 balance = erc20.balanceOf(address(this));
                if (balance > 0) {
                    (bool success, bytes memory data) = tokenAddr[index].call(
                        abi.encodeWithSelector(0xa9059cbb, _creator, balance)
                    );
                    require(
                        success &&
                            (data.length == 0 || abi.decode(data, (bool))),
                        "TransferHelper: TRANSFER_FAILED"
                    );
                }
            }
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_creator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFeesPercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"killBotSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"account","type":"address[]"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyBurnFee","type":"uint256"},{"internalType":"uint256","name":"_sellBurnFee","type":"uint256"}],"name":"setBurnFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"},{"internalType":"bool","name":"_val","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setTradeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","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":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"tokenAddr","type":"address[]"}],"name":"withdrawToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052600a805460ff1916601290811782556200001e91620003b4565b6200002f906402540be400620003cc565b600b556005600c819055600d55737a250d5630b4cf539739df2c5dacb4c659f2488d608052600f805460ff191690556000601055601e6011553480156200007557600080fd5b50604051806040016040528060078152602001664269746c696e6b60c81b8152506040518060400160405280600381526020016242544b60e81b8152508160039081620000c391906200048a565b506004620000d282826200048a565b505050620000ef620000e96200017e60201b60201c565b62000182565b600160086000620001086005546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620001436005546001600160a01b031690565b601280546001600160a01b0319166001600160a01b0392909216919091179055620001786200016f3390565b600b54620001d4565b6200056c565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b0382166200022f5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b806002600082825462000243919062000556565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b505050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002f6578160001904821115620002da57620002da6200029f565b80851615620002e857918102915b93841c9390800290620002ba565b509250929050565b6000826200030f57506001620003ae565b816200031e57506000620003ae565b8160018114620003375760028114620003425762000362565b6001915050620003ae565b60ff8411156200035657620003566200029f565b50506001821b620003ae565b5060208310610133831016604e8410600b841016171562000387575081810a620003ae565b620003938383620002b5565b8060001904821115620003aa57620003aa6200029f565b0290505b92915050565b6000620003c560ff841683620002fe565b9392505050565b8082028115828204841417620003ae57620003ae6200029f565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200041157607f821691505b6020821081036200043257634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200029a57600081815260208120601f850160051c81016020861015620004615750805b601f850160051c820191505b8181101562000482578281556001016200046d565b505050505050565b81516001600160401b03811115620004a657620004a6620003e6565b620004be81620004b78454620003fc565b8462000438565b602080601f831160018114620004f65760008415620004dd5750858301515b600019600386901b1c1916600185901b17855562000482565b600085815260208120601f198616915b82811015620005275788860151825594840194600190910190840162000506565b5085821015620005465787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b80820180821115620003ae57620003ae6200029f565b6080516117ae62000588600039600061026c01526117ae6000f3fe6080604052600436106101d15760003560e01c8063768dc710116100f7578063a9059cbb11610095578063d621e81311610064578063d621e81314610583578063dd62ed3e1461059d578063e086e5ec146105bd578063f2fde38b146105d257600080fd5b8063a9059cbb146104fd578063abb810521461051d578063bc8bde641461054d578063bf56b3711461056d57600080fd5b806395d89b41116100d157806395d89b41146104885780639c0db5f31461049d578063a457c2d7146104bd578063a8424861146104dd57600080fd5b8063768dc7101461041a5780638da5cb5b1461044a5780638fc3d4b81461046857600080fd5b8063395093511161016f5780635c134edb1161013e5780635c134edb146103915780635e7f6718146103a757806370a08231146103cf578063715018a61461040557600080fd5b806339509351146103015780633bec2bf3146103215780633c34ff63146103415780634b0879fe1461037157600080fd5b80631694505e116101ab5780631694505e1461025a57806318160ddd146102a657806323b872dd146102c5578063313ce567146102e557600080fd5b806306fdde03146101dd5780630850935f14610208578063095ea7b31461022a57600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f26105f2565b6040516101ff9190611354565b60405180910390f35b34801561021457600080fd5b506102286102233660046113e1565b610684565b005b34801561023657600080fd5b5061024a610245366004611454565b610703565b60405190151581526020016101ff565b34801561026657600080fd5b5061028e7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101ff565b3480156102b257600080fd5b506002545b6040519081526020016101ff565b3480156102d157600080fd5b5061024a6102e036600461147e565b61071d565b3480156102f157600080fd5b50604051601281526020016101ff565b34801561030d57600080fd5b5061024a61031c366004611454565b61073f565b34801561032d57600080fd5b5061022861033c3660046114ba565b610761565b34801561034d57600080fd5b5061024a61035c3660046114d7565b600e6020526000908152604090205460ff1681565b34801561037d57600080fd5b5061022861038c3660046114f2565b6107e5565b34801561039d57600080fd5b506102b760115481565b3480156103b357600080fd5b50600c54600d54604080519283526020830191909152016101ff565b3480156103db57600080fd5b506102b76103ea3660046114d7565b6001600160a01b031660009081526020819052604090205490565b34801561041157600080fd5b506102286109de565b34801561042657600080fd5b5061024a6104353660046114d7565b60086020526000908152604090205460ff1681565b34801561045657600080fd5b506005546001600160a01b031661028e565b34801561047457600080fd5b50610228610483366004611534565b6109f2565b34801561049457600080fd5b506101f2610a55565b3480156104a957600080fd5b506102286104b83660046113e1565b610a64565b3480156104c957600080fd5b5061024a6104d8366004611454565b610add565b3480156104e957600080fd5b506102286104f8366004611556565b610b63565b34801561050957600080fd5b5061024a610518366004611454565b610b96565b34801561052957600080fd5b5061024a6105383660046114d7565b60096020526000908152604090205460ff1681565b34801561055957600080fd5b5060125461028e906001600160a01b031681565b34801561057957600080fd5b506102b760105481565b34801561058f57600080fd5b50600f5461024a9060ff1681565b3480156105a957600080fd5b506102b76105b836600461158d565b610baa565b3480156105c957600080fd5b50610228610bd5565b3480156105de57600080fd5b506102286105ed3660046114d7565b610c1a565b606060038054610601906115c0565b80601f016020809104026020016040519081016040528092919081815260200182805461062d906115c0565b801561067a5780601f1061064f5761010080835404028352916020019161067a565b820191906000526020600020905b81548152906001019060200180831161065d57829003601f168201915b5050505050905090565b61068c610c90565b60005b828110156106fd5781600860008686858181106106ae576106ae6115fa565b90506020020160208101906106c391906114d7565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806106f581611626565b91505061068f565b50505050565b600033610711818585610cea565b60019150505b92915050565b60003361072b858285610e0e565b610736858585610e82565b95945050505050565b6000336107118185856107528383610baa565b61075c919061163f565b610cea565b610769610c90565b600f5460ff161580156107855750600f5460ff16151581151514155b6107c55760405162461bcd60e51b815260206004820152600c60248201526b1d1c985919515b98589b195960a21b60448201526064015b60405180910390fd5b600f805460ff19168215151790556010546000036107e257426010555b50565b60005b818110156109d9576000838383818110610804576108046115fa565b905060200201602081019061081991906114d7565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611652565b905080156109cf576000808686868181106108a4576108a46115fa565b90506020020160208101906108b991906114d7565b601254604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b031663a9059cbb60e01b17905290519290911691610914919061166b565b6000604051808303816000865af19150503d8060008114610951576040519150601f19603f3d011682016040523d82523d6000602084013e610956565b606091505b50915091508180156109805750805115806109805750808060200190518101906109809190611687565b6109cc5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107bc565b50505b50506001016107e8565b505050565b6109e6610c90565b6109f060006111b4565b565b6109fa610c90565b600a8211158015610a0c5750600a8111155b610a4a5760405162461bcd60e51b815260206004820152600f60248201526e466565206d757374203c3d2031302560881b60448201526064016107bc565b600c91909155600d55565b606060048054610601906115c0565b610a6c610c90565b60005b828110156106fd578160096000868685818110610a8e57610a8e6115fa565b9050602002016020810190610aa391906114d7565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ad581611626565b915050610a6f565b60003381610aeb8286610baa565b905083811015610b4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107bc565b610b588286868403610cea565b506001949350505050565b610b6b610c90565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610ba3338484610e82565b9392505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b4780156107e2576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610c16573d6000803e3d6000fd5b5050565b610c22610c90565b6001600160a01b038116610c875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bc565b6107e2816111b4565b6005546001600160a01b031633146109f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bc565b6001600160a01b038316610d4c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107bc565b6001600160a01b038216610dad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107bc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e1a8484610baa565b905060001981146106fd5781811015610e755760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107bc565b6106fd8484848403610cea565b60006001600160a01b038416610eaa5760405162461bcd60e51b81526004016107bc906116a4565b6001600160a01b038316610ed05760405162461bcd60e51b81526004016107bc906116e9565b60008211610f325760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107bc565b6001600160a01b03841660009081526009602052604090205460ff1615610f895760405162461bcd60e51b815260206004820152600b60248201526a626f74206164647265737360a81b60448201526064016107bc565b600f5460ff16158015610fd957506001600160a01b03841660009081526008602052604090205460ff16158015610fd957506001600160a01b03831660009081526008602052604090205460ff16155b1561101b5760405162461bcd60e51b815260206004820152601260248201527143616e2774207472616e73666572206e6f7760701b60448201526064016107bc565b60115460105461102b904261172c565b1115801561105157506001600160a01b0384166000908152600e602052604090205460ff165b801561107657506001600160a01b03831660009081526008602052604090205460ff16155b1561109f576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6001600160a01b03841660009081526008602052604090205460019060ff16806110e157506001600160a01b03841660009081526008602052604090205460ff165b156110ea575060005b80156111a9576001600160a01b0385166000908152600e602052604081205460ff16801561111a57506000600c54115b1561113c576064600c548561112f919061173f565b6111399190611756565b90505b6001600160a01b0385166000908152600e602052604090205460ff16801561116657506000600d54115b15611188576064600d548561117b919061173f565b6111859190611756565b90505b80156111a757611198818561172c565b93506111a78661dead83611206565b505b610b58858585611206565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661122c5760405162461bcd60e51b81526004016107bc906116a4565b6001600160a01b0382166112525760405162461bcd60e51b81526004016107bc906116e9565b6001600160a01b038316600090815260208190526040902054818110156112ca5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107bc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36106fd565b60005b8381101561134b578181015183820152602001611333565b50506000910152565b6020815260008251806020840152611373816040850160208701611330565b601f01601f19169190910160400192915050565b60008083601f84011261139957600080fd5b50813567ffffffffffffffff8111156113b157600080fd5b6020830191508360208260051b85010111156113cc57600080fd5b9250929050565b80151581146107e257600080fd5b6000806000604084860312156113f657600080fd5b833567ffffffffffffffff81111561140d57600080fd5b61141986828701611387565b909450925050602084013561142d816113d3565b809150509250925092565b80356001600160a01b038116811461144f57600080fd5b919050565b6000806040838503121561146757600080fd5b61147083611438565b946020939093013593505050565b60008060006060848603121561149357600080fd5b61149c84611438565b92506114aa60208501611438565b9150604084013590509250925092565b6000602082840312156114cc57600080fd5b8135610ba3816113d3565b6000602082840312156114e957600080fd5b610ba382611438565b6000806020838503121561150557600080fd5b823567ffffffffffffffff81111561151c57600080fd5b61152885828601611387565b90969095509350505050565b6000806040838503121561154757600080fd5b50508035926020909101359150565b6000806040838503121561156957600080fd5b61157283611438565b91506020830135611582816113d3565b809150509250929050565b600080604083850312156115a057600080fd5b6115a983611438565b91506115b760208401611438565b90509250929050565b600181811c908216806115d457607f821691505b6020821081036115f457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161163857611638611610565b5060010190565b8082018082111561071757610717611610565b60006020828403121561166457600080fd5b5051919050565b6000825161167d818460208701611330565b9190910192915050565b60006020828403121561169957600080fd5b8151610ba3816113d3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561071757610717611610565b808202811582820484141761071757610717611610565b60008261177357634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122053d5fe4e85b6ee1d7d11dfc8d1c0cb26fc25da0c28222ba3a3f64c52b2fd61bf64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c8063768dc710116100f7578063a9059cbb11610095578063d621e81311610064578063d621e81314610583578063dd62ed3e1461059d578063e086e5ec146105bd578063f2fde38b146105d257600080fd5b8063a9059cbb146104fd578063abb810521461051d578063bc8bde641461054d578063bf56b3711461056d57600080fd5b806395d89b41116100d157806395d89b41146104885780639c0db5f31461049d578063a457c2d7146104bd578063a8424861146104dd57600080fd5b8063768dc7101461041a5780638da5cb5b1461044a5780638fc3d4b81461046857600080fd5b8063395093511161016f5780635c134edb1161013e5780635c134edb146103915780635e7f6718146103a757806370a08231146103cf578063715018a61461040557600080fd5b806339509351146103015780633bec2bf3146103215780633c34ff63146103415780634b0879fe1461037157600080fd5b80631694505e116101ab5780631694505e1461025a57806318160ddd146102a657806323b872dd146102c5578063313ce567146102e557600080fd5b806306fdde03146101dd5780630850935f14610208578063095ea7b31461022a57600080fd5b366101d857005b600080fd5b3480156101e957600080fd5b506101f26105f2565b6040516101ff9190611354565b60405180910390f35b34801561021457600080fd5b506102286102233660046113e1565b610684565b005b34801561023657600080fd5b5061024a610245366004611454565b610703565b60405190151581526020016101ff565b34801561026657600080fd5b5061028e7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b0390911681526020016101ff565b3480156102b257600080fd5b506002545b6040519081526020016101ff565b3480156102d157600080fd5b5061024a6102e036600461147e565b61071d565b3480156102f157600080fd5b50604051601281526020016101ff565b34801561030d57600080fd5b5061024a61031c366004611454565b61073f565b34801561032d57600080fd5b5061022861033c3660046114ba565b610761565b34801561034d57600080fd5b5061024a61035c3660046114d7565b600e6020526000908152604090205460ff1681565b34801561037d57600080fd5b5061022861038c3660046114f2565b6107e5565b34801561039d57600080fd5b506102b760115481565b3480156103b357600080fd5b50600c54600d54604080519283526020830191909152016101ff565b3480156103db57600080fd5b506102b76103ea3660046114d7565b6001600160a01b031660009081526020819052604090205490565b34801561041157600080fd5b506102286109de565b34801561042657600080fd5b5061024a6104353660046114d7565b60086020526000908152604090205460ff1681565b34801561045657600080fd5b506005546001600160a01b031661028e565b34801561047457600080fd5b50610228610483366004611534565b6109f2565b34801561049457600080fd5b506101f2610a55565b3480156104a957600080fd5b506102286104b83660046113e1565b610a64565b3480156104c957600080fd5b5061024a6104d8366004611454565b610add565b3480156104e957600080fd5b506102286104f8366004611556565b610b63565b34801561050957600080fd5b5061024a610518366004611454565b610b96565b34801561052957600080fd5b5061024a6105383660046114d7565b60096020526000908152604090205460ff1681565b34801561055957600080fd5b5060125461028e906001600160a01b031681565b34801561057957600080fd5b506102b760105481565b34801561058f57600080fd5b50600f5461024a9060ff1681565b3480156105a957600080fd5b506102b76105b836600461158d565b610baa565b3480156105c957600080fd5b50610228610bd5565b3480156105de57600080fd5b506102286105ed3660046114d7565b610c1a565b606060038054610601906115c0565b80601f016020809104026020016040519081016040528092919081815260200182805461062d906115c0565b801561067a5780601f1061064f5761010080835404028352916020019161067a565b820191906000526020600020905b81548152906001019060200180831161065d57829003601f168201915b5050505050905090565b61068c610c90565b60005b828110156106fd5781600860008686858181106106ae576106ae6115fa565b90506020020160208101906106c391906114d7565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806106f581611626565b91505061068f565b50505050565b600033610711818585610cea565b60019150505b92915050565b60003361072b858285610e0e565b610736858585610e82565b95945050505050565b6000336107118185856107528383610baa565b61075c919061163f565b610cea565b610769610c90565b600f5460ff161580156107855750600f5460ff16151581151514155b6107c55760405162461bcd60e51b815260206004820152600c60248201526b1d1c985919515b98589b195960a21b60448201526064015b60405180910390fd5b600f805460ff19168215151790556010546000036107e257426010555b50565b60005b818110156109d9576000838383818110610804576108046115fa565b905060200201602081019061081991906114d7565b6040516370a0823160e01b81523060048201529091506000906001600160a01b038316906370a0823190602401602060405180830381865afa158015610863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108879190611652565b905080156109cf576000808686868181106108a4576108a46115fa565b90506020020160208101906108b991906114d7565b601254604080516001600160a01b039283166024820152604480820188905282518083039091018152606490910182526020810180516001600160e01b031663a9059cbb60e01b17905290519290911691610914919061166b565b6000604051808303816000865af19150503d8060008114610951576040519150601f19603f3d011682016040523d82523d6000602084013e610956565b606091505b50915091508180156109805750805115806109805750808060200190518101906109809190611687565b6109cc5760405162461bcd60e51b815260206004820152601f60248201527f5472616e7366657248656c7065723a205452414e534645525f4641494c45440060448201526064016107bc565b50505b50506001016107e8565b505050565b6109e6610c90565b6109f060006111b4565b565b6109fa610c90565b600a8211158015610a0c5750600a8111155b610a4a5760405162461bcd60e51b815260206004820152600f60248201526e466565206d757374203c3d2031302560881b60448201526064016107bc565b600c91909155600d55565b606060048054610601906115c0565b610a6c610c90565b60005b828110156106fd578160096000868685818110610a8e57610a8e6115fa565b9050602002016020810190610aa391906114d7565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610ad581611626565b915050610a6f565b60003381610aeb8286610baa565b905083811015610b4b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107bc565b610b588286868403610cea565b506001949350505050565b610b6b610c90565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000610ba3338484610e82565b9392505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b4780156107e2576012546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610c16573d6000803e3d6000fd5b5050565b610c22610c90565b6001600160a01b038116610c875760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107bc565b6107e2816111b4565b6005546001600160a01b031633146109f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bc565b6001600160a01b038316610d4c5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107bc565b6001600160a01b038216610dad5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107bc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610e1a8484610baa565b905060001981146106fd5781811015610e755760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107bc565b6106fd8484848403610cea565b60006001600160a01b038416610eaa5760405162461bcd60e51b81526004016107bc906116a4565b6001600160a01b038316610ed05760405162461bcd60e51b81526004016107bc906116e9565b60008211610f325760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016107bc565b6001600160a01b03841660009081526009602052604090205460ff1615610f895760405162461bcd60e51b815260206004820152600b60248201526a626f74206164647265737360a81b60448201526064016107bc565b600f5460ff16158015610fd957506001600160a01b03841660009081526008602052604090205460ff16158015610fd957506001600160a01b03831660009081526008602052604090205460ff16155b1561101b5760405162461bcd60e51b815260206004820152601260248201527143616e2774207472616e73666572206e6f7760701b60448201526064016107bc565b60115460105461102b904261172c565b1115801561105157506001600160a01b0384166000908152600e602052604090205460ff165b801561107657506001600160a01b03831660009081526008602052604090205460ff16155b1561109f576001600160a01b0383166000908152600960205260409020805460ff191660011790555b6001600160a01b03841660009081526008602052604090205460019060ff16806110e157506001600160a01b03841660009081526008602052604090205460ff165b156110ea575060005b80156111a9576001600160a01b0385166000908152600e602052604081205460ff16801561111a57506000600c54115b1561113c576064600c548561112f919061173f565b6111399190611756565b90505b6001600160a01b0385166000908152600e602052604090205460ff16801561116657506000600d54115b15611188576064600d548561117b919061173f565b6111859190611756565b90505b80156111a757611198818561172c565b93506111a78661dead83611206565b505b610b58858585611206565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03831661122c5760405162461bcd60e51b81526004016107bc906116a4565b6001600160a01b0382166112525760405162461bcd60e51b81526004016107bc906116e9565b6001600160a01b038316600090815260208190526040902054818110156112ca5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107bc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36106fd565b60005b8381101561134b578181015183820152602001611333565b50506000910152565b6020815260008251806020840152611373816040850160208701611330565b601f01601f19169190910160400192915050565b60008083601f84011261139957600080fd5b50813567ffffffffffffffff8111156113b157600080fd5b6020830191508360208260051b85010111156113cc57600080fd5b9250929050565b80151581146107e257600080fd5b6000806000604084860312156113f657600080fd5b833567ffffffffffffffff81111561140d57600080fd5b61141986828701611387565b909450925050602084013561142d816113d3565b809150509250925092565b80356001600160a01b038116811461144f57600080fd5b919050565b6000806040838503121561146757600080fd5b61147083611438565b946020939093013593505050565b60008060006060848603121561149357600080fd5b61149c84611438565b92506114aa60208501611438565b9150604084013590509250925092565b6000602082840312156114cc57600080fd5b8135610ba3816113d3565b6000602082840312156114e957600080fd5b610ba382611438565b6000806020838503121561150557600080fd5b823567ffffffffffffffff81111561151c57600080fd5b61152885828601611387565b90969095509350505050565b6000806040838503121561154757600080fd5b50508035926020909101359150565b6000806040838503121561156957600080fd5b61157283611438565b91506020830135611582816113d3565b809150509250929050565b600080604083850312156115a057600080fd5b6115a983611438565b91506115b760208401611438565b90509250929050565b600181811c908216806115d457607f821691505b6020821081036115f457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161163857611638611610565b5060010190565b8082018082111561071757610717611610565b60006020828403121561166457600080fd5b5051919050565b6000825161167d818460208701611330565b9190910192915050565b60006020828403121561169957600080fd5b8151610ba3816113d3565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b8181038181111561071757610717611610565b808202811582820484141761071757610717611610565b60008261177357634e487b7160e01b600052601260045260246000fd5b50049056fea264697066735822122053d5fe4e85b6ee1d7d11dfc8d1c0cb26fc25da0c28222ba3a3f64c52b2fd61bf64736f6c63430008150033

Deployed Bytecode Sourcemap

24522:5442:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4219:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25549:259;;;;;;;;;;-1:-1:-1;25549:259:0;;;;;:::i;:::-;;:::i;:::-;;6636:226;;;;;;;;;;-1:-1:-1;6636:226:0;;;;;:::i;:::-;;:::i;:::-;;;2338:14:1;;2331:22;2313:41;;2301:2;2286:18;6636:226:0;2173:187:1;24975:121:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2554:32:1;;;2536:51;;2524:2;2509:18;24975:121:0;2365:228:1;5339:108:0;;;;;;;;;;-1:-1:-1;5427:12:0;;5339:108;;;2744:25:1;;;2732:2;2717:18;5339:108:0;2598:177:1;27121:305:0;;;;;;;;;;-1:-1:-1;27121:305:0;;;;;:::i;:::-;;:::i;5181:93::-;;;;;;;;;;-1:-1:-1;5181:93:0;;5264:2;3255:36:1;;3243:2;3228:18;5181:93:0;3113:184:1;8146:263:0;;;;;;;;;;-1:-1:-1;8146:263:0;;;;;:::i;:::-;;:::i;26321:281::-;;;;;;;;;;-1:-1:-1;26321:281:0;;;;;:::i;:::-;;:::i;25105:44::-;;;;;;;;;;-1:-1:-1;25105:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;29183:778;;;;;;;;;;-1:-1:-1;29183:778:0;;;;;:::i;:::-;;:::i;25309:34::-;;;;;;;;;;;;;;;;26774:118;;;;;;;;;;-1:-1:-1;26860:10:0;;26872:11;;26774:118;;;4355:25:1;;;4411:2;4396:18;;4389:34;;;;4328:18;26774:118:0;4181:248:1;5510:143:0;;;;;;;;;;-1:-1:-1;5510:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;5627:18:0;5600:7;5627:18;;;;;;;;;;;;5510:143;17421:103;;;;;;;;;;;;;:::i;24692:50::-;;;;;;;;;;-1:-1:-1;24692:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;16773:87;;;;;;;;;;-1:-1:-1;16846:6:0;;-1:-1:-1;;;;;16846:6:0;16773:87;;26041:272;;;;;;;;;;-1:-1:-1;26041:272:0;;;;;:::i;:::-;;:::i;4438:104::-;;;;;;;;;;;;;:::i;25816:217::-;;;;;;;;;;-1:-1:-1;25816:217:0;;;;;:::i;:::-;;:::i;8912:498::-;;;;;;;;;;-1:-1:-1;8912:498:0;;;;;:::i;:::-;;:::i;26610:156::-;;;;;;;;;;-1:-1:-1;26610:156:0;;;;;:::i;:::-;;:::i;26937:176::-;;;;;;;;;;-1:-1:-1;26937:176:0;;;;;:::i;:::-;;:::i;24749:38::-;;;;;;;;;;-1:-1:-1;24749:38:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25350:23;;;;;;;;;;-1:-1:-1;25350:23:0;;;;-1:-1:-1;;;;;25350:23:0;;;25273:29;;;;;;;;;;;;;;;;25234:32;;;;;;;;;;-1:-1:-1;25234:32:0;;;;;;;;6140:176;;;;;;;;;;-1:-1:-1;6140:176:0;;;;;:::i;:::-;;:::i;29027:148::-;;;;;;;;;;;;;:::i;17679:238::-;;;;;;;;;;-1:-1:-1;17679:238:0;;;;;:::i;:::-;;:::i;4219:100::-;4273:13;4306:5;4299:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4219:100;:::o;25549:259::-;16659:13;:11;:13::i;:::-;25691:9:::1;25686:115;25706:19:::0;;::::1;25686:115;;;25781:8;25747:18;:31;25766:8;;25775:1;25766:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25747:31:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;25747:31:0;:42;;-1:-1:-1;;25747:42:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25727:3;::::1;::::0;::::1;:::i;:::-;;;;25686:115;;;;25549:259:::0;;;:::o;6636:226::-;6744:4;3305:10;6800:32;3305:10;6816:7;6825:6;6800:8;:32::i;:::-;6850:4;6843:11;;;6636:226;;;;;:::o;27121:305::-;27261:4;3305:10;27319:40;27335:6;3305:10;27352:6;27319:15;:40::i;:::-;27377:41;27392:6;27400:9;27411:6;27377:14;:41::i;:::-;27370:48;27121:305;-1:-1:-1;;;;;27121:305:0:o;8146:263::-;8259:4;3305:10;8315:64;3305:10;8331:7;8368:10;8340:25;3305:10;8331:7;8340:9;:25::i;:::-;:38;;;;:::i;:::-;8315:8;:64::i;26321:281::-;16659:13;:11;:13::i;:::-;26411:12:::1;::::0;::::1;;:21;::::0;::::1;:49;;-1:-1:-1::0;26436:12:0::1;::::0;::::1;;:24;;::::0;::::1;;;;26411:49;26389:111;;;::::0;-1:-1:-1;;;26389:111:0;;6601:2:1;26389:111:0::1;::::0;::::1;6583:21:1::0;6640:2;6620:18;;;6613:30;-1:-1:-1;;;6659:18:1;;;6652:42;6711:18;;26389:111:0::1;;;;;;;;;26511:12;:23:::0;;-1:-1:-1;;26511:23:0::1;::::0;::::1;;;::::0;;26549:10:::1;::::0;-1:-1:-1;26549:15:0;26545:49:::1;;26579:15;26566:10;:28:::0;26545:49:::1;26321:281:::0;:::o;29183:778::-;29284:13;29279:664;29303:24;;;29279:664;;;29357:12;29379:9;;29389:5;29379:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;29433:30;;-1:-1:-1;;;29433:30:0;;29457:4;29433:30;;;2536:51:1;29357:39:0;;-1:-1:-1;29415:15:0;;-1:-1:-1;;;;;29433:15:0;;;;;2509:18:1;;29433:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29415:48;-1:-1:-1;29486:11:0;;29482:446;;29523:12;29537:17;29558:9;;29568:5;29558:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;29641:8;;29606:53;;;-1:-1:-1;;;;;29641:8:0;;;29606:53;;;7103:51:1;7170:18;;;;7163:34;;;29606:53:0;;;;;;;;;;7076:18:1;;;;29606:53:0;;;;;;;-1:-1:-1;;;;;29606:53:0;-1:-1:-1;;;29606:53:0;;;29558:124;;:21;;;;;:124;;29606:53;29558:124;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29522:160;;;;29739:7;:86;;;;-1:-1:-1;29780:11:0;;:16;;:44;;;29811:4;29800:24;;;;;;;;;;;;:::i;:::-;29705:203;;;;-1:-1:-1;;;29705:203:0;;7952:2:1;29705:203:0;;;7934:21:1;7991:2;7971:18;;;7964:30;8030:33;8010:18;;;8003:61;8081:18;;29705:203:0;7750:355:1;29705:203:0;29499:429;;29482:446;-1:-1:-1;;29329:7:0;;29279:664;;;;29183:778;;:::o;17421:103::-;16659:13;:11;:13::i;:::-;17486:30:::1;17513:1;17486:18;:30::i;:::-;17421:103::o:0;26041:272::-;16659:13;:11;:13::i;:::-;26189:2:::1;26174:11;:17;;:39;;;;;26211:2;26195:12;:18;;26174:39;26166:67;;;::::0;-1:-1:-1;;;26166:67:0;;8312:2:1;26166:67:0::1;::::0;::::1;8294:21:1::0;8351:2;8331:18;;;8324:30;-1:-1:-1;;;8370:18:1;;;8363:45;8425:18;;26166:67:0::1;8110:339:1::0;26166:67:0::1;26244:10;:24:::0;;;;26279:11:::1;:26:::0;26041:272::o;4438:104::-;4494:13;4527:7;4520:14;;;;;:::i;25816:217::-;16659:13;:11;:13::i;:::-;25933:9:::1;25928:98;25948:18:::0;;::::1;25928:98;;;26009:5;25988:6;:18;25995:7;;26003:1;25995:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;25988:18:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;25988:18:0;:26;;-1:-1:-1;;25988:26:0::1;::::0;::::1;;::::0;;;::::1;::::0;;25968:3;::::1;::::0;::::1;:::i;:::-;;;;25928:98;;8912:498:::0;9030:4;3305:10;9030:4;9113:25;3305:10;9130:7;9113:9;:25::i;:::-;9086:52;;9191:15;9171:16;:35;;9149:122;;;;-1:-1:-1;;;9149:122:0;;8656:2:1;9149:122:0;;;8638:21:1;8695:2;8675:18;;;8668:30;8734:34;8714:18;;;8707:62;-1:-1:-1;;;8785:18:1;;;8778:35;8830:19;;9149:122:0;8454:401:1;9149:122:0;9307:60;9316:5;9323:7;9351:15;9332:16;:34;9307:8;:60::i;:::-;-1:-1:-1;9398:4:0;;8912:498;-1:-1:-1;;;;8912:498:0:o;26610:156::-;16659:13;:11;:13::i;:::-;-1:-1:-1;;;;;26723:28:0;;;::::1;;::::0;;;:12:::1;:28;::::0;;;;:35;;-1:-1:-1;;26723:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26610:156::o;26937:176::-;27041:4;27065:40;3305:10;27094:2;27098:6;27065:14;:40::i;:::-;27058:47;26937:176;-1:-1:-1;;;26937:176:0:o;6140:::-;-1:-1:-1;;;;;6281:18:0;;;6254:7;6281:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;6140:176::o;29027:148::-;29085:21;29121:10;;29117:50;;29141:8;;29133:34;;-1:-1:-1;;;;;29141:8:0;;;;29133:34;;;;;29160:6;;29141:8;29133:34;29141:8;29133:34;29160:6;29141:8;29133:34;;;;;;;;;;;;;;;;;;;;;29057:118;29027:148::o;17679:238::-;16659:13;:11;:13::i;:::-;-1:-1:-1;;;;;17782:22:0;::::1;17760:110;;;::::0;-1:-1:-1;;;17760:110:0;;9062:2:1;17760:110:0::1;::::0;::::1;9044:21:1::0;9101:2;9081:18;;;9074:30;9140:34;9120:18;;;9113:62;-1:-1:-1;;;9191:18:1;;;9184:36;9237:19;;17760:110:0::1;8860:402:1::0;17760:110:0::1;17881:28;17900:8;17881:18;:28::i;16938:132::-:0;16846:6;;-1:-1:-1;;;;;16846:6:0;3305:10;17002:23;16994:68;;;;-1:-1:-1;;;16994:68:0;;9469:2:1;16994:68:0;;;9451:21:1;;;9488:18;;;9481:30;9547:34;9527:18;;;9520:62;9599:18;;16994:68:0;9267:356:1;13038:380:0;-1:-1:-1;;;;;13174:19:0;;13166:68;;;;-1:-1:-1;;;13166:68:0;;9830:2:1;13166:68:0;;;9812:21:1;9869:2;9849:18;;;9842:30;9908:34;9888:18;;;9881:62;-1:-1:-1;;;9959:18:1;;;9952:34;10003:19;;13166:68:0;9628:400:1;13166:68:0;-1:-1:-1;;;;;13253:21:0;;13245:68;;;;-1:-1:-1;;;13245:68:0;;10235:2:1;13245:68:0;;;10217:21:1;10274:2;10254:18;;;10247:30;10313:34;10293:18;;;10286:62;-1:-1:-1;;;10364:18:1;;;10357:32;10406:19;;13245:68:0;10033:398:1;13245:68:0;-1:-1:-1;;;;;13326:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;13378:32;;2744:25:1;;;13378:32:0;;2717:18:1;13378:32:0;;;;;;;13038:380;;;:::o;13709:502::-;13844:24;13871:25;13881:5;13888:7;13871:9;:25::i;:::-;13844:52;;-1:-1:-1;;13911:16:0;:37;13907:297;;14011:6;13991:16;:26;;13965:117;;;;-1:-1:-1;;;13965:117:0;;10638:2:1;13965:117:0;;;10620:21:1;10677:2;10657:18;;;10650:30;10716:31;10696:18;;;10689:59;10765:18;;13965:117:0;10436:353:1;13965:117:0;14126:51;14135:5;14142:7;14170:6;14151:16;:25;14126:8;:51::i;27434:1585::-;27551:4;-1:-1:-1;;;;;27576:18:0;;27568:68;;;;-1:-1:-1;;;27568:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27655:16:0;;27647:64;;;;-1:-1:-1;;;27647:64:0;;;;;;;:::i;:::-;27739:1;27730:6;:10;27722:64;;;;-1:-1:-1;;;27722:64:0;;11806:2:1;27722:64:0;;;11788:21:1;11845:2;11825:18;;;11818:30;11884:34;11864:18;;;11857:62;-1:-1:-1;;;11935:18:1;;;11928:39;11984:19;;27722:64:0;11604:405:1;27722:64:0;-1:-1:-1;;;;;27806:12:0;;;;;;:6;:12;;;;;;;;27805:13;27797:37;;;;-1:-1:-1;;;27797:37:0;;12216:2:1;27797:37:0;;;12198:21:1;12255:2;12235:18;;;12228:30;-1:-1:-1;;;12274:18:1;;;12267:41;12325:18;;27797:37:0;12014:335:1;27797:37:0;27866:12;;;;27865:13;:84;;;;-1:-1:-1;;;;;;27897:24:0;;;;;;:18;:24;;;;;;;;27896:25;:52;;;;-1:-1:-1;;;;;;27926:22:0;;;;;;:18;:22;;;;;;;;27925:23;27896:52;27847:169;;;27976:28;;-1:-1:-1;;;27976:28:0;;12556:2:1;27976:28:0;;;12538:21:1;12595:2;12575:18;;;12568:30;-1:-1:-1;;;12614:18:1;;;12607:48;12672:18;;27976:28:0;12354:342:1;27847:169:0;28076:14;;28062:10;;28044:28;;:15;:28;:::i;:::-;:46;;:81;;;;-1:-1:-1;;;;;;28107:18:0;;;;;;:12;:18;;;;;;;;28044:81;:121;;;;-1:-1:-1;;;;;;28143:22:0;;;;;;:18;:22;;;;;;;;28142:23;28044:121;28026:195;;;-1:-1:-1;;;;;28192:10:0;;;;;;:6;:10;;;;;:17;;-1:-1:-1;;28192:17:0;28205:4;28192:17;;;28026:195;-1:-1:-1;;;;;28412:24:0;;28292:12;28412:24;;;:18;:24;;;;;;28307:4;;28412:24;;;:50;;-1:-1:-1;;;;;;28440:22:0;;;;;;:18;:22;;;;;;;;28412:50;28408:98;;;-1:-1:-1;28489:5:0;28408:98;28522:7;28518:434;;;-1:-1:-1;;;;;28577:18:0;;28546:12;28577:18;;;:12;:18;;;;;;;;:36;;;;;28612:1;28599:10;;:14;28577:36;28573:111;;;28665:3;28651:10;;28642:6;:19;;;;:::i;:::-;28641:27;;;;:::i;:::-;28634:34;;28573:111;-1:-1:-1;;;;;28702:16:0;;;;;;:12;:16;;;;;;;;:35;;;;;28736:1;28722:11;;:15;28702:35;28698:111;;;28790:3;28775:11;;28766:6;:20;;;;:::i;:::-;28765:28;;;;:::i;:::-;28758:35;;28698:111;28827:8;;28823:118;;28865:13;28874:4;28865:6;:13;:::i;:::-;28856:22;;28897:28;28907:4;25183:42;28920:4;28897:9;:28::i;:::-;28531:421;28518:434;28962:27;28972:4;28978:2;28982:6;28962:9;:27::i;18077:191::-;18170:6;;;-1:-1:-1;;;;;18187:17:0;;;-1:-1:-1;;;;;;18187:17:0;;;;;;;18220:40;;18170:6;;;18187:17;18170:6;;18220:40;;18151:16;;18220:40;18140:128;18077:191;:::o;9880:877::-;-1:-1:-1;;;;;10011:18:0;;10003:68;;;;-1:-1:-1;;;10003:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10090:16:0;;10082:64;;;;-1:-1:-1;;;10082:64:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;10232:15:0;;10210:19;10232:15;;;;;;;;;;;10280:21;;;;10258:109;;;;-1:-1:-1;;;10258:109:0;;13431:2:1;10258:109:0;;;13413:21:1;13470:2;13450:18;;;13443:30;13509:34;13489:18;;;13482:62;-1:-1:-1;;;13560:18:1;;;13553:36;13606:19;;10258:109:0;13229:402:1;10258:109:0;-1:-1:-1;;;;;10403:15:0;;;:9;:15;;;;;;;;;;;10421:20;;;10403:38;;10621:13;;;;;;;;;;:23;;;;;;10673:26;;2744:25:1;;;10621:13:0;;10673:26;;2717:18:1;10673:26:0;;;;;;;10712:37;29183:778;14:250:1;99:1;109:113;123:6;120:1;117:13;109:113;;;199:11;;;193:18;180:11;;;173:39;145:2;138:10;109:113;;;-1:-1:-1;;256:1:1;238:16;;231:27;14:250::o;269:396::-;418:2;407:9;400:21;381:4;450:6;444:13;493:6;488:2;477:9;473:18;466:34;509:79;581:6;576:2;565:9;561:18;556:2;548:6;544:15;509:79;:::i;:::-;649:2;628:15;-1:-1:-1;;624:29:1;609:45;;;;656:2;605:54;;269:396;-1:-1:-1;;269:396:1:o;670:367::-;733:8;743:6;797:3;790:4;782:6;778:17;774:27;764:55;;815:1;812;805:12;764:55;-1:-1:-1;838:20:1;;881:18;870:30;;867:50;;;913:1;910;903:12;867:50;950:4;942:6;938:17;926:29;;1010:3;1003:4;993:6;990:1;986:14;978:6;974:27;970:38;967:47;964:67;;;1027:1;1024;1017:12;964:67;670:367;;;;;:::o;1042:118::-;1128:5;1121:13;1114:21;1107:5;1104:32;1094:60;;1150:1;1147;1140:12;1165:566;1257:6;1265;1273;1326:2;1314:9;1305:7;1301:23;1297:32;1294:52;;;1342:1;1339;1332:12;1294:52;1382:9;1369:23;1415:18;1407:6;1404:30;1401:50;;;1447:1;1444;1437:12;1401:50;1486:70;1548:7;1539:6;1528:9;1524:22;1486:70;:::i;:::-;1575:8;;-1:-1:-1;1460:96:1;-1:-1:-1;;1660:2:1;1645:18;;1632:32;1673:28;1632:32;1673:28;:::i;:::-;1720:5;1710:15;;;1165:566;;;;;:::o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:1;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:1:o;2780:328::-;2857:6;2865;2873;2926:2;2914:9;2905:7;2901:23;2897:32;2894:52;;;2942:1;2939;2932:12;2894:52;2965:29;2984:9;2965:29;:::i;:::-;2955:39;;3013:38;3047:2;3036:9;3032:18;3013:38;:::i;:::-;3003:48;;3098:2;3087:9;3083:18;3070:32;3060:42;;2780:328;;;;;:::o;3302:241::-;3358:6;3411:2;3399:9;3390:7;3386:23;3382:32;3379:52;;;3427:1;3424;3417:12;3379:52;3466:9;3453:23;3485:28;3507:5;3485:28;:::i;3548:186::-;3607:6;3660:2;3648:9;3639:7;3635:23;3631:32;3628:52;;;3676:1;3673;3666:12;3628:52;3699:29;3718:9;3699:29;:::i;3739:437::-;3825:6;3833;3886:2;3874:9;3865:7;3861:23;3857:32;3854:52;;;3902:1;3899;3892:12;3854:52;3942:9;3929:23;3975:18;3967:6;3964:30;3961:50;;;4007:1;4004;3997:12;3961:50;4046:70;4108:7;4099:6;4088:9;4084:22;4046:70;:::i;:::-;4135:8;;4020:96;;-1:-1:-1;3739:437:1;-1:-1:-1;;;;3739:437:1:o;4642:248::-;4710:6;4718;4771:2;4759:9;4750:7;4746:23;4742:32;4739:52;;;4787:1;4784;4777:12;4739:52;-1:-1:-1;;4810:23:1;;;4880:2;4865:18;;;4852:32;;-1:-1:-1;4642:248:1:o;4895:315::-;4960:6;4968;5021:2;5009:9;5000:7;4996:23;4992:32;4989:52;;;5037:1;5034;5027:12;4989:52;5060:29;5079:9;5060:29;:::i;:::-;5050:39;;5139:2;5128:9;5124:18;5111:32;5152:28;5174:5;5152:28;:::i;:::-;5199:5;5189:15;;;4895:315;;;;;:::o;5215:260::-;5283:6;5291;5344:2;5332:9;5323:7;5319:23;5315:32;5312:52;;;5360:1;5357;5350:12;5312:52;5383:29;5402:9;5383:29;:::i;:::-;5373:39;;5431:38;5465:2;5454:9;5450:18;5431:38;:::i;:::-;5421:48;;5215:260;;;;;:::o;5480:380::-;5559:1;5555:12;;;;5602;;;5623:61;;5677:4;5669:6;5665:17;5655:27;;5623:61;5730:2;5722:6;5719:14;5699:18;5696:38;5693:161;;5776:10;5771:3;5767:20;5764:1;5757:31;5811:4;5808:1;5801:15;5839:4;5836:1;5829:15;5693:161;;5480:380;;;:::o;5865:127::-;5926:10;5921:3;5917:20;5914:1;5907:31;5957:4;5954:1;5947:15;5981:4;5978:1;5971:15;5997:127;6058:10;6053:3;6049:20;6046:1;6039:31;6089:4;6086:1;6079:15;6113:4;6110:1;6103:15;6129:135;6168:3;6189:17;;;6186:43;;6209:18;;:::i;:::-;-1:-1:-1;6256:1:1;6245:13;;6129:135::o;6269:125::-;6334:9;;;6355:10;;;6352:36;;;6368:18;;:::i;6740:184::-;6810:6;6863:2;6851:9;6842:7;6838:23;6834:32;6831:52;;;6879:1;6876;6869:12;6831:52;-1:-1:-1;6902:16:1;;6740:184;-1:-1:-1;6740:184:1:o;7208:287::-;7337:3;7375:6;7369:13;7391:66;7450:6;7445:3;7438:4;7430:6;7426:17;7391:66;:::i;:::-;7473:16;;;;;7208:287;-1:-1:-1;;7208:287:1:o;7500:245::-;7567:6;7620:2;7608:9;7599:7;7595:23;7591:32;7588:52;;;7636:1;7633;7626:12;7588:52;7668:9;7662:16;7687:28;7709:5;7687:28;:::i;10794:401::-;10996:2;10978:21;;;11035:2;11015:18;;;11008:30;11074:34;11069:2;11054:18;;11047:62;-1:-1:-1;;;11140:2:1;11125:18;;11118:35;11185:3;11170:19;;10794:401::o;11200:399::-;11402:2;11384:21;;;11441:2;11421:18;;;11414:30;11480:34;11475:2;11460:18;;11453:62;-1:-1:-1;;;11546:2:1;11531:18;;11524:33;11589:3;11574:19;;11200:399::o;12701:128::-;12768:9;;;12789:11;;;12786:37;;;12803:18;;:::i;12834:168::-;12907:9;;;12938;;12955:15;;;12949:22;;12935:37;12925:71;;12976:18;;:::i;13007:217::-;13047:1;13073;13063:132;;13117:10;13112:3;13108:20;13105:1;13098:31;13152:4;13149:1;13142:15;13180:4;13177:1;13170:15;13063:132;-1:-1:-1;13209:9:1;;13007:217::o

Swarm Source

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