Contract 0x9988ed979b25200d28f8c4f2a7772b0b93c75521

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8f6eece9b6216e6089185bf80df7bfb7aaef8322deb689e09ca3e4cbe36c98faMass Mint One103340442021-11-26 3:09:245 days 21 hrs ago0x1c1bdadd6b167f4a60dfeccc525534bf0f5bf323 IN 0x9988ed979b25200d28f8c4f2a7772b0b93c755210 HT0.03887903925 2.25
0x5a13b369ddd5885a9c5a9bd0271a1220ea10485476c68476fcd9b5ea127bd8b6Mass Mint One103340362021-11-26 3:09:005 days 21 hrs ago0x1c1bdadd6b167f4a60dfeccc525534bf0f5bf323 IN 0x9988ed979b25200d28f8c4f2a7772b0b93c755210 HT0.000855 2.25
0xb8f3ce80b4994855cfeff639da0bddeefcc19f2183546335469c8c082db6c70eMass Mint One103340012021-11-26 3:07:155 days 21 hrs ago0x1c1bdadd6b167f4a60dfeccc525534bf0f5bf323 IN 0x9988ed979b25200d28f8c4f2a7772b0b93c755210 HT0.00607540725 2.25
0xf76c8affc911f3a8aa5e5b3765b42738efc63a010d27b7a10f35552973a9f5b20x60806040103337472021-11-26 2:54:335 days 22 hrs ago0x1c1bdadd6b167f4a60dfeccc525534bf0f5bf323 IN  Contract Creation0 HT0.0066146445 2.25
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
NftContract

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hecoinfo.com on 2021-11-26
*/

/**
 *Submitted for verification at hecoinfo.com on 2021-11-25
*/

/**
 *Submitted for verification at hecoinfo.com on 2021-11-24
*/

/**
 *Submitted for verification at hecoinfo.com on 2021-11-24
*/

/**
 *Submitted for verification at hecoinfo.com on 2021-11-24
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "e5");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "e6");
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "e7");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "e8");
        uint256 c = a / b;
        return c;
    }
}


library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

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

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

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "e0");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "e1");
        }
    }
}

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

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, "k001");
        return string(buffer);
    }
}

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

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

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(), "k002");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "k003");
        _setOwner(newOwner);
    }

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

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, "k004");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

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

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

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

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

        (bool success,) = recipient.call{value : amount}("");
        require(success, "k006");
    }

    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, "k007");
        require(isContract(target), "k008");

        (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), "k009");

        (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), "k010");

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

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private 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);
            }
        }
    }
}

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

contract ERC721 is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;
    string private _name;
    string private _symbol;
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(uint256 => address[]) public transferList;
    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), "k011");
        return _balances[owner];
    }

    function ownerOf(uint256 tokenId) public view virtual override returns (address) {
        address owner = _owners[tokenId];
        require(owner != address(0), "k012");
        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), "k013");

        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, "k014");

        require(
            _msgSender() == owner || isApprovedForAll(owner, _msgSender()),
            "k015"
        );

        _approve(to, tokenId);
    }

    function getApproved(uint256 tokenId) public view virtual override returns (address) {
        require(_exists(tokenId), "k016");

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public virtual override {
        require(operator != _msgSender(), "k017");

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

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

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual override {
        require(_isApprovedOrOwner(_msgSender(), tokenId), "k018");
        _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), "k019");
        _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), "k020");
    }

    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), "k021");
        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),
            "k022"
        );
    }

    function _mint(address to, uint256 tokenId) internal virtual {
        require(to != address(0), "k023");
        require(!_exists(tokenId), "k024");

        _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, "k025");
        require(to != address(0), "k026");
        _beforeTokenTransfer(from, to, tokenId);
        _approve(address(0), tokenId);
        _balances[from] -= 1;
        _balances[to] += 1;
        _owners[tokenId] = to;
        if (transferList[tokenId].length < 2) {
            transferList[tokenId].push(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(to).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 {}
}

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 ERC721Enumerable is ERC721, IERC721Enumerable {
    mapping(address => mapping(uint256 => uint256)) private _ownedTokens;
    mapping(uint256 => uint256) private _ownedTokensIndex;
    uint256[] private _allTokens;
    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), "k027");
        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(), "k028");
        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 {
        uint256 lastTokenIndex = ERC721.balanceOf(from) - 1;
        uint256 tokenIndex = _ownedTokensIndex[tokenId];
        if (tokenIndex != lastTokenIndex) {
            uint256 lastTokenId = _ownedTokens[from][lastTokenIndex];
            _ownedTokens[from][tokenIndex] = lastTokenId;
            _ownedTokensIndex[lastTokenId] = tokenIndex;
        }
        delete _ownedTokensIndex[tokenId];
        delete _ownedTokens[from][lastTokenIndex];
    }

    function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {
        uint256 lastTokenIndex = _allTokens.length - 1;
        uint256 tokenIndex = _allTokensIndex[tokenId];
        uint256 lastTokenId = _allTokens[lastTokenIndex];
        _allTokens[tokenIndex] = lastTokenId;
        _allTokensIndex[lastTokenId] = tokenIndex;
        delete _allTokensIndex[tokenId];
        _allTokens.pop();
    }
}

contract NftContract is ERC721Enumerable, ReentrancyGuard, Ownable {
    using Strings for string;
    using SafeERC20 for IERC20;
    using SafeMath for uint256;
    uint256 public tokenIdNow = 0;
    uint256 public canBuyBlackBlockNumber;
    uint256 public buybackPrice;
    uint256 swapFee = 10;
    string public baseURI;
    address public devAddress;
    IERC20 public buybackToken;
    bool public canBuyBlack;

    mapping(address => bool)  public MinerList;
    mapping(address => bool) public hasMineOneList;
    mapping(address => mapping(uint256 => bool)) public canBuyBackList;

    struct nftInfoItem {
        uint256 tokenId2;
        string name;
        string symbol;
        string tokenURI;
    }

    struct otherInfoItem {
        uint256 swapFee;
        uint256 canBuyBlackBlockNumber;
        uint256 buybackPrice;
        uint256 decimals;
        string name;
        string symbol;
        IERC20 buybackToken;
        bool canBuyBlack;
    }

    constructor(string memory name_, string memory symbol_) ERC721(name_, symbol_) Ownable() {
        addMiner(msg.sender);
        setDevAddress(msg.sender);
    }

    //event AirdropEvent(address _user, uint256 _tokenId);

    function setDevAddress(address _devAddress) public {
        require(msg.sender == owner() || msg.sender == devAddress, "e001");
        devAddress = _devAddress;
    }
    
    function setSwapFee (uint256 _swapFee) public onlyOwner {
        swapFee = _swapFee;
    }

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

    function addMiner(address _adddress) public onlyOwner {
        MinerList[_adddress] = true;
    }

    function removeMiner(address _adddress) public onlyOwner {
        MinerList[_adddress] = false;
    }

    function transferMore(uint256 _tokenId) public view returns (uint256) {
        return transferList[_tokenId].length;
    }

    function setBuyBackPrice(IERC20 _token, uint256 _price) public onlyOwner {
        buybackToken = _token;
        buybackPrice = _price.mul(10 ** IERC20(_token).decimals());
    }

    function setCanBuyBlackBlockNumber(bool _canBuyBackOrNot, uint256 _canBuyBlackBlockNumber) public onlyOwner {
        canBuyBlack = _canBuyBackOrNot;
        canBuyBlackBlockNumber = _canBuyBlackBlockNumber;
    }

    //for IGO
    function mintForMiner(address _to) public nonReentrant returns (bool, uint256) {
        require(MinerList[msg.sender] == true, 'no p!');
        require(_to != address(0), 'no p!');
        tokenIdNow = tokenIdNow + 1;
        _safeMint(_to, tokenIdNow);
        return (true, tokenIdNow);
    }

    //for AirDrop
    function massMintOne(address[] memory _toList) public onlyOwner returns (bool status) {
        for (uint256 i = 0; i < _toList.length; i++) {
            require(_toList[i] != address(0), 'no p1!');
            require(hasMineOneList[_toList[i]] == false, 'no p2');
        }
        for (uint256 i = 0; i < _toList.length; i++) {
            require(hasMineOneList[_toList[i]] == false, 'no p3');
            tokenIdNow = tokenIdNow + 1;
            _safeMint(_toList[i], tokenIdNow);
            hasMineOneList[_toList[i]] = true;
            canBuyBackList[_toList[i]][tokenIdNow] = true;
            //emit AirdropEvent(_toList[i], tokenIdNow);
        }
        status = true;
    }

    function getBuybackTokenId(address _user) public view returns (nftInfoItem[] memory tokenIdList, otherInfoItem memory otherInfo) {
        otherInfo = otherInfoItem(swapFee, canBuyBlackBlockNumber, buybackPrice, IERC20(buybackToken).decimals(), IERC20(buybackToken).name(), IERC20(buybackToken).symbol(), buybackToken, canBuyBlack);
        uint256 num = balanceOf(_user);
        uint256 buybackNum = 0;
        for (uint256 i = 0; i < num; i++) {
            if (canBuyBackList[_user][tokenOfOwnerByIndex(_user, i)] == true) {
                buybackNum = buybackNum.add(1);
            }
        }
        tokenIdList = new nftInfoItem[](buybackNum);
        uint256 j = 0;
        for (uint256 i = 0; i < num; i++) {
            if (canBuyBackList[_user][tokenOfOwnerByIndex(_user, i)] == true) {
                tokenIdList[j] = nftInfoItem(tokenOfOwnerByIndex(_user, i), name(), symbol(), tokenURI(tokenOfOwnerByIndex(_user, i)));
                j = j.add(1);
            }
        }

    }

    function buyback(uint256 _tokenId) public {
        require(canBuyBlack == true && block.number > canBuyBlackBlockNumber && canBuyBlackBlockNumber > 0, 'buyback e0');
        require(canBuyBackList[msg.sender][_tokenId] == true, 'buyback e1');
        uint256 fee = buybackPrice.mul(swapFee).div(100);
        uint256 back = buybackPrice.sub(fee);
        IERC20(buybackToken).safeTransfer(devAddress, fee);
        IERC20(buybackToken).safeTransfer(msg.sender, back);
        safeTransferFrom(msg.sender, devAddress, _tokenId);
        canBuyBackList[msg.sender][_tokenId] = false;
    }

    function geterc20Token(IERC20 _token, uint256 _amount) public onlyOwner {
        require(_amount <= _token.balanceOf(address(this)), "geterc20Token e0");
        if (_amount == 0) {
            _token.safeTransfer(msg.sender, _token.balanceOf(address(this)));
        } else {
            _token.safeTransfer(msg.sender, _amount);
        }
    }

    function tokenURI(uint256 _tokenId) override public view returns (string memory) {
        return string(abi.encodePacked(baseURI, Strings.toString(_tokenId)));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"name_","type":"string"},{"internalType":"string","name":"symbol_","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":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"MinerList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adddress","type":"address"}],"name":"addMiner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"buyback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buybackPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buybackToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"canBuyBackList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canBuyBlack","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"canBuyBlackBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"_user","type":"address"}],"name":"getBuybackTokenId","outputs":[{"components":[{"internalType":"uint256","name":"tokenId2","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"string","name":"tokenURI","type":"string"}],"internalType":"struct NftContract.nftInfoItem[]","name":"tokenIdList","type":"tuple[]"},{"components":[{"internalType":"uint256","name":"swapFee","type":"uint256"},{"internalType":"uint256","name":"canBuyBlackBlockNumber","type":"uint256"},{"internalType":"uint256","name":"buybackPrice","type":"uint256"},{"internalType":"uint256","name":"decimals","type":"uint256"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"contract IERC20","name":"buybackToken","type":"address"},{"internalType":"bool","name":"canBuyBlack","type":"bool"}],"internalType":"struct NftContract.otherInfoItem","name":"otherInfo","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"geterc20Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasMineOneList","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":[{"internalType":"address[]","name":"_toList","type":"address[]"}],"name":"massMintOne","outputs":[{"internalType":"bool","name":"status","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"}],"name":"mintForMiner","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"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":"address","name":"_adddress","type":"address"}],"name":"removeMiner","outputs":[],"stateMutability":"nonpayable","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":"_baseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setBuyBackPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_canBuyBackOrNot","type":"bool"},{"internalType":"uint256","name":"_canBuyBlackBlockNumber","type":"uint256"}],"name":"setCanBuyBlackBlockNumber","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devAddress","type":"address"}],"name":"setDevAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapFee","type":"uint256"}],"name":"setSwapFee","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":[],"name":"tokenIdNow","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":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"transferList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256"}],"name":"transferMore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600d55600a6010553480156200001b57600080fd5b506040516200350a3803806200350a8339810160408190526200003e9162000352565b81518290829062000057906000906020850190620001df565b5080516200006d906001906020840190620001df565b50506001600b555062000080336200009e565b6200008b33620000f0565b620000963362000162565b5050620003f9565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600c546001600160a01b031633146200013e5760405162461bcd60e51b815260040162000135906020808252600490820152633598181960e11b604082015260600190565b60405180910390fd5b6001600160a01b03166000908152601460205260409020805460ff19166001179055565b600c546001600160a01b03163314806200018657506012546001600160a01b031633145b620001bd5760405162461bcd60e51b815260040162000135906020808252600490820152636530303160e01b604082015260600190565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b828054620001ed90620003bc565b90600052602060002090601f0160209004810192826200021157600085556200025c565b82601f106200022c57805160ff19168380011785556200025c565b828001600101855582156200025c579182015b828111156200025c5782518255916020019190600101906200023f565b506200026a9291506200026e565b5090565b5b808211156200026a57600081556001016200026f565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002ad57600080fd5b81516001600160401b0380821115620002ca57620002ca62000285565b604051601f8301601f19908116603f01168101908282118183101715620002f557620002f562000285565b816040528381526020925086838588010111156200031257600080fd5b600091505b8382101562000336578582018301518183018401529082019062000317565b83821115620003485760008385830101525b9695505050505050565b600080604083850312156200036657600080fd5b82516001600160401b03808211156200037e57600080fd5b6200038c868387016200029b565b93506020850151915080821115620003a357600080fd5b50620003b2858286016200029b565b9150509250929050565b600181811c90821680620003d157607f821691505b60208210811415620003f357634e487b7160e01b600052602260045260246000fd5b50919050565b61310180620004096000396000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80636f08085c11610151578063a22cb465116100c3578063d4f6fffe11610087578063d4f6fffe14610594578063d76266d11461059d578063e985e9c5146105b0578063f2ad543b146105ec578063f2fde38b146105ff578063f3982e5e1461061257600080fd5b8063a22cb4651461053f578063b88d4fde14610552578063bd47061214610565578063c87b56dd1461056e578063d0d41fe11461058157600080fd5b806381f5e30c1161011557806381f5e30c146104bb578063840faad3146104dc5780638bbeb279146104ef5780638da5cb5b1461051d57806395d89b411461052e5780639c76a6ac1461053657600080fd5b80636f08085c1461045757806370a082311461046a578063715018a61461047d57806379a9fa1c146104855780637e7706751461049857600080fd5b80632f745c59116101ea5780634f6ccce7116101ae5780634f6ccce7146103d357806351f6e611146103e6578063532f2bc91461040957806355f804b3146104295780636352211e1461043c5780636c0360eb1461044f57600080fd5b80632f745c591461035d578063309e92e91461037057806334e199071461039a5780633ad10ef6146103ad57806342842e0e146103c057600080fd5b80630d4d4e54116102315780630d4d4e54146102fe578063102425901461031157806318160ddd1461032457806323b872dd146103365780632ad146b51461034957600080fd5b806301ffc9a71461026e578063026390011461029657806306fdde03146102c1578063081812fc146102d6578063095ea7b3146102e9575b600080fd5b61028161027c366004612739565b610625565b60405190151581526020015b60405180910390f35b6013546102a9906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b6102c9610650565b60405161028d91906127ae565b6102a96102e43660046127c1565b6106e2565b6102fc6102f73660046127ef565b610754565b005b6102fc61030c366004612829565b61080c565b6102fc61031f366004612847565b610858565b6009545b60405190815260200161028d565b6102fc610344366004612864565b6108a3565b60135461028190600160a01b900460ff1681565b61032861036b3660046127ef565b6108ed565b61038361037e366004612847565b610958565b60408051921515835260208301919091520161028d565b6102fc6103a83660046127c1565b610a56565b6012546102a9906001600160a01b031681565b6102fc6103ce366004612864565b610a85565b6103286103e13660046127c1565b610aa0565b6102816103f4366004612847565b60146020526000908152604090205460ff1681565b6103286104173660046127c1565b60009081526005602052604090205490565b6102fc610437366004612952565b610b07565b6102a961044a3660046127c1565b610b48565b6102c9610b96565b6102fc6104653660046127ef565b610c24565b610328610478366004612847565b610d90565b6102fc610ded565b6102fc6104933660046127c1565b610e23565b6102816104a6366004612847565b60156020526000908152604090205460ff1681565b6104ce6104c9366004612847565b610f96565b60405161028d929190612a1e565b6102816104ea366004612adb565b61137b565b6102816104fd3660046127ef565b601660209081526000928352604080842090915290825290205460ff1681565b600c546001600160a01b03166102a9565b6102c9611620565b610328600f5481565b6102fc61054d366004612b8d565b61162f565b6102fc610560366004612bc6565b6116dd565b610328600e5481565b6102c961057c3660046127c1565b61172e565b6102fc61058f366004612847565b611762565b610328600d5481565b6102fc6105ab3660046127ef565b6117dc565b6102816105be366004612c46565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205460ff1690565b6102a96105fa366004612c74565b6118a0565b6102fc61060d366004612847565b6118d8565b6102fc610620366004612847565b61194d565b60006001600160e01b0319821663780e9d6360e01b148061064a575061064a8261199b565b92915050565b60606000805461065f90612c96565b80601f016020809104026020016040519081016040528092919081815260200182805461068b90612c96565b80156106d85780601f106106ad576101008083540402835291602001916106d8565b820191906000526020600020905b8154815290600101906020018083116106bb57829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166107385760405162461bcd60e51b815260040161072f906020808252600490820152633598189b60e11b604082015260600190565b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061075f82610b48565b9050806001600160a01b0316836001600160a01b031614156107ac5760405162461bcd60e51b815260040161072f906020808252600490820152631acc0c4d60e21b604082015260600190565b336001600160a01b03821614806107c857506107c881336105be565b6107fd5760405162461bcd60e51b815260040161072f906020808252600490820152636b30313560e01b604082015260600190565b61080783836119eb565b505050565b600c546001600160a01b031633146108365760405162461bcd60e51b815260040161072f90612cd1565b60138054921515600160a01b0260ff60a01b1990931692909217909155600e55565b600c546001600160a01b031633146108825760405162461bcd60e51b815260040161072f90612cd1565b6001600160a01b03166000908152601460205260409020805460ff19169055565b6108ad3382611a59565b6108e25760405162461bcd60e51b815260040161072f906020808252600490820152630d66062760e31b604082015260600190565b610807838383611b24565b60006108f883610d90565b821061092f5760405162461bcd60e51b815260040161072f906020808252600490820152636b30323760e01b604082015260600190565b506001600160a01b03919091166000908152600760209081526040808320938352929052205490565b6000806002600b5414156109975760405162461bcd60e51b815260040161072f906020808252600490820152631acc0c0d60e21b604082015260600190565b6002600b553360009081526014602052604090205460ff1615156001146109e85760405162461bcd60e51b81526020600482015260056024820152646e6f20702160d81b604482015260640161072f565b6001600160a01b038316610a265760405162461bcd60e51b81526020600482015260056024820152646e6f20702160d81b604482015260640161072f565b600d54610a34906001612d05565b600d819055610a44908490611cde565b5050600d546001600b81905592909150565b600c546001600160a01b03163314610a805760405162461bcd60e51b815260040161072f90612cd1565b601055565b610807838383604051806020016040528060008152506116dd565b6000610aab60095490565b8210610ae25760405162461bcd60e51b815260040161072f906020808252600490820152630d66064760e31b604082015260600190565b60098281548110610af557610af5612d1d565b90600052602060002001549050919050565b600c546001600160a01b03163314610b315760405162461bcd60e51b815260040161072f90612cd1565b8051610b4490601190602084019061268a565b5050565b6000818152600260205260408120546001600160a01b03168061064a5760405162461bcd60e51b815260040161072f906020808252600490820152633598189960e11b604082015260600190565b60118054610ba390612c96565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcf90612c96565b8015610c1c5780601f10610bf157610100808354040283529160200191610c1c565b820191906000526020600020905b815481529060010190602001808311610bff57829003601f168201915b505050505081565b600c546001600160a01b03163314610c4e5760405162461bcd60e51b815260040161072f90612cd1565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015610c92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb69190612d33565b811115610cf85760405162461bcd60e51b815260206004820152601060248201526f06765746572633230546f6b656e2065360841b604482015260640161072f565b80610d7c576040516370a0823160e01b8152306004820152610b449033906001600160a01b038516906370a0823190602401602060405180830381865afa158015610d47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6b9190612d33565b6001600160a01b0385169190611cf8565b610b446001600160a01b0383163383611cf8565b60006001600160a01b038216610dd15760405162461bcd60e51b815260040161072f906020808252600490820152636b30313160e01b604082015260600190565b506001600160a01b031660009081526003602052604090205490565b600c546001600160a01b03163314610e175760405162461bcd60e51b815260040161072f90612cd1565b610e216000611d4a565b565b601354600160a01b900460ff1615156001148015610e425750600e5443115b8015610e5057506000600e54115b610e895760405162461bcd60e51b815260206004820152600a60248201526906275796261636b2065360b41b604482015260640161072f565b33600090815260166020908152604080832084845290915290205460ff161515600114610ee55760405162461bcd60e51b815260206004820152600a6024820152696275796261636b20653160b01b604482015260640161072f565b6000610f096064610f03601054600f54611d9c90919063ffffffff16565b90611dfd565b90506000610f2282600f54611e3f90919063ffffffff16565b601254601354919250610f42916001600160a01b03908116911684611cf8565b601354610f59906001600160a01b03163383611cf8565b601254610f719033906001600160a01b031685610a85565b505033600090815260166020908152604080832093835292905220805460ff19169055565b6060610feb60405180610100016040528060008152602001600081526020016000815260200160008152602001606081526020016060815260200160006001600160a01b031681526020016000151581525090565b6040518061010001604052806010548152602001600e548152602001600f548152602001601360009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110869190612d4c565b60ff168152602001601360009054906101000a90046001600160a01b03166001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa1580156110e1573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111099190810190612d6f565b8152602001601360009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa158015611161573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111899190810190612d6f565b81526013546001600160a01b0381166020830152600160a01b900460ff161515604090910152905060006111bc84610d90565b90506000805b8281101561122b576001600160a01b0386166000908152601660205260408120906111ed88846108ed565b815260208101919091526040016000205460ff1615156001141561121957611216826001611e82565b91505b8061122381612de6565b9150506111c2565b508067ffffffffffffffff811115611245576112456128a5565b6040519080825280602002602001820160405280156112a157816020015b61128e6040518060800160405280600081526020016060815260200160608152602001606081525090565b8152602001906001900390816112635790505b5093506000805b83811015611372576001600160a01b0387166000908152601660205260408120906112d389846108ed565b815260208101919091526040016000205460ff1615156001141561136057604051806080016040528061130689846108ed565b8152602001611313610650565b8152602001611320611620565b815260200161133261057c8a856108ed565b81525086838151811061134757611347612d1d565b602090810291909101015261135d826001611e82565b91505b8061136a81612de6565b9150506112a8565b50505050915091565b600c546000906001600160a01b031633146113a85760405162461bcd60e51b815260040161072f90612cd1565b60005b825181101561149d5760006001600160a01b03168382815181106113d1576113d1612d1d565b60200260200101516001600160a01b031614156114195760405162461bcd60e51b81526020600482015260066024820152656e6f2070312160d01b604482015260640161072f565b6015600084838151811061142f5761142f612d1d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561148b5760405162461bcd60e51b8152602060048201526005602482015264373790381960d91b604482015260640161072f565b8061149581612de6565b9150506113ab565b5060005b825181101561161757601560008483815181106114c0576114c0612d1d565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561151c5760405162461bcd60e51b81526020600482015260056024820152646e6f20703360d81b604482015260640161072f565b600d5461152a906001612d05565b600d8190555061155583828151811061154557611545612d1d565b6020026020010151600d54611cde565b60016015600085848151811061156d5761156d612d1d565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601660008584815181106115c4576115c4612d1d565b6020908102919091018101516001600160a01b031682528181019290925260409081016000908120600d5482529092529020805460ff19169115159190911790558061160f81612de6565b9150506114a1565b50600192915050565b60606001805461065f90612c96565b6001600160a01b0382163314156116715760405162461bcd60e51b815260040161072f906020808252600490820152636b30313760e01b604082015260600190565b3360008181526006602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6116e73383611a59565b61171c5760405162461bcd60e51b815260040161072f906020808252600490820152636b30313960e01b604082015260600190565b61172884848484611ec6565b50505050565b6060601161173b83611f12565b60405160200161174c929190612e1d565b6040516020818303038152906040529050919050565b600c546001600160a01b031633148061178557506012546001600160a01b031633145b6117ba5760405162461bcd60e51b815260040161072f906020808252600490820152636530303160e01b604082015260600190565b601280546001600160a01b0319166001600160a01b0392909216919091179055565b600c546001600160a01b031633146118065760405162461bcd60e51b815260040161072f90612cd1565b601380546001600160a01b0319166001600160a01b0384169081179091556040805163313ce56760e01b81529051611899929163313ce5679160048083019260209291908290030181865afa158015611863573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118879190612d4c565b61189290600a612f9f565b8290611d9c565b600f555050565b600560205281600052604060002081815481106118bc57600080fd5b6000918252602090912001546001600160a01b03169150829050565b600c546001600160a01b031633146119025760405162461bcd60e51b815260040161072f90612cd1565b6001600160a01b0381166119415760405162461bcd60e51b815260040161072f906020808252600490820152636b30303360e01b604082015260600190565b61194a81611d4a565b50565b600c546001600160a01b031633146119775760405162461bcd60e51b815260040161072f90612cd1565b6001600160a01b03166000908152601460205260409020805460ff19166001179055565b60006001600160e01b031982166380ac58cd60e01b14806119cc57506001600160e01b03198216635b5e139f60e01b145b8061064a57506301ffc9a760e01b6001600160e01b031983161461064a565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190611a2082610b48565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b0316611aa65760405162461bcd60e51b815260040161072f906020808252600490820152636b30323160e01b604082015260600190565b6000611ab183610b48565b9050806001600160a01b0316846001600160a01b03161480611aec5750836001600160a01b0316611ae1846106e2565b6001600160a01b0316145b80611b1c57506001600160a01b0380821660009081526006602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611b3782610b48565b6001600160a01b031614611b765760405162461bcd60e51b815260040161072f906020808252600490820152636b30323560e01b604082015260600190565b6001600160a01b038216611bb55760405162461bcd60e51b815260040161072f906020808252600490820152633598191b60e11b604082015260600190565b611bc0838383612010565b611bcb6000826119eb565b6001600160a01b0383166000908152600360205260408120805460019290611bf4908490612fae565b90915550506001600160a01b0382166000908152600360205260408120805460019290611c22908490612d05565b9091555050600081815260026020818152604080842080546001600160a01b0319166001600160a01b0388161790556005909152909120541015611c985760008181526005602090815260408220805460018101825590835291200180546001600160a01b0319166001600160a01b0384161790555b80826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b610b448282604051806020016040528060008152506120c8565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610807908490612114565b600c80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600082611dab5750600061064a565b6000611db78385612fc5565b905082611dc48583612ffa565b14611df65760405162461bcd60e51b8152602060048201526002602482015261653760f01b604482015260640161072f565b9392505050565b6000808211611e335760405162461bcd60e51b81526020600482015260026024820152610ca760f31b604482015260640161072f565b6000611b1c8385612ffa565b600082821115611e765760405162461bcd60e51b8152602060048201526002602482015261329b60f11b604482015260640161072f565b6000611b1c8385612fae565b600080611e8f8385612d05565b905083811015611df65760405162461bcd60e51b8152602060048201526002602482015261653560f01b604482015260640161072f565b611ed1848484611b24565b611edd8484848461219d565b6117285760405162461bcd60e51b815260040161072f9060208082526004908201526306b3032360e41b604082015260600190565b606081611f365750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611f605780611f4a81612de6565b9150611f599050600a83612ffa565b9150611f3a565b60008167ffffffffffffffff811115611f7b57611f7b6128a5565b6040519080825280601f01601f191660200182016040528015611fa5576020820181803683370190505b5090505b8415611b1c57611fba600183612fae565b9150611fc7600a8661300e565b611fd2906030612d05565b60f81b818381518110611fe757611fe7612d1d565b60200101906001600160f81b031916908160001a905350612009600a86612ffa565b9450611fa9565b6001600160a01b03831661206b5761206681600980546000838152600a60205260408120829055600182018355919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0155565b61208e565b816001600160a01b0316836001600160a01b03161461208e5761208e83826122e6565b6001600160a01b0382166120a55761080781612383565b826001600160a01b0316826001600160a01b031614610807576108078282612432565b6120d28383612476565b6120df600084848461219d565b6108075760405162461bcd60e51b815260040161072f906020808252600490820152633598191960e11b604082015260600190565b600061214e8260405180604001604052806002815260200161065360f41b815250856001600160a01b03166125969092919063ffffffff16565b805190915015610807578080602001905181019061216c9190613022565b6108075760405162461bcd60e51b8152602060048201526002602482015261653160f01b604482015260640161072f565b60006001600160a01b0384163b156122db57604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906121e190339089908890889060040161303f565b6020604051808303816000875af192505050801561221c575060408051601f3d908101601f191682019092526122199181019061307c565b60015b6122c1573d80801561224a576040519150601f19603f3d011682016040523d82523d6000602084013e61224f565b606091505b5080516122b95760405162461bcd60e51b815260206004820152603260248201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560448201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606482015260840161072f565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611b1c565b506001949350505050565b600060016122f384610d90565b6122fd9190612fae565b600083815260086020526040902054909150808214612350576001600160a01b03841660009081526007602090815260408083208584528252808320548484528184208190558352600890915290208190555b5060009182526008602090815260408084208490556001600160a01b039094168352600781528383209183525290812055565b60095460009061239590600190612fae565b6000838152600a6020526040812054600980549394509092849081106123bd576123bd612d1d565b9060005260206000200154905080600983815481106123de576123de612d1d565b6000918252602080832090910192909255828152600a9091526040808220849055858252812055600980548061241657612416613099565b6001900381819060005260206000200160009055905550505050565b600061243d83610d90565b6001600160a01b039093166000908152600760209081526040808320868452825280832085905593825260089052919091209190915550565b6001600160a01b0382166124b55760405162461bcd60e51b815260040161072f906020808252600490820152636b30323360e01b604082015260600190565b6000818152600260205260409020546001600160a01b0316156125035760405162461bcd60e51b815260040161072f906020808252600490820152631acc0c8d60e21b604082015260600190565b61250f60008383612010565b6001600160a01b0382166000908152600360205260408120805460019290612538908490612d05565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6060611b1c848460008585843b6125d85760405162461bcd60e51b815260040161072f906020808252600490820152630d66060760e31b604082015260600190565b600080866001600160a01b031685876040516125f491906130af565b60006040518083038185875af1925050503d8060008114612631576040519150601f19603f3d011682016040523d82523d6000602084013e612636565b606091505b5091509150612646828286612651565b979650505050505050565b60608315612660575081611df6565b8251156126705782518084602001fd5b8160405162461bcd60e51b815260040161072f91906127ae565b82805461269690612c96565b90600052602060002090601f0160209004810192826126b857600085556126fe565b82601f106126d157805160ff19168380011785556126fe565b828001600101855582156126fe579182015b828111156126fe5782518255916020019190600101906126e3565b5061270a92915061270e565b5090565b5b8082111561270a576000815560010161270f565b6001600160e01b03198116811461194a57600080fd5b60006020828403121561274b57600080fd5b8135611df681612723565b60005b83811015612771578181015183820152602001612759565b838111156117285750506000910152565b6000815180845261279a816020860160208601612756565b601f01601f19169290920160200192915050565b602081526000611df66020830184612782565b6000602082840312156127d357600080fd5b5035919050565b6001600160a01b038116811461194a57600080fd5b6000806040838503121561280257600080fd5b823561280d816127da565b946020939093013593505050565b801515811461194a57600080fd5b6000806040838503121561283c57600080fd5b823561280d8161281b565b60006020828403121561285957600080fd5b8135611df6816127da565b60008060006060848603121561287957600080fd5b8335612884816127da565b92506020840135612894816127da565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156128e4576128e46128a5565b604052919050565b600067ffffffffffffffff821115612906576129066128a5565b50601f01601f191660200190565b6000612927612922846128ec565b6128bb565b905082815283838301111561293b57600080fd5b828260208301376000602084830101529392505050565b60006020828403121561296457600080fd5b813567ffffffffffffffff81111561297b57600080fd5b8201601f8101841361298c57600080fd5b611b1c84823560208401612914565b60006101008251845260208301516020850152604083015160408501526060830151606085015260808301518160808601526129d982860182612782565b91505060a083015184820360a08601526129f38282612782565b60c0858101516001600160a01b03169087015260e09485015115159490950193909352509192915050565b60006040808301818452808651808352606092508286019150828160051b8701016020808a0160005b84811015612abb57605f198a85030186528151608081518652848201518186880152612a7582880182612782565b915050898201518682038b880152612a8d8282612782565b91505088820151915085810389870152612aa78183612782565b978501979550505090820190600101612a47565b505087820390880152612ace818961299b565b9998505050505050505050565b60006020808385031215612aee57600080fd5b823567ffffffffffffffff80821115612b0657600080fd5b818501915085601f830112612b1a57600080fd5b813581811115612b2c57612b2c6128a5565b8060051b9150612b3d8483016128bb565b8181529183018401918481019088841115612b5757600080fd5b938501935b83851015612b815784359250612b71836127da565b8282529385019390850190612b5c565b98975050505050505050565b60008060408385031215612ba057600080fd5b8235612bab816127da565b91506020830135612bbb8161281b565b809150509250929050565b60008060008060808587031215612bdc57600080fd5b8435612be7816127da565b93506020850135612bf7816127da565b925060408501359150606085013567ffffffffffffffff811115612c1a57600080fd5b8501601f81018713612c2b57600080fd5b612c3a87823560208401612914565b91505092959194509250565b60008060408385031215612c5957600080fd5b8235612c64816127da565b91506020830135612bbb816127da565b60008060408385031215612c8757600080fd5b50508035926020909101359150565b600181811c90821680612caa57607f821691505b60208210811415612ccb57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252600490820152633598181960e11b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60008219821115612d1857612d18612cef565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612d4557600080fd5b5051919050565b600060208284031215612d5e57600080fd5b815160ff81168114611df657600080fd5b600060208284031215612d8157600080fd5b815167ffffffffffffffff811115612d9857600080fd5b8201601f81018413612da957600080fd5b8051612db7612922826128ec565b818152856020838501011115612dcc57600080fd5b612ddd826020830160208601612756565b95945050505050565b6000600019821415612dfa57612dfa612cef565b5060010190565b60008151612e13818560208601612756565b9290920192915050565b600080845481600182811c915080831680612e3957607f831692505b6020808410821415612e5957634e487b7160e01b86526022600452602486fd5b818015612e6d5760018114612e7e57612eab565b60ff19861689528489019650612eab565b60008b81526020902060005b86811015612ea35781548b820152908501908301612e8a565b505084890196505b505050505050612ddd8185612e01565b600181815b80851115612ef6578160001904821115612edc57612edc612cef565b80851615612ee957918102915b93841c9390800290612ec0565b509250929050565b600082612f0d5750600161064a565b81612f1a5750600061064a565b8160018114612f305760028114612f3a57612f56565b600191505061064a565b60ff841115612f4b57612f4b612cef565b50506001821b61064a565b5060208310610133831016604e8410600b8410161715612f79575081810a61064a565b612f838383612ebb565b8060001904821115612f9757612f97612cef565b029392505050565b6000611df660ff841683612efe565b600082821015612fc057612fc0612cef565b500390565b6000816000190483118215151615612fdf57612fdf612cef565b500290565b634e487b7160e01b600052601260045260246000fd5b60008261300957613009612fe4565b500490565b60008261301d5761301d612fe4565b500690565b60006020828403121561303457600080fd5b8151611df68161281b565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061307290830184612782565b9695505050505050565b60006020828403121561308e57600080fd5b8151611df681612723565b634e487b7160e01b600052603160045260246000fd5b600082516130c1818460208701612756565b919091019291505056fea2646970667358221220d9ea771dff114be87a648bea2e33ccb208ec7eac197cd16019fa95eb8805506864736f6c634300080a0033000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000006446f674e465400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006446f674e46540000000000000000000000000000000000000000000000000000

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

000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000006446f674e465400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006446f674e46540000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : name_ (string): DogNFT
Arg [1] : symbol_ (string): DogNFT

-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 446f674e46540000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [5] : 446f674e46540000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

21179:5619:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18421:224;;;;;;:::i;:::-;;:::i;:::-;;;565:14:1;;558:22;540:41;;528:2;513:18;18421:224:0;;;;;;;;21551:26;;;;;-1:-1:-1;;;;;21551:26:0;;;;;;-1:-1:-1;;;;;769:32:1;;;751:51;;739:2;724:18;21551:26:0;592:216:1;11970:100:0;;;:::i;:::-;;;;;;;:::i;12929:181::-;;;;;;:::i;:::-;;:::i;12591:330::-;;;;;;:::i;:::-;;:::i;:::-;;23359:216;;;;;;:::i;:::-;;:::i;22924:104::-;;;;;;:::i;:::-;;:::i;18878:113::-;18966:10;:17;18878:113;;;3270:25:1;;;3258:2;3243:18;18878:113:0;3124:177:1;13572:239:0;;;;;;:::i;:::-;;:::i;21584:23::-;;;;;-1:-1:-1;;;21584:23:0;;;;;;18653:217;;;;;;:::i;:::-;;:::i;23598:302::-;;;;;;:::i;:::-;;:::i;:::-;;;;3960:14:1;;3953:22;3935:41;;4007:2;3992:18;;3985:34;;;;3908:18;23598:302:0;3767:258:1;22609:93:0;;;;;;:::i;:::-;;:::i;21519:25::-;;;;;-1:-1:-1;;;;;21519:25:0;;;13819:185;;;;;;:::i;:::-;;:::i;18999:193::-;;;;;;:::i;:::-;;:::i;21616:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;23036:125;;;;;;:::i;:::-;23097:7;23124:22;;;:12;:22;;;;;:29;;23036:125;22710:98;;;;;;:::i;:::-;;:::i;11760:202::-;;;;;;:::i;:::-;;:::i;21491:21::-;;;:::i;26265:354::-;;;;;;:::i;:::-;;:::i;11582:170::-;;;;;;:::i;:::-;;:::i;5678:94::-;;;:::i;25660:597::-;;;;;;:::i;:::-;;:::i;21665:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;24637:1015;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;23927:702::-;;;;;;:::i;:::-;;:::i;21718:66::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5485:87;5558:6;;-1:-1:-1;;;;;5558:6:0;5485:87;;12078:104;;;:::i;21430:27::-;;;;;;13118:274;;;;;;:::i;:::-;;:::i;14012:283::-;;;;;;:::i;:::-;;:::i;21386:37::-;;;;;;26627:168;;;;;;:::i;:::-;;:::i;22426:171::-;;;;;;:::i;:::-;;:::i;21350:29::-;;;;;;23169:182;;;;;;:::i;:::-;;:::i;13400:164::-;;;;;;:::i;:::-;-1:-1:-1;;;;;13521:25:0;;;13497:4;13521:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;13400:164;11023:49;;;;;;:::i;:::-;;:::i;5780:158::-;;;;;;:::i;:::-;;:::i;22816:100::-;;;;;;:::i;:::-;;:::i;18421:224::-;18523:4;-1:-1:-1;;;;;;18547:50:0;;-1:-1:-1;;;18547:50:0;;:90;;;18601:36;18625:11;18601:23;:36::i;:::-;18540:97;18421:224;-1:-1:-1;;18421:224:0:o;11970:100::-;12024:13;12057:5;12050:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11970:100;:::o;12929:181::-;13005:7;14669:16;;;:7;:16;;;;;;-1:-1:-1;;;;;14669:16:0;13025:33;;;;-1:-1:-1;;;13025:33:0;;;;;;11698:2:1;11680:21;;;11737:1;11717:18;;;11710:29;-1:-1:-1;;;11770:2:1;11755:18;;11748:34;11814:2;11799:18;;11496:327;13025:33:0;;;;;;;;;-1:-1:-1;13078:24:0;;;;:15;:24;;;;;;-1:-1:-1;;;;;13078:24:0;;12929:181::o;12591:330::-;12672:13;12688:23;12703:7;12688:14;:23::i;:::-;12672:39;;12736:5;-1:-1:-1;;;;;12730:11:0;:2;-1:-1:-1;;;;;12730:11:0;;;12722:28;;;;-1:-1:-1;;;12722:28:0;;;;;;12030:2:1;12012:21;;;12069:1;12049:18;;;12042:29;-1:-1:-1;;;12102:2:1;12087:18;;12080:34;12146:2;12131:18;;11828:327;12722:28:0;5122:10;-1:-1:-1;;;;;12785:21:0;;;;:62;;-1:-1:-1;12810:37:0;12827:5;5122:10;13400:164;:::i;12810:37::-;12763:116;;;;-1:-1:-1;;;12763:116:0;;;;;;12362:2:1;12344:21;;;12401:1;12381:18;;;12374:29;-1:-1:-1;;;12434:2:1;12419:18;;12412:34;12478:2;12463:18;;12160:327;12763:116:0;12892:21;12901:2;12905:7;12892:8;:21::i;:::-;12661:260;12591:330;;:::o;23359:216::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;23478:11:::1;:30:::0;;;::::1;;-1:-1:-1::0;;;23478:30:0::1;-1:-1:-1::0;;;;23478:30:0;;::::1;::::0;;;::::1;::::0;;;23519:22:::1;:48:::0;23359:216::o;22924:104::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22992:20:0::1;23015:5;22992:20:::0;;;:9:::1;:20;::::0;;;;:28;;-1:-1:-1;;22992:28:0::1;::::0;;22924:104::o;13572:239::-;13714:41;5122:10;13747:7;13714:18;:41::i;:::-;13706:58;;;;-1:-1:-1;;;13706:58:0;;;;;;13026:2:1;13008:21;;;13065:1;13045:18;;;13038:29;-1:-1:-1;;;13098:2:1;13083:18;;13076:34;13142:2;13127:18;;12824:327;13706:58:0;13775:28;13785:4;13791:2;13795:7;13775:9;:28::i;18653:217::-;18750:7;18786:23;18803:5;18786:16;:23::i;:::-;18778:5;:31;18770:48;;;;-1:-1:-1;;;18770:48:0;;;;;;13358:2:1;13340:21;;;13397:1;13377:18;;;13370:29;-1:-1:-1;;;13430:2:1;13415:18;;13408:34;13474:2;13459:18;;13156:327;18770:48:0;-1:-1:-1;;;;;;18836:19:0;;;;;;;;:12;:19;;;;;;;;:26;;;;;;;;;18653:217::o;23598:302::-;23662:4;23668:7;6251:1;6397:7;;:19;;6389:36;;;;-1:-1:-1;;;6389:36:0;;;;;;13690:2:1;13672:21;;;13729:1;13709:18;;;13702:29;-1:-1:-1;;;13762:2:1;13747:18;;13740:34;13806:2;13791:18;;13488:327;6389:36:0;6251:1;6436:7;:18;23706:10:::1;23696:21;::::0;;;:9:::1;:21;::::0;;;;;::::1;;:29;;:21:::0;:29:::1;23688:47;;;::::0;-1:-1:-1;;;23688:47:0;;14022:2:1;23688:47:0::1;::::0;::::1;14004:21:1::0;14061:1;14041:18;;;14034:29;-1:-1:-1;;;14079:18:1;;;14072:35;14124:18;;23688:47:0::1;13820:328:1::0;23688:47:0::1;-1:-1:-1::0;;;;;23754:17:0;::::1;23746:35;;;::::0;-1:-1:-1;;;23746:35:0;;14022:2:1;23746:35:0::1;::::0;::::1;14004:21:1::0;14061:1;14041:18;;;14034:29;-1:-1:-1;;;14079:18:1;;;14072:35;14124:18;;23746:35:0::1;13820:328:1::0;23746:35:0::1;23805:10;::::0;:14:::1;::::0;23818:1:::1;23805:14;:::i;:::-;23792:10;:27:::0;;;23830:26:::1;::::0;23840:3;;23830:9:::1;:26::i;:::-;-1:-1:-1::0;;23881:10:0::1;::::0;23875:4:::1;6477:7:::0;:22;;;23875:4;23881:10;;-1:-1:-1;23598:302:0:o;22609:93::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;22676:7:::1;:18:::0;22609:93::o;13819:185::-;13957:39;13974:4;13980:2;13984:7;13957:39;;;;;;;;;;;;:16;:39::i;18999:193::-;19074:7;19110:30;18966:10;:17;;18878:113;19110:30;19102:5;:38;19094:55;;;;-1:-1:-1;;;19094:55:0;;;;;;14620:2:1;14602:21;;;14659:1;14639:18;;;14632:29;-1:-1:-1;;;14692:2:1;14677:18;;14670:34;14736:2;14721:18;;14418:327;19094:55:0;19167:10;19178:5;19167:17;;;;;;;;:::i;:::-;;;;;;;;;19160:24;;18999:193;;;:::o;22710:98::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;22782:18;;::::1;::::0;:7:::1;::::0;:18:::1;::::0;::::1;::::0;::::1;:::i;:::-;;22710:98:::0;:::o;11760:202::-;11832:7;11868:16;;;:7;:16;;;;;;-1:-1:-1;;;;;11868:16:0;11903:19;11895:36;;;;-1:-1:-1;;;11895:36:0;;;;;;15084:2:1;15066:21;;;15123:1;15103:18;;;15096:29;-1:-1:-1;;;15156:2:1;15141:18;;15134:34;15200:2;15185:18;;14882:327;21491:21:0;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;26265:354::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;26367:31:::1;::::0;-1:-1:-1;;;26367:31:0;;26392:4:::1;26367:31;::::0;::::1;751:51:1::0;-1:-1:-1;;;;;26367:16:0;::::1;::::0;::::1;::::0;724:18:1;;26367:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26356:7;:42;;26348:71;;;::::0;-1:-1:-1;;;26348:71:0;;15605:2:1;26348:71:0::1;::::0;::::1;15587:21:1::0;15644:2;15624:18;;;15617:30;-1:-1:-1;;;15663:18:1;;;15656:46;15719:18;;26348:71:0::1;15403:340:1::0;26348:71:0::1;26434:12:::0;26430:182:::1;;26495:31;::::0;-1:-1:-1;;;26495:31:0;;26520:4:::1;26495:31;::::0;::::1;751:51:1::0;26463:64:0::1;::::0;26483:10:::1;::::0;-1:-1:-1;;;;;26495:16:0;::::1;::::0;::::1;::::0;724:18:1;;26495:31:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26463:19:0;::::1;::::0;:64;:19:::1;:64::i;26430:182::-;26560:40;-1:-1:-1::0;;;;;26560:19:0;::::1;26580:10;26592:7:::0;26560:19:::1;:40::i;11582:170::-:0;11654:7;-1:-1:-1;;;;;11682:19:0;;11674:36;;;;-1:-1:-1;;;11674:36:0;;;;;;15950:2:1;15932:21;;;15989:1;15969:18;;;15962:29;-1:-1:-1;;;16022:2:1;16007:18;;16000:34;16066:2;16051:18;;15748:327;11674:36:0;-1:-1:-1;;;;;;11728:16:0;;;;;:9;:16;;;;;;;11582:170::o;5678:94::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;5743:21:::1;5761:1;5743:9;:21::i;:::-;5678:94::o:0;25660:597::-;25721:11;;-1:-1:-1;;;25721:11:0;;;;:19;;25736:4;25721:19;:60;;;;;25759:22;;25744:12;:37;25721:60;:90;;;;;25810:1;25785:22;;:26;25721:90;25713:113;;;;-1:-1:-1;;;25713:113:0;;16282:2:1;25713:113:0;;;16264:21:1;16321:2;16301:18;;;16294:30;-1:-1:-1;;;16340:18:1;;;16333:40;16390:18;;25713:113:0;16080:334:1;25713:113:0;25860:10;25845:26;;;;:14;:26;;;;;;;;:36;;;;;;;;;;;:44;;:36;:44;25837:67;;;;-1:-1:-1;;;25837:67:0;;16621:2:1;25837:67:0;;;16603:21:1;16660:2;16640:18;;;16633:30;-1:-1:-1;;;16679:18:1;;;16672:40;16729:18;;25837:67:0;16419:334:1;25837:67:0;25915:11;25929:34;25959:3;25929:25;25946:7;;25929:12;;:16;;:25;;;;:::i;:::-;:29;;:34::i;:::-;25915:48;;25974:12;25989:21;26006:3;25989:12;;:16;;:21;;;;:::i;:::-;26055:10;;26028:12;;25974:36;;-1:-1:-1;26021:50:0;;-1:-1:-1;;;;;26028:12:0;;;;26055:10;26067:3;26021:33;:50::i;:::-;26089:12;;26082:51;;-1:-1:-1;;;;;26089:12:0;26116:10;26128:4;26082:33;:51::i;:::-;26173:10;;26144:50;;26161:10;;-1:-1:-1;;;;;26173:10:0;26185:8;26144:16;:50::i;:::-;-1:-1:-1;;26220:10:0;26244:5;26205:26;;;:14;:26;;;;;;;;:36;;;;;;;:44;;-1:-1:-1;;26205:44:0;;;25660:597::o;24637:1015::-;24700:32;24734:30;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24734:30:0;24789:180;;;;;;;;24803:7;;24789:180;;;;24812:22;;24789:180;;;;24836:12;;24789:180;;;;24857:12;;;;;;;;;-1:-1:-1;;;;;24857:12:0;-1:-1:-1;;;;;24850:29:0;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24789:180;;;;;;24890:12;;;;;;;;;-1:-1:-1;;;;;24890:12:0;-1:-1:-1;;;;;24883:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24883:27:0;;;;;;;;;;;;:::i;:::-;24789:180;;;;24919:12;;;;;;;;;-1:-1:-1;;;;;24919:12:0;-1:-1:-1;;;;;24912:27:0;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24912:29:0;;;;;;;;;;;;:::i;:::-;24789:180;;24943:12;;-1:-1:-1;;;;;24943:12:0;;24789:180;;;;-1:-1:-1;;;24957:11:0;;;;24789:180;;;;;;;24777:192;-1:-1:-1;;24994:16:0;25004:5;24994:9;:16::i;:::-;24980:30;;25021:18;25059:9;25054:191;25078:3;25074:1;:7;25054:191;;;-1:-1:-1;;;;;25107:21:0;;;;;;:14;:21;;;;;;25129:29;25122:5;25156:1;25129:19;:29::i;:::-;25107:52;;;;;;;;;;;-1:-1:-1;25107:52:0;;;;:60;;:52;:60;25103:131;;;25201:17;:10;25216:1;25201:14;:17::i;:::-;25188:30;;25103:131;25083:3;;;;:::i;:::-;;;;25054:191;;;;25287:10;25269:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25269:29:0;;;;;;;;;;;;;;;;;25255:43;;25309:9;25338;25333:310;25357:3;25353:1;:7;25333:310;;;-1:-1:-1;;;;;25386:21:0;;;;;;:14;:21;;;;;;25408:29;25401:5;25435:1;25408:19;:29::i;:::-;25386:52;;;;;;;;;;;-1:-1:-1;25386:52:0;;;;:60;;:52;:60;25382:250;;;25484:101;;;;;;;;25496:29;25516:5;25523:1;25496:19;:29::i;:::-;25484:101;;;;25527:6;:4;:6::i;:::-;25484:101;;;;25535:8;:6;:8::i;:::-;25484:101;;;;25545:39;25554:29;25574:5;25581:1;25554:19;:29::i;25545:39::-;25484:101;;;25467:11;25479:1;25467:14;;;;;;;;:::i;:::-;;;;;;;;;;:118;25608:8;:1;25614;25608:5;:8::i;:::-;25604:12;;25382:250;25362:3;;;;:::i;:::-;;;;25333:310;;;;24766:886;;;24637:1015;;;:::o;23927:702::-;5558:6;;24000:11;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;24029:9:::1;24024:183;24048:7;:14;24044:1;:18;24024:183;;;24114:1;-1:-1:-1::0;;;;;24092:24:0::1;:7;24100:1;24092:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;24092:24:0::1;;;24084:43;;;::::0;-1:-1:-1;;;24084:43:0;;18019:2:1;24084:43:0::1;::::0;::::1;18001:21:1::0;18058:1;18038:18;;;18031:29;-1:-1:-1;;;18076:18:1;;;18069:36;18122:18;;24084:43:0::1;17817:329:1::0;24084:43:0::1;24150:14;:26;24165:7;24173:1;24165:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24150:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24150:26:0;;::::1;;:35;24142:53;;;::::0;-1:-1:-1;;;24142:53:0;;18353:2:1;24142:53:0::1;::::0;::::1;18335:21:1::0;18392:1;18372:18;;;18365:29;-1:-1:-1;;;18410:18:1;;;18403:35;18455:18;;24142:53:0::1;18151:328:1::0;24142:53:0::1;24064:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24024:183;;;;24222:9;24217:381;24241:7;:14;24237:1;:18;24217:381;;;24285:14;:26;24300:7;24308:1;24300:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24285:26:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;24285:26:0;;::::1;;:35;24277:53;;;::::0;-1:-1:-1;;;24277:53:0;;18686:2:1;24277:53:0::1;::::0;::::1;18668:21:1::0;18725:1;18705:18;;;18698:29;-1:-1:-1;;;18743:18:1;;;18736:35;18788:18;;24277:53:0::1;18484:328:1::0;24277:53:0::1;24358:10;::::0;:14:::1;::::0;24371:1:::1;24358:14;:::i;:::-;24345:10;:27;;;;24387:33;24397:7;24405:1;24397:10;;;;;;;;:::i;:::-;;;;;;;24409;;24387:9;:33::i;:::-;24464:4;24435:14;:26;24450:7;24458:1;24450:10;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;24435:26:0::1;-1:-1:-1::0;;;;;24435:26:0::1;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;24524:4;24483:14;:26;24498:7;24506:1;24498:10;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;24483:26:0::1;::::0;;;;::::1;::::0;;;;;;;;-1:-1:-1;24483:26:0;;;24510:10:::1;::::0;24483:38;;;;;;;:45;;-1:-1:-1;;24483:45:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24257:3;::::1;::::0;::::1;:::i;:::-;;;;24217:381;;;-1:-1:-1::0;24617:4:0::1;::::0;23927:702;-1:-1:-1;;23927:702:0:o;12078:104::-;12134:13;12167:7;12160:14;;;;;:::i;13118:274::-;-1:-1:-1;;;;;13221:24:0;;5122:10;13221:24;;13213:41;;;;-1:-1:-1;;;13213:41:0;;;;;;19019:2:1;19001:21;;;19058:1;19038:18;;;19031:29;-1:-1:-1;;;19091:2:1;19076:18;;19069:34;19135:2;19120:18;;18817:327;13213:41:0;5122:10;13267:32;;;;:18;:32;;;;;;;;-1:-1:-1;;;;;13267:42:0;;;;;;;;;;;;:53;;-1:-1:-1;;13267:53:0;;;;;;;;;;13336:48;;540:41:1;;;13267:42:0;;5122:10;13336:48;;513:18:1;13336:48:0;;;;;;;13118:274;;:::o;14012:283::-;14187:41;5122:10;14220:7;14187:18;:41::i;:::-;14179:58;;;;-1:-1:-1;;;14179:58:0;;;;;;19351:2:1;19333:21;;;19390:1;19370:18;;;19363:29;-1:-1:-1;;;19423:2:1;19408:18;;19401:34;19467:2;19452:18;;19149:327;14179:58:0;14248:39;14262:4;14268:2;14272:7;14281:5;14248:13;:39::i;:::-;14012:283;;;;:::o;26627:168::-;26693:13;26750:7;26759:26;26776:8;26759:16;:26::i;:::-;26733:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;26719:68;;26627:168;;;:::o;22426:171::-;5558:6;;-1:-1:-1;;;;;5558:6:0;22496:10;:21;;:49;;-1:-1:-1;22535:10:0;;-1:-1:-1;;;;;22535:10:0;22521;:24;22496:49;22488:66;;;;-1:-1:-1;;;22488:66:0;;;;;;21178:2:1;21160:21;;;21217:1;21197:18;;;21190:29;-1:-1:-1;;;21250:2:1;21235:18;;21228:34;21294:2;21279:18;;20976:327;22488:66:0;22565:10;:24;;-1:-1:-1;;;;;;22565:24:0;-1:-1:-1;;;;;22565:24:0;;;;;;;;;;22426:171::o;23169:182::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;23253:12:::1;:21:::0;;-1:-1:-1;;;;;;23253:21:0::1;-1:-1:-1::0;;;;;23253:21:0;::::1;::::0;;::::1;::::0;;;23317:25:::1;::::0;;-1:-1:-1;;;23317:25:0;;;;23300:43:::1;::::0;23253:21;23317:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;23253:21;23317:25:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23311:31;::::0;:2:::1;:31;:::i;:::-;23300:6:::0;;:10:::1;:43::i;:::-;23285:12;:58:::0;-1:-1:-1;;23169:182:0:o;11023:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11023:49:0;;-1:-1:-1;11023:49:0;;-1:-1:-1;11023:49:0:o;5780:158::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5869:22:0;::::1;5861:39;;;;-1:-1:-1::0;;;5861:39:0::1;;;;;;22893:2:1::0;22875:21;;;22932:1;22912:18;;;22905:29;-1:-1:-1;;;22965:2:1;22950:18;;22943:34;23009:2;22994:18;;22691:327;5861:39:0::1;5911:19;5921:8;5911:9;:19::i;:::-;5780:158:::0;:::o;22816:100::-;5558:6;;-1:-1:-1;;;;;5558:6:0;5122:10;5618:23;5610:40;;;;-1:-1:-1;;;5610:40:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;22881:20:0::1;;::::0;;;:9:::1;:20;::::0;;;;:27;;-1:-1:-1;;22881:27:0::1;22904:4;22881:27;::::0;;22816:100::o;11281:293::-;11383:4;-1:-1:-1;;;;;;11416:40:0;;-1:-1:-1;;;11416:40:0;;:101;;-1:-1:-1;;;;;;;11469:48:0;;-1:-1:-1;;;11469:48:0;11416:101;:150;;;-1:-1:-1;;;;;;;;;;10620:40:0;;;11530:36;10511:157;16700:174;16775:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;16775:29:0;-1:-1:-1;;;;;16775:29:0;;;;;;;;:24;;16829:23;16775:24;16829:14;:23::i;:::-;-1:-1:-1;;;;;16820:46:0;;;;;;;;;;;16700:174;;:::o;14715:308::-;14808:4;14669:16;;;:7;:16;;;;;;-1:-1:-1;;;;;14669:16:0;14825:33;;;;-1:-1:-1;;;14825:33:0;;;;;;23225:2:1;23207:21;;;23264:1;23244:18;;;23237:29;-1:-1:-1;;;23297:2:1;23282:18;;23275:34;23341:2;23326:18;;23023:327;14825:33:0;14869:13;14885:23;14900:7;14885:14;:23::i;:::-;14869:39;;14938:5;-1:-1:-1;;;;;14927:16:0;:7;-1:-1:-1;;;;;14927:16:0;;:51;;;;14971:7;-1:-1:-1;;;;;14947:31:0;:20;14959:7;14947:11;:20::i;:::-;-1:-1:-1;;;;;14947:31:0;;14927:51;:87;;;-1:-1:-1;;;;;;13521:25:0;;;13497:4;13521:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;14982:32;14919:96;14715:308;-1:-1:-1;;;;14715:308:0:o;16138:554::-;16297:4;-1:-1:-1;;;;;16270:31:0;:23;16285:7;16270:14;:23::i;:::-;-1:-1:-1;;;;;16270:31:0;;16262:48;;;;-1:-1:-1;;;16262:48:0;;;;;;23557:2:1;23539:21;;;23596:1;23576:18;;;23569:29;-1:-1:-1;;;23629:2:1;23614:18;;23607:34;23673:2;23658:18;;23355:327;16262:48:0;-1:-1:-1;;;;;16329:16:0;;16321:33;;;;-1:-1:-1;;;16321:33:0;;;;;;23889:2:1;23871:21;;;23928:1;23908:18;;;23901:29;-1:-1:-1;;;23961:2:1;23946:18;;23939:34;24005:2;23990:18;;23687:327;16321:33:0;16365:39;16386:4;16392:2;16396:7;16365:20;:39::i;:::-;16415:29;16432:1;16436:7;16415:8;:29::i;:::-;-1:-1:-1;;;;;16455:15:0;;;;;;:9;:15;;;;;:20;;16474:1;;16455:15;:20;;16474:1;;16455:20;:::i;:::-;;;;-1:-1:-1;;;;;;;16486:13:0;;;;;;:9;:13;;;;;:18;;16503:1;;16486:13;:18;;16503:1;;16486:18;:::i;:::-;;;;-1:-1:-1;;16515:16:0;;;;:7;:16;;;;;;;;:21;;-1:-1:-1;;;;;;16515:21:0;-1:-1:-1;;;;;16515:21:0;;;;;16551:12;:21;;;;;;:28;:32;16547:95;;;16600:21;;;;:12;:21;;;;;;;:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16600:30:0;-1:-1:-1;;;;;16600:30:0;;;;;16547:95;16676:7;16672:2;-1:-1:-1;;;;;16657:27:0;16666:4;-1:-1:-1;;;;;16657:27:0;;;;;;;;;;;16138:554;;;:::o;15031:110::-;15107:26;15117:2;15121:7;15107:26;;;;;;;;;;;;:9;:26::i;1642:177::-;1752:58;;;-1:-1:-1;;;;;24341:32:1;;1752:58:0;;;24323:51:1;24390:18;;;;24383:34;;;1752:58:0;;;;;;;;;;24296:18:1;;;;1752:58:0;;;;;;;;-1:-1:-1;;;;;1752:58:0;-1:-1:-1;;;1752:58:0;;;1725:86;;1745:5;;1725:19;:86::i;5946:173::-;6021:6;;;-1:-1:-1;;;;;6038:17:0;;;-1:-1:-1;;;;;;6038:17:0;;;;;;;6071:40;;6021:6;;;6038:17;6021:6;;6071:40;;6002:16;;6071:40;5991:128;5946:173;:::o;1165:215::-;1223:7;1247:6;1243:47;;-1:-1:-1;1277:1:0;1270:8;;1243:47;1300:9;1312:5;1316:1;1312;:5;:::i;:::-;1300:17;-1:-1:-1;1345:1:0;1336:5;1340:1;1300:17;1336:5;:::i;:::-;:10;1328:25;;;;-1:-1:-1;;;1328:25:0;;25060:2:1;1328:25:0;;;25042:21:1;25099:1;25079:18;;;25072:29;-1:-1:-1;;;25117:18:1;;;25110:32;25159:18;;1328:25:0;24858:325:1;1328:25:0;1371:1;1165:215;-1:-1:-1;;;1165:215:0:o;1388:153::-;1446:7;1478:1;1474;:5;1466:20;;;;-1:-1:-1;;;1466:20:0;;25390:2:1;1466:20:0;;;25372:21:1;25429:1;25409:18;;;25402:29;-1:-1:-1;;;25447:18:1;;;25440:32;25489:18;;1466:20:0;25188:325:1;1466:20:0;1497:9;1509:5;1513:1;1509;:5;:::i;1003:154::-;1061:7;1094:1;1089;:6;;1081:21;;;;-1:-1:-1;;;1081:21:0;;25720:2:1;1081:21:0;;;25702::1;25759:1;25739:18;;;25732:29;-1:-1:-1;;;25777:18:1;;;25770:32;25819:18;;1081:21:0;25518:325:1;1081:21:0;1113:9;1125:5;1129:1;1125;:5;:::i;841:154::-;899:7;;931:5;935:1;931;:5;:::i;:::-;919:17;;960:1;955;:6;;947:21;;;;-1:-1:-1;;;947:21:0;;26050:2:1;947:21:0;;;26032::1;26089:1;26069:18;;;26062:29;-1:-1:-1;;;26107:18:1;;;26100:32;26149:18;;947:21:0;25848:325:1;14303:269:0;14460:28;14470:4;14476:2;14480:7;14460:9;:28::i;:::-;14507:48;14530:4;14536:2;14540:7;14549:5;14507:22;:48::i;:::-;14499:65;;;;-1:-1:-1;;;14499:65:0;;;;;;26380:2:1;26362:21;;;26419:1;26399:18;;;26392:29;-1:-1:-1;;;26452:2:1;26437:18;;26430:34;26496:2;26481:18;;26178:327;3691:532:0;3747:13;3777:10;3773:53;;-1:-1:-1;;3804:10:0;;;;;;;;;;;;-1:-1:-1;;;3804:10:0;;;;;3691:532::o;3773:53::-;3851:5;3836:12;3892:78;3899:9;;3892:78;;3925:8;;;;:::i;:::-;;-1:-1:-1;3948:10:0;;-1:-1:-1;3956:2:0;3948:10;;:::i;:::-;;;3892:78;;;3980:19;4012:6;4002:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4002:17:0;;3980:39;;4030:154;4037:10;;4030:154;;4064:11;4074:1;4064:11;;:::i;:::-;;-1:-1:-1;4133:10:0;4141:2;4133:5;:10;:::i;:::-;4120:24;;:2;:24;:::i;:::-;4107:39;;4090:6;4097;4090:14;;;;;;;;:::i;:::-;;;;:56;-1:-1:-1;;;;;4090:56:0;;;;;;;;-1:-1:-1;4161:11:0;4170:2;4161:11;;:::i;:::-;;;4030:154;;19200:587;-1:-1:-1;;;;;19404:18:0;;19400:187;;19439:40;19471:7;20128:10;:17;;20101:24;;;;:15;:24;;;;;:44;;;20156:24;;;;;;;;;;;;20024:164;19439:40;19400:187;;;19509:2;-1:-1:-1;;;;;19501:10:0;:4;-1:-1:-1;;;;;19501:10:0;;19497:90;;19528:47;19561:4;19567:7;19528:32;:47::i;:::-;-1:-1:-1;;;;;19601:16:0;;19597:183;;19634:45;19671:7;19634:36;:45::i;19597:183::-;19707:4;-1:-1:-1;;;;;19701:10:0;:2;-1:-1:-1;;;;;19701:10:0;;19697:83;;19728:40;19756:2;19760:7;19728:27;:40::i;15149:275::-;15279:18;15285:2;15289:7;15279:5;:18::i;:::-;15330:54;15361:1;15365:2;15369:7;15378:5;15330:22;:54::i;:::-;15308:108;;;;-1:-1:-1;;;15308:108:0;;;;;;26829:2:1;26811:21;;;26868:1;26848:18;;;26841:29;-1:-1:-1;;;26901:2:1;26886:18;;26879:34;26945:2;26930:18;;26627:327;2040:263:0;2121:23;2147:39;2175:4;2147:39;;;;;;;;;;;;;-1:-1:-1;;;2147:39:0;;;2155:5;-1:-1:-1;;;;;2147:27:0;;;:39;;;;;:::i;:::-;2201:17;;2121:65;;-1:-1:-1;2201:21:0;2197:99;;2258:10;2247:30;;;;;;;;;;;;:::i;:::-;2239:45;;;;-1:-1:-1;;;2239:45:0;;27411:2:1;2239:45:0;;;27393:21:1;27450:1;27430:18;;;27423:29;-1:-1:-1;;;27468:18:1;;;27461:32;27510:18;;2239:45:0;27209:325:1;16882:803:0;17037:4;-1:-1:-1;;;;;17058:13:0;;7124:20;7172:8;17054:624;;17094:72;;-1:-1:-1;;;17094:72:0;;-1:-1:-1;;;;;17094:36:0;;;;;:72;;5122:10;;17145:4;;17151:7;;17160:5;;17094:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17094:72:0;;;;;;;;-1:-1:-1;;17094:72:0;;;;;;;;;;;;:::i;:::-;;;17090:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17340:13:0;;17336:272;;17383:60;;-1:-1:-1;;;17383:60:0;;28500:2:1;17383:60:0;;;28482:21:1;28539:2;28519:18;;;28512:30;28578:34;28558:18;;;28551:62;-1:-1:-1;;;28629:18:1;;;28622:48;28687:19;;17383:60:0;28298:414:1;17336:272:0;17558:6;17552:13;17543:6;17539:2;17535:15;17528:38;17090:533;-1:-1:-1;;;;;;17217:55:0;-1:-1:-1;;;17217:55:0;;-1:-1:-1;17210:62:0;;17054:624;-1:-1:-1;17662:4:0;16882:803;;;;;;:::o;20196:549::-;20288:22;20338:1;20313:22;20330:4;20313:16;:22::i;:::-;:26;;;;:::i;:::-;20350:18;20371:26;;;:17;:26;;;;;;20288:51;;-1:-1:-1;20412:28:0;;;20408:234;;-1:-1:-1;;;;;20479:18:0;;20457:19;20479:18;;;:12;:18;;;;;;;;:34;;;;;;;;;20528:30;;;;;;:44;;;20587:30;;:17;:30;;;;;:43;;;20408:234;-1:-1:-1;20659:26:0;;;;:17;:26;;;;;;;;20652:33;;;-1:-1:-1;;;;;20703:18:0;;;;;:12;:18;;;;;:34;;;;;;;20696:41;20196:549::o;20753:419::-;20860:10;:17;20835:22;;20860:21;;20880:1;;20860:21;:::i;:::-;20892:18;20913:24;;;:15;:24;;;;;;20970:10;:26;;20835:46;;-1:-1:-1;20913:24:0;;20835:46;;20970:26;;;;;;:::i;:::-;;;;;;;;;20948:48;;21032:11;21007:10;21018;21007:22;;;;;;;;:::i;:::-;;;;;;;;;;;;:36;;;;21054:28;;;:15;:28;;;;;;;:41;;;21113:24;;;;;21106:31;21148:10;:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;20824:348;;;20753:419;:::o;19795:221::-;19880:14;19897:20;19914:2;19897:16;:20::i;:::-;-1:-1:-1;;;;;19928:16:0;;;;;;;:12;:16;;;;;;;;:24;;;;;;;;:34;;;19973:26;;;:17;:26;;;;;;:35;;;;-1:-1:-1;19795:221:0:o;15432:330::-;-1:-1:-1;;;;;15512:16:0;;15504:33;;;;-1:-1:-1;;;15504:33:0;;;;;;29051:2:1;29033:21;;;29090:1;29070:18;;;29063:29;-1:-1:-1;;;29123:2:1;29108:18;;29101:34;29167:2;29152:18;;28849:327;15504:33:0;14645:4;14669:16;;;:7;:16;;;;;;-1:-1:-1;;;;;14669:16:0;:30;15548:34;;;;-1:-1:-1;;;15548:34:0;;;;;;29383:2:1;29365:21;;;29422:1;29402:18;;;29395:29;-1:-1:-1;;;29455:2:1;29440:18;;29433:34;29499:2;29484:18;;29181:327;15548:34:0;15595:45;15624:1;15628:2;15632:7;15595:20;:45::i;:::-;-1:-1:-1;;;;;15653:13:0;;;;;;:9;:13;;;;;:18;;15670:1;;15653:13;:18;;15670:1;;15653:18;:::i;:::-;;;;-1:-1:-1;;15682:16:0;;;;:7;:16;;;;;;:21;;-1:-1:-1;;;;;;15682:21:0;-1:-1:-1;;;;;15682:21:0;;;;;;;;15721:33;;15682:16;;;15721:33;;15682:16;;15721:33;15432:330;;:::o;7625:229::-;7762:12;7794:52;7816:6;7824:4;7830:1;7833:12;7762;7124:20;;8383:35;;;;-1:-1:-1;;;8383:35:0;;;;;;30047:2:1;30029:21;;;30086:1;30066:18;;;30059:29;-1:-1:-1;;;30119:2:1;30104:18;;30097:34;30163:2;30148:18;;29845:327;8383:35:0;8432:12;8446:23;8473:6;-1:-1:-1;;;;;8473:11:0;8493:5;8500:4;8473:32;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8431:74;;;;8523:52;8541:7;8550:10;8562:12;8523:17;:52::i;:::-;8516:59;8130:453;-1:-1:-1;;;;;;;8130:453:0:o;9749:712::-;9899:12;9928:7;9924:530;;;-1:-1:-1;9959:10:0;9952:17;;9924:530;10073:17;;:21;10069:374;;10271:10;10265:17;10332:15;10319:10;10315:2;10311:19;10304:44;10069:374;10414:12;10407:20;;-1:-1:-1;;;10407:20:0;;;;;;;;:::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;813:258::-;885:1;895:113;909:6;906:1;903:13;895:113;;;985:11;;;979:18;966:11;;;959:39;931:2;924:10;895:113;;;1026:6;1023:1;1020:13;1017:48;;;-1:-1:-1;;1061:1:1;1043:16;;1036:27;813:258::o;1076:269::-;1129:3;1167:5;1161:12;1194:6;1189:3;1182:19;1210:63;1266:6;1259:4;1254:3;1250:14;1243:4;1236:5;1232:16;1210:63;:::i;:::-;1327:2;1306:15;-1:-1:-1;;1302:29:1;1293:39;;;;1334:4;1289:50;;1076:269;-1:-1:-1;;1076:269:1:o;1350:231::-;1499:2;1488:9;1481:21;1462:4;1519:56;1571:2;1560:9;1556:18;1548:6;1519:56;:::i;1586:180::-;1645:6;1698:2;1686:9;1677:7;1673:23;1669:32;1666:52;;;1714:1;1711;1704:12;1666:52;-1:-1:-1;1737:23:1;;1586:180;-1:-1:-1;1586:180:1:o;1979:131::-;-1:-1:-1;;;;;2054:31:1;;2044:42;;2034:70;;2100:1;2097;2090:12;2115:315;2183:6;2191;2244:2;2232:9;2223:7;2219:23;2215:32;2212:52;;;2260:1;2257;2250:12;2212:52;2299:9;2286:23;2318:31;2343:5;2318:31;:::i;:::-;2368:5;2420:2;2405:18;;;;2392:32;;-1:-1:-1;;;2115:315:1:o;2435:118::-;2521:5;2514:13;2507:21;2500:5;2497:32;2487:60;;2543:1;2540;2533:12;2558:309;2623:6;2631;2684:2;2672:9;2663:7;2659:23;2655:32;2652:52;;;2700:1;2697;2690:12;2652:52;2739:9;2726:23;2758:28;2780:5;2758:28;:::i;2872:247::-;2931:6;2984:2;2972:9;2963:7;2959:23;2955:32;2952:52;;;3000:1;2997;2990:12;2952:52;3039:9;3026:23;3058:31;3083:5;3058:31;:::i;3306:456::-;3383:6;3391;3399;3452:2;3440:9;3431:7;3427:23;3423:32;3420:52;;;3468:1;3465;3458:12;3420:52;3507:9;3494:23;3526:31;3551:5;3526:31;:::i;:::-;3576:5;-1:-1:-1;3633:2:1;3618:18;;3605:32;3646:33;3605:32;3646:33;:::i;:::-;3306:456;;3698:7;;-1:-1:-1;;;3752:2:1;3737:18;;;;3724:32;;3306:456::o;4030:127::-;4091:10;4086:3;4082:20;4079:1;4072:31;4122:4;4119:1;4112:15;4146:4;4143:1;4136:15;4162:275;4233:2;4227:9;4298:2;4279:13;;-1:-1:-1;;4275:27:1;4263:40;;4333:18;4318:34;;4354:22;;;4315:62;4312:88;;;4380:18;;:::i;:::-;4416:2;4409:22;4162:275;;-1:-1:-1;4162:275:1:o;4442:187::-;4491:4;4524:18;4516:6;4513:30;4510:56;;;4546:18;;:::i;:::-;-1:-1:-1;4612:2:1;4591:15;-1:-1:-1;;4587:29:1;4618:4;4583:40;;4442:187::o;4634:338::-;4699:5;4728:53;4744:36;4773:6;4744:36;:::i;:::-;4728:53;:::i;:::-;4719:62;;4804:6;4797:5;4790:21;4844:3;4835:6;4830:3;4826:16;4823:25;4820:45;;;4861:1;4858;4851:12;4820:45;4910:6;4905:3;4898:4;4891:5;4887:16;4874:43;4964:1;4957:4;4948:6;4941:5;4937:18;4933:29;4926:40;4634:338;;;;;:::o;4977:451::-;5046:6;5099:2;5087:9;5078:7;5074:23;5070:32;5067:52;;;5115:1;5112;5105:12;5067:52;5155:9;5142:23;5188:18;5180:6;5177:30;5174:50;;;5220:1;5217;5210:12;5174:50;5243:22;;5296:4;5288:13;;5284:27;-1:-1:-1;5274:55:1;;5325:1;5322;5315:12;5274:55;5348:74;5414:7;5409:2;5396:16;5391:2;5387;5383:11;5348:74;:::i;5766:812::-;5822:3;5850:6;5883:5;5877:12;5872:3;5865:25;5939:4;5932:5;5928:16;5922:23;5915:4;5910:3;5906:14;5899:47;5995:4;5988:5;5984:16;5978:23;5971:4;5966:3;5962:14;5955:47;6051:4;6044:5;6040:16;6034:23;6027:4;6022:3;6018:14;6011:47;6104:4;6097:5;6093:16;6087:23;6142:2;6135:4;6130:3;6126:14;6119:26;6166:56;6218:2;6213:3;6209:12;6195;6166:56;:::i;:::-;6154:68;;;6270:4;6263:5;6259:16;6253:23;6318:3;6312:4;6308:14;6301:4;6296:3;6292:14;6285:38;6346:50;6391:4;6375:14;6346:50;:::i;:::-;6449:4;6438:16;;;6432:23;-1:-1:-1;;;;;6428:49:1;6412:14;;;6405:73;6541:4;6530:16;;;6524:23;6517:31;6510:39;6494:14;;;;6487:63;;;;-1:-1:-1;6332:64:1;;5766:812;-1:-1:-1;;5766:812:1:o;6583:1664::-;6873:4;6902:2;6942;6931:9;6927:18;6972:2;6961:9;6954:21;6995:6;7030;7024:13;7061:6;7053;7046:22;7087:2;7077:12;;7120:2;7109:9;7105:18;7098:25;;7182:2;7172:6;7169:1;7165:14;7154:9;7150:30;7146:39;7204:4;7243:2;7235:6;7231:15;7264:1;7274:844;7288:6;7285:1;7282:13;7274:844;;;7381:2;7377:7;7365:9;7357:6;7353:22;7349:36;7344:3;7337:49;7415:6;7409:13;7445:4;7483:2;7477:9;7469:6;7462:25;7534:2;7530;7526:11;7520:18;7575:2;7570;7562:6;7558:15;7551:27;7605:59;7660:2;7652:6;7648:15;7634:12;7605:59;:::i;:::-;7591:73;;;7713:2;7709;7705:11;7699:18;7766:6;7758;7754:19;7749:2;7741:6;7737:15;7730:44;7801:52;7846:6;7830:14;7801:52;:::i;:::-;7787:66;;;7902:2;7898;7894:11;7888:18;7866:40;;7955:6;7947;7943:19;7938:2;7930:6;7926:15;7919:44;7986:52;8031:6;8015:14;7986:52;:::i;:::-;8096:12;;;;7976:62;-1:-1:-1;;;8061:15:1;;;;7310:1;7303:9;7274:844;;;-1:-1:-1;;8154:22:1;;;8134:18;;;8127:50;8194:47;8158:6;8226;8194:47;:::i;:::-;8186:55;6583:1664;-1:-1:-1;;;;;;;;;6583:1664:1:o;8252:1021::-;8336:6;8367:2;8410;8398:9;8389:7;8385:23;8381:32;8378:52;;;8426:1;8423;8416:12;8378:52;8466:9;8453:23;8495:18;8536:2;8528:6;8525:14;8522:34;;;8552:1;8549;8542:12;8522:34;8590:6;8579:9;8575:22;8565:32;;8635:7;8628:4;8624:2;8620:13;8616:27;8606:55;;8657:1;8654;8647:12;8606:55;8693:2;8680:16;8715:2;8711;8708:10;8705:36;;;8721:18;;:::i;:::-;8767:2;8764:1;8760:10;8750:20;;8790:28;8814:2;8810;8806:11;8790:28;:::i;:::-;8852:15;;;8922:11;;;8918:20;;;8883:12;;;;8950:19;;;8947:39;;;8982:1;8979;8972:12;8947:39;9006:11;;;;9026:217;9042:6;9037:3;9034:15;9026:217;;;9122:3;9109:17;9096:30;;9139:31;9164:5;9139:31;:::i;:::-;9183:18;;;9059:12;;;;9221;;;;9026:217;;;9262:5;8252:1021;-1:-1:-1;;;;;;;;8252:1021:1:o;9278:382::-;9343:6;9351;9404:2;9392:9;9383:7;9379:23;9375:32;9372:52;;;9420:1;9417;9410:12;9372:52;9459:9;9446:23;9478:31;9503:5;9478:31;:::i;:::-;9528:5;-1:-1:-1;9585:2:1;9570:18;;9557:32;9598:30;9557:32;9598:30;:::i;:::-;9647:7;9637:17;;;9278:382;;;;;:::o;9665:795::-;9760:6;9768;9776;9784;9837:3;9825:9;9816:7;9812:23;9808:33;9805:53;;;9854:1;9851;9844:12;9805:53;9893:9;9880:23;9912:31;9937:5;9912:31;:::i;:::-;9962:5;-1:-1:-1;10019:2:1;10004:18;;9991:32;10032:33;9991:32;10032:33;:::i;:::-;10084:7;-1:-1:-1;10138:2:1;10123:18;;10110:32;;-1:-1:-1;10193:2:1;10178:18;;10165:32;10220:18;10209:30;;10206:50;;;10252:1;10249;10242:12;10206:50;10275:22;;10328:4;10320:13;;10316:27;-1:-1:-1;10306:55:1;;10357:1;10354;10347:12;10306:55;10380:74;10446:7;10441:2;10428:16;10423:2;10419;10415:11;10380:74;:::i;:::-;10370:84;;;9665:795;;;;;;;:::o;10465:388::-;10533:6;10541;10594:2;10582:9;10573:7;10569:23;10565:32;10562:52;;;10610:1;10607;10600:12;10562:52;10649:9;10636:23;10668:31;10693:5;10668:31;:::i;:::-;10718:5;-1:-1:-1;10775:2:1;10760:18;;10747:32;10788:33;10747:32;10788:33;:::i;10858:248::-;10926:6;10934;10987:2;10975:9;10966:7;10962:23;10958:32;10955:52;;;11003:1;11000;10993:12;10955:52;-1:-1:-1;;11026:23:1;;;11096:2;11081:18;;;11068:32;;-1:-1:-1;10858:248:1:o;11111:380::-;11190:1;11186:12;;;;11233;;;11254:61;;11308:4;11300:6;11296:17;11286:27;;11254:61;11361:2;11353:6;11350:14;11330:18;11327:38;11324:161;;;11407:10;11402:3;11398:20;11395:1;11388:31;11442:4;11439:1;11432:15;11470:4;11467:1;11460:15;11324:161;;11111:380;;;:::o;12492:327::-;12694:2;12676:21;;;12733:1;12713:18;;;12706:29;-1:-1:-1;;;12766:2:1;12751:18;;12744:34;12810:2;12795:18;;12492:327::o;14153:127::-;14214:10;14209:3;14205:20;14202:1;14195:31;14245:4;14242:1;14235:15;14269:4;14266:1;14259:15;14285:128;14325:3;14356:1;14352:6;14349:1;14346:13;14343:39;;;14362:18;;:::i;:::-;-1:-1:-1;14398:9:1;;14285:128::o;14750:127::-;14811:10;14806:3;14802:20;14799:1;14792:31;14842:4;14839:1;14832:15;14866:4;14863:1;14856:15;15214:184;15284:6;15337:2;15325:9;15316:7;15312:23;15308:32;15305:52;;;15353:1;15350;15343:12;15305:52;-1:-1:-1;15376:16:1;;15214:184;-1:-1:-1;15214:184:1:o;16758:273::-;16826:6;16879:2;16867:9;16858:7;16854:23;16850:32;16847:52;;;16895:1;16892;16885:12;16847:52;16927:9;16921:16;16977:4;16970:5;16966:16;16959:5;16956:27;16946:55;;16997:1;16994;16987:12;17036:636;17116:6;17169:2;17157:9;17148:7;17144:23;17140:32;17137:52;;;17185:1;17182;17175:12;17137:52;17218:9;17212:16;17251:18;17243:6;17240:30;17237:50;;;17283:1;17280;17273:12;17237:50;17306:22;;17359:4;17351:13;;17347:27;-1:-1:-1;17337:55:1;;17388:1;17385;17378:12;17337:55;17417:2;17411:9;17442:49;17458:32;17487:2;17458:32;:::i;17442:49::-;17514:2;17507:5;17500:17;17554:7;17549:2;17544;17540;17536:11;17532:20;17529:33;17526:53;;;17575:1;17572;17565:12;17526:53;17588:54;17639:2;17634;17627:5;17623:14;17618:2;17614;17610:11;17588:54;:::i;:::-;17661:5;17036:636;-1:-1:-1;;;;;17036:636:1:o;17677:135::-;17716:3;-1:-1:-1;;17737:17:1;;17734:43;;;17757:18;;:::i;:::-;-1:-1:-1;17804:1:1;17793:13;;17677:135::o;19607:185::-;19649:3;19687:5;19681:12;19702:52;19747:6;19742:3;19735:4;19728:5;19724:16;19702:52;:::i;:::-;19770:16;;;;;19607:185;-1:-1:-1;;19607:185:1:o;19797:1174::-;19973:3;20002:1;20035:6;20029:13;20065:3;20087:1;20115:9;20111:2;20107:18;20097:28;;20175:2;20164:9;20160:18;20197;20187:61;;20241:4;20233:6;20229:17;20219:27;;20187:61;20267:2;20315;20307:6;20304:14;20284:18;20281:38;20278:165;;;-1:-1:-1;;;20342:33:1;;20398:4;20395:1;20388:15;20428:4;20349:3;20416:17;20278:165;20459:18;20486:104;;;;20604:1;20599:320;;;;20452:467;;20486:104;-1:-1:-1;;20519:24:1;;20507:37;;20564:16;;;;-1:-1:-1;20486:104:1;;20599:320;19554:1;19547:14;;;19591:4;19578:18;;20694:1;20708:165;20722:6;20719:1;20716:13;20708:165;;;20800:14;;20787:11;;;20780:35;20843:16;;;;20737:10;;20708:165;;;20712:3;;20902:6;20897:3;20893:16;20886:23;;20452:467;;;;;;;20935:30;20961:3;20953:6;20935:30;:::i;21308:422::-;21397:1;21440:5;21397:1;21454:270;21475:7;21465:8;21462:21;21454:270;;;21534:4;21530:1;21526:6;21522:17;21516:4;21513:27;21510:53;;;21543:18;;:::i;:::-;21593:7;21583:8;21579:22;21576:55;;;21613:16;;;;21576:55;21692:22;;;;21652:15;;;;21454:270;;;21458:3;21308:422;;;;;:::o;21735:806::-;21784:5;21814:8;21804:80;;-1:-1:-1;21855:1:1;21869:5;;21804:80;21903:4;21893:76;;-1:-1:-1;21940:1:1;21954:5;;21893:76;21985:4;22003:1;21998:59;;;;22071:1;22066:130;;;;21978:218;;21998:59;22028:1;22019:10;;22042:5;;;22066:130;22103:3;22093:8;22090:17;22087:43;;;22110:18;;:::i;:::-;-1:-1:-1;;22166:1:1;22152:16;;22181:5;;21978:218;;22280:2;22270:8;22267:16;22261:3;22255:4;22252:13;22248:36;22242:2;22232:8;22229:16;22224:2;22218:4;22215:12;22211:35;22208:77;22205:159;;;-1:-1:-1;22317:19:1;;;22349:5;;22205:159;22396:34;22421:8;22415:4;22396:34;:::i;:::-;22466:6;22462:1;22458:6;22454:19;22445:7;22442:32;22439:58;;;22477:18;;:::i;:::-;22515:20;;21735:806;-1:-1:-1;;;21735:806:1:o;22546:140::-;22604:5;22633:47;22674:4;22664:8;22660:19;22654:4;22633:47;:::i;24019:125::-;24059:4;24087:1;24084;24081:8;24078:34;;;24092:18;;:::i;:::-;-1:-1:-1;24129:9:1;;24019:125::o;24428:168::-;24468:7;24534:1;24530;24526:6;24522:14;24519:1;24516:21;24511:1;24504:9;24497:17;24493:45;24490:71;;;24541:18;;:::i;:::-;-1:-1:-1;24581:9:1;;24428:168::o;24601:127::-;24662:10;24657:3;24653:20;24650:1;24643:31;24693:4;24690:1;24683:15;24717:4;24714:1;24707:15;24733:120;24773:1;24799;24789:35;;24804:18;;:::i;:::-;-1:-1:-1;24838:9:1;;24733:120::o;26510:112::-;26542:1;26568;26558:35;;26573:18;;:::i;:::-;-1:-1:-1;26607:9:1;;26510:112::o;26959:245::-;27026:6;27079:2;27067:9;27058:7;27054:23;27050:32;27047:52;;;27095:1;27092;27085:12;27047:52;27127:9;27121:16;27146:28;27168:5;27146:28;:::i;27539:500::-;-1:-1:-1;;;;;27808:15:1;;;27790:34;;27860:15;;27855:2;27840:18;;27833:43;27907:2;27892:18;;27885:34;;;27955:3;27950:2;27935:18;;27928:31;;;27733:4;;27976:57;;28013:19;;28005:6;27976:57;:::i;:::-;27968:65;27539:500;-1:-1:-1;;;;;;27539:500:1:o;28044:249::-;28113:6;28166:2;28154:9;28145:7;28141:23;28137:32;28134:52;;;28182:1;28179;28172:12;28134:52;28214:9;28208:16;28233:30;28257:5;28233:30;:::i;28717:127::-;28778:10;28773:3;28769:20;28766:1;28759:31;28809:4;28806:1;28799:15;28833:4;28830:1;28823:15;30177:274;30306:3;30344:6;30338:13;30360:53;30406:6;30401:3;30394:4;30386:6;30382:17;30360:53;:::i;:::-;30429:16;;;;;30177:274;-1:-1:-1;;30177:274:1:o

Swarm Source

ipfs://d9ea771dff114be87a648bea2e33ccb208ec7eac197cd16019fa95eb88055068
Block Transaction Gas Used Reward
Age Block Fee Address Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading