S Price: $0.464372 (-8.70%)

Token

Oil Token (Oil)

Overview

Max Total Supply

100,000,000 Oil

Holders

3

Market

Price

$0.00 @ 0.000000 S

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
107.930161684648558709 Oil

Value
$0.00
0xdb3a3aaef721abf5e322551fdff9f4549dbb8bf2
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
OilToken

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-03-06
*/

// SPDX-License-Identifier: MIT
// 
// 

pragma solidity ^0.8.0;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

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

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

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

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

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;

    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20}.
     *
     * Requirements:
     *
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

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

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

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


contract OilToken is ERC20 {
    uint256 public constant TOTAL_SUPPLY = 1 * 10**8 * 10**18; // 100m tokens with 18 decimals
    uint256 public maxWalletBalance = TOTAL_SUPPLY / 50; // 2% of total supply

    mapping(address => bool) public exemptFromMax;
    address public owner;

    modifier onlyOwner() {
        require(msg.sender == owner, "Caller is not the owner");
        _;
    }

    constructor() ERC20("Oil Token", "Oil") {
        owner = msg.sender;
        exemptFromMax[owner] = true;
        _mint(owner, TOTAL_SUPPLY);
    }

    function updateOwner(address _owner) external onlyOwner {
        owner = _owner;
        exemptFromMax[owner] = true;
    }

    function updateMaxWallet(uint256 amount) external onlyOwner {
        require(amount > maxWalletBalance, "New max must be greater than current max wallet balance");
        maxWalletBalance = amount;
    }

    function setExemptFromMax(address account) external onlyOwner {
        exemptFromMax[account] = true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal override {
        if (sender != owner && !exemptFromMax[recipient]) {
            require(balanceOf(recipient) + amount <= maxWalletBalance, "Recipient balance would exceeds max wallet balance");
        }
        super._transfer(sender, recipient, amount);
    }
}

Contract Security Audit

Contract ABI

API
[{"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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"TOTAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":"","type":"address"}],"name":"exemptFromMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"setExemptFromMax","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":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"updateOwner","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260326a52b7d2dcc80cd2e40000006200001e9190620005fa565b6005553480156200002e57600080fd5b506040518060400160405280600981526020017f4f696c20546f6b656e00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4f696c00000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000b3929190620003e6565b508060049080519060200190620000cc929190620003e6565b50505033600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620001c9600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166a52b7d2dcc80cd2e4000000620001cf60201b60201c565b620006ff565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000242576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000239906200054d565b60405180910390fd5b62000256600083836200037e60201b60201c565b62000272816002546200038360201b62000bce1790919060201c565b600281905550620002d0816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200038360201b62000bce1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200037291906200056f565b60405180910390a35050565b505050565b60008082846200039491906200059d565b905083811015620003dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003d3906200052b565b60405180910390fd5b8091505092915050565b828054620003f4906200063c565b90600052602060002090601f01602090048101928262000418576000855562000464565b82601f106200043357805160ff191683800117855562000464565b8280016001018555821562000464579182015b828111156200046357825182559160200191906001019062000446565b5b50905062000473919062000477565b5090565b5b808211156200049257600081600090555060010162000478565b5090565b6000620004a5601b836200058c565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000620004e7601f836200058c565b91507f45524332303a206d696e7420746f20746865207a65726f2061646472657373006000830152602082019050919050565b620005258162000632565b82525050565b60006020820190508181036000830152620005468162000496565b9050919050565b600060208201905081810360008301526200056881620004d8565b9050919050565b60006020820190506200058660008301846200051a565b92915050565b600082825260208201905092915050565b6000620005aa8262000632565b9150620005b78362000632565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620005ef57620005ee62000672565b5b828201905092915050565b6000620006078262000632565b9150620006148362000632565b925082620006275762000626620006a1565b5b828204905092915050565b6000819050919050565b600060028204905060018216806200065557607f821691505b602082108114156200066c576200066b620006d0565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b611ae3806200070f6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063880cdc31116100a2578063a457c2d711610071578063a457c2d7146102e3578063a9059cbb14610313578063bbde77c114610343578063dd62ed3e14610361578063fb60e0bc1461039157610116565b8063880cdc311461026d5780638da5cb5b14610289578063902d55a5146102a757806395d89b41146102c557610116565b80631c499ab0116100e95780631c499ab0146101a357806323b872dd146101bf578063313ce567146101ef578063395093511461020d57806370a082311461023d57610116565b806306fdde031461011b578063093feb5114610139578063095ea7b31461015557806318160ddd14610185575b600080fd5b6101236103c1565b60405161013091906116e5565b60405180910390f35b610153600480360381019061014e919061123d565b610453565b005b61016f600480360381019061016a91906112f1565b61053e565b60405161017c91906116ca565b60405180910390f35b61018d61055c565b60405161019a9190611807565b60405180910390f35b6101bd60048036038101906101b8919061132d565b610566565b005b6101d960048036038101906101d491906112a2565b610644565b6040516101e691906116ca565b60405180910390f35b6101f761071d565b6040516102049190611822565b60405180910390f35b610227600480360381019061022291906112f1565b610726565b60405161023491906116ca565b60405180910390f35b6102576004803603810190610252919061123d565b6107d9565b6040516102649190611807565b60405180910390f35b6102876004803603810190610282919061123d565b610821565b005b61029161096f565b60405161029e91906116af565b60405180910390f35b6102af610995565b6040516102bc9190611807565b60405180910390f35b6102cd6109a4565b6040516102da91906116e5565b60405180910390f35b6102fd60048036038101906102f891906112f1565b610a36565b60405161030a91906116ca565b60405180910390f35b61032d600480360381019061032891906112f1565b610b03565b60405161033a91906116ca565b60405180910390f35b61034b610b21565b6040516103589190611807565b60405180910390f35b61037b60048036038101906103769190611266565b610b27565b6040516103889190611807565b60405180910390f35b6103ab60048036038101906103a6919061123d565b610bae565b6040516103b891906116ca565b60405180910390f35b6060600380546103d09061196b565b80601f01602080910402602001604051908101604052809291908181526020018280546103fc9061196b565b80156104495780601f1061041e57610100808354040283529160200191610449565b820191906000526020600020905b81548152906001019060200180831161042c57829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90611767565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061055261054b610c2c565b8484610c34565b6001905092915050565b6000600254905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90611767565b60405180910390fd5b600554811161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190611707565b60405180910390fd5b8060058190555050565b6000610651848484610dff565b6107128461065d610c2c565b61070d85604051806060016040528060288152602001611a6160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106c3610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b610c34565b600190509392505050565b60006012905090565b60006107cf610733610c2c565b846107ca8560016000610744610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bce90919063ffffffff16565b610c34565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a890611767565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a52b7d2dcc80cd2e400000081565b6060600480546109b39061196b565b80601f01602080910402602001604051908101604052809291908181526020018280546109df9061196b565b8015610a2c5780601f10610a0157610100808354040283529160200191610a2c565b820191906000526020600020905b815481529060010190602001808311610a0f57829003601f168201915b5050505050905090565b6000610af9610a43610c2c565b84610af485604051806060016040528060258152602001611a896025913960016000610a6d610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b610c34565b6001905092915050565b6000610b17610b10610c2c565b8484610dff565b6001905092915050565b60055481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000808284610bdd9190611859565b905083811015610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c19906117a7565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b906117e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90611787565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610df29190611807565b60405180910390a3505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ea75750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f055760055481610eb9846107d9565b610ec39190611859565b1115610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90611747565b60405180910390fd5b5b610f10838383610f79565b505050565b6000838311158290610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5491906116e5565b60405180910390fd5b5060008385610f6c91906118af565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe0906117c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090611727565b60405180910390fd5b61106483838361120e565b6110cf81604051806060016040528060268152602001611a3b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611162816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bce90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112019190611807565b60405180910390a3505050565b505050565b60008135905061122281611a0c565b92915050565b60008135905061123781611a23565b92915050565b60006020828403121561124f57600080fd5b600061125d84828501611213565b91505092915050565b6000806040838503121561127957600080fd5b600061128785828601611213565b925050602061129885828601611213565b9150509250929050565b6000806000606084860312156112b757600080fd5b60006112c586828701611213565b93505060206112d686828701611213565b92505060406112e786828701611228565b9150509250925092565b6000806040838503121561130457600080fd5b600061131285828601611213565b925050602061132385828601611228565b9150509250929050565b60006020828403121561133f57600080fd5b600061134d84828501611228565b91505092915050565b61135f816118e3565b82525050565b61136e816118f5565b82525050565b600061137f8261183d565b6113898185611848565b9350611399818560208601611938565b6113a2816119fb565b840191505092915050565b60006113ba603783611848565b91507f4e6577206d6178206d7573742062652067726561746572207468616e2063757260008301527f72656e74206d61782077616c6c65742062616c616e63650000000000000000006020830152604082019050919050565b6000611420602383611848565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611486603283611848565b91507f526563697069656e742062616c616e636520776f756c6420657863656564732060008301527f6d61782077616c6c65742062616c616e636500000000000000000000000000006020830152604082019050919050565b60006114ec601783611848565b91507f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006000830152602082019050919050565b600061152c602283611848565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611592601b83611848565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006115d2602583611848565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611638602483611848565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61169a81611921565b82525050565b6116a98161192b565b82525050565b60006020820190506116c46000830184611356565b92915050565b60006020820190506116df6000830184611365565b92915050565b600060208201905081810360008301526116ff8184611374565b905092915050565b60006020820190508181036000830152611720816113ad565b9050919050565b6000602082019050818103600083015261174081611413565b9050919050565b6000602082019050818103600083015261176081611479565b9050919050565b60006020820190508181036000830152611780816114df565b9050919050565b600060208201905081810360008301526117a08161151f565b9050919050565b600060208201905081810360008301526117c081611585565b9050919050565b600060208201905081810360008301526117e0816115c5565b9050919050565b600060208201905081810360008301526118008161162b565b9050919050565b600060208201905061181c6000830184611691565b92915050565b600060208201905061183760008301846116a0565b92915050565b600081519050919050565b600082825260208201905092915050565b600061186482611921565b915061186f83611921565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118a4576118a361199d565b5b828201905092915050565b60006118ba82611921565b91506118c583611921565b9250828210156118d8576118d761199d565b5b828203905092915050565b60006118ee82611901565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561195657808201518184015260208101905061193b565b83811115611965576000848401525b50505050565b6000600282049050600182168061198357607f821691505b60208210811415611997576119966119cc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a15816118e3565b8114611a2057600080fd5b50565b611a2c81611921565b8114611a3757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cbdb4aad6bf5e0057c9dd46fb4aa61c5d488a579a57a191833417197714220e764736f6c63430008000033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063880cdc31116100a2578063a457c2d711610071578063a457c2d7146102e3578063a9059cbb14610313578063bbde77c114610343578063dd62ed3e14610361578063fb60e0bc1461039157610116565b8063880cdc311461026d5780638da5cb5b14610289578063902d55a5146102a757806395d89b41146102c557610116565b80631c499ab0116100e95780631c499ab0146101a357806323b872dd146101bf578063313ce567146101ef578063395093511461020d57806370a082311461023d57610116565b806306fdde031461011b578063093feb5114610139578063095ea7b31461015557806318160ddd14610185575b600080fd5b6101236103c1565b60405161013091906116e5565b60405180910390f35b610153600480360381019061014e919061123d565b610453565b005b61016f600480360381019061016a91906112f1565b61053e565b60405161017c91906116ca565b60405180910390f35b61018d61055c565b60405161019a9190611807565b60405180910390f35b6101bd60048036038101906101b8919061132d565b610566565b005b6101d960048036038101906101d491906112a2565b610644565b6040516101e691906116ca565b60405180910390f35b6101f761071d565b6040516102049190611822565b60405180910390f35b610227600480360381019061022291906112f1565b610726565b60405161023491906116ca565b60405180910390f35b6102576004803603810190610252919061123d565b6107d9565b6040516102649190611807565b60405180910390f35b6102876004803603810190610282919061123d565b610821565b005b61029161096f565b60405161029e91906116af565b60405180910390f35b6102af610995565b6040516102bc9190611807565b60405180910390f35b6102cd6109a4565b6040516102da91906116e5565b60405180910390f35b6102fd60048036038101906102f891906112f1565b610a36565b60405161030a91906116ca565b60405180910390f35b61032d600480360381019061032891906112f1565b610b03565b60405161033a91906116ca565b60405180910390f35b61034b610b21565b6040516103589190611807565b60405180910390f35b61037b60048036038101906103769190611266565b610b27565b6040516103889190611807565b60405180910390f35b6103ab60048036038101906103a6919061123d565b610bae565b6040516103b891906116ca565b60405180910390f35b6060600380546103d09061196b565b80601f01602080910402602001604051908101604052809291908181526020018280546103fc9061196b565b80156104495780601f1061041e57610100808354040283529160200191610449565b820191906000526020600020905b81548152906001019060200180831161042c57829003601f168201915b5050505050905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104da90611767565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600061055261054b610c2c565b8484610c34565b6001905092915050565b6000600254905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ed90611767565b60405180910390fd5b600554811161063a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161063190611707565b60405180910390fd5b8060058190555050565b6000610651848484610dff565b6107128461065d610c2c565b61070d85604051806060016040528060288152602001611a6160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106c3610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b610c34565b600190509392505050565b60006012905090565b60006107cf610733610c2c565b846107ca8560016000610744610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bce90919063ffffffff16565b610c34565b6001905092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108a890611767565b60405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6a52b7d2dcc80cd2e400000081565b6060600480546109b39061196b565b80601f01602080910402602001604051908101604052809291908181526020018280546109df9061196b565b8015610a2c5780601f10610a0157610100808354040283529160200191610a2c565b820191906000526020600020905b815481529060010190602001808311610a0f57829003601f168201915b5050505050905090565b6000610af9610a43610c2c565b84610af485604051806060016040528060258152602001611a896025913960016000610a6d610c2c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b610c34565b6001905092915050565b6000610b17610b10610c2c565b8484610dff565b6001905092915050565b60055481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60066020528060005260406000206000915054906101000a900460ff1681565b6000808284610bdd9190611859565b905083811015610c22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c19906117a7565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610ca4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9b906117e7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610d14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0b90611787565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610df29190611807565b60405180910390a3505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015610ea75750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15610f055760055481610eb9846107d9565b610ec39190611859565b1115610f04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efb90611747565b60405180910390fd5b5b610f10838383610f79565b505050565b6000838311158290610f5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5491906116e5565b60405180910390fd5b5060008385610f6c91906118af565b9050809150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610fe9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe0906117c7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090611727565b60405180910390fd5b61106483838361120e565b6110cf81604051806060016040528060268152602001611a3b602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f159092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611162816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bce90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112019190611807565b60405180910390a3505050565b505050565b60008135905061122281611a0c565b92915050565b60008135905061123781611a23565b92915050565b60006020828403121561124f57600080fd5b600061125d84828501611213565b91505092915050565b6000806040838503121561127957600080fd5b600061128785828601611213565b925050602061129885828601611213565b9150509250929050565b6000806000606084860312156112b757600080fd5b60006112c586828701611213565b93505060206112d686828701611213565b92505060406112e786828701611228565b9150509250925092565b6000806040838503121561130457600080fd5b600061131285828601611213565b925050602061132385828601611228565b9150509250929050565b60006020828403121561133f57600080fd5b600061134d84828501611228565b91505092915050565b61135f816118e3565b82525050565b61136e816118f5565b82525050565b600061137f8261183d565b6113898185611848565b9350611399818560208601611938565b6113a2816119fb565b840191505092915050565b60006113ba603783611848565b91507f4e6577206d6178206d7573742062652067726561746572207468616e2063757260008301527f72656e74206d61782077616c6c65742062616c616e63650000000000000000006020830152604082019050919050565b6000611420602383611848565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611486603283611848565b91507f526563697069656e742062616c616e636520776f756c6420657863656564732060008301527f6d61782077616c6c65742062616c616e636500000000000000000000000000006020830152604082019050919050565b60006114ec601783611848565b91507f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006000830152602082019050919050565b600061152c602283611848565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611592601b83611848565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b60006115d2602583611848565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611638602483611848565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b61169a81611921565b82525050565b6116a98161192b565b82525050565b60006020820190506116c46000830184611356565b92915050565b60006020820190506116df6000830184611365565b92915050565b600060208201905081810360008301526116ff8184611374565b905092915050565b60006020820190508181036000830152611720816113ad565b9050919050565b6000602082019050818103600083015261174081611413565b9050919050565b6000602082019050818103600083015261176081611479565b9050919050565b60006020820190508181036000830152611780816114df565b9050919050565b600060208201905081810360008301526117a08161151f565b9050919050565b600060208201905081810360008301526117c081611585565b9050919050565b600060208201905081810360008301526117e0816115c5565b9050919050565b600060208201905081810360008301526118008161162b565b9050919050565b600060208201905061181c6000830184611691565b92915050565b600060208201905061183760008301846116a0565b92915050565b600081519050919050565b600082825260208201905092915050565b600061186482611921565b915061186f83611921565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156118a4576118a361199d565b5b828201905092915050565b60006118ba82611921565b91506118c583611921565b9250828210156118d8576118d761199d565b5b828203905092915050565b60006118ee82611901565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b8381101561195657808201518184015260208101905061193b565b83811115611965576000848401525b50505050565b6000600282049050600182168061198357607f821691505b60208210811415611997576119966119cc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b611a15816118e3565b8114611a2057600080fd5b50565b611a2c81611921565b8114611a3757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cbdb4aad6bf5e0057c9dd46fb4aa61c5d488a579a57a191833417197714220e764736f6c63430008000033

Deployed Bytecode Sourcemap

17696:1388:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9090:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18615:110;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11257:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10210:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18399:208;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11908:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10052:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12672:218;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10381:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18264;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17960:20;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17730:57;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9309:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13393:269;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10721:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17826:51;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10959:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17908:45;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9090:100;9144:13;9177:5;9170:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9090:100;:::o;18615:110::-;18043:5;;;;;;;;;;;18029:19;;:10;:19;;;18021:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18713:4:::1;18688:13;:22;18702:7;18688:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18615:110:::0;:::o;11257:169::-;11340:4;11357:39;11366:12;:10;:12::i;:::-;11380:7;11389:6;11357:8;:39::i;:::-;11414:4;11407:11;;11257:169;;;;:::o;10210:108::-;10271:7;10298:12;;10291:19;;10210:108;:::o;18399:208::-;18043:5;;;;;;;;;;;18029:19;;:10;:19;;;18021:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18487:16:::1;;18478:6;:25;18470:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;18593:6;18574:16;:25;;;;18399:208:::0;:::o;11908:355::-;12048:4;12065:36;12075:6;12083:9;12094:6;12065:9;:36::i;:::-;12112:121;12121:6;12129:12;:10;:12::i;:::-;12143:89;12181:6;12143:89;;;;;;;;;;;;;;;;;:11;:19;12155:6;12143:19;;;;;;;;;;;;;;;:33;12163:12;:10;:12::i;:::-;12143:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12112:8;:121::i;:::-;12251:4;12244:11;;11908:355;;;;;:::o;10052:93::-;10110:5;10135:2;10128:9;;10052:93;:::o;12672:218::-;12760:4;12777:83;12786:12;:10;:12::i;:::-;12800:7;12809:50;12848:10;12809:11;:25;12821:12;:10;:12::i;:::-;12809:25;;;;;;;;;;;;;;;:34;12835:7;12809:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12777:8;:83::i;:::-;12878:4;12871:11;;12672:218;;;;:::o;10381:127::-;10455:7;10482:9;:18;10492:7;10482:18;;;;;;;;;;;;;;;;10475:25;;10381:127;;;:::o;18264:::-;18043:5;;;;;;;;;;;18029:19;;:10;:19;;;18021:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;18339:6:::1;18331:5;;:14;;;;;;;;;;;;;;;;;;18379:4;18356:13;:20;18370:5;;;;;;;;;;;18356:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;18264:127:::0;:::o;17960:20::-;;;;;;;;;;;;;:::o;17730:57::-;17769:18;17730:57;:::o;9309:104::-;9365:13;9398:7;9391:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9309:104;:::o;13393:269::-;13486:4;13503:129;13512:12;:10;:12::i;:::-;13526:7;13535:96;13574:15;13535:96;;;;;;;;;;;;;;;;;:11;:25;13547:12;:10;:12::i;:::-;13535:25;;;;;;;;;;;;;;;:34;13561:7;13535:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;13503:8;:129::i;:::-;13650:4;13643:11;;13393:269;;;;:::o;10721:175::-;10807:4;10824:42;10834:12;:10;:12::i;:::-;10848:9;10859:6;10824:9;:42::i;:::-;10884:4;10877:11;;10721:175;;;;:::o;17826:51::-;;;;:::o;10959:151::-;11048:7;11075:11;:18;11087:5;11075:18;;;;;;;;;;;;;;;:27;11094:7;11075:27;;;;;;;;;;;;;;;;11068:34;;10959:151;;;;:::o;17908:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;3813:181::-;3871:7;3891:9;3907:1;3903;:5;;;;:::i;:::-;3891:17;;3932:1;3927;:6;;3919:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3985:1;3978:8;;;3813:181;;;;:::o;105:98::-;158:7;185:10;178:17;;105:98;:::o;16579:380::-;16732:1;16715:19;;:5;:19;;;;16707:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16813:1;16794:21;;:7;:21;;;;16786:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16897:6;16867:11;:18;16879:5;16867:18;;;;;;;;;;;;;;;:27;16886:7;16867:27;;;;;;;;;;;;;;;:36;;;;16935:7;16919:32;;16928:5;16919:32;;;16944:6;16919:32;;;;;;:::i;:::-;;;;;;;;16579:380;;;:::o;18733:348::-;18846:5;;;;;;;;;;;18836:15;;:6;:15;;;;:44;;;;;18856:13;:24;18870:9;18856:24;;;;;;;;;;;;;;;;;;;;;;;;;18855:25;18836:44;18832:189;;;18938:16;;18928:6;18905:20;18915:9;18905;:20::i;:::-;:29;;;;:::i;:::-;:49;;18897:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;18832:189;19031:42;19047:6;19055:9;19066:6;19031:15;:42::i;:::-;18733:348;;;:::o;4716:192::-;4802:7;4835:1;4830;:6;;4838:12;4822:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4862:9;4878:1;4874;:5;;;;:::i;:::-;4862:17;;4899:1;4892:8;;;4716:192;;;;;:::o;14152:573::-;14310:1;14292:20;;:6;:20;;;;14284:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14394:1;14373:23;;:9;:23;;;;14365:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14449:47;14470:6;14478:9;14489:6;14449:20;:47::i;:::-;14529:71;14551:6;14529:71;;;;;;;;;;;;;;;;;:9;:17;14539:6;14529:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;14509:9;:17;14519:6;14509:17;;;;;;;;;;;;;;;:91;;;;14634:32;14659:6;14634:9;:20;14644:9;14634:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14611:9;:20;14621:9;14611:20;;;;;;;;;;;;;;;:55;;;;14699:9;14682:35;;14691:6;14682:35;;;14710:6;14682:35;;;;;;:::i;:::-;;;;;;;;14152:573;;;:::o;17562:125::-;;;;:::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:262::-;;2057:2;2045:9;2036:7;2032:23;2028:32;2025:2;;;2073:1;2070;2063:12;2025:2;2116:1;2141:53;2186:7;2177:6;2166:9;2162:22;2141:53;:::i;:::-;2131:63;;2087:117;2015:196;;;;:::o;2217:118::-;2304:24;2322:5;2304:24;:::i;:::-;2299:3;2292:37;2282:53;;:::o;2341:109::-;2422:21;2437:5;2422:21;:::i;:::-;2417:3;2410:34;2400:50;;:::o;2456:364::-;;2572:39;2605:5;2572:39;:::i;:::-;2627:71;2691:6;2686:3;2627:71;:::i;:::-;2620:78;;2707:52;2752:6;2747:3;2740:4;2733:5;2729:16;2707:52;:::i;:::-;2784:29;2806:6;2784:29;:::i;:::-;2779:3;2775:39;2768:46;;2548:272;;;;;:::o;2826:387::-;;2989:67;3053:2;3048:3;2989:67;:::i;:::-;2982:74;;3086:34;3082:1;3077:3;3073:11;3066:55;3152:25;3147:2;3142:3;3138:12;3131:47;3204:2;3199:3;3195:12;3188:19;;2972:241;;;:::o;3219:367::-;;3382:67;3446:2;3441:3;3382:67;:::i;:::-;3375:74;;3479:34;3475:1;3470:3;3466:11;3459:55;3545:5;3540:2;3535:3;3531:12;3524:27;3577:2;3572:3;3568:12;3561:19;;3365:221;;;:::o;3592:382::-;;3755:67;3819:2;3814:3;3755:67;:::i;:::-;3748:74;;3852:34;3848:1;3843:3;3839:11;3832:55;3918:20;3913:2;3908:3;3904:12;3897:42;3965:2;3960:3;3956:12;3949:19;;3738:236;;;:::o;3980:321::-;;4143:67;4207:2;4202:3;4143:67;:::i;:::-;4136:74;;4240:25;4236:1;4231:3;4227:11;4220:46;4292:2;4287:3;4283:12;4276:19;;4126:175;;;:::o;4307:366::-;;4470:67;4534:2;4529:3;4470:67;:::i;:::-;4463:74;;4567:34;4563:1;4558:3;4554:11;4547:55;4633:4;4628:2;4623:3;4619:12;4612:26;4664:2;4659:3;4655:12;4648:19;;4453:220;;;:::o;4679:325::-;;4842:67;4906:2;4901:3;4842:67;:::i;:::-;4835:74;;4939:29;4935:1;4930:3;4926:11;4919:50;4995:2;4990:3;4986:12;4979:19;;4825:179;;;:::o;5010:369::-;;5173:67;5237:2;5232:3;5173:67;:::i;:::-;5166:74;;5270:34;5266:1;5261:3;5257:11;5250:55;5336:7;5331:2;5326:3;5322:12;5315:29;5370:2;5365:3;5361:12;5354:19;;5156:223;;;:::o;5385:368::-;;5548:67;5612:2;5607:3;5548:67;:::i;:::-;5541:74;;5645:34;5641:1;5636:3;5632:11;5625:55;5711:6;5706:2;5701:3;5697:12;5690:28;5744:2;5739:3;5735:12;5728:19;;5531:222;;;:::o;5759:118::-;5846:24;5864:5;5846:24;:::i;:::-;5841:3;5834:37;5824:53;;:::o;5883:112::-;5966:22;5982:5;5966:22;:::i;:::-;5961:3;5954:35;5944:51;;:::o;6001:222::-;;6132:2;6121:9;6117:18;6109:26;;6145:71;6213:1;6202:9;6198:17;6189:6;6145:71;:::i;:::-;6099:124;;;;:::o;6229:210::-;;6354:2;6343:9;6339:18;6331:26;;6367:65;6429:1;6418:9;6414:17;6405:6;6367:65;:::i;:::-;6321:118;;;;:::o;6445:313::-;;6596:2;6585:9;6581:18;6573:26;;6645:9;6639:4;6635:20;6631:1;6620:9;6616:17;6609:47;6673:78;6746:4;6737:6;6673:78;:::i;:::-;6665:86;;6563:195;;;;:::o;6764:419::-;;6968:2;6957:9;6953:18;6945:26;;7017:9;7011:4;7007:20;7003:1;6992:9;6988:17;6981:47;7045:131;7171:4;7045:131;:::i;:::-;7037:139;;6935:248;;;:::o;7189:419::-;;7393:2;7382:9;7378:18;7370:26;;7442:9;7436:4;7432:20;7428:1;7417:9;7413:17;7406:47;7470:131;7596:4;7470:131;:::i;:::-;7462:139;;7360:248;;;:::o;7614:419::-;;7818:2;7807:9;7803:18;7795:26;;7867:9;7861:4;7857:20;7853:1;7842:9;7838:17;7831:47;7895:131;8021:4;7895:131;:::i;:::-;7887:139;;7785:248;;;:::o;8039:419::-;;8243:2;8232:9;8228:18;8220:26;;8292:9;8286:4;8282:20;8278:1;8267:9;8263:17;8256:47;8320:131;8446:4;8320:131;:::i;:::-;8312:139;;8210:248;;;:::o;8464:419::-;;8668:2;8657:9;8653:18;8645:26;;8717:9;8711:4;8707:20;8703:1;8692:9;8688:17;8681:47;8745:131;8871:4;8745:131;:::i;:::-;8737:139;;8635:248;;;:::o;8889:419::-;;9093:2;9082:9;9078:18;9070:26;;9142:9;9136:4;9132:20;9128:1;9117:9;9113:17;9106:47;9170:131;9296:4;9170:131;:::i;:::-;9162:139;;9060:248;;;:::o;9314:419::-;;9518:2;9507:9;9503:18;9495:26;;9567:9;9561:4;9557:20;9553:1;9542:9;9538:17;9531:47;9595:131;9721:4;9595:131;:::i;:::-;9587:139;;9485:248;;;:::o;9739:419::-;;9943:2;9932:9;9928:18;9920:26;;9992:9;9986:4;9982:20;9978:1;9967:9;9963:17;9956:47;10020:131;10146:4;10020:131;:::i;:::-;10012:139;;9910:248;;;:::o;10164:222::-;;10295:2;10284:9;10280:18;10272:26;;10308:71;10376:1;10365:9;10361:17;10352:6;10308:71;:::i;:::-;10262:124;;;;:::o;10392:214::-;;10519:2;10508:9;10504:18;10496:26;;10532:67;10596:1;10585:9;10581:17;10572:6;10532:67;:::i;:::-;10486:120;;;;:::o;10612:99::-;;10698:5;10692:12;10682:22;;10671:40;;;:::o;10717:169::-;;10835:6;10830:3;10823:19;10875:4;10870:3;10866:14;10851:29;;10813:73;;;;:::o;10892:305::-;;10951:20;10969:1;10951:20;:::i;:::-;10946:25;;10985:20;11003:1;10985:20;:::i;:::-;10980:25;;11139:1;11071:66;11067:74;11064:1;11061:81;11058:2;;;11145:18;;:::i;:::-;11058:2;11189:1;11186;11182:9;11175:16;;10936:261;;;;:::o;11203:191::-;;11263:20;11281:1;11263:20;:::i;:::-;11258:25;;11297:20;11315:1;11297:20;:::i;:::-;11292:25;;11336:1;11333;11330:8;11327:2;;;11341:18;;:::i;:::-;11327:2;11386:1;11383;11379:9;11371:17;;11248:146;;;;:::o;11400:96::-;;11466:24;11484:5;11466:24;:::i;:::-;11455:35;;11445:51;;;:::o;11502:90::-;;11579:5;11572:13;11565:21;11554:32;;11544:48;;;:::o;11598:126::-;;11675:42;11668:5;11664:54;11653:65;;11643:81;;;:::o;11730:77::-;;11796:5;11785:16;;11775:32;;;:::o;11813:86::-;;11888:4;11881:5;11877:16;11866:27;;11856:43;;;:::o;11905:307::-;11973:1;11983:113;11997:6;11994:1;11991:13;11983:113;;;12082:1;12077:3;12073:11;12067:18;12063:1;12058:3;12054:11;12047:39;12019:2;12016:1;12012:10;12007:15;;11983:113;;;12114:6;12111:1;12108:13;12105:2;;;12194:1;12185:6;12180:3;12176:16;12169:27;12105:2;11954:258;;;;:::o;12218:320::-;;12299:1;12293:4;12289:12;12279:22;;12346:1;12340:4;12336:12;12367:18;12357:2;;12423:4;12415:6;12411:17;12401:27;;12357:2;12485;12477:6;12474:14;12454:18;12451:38;12448:2;;;12504:18;;:::i;:::-;12448:2;12269:269;;;;:::o;12544:180::-;12592:77;12589:1;12582:88;12689:4;12686:1;12679:15;12713:4;12710:1;12703:15;12730:180;12778:77;12775:1;12768:88;12875:4;12872:1;12865:15;12899:4;12896:1;12889:15;12916:102;;13008:2;13004:7;12999:2;12992:5;12988:14;12984:28;12974:38;;12964:54;;;:::o;13024:122::-;13097:24;13115:5;13097:24;:::i;:::-;13090:5;13087:35;13077:2;;13136:1;13133;13126:12;13077:2;13067:79;:::o;13152:122::-;13225:24;13243:5;13225:24;:::i;:::-;13218:5;13215:35;13205:2;;13264:1;13261;13254:12;13205:2;13195:79;:::o

Swarm Source

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