ETH Price: $3,433.15 (-0.72%)
Gas: 27 Gwei

Token

Olymp (OLYMP)
 

Overview

Max Total Supply

1,000,000,000 OLYMP

Holders

206

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
8,334,720.999054781771598731 OLYMP

Value
$0.00
0x3a111a3be1d941438d7c8ea8fcaa02fa03815f90
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
OlympToken

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-01
*/

/**
 *Submitted for verification at Etherscan.io on 2024-07-1
*/


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

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

pragma solidity ^0.8.0;

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

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


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


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



/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

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


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


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



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

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

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

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

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

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

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

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


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


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



/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

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

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


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


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





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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

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

        return true;
    }

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

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

        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

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

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

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

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

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


// File contracts/OlympToken.sol






contract OlympToken is Ownable, ERC20 {
    bool public limited;
    uint256 public maxHoldingAmount;
    uint256 public minHoldingAmount;
    uint256 public maxTransactionAmount;
    address public uniswapV2Pair;
    mapping(address => bool) public blacklists;

    constructor(uint256 _totalSupply) ERC20("Olymp", "OLYMP") {
        _mint(msg.sender, _totalSupply);
    }

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

    function setRule(bool _limited, address _uniswapV2Pair, uint256 _maxHoldingAmount, uint256 _minHoldingAmount, uint256 _maxTransactionAmount) external onlyOwner {
        limited = _limited;
        uniswapV2Pair = _uniswapV2Pair;
        maxHoldingAmount = _maxHoldingAmount;
        minHoldingAmount = _minHoldingAmount;
        maxTransactionAmount = _maxTransactionAmount;
    }

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

        if (uniswapV2Pair == address(0)) {
            require(from == owner() || to == owner(), "trading is not started");
            return;
        }

        if (limited && from == uniswapV2Pair) {
            require(amount <= maxTransactionAmount, "Exceeds max transaction amount");
        }

        if (limited && from == uniswapV2Pair) {
            require(super.balanceOf(to) + amount <= maxHoldingAmount && super.balanceOf(to) + amount >= minHoldingAmount, "Forbid");
        }
    }

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_totalSupply","type":"uint256"}],"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":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_isBlacklisting","type":"bool"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"blacklists","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limited","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minHoldingAmount","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_limited","type":"bool"},{"internalType":"address","name":"_uniswapV2Pair","type":"address"},{"internalType":"uint256","name":"_maxHoldingAmount","type":"uint256"},{"internalType":"uint256","name":"_minHoldingAmount","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmount","type":"uint256"}],"name":"setRule","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561000f575f80fd5b5060405161312e38038061312e83398181016040528101906100319190610764565b6040518060400160405280600581526020017f4f6c796d700000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4f4c594d500000000000000000000000000000000000000000000000000000008152506100b96100ae6100f160201b60201c565b6100f860201b60201c565b81600490816100c891906109c0565b5080600590816100d891906109c0565b5050506100eb33826101b960201b60201c565b50610d2f565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021e90610ae9565b60405180910390fd5b6102385f838361031d60201b60201c565b8060035f8282546102499190610b34565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825461029c9190610b34565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516103009190610b76565b60405180910390a36103195f83836106bb60201b60201c565b5050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156103bb5750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6103fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103f190610bd9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036105115761045c6106c060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806104cd575061049e6106c060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61050c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161050390610c41565b60405180910390fd5b6106b6565b60065f9054906101000a900460ff1680156105785750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156105c3576009548111156105c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b990610ca9565b60405180910390fd5b5b60065f9054906101000a900460ff16801561062a5750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156106b55760075481610642846106e760201b60201c565b61064c9190610b34565b11158015610675575060085481610668846106e760201b60201c565b6106729190610b34565b10155b6106b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ab90610d11565b60405180910390fd5b5b5b505050565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f80fd5b5f819050919050565b61074381610731565b811461074d575f80fd5b50565b5f8151905061075e8161073a565b92915050565b5f602082840312156107795761077861072d565b5b5f61078684828501610750565b91505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061080a57607f821691505b60208210810361081d5761081c6107c6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261087f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610844565b6108898683610844565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6108c46108bf6108ba84610731565b6108a1565b610731565b9050919050565b5f819050919050565b6108dd836108aa565b6108f16108e9826108cb565b848454610850565b825550505050565b5f90565b6109056108f9565b6109108184846108d4565b505050565b5b81811015610933576109285f826108fd565b600181019050610916565b5050565b601f8211156109785761094981610823565b61095284610835565b81016020851015610961578190505b61097561096d85610835565b830182610915565b50505b505050565b5f82821c905092915050565b5f6109985f198460080261097d565b1980831691505092915050565b5f6109b08383610989565b9150826002028217905092915050565b6109c98261078f565b67ffffffffffffffff8111156109e2576109e1610799565b5b6109ec82546107f3565b6109f7828285610937565b5f60209050601f831160018114610a28575f8415610a16578287015190505b610a2085826109a5565b865550610a87565b601f198416610a3686610823565b5f5b82811015610a5d57848901518255600182019150602085019450602081019050610a38565b86831015610a7a5784890151610a76601f891682610989565b8355505b6001600288020188555050505b505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f610ad3601f83610a8f565b9150610ade82610a9f565b602082019050919050565b5f6020820190508181035f830152610b0081610ac7565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f610b3e82610731565b9150610b4983610731565b9250828201905080821115610b6157610b60610b07565b5b92915050565b610b7081610731565b82525050565b5f602082019050610b895f830184610b67565b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f610bc3600b83610a8f565b9150610bce82610b8f565b602082019050919050565b5f6020820190508181035f830152610bf081610bb7565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f610c2b601683610a8f565b9150610c3682610bf7565b602082019050919050565b5f6020820190508181035f830152610c5881610c1f565b9050919050565b7f45786365656473206d6178207472616e73616374696f6e20616d6f756e7400005f82015250565b5f610c93601e83610a8f565b9150610c9e82610c5f565b602082019050919050565b5f6020820190508181035f830152610cc081610c87565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f610cfb600683610a8f565b9150610d0682610cc7565b602082019050919050565b5f6020820190508181035f830152610d2881610cef565b9050919050565b6123f280610d3c5f395ff3fe608060405234801561000f575f80fd5b506004361061014b575f3560e01c806349bd5a5e116100c157806395d89b411161007a57806395d89b411461038d578063a457c2d7146103ab578063a9059cbb146103db578063c8c8ebe41461040b578063dd62ed3e14610429578063f2fde38b146104595761014b565b806349bd5a5e146102db57806370a08231146102f9578063715018a614610329578063860a32ec1461033357806389f9a1d3146103515780638da5cb5b1461036f5761014b565b806323b872dd1161011357806323b872dd14610209578063313ce567146102395780633950935114610257578063404e51291461028757806342966c68146102a357806345610d4f146102bf5761014b565b806306fdde031461014f578063095ea7b31461016d57806316c021291461019d57806318160ddd146101cd5780631ab99e12146101eb575b5f80fd5b610157610475565b60405161016491906117cf565b60405180910390f35b61018760048036038101906101829190611880565b610505565b60405161019491906118d8565b60405180910390f35b6101b760048036038101906101b291906118f1565b610522565b6040516101c491906118d8565b60405180910390f35b6101d561053f565b6040516101e2919061192b565b60405180910390f35b6101f3610548565b604051610200919061192b565b60405180910390f35b610223600480360381019061021e9190611944565b61054e565b60405161023091906118d8565b60405180910390f35b610241610640565b60405161024e91906119af565b60405180910390f35b610271600480360381019061026c9190611880565b610648565b60405161027e91906118d8565b60405180910390f35b6102a1600480360381019061029c91906119f2565b6106ef565b005b6102bd60048036038101906102b89190611a30565b6107c3565b005b6102d960048036038101906102d49190611a5b565b6107d0565b005b6102e36108c1565b6040516102f09190611ae1565b60405180910390f35b610313600480360381019061030e91906118f1565b6108e6565b604051610320919061192b565b60405180910390f35b61033161092c565b005b61033b6109b3565b60405161034891906118d8565b60405180910390f35b6103596109c5565b604051610366919061192b565b60405180910390f35b6103776109cb565b6040516103849190611ae1565b60405180910390f35b6103956109f2565b6040516103a291906117cf565b60405180910390f35b6103c560048036038101906103c09190611880565b610a82565b6040516103d291906118d8565b60405180910390f35b6103f560048036038101906103f09190611880565b610b68565b60405161040291906118d8565b60405180910390f35b610413610b85565b604051610420919061192b565b60405180910390f35b610443600480360381019061043e9190611afa565b610b8b565b604051610450919061192b565b60405180910390f35b610473600480360381019061046e91906118f1565b610c0d565b005b60606004805461048490611b65565b80601f01602080910402602001604051908101604052809291908181526020018280546104b090611b65565b80156104fb5780601f106104d2576101008083540402835291602001916104fb565b820191905f5260205f20905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b5f610518610511610d03565b8484610d0a565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60085481565b5f61055a848484610ecd565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105a1610d03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061790611c05565b60405180910390fd5b6106348561062c610d03565b858403610d0a565b60019150509392505050565b5f6012905090565b5f6106e5610654610d03565b848460025f610661610d03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106e09190611c50565b610d0a565b6001905092915050565b6106f7610d03565b73ffffffffffffffffffffffffffffffffffffffff166107156109cb565b73ffffffffffffffffffffffffffffffffffffffff161461076b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076290611ccd565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6107cd3382611145565b50565b6107d8610d03565b73ffffffffffffffffffffffffffffffffffffffff166107f66109cb565b73ffffffffffffffffffffffffffffffffffffffff161461084c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084390611ccd565b60405180910390fd5b8460065f6101000a81548160ff02191690831515021790555083600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260078190555081600881905550806009819055505050505050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610934610d03565b73ffffffffffffffffffffffffffffffffffffffff166109526109cb565b73ffffffffffffffffffffffffffffffffffffffff16146109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099f90611ccd565b60405180910390fd5b6109b15f611313565b565b60065f9054906101000a900460ff1681565b60075481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610a0190611b65565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2d90611b65565b8015610a785780601f10610a4f57610100808354040283529160200191610a78565b820191905f5260205f20905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b5f8060025f610a8f610d03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090611d5b565b60405180910390fd5b610b5d610b54610d03565b85858403610d0a565b600191505092915050565b5f610b7b610b74610d03565b8484610ecd565b6001905092915050565b60095481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610c15610d03565b73ffffffffffffffffffffffffffffffffffffffff16610c336109cb565b73ffffffffffffffffffffffffffffffffffffffff1614610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090611ccd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90611de9565b60405180910390fd5b610d0081611313565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f90611e77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90611f05565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ec0919061192b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290611f93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090612021565b60405180910390fd5b610fb48383836113d4565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f906120af565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110c89190611c50565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161112c919061192b565b60405180910390a361113f84848461175a565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa9061213d565b60405180910390fd5b6111be825f836113d4565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611242576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611239906121cb565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f82825461129791906121e9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112fb919061192b565b60405180910390a361130e835f8461175a565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114725750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890612266565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115bc5761150d6109cb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061157857506115496109cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae906122ce565b60405180910390fd5b611755565b60065f9054906101000a900460ff1680156116235750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561166e5760095481111561166d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166490612336565b60405180910390fd5b5b60065f9054906101000a900460ff1680156116d55750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561175457600754816116e7846108e6565b6116f19190611c50565b11158015611714575060085481611707846108e6565b6117119190611c50565b10155b611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a9061239e565b60405180910390fd5b5b5b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6117a18261175f565b6117ab8185611769565b93506117bb818560208601611779565b6117c481611787565b840191505092915050565b5f6020820190508181035f8301526117e78184611797565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61181c826117f3565b9050919050565b61182c81611812565b8114611836575f80fd5b50565b5f8135905061184781611823565b92915050565b5f819050919050565b61185f8161184d565b8114611869575f80fd5b50565b5f8135905061187a81611856565b92915050565b5f8060408385031215611896576118956117ef565b5b5f6118a385828601611839565b92505060206118b48582860161186c565b9150509250929050565b5f8115159050919050565b6118d2816118be565b82525050565b5f6020820190506118eb5f8301846118c9565b92915050565b5f60208284031215611906576119056117ef565b5b5f61191384828501611839565b91505092915050565b6119258161184d565b82525050565b5f60208201905061193e5f83018461191c565b92915050565b5f805f6060848603121561195b5761195a6117ef565b5b5f61196886828701611839565b935050602061197986828701611839565b925050604061198a8682870161186c565b9150509250925092565b5f60ff82169050919050565b6119a981611994565b82525050565b5f6020820190506119c25f8301846119a0565b92915050565b6119d1816118be565b81146119db575f80fd5b50565b5f813590506119ec816119c8565b92915050565b5f8060408385031215611a0857611a076117ef565b5b5f611a1585828601611839565b9250506020611a26858286016119de565b9150509250929050565b5f60208284031215611a4557611a446117ef565b5b5f611a528482850161186c565b91505092915050565b5f805f805f60a08688031215611a7457611a736117ef565b5b5f611a81888289016119de565b9550506020611a9288828901611839565b9450506040611aa38882890161186c565b9350506060611ab48882890161186c565b9250506080611ac58882890161186c565b9150509295509295909350565b611adb81611812565b82525050565b5f602082019050611af45f830184611ad2565b92915050565b5f8060408385031215611b1057611b0f6117ef565b5b5f611b1d85828601611839565b9250506020611b2e85828601611839565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611b7c57607f821691505b602082108103611b8f57611b8e611b38565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611bef602883611769565b9150611bfa82611b95565b604082019050919050565b5f6020820190508181035f830152611c1c81611be3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c5a8261184d565b9150611c658361184d565b9250828201905080821115611c7d57611c7c611c23565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611cb7602083611769565b9150611cc282611c83565b602082019050919050565b5f6020820190508181035f830152611ce481611cab565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611d45602583611769565b9150611d5082611ceb565b604082019050919050565b5f6020820190508181035f830152611d7281611d39565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611dd3602683611769565b9150611dde82611d79565b604082019050919050565b5f6020820190508181035f830152611e0081611dc7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611e61602483611769565b9150611e6c82611e07565b604082019050919050565b5f6020820190508181035f830152611e8e81611e55565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611eef602283611769565b9150611efa82611e95565b604082019050919050565b5f6020820190508181035f830152611f1c81611ee3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611f7d602583611769565b9150611f8882611f23565b604082019050919050565b5f6020820190508181035f830152611faa81611f71565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61200b602383611769565b915061201682611fb1565b604082019050919050565b5f6020820190508181035f83015261203881611fff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612099602683611769565b91506120a48261203f565b604082019050919050565b5f6020820190508181035f8301526120c68161208d565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612127602183611769565b9150612132826120cd565b604082019050919050565b5f6020820190508181035f8301526121548161211b565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121b5602283611769565b91506121c08261215b565b604082019050919050565b5f6020820190508181035f8301526121e2816121a9565b9050919050565b5f6121f38261184d565b91506121fe8361184d565b925082820390508181111561221657612215611c23565b5b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f612250600b83611769565b915061225b8261221c565b602082019050919050565b5f6020820190508181035f83015261227d81612244565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f6122b8601683611769565b91506122c382612284565b602082019050919050565b5f6020820190508181035f8301526122e5816122ac565b9050919050565b7f45786365656473206d6178207472616e73616374696f6e20616d6f756e7400005f82015250565b5f612320601e83611769565b915061232b826122ec565b602082019050919050565b5f6020820190508181035f83015261234d81612314565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f612388600683611769565b915061239382612354565b602082019050919050565b5f6020820190508181035f8301526123b58161237c565b905091905056fea26469706673582212206aece3e8d3b2978f8bf344c07c127e6e78e905f8b123f6c5128c7d86464f07d864736f6c634300081a00330000000000000000000000000000000000000000033b2e3c9fd0803ce8000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061014b575f3560e01c806349bd5a5e116100c157806395d89b411161007a57806395d89b411461038d578063a457c2d7146103ab578063a9059cbb146103db578063c8c8ebe41461040b578063dd62ed3e14610429578063f2fde38b146104595761014b565b806349bd5a5e146102db57806370a08231146102f9578063715018a614610329578063860a32ec1461033357806389f9a1d3146103515780638da5cb5b1461036f5761014b565b806323b872dd1161011357806323b872dd14610209578063313ce567146102395780633950935114610257578063404e51291461028757806342966c68146102a357806345610d4f146102bf5761014b565b806306fdde031461014f578063095ea7b31461016d57806316c021291461019d57806318160ddd146101cd5780631ab99e12146101eb575b5f80fd5b610157610475565b60405161016491906117cf565b60405180910390f35b61018760048036038101906101829190611880565b610505565b60405161019491906118d8565b60405180910390f35b6101b760048036038101906101b291906118f1565b610522565b6040516101c491906118d8565b60405180910390f35b6101d561053f565b6040516101e2919061192b565b60405180910390f35b6101f3610548565b604051610200919061192b565b60405180910390f35b610223600480360381019061021e9190611944565b61054e565b60405161023091906118d8565b60405180910390f35b610241610640565b60405161024e91906119af565b60405180910390f35b610271600480360381019061026c9190611880565b610648565b60405161027e91906118d8565b60405180910390f35b6102a1600480360381019061029c91906119f2565b6106ef565b005b6102bd60048036038101906102b89190611a30565b6107c3565b005b6102d960048036038101906102d49190611a5b565b6107d0565b005b6102e36108c1565b6040516102f09190611ae1565b60405180910390f35b610313600480360381019061030e91906118f1565b6108e6565b604051610320919061192b565b60405180910390f35b61033161092c565b005b61033b6109b3565b60405161034891906118d8565b60405180910390f35b6103596109c5565b604051610366919061192b565b60405180910390f35b6103776109cb565b6040516103849190611ae1565b60405180910390f35b6103956109f2565b6040516103a291906117cf565b60405180910390f35b6103c560048036038101906103c09190611880565b610a82565b6040516103d291906118d8565b60405180910390f35b6103f560048036038101906103f09190611880565b610b68565b60405161040291906118d8565b60405180910390f35b610413610b85565b604051610420919061192b565b60405180910390f35b610443600480360381019061043e9190611afa565b610b8b565b604051610450919061192b565b60405180910390f35b610473600480360381019061046e91906118f1565b610c0d565b005b60606004805461048490611b65565b80601f01602080910402602001604051908101604052809291908181526020018280546104b090611b65565b80156104fb5780601f106104d2576101008083540402835291602001916104fb565b820191905f5260205f20905b8154815290600101906020018083116104de57829003601f168201915b5050505050905090565b5f610518610511610d03565b8484610d0a565b6001905092915050565b600b602052805f5260405f205f915054906101000a900460ff1681565b5f600354905090565b60085481565b5f61055a848484610ecd565b5f60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6105a1610d03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610620576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161061790611c05565b60405180910390fd5b6106348561062c610d03565b858403610d0a565b60019150509392505050565b5f6012905090565b5f6106e5610654610d03565b848460025f610661610d03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546106e09190611c50565b610d0a565b6001905092915050565b6106f7610d03565b73ffffffffffffffffffffffffffffffffffffffff166107156109cb565b73ffffffffffffffffffffffffffffffffffffffff161461076b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161076290611ccd565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6107cd3382611145565b50565b6107d8610d03565b73ffffffffffffffffffffffffffffffffffffffff166107f66109cb565b73ffffffffffffffffffffffffffffffffffffffff161461084c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084390611ccd565b60405180910390fd5b8460065f6101000a81548160ff02191690831515021790555083600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260078190555081600881905550806009819055505050505050565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610934610d03565b73ffffffffffffffffffffffffffffffffffffffff166109526109cb565b73ffffffffffffffffffffffffffffffffffffffff16146109a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099f90611ccd565b60405180910390fd5b6109b15f611313565b565b60065f9054906101000a900460ff1681565b60075481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060058054610a0190611b65565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2d90611b65565b8015610a785780601f10610a4f57610100808354040283529160200191610a78565b820191905f5260205f20905b815481529060010190602001808311610a5b57829003601f168201915b5050505050905090565b5f8060025f610a8f610d03565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090611d5b565b60405180910390fd5b610b5d610b54610d03565b85858403610d0a565b600191505092915050565b5f610b7b610b74610d03565b8484610ecd565b6001905092915050565b60095481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610c15610d03565b73ffffffffffffffffffffffffffffffffffffffff16610c336109cb565b73ffffffffffffffffffffffffffffffffffffffff1614610c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8090611ccd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cee90611de9565b60405180910390fd5b610d0081611313565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f90611e77565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90611f05565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ec0919061192b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290611f93565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa090612021565b60405180910390fd5b610fb48383836113d4565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f906120af565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546110c89190611c50565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161112c919061192b565b60405180910390a361113f84848461175a565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111aa9061213d565b60405180910390fd5b6111be825f836113d4565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015611242576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611239906121cb565b60405180910390fd5b81810360015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160035f82825461129791906121e9565b925050819055505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112fb919061192b565b60405180910390a361130e835f8461175a565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156114725750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6114b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a890612266565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036115bc5761150d6109cb565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061157857506115496109cb565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b6115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ae906122ce565b60405180910390fd5b611755565b60065f9054906101000a900460ff1680156116235750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561166e5760095481111561166d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166490612336565b60405180910390fd5b5b60065f9054906101000a900460ff1680156116d55750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561175457600754816116e7846108e6565b6116f19190611c50565b11158015611714575060085481611707846108e6565b6117119190611c50565b10155b611753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174a9061239e565b60405180910390fd5b5b5b505050565b505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f6117a18261175f565b6117ab8185611769565b93506117bb818560208601611779565b6117c481611787565b840191505092915050565b5f6020820190508181035f8301526117e78184611797565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61181c826117f3565b9050919050565b61182c81611812565b8114611836575f80fd5b50565b5f8135905061184781611823565b92915050565b5f819050919050565b61185f8161184d565b8114611869575f80fd5b50565b5f8135905061187a81611856565b92915050565b5f8060408385031215611896576118956117ef565b5b5f6118a385828601611839565b92505060206118b48582860161186c565b9150509250929050565b5f8115159050919050565b6118d2816118be565b82525050565b5f6020820190506118eb5f8301846118c9565b92915050565b5f60208284031215611906576119056117ef565b5b5f61191384828501611839565b91505092915050565b6119258161184d565b82525050565b5f60208201905061193e5f83018461191c565b92915050565b5f805f6060848603121561195b5761195a6117ef565b5b5f61196886828701611839565b935050602061197986828701611839565b925050604061198a8682870161186c565b9150509250925092565b5f60ff82169050919050565b6119a981611994565b82525050565b5f6020820190506119c25f8301846119a0565b92915050565b6119d1816118be565b81146119db575f80fd5b50565b5f813590506119ec816119c8565b92915050565b5f8060408385031215611a0857611a076117ef565b5b5f611a1585828601611839565b9250506020611a26858286016119de565b9150509250929050565b5f60208284031215611a4557611a446117ef565b5b5f611a528482850161186c565b91505092915050565b5f805f805f60a08688031215611a7457611a736117ef565b5b5f611a81888289016119de565b9550506020611a9288828901611839565b9450506040611aa38882890161186c565b9350506060611ab48882890161186c565b9250506080611ac58882890161186c565b9150509295509295909350565b611adb81611812565b82525050565b5f602082019050611af45f830184611ad2565b92915050565b5f8060408385031215611b1057611b0f6117ef565b5b5f611b1d85828601611839565b9250506020611b2e85828601611839565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680611b7c57607f821691505b602082108103611b8f57611b8e611b38565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f611bef602883611769565b9150611bfa82611b95565b604082019050919050565b5f6020820190508181035f830152611c1c81611be3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f611c5a8261184d565b9150611c658361184d565b9250828201905080821115611c7d57611c7c611c23565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f611cb7602083611769565b9150611cc282611c83565b602082019050919050565b5f6020820190508181035f830152611ce481611cab565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f611d45602583611769565b9150611d5082611ceb565b604082019050919050565b5f6020820190508181035f830152611d7281611d39565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f611dd3602683611769565b9150611dde82611d79565b604082019050919050565b5f6020820190508181035f830152611e0081611dc7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611e61602483611769565b9150611e6c82611e07565b604082019050919050565b5f6020820190508181035f830152611e8e81611e55565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611eef602283611769565b9150611efa82611e95565b604082019050919050565b5f6020820190508181035f830152611f1c81611ee3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f611f7d602583611769565b9150611f8882611f23565b604082019050919050565b5f6020820190508181035f830152611faa81611f71565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61200b602383611769565b915061201682611fb1565b604082019050919050565b5f6020820190508181035f83015261203881611fff565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f612099602683611769565b91506120a48261203f565b604082019050919050565b5f6020820190508181035f8301526120c68161208d565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f612127602183611769565b9150612132826120cd565b604082019050919050565b5f6020820190508181035f8301526121548161211b565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e5f8201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b5f6121b5602283611769565b91506121c08261215b565b604082019050919050565b5f6020820190508181035f8301526121e2816121a9565b9050919050565b5f6121f38261184d565b91506121fe8361184d565b925082820390508181111561221657612215611c23565b5b92915050565b7f426c61636b6c69737465640000000000000000000000000000000000000000005f82015250565b5f612250600b83611769565b915061225b8261221c565b602082019050919050565b5f6020820190508181035f83015261227d81612244565b9050919050565b7f74726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f6122b8601683611769565b91506122c382612284565b602082019050919050565b5f6020820190508181035f8301526122e5816122ac565b9050919050565b7f45786365656473206d6178207472616e73616374696f6e20616d6f756e7400005f82015250565b5f612320601e83611769565b915061232b826122ec565b602082019050919050565b5f6020820190508181035f83015261234d81612314565b9050919050565b7f466f7262696400000000000000000000000000000000000000000000000000005f82015250565b5f612388600683611769565b915061239382612354565b602082019050919050565b5f6020820190508181035f8301526123b58161237c565b905091905056fea26469706673582212206aece3e8d3b2978f8bf344c07c127e6e78e905f8b123f6c5128c7d86464f07d864736f6c634300081a0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000

-----Decoded View---------------
Arg [0] : _totalSupply (uint256): 1000000000000000000000000000

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000


Deployed Bytecode Sourcemap

19237:1738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9228:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11395:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19461:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10348:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19346:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12046:492;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10190:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12947:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19628:135;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20891:81;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19771:387;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19426:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10519:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2698:103;;;:::i;:::-;;19282:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19308:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2047:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9447:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13665:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10859:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19384:35;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11097:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2956:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9228:100;9282:13;9315:5;9308:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9228:100;:::o;11395:169::-;11478:4;11495:39;11504:12;:10;:12::i;:::-;11518:7;11527:6;11495:8;:39::i;:::-;11552:4;11545:11;;11395:169;;;;:::o;19461:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;10348:108::-;10409:7;10436:12;;10429:19;;10348:108;:::o;19346:31::-;;;;:::o;12046:492::-;12186:4;12203:36;12213:6;12221:9;12232:6;12203:9;:36::i;:::-;12252:24;12279:11;:19;12291:6;12279:19;;;;;;;;;;;;;;;:33;12299:12;:10;:12::i;:::-;12279:33;;;;;;;;;;;;;;;;12252:60;;12351:6;12331:16;:26;;12323:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;12438:57;12447:6;12455:12;:10;:12::i;:::-;12488:6;12469:16;:25;12438:8;:57::i;:::-;12526:4;12519:11;;;12046:492;;;;;:::o;10190:93::-;10248:5;10273:2;10266:9;;10190:93;:::o;12947:215::-;13035:4;13052:80;13061:12;:10;:12::i;:::-;13075:7;13121:10;13084:11;:25;13096:12;:10;:12::i;:::-;13084:25;;;;;;;;;;;;;;;:34;13110:7;13084:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;13052:8;:80::i;:::-;13150:4;13143:11;;12947:215;;;;:::o;19628:135::-;2278:12;:10;:12::i;:::-;2267:23;;:7;:5;:7::i;:::-;:23;;;2259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19740:15:::1;19717:10;:20;19728:8;19717:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19628:135:::0;;:::o;20891:81::-;20940:24;20946:10;20958:5;20940;:24::i;:::-;20891:81;:::o;19771:387::-;2278:12;:10;:12::i;:::-;2267:23;;:7;:5;:7::i;:::-;:23;;;2259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19952:8:::1;19942:7;;:18;;;;;;;;;;;;;;;;;;19987:14;19971:13;;:30;;;;;;;;;;;;;;;;;;20031:17;20012:16;:36;;;;20078:17;20059:16;:36;;;;20129:21;20106:20;:44;;;;19771:387:::0;;;;;:::o;19426:28::-;;;;;;;;;;;;;:::o;10519:127::-;10593:7;10620:9;:18;10630:7;10620:18;;;;;;;;;;;;;;;;10613:25;;10519:127;;;:::o;2698:103::-;2278:12;:10;:12::i;:::-;2267:23;;:7;:5;:7::i;:::-;:23;;;2259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2763:30:::1;2790:1;2763:18;:30::i;:::-;2698:103::o:0;19282:19::-;;;;;;;;;;;;;:::o;19308:31::-;;;;:::o;2047:87::-;2093:7;2120:6;;;;;;;;;;;2113:13;;2047:87;:::o;9447:104::-;9503:13;9536:7;9529:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9447:104;:::o;13665:413::-;13758:4;13775:24;13802:11;:25;13814:12;:10;:12::i;:::-;13802:25;;;;;;;;;;;;;;;:34;13828:7;13802:34;;;;;;;;;;;;;;;;13775:61;;13875:15;13855:16;:35;;13847:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;13968:67;13977:12;:10;:12::i;:::-;13991:7;14019:15;14000:16;:34;13968:8;:67::i;:::-;14066:4;14059:11;;;13665:413;;;;:::o;10859:175::-;10945:4;10962:42;10972:12;:10;:12::i;:::-;10986:9;10997:6;10962:9;:42::i;:::-;11022:4;11015:11;;10859:175;;;;:::o;19384:35::-;;;;:::o;11097:151::-;11186:7;11213:11;:18;11225:5;11213:18;;;;;;;;;;;;;;;:27;11232:7;11213:27;;;;;;;;;;;;;;;;11206:34;;11097:151;;;;:::o;2956:201::-;2278:12;:10;:12::i;:::-;2267:23;;:7;:5;:7::i;:::-;:23;;;2259:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3065:1:::1;3045:22;;:8;:22;;::::0;3037:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3121:28;3140:8;3121:18;:28::i;:::-;2956:201:::0;:::o;788:98::-;841:7;868:10;861:17;;788:98;:::o;17349:380::-;17502:1;17485:19;;:5;:19;;;17477:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17583:1;17564:21;;:7;:21;;;17556:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17667:6;17637:11;:18;17649:5;17637:18;;;;;;;;;;;;;;;:27;17656:7;17637:27;;;;;;;;;;;;;;;:36;;;;17705:7;17689:32;;17698:5;17689:32;;;17714:6;17689:32;;;;;;:::i;:::-;;;;;;;;17349:380;;;:::o;14568:733::-;14726:1;14708:20;;:6;:20;;;14700:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14810:1;14789:23;;:9;:23;;;14781:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14865:47;14886:6;14894:9;14905:6;14865:20;:47::i;:::-;14925:21;14949:9;:17;14959:6;14949:17;;;;;;;;;;;;;;;;14925:41;;15002:6;14985:13;:23;;14977:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;15123:6;15107:13;:22;15087:9;:17;15097:6;15087:17;;;;;;;;;;;;;;;:42;;;;15175:6;15151:9;:20;15161:9;15151:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;15216:9;15199:35;;15208:6;15199:35;;;15227:6;15199:35;;;;;;:::i;:::-;;;;;;;;15247:46;15267:6;15275:9;15286:6;15247:19;:46::i;:::-;14689:612;14568:733;;;:::o;16320:591::-;16423:1;16404:21;;:7;:21;;;16396:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16476:49;16497:7;16514:1;16518:6;16476:20;:49::i;:::-;16538:22;16563:9;:18;16573:7;16563:18;;;;;;;;;;;;;;;;16538:43;;16618:6;16600:14;:24;;16592:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16737:6;16720:14;:23;16699:9;:18;16709:7;16699:18;;;;;;;;;;;;;;;:44;;;;16781:6;16765:12;;:22;;;;;;;:::i;:::-;;;;;;;;16831:1;16805:37;;16814:7;16805:37;;;16835:6;16805:37;;;;;;:::i;:::-;;;;;;;;16855:48;16875:7;16892:1;16896:6;16855:19;:48::i;:::-;16385:526;16320:591;;:::o;3317:191::-;3391:16;3410:6;;;;;;;;;;;3391:25;;3436:8;3427:6;;:17;;;;;;;;;;;;;;;;;;3491:8;3460:40;;3481:8;3460:40;;;;;;;;;;;;3380:128;3317:191;:::o;20166:717::-;20318:10;:14;20329:2;20318:14;;;;;;;;;;;;;;;;;;;;;;;;;20317:15;:36;;;;;20337:10;:16;20348:4;20337:16;;;;;;;;;;;;;;;;;;;;;;;;;20336:17;20317:36;20309:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;20411:1;20386:27;;:13;;;;;;;;;;;:27;;;20382:148;;20446:7;:5;:7::i;:::-;20438:15;;:4;:15;;;:32;;;;20463:7;:5;:7::i;:::-;20457:13;;:2;:13;;;20438:32;20430:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20512:7;;20382:148;20546:7;;;;;;;;;;;:32;;;;;20565:13;;;;;;;;;;;20557:21;;:4;:21;;;20546:32;20542:138;;;20613:20;;20603:6;:30;;20595:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;20542:138;20696:7;;;;;;;;;;;:32;;;;;20715:13;;;;;;;;;;;20707:21;;:4;:21;;;20696:32;20692:184;;;20785:16;;20775:6;20753:19;20769:2;20753:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;:100;;;;;20837:16;;20827:6;20805:19;20821:2;20805:15;:19::i;:::-;:28;;;;:::i;:::-;:48;;20753:100;20745:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;20692:184;20166:717;;;;:::o;19058:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:329::-;3398:6;3447:2;3435:9;3426:7;3422:23;3418:32;3415:119;;;3453:79;;:::i;:::-;3415:119;3573:1;3598:53;3643:7;3634:6;3623:9;3619:22;3598:53;:::i;:::-;3588:63;;3544:117;3339:329;;;;:::o;3674:118::-;3761:24;3779:5;3761:24;:::i;:::-;3756:3;3749:37;3674:118;;:::o;3798:222::-;3891:4;3929:2;3918:9;3914:18;3906:26;;3942:71;4010:1;3999:9;3995:17;3986:6;3942:71;:::i;:::-;3798:222;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:116::-;5151:21;5166:5;5151:21;:::i;:::-;5144:5;5141:32;5131:60;;5187:1;5184;5177:12;5131:60;5081:116;:::o;5203:133::-;5246:5;5284:6;5271:20;5262:29;;5300:30;5324:5;5300:30;:::i;:::-;5203:133;;;;:::o;5342:468::-;5407:6;5415;5464:2;5452:9;5443:7;5439:23;5435:32;5432:119;;;5470:79;;:::i;:::-;5432:119;5590:1;5615:53;5660:7;5651:6;5640:9;5636:22;5615:53;:::i;:::-;5605:63;;5561:117;5717:2;5743:50;5785:7;5776:6;5765:9;5761:22;5743:50;:::i;:::-;5733:60;;5688:115;5342:468;;;;;:::o;5816:329::-;5875:6;5924:2;5912:9;5903:7;5899:23;5895:32;5892:119;;;5930:79;;:::i;:::-;5892:119;6050:1;6075:53;6120:7;6111:6;6100:9;6096:22;6075:53;:::i;:::-;6065:63;;6021:117;5816:329;;;;:::o;6151:905::-;6243:6;6251;6259;6267;6275;6324:3;6312:9;6303:7;6299:23;6295:33;6292:120;;;6331:79;;:::i;:::-;6292:120;6451:1;6476:50;6518:7;6509:6;6498:9;6494:22;6476:50;:::i;:::-;6466:60;;6422:114;6575:2;6601:53;6646:7;6637:6;6626:9;6622:22;6601:53;:::i;:::-;6591:63;;6546:118;6703:2;6729:53;6774:7;6765:6;6754:9;6750:22;6729:53;:::i;:::-;6719:63;;6674:118;6831:2;6857:53;6902:7;6893:6;6882:9;6878:22;6857:53;:::i;:::-;6847:63;;6802:118;6959:3;6986:53;7031:7;7022:6;7011:9;7007:22;6986:53;:::i;:::-;6976:63;;6930:119;6151:905;;;;;;;;:::o;7062:118::-;7149:24;7167:5;7149:24;:::i;:::-;7144:3;7137:37;7062:118;;:::o;7186:222::-;7279:4;7317:2;7306:9;7302:18;7294:26;;7330:71;7398:1;7387:9;7383:17;7374:6;7330:71;:::i;:::-;7186:222;;;;:::o;7414:474::-;7482:6;7490;7539:2;7527:9;7518:7;7514:23;7510:32;7507:119;;;7545:79;;:::i;:::-;7507:119;7665:1;7690:53;7735:7;7726:6;7715:9;7711:22;7690:53;:::i;:::-;7680:63;;7636:117;7792:2;7818:53;7863:7;7854:6;7843:9;7839:22;7818:53;:::i;:::-;7808:63;;7763:118;7414:474;;;;;:::o;7894:180::-;7942:77;7939:1;7932:88;8039:4;8036:1;8029:15;8063:4;8060:1;8053:15;8080:320;8124:6;8161:1;8155:4;8151:12;8141:22;;8208:1;8202:4;8198:12;8229:18;8219:81;;8285:4;8277:6;8273:17;8263:27;;8219:81;8347:2;8339:6;8336:14;8316:18;8313:38;8310:84;;8366:18;;:::i;:::-;8310:84;8131:269;8080:320;;;:::o;8406:227::-;8546:34;8542:1;8534:6;8530:14;8523:58;8615:10;8610:2;8602:6;8598:15;8591:35;8406:227;:::o;8639:366::-;8781:3;8802:67;8866:2;8861:3;8802:67;:::i;:::-;8795:74;;8878:93;8967:3;8878:93;:::i;:::-;8996:2;8991:3;8987:12;8980:19;;8639:366;;;:::o;9011:419::-;9177:4;9215:2;9204:9;9200:18;9192:26;;9264:9;9258:4;9254:20;9250:1;9239:9;9235:17;9228:47;9292:131;9418:4;9292:131;:::i;:::-;9284:139;;9011:419;;;:::o;9436:180::-;9484:77;9481:1;9474:88;9581:4;9578:1;9571:15;9605:4;9602:1;9595:15;9622:191;9662:3;9681:20;9699:1;9681:20;:::i;:::-;9676:25;;9715:20;9733:1;9715:20;:::i;:::-;9710:25;;9758:1;9755;9751:9;9744:16;;9779:3;9776:1;9773:10;9770:36;;;9786:18;;:::i;:::-;9770:36;9622:191;;;;:::o;9819:182::-;9959:34;9955:1;9947:6;9943:14;9936:58;9819:182;:::o;10007:366::-;10149:3;10170:67;10234:2;10229:3;10170:67;:::i;:::-;10163:74;;10246:93;10335:3;10246:93;:::i;:::-;10364:2;10359:3;10355:12;10348:19;;10007:366;;;:::o;10379:419::-;10545:4;10583:2;10572:9;10568:18;10560:26;;10632:9;10626:4;10622:20;10618:1;10607:9;10603:17;10596:47;10660:131;10786:4;10660:131;:::i;:::-;10652:139;;10379:419;;;:::o;10804:224::-;10944:34;10940:1;10932:6;10928:14;10921:58;11013:7;11008:2;11000:6;10996:15;10989:32;10804:224;:::o;11034:366::-;11176:3;11197:67;11261:2;11256:3;11197:67;:::i;:::-;11190:74;;11273:93;11362:3;11273:93;:::i;:::-;11391:2;11386:3;11382:12;11375:19;;11034:366;;;:::o;11406:419::-;11572:4;11610:2;11599:9;11595:18;11587:26;;11659:9;11653:4;11649:20;11645:1;11634:9;11630:17;11623:47;11687:131;11813:4;11687:131;:::i;:::-;11679:139;;11406:419;;;:::o;11831:225::-;11971:34;11967:1;11959:6;11955:14;11948:58;12040:8;12035:2;12027:6;12023:15;12016:33;11831:225;:::o;12062:366::-;12204:3;12225:67;12289:2;12284:3;12225:67;:::i;:::-;12218:74;;12301:93;12390:3;12301:93;:::i;:::-;12419:2;12414:3;12410:12;12403:19;;12062:366;;;:::o;12434:419::-;12600:4;12638:2;12627:9;12623:18;12615:26;;12687:9;12681:4;12677:20;12673:1;12662:9;12658:17;12651:47;12715:131;12841:4;12715:131;:::i;:::-;12707:139;;12434:419;;;:::o;12859:223::-;12999:34;12995:1;12987:6;12983:14;12976:58;13068:6;13063:2;13055:6;13051:15;13044:31;12859:223;:::o;13088:366::-;13230:3;13251:67;13315:2;13310:3;13251:67;:::i;:::-;13244:74;;13327:93;13416:3;13327:93;:::i;:::-;13445:2;13440:3;13436:12;13429:19;;13088:366;;;:::o;13460:419::-;13626:4;13664:2;13653:9;13649:18;13641:26;;13713:9;13707:4;13703:20;13699:1;13688:9;13684:17;13677:47;13741:131;13867:4;13741:131;:::i;:::-;13733:139;;13460:419;;;:::o;13885:221::-;14025:34;14021:1;14013:6;14009:14;14002:58;14094:4;14089:2;14081:6;14077:15;14070:29;13885:221;:::o;14112:366::-;14254:3;14275:67;14339:2;14334:3;14275:67;:::i;:::-;14268:74;;14351:93;14440:3;14351:93;:::i;:::-;14469:2;14464:3;14460:12;14453:19;;14112:366;;;:::o;14484:419::-;14650:4;14688:2;14677:9;14673:18;14665:26;;14737:9;14731:4;14727:20;14723:1;14712:9;14708:17;14701:47;14765:131;14891:4;14765:131;:::i;:::-;14757:139;;14484:419;;;:::o;14909:224::-;15049:34;15045:1;15037:6;15033:14;15026:58;15118:7;15113:2;15105:6;15101:15;15094:32;14909:224;:::o;15139:366::-;15281:3;15302:67;15366:2;15361:3;15302:67;:::i;:::-;15295:74;;15378:93;15467:3;15378:93;:::i;:::-;15496:2;15491:3;15487:12;15480:19;;15139:366;;;:::o;15511:419::-;15677:4;15715:2;15704:9;15700:18;15692:26;;15764:9;15758:4;15754:20;15750:1;15739:9;15735:17;15728:47;15792:131;15918:4;15792:131;:::i;:::-;15784:139;;15511:419;;;:::o;15936:222::-;16076:34;16072:1;16064:6;16060:14;16053:58;16145:5;16140:2;16132:6;16128:15;16121:30;15936:222;:::o;16164:366::-;16306:3;16327:67;16391:2;16386:3;16327:67;:::i;:::-;16320:74;;16403:93;16492:3;16403:93;:::i;:::-;16521:2;16516:3;16512:12;16505:19;;16164:366;;;:::o;16536:419::-;16702:4;16740:2;16729:9;16725:18;16717:26;;16789:9;16783:4;16779:20;16775:1;16764:9;16760:17;16753:47;16817:131;16943:4;16817:131;:::i;:::-;16809:139;;16536:419;;;:::o;16961:225::-;17101:34;17097:1;17089:6;17085:14;17078:58;17170:8;17165:2;17157:6;17153:15;17146:33;16961:225;:::o;17192:366::-;17334:3;17355:67;17419:2;17414:3;17355:67;:::i;:::-;17348:74;;17431:93;17520:3;17431:93;:::i;:::-;17549:2;17544:3;17540:12;17533:19;;17192:366;;;:::o;17564:419::-;17730:4;17768:2;17757:9;17753:18;17745:26;;17817:9;17811:4;17807:20;17803:1;17792:9;17788:17;17781:47;17845:131;17971:4;17845:131;:::i;:::-;17837:139;;17564:419;;;:::o;17989:220::-;18129:34;18125:1;18117:6;18113:14;18106:58;18198:3;18193:2;18185:6;18181:15;18174:28;17989:220;:::o;18215:366::-;18357:3;18378:67;18442:2;18437:3;18378:67;:::i;:::-;18371:74;;18454:93;18543:3;18454:93;:::i;:::-;18572:2;18567:3;18563:12;18556:19;;18215:366;;;:::o;18587:419::-;18753:4;18791:2;18780:9;18776:18;18768:26;;18840:9;18834:4;18830:20;18826:1;18815:9;18811:17;18804:47;18868:131;18994:4;18868:131;:::i;:::-;18860:139;;18587:419;;;:::o;19012:221::-;19152:34;19148:1;19140:6;19136:14;19129:58;19221:4;19216:2;19208:6;19204:15;19197:29;19012:221;:::o;19239:366::-;19381:3;19402:67;19466:2;19461:3;19402:67;:::i;:::-;19395:74;;19478:93;19567:3;19478:93;:::i;:::-;19596:2;19591:3;19587:12;19580:19;;19239:366;;;:::o;19611:419::-;19777:4;19815:2;19804:9;19800:18;19792:26;;19864:9;19858:4;19854:20;19850:1;19839:9;19835:17;19828:47;19892:131;20018:4;19892:131;:::i;:::-;19884:139;;19611:419;;;:::o;20036:194::-;20076:4;20096:20;20114:1;20096:20;:::i;:::-;20091:25;;20130:20;20148:1;20130:20;:::i;:::-;20125:25;;20174:1;20171;20167:9;20159:17;;20198:1;20192:4;20189:11;20186:37;;;20203:18;;:::i;:::-;20186:37;20036:194;;;;:::o;20236:161::-;20376:13;20372:1;20364:6;20360:14;20353:37;20236:161;:::o;20403:366::-;20545:3;20566:67;20630:2;20625:3;20566:67;:::i;:::-;20559:74;;20642:93;20731:3;20642:93;:::i;:::-;20760:2;20755:3;20751:12;20744:19;;20403:366;;;:::o;20775:419::-;20941:4;20979:2;20968:9;20964:18;20956:26;;21028:9;21022:4;21018:20;21014:1;21003:9;20999:17;20992:47;21056:131;21182:4;21056:131;:::i;:::-;21048:139;;20775:419;;;:::o;21200:172::-;21340:24;21336:1;21328:6;21324:14;21317:48;21200:172;:::o;21378:366::-;21520:3;21541:67;21605:2;21600:3;21541:67;:::i;:::-;21534:74;;21617:93;21706:3;21617:93;:::i;:::-;21735:2;21730:3;21726:12;21719:19;;21378:366;;;:::o;21750:419::-;21916:4;21954:2;21943:9;21939:18;21931:26;;22003:9;21997:4;21993:20;21989:1;21978:9;21974:17;21967:47;22031:131;22157:4;22031:131;:::i;:::-;22023:139;;21750:419;;;:::o;22175:180::-;22315:32;22311:1;22303:6;22299:14;22292:56;22175:180;:::o;22361:366::-;22503:3;22524:67;22588:2;22583:3;22524:67;:::i;:::-;22517:74;;22600:93;22689:3;22600:93;:::i;:::-;22718:2;22713:3;22709:12;22702:19;;22361:366;;;:::o;22733:419::-;22899:4;22937:2;22926:9;22922:18;22914:26;;22986:9;22980:4;22976:20;22972:1;22961:9;22957:17;22950:47;23014:131;23140:4;23014:131;:::i;:::-;23006:139;;22733:419;;;:::o;23158:156::-;23298:8;23294:1;23286:6;23282:14;23275:32;23158:156;:::o;23320:365::-;23462:3;23483:66;23547:1;23542:3;23483:66;:::i;:::-;23476:73;;23558:93;23647:3;23558:93;:::i;:::-;23676:2;23671:3;23667:12;23660:19;;23320:365;;;:::o;23691:419::-;23857:4;23895:2;23884:9;23880:18;23872:26;;23944:9;23938:4;23934:20;23930:1;23919:9;23915:17;23908:47;23972:131;24098:4;23972:131;:::i;:::-;23964:139;;23691:419;;;:::o

Swarm Source

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