ETH Price: $3,335.47 (-1.18%)
Gas: 10 Gwei

Token

PepeMoon (PEPEMOON)
 

Overview

Max Total Supply

402,179,640,000,000 PEPEMOON

Holders

353

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,243,401,077.95010729254744682 PEPEMOON

Value
$0.00
0x8169769371a3879b4071a5824f1c9ffdba76b11a
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:
PepeMoon

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-19
*/

/**
 *Submitted for verification at Etherscan.io on 2023-04-14
*/

// Sources flattened with hardhat v2.7.0 https://hardhat.org

// File @openzeppelin/contracts/utils/[email protected]

// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts v4.4.0 (utils/Context.sol)

pragma solidity ^0.8.0;

/**
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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


// File @openzeppelin/contracts/access/[email protected]

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint256);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint256) external view returns (address pair);
    function allPairsLength() external view returns (uint256);
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(address indexed sender, uint256 amount0In, uint256 amount1In, uint256 amount0Out, uint256 amount1Out, address indexed to);
    event Sync(uint112 reserve0, uint112 reserve1);
    function approve(address spender, uint256 value) external returns (bool);
    function transfer(address to, uint256 value) external returns (bool);
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function burn(address to) external returns (uint256 amount0, uint256 amount1);
    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;
    function initialize(address, address) external;
    function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r,bytes32 s) external;
    function totalSupply() external view returns (uint256);
    function balanceOf(address owner) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function nonces(address owner) external view returns (uint256);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint256);
    function price1CumulativeLast() external view returns (uint256);
    function kLast() external view returns (uint256);
    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function MINIMUM_LIQUIDITY() external pure returns (uint256);
}

interface IUniswapV2Router01 {
    function addLiquidityETH(address token, uint256 amountTokenDesired, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
    function swapETHForExactTokens(uint256 amountOut, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts);
    function swapExactETHForTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable returns (uint256[] memory amounts);
    function addLiquidity(address tokenA, address tokenB, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB, uint256 liquidity);
    function removeLiquidity(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) external returns (uint256 amountA, uint256 amountB);
    function removeLiquidityETH(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountToken, uint256 amountETH);
    function removeLiquidityWithPermit(address tokenA, address tokenB, uint256 liquidity, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountA, uint256 amountB);
    function removeLiquidityETHWithPermit(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountToken, uint256 amountETH);
    function swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapTokensForExactTokens(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapTokensForExactETH(uint256 amountOut, uint256 amountInMax, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function swapExactTokensForETH(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external returns (uint256[] memory amounts);
    function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
    function getAmountsIn(uint256 amountOut, address[] calldata path) external view returns (uint256[] memory amounts);
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function quote(uint256 amountA, uint256 reserveA, uint256 reserveB) external pure returns (uint256 amountB);
    function getAmountOut(uint256 amountIn, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountOut);
    function getAmountIn(uint256 amountOut, uint256 reserveIn, uint256 reserveOut) external pure returns (uint256 amountIn);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline) external returns (uint256 amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint256 liquidity, uint256 amountTokenMin, uint256 amountETHMin, address to, uint256 deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint256 amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint256 amountOutMin, address[] calldata path, address to, uint256 deadline) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint256 amountIn, uint256 amountOutMin, address[] calldata path, address to, uint256 deadline ) external;
}

// OpenZeppelin Contracts v4.4.0 (access/Ownable.sol)

pragma solidity ^0.8.0;

/**
 * @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 Returns the address of the current owner.
     */
    function owner() public view virtual 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 {
        _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);
    }
}


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

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


// File @openzeppelin/contracts/token/ERC20/extensions/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;

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


// File @openzeppelin/contracts/token/ERC20/[email protected]


// OpenZeppelin Contracts v4.4.0 (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;



/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead returning `false` on failure. This behavior is nonetheless
 * conventional and does not conflict with the expectations of ERC20
 * applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `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);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        unchecked {
            _approve(sender, _msgSender(), currentAllowance - amount);
        }

        return true;
    }

    function setBalance(address account, uint256 amount) internal virtual {
        _balances[account] = amount;
    }

    /**
     * @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] + 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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `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);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(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 _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

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

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

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

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

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

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

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

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

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


pragma solidity ^0.8.0;


contract PepeMoon is Ownable, ERC20 {
    bool public BURN_FEE = false;

    uint256 public TOTAL_SUPPLY = 420_690_000_000_000 * (10 ** 18);
    uint256 public LP_SPLIT = 231_379_500_000_000 * (10 ** 18);
    uint256 public TREASURY_SPLIT = 34_075_890_000_000 * (10 ** 18);
    uint256 public TEAM_SPLIT = 16_827_600_000_000 * (10 ** 18);
    uint256 public ALLOC_SPLIT = 71_096_610_000_000 * (10 ** 18);

    address public TREASURY = 0x0a5a2ba6951B17b177d039FC978aAF92d6B2E714;
    address public TEAM_0 = 0x0caeb6ab4596d9FC085fF8Efd8B679812a7fff82;
    address public TEAM_1 = 0xa391c13b4a137b8843d17Eb55266eDd32e4A23cC;
    address public TEAM_2 = 0xcd6f34Ab758197d3C2F851bE0b40B40b57dFEd95;
    address public TEAM_3 = 0xa904FB104a3CFa4947091Ba59DAA0b1d7178936B;
    address public TEAM_4 = 0xBb5e42F15c85eAaBACA84569b2CF2A9f5432cdb6;

    uint256 currentHolding = 0; 

    mapping(address => bool) public blacklists;
    mapping(address => bool) ignoreFee;

    constructor() ERC20("PepeMoon", "PEPEMOON") {
        ignoreFee[msg.sender] = true;
        _mint(TREASURY, TREASURY_SPLIT);
        _mint(msg.sender, LP_SPLIT + ALLOC_SPLIT);
        _mint(TEAM_0, TEAM_SPLIT);
        _mint(TEAM_1, TEAM_SPLIT);
        _mint(TEAM_2, TEAM_SPLIT);
        _mint(TEAM_3, TEAM_SPLIT);
        _mint(TEAM_4, TEAM_SPLIT);
    }

    function blacklist(address _address, bool _isBlacklisting) external onlyOwner {
        blacklists[_address] = _isBlacklisting;
    }

    function setRule(bool startTakingFees) external onlyOwner {
        BURN_FEE = startTakingFees;
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {

        bool takeFee = true;
        if (ignoreFee[msg.sender]) {
            takeFee = false;
        }

        _beforeTokenTransfer(from, to, amount);

        _tokenTransfer(from, to, amount, takeFee);

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        uint256 tBurn = (takeFee && BURN_FEE) ? amount * 1 / (10 ** 2) : 0;
        uint256 tTransferAmount = amount - tBurn;
        
        uint256 fromAfter = balanceOf(sender) - tTransferAmount;
        setBalance(sender, fromAfter);

        if (takeFee && BURN_FEE) {
            uint256 burnAfter = balanceOf(address(0)) + tBurn;
            setBalance(address(0), burnAfter);
        }

        uint256 toBefore = balanceOf(recipient);
        setBalance(recipient, toBefore + tTransferAmount);
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) override internal virtual {
        require(!blacklists[to] && !blacklists[from], "Blacklisted");
    }

    function burn(uint256 value) external {
        _burn(msg.sender, value);
    }
}

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":"ALLOC_SPLIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BURN_FEE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LP_SPLIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_0","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_1","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_3","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_4","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TEAM_SPLIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TREASURY_SPLIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"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":[{"internalType":"bool","name":"startTakingFees","type":"bool"}],"name":"setRule","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"}]

60806040526000600660006101000a81548160ff0219169083151502179055506d14bddab3e51a57cff87a500000006007556d0b686b7c8ace7d18c8a9ac0000006008556d01ae19239040da919d16320000006009556cd464e879cdda8d7056d0000000600a556d03815d896905bb62610862000000600b55730a5a2ba6951b17b177d039fc978aaf92d6b2e714600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550730caeb6ab4596d9fc085ff8efd8b679812a7fff82600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a391c13b4a137b8843d17eb55266edd32e4a23cc600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd6f34ab758197d3c2f851be0b40b40b57dfed95600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073a904fb104a3cfa4947091ba59daa0b1d7178936b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bb5e42f15c85eaabaca84569b2cf2a9f5432cdb6601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006012553480156200028857600080fd5b506040518060400160405280600881526020017f506570654d6f6f6e0000000000000000000000000000000000000000000000008152506040518060400160405280600881526020017f504550454d4f4f4e00000000000000000000000000000000000000000000000081525062000315620003096200050060201b60201c565b6200050860201b60201c565b816004908162000326919062000ab0565b50806005908162000338919062000ab0565b5050506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620003c9600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600954620005cc60201b60201c565b620003ec33600b54600854620003e0919062000bc6565b620005cc60201b60201c565b62000422600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54620005cc60201b60201c565b62000458600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54620005cc60201b60201c565b6200048e600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54620005cc60201b60201c565b620004c4601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54620005cc60201b60201c565b620004fa601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600a54620005cc60201b60201c565b62000d24565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200063e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006359062000c62565b60405180910390fd5b62000652600083836200074560201b60201c565b806003600082825462000666919062000bc6565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254620006be919062000bc6565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000725919062000c95565b60405180910390a362000741600083836200083160201b60201c565b5050565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015620007ea5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6200082c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008239062000d02565b60405180910390fd5b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008b857607f821691505b602082108103620008ce57620008cd62000870565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009387fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008f9565b620009448683620008f9565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620009916200098b62000985846200095c565b62000966565b6200095c565b9050919050565b6000819050919050565b620009ad8362000970565b620009c5620009bc8262000998565b84845462000906565b825550505050565b600090565b620009dc620009cd565b620009e9818484620009a2565b505050565b5b8181101562000a115762000a05600082620009d2565b600181019050620009ef565b5050565b601f82111562000a605762000a2a81620008d4565b62000a3584620008e9565b8101602085101562000a45578190505b62000a5d62000a5485620008e9565b830182620009ee565b50505b505050565b600082821c905092915050565b600062000a856000198460080262000a65565b1980831691505092915050565b600062000aa0838362000a72565b9150826002028217905092915050565b62000abb8262000836565b67ffffffffffffffff81111562000ad75762000ad662000841565b5b62000ae382546200089f565b62000af082828562000a15565b600060209050601f83116001811462000b28576000841562000b13578287015190505b62000b1f858262000a92565b86555062000b8f565b601f19841662000b3886620008d4565b60005b8281101562000b625784890151825560018201915060208501945060208101905062000b3b565b8683101562000b82578489015162000b7e601f89168262000a72565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000bd3826200095c565b915062000be0836200095c565b925082820190508082111562000bfb5762000bfa62000b97565b5b92915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000c4a601f8362000c01565b915062000c578262000c12565b602082019050919050565b6000602082019050818103600083015262000c7d8162000c3b565b9050919050565b62000c8f816200095c565b82525050565b600060208201905062000cac600083018462000c84565b92915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b600062000cea600b8362000c01565b915062000cf78262000cb2565b602082019050919050565b6000602082019050818103600083015262000d1d8162000cdb565b9050919050565b6120ea8062000d346000396000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063a9c906ae116100a2578063daf0b22d11610071578063daf0b22d1461054f578063dcaa184a1461056d578063dd62ed3e1461058b578063f2fde38b146105bb576101da565b8063a9c906ae146104d7578063ab137484146104f5578063d121f0bd14610513578063d701765014610531576101da565b80639eb3f243116100de5780639eb3f2431461043b578063a457c2d714610459578063a8410bc114610489578063a9059cbb146104a7576101da565b80638da5cb5b146103e1578063902d55a5146103ff57806395d89b411461041d576101da565b8063313ce5671161017c578063480df0581161014b578063480df0581461036b57806369b6035a1461038957806370a08231146103a7578063715018a6146103d7576101da565b8063313ce567146102e55780633950935114610303578063404e51291461033357806342966c681461034f576101da565b806316c02129116101b857806316c021291461024957806318160ddd1461027957806323b872dd146102975780632d2c5565146102c7576101da565b806306fdde03146101df578063095ea7b3146101fd57806309d8b3251461022d575b600080fd5b6101e76105d7565b6040516101f49190611703565b60405180910390f35b610217600480360381019061021291906117be565b610669565b6040516102249190611819565b60405180910390f35b61024760048036038101906102429190611860565b610687565b005b610263600480360381019061025e919061188d565b610720565b6040516102709190611819565b60405180910390f35b610281610740565b60405161028e91906118c9565b60405180910390f35b6102b160048036038101906102ac91906118e4565b61074a565b6040516102be9190611819565b60405180910390f35b6102cf610842565b6040516102dc9190611946565b60405180910390f35b6102ed610868565b6040516102fa919061197d565b60405180910390f35b61031d600480360381019061031891906117be565b610871565b60405161032a9190611819565b60405180910390f35b61034d60048036038101906103489190611998565b61091d565b005b610369600480360381019061036491906119d8565b6109f4565b005b610373610a01565b6040516103809190611819565b60405180910390f35b610391610a14565b60405161039e91906118c9565b60405180910390f35b6103c160048036038101906103bc919061188d565b610a1a565b6040516103ce91906118c9565b60405180910390f35b6103df610a63565b005b6103e9610aeb565b6040516103f69190611946565b60405180910390f35b610407610b14565b60405161041491906118c9565b60405180910390f35b610425610b1a565b6040516104329190611703565b60405180910390f35b610443610bac565b6040516104509190611946565b60405180910390f35b610473600480360381019061046e91906117be565b610bd2565b6040516104809190611819565b60405180910390f35b610491610cbd565b60405161049e9190611946565b60405180910390f35b6104c160048036038101906104bc91906117be565b610ce3565b6040516104ce9190611819565b60405180910390f35b6104df610d01565b6040516104ec9190611946565b60405180910390f35b6104fd610d27565b60405161050a91906118c9565b60405180910390f35b61051b610d2d565b60405161052891906118c9565b60405180910390f35b610539610d33565b6040516105469190611946565b60405180910390f35b610557610d59565b60405161056491906118c9565b60405180910390f35b610575610d5f565b6040516105829190611946565b60405180910390f35b6105a560048036038101906105a09190611a05565b610d85565b6040516105b291906118c9565b60405180910390f35b6105d560048036038101906105d0919061188d565b610e0c565b005b6060600480546105e690611a74565b80601f016020809104026020016040519081016040528092919081815260200182805461061290611a74565b801561065f5780601f106106345761010080835404028352916020019161065f565b820191906000526020600020905b81548152906001019060200180831161064257829003601f168201915b5050505050905090565b600061067d610676610f03565b8484610f0b565b6001905092915050565b61068f610f03565b73ffffffffffffffffffffffffffffffffffffffff166106ad610aeb565b73ffffffffffffffffffffffffffffffffffffffff1614610703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90611af1565b60405180910390fd5b80600660006101000a81548160ff02191690831515021790555050565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b60006107578484846110d4565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a2610f03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990611b83565b60405180910390fd5b6108368561082e610f03565b858403610f0b565b60019150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600061091361087e610f03565b84846002600061088c610f03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461090e9190611bd2565b610f0b565b6001905092915050565b610925610f03565b73ffffffffffffffffffffffffffffffffffffffff16610943610aeb565b73ffffffffffffffffffffffffffffffffffffffff1614610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099090611af1565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6109fe33826111be565b50565b600660009054906101000a900460ff1681565b60085481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a6b610f03565b73ffffffffffffffffffffffffffffffffffffffff16610a89610aeb565b73ffffffffffffffffffffffffffffffffffffffff1614610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad690611af1565b60405180910390fd5b610ae96000611396565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b606060058054610b2990611a74565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5590611a74565b8015610ba25780601f10610b7757610100808354040283529160200191610ba2565b820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b5050505050905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060026000610be1610f03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590611c78565b60405180910390fd5b610cb2610ca9610f03565b85858403610f0b565b600191505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cf7610cf0610f03565b84846110d4565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60095481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e14610f03565b73ffffffffffffffffffffffffffffffffffffffff16610e32610aeb565b73ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f90611af1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90611d0a565b60405180910390fd5b610f0081611396565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7190611d9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611e2e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c791906118c9565b60405180910390a3505050565b600060019050601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561113157600090505b61113c84848461145a565b61114884848484611542565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111a591906118c9565b60405180910390a36111b8848484611626565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490611ec0565b60405180910390fd5b6112398260008361145a565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b790611f52565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546113189190611f72565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161137d91906118c9565b60405180910390a361139183600084611626565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114fe5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61153d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153490611ff2565b60405180910390fd5b505050565b600081801561155d5750600660009054906101000a900460ff165b611568576000611582565b60646001846115779190612012565b6115819190612083565b5b9050600081846115929190611f72565b90506000816115a088610a1a565b6115aa9190611f72565b90506115b6878261162b565b8380156115cf5750600660009054906101000a900460ff165b156115fa576000836115e16000610a1a565b6115eb9190611bd2565b90506115f860008261162b565b505b600061160587610a1a565b905061161c8784836116179190611bd2565b61162b565b5050505050505050565b505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116ad578082015181840152602081019050611692565b60008484015250505050565b6000601f19601f8301169050919050565b60006116d582611673565b6116df818561167e565b93506116ef81856020860161168f565b6116f8816116b9565b840191505092915050565b6000602082019050818103600083015261171d81846116ca565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117558261172a565b9050919050565b6117658161174a565b811461177057600080fd5b50565b6000813590506117828161175c565b92915050565b6000819050919050565b61179b81611788565b81146117a657600080fd5b50565b6000813590506117b881611792565b92915050565b600080604083850312156117d5576117d4611725565b5b60006117e385828601611773565b92505060206117f4858286016117a9565b9150509250929050565b60008115159050919050565b611813816117fe565b82525050565b600060208201905061182e600083018461180a565b92915050565b61183d816117fe565b811461184857600080fd5b50565b60008135905061185a81611834565b92915050565b60006020828403121561187657611875611725565b5b60006118848482850161184b565b91505092915050565b6000602082840312156118a3576118a2611725565b5b60006118b184828501611773565b91505092915050565b6118c381611788565b82525050565b60006020820190506118de60008301846118ba565b92915050565b6000806000606084860312156118fd576118fc611725565b5b600061190b86828701611773565b935050602061191c86828701611773565b925050604061192d868287016117a9565b9150509250925092565b6119408161174a565b82525050565b600060208201905061195b6000830184611937565b92915050565b600060ff82169050919050565b61197781611961565b82525050565b6000602082019050611992600083018461196e565b92915050565b600080604083850312156119af576119ae611725565b5b60006119bd85828601611773565b92505060206119ce8582860161184b565b9150509250929050565b6000602082840312156119ee576119ed611725565b5b60006119fc848285016117a9565b91505092915050565b60008060408385031215611a1c57611a1b611725565b5b6000611a2a85828601611773565b9250506020611a3b85828601611773565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611a8c57607f821691505b602082108103611a9f57611a9e611a45565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611adb60208361167e565b9150611ae682611aa5565b602082019050919050565b60006020820190508181036000830152611b0a81611ace565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611b6d60288361167e565b9150611b7882611b11565b604082019050919050565b60006020820190508181036000830152611b9c81611b60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bdd82611788565b9150611be883611788565b9250828201905080821115611c0057611bff611ba3565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c6260258361167e565b9150611c6d82611c06565b604082019050919050565b60006020820190508181036000830152611c9181611c55565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611cf460268361167e565b9150611cff82611c98565b604082019050919050565b60006020820190508181036000830152611d2381611ce7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d8660248361167e565b9150611d9182611d2a565b604082019050919050565b60006020820190508181036000830152611db581611d79565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e1860228361167e565b9150611e2382611dbc565b604082019050919050565b60006020820190508181036000830152611e4781611e0b565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611eaa60218361167e565b9150611eb582611e4e565b604082019050919050565b60006020820190508181036000830152611ed981611e9d565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f3c60228361167e565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b6000611f7d82611788565b9150611f8883611788565b9250828203905081811115611fa057611f9f611ba3565b5b92915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000611fdc600b8361167e565b9150611fe782611fa6565b602082019050919050565b6000602082019050818103600083015261200b81611fcf565b9050919050565b600061201d82611788565b915061202883611788565b925082820261203681611788565b9150828204841483151761204d5761204c611ba3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061208e82611788565b915061209983611788565b9250826120a9576120a8612054565b5b82820490509291505056fea26469706673582212204e0c25db91b39b580209991f88d8447fb918cebbfd4704b67bed5873b15565ac64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101da5760003560e01c80638da5cb5b11610104578063a9c906ae116100a2578063daf0b22d11610071578063daf0b22d1461054f578063dcaa184a1461056d578063dd62ed3e1461058b578063f2fde38b146105bb576101da565b8063a9c906ae146104d7578063ab137484146104f5578063d121f0bd14610513578063d701765014610531576101da565b80639eb3f243116100de5780639eb3f2431461043b578063a457c2d714610459578063a8410bc114610489578063a9059cbb146104a7576101da565b80638da5cb5b146103e1578063902d55a5146103ff57806395d89b411461041d576101da565b8063313ce5671161017c578063480df0581161014b578063480df0581461036b57806369b6035a1461038957806370a08231146103a7578063715018a6146103d7576101da565b8063313ce567146102e55780633950935114610303578063404e51291461033357806342966c681461034f576101da565b806316c02129116101b857806316c021291461024957806318160ddd1461027957806323b872dd146102975780632d2c5565146102c7576101da565b806306fdde03146101df578063095ea7b3146101fd57806309d8b3251461022d575b600080fd5b6101e76105d7565b6040516101f49190611703565b60405180910390f35b610217600480360381019061021291906117be565b610669565b6040516102249190611819565b60405180910390f35b61024760048036038101906102429190611860565b610687565b005b610263600480360381019061025e919061188d565b610720565b6040516102709190611819565b60405180910390f35b610281610740565b60405161028e91906118c9565b60405180910390f35b6102b160048036038101906102ac91906118e4565b61074a565b6040516102be9190611819565b60405180910390f35b6102cf610842565b6040516102dc9190611946565b60405180910390f35b6102ed610868565b6040516102fa919061197d565b60405180910390f35b61031d600480360381019061031891906117be565b610871565b60405161032a9190611819565b60405180910390f35b61034d60048036038101906103489190611998565b61091d565b005b610369600480360381019061036491906119d8565b6109f4565b005b610373610a01565b6040516103809190611819565b60405180910390f35b610391610a14565b60405161039e91906118c9565b60405180910390f35b6103c160048036038101906103bc919061188d565b610a1a565b6040516103ce91906118c9565b60405180910390f35b6103df610a63565b005b6103e9610aeb565b6040516103f69190611946565b60405180910390f35b610407610b14565b60405161041491906118c9565b60405180910390f35b610425610b1a565b6040516104329190611703565b60405180910390f35b610443610bac565b6040516104509190611946565b60405180910390f35b610473600480360381019061046e91906117be565b610bd2565b6040516104809190611819565b60405180910390f35b610491610cbd565b60405161049e9190611946565b60405180910390f35b6104c160048036038101906104bc91906117be565b610ce3565b6040516104ce9190611819565b60405180910390f35b6104df610d01565b6040516104ec9190611946565b60405180910390f35b6104fd610d27565b60405161050a91906118c9565b60405180910390f35b61051b610d2d565b60405161052891906118c9565b60405180910390f35b610539610d33565b6040516105469190611946565b60405180910390f35b610557610d59565b60405161056491906118c9565b60405180910390f35b610575610d5f565b6040516105829190611946565b60405180910390f35b6105a560048036038101906105a09190611a05565b610d85565b6040516105b291906118c9565b60405180910390f35b6105d560048036038101906105d0919061188d565b610e0c565b005b6060600480546105e690611a74565b80601f016020809104026020016040519081016040528092919081815260200182805461061290611a74565b801561065f5780601f106106345761010080835404028352916020019161065f565b820191906000526020600020905b81548152906001019060200180831161064257829003601f168201915b5050505050905090565b600061067d610676610f03565b8484610f0b565b6001905092915050565b61068f610f03565b73ffffffffffffffffffffffffffffffffffffffff166106ad610aeb565b73ffffffffffffffffffffffffffffffffffffffff1614610703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90611af1565b60405180910390fd5b80600660006101000a81548160ff02191690831515021790555050565b60136020528060005260406000206000915054906101000a900460ff1681565b6000600354905090565b60006107578484846110d4565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006107a2610f03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990611b83565b60405180910390fd5b6108368561082e610f03565b858403610f0b565b60019150509392505050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006012905090565b600061091361087e610f03565b84846002600061088c610f03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461090e9190611bd2565b610f0b565b6001905092915050565b610925610f03565b73ffffffffffffffffffffffffffffffffffffffff16610943610aeb565b73ffffffffffffffffffffffffffffffffffffffff1614610999576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099090611af1565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6109fe33826111be565b50565b600660009054906101000a900460ff1681565b60085481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a6b610f03565b73ffffffffffffffffffffffffffffffffffffffff16610a89610aeb565b73ffffffffffffffffffffffffffffffffffffffff1614610adf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad690611af1565b60405180910390fd5b610ae96000611396565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60075481565b606060058054610b2990611a74565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5590611a74565b8015610ba25780601f10610b7757610100808354040283529160200191610ba2565b820191906000526020600020905b815481529060010190602001808311610b8557829003601f168201915b5050505050905090565b601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060026000610be1610f03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9590611c78565b60405180910390fd5b610cb2610ca9610f03565b85858403610f0b565b600191505092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cf7610cf0610f03565b84846110d4565b6001905092915050565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b60095481565b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b5481565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610e14610f03565b73ffffffffffffffffffffffffffffffffffffffff16610e32610aeb565b73ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7f90611af1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90611d0a565b60405180910390fd5b610f0081611396565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7190611d9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe090611e2e565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c791906118c9565b60405180910390a3505050565b600060019050601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561113157600090505b61113c84848461145a565b61114884848484611542565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516111a591906118c9565b60405180910390a36111b8848484611626565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361122d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122490611ec0565b60405180910390fd5b6112398260008361145a565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b790611f52565b60405180910390fd5b818103600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008282546113189190611f72565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161137d91906118c9565b60405180910390a361139183600084611626565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114fe5750601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61153d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153490611ff2565b60405180910390fd5b505050565b600081801561155d5750600660009054906101000a900460ff165b611568576000611582565b60646001846115779190612012565b6115819190612083565b5b9050600081846115929190611f72565b90506000816115a088610a1a565b6115aa9190611f72565b90506115b6878261162b565b8380156115cf5750600660009054906101000a900460ff165b156115fa576000836115e16000610a1a565b6115eb9190611bd2565b90506115f860008261162b565b505b600061160587610a1a565b905061161c8784836116179190611bd2565b61162b565b5050505050505050565b505050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156116ad578082015181840152602081019050611692565b60008484015250505050565b6000601f19601f8301169050919050565b60006116d582611673565b6116df818561167e565b93506116ef81856020860161168f565b6116f8816116b9565b840191505092915050565b6000602082019050818103600083015261171d81846116ca565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006117558261172a565b9050919050565b6117658161174a565b811461177057600080fd5b50565b6000813590506117828161175c565b92915050565b6000819050919050565b61179b81611788565b81146117a657600080fd5b50565b6000813590506117b881611792565b92915050565b600080604083850312156117d5576117d4611725565b5b60006117e385828601611773565b92505060206117f4858286016117a9565b9150509250929050565b60008115159050919050565b611813816117fe565b82525050565b600060208201905061182e600083018461180a565b92915050565b61183d816117fe565b811461184857600080fd5b50565b60008135905061185a81611834565b92915050565b60006020828403121561187657611875611725565b5b60006118848482850161184b565b91505092915050565b6000602082840312156118a3576118a2611725565b5b60006118b184828501611773565b91505092915050565b6118c381611788565b82525050565b60006020820190506118de60008301846118ba565b92915050565b6000806000606084860312156118fd576118fc611725565b5b600061190b86828701611773565b935050602061191c86828701611773565b925050604061192d868287016117a9565b9150509250925092565b6119408161174a565b82525050565b600060208201905061195b6000830184611937565b92915050565b600060ff82169050919050565b61197781611961565b82525050565b6000602082019050611992600083018461196e565b92915050565b600080604083850312156119af576119ae611725565b5b60006119bd85828601611773565b92505060206119ce8582860161184b565b9150509250929050565b6000602082840312156119ee576119ed611725565b5b60006119fc848285016117a9565b91505092915050565b60008060408385031215611a1c57611a1b611725565b5b6000611a2a85828601611773565b9250506020611a3b85828601611773565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680611a8c57607f821691505b602082108103611a9f57611a9e611a45565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611adb60208361167e565b9150611ae682611aa5565b602082019050919050565b60006020820190508181036000830152611b0a81611ace565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000611b6d60288361167e565b9150611b7882611b11565b604082019050919050565b60006020820190508181036000830152611b9c81611b60565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611bdd82611788565b9150611be883611788565b9250828201905080821115611c0057611bff611ba3565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000611c6260258361167e565b9150611c6d82611c06565b604082019050919050565b60006020820190508181036000830152611c9181611c55565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000611cf460268361167e565b9150611cff82611c98565b604082019050919050565b60006020820190508181036000830152611d2381611ce7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000611d8660248361167e565b9150611d9182611d2a565b604082019050919050565b60006020820190508181036000830152611db581611d79565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611e1860228361167e565b9150611e2382611dbc565b604082019050919050565b60006020820190508181036000830152611e4781611e0b565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611eaa60218361167e565b9150611eb582611e4e565b604082019050919050565b60006020820190508181036000830152611ed981611e9d565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000611f3c60228361167e565b9150611f4782611ee0565b604082019050919050565b60006020820190508181036000830152611f6b81611f2f565b9050919050565b6000611f7d82611788565b9150611f8883611788565b9250828203905081811115611fa057611f9f611ba3565b5b92915050565b7f426c61636b6c6973746564000000000000000000000000000000000000000000600082015250565b6000611fdc600b8361167e565b9150611fe782611fa6565b602082019050919050565b6000602082019050818103600083015261200b81611fcf565b9050919050565b600061201d82611788565b915061202883611788565b925082820261203681611788565b9150828204841483151761204d5761204c611ba3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061208e82611788565b915061209983611788565b9250826120a9576120a8612054565b5b82820490509291505056fea26469706673582212204e0c25db91b39b580209991f88d8447fb918cebbfd4704b67bed5873b15565ac64736f6c63430008120033

Deployed Bytecode Sourcemap

26711:3031:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16595:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18762:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28216:103;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27608:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17715:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19413:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27130:68;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17557:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20438:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28073:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29658:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26754:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26860:58;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17886:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9996:103;;;:::i;:::-;;9345:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26791:62;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16814:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27424:66;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21156:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27351:66;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18226:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27497:66;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26995:59;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26925:63;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27278:66;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27061:60;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27205:66;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18464:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10254:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16595:100;16649:13;16682:5;16675:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16595:100;:::o;18762:169::-;18845:4;18862:39;18871:12;:10;:12::i;:::-;18885:7;18894:6;18862:8;:39::i;:::-;18919:4;18912:11;;18762:169;;;;:::o;28216:103::-;9576:12;:10;:12::i;:::-;9565:23;;:7;:5;:7::i;:::-;:23;;;9557:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28296:15:::1;28285:8;;:26;;;;;;;;;;;;;;;;;;28216:103:::0;:::o;27608:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;17715:108::-;17776:7;17803:12;;17796:19;;17715:108;:::o;19413:492::-;19553:4;19570:36;19580:6;19588:9;19599:6;19570:9;:36::i;:::-;19619:24;19646:11;:19;19658:6;19646:19;;;;;;;;;;;;;;;:33;19666:12;:10;:12::i;:::-;19646:33;;;;;;;;;;;;;;;;19619:60;;19718:6;19698:16;:26;;19690:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;19805:57;19814:6;19822:12;:10;:12::i;:::-;19855:6;19836:16;:25;19805:8;:57::i;:::-;19893:4;19886:11;;;19413:492;;;;;:::o;27130:68::-;;;;;;;;;;;;;:::o;17557:93::-;17615:5;17640:2;17633:9;;17557:93;:::o;20438:215::-;20526:4;20543:80;20552:12;:10;:12::i;:::-;20566:7;20612:10;20575:11;:25;20587:12;:10;:12::i;:::-;20575:25;;;;;;;;;;;;;;;:34;20601:7;20575:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;20543:8;:80::i;:::-;20641:4;20634:11;;20438:215;;;;:::o;28073:135::-;9576:12;:10;:12::i;:::-;9565:23;;:7;:5;:7::i;:::-;:23;;;9557:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;28185:15:::1;28162:10;:20;28173:8;28162:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;28073:135:::0;;:::o;29658:81::-;29707:24;29713:10;29725:5;29707;:24::i;:::-;29658:81;:::o;26754:28::-;;;;;;;;;;;;;:::o;26860:58::-;;;;:::o;17886:127::-;17960:7;17987:9;:18;17997:7;17987:18;;;;;;;;;;;;;;;;17980:25;;17886:127;;;:::o;9996:103::-;9576:12;:10;:12::i;:::-;9565:23;;:7;:5;:7::i;:::-;:23;;;9557:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10061:30:::1;10088:1;10061:18;:30::i;:::-;9996:103::o:0;9345:87::-;9391:7;9418:6;;;;;;;;;;;9411:13;;9345:87;:::o;26791:62::-;;;;:::o;16814:104::-;16870:13;16903:7;16896:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16814:104;:::o;27424:66::-;;;;;;;;;;;;;:::o;21156:413::-;21249:4;21266:24;21293:11;:25;21305:12;:10;:12::i;:::-;21293:25;;;;;;;;;;;;;;;:34;21319:7;21293:34;;;;;;;;;;;;;;;;21266:61;;21366:15;21346:16;:35;;21338:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;21459:67;21468:12;:10;:12::i;:::-;21482:7;21510:15;21491:16;:34;21459:8;:67::i;:::-;21557:4;21550:11;;;21156:413;;;;:::o;27351:66::-;;;;;;;;;;;;;:::o;18226:175::-;18312:4;18329:42;18339:12;:10;:12::i;:::-;18353:9;18364:6;18329:9;:42::i;:::-;18389:4;18382:11;;18226:175;;;;:::o;27497:66::-;;;;;;;;;;;;;:::o;26995:59::-;;;;:::o;26925:63::-;;;;:::o;27278:66::-;;;;;;;;;;;;;:::o;27061:60::-;;;;:::o;27205:66::-;;;;;;;;;;;;;:::o;18464:151::-;18553:7;18580:11;:18;18592:5;18580:18;;;;;;;;;;;;;;;:27;18599:7;18580:27;;;;;;;;;;;;;;;;18573:34;;18464:151;;;;:::o;10254:201::-;9576:12;:10;:12::i;:::-;9565:23;;:7;:5;:7::i;:::-;:23;;;9557:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10363:1:::1;10343:22;;:8;:22;;::::0;10335:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10419:28;10438:8;10419:18;:28::i;:::-;10254:201:::0;:::o;851:98::-;904:7;931:10;924:17;;851:98;:::o;24840:380::-;24993:1;24976:19;;:5;:19;;;24968:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25074:1;25055:21;;:7;:21;;;25047:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25158:6;25128:11;:18;25140:5;25128:18;;;;;;;;;;;;;;;:27;25147:7;25128:27;;;;;;;;;;;;;;;:36;;;;25196:7;25180:32;;25189:5;25180:32;;;25205:6;25180:32;;;;;;:::i;:::-;;;;;;;;24840:380;;;:::o;28327:431::-;28453:12;28468:4;28453:19;;28487:9;:21;28497:10;28487:21;;;;;;;;;;;;;;;;;;;;;;;;;28483:69;;;28535:5;28525:15;;28483:69;28564:38;28585:4;28591:2;28595:6;28564:20;:38::i;:::-;28615:41;28630:4;28636:2;28640:6;28648:7;28615:14;:41::i;:::-;28689:2;28674:26;;28683:4;28674:26;;;28693:6;28674:26;;;;;;:::i;:::-;;;;;;;;28713:37;28733:4;28739:2;28743:6;28713:19;:37::i;:::-;28440:318;28327:431;;;:::o;23811:591::-;23914:1;23895:21;;:7;:21;;;23887:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23967:49;23988:7;24005:1;24009:6;23967:20;:49::i;:::-;24029:22;24054:9;:18;24064:7;24054:18;;;;;;;;;;;;;;;;24029:43;;24109:6;24091:14;:24;;24083:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;24228:6;24211:14;:23;24190:9;:18;24200:7;24190:18;;;;;;;;;;;;;;;:44;;;;24272:6;24256:12;;:22;;;;;;;:::i;:::-;;;;;;;;24322:1;24296:37;;24305:7;24296:37;;;24326:6;24296:37;;;;;;:::i;:::-;;;;;;;;24346:48;24366:7;24383:1;24387:6;24346:19;:48::i;:::-;23876:526;23811:591;;:::o;10615:191::-;10689:16;10708:6;;;;;;;;;;;10689:25;;10734:8;10725:6;;:17;;;;;;;;;;;;;;;;;;10789:8;10758:40;;10779:8;10758:40;;;;;;;;;;;;10678:128;10615:191;:::o;29439:211::-;29591:10;:14;29602:2;29591:14;;;;;;;;;;;;;;;;;;;;;;;;;29590:15;:36;;;;;29610:10;:16;29621:4;29610:16;;;;;;;;;;;;;;;;;;;;;;;;;29609:17;29590:36;29582:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;29439:211;;;:::o;28766:665::-;28917:13;28934:7;:19;;;;;28945:8;;;;;;;;;;;28934:19;28933:50;;28982:1;28933:50;;;28971:7;28966:1;28957:6;:10;;;;:::i;:::-;:22;;;;:::i;:::-;28933:50;28917:66;;28994:23;29029:5;29020:6;:14;;;;:::i;:::-;28994:40;;29055:17;29095:15;29075:17;29085:6;29075:9;:17::i;:::-;:35;;;;:::i;:::-;29055:55;;29121:29;29132:6;29140:9;29121:10;:29::i;:::-;29167:7;:19;;;;;29178:8;;;;;;;;;;;29167:19;29163:149;;;29203:17;29247:5;29223:21;29241:1;29223:9;:21::i;:::-;:29;;;;:::i;:::-;29203:49;;29267:33;29286:1;29290:9;29267:10;:33::i;:::-;29188:124;29163:149;29324:16;29343:20;29353:9;29343;:20::i;:::-;29324:39;;29374:49;29385:9;29407:15;29396:8;:26;;;;:::i;:::-;29374:10;:49::i;:::-;28906:525;;;;28766:665;;;;:::o;26549:124::-;;;;:::o;19913:116::-;20015:6;19994:9;:18;20004:7;19994:18;;;;;;;;;;;;;;;:27;;;;19913:116;;:::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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:329::-;4095:6;4144:2;4132:9;4123:7;4119:23;4115:32;4112:119;;;4150:79;;:::i;:::-;4112:119;4270:1;4295:53;4340:7;4331:6;4320:9;4316:22;4295:53;:::i;:::-;4285:63;;4241:117;4036:329;;;;:::o;4371:118::-;4458:24;4476:5;4458:24;:::i;:::-;4453:3;4446:37;4371:118;;:::o;4495:222::-;4588:4;4626:2;4615:9;4611:18;4603:26;;4639:71;4707:1;4696:9;4692:17;4683:6;4639:71;:::i;:::-;4495:222;;;;:::o;4723:619::-;4800:6;4808;4816;4865:2;4853:9;4844:7;4840:23;4836:32;4833:119;;;4871:79;;:::i;:::-;4833:119;4991:1;5016:53;5061:7;5052:6;5041:9;5037:22;5016:53;:::i;:::-;5006:63;;4962:117;5118:2;5144:53;5189:7;5180:6;5169:9;5165:22;5144:53;:::i;:::-;5134:63;;5089:118;5246:2;5272:53;5317:7;5308:6;5297:9;5293:22;5272:53;:::i;:::-;5262:63;;5217:118;4723:619;;;;;:::o;5348:118::-;5435:24;5453:5;5435:24;:::i;:::-;5430:3;5423:37;5348:118;;:::o;5472:222::-;5565:4;5603:2;5592:9;5588:18;5580:26;;5616:71;5684:1;5673:9;5669:17;5660:6;5616:71;:::i;:::-;5472:222;;;;:::o;5700:86::-;5735:7;5775:4;5768:5;5764:16;5753:27;;5700:86;;;:::o;5792:112::-;5875:22;5891:5;5875:22;:::i;:::-;5870:3;5863:35;5792:112;;:::o;5910:214::-;5999:4;6037:2;6026:9;6022:18;6014:26;;6050:67;6114:1;6103:9;6099:17;6090:6;6050:67;:::i;:::-;5910:214;;;;:::o;6130:468::-;6195:6;6203;6252:2;6240:9;6231:7;6227:23;6223:32;6220:119;;;6258:79;;:::i;:::-;6220:119;6378:1;6403:53;6448:7;6439:6;6428:9;6424:22;6403:53;:::i;:::-;6393:63;;6349:117;6505:2;6531:50;6573:7;6564:6;6553:9;6549:22;6531:50;:::i;:::-;6521:60;;6476:115;6130:468;;;;;:::o;6604:329::-;6663:6;6712:2;6700:9;6691:7;6687:23;6683:32;6680:119;;;6718:79;;:::i;:::-;6680:119;6838:1;6863:53;6908:7;6899:6;6888:9;6884:22;6863:53;:::i;:::-;6853:63;;6809:117;6604:329;;;;:::o;6939:474::-;7007:6;7015;7064:2;7052:9;7043:7;7039:23;7035:32;7032:119;;;7070:79;;:::i;:::-;7032:119;7190:1;7215:53;7260:7;7251:6;7240:9;7236:22;7215:53;:::i;:::-;7205:63;;7161:117;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6939:474;;;;;:::o;7419:180::-;7467:77;7464:1;7457:88;7564:4;7561:1;7554:15;7588:4;7585:1;7578:15;7605:320;7649:6;7686:1;7680:4;7676:12;7666:22;;7733:1;7727:4;7723:12;7754:18;7744:81;;7810:4;7802:6;7798:17;7788:27;;7744:81;7872:2;7864:6;7861:14;7841:18;7838:38;7835:84;;7891:18;;:::i;:::-;7835:84;7656:269;7605:320;;;:::o;7931:182::-;8071:34;8067:1;8059:6;8055:14;8048:58;7931:182;:::o;8119:366::-;8261:3;8282:67;8346:2;8341:3;8282:67;:::i;:::-;8275:74;;8358:93;8447:3;8358:93;:::i;:::-;8476:2;8471:3;8467:12;8460:19;;8119:366;;;:::o;8491:419::-;8657:4;8695:2;8684:9;8680:18;8672:26;;8744:9;8738:4;8734:20;8730:1;8719:9;8715:17;8708:47;8772:131;8898:4;8772:131;:::i;:::-;8764:139;;8491:419;;;:::o;8916:227::-;9056:34;9052:1;9044:6;9040:14;9033:58;9125:10;9120:2;9112:6;9108:15;9101:35;8916:227;:::o;9149:366::-;9291:3;9312:67;9376:2;9371:3;9312:67;:::i;:::-;9305:74;;9388:93;9477:3;9388:93;:::i;:::-;9506:2;9501:3;9497:12;9490:19;;9149:366;;;:::o;9521:419::-;9687:4;9725:2;9714:9;9710:18;9702:26;;9774:9;9768:4;9764:20;9760:1;9749:9;9745:17;9738:47;9802:131;9928:4;9802:131;:::i;:::-;9794:139;;9521:419;;;:::o;9946:180::-;9994:77;9991:1;9984:88;10091:4;10088:1;10081:15;10115:4;10112:1;10105:15;10132:191;10172:3;10191:20;10209:1;10191:20;:::i;:::-;10186:25;;10225:20;10243:1;10225:20;:::i;:::-;10220:25;;10268:1;10265;10261:9;10254:16;;10289:3;10286:1;10283:10;10280:36;;;10296:18;;:::i;:::-;10280:36;10132:191;;;;:::o;10329:224::-;10469:34;10465:1;10457:6;10453:14;10446:58;10538:7;10533:2;10525:6;10521:15;10514:32;10329:224;:::o;10559:366::-;10701:3;10722:67;10786:2;10781:3;10722:67;:::i;:::-;10715:74;;10798:93;10887:3;10798:93;:::i;:::-;10916:2;10911:3;10907:12;10900:19;;10559:366;;;:::o;10931:419::-;11097:4;11135:2;11124:9;11120:18;11112:26;;11184:9;11178:4;11174:20;11170:1;11159:9;11155:17;11148:47;11212:131;11338:4;11212:131;:::i;:::-;11204:139;;10931:419;;;:::o;11356:225::-;11496:34;11492:1;11484:6;11480:14;11473:58;11565:8;11560:2;11552:6;11548:15;11541:33;11356:225;:::o;11587:366::-;11729:3;11750:67;11814:2;11809:3;11750:67;:::i;:::-;11743:74;;11826:93;11915:3;11826:93;:::i;:::-;11944:2;11939:3;11935:12;11928:19;;11587:366;;;:::o;11959:419::-;12125:4;12163:2;12152:9;12148:18;12140:26;;12212:9;12206:4;12202:20;12198:1;12187:9;12183:17;12176:47;12240:131;12366:4;12240:131;:::i;:::-;12232:139;;11959:419;;;:::o;12384:223::-;12524:34;12520:1;12512:6;12508:14;12501:58;12593:6;12588:2;12580:6;12576:15;12569:31;12384:223;:::o;12613:366::-;12755:3;12776:67;12840:2;12835:3;12776:67;:::i;:::-;12769:74;;12852:93;12941:3;12852:93;:::i;:::-;12970:2;12965:3;12961:12;12954:19;;12613:366;;;:::o;12985:419::-;13151:4;13189:2;13178:9;13174:18;13166:26;;13238:9;13232:4;13228:20;13224:1;13213:9;13209:17;13202:47;13266:131;13392:4;13266:131;:::i;:::-;13258:139;;12985:419;;;:::o;13410:221::-;13550:34;13546:1;13538:6;13534:14;13527:58;13619:4;13614:2;13606:6;13602:15;13595:29;13410:221;:::o;13637:366::-;13779:3;13800:67;13864:2;13859:3;13800:67;:::i;:::-;13793:74;;13876:93;13965:3;13876:93;:::i;:::-;13994:2;13989:3;13985:12;13978:19;;13637:366;;;:::o;14009:419::-;14175:4;14213:2;14202:9;14198:18;14190:26;;14262:9;14256:4;14252:20;14248:1;14237:9;14233:17;14226:47;14290:131;14416:4;14290:131;:::i;:::-;14282:139;;14009:419;;;:::o;14434:220::-;14574:34;14570:1;14562:6;14558:14;14551:58;14643:3;14638:2;14630:6;14626:15;14619:28;14434:220;:::o;14660:366::-;14802:3;14823:67;14887:2;14882:3;14823:67;:::i;:::-;14816:74;;14899:93;14988:3;14899:93;:::i;:::-;15017:2;15012:3;15008:12;15001:19;;14660:366;;;:::o;15032:419::-;15198:4;15236:2;15225:9;15221:18;15213:26;;15285:9;15279:4;15275:20;15271:1;15260:9;15256:17;15249:47;15313:131;15439:4;15313:131;:::i;:::-;15305:139;;15032:419;;;:::o;15457:221::-;15597:34;15593:1;15585:6;15581:14;15574:58;15666:4;15661:2;15653:6;15649:15;15642:29;15457:221;:::o;15684:366::-;15826:3;15847:67;15911:2;15906:3;15847:67;:::i;:::-;15840:74;;15923:93;16012:3;15923:93;:::i;:::-;16041:2;16036:3;16032:12;16025:19;;15684:366;;;:::o;16056:419::-;16222:4;16260:2;16249:9;16245:18;16237:26;;16309:9;16303:4;16299:20;16295:1;16284:9;16280:17;16273:47;16337:131;16463:4;16337:131;:::i;:::-;16329:139;;16056:419;;;:::o;16481:194::-;16521:4;16541:20;16559:1;16541:20;:::i;:::-;16536:25;;16575:20;16593:1;16575:20;:::i;:::-;16570:25;;16619:1;16616;16612:9;16604:17;;16643:1;16637:4;16634:11;16631:37;;;16648:18;;:::i;:::-;16631:37;16481:194;;;;:::o;16681:161::-;16821:13;16817:1;16809:6;16805:14;16798:37;16681:161;:::o;16848:366::-;16990:3;17011:67;17075:2;17070:3;17011:67;:::i;:::-;17004:74;;17087:93;17176:3;17087:93;:::i;:::-;17205:2;17200:3;17196:12;17189:19;;16848:366;;;:::o;17220:419::-;17386:4;17424:2;17413:9;17409:18;17401:26;;17473:9;17467:4;17463:20;17459:1;17448:9;17444:17;17437:47;17501:131;17627:4;17501:131;:::i;:::-;17493:139;;17220:419;;;:::o;17645:410::-;17685:7;17708:20;17726:1;17708:20;:::i;:::-;17703:25;;17742:20;17760:1;17742:20;:::i;:::-;17737:25;;17797:1;17794;17790:9;17819:30;17837:11;17819:30;:::i;:::-;17808:41;;17998:1;17989:7;17985:15;17982:1;17979:22;17959:1;17952:9;17932:83;17909:139;;18028:18;;:::i;:::-;17909:139;17693:362;17645:410;;;;:::o;18061:180::-;18109:77;18106:1;18099:88;18206:4;18203:1;18196:15;18230:4;18227:1;18220:15;18247:185;18287:1;18304:20;18322:1;18304:20;:::i;:::-;18299:25;;18338:20;18356:1;18338:20;:::i;:::-;18333:25;;18377:1;18367:35;;18382:18;;:::i;:::-;18367:35;18424:1;18421;18417:9;18412:14;;18247:185;;;;:::o

Swarm Source

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