Mumbai Testnet

Token

cs (anyCS)
ERC-20

Overview

Max Total Supply

0 anyCS

Holders

1

Market

Price

$0.00 @ 0.000000 MATIC

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Balance
0 anyCS
0xfa9da51631268a30ec3ddd1ccbf46c65fad99251
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV6ERC20

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at mumbai.polygonscan.com on 2022-10-28
*/

/**
 *Submitted for verification at BscScan.com on 2022-05-20
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.8.2;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract AnyswapV6ERC20 is IERC20 {
    using SafeERC20 for IERC20;
    string public name;
    string public symbol;
    uint8  public immutable override decimals;

    address public immutable underlying;
    bool public constant underlyingIsMinted = false;

    /// @dev Records amount of AnyswapV6ERC20 token owned by account.
    mapping (address => uint256) public override balanceOf;
    uint256 private _totalSupply;

    // init flag for setting immediate vault, needed for CREATE2 support
    bool private _init;

    // flag to enable/disable swapout vs vault.burn so multiple events are triggered
    bool private _vaultOnly;

    // delay for timelock functions
    uint public constant DELAY = 0 ;

    // set of minters, can be this bridge or other bridges
    mapping(address => bool) public isMinter;
    address[] public minters;

    // primary controller of the token contract
    address public vault;

    address public pendingMinter;
    uint public delayMinter;

    address public pendingVault;
    uint public delayVault;

    modifier onlyAuth() {
        require(isMinter[msg.sender], "AnyswapV6ERC20: FORBIDDEN");
        _;
    }

    modifier onlyVault() {
        require(msg.sender == vault, "AnyswapV6ERC20: FORBIDDEN");
        _;
    }

    function owner() external view returns (address) {
        return vault;
    }

    function mpc() external view returns (address) {
        return vault;
    }

    function setVaultOnly(bool enabled) external onlyVault {
        _vaultOnly = enabled;
    }

    function initVault(address _vault) external onlyVault {
        require(_init);
        _init = false;
        vault = _vault;
        isMinter[_vault] = true;
        minters.push(_vault);
    }

    function setVault(address _vault) external onlyVault {
        require(_vault != address(0), "AnyswapV6ERC20: address(0)");
        pendingVault = _vault;
        delayVault = block.timestamp + DELAY;
    }

    function applyVault() external onlyVault {
        require(pendingVault != address(0) && block.timestamp >= delayVault);
        vault = pendingVault;

        pendingVault = address(0);
        delayVault = 0;
    }

    function setMinter(address _auth) external onlyVault {
        require(_auth != address(0), "AnyswapV6ERC20: address(0)");
        pendingMinter = _auth;
        delayMinter = block.timestamp + DELAY;
    }

    function applyMinter() external onlyVault {
        require(pendingMinter != address(0) && block.timestamp >= delayMinter);
        isMinter[pendingMinter] = true;
        minters.push(pendingMinter);

        pendingMinter = address(0);
        delayMinter = 0;
    }

    // No time delay revoke minter emergency function
    function revokeMinter(address _auth) external onlyVault {
        isMinter[_auth] = false;
    }

    function getAllMinters() external view returns (address[] memory) {
        return minters;
    }

    function changeVault(address newVault) external onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV6ERC20: address(0)");
        emit LogChangeVault(vault, newVault, block.timestamp);
        vault = newVault;
        pendingVault = address(0);
        delayVault = 0;
        return true;
    }

    function mint(address to, uint256 amount) external onlyAuth returns (bool) {
        _mint(to, amount);
        return true;
    }

    function burn(address from, uint256 amount) external onlyAuth returns (bool) {
        _burn(from, amount);
        return true;
    }

    function Swapin(bytes32 txhash, address account, uint256 amount) external onlyAuth returns (bool) {
        if (underlying != address(0) && IERC20(underlying).balanceOf(address(this)) >= amount) {
            IERC20(underlying).safeTransfer(account, amount);
        } else {
            _mint(account, amount);
        }
        emit LogSwapin(txhash, account, amount);
        return true;
    }

    function Swapout(uint256 amount, address bindaddr) external returns (bool) {
        require(!_vaultOnly, "AnyswapV6ERC20: vaultOnly");
        require(bindaddr != address(0), "AnyswapV6ERC20: address(0)");
        if (underlying != address(0) && balanceOf[msg.sender] < amount) {
            IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        } else {
            _burn(msg.sender, amount);
        }
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

    /// @dev Records number of AnyswapV6ERC20 token that account (second) will be allowed to spend on behalf of another account (first) through {transferFrom}.
    mapping (address => mapping (address => uint256)) public override allowance;

    event LogChangeVault(address indexed oldVault, address indexed newVault, uint indexed effectiveTime);
    event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, address indexed bindaddr, uint amount);

    constructor(string memory _name, string memory _symbol, uint8 _decimals, address _underlying, address _vault) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        underlying = _underlying;
        if (_underlying != address(0)) {
            require(_decimals == IERC20(_underlying).decimals());
        }

        // Use init to allow for CREATE2 accross all chains
        _init = true;

        // Disable/Enable swapout for v1 tokens vs mint/burn for v3 tokens
        _vaultOnly = false;

        vault = _vault;
    }

    /// @dev Returns the total supply of AnyswapV6ERC20 token as the ETH held in this contract.
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function deposit() external returns (uint) {
        uint _amount = IERC20(underlying).balanceOf(msg.sender);
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), _amount);
        return _deposit(_amount, msg.sender);
    }

    function deposit(uint amount) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, msg.sender);
    }

    function deposit(uint amount, address to) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, to);
    }

    function depositVault(uint amount, address to) external onlyVault returns (uint) {
        return _deposit(amount, to);
    }

    function _deposit(uint amount, address to) internal returns (uint) {
        require(!underlyingIsMinted);
        require(underlying != address(0) && underlying != address(this));
        _mint(to, amount);
        return amount;
    }

    function withdraw() external returns (uint) {
        return _withdraw(msg.sender, balanceOf[msg.sender], msg.sender);
    }

    function withdraw(uint amount) external returns (uint) {
        return _withdraw(msg.sender, amount, msg.sender);
    }

    function withdraw(uint amount, address to) external returns (uint) {
        return _withdraw(msg.sender, amount, to);
    }

    function withdrawVault(address from, uint amount, address to) external onlyVault returns (uint) {
        return _withdraw(from, amount, to);
    }

    function _withdraw(address from, uint amount, address to) internal returns (uint) {
        require(!underlyingIsMinted);
        require(underlying != address(0) && underlying != address(this));
        _burn(from, amount);
        IERC20(underlying).safeTransfer(to, amount);
        return amount;
    }

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

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

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

        uint256 balance = balanceOf[account];
        require(balance >= amount, "ERC20: burn amount exceeds balance");

        balanceOf[account] = balance - amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV6ERC20 token.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    function approve(address spender, uint256 value) external override returns (bool) {
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV6ERC20 token from caller's account to account (`to`).
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV6ERC20 token.
    function transfer(address to, uint256 value) external override returns (bool) {
        require(to != address(0) && to != address(this));
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "AnyswapV6ERC20: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV6ERC20 token from account (`from`) to account (`to`) using allowance mechanism.
    /// `value` is then deducted from caller account's allowance, unless set to `type(uint256).max`.
    /// Emits {Approval} event to reflect reduced allowance `value` for caller account to spend from account (`from`),
    /// unless allowance is set to `type(uint256).max`
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - `from` account must have at least `value` balance of AnyswapV6ERC20 token.
    ///   - `from` account must have approved caller to spend at least `value` of AnyswapV6ERC20 token, unless `from` and caller are the same account.
    function transferFrom(address from, address to, uint256 value) external override returns (bool) {
        require(to != address(0) && to != address(this));
        if (from != msg.sender) {
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "AnyswapV6ERC20: request exceeds allowance");
                uint256 reduced = allowed - value;
                allowance[from][msg.sender] = reduced;
                emit Approval(from, msg.sender, reduced);
            }
        }

        uint256 balance = balanceOf[from];
        require(balance >= value, "AnyswapV6ERC20: transfer amount exceeds balance");

        balanceOf[from] = balance - value;
        balanceOf[to] += value;
        emit Transfer(from, to, value);

        return true;
    }
}

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"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":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapout","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":"DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"bindaddr","type":"address"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayMinter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMinters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"initVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"pendingMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setVaultOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"underlyingIsMinted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60c06040523480156200001157600080fd5b506040516200222f3803806200222f833981016040819052620000349162000213565b600062000042868262000344565b50600162000051858262000344565b5060ff83166080526001600160a01b03821660a081905215620000e557816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000ad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d3919062000410565b60ff168360ff1614620000e557600080fd5b6004805461ffff19166001179055600780546001600160a01b039092166001600160a01b0319909216919091179055506200043592505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200014757600080fd5b81516001600160401b03808211156200016457620001646200011f565b604051601f8301601f19908116603f011681019082821181831017156200018f576200018f6200011f565b81604052838152602092508683858801011115620001ac57600080fd5b600091505b83821015620001d05785820183015181830184015290820190620001b1565b600093810190920192909252949350505050565b805160ff81168114620001f657600080fd5b919050565b80516001600160a01b0381168114620001f657600080fd5b600080600080600060a086880312156200022c57600080fd5b85516001600160401b03808211156200024457600080fd5b6200025289838a0162000135565b965060208801519150808211156200026957600080fd5b50620002788882890162000135565b9450506200028960408701620001e4565b92506200029960608701620001fb565b9150620002a960808701620001fb565b90509295509295909350565b600181811c90821680620002ca57607f821691505b602082108103620002eb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200033f57600081815260208120601f850160051c810160208610156200031a5750805b601f850160051c820191505b818110156200033b5782815560010162000326565b5050505b505050565b81516001600160401b038111156200036057620003606200011f565b6200037881620003718454620002b5565b84620002f1565b602080601f831160018114620003b05760008415620003975750858301515b600019600386901b1c1916600185901b1785556200033b565b600085815260208120601f198616915b82811015620003e157888601518255948401946001909101908401620003c0565b5085821015620004005787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200042357600080fd5b6200042e82620001e4565b9392505050565b60805160a051611d72620004bd600039600081816103f501528181610c4601528181610c9c01528181610d9b01528181610f85015281816110950152818161110f015281816111f30152818161123b015281816112c3015281816113b5015281816113e801528181611434015281816116ea015261171d015260006103220152611d726000f3fe608060405234801561001057600080fd5b506004361061025c5760003560e01c806387689e2811610146578063c3081240116100c3578063d93f244511610087578063d93f244514610542578063dd62ed3e1461054a578063ec126c7714610575578063f75c266414610453578063fbfa77cf14610588578063fca3b5aa1461059b57600080fd5b8063c308124014610503578063c4b740f51461050c578063cfbd48851461051f578063d0e30db014610532578063d6c797511461053a57600080fd5b8063a045442c1161010a578063a045442c14610492578063a9059cbb146104a7578063aa271e1a146104ba578063b6b55f25146104dd578063bebbf4d0146104f057600080fd5b806387689e281461044a5780638da5cb5b1461045357806391c5df491461046457806395d89b41146104775780639dc29fac1461047f57600080fd5b80633ccfd60b116101df5780636817031b116101a35780636817031b146103c257806369b41170146103d55780636e553f65146103dd5780636f307dc3146103f057806370a08231146104175780638623ec7b1461043757600080fd5b80633ccfd60b1461035657806340c10f191461035e57806352113ba71461037157806360e232a91461039c578063628d6cba146103af57600080fd5b806318160ddd1161022657806318160ddd146102dc57806323b872dd146102e45780632e1a7d4d146102f75780632ebe3fbb1461030a578063313ce5671461031d57600080fd5b806239d6ec14610261578062f714ce1461028757806306fdde031461029a578063095ea7b3146102af5780630d707df8146102d2575b600080fd5b61027461026f36600461196d565b6105ae565b6040519081526020015b60405180910390f35b6102746102953660046119a9565b6105f7565b6102a261060d565b60405161027e91906119f9565b6102c26102bd366004611a2c565b61069b565b604051901515815260200161027e565b6102da610707565b005b600354610274565b6102c26102f2366004611a56565b6107d6565b610274610305366004611a92565b6109d4565b6102da610318366004611aab565b6109e1565b6103447f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161027e565b610274610a9b565b6102c261036c366004611a2c565b610abc565b600a54610384906001600160a01b031681565b6040516001600160a01b03909116815260200161027e565b6102c26103aa366004611aab565b610afe565b6102c26103bd3660046119a9565b610bc3565b6102da6103d0366004611aab565b610d10565b610274600081565b6102746103eb3660046119a9565b610d8c565b6103847f000000000000000000000000000000000000000000000000000000000000000081565b610274610425366004611aab565b60026020526000908152604090205481565b610384610445366004611a92565b610dcd565b610274600b5481565b6007546001600160a01b0316610384565b600854610384906001600160a01b031681565b6102a2610df7565b6102c261048d366004611a2c565b610e04565b61049a610e3d565b60405161027e9190611ac6565b6102c26104b5366004611a2c565b610e9f565b6102c26104c8366004611aab565b60056020526000908152604090205460ff1681565b6102746104eb366004611a92565b610f76565b6102746104fe3660046119a9565b610fb7565b61027460095481565b6102da61051a366004611b24565b610fe4565b6102da61052d366004611aab565b611028565b610274611073565b6102c2600081565b6102da611147565b610274610558366004611b48565b600c60209081526000928352604080842090915290825290205481565b6102c2610583366004611b72565b6111c2565b600754610384906001600160a01b031681565b6102da6105a9366004611aab565b611335565b6007546000906001600160a01b031633146105e45760405162461bcd60e51b81526004016105db90611b97565b60405180910390fd5b6105ef8484846113b1565b949350505050565b60006106043384846113b1565b90505b92915050565b6000805461061a90611bce565b80601f016020809104026020016040519081016040528092919081815260200182805461064690611bce565b80156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b505050505081565b336000818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f69086815260200190565b60405180910390a350600192915050565b6007546001600160a01b031633146107315760405162461bcd60e51b81526004016105db90611b97565b6008546001600160a01b03161580159061074d57506009544210155b61075657600080fd5b600880546001600160a01b0390811660009081526005602052604081208054600160ff199091168117909155835460068054928301815583527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054919093166001600160a01b0319918216179092558254909116909155600955565b60006001600160a01b038316158015906107f957506001600160a01b0383163014155b61080257600080fd5b6001600160a01b038416331461090e576001600160a01b0384166000908152600c60209081526040808320338452909152902054600019811461090c57828110156108a15760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563645524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016105db565b60006108ad8483611c1e565b6001600160a01b0387166000818152600c6020908152604080832033808552908352928190208590555184815293945090927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b505b6001600160a01b038416600090815260026020526040902054828110156109475760405162461bcd60e51b81526004016105db90611c31565b6109518382611c1e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610987908490611c80565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611d1d833981519152856040516109c191815260200190565b60405180910390a3506001949350505050565b60006106073383336113b1565b6007546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016105db90611b97565b60045460ff16610a1a57600080fd5b6004805460ff19908116909155600780546001600160a01b039093166001600160a01b0319938416811790915560008181526005602052604081208054909316600190811790935560068054938401815590527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054909216179055565b336000818152600260205260408120549091610ab791816113b1565b905090565b3360009081526005602052604081205460ff16610aeb5760405162461bcd60e51b81526004016105db90611b97565b610af58383611463565b50600192915050565b6007546000906001600160a01b03163314610b2b5760405162461bcd60e51b81526004016105db90611b97565b6001600160a01b038216610b515760405162461bcd60e51b81526004016105db90611c93565b60075460405142916001600160a01b03808616929116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a450600780546001600160a01b0383166001600160a01b031991821617909155600a805490911690556000600b5560015b919050565b600454600090610100900460ff1615610c1e5760405162461bcd60e51b815260206004820152601960248201527f416e7973776170563645524332303a207661756c744f6e6c790000000000000060448201526064016105db565b6001600160a01b038216610c445760405162461bcd60e51b81526004016105db90611c93565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615801590610c8a57503360009081526002602052604090205483115b15610cc957610cc46001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611530565b610cd3565b610cd333846115a1565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016106f6565b6007546001600160a01b03163314610d3a5760405162461bcd60e51b81526004016105db90611b97565b6001600160a01b038116610d605760405162461bcd60e51b81526004016105db90611c93565b600a80546001600160a01b0319166001600160a01b038316179055610d86600042611c80565b600b5550565b6000610dc36001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611530565b61060483836116e6565b60068181548110610ddd57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001805461061a90611bce565b3360009081526005602052604081205460ff16610e335760405162461bcd60e51b81526004016105db90611b97565b610af583836115a1565b60606006805480602002602001604051908101604052809291908181526020018280548015610e9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e77575b5050505050905090565b60006001600160a01b03831615801590610ec257506001600160a01b0383163014155b610ecb57600080fd5b3360009081526002602052604090205482811015610efb5760405162461bcd60e51b81526004016105db90611c31565b610f058382611c1e565b33600090815260026020526040808220929092556001600160a01b03861681529081208054859290610f38908490611c80565b90915550506040518381526001600160a01b038516903390600080516020611d1d833981519152906020015b60405180910390a35060019392505050565b6000610fad6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611530565b61060782336116e6565b6007546000906001600160a01b03163314610dc35760405162461bcd60e51b81526004016105db90611b97565b6007546001600160a01b0316331461100e5760405162461bcd60e51b81526004016105db90611b97565b600480549115156101000261ff0019909216919091179055565b6007546001600160a01b031633146110525760405162461bcd60e51b81526004016105db90611b97565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa1580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111009190611cca565b90506111376001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611530565b61114181336116e6565b91505090565b6007546001600160a01b031633146111715760405162461bcd60e51b81526004016105db90611b97565b600a546001600160a01b03161580159061118d5750600b544210155b61119657600080fd5b600a8054600780546001600160a01b03199081166001600160a01b038416179091551690556000600b55565b3360009081526005602052604081205460ff166111f15760405162461bcd60e51b81526004016105db90611b97565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316158015906112b157506040516370a0823160e01b815230600482015282907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611cca565b10155b156112ef576112ea6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168484611763565b6112f9565b6112f98383611463565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d6184604051610f6491815260200190565b6007546001600160a01b0316331461135f5760405162461bcd60e51b81526004016105db90611b97565b6001600160a01b0381166113855760405162461bcd60e51b81526004016105db90611c93565b600880546001600160a01b0319166001600160a01b0383161790556113ab600042611c80565b60095550565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061141457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61141d57600080fd5b61142784846115a1565b61145b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385611763565b509092915050565b6001600160a01b0382166114b95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105db565b80600360008282546114cb9190611c80565b90915550506001600160a01b038216600090815260026020526040812080548392906114f8908490611c80565b90915550506040518181526001600160a01b03831690600090600080516020611d1d8339815191529060200160405180910390a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261159b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611798565b50505050565b6001600160a01b0382166116015760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105db565b6001600160a01b038216600090815260026020526040902054818110156116755760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105db565b61167f8282611c1e565b6001600160a01b038416600090815260026020526040812091909155600380548492906116ad908490611c1e565b90915550506040518281526000906001600160a01b03851690600080516020611d1d8339815191529060200160405180910390a3505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061174957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61175257600080fd5b61175c8284611463565b5090919050565b6040516001600160a01b03831660248201526044810182905261179390849063a9059cbb60e01b90606401611564565b505050565b6117aa826001600160a01b031661191f565b6117f65760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016105db565b600080836001600160a01b0316836040516118119190611ce3565b6000604051808303816000865af19150503d806000811461184e576040519150601f19603f3d011682016040523d82523d6000602084013e611853565b606091505b5091509150816118a55760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016105db565b80511561159b57808060200190518101906118c09190611cff565b61159b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105db565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906105ef5750141592915050565b80356001600160a01b0381168114610bbe57600080fd5b60008060006060848603121561198257600080fd5b61198b84611956565b9250602084013591506119a060408501611956565b90509250925092565b600080604083850312156119bc57600080fd5b823591506119cc60208401611956565b90509250929050565b60005b838110156119f05781810151838201526020016119d8565b50506000910152565b6020815260008251806020840152611a188160408501602087016119d5565b601f01601f19169190910160400192915050565b60008060408385031215611a3f57600080fd5b611a4883611956565b946020939093013593505050565b600080600060608486031215611a6b57600080fd5b611a7484611956565b9250611a8260208501611956565b9150604084013590509250925092565b600060208284031215611aa457600080fd5b5035919050565b600060208284031215611abd57600080fd5b61060482611956565b6020808252825182820181905260009190848201906040850190845b81811015611b075783516001600160a01b031683529284019291840191600101611ae2565b50909695505050505050565b8015158114611b2157600080fd5b50565b600060208284031215611b3657600080fd5b8135611b4181611b13565b9392505050565b60008060408385031215611b5b57600080fd5b611b6483611956565b91506119cc60208401611956565b600080600060608486031215611b8757600080fd5b83359250611a8260208501611956565b60208082526019908201527f416e7973776170563645524332303a20464f5242494444454e00000000000000604082015260600190565b600181811c90821680611be257607f821691505b602082108103611c0257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561060757610607611c08565b6020808252602f908201527f416e7973776170563645524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b8082018082111561060757610607611c08565b6020808252601a908201527f416e7973776170563645524332303a2061646472657373283029000000000000604082015260600190565b600060208284031215611cdc57600080fd5b5051919050565b60008251611cf58184602087016119d5565b9190910192915050565b600060208284031215611d1157600080fd5b8151611b4181611b1356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c531f825d1b0d067ed6bb574152be0d0e5cd05d248f941439f26748eb85108c964736f6c6343000811003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa21000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000263730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005616e794353000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061025c5760003560e01c806387689e2811610146578063c3081240116100c3578063d93f244511610087578063d93f244514610542578063dd62ed3e1461054a578063ec126c7714610575578063f75c266414610453578063fbfa77cf14610588578063fca3b5aa1461059b57600080fd5b8063c308124014610503578063c4b740f51461050c578063cfbd48851461051f578063d0e30db014610532578063d6c797511461053a57600080fd5b8063a045442c1161010a578063a045442c14610492578063a9059cbb146104a7578063aa271e1a146104ba578063b6b55f25146104dd578063bebbf4d0146104f057600080fd5b806387689e281461044a5780638da5cb5b1461045357806391c5df491461046457806395d89b41146104775780639dc29fac1461047f57600080fd5b80633ccfd60b116101df5780636817031b116101a35780636817031b146103c257806369b41170146103d55780636e553f65146103dd5780636f307dc3146103f057806370a08231146104175780638623ec7b1461043757600080fd5b80633ccfd60b1461035657806340c10f191461035e57806352113ba71461037157806360e232a91461039c578063628d6cba146103af57600080fd5b806318160ddd1161022657806318160ddd146102dc57806323b872dd146102e45780632e1a7d4d146102f75780632ebe3fbb1461030a578063313ce5671461031d57600080fd5b806239d6ec14610261578062f714ce1461028757806306fdde031461029a578063095ea7b3146102af5780630d707df8146102d2575b600080fd5b61027461026f36600461196d565b6105ae565b6040519081526020015b60405180910390f35b6102746102953660046119a9565b6105f7565b6102a261060d565b60405161027e91906119f9565b6102c26102bd366004611a2c565b61069b565b604051901515815260200161027e565b6102da610707565b005b600354610274565b6102c26102f2366004611a56565b6107d6565b610274610305366004611a92565b6109d4565b6102da610318366004611aab565b6109e1565b6103447f000000000000000000000000000000000000000000000000000000000000000681565b60405160ff909116815260200161027e565b610274610a9b565b6102c261036c366004611a2c565b610abc565b600a54610384906001600160a01b031681565b6040516001600160a01b03909116815260200161027e565b6102c26103aa366004611aab565b610afe565b6102c26103bd3660046119a9565b610bc3565b6102da6103d0366004611aab565b610d10565b610274600081565b6102746103eb3660046119a9565b610d8c565b6103847f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa2181565b610274610425366004611aab565b60026020526000908152604090205481565b610384610445366004611a92565b610dcd565b610274600b5481565b6007546001600160a01b0316610384565b600854610384906001600160a01b031681565b6102a2610df7565b6102c261048d366004611a2c565b610e04565b61049a610e3d565b60405161027e9190611ac6565b6102c26104b5366004611a2c565b610e9f565b6102c26104c8366004611aab565b60056020526000908152604090205460ff1681565b6102746104eb366004611a92565b610f76565b6102746104fe3660046119a9565b610fb7565b61027460095481565b6102da61051a366004611b24565b610fe4565b6102da61052d366004611aab565b611028565b610274611073565b6102c2600081565b6102da611147565b610274610558366004611b48565b600c60209081526000928352604080842090915290825290205481565b6102c2610583366004611b72565b6111c2565b600754610384906001600160a01b031681565b6102da6105a9366004611aab565b611335565b6007546000906001600160a01b031633146105e45760405162461bcd60e51b81526004016105db90611b97565b60405180910390fd5b6105ef8484846113b1565b949350505050565b60006106043384846113b1565b90505b92915050565b6000805461061a90611bce565b80601f016020809104026020016040519081016040528092919081815260200182805461064690611bce565b80156106935780601f1061066857610100808354040283529160200191610693565b820191906000526020600020905b81548152906001019060200180831161067657829003601f168201915b505050505081565b336000818152600c602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906106f69086815260200190565b60405180910390a350600192915050565b6007546001600160a01b031633146107315760405162461bcd60e51b81526004016105db90611b97565b6008546001600160a01b03161580159061074d57506009544210155b61075657600080fd5b600880546001600160a01b0390811660009081526005602052604081208054600160ff199091168117909155835460068054928301815583527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054919093166001600160a01b0319918216179092558254909116909155600955565b60006001600160a01b038316158015906107f957506001600160a01b0383163014155b61080257600080fd5b6001600160a01b038416331461090e576001600160a01b0384166000908152600c60209081526040808320338452909152902054600019811461090c57828110156108a15760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563645524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016105db565b60006108ad8483611c1e565b6001600160a01b0387166000818152600c6020908152604080832033808552908352928190208590555184815293945090927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505b505b6001600160a01b038416600090815260026020526040902054828110156109475760405162461bcd60e51b81526004016105db90611c31565b6109518382611c1e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610987908490611c80565b92505081905550836001600160a01b0316856001600160a01b0316600080516020611d1d833981519152856040516109c191815260200190565b60405180910390a3506001949350505050565b60006106073383336113b1565b6007546001600160a01b03163314610a0b5760405162461bcd60e51b81526004016105db90611b97565b60045460ff16610a1a57600080fd5b6004805460ff19908116909155600780546001600160a01b039093166001600160a01b0319938416811790915560008181526005602052604081208054909316600190811790935560068054938401815590527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054909216179055565b336000818152600260205260408120549091610ab791816113b1565b905090565b3360009081526005602052604081205460ff16610aeb5760405162461bcd60e51b81526004016105db90611b97565b610af58383611463565b50600192915050565b6007546000906001600160a01b03163314610b2b5760405162461bcd60e51b81526004016105db90611b97565b6001600160a01b038216610b515760405162461bcd60e51b81526004016105db90611c93565b60075460405142916001600160a01b03808616929116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a450600780546001600160a01b0383166001600160a01b031991821617909155600a805490911690556000600b5560015b919050565b600454600090610100900460ff1615610c1e5760405162461bcd60e51b815260206004820152601960248201527f416e7973776170563645524332303a207661756c744f6e6c790000000000000060448201526064016105db565b6001600160a01b038216610c445760405162461bcd60e51b81526004016105db90611c93565b7f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa216001600160a01b031615801590610c8a57503360009081526002602052604090205483115b15610cc957610cc46001600160a01b037f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa2116333086611530565b610cd3565b610cd333846115a1565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016106f6565b6007546001600160a01b03163314610d3a5760405162461bcd60e51b81526004016105db90611b97565b6001600160a01b038116610d605760405162461bcd60e51b81526004016105db90611c93565b600a80546001600160a01b0319166001600160a01b038316179055610d86600042611c80565b600b5550565b6000610dc36001600160a01b037f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa2116333086611530565b61060483836116e6565b60068181548110610ddd57600080fd5b6000918252602090912001546001600160a01b0316905081565b6001805461061a90611bce565b3360009081526005602052604081205460ff16610e335760405162461bcd60e51b81526004016105db90611b97565b610af583836115a1565b60606006805480602002602001604051908101604052809291908181526020018280548015610e9557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610e77575b5050505050905090565b60006001600160a01b03831615801590610ec257506001600160a01b0383163014155b610ecb57600080fd5b3360009081526002602052604090205482811015610efb5760405162461bcd60e51b81526004016105db90611c31565b610f058382611c1e565b33600090815260026020526040808220929092556001600160a01b03861681529081208054859290610f38908490611c80565b90915550506040518381526001600160a01b038516903390600080516020611d1d833981519152906020015b60405180910390a35060019392505050565b6000610fad6001600160a01b037f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa2116333085611530565b61060782336116e6565b6007546000906001600160a01b03163314610dc35760405162461bcd60e51b81526004016105db90611b97565b6007546001600160a01b0316331461100e5760405162461bcd60e51b81526004016105db90611b97565b600480549115156101000261ff0019909216919091179055565b6007546001600160a01b031633146110525760405162461bcd60e51b81526004016105db90611b97565b6001600160a01b03166000908152600560205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa2116906370a0823190602401602060405180830381865afa1580156110dc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111009190611cca565b90506111376001600160a01b037f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa2116333084611530565b61114181336116e6565b91505090565b6007546001600160a01b031633146111715760405162461bcd60e51b81526004016105db90611b97565b600a546001600160a01b03161580159061118d5750600b544210155b61119657600080fd5b600a8054600780546001600160a01b03199081166001600160a01b038416179091551690556000600b55565b3360009081526005602052604081205460ff166111f15760405162461bcd60e51b81526004016105db90611b97565b7f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa216001600160a01b0316158015906112b157506040516370a0823160e01b815230600482015282907f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa216001600160a01b0316906370a0823190602401602060405180830381865afa15801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611cca565b10155b156112ef576112ea6001600160a01b037f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa21168484611763565b6112f9565b6112f98383611463565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d6184604051610f6491815260200190565b6007546001600160a01b0316331461135f5760405162461bcd60e51b81526004016105db90611b97565b6001600160a01b0381166113855760405162461bcd60e51b81526004016105db90611c93565b600880546001600160a01b0319166001600160a01b0383161790556113ab600042611c80565b60095550565b60007f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa216001600160a01b03161580159061141457507f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa216001600160a01b03163014155b61141d57600080fd5b61142784846115a1565b61145b6001600160a01b037f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa21168385611763565b509092915050565b6001600160a01b0382166114b95760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105db565b80600360008282546114cb9190611c80565b90915550506001600160a01b038216600090815260026020526040812080548392906114f8908490611c80565b90915550506040518181526001600160a01b03831690600090600080516020611d1d8339815191529060200160405180910390a35050565b6040516001600160a01b038085166024830152831660448201526064810182905261159b9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611798565b50505050565b6001600160a01b0382166116015760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105db565b6001600160a01b038216600090815260026020526040902054818110156116755760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105db565b61167f8282611c1e565b6001600160a01b038416600090815260026020526040812091909155600380548492906116ad908490611c1e565b90915550506040518281526000906001600160a01b03851690600080516020611d1d8339815191529060200160405180910390a3505050565b60007f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa216001600160a01b03161580159061174957507f000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa216001600160a01b03163014155b61175257600080fd5b61175c8284611463565b5090919050565b6040516001600160a01b03831660248201526044810182905261179390849063a9059cbb60e01b90606401611564565b505050565b6117aa826001600160a01b031661191f565b6117f65760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016105db565b600080836001600160a01b0316836040516118119190611ce3565b6000604051808303816000865af19150503d806000811461184e576040519150601f19603f3d011682016040523d82523d6000602084013e611853565b606091505b5091509150816118a55760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016105db565b80511561159b57808060200190518101906118c09190611cff565b61159b5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105db565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906105ef5750141592915050565b80356001600160a01b0381168114610bbe57600080fd5b60008060006060848603121561198257600080fd5b61198b84611956565b9250602084013591506119a060408501611956565b90509250925092565b600080604083850312156119bc57600080fd5b823591506119cc60208401611956565b90509250929050565b60005b838110156119f05781810151838201526020016119d8565b50506000910152565b6020815260008251806020840152611a188160408501602087016119d5565b601f01601f19169190910160400192915050565b60008060408385031215611a3f57600080fd5b611a4883611956565b946020939093013593505050565b600080600060608486031215611a6b57600080fd5b611a7484611956565b9250611a8260208501611956565b9150604084013590509250925092565b600060208284031215611aa457600080fd5b5035919050565b600060208284031215611abd57600080fd5b61060482611956565b6020808252825182820181905260009190848201906040850190845b81811015611b075783516001600160a01b031683529284019291840191600101611ae2565b50909695505050505050565b8015158114611b2157600080fd5b50565b600060208284031215611b3657600080fd5b8135611b4181611b13565b9392505050565b60008060408385031215611b5b57600080fd5b611b6483611956565b91506119cc60208401611956565b600080600060608486031215611b8757600080fd5b83359250611a8260208501611956565b60208082526019908201527f416e7973776170563645524332303a20464f5242494444454e00000000000000604082015260600190565b600181811c90821680611be257607f821691505b602082108103611c0257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561060757610607611c08565b6020808252602f908201527f416e7973776170563645524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b8082018082111561060757610607611c08565b6020808252601a908201527f416e7973776170563645524332303a2061646472657373283029000000000000604082015260600190565b600060208284031215611cdc57600080fd5b5051919050565b60008251611cf58184602087016119d5565b9190910192915050565b600060208284031215611d1157600080fd5b8151611b4181611b1356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c531f825d1b0d067ed6bb574152be0d0e5cd05d248f941439f26748eb85108c964736f6c63430008110033

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa21000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251000000000000000000000000000000000000000000000000000000000000000263730000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005616e794353000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): cs
Arg [1] : _symbol (string): anyCS
Arg [2] : _decimals (uint8): 6
Arg [3] : _underlying (address): 0x937E077aBaEA52d3abf879c9b9d3f2eBd15BAA21
Arg [4] : _vault (address): 0xfA9dA51631268A30Ec3DDd1CcBf46c65FAD99251

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 000000000000000000000000937e077abaea52d3abf879c9b9d3f2ebd15baa21
Arg [4] : 000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [6] : 6373000000000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [8] : 616e794353000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

2760:11900:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10097:149;;;;;;:::i;:::-;;:::i;:::-;;;671:25:1;;;659:2;644:18;10097:149:0;;;;;;;;9963:126;;;;;;:::i;:::-;;:::i;2834:18::-;;;:::i;:::-;;;;;;;:::i;12067:215::-;;;;;;:::i;:::-;;:::i;:::-;;;2046:14:1;;2039:22;2021:41;;2009:2;1994:18;12067:215:0;1881:187:1;5234:275:0;;;:::i;:::-;;8553:102;8635:12;;8553:102;;13791:866;;;;;;:::i;:::-;;:::i;9833:122::-;;;;;;:::i;:::-;;:::i;4359:201::-;;;;;;:::i;:::-;;:::i;2886:41::-;;;;;;;;2954:4:1;2942:17;;;2924:36;;2912:2;2897:18;2886:41:0;2782:184:1;9699:126:0;;;:::i;6120:133::-;;;;;;:::i;:::-;;:::i;3784:27::-;;;;;-1:-1:-1;;;;;3784:27:0;;;;;;-1:-1:-1;;;;;3135:32:1;;;3117:51;;3105:2;3090:18;3784:27:0;2971:203:1;5785:327:0;;;;;;:::i;:::-;;:::i;6819:522::-;;;;;;:::i;:::-;;:::i;4568:210::-;;;;;;:::i;:::-;;:::i;3459:30::-;;3488:1;3459:30;;9114:193;;;;;;:::i;:::-;;:::i;2936:35::-;;;;;3105:54;;;;;;:::i;:::-;;;;;;;;;;;;;;3606:24;;;;;;:::i;:::-;;:::i;3818:22::-;;;;;;4083:80;4150:5;;-1:-1:-1;;;;;4150:5:0;4083:80;;3717:28;;;;;-1:-1:-1;;;;;3717:28:0;;;2859:20;;;:::i;6261:137::-;;;;;;:::i;:::-;;:::i;5678:99::-;;;:::i;:::-;;;;;;;:::i;12584:438::-;;;;;;:::i;:::-;;:::i;3559:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;8917:189;;;;;;:::i;:::-;;:::i;9315:127::-;;;;;;:::i;:::-;;:::i;3752:23::-;;;;;;4257:94;;;;;;:::i;:::-;;:::i;5572:98::-;;;;;;:::i;:::-;;:::i;8663:246::-;;;:::i;2978:47::-;;3020:5;2978:47;;4786:222;;;:::i;7510:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6406:405;;;;;;:::i;:::-;;:::i;3688:20::-;;;;;-1:-1:-1;;;;;3688:20:0;;;5016:210;;;;;;:::i;:::-;;:::i;10097:149::-;4020:5;;10187:4;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;;;;;;;;;10211:27:::1;10221:4;10227:6;10235:2;10211:9;:27::i;:::-;10204:34:::0;10097:149;-1:-1:-1;;;;10097:149:0:o;9963:126::-;10024:4;10048:33;10058:10;10070:6;10078:2;10048:9;:33::i;:::-;10041:40;;9963:126;;;;;:::o;2834:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;12067:215::-;12170:10;12143:4;12160:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;12160:30:0;;;;;;;;;;:38;;;12214:36;12143:4;;12160:30;;12214:36;;;;12193:5;671:25:1;;659:2;644:18;;525:177;12214:36:0;;;;;;;;-1:-1:-1;12270:4:0;12067:215;;;;:::o;5234:275::-;4020:5;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;5295:13:::1;::::0;-1:-1:-1;;;;;5295:13:0::1;:27:::0;;::::1;::::0;:61:::1;;;5345:11;;5326:15;:30;;5295:61;5287:70;;;::::0;::::1;;5377:13;::::0;;-1:-1:-1;;;;;5377:13:0;;::::1;5368:23;::::0;;;:8:::1;:23;::::0;;;;:30;;5394:4:::1;-1:-1:-1::0;;5368:30:0;;::::1;::::0;::::1;::::0;;;5422:13;;5409:7:::1;:27:::0;;;;::::1;::::0;;;;;;;::::1;::::0;;5422:13;;;::::1;-1:-1:-1::0;;;;;;5409:27:0;;::::1;;::::0;;;5449:26;;;;::::1;::::0;;;5486:11:::1;:15:::0;5234:275::o;13791:866::-;13881:4;-1:-1:-1;;;;;13906:16:0;;;;;;:39;;-1:-1:-1;;;;;;13926:19:0;;13940:4;13926:19;;13906:39;13898:48;;;;;;-1:-1:-1;;;;;13961:18:0;;13969:10;13961:18;13957:416;;-1:-1:-1;;;;;14014:15:0;;13996;14014;;;:9;:15;;;;;;;;14030:10;14014:27;;;;;;;;-1:-1:-1;;14060:28:0;;14056:306;;14128:5;14117:7;:16;;14109:70;;;;-1:-1:-1;;;14109:70:0;;5744:2:1;14109:70:0;;;5726:21:1;5783:2;5763:18;;;5756:30;5822:34;5802:18;;;5795:62;-1:-1:-1;;;5873:18:1;;;5866:39;5922:19;;14109:70:0;5542:405:1;14109:70:0;14198:15;14216;14226:5;14216:7;:15;:::i;:::-;-1:-1:-1;;;;;14250:15:0;;;;;;:9;:15;;;;;;;;14266:10;14250:27;;;;;;;;;;:37;;;14311:35;671:25:1;;;14250:37:0;;-1:-1:-1;14266:10:0;;14311:35;;644:18:1;14311:35:0;;;;;;;14090:272;14056:306;13981:392;13957:416;-1:-1:-1;;;;;14403:15:0;;14385;14403;;;:9;:15;;;;;;14437:16;;;;14429:76;;;;-1:-1:-1;;;14429:76:0;;;;;;;:::i;:::-;14536:15;14546:5;14536:7;:15;:::i;:::-;-1:-1:-1;;;;;14518:15:0;;;;;;;:9;:15;;;;;;:33;;;;14562:13;;;;;;;;:22;;14579:5;;14518:15;14562:22;;14579:5;;14562:22;:::i;:::-;;;;;;;;14615:2;-1:-1:-1;;;;;14600:25:0;14609:4;-1:-1:-1;;;;;14600:25:0;-1:-1:-1;;;;;;;;;;;14619:5:0;14600:25;;;;671::1;;659:2;644:18;;525:177;14600:25:0;;;;;;;;-1:-1:-1;14645:4:0;;13791:866;-1:-1:-1;;;;13791:866:0:o;9833:122::-;9882:4;9906:41;9916:10;9928:6;9936:10;9906:9;:41::i;4359:201::-;4020:5;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;4432:5:::1;::::0;::::1;;4424:14;;;::::0;::::1;;4449:5;:13:::0;;-1:-1:-1;;4449:13:0;;::::1;::::0;;;4473:5:::1;:14:::0;;-1:-1:-1;;;;;4473:14:0;;::::1;-1:-1:-1::0;;;;;;4473:14:0;;::::1;::::0;::::1;::::0;;;4457:5:::1;4498:16:::0;;;:8:::1;:16;::::0;;;;:23;;;;::::1;4449:13:::0;4498:23;;::::1;::::0;;;4532:7:::1;:20:::0;;;;::::1;::::0;;;;;;;::::1;::::0;;;;::::1;;::::0;;4359:201::o;9699:126::-;9771:10;9737:4;9783:21;;;:9;:21;;;;;;9737:4;;9761:56;;9771:10;9761:9;:56::i;:::-;9754:63;;9699:126;:::o;6120:133::-;3897:10;6189:4;3888:20;;;:8;:20;;;;;;;;3880:58;;;;-1:-1:-1;;;3880:58:0;;;;;;;:::i;:::-;6206:17:::1;6212:2;6216:6;6206:5;:17::i;:::-;-1:-1:-1::0;6241:4:0::1;6120:133:::0;;;;:::o;5785:327::-;4020:5;;5852:4;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5877:22:0;::::1;5869:61;;;;-1:-1:-1::0;;;5869:61:0::1;;;;;;;:::i;:::-;5961:5;::::0;5946:48:::1;::::0;5978:15:::1;::::0;-1:-1:-1;;;;;5946:48:0;;::::1;::::0;5961:5;::::1;::::0;5946:48:::1;::::0;5961:5:::1;::::0;5946:48:::1;-1:-1:-1::0;6005:5:0::1;:16:::0;;-1:-1:-1;;;;;6005:16:0;::::1;-1:-1:-1::0;;;;;;6005:16:0;;::::1;;::::0;;;6032:12:::1;:25:::0;;;;::::1;::::0;;6005:5:::1;6068:10;:14:::0;6005:16;4066:1:::1;5785:327:::0;;;:::o;6819:522::-;6914:10;;6888:4;;6914:10;;;;;6913:11;6905:49;;;;-1:-1:-1;;;6905:49:0;;7320:2:1;6905:49:0;;;7302:21:1;7359:2;7339:18;;;7332:30;7398:27;7378:18;;;7371:55;7443:18;;6905:49:0;7118:349:1;6905:49:0;-1:-1:-1;;;;;6973:22:0;;6965:61;;;;-1:-1:-1;;;6965:61:0;;;;;;;:::i;:::-;7041:10;-1:-1:-1;;;;;7041:24:0;;;;;:58;;-1:-1:-1;7079:10:0;7069:21;;;;:9;:21;;;;;;:30;-1:-1:-1;7041:58:0;7037:219;;;7116:70;-1:-1:-1;;;;;7123:10:0;7116:35;7152:10;7172:4;7179:6;7116:35;:70::i;:::-;7037:219;;;7219:25;7225:10;7237:6;7219:5;:25::i;:::-;7271:40;;671:25:1;;;-1:-1:-1;;;;;7271:40:0;;;7282:10;;7271:40;;659:2:1;644:18;7271:40:0;525:177:1;4568:210:0;4020:5;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4640:20:0;::::1;4632:59;;;;-1:-1:-1::0;;;4632:59:0::1;;;;;;;:::i;:::-;4702:12;:21:::0;;-1:-1:-1;;;;;;4702:21:0::1;-1:-1:-1::0;;;;;4702:21:0;::::1;;::::0;;4747:23:::1;-1:-1:-1::0;4747:15:0::1;:23;:::i;:::-;4734:10;:36:::0;-1:-1:-1;4568:210:0:o;9114:193::-;9174:4;9191:70;-1:-1:-1;;;;;9198:10:0;9191:35;9227:10;9247:4;9254:6;9191:35;:70::i;:::-;9279:20;9288:6;9296:2;9279:8;:20::i;3606:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3606:24:0;;-1:-1:-1;3606:24:0;:::o;2859:20::-;;;;;;;:::i;6261:137::-;3897:10;6332:4;3888:20;;;:8;:20;;;;;;;;3880:58;;;;-1:-1:-1;;;3880:58:0;;;;;;;:::i;:::-;6349:19:::1;6355:4;6361:6;6349:5;:19::i;5678:99::-:0;5726:16;5762:7;5755:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5755:14:0;;;;;;;;;;;;;;;;;;;;;;;5678:99;:::o;12584:438::-;12656:4;-1:-1:-1;;;;;12681:16:0;;;;;;:39;;-1:-1:-1;;;;;;12701:19:0;;12715:4;12701:19;;12681:39;12673:48;;;;;;12760:10;12732:15;12750:21;;;:9;:21;;;;;;12790:16;;;;12782:76;;;;-1:-1:-1;;;12782:76:0;;;;;;;:::i;:::-;12895:15;12905:5;12895:7;:15;:::i;:::-;12881:10;12871:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;12921:13:0;;;;;;;:22;;12938:5;;12871:21;12921:22;;12938:5;;12921:22;:::i;:::-;;;;-1:-1:-1;;12959:31:0;;671:25:1;;;-1:-1:-1;;;;;12959:31:0;;;12968:10;;-1:-1:-1;;;;;;;;;;;12959:31:0;659:2:1;644:18;12959:31:0;;;;;;;;-1:-1:-1;13010:4:0;;12584:438;-1:-1:-1;;;12584:438:0:o;8917:189::-;8965:4;8982:70;-1:-1:-1;;;;;8989:10:0;8982:35;9018:10;9038:4;9045:6;8982:35;:70::i;:::-;9070:28;9079:6;9087:10;9070:8;:28::i;9315:127::-;4020:5;;9390:4;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;4257:94::-;4020:5;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;4323:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;4323:20:0;;::::1;::::0;;;::::1;::::0;;4257:94::o;5572:98::-;4020:5;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5639:15:0::1;5657:5;5639:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;5639:23:0::1;::::0;;5572:98::o;8663:246::-;8732:40;;-1:-1:-1;;;8732:40:0;;8761:10;8732:40;;;3117:51:1;8700:4:0;;;;-1:-1:-1;;;;;8739:10:0;8732:28;;;;3090:18:1;;8732:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8717:55;-1:-1:-1;8783:71:0;-1:-1:-1;;;;;8790:10:0;8783:35;8819:10;8839:4;8717:55;8783:35;:71::i;:::-;8872:29;8881:7;8890:10;8872:8;:29::i;:::-;8865:36;;;8663:246;:::o;4786:222::-;4020:5;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;4846:12:::1;::::0;-1:-1:-1;;;;;4846:12:0::1;:26:::0;;::::1;::::0;:59:::1;;;4895:10;;4876:15;:29;;4846:59;4838:68;;;::::0;::::1;;4925:12;::::0;;4917:5:::1;:20:::0;;-1:-1:-1;;;;;;4917:20:0;;::::1;-1:-1:-1::0;;;;;4925:12:0;::::1;4917:20;::::0;;;4950:25:::1;::::0;;4925:12:::1;4986:10;:14:::0;4786:222::o;6406:405::-;3897:10;6498:4;3888:20;;;:8;:20;;;;;;;;3880:58;;;;-1:-1:-1;;;3880:58:0;;;;;;;:::i;:::-;6519:10:::1;-1:-1:-1::0;;;;;6519:24:0::1;::::0;;::::1;::::0;:81:::1;;-1:-1:-1::0;6547:43:0::1;::::0;-1:-1:-1;;;6547:43:0;;6584:4:::1;6547:43;::::0;::::1;3117:51:1::0;6594:6:0;;6554:10:::1;-1:-1:-1::0;;;;;6547:28:0::1;::::0;::::1;::::0;3090:18:1;;6547:43:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:53;;6519:81;6515:217;;;6617:48;-1:-1:-1::0;;;;;6624:10:0::1;6617:31;6649:7:::0;6658:6;6617:31:::1;:48::i;:::-;6515:217;;;6698:22;6704:7;6713:6;6698:5;:22::i;:::-;6765:7;-1:-1:-1::0;;;;;6747:34:0::1;6757:6;6747:34;6774:6;6747:34;;;;671:25:1::0;;659:2;644:18;;525:177;5016:210:0;4020:5;;-1:-1:-1;;;;;4020:5:0;4006:10;:19;3998:57;;;;-1:-1:-1;;;3998:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5088:19:0;::::1;5080:58;;;;-1:-1:-1::0;;;5080:58:0::1;;;;;;;:::i;:::-;5149:13;:21:::0;;-1:-1:-1;;;;;;5149:21:0::1;-1:-1:-1::0;;;;;5149:21:0;::::1;;::::0;;5195:23:::1;-1:-1:-1::0;5195:15:0::1;:23;:::i;:::-;5181:11;:37:::0;-1:-1:-1;5016:210:0:o;10254:312::-;10330:4;10394:10;-1:-1:-1;;;;;10394:24:0;;;;;:55;;-1:-1:-1;10422:10:0;-1:-1:-1;;;;;10422:27:0;10444:4;10422:27;;10394:55;10386:64;;;;;;10461:19;10467:4;10473:6;10461:5;:19::i;:::-;10491:43;-1:-1:-1;;;;;10498:10:0;10491:31;10523:2;10527:6;10491:31;:43::i;:::-;-1:-1:-1;10552:6:0;;10254:312;-1:-1:-1;;10254:312:0:o;10847:268::-;-1:-1:-1;;;;;10923:21:0;;10915:65;;;;-1:-1:-1;;;10915:65:0;;7863:2:1;10915:65:0;;;7845:21:1;7902:2;7882:18;;;7875:30;7941:33;7921:18;;;7914:61;7992:18;;10915:65:0;7661:355:1;10915:65:0;11009:6;10993:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;11026:18:0;;;;;;:9;:18;;;;;:28;;11048:6;;11026:18;:28;;11048:6;;11026:28;:::i;:::-;;;;-1:-1:-1;;11070:37:0;;671:25:1;;;-1:-1:-1;;;;;11070:37:0;;;11087:1;;-1:-1:-1;;;;;;;;;;;11070:37:0;659:2:1;644:18;11070:37:0;;;;;;;10847:268;;:::o;1596:201::-;1720:68;;-1:-1:-1;;;;;8279:15:1;;;1720:68:0;;;8261:34:1;8331:15;;8311:18;;;8304:43;8363:18;;;8356:34;;;1694:95:0;;1713:5;;-1:-1:-1;;;1743:27:0;8196:18:1;;1720:68:0;;;;-1:-1:-1;;1720:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;1720:68:0;-1:-1:-1;;;;;;1720:68:0;;;;;;;;;;1694:18;:95::i;:::-;1596:201;;;;:::o;11447:403::-;-1:-1:-1;;;;;11523:21:0;;11515:67;;;;-1:-1:-1;;;11515:67:0;;8603:2:1;11515:67:0;;;8585:21:1;8642:2;8622:18;;;8615:30;8681:34;8661:18;;;8654:62;-1:-1:-1;;;8732:18:1;;;8725:31;8773:19;;11515:67:0;8401:397:1;11515:67:0;-1:-1:-1;;;;;11613:18:0;;11595:15;11613:18;;;:9;:18;;;;;;11650:17;;;;11642:64;;;;-1:-1:-1;;;11642:64:0;;9005:2:1;11642:64:0;;;8987:21:1;9044:2;9024:18;;;9017:30;9083:34;9063:18;;;9056:62;-1:-1:-1;;;9134:18:1;;;9127:32;9176:19;;11642:64:0;8803:398:1;11642:64:0;11740:16;11750:6;11740:7;:16;:::i;:::-;-1:-1:-1;;;;;11719:18:0;;;;;;:9;:18;;;;;:37;;;;11767:12;:22;;11783:6;;11719:18;11767:22;;11783:6;;11767:22;:::i;:::-;;;;-1:-1:-1;;11805:37:0;;671:25:1;;;11831:1:0;;-1:-1:-1;;;;;11805:37:0;;;-1:-1:-1;;;;;;;;;;;11805:37:0;659:2:1;644:18;11805:37:0;;;;;;;11504:346;11447:403;;:::o;9450:241::-;9511:4;9575:10;-1:-1:-1;;;;;9575:24:0;;;;;:55;;-1:-1:-1;9603:10:0;-1:-1:-1;;;;;9603:27:0;9625:4;9603:27;;9575:55;9567:64;;;;;;9642:17;9648:2;9652:6;9642:5;:17::i;:::-;-1:-1:-1;9677:6:0;;9450:241;-1:-1:-1;9450:241:0:o;1415:173::-;1521:58;;-1:-1:-1;;;;;9398:32:1;;1521:58:0;;;9380:51:1;9447:18;;;9440:34;;;1495:85:0;;1514:5;;-1:-1:-1;;;1544:23:0;9353:18:1;;1521:58:0;9206:274:1;1495:85:0;1415:173;;;:::o;2155:598::-;2243:27;2251:5;-1:-1:-1;;;;;2243:25:0;;:27::i;:::-;2235:71;;;;-1:-1:-1;;;2235:71:0;;9687:2:1;2235:71:0;;;9669:21:1;9726:2;9706:18;;;9699:30;9765:33;9745:18;;;9738:61;9816:18;;2235:71:0;9485:355:1;2235:71:0;2380:12;2394:23;2429:5;-1:-1:-1;;;;;2421:19:0;2441:4;2421:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2379:67;;;;2465:7;2457:52;;;;-1:-1:-1;;;2457:52:0;;10339:2:1;2457:52:0;;;10321:21:1;;;10358:18;;;10351:30;10417:34;10397:18;;;10390:62;10469:18;;2457:52:0;10137:356:1;2457:52:0;2526:17;;:21;2522:224;;2668:10;2657:30;;;;;;;;;;;;:::i;:::-;2649:85;;;;-1:-1:-1;;;2649:85:0;;10950:2:1;2649:85:0;;;10932:21:1;10989:2;10969:18;;;10962:30;11028:34;11008:18;;;11001:62;-1:-1:-1;;;11079:18:1;;;11072:40;11129:19;;2649:85:0;10748:406:1;975:374:0;1035:4;1258:20;;1101:66;1298:15;;;;;:42;;-1:-1:-1;1317:23:0;;;1290:51;-1:-1:-1;;975:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;192:328;269:6;277;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;377:29;396:9;377:29;:::i;:::-;367:39;;453:2;442:9;438:18;425:32;415:42;;476:38;510:2;499:9;495:18;476:38;:::i;:::-;466:48;;192:328;;;;;:::o;707:254::-;775:6;783;836:2;824:9;815:7;811:23;807:32;804:52;;;852:1;849;842:12;804:52;888:9;875:23;865:33;;917:38;951:2;940:9;936:18;917:38;:::i;:::-;907:48;;707:254;;;;;:::o;966:250::-;1051:1;1061:113;1075:6;1072:1;1069:13;1061:113;;;1151:11;;;1145:18;1132:11;;;1125:39;1097:2;1090:10;1061:113;;;-1:-1:-1;;1208:1:1;1190:16;;1183:27;966:250::o;1221:396::-;1370:2;1359:9;1352:21;1333:4;1402:6;1396:13;1445:6;1440:2;1429:9;1425:18;1418:34;1461:79;1533:6;1528:2;1517:9;1513:18;1508:2;1500:6;1496:15;1461:79;:::i;:::-;1601:2;1580:15;-1:-1:-1;;1576:29:1;1561:45;;;;1608:2;1557:54;;1221:396;-1:-1:-1;;1221:396:1:o;1622:254::-;1690:6;1698;1751:2;1739:9;1730:7;1726:23;1722:32;1719:52;;;1767:1;1764;1757:12;1719:52;1790:29;1809:9;1790:29;:::i;:::-;1780:39;1866:2;1851:18;;;;1838:32;;-1:-1:-1;;;1622:254:1:o;2073:328::-;2150:6;2158;2166;2219:2;2207:9;2198:7;2194:23;2190:32;2187:52;;;2235:1;2232;2225:12;2187:52;2258:29;2277:9;2258:29;:::i;:::-;2248:39;;2306:38;2340:2;2329:9;2325:18;2306:38;:::i;:::-;2296:48;;2391:2;2380:9;2376:18;2363:32;2353:42;;2073:328;;;;;:::o;2406:180::-;2465:6;2518:2;2506:9;2497:7;2493:23;2489:32;2486:52;;;2534:1;2531;2524:12;2486:52;-1:-1:-1;2557:23:1;;2406:180;-1:-1:-1;2406:180:1:o;2591:186::-;2650:6;2703:2;2691:9;2682:7;2678:23;2674:32;2671:52;;;2719:1;2716;2709:12;2671:52;2742:29;2761:9;2742:29;:::i;3179:658::-;3350:2;3402:21;;;3472:13;;3375:18;;;3494:22;;;3321:4;;3350:2;3573:15;;;;3547:2;3532:18;;;3321:4;3616:195;3630:6;3627:1;3624:13;3616:195;;;3695:13;;-1:-1:-1;;;;;3691:39:1;3679:52;;3786:15;;;;3751:12;;;;3727:1;3645:9;3616:195;;;-1:-1:-1;3828:3:1;;3179:658;-1:-1:-1;;;;;;3179:658:1:o;3842:118::-;3928:5;3921:13;3914:21;3907:5;3904:32;3894:60;;3950:1;3947;3940:12;3894:60;3842:118;:::o;3965:241::-;4021:6;4074:2;4062:9;4053:7;4049:23;4045:32;4042:52;;;4090:1;4087;4080:12;4042:52;4129:9;4116:23;4148:28;4170:5;4148:28;:::i;:::-;4195:5;3965:241;-1:-1:-1;;;3965:241:1:o;4211:260::-;4279:6;4287;4340:2;4328:9;4319:7;4315:23;4311:32;4308:52;;;4356:1;4353;4346:12;4308:52;4379:29;4398:9;4379:29;:::i;:::-;4369:39;;4427:38;4461:2;4450:9;4446:18;4427:38;:::i;4476:322::-;4553:6;4561;4569;4622:2;4610:9;4601:7;4597:23;4593:32;4590:52;;;4638:1;4635;4628:12;4590:52;4674:9;4661:23;4651:33;;4703:38;4737:2;4726:9;4722:18;4703:38;:::i;4803:349::-;5005:2;4987:21;;;5044:2;5024:18;;;5017:30;5083:27;5078:2;5063:18;;5056:55;5143:2;5128:18;;4803:349::o;5157:380::-;5236:1;5232:12;;;;5279;;;5300:61;;5354:4;5346:6;5342:17;5332:27;;5300:61;5407:2;5399:6;5396:14;5376:18;5373:38;5370:161;;5453:10;5448:3;5444:20;5441:1;5434:31;5488:4;5485:1;5478:15;5516:4;5513:1;5506:15;5370:161;;5157:380;;;:::o;5952:127::-;6013:10;6008:3;6004:20;6001:1;5994:31;6044:4;6041:1;6034:15;6068:4;6065:1;6058:15;6084:128;6151:9;;;6172:11;;;6169:37;;;6186:18;;:::i;6217:411::-;6419:2;6401:21;;;6458:2;6438:18;;;6431:30;6497:34;6492:2;6477:18;;6470:62;-1:-1:-1;;;6563:2:1;6548:18;;6541:45;6618:3;6603:19;;6217:411::o;6633:125::-;6698:9;;;6719:10;;;6716:36;;;6732:18;;:::i;6763:350::-;6965:2;6947:21;;;7004:2;6984:18;;;6977:30;7043:28;7038:2;7023:18;;7016:56;7104:2;7089:18;;6763:350::o;7472:184::-;7542:6;7595:2;7583:9;7574:7;7570:23;7566:32;7563:52;;;7611:1;7608;7601:12;7563:52;-1:-1:-1;7634:16:1;;7472:184;-1:-1:-1;7472:184:1:o;9845:287::-;9974:3;10012:6;10006:13;10028:66;10087:6;10082:3;10075:4;10067:6;10063:17;10028:66;:::i;:::-;10110:16;;;;;9845:287;-1:-1:-1;;9845:287:1:o;10498:245::-;10565:6;10618:2;10606:9;10597:7;10593:23;10589:32;10586:52;;;10634:1;10631;10624:12;10586:52;10666:9;10660:16;10685:28;10707:5;10685:28;:::i

Swarm Source

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