ETH Price: $3,342.75 (-3.62%)
Gas: 2 Gwei

Token

Characters (CHFTG)
 

Overview

Max Total Supply

1,299 CHFTG

Holders

276

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
1 CHFTG
0x3a92f8dd28f6eeb4652849e38520af5ae69ec678
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Characters

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

library Address {
  
    function isContract(address account) internal view returns (bool) {
       
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

}
library SafeMath {

    /**
    * @dev Multiplies two numbers, throws on overflow.
    */
    function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
        if (a == 0) {
            return 0;
        }
        c = a * b;
        require(c / a == b);
        return c;
    }

    /**
    * @dev Integer division of two numbers, truncating the quotient.
    */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // assert(b > 0); // Solidity automatically throws when dividing by 0
        // uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return a / b;
    }

    /**
    * @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
    */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        return a - b;
    }

    /**
    * @dev Adds two numbers, throws on overflow.
    */
    function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
        c = a + b;
        require(c >= a);
        return c;
    }
}


interface IAccessControl {
    function hasRole(bytes32 role, address account) external view returns (bool);
    function getRoleAdmin(bytes32 role) external view returns (bytes32);
    function grantRole(bytes32 role, address account) external;
    function revokeRole(bytes32 role, address account) external;
    function renounceRole(bytes32 role, address account) external;
}

interface IERC165 {
    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

interface IERC721Receiver {
    function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);
}

interface IERC721 is IERC165 {
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);
    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);
    event Mint(uint indexed index, address indexed minter);
    event Withdraw(address indexed account, uint indexed amount);
    event SaleIsStarted();

    function balanceOf(address owner) external view returns (uint256 balance);
    function ownerOf(uint256 tokenId) external view returns (address owner);
    function safeTransferFrom(address from, address to, uint256 tokenId) external;
    function transferFrom(address from, address to, uint256 tokenId) external;
    function approve(address to, uint256 tokenId) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function setApprovalForAll(address operator, bool _approved) external;
    function isApprovedForAll(address owner, address operator) external view returns (bool);
    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;
}

interface IERC721Metadata is IERC721 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function tokenURI(uint256 tokenId) external view returns (string memory);
}

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

}

abstract contract ERC165 is IERC165 {
       function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

abstract contract AccessControl is Context, IAccessControl, ERC165 {
    struct RoleData {
        mapping (address => bool) members;
        bytes32 adminRole;
    }

    mapping (bytes32 => RoleData) private _roles;
    bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

    event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);
    event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);
    event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IAccessControl).interfaceId
            || super.supportsInterface(interfaceId);
    }

    function hasRole(bytes32 role, address account) public view override returns (bool) {
        return _roles[role].members[account];
    }

    function getRoleAdmin(bytes32 role) public view override returns (bytes32) {
        return _roles[role].adminRole;
    }

    function grantRole(bytes32 role, address account) public virtual override {
        require(hasRole(getRoleAdmin(role), _msgSender()), "AccessControl: sender must be an admin to grant");

        _grantRole(role, account);
    }

    function revokeRole(bytes32 role, address account) public virtual override {
        require(hasRole(getRoleAdmin(role), _msgSender()), "AccessControl: sender must be an admin to revoke");

        _revokeRole(role, account);
    }

    function renounceRole(bytes32 role, address account) public virtual override {
        require(account == _msgSender(), "AccessControl: can only renounce roles for self");

        _revokeRole(role, account);
    }

    function _setupRole(bytes32 role, address account) internal virtual {
        _grantRole(role, account);
    }

    function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
        emit RoleAdminChanged(role, getRoleAdmin(role), adminRole);
        _roles[role].adminRole = adminRole;
    }

    function _grantRole(bytes32 role, address account) private {
        if (!hasRole(role, account)) {
            _roles[role].members[account] = true;
            emit RoleGranted(role, account, _msgSender());
        }
    }

    function _revokeRole(bytes32 role, address account) private {
        if (hasRole(role, account)) {
            _roles[role].members[account] = false;
            emit RoleRevoked(role, account, _msgSender());
        }
    }
}

contract ERC721 is  Context, ERC165,Ownable, AccessControl, IERC721, IERC721Metadata {
    using Address for address;
    using SafeMath for uint256;

    bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");
    bytes32 public constant ADMIN_ROLE = keccak256("ADMIN_ROLE");

    string private _name;
    string private _symbol;
    string internal baseURI;
    uint256 internal tokensSold = 0;
    bool public _startSale = false;

    uint256 constant MAX_SUPPLY = 10000;


    mapping (uint256 => address) private _owners;
    mapping (address => uint256) private _balances;
    mapping (uint256 => address) private _tokenApprovals;
    mapping (address => mapping (address => bool)) private _operatorApprovals;
    mapping (uint256 => string) private _tokenURIs;
    mapping (address => uint256[]) public tokensPerOwner;
    mapping(address => uint256[]) internal ownerToIds;
    mapping(uint256 => uint256) internal idToOwnerIndex;
   

   
    constructor (string memory name_, string memory symbol_,string memory baseURI_) {
        _name = name_;
        _symbol = symbol_;
        baseURI = baseURI_;
    }
    

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165, AccessControl) returns (bool) {
        return interfaceId == type(IERC721).interfaceId
            || interfaceId == type(IERC721Metadata).interfaceId
            || super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view virtual override returns (uint256) {
        require(owner != address(0), "ERC721: balance query for the zero address");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "ERC721: owner query for nonexistent token");
        return owner;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }


    function totalSupply() public view returns (uint256) {
        return tokensSold;
    }

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        return string(abi.encodePacked(_baseURI(), toString(tokenId)));
    }

    function _baseURI() internal view virtual returns (string memory) {
        return baseURI;
    }


    function approve(address to, uint256 tokenId) public virtual override {
        address owner = ERC721.ownerOf(tokenId);
        require(to != owner, "ERC721: approval to current owner");

        require(_msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "ERC721: approve caller is not owner nor approved for all"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "ERC721: approved query for nonexistent token");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "ERC721: approve to caller");

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(address from, address to, uint256 tokenId) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {
        safeTransferFrom(from, to, tokenId, "");
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");
        _safeTransfer(from, to, tokenId, _data);
    }

    function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {
        _transfer(from, to, tokenId);
        require(_checkOnERC721Received(from, to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return _owners[tokenId] != address(0);
    }

    function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {
        require(_exists(tokenId), "ERC721: operator query for nonexistent token");
        address owner = ERC721.ownerOf(tokenId);
        return (spender == owner || getApproved(tokenId) == spender || isApprovedForAll(owner, spender));
    }

    function _safeMint(address to, uint256 tokenId) internal virtual {
        _safeMint(to, tokenId, "");
    }

    function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {
        _mint(to, tokenId);
        require(_checkOnERC721Received(address(0), to, tokenId, _data), "ERC721: transfer to non ERC721Receiver implementer");
    }

    function toString(uint256 value) internal pure returns (string memory) {
           
        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }


    function _addNFToken(address _to, uint256 _tokenId) internal {
        require(_owners[_tokenId] == address(0), "Cannot add, already owned.");
        _owners[_tokenId] = _to;

        ownerToIds[_to].push(_tokenId);
        idToOwnerIndex[_tokenId] = ownerToIds[_to].length.sub(1);
    }

    function _removeNFToken(address _from, uint256 _tokenId) internal {
        require(_owners[_tokenId] == _from, "Incorrect owner.");
        delete _owners[_tokenId];
        uint256 tokenToRemoveIndex = idToOwnerIndex[_tokenId];
        uint256 lastTokenIndex = ownerToIds[_from].length.sub(1);

        if (lastTokenIndex != tokenToRemoveIndex) {
            uint256 lastToken = ownerToIds[_from][lastTokenIndex];
            ownerToIds[_from][tokenToRemoveIndex] = lastToken;
            idToOwnerIndex[lastToken] = tokenToRemoveIndex;
        }

        ownerToIds[_from].pop();
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "ERC721: mint to the zero address");
        require(!_exists(tokenId), "ERC721: token already minted");

        _beforeTokenTransfer(address(0), to, tokenId);

        _balances[to] += 1;
        tokensSold += 1;
        tokensPerOwner[to].push(tokenId);
        _addNFToken(to, tokenId);
        emit Mint(tokenId, to);
        emit Transfer(address(0), to, tokenId);
    }

    function devMint(uint count, address recipient) external {
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to change baseURI");
        require(tokensSold+count <=10000, "The tokens limit has reached.");
        for (uint i = 0; i < count; i++) {
            uint256 _tokenId = tokensSold + 1;
            _mint(recipient, _tokenId);
        }
    }


    
    function _burn(uint256 tokenId) internal virtual {
        address owner = ERC721.ownerOf(tokenId);

        _beforeTokenTransfer(owner, address(0), tokenId);

        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[tokenId];
        tokensPerOwner[owner].push(tokenId);
        emit Transfer(owner, address(0), tokenId);
    }

    function _transfer(address from, address to, uint256 tokenId) internal virtual {
        require(ERC721.ownerOf(tokenId) == from, "ERC721: transfer of token that is not own");
        require(to != address(0), "ERC721: transfer to the zero address");

        _beforeTokenTransfer(from, to, tokenId);

        _approve(address(0), tokenId);
        
        _removeNFToken(from, tokenId);
        _addNFToken(to, tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        
        emit Transfer(from, to, tokenId);
    }

    function _approve(address to, uint256 tokenId) internal virtual {
        _tokenApprovals[tokenId] = to;
        emit Approval(ERC721.ownerOf(tokenId), to, tokenId);
    }

    function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)
        private returns (bool)
    {
        if (to.isContract()) {
            try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
                return retval == IERC721Receiver(to).onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    // solhint-disable-next-line no-inline-assembly
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

    function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }
}

contract Characters is ERC721  {
    using SafeMath for uint256;

    bool private lock = false;
    bool public contractPaused;
   
    constructor() ERC721("Characters", "CHFTG", " https://character-generator.xyz/json/") {

        _setupRole(DEFAULT_ADMIN_ROLE, _msgSender());
        _setupRole(ADMIN_ROLE, _msgSender());
        _setupRole(MINTER_ROLE, _msgSender());
    }
    modifier nonReentrant {
        require(!lock, "ReentrancyGuard: reentrant call");
        lock = true;
        _;
        lock = false;
    }
    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721) returns (bool) {
        return super.supportsInterface(interfaceId);
    }

    function pauseContract(bool _paused) external  {
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to pause the contract");
        contractPaused = _paused;
    }

    function setBaseURI(string memory newURI) public returns (bool) {
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to change baseURI");
        baseURI = newURI;
        return true;

    }

    function getTokensByOwner(address _owner) public view returns (uint256[] memory){
        return ownerToIds[_owner];
    }

   
    function startSale() external {
        require(hasRole(MINTER_ROLE, _msgSender()), "You must have minter role to change baseURI");
        require(!_startSale);
        _startSale = true;
        emit SaleIsStarted();
    }

    function birth()external nonReentrant returns(bool, uint){
        require(!contractPaused);
        require(_startSale, "The sale hasn't started.");
        require(tokensSold+1 <=10000, "The tokens limit has reached.");
        uint _tokenId = tokensSold + 1;
        _mint(_msgSender(), _tokenId);        
        return (true,_tokenId);
    }

}

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":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"index","type":"uint256"},{"indexed":true,"internalType":"address","name":"minter","type":"address"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"previousAdminRole","type":"bytes32"},{"indexed":true,"internalType":"bytes32","name":"newAdminRole","type":"bytes32"}],"name":"RoleAdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleGranted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"role","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"sender","type":"address"}],"name":"RoleRevoked","type":"event"},{"anonymous":false,"inputs":[],"name":"SaleIsStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINTER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_startSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"birth","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"address","name":"recipient","type":"address"}],"name":"devMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"getTokensByOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"grantRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"pauseContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"renounceRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"name":"revokeRole","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newURI","type":"string"}],"name":"setBaseURI","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokensPerOwner","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260006005556006805460ff19908116909155600f805490911690553480156200002c57600080fd5b506040518060400160405280600a8152602001694368617261637465727360b01b81525060405180604001604052806005815260200164434846544760d81b8152506040518060600160405280602681526020016200268a60269139620000933362000146565b8251620000a89060029060208601906200022e565b508151620000be9060039060208501906200022e565b508051620000d49060049060208401906200022e565b50620000e892506000915033905062000196565b620001147fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217753362000196565b620001407f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000196565b62000311565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b620001a28282620001a6565b5050565b60008281526001602090815260408083206001600160a01b038516845290915290205460ff16620001a25760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b8280546200023c90620002d4565b90600052602060002090601f016020900481019282620002605760008555620002ab565b82601f106200027b57805160ff1916838001178555620002ab565b82800160010185558215620002ab579182015b82811115620002ab5782518255916020019190600101906200028e565b50620002b9929150620002bd565b5090565b5b80821115620002b95760008155600101620002be565b600181811c90821680620002e957607f821691505b602082108114156200030b57634e487b7160e01b600052602260045260246000fd5b50919050565b61236980620003216000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80638a67456a1161011a578063b88d4fde116100ad578063d547741f1161007c578063d547741f1461046d578063e272b89214610480578063e985e9c514610493578063ef5793ce146104cf578063f2fde38b146104e257600080fd5b8063b88d4fde14610413578063c81ba8f014610426578063c87b56dd14610445578063d53913931461045857600080fd5b8063a217fddf116100e9578063a217fddf146103e3578063a22cb465146103eb578063b2918503146103fe578063b66a0e5d1461040b57600080fd5b80638a67456a146103a55780638da5cb5b146103b757806391d14854146103c857806395d89b41146103db57600080fd5b80632f2ff15d1161019d57806355f804b31161016c57806355f804b31461033d5780636352211e1461035057806370a0823114610363578063715018a61461037657806375b238fc1461037e57600080fd5b80632f2ff15d146102e457806336568abe146102f757806340398d671461030a57806342842e0e1461032a57600080fd5b806318160ddd116101d957806318160ddd1461028857806323b872dd1461029a578063248a9ca3146102ad5780632d1a12f6146102d157600080fd5b806301ffc9a71461020b57806306fdde0314610233578063081812fc14610248578063095ea7b314610273575b600080fd5b61021e610219366004611f87565b6104f5565b60405190151581526020015b60405180910390f35b61023b610506565b60405161022a91906120e1565b61025b610256366004611f4d565b610598565b6040516001600160a01b03909116815260200161022a565b610286610281366004611f0a565b610632565b005b6005545b60405190815260200161022a565b6102866102a8366004611e2d565b610748565b61028c6102bb366004611f4d565b6000908152600160208190526040909120015490565b6102866102df366004611f65565b610779565b6102866102f2366004611f65565b610847565b610286610305366004611f65565b6108d7565b61031d610318366004611de1565b610951565b60405161022a919061209d565b610286610338366004611e2d565b6109bd565b61021e61034b366004611fbf565b6109d8565b61025b61035e366004611f4d565b610a2a565b61028c610371366004611de1565b610aa1565b610286610b28565b61028c7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b600f5461021e90610100900460ff1681565b6000546001600160a01b031661025b565b61021e6103d6366004611f65565b610b8e565b61023b610bb9565b61028c600081565b6102866103f9366004611ee1565b610bc8565b60065461021e9060ff1681565b610286610c8d565b610286610421366004611e68565b610d09565b61042e610d41565b60408051921515835260208301919091520161022a565b61023b610453366004611f4d565b610e9d565b61028c60008051602061231483398151915281565b61028661047b366004611f65565b610f54565b61028661048e366004611f33565b610fd5565b61021e6104a1366004611dfb565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b61028c6104dd366004611f0a565b61106b565b6102866104f0366004611de1565b61109c565b600061050082611167565b92915050565b60606002805461051590612251565b80601f016020809104026020016040519081016040528092919081815260200182805461054190612251565b801561058e5780601f106105635761010080835404028352916020019161058e565b820191906000526020600020905b81548152906001019060200180831161057157829003601f168201915b5050505050905090565b6000818152600760205260408120546001600160a01b03166106165760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600960205260409020546001600160a01b031690565b600061063d82610a2a565b9050806001600160a01b0316836001600160a01b031614156106ab5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161060d565b336001600160a01b03821614806106c757506106c781336104a1565b6107395760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161060d565b61074383836111a7565b505050565b6107523382611215565b61076e5760405162461bcd60e51b815260040161060d90612191565b61074383838361130c565b61079160008051602061231483398151915233610b8e565b6107ad5760405162461bcd60e51b815260040161060d90612146565b612710826005546107be91906121e2565b111561080c5760405162461bcd60e51b815260206004820152601d60248201527f54686520746f6b656e73206c696d69742068617320726561636865642e000000604482015260640161060d565b60005b82811015610743576000600554600161082891906121e2565b905061083483826114a4565b508061083f8161228c565b91505061080f565b60008281526001602081905260409091200154610865905b33610b8e565b6108c95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201526e0818591b5a5b881d1bc819dc985b9d608a1b606482015260840161060d565b6108d3828261164e565b5050565b6001600160a01b03811633146109475760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161060d565b6108d382826116b9565b6001600160a01b0381166000908152600d60209081526040918290208054835181840281018401909452808452606093928301828280156109b157602002820191906000526020600020905b81548152602001906001019080831161099d575b50505050509050919050565b61074383838360405180602001604052806000815250610d09565b60006109f260008051602061231483398151915233610b8e565b610a0e5760405162461bcd60e51b815260040161060d90612146565b8151610a21906004906020850190611ca6565b50600192915050565b6000818152600760205260408120546001600160a01b0316806105005760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161060d565b60006001600160a01b038216610b0c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161060d565b506001600160a01b031660009081526008602052604090205490565b6000546001600160a01b03163314610b825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b610b8c6000611720565b565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606003805461051590612251565b6001600160a01b038216331415610c215760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161060d565b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610ca560008051602061231483398151915233610b8e565b610cc15760405162461bcd60e51b815260040161060d90612146565b60065460ff1615610cd157600080fd5b6006805460ff191660011790556040517f3a40cba5bc9ba53b982e020c19f51fdf3b4e536da88b16beafe417447277536d90600090a1565b610d133383611215565b610d2f5760405162461bcd60e51b815260040161060d90612191565b610d3b84848484611770565b50505050565b600f54600090819060ff1615610d995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161060d565b600f805460ff191660011790819055610100900460ff1615610dba57600080fd5b60065460ff16610e0c5760405162461bcd60e51b815260206004820152601860248201527f5468652073616c65206861736e277420737461727465642e0000000000000000604482015260640161060d565b6127106005546001610e1e91906121e2565b1115610e6c5760405162461bcd60e51b815260206004820152601d60248201527f54686520746f6b656e73206c696d69742068617320726561636865642e000000604482015260640161060d565b60006005546001610e7d91906121e2565b9050610e8933826114a4565b600192509050600f805460ff191690559091565b6000818152600760205260409020546060906001600160a01b0316610f1c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161060d565b610f246117a3565b610f2d836117b2565b604051602001610f3e929190612031565b6040516020818303038152906040529050919050565b60008281526001602081905260409091200154610f709061085f565b6109475760405162461bcd60e51b815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201526f2061646d696e20746f207265766f6b6560801b606482015260840161060d565b610fed60008051602061231483398151915233610b8e565b6110515760405162461bcd60e51b815260206004820152602f60248201527f596f75206d7573742068617665206d696e74657220726f6c6520746f2070617560448201526e1cd9481d1a194818dbdb9d1c9858dd608a1b606482015260840161060d565b600f80549115156101000261ff0019909216919091179055565b600c602052816000526040600020818154811061108757600080fd5b90600052602060002001600091509150505481565b6000546001600160a01b031633146110f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b6001600160a01b03811661115b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61116481611720565b50565b60006001600160e01b031982166380ac58cd60e01b148061119857506001600160e01b03198216635b5e139f60e01b145b806105005750610500826118cc565b600081815260096020526040902080546001600160a01b0319166001600160a01b03841690811790915581906111dc82610a2a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600760205260408120546001600160a01b031661128e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161060d565b600061129983610a2a565b9050806001600160a01b0316846001600160a01b031614806112d45750836001600160a01b03166112c984610598565b6001600160a01b0316145b8061130457506001600160a01b038082166000908152600a602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661131f82610a2a565b6001600160a01b0316146113875760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161060d565b6001600160a01b0382166113e95760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6113f46000826111a7565b6113fe8382611901565b6114088282611aaa565b6001600160a01b038316600090815260086020526040812080546001929061143190849061220e565b90915550506001600160a01b038216600090815260086020526040812080546001929061145f9084906121e2565b909155505060405181906001600160a01b0380851691908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90600090a4505050565b6001600160a01b0382166114fa5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161060d565b6000818152600760205260409020546001600160a01b03161561155f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161060d565b6001600160a01b03821660009081526008602052604081208054600192906115889084906121e2565b925050819055506001600560008282546115a291906121e2565b90915550506001600160a01b0382166000908152600c60209081526040822080546001810182559083529120018190556115dc8282611aaa565b6040516001600160a01b0383169082907ff3cea5493d790af0133817606f7350a91d7f154ea52eaa79d179d4d231e5010290600090a360405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6116588282610b8e565b6108d35760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6116c38282610b8e565b156108d35760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61177b84848461130c565b61178784848484611b79565b610d3b5760405162461bcd60e51b815260040161060d906120f4565b60606004805461051590612251565b6060816117d65750506040805180820190915260018152600360fc1b602082015290565b8160005b811561180057806117ea8161228c565b91506117f99050600a836121fa565b91506117da565b60008167ffffffffffffffff81111561182957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611853576020820181803683370190505b5090505b84156113045761186860018361220e565b9150611875600a866122a7565b6118809060306121e2565b60f81b8183815181106118a357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506118c5600a866121fa565b9450611857565b60006001600160e01b03198216637965db0b60e01b148061050057506301ffc9a760e01b6001600160e01b0319831614610500565b6000818152600760205260409020546001600160a01b0383811691161461195d5760405162461bcd60e51b815260206004820152601060248201526f24b731b7b93932b1ba1037bbb732b91760811b604482015260640161060d565b600081815260076020908152604080832080546001600160a01b0319169055600e8252808320546001600160a01b0386168452600d9092528220549091906119a6906001611c86565b9050818114611a59576001600160a01b0384166000908152600d602052604081208054839081106119e757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600d6000876001600160a01b03166001600160a01b031681526020019081526020016000208481548110611a3957634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600e9052604090208290555b6001600160a01b0384166000908152600d60205260409020805480611a8e57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000818152600760205260409020546001600160a01b031615611b0f5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74206164642c20616c7265616479206f776e65642e000000000000604482015260640161060d565b600081815260076020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600d83529083208054600181810183558286529385200185905592529054611b6691611c86565b6000918252600e60205260409091205550565b60006001600160a01b0384163b15611c7b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bbd903390899088908890600401612060565b602060405180830381600087803b158015611bd757600080fd5b505af1925050508015611c07575060408051601f3d908101601f19168201909252611c0491810190611fa3565b60015b611c61573d808015611c35576040519150601f19603f3d011682016040523d82523d6000602084013e611c3a565b606091505b508051611c595760405162461bcd60e51b815260040161060d906120f4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611304565b506001949350505050565b600082821115611c9557600080fd5b611c9f828461220e565b9392505050565b828054611cb290612251565b90600052602060002090601f016020900481019282611cd45760008555611d1a565b82601f10611ced57805160ff1916838001178555611d1a565b82800160010185558215611d1a579182015b82811115611d1a578251825591602001919060010190611cff565b50611d26929150611d2a565b5090565b5b80821115611d265760008155600101611d2b565b600067ffffffffffffffff80841115611d5a57611d5a6122e7565b604051601f8501601f19908116603f01168101908282118183101715611d8257611d826122e7565b81604052809350858152868686011115611d9b57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611dcc57600080fd5b919050565b80358015158114611dcc57600080fd5b600060208284031215611df2578081fd5b611c9f82611db5565b60008060408385031215611e0d578081fd5b611e1683611db5565b9150611e2460208401611db5565b90509250929050565b600080600060608486031215611e41578081fd5b611e4a84611db5565b9250611e5860208501611db5565b9150604084013590509250925092565b60008060008060808587031215611e7d578081fd5b611e8685611db5565b9350611e9460208601611db5565b925060408501359150606085013567ffffffffffffffff811115611eb6578182fd5b8501601f81018713611ec6578182fd5b611ed587823560208401611d3f565b91505092959194509250565b60008060408385031215611ef3578182fd5b611efc83611db5565b9150611e2460208401611dd1565b60008060408385031215611f1c578182fd5b611f2583611db5565b946020939093013593505050565b600060208284031215611f44578081fd5b611c9f82611dd1565b600060208284031215611f5e578081fd5b5035919050565b60008060408385031215611f77578182fd5b82359150611e2460208401611db5565b600060208284031215611f98578081fd5b8135611c9f816122fd565b600060208284031215611fb4578081fd5b8151611c9f816122fd565b600060208284031215611fd0578081fd5b813567ffffffffffffffff811115611fe6578182fd5b8201601f81018413611ff6578182fd5b61130484823560208401611d3f565b6000815180845261201d816020860160208601612225565b601f01601f19169290920160200192915050565b60008351612043818460208801612225565b835190830190612057818360208801612225565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061209390830184612005565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156120d5578351835292840192918401916001016120b9565b50909695505050505050565b602081526000611c9f6020830184612005565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602b908201527f596f75206d7573742068617665206d696e74657220726f6c6520746f2063686160408201526a6e6765206261736555524960a81b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156121f5576121f56122bb565b500190565b600082612209576122096122d1565b500490565b600082821015612220576122206122bb565b500390565b60005b83811015612240578181015183820152602001612228565b83811115610d3b5750506000910152565b600181811c9082168061226557607f821691505b6020821081141561228657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156122a0576122a06122bb565b5060010190565b6000826122b6576122b66122d1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461116457600080fdfe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220c1d76cae4b38fe16abe88f8521d246c16b48abf3fab1839c3c54789874b310e964736f6c634300080400332068747470733a2f2f6368617261637465722d67656e657261746f722e78797a2f6a736f6e2f

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102065760003560e01c80638a67456a1161011a578063b88d4fde116100ad578063d547741f1161007c578063d547741f1461046d578063e272b89214610480578063e985e9c514610493578063ef5793ce146104cf578063f2fde38b146104e257600080fd5b8063b88d4fde14610413578063c81ba8f014610426578063c87b56dd14610445578063d53913931461045857600080fd5b8063a217fddf116100e9578063a217fddf146103e3578063a22cb465146103eb578063b2918503146103fe578063b66a0e5d1461040b57600080fd5b80638a67456a146103a55780638da5cb5b146103b757806391d14854146103c857806395d89b41146103db57600080fd5b80632f2ff15d1161019d57806355f804b31161016c57806355f804b31461033d5780636352211e1461035057806370a0823114610363578063715018a61461037657806375b238fc1461037e57600080fd5b80632f2ff15d146102e457806336568abe146102f757806340398d671461030a57806342842e0e1461032a57600080fd5b806318160ddd116101d957806318160ddd1461028857806323b872dd1461029a578063248a9ca3146102ad5780632d1a12f6146102d157600080fd5b806301ffc9a71461020b57806306fdde0314610233578063081812fc14610248578063095ea7b314610273575b600080fd5b61021e610219366004611f87565b6104f5565b60405190151581526020015b60405180910390f35b61023b610506565b60405161022a91906120e1565b61025b610256366004611f4d565b610598565b6040516001600160a01b03909116815260200161022a565b610286610281366004611f0a565b610632565b005b6005545b60405190815260200161022a565b6102866102a8366004611e2d565b610748565b61028c6102bb366004611f4d565b6000908152600160208190526040909120015490565b6102866102df366004611f65565b610779565b6102866102f2366004611f65565b610847565b610286610305366004611f65565b6108d7565b61031d610318366004611de1565b610951565b60405161022a919061209d565b610286610338366004611e2d565b6109bd565b61021e61034b366004611fbf565b6109d8565b61025b61035e366004611f4d565b610a2a565b61028c610371366004611de1565b610aa1565b610286610b28565b61028c7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177581565b600f5461021e90610100900460ff1681565b6000546001600160a01b031661025b565b61021e6103d6366004611f65565b610b8e565b61023b610bb9565b61028c600081565b6102866103f9366004611ee1565b610bc8565b60065461021e9060ff1681565b610286610c8d565b610286610421366004611e68565b610d09565b61042e610d41565b60408051921515835260208301919091520161022a565b61023b610453366004611f4d565b610e9d565b61028c60008051602061231483398151915281565b61028661047b366004611f65565b610f54565b61028661048e366004611f33565b610fd5565b61021e6104a1366004611dfb565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205460ff1690565b61028c6104dd366004611f0a565b61106b565b6102866104f0366004611de1565b61109c565b600061050082611167565b92915050565b60606002805461051590612251565b80601f016020809104026020016040519081016040528092919081815260200182805461054190612251565b801561058e5780601f106105635761010080835404028352916020019161058e565b820191906000526020600020905b81548152906001019060200180831161057157829003601f168201915b5050505050905090565b6000818152600760205260408120546001600160a01b03166106165760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600960205260409020546001600160a01b031690565b600061063d82610a2a565b9050806001600160a01b0316836001600160a01b031614156106ab5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161060d565b336001600160a01b03821614806106c757506106c781336104a1565b6107395760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161060d565b61074383836111a7565b505050565b6107523382611215565b61076e5760405162461bcd60e51b815260040161060d90612191565b61074383838361130c565b61079160008051602061231483398151915233610b8e565b6107ad5760405162461bcd60e51b815260040161060d90612146565b612710826005546107be91906121e2565b111561080c5760405162461bcd60e51b815260206004820152601d60248201527f54686520746f6b656e73206c696d69742068617320726561636865642e000000604482015260640161060d565b60005b82811015610743576000600554600161082891906121e2565b905061083483826114a4565b508061083f8161228c565b91505061080f565b60008281526001602081905260409091200154610865905b33610b8e565b6108c95760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201526e0818591b5a5b881d1bc819dc985b9d608a1b606482015260840161060d565b6108d3828261164e565b5050565b6001600160a01b03811633146109475760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161060d565b6108d382826116b9565b6001600160a01b0381166000908152600d60209081526040918290208054835181840281018401909452808452606093928301828280156109b157602002820191906000526020600020905b81548152602001906001019080831161099d575b50505050509050919050565b61074383838360405180602001604052806000815250610d09565b60006109f260008051602061231483398151915233610b8e565b610a0e5760405162461bcd60e51b815260040161060d90612146565b8151610a21906004906020850190611ca6565b50600192915050565b6000818152600760205260408120546001600160a01b0316806105005760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161060d565b60006001600160a01b038216610b0c5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161060d565b506001600160a01b031660009081526008602052604090205490565b6000546001600160a01b03163314610b825760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b610b8c6000611720565b565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60606003805461051590612251565b6001600160a01b038216331415610c215760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161060d565b336000818152600a602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610ca560008051602061231483398151915233610b8e565b610cc15760405162461bcd60e51b815260040161060d90612146565b60065460ff1615610cd157600080fd5b6006805460ff191660011790556040517f3a40cba5bc9ba53b982e020c19f51fdf3b4e536da88b16beafe417447277536d90600090a1565b610d133383611215565b610d2f5760405162461bcd60e51b815260040161060d90612191565b610d3b84848484611770565b50505050565b600f54600090819060ff1615610d995760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161060d565b600f805460ff191660011790819055610100900460ff1615610dba57600080fd5b60065460ff16610e0c5760405162461bcd60e51b815260206004820152601860248201527f5468652073616c65206861736e277420737461727465642e0000000000000000604482015260640161060d565b6127106005546001610e1e91906121e2565b1115610e6c5760405162461bcd60e51b815260206004820152601d60248201527f54686520746f6b656e73206c696d69742068617320726561636865642e000000604482015260640161060d565b60006005546001610e7d91906121e2565b9050610e8933826114a4565b600192509050600f805460ff191690559091565b6000818152600760205260409020546060906001600160a01b0316610f1c5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b606482015260840161060d565b610f246117a3565b610f2d836117b2565b604051602001610f3e929190612031565b6040516020818303038152906040529050919050565b60008281526001602081905260409091200154610f709061085f565b6109475760405162461bcd60e51b815260206004820152603060248201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60448201526f2061646d696e20746f207265766f6b6560801b606482015260840161060d565b610fed60008051602061231483398151915233610b8e565b6110515760405162461bcd60e51b815260206004820152602f60248201527f596f75206d7573742068617665206d696e74657220726f6c6520746f2070617560448201526e1cd9481d1a194818dbdb9d1c9858dd608a1b606482015260840161060d565b600f80549115156101000261ff0019909216919091179055565b600c602052816000526040600020818154811061108757600080fd5b90600052602060002001600091509150505481565b6000546001600160a01b031633146110f65760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161060d565b6001600160a01b03811661115b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161060d565b61116481611720565b50565b60006001600160e01b031982166380ac58cd60e01b148061119857506001600160e01b03198216635b5e139f60e01b145b806105005750610500826118cc565b600081815260096020526040902080546001600160a01b0319166001600160a01b03841690811790915581906111dc82610a2a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600760205260408120546001600160a01b031661128e5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161060d565b600061129983610a2a565b9050806001600160a01b0316846001600160a01b031614806112d45750836001600160a01b03166112c984610598565b6001600160a01b0316145b8061130457506001600160a01b038082166000908152600a602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661131f82610a2a565b6001600160a01b0316146113875760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161060d565b6001600160a01b0382166113e95760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161060d565b6113f46000826111a7565b6113fe8382611901565b6114088282611aaa565b6001600160a01b038316600090815260086020526040812080546001929061143190849061220e565b90915550506001600160a01b038216600090815260086020526040812080546001929061145f9084906121e2565b909155505060405181906001600160a01b0380851691908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90600090a4505050565b6001600160a01b0382166114fa5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161060d565b6000818152600760205260409020546001600160a01b03161561155f5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161060d565b6001600160a01b03821660009081526008602052604081208054600192906115889084906121e2565b925050819055506001600560008282546115a291906121e2565b90915550506001600160a01b0382166000908152600c60209081526040822080546001810182559083529120018190556115dc8282611aaa565b6040516001600160a01b0383169082907ff3cea5493d790af0133817606f7350a91d7f154ea52eaa79d179d4d231e5010290600090a360405181906001600160a01b038416906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6116588282610b8e565b6108d35760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6116c38282610b8e565b156108d35760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61177b84848461130c565b61178784848484611b79565b610d3b5760405162461bcd60e51b815260040161060d906120f4565b60606004805461051590612251565b6060816117d65750506040805180820190915260018152600360fc1b602082015290565b8160005b811561180057806117ea8161228c565b91506117f99050600a836121fa565b91506117da565b60008167ffffffffffffffff81111561182957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611853576020820181803683370190505b5090505b84156113045761186860018361220e565b9150611875600a866122a7565b6118809060306121e2565b60f81b8183815181106118a357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506118c5600a866121fa565b9450611857565b60006001600160e01b03198216637965db0b60e01b148061050057506301ffc9a760e01b6001600160e01b0319831614610500565b6000818152600760205260409020546001600160a01b0383811691161461195d5760405162461bcd60e51b815260206004820152601060248201526f24b731b7b93932b1ba1037bbb732b91760811b604482015260640161060d565b600081815260076020908152604080832080546001600160a01b0319169055600e8252808320546001600160a01b0386168452600d9092528220549091906119a6906001611c86565b9050818114611a59576001600160a01b0384166000908152600d602052604081208054839081106119e757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600d6000876001600160a01b03166001600160a01b031681526020019081526020016000208481548110611a3957634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600e9052604090208290555b6001600160a01b0384166000908152600d60205260409020805480611a8e57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b6000818152600760205260409020546001600160a01b031615611b0f5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f74206164642c20616c7265616479206f776e65642e000000000000604482015260640161060d565b600081815260076020908152604080832080546001600160a01b0319166001600160a01b038716908117909155808452600d83529083208054600181810183558286529385200185905592529054611b6691611c86565b6000918252600e60205260409091205550565b60006001600160a01b0384163b15611c7b57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611bbd903390899088908890600401612060565b602060405180830381600087803b158015611bd757600080fd5b505af1925050508015611c07575060408051601f3d908101601f19168201909252611c0491810190611fa3565b60015b611c61573d808015611c35576040519150601f19603f3d011682016040523d82523d6000602084013e611c3a565b606091505b508051611c595760405162461bcd60e51b815260040161060d906120f4565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611304565b506001949350505050565b600082821115611c9557600080fd5b611c9f828461220e565b9392505050565b828054611cb290612251565b90600052602060002090601f016020900481019282611cd45760008555611d1a565b82601f10611ced57805160ff1916838001178555611d1a565b82800160010185558215611d1a579182015b82811115611d1a578251825591602001919060010190611cff565b50611d26929150611d2a565b5090565b5b80821115611d265760008155600101611d2b565b600067ffffffffffffffff80841115611d5a57611d5a6122e7565b604051601f8501601f19908116603f01168101908282118183101715611d8257611d826122e7565b81604052809350858152868686011115611d9b57600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114611dcc57600080fd5b919050565b80358015158114611dcc57600080fd5b600060208284031215611df2578081fd5b611c9f82611db5565b60008060408385031215611e0d578081fd5b611e1683611db5565b9150611e2460208401611db5565b90509250929050565b600080600060608486031215611e41578081fd5b611e4a84611db5565b9250611e5860208501611db5565b9150604084013590509250925092565b60008060008060808587031215611e7d578081fd5b611e8685611db5565b9350611e9460208601611db5565b925060408501359150606085013567ffffffffffffffff811115611eb6578182fd5b8501601f81018713611ec6578182fd5b611ed587823560208401611d3f565b91505092959194509250565b60008060408385031215611ef3578182fd5b611efc83611db5565b9150611e2460208401611dd1565b60008060408385031215611f1c578182fd5b611f2583611db5565b946020939093013593505050565b600060208284031215611f44578081fd5b611c9f82611dd1565b600060208284031215611f5e578081fd5b5035919050565b60008060408385031215611f77578182fd5b82359150611e2460208401611db5565b600060208284031215611f98578081fd5b8135611c9f816122fd565b600060208284031215611fb4578081fd5b8151611c9f816122fd565b600060208284031215611fd0578081fd5b813567ffffffffffffffff811115611fe6578182fd5b8201601f81018413611ff6578182fd5b61130484823560208401611d3f565b6000815180845261201d816020860160208601612225565b601f01601f19169290920160200192915050565b60008351612043818460208801612225565b835190830190612057818360208801612225565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061209390830184612005565b9695505050505050565b6020808252825182820181905260009190848201906040850190845b818110156120d5578351835292840192918401916001016120b9565b50909695505050505050565b602081526000611c9f6020830184612005565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252602b908201527f596f75206d7573742068617665206d696e74657220726f6c6520746f2063686160408201526a6e6765206261736555524960a81b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156121f5576121f56122bb565b500190565b600082612209576122096122d1565b500490565b600082821015612220576122206122bb565b500390565b60005b83811015612240578181015183820152602001612228565b83811115610d3b5750506000910152565b600181811c9082168061226557607f821691505b6020821081141561228657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156122a0576122a06122bb565b5060010190565b6000826122b6576122b66122d1565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461116457600080fdfe9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6a2646970667358221220c1d76cae4b38fe16abe88f8521d246c16b48abf3fab1839c3c54789874b310e964736f6c63430008040033

Deployed Bytecode Sourcemap

18248:1884:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18796:161;;;;;;:::i;:::-;;:::i;:::-;;;7426:14:1;;7419:22;7401:41;;7389:2;7374:18;18796:161:0;;;;;;;;10148:100;;;:::i;:::-;;;;;;;:::i;11245:221::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;6084:32:1;;;6066:51;;6054:2;6039:18;11245:221:0;6021:102:1;10840:397:0;;;;;;:::i;:::-;;:::i;:::-;;10370:89;10441:10;;10370:89;;;7862:25:1;;;7850:2;7835:18;10370:89:0;7817:76:1;11949:252:0;;;;;;:::i;:::-;;:::i;6563:123::-;;;;;;:::i;:::-;6629:7;6656:12;;;:6;:12;;;;;;;;:22;;;6563:123;15767:387;;;;;;:::i;:::-;;:::i;6694:232::-;;;;;;:::i;:::-;;:::i;7177:218::-;;;;;;:::i;:::-;;:::i;19400:124::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12209:151::-;;;;;;:::i;:::-;;:::i;19168:224::-;;;;;;:::i;:::-;;:::i;9901:239::-;;;;;;:::i;:::-;;:::i;9685:208::-;;;;;;:::i;:::-;;:::i;4967:94::-;;;:::i;8428:60::-;;8465:23;8428:60;;18353:26;;;;;;;;;;;;4316:87;4362:7;4389:6;-1:-1:-1;;;;;4389:6:0;4316:87;;6416:139;;;;;;:::i;:::-;;:::i;10256:104::-;;;:::i;5825:49::-;;5870:4;5825:49;;11474:295;;;;;;:::i;:::-;;:::i;8621:30::-;;;;;;;;;19537:229;;;:::i;12368:285::-;;;;;;:::i;:::-;;:::i;19774:353::-;;;:::i;:::-;;;;7646:14:1;;7639:22;7621:41;;7693:2;7678:18;;7671:34;;;;7594:18;19774:353:0;7576:135:1;10467:256:0;;;;;;:::i;:::-;;:::i;8359:62::-;;-1:-1:-1;;;;;;;;;;;8359:62:0;;6934:235;;;;;;:::i;:::-;;:::i;18965:195::-;;;;;;:::i;:::-;;:::i;11777:164::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11898:25:0;;;11874:4;11898:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;11777:164;9002:52;;;;;;:::i;:::-;;:::i;5216:192::-;;;;;;:::i;:::-;;:::i;18796:161::-;18889:4;18913:36;18937:11;18913:23;:36::i;:::-;18906:43;18796:161;-1:-1:-1;;18796:161:0:o;10148:100::-;10202:13;10235:5;10228:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10148:100;:::o;11245:221::-;11321:7;13030:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13030:16:0;11341:73;;;;-1:-1:-1;;;11341:73:0;;14655:2:1;11341:73:0;;;14637:21:1;14694:2;14674:18;;;14667:30;14733:34;14713:18;;;14706:62;-1:-1:-1;;;14784:18:1;;;14777:42;14836:19;;11341:73:0;;;;;;;;;-1:-1:-1;11434:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;11434:24:0;;11245:221::o;10840:397::-;10921:13;10937:23;10952:7;10937:14;:23::i;:::-;10921:39;;10985:5;-1:-1:-1;;;;;10979:11:0;:2;-1:-1:-1;;;;;10979:11:0;;;10971:57;;;;-1:-1:-1;;;10971:57:0;;16600:2:1;10971:57:0;;;16582:21:1;16639:2;16619:18;;;16612:30;16678:34;16658:18;;;16651:62;-1:-1:-1;;;16729:18:1;;;16722:31;16770:19;;10971:57:0;16572:223:1;10971:57:0;3676:10;-1:-1:-1;;;;;11049:21:0;;;;:62;;-1:-1:-1;11074:37:0;11091:5;3676:10;11777:164;:::i;11074:37::-;11041:154;;;;-1:-1:-1;;;11041:154:0;;13048:2:1;11041:154:0;;;13030:21:1;13087:2;13067:18;;;13060:30;13126:34;13106:18;;;13099:62;13197:26;13177:18;;;13170:54;13241:19;;11041:154:0;13020:246:1;11041:154:0;11208:21;11217:2;11221:7;11208:8;:21::i;:::-;10840:397;;;:::o;11949:252::-;12057:41;3676:10;12090:7;12057:18;:41::i;:::-;12049:103;;;;-1:-1:-1;;;12049:103:0;;;;;;;:::i;:::-;12165:28;12175:4;12181:2;12185:7;12165:9;:28::i;15767:387::-;15843:34;-1:-1:-1;;;;;;;;;;;3676:10:0;6416:139;:::i;15843:34::-;15835:90;;;;-1:-1:-1;;;15835:90:0;;;;;;;:::i;:::-;15963:5;15955;15944:10;;:16;;;;:::i;:::-;:24;;15936:66;;;;-1:-1:-1;;;15936:66:0;;17420:2:1;15936:66:0;;;17402:21:1;17459:2;17439:18;;;17432:30;17498:31;17478:18;;;17471:59;17547:18;;15936:66:0;17392:179:1;15936:66:0;16018:6;16013:134;16034:5;16030:1;:9;16013:134;;;16061:16;16080:10;;16093:1;16080:14;;;;:::i;:::-;16061:33;;16109:26;16115:9;16126:8;16109:5;:26::i;:::-;-1:-1:-1;16041:3:0;;;;:::i;:::-;;;;16013:134;;6694:232;6629:7;6656:12;;;:6;:12;;;;;;;;:22;;6787:41;;6795:18;3676:10;6416:139;:::i;6787:41::-;6779:101;;;;-1:-1:-1;;;6779:101:0;;8324:2:1;6779:101:0;;;8306:21:1;8363:2;8343:18;;;8336:30;8402:34;8382:18;;;8375:62;-1:-1:-1;;;8453:18:1;;;8446:45;8508:19;;6779:101:0;8296:237:1;6779:101:0;6893:25;6904:4;6910:7;6893:10;:25::i;:::-;6694:232;;:::o;7177:218::-;-1:-1:-1;;;;;7273:23:0;;3676:10;7273:23;7265:83;;;;-1:-1:-1;;;7265:83:0;;18138:2:1;7265:83:0;;;18120:21:1;18177:2;18157:18;;;18150:30;18216:34;18196:18;;;18189:62;-1:-1:-1;;;18267:18:1;;;18260:45;18322:19;;7265:83:0;18110:237:1;7265:83:0;7361:26;7373:4;7379:7;7361:11;:26::i;19400:124::-;-1:-1:-1;;;;;19498:18:0;;;;;;:10;:18;;;;;;;;;19491:25;;;;;;;;;;;;;;;;;19463:16;;19491:25;;;19498:18;19491:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19400:124;;;:::o;12209:151::-;12313:39;12330:4;12336:2;12340:7;12313:39;;;;;;;;;;;;:16;:39::i;19168:224::-;19226:4;19251:34;-1:-1:-1;;;;;;;;;;;3676:10:0;6416:139;:::i;19251:34::-;19243:90;;;;-1:-1:-1;;;19243:90:0;;;;;;;:::i;:::-;19344:16;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;19378:4:0;;19168:224;-1:-1:-1;;19168:224:0:o;9901:239::-;9973:7;10009:16;;;:7;:16;;;;;;-1:-1:-1;;;;;10009:16:0;10044:19;10036:73;;;;-1:-1:-1;;;10036:73:0;;13884:2:1;10036:73:0;;;13866:21:1;13923:2;13903:18;;;13896:30;13962:34;13942:18;;;13935:62;-1:-1:-1;;;14013:18:1;;;14006:39;14062:19;;10036:73:0;13856:231:1;9685:208:0;9757:7;-1:-1:-1;;;;;9785:19:0;;9777:74;;;;-1:-1:-1;;;9777:74:0;;13473:2:1;9777:74:0;;;13455:21:1;13512:2;13492:18;;;13485:30;13551:34;13531:18;;;13524:62;-1:-1:-1;;;13602:18:1;;;13595:40;13652:19;;9777:74:0;13445:232:1;9777:74:0;-1:-1:-1;;;;;;9869:16:0;;;;;:9;:16;;;;;;;9685:208::o;4967:94::-;4362:7;4389:6;-1:-1:-1;;;;;4389:6:0;3676:10;4536:23;4528:68;;;;-1:-1:-1;;;4528:68:0;;15068:2:1;4528:68:0;;;15050:21:1;;;15087:18;;;15080:30;15146:34;15126:18;;;15119:62;15198:18;;4528:68:0;15040:182:1;4528:68:0;5032:21:::1;5050:1;5032:9;:21::i;:::-;4967:94::o:0;6416:139::-;6494:4;6518:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;6518:29:0;;;;;;;;;;;;;;;6416:139::o;10256:104::-;10312:13;10345:7;10338:14;;;;;:::i;11474:295::-;-1:-1:-1;;;;;11577:24:0;;3676:10;11577:24;;11569:62;;;;-1:-1:-1;;;11569:62:0;;11093:2:1;11569:62:0;;;11075:21:1;11132:2;11112:18;;;11105:30;11171:27;11151:18;;;11144:55;11216:18;;11569:62:0;11065:175:1;11569:62:0;3676:10;11644:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;11644:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;11644:53:0;;;;;;;;;;11713:48;;7401:41:1;;;11644:42:0;;3676:10;11713:48;;7374:18:1;11713:48:0;;;;;;;11474:295;;:::o;19537:229::-;19586:34;-1:-1:-1;;;;;;;;;;;3676:10:0;6416:139;:::i;19586:34::-;19578:90;;;;-1:-1:-1;;;19578:90:0;;;;;;;:::i;:::-;19688:10;;;;19687:11;19679:20;;;;;;19710:10;:17;;-1:-1:-1;;19710:17:0;19723:4;19710:17;;;19743:15;;;;19710:10;;19743:15;19537:229::o;12368:285::-;12500:41;3676:10;12533:7;12500:18;:41::i;:::-;12492:103;;;;-1:-1:-1;;;12492:103:0;;;;;;;:::i;:::-;12606:39;12620:4;12626:2;12630:7;12639:5;12606:13;:39::i;:::-;12368:285;;;;:::o;19774:353::-;18685:4;;19820;;;;18685;;18684:5;18676:49;;;;-1:-1:-1;;;18676:49:0;;17778:2:1;18676:49:0;;;17760:21:1;17817:2;17797:18;;;17790:30;17856:33;17836:18;;;17829:61;17907:18;;18676:49:0;17750:181:1;18676:49:0;18736:4;:11;;-1:-1:-1;;18736:11:0;18743:4;18736:11;;;;;;19851:14;::::1;18736:11:::0;19851:14:::1;19850:15;19842:24;;;::::0;::::1;;19885:10;::::0;::::1;;19877:47;;;::::0;-1:-1:-1;;;19877:47:0;;9923:2:1;19877:47:0::1;::::0;::::1;9905:21:1::0;9962:2;9942:18;;;9935:30;10001:26;9981:18;;;9974:54;10045:18;;19877:47:0::1;9895:174:1::0;19877:47:0::1;19958:5;19943:10;;19954:1;19943:12;;;;:::i;:::-;:20;;19935:62;;;::::0;-1:-1:-1;;;19935:62:0;;17420:2:1;19935:62:0::1;::::0;::::1;17402:21:1::0;17459:2;17439:18;;;17432:30;17498:31;17478:18;;;17471:59;17547:18;;19935:62:0::1;17392:179:1::0;19935:62:0::1;20008:13;20024:10;;20037:1;20024:14;;;;:::i;:::-;20008:30:::0;-1:-1:-1;20049:29:0::1;3676:10:::0;20069:8:::1;20049:5;:29::i;:::-;20105:4;::::0;-1:-1:-1;20110:8:0;-1:-1:-1;18770:4:0;:12;;-1:-1:-1;;18770:12:0;;;19774:353;;:::o;10467:256::-;13006:4;13030:16;;;:7;:16;;;;;;10540:13;;-1:-1:-1;;;;;13030:16:0;10566:76;;;;-1:-1:-1;;;10566:76:0;;15839:2:1;10566:76:0;;;15821:21:1;15878:2;15858:18;;;15851:30;15917:34;15897:18;;;15890:62;-1:-1:-1;;;15968:18:1;;;15961:45;16023:19;;10566:76:0;15811:237:1;10566:76:0;10684:10;:8;:10::i;:::-;10696:17;10705:7;10696:8;:17::i;:::-;10667:47;;;;;;;;;:::i;:::-;;;;;;;;;;;;;10653:62;;10467:256;;;:::o;6934:235::-;6629:7;6656:12;;;:6;:12;;;;;;;;:22;;7028:41;;7036:18;6563:123;7028:41;7020:102;;;;-1:-1:-1;;;7020:102:0;;12631:2:1;7020:102:0;;;12613:21:1;12670:2;12650:18;;;12643:30;12709:34;12689:18;;;12682:62;-1:-1:-1;;;12760:18:1;;;12753:46;12816:19;;7020:102:0;12603:238:1;18965:195:0;19031:34;-1:-1:-1;;;;;;;;;;;3676:10:0;6416:139;:::i;19031:34::-;19023:94;;;;-1:-1:-1;;;19023:94:0;;12215:2:1;19023:94:0;;;12197:21:1;12254:2;12234:18;;;12227:30;12293:34;12273:18;;;12266:62;-1:-1:-1;;;12344:18:1;;;12337:45;12399:19;;19023:94:0;12187:237:1;19023:94:0;19128:14;:24;;;;;;;-1:-1:-1;;19128:24:0;;;;;;;;;18965:195::o;9002:52::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5216:192::-;4362:7;4389:6;-1:-1:-1;;;;;4389:6:0;3676:10;4536:23;4528:68;;;;-1:-1:-1;;;4528:68:0;;15068:2:1;4528:68:0;;;15050:21:1;;;15087:18;;;15080:30;15146:34;15126:18;;;15119:62;15198:18;;4528:68:0;15040:182:1;4528:68:0;-1:-1:-1;;;;;5305:22:0;::::1;5297:73;;;::::0;-1:-1:-1;;;5297:73:0;;9159:2:1;5297:73:0::1;::::0;::::1;9141:21:1::0;9198:2;9178:18;;;9171:30;9237:34;9217:18;;;9210:62;-1:-1:-1;;;9288:18:1;;;9281:36;9334:19;;5297:73:0::1;9131:228:1::0;5297:73:0::1;5381:19;5391:8;5381:9;:19::i;:::-;5216:192:::0;:::o;9370:307::-;9487:4;-1:-1:-1;;;;;;9511:40:0;;-1:-1:-1;;;9511:40:0;;:105;;-1:-1:-1;;;;;;;9568:48:0;;-1:-1:-1;;;9568:48:0;9511:105;:158;;;;9633:36;9657:11;9633:23;:36::i;17115:174::-;17190:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;17190:29:0;-1:-1:-1;;;;;17190:29:0;;;;;;;;:24;;17244:23;17190:24;17244:14;:23::i;:::-;-1:-1:-1;;;;;17235:46:0;;;;;;;;;;;17115:174;;:::o;13076:348::-;13169:4;13030:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13030:16:0;13186:73;;;;-1:-1:-1;;;13186:73:0;;11802:2:1;13186:73:0;;;11784:21:1;11841:2;11821:18;;;11814:30;11880:34;11860:18;;;11853:62;-1:-1:-1;;;11931:18:1;;;11924:42;11983:19;;13186:73:0;11774:234:1;13186:73:0;13270:13;13286:23;13301:7;13286:14;:23::i;:::-;13270:39;;13339:5;-1:-1:-1;;;;;13328:16:0;:7;-1:-1:-1;;;;;13328:16:0;;:51;;;;13372:7;-1:-1:-1;;;;;13348:31:0;:20;13360:7;13348:11;:20::i;:::-;-1:-1:-1;;;;;13348:31:0;;13328:51;:87;;;-1:-1:-1;;;;;;11898:25:0;;;11874:4;11898:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;13383:32;13320:96;13076:348;-1:-1:-1;;;;13076:348:0:o;16554:553::-;16679:4;-1:-1:-1;;;;;16652:31:0;:23;16667:7;16652:14;:23::i;:::-;-1:-1:-1;;;;;16652:31:0;;16644:85;;;;-1:-1:-1;;;16644:85:0;;15429:2:1;16644:85:0;;;15411:21:1;15468:2;15448:18;;;15441:30;15507:34;15487:18;;;15480:62;-1:-1:-1;;;15558:18:1;;;15551:39;15607:19;;16644:85:0;15401:231:1;16644:85:0;-1:-1:-1;;;;;16748:16:0;;16740:65;;;;-1:-1:-1;;;16740:65:0;;10688:2:1;16740:65:0;;;10670:21:1;10727:2;10707:18;;;10700:30;10766:34;10746:18;;;10739:62;-1:-1:-1;;;10817:18:1;;;10810:34;10861:19;;16740:65:0;10660:226:1;16740:65:0;16870:29;16887:1;16891:7;16870:8;:29::i;:::-;16920;16935:4;16941:7;16920:14;:29::i;:::-;16960:24;16972:2;16976:7;16960:11;:24::i;:::-;-1:-1:-1;;;;;16997:15:0;;;;;;:9;:15;;;;;:20;;17016:1;;16997:15;:20;;17016:1;;16997:20;:::i;:::-;;;;-1:-1:-1;;;;;;;17028:13:0;;;;;;:9;:13;;;;;:18;;17045:1;;17028:13;:18;;17045:1;;17028:18;:::i;:::-;;;;-1:-1:-1;;17072:27:0;;17091:7;;-1:-1:-1;;;;;17072:27:0;;;;;;;;;;;;;16554:553;;;:::o;15274:485::-;-1:-1:-1;;;;;15354:16:0;;15346:61;;;;-1:-1:-1;;;15346:61:0;;14294:2:1;15346:61:0;;;14276:21:1;;;14313:18;;;14306:30;14372:34;14352:18;;;14345:62;14424:18;;15346:61:0;14266:182:1;15346:61:0;13006:4;13030:16;;;:7;:16;;;;;;-1:-1:-1;;;;;13030:16:0;:30;15418:58;;;;-1:-1:-1;;;15418:58:0;;9566:2:1;15418:58:0;;;9548:21:1;9605:2;9585:18;;;9578:30;9644;9624:18;;;9617:58;9692:18;;15418:58:0;9538:178:1;15418:58:0;-1:-1:-1;;;;;15547:13:0;;;;;;:9;:13;;;;;:18;;15564:1;;15547:13;:18;;15564:1;;15547:18;:::i;:::-;;;;;;;;15590:1;15576:10;;:15;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;15602:18:0;;;;;;:14;:18;;;;;;;:32;;;;;;;;;;;;;;;;15645:24;15617:2;15626:7;15645:11;:24::i;:::-;15685:17;;-1:-1:-1;;;;;15685:17:0;;;15690:7;;15685:17;;;;;15718:33;;15743:7;;-1:-1:-1;;;;;15718:33:0;;;15735:1;;15718:33;;15735:1;;15718:33;15274:485;;:::o;7726:229::-;7801:22;7809:4;7815:7;7801;:22::i;:::-;7796:152;;7840:12;;;;7872:4;7840:12;;;;;;;;-1:-1:-1;;;;;7840:29:0;;;;;;;;;;:36;;-1:-1:-1;;7840:36:0;;;;;;;7896:40;;3676:10;;7840:12;;7896:40;;7840:12;7896:40;7726:229;;:::o;7963:230::-;8038:22;8046:4;8052:7;8038;:22::i;:::-;8034:152;;;8109:5;8077:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;8077:29:0;;;;;;;;;;:37;;-1:-1:-1;;8077:37:0;;;8134:40;3676:10;;8077:12;;8134:40;;8109:5;8134:40;7963:230;;:::o;5416:173::-;5472:16;5491:6;;-1:-1:-1;;;;;5508:17:0;;;-1:-1:-1;;;;;;5508:17:0;;;;;;5541:40;;5491:6;;;;;;;5541:40;;5472:16;5541:40;5416:173;;:::o;12661:272::-;12775:28;12785:4;12791:2;12795:7;12775:9;:28::i;:::-;12822:48;12845:4;12851:2;12855:7;12864:5;12822:22;:48::i;:::-;12814:111;;;;-1:-1:-1;;;12814:111:0;;;;;;;:::i;10731:99::-;10782:13;10815:7;10808:14;;;;;:::i;13808:545::-;13864:13;13907:10;13903:53;;-1:-1:-1;;13934:10:0;;;;;;;;;;;;-1:-1:-1;;;13934:10:0;;;;;13808:545::o;13903:53::-;13981:5;13966:12;14022:78;14029:9;;14022:78;;14055:8;;;;:::i;:::-;;-1:-1:-1;14078:10:0;;-1:-1:-1;14086:2:0;14078:10;;:::i;:::-;;;14022:78;;;14110:19;14142:6;14132:17;;;;;;-1:-1:-1;;;14132:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14132:17:0;;14110:39;;14160:154;14167:10;;14160:154;;14194:11;14204:1;14194:11;;:::i;:::-;;-1:-1:-1;14263:10:0;14271:2;14263:5;:10;:::i;:::-;14250:24;;:2;:24;:::i;:::-;14237:39;;14220:6;14227;14220:14;;;;;;-1:-1:-1;;;14220:14:0;;;;;;;;;;;;:56;-1:-1:-1;;;;;14220:56:0;;;;;;;;-1:-1:-1;14291:11:0;14300:2;14291:11;;:::i;:::-;;;14160:154;;6191:217;6276:4;-1:-1:-1;;;;;;6300:47:0;;-1:-1:-1;;;6300:47:0;;:100;;-1:-1:-1;;;;;;;;;;3858:40:0;;;6364:36;3749:157;14665:601;14750:17;;;;:7;:17;;;;;;-1:-1:-1;;;;;14750:26:0;;;:17;;:26;14742:55;;;;-1:-1:-1;;;14742:55:0;;16255:2:1;14742:55:0;;;16237:21:1;16294:2;16274:18;;;16267:30;-1:-1:-1;;;16313:18:1;;;16306:46;16369:18;;14742:55:0;16227:166:1;14742:55:0;14815:17;;;;:7;:17;;;;;;;;14808:24;;-1:-1:-1;;;;;;14808:24:0;;;14872:14;:24;;;;;;-1:-1:-1;;;;;14932:17:0;;;;:10;:17;;;;;:24;14872;;14815:17;14932:31;;14808:24;14932:28;:31::i;:::-;14907:56;;14998:18;14980:14;:36;14976:247;;-1:-1:-1;;;;;15053:17:0;;15033;15053;;;:10;:17;;;;;:33;;15071:14;;15053:33;;;;-1:-1:-1;;;15053:33:0;;;;;;;;;;;;;;;;;15033:53;;15141:9;15101:10;:17;15112:5;-1:-1:-1;;;;;15101:17:0;-1:-1:-1;;;;;15101:17:0;;;;;;;;;;;;15119:18;15101:37;;;;;;-1:-1:-1;;;15101:37:0;;;;;;;;;;;;;;;;;;;;:49;;;;15165:25;;;:14;:25;;;;;:46;;;14976:247;-1:-1:-1;;;;;15235:17:0;;;;;;:10;:17;;;;;:23;;;;;-1:-1:-1;;;15235:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;14665:601;;;;:::o;14363:294::-;14472:1;14443:17;;;:7;:17;;;;;;-1:-1:-1;;;;;14443:17:0;:31;14435:70;;;;-1:-1:-1;;;14435:70:0;;11447:2:1;14435:70:0;;;11429:21:1;11486:2;11466:18;;;11459:30;11525:28;11505:18;;;11498:56;11571:18;;14435:70:0;11419:176:1;14435:70:0;14516:17;;;;:7;:17;;;;;;;;:23;;-1:-1:-1;;;;;;14516:23:0;-1:-1:-1;;;;;14516:23:0;;;;;;;;14552:15;;;:10;:15;;;;;:30;;-1:-1:-1;14552:30:0;;;;;;;;;;;;;;;14620:15;;:22;;:29;;:26;:29::i;:::-;14593:24;;;;:14;:24;;;;;;:56;-1:-1:-1;14363:294:0:o;17297:843::-;17418:4;-1:-1:-1;;;;;17444:13:0;;217:20;256:8;17440:693;;17480:72;;-1:-1:-1;;;17480:72:0;;-1:-1:-1;;;;;17480:36:0;;;;;:72;;3676:10;;17531:4;;17537:7;;17546:5;;17480:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17480:72:0;;;;;;;;-1:-1:-1;;17480:72:0;;;;;;;;;;;;:::i;:::-;;;17476:602;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17726:13:0;;17722:341;;17769:60;;-1:-1:-1;;;17769:60:0;;;;;;;:::i;17722:341::-;18013:6;18007:13;17998:6;17994:2;17990:15;17983:38;17476:602;-1:-1:-1;;;;;;17603:55:0;-1:-1:-1;;;17603:55:0;;-1:-1:-1;17596:62:0;;17440:693;-1:-1:-1;18117:4:0;17297:843;;;;;;:::o;1096:124::-;1154:7;1187:1;1182;:6;;1174:15;;;;;;1207:5;1211:1;1207;:5;:::i;:::-;1200:12;1096:124;-1:-1:-1;;;1096:124:0:o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:2;;;155:18;;:::i;:::-;230:2;224:9;198:2;284:15;;-1:-1:-1;;280:24:1;;;306:2;276:33;272:42;260:55;;;330:18;;;350:22;;;327:46;324:2;;;376:18;;:::i;:::-;416:10;412:2;405:22;445:6;436:15;;475:6;467;460:22;515:3;506:6;501:3;497:16;494:25;491:2;;;532:1;529;522:12;491:2;582:6;577:3;570:4;562:6;558:17;545:44;637:1;630:4;621:6;613;609:19;605:30;598:41;;;;88:557;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:2;;813:1;810;803:12;747:2;699:124;;;:::o;828:160::-;893:20;;949:13;;942:21;932:32;;922:2;;978:1;975;968:12;993:196;1052:6;1105:2;1093:9;1084:7;1080:23;1076:32;1073:2;;;1126:6;1118;1111:22;1073:2;1154:29;1173:9;1154:29;:::i;1194:270::-;1262:6;1270;1323:2;1311:9;1302:7;1298:23;1294:32;1291:2;;;1344:6;1336;1329:22;1291:2;1372:29;1391:9;1372:29;:::i;:::-;1362:39;;1420:38;1454:2;1443:9;1439:18;1420:38;:::i;:::-;1410:48;;1281:183;;;;;:::o;1469:338::-;1546:6;1554;1562;1615:2;1603:9;1594:7;1590:23;1586:32;1583:2;;;1636:6;1628;1621:22;1583:2;1664:29;1683:9;1664:29;:::i;:::-;1654:39;;1712:38;1746:2;1735:9;1731:18;1712:38;:::i;:::-;1702:48;;1797:2;1786:9;1782:18;1769:32;1759:42;;1573:234;;;;;:::o;1812:696::-;1907:6;1915;1923;1931;1984:3;1972:9;1963:7;1959:23;1955:33;1952:2;;;2006:6;1998;1991:22;1952:2;2034:29;2053:9;2034:29;:::i;:::-;2024:39;;2082:38;2116:2;2105:9;2101:18;2082:38;:::i;:::-;2072:48;;2167:2;2156:9;2152:18;2139:32;2129:42;;2222:2;2211:9;2207:18;2194:32;2249:18;2241:6;2238:30;2235:2;;;2286:6;2278;2271:22;2235:2;2314:22;;2367:4;2359:13;;2355:27;-1:-1:-1;2345:2:1;;2401:6;2393;2386:22;2345:2;2429:73;2494:7;2489:2;2476:16;2471:2;2467;2463:11;2429:73;:::i;:::-;2419:83;;;1942:566;;;;;;;:::o;2513:264::-;2578:6;2586;2639:2;2627:9;2618:7;2614:23;2610:32;2607:2;;;2660:6;2652;2645:22;2607:2;2688:29;2707:9;2688:29;:::i;:::-;2678:39;;2736:35;2767:2;2756:9;2752:18;2736:35;:::i;2782:264::-;2850:6;2858;2911:2;2899:9;2890:7;2886:23;2882:32;2879:2;;;2932:6;2924;2917:22;2879:2;2960:29;2979:9;2960:29;:::i;:::-;2950:39;3036:2;3021:18;;;;3008:32;;-1:-1:-1;;;2869:177:1:o;3051:190::-;3107:6;3160:2;3148:9;3139:7;3135:23;3131:32;3128:2;;;3181:6;3173;3166:22;3128:2;3209:26;3225:9;3209:26;:::i;3246:190::-;3305:6;3358:2;3346:9;3337:7;3333:23;3329:32;3326:2;;;3379:6;3371;3364:22;3326:2;-1:-1:-1;3407:23:1;;3316:120;-1:-1:-1;3316:120:1:o;3441:264::-;3509:6;3517;3570:2;3558:9;3549:7;3545:23;3541:32;3538:2;;;3591:6;3583;3576:22;3538:2;3632:9;3619:23;3609:33;;3661:38;3695:2;3684:9;3680:18;3661:38;:::i;3710:255::-;3768:6;3821:2;3809:9;3800:7;3796:23;3792:32;3789:2;;;3842:6;3834;3827:22;3789:2;3886:9;3873:23;3905:30;3929:5;3905:30;:::i;3970:259::-;4039:6;4092:2;4080:9;4071:7;4067:23;4063:32;4060:2;;;4113:6;4105;4098:22;4060:2;4150:9;4144:16;4169:30;4193:5;4169:30;:::i;4234:480::-;4303:6;4356:2;4344:9;4335:7;4331:23;4327:32;4324:2;;;4377:6;4369;4362:22;4324:2;4422:9;4409:23;4455:18;4447:6;4444:30;4441:2;;;4492:6;4484;4477:22;4441:2;4520:22;;4573:4;4565:13;;4561:27;-1:-1:-1;4551:2:1;;4607:6;4599;4592:22;4551:2;4635:73;4700:7;4695:2;4682:16;4677:2;4673;4669:11;4635:73;:::i;5183:257::-;5224:3;5262:5;5256:12;5289:6;5284:3;5277:19;5305:63;5361:6;5354:4;5349:3;5345:14;5338:4;5331:5;5327:16;5305:63;:::i;:::-;5422:2;5401:15;-1:-1:-1;;5397:29:1;5388:39;;;;5429:4;5384:50;;5232:208;-1:-1:-1;;5232:208:1:o;5445:470::-;5624:3;5662:6;5656:13;5678:53;5724:6;5719:3;5712:4;5704:6;5700:17;5678:53;:::i;:::-;5794:13;;5753:16;;;;5816:57;5794:13;5753:16;5850:4;5838:17;;5816:57;:::i;:::-;5889:20;;5632:283;-1:-1:-1;;;;5632:283:1:o;6128:488::-;-1:-1:-1;;;;;6397:15:1;;;6379:34;;6449:15;;6444:2;6429:18;;6422:43;6496:2;6481:18;;6474:34;;;6544:3;6539:2;6524:18;;6517:31;;;6322:4;;6565:45;;6590:19;;6582:6;6565:45;:::i;:::-;6557:53;6331:285;-1:-1:-1;;;;;;6331:285:1:o;6621:635::-;6792:2;6844:21;;;6914:13;;6817:18;;;6936:22;;;6763:4;;6792:2;7015:15;;;;6989:2;6974:18;;;6763:4;7061:169;7075:6;7072:1;7069:13;7061:169;;;7136:13;;7124:26;;7205:15;;;;7170:12;;;;7097:1;7090:9;7061:169;;;-1:-1:-1;7247:3:1;;6772:484;-1:-1:-1;;;;;;6772:484:1:o;7898:219::-;8047:2;8036:9;8029:21;8010:4;8067:44;8107:2;8096:9;8092:18;8084:6;8067:44;:::i;8538:414::-;8740:2;8722:21;;;8779:2;8759:18;;;8752:30;8818:34;8813:2;8798:18;;8791:62;-1:-1:-1;;;8884:2:1;8869:18;;8862:48;8942:3;8927:19;;8712:240::o;10074:407::-;10276:2;10258:21;;;10315:2;10295:18;;;10288:30;10354:34;10349:2;10334:18;;10327:62;-1:-1:-1;;;10420:2:1;10405:18;;10398:41;10471:3;10456:19;;10248:233::o;16800:413::-;17002:2;16984:21;;;17041:2;17021:18;;;17014:30;17080:34;17075:2;17060:18;;17053:62;-1:-1:-1;;;17146:2:1;17131:18;;17124:47;17203:3;17188:19;;16974:239::o;18534:128::-;18574:3;18605:1;18601:6;18598:1;18595:13;18592:2;;;18611:18;;:::i;:::-;-1:-1:-1;18647:9:1;;18582:80::o;18667:120::-;18707:1;18733;18723:2;;18738:18;;:::i;:::-;-1:-1:-1;18772:9:1;;18713:74::o;18792:125::-;18832:4;18860:1;18857;18854:8;18851:2;;;18865:18;;:::i;:::-;-1:-1:-1;18902:9:1;;18841:76::o;18922:258::-;18994:1;19004:113;19018:6;19015:1;19012:13;19004:113;;;19094:11;;;19088:18;19075:11;;;19068:39;19040:2;19033:10;19004:113;;;19135:6;19132:1;19129:13;19126:2;;;-1:-1:-1;;19170:1:1;19152:16;;19145:27;18975:205::o;19185:380::-;19264:1;19260:12;;;;19307;;;19328:2;;19382:4;19374:6;19370:17;19360:27;;19328:2;19435;19427:6;19424:14;19404:18;19401:38;19398:2;;;19481:10;19476:3;19472:20;19469:1;19462:31;19516:4;19513:1;19506:15;19544:4;19541:1;19534:15;19398:2;;19240:325;;;:::o;19570:135::-;19609:3;-1:-1:-1;;19630:17:1;;19627:2;;;19650:18;;:::i;:::-;-1:-1:-1;19697:1:1;19686:13;;19617:88::o;19710:112::-;19742:1;19768;19758:2;;19773:18;;:::i;:::-;-1:-1:-1;19807:9:1;;19748:74::o;19827:127::-;19888:10;19883:3;19879:20;19876:1;19869:31;19919:4;19916:1;19909:15;19943:4;19940:1;19933:15;19959:127;20020:10;20015:3;20011:20;20008:1;20001:31;20051:4;20048:1;20041:15;20075:4;20072:1;20065:15;20091:127;20152:10;20147:3;20143:20;20140:1;20133:31;20183:4;20180:1;20173:15;20207:4;20204:1;20197:15;20223:131;-1:-1:-1;;;;;;20297:32:1;;20287:43;;20277:2;;20344:1;20341;20334:12

Swarm Source

ipfs://c1d76cae4b38fe16abe88f8521d246c16b48abf3fab1839c3c54789874b310e9
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.