Token ANC

 

Overview [ERC-20]

Max Total Supply:
3,000,000,000 ANC

Holders:
236 ( 0.424%)

Transfers:
-

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

OVERVIEW

Simply put, ANC Token is a blockchain project for K-WAVE fans. On our platform, users will be able to interact better with other fans of their favorite K-WAVE artists, express their fan sentiment together, and further engage in economic activities.

# Exchange Pair Price  24H Volume % Volume
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ANCToken

Compiler Version
v0.7.1+commit.f4a555be

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU GPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-09-23
*/

// File: contracts/library/SafeMath.sol

pragma solidity 0.7.1;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

// File: contracts/erc20/ERC20.sol

pragma solidity 0.7.1;


abstract contract ERC20 {
    using SafeMath for uint256;

    uint256 private _totalSupply;
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    event Transfer(address indexed from, address indexed to, uint256 amount);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 amount
    );

    /*
   * Internal Functions for ERC20 standard logics
   */

    function _transfer(address from, address to, uint256 amount)
        internal
        returns (bool success)
    {
        _balances[from] = _balances[from].sub(
            amount,
            "ERC20/transfer : cannot transfer more than token owner balance"
        );
        _balances[to] = _balances[to].add(amount);
        emit Transfer(from, to, amount);
        success = true;
    }

    function _approve(address owner, address spender, uint256 amount)
        internal
        returns (bool success)
    {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
        success = true;
    }

    function _mint(address recipient, uint256 amount)
        internal
        returns (bool success)
    {
        _totalSupply = _totalSupply.add(amount);
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(address(0), recipient, amount);
        success = true;
    }

    function _burn(address burned, uint256 amount)
        internal
        returns (bool success)
    {
        _balances[burned] = _balances[burned].sub(
            amount,
            "ERC20Burnable/burn : Cannot burn more than user's balance"
        );
        _totalSupply = _totalSupply.sub(
            amount,
            "ERC20Burnable/burn : Cannot burn more than totalSupply"
        );
        emit Transfer(burned, address(0), amount);
        success = true;
    }

    /*
   * public view functions to view common data
   */

    function totalSupply() external view returns (uint256 total) {
        total = _totalSupply;
    }
    function balanceOf(address owner) external view returns (uint256 balance) {
        balance = _balances[owner];
    }

    function allowance(address owner, address spender)
        external
        view
        returns (uint256 remaining)
    {
        remaining = _allowances[owner][spender];
    }

    /*
   * External view Function Interface to implement on final contract
   */
    function name() virtual external view returns (string memory tokenName);
    function symbol() virtual external view returns (string memory tokenSymbol);
    function decimals() virtual external view returns (uint8 tokenDecimals);

    /*
   * External Function Interface to implement on final contract
   */
    function transfer(address to, uint256 amount)
        virtual
        external
        returns (bool success);
    function transferFrom(address from, address to, uint256 amount)
        virtual
        external
        returns (bool success);
    function approve(address spender, uint256 amount)
        virtual
        external
        returns (bool success);
}

// File: contracts/library/Ownable.sol

pragma solidity 0.7.1;

abstract contract Ownable {
    address internal _owner;

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

    constructor() {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    modifier onlyOwner() {
        require(
            msg.sender == _owner,
            "Ownable : Function called by unauthorized user."
        );
        _;
    }

    function owner() external view returns (address ownerAddress) {
        ownerAddress = _owner;
    }

    function transferOwnership(address newOwner)
        public
        onlyOwner
        returns (bool success)
    {
        require(newOwner != address(0), "Ownable/transferOwnership : cannot transfer ownership to zero address");
        success = _transferOwnership(newOwner);
    }

    function renounceOwnership() external onlyOwner returns (bool success) {
        success = _transferOwnership(address(0));
    }

    function _transferOwnership(address newOwner) internal returns (bool success) {
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
        success = true;
    }
}

// File: contracts/erc20/ERC20Lockable.sol

pragma solidity 0.7.1;



abstract contract ERC20Lockable is ERC20, Ownable {
    using SafeMath for uint256;

    struct LockInfo {
        uint256 amount;
        uint256 due;
    }

    mapping(address => LockInfo[]) internal _locks;
    mapping(address => uint256) internal _totalLocked;

    event Lock(address indexed from, uint256 amount, uint256 due);
    event Unlock(address indexed from, uint256 amount);

    modifier checkLock(address from, uint256 amount) {
        require(_balances[from] >= _totalLocked[from].add(amount), "ERC20Lockable/Cannot send more than unlocked amount");
        _;
    }

    function _lock(address from, uint256 amount, uint256 due)
    internal
    returns (bool success)
    {
        require(due > block.timestamp, "ERC20Lockable/lock : Cannot set due to past");
        require(
            _balances[from] >= amount.add(_totalLocked[from]),
            "ERC20Lockable/lock : locked total should be smaller than balance"
        );
        _totalLocked[from] = _totalLocked[from].add(amount);
        _locks[from].push(LockInfo(amount, due));
        emit Lock(from, amount, due);
        success = true;
    }

    function _unlock(address from, uint256 index) internal returns (bool success) {
        LockInfo storage lock = _locks[from][index];
        _totalLocked[from] = _totalLocked[from].sub(lock.amount);
        emit Unlock(from, lock.amount);
        _locks[from][index] = _locks[from][_locks[from].length - 1];
        _locks[from].pop();
        success = true;
    }

    function unlock(address from, uint256 idx) external returns(bool success){
        require(_locks[from][idx].due < block.timestamp,"ERC20Lockable/unlock: cannot unlock before due");
        _unlock(from, idx);
        success = true;
    }

    function unlockAll(address from) external returns (bool success) {
        for(uint256 i = 0; i < _locks[from].length; i++){
            if(_locks[from][i].due < block.timestamp){
                _unlock(from, i);
                i--;
            }
        }
        success = true;
    }

    function releaseLock(address from)
    external
    onlyOwner
    returns (bool success)
    {
        for(uint256 i = 0; i < _locks[from].length; i++){
            _unlock(from, i);
            i--;
        }
        success = true;
    }

    function transferWithLockUp(address recipient, uint256 amount, uint256 due)
    external
    onlyOwner
    returns (bool success)
    {
        require(
            recipient != address(0),
            "ERC20Lockable/transferWithLockUp : Cannot send to zero address"
        );
        _transfer(msg.sender, recipient, amount);
        _lock(recipient, amount, due);
        success = true;
    }

    function lockInfo(address locked, uint256 index)
    external
    view
    returns (uint256 amount, uint256 due)
    {
        LockInfo memory lock = _locks[locked][index];
        amount = lock.amount;
        due = lock.due;
    }

    function totalLocked(address locked) external view returns(uint256 amount, uint256 length){
        amount = _totalLocked[locked];
        length = _locks[locked].length;
    }
}

// File: contracts/library/Pausable.sol

pragma solidity 0.7.1;


contract Pausable is Ownable {
    bool internal _paused;

    event Paused();
    event Unpaused();

    modifier whenPaused() {
        require(_paused, "Paused : This function can only be called when paused");
        _;
    }

    modifier whenNotPaused() {
        require(!_paused, "Paused : This function can only be called when not paused");
        _;
    }

    function pause() external onlyOwner whenNotPaused returns (bool success) {
        _paused = true;
        emit Paused();
        success = true;
    }

    function unPause() external onlyOwner whenPaused returns (bool success) {
        _paused = false;
        emit Unpaused();
        success = true;
    }

    function paused() external view returns (bool) {
        return _paused;
    }
}

// File: contracts/erc20/ERC20Burnable.sol

pragma solidity 0.7.1;



abstract contract ERC20Burnable is ERC20, Pausable {
    using SafeMath for uint256;

    event Burn(address indexed burned, uint256 amount);

    function burn(uint256 amount)
        external
        whenNotPaused
        returns (bool success)
    {
        success = _burn(msg.sender, amount);
        emit Burn(msg.sender, amount);
        success = true;
    }

    function burnFrom(address burned, uint256 amount)
        external
        whenNotPaused
        returns (bool success)
    {
        _burn(burned, amount);
        emit Burn(burned, amount);
        success = _approve(
            burned,
            msg.sender,
            _allowances[burned][msg.sender].sub(
                amount,
                "ERC20Burnable/burnFrom : Cannot burn more than allowance"
            )
        );
    }
}

// File: contracts/library/Freezable.sol

pragma solidity 0.7.1;


contract Freezable is Ownable {
    mapping(address => bool) private _frozen;

    event Freeze(address indexed target);
    event Unfreeze(address indexed target);

    modifier whenNotFrozen(address target) {
        require(!_frozen[target], "Freezable : target is frozen");
        _;
    }

    function freeze(address target) external onlyOwner returns (bool success) {
        _frozen[target] = true;
        emit Freeze(target);
        success = true;
    }

    function unFreeze(address target)
        external
        onlyOwner
        returns (bool success)
    {
        _frozen[target] = false;
        emit Unfreeze(target);
        success = true;
    }

    function isFrozen(address target)
        external
        view
        returns (bool frozen)
    {
        return _frozen[target];
    }
}

// File: contracts/ANCToken.sol

pragma solidity 0.7.1;





contract ANCToken is
    ERC20Lockable,
    ERC20Burnable,
    Freezable
{
    using SafeMath for uint256;
    string constant private _name = "ANC";
    string constant private _symbol = "ANC";
    uint8 constant private _decimals = 18;
    uint256 constant private _initial_supply = 3000000000;

    constructor() Ownable() {
        _mint(msg.sender, _initial_supply * (10**uint256(_decimals)));
    }

    function transfer(address to, uint256 amount)
        override
        external
        whenNotFrozen(msg.sender)
        whenNotPaused
        checkLock(msg.sender, amount)
        returns (bool success)
    {
        require(
            to != address(0),
            "ANC/transfer : Should not send to zero address"
        );
        _transfer(msg.sender, to, amount);
        success = true;
    }

    function transferFrom(address from, address to, uint256 amount)
        override
        external
        whenNotFrozen(from)
        whenNotPaused
        checkLock(from, amount)
        returns (bool success)
    {
        require(
            to != address(0),
            "ANC/transferFrom : Should not send to zero address"
        );
        _transfer(from, to, amount);
        _approve(
            from,
            msg.sender,
            _allowances[from][msg.sender].sub(
                amount,
                "ANC/transferFrom : Cannot send more than allowance"
            )
        );
        success = true;
    }

    function approve(address spender, uint256 amount)
        override
        external
        returns (bool success)
    {
        require(
            spender != address(0),
            "ANC/approve : Should not approve zero address"
        );
        _approve(msg.sender, spender, amount);
        success = true;
    }

    function name() override external pure returns (string memory tokenName) {
        tokenName = _name;
    }

    function symbol() override external pure returns (string memory tokenSymbol) {
        tokenSymbol = _symbol;
    }

    function decimals() override external pure returns (uint8 tokenDecimals) {
        tokenDecimals = _decimals;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burned","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"Freeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"due","type":"uint256"}],"name":"Lock","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"currentOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","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":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"target","type":"address"}],"name":"Unfreeze","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Unlock","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","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":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"burned","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"tokenDecimals","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"freeze","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"isFrozen","outputs":[{"internalType":"bool","name":"frozen","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"lockInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"due","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"tokenName","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"ownerAddress","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"releaseLock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"tokenSymbol","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"locked","type":"address"}],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"length","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"due","type":"uint256"}],"name":"transferWithLockUp","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"unFreeze","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unPause","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"idx","type":"uint256"}],"name":"unlock","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"unlockAll","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b50600380546001600160a01b031916339081179091556040516000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36200006a336b09b18ab5df7180b6b800000062000071565b5062000182565b60006200008f826000546200012060201b620011ca1790919060201c565b60009081556001600160a01b038416815260016020908152604090912054620000c3918490620011ca62000120821b17901c565b6001600160a01b03841660008181526001602090815260408083209490945583518681529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600192915050565b6000828201838110156200017b576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b611c5480620001926000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80638456cb59116100de578063c4f3a85311610097578063dd62ed3e11610071578063dd62ed3e146104f6578063e583983614610524578063f2fde38b1461054a578063f7b188a5146105705761018e565b8063c4f3a85314610484578063d1c46916146104aa578063d8fb9337146104d05761018e565b80638456cb59146103c15780638d1fdf2f146103c95780638da5cb5b146103ef57806395d89b4114610193578063a9059cbb14610413578063b2520a7c1461043f5761018e565b806342966c681161014b578063715018a611610125578063715018a61461033b57806379cc6790146103435780637eee288d1461036f57806383cfab421461039b5761018e565b806342966c68146102f05780635c975abb1461030d57806370a08231146103155761018e565b806306fdde0314610193578063095ea7b31461021057806318160ddd1461025057806323b872dd1461026a578063313ce567146102a057806338b82092146102be575b600080fd5b61019b610578565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101d55781810151838201526020016101bd565b50505050905090810190601f1680156102025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61023c6004803603604081101561022657600080fd5b506001600160a01b038135169060200135610595565b604080519115158252519081900360200190f35b6102586105f1565b60408051918252519081900360200190f35b61023c6004803603606081101561028057600080fd5b506001600160a01b038135811691602081013590911690604001356105f7565b6102a86107d7565b6040805160ff9092168252519081900360200190f35b61023c600480360360608110156102d457600080fd5b506001600160a01b0381351690602081013590604001356107dc565b61023c6004803603602081101561030657600080fd5b503561088f565b61023c61091e565b6102586004803603602081101561032b57600080fd5b50356001600160a01b0316610927565b61023c610942565b61023c6004803603604081101561035957600080fd5b506001600160a01b03813516906020013561099d565b61023c6004803603604081101561038557600080fd5b506001600160a01b038135169060200135610a80565b61023c600480360360208110156103b157600080fd5b50356001600160a01b0316610aff565b61023c610b99565b61023c600480360360208110156103df57600080fd5b50356001600160a01b0316610c63565b6103f7610d00565b604080516001600160a01b039092168252519081900360200190f35b61023c6004803603604081101561042957600080fd5b506001600160a01b038135169060200135610d0f565b61046b6004803603604081101561045557600080fd5b506001600160a01b038135169060200135610e88565b6040805192835260208301919091528051918290030190f35b61023c6004803603602081101561049a57600080fd5b50356001600160a01b0316610ef0565b61023c600480360360208110156104c057600080fd5b50356001600160a01b0316610f74565b61046b600480360360208110156104e657600080fd5b50356001600160a01b0316610ff3565b6102586004803603604081101561050c57600080fd5b506001600160a01b038135811691602001351661101b565b61023c6004803603602081101561053a57600080fd5b50356001600160a01b0316611046565b61023c6004803603602081101561056057600080fd5b50356001600160a01b0316611064565b61023c611104565b604080518082019091526003815262414e4360e81b602082015290565b60006001600160a01b0383166105dc5760405162461bcd60e51b815260040180806020018281038252602d8152602001806118cd602d913960400191505060405180910390fd5b6105e7338484611224565b5060019392505050565b60005490565b6001600160a01b038316600090815260076020526040812054849060ff1615610667576040805162461bcd60e51b815260206004820152601c60248201527f467265657a61626c65203a207461726765742069732066726f7a656e00000000604482015290519081900360640190fd5b60065460ff16156106a95760405162461bcd60e51b81526004018080602001828103825260398152602001806119cb6039913960400191505060405180910390fd5b6001600160a01b038516600090815260056020526040902054859084906106d090826111ca565b6001600160a01b03831660009081526001602052604090205410156107265760405162461bcd60e51b8152600401808060200182810382526033815260200180611b726033913960400191505060405180910390fd5b6001600160a01b03861661076b5760405162461bcd60e51b8152600401808060200182810382526032815260200180611ad16032913960400191505060405180910390fd5b61077687878761128f565b506107c987336107c488604051806060016040528060328152602001611a04603291396001600160a01b038d166000908152600260209081526040808320338452909152902054919061135e565b611224565b506001979650505050505050565b601290565b6003546000906001600160a01b031633146108285760405162461bcd60e51b815260040180806020018281038252602f815260200180611a74602f913960400191505060405180910390fd5b6001600160a01b03841661086d5760405162461bcd60e51b815260040180806020018281038252603e81526020018061188f603e913960400191505060405180910390fd5b61087833858561128f565b506108848484846113f5565b506001949350505050565b60065460009060ff16156108d45760405162461bcd60e51b81526004018080602001828103825260398152602001806119cb6039913960400191505060405180910390fd5b6108de338361156e565b60408051848152905191925033917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca59181900360200190a2506001919050565b60065460ff1690565b6001600160a01b031660009081526001602052604090205490565b6003546000906001600160a01b0316331461098e5760405162461bcd60e51b815260040180806020018281038252602f815260200180611a74602f913960400191505060405180910390fd5b610998600061164a565b905090565b60065460009060ff16156109e25760405162461bcd60e51b81526004018080602001828103825260398152602001806119cb6039913960400191505060405180910390fd5b6109ec838361156e565b506040805183815290516001600160a01b038516917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2610a7983336107c485604051806060016040528060388152602001611993603891396001600160a01b0389166000908152600260209081526040808320338452909152902054919061135e565b9392505050565b6001600160a01b0382166000908152600460205260408120805442919084908110610aa757fe5b90600052602060002090600202016001015410610af55760405162461bcd60e51b815260040180806020018281038252602e815260200180611965602e913960400191505060405180910390fd5b6105e783836116ad565b6003546000906001600160a01b03163314610b4b5760405162461bcd60e51b815260040180806020018281038252602f815260200180611a74602f913960400191505060405180910390fd5b6001600160a01b038216600081815260076020526040808220805460ff19169055517fca5069937e68fd197927055037f59d7c90bf75ac104e6e375539ef480c3ad6ee9190a2506001919050565b6003546000906001600160a01b03163314610be55760405162461bcd60e51b815260040180806020018281038252602f815260200180611a74602f913960400191505060405180910390fd5b60065460ff1615610c275760405162461bcd60e51b81526004018080602001828103825260398152602001806119cb6039913960400191505060405180910390fd5b6006805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a150600190565b6003546000906001600160a01b03163314610caf5760405162461bcd60e51b815260040180806020018281038252602f815260200180611a74602f913960400191505060405180910390fd5b6001600160a01b038216600081815260076020526040808220805460ff19166001179055517faf85b60d26151edd11443b704d424da6c43d0468f2235ebae3d1904dbc3230499190a2506001919050565b6003546001600160a01b031690565b3360008181526007602052604081205490919060ff1615610d77576040805162461bcd60e51b815260206004820152601c60248201527f467265657a61626c65203a207461726765742069732066726f7a656e00000000604482015290519081900360640190fd5b60065460ff1615610db95760405162461bcd60e51b81526004018080602001828103825260398152602001806119cb6039913960400191505060405180910390fd5b336000818152600560205260409020548490610dd590826111ca565b6001600160a01b0383166000908152600160205260409020541015610e2b5760405162461bcd60e51b8152600401808060200182810382526033815260200180611b726033913960400191505060405180910390fd5b6001600160a01b038616610e705760405162461bcd60e51b815260040180806020018281038252602e815260200180611aa3602e913960400191505060405180910390fd5b610e7b33878761128f565b5060019695505050505050565b600080610e93611874565b6001600160a01b0385166000908152600460205260409020805485908110610eb757fe5b60009182526020918290206040805180820190915260029092020180548083526001909101549190920181905290969095509350505050565b6000805b6001600160a01b038316600090815260046020526040902054811015610f6b576001600160a01b0383166000908152600460205260409020805442919083908110610f3b57fe5b9060005260206000209060020201600101541015610f6357610f5d83826116ad565b50600019015b600101610ef4565b50600192915050565b6003546000906001600160a01b03163314610fc05760405162461bcd60e51b815260040180806020018281038252602f815260200180611a74602f913960400191505060405180910390fd5b60005b6001600160a01b038316600090815260046020526040902054811015610f6b57610fed83826116ad565b50610fc3565b6001600160a01b03166000908152600560209081526040808320546004909252909120549091565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b6001600160a01b031660009081526007602052604090205460ff1690565b6003546000906001600160a01b031633146110b05760405162461bcd60e51b815260040180806020018281038252602f815260200180611a74602f913960400191505060405180910390fd5b6001600160a01b0382166110f55760405162461bcd60e51b8152600401808060200182810382526045815260200180611bda6045913960600191505060405180910390fd5b6110fe8261164a565b92915050565b6003546000906001600160a01b031633146111505760405162461bcd60e51b815260040180806020018281038252602f815260200180611a74602f913960400191505060405180910390fd5b60065460ff166111915760405162461bcd60e51b8152600401808060200182810382526035815260200180611ba56035913960400191505060405180910390fd5b6006805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a150600190565b600082820183811015610a79576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260026020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60006112ce826040518060600160405280603e8152602001611a36603e91396001600160a01b038716600090815260016020526040902054919061135e565b6001600160a01b0380861660009081526001602052604080822093909355908516815220546112fd90836111ca565b6001600160a01b0380851660008181526001602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b600081848411156113ed5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113b257818101518382015260200161139a565b50505050905090810190601f1680156113df5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60004282116114355760405162461bcd60e51b815260040180806020018281038252602b81526020018061193a602b913960400191505060405180910390fd5b6001600160a01b0384166000908152600560205260409020546114599084906111ca565b6001600160a01b03851660009081526001602052604090205410156114af5760405162461bcd60e51b81526004018080602001828103825260408152602001806118fa6040913960400191505060405180910390fd5b6001600160a01b0384166000908152600560205260409020546114d290846111ca565b6001600160a01b03851660008181526005602090815260408083209490945560048152838220845180860186528881528083018881528254600181810185559386529484902091516002909502909101938455519201919091558251868152908101859052825191927f49eaf4942f1237055eb4cfa5f31c9dfe50d5b4ade01e021f7de8be2fbbde557b92918290030190a25060019392505050565b60006115ad82604051806060016040528060398152602001611b03603991396001600160a01b038616600090815260016020526040902054919061135e565b60016000856001600160a01b03166001600160a01b03168152602001908152602001600020819055506115fd82604051806060016040528060368152602001611b3c60369139600054919061135e565b60009081556040805184815290516001600160a01b038616917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a350600192915050565b6003546040516000916001600160a01b03808516929116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908490a350600380546001600160a01b0319166001600160a01b0392909216919091179055600190565b6001600160a01b03821660009081526004602052604081208054829190849081106116d457fe5b60009182526020808320600290920290910180546001600160a01b0388168452600590925260409092205491925061170c9190611832565b6001600160a01b0385166000818152600560209081526040918290209390935583548151908152905191927f6381d9813cabeb57471b5a7e05078e64845ccdb563146a6911d536f24ce960f192918290030190a26001600160a01b03841660009081526004602052604090208054600019810190811061178857fe5b906000526020600020906002020160046000866001600160a01b03166001600160a01b0316815260200190815260200160002084815481106117c657fe5b60009182526020808320845460029093020191825560019384015493909101929092556001600160a01b038616815260049091526040902080548061180757fe5b6000828152602081206002600019909301928302018181556001908101919091559155949350505050565b6000610a7983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061135e565b60405180604001604052806000815260200160008152509056fe45524332304c6f636b61626c652f7472616e73666572576974684c6f636b5570203a2043616e6e6f742073656e6420746f207a65726f2061646472657373414e432f617070726f7665203a2053686f756c64206e6f7420617070726f7665207a65726f206164647265737345524332304c6f636b61626c652f6c6f636b203a206c6f636b656420746f74616c2073686f756c6420626520736d616c6c6572207468616e2062616c616e636545524332304c6f636b61626c652f6c6f636b203a2043616e6e6f74207365742064756520746f207061737445524332304c6f636b61626c652f756e6c6f636b3a2063616e6e6f7420756e6c6f636b206265666f72652064756545524332304275726e61626c652f6275726e46726f6d203a2043616e6e6f74206275726e206d6f7265207468616e20616c6c6f77616e6365506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e206e6f7420706175736564414e432f7472616e7366657246726f6d203a2043616e6e6f742073656e64206d6f7265207468616e20616c6c6f77616e636545524332302f7472616e73666572203a2063616e6e6f74207472616e73666572206d6f7265207468616e20746f6b656e206f776e65722062616c616e63654f776e61626c65203a2046756e6374696f6e2063616c6c656420627920756e617574686f72697a656420757365722e414e432f7472616e73666572203a2053686f756c64206e6f742073656e6420746f207a65726f2061646472657373414e432f7472616e7366657246726f6d203a2053686f756c64206e6f742073656e6420746f207a65726f206164647265737345524332304275726e61626c652f6275726e203a2043616e6e6f74206275726e206d6f7265207468616e207573657227732062616c616e636545524332304275726e61626c652f6275726e203a2043616e6e6f74206275726e206d6f7265207468616e20746f74616c537570706c7945524332304c6f636b61626c652f43616e6e6f742073656e64206d6f7265207468616e20756e6c6f636b656420616d6f756e74506175736564203a20546869732066756e6374696f6e2063616e206f6e6c792062652063616c6c6564207768656e207061757365644f776e61626c652f7472616e736665724f776e657273686970203a2063616e6e6f74207472616e73666572206f776e65727368697020746f207a65726f2061646472657373a2646970667358221220f70005a3a32aab00d0411716ac810ba09bffbaea5eb78b192ee5c09f5a3f1e9664736f6c63430007010033

Deployed ByteCode Sourcemap

16290:2211:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18139:109;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17800:331;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17800:331:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7706:100;;;:::i;:::-;;;;;;;;;;;;;;;;17139:653;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17139:653:0;;;;;;;;;;;;;;;;;:::i;18381:117::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12644:408;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;12644:408:0;;;;;;;;;;;;;:::i;14596:227::-;;;;;;;;;;;;;;;;-1:-1:-1;14596:227:0;;:::i;14281:80::-;;;:::i;7812:119::-;;;;;;;;;;;;;;;;-1:-1:-1;7812:119:0;-1:-1:-1;;;;;7812:119:0;;:::i;9868:130::-;;;:::i;14831:457::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;14831:457:0;;;;;;;;:::i;11832:243::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;11832:243:0;;;;;;;;:::i;15856:207::-;;;;;;;;;;;;;;;;-1:-1:-1;15856:207:0;-1:-1:-1;;;;;15856:207:0;;:::i;13953:155::-;;;:::i;15678:170::-;;;;;;;;;;;;;;;;-1:-1:-1;15678:170:0;-1:-1:-1;;;;;15678:170:0;;:::i;9461:102::-;;;:::i;:::-;;;;-1:-1:-1;;;;;9461:102:0;;;;;;;;;;;;;;16715:416;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16715:416:0;;;;;;;;:::i;13060:240::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13060:240:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;12083:296;;;;;;;;;;;;;;;;-1:-1:-1;12083:296:0;-1:-1:-1;;;;;12083:296:0;;:::i;12387:249::-;;;;;;;;;;;;;;;;-1:-1:-1;12387:249:0;-1:-1:-1;;;;;12387:249:0;;:::i;13308:179::-;;;;;;;;;;;;;;;;-1:-1:-1;13308:179:0;-1:-1:-1;;;;;13308:179:0;;:::i;7939:183::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7939:183:0;;;;;;;;;;:::i;16071:143::-;;;;;;;;;;;;;;;;-1:-1:-1;16071:143:0;-1:-1:-1;;;;;16071:143:0;;:::i;9571:289::-;;;;;;;;;;;;;;;;-1:-1:-1;9571:289:0;-1:-1:-1;;;;;9571:289:0;;:::i;14116:157::-;;;:::i;18139:109::-;18235:5;;;;;;;;;;;;-1:-1:-1;;;18235:5:0;;;;;18139:109::o;17800:331::-;17904:12;-1:-1:-1;;;;;17956:21:0;;17934:116;;;;-1:-1:-1;;;17934:116:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18061:37;18070:10;18082:7;18091:6;18061:8;:37::i;:::-;-1:-1:-1;18119:4:0;;17800:331;-1:-1:-1;;;17800:331:0:o;7706:100::-;7752:13;7786:12;;7706:100::o;17139:653::-;-1:-1:-1;;;;;15602:15:0;;17342:12;15602:15;;;:7;:15;;;;;;17262:4;;15602:15;;15601:16;15593:57;;;;;-1:-1:-1;;;15593:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13856:7:::1;::::0;::::1;;13855:8;13847:78;;;;-1:-1:-1::0;;;13847:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;10778:18:0;::::2;;::::0;;;:12:::2;:18;::::0;;;;;17310:4;;17316:6;;10778:30:::2;::::0;17316:6;10778:22:::2;:30::i;:::-;-1:-1:-1::0;;;;;10759:15:0;::::2;;::::0;;;:9:::2;:15;::::0;;;;;:49:::2;;10751:113;;;;-1:-1:-1::0;;;10751:113:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;17394:16:0;::::3;17372:116;;;;-1:-1:-1::0;;;17372:116:0::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17499:27;17509:4;17515:2;17519:6;17499:9;:27::i;:::-;;17537:222;17560:4;17579:10;17604:144;17656:6;17604:144;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;17604:17:0;::::3;;::::0;;;:11:::3;:17;::::0;;;;;;;17622:10:::3;17604:29:::0;;;;;;;;;:144;:33:::3;:144::i;:::-;17537:8;:222::i;:::-;-1:-1:-1::0;17780:4:0::3;::::0;17139:653;-1:-1:-1;;;;;;;17139:653:0:o;18381:117::-;16532:2;;18381:117::o;12644:408::-;9352:6;;12763:12;;-1:-1:-1;;;;;9352:6:0;9338:10;:20;9316:117;;;;-1:-1:-1;;;9316:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12815:23:0;::::1;12793:135;;;;-1:-1:-1::0;;;12793:135:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12939:40;12949:10;12961:9;12972:6;12939:9;:40::i;:::-;;12990:29;12996:9;13007:6;13015:3;12990:5;:29::i;:::-;-1:-1:-1::0;13040:4:0::1;::::0;12644:408;-1:-1:-1;;;;12644:408:0:o;14596:227::-;13856:7;;14685:12;;13856:7;;13855:8;13847:78;;;;-1:-1:-1;;;13847:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14725:25:::1;14731:10;14743:6;14725:5;:25::i;:::-;14766:24;::::0;;;;;;;14715:35;;-1:-1:-1;14771:10:0::1;::::0;14766:24:::1;::::0;;;;::::1;::::0;;::::1;-1:-1:-1::0;14811:4:0::1;::::0;14596:227;-1:-1:-1;14596:227:0:o;14281:80::-;14346:7;;;;14281:80;:::o;7812:119::-;-1:-1:-1;;;;;7907:16:0;7869:15;7907:16;;;:9;:16;;;;;;;7812:119::o;9868:130::-;9352:6;;9925:12;;-1:-1:-1;;;;;9352:6:0;9338:10;:20;9316:117;;;;-1:-1:-1;;;9316:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9960:30:::1;9987:1;9960:18;:30::i;:::-;9950:40;;9868:130:::0;:::o;14831:457::-;13856:7;;14940:12;;13856:7;;13855:8;13847:78;;;;-1:-1:-1;;;13847:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14970:21:::1;14976:6;14984;14970:5;:21::i;:::-;-1:-1:-1::0;15007:20:0::1;::::0;;;;;;;-1:-1:-1;;;;;15007:20:0;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;::::1;15048:232;15071:6;15092:10;15117:152;15171:6;15117:152;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;15117:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;;;15137:10:::1;15117:31:::0;;;;;;;;;:152;:35:::1;:152::i;15048:232::-;15038:242:::0;14831:457;-1:-1:-1;;;14831:457:0:o;11832:243::-;-1:-1:-1;;;;;11924:12:0;;11892;11924;;;:6;:12;;;;;:17;;11948:15;;11924:12;11937:3;;11924:17;;;;;;;;;;;;;;;;:21;;;:39;11916:97;;;;-1:-1:-1;;;11916:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12024:18;12032:4;12038:3;12024:7;:18::i;15856:207::-;9352:6;;15945:12;;-1:-1:-1;;;;;9352:6:0;9338:10;:20;9316:117;;;;-1:-1:-1;;;9316:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15975:15:0;::::1;15993:5;15975:15:::0;;;:7:::1;:15;::::0;;;;;:23;;-1:-1:-1;;15975:23:0::1;::::0;;16014:16;::::1;::::0;15993:5;16014:16:::1;-1:-1:-1::0;16051:4:0::1;::::0;15856:207;-1:-1:-1;15856:207:0:o;13953:155::-;9352:6;;14012:12;;-1:-1:-1;;;;;9352:6:0;9338:10;:20;9316:117;;;;-1:-1:-1;;;9316:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13856:7:::1;::::0;::::1;;13855:8;13847:78;;;;-1:-1:-1::0;;;13847:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14037:7:::2;:14:::0;;-1:-1:-1;;14037:14:0::2;14047:4;14037:14;::::0;;14067:8:::2;::::0;::::2;::::0;14037:7:::2;::::0;14067:8:::2;-1:-1:-1::0;14096:4:0::2;::::0;13953:155::o;15678:170::-;9352:6;;15738:12;;-1:-1:-1;;;;;9352:6:0;9338:10;:20;9316:117;;;;-1:-1:-1;;;9316:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15763:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;:22;;-1:-1:-1;;15763:22:0::1;15781:4;15763:22;::::0;;15801:14;::::1;::::0;15763:15;15801:14:::1;-1:-1:-1::0;15836:4:0::1;::::0;15678:170;-1:-1:-1;15678:170:0:o;9461:102::-;9549:6;;-1:-1:-1;;;;;9549:6:0;;9461:102::o;16715:416::-;16820:10;16912:12;15602:15;;;:7;:15;;;;;;16912:12;;16820:10;15602:15;;15601:16;15593:57;;;;;-1:-1:-1;;;15593:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;13856:7:::1;::::0;::::1;;13855:8;13847:78;;;;-1:-1:-1::0;;;13847:78:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16874:10:::2;10778:18;::::0;;;:12:::2;:18;::::0;;;;;16886:6;;10778:30:::2;::::0;16886:6;10778:22:::2;:30::i;:::-;-1:-1:-1::0;;;;;10759:15:0;::::2;;::::0;;;:9:::2;:15;::::0;;;;;:49:::2;;10751:113;;;;-1:-1:-1::0;;;10751:113:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16964:16:0;::::3;16942:112;;;;-1:-1:-1::0;;;16942:112:0::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17065:33;17075:10;17087:2;17091:6;17065:9;:33::i;:::-;-1:-1:-1::0;17119:4:0::3;::::0;16715:416;-1:-1:-1;;;;;;16715:416:0:o;13060:240::-;13147:14;13163:11;13192:20;;:::i;:::-;-1:-1:-1;;;;;13215:14:0;;;;;;:6;:14;;;;;:21;;13230:5;;13215:21;;;;;;;;;;;;;;;13192:44;;;;;;;;;13215:21;;;;;13192:44;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13060:240:0;-1:-1:-1;;;;13060:240:0:o;12083:296::-;12134:12;;12159:188;-1:-1:-1;;;;;12182:12:0;;;;;;:6;:12;;;;;:19;12178:23;;12159:188;;;-1:-1:-1;;;;;12225:12:0;;;;;;:6;:12;;;;;:15;;12247;;12225:12;12238:1;;12225:15;;;;;;;;;;;;;;;;:19;;;:37;12222:114;;;12282:16;12290:4;12296:1;12282:7;:16::i;:::-;-1:-1:-1;;;12317:3:0;12222:114;12203:3;;12159:188;;;-1:-1:-1;12367:4:0;;12083:296;-1:-1:-1;;12083:296:0:o;12387:249::-;9352:6;;12465:12;;-1:-1:-1;;;;;9352:6:0;9338:10;:20;9316:117;;;;-1:-1:-1;;;9316:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12499:9:::1;12495:109;-1:-1:-1::0;;;;;12518:12:0;::::1;;::::0;;;:6:::1;:12;::::0;;;;:19;12514:23;::::1;12495:109;;;12558:16;12566:4;12572:1;12558:7;:16::i;:::-;-1:-1:-1::0;12495:109:0::1;;13308:179:::0;-1:-1:-1;;;;;13418:20:0;13367:14;13418:20;;;:12;:20;;;;;;;;;13458:6;:14;;;;;;:21;13418:20;;13308:179::o;7939:183::-;-1:-1:-1;;;;;8087:18:0;;;8040:17;8087:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7939:183::o;16071:143::-;-1:-1:-1;;;;;16191:15:0;16155:11;16191:15;;;:7;:15;;;;;;;;;16071:143::o;9571:289::-;9352:6;;9669:12;;-1:-1:-1;;;;;9352:6:0;9338:10;:20;9316:117;;;;-1:-1:-1;;;9316:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9707:22:0;::::1;9699:104;;;;-1:-1:-1::0;;;9699:104:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9824:28;9843:8;9824:18;:28::i;:::-;9814:38:::0;9571:289;-1:-1:-1;;9571:289:0:o;14116:157::-;9352:6;;14174:12;;-1:-1:-1;;;;;9352:6:0;9338:10;:20;9316:117;;;;-1:-1:-1;;;9316:117:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13718:7:::1;::::0;::::1;;13710:73;;;;-1:-1:-1::0;;;13710:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14199:7:::2;:15:::0;;-1:-1:-1;;14199:15:0::2;::::0;;14230:10:::2;::::0;::::2;::::0;14209:5:::2;::::0;14230:10:::2;-1:-1:-1::0;14261:4:0::2;::::0;14116:157::o;901:181::-;959:7;991:5;;;1015:6;;;;1007:46;;;;;-1:-1:-1;;;1007:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;6569:249;-1:-1:-1;;;;;6701:18:0;;;6671:12;6701:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;:36;;;6753:32;;;;;;;6671:12;;6701:27;:18;6753:32;;;;;;;;;;;-1:-1:-1;6806:4:0;;6569:249;-1:-1:-1;;;6569:249:0:o;6159:402::-;6256:12;6304:130;6338:6;6304:130;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6304:15:0;;;;;;:9;:15;;;;;;;:130;:19;:130::i;:::-;-1:-1:-1;;;;;6286:15:0;;;;;;;:9;:15;;;;;;:148;;;;6461:13;;;;;;;:25;;6479:6;6461:17;:25::i;:::-;-1:-1:-1;;;;;6445:13:0;;;;;;;:9;:13;;;;;;;;;:41;;;;6502:26;;;;;;;6445:13;;6502:26;;;;;;;;;;;;;-1:-1:-1;6549:4:0;;6159:402;-1:-1:-1;;;6159:402:0:o;1830:224::-;1943:7;1984:12;1976:6;;;;1968:29;;;;-1:-1:-1;;;1968:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2020:5:0;;;1830:224::o;10892:552::-;10978:12;11022:15;11016:3;:21;11008:77;;;;-1:-1:-1;;;11008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11148:18:0;;;;;;:12;:18;;;;;;11137:30;;:6;;:10;:30::i;:::-;-1:-1:-1;;;;;11118:15:0;;;;;;:9;:15;;;;;;:49;;11096:163;;;;-1:-1:-1;;;11096:163:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11291:18:0;;;;;;:12;:18;;;;;;:30;;11314:6;11291:22;:30::i;:::-;-1:-1:-1;;;;;11270:18:0;;;;;;:12;:18;;;;;;;;:51;;;;11332:6;:12;;;;;11350:21;;;;;;;;;;;;;;;;11332:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11388:23;;;;;;;;;;;;;11270:18;;11388:23;;;;;;;;;-1:-1:-1;11432:4:0;;10892:552;-1:-1:-1;;;10892:552:0:o;7143:490::-;7226:12;7276:127;7312:6;7276:127;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7276:17:0;;;;;;:9;:17;;;;;;;:127;:21;:127::i;:::-;7256:9;:17;7266:6;-1:-1:-1;;;;;7256:17:0;-1:-1:-1;;;;;7256:17:0;;;;;;;;;;;;:147;;;;7429:119;7460:6;7429:119;;;;;;;;;;;;;;;;;:12;;;:119;:16;:119::i;:::-;7414:12;:134;;;7564:36;;;;;;;;-1:-1:-1;;;;;7564:36:0;;;;;;;;;;;;;-1:-1:-1;7621:4:0;;7143:490;-1:-1:-1;;7143:490:0:o;10006:193::-;10121:6;;10100:38;;10070:12;;-1:-1:-1;;;;;10100:38:0;;;;10121:6;;;10100:38;;10070:12;;10100:38;-1:-1:-1;10149:6:0;:17;;-1:-1:-1;;;;;;10149:17:0;-1:-1:-1;;;;;10149:17:0;;;;;;;;;;-1:-1:-1;;10006:193:0:o;11452:372::-;-1:-1:-1;;;;;11565:12:0;;11516;11565;;;:6;:12;;;;;:19;;11516:12;;11565;11578:5;;11565:19;;;;;;;;;;;;;;;;;;;;;11639:11;;-1:-1:-1;;;;;11616:18:0;;;;:12;:18;;;;;;;;11565:19;;-1:-1:-1;11616:35:0;;:18;:22;:35::i;:::-;-1:-1:-1;;;;;11595:18:0;;;;;;:12;:18;;;;;;;;;:56;;;;11680:11;;11667:25;;;;;;;11595:18;;11667:25;;;;;;;;;-1:-1:-1;;;;;11725:12:0;;;;;;:6;:12;;;;;11738:19;;-1:-1:-1;;11738:23:0;;;11725:37;;;;;;;;;;;;;;;;11703:6;:12;11710:4;-1:-1:-1;;;;;11703:12:0;-1:-1:-1;;;;;11703:12:0;;;;;;;;;;;;11716:5;11703:19;;;;;;;;;;;;;;;;:59;;:19;;;;;:59;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11773:12:0;;;;:6;:12;;;;;;:18;;;;;;;;;;;;;;;-1:-1:-1;;11773:18:0;;;;;;;;;;;;;;;;;;;;;11452:372;-1:-1:-1;;;;11452:372:0:o;1357:136::-;1415:7;1442:43;1446:1;1449;1442:43;;;;;;;;;;;;;;;;;:3;:43::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

ipfs://f70005a3a32aab00d0411716ac810ba09bffbaea5eb78b192ee5c09f5a3f1e96

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.