ETH Price: $3,805.88 (-1.12%)

Token

ERC-20: SunDumGai (DumGai)
 

Overview

Max Total Supply

1,000,000,000 DumGai

Holders

133

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.00000000008053052 DumGai

Value
$0.00
0x66ad704a2897c9ff257bbdcf099dba98117a1bdf
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:
SunDumGaiToken

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-10-22
*/

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

/**
 * @dev Interface of the ERC-20 standard as defined in the ERC.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

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

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

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

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

/**
 * @dev Interface for the optional metadata functions from the ERC-20 standard.
 */
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);
}

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

    function _contextSuffixLength() internal view virtual returns (uint256) {
        return 0;
    }
}

/**
 * @dev Standard ERC-20 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.
 */
interface IERC20Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC20InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC20InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     * @param allowance Amount of tokens a `spender` is allowed to operate with.
     * @param needed Minimum amount required to perform a transfer.
     */
    error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC20InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `spender` to be approved. Used in approvals.
     * @param spender Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC20InvalidSpender(address spender);
}

/**
 * @dev Standard ERC-721 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.
 */
interface IERC721Errors {
    /**
     * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.
     * Used in balance queries.
     * @param owner Address of the current owner of a token.
     */
    error ERC721InvalidOwner(address owner);

    /**
     * @dev Indicates a `tokenId` whose `owner` is the zero address.
     * @param tokenId Identifier number of a token.
     */
    error ERC721NonexistentToken(uint256 tokenId);

    /**
     * @dev Indicates an error related to the ownership over a particular token. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param tokenId Identifier number of a token.
     * @param owner Address of the current owner of a token.
     */
    error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC721InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC721InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param tokenId Identifier number of a token.
     */
    error ERC721InsufficientApproval(address operator, uint256 tokenId);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC721InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC721InvalidOperator(address operator);
}

/**
 * @dev Standard ERC-1155 Errors
 * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.
 */
interface IERC1155Errors {
    /**
     * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     * @param balance Current balance for the interacting account.
     * @param needed Minimum amount required to perform a transfer.
     * @param tokenId Identifier number of a token.
     */
    error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);

    /**
     * @dev Indicates a failure with the token `sender`. Used in transfers.
     * @param sender Address whose tokens are being transferred.
     */
    error ERC1155InvalidSender(address sender);

    /**
     * @dev Indicates a failure with the token `receiver`. Used in transfers.
     * @param receiver Address to which tokens are being transferred.
     */
    error ERC1155InvalidReceiver(address receiver);

    /**
     * @dev Indicates a failure with the `operator`’s approval. Used in transfers.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     * @param owner Address of the current owner of a token.
     */
    error ERC1155MissingApprovalForAll(address operator, address owner);

    /**
     * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.
     * @param approver Address initiating an approval operation.
     */
    error ERC1155InvalidApprover(address approver);

    /**
     * @dev Indicates a failure with the `operator` to be approved. Used in approvals.
     * @param operator Address that may be allowed to operate on tokens without being their owner.
     */
    error ERC1155InvalidOperator(address operator);

    /**
     * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.
     * Used in batch transfers.
     * @param idsLength Length of the array of token identifiers
     * @param valuesLength Length of the array of token amounts
     */
    error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);
}

/**
 * @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.
 *
 * The initial owner is set to the address provided by the deployer. 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;

    /**
     * @dev The caller account is not authorized to perform an operation.
     */
    error OwnableUnauthorizedAccount(address account);

    /**
     * @dev The owner is not a valid owner account. (eg. `address(0)`)
     */
    error OwnableInvalidOwner(address owner);

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

    /**
     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.
     */
    constructor(address initialOwner) {
        if (initialOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(initialOwner);
    }

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

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        if (owner() != _msgSender()) {
            revert OwnableUnauthorizedAccount(_msgSender());
        }
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby disabling any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        if (newOwner == address(0)) {
            revert OwnableInvalidOwner(address(0));
        }
        _transferOwnership(newOwner);
    }

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

/**
 * @dev 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}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * The default value of {decimals} is 18. To change this, you should override
 * this function so it returns a different value.
 *
 * 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 ERC-20
 * applications.
 */
abstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {
    mapping(address account => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * 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 returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual 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 default value returned by this function, unless
     * it's 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 returns (uint8) {
        return 18;
    }

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

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

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

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

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

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

    /**
     * @dev Moves a `value` amount of tokens from `from` to `to`.
     *
     * This internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _transfer(address from, address to, uint256 value) internal {
        if (from == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (to == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(from, to, value);
    }

    /**
     * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`
     * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding
     * this function.
     *
     * Emits a {Transfer} event.
     */
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ERC20InsufficientBalance(from, fromBalance, value);
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }

    /**
     * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).
     * Relies on the `_update` mechanism
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead.
     */
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        _update(address(0), account, value);
    }

    /**
     * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.
     * Relies on the `_update` mechanism.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * NOTE: This function is not virtual, {_update} should be overridden instead
     */
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        _update(account, address(0), value);
    }

    /**
     * @dev Sets `value` 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.
     *
     * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        _approve(owner, spender, value, true);
    }

    /**
     * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.
     *
     * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by
     * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any
     * `Approval` event during `transferFrom` operations.
     *
     * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to
     * true using the following override:
     *
     * ```solidity
     * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {
     *     super._approve(owner, spender, value, true);
     * }
     * ```
     *
     * Requirements are the same as {_approve}.
     */
    function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }
        _allowances[owner][spender] = value;
        if (emitEvent) {
            emit Approval(owner, spender, value);
        }
    }

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

contract SunDumGaiToken is ERC20, Ownable {

    constructor () ERC20("SunDumGai", "DumGai") Ownable(msg.sender) {
        super._mint(msg.sender, 1000000000000000000000000000);
    }

    function multiTransfer(address[] memory recipients, uint256[] memory amounts) external {
        require(recipients.length == amounts.length, "recipients and amounts are not the same length");

        for (uint256 i; i < recipients.length; i++ ) {
            super.transfer(recipients[i], amounts[i]);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"allowance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientAllowance","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"needed","type":"uint256"}],"name":"ERC20InsufficientBalance","type":"error"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","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"}]

608060405234801561000f575f80fd5b50336040518060400160405280600981526020017f53756e44756d47616900000000000000000000000000000000000000000000008152506040518060400160405280600681526020017f44756d4761690000000000000000000000000000000000000000000000000000815250816003908161008c91906106db565b50806004908161009c91906106db565b5050505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361010f575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161010691906107e9565b60405180910390fd5b61011e8161014060201b60201c565b5061013b336b033b2e3c9fd0803ce800000061020360201b60201c565b6108bf565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610273575f6040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161026a91906107e9565b60405180910390fd5b6102845f838361028860201b60201c565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036102d8578060025f8282546102cc919061082f565b925050819055506103a6565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610361578381836040517fe450d38c00000000000000000000000000000000000000000000000000000000815260040161035893929190610871565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036103ed578060025f8282540392505081905550610437565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161049491906108a6565b60405180910390a3505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061051c57607f821691505b60208210810361052f5761052e6104d8565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026105917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610556565b61059b8683610556565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6105df6105da6105d5846105b3565b6105bc565b6105b3565b9050919050565b5f819050919050565b6105f8836105c5565b61060c610604826105e6565b848454610562565b825550505050565b5f90565b610620610614565b61062b8184846105ef565b505050565b5b8181101561064e576106435f82610618565b600181019050610631565b5050565b601f8211156106935761066481610535565b61066d84610547565b8101602085101561067c578190505b61069061068885610547565b830182610630565b50505b505050565b5f82821c905092915050565b5f6106b35f1984600802610698565b1980831691505092915050565b5f6106cb83836106a4565b9150826002028217905092915050565b6106e4826104a1565b67ffffffffffffffff8111156106fd576106fc6104ab565b5b6107078254610505565b610712828285610652565b5f60209050601f831160018114610743575f8415610731578287015190505b61073b85826106c0565b8655506107a2565b601f19841661075186610535565b5f5b8281101561077857848901518255600182019150602085019450602081019050610753565b868310156107955784890151610791601f8916826106a4565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107d3826107aa565b9050919050565b6107e3816107c9565b82525050565b5f6020820190506107fc5f8301846107da565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610839826105b3565b9150610844836105b3565b925082820190508082111561085c5761085b610802565b5b92915050565b61086b816105b3565b82525050565b5f6060820190506108845f8301866107da565b6108916020830185610862565b61089e6040830184610862565b949350505050565b5f6020820190506108b95f830184610862565b92915050565b611464806108cc5f395ff3fe608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b41146101ff578063a9059cbb1461021d578063dd62ed3e1461024d578063f2fde38b1461027d576100cd565b806370a08231146101a7578063715018a6146101d75780638da5cb5b146101e1576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f5780631e89d5451461013d57806323b872dd14610159578063313ce56714610189575b5f80fd5b6100d9610299565b6040516100e69190610d9f565b60405180910390f35b61010960048036038101906101049190610e5d565b610329565b6040516101169190610eb5565b60405180910390f35b61012761034b565b6040516101349190610edd565b60405180910390f35b610157600480360381019061015291906110f6565b610354565b005b610173600480360381019061016e919061116c565b6103f4565b6040516101809190610eb5565b60405180910390f35b610191610422565b60405161019e91906111d7565b60405180910390f35b6101c160048036038101906101bc91906111f0565b61042a565b6040516101ce9190610edd565b60405180910390f35b6101df61046f565b005b6101e9610482565b6040516101f6919061122a565b60405180910390f35b6102076104aa565b6040516102149190610d9f565b60405180910390f35b61023760048036038101906102329190610e5d565b61053a565b6040516102449190610eb5565b60405180910390f35b61026760048036038101906102629190611243565b61055c565b6040516102749190610edd565b60405180910390f35b610297600480360381019061029291906111f0565b6105de565b005b6060600380546102a8906112ae565b80601f01602080910402602001604051908101604052809291908181526020018280546102d4906112ae565b801561031f5780601f106102f65761010080835404028352916020019161031f565b820191905f5260205f20905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b5f80610333610662565b9050610340818585610669565b600191505092915050565b5f600254905090565b8051825114610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038f9061134e565b60405180910390fd5b5f5b82518110156103ef576103e18382815181106103b9576103b861136c565b5b60200260200101518383815181106103d4576103d361136c565b5b602002602001015161053a565b50808060010191505061039a565b505050565b5f806103fe610662565b905061040b85828561067b565b61041685858561070d565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104776107fd565b6104805f610884565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104b9906112ae565b80601f01602080910402602001604051908101604052809291908181526020018280546104e5906112ae565b80156105305780601f1061050757610100808354040283529160200191610530565b820191905f5260205f20905b81548152906001019060200180831161051357829003601f168201915b5050505050905090565b5f80610544610662565b905061055181858561070d565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105e66107fd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610656575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161064d919061122a565b60405180910390fd5b61065f81610884565b50565b5f33905090565b6106768383836001610947565b505050565b5f610686848461055c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461070757818110156106f8578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106ef93929190611399565b60405180910390fd5b61070684848484035f610947565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361077d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610774919061122a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107ed575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107e4919061122a565b60405180910390fd5b6107f8838383610b16565b505050565b610805610662565b73ffffffffffffffffffffffffffffffffffffffff16610823610482565b73ffffffffffffffffffffffffffffffffffffffff161461088257610846610662565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610879919061122a565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109b7575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016109ae919061122a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a27575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a1e919061122a565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b10578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b079190610edd565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b66578060025f828254610b5a91906113fb565b92505081905550610c34565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610bef578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610be693929190611399565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c7b578060025f8282540392505081905550610cc5565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d229190610edd565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610d7182610d2f565b610d7b8185610d39565b9350610d8b818560208601610d49565b610d9481610d57565b840191505092915050565b5f6020820190508181035f830152610db78184610d67565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610df982610dd0565b9050919050565b610e0981610def565b8114610e13575f80fd5b50565b5f81359050610e2481610e00565b92915050565b5f819050919050565b610e3c81610e2a565b8114610e46575f80fd5b50565b5f81359050610e5781610e33565b92915050565b5f8060408385031215610e7357610e72610dc8565b5b5f610e8085828601610e16565b9250506020610e9185828601610e49565b9150509250929050565b5f8115159050919050565b610eaf81610e9b565b82525050565b5f602082019050610ec85f830184610ea6565b92915050565b610ed781610e2a565b82525050565b5f602082019050610ef05f830184610ece565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610f3082610d57565b810181811067ffffffffffffffff82111715610f4f57610f4e610efa565b5b80604052505050565b5f610f61610dbf565b9050610f6d8282610f27565b919050565b5f67ffffffffffffffff821115610f8c57610f8b610efa565b5b602082029050602081019050919050565b5f80fd5b5f610fb3610fae84610f72565b610f58565b90508083825260208201905060208402830185811115610fd657610fd5610f9d565b5b835b81811015610fff5780610feb8882610e16565b845260208401935050602081019050610fd8565b5050509392505050565b5f82601f83011261101d5761101c610ef6565b5b813561102d848260208601610fa1565b91505092915050565b5f67ffffffffffffffff8211156110505761104f610efa565b5b602082029050602081019050919050565b5f61107361106e84611036565b610f58565b9050808382526020820190506020840283018581111561109657611095610f9d565b5b835b818110156110bf57806110ab8882610e49565b845260208401935050602081019050611098565b5050509392505050565b5f82601f8301126110dd576110dc610ef6565b5b81356110ed848260208601611061565b91505092915050565b5f806040838503121561110c5761110b610dc8565b5b5f83013567ffffffffffffffff81111561112957611128610dcc565b5b61113585828601611009565b925050602083013567ffffffffffffffff81111561115657611155610dcc565b5b611162858286016110c9565b9150509250929050565b5f805f6060848603121561118357611182610dc8565b5b5f61119086828701610e16565b93505060206111a186828701610e16565b92505060406111b286828701610e49565b9150509250925092565b5f60ff82169050919050565b6111d1816111bc565b82525050565b5f6020820190506111ea5f8301846111c8565b92915050565b5f6020828403121561120557611204610dc8565b5b5f61121284828501610e16565b91505092915050565b61122481610def565b82525050565b5f60208201905061123d5f83018461121b565b92915050565b5f806040838503121561125957611258610dc8565b5b5f61126685828601610e16565b925050602061127785828601610e16565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806112c557607f821691505b6020821081036112d8576112d7611281565b5b50919050565b7f726563697069656e747320616e6420616d6f756e747320617265206e6f7420745f8201527f68652073616d65206c656e677468000000000000000000000000000000000000602082015250565b5f611338602e83610d39565b9150611343826112de565b604082019050919050565b5f6020820190508181035f8301526113658161132c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6060820190506113ac5f83018661121b565b6113b96020830185610ece565b6113c66040830184610ece565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61140582610e2a565b915061141083610e2a565b9250828201905080821115611428576114276113ce565b5b9291505056fea26469706673582212207402f0d78d3b33f224ab3aa981570638ffc0d0c959441585cbf58d352c5137d564736f6c634300081a0033

Deployed Bytecode

0x608060405234801561000f575f80fd5b50600436106100cd575f3560e01c806370a082311161008a57806395d89b411161006457806395d89b41146101ff578063a9059cbb1461021d578063dd62ed3e1461024d578063f2fde38b1461027d576100cd565b806370a08231146101a7578063715018a6146101d75780638da5cb5b146101e1576100cd565b806306fdde03146100d1578063095ea7b3146100ef57806318160ddd1461011f5780631e89d5451461013d57806323b872dd14610159578063313ce56714610189575b5f80fd5b6100d9610299565b6040516100e69190610d9f565b60405180910390f35b61010960048036038101906101049190610e5d565b610329565b6040516101169190610eb5565b60405180910390f35b61012761034b565b6040516101349190610edd565b60405180910390f35b610157600480360381019061015291906110f6565b610354565b005b610173600480360381019061016e919061116c565b6103f4565b6040516101809190610eb5565b60405180910390f35b610191610422565b60405161019e91906111d7565b60405180910390f35b6101c160048036038101906101bc91906111f0565b61042a565b6040516101ce9190610edd565b60405180910390f35b6101df61046f565b005b6101e9610482565b6040516101f6919061122a565b60405180910390f35b6102076104aa565b6040516102149190610d9f565b60405180910390f35b61023760048036038101906102329190610e5d565b61053a565b6040516102449190610eb5565b60405180910390f35b61026760048036038101906102629190611243565b61055c565b6040516102749190610edd565b60405180910390f35b610297600480360381019061029291906111f0565b6105de565b005b6060600380546102a8906112ae565b80601f01602080910402602001604051908101604052809291908181526020018280546102d4906112ae565b801561031f5780601f106102f65761010080835404028352916020019161031f565b820191905f5260205f20905b81548152906001019060200180831161030257829003601f168201915b5050505050905090565b5f80610333610662565b9050610340818585610669565b600191505092915050565b5f600254905090565b8051825114610398576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161038f9061134e565b60405180910390fd5b5f5b82518110156103ef576103e18382815181106103b9576103b861136c565b5b60200260200101518383815181106103d4576103d361136c565b5b602002602001015161053a565b50808060010191505061039a565b505050565b5f806103fe610662565b905061040b85828561067b565b61041685858561070d565b60019150509392505050565b5f6012905090565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104776107fd565b6104805f610884565b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104b9906112ae565b80601f01602080910402602001604051908101604052809291908181526020018280546104e5906112ae565b80156105305780601f1061050757610100808354040283529160200191610530565b820191905f5260205f20905b81548152906001019060200180831161051357829003601f168201915b5050505050905090565b5f80610544610662565b905061055181858561070d565b600191505092915050565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6105e66107fd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610656575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161064d919061122a565b60405180910390fd5b61065f81610884565b50565b5f33905090565b6106768383836001610947565b505050565b5f610686848461055c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461070757818110156106f8578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016106ef93929190611399565b60405180910390fd5b61070684848484035f610947565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361077d575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610774919061122a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036107ed575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016107e4919061122a565b60405180910390fd5b6107f8838383610b16565b505050565b610805610662565b73ffffffffffffffffffffffffffffffffffffffff16610823610482565b73ffffffffffffffffffffffffffffffffffffffff161461088257610846610662565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610879919061122a565b60405180910390fd5b565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036109b7575f6040517fe602df050000000000000000000000000000000000000000000000000000000081526004016109ae919061122a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a27575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610a1e919061122a565b60405180910390fd5b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610b10578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b079190610edd565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b66578060025f828254610b5a91906113fb565b92505081905550610c34565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610bef578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610be693929190611399565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c7b578060025f8282540392505081905550610cc5565b805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610d229190610edd565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f610d7182610d2f565b610d7b8185610d39565b9350610d8b818560208601610d49565b610d9481610d57565b840191505092915050565b5f6020820190508181035f830152610db78184610d67565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610df982610dd0565b9050919050565b610e0981610def565b8114610e13575f80fd5b50565b5f81359050610e2481610e00565b92915050565b5f819050919050565b610e3c81610e2a565b8114610e46575f80fd5b50565b5f81359050610e5781610e33565b92915050565b5f8060408385031215610e7357610e72610dc8565b5b5f610e8085828601610e16565b9250506020610e9185828601610e49565b9150509250929050565b5f8115159050919050565b610eaf81610e9b565b82525050565b5f602082019050610ec85f830184610ea6565b92915050565b610ed781610e2a565b82525050565b5f602082019050610ef05f830184610ece565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b610f3082610d57565b810181811067ffffffffffffffff82111715610f4f57610f4e610efa565b5b80604052505050565b5f610f61610dbf565b9050610f6d8282610f27565b919050565b5f67ffffffffffffffff821115610f8c57610f8b610efa565b5b602082029050602081019050919050565b5f80fd5b5f610fb3610fae84610f72565b610f58565b90508083825260208201905060208402830185811115610fd657610fd5610f9d565b5b835b81811015610fff5780610feb8882610e16565b845260208401935050602081019050610fd8565b5050509392505050565b5f82601f83011261101d5761101c610ef6565b5b813561102d848260208601610fa1565b91505092915050565b5f67ffffffffffffffff8211156110505761104f610efa565b5b602082029050602081019050919050565b5f61107361106e84611036565b610f58565b9050808382526020820190506020840283018581111561109657611095610f9d565b5b835b818110156110bf57806110ab8882610e49565b845260208401935050602081019050611098565b5050509392505050565b5f82601f8301126110dd576110dc610ef6565b5b81356110ed848260208601611061565b91505092915050565b5f806040838503121561110c5761110b610dc8565b5b5f83013567ffffffffffffffff81111561112957611128610dcc565b5b61113585828601611009565b925050602083013567ffffffffffffffff81111561115657611155610dcc565b5b611162858286016110c9565b9150509250929050565b5f805f6060848603121561118357611182610dc8565b5b5f61119086828701610e16565b93505060206111a186828701610e16565b92505060406111b286828701610e49565b9150509250925092565b5f60ff82169050919050565b6111d1816111bc565b82525050565b5f6020820190506111ea5f8301846111c8565b92915050565b5f6020828403121561120557611204610dc8565b5b5f61121284828501610e16565b91505092915050565b61122481610def565b82525050565b5f60208201905061123d5f83018461121b565b92915050565b5f806040838503121561125957611258610dc8565b5b5f61126685828601610e16565b925050602061127785828601610e16565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806112c557607f821691505b6020821081036112d8576112d7611281565b5b50919050565b7f726563697069656e747320616e6420616d6f756e747320617265206e6f7420745f8201527f68652073616d65206c656e677468000000000000000000000000000000000000602082015250565b5f611338602e83610d39565b9150611343826112de565b604082019050919050565b5f6020820190508181035f8301526113658161132c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6060820190506113ac5f83018661121b565b6113b96020830185610ece565b6113c66040830184610ece565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61140582610e2a565b915061141083610e2a565b9250828201905080821115611428576114276113ce565b5b9291505056fea26469706673582212207402f0d78d3b33f224ab3aa981570638ffc0d0c959441585cbf58d352c5137d564736f6c634300081a0033

Deployed Bytecode Sourcemap

24593:523:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15215:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17508:190;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16317:99;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24788:325;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18308:249;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16168:84;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16479:118;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12906:103;;;:::i;:::-;;12231:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15425:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16802:182;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17047:142;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13164:220;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15215:91;15260:13;15293:5;15286:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15215:91;:::o;17508:190::-;17581:4;17598:13;17614:12;:10;:12::i;:::-;17598:28;;17637:31;17646:5;17653:7;17662:5;17637:8;:31::i;:::-;17686:4;17679:11;;;17508:190;;;;:::o;16317:99::-;16369:7;16396:12;;16389:19;;16317:99;:::o;24788:325::-;24915:7;:14;24894:10;:17;:35;24886:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;24998:9;24993:113;25013:10;:17;25009:1;:21;24993:113;;;25053:41;25068:10;25079:1;25068:13;;;;;;;;:::i;:::-;;;;;;;;25083:7;25091:1;25083:10;;;;;;;;:::i;:::-;;;;;;;;25053:14;:41::i;:::-;;25032:3;;;;;;;24993:113;;;;24788:325;;:::o;18308:249::-;18395:4;18412:15;18430:12;:10;:12::i;:::-;18412:30;;18453:37;18469:4;18475:7;18484:5;18453:15;:37::i;:::-;18501:26;18511:4;18517:2;18521:5;18501:9;:26::i;:::-;18545:4;18538:11;;;18308:249;;;;;:::o;16168:84::-;16217:5;16242:2;16235:9;;16168:84;:::o;16479:118::-;16544:7;16571:9;:18;16581:7;16571:18;;;;;;;;;;;;;;;;16564:25;;16479:118;;;:::o;12906:103::-;12117:13;:11;:13::i;:::-;12971:30:::1;12998:1;12971:18;:30::i;:::-;12906:103::o:0;12231:87::-;12277:7;12304:6;;;;;;;;;;;12297:13;;12231:87;:::o;15425:95::-;15472:13;15505:7;15498:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15425:95;:::o;16802:182::-;16871:4;16888:13;16904:12;:10;:12::i;:::-;16888:28;;16927:27;16937:5;16944:2;16948:5;16927:9;:27::i;:::-;16972:4;16965:11;;;16802:182;;;;:::o;17047:142::-;17127:7;17154:11;:18;17166:5;17154:18;;;;;;;;;;;;;;;:27;17173:7;17154:27;;;;;;;;;;;;;;;;17147:34;;17047:142;;;;:::o;13164:220::-;12117:13;:11;:13::i;:::-;13269:1:::1;13249:22;;:8;:22;;::::0;13245:93:::1;;13323:1;13295:31;;;;;;;;;;;:::i;:::-;;;;;;;;13245:93;13348:28;13367:8;13348:18;:28::i;:::-;13164:220:::0;:::o;3840:98::-;3893:7;3920:10;3913:17;;3840:98;:::o;22367:130::-;22452:37;22461:5;22468:7;22477:5;22484:4;22452:8;:37::i;:::-;22367:130;;;:::o;24099:487::-;24199:24;24226:25;24236:5;24243:7;24226:9;:25::i;:::-;24199:52;;24286:17;24266:16;:37;24262:317;;24343:5;24324:16;:24;24320:132;;;24403:7;24412:16;24430:5;24376:60;;;;;;;;;;;;;:::i;:::-;;;;;;;;24320:132;24495:57;24504:5;24511:7;24539:5;24520:16;:24;24546:5;24495:8;:57::i;:::-;24262:317;24188:398;24099:487;;;:::o;18942:308::-;19042:1;19026:18;;:4;:18;;;19022:88;;19095:1;19068:30;;;;;;;;;;;:::i;:::-;;;;;;;;19022:88;19138:1;19124:16;;:2;:16;;;19120:88;;19193:1;19164:32;;;;;;;;;;;:::i;:::-;;;;;;;;19120:88;19218:24;19226:4;19232:2;19236:5;19218:7;:24::i;:::-;18942:308;;;:::o;12396:166::-;12467:12;:10;:12::i;:::-;12456:23;;:7;:5;:7::i;:::-;:23;;;12452:103;;12530:12;:10;:12::i;:::-;12503:40;;;;;;;;;;;:::i;:::-;;;;;;;;12452:103;12396:166::o;13544:191::-;13618:16;13637:6;;;;;;;;;;;13618:25;;13663:8;13654:6;;:17;;;;;;;;;;;;;;;;;;13718:8;13687:40;;13708:8;13687:40;;;;;;;;;;;;13607:128;13544:191;:::o;23364:443::-;23494:1;23477:19;;:5;:19;;;23473:91;;23549:1;23520:32;;;;;;;;;;;:::i;:::-;;;;;;;;23473:91;23597:1;23578:21;;:7;:21;;;23574:92;;23651:1;23623:31;;;;;;;;;;;:::i;:::-;;;;;;;;23574:92;23706:5;23676:11;:18;23688:5;23676:18;;;;;;;;;;;;;;;:27;23695:7;23676:27;;;;;;;;;;;;;;;:35;;;;23726:9;23722:78;;;23773:7;23757:31;;23766:5;23757:31;;;23782:5;23757:31;;;;;;:::i;:::-;;;;;;;;23722:78;23364:443;;;;:::o;19574:1135::-;19680:1;19664:18;;:4;:18;;;19660:552;;19818:5;19802:12;;:21;;;;;;;:::i;:::-;;;;;;;;19660:552;;;19856:19;19878:9;:15;19888:4;19878:15;;;;;;;;;;;;;;;;19856:37;;19926:5;19912:11;:19;19908:117;;;19984:4;19990:11;20003:5;19959:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;19908:117;20180:5;20166:11;:19;20148:9;:15;20158:4;20148:15;;;;;;;;;;;;;;;:37;;;;19841:371;19660:552;20242:1;20228:16;;:2;:16;;;20224:435;;20410:5;20394:12;;:21;;;;;;;;;;;20224:435;;;20627:5;20610:9;:13;20620:2;20610:13;;;;;;;;;;;;;;;;:22;;;;;;;;;;;20224:435;20691:2;20676:25;;20685:4;20676:25;;;20695:5;20676:25;;;;;;:::i;:::-;;;;;;;;19574:1135;;;:::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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:117::-;3800:1;3797;3790:12;3814:180;3862:77;3859:1;3852:88;3959:4;3956:1;3949:15;3983:4;3980:1;3973:15;4000:281;4083:27;4105:4;4083:27;:::i;:::-;4075:6;4071:40;4213:6;4201:10;4198:22;4177:18;4165:10;4162:34;4159:62;4156:88;;;4224:18;;:::i;:::-;4156:88;4264:10;4260:2;4253:22;4043:238;4000:281;;:::o;4287:129::-;4321:6;4348:20;;:::i;:::-;4338:30;;4377:33;4405:4;4397:6;4377:33;:::i;:::-;4287:129;;;:::o;4422:311::-;4499:4;4589:18;4581:6;4578:30;4575:56;;;4611:18;;:::i;:::-;4575:56;4661:4;4653:6;4649:17;4641:25;;4721:4;4715;4711:15;4703:23;;4422:311;;;:::o;4739:117::-;4848:1;4845;4838:12;4879:710;4975:5;5000:81;5016:64;5073:6;5016:64;:::i;:::-;5000:81;:::i;:::-;4991:90;;5101:5;5130:6;5123:5;5116:21;5164:4;5157:5;5153:16;5146:23;;5217:4;5209:6;5205:17;5197:6;5193:30;5246:3;5238:6;5235:15;5232:122;;;5265:79;;:::i;:::-;5232:122;5380:6;5363:220;5397:6;5392:3;5389:15;5363:220;;;5472:3;5501:37;5534:3;5522:10;5501:37;:::i;:::-;5496:3;5489:50;5568:4;5563:3;5559:14;5552:21;;5439:144;5423:4;5418:3;5414:14;5407:21;;5363:220;;;5367:21;4981:608;;4879:710;;;;;:::o;5612:370::-;5683:5;5732:3;5725:4;5717:6;5713:17;5709:27;5699:122;;5740:79;;:::i;:::-;5699:122;5857:6;5844:20;5882:94;5972:3;5964:6;5957:4;5949:6;5945:17;5882:94;:::i;:::-;5873:103;;5689:293;5612:370;;;;:::o;5988:311::-;6065:4;6155:18;6147:6;6144:30;6141:56;;;6177:18;;:::i;:::-;6141:56;6227:4;6219:6;6215:17;6207:25;;6287:4;6281;6277:15;6269:23;;5988:311;;;:::o;6322:710::-;6418:5;6443:81;6459:64;6516:6;6459:64;:::i;:::-;6443:81;:::i;:::-;6434:90;;6544:5;6573:6;6566:5;6559:21;6607:4;6600:5;6596:16;6589:23;;6660:4;6652:6;6648:17;6640:6;6636:30;6689:3;6681:6;6678:15;6675:122;;;6708:79;;:::i;:::-;6675:122;6823:6;6806:220;6840:6;6835:3;6832:15;6806:220;;;6915:3;6944:37;6977:3;6965:10;6944:37;:::i;:::-;6939:3;6932:50;7011:4;7006:3;7002:14;6995:21;;6882:144;6866:4;6861:3;6857:14;6850:21;;6806:220;;;6810:21;6424:608;;6322:710;;;;;:::o;7055:370::-;7126:5;7175:3;7168:4;7160:6;7156:17;7152:27;7142:122;;7183:79;;:::i;:::-;7142:122;7300:6;7287:20;7325:94;7415:3;7407:6;7400:4;7392:6;7388:17;7325:94;:::i;:::-;7316:103;;7132:293;7055:370;;;;:::o;7431:894::-;7549:6;7557;7606:2;7594:9;7585:7;7581:23;7577:32;7574:119;;;7612:79;;:::i;:::-;7574:119;7760:1;7749:9;7745:17;7732:31;7790:18;7782:6;7779:30;7776:117;;;7812:79;;:::i;:::-;7776:117;7917:78;7987:7;7978:6;7967:9;7963:22;7917:78;:::i;:::-;7907:88;;7703:302;8072:2;8061:9;8057:18;8044:32;8103:18;8095:6;8092:30;8089:117;;;8125:79;;:::i;:::-;8089:117;8230:78;8300:7;8291:6;8280:9;8276:22;8230:78;:::i;:::-;8220:88;;8015:303;7431:894;;;;;:::o;8331:619::-;8408:6;8416;8424;8473:2;8461:9;8452:7;8448:23;8444:32;8441:119;;;8479:79;;:::i;:::-;8441:119;8599:1;8624:53;8669:7;8660:6;8649:9;8645:22;8624:53;:::i;:::-;8614:63;;8570:117;8726:2;8752:53;8797:7;8788:6;8777:9;8773:22;8752:53;:::i;:::-;8742:63;;8697:118;8854:2;8880:53;8925:7;8916:6;8905:9;8901:22;8880:53;:::i;:::-;8870:63;;8825:118;8331:619;;;;;:::o;8956:86::-;8991:7;9031:4;9024:5;9020:16;9009:27;;8956:86;;;:::o;9048:112::-;9131:22;9147:5;9131:22;:::i;:::-;9126:3;9119:35;9048:112;;:::o;9166:214::-;9255:4;9293:2;9282:9;9278:18;9270:26;;9306:67;9370:1;9359:9;9355:17;9346:6;9306:67;:::i;:::-;9166:214;;;;:::o;9386:329::-;9445:6;9494:2;9482:9;9473:7;9469:23;9465:32;9462:119;;;9500:79;;:::i;:::-;9462:119;9620:1;9645:53;9690:7;9681:6;9670:9;9666:22;9645:53;:::i;:::-;9635:63;;9591:117;9386:329;;;;:::o;9721:118::-;9808:24;9826:5;9808:24;:::i;:::-;9803:3;9796:37;9721:118;;:::o;9845:222::-;9938:4;9976:2;9965:9;9961:18;9953:26;;9989:71;10057:1;10046:9;10042:17;10033:6;9989:71;:::i;:::-;9845:222;;;;:::o;10073:474::-;10141:6;10149;10198:2;10186:9;10177:7;10173:23;10169:32;10166:119;;;10204:79;;:::i;:::-;10166:119;10324:1;10349:53;10394:7;10385:6;10374:9;10370:22;10349:53;:::i;:::-;10339:63;;10295:117;10451:2;10477:53;10522:7;10513:6;10502:9;10498:22;10477:53;:::i;:::-;10467:63;;10422:118;10073:474;;;;;:::o;10553:180::-;10601:77;10598:1;10591:88;10698:4;10695:1;10688:15;10722:4;10719:1;10712:15;10739:320;10783:6;10820:1;10814:4;10810:12;10800:22;;10867:1;10861:4;10857:12;10888:18;10878:81;;10944:4;10936:6;10932:17;10922:27;;10878:81;11006:2;10998:6;10995:14;10975:18;10972:38;10969:84;;11025:18;;:::i;:::-;10969:84;10790:269;10739:320;;;:::o;11065:233::-;11205:34;11201:1;11193:6;11189:14;11182:58;11274:16;11269:2;11261:6;11257:15;11250:41;11065:233;:::o;11304:366::-;11446:3;11467:67;11531:2;11526:3;11467:67;:::i;:::-;11460:74;;11543:93;11632:3;11543:93;:::i;:::-;11661:2;11656:3;11652:12;11645:19;;11304:366;;;:::o;11676:419::-;11842:4;11880:2;11869:9;11865:18;11857:26;;11929:9;11923:4;11919:20;11915:1;11904:9;11900:17;11893:47;11957:131;12083:4;11957:131;:::i;:::-;11949:139;;11676:419;;;:::o;12101:180::-;12149:77;12146:1;12139:88;12246:4;12243:1;12236:15;12270:4;12267:1;12260:15;12287:442;12436:4;12474:2;12463:9;12459:18;12451:26;;12487:71;12555:1;12544:9;12540:17;12531:6;12487:71;:::i;:::-;12568:72;12636:2;12625:9;12621:18;12612:6;12568:72;:::i;:::-;12650;12718:2;12707:9;12703:18;12694:6;12650:72;:::i;:::-;12287:442;;;;;;:::o;12735:180::-;12783:77;12780:1;12773:88;12880:4;12877:1;12870:15;12904:4;12901:1;12894:15;12921:191;12961:3;12980:20;12998:1;12980:20;:::i;:::-;12975:25;;13014:20;13032:1;13014:20;:::i;:::-;13009:25;;13057:1;13054;13050:9;13043:16;;13078:3;13075:1;13072:10;13069:36;;;13085:18;;:::i;:::-;13069:36;12921:191;;;;:::o

Swarm Source

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