ETH Price: $3,669.72 (+2.28%)

Token

Kuma Inu (KUMA)
 

Overview

Max Total Supply

1,000,000,000,000,000 KUMA

Holders

23,762 ( 0.008%)

Market

Price

$0.00 @ 0.000000 ETH (+4.22%)

Onchain Market Cap

$3,991,000.00

Circulating Supply Market Cap

$1,543,147.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
700,153,698.723657039310874411 KUMA

Value
$2.79 ( ~0.000760275211997195 Eth) [0.0001%]
0xabe13217d388e5b5225f6dd872a1b904b786734f
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Decentralized Meme Tokens that grew into a vibrant ecosystem.

Market

Volume (24H):$11,406.75
Market Capitalization:$1,543,147.00
Circulating Supply:386,915,144,516,946.00 KUMA
Market Data Source: Coinmarketcap

# Exchange Pair Price  24H Volume % Volume
1
Uniswap V2 (Ethereum)
0X48C276E8D03813224BB1E55F953ADB6D02FD3E02-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2$0.00
0.0000000 Eth
$8,240.36
2,078,385,234,864.410 0X48C276E8D03813224BB1E55F953ADB6D02FD3E02
71.9912%
2
Gate.io
KUMA-USDT$0.00
0.0000000 Eth
$3,164.62
808,612,192,730.000 KUMA
28.0088%

Contract Source Code Verified (Exact Match)

Contract Name:
KumaTokenV2

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2021-06-14
*/

/**
 *Submitted for verification at Etherscan.io on 2021-05-12
*/

/**
 * Summary: Kuma Token V2
 * Website: https://kumatoken.com
 * Telegram: https://t.me/KumaInuOfficial
 * Twitter: https://twitter.com/KumaInuOfficial
*/

// File: node_modules\@openzeppelin\contracts\token\ERC20\IERC20.sol

// SPDX-License-Identifier: MIT

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: node_modules\@openzeppelin\contracts\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: node_modules\@openzeppelin\contracts\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) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

/**
 * @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 {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), 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() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

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

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


// File: @openzeppelin\contracts\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 guidelines: functions revert instead
 * of 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 KumaTokenV2 is Context, IERC20, IERC20Metadata, Ownable {
    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 defaut 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 () {
        _name = "Kuma Inu";
        _symbol = "KUMA";
        _mint(msg.sender, 1000000000000000 * (10 ** uint256(decimals())));
    }

    /**
     * @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");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _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");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `to` 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);
    }

    /**
     * @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");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600881526020017f4b756d6120496e7500000000000000000000000000000000000000000000000081525060049080519060200190620001009291906200030f565b506040518060400160405280600481526020017f4b554d4100000000000000000000000000000000000000000000000000000000815250600590805190602001906200014e9291906200030f565b506200019533620001646200019b60201b60201c565b60ff16600a6200017591906200051a565b66038d7ea4c6800062000189919062000657565b620001a460201b60201c565b62000763565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000217576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200020e9062000412565b60405180910390fd5b6200022b600083836200030a60201b60201c565b80600360008282546200023f919062000462565b9250508190555080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000297919062000462565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620002fe919062000434565b60405180910390a35050565b505050565b8280546200031d90620006c2565b90600052602060002090601f0160209004810192826200034157600085556200038d565b82601f106200035c57805160ff19168380011785556200038d565b828001600101855582156200038d579182015b828111156200038c5782518255916020019190600101906200036f565b5b5090506200039c9190620003a0565b5090565b5b80821115620003bb576000816000905550600101620003a1565b5090565b6000620003ce601f8362000451565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b6200040c81620006b8565b82525050565b600060208201905081810360008301526200042d81620003bf565b9050919050565b60006020820190506200044b600083018462000401565b92915050565b600082825260208201905092915050565b60006200046f82620006b8565b91506200047c83620006b8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620004b457620004b3620006f8565b5b828201905092915050565b6000808291508390505b60018511156200051157808604811115620004e957620004e8620006f8565b5b6001851615620004f95780820291505b8081029050620005098562000756565b9450620004c9565b94509492505050565b60006200052782620006b8565b91506200053483620006b8565b9250620005637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200056b565b905092915050565b6000826200057d576001905062000650565b816200058d576000905062000650565b8160018114620005a65760028114620005b157620005e7565b600191505062000650565b60ff841115620005c657620005c5620006f8565b5b8360020a915084821115620005e057620005df620006f8565b5b5062000650565b5060208310610133831016604e8410600b8410161715620006215782820a9050838111156200061b576200061a620006f8565b5b62000650565b620006308484846001620004bf565b925090508184048111156200064a5762000649620006f8565b5b81810290505b9392505050565b60006200066482620006b8565b91506200067183620006b8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620006ad57620006ac620006f8565b5b828202905092915050565b6000819050919050565b60006002820490506001821680620006db57607f821691505b60208210811415620006f257620006f162000727565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b61181780620007736000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d71461024f578063a9059cbb1461027f578063dd62ed3e146102af578063f2fde38b146102df576100ea565b8063715018a6146102095780638da5cb5b1461021357806395d89b4114610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102fb565b604051610104919061146c565b60405180910390f35b61012760048036038101906101229190611015565b61038d565b6040516101349190611451565b60405180910390f35b6101456103ab565b60405161015291906115ae565b60405180910390f35b61017560048036038101906101709190610fc6565b6103b5565b6040516101829190611451565b60405180910390f35b6101936104b6565b6040516101a091906115c9565b60405180910390f35b6101c360048036038101906101be9190611015565b6104bf565b6040516101d09190611451565b60405180910390f35b6101f360048036038101906101ee9190610f61565b61056b565b60405161020091906115ae565b60405180910390f35b6102116105b4565b005b61021b6106e7565b6040516102289190611436565b60405180910390f35b610239610710565b604051610246919061146c565b60405180910390f35b61026960048036038101906102649190611015565b6107a2565b6040516102769190611451565b60405180910390f35b61029960048036038101906102949190611015565b610896565b6040516102a69190611451565b60405180910390f35b6102c960048036038101906102c49190610f8a565b6108b4565b6040516102d691906115ae565b60405180910390f35b6102f960048036038101906102f49190610f61565b61093b565b005b60606004805461030a90611712565b80601f016020809104026020016040519081016040528092919081815260200182805461033690611712565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b60006103a161039a610add565b8484610ae5565b6001905092915050565b6000600354905090565b60006103c2848484610cb0565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061040d610add565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561048d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104849061150e565b60405180910390fd5b6104aa85610499610add565b85846104a59190611656565b610ae5565b60019150509392505050565b60006012905090565b60006105616104cc610add565b8484600260006104da610add565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461055c9190611600565b610ae5565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166105d36106e7565b73ffffffffffffffffffffffffffffffffffffffff1614610629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106209061152e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461071f90611712565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611712565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b600080600260006107b1610add565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561086e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108659061158e565b60405180910390fd5b61088b610879610add565b8585846108869190611656565b610ae5565b600191505092915050565b60006108aa6108a3610add565b8484610cb0565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661095a6106e7565b73ffffffffffffffffffffffffffffffffffffffff16146109b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a79061152e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a17906114ae565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c9061156e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc906114ce565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ca391906115ae565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d179061154e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d879061148e565b60405180910390fd5b610d9b838383610f32565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e19906114ee565b60405180910390fd5b8181610e2e9190611656565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec09190611600565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f2491906115ae565b60405180910390a350505050565b505050565b600081359050610f46816117b3565b92915050565b600081359050610f5b816117ca565b92915050565b600060208284031215610f7357600080fd5b6000610f8184828501610f37565b91505092915050565b60008060408385031215610f9d57600080fd5b6000610fab85828601610f37565b9250506020610fbc85828601610f37565b9150509250929050565b600080600060608486031215610fdb57600080fd5b6000610fe986828701610f37565b9350506020610ffa86828701610f37565b925050604061100b86828701610f4c565b9150509250925092565b6000806040838503121561102857600080fd5b600061103685828601610f37565b925050602061104785828601610f4c565b9150509250929050565b61105a8161168a565b82525050565b6110698161169c565b82525050565b600061107a826115e4565b61108481856115ef565b93506110948185602086016116df565b61109d816117a2565b840191505092915050565b60006110b56023836115ef565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061111b6026836115ef565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111816022836115ef565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111e76026836115ef565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061124d6028836115ef565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112b36020836115ef565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006112f36025836115ef565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113596024836115ef565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113bf6025836115ef565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611421816116c8565b82525050565b611430816116d2565b82525050565b600060208201905061144b6000830184611051565b92915050565b60006020820190506114666000830184611060565b92915050565b60006020820190508181036000830152611486818461106f565b905092915050565b600060208201905081810360008301526114a7816110a8565b9050919050565b600060208201905081810360008301526114c78161110e565b9050919050565b600060208201905081810360008301526114e781611174565b9050919050565b60006020820190508181036000830152611507816111da565b9050919050565b6000602082019050818103600083015261152781611240565b9050919050565b60006020820190508181036000830152611547816112a6565b9050919050565b60006020820190508181036000830152611567816112e6565b9050919050565b600060208201905081810360008301526115878161134c565b9050919050565b600060208201905081810360008301526115a7816113b2565b9050919050565b60006020820190506115c36000830184611418565b92915050565b60006020820190506115de6000830184611427565b92915050565b600081519050919050565b600082825260208201905092915050565b600061160b826116c8565b9150611616836116c8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561164b5761164a611744565b5b828201905092915050565b6000611661826116c8565b915061166c836116c8565b92508282101561167f5761167e611744565b5b828203905092915050565b6000611695826116a8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156116fd5780820151818401526020810190506116e2565b8381111561170c576000848401525b50505050565b6000600282049050600182168061172a57607f821691505b6020821081141561173e5761173d611773565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6117bc8161168a565b81146117c757600080fd5b50565b6117d3816116c8565b81146117de57600080fd5b5056fea2646970667358221220a05902abfa6cd8a3356d654bfc886fd81f9667d5155c4592712df03e7e8c505e64736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063715018a61161008c578063a457c2d711610066578063a457c2d71461024f578063a9059cbb1461027f578063dd62ed3e146102af578063f2fde38b146102df576100ea565b8063715018a6146102095780638da5cb5b1461021357806395d89b4114610231576100ea565b806323b872dd116100c857806323b872dd1461015b578063313ce5671461018b57806339509351146101a957806370a08231146101d9576100ea565b806306fdde03146100ef578063095ea7b31461010d57806318160ddd1461013d575b600080fd5b6100f76102fb565b604051610104919061146c565b60405180910390f35b61012760048036038101906101229190611015565b61038d565b6040516101349190611451565b60405180910390f35b6101456103ab565b60405161015291906115ae565b60405180910390f35b61017560048036038101906101709190610fc6565b6103b5565b6040516101829190611451565b60405180910390f35b6101936104b6565b6040516101a091906115c9565b60405180910390f35b6101c360048036038101906101be9190611015565b6104bf565b6040516101d09190611451565b60405180910390f35b6101f360048036038101906101ee9190610f61565b61056b565b60405161020091906115ae565b60405180910390f35b6102116105b4565b005b61021b6106e7565b6040516102289190611436565b60405180910390f35b610239610710565b604051610246919061146c565b60405180910390f35b61026960048036038101906102649190611015565b6107a2565b6040516102769190611451565b60405180910390f35b61029960048036038101906102949190611015565b610896565b6040516102a69190611451565b60405180910390f35b6102c960048036038101906102c49190610f8a565b6108b4565b6040516102d691906115ae565b60405180910390f35b6102f960048036038101906102f49190610f61565b61093b565b005b60606004805461030a90611712565b80601f016020809104026020016040519081016040528092919081815260200182805461033690611712565b80156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b5050505050905090565b60006103a161039a610add565b8484610ae5565b6001905092915050565b6000600354905090565b60006103c2848484610cb0565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061040d610add565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561048d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104849061150e565b60405180910390fd5b6104aa85610499610add565b85846104a59190611656565b610ae5565b60019150509392505050565b60006012905090565b60006105616104cc610add565b8484600260006104da610add565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461055c9190611600565b610ae5565b6001905092915050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff166105d36106e7565b73ffffffffffffffffffffffffffffffffffffffff1614610629576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106209061152e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606005805461071f90611712565b80601f016020809104026020016040519081016040528092919081815260200182805461074b90611712565b80156107985780601f1061076d57610100808354040283529160200191610798565b820191906000526020600020905b81548152906001019060200180831161077b57829003601f168201915b5050505050905090565b600080600260006107b1610add565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561086e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108659061158e565b60405180910390fd5b61088b610879610add565b8585846108869190611656565b610ae5565b600191505092915050565b60006108aa6108a3610add565b8484610cb0565b6001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661095a6106e7565b73ffffffffffffffffffffffffffffffffffffffff16146109b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a79061152e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a17906114ae565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c9061156e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610bc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbc906114ce565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ca391906115ae565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d179061154e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d879061148e565b60405180910390fd5b610d9b838383610f32565b6000600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e19906114ee565b60405180910390fd5b8181610e2e9190611656565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ec09190611600565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f2491906115ae565b60405180910390a350505050565b505050565b600081359050610f46816117b3565b92915050565b600081359050610f5b816117ca565b92915050565b600060208284031215610f7357600080fd5b6000610f8184828501610f37565b91505092915050565b60008060408385031215610f9d57600080fd5b6000610fab85828601610f37565b9250506020610fbc85828601610f37565b9150509250929050565b600080600060608486031215610fdb57600080fd5b6000610fe986828701610f37565b9350506020610ffa86828701610f37565b925050604061100b86828701610f4c565b9150509250925092565b6000806040838503121561102857600080fd5b600061103685828601610f37565b925050602061104785828601610f4c565b9150509250929050565b61105a8161168a565b82525050565b6110698161169c565b82525050565b600061107a826115e4565b61108481856115ef565b93506110948185602086016116df565b61109d816117a2565b840191505092915050565b60006110b56023836115ef565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061111b6026836115ef565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111816022836115ef565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006111e76026836115ef565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206260008301527f616c616e636500000000000000000000000000000000000000000000000000006020830152604082019050919050565b600061124d6028836115ef565b91507f45524332303a207472616e7366657220616d6f756e742065786365656473206160008301527f6c6c6f77616e63650000000000000000000000000000000000000000000000006020830152604082019050919050565b60006112b36020836115ef565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60006112f36025836115ef565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113596024836115ef565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006113bf6025836115ef565b91507f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008301527f207a65726f0000000000000000000000000000000000000000000000000000006020830152604082019050919050565b611421816116c8565b82525050565b611430816116d2565b82525050565b600060208201905061144b6000830184611051565b92915050565b60006020820190506114666000830184611060565b92915050565b60006020820190508181036000830152611486818461106f565b905092915050565b600060208201905081810360008301526114a7816110a8565b9050919050565b600060208201905081810360008301526114c78161110e565b9050919050565b600060208201905081810360008301526114e781611174565b9050919050565b60006020820190508181036000830152611507816111da565b9050919050565b6000602082019050818103600083015261152781611240565b9050919050565b60006020820190508181036000830152611547816112a6565b9050919050565b60006020820190508181036000830152611567816112e6565b9050919050565b600060208201905081810360008301526115878161134c565b9050919050565b600060208201905081810360008301526115a7816113b2565b9050919050565b60006020820190506115c36000830184611418565b92915050565b60006020820190506115de6000830184611427565b92915050565b600081519050919050565b600082825260208201905092915050565b600061160b826116c8565b9150611616836116c8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561164b5761164a611744565b5b828201905092915050565b6000611661826116c8565b915061166c836116c8565b92508282101561167f5761167e611744565b5b828203905092915050565b6000611695826116a8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b838110156116fd5780820151818401526020810190506116e2565b8381111561170c576000848401525b50505050565b6000600282049050600182168061172a57607f821691505b6020821081141561173e5761173d611773565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b6117bc8161168a565b81146117c757600080fd5b50565b6117d3816116c8565b81146117de57600080fd5b5056fea2646970667358221220a05902abfa6cd8a3356d654bfc886fd81f9667d5155c4592712df03e7e8c505e64736f6c63430008000033

Deployed Bytecode Sourcemap

8215:9603:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9051:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11218:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10171:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11869:422;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10013:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12700:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10342:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6381:148;;;:::i;:::-;;5732:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9270:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13418:377;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10682:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10920:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6684:244;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9051:100;9105:13;9138:5;9131:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9051:100;:::o;11218:169::-;11301:4;11318:39;11327:12;:10;:12::i;:::-;11341:7;11350:6;11318:8;:39::i;:::-;11375:4;11368:11;;11218:169;;;;:::o;10171:108::-;10232:7;10259:12;;10252:19;;10171:108;:::o;11869:422::-;11975:4;11992:36;12002:6;12010:9;12021:6;11992:9;:36::i;:::-;12041:24;12068:11;:19;12080:6;12068:19;;;;;;;;;;;;;;;:33;12088:12;:10;:12::i;:::-;12068:33;;;;;;;;;;;;;;;;12041:60;;12140:6;12120:16;:26;;12112:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12202:57;12211:6;12219:12;:10;:12::i;:::-;12252:6;12233:16;:25;;;;:::i;:::-;12202:8;:57::i;:::-;12279:4;12272:11;;;11869:422;;;;;:::o;10013:93::-;10071:5;10096:2;10089:9;;10013:93;:::o;12700:215::-;12788:4;12805:80;12814:12;:10;:12::i;:::-;12828:7;12874:10;12837:11;:25;12849:12;:10;:12::i;:::-;12837:25;;;;;;;;;;;;;;;:34;12863:7;12837:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;12805:8;:80::i;:::-;12903:4;12896:11;;12700:215;;;;:::o;10342:127::-;10416:7;10443:9;:18;10453:7;10443:18;;;;;;;;;;;;;;;;10436:25;;10342:127;;;:::o;6381:148::-;5963:10;5952:21;;:7;:5;:7::i;:::-;:21;;;5944:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6488:1:::1;6451:40;;6472:6;::::0;::::1;;;;;;;;6451:40;;;;;;;;;;;;6519:1;6502:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6381:148::o:0;5732:87::-;5778:7;5805:6;;;;;;;;;;;5798:13;;5732:87;:::o;9270:104::-;9326:13;9359:7;9352:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9270:104;:::o;13418:377::-;13511:4;13528:24;13555:11;:25;13567:12;:10;:12::i;:::-;13555:25;;;;;;;;;;;;;;;:34;13581:7;13555:34;;;;;;;;;;;;;;;;13528:61;;13628:15;13608:16;:35;;13600:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13696:67;13705:12;:10;:12::i;:::-;13719:7;13747:15;13728:16;:34;;;;:::i;:::-;13696:8;:67::i;:::-;13783:4;13776:11;;;13418:377;;;;:::o;10682:175::-;10768:4;10785:42;10795:12;:10;:12::i;:::-;10809:9;10820:6;10785:9;:42::i;:::-;10845:4;10838:11;;10682:175;;;;:::o;10920:151::-;11009:7;11036:11;:18;11048:5;11036:18;;;;;;;;;;;;;;;:27;11055:7;11036:27;;;;;;;;;;;;;;;;11029:34;;10920:151;;;;:::o;6684:244::-;5963:10;5952:21;;:7;:5;:7::i;:::-;:21;;;5944:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;6793:1:::1;6773:22;;:8;:22;;;;6765:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6883:8;6854:38;;6875:6;::::0;::::1;;;;;;;;6854:38;;;;;;;;;;;;6912:8;6903:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6684:244:::0;:::o;4390:98::-;4443:7;4470:10;4463:17;;4390:98;:::o;16774:346::-;16893:1;16876:19;;:5;:19;;;;16868:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16974:1;16955:21;;:7;:21;;;;16947:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17058:6;17028:11;:18;17040:5;17028:18;;;;;;;;;;;;;;;:27;17047:7;17028:27;;;;;;;;;;;;;;;:36;;;;17096:7;17080:32;;17089:5;17080:32;;;17105:6;17080:32;;;;;;:::i;:::-;;;;;;;;16774:346;;;:::o;14285:604::-;14409:1;14391:20;;:6;:20;;;;14383:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14493:1;14472:23;;:9;:23;;;;14464:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14548:47;14569:6;14577:9;14588:6;14548:20;:47::i;:::-;14608:21;14632:9;:17;14642:6;14632:17;;;;;;;;;;;;;;;;14608:41;;14685:6;14668:13;:23;;14660:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;14781:6;14765:13;:22;;;;:::i;:::-;14745:9;:17;14755:6;14745:17;;;;;;;;;;;;;;;:42;;;;14822:6;14798:9;:20;14808:9;14798:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;14863:9;14846:35;;14855:6;14846:35;;;14874:6;14846:35;;;;;;:::i;:::-;;;;;;;;14285:604;;;;:::o;17723:92::-;;;;:::o;7:139:1:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:139::-;;236:6;223:20;214:29;;252:33;279:5;252:33;:::i;:::-;204:87;;;;:::o;297:262::-;;405:2;393:9;384:7;380:23;376:32;373:2;;;421:1;418;411:12;373:2;464:1;489:53;534:7;525:6;514:9;510:22;489:53;:::i;:::-;479:63;;435:117;363:196;;;;:::o;565:407::-;;;690:2;678:9;669:7;665:23;661:32;658:2;;;706:1;703;696:12;658:2;749:1;774:53;819:7;810:6;799:9;795:22;774:53;:::i;:::-;764:63;;720:117;876:2;902:53;947:7;938:6;927:9;923:22;902:53;:::i;:::-;892:63;;847:118;648:324;;;;;:::o;978:552::-;;;;1120:2;1108:9;1099:7;1095:23;1091:32;1088:2;;;1136:1;1133;1126:12;1088:2;1179:1;1204:53;1249:7;1240:6;1229:9;1225:22;1204:53;:::i;:::-;1194:63;;1150:117;1306:2;1332:53;1377:7;1368:6;1357:9;1353:22;1332:53;:::i;:::-;1322:63;;1277:118;1434:2;1460:53;1505:7;1496:6;1485:9;1481:22;1460:53;:::i;:::-;1450:63;;1405:118;1078:452;;;;;:::o;1536:407::-;;;1661:2;1649:9;1640:7;1636:23;1632:32;1629:2;;;1677:1;1674;1667:12;1629:2;1720:1;1745:53;1790:7;1781:6;1770:9;1766:22;1745:53;:::i;:::-;1735:63;;1691:117;1847:2;1873:53;1918:7;1909:6;1898:9;1894:22;1873:53;:::i;:::-;1863:63;;1818:118;1619:324;;;;;:::o;1949:118::-;2036:24;2054:5;2036:24;:::i;:::-;2031:3;2024:37;2014:53;;:::o;2073:109::-;2154:21;2169:5;2154:21;:::i;:::-;2149:3;2142:34;2132:50;;:::o;2188:364::-;;2304:39;2337:5;2304:39;:::i;:::-;2359:71;2423:6;2418:3;2359:71;:::i;:::-;2352:78;;2439:52;2484:6;2479:3;2472:4;2465:5;2461:16;2439:52;:::i;:::-;2516:29;2538:6;2516:29;:::i;:::-;2511:3;2507:39;2500:46;;2280:272;;;;;:::o;2558:367::-;;2721:67;2785:2;2780:3;2721:67;:::i;:::-;2714:74;;2818:34;2814:1;2809:3;2805:11;2798:55;2884:5;2879:2;2874:3;2870:12;2863:27;2916:2;2911:3;2907:12;2900:19;;2704:221;;;:::o;2931:370::-;;3094:67;3158:2;3153:3;3094:67;:::i;:::-;3087:74;;3191:34;3187:1;3182:3;3178:11;3171:55;3257:8;3252:2;3247:3;3243:12;3236:30;3292:2;3287:3;3283:12;3276:19;;3077:224;;;:::o;3307:366::-;;3470:67;3534:2;3529:3;3470:67;:::i;:::-;3463:74;;3567:34;3563:1;3558:3;3554:11;3547:55;3633:4;3628:2;3623:3;3619:12;3612:26;3664:2;3659:3;3655:12;3648:19;;3453:220;;;:::o;3679:370::-;;3842:67;3906:2;3901:3;3842:67;:::i;:::-;3835:74;;3939:34;3935:1;3930:3;3926:11;3919:55;4005:8;4000:2;3995:3;3991:12;3984:30;4040:2;4035:3;4031:12;4024:19;;3825:224;;;:::o;4055:372::-;;4218:67;4282:2;4277:3;4218:67;:::i;:::-;4211:74;;4315:34;4311:1;4306:3;4302:11;4295:55;4381:10;4376:2;4371:3;4367:12;4360:32;4418:2;4413:3;4409:12;4402:19;;4201:226;;;:::o;4433:330::-;;4596:67;4660:2;4655:3;4596:67;:::i;:::-;4589:74;;4693:34;4689:1;4684:3;4680:11;4673:55;4754:2;4749:3;4745:12;4738:19;;4579:184;;;:::o;4769:369::-;;4932:67;4996:2;4991:3;4932:67;:::i;:::-;4925:74;;5029:34;5025:1;5020:3;5016:11;5009:55;5095:7;5090:2;5085:3;5081:12;5074:29;5129:2;5124:3;5120:12;5113:19;;4915:223;;;:::o;5144:368::-;;5307:67;5371:2;5366:3;5307:67;:::i;:::-;5300:74;;5404:34;5400:1;5395:3;5391:11;5384:55;5470:6;5465:2;5460:3;5456:12;5449:28;5503:2;5498:3;5494:12;5487:19;;5290:222;;;:::o;5518:369::-;;5681:67;5745:2;5740:3;5681:67;:::i;:::-;5674:74;;5778:34;5774:1;5769:3;5765:11;5758:55;5844:7;5839:2;5834:3;5830:12;5823:29;5878:2;5873:3;5869:12;5862:19;;5664:223;;;:::o;5893:118::-;5980:24;5998:5;5980:24;:::i;:::-;5975:3;5968:37;5958:53;;:::o;6017:112::-;6100:22;6116:5;6100:22;:::i;:::-;6095:3;6088:35;6078:51;;:::o;6135:222::-;;6266:2;6255:9;6251:18;6243:26;;6279:71;6347:1;6336:9;6332:17;6323:6;6279:71;:::i;:::-;6233:124;;;;:::o;6363:210::-;;6488:2;6477:9;6473:18;6465:26;;6501:65;6563:1;6552:9;6548:17;6539:6;6501:65;:::i;:::-;6455:118;;;;:::o;6579:313::-;;6730:2;6719:9;6715:18;6707:26;;6779:9;6773:4;6769:20;6765:1;6754:9;6750:17;6743:47;6807:78;6880:4;6871:6;6807:78;:::i;:::-;6799:86;;6697:195;;;;:::o;6898:419::-;;7102:2;7091:9;7087:18;7079:26;;7151:9;7145:4;7141:20;7137:1;7126:9;7122:17;7115:47;7179:131;7305:4;7179:131;:::i;:::-;7171:139;;7069:248;;;:::o;7323:419::-;;7527:2;7516:9;7512:18;7504:26;;7576:9;7570:4;7566:20;7562:1;7551:9;7547:17;7540:47;7604:131;7730:4;7604:131;:::i;:::-;7596:139;;7494:248;;;:::o;7748:419::-;;7952:2;7941:9;7937:18;7929:26;;8001:9;7995:4;7991:20;7987:1;7976:9;7972:17;7965:47;8029:131;8155:4;8029:131;:::i;:::-;8021:139;;7919:248;;;:::o;8173:419::-;;8377:2;8366:9;8362:18;8354:26;;8426:9;8420:4;8416:20;8412:1;8401:9;8397:17;8390:47;8454:131;8580:4;8454:131;:::i;:::-;8446:139;;8344:248;;;:::o;8598:419::-;;8802:2;8791:9;8787:18;8779:26;;8851:9;8845:4;8841:20;8837:1;8826:9;8822:17;8815:47;8879:131;9005:4;8879:131;:::i;:::-;8871:139;;8769:248;;;:::o;9023:419::-;;9227:2;9216:9;9212:18;9204:26;;9276:9;9270:4;9266:20;9262:1;9251:9;9247:17;9240:47;9304:131;9430:4;9304:131;:::i;:::-;9296:139;;9194:248;;;:::o;9448:419::-;;9652:2;9641:9;9637:18;9629:26;;9701:9;9695:4;9691:20;9687:1;9676:9;9672:17;9665:47;9729:131;9855:4;9729:131;:::i;:::-;9721:139;;9619:248;;;:::o;9873:419::-;;10077:2;10066:9;10062:18;10054:26;;10126:9;10120:4;10116:20;10112:1;10101:9;10097:17;10090:47;10154:131;10280:4;10154:131;:::i;:::-;10146:139;;10044:248;;;:::o;10298:419::-;;10502:2;10491:9;10487:18;10479:26;;10551:9;10545:4;10541:20;10537:1;10526:9;10522:17;10515:47;10579:131;10705:4;10579:131;:::i;:::-;10571:139;;10469:248;;;:::o;10723:222::-;;10854:2;10843:9;10839:18;10831:26;;10867:71;10935:1;10924:9;10920:17;10911:6;10867:71;:::i;:::-;10821:124;;;;:::o;10951:214::-;;11078:2;11067:9;11063:18;11055:26;;11091:67;11155:1;11144:9;11140:17;11131:6;11091:67;:::i;:::-;11045:120;;;;:::o;11171:99::-;;11257:5;11251:12;11241:22;;11230:40;;;:::o;11276:169::-;;11394:6;11389:3;11382:19;11434:4;11429:3;11425:14;11410:29;;11372:73;;;;:::o;11451:305::-;;11510:20;11528:1;11510:20;:::i;:::-;11505:25;;11544:20;11562:1;11544:20;:::i;:::-;11539:25;;11698:1;11630:66;11626:74;11623:1;11620:81;11617:2;;;11704:18;;:::i;:::-;11617:2;11748:1;11745;11741:9;11734:16;;11495:261;;;;:::o;11762:191::-;;11822:20;11840:1;11822:20;:::i;:::-;11817:25;;11856:20;11874:1;11856:20;:::i;:::-;11851:25;;11895:1;11892;11889:8;11886:2;;;11900:18;;:::i;:::-;11886:2;11945:1;11942;11938:9;11930:17;;11807:146;;;;:::o;11959:96::-;;12025:24;12043:5;12025:24;:::i;:::-;12014:35;;12004:51;;;:::o;12061:90::-;;12138:5;12131:13;12124:21;12113:32;;12103:48;;;:::o;12157:126::-;;12234:42;12227:5;12223:54;12212:65;;12202:81;;;:::o;12289:77::-;;12355:5;12344:16;;12334:32;;;:::o;12372:86::-;;12447:4;12440:5;12436:16;12425:27;;12415:43;;;:::o;12464:307::-;12532:1;12542:113;12556:6;12553:1;12550:13;12542:113;;;12641:1;12636:3;12632:11;12626:18;12622:1;12617:3;12613:11;12606:39;12578:2;12575:1;12571:10;12566:15;;12542:113;;;12673:6;12670:1;12667:13;12664:2;;;12753:1;12744:6;12739:3;12735:16;12728:27;12664:2;12513:258;;;;:::o;12777:320::-;;12858:1;12852:4;12848:12;12838:22;;12905:1;12899:4;12895:12;12926:18;12916:2;;12982:4;12974:6;12970:17;12960:27;;12916:2;13044;13036:6;13033:14;13013:18;13010:38;13007:2;;;13063:18;;:::i;:::-;13007:2;12828:269;;;;:::o;13103:180::-;13151:77;13148:1;13141:88;13248:4;13245:1;13238:15;13272:4;13269:1;13262:15;13289:180;13337:77;13334:1;13327:88;13434:4;13431:1;13424:15;13458:4;13455:1;13448:15;13475:102;;13567:2;13563:7;13558:2;13551:5;13547:14;13543:28;13533:38;;13523:54;;;:::o;13583:122::-;13656:24;13674:5;13656:24;:::i;:::-;13649:5;13646:35;13636:2;;13695:1;13692;13685:12;13636:2;13626:79;:::o;13711:122::-;13784:24;13802:5;13784:24;:::i;:::-;13777:5;13774:35;13764:2;;13823:1;13820;13813:12;13764:2;13754:79;:::o

Swarm Source

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