ETH Price: $3,226.96 (+1.38%)
Gas: 4 Gwei

Token

FOXES OPERA (FOXES)
 

Overview

Max Total Supply

418 FOXES

Holders

156

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 FOXES
0x895d5cc6de301c7462c6138b9c7066682c36a265
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:
FOXES

Compiler Version
v0.8.14+commit.80d49f37

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-22
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

abstract contract ReentrancyGuard {

    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;

        _status = _NOT_ENTERED;
    }
}

pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    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 toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

pragma solidity ^0.8.0;

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

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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _transferOwnership(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

pragma solidity ^0.8.1;

library Address {

    function isContract(address account) internal view returns (bool) {

        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

pragma solidity ^0.8.0;

interface IERC721Receiver {

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

pragma solidity ^0.8.0;

interface IERC165 {

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

pragma solidity ^0.8.0;

abstract contract ERC165 is IERC165 {

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

pragma solidity ^0.8.0;


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);
    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,
        bytes calldata data
    ) external;

    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 setApprovalForAll(address operator, bool _approved) external;
    function getApproved(uint256 tokenId) external view returns (address operator);
    function isApprovedForAll(address owner, address operator) external view returns (bool);
}

pragma solidity ^0.8.0;


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);
}

pragma solidity ^0.8.4;

interface IERC721A is IERC721, IERC721Metadata {

    error ApprovalCallerNotOwnerNorApproved();
    error ApprovalQueryForNonexistentToken();
    error ApproveToCaller();
    error ApprovalToCurrentOwner();
    error BalanceQueryForZeroAddress();
    error MintToZeroAddress();
    error MintZeroQuantity();
    error OwnerQueryForNonexistentToken();
    error TransferCallerNotOwnerNorApproved();
    error TransferFromIncorrectOwner();
    error TransferToNonERC721ReceiverImplementer();
    error TransferToZeroAddress();
    error URIQueryForNonexistentToken();

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
        bool burned;
    }

    struct AddressData {
        uint64 balance;
        uint64 numberMinted;
        uint64 numberBurned;
        uint64 aux;
    }

    function totalSupply() external view returns (uint256);
}

pragma solidity ^0.8.4;

contract ERC721A is Context, ERC165, IERC721A {
    using Address for address;
    using Strings for uint256;
    uint256 internal _currentIndex;

    uint256 internal _burnCounter;
    string private _name;
    string private _symbol;

    mapping(uint256 => TokenOwnership) internal _ownerships;
    mapping(address => AddressData) private _addressData;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _currentIndex = _startTokenId();
    }

    function _startTokenId() internal view virtual returns (uint256) {
        return 0;
    }

    function totalSupply() public view override returns (uint256) {
        unchecked {
            return _currentIndex - _burnCounter - _startTokenId();
        }
    }

    function _totalMinted() internal view returns (uint256) {
        unchecked {
            return _currentIndex - _startTokenId();
        }
    }

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


    function balanceOf(address owner) public view override returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        return uint256(_addressData[owner].numberMinted);
    }

    function _numberBurned(address owner) internal view returns (uint256) {
        return uint256(_addressData[owner].numberBurned);
    }

    function _getAux(address owner) internal view returns (uint64) {
        return _addressData[owner].aux;
    }

    function _setAux(address owner, uint64 aux) internal {
        _addressData[owner].aux = aux;
    }

    function _ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
        uint256 curr = tokenId;

        unchecked {
            if (_startTokenId() <= curr) if (curr < _currentIndex) {
                TokenOwnership memory ownership = _ownerships[curr];
                if (!ownership.burned) {
                    if (ownership.addr != address(0)) {
                        return ownership;
                    }
                    while (true) {
                        curr--;
                        ownership = _ownerships[curr];
                        if (ownership.addr != address(0)) {
                            return ownership;
                        }
                    }
                }
            }
        }
        revert OwnerQueryForNonexistentToken();
    }

    function ownerOf(uint256 tokenId) public view override returns (address) {
        return _ownershipOf(tokenId).addr;
    }

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

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

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();

        string memory baseURI = _baseURI();
        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : '';
    }

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

    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (_msgSender() != owner) if(!isApprovedForAll(owner, _msgSender())) {
            revert ApprovalCallerNotOwnerNorApproved();
        }

        _approve(to, tokenId, owner);
    }

    function getApproved(uint256 tokenId) public view override returns (address) {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        if (operator == _msgSender()) revert ApproveToCaller();

        _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 {
        _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 {
        _transfer(from, to, tokenId);
        if (to.isContract()) if(!_checkContractOnERC721Received(from, to, tokenId, _data)) {
            revert TransferToNonERC721ReceiverImplementer();
        }
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return _startTokenId() <= tokenId && tokenId < _currentIndex && !_ownerships[tokenId].burned;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, '');
    }

    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        if (quantity == 0) revert MintZeroQuantity();

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        unchecked {
            _addressData[to].balance += uint64(quantity);
            _addressData[to].numberMinted += uint64(quantity);
            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);

            uint256 updatedIndex = startTokenId;
            uint256 end = updatedIndex + quantity;

            if (to.isContract()) {
                do {
                    emit Transfer(address(0), to, updatedIndex);
                    if (!_checkContractOnERC721Received(address(0), to, updatedIndex++, _data)) {
                        revert TransferToNonERC721ReceiverImplementer();
                    }
                } while (updatedIndex < end);
                if (_currentIndex != startTokenId) revert();
            } else {
                do {
                    emit Transfer(address(0), to, updatedIndex++);
                } while (updatedIndex < end);
            }
            _currentIndex = updatedIndex;
        }
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    function _mint(address to, uint256 quantity) internal {
        uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        if (quantity == 0) revert MintZeroQuantity();

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);

        unchecked {
            _addressData[to].balance += uint64(quantity);
            _addressData[to].numberMinted += uint64(quantity);
            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);

            uint256 updatedIndex = startTokenId;
            uint256 end = updatedIndex + quantity;

            do {
                emit Transfer(address(0), to, updatedIndex++);
            } while (updatedIndex < end);

            _currentIndex = updatedIndex;
        }
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) private {
        TokenOwnership memory prevOwnership = _ownershipOf(tokenId);

        if (prevOwnership.addr != from) revert TransferFromIncorrectOwner();

        bool isApprovedOrOwner = (_msgSender() == from ||
            isApprovedForAll(from, _msgSender()) ||
            getApproved(tokenId) == _msgSender());

        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        if (to == address(0)) revert TransferToZeroAddress();

        _beforeTokenTransfers(from, to, tokenId, 1);

        _approve(address(0), tokenId, from);

        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;
            TokenOwnership storage currSlot = _ownerships[tokenId];
            currSlot.addr = to;
            currSlot.startTimestamp = uint64(block.timestamp);

            uint256 nextTokenId = tokenId + 1;
            TokenOwnership storage nextSlot = _ownerships[nextTokenId];
            if (nextSlot.addr == address(0)) {
                if (nextTokenId != _currentIndex) {
                    nextSlot.addr = from;
                    nextSlot.startTimestamp = prevOwnership.startTimestamp;
                }
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

    function _burn(uint256 tokenId) internal virtual {
        _burn(tokenId, false);
    }

    function _burn(uint256 tokenId, bool approvalCheck) internal virtual {
        TokenOwnership memory prevOwnership = _ownershipOf(tokenId);

        address from = prevOwnership.addr;

        if (approvalCheck) {
            bool isApprovedOrOwner = (_msgSender() == from ||
                isApprovedForAll(from, _msgSender()) ||
                getApproved(tokenId) == _msgSender());

            if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        }

        _beforeTokenTransfers(from, address(0), tokenId, 1);

        _approve(address(0), tokenId, from);

        unchecked {
            AddressData storage addressData = _addressData[from];
            addressData.balance -= 1;
            addressData.numberBurned += 1;
            TokenOwnership storage currSlot = _ownerships[tokenId];
            currSlot.addr = from;
            currSlot.startTimestamp = uint64(block.timestamp);
            currSlot.burned = true;

            uint256 nextTokenId = tokenId + 1;
            TokenOwnership storage nextSlot = _ownerships[nextTokenId];
            if (nextSlot.addr == address(0)) {
                if (nextTokenId != _currentIndex) {
                    nextSlot.addr = from;
                    nextSlot.startTimestamp = prevOwnership.startTimestamp;
                }
            }
        }

        emit Transfer(from, address(0), tokenId);
        _afterTokenTransfers(from, address(0), tokenId, 1);

        unchecked {
            _burnCounter++;
        }
    }

    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    function _checkContractOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        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 TransferToNonERC721ReceiverImplementer();
            } else {
                assembly {
                    revert(add(32, reason), mload(reason))
                }
            }
        }
    }

    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

contract FOXES is ERC721A, Ownable, ReentrancyGuard {

    using Strings for uint256;

    string public uriPrefix = "ipfs://QmaY8JHCU6YXztyxyDzVcPLVCsmf49mcDB1A2vjmeYEoS1/";
    string public uriSuffix = "";

    // Mint
    uint256 public MAX_SUPPLY = 1000;
    uint256 public MAX_PER_TX = 20;
    uint256 public PRICE = 0.05 ether;
    
    // FreeMint
    uint256 public FREE_SUPPLY = 200;
    uint256 public FREE_PER_WALLET = 2;

    bool public SALE_ACTIVE = false;

    constructor() ERC721A("FOXES OPERA", "FOXES") {
    }

    modifier mintCompliance(uint256 _amount) {        
        if (totalSupply() >= FREE_SUPPLY) {
            require(PRICE * _amount == msg.value, "Insufficient funds!");
            require(_amount > 0 && _amount <= MAX_PER_TX, "Exceeds max paid per tx!");
        }else{
            require(_amount > 0 && _amount <= FREE_PER_WALLET, "Exceeds max free mint per tx");
        }
        _;
    }

    // Mint
    function mint(uint256 _amount) public payable mintCompliance(_amount) {
        _safeMint(msg.sender, _amount);
    }

    function setFreeMint(uint256 _freeSupply, uint256 _freePerWallet) public onlyOwner() {
        require(_freePerWallet > 0 && _freeSupply <= MAX_SUPPLY, "Not valid quantity!");
        FREE_SUPPLY = _freeSupply;
        FREE_PER_WALLET = _freePerWallet;
    }

    function walletOfOwner(address _owner) public view returns (uint256[] memory) {
        uint256 ownerTokenCount = balanceOf(_owner);
        uint256[] memory ownedTokenIds = new uint256[](ownerTokenCount);
        uint256 currentTokenId = _startTokenId();
        uint256 ownedTokenIndex = 0;
        address latestOwnerAddress;
        while (ownedTokenIndex < ownerTokenCount && currentTokenId < _currentIndex) {
        TokenOwnership memory ownership = _ownerships[currentTokenId];
        if (!ownership.burned) {
            if (ownership.addr != address(0)) {
            latestOwnerAddress = ownership.addr;
            }
            if (latestOwnerAddress == _owner) {
            ownedTokenIds[ownedTokenIndex] = currentTokenId;
            ownedTokenIndex++;
            }
        }
        currentTokenId++;
        }
        return ownedTokenIds;
    }

    function _startTokenId() internal view virtual override returns (uint256) {
        return 1;
    }

    function tokenURI(uint256 _tokenId) public view virtual override returns (string memory) {
        require(_exists(_tokenId), 'ERC721Metadata: URI query for nonexistent token');
        string memory currentBaseURI = _baseURI();
        return bytes(currentBaseURI).length > 0 ? string(abi.encodePacked(currentBaseURI, _tokenId.toString(), uriSuffix)) : '';
    }

    function setupOS() external onlyOwner {
        require(totalSupply() < MAX_SUPPLY, "Max supply exceeded!");
        _safeMint(msg.sender, 1);
    }

    function mintForAddress(uint256 _amount, address _receiver) public payable onlyOwner {
        require(totalSupply() + _amount <= MAX_SUPPLY, "Exceeds max supply");
        _safeMint(_receiver, _amount);
    }

    function withdraw() public onlyOwner nonReentrant {
        (bool os, ) = payable(owner()).call{value: address(this).balance}('');
        require(os);
    }

    function toogleState() public onlyOwner {
		SALE_ACTIVE = !SALE_ACTIVE;
	}

    function setMaxPerTxn(uint256 _maxAPerTxn) public onlyOwner() {
        MAX_PER_TX = _maxAPerTxn;
    }

    function setCost(uint256 _price) public onlyOwner {
        PRICE = _price;
    }

    function setMaxSupply(uint256 _maxSupply) public onlyOwner {
        MAX_SUPPLY = _maxSupply;
    }

    function _baseURI() internal view override returns (string memory) {
        return uriPrefix;
    }

    function setUriPrefix(string memory _uriPrefix) public onlyOwner {
        uriPrefix = _uriPrefix;
    }

    function setUriSuffix(string memory _uriSuffix) public onlyOwner {
        uriSuffix = _uriSuffix;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"URIQueryForNonexistentToken","type":"error"},{"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":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"FREE_PER_WALLET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FREE_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_PER_TX","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PRICE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SALE_ACTIVE","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":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_receiver","type":"address"}],"name":"mintForAddress","outputs":[],"stateMutability":"payable","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":[],"name":"renounceOwnership","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":"uint256","name":"_price","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_freeSupply","type":"uint256"},{"internalType":"uint256","name":"_freePerWallet","type":"uint256"}],"name":"setFreeMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxAPerTxn","type":"uint256"}],"name":"setMaxPerTxn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriPrefix","type":"string"}],"name":"setUriPrefix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_uriSuffix","type":"string"}],"name":"setUriSuffix","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setupOS","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":[],"name":"toogleState","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[],"name":"uriPrefix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uriSuffix","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60e060405260366080818152906200234a60a03980516200002991600a9160209091019062000159565b506040805160208101918290526000908190526200004a91600b9162000159565b506103e8600c556014600d5566b1a2bc2ec50000600e5560c8600f5560026010556011805460ff191690553480156200008257600080fd5b50604080518082018252600b81526a464f584553204f5045524160a81b602080830191825283518085019094526005845264464f58455360d81b908401528151919291620000d39160029162000159565b508051620000e990600390602084019062000159565b5050600160005550620000fc3362000107565b60016009556200023b565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b8280546200016790620001ff565b90600052602060002090601f0160209004810192826200018b5760008555620001d6565b82601f10620001a657805160ff1916838001178555620001d6565b82800160010185558215620001d6579182015b82811115620001d6578251825591602001919060010190620001b9565b50620001e4929150620001e8565b5090565b5b80821115620001e45760008155600101620001e9565b600181811c908216806200021457607f821691505b6020821081036200023557634e487b7160e01b600052602260045260246000fd5b50919050565b6120ff806200024b6000396000f3fe60806040526004361061021a5760003560e01c8063715018a611610123578063b6f3ce00116100ab578063e985e9c51161006f578063e985e9c5146105e5578063efbd73f41461062e578063f216ddfd14610641578063f2fde38b1461065b578063f43a22dc1461067b57600080fd5b8063b6f3ce001461055a578063b88d4fde1461057a578063c87b56dd1461059a578063cd90e5af146105ba578063e5aed2d6146105d057600080fd5b80638da5cb5b116100f25780638da5cb5b146104de57806395d89b41146104fc5780639858cf1914610511578063a0712d6814610527578063a22cb4651461053a57600080fd5b8063715018a6146104735780637ec4a659146104885780638b0eb7e3146104a85780638d859f3e146104c857600080fd5b806342842e0e116101a657806362b99ad41161017557806362b99ad4146103e95780636352211e146103fe578063698982ba1461041e5780636f8b44b01461043357806370a082311461045357600080fd5b806342842e0e14610367578063438b63001461038757806344a0d68a146103b45780635503a0e8146103d457600080fd5b806316ba10e0116101ed57806316ba10e0146102d057806318160ddd146102f057806323b872dd1461031c57806332cb6b0c1461033c5780633ccfd60b1461035257600080fd5b806301ffc9a71461021f57806306fdde0314610254578063081812fc14610276578063095ea7b3146102ae575b600080fd5b34801561022b57600080fd5b5061023f61023a366004611ae5565b610691565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b506102696106e3565b60405161024b9190611b5a565b34801561028257600080fd5b50610296610291366004611b6d565b610775565b6040516001600160a01b03909116815260200161024b565b3480156102ba57600080fd5b506102ce6102c9366004611ba2565b6107b9565b005b3480156102dc57600080fd5b506102ce6102eb366004611c58565b61083f565b3480156102fc57600080fd5b5061030e600154600054036000190190565b60405190815260200161024b565b34801561032857600080fd5b506102ce610337366004611ca1565b610889565b34801561034857600080fd5b5061030e600c5481565b34801561035e57600080fd5b506102ce610894565b34801561037357600080fd5b506102ce610382366004611ca1565b61098e565b34801561039357600080fd5b506103a76103a2366004611cdd565b6109a9565b60405161024b9190611cf8565b3480156103c057600080fd5b506102ce6103cf366004611b6d565b610aea565b3480156103e057600080fd5b50610269610b19565b3480156103f557600080fd5b50610269610ba7565b34801561040a57600080fd5b50610296610419366004611b6d565b610bb4565b34801561042a57600080fd5b506102ce610bc6565b34801561043f57600080fd5b506102ce61044e366004611b6d565b610c55565b34801561045f57600080fd5b5061030e61046e366004611cdd565b610c84565b34801561047f57600080fd5b506102ce610cd3565b34801561049457600080fd5b506102ce6104a3366004611c58565b610d07565b3480156104b457600080fd5b506102ce6104c3366004611d3c565b610d44565b3480156104d457600080fd5b5061030e600e5481565b3480156104ea57600080fd5b506008546001600160a01b0316610296565b34801561050857600080fd5b50610269610dcd565b34801561051d57600080fd5b5061030e600f5481565b6102ce610535366004611b6d565b610ddc565b34801561054657600080fd5b506102ce610555366004611d5e565b610f13565b34801561056657600080fd5b506102ce610575366004611b6d565b610fa8565b34801561058657600080fd5b506102ce610595366004611d9a565b610fd7565b3480156105a657600080fd5b506102696105b5366004611b6d565b611021565b3480156105c657600080fd5b5061030e60105481565b3480156105dc57600080fd5b506102ce6110ef565b3480156105f157600080fd5b5061023f610600366004611e16565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6102ce61063c366004611e49565b61112d565b34801561064d57600080fd5b5060115461023f9060ff1681565b34801561066757600080fd5b506102ce610676366004611cdd565b6111c3565b34801561068757600080fd5b5061030e600d5481565b60006001600160e01b031982166380ac58cd60e01b14806106c257506001600160e01b03198216635b5e139f60e01b145b806106dd57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600280546106f290611e6c565b80601f016020809104026020016040519081016040528092919081815260200182805461071e90611e6c565b801561076b5780601f106107405761010080835404028352916020019161076b565b820191906000526020600020905b81548152906001019060200180831161074e57829003601f168201915b5050505050905090565b60006107808261125e565b61079d576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006107c482610bb4565b9050806001600160a01b0316836001600160a01b0316036107f85760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161461082f576108128133610600565b61082f576040516367d9dca160e11b815260040160405180910390fd5b61083a838383611297565b505050565b6008546001600160a01b031633146108725760405162461bcd60e51b815260040161086990611ea6565b60405180910390fd5b805161088590600b906020840190611a36565b5050565b61083a8383836112f3565b6008546001600160a01b031633146108be5760405162461bcd60e51b815260040161086990611ea6565b6002600954036109105760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610869565b600260095560006109296008546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610973576040519150601f19603f3d011682016040523d82523d6000602084013e610978565b606091505b505090508061098657600080fd5b506001600955565b61083a83838360405180602001604052806000815250610fd7565b606060006109b683610c84565b905060008167ffffffffffffffff8111156109d3576109d3611bcc565b6040519080825280602002602001820160405280156109fc578160200160208202803683370190505b50905060016000805b8482108015610a15575060005483105b15610adf57600083815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff16151591810182905290610acc5780516001600160a01b031615610a8757805191505b876001600160a01b0316826001600160a01b031603610acc5783858481518110610ab357610ab3611edb565b602090810291909101015282610ac881611f07565b9350505b83610ad681611f07565b94505050610a05565b509195945050505050565b6008546001600160a01b03163314610b145760405162461bcd60e51b815260040161086990611ea6565b600e55565b600b8054610b2690611e6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5290611e6c565b8015610b9f5780601f10610b7457610100808354040283529160200191610b9f565b820191906000526020600020905b815481529060010190602001808311610b8257829003601f168201915b505050505081565b600a8054610b2690611e6c565b6000610bbf826114e2565b5192915050565b6008546001600160a01b03163314610bf05760405162461bcd60e51b815260040161086990611ea6565b600c54610c04600154600054036000190190565b10610c485760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b6044820152606401610869565b610c53336001611606565b565b6008546001600160a01b03163314610c7f5760405162461bcd60e51b815260040161086990611ea6565b600c55565b60006001600160a01b038216610cad576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6008546001600160a01b03163314610cfd5760405162461bcd60e51b815260040161086990611ea6565b610c536000611620565b6008546001600160a01b03163314610d315760405162461bcd60e51b815260040161086990611ea6565b805161088590600a906020840190611a36565b6008546001600160a01b03163314610d6e5760405162461bcd60e51b815260040161086990611ea6565b600081118015610d805750600c548211155b610dc25760405162461bcd60e51b81526020600482015260136024820152724e6f742076616c6964207175616e746974792160681b6044820152606401610869565b600f91909155601055565b6060600380546106f290611e6c565b80600f54610df1600154600054036000190190565b10610eab573481600e54610e059190611f20565b14610e485760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610869565b600081118015610e5a5750600d548111155b610ea65760405162461bcd60e51b815260206004820152601860248201527f45786365656473206d61782070616964207065722074782100000000000000006044820152606401610869565b610f09565b600081118015610ebd57506010548111155b610f095760405162461bcd60e51b815260206004820152601c60248201527f45786365656473206d61782066726565206d696e7420706572207478000000006044820152606401610869565b6108853383611606565b336001600160a01b03831603610f3c5760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b03163314610fd25760405162461bcd60e51b815260040161086990611ea6565b600d55565b610fe28484846112f3565b6001600160a01b0383163b1561101b57610ffe84848484611672565b61101b576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b606061102c8261125e565b6110905760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610869565b600061109a61175e565b905060008151116110ba57604051806020016040528060008152506110e8565b806110c48461176d565b600b6040516020016110d893929190611f3f565b6040516020818303038152906040525b9392505050565b6008546001600160a01b031633146111195760405162461bcd60e51b815260040161086990611ea6565b6011805460ff19811660ff90911615179055565b6008546001600160a01b031633146111575760405162461bcd60e51b815260040161086990611ea6565b600c548261116c600154600054036000190190565b6111769190612002565b11156111b95760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b6044820152606401610869565b6108858183611606565b6008546001600160a01b031633146111ed5760405162461bcd60e51b815260040161086990611ea6565b6001600160a01b0381166112525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610869565b61125b81611620565b50565b600081600111158015611272575060005482105b80156106dd575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006112fe826114e2565b9050836001600160a01b031681600001516001600160a01b0316146113355760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b038616148061135357506113538533610600565b8061136e57503361136384610775565b6001600160a01b0316145b90508061138e57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0384166113b557604051633a954ecd60e21b815260040160405180910390fd5b6113c160008487611297565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff1980821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b42909216919091021783558701808452922080549193909116611497576000548214611497578054602086015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b604080516060810182526000808252602082018190529181019190915281806001116115ed576000548110156115ed57600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161515918101829052906115eb5780516001600160a01b031615611581579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff16151592810192909252156115e6579392505050565b611581565b505b604051636f96cda160e11b815260040160405180910390fd5b61088582826040518060200160405280600081525061186e565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906116a790339089908890889060040161201a565b6020604051808303816000875af19250505080156116e2575060408051601f3d908101601f191682019092526116df91810190612057565b60015b611740573d808015611710576040519150601f19603f3d011682016040523d82523d6000602084013e611715565b606091505b508051600003611738576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600a80546106f290611e6c565b6060816000036117945750506040805180820190915260018152600360fc1b602082015290565b8160005b81156117be57806117a881611f07565b91506117b79050600a8361208a565b9150611798565b60008167ffffffffffffffff8111156117d9576117d9611bcc565b6040519080825280601f01601f191660200182016040528015611803576020820181803683370190505b5090505b84156117565761181860018361209e565b9150611825600a866120b5565b611830906030612002565b60f81b81838151811061184557611845611edb565b60200101906001600160f81b031916908160001a905350611867600a8661208a565b9450611807565b6000546001600160a01b03841661189757604051622e076360e81b815260040160405180910390fd5b826000036118b85760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038416600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff19811667ffffffffffffffff8083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b01811690920217909155858452600490925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b156119e1575b60405182906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46119aa6000878480600101955087611672565b6119c7576040516368d2bf6b60e11b815260040160405180910390fd5b80821061195f5782600054146119dc57600080fd5b611a26565b5b6040516001830192906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082106119e2575b50600090815561101b9085838684565b828054611a4290611e6c565b90600052602060002090601f016020900481019282611a645760008555611aaa565b82601f10611a7d57805160ff1916838001178555611aaa565b82800160010185558215611aaa579182015b82811115611aaa578251825591602001919060010190611a8f565b50611ab6929150611aba565b5090565b5b80821115611ab65760008155600101611abb565b6001600160e01b03198116811461125b57600080fd5b600060208284031215611af757600080fd5b81356110e881611acf565b60005b83811015611b1d578181015183820152602001611b05565b8381111561101b5750506000910152565b60008151808452611b46816020860160208601611b02565b601f01601f19169290920160200192915050565b6020815260006110e86020830184611b2e565b600060208284031215611b7f57600080fd5b5035919050565b80356001600160a01b0381168114611b9d57600080fd5b919050565b60008060408385031215611bb557600080fd5b611bbe83611b86565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611bfd57611bfd611bcc565b604051601f8501601f19908116603f01168101908282118183101715611c2557611c25611bcc565b81604052809350858152868686011115611c3e57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611c6a57600080fd5b813567ffffffffffffffff811115611c8157600080fd5b8201601f81018413611c9257600080fd5b61175684823560208401611be2565b600080600060608486031215611cb657600080fd5b611cbf84611b86565b9250611ccd60208501611b86565b9150604084013590509250925092565b600060208284031215611cef57600080fd5b6110e882611b86565b6020808252825182820181905260009190848201906040850190845b81811015611d3057835183529284019291840191600101611d14565b50909695505050505050565b60008060408385031215611d4f57600080fd5b50508035926020909101359150565b60008060408385031215611d7157600080fd5b611d7a83611b86565b915060208301358015158114611d8f57600080fd5b809150509250929050565b60008060008060808587031215611db057600080fd5b611db985611b86565b9350611dc760208601611b86565b925060408501359150606085013567ffffffffffffffff811115611dea57600080fd5b8501601f81018713611dfb57600080fd5b611e0a87823560208401611be2565b91505092959194509250565b60008060408385031215611e2957600080fd5b611e3283611b86565b9150611e4060208401611b86565b90509250929050565b60008060408385031215611e5c57600080fd5b82359150611e4060208401611b86565b600181811c90821680611e8057607f821691505b602082108103611ea057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611f1957611f19611ef1565b5060010190565b6000816000190483118215151615611f3a57611f3a611ef1565b500290565b600084516020611f528285838a01611b02565b855191840191611f658184848a01611b02565b8554920191600090600181811c9080831680611f8257607f831692505b8583108103611f9f57634e487b7160e01b85526022600452602485fd5b808015611fb35760018114611fc457611ff1565b60ff19851688528388019550611ff1565b60008b81526020902060005b85811015611fe95781548a820152908401908801611fd0565b505083880195505b50939b9a5050505050505050505050565b6000821982111561201557612015611ef1565b500190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061204d90830184611b2e565b9695505050505050565b60006020828403121561206957600080fd5b81516110e881611acf565b634e487b7160e01b600052601260045260246000fd5b60008261209957612099612074565b500490565b6000828210156120b0576120b0611ef1565b500390565b6000826120c4576120c4612074565b50069056fea264697066735822122043ea5604bd5e4ecb71bc6d4367ff4c1e11615d4f056e3d535bb2b09250971fab64736f6c634300080e0033697066733a2f2f516d6159384a4843553659587a74797879447a5663504c5643736d6634396d634442314132766a6d6559456f53312f

Deployed Bytecode

0x60806040526004361061021a5760003560e01c8063715018a611610123578063b6f3ce00116100ab578063e985e9c51161006f578063e985e9c5146105e5578063efbd73f41461062e578063f216ddfd14610641578063f2fde38b1461065b578063f43a22dc1461067b57600080fd5b8063b6f3ce001461055a578063b88d4fde1461057a578063c87b56dd1461059a578063cd90e5af146105ba578063e5aed2d6146105d057600080fd5b80638da5cb5b116100f25780638da5cb5b146104de57806395d89b41146104fc5780639858cf1914610511578063a0712d6814610527578063a22cb4651461053a57600080fd5b8063715018a6146104735780637ec4a659146104885780638b0eb7e3146104a85780638d859f3e146104c857600080fd5b806342842e0e116101a657806362b99ad41161017557806362b99ad4146103e95780636352211e146103fe578063698982ba1461041e5780636f8b44b01461043357806370a082311461045357600080fd5b806342842e0e14610367578063438b63001461038757806344a0d68a146103b45780635503a0e8146103d457600080fd5b806316ba10e0116101ed57806316ba10e0146102d057806318160ddd146102f057806323b872dd1461031c57806332cb6b0c1461033c5780633ccfd60b1461035257600080fd5b806301ffc9a71461021f57806306fdde0314610254578063081812fc14610276578063095ea7b3146102ae575b600080fd5b34801561022b57600080fd5b5061023f61023a366004611ae5565b610691565b60405190151581526020015b60405180910390f35b34801561026057600080fd5b506102696106e3565b60405161024b9190611b5a565b34801561028257600080fd5b50610296610291366004611b6d565b610775565b6040516001600160a01b03909116815260200161024b565b3480156102ba57600080fd5b506102ce6102c9366004611ba2565b6107b9565b005b3480156102dc57600080fd5b506102ce6102eb366004611c58565b61083f565b3480156102fc57600080fd5b5061030e600154600054036000190190565b60405190815260200161024b565b34801561032857600080fd5b506102ce610337366004611ca1565b610889565b34801561034857600080fd5b5061030e600c5481565b34801561035e57600080fd5b506102ce610894565b34801561037357600080fd5b506102ce610382366004611ca1565b61098e565b34801561039357600080fd5b506103a76103a2366004611cdd565b6109a9565b60405161024b9190611cf8565b3480156103c057600080fd5b506102ce6103cf366004611b6d565b610aea565b3480156103e057600080fd5b50610269610b19565b3480156103f557600080fd5b50610269610ba7565b34801561040a57600080fd5b50610296610419366004611b6d565b610bb4565b34801561042a57600080fd5b506102ce610bc6565b34801561043f57600080fd5b506102ce61044e366004611b6d565b610c55565b34801561045f57600080fd5b5061030e61046e366004611cdd565b610c84565b34801561047f57600080fd5b506102ce610cd3565b34801561049457600080fd5b506102ce6104a3366004611c58565b610d07565b3480156104b457600080fd5b506102ce6104c3366004611d3c565b610d44565b3480156104d457600080fd5b5061030e600e5481565b3480156104ea57600080fd5b506008546001600160a01b0316610296565b34801561050857600080fd5b50610269610dcd565b34801561051d57600080fd5b5061030e600f5481565b6102ce610535366004611b6d565b610ddc565b34801561054657600080fd5b506102ce610555366004611d5e565b610f13565b34801561056657600080fd5b506102ce610575366004611b6d565b610fa8565b34801561058657600080fd5b506102ce610595366004611d9a565b610fd7565b3480156105a657600080fd5b506102696105b5366004611b6d565b611021565b3480156105c657600080fd5b5061030e60105481565b3480156105dc57600080fd5b506102ce6110ef565b3480156105f157600080fd5b5061023f610600366004611e16565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b6102ce61063c366004611e49565b61112d565b34801561064d57600080fd5b5060115461023f9060ff1681565b34801561066757600080fd5b506102ce610676366004611cdd565b6111c3565b34801561068757600080fd5b5061030e600d5481565b60006001600160e01b031982166380ac58cd60e01b14806106c257506001600160e01b03198216635b5e139f60e01b145b806106dd57506301ffc9a760e01b6001600160e01b03198316145b92915050565b6060600280546106f290611e6c565b80601f016020809104026020016040519081016040528092919081815260200182805461071e90611e6c565b801561076b5780601f106107405761010080835404028352916020019161076b565b820191906000526020600020905b81548152906001019060200180831161074e57829003601f168201915b5050505050905090565b60006107808261125e565b61079d576040516333d1c03960e21b815260040160405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006107c482610bb4565b9050806001600160a01b0316836001600160a01b0316036107f85760405163250fdee360e21b815260040160405180910390fd5b336001600160a01b0382161461082f576108128133610600565b61082f576040516367d9dca160e11b815260040160405180910390fd5b61083a838383611297565b505050565b6008546001600160a01b031633146108725760405162461bcd60e51b815260040161086990611ea6565b60405180910390fd5b805161088590600b906020840190611a36565b5050565b61083a8383836112f3565b6008546001600160a01b031633146108be5760405162461bcd60e51b815260040161086990611ea6565b6002600954036109105760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610869565b600260095560006109296008546001600160a01b031690565b6001600160a01b03164760405160006040518083038185875af1925050503d8060008114610973576040519150601f19603f3d011682016040523d82523d6000602084013e610978565b606091505b505090508061098657600080fd5b506001600955565b61083a83838360405180602001604052806000815250610fd7565b606060006109b683610c84565b905060008167ffffffffffffffff8111156109d3576109d3611bcc565b6040519080825280602002602001820160405280156109fc578160200160208202803683370190505b50905060016000805b8482108015610a15575060005483105b15610adf57600083815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff16151591810182905290610acc5780516001600160a01b031615610a8757805191505b876001600160a01b0316826001600160a01b031603610acc5783858481518110610ab357610ab3611edb565b602090810291909101015282610ac881611f07565b9350505b83610ad681611f07565b94505050610a05565b509195945050505050565b6008546001600160a01b03163314610b145760405162461bcd60e51b815260040161086990611ea6565b600e55565b600b8054610b2690611e6c565b80601f0160208091040260200160405190810160405280929190818152602001828054610b5290611e6c565b8015610b9f5780601f10610b7457610100808354040283529160200191610b9f565b820191906000526020600020905b815481529060010190602001808311610b8257829003601f168201915b505050505081565b600a8054610b2690611e6c565b6000610bbf826114e2565b5192915050565b6008546001600160a01b03163314610bf05760405162461bcd60e51b815260040161086990611ea6565b600c54610c04600154600054036000190190565b10610c485760405162461bcd60e51b81526020600482015260146024820152734d617820737570706c792065786365656465642160601b6044820152606401610869565b610c53336001611606565b565b6008546001600160a01b03163314610c7f5760405162461bcd60e51b815260040161086990611ea6565b600c55565b60006001600160a01b038216610cad576040516323d3ad8160e21b815260040160405180910390fd5b506001600160a01b031660009081526005602052604090205467ffffffffffffffff1690565b6008546001600160a01b03163314610cfd5760405162461bcd60e51b815260040161086990611ea6565b610c536000611620565b6008546001600160a01b03163314610d315760405162461bcd60e51b815260040161086990611ea6565b805161088590600a906020840190611a36565b6008546001600160a01b03163314610d6e5760405162461bcd60e51b815260040161086990611ea6565b600081118015610d805750600c548211155b610dc25760405162461bcd60e51b81526020600482015260136024820152724e6f742076616c6964207175616e746974792160681b6044820152606401610869565b600f91909155601055565b6060600380546106f290611e6c565b80600f54610df1600154600054036000190190565b10610eab573481600e54610e059190611f20565b14610e485760405162461bcd60e51b8152602060048201526013602482015272496e73756666696369656e742066756e64732160681b6044820152606401610869565b600081118015610e5a5750600d548111155b610ea65760405162461bcd60e51b815260206004820152601860248201527f45786365656473206d61782070616964207065722074782100000000000000006044820152606401610869565b610f09565b600081118015610ebd57506010548111155b610f095760405162461bcd60e51b815260206004820152601c60248201527f45786365656473206d61782066726565206d696e7420706572207478000000006044820152606401610869565b6108853383611606565b336001600160a01b03831603610f3c5760405163b06307db60e01b815260040160405180910390fd5b3360008181526007602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6008546001600160a01b03163314610fd25760405162461bcd60e51b815260040161086990611ea6565b600d55565b610fe28484846112f3565b6001600160a01b0383163b1561101b57610ffe84848484611672565b61101b576040516368d2bf6b60e11b815260040160405180910390fd5b50505050565b606061102c8261125e565b6110905760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610869565b600061109a61175e565b905060008151116110ba57604051806020016040528060008152506110e8565b806110c48461176d565b600b6040516020016110d893929190611f3f565b6040516020818303038152906040525b9392505050565b6008546001600160a01b031633146111195760405162461bcd60e51b815260040161086990611ea6565b6011805460ff19811660ff90911615179055565b6008546001600160a01b031633146111575760405162461bcd60e51b815260040161086990611ea6565b600c548261116c600154600054036000190190565b6111769190612002565b11156111b95760405162461bcd60e51b815260206004820152601260248201527145786365656473206d617820737570706c7960701b6044820152606401610869565b6108858183611606565b6008546001600160a01b031633146111ed5760405162461bcd60e51b815260040161086990611ea6565b6001600160a01b0381166112525760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610869565b61125b81611620565b50565b600081600111158015611272575060005482105b80156106dd575050600090815260046020526040902054600160e01b900460ff161590565b60008281526006602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b60006112fe826114e2565b9050836001600160a01b031681600001516001600160a01b0316146113355760405162a1148160e81b815260040160405180910390fd5b6000336001600160a01b038616148061135357506113538533610600565b8061136e57503361136384610775565b6001600160a01b0316145b90508061138e57604051632ce44b5f60e11b815260040160405180910390fd5b6001600160a01b0384166113b557604051633a954ecd60e21b815260040160405180910390fd5b6113c160008487611297565b6001600160a01b038581166000908152600560209081526040808320805467ffffffffffffffff1980821667ffffffffffffffff92831660001901831617909255898616808652838620805493841693831660019081018416949094179055898652600490945282852080546001600160e01b031916909417600160a01b42909216919091021783558701808452922080549193909116611497576000548214611497578054602086015167ffffffffffffffff16600160a01b026001600160e01b03199091166001600160a01b038a16171781555b50505082846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050505050565b604080516060810182526000808252602082018190529181019190915281806001116115ed576000548110156115ed57600081815260046020908152604091829020825160608101845290546001600160a01b0381168252600160a01b810467ffffffffffffffff1692820192909252600160e01b90910460ff161515918101829052906115eb5780516001600160a01b031615611581579392505050565b5060001901600081815260046020908152604091829020825160608101845290546001600160a01b038116808352600160a01b820467ffffffffffffffff1693830193909352600160e01b900460ff16151592810192909252156115e6579392505050565b611581565b505b604051636f96cda160e11b815260040160405180910390fd5b61088582826040518060200160405280600081525061186e565b600880546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b604051630a85bd0160e11b81526000906001600160a01b0385169063150b7a02906116a790339089908890889060040161201a565b6020604051808303816000875af19250505080156116e2575060408051601f3d908101601f191682019092526116df91810190612057565b60015b611740573d808015611710576040519150601f19603f3d011682016040523d82523d6000602084013e611715565b606091505b508051600003611738576040516368d2bf6b60e11b815260040160405180910390fd5b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490505b949350505050565b6060600a80546106f290611e6c565b6060816000036117945750506040805180820190915260018152600360fc1b602082015290565b8160005b81156117be57806117a881611f07565b91506117b79050600a8361208a565b9150611798565b60008167ffffffffffffffff8111156117d9576117d9611bcc565b6040519080825280601f01601f191660200182016040528015611803576020820181803683370190505b5090505b84156117565761181860018361209e565b9150611825600a866120b5565b611830906030612002565b60f81b81838151811061184557611845611edb565b60200101906001600160f81b031916908160001a905350611867600a8661208a565b9450611807565b6000546001600160a01b03841661189757604051622e076360e81b815260040160405180910390fd5b826000036118b85760405163b562e8dd60e01b815260040160405180910390fd5b6001600160a01b038416600081815260056020908152604080832080546fffffffffffffffffffffffffffffffff19811667ffffffffffffffff8083168b0181169182176801000000000000000067ffffffffffffffff1990941690921783900481168b01811690920217909155858452600490925290912080546001600160e01b0319168317600160a01b42909316929092029190911790558190818501903b156119e1575b60405182906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a46119aa6000878480600101955087611672565b6119c7576040516368d2bf6b60e11b815260040160405180910390fd5b80821061195f5782600054146119dc57600080fd5b611a26565b5b6040516001830192906001600160a01b038816906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a48082106119e2575b50600090815561101b9085838684565b828054611a4290611e6c565b90600052602060002090601f016020900481019282611a645760008555611aaa565b82601f10611a7d57805160ff1916838001178555611aaa565b82800160010185558215611aaa579182015b82811115611aaa578251825591602001919060010190611a8f565b50611ab6929150611aba565b5090565b5b80821115611ab65760008155600101611abb565b6001600160e01b03198116811461125b57600080fd5b600060208284031215611af757600080fd5b81356110e881611acf565b60005b83811015611b1d578181015183820152602001611b05565b8381111561101b5750506000910152565b60008151808452611b46816020860160208601611b02565b601f01601f19169290920160200192915050565b6020815260006110e86020830184611b2e565b600060208284031215611b7f57600080fd5b5035919050565b80356001600160a01b0381168114611b9d57600080fd5b919050565b60008060408385031215611bb557600080fd5b611bbe83611b86565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff80841115611bfd57611bfd611bcc565b604051601f8501601f19908116603f01168101908282118183101715611c2557611c25611bcc565b81604052809350858152868686011115611c3e57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215611c6a57600080fd5b813567ffffffffffffffff811115611c8157600080fd5b8201601f81018413611c9257600080fd5b61175684823560208401611be2565b600080600060608486031215611cb657600080fd5b611cbf84611b86565b9250611ccd60208501611b86565b9150604084013590509250925092565b600060208284031215611cef57600080fd5b6110e882611b86565b6020808252825182820181905260009190848201906040850190845b81811015611d3057835183529284019291840191600101611d14565b50909695505050505050565b60008060408385031215611d4f57600080fd5b50508035926020909101359150565b60008060408385031215611d7157600080fd5b611d7a83611b86565b915060208301358015158114611d8f57600080fd5b809150509250929050565b60008060008060808587031215611db057600080fd5b611db985611b86565b9350611dc760208601611b86565b925060408501359150606085013567ffffffffffffffff811115611dea57600080fd5b8501601f81018713611dfb57600080fd5b611e0a87823560208401611be2565b91505092959194509250565b60008060408385031215611e2957600080fd5b611e3283611b86565b9150611e4060208401611b86565b90509250929050565b60008060408385031215611e5c57600080fd5b82359150611e4060208401611b86565b600181811c90821680611e8057607f821691505b602082108103611ea057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611f1957611f19611ef1565b5060010190565b6000816000190483118215151615611f3a57611f3a611ef1565b500290565b600084516020611f528285838a01611b02565b855191840191611f658184848a01611b02565b8554920191600090600181811c9080831680611f8257607f831692505b8583108103611f9f57634e487b7160e01b85526022600452602485fd5b808015611fb35760018114611fc457611ff1565b60ff19851688528388019550611ff1565b60008b81526020902060005b85811015611fe95781548a820152908401908801611fd0565b505083880195505b50939b9a5050505050505050505050565b6000821982111561201557612015611ef1565b500190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061204d90830184611b2e565b9695505050505050565b60006020828403121561206957600080fd5b81516110e881611acf565b634e487b7160e01b600052601260045260246000fd5b60008261209957612099612074565b500490565b6000828210156120b0576120b0611ef1565b500390565b6000826120c4576120c4612074565b50069056fea264697066735822122043ea5604bd5e4ecb71bc6d4367ff4c1e11615d4f056e3d535bb2b09250971fab64736f6c634300080e0033

Deployed Bytecode Sourcemap

22374:4032:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10875:305;;;;;;;;;;-1:-1:-1;10875:305:0;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;10875:305:0;;;;;;;;12895:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;13923:204::-;;;;;;;;;;-1:-1:-1;13923:204:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;1692:32:1;;;1674:51;;1662:2;1647:18;13923:204:0;1528:203:1;13543:372:0;;;;;;;;;;-1:-1:-1;13543:372:0;;;;;:::i;:::-;;:::i;:::-;;26295:106;;;;;;;;;;-1:-1:-1;26295:106:0;;;;;:::i;:::-;;:::i;10540:170::-;;;;;;;;;;;;24735:1;10661:12;10593:7;10645:13;:28;-1:-1:-1;;10645:46:0;;10540:170;;;;3544:25:1;;;3532:2;3517:18;10540:170:0;3398:177:1;14602:170:0;;;;;;;;;;-1:-1:-1;14602:170:0;;;;;:::i;:::-;;:::i;22608:32::-;;;;;;;;;;;;;;;;25506:160;;;;;;;;;;;;;:::i;14780:185::-;;;;;;;;;;-1:-1:-1;14780:185:0;;;;;:::i;:::-;;:::i;23750:885::-;;;;;;;;;;-1:-1:-1;23750:885:0;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;25871:83::-;;;;;;;;;;-1:-1:-1;25871:83:0;;;;;:::i;:::-;;:::i;22558:28::-;;;;;;;;;;;;;:::i;22469:82::-;;;;;;;;;;;;;:::i;12762:125::-;;;;;;;;;;-1:-1:-1;12762:125:0;;;;;:::i;:::-;;:::i;25127:151::-;;;;;;;;;;;;;:::i;25962:101::-;;;;;;;;;;-1:-1:-1;25962:101:0;;;;;:::i;:::-;;:::i;11190:206::-;;;;;;;;;;-1:-1:-1;11190:206:0;;;;;:::i;:::-;;:::i;2710:103::-;;;;;;;;;;;;;:::i;26181:106::-;;;;;;;;;;-1:-1:-1;26181:106:0;;;;;:::i;:::-;;:::i;23480:262::-;;;;;;;;;;-1:-1:-1;23480:262:0;;;;;:::i;:::-;;:::i;22684:33::-;;;;;;;;;;;;;;;;2487:87;;;;;;;;;;-1:-1:-1;2560:6:0;;-1:-1:-1;;;;;2560:6:0;2487:87;;13003:104;;;;;;;;;;;;;:::i;22747:32::-;;;;;;;;;;;;;;;;23353:119;;;;;;:::i;:::-;;:::i;14135:287::-;;;;;;;;;;-1:-1:-1;14135:287:0;;;;;:::i;:::-;;:::i;25758:105::-;;;;;;;;;;-1:-1:-1;25758:105:0;;;;;:::i;:::-;;:::i;14973:370::-;;;;;;;;;;-1:-1:-1;14973:370:0;;;;;:::i;:::-;;:::i;24752:367::-;;;;;;;;;;-1:-1:-1;24752:367:0;;;;;:::i;:::-;;:::i;22786:34::-;;;;;;;;;;;;;;;;25674:76;;;;;;;;;;;;;:::i;14430:164::-;;;;;;;;;;-1:-1:-1;14430:164:0;;;;;:::i;:::-;-1:-1:-1;;;;;14551:25:0;;;14527:4;14551:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;14430:164;25286:212;;;;;;:::i;:::-;;:::i;22829:31::-;;;;;;;;;;-1:-1:-1;22829:31:0;;;;;;;;2821:201;;;;;;;;;;-1:-1:-1;2821:201:0;;;;;:::i;:::-;;:::i;22647:30::-;;;;;;;;;;;;;;;;10875:305;10977:4;-1:-1:-1;;;;;;11014:40:0;;-1:-1:-1;;;11014:40:0;;:105;;-1:-1:-1;;;;;;;11071:48:0;;-1:-1:-1;;;11071:48:0;11014:105;:158;;;-1:-1:-1;;;;;;;;;;7269:40:0;;;11136:36;10994:178;10875:305;-1:-1:-1;;10875:305:0:o;12895:100::-;12949:13;12982:5;12975:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12895:100;:::o;13923:204::-;13991:7;14016:16;14024:7;14016;:16::i;:::-;14011:64;;14041:34;;-1:-1:-1;;;14041:34:0;;;;;;;;;;;14011:64;-1:-1:-1;14095:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;14095:24:0;;13923:204::o;13543:372::-;13616:13;13632:24;13648:7;13632:15;:24::i;:::-;13616:40;;13677:5;-1:-1:-1;;;;;13671:11:0;:2;-1:-1:-1;;;;;13671:11:0;;13667:48;;13691:24;;-1:-1:-1;;;13691:24:0;;;;;;;;;;;13667:48;2086:10;-1:-1:-1;;;;;13732:21:0;;;13728:139;;13759:37;13776:5;2086:10;14430:164;:::i;13759:37::-;13755:112;;13820:35;;-1:-1:-1;;;13820:35:0;;;;;;;;;;;13755:112;13879:28;13888:2;13892:7;13901:5;13879:8;:28::i;:::-;13605:310;13543:372;;:::o;26295:106::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;;;;;;;;;26371:22;;::::1;::::0;:9:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;:::-;;26295:106:::0;:::o;14602:170::-;14736:28;14746:4;14752:2;14756:7;14736:9;:28::i;25506:160::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;189:1:::1;335:7;;:19:::0;327:63:::1;;;::::0;-1:-1:-1;;;327:63:0;;7490:2:1;327:63:0::1;::::0;::::1;7472:21:1::0;7529:2;7509:18;;;7502:30;7568:33;7548:18;;;7541:61;7619:18;;327:63:0::1;7288:355:1::0;327:63:0::1;189:1;401:7;:18:::0;25568:7:::2;25589;2560:6:::0;;-1:-1:-1;;;;;2560:6:0;;2487:87;25589:7:::2;-1:-1:-1::0;;;;;25581:21:0::2;25610;25581:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25567:69;;;25655:2;25647:11;;;::::0;::::2;;-1:-1:-1::0;145:1:0::1;444:7;:22:::0;25506:160::o;14780:185::-;14918:39;14935:4;14941:2;14945:7;14918:39;;;;;;;;;;;;:16;:39::i;23750:885::-;23810:16;23839:23;23865:17;23875:6;23865:9;:17::i;:::-;23839:43;;23893:30;23940:15;23926:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23926:30:0;-1:-1:-1;23893:63:0;-1:-1:-1;24735:1:0;23967:22;;24093:504;24118:15;24100;:33;:67;;;;;24154:13;;24137:14;:30;24100:67;24093:504;;;24180:31;24214:27;;;:11;:27;;;;;;;;;24180:61;;;;;;;;;-1:-1:-1;;;;;24180:61:0;;;;-1:-1:-1;;;24180:61:0;;;;;;;;;;;-1:-1:-1;;;24180:61:0;;;;;;;;;;;;;;24252:307;;24294:14;;-1:-1:-1;;;;;24294:28:0;;24290:100;;24360:14;;;-1:-1:-1;24290:100:0;24430:6;-1:-1:-1;;;;;24408:28:0;:18;-1:-1:-1;;;;;24408:28:0;;24404:144;;24486:14;24453:13;24467:15;24453:30;;;;;;;;:::i;:::-;;;;;;;;;;:47;24515:17;;;;:::i;:::-;;;;24404:144;24569:16;;;;:::i;:::-;;;;24169:428;24093:504;;;-1:-1:-1;24614:13:0;;23750:885;-1:-1:-1;;;;;23750:885:0:o;25871:83::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;25932:5:::1;:14:::0;25871:83::o;22558:28::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22469:82::-;;;;;;;:::i;12762:125::-;12826:7;12853:21;12866:7;12853:12;:21::i;:::-;:26;;12762:125;-1:-1:-1;;12762:125:0:o;25127:151::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;25200:10:::1;;25184:13;24735:1:::0;10661:12;10593:7;10645:13;:28;-1:-1:-1;;10645:46:0;;10540:170;25184:13:::1;:26;25176:59;;;::::0;-1:-1:-1;;;25176:59:0;;8464:2:1;25176:59:0::1;::::0;::::1;8446:21:1::0;8503:2;8483:18;;;8476:30;-1:-1:-1;;;8522:18:1;;;8515:50;8582:18;;25176:59:0::1;8262:344:1::0;25176:59:0::1;25246:24;25256:10;25268:1;25246:9;:24::i;:::-;25127:151::o:0;25962:101::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;26032:10:::1;:23:::0;25962:101::o;11190:206::-;11254:7;-1:-1:-1;;;;;11278:19:0;;11274:60;;11306:28;;-1:-1:-1;;;11306:28:0;;;;;;;;;;;11274:60;-1:-1:-1;;;;;;11360:19:0;;;;;:12;:19;;;;;:27;;;;11190:206::o;2710:103::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;2775:30:::1;2802:1;2775:18;:30::i;26181:106::-:0;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;26257:22;;::::1;::::0;:9:::1;::::0;:22:::1;::::0;::::1;::::0;::::1;:::i;23480:262::-:0;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;23601:1:::1;23584:14;:18;:47;;;;;23621:10;;23606:11;:25;;23584:47;23576:79;;;::::0;-1:-1:-1;;;23576:79:0;;8813:2:1;23576:79:0::1;::::0;::::1;8795:21:1::0;8852:2;8832:18;;;8825:30;-1:-1:-1;;;8871:18:1;;;8864:49;8930:18;;23576:79:0::1;8611:343:1::0;23576:79:0::1;23666:11;:25:::0;;;;23702:15:::1;:32:::0;23480:262::o;13003:104::-;13059:13;13092:7;13085:14;;;;;:::i;23353:119::-;23414:7;23012:11;;22995:13;24735:1;10661:12;10593:7;10645:13;:28;-1:-1:-1;;10645:46:0;;10540:170;22995:13;:28;22991:322;;23067:9;23056:7;23048:5;;:15;;;;:::i;:::-;:28;23040:60;;;;-1:-1:-1;;;23040:60:0;;9334:2:1;23040:60:0;;;9316:21:1;9373:2;9353:18;;;9346:30;-1:-1:-1;;;9392:18:1;;;9385:49;9451:18;;23040:60:0;9132:343:1;23040:60:0;23133:1;23123:7;:11;:36;;;;;23149:10;;23138:7;:21;;23123:36;23115:73;;;;-1:-1:-1;;;23115:73:0;;9682:2:1;23115:73:0;;;9664:21:1;9721:2;9701:18;;;9694:30;9760:26;9740:18;;;9733:54;9804:18;;23115:73:0;9480:348:1;23115:73:0;22991:322;;;23237:1;23227:7;:11;:41;;;;;23253:15;;23242:7;:26;;23227:41;23219:82;;;;-1:-1:-1;;;23219:82:0;;10035:2:1;23219:82:0;;;10017:21:1;10074:2;10054:18;;;10047:30;10113;10093:18;;;10086:58;10161:18;;23219:82:0;9833:352:1;23219:82:0;23434:30:::1;23444:10;23456:7;23434:9;:30::i;14135:287::-:0;2086:10;-1:-1:-1;;;;;14234:24:0;;;14230:54;;14267:17;;-1:-1:-1;;;14267:17:0;;;;;;;;;;;14230:54;2086:10;14297:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;14297:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;14297:53:0;;;;;;;;;;14366:48;;540:41:1;;;14297:42:0;;2086:10;14366:48;;513:18:1;14366:48:0;;;;;;;14135:287;;:::o;25758:105::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;25831:10:::1;:24:::0;25758:105::o;14973:370::-;15140:28;15150:4;15156:2;15160:7;15140:9;:28::i;:::-;-1:-1:-1;;;;;15183:13:0;;3366:19;:23;15179:157;;15204:56;15235:4;15241:2;15245:7;15254:5;15204:30;:56::i;:::-;15200:136;;15284:40;;-1:-1:-1;;;15284:40:0;;;;;;;;;;;15200:136;14973:370;;;;:::o;24752:367::-;24826:13;24860:17;24868:8;24860:7;:17::i;:::-;24852:77;;;;-1:-1:-1;;;24852:77:0;;10392:2:1;24852:77:0;;;10374:21:1;10431:2;10411:18;;;10404:30;10470:34;10450:18;;;10443:62;-1:-1:-1;;;10521:18:1;;;10514:45;10576:19;;24852:77:0;10190:411:1;24852:77:0;24940:28;24971:10;:8;:10::i;:::-;24940:41;;25030:1;25005:14;24999:28;:32;:112;;;;;;;;;;;;;;;;;25058:14;25074:19;:8;:17;:19::i;:::-;25095:9;25041:64;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24999:112;24992:119;24752:367;-1:-1:-1;;;24752:367:0:o;25674:76::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;25734:11:::1;::::0;;-1:-1:-1;;25719:26:0;::::1;25734:11;::::0;;::::1;25733:12;25719:26;::::0;;25674:76::o;25286:212::-;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;25417:10:::1;;25406:7;25390:13;24735:1:::0;10661:12;10593:7;10645:13;:28;-1:-1:-1;;10645:46:0;;10540:170;25390:13:::1;:23;;;;:::i;:::-;:37;;25382:68;;;::::0;-1:-1:-1;;;25382:68:0;;12599:2:1;25382:68:0::1;::::0;::::1;12581:21:1::0;12638:2;12618:18;;;12611:30;-1:-1:-1;;;12657:18:1;;;12650:48;12715:18;;25382:68:0::1;12397:342:1::0;25382:68:0::1;25461:29;25471:9;25482:7;25461:9;:29::i;2821:201::-:0;2560:6;;-1:-1:-1;;;;;2560:6:0;2086:10;2622:23;2614:68;;;;-1:-1:-1;;;2614:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;2910:22:0;::::1;2902:73;;;::::0;-1:-1:-1;;;2902:73:0;;12946:2:1;2902:73:0::1;::::0;::::1;12928:21:1::0;12985:2;12965:18;;;12958:30;13024:34;13004:18;;;12997:62;-1:-1:-1;;;13075:18:1;;;13068:36;13121:19;;2902:73:0::1;12744:402:1::0;2902:73:0::1;2986:28;3005:8;2986:18;:28::i;:::-;2821:201:::0;:::o;15351:174::-;15408:4;15451:7;24735:1;15432:26;;:53;;;;;15472:13;;15462:7;:23;15432:53;:85;;;;-1:-1:-1;;15490:20:0;;;;:11;:20;;;;;:27;-1:-1:-1;;;15490:27:0;;;;15489:28;;15351:174::o;21163:196::-;21278:24;;;;:15;:24;;;;;;:29;;-1:-1:-1;;;;;;21278:29:0;-1:-1:-1;;;;;21278:29:0;;;;;;;;;21323:28;;21278:24;;21323:28;;;;;;;21163:196;;;:::o;18059:1440::-;18174:35;18212:21;18225:7;18212:12;:21::i;:::-;18174:59;;18272:4;-1:-1:-1;;;;;18250:26:0;:13;:18;;;-1:-1:-1;;;;;18250:26:0;;18246:67;;18285:28;;-1:-1:-1;;;18285:28:0;;;;;;;;;;;18246:67;18326:22;2086:10;-1:-1:-1;;;;;18352:20:0;;;;:73;;-1:-1:-1;18389:36:0;18406:4;2086:10;14430:164;:::i;18389:36::-;18352:126;;;-1:-1:-1;2086:10:0;18442:20;18454:7;18442:11;:20::i;:::-;-1:-1:-1;;;;;18442:36:0;;18352:126;18326:153;;18497:17;18492:66;;18523:35;;-1:-1:-1;;;18523:35:0;;;;;;;;;;;18492:66;-1:-1:-1;;;;;18573:16:0;;18569:52;;18598:23;;-1:-1:-1;;;18598:23:0;;;;;;;;;;;18569:52;18690:35;18707:1;18711:7;18720:4;18690:8;:35::i;:::-;-1:-1:-1;;;;;18763:18:0;;;;;;;:12;:18;;;;;;;;:31;;-1:-1:-1;;18763:31:0;;;;;;;-1:-1:-1;;18763:31:0;;;;;;;18809:16;;;;;;;;;:29;;;;;;;;-1:-1:-1;18809:29:0;;;;;;;;;;;18887:20;;;:11;:20;;;;;;18922:18;;-1:-1:-1;;;;;;18955:49:0;;;;-1:-1:-1;;;18988:15:0;18955:49;;;;;;;;;;19043:11;;19103:24;;;;;19146:13;;18887:20;;19103:24;;19146:13;19142:241;;19213:13;;19198:11;:28;19194:174;;19251:20;;19320:28;;;;19294:54;;-1:-1:-1;;;19294:54:0;-1:-1:-1;;;;;;19294:54:0;;;-1:-1:-1;;;;;19251:20:0;;19294:54;;;;19194:174;18738:656;;;19430:7;19426:2;-1:-1:-1;;;;;19411:27:0;19420:4;-1:-1:-1;;;;;19411:27:0;;;;;;;;;;;18163:1336;;18059:1440;;;:::o;11923:831::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;12034:7:0;;24735:1;12083:23;12079:608;;12119:13;;12112:4;:20;12108:579;;;12153:31;12187:17;;;:11;:17;;;;;;;;;12153:51;;;;;;;;;-1:-1:-1;;;;;12153:51:0;;;;-1:-1:-1;;;12153:51:0;;;;;;;;;;;-1:-1:-1;;;12153:51:0;;;;;;;;;;;;;;12223:449;;12273:14;;-1:-1:-1;;;;;12273:28:0;;12269:101;;12337:9;11923:831;-1:-1:-1;;;11923:831:0:o;12269:101::-;-1:-1:-1;;;12432:6:0;12477:17;;;;:11;:17;;;;;;;;;12465:29;;;;;;;;;-1:-1:-1;;;;;12465:29:0;;;;;-1:-1:-1;;;12465:29:0;;;;;;;;;;;-1:-1:-1;;;12465:29:0;;;;;;;;;;;;;12525:28;12521:109;;12593:9;11923:831;-1:-1:-1;;;11923:831:0:o;12521:109::-;12392:261;;;12134:553;12108:579;12715:31;;-1:-1:-1;;;12715:31:0;;;;;;;;;;;15533:104;15602:27;15612:2;15616:8;15602:27;;;;;;;;;;;;:9;:27::i;3030:191::-;3123:6;;;-1:-1:-1;;;;;3140:17:0;;;-1:-1:-1;;;;;;3140:17:0;;;;;;;3173:40;;3123:6;;;3140:17;3123:6;;3173:40;;3104:16;;3173:40;3093:128;3030:191;:::o;21367:667::-;21551:72;;-1:-1:-1;;;21551:72:0;;21530:4;;-1:-1:-1;;;;;21551:36:0;;;;;:72;;2086:10;;21602:4;;21608:7;;21617:5;;21551:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;21551:72:0;;;;;;;;-1:-1:-1;;21551:72:0;;;;;;;;;;;;:::i;:::-;;;21547:480;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21785:6;:13;21802:1;21785:18;21781:235;;21831:40;;-1:-1:-1;;;21831:40:0;;;;;;;;;;;21781:235;21974:6;21968:13;21959:6;21955:2;21951:15;21944:38;21547:480;-1:-1:-1;;;;;;21670:55:0;-1:-1:-1;;;21670:55:0;;-1:-1:-1;21547:480:0;21367:667;;;;;;:::o;26071:102::-;26123:13;26156:9;26149:16;;;;;:::i;598:534::-;654:13;686:5;695:1;686:10;682:53;;-1:-1:-1;;713:10:0;;;;;;;;;;;;-1:-1:-1;;;713:10:0;;;;;598:534::o;682:53::-;760:5;745:12;801:78;808:9;;801:78;;834:8;;;;:::i;:::-;;-1:-1:-1;857:10:0;;-1:-1:-1;865:2:0;857:10;;:::i;:::-;;;801:78;;;889:19;921:6;911:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;911:17:0;;889:39;;939:154;946:10;;939:154;;973:11;983:1;973:11;;:::i;:::-;;-1:-1:-1;1042:10:0;1050:2;1042:5;:10;:::i;:::-;1029:24;;:2;:24;:::i;:::-;1016:39;;999:6;1006;999:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;999:56:0;;;;;;;;-1:-1:-1;1070:11:0;1079:2;1070:11;;:::i;:::-;;;939:154;;15645:1466;15768:20;15791:13;-1:-1:-1;;;;;15819:16:0;;15815:48;;15844:19;;-1:-1:-1;;;15844:19:0;;;;;;;;;;;15815:48;15878:8;15890:1;15878:13;15874:44;;15900:18;;-1:-1:-1;;;15900:18:0;;;;;;;;;;;15874:44;-1:-1:-1;;;;;16030:16:0;;;;;;:12;:16;;;;;;;;:44;;-1:-1:-1;;16089:49:0;;16030:44;;;;;;;;16089:49;;;;-1:-1:-1;;16030:44:0;;;;;;16089:49;;;;;;;;;;;;;;;;16153:25;;;:11;:25;;;;;;:35;;-1:-1:-1;;;;;;16203:66:0;;;-1:-1:-1;;;16253:15:0;16203:66;;;;;;;;;;;;;16153:25;;16350:23;;;;3366:19;:23;16390:589;;16430:313;16461:38;;16486:12;;-1:-1:-1;;;;;16461:38:0;;;16478:1;;16461:38;;16478:1;;16461:38;16527:69;16566:1;16570:2;16574:14;;;;;;16590:5;16527:30;:69::i;:::-;16522:174;;16632:40;;-1:-1:-1;;;16632:40:0;;;;;;;;;;;16522:174;16738:3;16723:12;:18;16430:313;;16782:12;16765:13;;:29;16761:43;;16796:8;;;16761:43;16390:589;;;16845:119;16876:40;;16901:14;;;;;-1:-1:-1;;;;;16876:40:0;;;16893:1;;16876:40;;16893:1;;16876:40;16959:3;16944:12;:18;16845:119;;16390:589;-1:-1:-1;16993:13:0;:28;;;17043:60;;17076:2;17080:12;17094:8;17043:60;:::i;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:131:1;-1:-1:-1;;;;;;88:32:1;;78:43;;68:71;;135:1;132;125:12;150:245;208:6;261:2;249:9;240:7;236:23;232:32;229:52;;;277:1;274;267:12;229:52;316:9;303:23;335:30;359:5;335:30;:::i;592:258::-;664:1;674:113;688:6;685:1;682:13;674:113;;;764:11;;;758:18;745:11;;;738:39;710:2;703:10;674:113;;;805:6;802:1;799:13;796:48;;;-1:-1:-1;;840:1:1;822:16;;815:27;592:258::o;855:::-;897:3;935:5;929:12;962:6;957:3;950:19;978:63;1034:6;1027:4;1022:3;1018:14;1011:4;1004:5;1000:16;978:63;:::i;:::-;1095:2;1074:15;-1:-1:-1;;1070:29:1;1061:39;;;;1102:4;1057:50;;855:258;-1:-1:-1;;855:258:1:o;1118:220::-;1267:2;1256:9;1249:21;1230:4;1287:45;1328:2;1317:9;1313:18;1305:6;1287:45;:::i;1343:180::-;1402:6;1455:2;1443:9;1434:7;1430:23;1426:32;1423:52;;;1471:1;1468;1461:12;1423:52;-1:-1:-1;1494:23:1;;1343:180;-1:-1:-1;1343:180:1:o;1736:173::-;1804:20;;-1:-1:-1;;;;;1853:31:1;;1843:42;;1833:70;;1899:1;1896;1889:12;1833:70;1736:173;;;:::o;1914:254::-;1982:6;1990;2043:2;2031:9;2022:7;2018:23;2014:32;2011:52;;;2059:1;2056;2049:12;2011:52;2082:29;2101:9;2082:29;:::i;:::-;2072:39;2158:2;2143:18;;;;2130:32;;-1:-1:-1;;;1914:254:1:o;2173:127::-;2234:10;2229:3;2225:20;2222:1;2215:31;2265:4;2262:1;2255:15;2289:4;2286:1;2279:15;2305:632;2370:5;2400:18;2441:2;2433:6;2430:14;2427:40;;;2447:18;;:::i;:::-;2522:2;2516:9;2490:2;2576:15;;-1:-1:-1;;2572:24:1;;;2598:2;2568:33;2564:42;2552:55;;;2622:18;;;2642:22;;;2619:46;2616:72;;;2668:18;;:::i;:::-;2708:10;2704:2;2697:22;2737:6;2728:15;;2767:6;2759;2752:22;2807:3;2798:6;2793:3;2789:16;2786:25;2783:45;;;2824:1;2821;2814:12;2783:45;2874:6;2869:3;2862:4;2854:6;2850:17;2837:44;2929:1;2922:4;2913:6;2905;2901:19;2897:30;2890:41;;;;2305:632;;;;;:::o;2942:451::-;3011:6;3064:2;3052:9;3043:7;3039:23;3035:32;3032:52;;;3080:1;3077;3070:12;3032:52;3120:9;3107:23;3153:18;3145:6;3142:30;3139:50;;;3185:1;3182;3175:12;3139:50;3208:22;;3261:4;3253:13;;3249:27;-1:-1:-1;3239:55:1;;3290:1;3287;3280:12;3239:55;3313:74;3379:7;3374:2;3361:16;3356:2;3352;3348:11;3313:74;:::i;3580:328::-;3657:6;3665;3673;3726:2;3714:9;3705:7;3701:23;3697:32;3694:52;;;3742:1;3739;3732:12;3694:52;3765:29;3784:9;3765:29;:::i;:::-;3755:39;;3813:38;3847:2;3836:9;3832:18;3813:38;:::i;:::-;3803:48;;3898:2;3887:9;3883:18;3870:32;3860:42;;3580:328;;;;;:::o;3913:186::-;3972:6;4025:2;4013:9;4004:7;4000:23;3996:32;3993:52;;;4041:1;4038;4031:12;3993:52;4064:29;4083:9;4064:29;:::i;4104:632::-;4275:2;4327:21;;;4397:13;;4300:18;;;4419:22;;;4246:4;;4275:2;4498:15;;;;4472:2;4457:18;;;4246:4;4541:169;4555:6;4552:1;4549:13;4541:169;;;4616:13;;4604:26;;4685:15;;;;4650:12;;;;4577:1;4570:9;4541:169;;;-1:-1:-1;4727:3:1;;4104:632;-1:-1:-1;;;;;;4104:632:1:o;4741:248::-;4809:6;4817;4870:2;4858:9;4849:7;4845:23;4841:32;4838:52;;;4886:1;4883;4876:12;4838:52;-1:-1:-1;;4909:23:1;;;4979:2;4964:18;;;4951:32;;-1:-1:-1;4741:248:1:o;4994:347::-;5059:6;5067;5120:2;5108:9;5099:7;5095:23;5091:32;5088:52;;;5136:1;5133;5126:12;5088:52;5159:29;5178:9;5159:29;:::i;:::-;5149:39;;5238:2;5227:9;5223:18;5210:32;5285:5;5278:13;5271:21;5264:5;5261:32;5251:60;;5307:1;5304;5297:12;5251:60;5330:5;5320:15;;;4994:347;;;;;:::o;5346:667::-;5441:6;5449;5457;5465;5518:3;5506:9;5497:7;5493:23;5489:33;5486:53;;;5535:1;5532;5525:12;5486:53;5558:29;5577:9;5558:29;:::i;:::-;5548:39;;5606:38;5640:2;5629:9;5625:18;5606:38;:::i;:::-;5596:48;;5691:2;5680:9;5676:18;5663:32;5653:42;;5746:2;5735:9;5731:18;5718:32;5773:18;5765:6;5762:30;5759:50;;;5805:1;5802;5795:12;5759:50;5828:22;;5881:4;5873:13;;5869:27;-1:-1:-1;5859:55:1;;5910:1;5907;5900:12;5859:55;5933:74;5999:7;5994:2;5981:16;5976:2;5972;5968:11;5933:74;:::i;:::-;5923:84;;;5346:667;;;;;;;:::o;6018:260::-;6086:6;6094;6147:2;6135:9;6126:7;6122:23;6118:32;6115:52;;;6163:1;6160;6153:12;6115:52;6186:29;6205:9;6186:29;:::i;:::-;6176:39;;6234:38;6268:2;6257:9;6253:18;6234:38;:::i;:::-;6224:48;;6018:260;;;;;:::o;6283:254::-;6351:6;6359;6412:2;6400:9;6391:7;6387:23;6383:32;6380:52;;;6428:1;6425;6418:12;6380:52;6464:9;6451:23;6441:33;;6493:38;6527:2;6516:9;6512:18;6493:38;:::i;6542:380::-;6621:1;6617:12;;;;6664;;;6685:61;;6739:4;6731:6;6727:17;6717:27;;6685:61;6792:2;6784:6;6781:14;6761:18;6758:38;6755:161;;6838:10;6833:3;6829:20;6826:1;6819:31;6873:4;6870:1;6863:15;6901:4;6898:1;6891:15;6755:161;;6542:380;;;:::o;6927:356::-;7129:2;7111:21;;;7148:18;;;7141:30;7207:34;7202:2;7187:18;;7180:62;7274:2;7259:18;;6927:356::o;7858:127::-;7919:10;7914:3;7910:20;7907:1;7900:31;7950:4;7947:1;7940:15;7974:4;7971:1;7964:15;7990:127;8051:10;8046:3;8042:20;8039:1;8032:31;8082:4;8079:1;8072:15;8106:4;8103:1;8096:15;8122:135;8161:3;8182:17;;;8179:43;;8202:18;;:::i;:::-;-1:-1:-1;8249:1:1;8238:13;;8122:135::o;8959:168::-;8999:7;9065:1;9061;9057:6;9053:14;9050:1;9047:21;9042:1;9035:9;9028:17;9024:45;9021:71;;;9072:18;;:::i;:::-;-1:-1:-1;9112:9:1;;8959:168::o;10732:1527::-;10956:3;10994:6;10988:13;11020:4;11033:51;11077:6;11072:3;11067:2;11059:6;11055:15;11033:51;:::i;:::-;11147:13;;11106:16;;;;11169:55;11147:13;11106:16;11191:15;;;11169:55;:::i;:::-;11313:13;;11246:20;;;11286:1;;11373;11395:18;;;;11448;;;;11475:93;;11553:4;11543:8;11539:19;11527:31;;11475:93;11616:2;11606:8;11603:16;11583:18;11580:40;11577:167;;-1:-1:-1;;;11643:33:1;;11699:4;11696:1;11689:15;11729:4;11650:3;11717:17;11577:167;11760:18;11787:110;;;;11911:1;11906:328;;;;11753:481;;11787:110;-1:-1:-1;;11822:24:1;;11808:39;;11867:20;;;;-1:-1:-1;11787:110:1;;11906:328;10679:1;10672:14;;;10716:4;10703:18;;12001:1;12015:169;12029:8;12026:1;12023:15;12015:169;;;12111:14;;12096:13;;;12089:37;12154:16;;;;12046:10;;12015:169;;;12019:3;;12215:8;12208:5;12204:20;12197:27;;11753:481;-1:-1:-1;12250:3:1;;10732:1527;-1:-1:-1;;;;;;;;;;;10732:1527:1:o;12264:128::-;12304:3;12335:1;12331:6;12328:1;12325:13;12322:39;;;12341:18;;:::i;:::-;-1:-1:-1;12377:9:1;;12264:128::o;13151:489::-;-1:-1:-1;;;;;13420:15:1;;;13402:34;;13472:15;;13467:2;13452:18;;13445:43;13519:2;13504:18;;13497:34;;;13567:3;13562:2;13547:18;;13540:31;;;13345:4;;13588:46;;13614:19;;13606:6;13588:46;:::i;:::-;13580:54;13151:489;-1:-1:-1;;;;;;13151:489:1:o;13645:249::-;13714:6;13767:2;13755:9;13746:7;13742:23;13738:32;13735:52;;;13783:1;13780;13773:12;13735:52;13815:9;13809:16;13834:30;13858:5;13834:30;:::i;13899:127::-;13960:10;13955:3;13951:20;13948:1;13941:31;13991:4;13988:1;13981:15;14015:4;14012:1;14005:15;14031:120;14071:1;14097;14087:35;;14102:18;;:::i;:::-;-1:-1:-1;14136:9:1;;14031:120::o;14156:125::-;14196:4;14224:1;14221;14218:8;14215:34;;;14229:18;;:::i;:::-;-1:-1:-1;14266:9:1;;14156:125::o;14286:112::-;14318:1;14344;14334:35;;14349:18;;:::i;:::-;-1:-1:-1;14383:9:1;;14286:112::o

Swarm Source

ipfs://43ea5604bd5e4ecb71bc6d4367ff4c1e11615d4f056e3d535bb2b09250971fab
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.