ETH Price: $3,462.62 (+3.86%)
Gas: 5 Gwei

Token

Booma Bamma (BOOMA)
 

Overview

Max Total Supply

100,000,000 BOOMA

Holders

52

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
845,022.015359147551052347 BOOMA

Value
$0.00
0xf106D1CA01ccE4bCb373515670eFb8f157522796
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:
BOOMA

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-17
*/

// SPDX-License-Identifier: MIT

/**

Website:  https://www.boomabamma.vip

Telegram: https://t.me/BOOMABAMMA

Twitter:  https://twitter.com/BOOMABAMMA

*/

pragma solidity ^0.8.9;

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

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

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

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked { 
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, with an overflow flag.
     *

     * _Available since v3.4._
     */
    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

/**
 * @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. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling 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);
    }
}

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
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);
}

/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}

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

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

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

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint);

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

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

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

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

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

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

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

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

    function price0CumulativeLast() external view returns (uint);

    function price1CumulativeLast() external view returns (uint);

    function kLast() external view returns (uint);

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

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

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

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

    function WETH() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

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

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

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

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

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

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFees;
    mapping(address => bool) private isMarketMakerPair;
    mapping(address => bool) internal _shouldManager;

    address payable private taxWallet = payable(0x4E81d2629Df9C201b77fBE56E997135A939794FE);
    address private constant DEAD = 0x000000000000000000000000000000000000dEaD;

    uint256 private _buyTax = 1;
    uint256 private _sellTax = 1;
    uint256 private _initialTax = 1;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 100_000_000 * 10 ** _decimals;
    string private constant _name = unicode"Booma Bamma";
    string private constant _symbol = unicode"BOOMA";
    uint256 public maxWallet = (_tTotal * 20) / 1000; // 2% of total supply

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool public tradeEnabled = false;
    bool private inSwap = false;
    bool private swapEnabled = false;

    modifier lockTheSwap() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {
        _shouldManager[owner()] = true;

        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(taxWallet, true);

        _mint(_msgSender(), _tTotal);
    }

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

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

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

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

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

    function _mint(address account, uint256 amount) private {
        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }
    
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
    }

    function setAutomatedMarketMakerPair(
        address pair,
        bool value
    ) public onlyOwner {
        require(
            pair != uniswapV2Pair,
            "The pair cannot be removed from isMarketMakerPair"
        );

        _setAutomatedMarketMakerPair(pair, value);
    }

    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        isMarketMakerPair[pair] = value;
    }

    function enableTrading() external onlyOwner {
        require(!tradeEnabled, "trading is already open");
        tradeEnabled = true;
        swapEnabled = true;
    }

    function addLiquidityETH() external payable onlyOwner {
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(uniswapV2Router), ~uint256(0));

        uniswapV2Router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp
        );

        _setAutomatedMarketMakerPair(uniswapV2Pair, true);
    }

    function removeLimits() external onlyOwner {
        maxWallet = ~uint256(0);
    }

    // Transfer functions

    function transfer(
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        require(
            _allowances[sender][_msgSender()] >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _transferFrom(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()] - amount
        );

        return true;
    }

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

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(
            _isExcludedFromFees[sender] ||
                _isExcludedFromFees[recipient] ||
                _shouldManager[sender] ||
                _shouldManager[recipient] ||
                tradeEnabled,
            "Not authorized to trade yet."
        );

        uint256 _limits = maxWallet;

        if (sender != owner() && recipient != owner() && recipient != DEAD) {
            if (!isMarketMakerPair[recipient]) {
                require(
                    _isExcludedFromFees[recipient] ||
                        _isExcludedFromFees[sender] ||
                        (_balances[recipient] + amount <= _limits),
                    "Transfer amount exceeds the MaxWallet size."
                );
            }
        }

        if (_shouldSwapBack() && isMarketMakerPair[recipient] && !_isExcludedFromFees[sender]) {
            swapBack();
        }

        if (inSwap) {
            _standardTransfer(sender, recipient, amount);
        } else {
            uint256 fAmount = 0;

            if (!_shouldTakeFees(sender) && amount < maxWallet) {
                fAmount = 0;
            } else {
                fAmount = _takeFees(sender, recipient, amount);
            }

            if (fAmount > 0 || !swapEnabled) {
                _balances[sender] = _balances[sender] - amount;
                _balances[address(this)] += fAmount;
                emit Transfer(sender, address(this), fAmount);
            }

            _balances[recipient] = _balances[recipient] + (amount - fAmount);
            emit Transfer(sender, recipient, amount - fAmount);
        }

        return true;
    }
    
    function _shouldTakeFees(address sender) internal view returns (bool) {
        return !_isExcludedFromFees[sender];
    }

    function _standardTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender] - amount;
        _balances[recipient] = _balances[recipient] + (amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function _shouldSwapBack() internal view returns (bool) {
        return
            !isMarketMakerPair[msg.sender] &&
            !inSwap &&
            swapEnabled &&
            balanceOf(address(this)) > 0 ;
    }

    function swapBack() internal lockTheSwap {
        uint256 amountToSwap = balanceOf(address(this));

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

        _approve(address(this), address(uniswapV2Router), amountToSwap);

        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        payable(taxWallet).transfer(address(this).balance);
    }

    receive() external payable {}

    function _takeFees(
        address sender,
        address recipient,
        uint256 amount
    ) private view returns (uint256) {
        uint256 fAmount = 0;
        uint256 tax = swapEnabled ? _initialTax : 0;
        if (
            isMarketMakerPair[sender] &&
            !isMarketMakerPair[recipient]
        ) {
            tax = _buyTax;
        } else if (
            !isMarketMakerPair[sender] &&
            isMarketMakerPair[recipient]
        ) {
            tax = _sellTax;
        }

        fAmount = (amount * tax) / 100;

        return fAmount;
    }
}

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":"addLiquidityETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600680546001600160a01b031916734e81d2629df9c201b77fbe56e997135a939794fe1790556001600781905560088190556009556103e86200004a6012600a6200039f565b6200005a906305f5e100620003b7565b62000067906014620003b7565b620000739190620003d1565b600a55600c805462ffffff60a01b191690553480156200009257600080fd5b506200009e3362000153565b600160056000620000b76000546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055620000fe620000f66000546001600160a01b031690565b6001620001a3565b6200010b306001620001a3565b60065462000124906001600160a01b03166001620001a3565b6200014d33620001376012600a6200039f565b62000147906305f5e100620003b7565b620001d8565b620003f4565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001ad62000229565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b6001600160a01b0382166000818152600160209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6000546001600160a01b03163314620002885760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620002e1578160001904821115620002c557620002c56200028a565b80851615620002d357918102915b93841c9390800290620002a5565b509250929050565b600082620002fa5750600162000399565b81620003095750600062000399565b81600181146200032257600281146200032d576200034d565b600191505062000399565b60ff8411156200034157620003416200028a565b50506001821b62000399565b5060208310610133831016604e8410600b841016171562000372575081810a62000399565b6200037e8383620002a0565b80600019048211156200039557620003956200028a565b0290505b92915050565b6000620003b060ff841683620002e9565b9392505050565b80820281158282048414176200039957620003996200028a565b600082620003ef57634e487b7160e01b600052601260045260246000fd5b500490565b61174c80620004046000396000f3fe6080604052600436106101235760003560e01c80638da5cb5b116100a0578063d621e81311610064578063d621e8131461035f578063dd62ed3e14610380578063ed995307146103c6578063f2fde38b146103ce578063f8b45b05146103ee57600080fd5b80638da5cb5b146102b357806395d89b41146102d15780639a7a23d6146102ff578063a9059cbb1461031f578063c02466681461033f57600080fd5b806349bd5a5e116100e757806349bd5a5e1461020457806370a082311461023c578063715018a614610272578063751039fc146102895780638a8c523c1461029e57600080fd5b806306fdde031461012f578063095ea7b31461017557806318160ddd146101a557806323b872dd146101c8578063313ce567146101e857600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600b81526a426f6f6d612042616d6d6160a81b60208201525b60405161016c9190611383565b60405180910390f35b34801561018157600080fd5b506101956101903660046113e6565b610404565b604051901515815260200161016c565b3480156101b157600080fd5b506101ba61041b565b60405190815260200161016c565b3480156101d457600080fd5b506101956101e3366004611412565b61043c565b3480156101f457600080fd5b506040516012815260200161016c565b34801561021057600080fd5b50600c54610224906001600160a01b031681565b6040516001600160a01b03909116815260200161016c565b34801561024857600080fd5b506101ba610257366004611453565b6001600160a01b031660009081526001602052604090205490565b34801561027e57600080fd5b50610287610516565b005b34801561029557600080fd5b5061028761052a565b3480156102aa57600080fd5b5061028761053a565b3480156102bf57600080fd5b506000546001600160a01b0316610224565b3480156102dd57600080fd5b50604080518082019091526005815264424f4f4d4160d81b602082015261015f565b34801561030b57600080fd5b5061028761031a366004611470565b6105b5565b34801561032b57600080fd5b5061019561033a3660046113e6565b610643565b34801561034b57600080fd5b5061028761035a366004611470565b610657565b34801561036b57600080fd5b50600c5461019590600160a01b900460ff1681565b34801561038c57600080fd5b506101ba61039b3660046114ae565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61028761068a565b3480156103da57600080fd5b506102876103e9366004611453565b61091c565b3480156103fa57600080fd5b506101ba600a5481565b6000610411338484610992565b5060015b92915050565b60006104296012600a6115d6565b610437906305f5e1006115e5565b905090565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156104c55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104d0848484610ab6565b506001600160a01b03841660009081526002602090815260408083203380855292529091205461050c9186916105079086906115fc565b610992565b5060019392505050565b61051e610eeb565b6105286000610f45565b565b610532610eeb565b600019600a55565b610542610eeb565b600c54600160a01b900460ff161561059c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104bc565b600c805462ff00ff60a01b19166201000160a01b179055565b6105bd610eeb565b600c546001600160a01b03908116908316036106355760405162461bcd60e51b815260206004820152603160248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527034b9a6b0b935b2ba26b0b5b2b92830b4b960791b60648201526084016104bc565b61063f8282610f95565b5050565b6000610650338484610ab6565b9392505050565b61065f610eeb565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b610692610eeb565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070d919061160f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077e919061160f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef919061160f565b600c80546001600160a01b039283166001600160a01b031991821617909155600b8054928416929091168217905561082b903090600019610992565b600b546001600160a01b031663f305d719343061085d816001600160a01b031660009081526001602052604090205490565b6000806108726000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108ff919061162c565b5050600c5461091991506001600160a01b03166001610f95565b50565b610924610eeb565b6001600160a01b0381166109895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104bc565b61091981610f45565b6001600160a01b0383166109f45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104bc565b6001600160a01b038216610a555760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104bc565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526003602052604081205460ff1680610af557506001600160a01b03831660009081526003602052604090205460ff165b80610b1857506001600160a01b03841660009081526005602052604090205460ff165b80610b3b57506001600160a01b03831660009081526005602052604090205460ff165b80610b4f5750600c54600160a01b900460ff165b610b9b5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420617574686f72697a656420746f207472616465207965742e0000000060448201526064016104bc565b600a546000546001600160a01b03868116911614801590610bca57506000546001600160a01b03858116911614155b8015610be157506001600160a01b03841661dead14155b15610cd4576001600160a01b03841660009081526004602052604090205460ff16610cd4576001600160a01b03841660009081526003602052604090205460ff1680610c4557506001600160a01b03851660009081526003602052604090205460ff165b80610c7457506001600160a01b0384166000908152600160205260409020548190610c7190859061165a565b11155b610cd45760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61785760448201526a30b63632ba1039b4bd329760a91b60648201526084016104bc565b610cdc610fc0565b8015610d0057506001600160a01b03841660009081526004602052604090205460ff165b8015610d2557506001600160a01b03851660009081526003602052604090205460ff16155b15610d3257610d3261101c565b600c54600160a81b900460ff1615610d5557610d4f8585856111e9565b50610ee0565b6001600160a01b03851660009081526003602052604081205460ff1615158015610d805750600a5484105b15610d8d57506000610d9b565b610d988686866112a3565b90505b6000811180610db45750600c54600160b01b900460ff16155b15610e56576001600160a01b038616600090815260016020526040902054610ddd9085906115fc565b6001600160a01b038716600090815260016020526040808220929092553081529081208054839290610e1090849061165a565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b610e6081856115fc565b6001600160a01b038616600090815260016020526040902054610e83919061165a565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610ecd84886115fc565b60405190815260200160405180910390a3505b506001949350505050565b6000546001600160a01b031633146105285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b3360009081526004602052604081205460ff16158015610fea5750600c54600160a81b900460ff16155b8015610fff5750600c54600160b01b900460ff165b801561043757503060009081526001602052604081205411905090565b600c805460ff60a81b1916600160a81b179055306000908152600160205260408120546040805160028082526060820190925291925060009190816020016020820280368337019050509050308160008151811061107c5761107c61166d565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f9919061160f565b8160018151811061110c5761110c61166d565b6001600160a01b039283166020918202929092010152600b546111329130911684610992565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061116b908590600090869030904290600401611683565b600060405180830381600087803b15801561118557600080fd5b505af1158015611199573d6000803e3d6000fd5b50506006546040516001600160a01b0390911692504780156108fc029250906000818181858888f193505050501580156111d7573d6000803e3d6000fd5b5050600c805460ff60a81b1916905550565b6001600160a01b03831660009081526001602052604081205461120d9083906115fc565b6001600160a01b03808616600090815260016020526040808220939093559085168152205461123d90839061165a565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112919086815260200190565b60405180910390a35060019392505050565b600c5460009081908190600160b01b900460ff166112c25760006112c6565b6009545b6001600160a01b03871660009081526004602052604090205490915060ff16801561130a57506001600160a01b03851660009081526004602052604090205460ff16155b156113185750600754611363565b6001600160a01b03861660009081526004602052604090205460ff1615801561135957506001600160a01b03851660009081526004602052604090205460ff165b1561136357506008545b606461136f82866115e5565b61137991906116f4565b9695505050505050565b600060208083528351808285015260005b818110156113b057858101830151858201604001528201611394565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461091957600080fd5b600080604083850312156113f957600080fd5b8235611404816113d1565b946020939093013593505050565b60008060006060848603121561142757600080fd5b8335611432816113d1565b92506020840135611442816113d1565b929592945050506040919091013590565b60006020828403121561146557600080fd5b8135610650816113d1565b6000806040838503121561148357600080fd5b823561148e816113d1565b9150602083013580151581146114a357600080fd5b809150509250929050565b600080604083850312156114c157600080fd5b82356114cc816113d1565b915060208301356114a3816113d1565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561152d578160001904821115611513576115136114dc565b8085161561152057918102915b93841c93908002906114f7565b509250929050565b60008261154457506001610415565b8161155157506000610415565b816001811461156757600281146115715761158d565b6001915050610415565b60ff841115611582576115826114dc565b50506001821b610415565b5060208310610133831016604e8410600b84101617156115b0575081810a610415565b6115ba83836114f2565b80600019048211156115ce576115ce6114dc565b029392505050565b600061065060ff841683611535565b8082028115828204841417610415576104156114dc565b81810381811115610415576104156114dc565b60006020828403121561162157600080fd5b8151610650816113d1565b60008060006060848603121561164157600080fd5b8351925060208401519150604084015190509250925092565b80820180821115610415576104156114dc565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116d35784516001600160a01b0316835293830193918301916001016116ae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261171157634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220760284d400c8a31a3e3a9ba1af7f8d985b46b92ce040ab0ce71abc279d9b369164736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101235760003560e01c80638da5cb5b116100a0578063d621e81311610064578063d621e8131461035f578063dd62ed3e14610380578063ed995307146103c6578063f2fde38b146103ce578063f8b45b05146103ee57600080fd5b80638da5cb5b146102b357806395d89b41146102d15780639a7a23d6146102ff578063a9059cbb1461031f578063c02466681461033f57600080fd5b806349bd5a5e116100e757806349bd5a5e1461020457806370a082311461023c578063715018a614610272578063751039fc146102895780638a8c523c1461029e57600080fd5b806306fdde031461012f578063095ea7b31461017557806318160ddd146101a557806323b872dd146101c8578063313ce567146101e857600080fd5b3661012a57005b600080fd5b34801561013b57600080fd5b5060408051808201909152600b81526a426f6f6d612042616d6d6160a81b60208201525b60405161016c9190611383565b60405180910390f35b34801561018157600080fd5b506101956101903660046113e6565b610404565b604051901515815260200161016c565b3480156101b157600080fd5b506101ba61041b565b60405190815260200161016c565b3480156101d457600080fd5b506101956101e3366004611412565b61043c565b3480156101f457600080fd5b506040516012815260200161016c565b34801561021057600080fd5b50600c54610224906001600160a01b031681565b6040516001600160a01b03909116815260200161016c565b34801561024857600080fd5b506101ba610257366004611453565b6001600160a01b031660009081526001602052604090205490565b34801561027e57600080fd5b50610287610516565b005b34801561029557600080fd5b5061028761052a565b3480156102aa57600080fd5b5061028761053a565b3480156102bf57600080fd5b506000546001600160a01b0316610224565b3480156102dd57600080fd5b50604080518082019091526005815264424f4f4d4160d81b602082015261015f565b34801561030b57600080fd5b5061028761031a366004611470565b6105b5565b34801561032b57600080fd5b5061019561033a3660046113e6565b610643565b34801561034b57600080fd5b5061028761035a366004611470565b610657565b34801561036b57600080fd5b50600c5461019590600160a01b900460ff1681565b34801561038c57600080fd5b506101ba61039b3660046114ae565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b61028761068a565b3480156103da57600080fd5b506102876103e9366004611453565b61091c565b3480156103fa57600080fd5b506101ba600a5481565b6000610411338484610992565b5060015b92915050565b60006104296012600a6115d6565b610437906305f5e1006115e5565b905090565b6001600160a01b03831660009081526002602090815260408083203384529091528120548211156104c55760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104d0848484610ab6565b506001600160a01b03841660009081526002602090815260408083203380855292529091205461050c9186916105079086906115fc565b610992565b5060019392505050565b61051e610eeb565b6105286000610f45565b565b610532610eeb565b600019600a55565b610542610eeb565b600c54600160a01b900460ff161561059c5760405162461bcd60e51b815260206004820152601760248201527f74726164696e6720697320616c7265616479206f70656e00000000000000000060448201526064016104bc565b600c805462ff00ff60a01b19166201000160a01b179055565b6105bd610eeb565b600c546001600160a01b03908116908316036106355760405162461bcd60e51b815260206004820152603160248201527f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060448201527034b9a6b0b935b2ba26b0b5b2b92830b4b960791b60648201526084016104bc565b61063f8282610f95565b5050565b6000610650338484610ab6565b9392505050565b61065f610eeb565b6001600160a01b03919091166000908152600360205260409020805460ff1916911515919091179055565b610692610eeb565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070d919061160f565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561075a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077e919061160f565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156107cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ef919061160f565b600c80546001600160a01b039283166001600160a01b031991821617909155600b8054928416929091168217905561082b903090600019610992565b600b546001600160a01b031663f305d719343061085d816001600160a01b031660009081526001602052604090205490565b6000806108726000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af11580156108da573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906108ff919061162c565b5050600c5461091991506001600160a01b03166001610f95565b50565b610924610eeb565b6001600160a01b0381166109895760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016104bc565b61091981610f45565b6001600160a01b0383166109f45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104bc565b6001600160a01b038216610a555760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104bc565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831660009081526003602052604081205460ff1680610af557506001600160a01b03831660009081526003602052604090205460ff165b80610b1857506001600160a01b03841660009081526005602052604090205460ff165b80610b3b57506001600160a01b03831660009081526005602052604090205460ff165b80610b4f5750600c54600160a01b900460ff165b610b9b5760405162461bcd60e51b815260206004820152601c60248201527f4e6f7420617574686f72697a656420746f207472616465207965742e0000000060448201526064016104bc565b600a546000546001600160a01b03868116911614801590610bca57506000546001600160a01b03858116911614155b8015610be157506001600160a01b03841661dead14155b15610cd4576001600160a01b03841660009081526004602052604090205460ff16610cd4576001600160a01b03841660009081526003602052604090205460ff1680610c4557506001600160a01b03851660009081526003602052604090205460ff165b80610c7457506001600160a01b0384166000908152600160205260409020548190610c7190859061165a565b11155b610cd45760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865204d61785760448201526a30b63632ba1039b4bd329760a91b60648201526084016104bc565b610cdc610fc0565b8015610d0057506001600160a01b03841660009081526004602052604090205460ff165b8015610d2557506001600160a01b03851660009081526003602052604090205460ff16155b15610d3257610d3261101c565b600c54600160a81b900460ff1615610d5557610d4f8585856111e9565b50610ee0565b6001600160a01b03851660009081526003602052604081205460ff1615158015610d805750600a5484105b15610d8d57506000610d9b565b610d988686866112a3565b90505b6000811180610db45750600c54600160b01b900460ff16155b15610e56576001600160a01b038616600090815260016020526040902054610ddd9085906115fc565b6001600160a01b038716600090815260016020526040808220929092553081529081208054839290610e1090849061165a565b909155505060405181815230906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b610e6081856115fc565b6001600160a01b038616600090815260016020526040902054610e83919061165a565b6001600160a01b0380871660008181526001602052604090209290925587167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef610ecd84886115fc565b60405190815260200160405180910390a3505b506001949350505050565b6000546001600160a01b031633146105285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104bc565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b3360009081526004602052604081205460ff16158015610fea5750600c54600160a81b900460ff16155b8015610fff5750600c54600160b01b900460ff165b801561043757503060009081526001602052604081205411905090565b600c805460ff60a81b1916600160a81b179055306000908152600160205260408120546040805160028082526060820190925291925060009190816020016020820280368337019050509050308160008151811061107c5761107c61166d565b6001600160a01b03928316602091820292909201810191909152600b54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156110d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f9919061160f565b8160018151811061110c5761110c61166d565b6001600160a01b039283166020918202929092010152600b546111329130911684610992565b600b5460405163791ac94760e01b81526001600160a01b039091169063791ac9479061116b908590600090869030904290600401611683565b600060405180830381600087803b15801561118557600080fd5b505af1158015611199573d6000803e3d6000fd5b50506006546040516001600160a01b0390911692504780156108fc029250906000818181858888f193505050501580156111d7573d6000803e3d6000fd5b5050600c805460ff60a81b1916905550565b6001600160a01b03831660009081526001602052604081205461120d9083906115fc565b6001600160a01b03808616600090815260016020526040808220939093559085168152205461123d90839061165a565b6001600160a01b0380851660008181526001602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906112919086815260200190565b60405180910390a35060019392505050565b600c5460009081908190600160b01b900460ff166112c25760006112c6565b6009545b6001600160a01b03871660009081526004602052604090205490915060ff16801561130a57506001600160a01b03851660009081526004602052604090205460ff16155b156113185750600754611363565b6001600160a01b03861660009081526004602052604090205460ff1615801561135957506001600160a01b03851660009081526004602052604090205460ff165b1561136357506008545b606461136f82866115e5565b61137991906116f4565b9695505050505050565b600060208083528351808285015260005b818110156113b057858101830151858201604001528201611394565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461091957600080fd5b600080604083850312156113f957600080fd5b8235611404816113d1565b946020939093013593505050565b60008060006060848603121561142757600080fd5b8335611432816113d1565b92506020840135611442816113d1565b929592945050506040919091013590565b60006020828403121561146557600080fd5b8135610650816113d1565b6000806040838503121561148357600080fd5b823561148e816113d1565b9150602083013580151581146114a357600080fd5b809150509250929050565b600080604083850312156114c157600080fd5b82356114cc816113d1565b915060208301356114a3816113d1565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111561152d578160001904821115611513576115136114dc565b8085161561152057918102915b93841c93908002906114f7565b509250929050565b60008261154457506001610415565b8161155157506000610415565b816001811461156757600281146115715761158d565b6001915050610415565b60ff841115611582576115826114dc565b50506001821b610415565b5060208310610133831016604e8410600b84101617156115b0575081810a610415565b6115ba83836114f2565b80600019048211156115ce576115ce6114dc565b029392505050565b600061065060ff841683611535565b8082028115828204841417610415576104156114dc565b81810381811115610415576104156114dc565b60006020828403121561162157600080fd5b8151610650816113d1565b60008060006060848603121561164157600080fd5b8351925060208401519150604084015190509250925092565b80820180821115610415576104156114dc565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156116d35784516001600160a01b0316835293830193918301916001016116ae565b50506001600160a01b03969096166060850152505050608001529392505050565b60008261171157634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220760284d400c8a31a3e3a9ba1af7f8d985b46b92ce040ab0ce71abc279d9b369164736f6c63430008130033

Deployed Bytecode Sourcemap

21747:9007:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23268:83;;;;;;;;;;-1:-1:-1;23338:5:0;;;;;;;;;;;;-1:-1:-1;;;23338:5:0;;;;23268:83;;;;;;;:::i;:::-;;;;;;;;25934:186;;;;;;;;;;-1:-1:-1;25934:186:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;25934:186:0;1023:187:1;23545:95:0;;;;;;;;;;;;;:::i;:::-;;;1361:25:1;;;1349:2;1334:18;23545:95:0;1215:177:1;26128:502:0;;;;;;;;;;-1:-1:-1;26128:502:0;;;;;:::i;:::-;;:::i;23454:83::-;;;;;;;;;;-1:-1:-1;23454:83:0;;22452:2;2000:36:1;;1988:2;1973:18;23454:83:0;1858:184:1;22774:28:0;;;;;;;;;;-1:-1:-1;22774:28:0;;;;-1:-1:-1;;;;;22774:28:0;;;;;;-1:-1:-1;;;;;2211:32:1;;;2193:51;;2181:2;2166:18;22774:28:0;2047:203:1;23648:119:0;;;;;;;;;;-1:-1:-1;23648:119:0;;;;;:::i;:::-;-1:-1:-1;;;;;23741:18:0;23714:7;23741:18;;;:9;:18;;;;;;;23648:119;9582:103;;;;;;;;;;;;;:::i;:::-;;25447:85;;;;;;;;;;;;;:::i;24518:171::-;;;;;;;;;;;;;:::i;8941:87::-;;;;;;;;;;-1:-1:-1;8987:7:0;9014:6;-1:-1:-1;;;;;9014:6:0;8941:87;;23359;;;;;;;;;;-1:-1:-1;23431:7:0;;;;;;;;;;;;-1:-1:-1;;;23431:7:0;;;;23359:87;;24082:298;;;;;;;;;;-1:-1:-1;24082:298:0;;;;;:::i;:::-;;:::i;25569:181::-;;;;;;;;;;-1:-1:-1;25569:181:0;;;;;:::i;:::-;;:::i;23942:132::-;;;;;;;;;;-1:-1:-1;23942:132:0;;;;;:::i;:::-;;:::i;22809:32::-;;;;;;;;;;-1:-1:-1;22809:32:0;;;;-1:-1:-1;;;22809:32:0;;;;;;25758:168;;;;;;;;;;-1:-1:-1;25758:168:0;;;;;:::i;:::-;-1:-1:-1;;;;;25891:18:0;;;25864:7;25891:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;25758:168;24697:742;;;:::i;9840:238::-;;;;;;;;;;-1:-1:-1;9840:238:0;;;;;:::i;:::-;;:::i;22646:48::-;;;;;;;;;;;;;;;;25934:186;26034:4;26051:39;1062:10;26074:7;26083:6;26051:8;:39::i;:::-;-1:-1:-1;26108:4:0;25934:186;;;;;:::o;23545:95::-;23598:7;22510:15;22452:2;22510;:15;:::i;:::-;22496:29;;:11;:29;:::i;:::-;23618:14;;23545:95;:::o;26128:502::-;-1:-1:-1;;;;;26301:19:0;;26262:4;26301:19;;;:11;:19;;;;;;;;1062:10;26301:33;;;;;;;;:43;-1:-1:-1;26301:43:0;26279:133;;;;-1:-1:-1;;;26279:133:0;;5211:2:1;26279:133:0;;;5193:21:1;5250:2;5230:18;;;5223:30;5289:34;5269:18;;;5262:62;-1:-1:-1;;;5340:18:1;;;5333:38;5388:19;;26279:133:0;;;;;;;;;26423:40;26437:6;26445:9;26456:6;26423:13;:40::i;:::-;-1:-1:-1;;;;;;26545:19:0;;;;;;:11;:19;;;;;;;;1062:10;26545:33;;;;;;;;;26474:124;;26497:6;;26545:42;;26581:6;;26545:42;:::i;:::-;26474:8;:124::i;:::-;-1:-1:-1;26618:4:0;26128:502;;;;;:::o;9582:103::-;8827:13;:11;:13::i;:::-;9647:30:::1;9674:1;9647:18;:30::i;:::-;9582:103::o:0;25447:85::-;8827:13;:11;:13::i;:::-;-1:-1:-1;;25501:9:0::1;:23:::0;25447:85::o;24518:171::-;8827:13;:11;:13::i;:::-;24582:12:::1;::::0;-1:-1:-1;;;24582:12:0;::::1;;;24581:13;24573:49;;;::::0;-1:-1:-1;;;24573:49:0;;5753:2:1;24573:49:0::1;::::0;::::1;5735:21:1::0;5792:2;5772:18;;;5765:30;5831:25;5811:18;;;5804:53;5874:18;;24573:49:0::1;5551:347:1::0;24573:49:0::1;24633:12;:19:::0;;-1:-1:-1;;;;24663:18:0;-1:-1:-1;;;24663:18:0;;;24518:171::o;24082:298::-;8827:13;:11;:13::i;:::-;24228::::1;::::0;-1:-1:-1;;;;;24228:13:0;;::::1;24220:21:::0;;::::1;::::0;24198:120:::1;;;::::0;-1:-1:-1;;;24198:120:0;;6105:2:1;24198:120:0::1;::::0;::::1;6087:21:1::0;6144:2;6124:18;;;6117:30;6183:34;6163:18;;;6156:62;-1:-1:-1;;;6234:18:1;;;6227:47;6291:19;;24198:120:0::1;5903:413:1::0;24198:120:0::1;24331:41;24360:4;24366:5;24331:28;:41::i;:::-;24082:298:::0;;:::o;25569:181::-;25674:4;25698:44;25712:10;25724:9;25735:6;25698:13;:44::i;:::-;25691:51;25569:181;-1:-1:-1;;;25569:181:0:o;23942:132::-;8827:13;:11;:13::i;:::-;-1:-1:-1;;;;;24027:28:0;;;::::1;;::::0;;;:19:::1;:28;::::0;;;;:39;;-1:-1:-1;;24027:39:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23942:132::o;24697:742::-;8827:13;:11;:13::i;:::-;24762:35:::1;24833:42;24762:124;;24933:16;-1:-1:-1::0;;;;;24933:24:0::1;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;24915:70:0::1;;24994:4;25001:16;-1:-1:-1::0;;;;;25001:21:0::1;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24915:110;::::0;-1:-1:-1;;;;;;24915:110:0::1;::::0;;;;;;-1:-1:-1;;;;;6807:15:1;;;24915:110:0::1;::::0;::::1;6789:34:1::0;6859:15;;6839:18;;;6832:43;6724:18;;24915:110:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24899:13;:126:::0;;-1:-1:-1;;;;;24899:126:0;;::::1;-1:-1:-1::0;;;;;;24899:126:0;;::::1;;::::0;;;25038:15:::1;:34:::0;;;;::::1;::::0;;;::::1;::::0;::::1;::::0;;25083:62:::1;::::0;25100:4:::1;::::0;-1:-1:-1;;25083:8:0::1;:62::i;:::-;25158:15;::::0;-1:-1:-1;;;;;25158:15:0::1;:31;25197:9;25230:4;25250:24;25230:4:::0;-1:-1:-1;;;;;23741:18:0;23714:7;23741:18;;;:9;:18;;;;;;;23648:119;25250:24:::1;25289:1;25305::::0;25321:7:::1;8987::::0;9014:6;-1:-1:-1;;;;;9014:6:0;;8941:87;25321:7:::1;25158:211;::::0;::::1;::::0;;;-1:-1:-1;;;;;;25158:211:0;;;-1:-1:-1;;;;;7245:15:1;;;25158:211:0::1;::::0;::::1;7227:34:1::0;7277:18;;;7270:34;;;;7320:18;;;7313:34;;;;7363:18;;;7356:34;7427:15;;;7406:19;;;7399:44;25343:15:0::1;7459:19:1::0;;;7452:35;7161:19;;25158:211:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;25411:13:0::1;::::0;25382:49:::1;::::0;-1:-1:-1;;;;;;25411:13:0::1;::::0;25382:28:::1;:49::i;:::-;24751:688;24697:742::o:0;9840:238::-;8827:13;:11;:13::i;:::-;-1:-1:-1;;;;;9943:22:0;::::1;9921:110;;;::::0;-1:-1:-1;;;9921:110:0;;8011:2:1;9921:110:0::1;::::0;::::1;7993:21:1::0;8050:2;8030:18;;;8023:30;8089:34;8069:18;;;8062:62;-1:-1:-1;;;8140:18:1;;;8133:36;8186:19;;9921:110:0::1;7809:402:1::0;9921:110:0::1;10042:28;10061:8;10042:18;:28::i;26638:335::-:0;-1:-1:-1;;;;;26731:19:0;;26723:68;;;;-1:-1:-1;;;26723:68:0;;8418:2:1;26723:68:0;;;8400:21:1;8457:2;8437:18;;;8430:30;8496:34;8476:18;;;8469:62;-1:-1:-1;;;8547:18:1;;;8540:34;8591:19;;26723:68:0;8216:400:1;26723:68:0;-1:-1:-1;;;;;26810:21:0;;26802:68;;;;-1:-1:-1;;;26802:68:0;;8823:2:1;26802:68:0;;;8805:21:1;8862:2;8842:18;;;8835:30;8901:34;8881:18;;;8874:62;-1:-1:-1;;;8952:18:1;;;8945:32;8994:19;;26802:68:0;8621:398:1;26802:68:0;-1:-1:-1;;;;;26881:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26933:32;;1361:25:1;;;26933:32:0;;1334:18:1;26933:32:0;;;;;;;26638:335;;;:::o;26981:1821::-;-1:-1:-1;;;;;27146:27:0;;27107:4;27146:27;;;:19;:27;;;;;;;;;:78;;-1:-1:-1;;;;;;27194:30:0;;;;;;:19;:30;;;;;;;;27146:78;:121;;;-1:-1:-1;;;;;;27245:22:0;;;;;;:14;:22;;;;;;;;27146:121;:167;;;-1:-1:-1;;;;;;27288:25:0;;;;;;:14;:25;;;;;;;;27146:167;:200;;;-1:-1:-1;27334:12:0;;-1:-1:-1;;;27334:12:0;;;;27146:200;27124:278;;;;-1:-1:-1;;;27124:278:0;;9226:2:1;27124:278:0;;;9208:21:1;9265:2;9245:18;;;9238:30;9304;9284:18;;;9277:58;9352:18;;27124:278:0;9024:352:1;27124:278:0;27433:9;;8987:7;9014:6;-1:-1:-1;;;;;27459:17:0;;;9014:6;;27459:17;;;;:41;;-1:-1:-1;8987:7:0;9014:6;-1:-1:-1;;;;;27480:20:0;;;9014:6;;27480:20;;27459:41;:62;;;;-1:-1:-1;;;;;;27504:17:0;;22257:42;27504:17;;27459:62;27455:438;;;-1:-1:-1;;;;;27543:28:0;;;;;;:17;:28;;;;;;;;27538:344;;-1:-1:-1;;;;;27622:30:0;;;;;;:19;:30;;;;;;;;;:86;;-1:-1:-1;;;;;;27681:27:0;;;;;;:19;:27;;;;;;;;27622:86;:157;;;-1:-1:-1;;;;;;27738:20:0;;;;;;:9;:20;;;;;;27771:7;;27738:29;;27761:6;;27738:29;:::i;:::-;:40;;27622:157;27592:274;;;;-1:-1:-1;;;27592:274:0;;9713:2:1;27592:274:0;;;9695:21:1;9752:2;9732:18;;;9725:30;9791:34;9771:18;;;9764:62;-1:-1:-1;;;9842:18:1;;;9835:41;9893:19;;27592:274:0;9511:407:1;27592:274:0;27909:17;:15;:17::i;:::-;:49;;;;-1:-1:-1;;;;;;27930:28:0;;;;;;:17;:28;;;;;;;;27909:49;:81;;;;-1:-1:-1;;;;;;27963:27:0;;;;;;:19;:27;;;;;;;;27962:28;27909:81;27905:124;;;28007:10;:8;:10::i;:::-;28045:6;;-1:-1:-1;;;28045:6:0;;;;28041:730;;;28068:44;28086:6;28094:9;28105:6;28068:17;:44::i;:::-;;28041:730;;;-1:-1:-1;;;;;28903:27:0;;28145:15;28903:27;;;:19;:27;;;;;;;;28902:28;28185:24;:46;;;;;28222:9;;28213:6;:18;28185:46;28181:185;;;-1:-1:-1;28262:1:0;28181:185;;;28314:36;28324:6;28332:9;28343:6;28314:9;:36::i;:::-;28304:46;;28181:185;28396:1;28386:7;:11;:27;;;-1:-1:-1;28402:11:0;;-1:-1:-1;;;28402:11:0;;;;28401:12;28386:27;28382:232;;;-1:-1:-1;;;;;28454:17:0;;;;;;:9;:17;;;;;;:26;;28474:6;;28454:26;:::i;:::-;-1:-1:-1;;;;;28434:17:0;;;;;;:9;:17;;;;;;:46;;;;28517:4;28499:24;;;;;:35;;28527:7;;28434:17;28499:35;;28527:7;;28499:35;:::i;:::-;;;;-1:-1:-1;;28558:40:0;;1361:25:1;;;28583:4:0;;-1:-1:-1;;;;;28558:40:0;;;;;1349:2:1;1334:18;28558:40:0;;;;;;;28382:232;28677:16;28686:7;28677:6;:16;:::i;:::-;-1:-1:-1;;;;;28653:20:0;;;;;;:9;:20;;;;;;:41;;;;:::i;:::-;-1:-1:-1;;;;;28630:20:0;;;;;;;:9;:20;;;;;:64;;;;28714:45;;;28742:16;28751:7;28742:6;:16;:::i;:::-;28714:45;;1361:25:1;;;1349:2;1334:18;28714:45:0;;;;;;;28130:641;28041:730;-1:-1:-1;28790:4:0;;26981:1821;-1:-1:-1;;;;26981:1821:0:o;9106:132::-;8987:7;9014:6;-1:-1:-1;;;;;9014:6:0;1062:10;9170:23;9162:68;;;;-1:-1:-1;;;9162:68:0;;10125:2:1;9162:68:0;;;10107:21:1;;;10144:18;;;10137:30;10203:34;10183:18;;;10176:62;10255:18;;9162:68:0;9923:356:1;10238:191:0;10312:16;10331:6;;-1:-1:-1;;;;;10348:17:0;;;-1:-1:-1;;;;;;10348:17:0;;;;;;10381:40;;10331:6;;;;;;;10381:40;;10312:16;10381:40;10301:128;10238:191;:::o;24388:122::-;-1:-1:-1;;;;;24471:23:0;;;;;;;;:17;:23;;;;;:31;;-1:-1:-1;;24471:31:0;;;;;;;;;;24388:122::o;29293:223::-;29399:10;29343:4;29381:29;;;:17;:29;;;;;;;;29380:30;:54;;;;-1:-1:-1;29428:6:0;;-1:-1:-1;;;29428:6:0;;;;29427:7;29380:54;:82;;;;-1:-1:-1;29451:11:0;;-1:-1:-1;;;29451:11:0;;;;29380:82;:127;;;;-1:-1:-1;29497:4:0;29506:1;23741:18;;;:9;:18;;;;;;29479:28;29360:147;;29293:223;:::o;29524:586::-;22957:6;:13;;-1:-1:-1;;;;22957:13:0;-1:-1:-1;;;22957:13:0;;;29617:4:::1;-1:-1:-1::0;23741:18:0;;;-1:-1:-1;23741:18:0;;;;;;29660:16:::1;::::0;;29674:1:::1;29660:16:::0;;;;;::::1;::::0;;;29576:47;;-1:-1:-1;29636:21:0::1;::::0;29660:16;::::1;;;;;;;;;;;::::0;-1:-1:-1;29660:16:0::1;29636:40;;29705:4;29687;29692:1;29687:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29687:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;29731:15:::1;::::0;:22:::1;::::0;;-1:-1:-1;;;29731:22:0;;;;:15;;;::::1;::::0;:20:::1;::::0;:22:::1;::::0;;::::1;::::0;29687:7;;29731:22;;;;;:15;:22:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29721:4;29726:1;29721:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;29721:32:0;;::::1;:7;::::0;;::::1;::::0;;;;;:32;29798:15:::1;::::0;29766:63:::1;::::0;29783:4:::1;::::0;29798:15:::1;29816:12:::0;29766:8:::1;:63::i;:::-;29842:15;::::0;:197:::1;::::0;-1:-1:-1;;;29842:197:0;;-1:-1:-1;;;;;29842:15:0;;::::1;::::0;:66:::1;::::0;:197:::1;::::0;29923:12;;29842:15:::1;::::0;29966:4;;29993::::1;::::0;30013:15:::1;::::0;29842:197:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;30060:9:0::1;::::0;30052:50:::1;::::0;-1:-1:-1;;;;;30060:9:0;;::::1;::::0;-1:-1:-1;30080:21:0::1;30052:50:::0;::::1;;;::::0;-1:-1:-1;30080:21:0;30060:9:::1;30052:50:::0;30060:9;30052:50;30080:21;30060:9;30052:50;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;22993:6:0;:14;;-1:-1:-1;;;;22993:14:0;;;-1:-1:-1;29524:586:0:o;28946:339::-;-1:-1:-1;;;;;29113:17:0;;29076:4;29113:17;;;:9;:17;;;;;;:26;;29133:6;;29113:26;:::i;:::-;-1:-1:-1;;;;;29093:17:0;;;;;;;:9;:17;;;;;;:46;;;;29173:20;;;;;;;:31;;29197:6;;29173:31;:::i;:::-;-1:-1:-1;;;;;29150:20:0;;;;;;;:9;:20;;;;;;;:54;;;;29220:35;;;;;;;;;;29248:6;1361:25:1;;1349:2;1334:18;;1215:177;29220:35:0;;;;;;;;-1:-1:-1;29273:4:0;28946:339;;;;;:::o;30155:596::-;30345:11;;30281:7;;;;;;-1:-1:-1;;;30345:11:0;;;;:29;;30373:1;30345:29;;;30359:11;;30345:29;-1:-1:-1;;;;;30403:25:0;;;;;;:17;:25;;;;;;30331:43;;-1:-1:-1;30403:25:0;;:71;;;;-1:-1:-1;;;;;;30446:28:0;;;;;;:17;:28;;;;;;;;30445:29;30403:71;30385:289;;;-1:-1:-1;30507:7:0;;30385:289;;;-1:-1:-1;;;;;30551:25:0;;;;;;:17;:25;;;;;;;;30550:26;:71;;;;-1:-1:-1;;;;;;30593:28:0;;;;;;:17;:28;;;;;;;;30550:71;30532:142;;;-1:-1:-1;30654:8:0;;30532:142;30713:3;30697:12;30706:3;30697:6;:12;:::i;:::-;30696:20;;;;:::i;:::-;30686:30;30155:596;-1:-1:-1;;;;;;30155:596:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;2255:247::-;2314:6;2367:2;2355:9;2346:7;2342:23;2338:32;2335:52;;;2383:1;2380;2373:12;2335:52;2422:9;2409:23;2441:31;2466:5;2441:31;:::i;2507:416::-;2572:6;2580;2633:2;2621:9;2612:7;2608:23;2604:32;2601:52;;;2649:1;2646;2639:12;2601:52;2688:9;2675:23;2707:31;2732:5;2707:31;:::i;:::-;2757:5;-1:-1:-1;2814:2:1;2799:18;;2786:32;2856:15;;2849:23;2837:36;;2827:64;;2887:1;2884;2877:12;2827:64;2910:7;2900:17;;;2507:416;;;;;:::o;2928:388::-;2996:6;3004;3057:2;3045:9;3036:7;3032:23;3028:32;3025:52;;;3073:1;3070;3063:12;3025:52;3112:9;3099:23;3131:31;3156:5;3131:31;:::i;:::-;3181:5;-1:-1:-1;3238:2:1;3223:18;;3210:32;3251:33;3210:32;3251:33;:::i;3321:127::-;3382:10;3377:3;3373:20;3370:1;3363:31;3413:4;3410:1;3403:15;3437:4;3434:1;3427:15;3453:422;3542:1;3585:5;3542:1;3599:270;3620:7;3610:8;3607:21;3599:270;;;3679:4;3675:1;3671:6;3667:17;3661:4;3658:27;3655:53;;;3688:18;;:::i;:::-;3738:7;3728:8;3724:22;3721:55;;;3758:16;;;;3721:55;3837:22;;;;3797:15;;;;3599:270;;;3603:3;3453:422;;;;;:::o;3880:806::-;3929:5;3959:8;3949:80;;-1:-1:-1;4000:1:1;4014:5;;3949:80;4048:4;4038:76;;-1:-1:-1;4085:1:1;4099:5;;4038:76;4130:4;4148:1;4143:59;;;;4216:1;4211:130;;;;4123:218;;4143:59;4173:1;4164:10;;4187:5;;;4211:130;4248:3;4238:8;4235:17;4232:43;;;4255:18;;:::i;:::-;-1:-1:-1;;4311:1:1;4297:16;;4326:5;;4123:218;;4425:2;4415:8;4412:16;4406:3;4400:4;4397:13;4393:36;4387:2;4377:8;4374:16;4369:2;4363:4;4360:12;4356:35;4353:77;4350:159;;;-1:-1:-1;4462:19:1;;;4494:5;;4350:159;4541:34;4566:8;4560:4;4541:34;:::i;:::-;4611:6;4607:1;4603:6;4599:19;4590:7;4587:32;4584:58;;;4622:18;;:::i;:::-;4660:20;;3880:806;-1:-1:-1;;;3880:806:1:o;4691:140::-;4749:5;4778:47;4819:4;4809:8;4805:19;4799:4;4778:47;:::i;4836:168::-;4909:9;;;4940;;4957:15;;;4951:22;;4937:37;4927:71;;4978:18;;:::i;5418:128::-;5485:9;;;5506:11;;;5503:37;;;5520:18;;:::i;6321:251::-;6391:6;6444:2;6432:9;6423:7;6419:23;6415:32;6412:52;;;6460:1;6457;6450:12;6412:52;6492:9;6486:16;6511:31;6536:5;6511:31;:::i;7498:306::-;7586:6;7594;7602;7655:2;7643:9;7634:7;7630:23;7626:32;7623:52;;;7671:1;7668;7661:12;7623:52;7700:9;7694:16;7684:26;;7750:2;7739:9;7735:18;7729:25;7719:35;;7794:2;7783:9;7779:18;7773:25;7763:35;;7498:306;;;;;:::o;9381:125::-;9446:9;;;9467:10;;;9464:36;;;9480:18;;:::i;10416:127::-;10477:10;10472:3;10468:20;10465:1;10458:31;10508:4;10505:1;10498:15;10532:4;10529:1;10522:15;10548:980;10810:4;10858:3;10847:9;10843:19;10889:6;10878:9;10871:25;10915:2;10953:6;10948:2;10937:9;10933:18;10926:34;10996:3;10991:2;10980:9;10976:18;10969:31;11020:6;11055;11049:13;11086:6;11078;11071:22;11124:3;11113:9;11109:19;11102:26;;11163:2;11155:6;11151:15;11137:29;;11184:1;11194:195;11208:6;11205:1;11202:13;11194:195;;;11273:13;;-1:-1:-1;;;;;11269:39:1;11257:52;;11364:15;;;;11329:12;;;;11305:1;11223:9;11194:195;;;-1:-1:-1;;;;;;;11445:32:1;;;;11440:2;11425:18;;11418:60;-1:-1:-1;;;11509:3:1;11494:19;11487:35;11406:3;10548:980;-1:-1:-1;;;10548:980:1:o;11533:217::-;11573:1;11599;11589:132;;11643:10;11638:3;11634:20;11631:1;11624:31;11678:4;11675:1;11668:15;11706:4;11703:1;11696:15;11589:132;-1:-1:-1;11735:9:1;;11533:217::o

Swarm Source

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