Contract 0xba14fd9afd7b24a502918eaa3a1a0641a784b79f

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x7f3aa2a0607c2289ecdc0f3e10cfeb2716e4ed37a3a20eeb9aa856fbc29f379dMint336161142022-09-27 3:54:055 days 23 hrs ago0x9641b3ef0f107bfad3c8ce097853d64917e9a375 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00503184000233.000000014
0xce586201cb4f007c16e7a94edb5124ac4ee55d944c7d19442501caa9f72e3463Mint334562112022-09-23 6:44:459 days 20 hrs ago0xcf49855e90859a5bbfd1eced8154dc0f0ea96eb0 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.19055850009233.000000016
0x6e7a62ec5f47c7305263e683e1f5ad6974048416ba6ad3cf1d469733804abaa8Mint334561982022-09-23 6:44:199 days 20 hrs ago0xcf49855e90859a5bbfd1eced8154dc0f0ea96eb0 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.1905585000833.000000014
0xd91e63e2cf9243a47070089d1efec5ac543c96f01a7264aab57a6b7712b025a4Mint334561102022-09-23 6:41:159 days 20 hrs ago0xcf49855e90859a5bbfd1eced8154dc0f0ea96eb0 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.19055850007533.000000013
0x0ee6e5ecaedeef8d9fe9886b8f908b95dff861f41b886d6a175a6183e4bc7f5cMint334561012022-09-23 6:40:579 days 20 hrs ago0xcf49855e90859a5bbfd1eced8154dc0f0ea96eb0 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.19055850007533.000000013
0xa392ceb8733bd053ff3c763c97a8f8b8d9b5b2d299fcbdcb9b81ae92e92f0362Mint334560862022-09-23 6:40:279 days 20 hrs ago0xcf49855e90859a5bbfd1eced8154dc0f0ea96eb0 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.19055850007533.000000013
0x8f1cbc2edebeb6028e62f7192fc70bf2f568a0e02c2f89ad27f7d6bebabc73e2Mint334560722022-09-23 6:39:599 days 20 hrs ago0xcf49855e90859a5bbfd1eced8154dc0f0ea96eb0 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.19055850006333.000000011
0xddf2d4c01664c45f6d8890b25cef754a860b5b9f0d03dc8194a695b35a25cc54Mint334491362022-09-23 2:37:0910 days 17 mins ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.03910813501833.000000016
0xc87d2e49cd8ff274056bbb5f9be8d466b3663cfb82c7086ee4b0f056ca24cebeTransfer From334479462022-09-23 1:56:1710 days 57 mins ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00278767500133.000000017
0xfa8f3d5a6019768d1d24f4360b4e71bbaf7ea3576a51e46aa01b2a1cfd7615bfTransfer From334202952022-09-22 9:58:3610 days 16 hrs ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00319357500133.000000018
0x44aa1061b2cda4bb1138c67d152ec616e641b3e1012cb7a6bfbcfec16806c15dTransfer From334187692022-09-22 9:04:0010 days 17 hrs ago0xcf49855e90859a5bbfd1eced8154dc0f0ea96eb0 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00319317900233.000000025
0xb39465869e41d739875283d600715c2a2e217f1d4f930eba959bec0244374507Transfer From334187672022-09-22 9:03:5610 days 17 hrs ago0xcf49855e90859a5bbfd1eced8154dc0f0ea96eb0 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00319317900233.000000025
0xa733369af714d5e84873c446a89f242845f1d8f0f9117ad76deff185062270dcMint333806032022-09-21 10:51:5811 days 16 hrs ago0x9641b3ef0f107bfad3c8ce097853d64917e9a375 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00503184000333.00000002
0xc68712d6f776a748848a4b5ff9c0476e05697a273a8f96bbdb38bc914626f1e1Transfer From333805512022-09-21 10:50:1411 days 16 hrs ago0x9641b3ef0f107bfad3c8ce097853d64917e9a375 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00115991733.000000017
0x740fef4e4f28e5dac30cd0da22c1c9730ef6de569b8256fb19a4391d13993754Mint333785502022-09-21 9:32:5111 days 17 hrs ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.11483330106233.000000018
0x03a0cd9361b0f4819f596cdf6878d74f8f28ba43392d98ca6909817a2f4ac7dbMint333784442022-09-21 9:29:1511 days 17 hrs ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00503184000233.000000017
0x090fbfa09f97283b17c8f81a77cbfd6df409a54a5a19b5740932702d432e6d53Mint333784412022-09-21 9:29:0911 days 17 hrs ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00503184000233.000000017
0x502eadac6673d4b92cc4de886d1dd3cd02ffe08eec44a254cf6c83cc7c3245caMint333784382022-09-21 9:29:0311 days 17 hrs ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.07697071804133.000000018
0x0184713d86c76b718fdf6202ce175808096fc6a081640152b9b233680657c55bMint333784352022-09-21 9:28:5711 days 17 hrs ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00503184000233.000000017
0xfd940c0f34c3e038ef8f279c8b453e06fb1eb40c3acbbb8de6912b37dd4b2194Mint333784322022-09-21 9:28:5111 days 17 hrs ago0x499d458dd4c4958a90322fd0e924f4d5887cb575 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00503184000233.000000017
0x5630eaa0833e78b8881df7825b0e789202c1aa3192ac97d5270b757c5f4ee648Mint333399972022-09-20 10:28:4112 days 16 hrs ago0xde854a491bacb82790a861d5bf7df1436cea92a2 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.02017686000933.000000015
0xb43e407e34b293eff207cf81c9b83ea379d4b6a43a0e798bfdd109cf3f626924Mint333385602022-09-20 9:39:1612 days 17 hrs ago0x6764a3047ff69c4760fb7eaed8d640371bf37919 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00503184000233.000000014
0x855b8cd094959e8937723b96c22b5e2d2001f6688f49cd5b368dc292bcd203b6Transfer From333374872022-09-20 9:02:1812 days 17 hrs ago0xde854a491bacb82790a861d5bf7df1436cea92a2 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00278767500133.000000015
0xfee67002fa32aa7c015aa6409f7e7e656f8e25f7d3dfc22bb5bb1d66191d06e9Transfer From333374842022-09-20 9:02:1212 days 17 hrs ago0xde854a491bacb82790a861d5bf7df1436cea92a2 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00278767500133.000000016
0x2fb81410a96199e4e879b2f3c8b569895aa59e92f9a20366b205cf4c42f75315Transfer From333374812022-09-20 9:02:0612 days 17 hrs ago0xde854a491bacb82790a861d5bf7df1436cea92a2 IN  0xba14fd9afd7b24a502918eaa3a1a0641a784b79f0 MATIC0.00244797300133.000000017
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
XKNFT

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2022-07-07
*/

// SPDX-License-Identifier: MIT

pragma solidity >=0.8.0;

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


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
    ) 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 IERC721Enumerable is IERC721 {

    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);

    function tokenByIndex(uint256 index) external view returns (uint256);
}


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


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

    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI's implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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


library Address {

    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 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 {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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


interface IERC721Metadata is IERC721 {
    /**
     * @dev Returns the token collection name.
     */
    function name() external view returns (string memory);

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

    /**
     * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.
     */
    function tokenURI(uint256 tokenId) external view returns (string memory);
}


interface IERC721Receiver {

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


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

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


contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    // Token name
    string private _name;

    // Token symbol
    string private _symbol;

    // Mapping from token ID to owner address
    mapping(uint256 => address) private _owners;

    // Mapping owner address to token count
    mapping(address => uint256) private _balances;

    // Mapping from token ID to approved address
    mapping(uint256 => address) private _tokenApprovals;

    // Mapping from owner to operator approvals
    mapping(address => mapping(address => bool)) private _operatorApprovals;

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

    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 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 tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");

        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 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 {
        //solhint-disable-next-line max-line-length
        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 _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;
        _owners[tokenId] = to;

        emit Transfer(address(0), to, tokenId);
    }

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

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

        // Clear approvals
        _approve(address(0), tokenId);

        _balances[owner] -= 1;
        delete _owners[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);

        // Clear approvals from the previous owner
        _approve(address(0), tokenId);

        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;

        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.onERC721Received.selector;
            } catch (bytes memory reason) {
                if (reason.length == 0) {
                    revert("ERC721: transfer to non ERC721Receiver implementer");
                } else {
                    assembly {
                        revert(add(32, reason), mload(reason))
                    }
                }
            }
        } else {
            return true;
        }
    }

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


abstract contract ERC721Enumerable is ERC721, IERC721Enumerable {
    // Mapping from owner to list of owned token IDs
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;

    // Mapping from token ID to index of the owner tokens list
    mapping(uint256 => uint256) private _ownedTokensIndex;

    // Array with all token ids, used for enumeration
    uint256[] private _allTokens;

    // Mapping from token id to position in the allTokens array
    mapping(uint256 => uint256) private _allTokensIndex;

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

    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721.balanceOf(owner), "ERC721Enumerable: owner index out of bounds");
        return _ownedTokens[owner][index];
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _allTokens.length;
    }

    function tokenByIndex(uint256 index) public view virtual override returns (uint256) {
        require(index < ERC721Enumerable.totalSupply(), "ERC721Enumerable: global index out of bounds");
        return _allTokens[index];
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 tokenId
    ) internal virtual override {
        super._beforeTokenTransfer(from, to, tokenId);

        if (from == address(0)) {
            _addTokenToAllTokensEnumeration(tokenId);
        } else if (from != to) {
            _removeTokenFromOwnerEnumeration(from, tokenId);
        }
        if (to == address(0)) {
            _removeTokenFromAllTokensEnumeration(tokenId);
        } else if (to != from) {
            _addTokenToOwnerEnumeration(to, tokenId);
        }
    }

    function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {
        uint256 length = ERC721.balanceOf(to);
        _ownedTokens[to][length] = tokenId;
        _ownedTokensIndex[tokenId] = length;
    }

    function _addTokenToAllTokensEnumeration(uint256 tokenId) private {
        _allTokensIndex[tokenId] = _allTokens.length;
        _allTokens.push(tokenId);
    }

    function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {
        // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];

            _ownedTokens[from][tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
            _ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index
        }

        // This also deletes the contents at the last position of the array
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and
        // then delete the last slot (swap and pop).

        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];

        // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so
        // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding
        // an 'if' statement (like in _removeTokenFromOwnerEnumeration)
        uint256 lastTokenId = _allTokens[lastTokenIndex];

        _allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token
        _allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index

        // This also deletes the contents at the last position of the array
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}


abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_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 {
        _setOwner(address(0));
    }

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

pragma solidity >=0.7.0 <0.9.0;

contract XKNFT is ERC721Enumerable, Ownable {
  using Strings for uint256;

  event Remark(address indexed from, address indexed to, string indexed remark, uint256 tokenId);

  string baseURI;
  string public baseExtension = ".json";
  uint256 public maxMintAmount = 100;
  bool public paused = false;
  mapping(address => bool) private minters;

   modifier onlyMinter() {
        require(minters[msg.sender], "Caller is not the minter");
        _;
    }

  constructor(
    string memory _name,
    string memory _symbol,
    string memory _initBaseURI
  ) ERC721(_name, _symbol) {
    setBaseURI(_initBaseURI);
  }

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

  // public
  function mint(uint256 _mintAmount) public onlyMinter {
    uint256 supply = totalSupply();
    require(!paused);
    require(_mintAmount > 0);
    require(_mintAmount <= maxMintAmount);

    for (uint256 i = 1; i <= _mintAmount; i++) {
      _safeMint(msg.sender, supply + i);
    }
  }

  function walletOfOwner(address _owner)
    public
    view
    returns (uint256[] memory)
  {
    uint256 ownerTokenCount = balanceOf(_owner);
    uint256[] memory tokenIds = new uint256[](ownerTokenCount);
    for (uint256 i; i < ownerTokenCount; i++) {
      tokenIds[i] = tokenOfOwnerByIndex(_owner, i);
    }
    return tokenIds;
  }

  function walletOfOwnerPage(address _owner, uint256 pageNo, uint256 pageSize) external view returns(uint ,uint256[] memory) {
        uint256 len = balanceOf(_owner);
        uint256 start = pageNo * pageSize;
        if(len == 0  || start >= len){
            return (len,new uint256[](0));
        }
        uint256 end = start + pageSize;
        if(end > len){
            end = len;
        }
        uint256 arrLen = end - start;
        uint256[] memory list = new uint256[](arrLen);
        uint256 index;
        for(;start < end ; start ++){
            list[index++] = tokenOfOwnerByIndex(_owner, start);
        }
        return (len,list);
    }

    function walletOfOwnerLast(address _owner) external view returns(uint256) {
        uint256 len = balanceOf(_owner);
        return tokenOfOwnerByIndex(_owner, len-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(), baseExtension))
        : "";
  }

  function setmaxMintAmount(uint256 _newmaxMintAmount) public onlyOwner() {
    maxMintAmount = _newmaxMintAmount;
  }

  function setBaseURI(string memory _newBaseURI) public onlyOwner {
    baseURI = _newBaseURI;
  }

  function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
    baseExtension = _newBaseExtension;
  }

  function pause(bool _state) public onlyOwner {
    paused = _state;
  }
 
  function transferRemark(address from, address to, uint256 tokenId, string memory remark) public {
        //solhint-disable-next-line max-line-length
        require(_isApprovedOrOwner(_msgSender(), tokenId), "ERC721: transfer caller is not owner nor approved");

        _transfer(from, to, tokenId);
        emit Remark(from, to, remark, tokenId);
    }

    function setMinter(address _addr) public onlyOwner {
        minters[_addr] = true;
    }
    
     function getMinter(address _addr) public view onlyOwner returns(bool) {
        return minters[_addr];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"}],"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":"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":"string","name":"remark","type":"string"},{"indexed":false,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Remark","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":[{"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":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"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":"_addr","type":"address"}],"name":"getMinter","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":"maxMintAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","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":"_state","type":"bool"}],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addr","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintAmount","type":"uint256"}],"name":"setmaxMintAmount","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":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"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":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"string","name":"remark","type":"string"}],"name":"transferRemark","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwner","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"walletOfOwnerLast","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"pageNo","type":"uint256"},{"internalType":"uint256","name":"pageSize","type":"uint256"}],"name":"walletOfOwnerPage","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"}]

60c06040526005608081905264173539b7b760d91b60a09081526200002891600c919062000196565b506064600d55600e805460ff191690553480156200004557600080fd5b50604051620027a3380380620027a38339810160408190526200006891620002f3565b8251839083906200008190600090602085019062000196565b5080516200009790600190602084019062000196565b505050620000b4620000ae620000c860201b60201c565b620000cc565b620000bf816200011e565b505050620003d7565b3390565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600a546001600160a01b031633146200017d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640160405180910390fd5b80516200019290600b90602084019062000196565b5050565b828054620001a49062000384565b90600052602060002090601f016020900481019282620001c8576000855562000213565b82601f10620001e357805160ff191683800117855562000213565b8280016001018555821562000213579182015b8281111562000213578251825591602001919060010190620001f6565b506200022192915062000225565b5090565b5b8082111562000221576000815560010162000226565b600082601f8301126200024e57600080fd5b81516001600160401b03808211156200026b576200026b620003c1565b604051601f8301601f19908116603f01168101908282118183101715620002965762000296620003c1565b81604052838152602092508683858801011115620002b357600080fd5b600091505b83821015620002d75785820183015181830184015290820190620002b8565b83821115620002e95760008385830101525b9695505050505050565b6000806000606084860312156200030957600080fd5b83516001600160401b03808211156200032157600080fd5b6200032f878388016200023c565b945060208601519150808211156200034657600080fd5b62000354878388016200023c565b935060408601519150808211156200036b57600080fd5b506200037a868287016200023c565b9150509250925092565b600181811c908216806200039957607f821691505b60208210811415620003bb57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6123bc80620003e76000396000f3fe608060405234801561001057600080fd5b50600436106101fb5760003560e01c80636352211e1161011a578063b88d4fde116100ad578063d09b83291161007c578063d09b83291461042c578063da3ef23f1461043f578063e985e9c514610452578063f2fde38b1461048e578063fca3b5aa146104a157600080fd5b8063b88d4fde146103eb578063bc73b641146103fe578063c668286214610411578063c87b56dd1461041957600080fd5b80638da5cb5b116100e95780638da5cb5b146103ac57806395d89b41146103bd578063a0712d68146103c5578063a22cb465146103d857600080fd5b80636352211e1461036b57806370a082311461037e578063715018a6146103915780637f00c7a61461039957600080fd5b806323b872dd11610192578063438b630011610161578063438b6300146103185780634f6ccce71461033857806355f804b31461034b5780635c975abb1461035e57600080fd5b806323b872dd146102cc5780632765a0a0146102df5780632f745c59146102f257806342842e0e1461030557600080fd5b8063095ea7b3116101ce578063095ea7b31461027d57806309d2e0dc1461029057806318160ddd146102b1578063239c70ae146102c357600080fd5b806301ffc9a71461020057806302329a291461022857806306fdde031461023d578063081812fc14610252575b600080fd5b61021361020e366004611ee7565b6104b4565b60405190151581526020015b60405180910390f35b61023b610236366004611ecc565b6104df565b005b610245610525565b60405161021f9190612106565b610265610260366004611f56565b6105b7565b6040516001600160a01b03909116815260200161021f565b61023b61028b366004611e6f565b61064c565b6102a361029e366004611e99565b610762565b60405161021f9291906121f1565b6008545b60405190815260200161021f565b6102b5600d5481565b61023b6102da366004611d31565b61087d565b6102b56102ed366004611ce3565b6108ae565b6102b5610300366004611e6f565b6108d2565b61023b610313366004611d31565b610968565b61032b610326366004611ce3565b610983565b60405161021f91906120f3565b6102b5610346366004611f56565b610a25565b61023b610359366004611f21565b610ab8565b600e546102139060ff1681565b610265610379366004611f56565b610af9565b6102b561038c366004611ce3565b610b70565b61023b610bf7565b61023b6103a7366004611f56565b610c2d565b600a546001600160a01b0316610265565b610245610c5c565b61023b6103d3366004611f56565b610c6b565b61023b6103e6366004611e45565b610d33565b61023b6103f9366004611d6d565b610df8565b61021361040c366004611ce3565b610e31565b610245610e81565b610245610427366004611f56565b610f0f565b61023b61043a366004611de9565b610fec565b61023b61044d366004611f21565b611085565b610213610460366004611cfe565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b61023b61049c366004611ce3565b6110c2565b61023b6104af366004611ce3565b61115d565b60006001600160e01b0319821663780e9d6360e01b14806104d957506104d9826111ab565b92915050565b600a546001600160a01b031633146105125760405162461bcd60e51b81526004016105099061216b565b60405180910390fd5b600e805460ff1916911515919091179055565b60606000805461053490612298565b80601f016020809104026020016040519081016040528092919081815260200182805461056090612298565b80156105ad5780601f10610582576101008083540402835291602001916105ad565b820191906000526020600020905b81548152906001019060200180831161059057829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166106305760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610509565b506000908152600460205260409020546001600160a01b031690565b600061065782610af9565b9050806001600160a01b0316836001600160a01b031614156106c55760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610509565b336001600160a01b03821614806106e157506106e18133610460565b6107535760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610509565b61075d83836111fb565b505050565b60006060600061077186610b70565b9050600061077f8587612236565b905081158061078e5750818110155b156107ad57506040805160008152602081019091529092509050610875565b60006107b9868361220a565b9050828111156107c65750815b60006107d28383612255565b905060008167ffffffffffffffff8111156107ef576107ef61235a565b604051908082528060200260200182016040528015610818578160200160208202803683370190505b50905060005b8385101561086a576108308b866108d2565b828261083b816122d3565b93508151811061084d5761084d612344565b602090810291909101015284610862816122d3565b95505061081e565b509395509293505050505b935093915050565b6108873382611269565b6108a35760405162461bcd60e51b8152600401610509906121a0565b61075d838383611360565b6000806108ba83610b70565b90506108cb83610300600184612255565b9392505050565b60006108dd83610b70565b821061093f5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610509565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b61075d83838360405180602001604052806000815250610df8565b6060600061099083610b70565b905060008167ffffffffffffffff8111156109ad576109ad61235a565b6040519080825280602002602001820160405280156109d6578160200160208202803683370190505b50905060005b82811015610a1d576109ee85826108d2565b828281518110610a0057610a00612344565b602090810291909101015280610a15816122d3565b9150506109dc565b509392505050565b6000610a3060085490565b8210610a935760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610509565b60088281548110610aa657610aa6612344565b90600052602060002001549050919050565b600a546001600160a01b03163314610ae25760405162461bcd60e51b81526004016105099061216b565b8051610af590600b906020840190611b8d565b5050565b6000818152600260205260408120546001600160a01b0316806104d95760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610509565b60006001600160a01b038216610bdb5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610509565b506001600160a01b031660009081526003602052604090205490565b600a546001600160a01b03163314610c215760405162461bcd60e51b81526004016105099061216b565b610c2b600061150b565b565b600a546001600160a01b03163314610c575760405162461bcd60e51b81526004016105099061216b565b600d55565b60606001805461053490612298565b336000908152600f602052604090205460ff16610cca5760405162461bcd60e51b815260206004820152601860248201527f43616c6c6572206973206e6f7420746865206d696e74657200000000000000006044820152606401610509565b6000610cd560085490565b600e5490915060ff1615610ce857600080fd5b60008211610cf557600080fd5b600d54821115610d0457600080fd5b60015b82811161075d57610d2133610d1c838561220a565b61155d565b80610d2b816122d3565b915050610d07565b6001600160a01b038216331415610d8c5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610509565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610e03335b83611269565b610e1f5760405162461bcd60e51b8152600401610509906121a0565b610e2b84848484611577565b50505050565b600a546000906001600160a01b03163314610e5e5760405162461bcd60e51b81526004016105099061216b565b506001600160a01b0381166000908152600f602052604090205460ff165b919050565b600c8054610e8e90612298565b80601f0160208091040260200160405190810160405280929190818152602001828054610eba90612298565b8015610f075780601f10610edc57610100808354040283529160200191610f07565b820191906000526020600020905b815481529060010190602001808311610eea57829003601f168201915b505050505081565b6000818152600260205260409020546060906001600160a01b0316610f8e5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610509565b6000610f986115aa565b90506000815111610fb857604051806020016040528060008152506108cb565b80610fc2846115b9565b600c604051602001610fd693929190611ff2565b6040516020818303038152906040529392505050565b610ff533610dfd565b6110115760405162461bcd60e51b8152600401610509906121a0565b61101c848484611360565b8060405161102a9190611fd6565b6040518091039020836001600160a01b0316856001600160a01b03167ff7d39fd958d49248a1b8b4aa2db85f7144134f8857d8ecfe516bd3375cf792e58560405161107791815260200190565b60405180910390a450505050565b600a546001600160a01b031633146110af5760405162461bcd60e51b81526004016105099061216b565b8051610af590600c906020840190611b8d565b600a546001600160a01b031633146110ec5760405162461bcd60e51b81526004016105099061216b565b6001600160a01b0381166111515760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610509565b61115a8161150b565b50565b600a546001600160a01b031633146111875760405162461bcd60e51b81526004016105099061216b565b6001600160a01b03166000908152600f60205260409020805460ff19166001179055565b60006001600160e01b031982166380ac58cd60e01b14806111dc57506001600160e01b03198216635b5e139f60e01b145b806104d957506301ffc9a760e01b6001600160e01b03198316146104d9565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061123082610af9565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b03166112e25760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610509565b60006112ed83610af9565b9050806001600160a01b0316846001600160a01b031614806113285750836001600160a01b031661131d846105b7565b6001600160a01b0316145b8061135857506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661137382610af9565b6001600160a01b0316146113db5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610509565b6001600160a01b03821661143d5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610509565b6114488383836116b7565b6114536000826111fb565b6001600160a01b038316600090815260036020526040812080546001929061147c908490612255565b90915550506001600160a01b03821660009081526003602052604081208054600192906114aa90849061220a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b600a80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610af582826040518060200160405280600081525061176f565b611582848484611360565b61158e848484846117a2565b610e2b5760405162461bcd60e51b815260040161050990612119565b6060600b805461053490612298565b6060816115dd5750506040805180820190915260018152600360fc1b602082015290565b8160005b811561160757806115f1816122d3565b91506116009050600a83612222565b91506115e1565b60008167ffffffffffffffff8111156116225761162261235a565b6040519080825280601f01601f19166020018201604052801561164c576020820181803683370190505b5090505b841561135857611661600183612255565b915061166e600a866122ee565b61167990603061220a565b60f81b81838151811061168e5761168e612344565b60200101906001600160f81b031916908160001a9053506116b0600a86612222565b9450611650565b6001600160a01b0383166117125761170d81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b611735565b816001600160a01b0316836001600160a01b0316146117355761173583826118af565b6001600160a01b03821661174c5761075d8161194c565b826001600160a01b0316826001600160a01b03161461075d5761075d82826119fb565b6117798383611a3f565b61178660008484846117a2565b61075d5760405162461bcd60e51b815260040161050990612119565b60006001600160a01b0384163b156118a457604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906117e69033908990889088906004016120b6565b602060405180830381600087803b15801561180057600080fd5b505af1925050508015611830575060408051601f3d908101601f1916820190925261182d91810190611f04565b60015b61188a573d80801561185e576040519150601f19603f3d011682016040523d82523d6000602084013e611863565b606091505b5080516118825760405162461bcd60e51b815260040161050990612119565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611358565b506001949350505050565b600060016118bc84610b70565b6118c69190612255565b600083815260076020526040902054909150808214611919576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061195e90600190612255565b6000838152600960205260408120546008805493945090928490811061198657611986612344565b9060005260206000200154905080600883815481106119a7576119a7612344565b60009182526020808320909101929092558281526009909152604080822084905585825281205560088054806119df576119df61232e565b6001900381819060005260206000200160009055905550505050565b6000611a0683610b70565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b038216611a955760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610509565b6000818152600260205260409020546001600160a01b031615611afa5760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610509565b611b06600083836116b7565b6001600160a01b0382166000908152600360205260408120805460019290611b2f90849061220a565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b828054611b9990612298565b90600052602060002090601f016020900481019282611bbb5760008555611c01565b82601f10611bd457805160ff1916838001178555611c01565b82800160010185558215611c01579182015b82811115611c01578251825591602001919060010190611be6565b50611c0d929150611c11565b5090565b5b80821115611c0d5760008155600101611c12565b600067ffffffffffffffff80841115611c4157611c4161235a565b604051601f8501601f19908116603f01168101908282118183101715611c6957611c6961235a565b81604052809350858152868686011115611c8257600080fd5b858560208301376000602087830101525050509392505050565b80356001600160a01b0381168114610e7c57600080fd5b80358015158114610e7c57600080fd5b600082601f830112611cd457600080fd5b6108cb83833560208501611c26565b600060208284031215611cf557600080fd5b6108cb82611c9c565b60008060408385031215611d1157600080fd5b611d1a83611c9c565b9150611d2860208401611c9c565b90509250929050565b600080600060608486031215611d4657600080fd5b611d4f84611c9c565b9250611d5d60208501611c9c565b9150604084013590509250925092565b60008060008060808587031215611d8357600080fd5b611d8c85611c9c565b9350611d9a60208601611c9c565b925060408501359150606085013567ffffffffffffffff811115611dbd57600080fd5b8501601f81018713611dce57600080fd5b611ddd87823560208401611c26565b91505092959194509250565b60008060008060808587031215611dff57600080fd5b611e0885611c9c565b9350611e1660208601611c9c565b925060408501359150606085013567ffffffffffffffff811115611e3957600080fd5b611ddd87828801611cc3565b60008060408385031215611e5857600080fd5b611e6183611c9c565b9150611d2860208401611cb3565b60008060408385031215611e8257600080fd5b611e8b83611c9c565b946020939093013593505050565b600080600060608486031215611eae57600080fd5b611eb784611c9c565b95602085013595506040909401359392505050565b600060208284031215611ede57600080fd5b6108cb82611cb3565b600060208284031215611ef957600080fd5b81356108cb81612370565b600060208284031215611f1657600080fd5b81516108cb81612370565b600060208284031215611f3357600080fd5b813567ffffffffffffffff811115611f4a57600080fd5b61135884828501611cc3565b600060208284031215611f6857600080fd5b5035919050565b600081518084526020808501945080840160005b83811015611f9f57815187529582019590820190600101611f83565b509495945050505050565b60008151808452611fc281602086016020860161226c565b601f01601f19169290920160200192915050565b60008251611fe881846020870161226c565b9190910192915050565b6000845160206120058285838a0161226c565b8551918401916120188184848a0161226c565b8554920191600090600181811c908083168061203557607f831692505b85831081141561205357634e487b7160e01b85526022600452602485fd5b8080156120675760018114612078576120a5565b60ff198516885283880195506120a5565b60008b81526020902060005b8581101561209d5781548a820152908401908801612084565b505083880195505b50939b9a5050505050505050505050565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906120e990830184611faa565b9695505050505050565b6020815260006108cb6020830184611f6f565b6020815260006108cb6020830184611faa565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b8281526040602082015260006113586040830184611f6f565b6000821982111561221d5761221d612302565b500190565b60008261223157612231612318565b500490565b600081600019048311821515161561225057612250612302565b500290565b60008282101561226757612267612302565b500390565b60005b8381101561228757818101518382015260200161226f565b83811115610e2b5750506000910152565b600181811c908216806122ac57607f821691505b602082108114156122cd57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156122e7576122e7612302565b5060010190565b6000826122fd576122fd612318565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461115a57600080fdfea26469706673582212200c3e1f67bea41b73487fbd5c7337eb18e5e78c6281059f1cfbcff787870bcd7364736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000005584b4e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005584b4e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f70726f2e78696e676b656e66742e636e2f6d657465646174612f000000000000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000005584b4e46540000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005584b4e4654000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002268747470733a2f2f70726f2e78696e676b656e66742e636e2f6d657465646174612f000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): XKNFT
Arg [1] : _symbol (string): XKNFT
Arg [2] : _initBaseURI (string): https://pro.xingkenft.cn/metedata/

-----Encoded View---------------
10 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [4] : 584b4e4654000000000000000000000000000000000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [6] : 584b4e4654000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000022
Arg [8] : 68747470733a2f2f70726f2e78696e676b656e66742e636e2f6d657465646174
Arg [9] : 612f000000000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

21760:3752:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16849:224;;;;;;:::i;:::-;;:::i;:::-;;;8916:14:1;;8909:22;8891:41;;8879:2;8864:18;16849:224:0;;;;;;;;24846:73;;;;;;:::i;:::-;;:::i;:::-;;9912:100;;;:::i;:::-;;;;;;;:::i;10995:221::-;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;7948:32:1;;;7930:51;;7918:2;7903:18;10995:221:0;7784:203:1;10576:411:0;;;;;;:::i;:::-;;:::i;23197:674::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;17345:113::-;17433:10;:17;17345:113;;;16873:25:1;;;16861:2;16846:18;17345:113:0;16727:177:1;22003:34:0;;;;;;11699:339;;;;;;:::i;:::-;;:::i;23879:176::-;;;;;;:::i;:::-;;:::i;17081:256::-;;;;;;:::i;:::-;;:::i;12046:185::-;;;;;;:::i;:::-;;:::i;22843:348::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;17466:233::-;;;;;;:::i;:::-;;:::i;24614:98::-;;;;;;:::i;:::-;;:::i;22042:26::-;;;;;;;;;9665:239;;;;;;:::i;:::-;;:::i;9449:208::-;;;;;;:::i;:::-;;:::i;21243:94::-;;;:::i;24490:118::-;;;;;;:::i;:::-;;:::i;21020:87::-;21093:6;;-1:-1:-1;;;;;21093:6:0;21020:87;;10020:104;;;:::i;22542:295::-;;;;;;:::i;:::-;;:::i;11224:::-;;;;;;:::i;:::-;;:::i;12239:328::-;;;;;;:::i;:::-;;:::i;25399:110::-;;;;;;:::i;:::-;;:::i;21961:37::-;;;:::i;24061:423::-;;;;;;:::i;:::-;;:::i;24926:361::-;;;;;;:::i;:::-;;:::i;24718:122::-;;;;;;:::i;:::-;;:::i;11527:164::-;;;;;;:::i;:::-;-1:-1:-1;;;;;11648:25:0;;;11624:4;11648:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;11527:164;21345:192;;;;;;:::i;:::-;;:::i;25295:91::-;;;;;;:::i;:::-;;:::i;16849:224::-;16951:4;-1:-1:-1;;;;;;16975:50:0;;-1:-1:-1;;;16975:50:0;;:90;;;17029:36;17053:11;17029:23;:36::i;:::-;16968:97;16849:224;-1:-1:-1;;16849:224:0:o;24846:73::-;21093:6;;-1:-1:-1;;;;;21093:6:0;8205:10;21155:23;21147:68;;;;-1:-1:-1;;;21147:68:0;;;;;;;:::i;:::-;;;;;;;;;24898:6:::1;:15:::0;;-1:-1:-1;;24898:15:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24846:73::o;9912:100::-;9966:13;9999:5;9992:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9912:100;:::o;10995:221::-;11071:7;12987:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12987:16:0;11091:73;;;;-1:-1:-1;;;11091:73:0;;14096:2:1;11091:73:0;;;14078:21:1;14135:2;14115:18;;;14108:30;14174:34;14154:18;;;14147:62;-1:-1:-1;;;14225:18:1;;;14218:42;14277:19;;11091:73:0;13894:408:1;11091:73:0;-1:-1:-1;11184:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;11184:24:0;;10995:221::o;10576:411::-;10657:13;10673:23;10688:7;10673:14;:23::i;:::-;10657:39;;10721:5;-1:-1:-1;;;;;10715:11:0;:2;-1:-1:-1;;;;;10715:11:0;;;10707:57;;;;-1:-1:-1;;;10707:57:0;;15696:2:1;10707:57:0;;;15678:21:1;15735:2;15715:18;;;15708:30;15774:34;15754:18;;;15747:62;-1:-1:-1;;;15825:18:1;;;15818:31;15866:19;;10707:57:0;15494:397:1;10707:57:0;8205:10;-1:-1:-1;;;;;10799:21:0;;;;:62;;-1:-1:-1;10824:37:0;10841:5;8205:10;11527:164;:::i;10824:37::-;10777:168;;;;-1:-1:-1;;;10777:168:0;;12489:2:1;10777:168:0;;;12471:21:1;12528:2;12508:18;;;12501:30;12567:34;12547:18;;;12540:62;12638:26;12618:18;;;12611:54;12682:19;;10777:168:0;12287:420:1;10777:168:0;10958:21;10967:2;10971:7;10958:8;:21::i;:::-;10646:341;10576:411;;:::o;23197:674::-;23296:4;23302:16;23331:11;23345:17;23355:6;23345:9;:17::i;:::-;23331:31;-1:-1:-1;23373:13:0;23389:17;23398:8;23389:6;:17;:::i;:::-;23373:33;-1:-1:-1;23420:8:0;;;:25;;;23442:3;23433:5;:12;;23420:25;23417:85;;;-1:-1:-1;23473:16:0;;;23487:1;23473:16;;;;;;;;23469:3;;-1:-1:-1;23473:16:0;-1:-1:-1;23461:29:0;;23417:85;23512:11;23526:16;23534:8;23526:5;:16;:::i;:::-;23512:30;;23562:3;23556;:9;23553:49;;;-1:-1:-1;23587:3:0;23553:49;23612:14;23629:11;23635:5;23629:3;:11;:::i;:::-;23612:28;;23651:21;23689:6;23675:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23675:21:0;;23651:45;;23707:13;23731:105;23744:3;23736:5;:11;23731:105;;;23790:34;23810:6;23818:5;23790:19;:34::i;:::-;23774:4;23779:7;;;;:::i;:::-;;;23774:13;;;;;;;;:::i;:::-;;;;;;;;;;:50;23750:8;;;;:::i;:::-;;;;23731:105;;;-1:-1:-1;23854:3:0;;-1:-1:-1;23858:4:0;;-1:-1:-1;;;;23197:674:0;;;;;;;:::o;11699:339::-;11894:41;8205:10;11927:7;11894:18;:41::i;:::-;11886:103;;;;-1:-1:-1;;;11886:103:0;;;;;;;:::i;:::-;12002:28;12012:4;12018:2;12022:7;12002:9;:28::i;23879:176::-;23944:7;23964:11;23978:17;23988:6;23978:9;:17::i;:::-;23964:31;-1:-1:-1;24013:34:0;24033:6;24041:5;24045:1;23964:31;24041:5;:::i;24013:34::-;24006:41;23879:176;-1:-1:-1;;;23879:176:0:o;17081:256::-;17178:7;17214:23;17231:5;17214:16;:23::i;:::-;17206:5;:31;17198:87;;;;-1:-1:-1;;;17198:87:0;;9369:2:1;17198:87:0;;;9351:21:1;9408:2;9388:18;;;9381:30;9447:34;9427:18;;;9420:62;-1:-1:-1;;;9498:18:1;;;9491:41;9549:19;;17198:87:0;9167:407:1;17198:87:0;-1:-1:-1;;;;;;17303:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;17081:256::o;12046:185::-;12184:39;12201:4;12207:2;12211:7;12184:39;;;;;;;;;;;;:16;:39::i;22843:348::-;22918:16;22946:23;22972:17;22982:6;22972:9;:17::i;:::-;22946:43;;22996:25;23038:15;23024:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23024:30:0;;22996:58;;23066:9;23061:103;23081:15;23077:1;:19;23061:103;;;23126:30;23146:6;23154:1;23126:19;:30::i;:::-;23112:8;23121:1;23112:11;;;;;;;;:::i;:::-;;;;;;;;;;:44;23098:3;;;;:::i;:::-;;;;23061:103;;;-1:-1:-1;23177:8:0;22843:348;-1:-1:-1;;;22843:348:0:o;17466:233::-;17541:7;17577:30;17433:10;:17;;17345:113;17577:30;17569:5;:38;17561:95;;;;-1:-1:-1;;;17561:95:0;;16516:2:1;17561:95:0;;;16498:21:1;16555:2;16535:18;;;16528:30;16594:34;16574:18;;;16567:62;-1:-1:-1;;;16645:18:1;;;16638:42;16697:19;;17561:95:0;16314:408:1;17561:95:0;17674:10;17685:5;17674:17;;;;;;;;:::i;:::-;;;;;;;;;17667:24;;17466:233;;;:::o;24614:98::-;21093:6;;-1:-1:-1;;;;;21093:6:0;8205:10;21155:23;21147:68;;;;-1:-1:-1;;;21147:68:0;;;;;;;:::i;:::-;24685:21;;::::1;::::0;:7:::1;::::0;:21:::1;::::0;::::1;::::0;::::1;:::i;:::-;;24614:98:::0;:::o;9665:239::-;9737:7;9773:16;;;:7;:16;;;;;;-1:-1:-1;;;;;9773:16:0;9808:19;9800:73;;;;-1:-1:-1;;;9800:73:0;;13325:2:1;9800:73:0;;;13307:21:1;13364:2;13344:18;;;13337:30;13403:34;13383:18;;;13376:62;-1:-1:-1;;;13454:18:1;;;13447:39;13503:19;;9800:73:0;13123:405:1;9449:208:0;9521:7;-1:-1:-1;;;;;9549:19:0;;9541:74;;;;-1:-1:-1;;;9541:74:0;;12914:2:1;9541:74:0;;;12896:21:1;12953:2;12933:18;;;12926:30;12992:34;12972:18;;;12965:62;-1:-1:-1;;;13043:18:1;;;13036:40;13093:19;;9541:74:0;12712:406:1;9541:74:0;-1:-1:-1;;;;;;9633:16:0;;;;;:9;:16;;;;;;;9449:208::o;21243:94::-;21093:6;;-1:-1:-1;;;;;21093:6:0;8205:10;21155:23;21147:68;;;;-1:-1:-1;;;21147:68:0;;;;;;;:::i;:::-;21308:21:::1;21326:1;21308:9;:21::i;:::-;21243:94::o:0;24490:118::-;21093:6;;-1:-1:-1;;;;;21093:6:0;8205:10;21155:23;21147:68;;;;-1:-1:-1;;;21147:68:0;;;;;;;:::i;:::-;24569:13:::1;:33:::0;24490:118::o;10020:104::-;10076:13;10109:7;10102:14;;;;;:::i;22542:295::-;22170:10;22162:19;;;;:7;:19;;;;;;;;22154:56;;;;-1:-1:-1;;;22154:56:0;;12136:2:1;22154:56:0;;;12118:21:1;12175:2;12155:18;;;12148:30;12214:26;12194:18;;;12187:54;12258:18;;22154:56:0;11934:348:1;22154:56:0;22602:14:::1;22619:13;17433:10:::0;:17;;17345:113;22619:13:::1;22648:6;::::0;22602:30;;-1:-1:-1;22648:6:0::1;;22647:7;22639:16;;;::::0;::::1;;22684:1;22670:11;:15;22662:24;;;::::0;::::1;;22716:13;;22701:11;:28;;22693:37;;;::::0;::::1;;22756:1;22739:93;22764:11;22759:1;:16;22739:93;;22791:33;22801:10;22813;22822:1:::0;22813:6;:10:::1;:::i;:::-;22791:9;:33::i;:::-;22777:3:::0;::::1;::::0;::::1;:::i;:::-;;;;22739:93;;11224:295:::0;-1:-1:-1;;;;;11327:24:0;;8205:10;11327:24;;11319:62;;;;-1:-1:-1;;;11319:62:0;;11369:2:1;11319:62:0;;;11351:21:1;11408:2;11388:18;;;11381:30;11447:27;11427:18;;;11420:55;11492:18;;11319:62:0;11167:349:1;11319:62:0;8205:10;11394:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;11394:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;11394:53:0;;;;;;;;;;11463:48;;8891:41:1;;;11394:42:0;;8205:10;11463:48;;8864:18:1;11463:48:0;;;;;;;11224:295;;:::o;12239:328::-;12414:41;8205:10;12433:12;12447:7;12414:18;:41::i;:::-;12406:103;;;;-1:-1:-1;;;12406:103:0;;;;;;;:::i;:::-;12520:39;12534:4;12540:2;12544:7;12553:5;12520:13;:39::i;:::-;12239:328;;;;:::o;25399:110::-;21093:6;;25463:4;;-1:-1:-1;;;;;21093:6:0;8205:10;21155:23;21147:68;;;;-1:-1:-1;;;21147:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;;25487:14:0;::::1;;::::0;;;:7:::1;:14;::::0;;;;;::::1;;21226:1;25399:110:::0;;;:::o;21961:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24061:423::-;12963:4;12987:16;;;:7;:16;;;;;;24159:13;;-1:-1:-1;;;;;12987:16:0;24184:97;;;;-1:-1:-1;;;24184:97:0;;15280:2:1;24184:97:0;;;15262:21:1;15319:2;15299:18;;;15292:30;15358:34;15338:18;;;15331:62;-1:-1:-1;;;15409:18:1;;;15402:45;15464:19;;24184:97:0;15078:411:1;24184:97:0;24290:28;24321:10;:8;:10::i;:::-;24290:41;;24376:1;24351:14;24345:28;:32;:133;;;;;;;;;;;;;;;;;24413:14;24429:18;:7;:16;:18::i;:::-;24449:13;24396:67;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;24338:140;24061:423;-1:-1:-1;;;24061:423:0:o;24926:361::-;25094:41;8205:10;25113:12;8125:98;25094:41;25086:103;;;;-1:-1:-1;;;25086:103:0;;;;;;;:::i;:::-;25202:28;25212:4;25218:2;25222:7;25202:9;:28::i;:::-;25263:6;25246:33;;;;;;:::i;:::-;;;;;;;;25259:2;-1:-1:-1;;;;;25246:33:0;25253:4;-1:-1:-1;;;;;25246:33:0;;25271:7;25246:33;;;;16873:25:1;;16861:2;16846:18;;16727:177;25246:33:0;;;;;;;;24926:361;;;;:::o;24718:122::-;21093:6;;-1:-1:-1;;;;;21093:6:0;8205:10;21155:23;21147:68;;;;-1:-1:-1;;;21147:68:0;;;;;;;:::i;:::-;24801:33;;::::1;::::0;:13:::1;::::0;:33:::1;::::0;::::1;::::0;::::1;:::i;21345:192::-:0;21093:6;;-1:-1:-1;;;;;21093:6:0;8205:10;21155:23;21147:68;;;;-1:-1:-1;;;21147:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21434:22:0;::::1;21426:73;;;::::0;-1:-1:-1;;;21426:73:0;;10200:2:1;21426:73:0::1;::::0;::::1;10182:21:1::0;10239:2;10219:18;;;10212:30;10278:34;10258:18;;;10251:62;-1:-1:-1;;;10329:18:1;;;10322:36;10375:19;;21426:73:0::1;9998:402:1::0;21426:73:0::1;21510:19;21520:8;21510:9;:19::i;:::-;21345:192:::0;:::o;25295:91::-;21093:6;;-1:-1:-1;;;;;21093:6:0;8205:10;21155:23;21147:68;;;;-1:-1:-1;;;21147:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25357:14:0::1;;::::0;;;:7:::1;:14;::::0;;;;:21;;-1:-1:-1;;25357:21:0::1;25374:4;25357:21;::::0;;25295:91::o;9136:305::-;9238:4;-1:-1:-1;;;;;;9275:40:0;;-1:-1:-1;;;9275:40:0;;:105;;-1:-1:-1;;;;;;;9332:48:0;;-1:-1:-1;;;9332:48:0;9275:105;:158;;;-1:-1:-1;;;;;;;;;;1819:40:0;;;9397:36;1710:157;15180:174;15255:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;15255:29:0;-1:-1:-1;;;;;15255:29:0;;;;;;;;:24;;15309:23;15255:24;15309:14;:23::i;:::-;-1:-1:-1;;;;;15300:46:0;;;;;;;;;;;15180:174;;:::o;13033:348::-;13126:4;12987:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12987:16:0;13143:73;;;;-1:-1:-1;;;13143:73:0;;11723:2:1;13143:73:0;;;11705:21:1;11762:2;11742:18;;;11735:30;11801:34;11781:18;;;11774:62;-1:-1:-1;;;11852:18:1;;;11845:42;11904:19;;13143:73:0;11521:408:1;13143:73:0;13227:13;13243:23;13258:7;13243:14;:23::i;:::-;13227:39;;13296:5;-1:-1:-1;;;;;13285:16:0;:7;-1:-1:-1;;;;;13285:16:0;;:51;;;;13329:7;-1:-1:-1;;;;;13305:31:0;:20;13317:7;13305:11;:20::i;:::-;-1:-1:-1;;;;;13305:31:0;;13285:51;:87;;;-1:-1:-1;;;;;;11648:25:0;;;11624:4;11648:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;13340:32;13277:96;13033:348;-1:-1:-1;;;;13033:348:0:o;14594:578::-;14753:4;-1:-1:-1;;;;;14726:31:0;:23;14741:7;14726:14;:23::i;:::-;-1:-1:-1;;;;;14726:31:0;;14718:85;;;;-1:-1:-1;;;14718:85:0;;14870:2:1;14718:85:0;;;14852:21:1;14909:2;14889:18;;;14882:30;14948:34;14928:18;;;14921:62;-1:-1:-1;;;14999:18:1;;;14992:39;15048:19;;14718:85:0;14668:405:1;14718:85:0;-1:-1:-1;;;;;14822:16:0;;14814:65;;;;-1:-1:-1;;;14814:65:0;;10964:2:1;14814:65:0;;;10946:21:1;11003:2;10983:18;;;10976:30;11042:34;11022:18;;;11015:62;-1:-1:-1;;;11093:18:1;;;11086:34;11137:19;;14814:65:0;10762:400:1;14814:65:0;14892:39;14913:4;14919:2;14923:7;14892:20;:39::i;:::-;14996:29;15013:1;15017:7;14996:8;:29::i;:::-;-1:-1:-1;;;;;15038:15:0;;;;;;:9;:15;;;;;:20;;15057:1;;15038:15;:20;;15057:1;;15038:20;:::i;:::-;;;;-1:-1:-1;;;;;;;15069:13:0;;;;;;:9;:13;;;;;:18;;15086:1;;15069:13;:18;;15086:1;;15069:18;:::i;:::-;;;;-1:-1:-1;;15098:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;15098:21:0;-1:-1:-1;;;;;15098:21:0;;;;;;;;;15137:27;;15098:16;;15137:27;;;;;;;14594:578;;;:::o;21545:173::-;21620:6;;;-1:-1:-1;;;;;21637:17:0;;;-1:-1:-1;;;;;;21637:17:0;;;;;;;21670:40;;21620:6;;;21637:17;21620:6;;21670:40;;21601:16;;21670:40;21590:128;21545:173;:::o;13389:110::-;13465:26;13475:2;13479:7;13465:26;;;;;;;;;;;;:9;:26::i;12575:315::-;12732:28;12742:4;12748:2;12752:7;12732:9;:28::i;:::-;12779:48;12802:4;12808:2;12812:7;12821:5;12779:22;:48::i;:::-;12771:111;;;;-1:-1:-1;;;12771:111:0;;;;;;;:::i;22421:102::-;22481:13;22510:7;22503:14;;;;;:::i;1966:723::-;2022:13;2243:10;2239:53;;-1:-1:-1;;2270:10:0;;;;;;;;;;;;-1:-1:-1;;;2270:10:0;;;;;1966:723::o;2239:53::-;2317:5;2302:12;2358:78;2365:9;;2358:78;;2391:8;;;;:::i;:::-;;-1:-1:-1;2414:10:0;;-1:-1:-1;2422:2:0;2414:10;;:::i;:::-;;;2358:78;;;2446:19;2478:6;2468:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2468:17:0;;2446:39;;2496:154;2503:10;;2496:154;;2530:11;2540:1;2530:11;;:::i;:::-;;-1:-1:-1;2599:10:0;2607:2;2599:5;:10;:::i;:::-;2586:24;;:2;:24;:::i;:::-;2573:39;;2556:6;2563;2556:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;2556:56:0;;;;;;;;-1:-1:-1;2627:11:0;2636:2;2627:11;;:::i;:::-;;;2496:154;;17707:589;-1:-1:-1;;;;;17913:18:0;;17909:187;;17948:40;17980:7;18637:10;:17;;18610:24;;;;:15;:24;;;;;:44;;;18665:24;;;;;;;;;;;;18533:164;17948:40;17909:187;;;18018:2;-1:-1:-1;;;;;18010:10:0;:4;-1:-1:-1;;;;;18010:10:0;;18006:90;;18037:47;18070:4;18076:7;18037:32;:47::i;:::-;-1:-1:-1;;;;;18110:16:0;;18106:183;;18143:45;18180:7;18143:36;:45::i;18106:183::-;18216:4;-1:-1:-1;;;;;18210:10:0;:2;-1:-1:-1;;;;;18210:10:0;;18206:83;;18237:40;18265:2;18269:7;18237:27;:40::i;13507:321::-;13637:18;13643:2;13647:7;13637:5;:18::i;:::-;13688:54;13719:1;13723:2;13727:7;13736:5;13688:22;:54::i;:::-;13666:154;;;;-1:-1:-1;;;13666:154:0;;;;;;;:::i;15362:799::-;15517:4;-1:-1:-1;;;;;15538:13:0;;3853:20;3901:8;15534:620;;15574:72;;-1:-1:-1;;;15574:72:0;;-1:-1:-1;;;;;15574:36:0;;;;;:72;;8205:10;;15625:4;;15631:7;;15640:5;;15574:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15574:72:0;;;;;;;;-1:-1:-1;;15574:72:0;;;;;;;;;;;;:::i;:::-;;;15570:529;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15816:13:0;;15812:272;;15859:60;;-1:-1:-1;;;15859:60:0;;;;;;;:::i;15812:272::-;16034:6;16028:13;16019:6;16015:2;16011:15;16004:38;15570:529;-1:-1:-1;;;;;;15697:51:0;-1:-1:-1;;;15697:51:0;;-1:-1:-1;15690:58:0;;15534:620;-1:-1:-1;16138:4:0;15362:799;;;;;;:::o;18705:988::-;18971:22;19021:1;18996:22;19013:4;18996:16;:22::i;:::-;:26;;;;:::i;:::-;19033:18;19054:26;;;:17;:26;;;;;;18971:51;;-1:-1:-1;19187:28:0;;;19183:328;;-1:-1:-1;;;;;19254:18:0;;19232:19;19254:18;;;:12;:18;;;;;;;;:34;;;;;;;;;19305:30;;;;;;:44;;;19422:30;;:17;:30;;;;;:43;;;19183:328;-1:-1:-1;19607:26:0;;;;:17;:26;;;;;;;;19600:33;;;-1:-1:-1;;;;;19651:18:0;;;;;:12;:18;;;;;:34;;;;;;;19644:41;18705:988::o;19701:1079::-;19979:10;:17;19954:22;;19979:21;;19999:1;;19979:21;:::i;:::-;20011:18;20032:24;;;:15;:24;;;;;;20405:10;:26;;19954:46;;-1:-1:-1;20032:24:0;;19954:46;;20405:26;;;;;;:::i;:::-;;;;;;;;;20383:48;;20469:11;20444:10;20455;20444:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;20549:28;;;:15;:28;;;;;;;:41;;;20721:24;;;;;20714:31;20756:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;19772:1008;;;19701:1079;:::o;18304:221::-;18389:14;18406:20;18423:2;18406:16;:20::i;:::-;-1:-1:-1;;;;;18437:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;18482:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;18304:221:0:o;13836:382::-;-1:-1:-1;;;;;13916:16:0;;13908:61;;;;-1:-1:-1;;;13908:61:0;;13735:2:1;13908:61:0;;;13717:21:1;;;13754:18;;;13747:30;13813:34;13793:18;;;13786:62;13865:18;;13908:61:0;13533:356:1;13908:61:0;12963:4;12987:16;;;:7;:16;;;;;;-1:-1:-1;;;;;12987:16:0;:30;13980:58;;;;-1:-1:-1;;;13980:58:0;;10607:2:1;13980:58:0;;;10589:21:1;10646:2;10626:18;;;10619:30;10685;10665:18;;;10658:58;10733:18;;13980:58:0;10405:352:1;13980:58:0;14051:45;14080:1;14084:2;14088:7;14051:20;:45::i;:::-;-1:-1:-1;;;;;14109:13:0;;;;;;:9;:13;;;;;:18;;14126:1;;14109:13;:18;;14126:1;;14109:18;:::i;:::-;;;;-1:-1:-1;;14138:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;14138:21:0;-1:-1:-1;;;;;14138:21:0;;;;;;;;14177:33;;14138:16;;;14177:33;;14138:16;;14177:33;13836:382;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:631:1;78:5;108:18;149:2;141:6;138:14;135:40;;;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:72;;;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:45;;;532:1;529;522:12;491:45;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;;;;14:631;;;;;:::o;650:173::-;718:20;;-1:-1:-1;;;;;767:31:1;;757:42;;747:70;;813:1;810;803:12;828:160;893:20;;949:13;;942:21;932:32;;922:60;;978:1;975;968:12;993:221;1036:5;1089:3;1082:4;1074:6;1070:17;1066:27;1056:55;;1107:1;1104;1097:12;1056:55;1129:79;1204:3;1195:6;1182:20;1175:4;1167:6;1163:17;1129:79;:::i;1219:186::-;1278:6;1331:2;1319:9;1310:7;1306:23;1302:32;1299:52;;;1347:1;1344;1337:12;1299:52;1370:29;1389:9;1370:29;:::i;1410:260::-;1478:6;1486;1539:2;1527:9;1518:7;1514:23;1510:32;1507:52;;;1555:1;1552;1545:12;1507:52;1578:29;1597:9;1578:29;:::i;:::-;1568:39;;1626:38;1660:2;1649:9;1645:18;1626:38;:::i;:::-;1616:48;;1410:260;;;;;:::o;1675:328::-;1752:6;1760;1768;1821:2;1809:9;1800:7;1796:23;1792:32;1789:52;;;1837:1;1834;1827:12;1789:52;1860:29;1879:9;1860:29;:::i;:::-;1850:39;;1908:38;1942:2;1931:9;1927:18;1908:38;:::i;:::-;1898:48;;1993:2;1982:9;1978:18;1965:32;1955:42;;1675:328;;;;;:::o;2008:666::-;2103:6;2111;2119;2127;2180:3;2168:9;2159:7;2155:23;2151:33;2148:53;;;2197:1;2194;2187:12;2148:53;2220:29;2239:9;2220:29;:::i;:::-;2210:39;;2268:38;2302:2;2291:9;2287:18;2268:38;:::i;:::-;2258:48;;2353:2;2342:9;2338:18;2325:32;2315:42;;2408:2;2397:9;2393:18;2380:32;2435:18;2427:6;2424:30;2421:50;;;2467:1;2464;2457:12;2421:50;2490:22;;2543:4;2535:13;;2531:27;-1:-1:-1;2521:55:1;;2572:1;2569;2562:12;2521:55;2595:73;2660:7;2655:2;2642:16;2637:2;2633;2629:11;2595:73;:::i;:::-;2585:83;;;2008:666;;;;;;;:::o;2679:539::-;2775:6;2783;2791;2799;2852:3;2840:9;2831:7;2827:23;2823:33;2820:53;;;2869:1;2866;2859:12;2820:53;2892:29;2911:9;2892:29;:::i;:::-;2882:39;;2940:38;2974:2;2963:9;2959:18;2940:38;:::i;:::-;2930:48;;3025:2;3014:9;3010:18;2997:32;2987:42;;3080:2;3069:9;3065:18;3052:32;3107:18;3099:6;3096:30;3093:50;;;3139:1;3136;3129:12;3093:50;3162;3204:7;3195:6;3184:9;3180:22;3162:50;:::i;3223:254::-;3288:6;3296;3349:2;3337:9;3328:7;3324:23;3320:32;3317:52;;;3365:1;3362;3355:12;3317:52;3388:29;3407:9;3388:29;:::i;:::-;3378:39;;3436:35;3467:2;3456:9;3452:18;3436:35;:::i;3482:254::-;3550:6;3558;3611:2;3599:9;3590:7;3586:23;3582:32;3579:52;;;3627:1;3624;3617:12;3579:52;3650:29;3669:9;3650:29;:::i;:::-;3640:39;3726:2;3711:18;;;;3698:32;;-1:-1:-1;;;3482:254:1:o;3741:322::-;3818:6;3826;3834;3887:2;3875:9;3866:7;3862:23;3858:32;3855:52;;;3903:1;3900;3893:12;3855:52;3926:29;3945:9;3926:29;:::i;:::-;3916:39;4002:2;3987:18;;3974:32;;-1:-1:-1;4053:2:1;4038:18;;;4025:32;;3741:322;-1:-1:-1;;;3741:322:1:o;4068:180::-;4124:6;4177:2;4165:9;4156:7;4152:23;4148:32;4145:52;;;4193:1;4190;4183:12;4145:52;4216:26;4232:9;4216:26;:::i;4253:245::-;4311:6;4364:2;4352:9;4343:7;4339:23;4335:32;4332:52;;;4380:1;4377;4370:12;4332:52;4419:9;4406:23;4438:30;4462:5;4438:30;:::i;4503:249::-;4572:6;4625:2;4613:9;4604:7;4600:23;4596:32;4593:52;;;4641:1;4638;4631:12;4593:52;4673:9;4667:16;4692:30;4716:5;4692:30;:::i;4757:322::-;4826:6;4879:2;4867:9;4858:7;4854:23;4850:32;4847:52;;;4895:1;4892;4885:12;4847:52;4935:9;4922:23;4968:18;4960:6;4957:30;4954:50;;;5000:1;4997;4990:12;4954:50;5023;5065:7;5056:6;5045:9;5041:22;5023:50;:::i;5084:180::-;5143:6;5196:2;5184:9;5175:7;5171:23;5167:32;5164:52;;;5212:1;5209;5202:12;5164:52;-1:-1:-1;5235:23:1;;5084:180;-1:-1:-1;5084:180:1:o;5269:435::-;5322:3;5360:5;5354:12;5387:6;5382:3;5375:19;5413:4;5442:2;5437:3;5433:12;5426:19;;5479:2;5472:5;5468:14;5500:1;5510:169;5524:6;5521:1;5518:13;5510:169;;;5585:13;;5573:26;;5619:12;;;;5654:15;;;;5546:1;5539:9;5510:169;;;-1:-1:-1;5695:3:1;;5269:435;-1:-1:-1;;;;;5269:435:1:o;5709:257::-;5750:3;5788:5;5782:12;5815:6;5810:3;5803:19;5831:63;5887:6;5880:4;5875:3;5871:14;5864:4;5857:5;5853:16;5831:63;:::i;:::-;5948:2;5927:15;-1:-1:-1;;5923:29:1;5914:39;;;;5955:4;5910:50;;5709:257;-1:-1:-1;;5709:257:1:o;5971:276::-;6102:3;6140:6;6134:13;6156:53;6202:6;6197:3;6190:4;6182:6;6178:17;6156:53;:::i;:::-;6225:16;;;;;5971:276;-1:-1:-1;;5971:276:1:o;6252:1527::-;6476:3;6514:6;6508:13;6540:4;6553:51;6597:6;6592:3;6587:2;6579:6;6575:15;6553:51;:::i;:::-;6667:13;;6626:16;;;;6689:55;6667:13;6626:16;6711:15;;;6689:55;:::i;:::-;6833:13;;6766:20;;;6806:1;;6893;6915:18;;;;6968;;;;6995:93;;7073:4;7063:8;7059:19;7047:31;;6995:93;7136:2;7126:8;7123:16;7103:18;7100:40;7097:167;;;-1:-1:-1;;;7163:33:1;;7219:4;7216:1;7209:15;7249:4;7170:3;7237:17;7097:167;7280:18;7307:110;;;;7431:1;7426:328;;;;7273:481;;7307:110;-1:-1:-1;;7342:24:1;;7328:39;;7387:20;;;;-1:-1:-1;7307:110:1;;7426:328;17319:1;17312:14;;;17356:4;17343:18;;7521:1;7535:169;7549:8;7546:1;7543:15;7535:169;;;7631:14;;7616:13;;;7609:37;7674:16;;;;7566:10;;7535:169;;;7539:3;;7735:8;7728:5;7724:20;7717:27;;7273:481;-1:-1:-1;7770:3:1;;6252:1527;-1:-1:-1;;;;;;;;;;;6252:1527:1:o;7992:488::-;-1:-1:-1;;;;;8261:15:1;;;8243:34;;8313:15;;8308:2;8293:18;;8286:43;8360:2;8345:18;;8338:34;;;8408:3;8403:2;8388:18;;8381:31;;;8186:4;;8429:45;;8454:19;;8446:6;8429:45;:::i;:::-;8421:53;7992:488;-1:-1:-1;;;;;;7992:488:1:o;8485:261::-;8664:2;8653:9;8646:21;8627:4;8684:56;8736:2;8725:9;8721:18;8713:6;8684:56;:::i;8943:219::-;9092:2;9081:9;9074:21;9055:4;9112:44;9152:2;9141:9;9137:18;9129:6;9112:44;:::i;9579:414::-;9781:2;9763:21;;;9820:2;9800:18;;;9793:30;9859:34;9854:2;9839:18;;9832:62;-1:-1:-1;;;9925:2:1;9910:18;;9903:48;9983:3;9968:19;;9579:414::o;14307:356::-;14509:2;14491:21;;;14528:18;;;14521:30;14587:34;14582:2;14567:18;;14560:62;14654:2;14639:18;;14307:356::o;15896:413::-;16098:2;16080:21;;;16137:2;16117:18;;;16110:30;16176:34;16171:2;16156:18;;16149:62;-1:-1:-1;;;16242:2:1;16227:18;;16220:47;16299:3;16284:19;;15896:413::o;16909:332::-;17116:6;17105:9;17098:25;17159:2;17154;17143:9;17139:18;17132:30;17079:4;17179:56;17231:2;17220:9;17216:18;17208:6;17179:56;:::i;17372:128::-;17412:3;17443:1;17439:6;17436:1;17433:13;17430:39;;;17449:18;;:::i;:::-;-1:-1:-1;17485:9:1;;17372:128::o;17505:120::-;17545:1;17571;17561:35;;17576:18;;:::i;:::-;-1:-1:-1;17610:9:1;;17505:120::o;17630:168::-;17670:7;17736:1;17732;17728:6;17724:14;17721:1;17718:21;17713:1;17706:9;17699:17;17695:45;17692:71;;;17743:18;;:::i;:::-;-1:-1:-1;17783:9:1;;17630:168::o;17803:125::-;17843:4;17871:1;17868;17865:8;17862:34;;;17876:18;;:::i;:::-;-1:-1:-1;17913:9:1;;17803:125::o;17933:258::-;18005:1;18015:113;18029:6;18026:1;18023:13;18015:113;;;18105:11;;;18099:18;18086:11;;;18079:39;18051:2;18044:10;18015:113;;;18146:6;18143:1;18140:13;18137:48;;;-1:-1:-1;;18181:1:1;18163:16;;18156:27;17933:258::o;18196:380::-;18275:1;18271:12;;;;18318;;;18339:61;;18393:4;18385:6;18381:17;18371:27;;18339:61;18446:2;18438:6;18435:14;18415:18;18412:38;18409:161;;;18492:10;18487:3;18483:20;18480:1;18473:31;18527:4;18524:1;18517:15;18555:4;18552:1;18545:15;18409:161;;18196:380;;;:::o;18581:135::-;18620:3;-1:-1:-1;;18641:17:1;;18638:43;;;18661:18;;:::i;:::-;-1:-1:-1;18708:1:1;18697:13;;18581:135::o;18721:112::-;18753:1;18779;18769:35;;18784:18;;:::i;:::-;-1:-1:-1;18818:9:1;;18721:112::o;18838:127::-;18899:10;18894:3;18890:20;18887:1;18880:31;18930:4;18927:1;18920:15;18954:4;18951:1;18944:15;18970:127;19031:10;19026:3;19022:20;19019:1;19012:31;19062:4;19059:1;19052:15;19086:4;19083:1;19076:15;19102:127;19163:10;19158:3;19154:20;19151:1;19144:31;19194:4;19191:1;19184:15;19218:4;19215:1;19208:15;19234:127;19295:10;19290:3;19286:20;19283:1;19276:31;19326:4;19323:1;19316:15;19350:4;19347:1;19340:15;19366:127;19427:10;19422:3;19418:20;19415:1;19408:31;19458:4;19455:1;19448:15;19482:4;19479:1;19472:15;19498:131;-1:-1:-1;;;;;;19572:32:1;;19562:43;;19552:71;;19619:1;19616;19609:12

Swarm Source

ipfs://0c3e1f67bea41b73487fbd5c7337eb18e5e78c6281059f1cfbcff787870bcd73
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.