ETH Price: $2,869.88 (-10.39%)
Gas: 13 Gwei

Token

BitMeme (BTM)
 

Overview

Max Total Supply

21,000,000 BTM

Holders

216

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
0xwolong.eth
Balance
0.428878445863170626 BTM

Value
$0.00
0xa88d4ea05f5835a2876c4423719c2b73d80e3ea6
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:
BTM

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-01
*/

// SPDX-License-Identifier: Unlicensed
//https://t.me/bitmeme_official

pragma solidity 0.8.9;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}
 
interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);
 
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);
 
    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
 
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);
 
    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
 
    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);
 
    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);
 
    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
 
    function initialize(address, address) external;
}
 
interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);
 
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
 
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
 
    function createPair(address tokenA, address tokenB) external returns (address pair);
 
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}
 
interface IERC20 {
    /**
     * @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 `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, 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 `sender` to `recipient` 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 sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
 
    /**
     * @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);
}
 
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);
}
 
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    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:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(_msgSender(), recipient, 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}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }
 
    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is 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:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, 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 _supply(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(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 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 to 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 {}
}
 
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
 
        return c;
    }
 
    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }
 
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
 
        return c;
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
 
        return c;
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }
 
    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}
 
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 () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }
 
    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = 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");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
 
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);
 
    /**
     * @dev Multiplies two int256 variables and fails on overflow.
     */
    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }
 
    /**
     * @dev Division of two int256 variables and fails on overflow.
     */
    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }
 
    /**
     * @dev Subtracts two int256 variables and fails on overflow.
     */
    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }
 
    /**
     * @dev Adds two int256 variables and fails on overflow.
     */
    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }
 
    /**
     * @dev Converts to absolute value, and fails on overflow.
     */
    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
 
interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
 
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
 
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}
 
interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
 
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}
 
contract BTM is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;

    bool public firstLiquid = false;
 
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
   
 
    constructor() ERC20("BitMeme", "BTM") {
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
         
        uint256 totalSupply = 21000000 * 1e18;
 
        _supply(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
  	}
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
       
		if(firstLiquid == false){
			if(to == uniswapV2Pair) {
				if(from == owner()){
					firstLiquid = true;
				} else {
					require(firstLiquid == true, "Not allowed add first Liquidity");
				}
			}
		}
		
        
        super._transfer(from, to, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":[],"name":"firstLiquid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"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":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526000600560146101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600781526020017f4269744d656d65000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42544d00000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000b1929190620005dc565b508060049080519060200190620000ca929190620005dc565b5050506000620000df620003bd60201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021257600080fd5b505afa15801562000227573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200024d9190620006f6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b057600080fd5b505afa158015620002c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002eb9190620006f6565b6040518363ffffffff1660e01b81526004016200030a92919062000739565b602060405180830381600087803b1580156200032557600080fd5b505af11580156200033a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003609190620006f6565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060006a115eec47f6cf7e350000009050620003b53382620003c560201b60201c565b505062000984565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000438576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200042f90620007c7565b60405180910390fd5b6200044c600083836200057460201b60201c565b62000468816002546200057960201b62000c901790919060201c565b600281905550620004c6816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200057960201b62000c901790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000568919062000804565b60405180910390a35050565b505050565b60008082846200058a919062000850565b905083811015620005d2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005c990620008fd565b60405180910390fd5b8091505092915050565b828054620005ea906200094e565b90600052602060002090601f0160209004810192826200060e57600085556200065a565b82601f106200062957805160ff19168380011785556200065a565b828001600101855582156200065a579182015b82811115620006595782518255916020019190600101906200063c565b5b5090506200066991906200066d565b5090565b5b80821115620006885760008160009055506001016200066e565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620006be8262000691565b9050919050565b620006d081620006b1565b8114620006dc57600080fd5b50565b600081519050620006f081620006c5565b92915050565b6000602082840312156200070f576200070e6200068c565b5b60006200071f84828501620006df565b91505092915050565b6200073381620006b1565b82525050565b600060408201905062000750600083018562000728565b6200075f602083018462000728565b9392505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000620007af601f8362000766565b9150620007bc8262000777565b602082019050919050565b60006020820190508181036000830152620007e281620007a0565b9050919050565b6000819050919050565b620007fe81620007e9565b82525050565b60006020820190506200081b6000830184620007f3565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200085d82620007e9565b91506200086a83620007e9565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620008a257620008a162000821565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000620008e5601b8362000766565b9150620008f282620008ad565b602082019050919050565b600060208201905081810360008301526200091881620008d6565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200096757607f821691505b602082108114156200097e576200097d6200091f565b5b50919050565b60805160a051611d43620009b1600039600081816106c60152610fbf015260006105030152611d436000f3fe6080604052600436106101025760003560e01c806370a0823111610095578063999a835711610064578063999a835714610346578063a457c2d714610371578063a9059cbb146103ae578063dd62ed3e146103eb578063f2fde38b1461042857610109565b806370a082311461029c578063715018a6146102d95780638da5cb5b146102f057806395d89b411461031b57610109565b806323b872dd116100d157806323b872dd146101cc578063313ce56714610209578063395093511461023457806349bd5a5e1461027157610109565b806306fdde031461010e578063095ea7b3146101395780631694505e1461017657806318160ddd146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b50610123610451565b604051610130919061146c565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b9190611527565b6104e3565b60405161016d9190611582565b60405180910390f35b34801561018257600080fd5b5061018b610501565b60405161019891906115fc565b60405180910390f35b3480156101ad57600080fd5b506101b6610525565b6040516101c39190611626565b60405180910390f35b3480156101d857600080fd5b506101f360048036038101906101ee9190611641565b61052f565b6040516102009190611582565b60405180910390f35b34801561021557600080fd5b5061021e610608565b60405161022b91906116b0565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190611527565b610611565b6040516102689190611582565b60405180910390f35b34801561027d57600080fd5b506102866106c4565b60405161029391906116da565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be91906116f5565b6106e8565b6040516102d09190611626565b60405180910390f35b3480156102e557600080fd5b506102ee610730565b005b3480156102fc57600080fd5b50610305610888565b60405161031291906116da565b60405180910390f35b34801561032757600080fd5b506103306108b2565b60405161033d919061146c565b60405180910390f35b34801561035257600080fd5b5061035b610944565b6040516103689190611582565b60405180910390f35b34801561037d57600080fd5b5061039860048036038101906103939190611527565b610957565b6040516103a59190611582565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d09190611527565b610a24565b6040516103e29190611582565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190611722565b610a42565b60405161041f9190611626565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a91906116f5565b610ac9565b005b60606003805461046090611791565b80601f016020809104026020016040519081016040528092919081815260200182805461048c90611791565b80156104d95780601f106104ae576101008083540402835291602001916104d9565b820191906000526020600020905b8154815290600101906020018083116104bc57829003601f168201915b5050505050905090565b60006104f76104f0610cee565b8484610cf6565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600254905090565b600061053c848484610ec1565b6105fd84610548610cee565b6105f885604051806060016040528060288152602001611cc160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ae610cee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d59092919063ffffffff16565b610cf6565b600190509392505050565b60006012905090565b60006106ba61061e610cee565b846106b5856001600061062f610cee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9090919063ffffffff16565b610cf6565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610738610cee565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be9061180f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108c190611791565b80601f01602080910402602001604051908101604052809291908181526020018280546108ed90611791565b801561093a5780601f1061090f5761010080835404028352916020019161093a565b820191906000526020600020905b81548152906001019060200180831161091d57829003601f168201915b5050505050905090565b600560149054906101000a900460ff1681565b6000610a1a610964610cee565b84610a1585604051806060016040528060258152602001611ce9602591396001600061098e610cee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d59092919063ffffffff16565b610cf6565b6001905092915050565b6000610a38610a31610cee565b8484610ec1565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ad1610cee565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b579061180f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc7906118a1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284610c9f91906118f0565b905083811015610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90611992565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90611a24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90611ab6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eb49190611626565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890611b48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890611bda565b60405180910390fd5b60001515600560149054906101000a900460ff16151514156110c5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c457611019610888565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561106c576001600560146101000a81548160ff0219169083151502179055506110c3565b60011515600560149054906101000a900460ff161515146110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990611c46565b60405180910390fd5b5b5b5b6110d0838383611139565b505050565b600083831115829061111d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611114919061146c565b60405180910390fd5b506000838561112c9190611c66565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090611b48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090611bda565b60405180910390fd5b6112248383836113ce565b61128f81604051806060016040528060268152602001611c9b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611322816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c19190611626565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561140d5780820151818401526020810190506113f2565b8381111561141c576000848401525b50505050565b6000601f19601f8301169050919050565b600061143e826113d3565b61144881856113de565b93506114588185602086016113ef565b61146181611422565b840191505092915050565b600060208201905081810360008301526114868184611433565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114be82611493565b9050919050565b6114ce816114b3565b81146114d957600080fd5b50565b6000813590506114eb816114c5565b92915050565b6000819050919050565b611504816114f1565b811461150f57600080fd5b50565b600081359050611521816114fb565b92915050565b6000806040838503121561153e5761153d61148e565b5b600061154c858286016114dc565b925050602061155d85828601611512565b9150509250929050565b60008115159050919050565b61157c81611567565b82525050565b60006020820190506115976000830184611573565b92915050565b6000819050919050565b60006115c26115bd6115b884611493565b61159d565b611493565b9050919050565b60006115d4826115a7565b9050919050565b60006115e6826115c9565b9050919050565b6115f6816115db565b82525050565b600060208201905061161160008301846115ed565b92915050565b611620816114f1565b82525050565b600060208201905061163b6000830184611617565b92915050565b60008060006060848603121561165a5761165961148e565b5b6000611668868287016114dc565b9350506020611679868287016114dc565b925050604061168a86828701611512565b9150509250925092565b600060ff82169050919050565b6116aa81611694565b82525050565b60006020820190506116c560008301846116a1565b92915050565b6116d4816114b3565b82525050565b60006020820190506116ef60008301846116cb565b92915050565b60006020828403121561170b5761170a61148e565b5b6000611719848285016114dc565b91505092915050565b600080604083850312156117395761173861148e565b5b6000611747858286016114dc565b9250506020611758858286016114dc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117a957607f821691505b602082108114156117bd576117bc611762565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006117f96020836113de565b9150611804826117c3565b602082019050919050565b60006020820190508181036000830152611828816117ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061188b6026836113de565b91506118968261182f565b604082019050919050565b600060208201905081810360008301526118ba8161187e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118fb826114f1565b9150611906836114f1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561193b5761193a6118c1565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061197c601b836113de565b915061198782611946565b602082019050919050565b600060208201905081810360008301526119ab8161196f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a0e6024836113de565b9150611a19826119b2565b604082019050919050565b60006020820190508181036000830152611a3d81611a01565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611aa06022836113de565b9150611aab82611a44565b604082019050919050565b60006020820190508181036000830152611acf81611a93565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b326025836113de565b9150611b3d82611ad6565b604082019050919050565b60006020820190508181036000830152611b6181611b25565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611bc46023836113de565b9150611bcf82611b68565b604082019050919050565b60006020820190508181036000830152611bf381611bb7565b9050919050565b7f4e6f7420616c6c6f77656420616464206669727374204c697175696469747900600082015250565b6000611c30601f836113de565b9150611c3b82611bfa565b602082019050919050565b60006020820190508181036000830152611c5f81611c23565b9050919050565b6000611c71826114f1565b9150611c7c836114f1565b925082821015611c8f57611c8e6118c1565b5b82820390509291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a87139142ab0d9c84c85c7455aaa867be5da3999d8b2800eed17a32a3fe5fa4a64736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101025760003560e01c806370a0823111610095578063999a835711610064578063999a835714610346578063a457c2d714610371578063a9059cbb146103ae578063dd62ed3e146103eb578063f2fde38b1461042857610109565b806370a082311461029c578063715018a6146102d95780638da5cb5b146102f057806395d89b411461031b57610109565b806323b872dd116100d157806323b872dd146101cc578063313ce56714610209578063395093511461023457806349bd5a5e1461027157610109565b806306fdde031461010e578063095ea7b3146101395780631694505e1461017657806318160ddd146101a157610109565b3661010957005b600080fd5b34801561011a57600080fd5b50610123610451565b604051610130919061146c565b60405180910390f35b34801561014557600080fd5b50610160600480360381019061015b9190611527565b6104e3565b60405161016d9190611582565b60405180910390f35b34801561018257600080fd5b5061018b610501565b60405161019891906115fc565b60405180910390f35b3480156101ad57600080fd5b506101b6610525565b6040516101c39190611626565b60405180910390f35b3480156101d857600080fd5b506101f360048036038101906101ee9190611641565b61052f565b6040516102009190611582565b60405180910390f35b34801561021557600080fd5b5061021e610608565b60405161022b91906116b0565b60405180910390f35b34801561024057600080fd5b5061025b60048036038101906102569190611527565b610611565b6040516102689190611582565b60405180910390f35b34801561027d57600080fd5b506102866106c4565b60405161029391906116da565b60405180910390f35b3480156102a857600080fd5b506102c360048036038101906102be91906116f5565b6106e8565b6040516102d09190611626565b60405180910390f35b3480156102e557600080fd5b506102ee610730565b005b3480156102fc57600080fd5b50610305610888565b60405161031291906116da565b60405180910390f35b34801561032757600080fd5b506103306108b2565b60405161033d919061146c565b60405180910390f35b34801561035257600080fd5b5061035b610944565b6040516103689190611582565b60405180910390f35b34801561037d57600080fd5b5061039860048036038101906103939190611527565b610957565b6040516103a59190611582565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d09190611527565b610a24565b6040516103e29190611582565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d9190611722565b610a42565b60405161041f9190611626565b60405180910390f35b34801561043457600080fd5b5061044f600480360381019061044a91906116f5565b610ac9565b005b60606003805461046090611791565b80601f016020809104026020016040519081016040528092919081815260200182805461048c90611791565b80156104d95780601f106104ae576101008083540402835291602001916104d9565b820191906000526020600020905b8154815290600101906020018083116104bc57829003601f168201915b5050505050905090565b60006104f76104f0610cee565b8484610cf6565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600254905090565b600061053c848484610ec1565b6105fd84610548610cee565b6105f885604051806060016040528060288152602001611cc160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105ae610cee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d59092919063ffffffff16565b610cf6565b600190509392505050565b60006012905090565b60006106ba61061e610cee565b846106b5856001600061062f610cee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9090919063ffffffff16565b610cf6565b6001905092915050565b7f0000000000000000000000004a8545ca0a8c35a5c5b46f7a9c01b8593bc2023881565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610738610cee565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107be9061180f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546108c190611791565b80601f01602080910402602001604051908101604052809291908181526020018280546108ed90611791565b801561093a5780601f1061090f5761010080835404028352916020019161093a565b820191906000526020600020905b81548152906001019060200180831161091d57829003601f168201915b5050505050905090565b600560149054906101000a900460ff1681565b6000610a1a610964610cee565b84610a1585604051806060016040528060258152602001611ce9602591396001600061098e610cee565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d59092919063ffffffff16565b610cf6565b6001905092915050565b6000610a38610a31610cee565b8484610ec1565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610ad1610cee565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b579061180f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610bd0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc7906118a1565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808284610c9f91906118f0565b905083811015610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90611992565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5d90611a24565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90611ab6565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610eb49190611626565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2890611b48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9890611bda565b60405180910390fd5b60001515600560149054906101000a900460ff16151514156110c5577f0000000000000000000000004a8545ca0a8c35a5c5b46f7a9c01b8593bc2023873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c457611019610888565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561106c576001600560146101000a81548160ff0219169083151502179055506110c3565b60011515600560149054906101000a900460ff161515146110c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b990611c46565b60405180910390fd5b5b5b5b6110d0838383611139565b505050565b600083831115829061111d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611114919061146c565b60405180910390fd5b506000838561112c9190611c66565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a090611b48565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090611bda565b60405180910390fd5b6112248383836113ce565b61128f81604051806060016040528060268152602001611c9b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d59092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611322816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c9090919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516113c19190611626565b60405180910390a3505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561140d5780820151818401526020810190506113f2565b8381111561141c576000848401525b50505050565b6000601f19601f8301169050919050565b600061143e826113d3565b61144881856113de565b93506114588185602086016113ef565b61146181611422565b840191505092915050565b600060208201905081810360008301526114868184611433565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006114be82611493565b9050919050565b6114ce816114b3565b81146114d957600080fd5b50565b6000813590506114eb816114c5565b92915050565b6000819050919050565b611504816114f1565b811461150f57600080fd5b50565b600081359050611521816114fb565b92915050565b6000806040838503121561153e5761153d61148e565b5b600061154c858286016114dc565b925050602061155d85828601611512565b9150509250929050565b60008115159050919050565b61157c81611567565b82525050565b60006020820190506115976000830184611573565b92915050565b6000819050919050565b60006115c26115bd6115b884611493565b61159d565b611493565b9050919050565b60006115d4826115a7565b9050919050565b60006115e6826115c9565b9050919050565b6115f6816115db565b82525050565b600060208201905061161160008301846115ed565b92915050565b611620816114f1565b82525050565b600060208201905061163b6000830184611617565b92915050565b60008060006060848603121561165a5761165961148e565b5b6000611668868287016114dc565b9350506020611679868287016114dc565b925050604061168a86828701611512565b9150509250925092565b600060ff82169050919050565b6116aa81611694565b82525050565b60006020820190506116c560008301846116a1565b92915050565b6116d4816114b3565b82525050565b60006020820190506116ef60008301846116cb565b92915050565b60006020828403121561170b5761170a61148e565b5b6000611719848285016114dc565b91505092915050565b600080604083850312156117395761173861148e565b5b6000611747858286016114dc565b9250506020611758858286016114dc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806117a957607f821691505b602082108114156117bd576117bc611762565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006117f96020836113de565b9150611804826117c3565b602082019050919050565b60006020820190508181036000830152611828816117ec565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061188b6026836113de565b91506118968261182f565b604082019050919050565b600060208201905081810360008301526118ba8161187e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006118fb826114f1565b9150611906836114f1565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561193b5761193a6118c1565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061197c601b836113de565b915061198782611946565b602082019050919050565b600060208201905081810360008301526119ab8161196f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611a0e6024836113de565b9150611a19826119b2565b604082019050919050565b60006020820190508181036000830152611a3d81611a01565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611aa06022836113de565b9150611aab82611a44565b604082019050919050565b60006020820190508181036000830152611acf81611a93565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611b326025836113de565b9150611b3d82611ad6565b604082019050919050565b60006020820190508181036000830152611b6181611b25565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611bc46023836113de565b9150611bcf82611b68565b604082019050919050565b60006020820190508181036000830152611bf381611bb7565b9050919050565b7f4e6f7420616c6c6f77656420616464206669727374204c697175696469747900600082015250565b6000611c30601f836113de565b9150611c3b82611bfa565b602082019050919050565b60006020820190508181036000830152611c5f81611c23565b9050919050565b6000611c71826114f1565b9150611c7c836114f1565b925082821015611c8f57611c8e6118c1565b5b82820390509291505056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220a87139142ab0d9c84c85c7455aaa867be5da3999d8b2800eed17a32a3fe5fa4a64736f6c63430008090033

Deployed Bytecode Sourcemap

29436:1374:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7532:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9706:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29510:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8655:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10358:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8496:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11123:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29568:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8827:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22036:148;;;;;;;;;;;;;:::i;:::-;;21392:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7752:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29615:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11845:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9168:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9407:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22340:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7532:100;7586:13;7619:5;7612:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7532:100;:::o;9706:169::-;9789:4;9806:39;9815:12;:10;:12::i;:::-;9829:7;9838:6;9806:8;:39::i;:::-;9863:4;9856:11;;9706:169;;;;:::o;29510:51::-;;;:::o;8655:108::-;8716:7;8743:12;;8736:19;;8655:108;:::o;10358:355::-;10498:4;10515:36;10525:6;10533:9;10544:6;10515:9;:36::i;:::-;10562:121;10571:6;10579:12;:10;:12::i;:::-;10593:89;10631:6;10593:89;;;;;;;;;;;;;;;;;:11;:19;10605:6;10593:19;;;;;;;;;;;;;;;:33;10613:12;:10;:12::i;:::-;10593:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10562:8;:121::i;:::-;10701:4;10694:11;;10358:355;;;;;:::o;8496:93::-;8554:5;8579:2;8572:9;;8496:93;:::o;11123:218::-;11211:4;11228:83;11237:12;:10;:12::i;:::-;11251:7;11260:50;11299:10;11260:11;:25;11272:12;:10;:12::i;:::-;11260:25;;;;;;;;;;;;;;;:34;11286:7;11260:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11228:8;:83::i;:::-;11329:4;11322:11;;11123:218;;;;:::o;29568:38::-;;;:::o;8827:127::-;8901:7;8928:9;:18;8938:7;8928:18;;;;;;;;;;;;;;;;8921:25;;8827:127;;;:::o;22036:148::-;21615:12;:10;:12::i;:::-;21605:22;;:6;;;;;;;;;;;:22;;;21597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22143:1:::1;22106:40;;22127:6;;;;;;;;;;;22106:40;;;;;;;;;;;;22174:1;22157:6;;:19;;;;;;;;;;;;;;;;;;22036:148::o:0;21392:79::-;21430:7;21457:6;;;;;;;;;;;21450:13;;21392:79;:::o;7752:104::-;7808:13;7841:7;7834:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7752:104;:::o;29615:31::-;;;;;;;;;;;;;:::o;11845:269::-;11938:4;11955:129;11964:12;:10;:12::i;:::-;11978:7;11987:96;12026:15;11987:96;;;;;;;;;;;;;;;;;:11;:25;11999:12;:10;:12::i;:::-;11987:25;;;;;;;;;;;;;;;:34;12013:7;11987:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;11955:8;:129::i;:::-;12102:4;12095:11;;11845:269;;;;:::o;9168:175::-;9254:4;9271:42;9281:12;:10;:12::i;:::-;9295:9;9306:6;9271:9;:42::i;:::-;9331:4;9324:11;;9168:175;;;;:::o;9407:151::-;9496:7;9523:11;:18;9535:5;9523:18;;;;;;;;;;;;;;;:27;9542:7;9523:27;;;;;;;;;;;;;;;;9516:34;;9407:151;;;;:::o;22340:244::-;21615:12;:10;:12::i;:::-;21605:22;;:6;;;;;;;;;;;:22;;;21597:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22449:1:::1;22429:22;;:8;:22;;;;22421:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22539:8;22510:38;;22531:6;;;;;;;;;;;22510:38;;;;;;;;;;;;22568:8;22559:6;;:17;;;;;;;;;;;;;;;;;;22340:244:::0;:::o;16424:182::-;16482:7;16502:9;16518:1;16514;:5;;;;:::i;:::-;16502:17;;16543:1;16538;:6;;16530:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16597:1;16590:8;;;16424:182;;;;:::o;134:98::-;187:7;214:10;207:17;;134:98;:::o;15043:381::-;15196:1;15179:19;;:5;:19;;;;15171:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15277:1;15258:21;;:7;:21;;;;15250:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15362:6;15332:11;:18;15344:5;15332:18;;;;;;;;;;;;;;;:27;15351:7;15332:27;;;;;;;;;;;;;;;:36;;;;15400:7;15384:32;;15393:5;15384:32;;;15409:6;15384:32;;;;;;:::i;:::-;;;;;;;;15043:381;;;:::o;30251:556::-;30399:1;30383:18;;:4;:18;;;;30375:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;30476:1;30462:16;;:2;:16;;;;30454:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30550:5;30535:20;;:11;;;;;;;;;;;:20;;;30532:210;;;30571:13;30565:19;;:2;:19;;;30562:175;;;30604:7;:5;:7::i;:::-;30596:15;;:4;:15;;;30593:138;;;30634:4;30620:11;;:18;;;;;;;;;;;;;;;;;;30593:138;;;30683:4;30668:19;;:11;;;;;;;;;;;:19;;;30660:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;30593:138;30562:175;30532:210;30766:33;30782:4;30788:2;30792:6;30766:15;:33::i;:::-;30251:556;;;:::o;17330:193::-;17416:7;17449:1;17444;:6;;17452:12;17436:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17476:9;17492:1;17488;:5;;;;:::i;:::-;17476:17;;17514:1;17507:8;;;17330:193;;;;;:::o;12605:575::-;12763:1;12745:20;;:6;:20;;;;12737:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12847:1;12826:23;;:9;:23;;;;12818:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12903:47;12924:6;12932:9;12943:6;12903:20;:47::i;:::-;12984:71;13006:6;12984:71;;;;;;;;;;;;;;;;;:9;:17;12994:6;12984:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;12964:9;:17;12974:6;12964:17;;;;;;;;;;;;;;;:91;;;;13089:32;13114:6;13089:9;:20;13099:9;13089:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13066:9;:20;13076:9;13066:20;;;;;;;;;;;;;;;:55;;;;13154:9;13137:35;;13146:6;13137:35;;;13165:6;13137:35;;;;;;:::i;:::-;;;;;;;;12605:575;;;:::o;16028:125::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:60::-;3522:3;3543:5;3536:12;;3494:60;;;:::o;3560:142::-;3610:9;3643:53;3661:34;3670:24;3688:5;3670:24;:::i;:::-;3661:34;:::i;:::-;3643:53;:::i;:::-;3630:66;;3560:142;;;:::o;3708:126::-;3758:9;3791:37;3822:5;3791:37;:::i;:::-;3778:50;;3708:126;;;:::o;3840:153::-;3917:9;3950:37;3981:5;3950:37;:::i;:::-;3937:50;;3840:153;;;:::o;3999:185::-;4113:64;4171:5;4113:64;:::i;:::-;4108:3;4101:77;3999:185;;:::o;4190:276::-;4310:4;4348:2;4337:9;4333:18;4325:26;;4361:98;4456:1;4445:9;4441:17;4432:6;4361:98;:::i;:::-;4190:276;;;;:::o;4472:118::-;4559:24;4577:5;4559:24;:::i;:::-;4554:3;4547:37;4472:118;;:::o;4596:222::-;4689:4;4727:2;4716:9;4712:18;4704:26;;4740:71;4808:1;4797:9;4793:17;4784:6;4740:71;:::i;:::-;4596:222;;;;:::o;4824:619::-;4901:6;4909;4917;4966:2;4954:9;4945:7;4941:23;4937:32;4934:119;;;4972:79;;:::i;:::-;4934:119;5092:1;5117:53;5162:7;5153:6;5142:9;5138:22;5117:53;:::i;:::-;5107:63;;5063:117;5219:2;5245:53;5290:7;5281:6;5270:9;5266:22;5245:53;:::i;:::-;5235:63;;5190:118;5347:2;5373:53;5418:7;5409:6;5398:9;5394:22;5373:53;:::i;:::-;5363:63;;5318:118;4824:619;;;;;:::o;5449:86::-;5484:7;5524:4;5517:5;5513:16;5502:27;;5449:86;;;:::o;5541:112::-;5624:22;5640:5;5624:22;:::i;:::-;5619:3;5612:35;5541:112;;:::o;5659:214::-;5748:4;5786:2;5775:9;5771:18;5763:26;;5799:67;5863:1;5852:9;5848:17;5839:6;5799:67;:::i;:::-;5659:214;;;;:::o;5879:118::-;5966:24;5984:5;5966:24;:::i;:::-;5961:3;5954:37;5879:118;;:::o;6003:222::-;6096:4;6134:2;6123:9;6119:18;6111:26;;6147:71;6215:1;6204:9;6200:17;6191:6;6147:71;:::i;:::-;6003:222;;;;:::o;6231:329::-;6290:6;6339:2;6327:9;6318:7;6314:23;6310:32;6307:119;;;6345:79;;:::i;:::-;6307:119;6465:1;6490:53;6535:7;6526:6;6515:9;6511:22;6490:53;:::i;:::-;6480:63;;6436:117;6231:329;;;;:::o;6566:474::-;6634:6;6642;6691:2;6679:9;6670:7;6666:23;6662:32;6659:119;;;6697:79;;:::i;:::-;6659:119;6817:1;6842:53;6887:7;6878:6;6867:9;6863:22;6842:53;:::i;:::-;6832:63;;6788:117;6944:2;6970:53;7015:7;7006:6;6995:9;6991:22;6970:53;:::i;:::-;6960:63;;6915:118;6566:474;;;;;:::o;7046:180::-;7094:77;7091:1;7084:88;7191:4;7188:1;7181:15;7215:4;7212:1;7205:15;7232:320;7276:6;7313:1;7307:4;7303:12;7293:22;;7360:1;7354:4;7350:12;7381:18;7371:81;;7437:4;7429:6;7425:17;7415:27;;7371:81;7499:2;7491:6;7488:14;7468:18;7465:38;7462:84;;;7518:18;;:::i;:::-;7462:84;7283:269;7232:320;;;:::o;7558:182::-;7698:34;7694:1;7686:6;7682:14;7675:58;7558:182;:::o;7746:366::-;7888:3;7909:67;7973:2;7968:3;7909:67;:::i;:::-;7902:74;;7985:93;8074:3;7985:93;:::i;:::-;8103:2;8098:3;8094:12;8087:19;;7746:366;;;:::o;8118:419::-;8284:4;8322:2;8311:9;8307:18;8299:26;;8371:9;8365:4;8361:20;8357:1;8346:9;8342:17;8335:47;8399:131;8525:4;8399:131;:::i;:::-;8391:139;;8118:419;;;:::o;8543:225::-;8683:34;8679:1;8671:6;8667:14;8660:58;8752:8;8747:2;8739:6;8735:15;8728:33;8543:225;:::o;8774:366::-;8916:3;8937:67;9001:2;8996:3;8937:67;:::i;:::-;8930:74;;9013:93;9102:3;9013:93;:::i;:::-;9131:2;9126:3;9122:12;9115:19;;8774:366;;;:::o;9146:419::-;9312:4;9350:2;9339:9;9335:18;9327:26;;9399:9;9393:4;9389:20;9385:1;9374:9;9370:17;9363:47;9427:131;9553:4;9427:131;:::i;:::-;9419:139;;9146:419;;;:::o;9571:180::-;9619:77;9616:1;9609:88;9716:4;9713:1;9706:15;9740:4;9737:1;9730:15;9757:305;9797:3;9816:20;9834:1;9816:20;:::i;:::-;9811:25;;9850:20;9868:1;9850:20;:::i;:::-;9845:25;;10004:1;9936:66;9932:74;9929:1;9926:81;9923:107;;;10010:18;;:::i;:::-;9923:107;10054:1;10051;10047:9;10040:16;;9757:305;;;;:::o;10068:177::-;10208:29;10204:1;10196:6;10192:14;10185:53;10068:177;:::o;10251:366::-;10393:3;10414:67;10478:2;10473:3;10414:67;:::i;:::-;10407:74;;10490:93;10579:3;10490:93;:::i;:::-;10608:2;10603:3;10599:12;10592:19;;10251:366;;;:::o;10623:419::-;10789:4;10827:2;10816:9;10812:18;10804:26;;10876:9;10870:4;10866:20;10862:1;10851:9;10847:17;10840:47;10904:131;11030:4;10904:131;:::i;:::-;10896:139;;10623:419;;;:::o;11048:223::-;11188:34;11184:1;11176:6;11172:14;11165:58;11257:6;11252:2;11244:6;11240:15;11233:31;11048:223;:::o;11277:366::-;11419:3;11440:67;11504:2;11499:3;11440:67;:::i;:::-;11433:74;;11516:93;11605:3;11516:93;:::i;:::-;11634:2;11629:3;11625:12;11618:19;;11277:366;;;:::o;11649:419::-;11815:4;11853:2;11842:9;11838:18;11830:26;;11902:9;11896:4;11892:20;11888:1;11877:9;11873:17;11866:47;11930:131;12056:4;11930:131;:::i;:::-;11922:139;;11649:419;;;:::o;12074:221::-;12214:34;12210:1;12202:6;12198:14;12191:58;12283:4;12278:2;12270:6;12266:15;12259:29;12074:221;:::o;12301:366::-;12443:3;12464:67;12528:2;12523:3;12464:67;:::i;:::-;12457:74;;12540:93;12629:3;12540:93;:::i;:::-;12658:2;12653:3;12649:12;12642:19;;12301:366;;;:::o;12673:419::-;12839:4;12877:2;12866:9;12862:18;12854:26;;12926:9;12920:4;12916:20;12912:1;12901:9;12897:17;12890:47;12954:131;13080:4;12954:131;:::i;:::-;12946:139;;12673:419;;;:::o;13098:224::-;13238:34;13234:1;13226:6;13222:14;13215:58;13307:7;13302:2;13294:6;13290:15;13283:32;13098:224;:::o;13328:366::-;13470:3;13491:67;13555:2;13550:3;13491:67;:::i;:::-;13484:74;;13567:93;13656:3;13567:93;:::i;:::-;13685:2;13680:3;13676:12;13669:19;;13328:366;;;:::o;13700:419::-;13866:4;13904:2;13893:9;13889:18;13881:26;;13953:9;13947:4;13943:20;13939:1;13928:9;13924:17;13917:47;13981:131;14107:4;13981:131;:::i;:::-;13973:139;;13700:419;;;:::o;14125:222::-;14265:34;14261:1;14253:6;14249:14;14242:58;14334:5;14329:2;14321:6;14317:15;14310:30;14125:222;:::o;14353:366::-;14495:3;14516:67;14580:2;14575:3;14516:67;:::i;:::-;14509:74;;14592:93;14681:3;14592:93;:::i;:::-;14710:2;14705:3;14701:12;14694:19;;14353:366;;;:::o;14725:419::-;14891:4;14929:2;14918:9;14914:18;14906:26;;14978:9;14972:4;14968:20;14964:1;14953:9;14949:17;14942:47;15006:131;15132:4;15006:131;:::i;:::-;14998:139;;14725:419;;;:::o;15150:181::-;15290:33;15286:1;15278:6;15274:14;15267:57;15150:181;:::o;15337:366::-;15479:3;15500:67;15564:2;15559:3;15500:67;:::i;:::-;15493:74;;15576:93;15665:3;15576:93;:::i;:::-;15694:2;15689:3;15685:12;15678:19;;15337:366;;;:::o;15709:419::-;15875:4;15913:2;15902:9;15898:18;15890:26;;15962:9;15956:4;15952:20;15948:1;15937:9;15933:17;15926:47;15990:131;16116:4;15990:131;:::i;:::-;15982:139;;15709:419;;;:::o;16134:191::-;16174:4;16194:20;16212:1;16194:20;:::i;:::-;16189:25;;16228:20;16246:1;16228:20;:::i;:::-;16223:25;;16267:1;16264;16261:8;16258:34;;;16272:18;;:::i;:::-;16258:34;16317:1;16314;16310:9;16302:17;;16134:191;;;;:::o

Swarm Source

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