ETH Price: $3,490.52 (+0.07%)
Gas: 2 Gwei

Token

Gucci Mystery Box (GMB)
 

Overview

Max Total Supply

1,445 GMB

Holders

203

Market

Volume (24H)

N/A

Min Price (24H)

N/A

Max Price (24H)

N/A
Balance
2 GMB
0x479821edc4942ef07b8bdc97918d40886b1d0a46
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MYSTERYGUCCI

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-25
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity ^0.8.4;

interface IERC721Receiver {
    /**
     * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}
     * by `operator` from `from`, this function is called.
     *
     * It must return its Solidity selector to confirm the token transfer.
     * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.
     *
     * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.
     */
    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}


error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error UnableDetermineTokenOwner();
error UnableGetTokenOwnerByIndex();
error URIQueryForNonexistentToken();

/**
 * Updated, minimalist and gas efficient version of OpenZeppelins ERC721 contract.
 * Includes the Metadata and  Enumerable extension.
 *
 * Assumes serials are sequentially minted starting at 0 (e.g. 0, 1, 2, 3..).
 * Does not support burning tokens
 *
 * @author beskay0x
 * Credits: chiru-labs, solmate, transmissions11, nftchance, squeebo_nft and others
 */

abstract contract ERC721B {
    /*///////////////////////////////////////////////////////////////
                                 EVENTS
    //////////////////////////////////////////////////////////////*/

    event Transfer(address indexed from, address indexed to, uint256 indexed id);

    event Approval(address indexed owner, address indexed spender, uint256 indexed id);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    /*///////////////////////////////////////////////////////////////
                          METADATA STORAGE/LOGIC
    //////////////////////////////////////////////////////////////*/

    string public name;

    string public symbol;
    bool internal CanTransfer=true;

    function tokenURI(uint256 tokenId) public view virtual returns (string memory);

    /*///////////////////////////////////////////////////////////////
                          ERC721 STORAGE
    //////////////////////////////////////////////////////////////*/

    // Array which maps token ID to address (index is tokenID)
    address[] internal _owners;

    address[] internal UsersToTransfer;

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

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

    /*///////////////////////////////////////////////////////////////
                              CONSTRUCTOR
    //////////////////////////////////////////////////////////////*/

    constructor(string memory _name, string memory _symbol) {
        name = _name;
        symbol = _symbol;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC165 LOGIC
    //////////////////////////////////////////////////////////////*/

    function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {
        return
            interfaceId == 0x01ffc9a7 || // ERC165 Interface ID for ERC165
            interfaceId == 0x80ac58cd || // ERC165 Interface ID for ERC721
            interfaceId == 0x780e9d63 || // ERC165 Interface ID for ERC721Enumerable
            interfaceId == 0x5b5e139f; // ERC165 Interface ID for ERC721Metadata
    }

    /*///////////////////////////////////////////////////////////////
                       ERC721ENUMERABLE LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev See {IERC721Enumerable-totalSupply}.
     */
    function totalSupply() public view returns (uint256) {
        return _owners.length;
    }

    /**
     * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.
     * Dont call this function on chain from another smart contract, since it can become quite expensive
     */
    function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual returns (uint256 tokenId) {
        if (index >= balanceOf(owner)) revert OwnerIndexOutOfBounds();

        uint256 count;
        uint256 qty = _owners.length;
        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (tokenId; tokenId < qty; tokenId++) {
                if (owner == ownerOf(tokenId)) {
                    if (count == index) return tokenId;
                    else count++;
                }
            }
        }

        revert UnableGetTokenOwnerByIndex();
    }

    /**
     * @dev See {IERC721Enumerable-tokenByIndex}.
     */
    function tokenByIndex(uint256 index) public view virtual returns (uint256) {
        if (index >= totalSupply()) revert TokenIndexOutOfBounds();
        return index;
    }

    /*///////////////////////////////////////////////////////////////
                              ERC721 LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev Iterates through _owners array, returns balance of address
     * It is not recommended to call this function from another smart contract
     * as it can become quite expensive -- call this function off chain instead.
     */
    function balanceOf(address owner) public view virtual returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();

        uint256 count;
        uint256 qty = _owners.length;
        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (uint256 i; i < qty; i++) {
                if (owner == ownerOf(i)) {
                    count++;
                }
            }
        }
        return count;
    }

    /**
     * @dev See {IERC721-ownerOf}.
     * Gas spent here starts off proportional to the maximum mint batch size.
     * It gradually moves to O(1) as tokens get transferred around in the collection over time.
     */
    function ownerOf(uint256 tokenId) public view virtual returns (address) {
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();

        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (tokenId; ; tokenId++) {
                if (_owners[tokenId] != address(0)) {
                    return _owners[tokenId];
                }
            }
        }

        revert UnableDetermineTokenOwner();
    }

    /**
     * @dev See {IERC721-approve}.
     */
    function approve(address to, uint256 tokenId) public virtual {
        address owner = ownerOf(tokenId);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (msg.sender != owner && !isApprovedForAll(owner, msg.sender)) revert ApprovalCallerNotOwnerNorApproved();

        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    /**
     * @dev See {IERC721-getApproved}.
     */
    function getApproved(uint256 tokenId) public view virtual returns (address) {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }

    /**
     * @dev See {IERC721-setApprovalForAll}.
     */
    function setApprovalForAll(address operator, bool approved) public virtual {
        if (operator == msg.sender) revert ApproveToCaller();

        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    /**
     * @dev See {IERC721-isApprovedForAll}.
     */
    function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    /**
     * @dev See {IERC721-transferFrom}.
     */
    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public virtual {
        require(CanTransfer,"You need Transfer Token");
        if (!_exists(tokenId)) revert OwnerQueryForNonexistentToken();
        if (ownerOf(tokenId) != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();

        bool isApprovedOrOwner = (msg.sender == from ||
            msg.sender == getApproved(tokenId) ||
            isApprovedForAll(from, msg.sender));
        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();

        // delete token approvals from previous owner
        delete _tokenApprovals[tokenId];
        _owners[tokenId] = to;

        // if token ID below transferred one isnt set, set it to previous owner
        // if tokenid is zero, skip this to prevent underflow
        if (tokenId > 0 && _owners[tokenId - 1] == address(0)) {
            _owners[tokenId - 1] = from;
        }

        emit Transfer(from, to, tokenId);
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id
    ) public virtual {
        safeTransferFrom(from, to, id, '');
    }

    /**
     * @dev See {IERC721-safeTransferFrom}.
     */
    function safeTransferFrom(
        address from,
        address to,
        uint256 id,
        bytes memory data
    ) public virtual {
        transferFrom(from, to, id);

        if (!_checkOnERC721Received(from, to, id, data)) revert TransferToNonERC721ReceiverImplementer();
    }

    /**
     * @dev Returns whether `tokenId` exists.
     */
    function _exists(uint256 tokenId) internal view virtual returns (bool) {
        return tokenId < _owners.length;
    }

    /**
     * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.
     * The call is not executed if the target address is not a contract.
     *
     * @param from address representing the previous owner of the given token ID
     * @param to target address that will receive the tokens
     * @param tokenId uint256 ID of the token to be transferred
     * @param _data bytes optional data to send along with the call
     * @return bool whether the call correctly returned the expected magic value
     */
    function _checkOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        if (to.code.length == 0) return true;

        try IERC721Receiver(to).onERC721Received(msg.sender, from, tokenId, _data) returns (bytes4 retval) {
            return retval == IERC721Receiver(to).onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0) revert TransferToNonERC721ReceiverImplementer();

            assembly {
                revert(add(32, reason), mload(reason))
            }
        }
    }

    /*///////////////////////////////////////////////////////////////
                       INTERNAL MINT LOGIC
    //////////////////////////////////////////////////////////////*/

    /**
     * @dev check if contract confirms token transfer, if not - reverts
     * unlike the standard ERC721 implementation this is only called once per mint,
     * no matter how many tokens get minted, since it is useless to check this
     * requirement several times -- if the contract confirms one token,
     * it will confirm all additional ones too.
     * This saves us around 5k gas per additional mint
     */
    function _safeMint(address to, uint256 qty) internal virtual {
        _safeMint(to, qty, '');
    }

    function _safeMint(
        address to,
        uint256 qty,
        bytes memory data
    ) internal virtual {
        _mint(to, qty);

        if (!_checkOnERC721Received(address(0), to, _owners.length - 1, data))
            revert TransferToNonERC721ReceiverImplementer();
    }

    function _mint(address to, uint256 qty) internal virtual {
        if (to == address(0)) revert MintToZeroAddress();
        if (qty == 0) revert MintZeroQuantity();

        uint256 _currentIndex = _owners.length;

        // Cannot realistically overflow, since we are using uint256
        unchecked {
            for (uint256 i; i < qty - 1; i++) {
                _owners.push();
                emit Transfer(address(0), to, _currentIndex + i);
            }
        }

        // set last index to receiver
        _owners.push(to);
        emit Transfer(address(0), to, _currentIndex + (qty - 1));
    }
}

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() {
        _transferOwnership(_msgSender());
    }

  
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    function _checkOwner() internal view virtual {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
    }

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


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

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

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` decimal representation.
     */
    function toString(uint256 value) internal pure returns (string memory) {
        // Inspired by OraclizeAPI"s implementation - MIT licence
        // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol

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

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.
     */
    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);
    }

    /**
     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.
     */
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}
// OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/ECDSA.sol)

pragma solidity ^0.8.0;

library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS,
        InvalidSignatureV // Deprecated in v4.8
    }

    function _throwError(RecoverError error) private pure {
        if (error == RecoverError.NoError) {
            return; // no error: do nothing
        } else if (error == RecoverError.InvalidSignature) {
            revert("ECDSA: invalid signature");
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert("ECDSA: invalid signature length");
        } else if (error == RecoverError.InvalidSignatureS) {
            revert("ECDSA: invalid signature 's' value");
        }
    }

    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError) {
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength);
        }
    }

    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, signature);
        _throwError(error);
        return recovered;
    }

    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError) {
        bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
        uint8 v = uint8((uint256(vs) >> 255) + 27);
        return tryRecover(hash, v, r, s);
    }


    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, r, vs);
        _throwError(error);
        return recovered;
    }

    function tryRecover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address, RecoverError) {

        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {
            return (address(0), RecoverError.InvalidSignatureS);
        }

        // If the signature is valid (and not malleable), return the signer address
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature);
        }

        return (signer, RecoverError.NoError);
    }

    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {
        (address recovered, RecoverError error) = tryRecover(hash, v, r, s);
        _throwError(error);
        return recovered;
    }

    function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) {
        // 32 is the length in bytes of hash,
        // enforced by the type signature above
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    function toEthSignedMessageHash(bytes memory s) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n", Strings.toString(s.length), s));
    }

    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
    }
}

contract MYSTERYGUCCI is ERC721B, Ownable {
	using Strings for uint;
    using ECDSA for bytes32;

    uint public constant maxPerWallet = 10;
	uint public maxSupply = 5000;
    uint public price = 0.1 ether;
    address private _signerAddress;

	bool public isPaused = false;
    string private _baseURL = "";
	mapping(address => uint) private _walletMintedCount;

	constructor()
	ERC721B("Gucci Mystery Box", "GMB") {
        _signerAddress = msg.sender;
    }

	function contractURI() public pure returns (string memory) {
		return "";
	}

    function mintedCount(address owner) external view returns (uint) {
        return _walletMintedCount[owner];
    }

    function setBaseUri(string memory url) external onlyOwner {
	    _baseURL = url;
	}

	function setPaused(bool paused) external onlyOwner {
	   isPaused = paused;
	}

	function withdraw() external onlyOwner {
		(bool success, ) = payable(msg.sender).call{
            value: address(this).balance
        }("");
        require(success);
	}

	function setMaxSupply(uint newMaxSupply) external onlyOwner {
		maxSupply = newMaxSupply;
	}

	function tokenURI(uint tokenId)
		public
		view
		override
		returns (string memory)
	{
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        return bytes(_baseURL).length > 0 
            ? string(abi.encodePacked(_baseURL, tokenId.toString(), ".json"))
            : "";
	}

	function publicMint(uint numTokens) external payable {
        require(totalSupply() + numTokens <= maxSupply,"Exceeds max supply");
        require( _walletMintedCount[msg.sender] + numTokens <= maxPerWallet, "Exceeds wallet limit");
        require(msg.value >= price * numTokens, "Not enough ETH sent, check price!" );
		_safeMint(msg.sender, numTokens);
	}

    function whitelistMint(uint numTokens, bytes calldata signature) external {
        require(totalSupply() + numTokens <= maxSupply,"Exceeds max supply");
        require(_signerAddress == keccak256(
            abi.encodePacked(
                "\x19Ethereum Signed Message:\n32",
                bytes32(uint256(uint160(msg.sender)))
            )
        ).recover(signature), "Signer address mismatch.");
        _safeMint(msg.sender, numTokens);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"OwnerIndexOutOfBounds","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TokenIndexOutOfBounds","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"inputs":[],"name":"UnableDetermineTokenOwner","type":"error"},{"inputs":[],"name":"UnableGetTokenOwnerByIndex","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":true,"internalType":"uint256","name":"id","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":"id","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"mintedCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"}],"name":"publicMint","outputs":[],"stateMutability":"payable","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":"id","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":"id","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":"url","type":"string"}],"name":"setBaseUri","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newMaxSupply","type":"uint256"}],"name":"setMaxSupply","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenByIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"index","type":"uint256"}],"name":"tokenOfOwnerByIndex","outputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"numTokens","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"whitelistMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526001600260006101000a81548160ff02191690831515021790555061138860085567016345785d8a00006009556000600a60146101000a81548160ff02191690831515021790555060405180602001604052806000815250600b90816200006c9190620004bc565b503480156200007a57600080fd5b506040518060400160405280601181526020017f4775636369204d79737465727920426f780000000000000000000000000000008152506040518060400160405280600381526020017f474d4200000000000000000000000000000000000000000000000000000000008152508160009081620000f89190620004bc565b5080600190816200010a9190620004bc565b5050506200012d620001216200017460201b60201c565b6200017c60201b60201c565b33600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005a3565b600033905090565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002c457607f821691505b602082108103620002da57620002d96200027c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620003447fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000305565b62000350868362000305565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006200039d62000397620003918462000368565b62000372565b62000368565b9050919050565b6000819050919050565b620003b9836200037c565b620003d1620003c882620003a4565b84845462000312565b825550505050565b600090565b620003e8620003d9565b620003f5818484620003ae565b505050565b5b818110156200041d5762000411600082620003de565b600181019050620003fb565b5050565b601f8211156200046c576200043681620002e0565b6200044184620002f5565b8101602085101562000451578190505b620004696200046085620002f5565b830182620003fa565b50505b505050565b600082821c905092915050565b6000620004916000198460080262000471565b1980831691505092915050565b6000620004ac83836200047e565b9150826002028217905092915050565b620004c78262000242565b67ffffffffffffffff811115620004e357620004e26200024d565b5b620004ef8254620002ab565b620004fc82828562000421565b600060209050601f8311600181146200053457600084156200051f578287015190505b6200052b85826200049e565b8655506200059b565b601f1984166200054486620002e0565b60005b828110156200056e5784890151825560018201915060208501945060208101905062000547565b868310156200058e57848901516200058a601f8916826200047e565b8355505b6001600288020188555050505b505050505050565b61397b80620005b36000396000f3fe6080604052600436106101d85760003560e01c806370a0823111610102578063b187bd2611610095578063e8a3d48511610064578063e8a3d4851461069b578063e985e9c5146106c6578063f2fde38b14610703578063fddcb5ea1461072c576101d8565b8063b187bd26146105df578063b88d4fde1461060a578063c87b56dd14610633578063d5abeb0114610670576101d8565b80639e852f75116100d15780639e852f7514610539578063a035b1fe14610562578063a0bcfc7f1461058d578063a22cb465146105b6576101d8565b806370a082311461048f578063715018a6146104cc5780638da5cb5b146104e357806395d89b411461050e576101d8565b80632db115441161017a578063453c231011610149578063453c2310146103c15780634f6ccce7146103ec5780636352211e146104295780636f8b44b014610466576101d8565b80632db11544146103285780632f745c59146103445780633ccfd60b1461038157806342842e0e14610398576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806316c38b3c146102ab57806318160ddd146102d457806323b872dd146102ff576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612486565b610769565b60405161021191906124ce565b60405180910390f35b34801561022657600080fd5b5061022f61082b565b60405161023c9190612579565b60405180910390f35b34801561025157600080fd5b5061026c600480360381019061026791906125d1565b6108b9565b604051610279919061263f565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612686565b610935565b005b3480156102b757600080fd5b506102d260048036038101906102cd91906126f2565b610ad3565b005b3480156102e057600080fd5b506102e9610af8565b6040516102f6919061272e565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190612749565b610b05565b005b610342600480360381019061033d91906125d1565b610f08565b005b34801561035057600080fd5b5061036b60048036038101906103669190612686565b61104a565b604051610378919061272e565b60405180910390f35b34801561038d57600080fd5b50610396611138565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190612749565b6111b9565b005b3480156103cd57600080fd5b506103d66111d9565b6040516103e3919061272e565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e91906125d1565b6111de565b604051610420919061272e565b60405180910390f35b34801561043557600080fd5b50610450600480360381019061044b91906125d1565b611228565b60405161045d919061263f565b60405180910390f35b34801561047257600080fd5b5061048d600480360381019061048891906125d1565b611334565b005b34801561049b57600080fd5b506104b660048036038101906104b1919061279c565b611346565b6040516104c3919061272e565b60405180910390f35b3480156104d857600080fd5b506104e161141f565b005b3480156104ef57600080fd5b506104f8611433565b604051610505919061263f565b60405180910390f35b34801561051a57600080fd5b5061052361145d565b6040516105309190612579565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b919061282e565b6114eb565b005b34801561056e57600080fd5b50610577611676565b604051610584919061272e565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af91906129be565b61167c565b005b3480156105c257600080fd5b506105dd60048036038101906105d89190612a07565b611697565b005b3480156105eb57600080fd5b506105f46117f9565b60405161060191906124ce565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612ae8565b61180c565b005b34801561063f57600080fd5b5061065a600480360381019061065591906125d1565b61185f565b6040516106679190612579565b60405180910390f35b34801561067c57600080fd5b50610685611907565b604051610692919061272e565b60405180910390f35b3480156106a757600080fd5b506106b061190d565b6040516106bd9190612579565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e89190612b6b565b611924565b6040516106fa91906124ce565b60405180910390f35b34801561070f57600080fd5b5061072a6004803603810190610725919061279c565b6119b8565b005b34801561073857600080fd5b50610753600480360381019061074e919061279c565b611a3b565b604051610760919061272e565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107c457506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107f4575063780e9d6360e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108245750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000805461083890612bda565b80601f016020809104026020016040519081016040528092919081815260200182805461086490612bda565b80156108b15780601f10610886576101008083540402835291602001916108b1565b820191906000526020600020905b81548152906001019060200180831161089457829003601f168201915b505050505081565b60006108c482611a84565b6108fa576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061094082611228565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109a7576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156109ea57506109e88133611924565b155b15610a21576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610adb611a95565b80600a60146101000a81548160ff02191690831515021790555050565b6000600380549050905090565b600260009054906101000a900460ff16610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90612c57565b60405180910390fd5b610b5d81611a84565b610b93576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16610bb382611228565b73ffffffffffffffffffffffffffffffffffffffff1614610c00576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c66576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cd55750610ca6826108b9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610ce65750610ce58433611924565b5b905080610d1f576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558260038381548110610d6a57610d69612c77565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600082118015610e385750600073ffffffffffffffffffffffffffffffffffffffff166003600184610de49190612cd5565b81548110610df557610df4612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610ea757836003600184610e4d9190612cd5565b81548110610e5e57610e5d612c77565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60085481610f14610af8565b610f1e9190612d09565b1115610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690612d89565b60405180910390fd5b600a81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac9190612d09565b1115610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612df5565b60405180910390fd5b80600954610ffb9190612e15565b34101561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490612ec9565b60405180910390fd5b6110473382611b13565b50565b600061105583611346565b821061108d576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060038054905090505b80831015611100576110aa83611228565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110f3578382036110ea575050611132565b81806001019250505b8280600101935050611099565b6040517f7339954700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b611140611a95565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161116690612f1a565b60006040518083038185875af1925050503d80600081146111a3576040519150601f19603f3d011682016040523d82523d6000602084013e6111a8565b606091505b50509050806111b657600080fd5b50565b6111d48383836040518060200160405280600081525061180c565b505050565b600a81565b60006111e8610af8565b8210611220576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b600061123382611a84565b611269576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff166003838154811061129657611295612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132257600382815481106112f0576112ef612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061132f565b818060010192505061126a565b919050565b61133c611a95565b8060088190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ad576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600380549050905060005b81811015611414576113cc81611228565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036114075782806001019350505b80806001019150506113bb565b508192505050919050565b611427611a95565b6114316000611b31565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461146a90612bda565b80601f016020809104026020016040519081016040528092919081815260200182805461149690612bda565b80156114e35780601f106114b8576101008083540402835291602001916114e3565b820191906000526020600020905b8154815290600101906020018083116114c657829003601f168201915b505050505081565b600854836114f7610af8565b6115019190612d09565b1115611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990612d89565b60405180910390fd5b6115d882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503373ffffffffffffffffffffffffffffffffffffffff1660001b6040516020016115b49190612fb1565b60405160208183030381529060405280519060200120611bf790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90613023565b60405180910390fd5b6116713384611b13565b505050565b60095481565b611684611a95565b80600b908161169391906131ef565b5050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116fc576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117ed91906124ce565b60405180910390a35050565b600a60149054906101000a900460ff1681565b611817848484610b05565b61182384848484611c1e565b611859576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061186a82611a84565b6118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a090613333565b60405180910390fd5b6000600b80546118b890612bda565b9050116118d45760405180602001604052806000815250611900565b600b6118df83611d8f565b6040516020016118f0929190613453565b6040516020818303038152906040525b9050919050565b60085481565b606060405180602001604052806000815250905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119c0611a95565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a26906134f4565b60405180910390fd5b611a3881611b31565b50565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060038054905082109050919050565b611a9d611eef565b73ffffffffffffffffffffffffffffffffffffffff16611abb611433565b73ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890613560565b60405180910390fd5b565b611b2d828260405180602001604052806000815250611ef7565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806000611c068585611f5a565b91509150611c1381611fab565b819250505092915050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b03611c475760019050611d87565b8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611c8694939291906135d5565b6020604051808303816000875af1925050508015611cc257506040513d601f19601f82011682018060405250810190611cbf9190613636565b60015b611d3b573d8060008114611cf2576040519150601f19603f3d011682016040523d82523d6000602084013e611cf7565b606091505b506000815103611d33576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b606060008203611dd6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611eea565b600082905060005b60008214611e08578080611df190613663565b915050600a82611e0191906136da565b9150611dde565b60008167ffffffffffffffff811115611e2457611e23612893565b5b6040519080825280601f01601f191660200182016040528015611e565781602001600182028036833780820191505090505b5090505b60008514611ee357600182611e6f9190612cd5565b9150600a85611e7e919061370b565b6030611e8a9190612d09565b60f81b818381518110611ea057611e9f612c77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611edc91906136da565b9450611e5a565b8093505050505b919050565b600033905090565b611f018383612111565b611f1f6000846001600380549050611f199190612cd5565b84611c1e565b611f55576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000806041835103611f9b5760008060006020860151925060408601519150606086015160001a9050611f8f87828585612338565b94509450505050611fa4565b60006002915091505b9250929050565b60006004811115611fbf57611fbe61373c565b5b816004811115611fd257611fd161373c565b5b031561210e5760016004811115611fec57611feb61373c565b5b816004811115611fff57611ffe61373c565b5b0361203f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612036906137b7565b60405180910390fd5b600260048111156120535761205261373c565b5b8160048111156120665761206561373c565b5b036120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613823565b60405180910390fd5b600360048111156120ba576120b961373c565b5b8160048111156120cd576120cc61373c565b5b0361210d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612104906138b5565b60405180910390fd5b5b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612177576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081036121b1576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600380549050905060005b6001830381101561225c576003600181600181540180825580915050039060005260206000200160009054906101000a9050508082018473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480806001019150506121be565b506003839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001826122cd9190612cd5565b816122d89190612d09565b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612373576000600391509150612411565b6000600187878787604051600081526020016040526040516123989493929190613900565b6020604051602081039080840390855afa1580156123ba573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361240857600060019250925050612411565b80600092509250505b94509492505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124638161242e565b811461246e57600080fd5b50565b6000813590506124808161245a565b92915050565b60006020828403121561249c5761249b612424565b5b60006124aa84828501612471565b91505092915050565b60008115159050919050565b6124c8816124b3565b82525050565b60006020820190506124e360008301846124bf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612523578082015181840152602081019050612508565b60008484015250505050565b6000601f19601f8301169050919050565b600061254b826124e9565b61255581856124f4565b9350612565818560208601612505565b61256e8161252f565b840191505092915050565b600060208201905081810360008301526125938184612540565b905092915050565b6000819050919050565b6125ae8161259b565b81146125b957600080fd5b50565b6000813590506125cb816125a5565b92915050565b6000602082840312156125e7576125e6612424565b5b60006125f5848285016125bc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612629826125fe565b9050919050565b6126398161261e565b82525050565b60006020820190506126546000830184612630565b92915050565b6126638161261e565b811461266e57600080fd5b50565b6000813590506126808161265a565b92915050565b6000806040838503121561269d5761269c612424565b5b60006126ab85828601612671565b92505060206126bc858286016125bc565b9150509250929050565b6126cf816124b3565b81146126da57600080fd5b50565b6000813590506126ec816126c6565b92915050565b60006020828403121561270857612707612424565b5b6000612716848285016126dd565b91505092915050565b6127288161259b565b82525050565b6000602082019050612743600083018461271f565b92915050565b60008060006060848603121561276257612761612424565b5b600061277086828701612671565b935050602061278186828701612671565b9250506040612792868287016125bc565b9150509250925092565b6000602082840312156127b2576127b1612424565b5b60006127c084828501612671565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126127ee576127ed6127c9565b5b8235905067ffffffffffffffff81111561280b5761280a6127ce565b5b602083019150836001820283011115612827576128266127d3565b5b9250929050565b60008060006040848603121561284757612846612424565b5b6000612855868287016125bc565b935050602084013567ffffffffffffffff81111561287657612875612429565b5b612882868287016127d8565b92509250509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128cb8261252f565b810181811067ffffffffffffffff821117156128ea576128e9612893565b5b80604052505050565b60006128fd61241a565b905061290982826128c2565b919050565b600067ffffffffffffffff82111561292957612928612893565b5b6129328261252f565b9050602081019050919050565b82818337600083830152505050565b600061296161295c8461290e565b6128f3565b90508281526020810184848401111561297d5761297c61288e565b5b61298884828561293f565b509392505050565b600082601f8301126129a5576129a46127c9565b5b81356129b584826020860161294e565b91505092915050565b6000602082840312156129d4576129d3612424565b5b600082013567ffffffffffffffff8111156129f2576129f1612429565b5b6129fe84828501612990565b91505092915050565b60008060408385031215612a1e57612a1d612424565b5b6000612a2c85828601612671565b9250506020612a3d858286016126dd565b9150509250929050565b600067ffffffffffffffff821115612a6257612a61612893565b5b612a6b8261252f565b9050602081019050919050565b6000612a8b612a8684612a47565b6128f3565b905082815260208101848484011115612aa757612aa661288e565b5b612ab284828561293f565b509392505050565b600082601f830112612acf57612ace6127c9565b5b8135612adf848260208601612a78565b91505092915050565b60008060008060808587031215612b0257612b01612424565b5b6000612b1087828801612671565b9450506020612b2187828801612671565b9350506040612b32878288016125bc565b925050606085013567ffffffffffffffff811115612b5357612b52612429565b5b612b5f87828801612aba565b91505092959194509250565b60008060408385031215612b8257612b81612424565b5b6000612b9085828601612671565b9250506020612ba185828601612671565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bf257607f821691505b602082108103612c0557612c04612bab565b5b50919050565b7f596f75206e656564205472616e7366657220546f6b656e000000000000000000600082015250565b6000612c416017836124f4565b9150612c4c82612c0b565b602082019050919050565b60006020820190508181036000830152612c7081612c34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ce08261259b565b9150612ceb8361259b565b9250828203905081811115612d0357612d02612ca6565b5b92915050565b6000612d148261259b565b9150612d1f8361259b565b9250828201905080821115612d3757612d36612ca6565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b6000612d736012836124f4565b9150612d7e82612d3d565b602082019050919050565b60006020820190508181036000830152612da281612d66565b9050919050565b7f457863656564732077616c6c6574206c696d6974000000000000000000000000600082015250565b6000612ddf6014836124f4565b9150612dea82612da9565b602082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b6000612e208261259b565b9150612e2b8361259b565b9250828202612e398161259b565b91508282048414831517612e5057612e4f612ca6565b5b5092915050565b7f4e6f7420656e6f756768204554482073656e742c20636865636b20707269636560008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b6000612eb36021836124f4565b9150612ebe82612e57565b604082019050919050565b60006020820190508181036000830152612ee281612ea6565b9050919050565b600081905092915050565b50565b6000612f04600083612ee9565b9150612f0f82612ef4565b600082019050919050565b6000612f2582612ef7565b9150819050919050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612f70601c83612f2f565b9150612f7b82612f3a565b601c82019050919050565b6000819050919050565b6000819050919050565b612fab612fa682612f86565b612f90565b82525050565b6000612fbc82612f63565b9150612fc88284612f9a565b60208201915081905092915050565b7f5369676e65722061646472657373206d69736d617463682e0000000000000000600082015250565b600061300d6018836124f4565b915061301882612fd7565b602082019050919050565b6000602082019050818103600083015261303c81613000565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613068565b6130af8683613068565b95508019841693508086168417925050509392505050565b6000819050919050565b60006130ec6130e76130e28461259b565b6130c7565b61259b565b9050919050565b6000819050919050565b613106836130d1565b61311a613112826130f3565b848454613075565b825550505050565b600090565b61312f613122565b61313a8184846130fd565b505050565b5b8181101561315e57613153600082613127565b600181019050613140565b5050565b601f8211156131a35761317481613043565b61317d84613058565b8101602085101561318c578190505b6131a061319885613058565b83018261313f565b50505b505050565b600082821c905092915050565b60006131c6600019846008026131a8565b1980831691505092915050565b60006131df83836131b5565b9150826002028217905092915050565b6131f8826124e9565b67ffffffffffffffff81111561321157613210612893565b5b61321b8254612bda565b613226828285613162565b600060209050601f8311600181146132595760008415613247578287015190505b61325185826131d3565b8655506132b9565b601f19841661326786613043565b60005b8281101561328f5784890151825560018201915060208501945060208101905061326a565b868310156132ac57848901516132a8601f8916826131b5565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061331d602f836124f4565b9150613328826132c1565b604082019050919050565b6000602082019050818103600083015261334c81613310565b9050919050565b6000815461336081612bda565b61336a8186612f2f565b94506001821660008114613385576001811461339a576133cd565b60ff19831686528115158202860193506133cd565b6133a385613043565b60005b838110156133c5578154818901526001820191506020810190506133a6565b838801955050505b50505092915050565b60006133e1826124e9565b6133eb8185612f2f565b93506133fb818560208601612505565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b600061343d600583612f2f565b915061344882613407565b600582019050919050565b600061345f8285613353565b915061346b82846133d6565b915061347682613430565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134de6026836124f4565b91506134e982613482565b604082019050919050565b6000602082019050818103600083015261350d816134d1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061354a6020836124f4565b915061355582613514565b602082019050919050565b600060208201905081810360008301526135798161353d565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006135a782613580565b6135b1818561358b565b93506135c1818560208601612505565b6135ca8161252f565b840191505092915050565b60006080820190506135ea6000830187612630565b6135f76020830186612630565b613604604083018561271f565b8181036060830152613616818461359c565b905095945050505050565b6000815190506136308161245a565b92915050565b60006020828403121561364c5761364b612424565b5b600061365a84828501613621565b91505092915050565b600061366e8261259b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a05761369f612ca6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136e58261259b565b91506136f08361259b565b925082613700576136ff6136ab565b5b828204905092915050565b60006137168261259b565b91506137218361259b565b925082613731576137306136ab565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006137a16018836124f4565b91506137ac8261376b565b602082019050919050565b600060208201905081810360008301526137d081613794565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061380d601f836124f4565b9150613818826137d7565b602082019050919050565b6000602082019050818103600083015261383c81613800565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b600061389f6022836124f4565b91506138aa82613843565b604082019050919050565b600060208201905081810360008301526138ce81613892565b9050919050565b6138de81612f86565b82525050565b600060ff82169050919050565b6138fa816138e4565b82525050565b600060808201905061391560008301876138d5565b61392260208301866138f1565b61392f60408301856138d5565b61393c60608301846138d5565b9594505050505056fea2646970667358221220489d32a0ba88a51b6dd80b9691f65af7a7648d54245fcb48682e945d490ac0ef64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101d85760003560e01c806370a0823111610102578063b187bd2611610095578063e8a3d48511610064578063e8a3d4851461069b578063e985e9c5146106c6578063f2fde38b14610703578063fddcb5ea1461072c576101d8565b8063b187bd26146105df578063b88d4fde1461060a578063c87b56dd14610633578063d5abeb0114610670576101d8565b80639e852f75116100d15780639e852f7514610539578063a035b1fe14610562578063a0bcfc7f1461058d578063a22cb465146105b6576101d8565b806370a082311461048f578063715018a6146104cc5780638da5cb5b146104e357806395d89b411461050e576101d8565b80632db115441161017a578063453c231011610149578063453c2310146103c15780634f6ccce7146103ec5780636352211e146104295780636f8b44b014610466576101d8565b80632db11544146103285780632f745c59146103445780633ccfd60b1461038157806342842e0e14610398576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806316c38b3c146102ab57806318160ddd146102d457806323b872dd146102ff576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff9190612486565b610769565b60405161021191906124ce565b60405180910390f35b34801561022657600080fd5b5061022f61082b565b60405161023c9190612579565b60405180910390f35b34801561025157600080fd5b5061026c600480360381019061026791906125d1565b6108b9565b604051610279919061263f565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a49190612686565b610935565b005b3480156102b757600080fd5b506102d260048036038101906102cd91906126f2565b610ad3565b005b3480156102e057600080fd5b506102e9610af8565b6040516102f6919061272e565b60405180910390f35b34801561030b57600080fd5b5061032660048036038101906103219190612749565b610b05565b005b610342600480360381019061033d91906125d1565b610f08565b005b34801561035057600080fd5b5061036b60048036038101906103669190612686565b61104a565b604051610378919061272e565b60405180910390f35b34801561038d57600080fd5b50610396611138565b005b3480156103a457600080fd5b506103bf60048036038101906103ba9190612749565b6111b9565b005b3480156103cd57600080fd5b506103d66111d9565b6040516103e3919061272e565b60405180910390f35b3480156103f857600080fd5b50610413600480360381019061040e91906125d1565b6111de565b604051610420919061272e565b60405180910390f35b34801561043557600080fd5b50610450600480360381019061044b91906125d1565b611228565b60405161045d919061263f565b60405180910390f35b34801561047257600080fd5b5061048d600480360381019061048891906125d1565b611334565b005b34801561049b57600080fd5b506104b660048036038101906104b1919061279c565b611346565b6040516104c3919061272e565b60405180910390f35b3480156104d857600080fd5b506104e161141f565b005b3480156104ef57600080fd5b506104f8611433565b604051610505919061263f565b60405180910390f35b34801561051a57600080fd5b5061052361145d565b6040516105309190612579565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b919061282e565b6114eb565b005b34801561056e57600080fd5b50610577611676565b604051610584919061272e565b60405180910390f35b34801561059957600080fd5b506105b460048036038101906105af91906129be565b61167c565b005b3480156105c257600080fd5b506105dd60048036038101906105d89190612a07565b611697565b005b3480156105eb57600080fd5b506105f46117f9565b60405161060191906124ce565b60405180910390f35b34801561061657600080fd5b50610631600480360381019061062c9190612ae8565b61180c565b005b34801561063f57600080fd5b5061065a600480360381019061065591906125d1565b61185f565b6040516106679190612579565b60405180910390f35b34801561067c57600080fd5b50610685611907565b604051610692919061272e565b60405180910390f35b3480156106a757600080fd5b506106b061190d565b6040516106bd9190612579565b60405180910390f35b3480156106d257600080fd5b506106ed60048036038101906106e89190612b6b565b611924565b6040516106fa91906124ce565b60405180910390f35b34801561070f57600080fd5b5061072a6004803603810190610725919061279c565b6119b8565b005b34801561073857600080fd5b50610753600480360381019061074e919061279c565b611a3b565b604051610760919061272e565b60405180910390f35b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107c457506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107f4575063780e9d6360e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806108245750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6000805461083890612bda565b80601f016020809104026020016040519081016040528092919081815260200182805461086490612bda565b80156108b15780601f10610886576101008083540402835291602001916108b1565b820191906000526020600020905b81548152906001019060200180831161089457829003601f168201915b505050505081565b60006108c482611a84565b6108fa576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600061094082611228565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109a7576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156109ea57506109e88133611924565b155b15610a21576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826005600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b610adb611a95565b80600a60146101000a81548160ff02191690831515021790555050565b6000600380549050905090565b600260009054906101000a900460ff16610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b90612c57565b60405180910390fd5b610b5d81611a84565b610b93576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff16610bb382611228565b73ffffffffffffffffffffffffffffffffffffffff1614610c00576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c66576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610cd55750610ca6826108b9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b80610ce65750610ce58433611924565b5b905080610d1f576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6005600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690558260038381548110610d6a57610d69612c77565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600082118015610e385750600073ffffffffffffffffffffffffffffffffffffffff166003600184610de49190612cd5565b81548110610df557610df4612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15610ea757836003600184610e4d9190612cd5565b81548110610e5e57610e5d612c77565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b60085481610f14610af8565b610f1e9190612d09565b1115610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690612d89565b60405180910390fd5b600a81600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610fac9190612d09565b1115610fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe490612df5565b60405180910390fd5b80600954610ffb9190612e15565b34101561103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490612ec9565b60405180910390fd5b6110473382611b13565b50565b600061105583611346565b821061108d576040517f0ddac30e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060038054905090505b80831015611100576110aa83611228565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036110f3578382036110ea575050611132565b81806001019250505b8280600101935050611099565b6040517f7339954700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b92915050565b611140611a95565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161116690612f1a565b60006040518083038185875af1925050503d80600081146111a3576040519150601f19603f3d011682016040523d82523d6000602084013e6111a8565b606091505b50509050806111b657600080fd5b50565b6111d48383836040518060200160405280600081525061180c565b505050565b600a81565b60006111e8610af8565b8210611220576040517fa723001c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b819050919050565b600061123382611a84565b611269576040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff166003838154811061129657611295612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132257600382815481106112f0576112ef612c77565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905061132f565b818060010192505061126a565b919050565b61133c611a95565b8060088190555050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ad576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080600380549050905060005b81811015611414576113cc81611228565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036114075782806001019350505b80806001019150506113bb565b508192505050919050565b611427611a95565b6114316000611b31565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6001805461146a90612bda565b80601f016020809104026020016040519081016040528092919081815260200182805461149690612bda565b80156114e35780601f106114b8576101008083540402835291602001916114e3565b820191906000526020600020905b8154815290600101906020018083116114c657829003601f168201915b505050505081565b600854836114f7610af8565b6115019190612d09565b1115611542576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153990612d89565b60405180910390fd5b6115d882828080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050503373ffffffffffffffffffffffffffffffffffffffff1660001b6040516020016115b49190612fb1565b60405160208183030381529060405280519060200120611bf790919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90613023565b60405180910390fd5b6116713384611b13565b505050565b60095481565b611684611a95565b80600b908161169391906131ef565b5050565b3373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116fc576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516117ed91906124ce565b60405180910390a35050565b600a60149054906101000a900460ff1681565b611817848484610b05565b61182384848484611c1e565b611859576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b606061186a82611a84565b6118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a090613333565b60405180910390fd5b6000600b80546118b890612bda565b9050116118d45760405180602001604052806000815250611900565b600b6118df83611d8f565b6040516020016118f0929190613453565b6040516020818303038152906040525b9050919050565b60085481565b606060405180602001604052806000815250905090565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6119c0611a95565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a26906134f4565b60405180910390fd5b611a3881611b31565b50565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600060038054905082109050919050565b611a9d611eef565b73ffffffffffffffffffffffffffffffffffffffff16611abb611433565b73ffffffffffffffffffffffffffffffffffffffff1614611b11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0890613560565b60405180910390fd5b565b611b2d828260405180602001604052806000815250611ef7565b5050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000806000611c068585611f5a565b91509150611c1381611fab565b819250505092915050565b6000808473ffffffffffffffffffffffffffffffffffffffff163b03611c475760019050611d87565b8373ffffffffffffffffffffffffffffffffffffffff1663150b7a02338786866040518563ffffffff1660e01b8152600401611c8694939291906135d5565b6020604051808303816000875af1925050508015611cc257506040513d601f19601f82011682018060405250810190611cbf9190613636565b60015b611d3b573d8060008114611cf2576040519150601f19603f3d011682016040523d82523d6000602084013e611cf7565b606091505b506000815103611d33576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149150505b949350505050565b606060008203611dd6576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611eea565b600082905060005b60008214611e08578080611df190613663565b915050600a82611e0191906136da565b9150611dde565b60008167ffffffffffffffff811115611e2457611e23612893565b5b6040519080825280601f01601f191660200182016040528015611e565781602001600182028036833780820191505090505b5090505b60008514611ee357600182611e6f9190612cd5565b9150600a85611e7e919061370b565b6030611e8a9190612d09565b60f81b818381518110611ea057611e9f612c77565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85611edc91906136da565b9450611e5a565b8093505050505b919050565b600033905090565b611f018383612111565b611f1f6000846001600380549050611f199190612cd5565b84611c1e565b611f55576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000806041835103611f9b5760008060006020860151925060408601519150606086015160001a9050611f8f87828585612338565b94509450505050611fa4565b60006002915091505b9250929050565b60006004811115611fbf57611fbe61373c565b5b816004811115611fd257611fd161373c565b5b031561210e5760016004811115611fec57611feb61373c565b5b816004811115611fff57611ffe61373c565b5b0361203f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612036906137b7565b60405180910390fd5b600260048111156120535761205261373c565b5b8160048111156120665761206561373c565b5b036120a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209d90613823565b60405180910390fd5b600360048111156120ba576120b961373c565b5b8160048111156120cd576120cc61373c565b5b0361210d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612104906138b5565b60405180910390fd5b5b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612177576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081036121b1576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600380549050905060005b6001830381101561225c576003600181600181540180825580915050039060005260206000200160009054906101000a9050508082018473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480806001019150506121be565b506003839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001826122cd9190612cd5565b816122d89190612d09565b8373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c1115612373576000600391509150612411565b6000600187878787604051600081526020016040526040516123989493929190613900565b6020604051602081039080840390855afa1580156123ba573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361240857600060019250925050612411565b80600092509250505b94509492505050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6124638161242e565b811461246e57600080fd5b50565b6000813590506124808161245a565b92915050565b60006020828403121561249c5761249b612424565b5b60006124aa84828501612471565b91505092915050565b60008115159050919050565b6124c8816124b3565b82525050565b60006020820190506124e360008301846124bf565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612523578082015181840152602081019050612508565b60008484015250505050565b6000601f19601f8301169050919050565b600061254b826124e9565b61255581856124f4565b9350612565818560208601612505565b61256e8161252f565b840191505092915050565b600060208201905081810360008301526125938184612540565b905092915050565b6000819050919050565b6125ae8161259b565b81146125b957600080fd5b50565b6000813590506125cb816125a5565b92915050565b6000602082840312156125e7576125e6612424565b5b60006125f5848285016125bc565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612629826125fe565b9050919050565b6126398161261e565b82525050565b60006020820190506126546000830184612630565b92915050565b6126638161261e565b811461266e57600080fd5b50565b6000813590506126808161265a565b92915050565b6000806040838503121561269d5761269c612424565b5b60006126ab85828601612671565b92505060206126bc858286016125bc565b9150509250929050565b6126cf816124b3565b81146126da57600080fd5b50565b6000813590506126ec816126c6565b92915050565b60006020828403121561270857612707612424565b5b6000612716848285016126dd565b91505092915050565b6127288161259b565b82525050565b6000602082019050612743600083018461271f565b92915050565b60008060006060848603121561276257612761612424565b5b600061277086828701612671565b935050602061278186828701612671565b9250506040612792868287016125bc565b9150509250925092565b6000602082840312156127b2576127b1612424565b5b60006127c084828501612671565b91505092915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126127ee576127ed6127c9565b5b8235905067ffffffffffffffff81111561280b5761280a6127ce565b5b602083019150836001820283011115612827576128266127d3565b5b9250929050565b60008060006040848603121561284757612846612424565b5b6000612855868287016125bc565b935050602084013567ffffffffffffffff81111561287657612875612429565b5b612882868287016127d8565b92509250509250925092565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128cb8261252f565b810181811067ffffffffffffffff821117156128ea576128e9612893565b5b80604052505050565b60006128fd61241a565b905061290982826128c2565b919050565b600067ffffffffffffffff82111561292957612928612893565b5b6129328261252f565b9050602081019050919050565b82818337600083830152505050565b600061296161295c8461290e565b6128f3565b90508281526020810184848401111561297d5761297c61288e565b5b61298884828561293f565b509392505050565b600082601f8301126129a5576129a46127c9565b5b81356129b584826020860161294e565b91505092915050565b6000602082840312156129d4576129d3612424565b5b600082013567ffffffffffffffff8111156129f2576129f1612429565b5b6129fe84828501612990565b91505092915050565b60008060408385031215612a1e57612a1d612424565b5b6000612a2c85828601612671565b9250506020612a3d858286016126dd565b9150509250929050565b600067ffffffffffffffff821115612a6257612a61612893565b5b612a6b8261252f565b9050602081019050919050565b6000612a8b612a8684612a47565b6128f3565b905082815260208101848484011115612aa757612aa661288e565b5b612ab284828561293f565b509392505050565b600082601f830112612acf57612ace6127c9565b5b8135612adf848260208601612a78565b91505092915050565b60008060008060808587031215612b0257612b01612424565b5b6000612b1087828801612671565b9450506020612b2187828801612671565b9350506040612b32878288016125bc565b925050606085013567ffffffffffffffff811115612b5357612b52612429565b5b612b5f87828801612aba565b91505092959194509250565b60008060408385031215612b8257612b81612424565b5b6000612b9085828601612671565b9250506020612ba185828601612671565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612bf257607f821691505b602082108103612c0557612c04612bab565b5b50919050565b7f596f75206e656564205472616e7366657220546f6b656e000000000000000000600082015250565b6000612c416017836124f4565b9150612c4c82612c0b565b602082019050919050565b60006020820190508181036000830152612c7081612c34565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ce08261259b565b9150612ceb8361259b565b9250828203905081811115612d0357612d02612ca6565b5b92915050565b6000612d148261259b565b9150612d1f8361259b565b9250828201905080821115612d3757612d36612ca6565b5b92915050565b7f45786365656473206d617820737570706c790000000000000000000000000000600082015250565b6000612d736012836124f4565b9150612d7e82612d3d565b602082019050919050565b60006020820190508181036000830152612da281612d66565b9050919050565b7f457863656564732077616c6c6574206c696d6974000000000000000000000000600082015250565b6000612ddf6014836124f4565b9150612dea82612da9565b602082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b6000612e208261259b565b9150612e2b8361259b565b9250828202612e398161259b565b91508282048414831517612e5057612e4f612ca6565b5b5092915050565b7f4e6f7420656e6f756768204554482073656e742c20636865636b20707269636560008201527f2100000000000000000000000000000000000000000000000000000000000000602082015250565b6000612eb36021836124f4565b9150612ebe82612e57565b604082019050919050565b60006020820190508181036000830152612ee281612ea6565b9050919050565b600081905092915050565b50565b6000612f04600083612ee9565b9150612f0f82612ef4565b600082019050919050565b6000612f2582612ef7565b9150819050919050565b600081905092915050565b7f19457468657265756d205369676e6564204d6573736167653a0a333200000000600082015250565b6000612f70601c83612f2f565b9150612f7b82612f3a565b601c82019050919050565b6000819050919050565b6000819050919050565b612fab612fa682612f86565b612f90565b82525050565b6000612fbc82612f63565b9150612fc88284612f9a565b60208201915081905092915050565b7f5369676e65722061646472657373206d69736d617463682e0000000000000000600082015250565b600061300d6018836124f4565b915061301882612fd7565b602082019050919050565b6000602082019050818103600083015261303c81613000565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026130a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613068565b6130af8683613068565b95508019841693508086168417925050509392505050565b6000819050919050565b60006130ec6130e76130e28461259b565b6130c7565b61259b565b9050919050565b6000819050919050565b613106836130d1565b61311a613112826130f3565b848454613075565b825550505050565b600090565b61312f613122565b61313a8184846130fd565b505050565b5b8181101561315e57613153600082613127565b600181019050613140565b5050565b601f8211156131a35761317481613043565b61317d84613058565b8101602085101561318c578190505b6131a061319885613058565b83018261313f565b50505b505050565b600082821c905092915050565b60006131c6600019846008026131a8565b1980831691505092915050565b60006131df83836131b5565b9150826002028217905092915050565b6131f8826124e9565b67ffffffffffffffff81111561321157613210612893565b5b61321b8254612bda565b613226828285613162565b600060209050601f8311600181146132595760008415613247578287015190505b61325185826131d3565b8655506132b9565b601f19841661326786613043565b60005b8281101561328f5784890151825560018201915060208501945060208101905061326a565b868310156132ac57848901516132a8601f8916826131b5565b8355505b6001600288020188555050505b505050505050565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b600061331d602f836124f4565b9150613328826132c1565b604082019050919050565b6000602082019050818103600083015261334c81613310565b9050919050565b6000815461336081612bda565b61336a8186612f2f565b94506001821660008114613385576001811461339a576133cd565b60ff19831686528115158202860193506133cd565b6133a385613043565b60005b838110156133c5578154818901526001820191506020810190506133a6565b838801955050505b50505092915050565b60006133e1826124e9565b6133eb8185612f2f565b93506133fb818560208601612505565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b600061343d600583612f2f565b915061344882613407565b600582019050919050565b600061345f8285613353565b915061346b82846133d6565b915061347682613430565b91508190509392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134de6026836124f4565b91506134e982613482565b604082019050919050565b6000602082019050818103600083015261350d816134d1565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061354a6020836124f4565b915061355582613514565b602082019050919050565b600060208201905081810360008301526135798161353d565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006135a782613580565b6135b1818561358b565b93506135c1818560208601612505565b6135ca8161252f565b840191505092915050565b60006080820190506135ea6000830187612630565b6135f76020830186612630565b613604604083018561271f565b8181036060830152613616818461359c565b905095945050505050565b6000815190506136308161245a565b92915050565b60006020828403121561364c5761364b612424565b5b600061365a84828501613621565b91505092915050565b600061366e8261259b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036136a05761369f612ca6565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136e58261259b565b91506136f08361259b565b925082613700576136ff6136ab565b5b828204905092915050565b60006137168261259b565b91506137218361259b565b925082613731576137306136ab565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b60006137a16018836124f4565b91506137ac8261376b565b602082019050919050565b600060208201905081810360008301526137d081613794565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b600061380d601f836124f4565b9150613818826137d7565b602082019050919050565b6000602082019050818103600083015261383c81613800565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b600061389f6022836124f4565b91506138aa82613843565b604082019050919050565b600060208201905081810360008301526138ce81613892565b9050919050565b6138de81612f86565b82525050565b600060ff82169050919050565b6138fa816138e4565b82525050565b600060808201905061391560008301876138d5565b61392260208301866138f1565b61392f60408301856138d5565b61393c60608301846138d5565b9594505050505056fea2646970667358221220489d32a0ba88a51b6dd80b9691f65af7a7648d54245fcb48682e945d490ac0ef64736f6c63430008110033

Deployed Bytecode Sourcemap

20367:2319:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3740:426;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2499:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7762:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7319:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21150:80;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4432:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8602:1068;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21846:365;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4715:631;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21235:177;;;;;;;;;;;;;:::i;:::-;;9741:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20474:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5423:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6777:480;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21417:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6045:494;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14150:103;;;;;;;;;;;;;:::i;:::-;;13911:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2526:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22219:464;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20551:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21060:85;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8037:272;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20623:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9978:295;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21516:325;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20516:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20850:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8380:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14263:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20936:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3740:426;3816:4;3868:10;3853:25;;:11;:25;;;;:101;;;;3944:10;3929:25;;:11;:25;;;;3853:101;:177;;;;4020:10;4005:25;;:11;:25;;;;3853:177;:263;;;;4106:10;4091:25;;:11;:25;;;;3853:263;3833:283;;3740:426;;;:::o;2499:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7762:203::-;7829:7;7854:16;7862:7;7854;:16::i;:::-;7849:64;;7879:34;;;;;;;;;;;;;;7849:64;7933:15;:24;7949:7;7933:24;;;;;;;;;;;;;;;;;;;;;7926:31;;7762:203;;;:::o;7319:377::-;7391:13;7407:16;7415:7;7407;:16::i;:::-;7391:32;;7444:5;7438:11;;:2;:11;;;7434:48;;7458:24;;;;;;;;;;;;;;7434:48;7513:5;7499:19;;:10;:19;;;;:59;;;;;7523:35;7540:5;7547:10;7523:16;:35::i;:::-;7522:36;7499:59;7495:107;;;7567:35;;;;;;;;;;;;;;7495:107;7642:2;7615:15;:24;7631:7;7615:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;7680:7;7676:2;7660:28;;7669:5;7660:28;;;;;;;;;;;;7380:316;7319:377;;:::o;21150:80::-;13870:13;:11;:13::i;:::-;21219:6:::1;21208:8;;:17;;;;;;;;;;;;;;;;;;21150:80:::0;:::o;4432:93::-;4476:7;4503;:14;;;;4496:21;;4432:93;:::o;8602:1068::-;8735:11;;;;;;;;;;;8727:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;8789:16;8797:7;8789;:16::i;:::-;8784:61;;8814:31;;;;;;;;;;;;;;8784:61;8880:4;8860:24;;:16;8868:7;8860;:16::i;:::-;:24;;;8856:65;;8893:28;;;;;;;;;;;;;;8856:65;8950:1;8936:16;;:2;:16;;;8932:52;;8961:23;;;;;;;;;;;;;;8932:52;8997:22;9037:4;9023:18;;:10;:18;;;:69;;;;9072:20;9084:7;9072:11;:20::i;:::-;9058:34;;:10;:34;;;9023:69;:120;;;;9109:34;9126:4;9132:10;9109:16;:34::i;:::-;9023:120;8997:147;;9160:17;9155:66;;9186:35;;;;;;;;;;;;;;9155:66;9296:15;:24;9312:7;9296:24;;;;;;;;;;;;9289:31;;;;;;;;;;;9350:2;9331:7;9339;9331:16;;;;;;;;:::i;:::-;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;9523:1;9513:7;:11;:49;;;;;9560:1;9528:34;;:7;9546:1;9536:7;:11;;;;:::i;:::-;9528:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:34;;;9513:49;9509:109;;;9602:4;9579:7;9597:1;9587:7;:11;;;;:::i;:::-;9579:20;;;;;;;;:::i;:::-;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;9509:109;9654:7;9650:2;9635:27;;9644:4;9635:27;;;;;;;;;;;;8716:954;8602:1068;;;:::o;21846:365::-;21947:9;;21934;21918:13;:11;:13::i;:::-;:25;;;;:::i;:::-;:38;;21910:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;20510:2;22031:9;21998:18;:30;22017:10;21998:30;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;:58;;21989:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;22121:9;22113:5;;:17;;;;:::i;:::-;22100:9;:30;;22092:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;22174:32;22184:10;22196:9;22174;:32::i;:::-;21846:365;:::o;4715:631::-;4803:15;4844:16;4854:5;4844:9;:16::i;:::-;4835:5;:25;4831:61;;4869:23;;;;;;;;;;;;;;4831:61;4905:13;4929:11;4943:7;:14;;;;4929:28;;5063:217;5087:3;5077:7;:13;5063:217;;;5135:16;5143:7;5135;:16::i;:::-;5126:25;;:5;:25;;;5122:143;;5189:5;5180;:14;5176:69;;5196:14;;;;5176:69;5238:7;;;;;;;5122:143;5092:9;;;;;;;5063:217;;;5310:28;;;;;;;;;;;;;;4715:631;;;;;:::o;21235:177::-;13870:13;:11;:13::i;:::-;21280:12:::1;21306:10;21298:24;;21344:21;21298:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21279:101;;;21399:7;21391:16;;;::::0;::::1;;21274:138;21235:177::o:0;9741:166::-;9865:34;9882:4;9888:2;9892;9865:34;;;;;;;;;;;;:16;:34::i;:::-;9741:166;;;:::o;20474:38::-;20510:2;20474:38;:::o;5423:175::-;5489:7;5522:13;:11;:13::i;:::-;5513:5;:22;5509:58;;5544:23;;;;;;;;;;;;;;5509:58;5585:5;5578:12;;5423:175;;;:::o;6777:480::-;6840:7;6865:16;6873:7;6865;:16::i;:::-;6860:61;;6890:31;;;;;;;;;;;;;;6860:61;7029:163;7107:1;7079:30;;:7;7087;7079:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:30;;;7075:102;;7141:7;7149;7141:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7134:23;;;;7075:102;7045:9;;;;;;;7029:163;;6777:480;;;;:::o;21417:94::-;13870:13;:11;:13::i;:::-;21494:12:::1;21482:9;:24;;;;21417:94:::0;:::o;6045:494::-;6108:7;6149:1;6132:19;;:5;:19;;;6128:60;;6160:28;;;;;;;;;;;;;;6128:60;6201:13;6225:11;6239:7;:14;;;;6225:28;;6364:9;6359:139;6379:3;6375:1;:7;6359:139;;;6421:10;6429:1;6421:7;:10::i;:::-;6412:19;;:5;:19;;;6408:75;;6456:7;;;;;;;6408:75;6384:3;;;;;;;6359:139;;;;6526:5;6519:12;;;;6045:494;;;:::o;14150:103::-;13870:13;:11;:13::i;:::-;14215:30:::1;14242:1;14215:18;:30::i;:::-;14150:103::o:0;13911:87::-;13957:7;13984:6;;;;;;;;;;;13977:13;;13911:87;:::o;2526:20::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;22219:464::-;22341:9;;22328;22312:13;:11;:13::i;:::-;:25;;;;:::i;:::-;:38;;22304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;22409:194;22593:9;;22409:194;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22545:10;22529:28;;22521:37;;22433:140;;;;;;;;:::i;:::-;;;;;;;;;;;;;22409:175;;;;;;:183;;:194;;;;:::i;:::-;22391:212;;:14;;;;;;;;;;;:212;;;22383:249;;;;;;;;;;;;:::i;:::-;;;;;;;;;22643:32;22653:10;22665:9;22643;:32::i;:::-;22219:464;;;:::o;20551:29::-;;;;:::o;21060:85::-;13870:13;:11;:13::i;:::-;21137:3:::1;21126:8;:14;;;;;;:::i;:::-;;21060:85:::0;:::o;8037:272::-;8139:10;8127:22;;:8;:22;;;8123:52;;8158:17;;;;;;;;;;;;;;8123:52;8231:8;8188:18;:30;8207:10;8188:30;;;;;;;;;;;;;;;:40;8219:8;8188:40;;;;;;;;;;;;;;;;:51;;;;;;;;;;;;;;;;;;8282:8;8255:46;;8270:10;8255:46;;;8292:8;8255:46;;;;;;:::i;:::-;;;;;;;;8037:272;;:::o;20623:28::-;;;;;;;;;;;;;:::o;9978:295::-;10130:26;10143:4;10149:2;10153;10130:12;:26::i;:::-;10174:42;10197:4;10203:2;10207;10211:4;10174:22;:42::i;:::-;10169:96;;10225:40;;;;;;;;;;;;;;10169:96;9978:295;;;;:::o;21516:325::-;21590:13;21626:16;21634:7;21626;:16::i;:::-;21618:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;21737:1;21718:8;21712:22;;;;;:::i;:::-;;;:26;:124;;;;;;;;;;;;;;;;;21779:8;21789:18;:7;:16;:18::i;:::-;21762:55;;;;;;;;;:::i;:::-;;;;;;;;;;;;;21712:124;21705:131;;21516:325;;;:::o;20516:28::-;;;;:::o;20850:78::-;20894:13;20914:9;;;;;;;;;;;;;;20850:78;:::o;8380:155::-;8468:4;8492:18;:25;8511:5;8492:25;;;;;;;;;;;;;;;:35;8518:8;8492:35;;;;;;;;;;;;;;;;;;;;;;;;;8485:42;;8380:155;;;;:::o;14263:201::-;13870:13;:11;:13::i;:::-;14372:1:::1;14352:22;;:8;:22;;::::0;14344:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14428:28;14447:8;14428:18;:28::i;:::-;14263:201:::0;:::o;20936:116::-;20995:4;21019:18;:25;21038:5;21019:25;;;;;;;;;;;;;;;;21012:32;;20936:116;;;:::o;10346:121::-;10411:4;10445:7;:14;;;;10435:7;:24;10428:31;;10346:121;;;:::o;14006:132::-;14081:12;:10;:12::i;:::-;14070:23;;:7;:5;:7::i;:::-;:23;;;14062:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14006:132::o;12301:102::-;12373:22;12383:2;12387:3;12373:22;;;;;;;;;;;;:9;:22::i;:::-;12301:102;;:::o;14475:191::-;14549:16;14568:6;;;;;;;;;;;14549:25;;14594:8;14585:6;;:17;;;;;;;;;;;;;;;;;;14649:8;14618:40;;14639:8;14618:40;;;;;;;;;;;;14538:128;14475:191;:::o;18040:231::-;18118:7;18139:17;18158:18;18180:27;18191:4;18197:9;18180:10;:27::i;:::-;18138:69;;;;18218:18;18230:5;18218:11;:18::i;:::-;18254:9;18247:16;;;;18040:231;;;;:::o;11032:640::-;11187:4;11226:1;11208:2;:14;;;:19;11204:36;;11236:4;11229:11;;;;11204:36;11273:2;11257:36;;;11294:10;11306:4;11312:7;11321:5;11257:70;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;11253:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11506:1;11489:6;:13;:18;11485:71;;11516:40;;;;;;;;;;;;;;11485:71;11631:6;11625:13;11616:6;11612:2;11608:15;11601:38;11253:412;11384:45;;;11374:55;;;:6;:55;;;;11367:62;;;11032:640;;;;;;;:::o;14861:723::-;14917:13;15147:1;15138:5;:10;15134:53;;15165:10;;;;;;;;;;;;;;;;;;;;;15134:53;15197:12;15212:5;15197:20;;15228:14;15253:78;15268:1;15260:4;:9;15253:78;;15286:8;;;;;:::i;:::-;;;;15317:2;15309:10;;;;;:::i;:::-;;;15253:78;;;15341:19;15373:6;15363:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15341:39;;15391:154;15407:1;15398:5;:10;15391:154;;15435:1;15425:11;;;;;:::i;:::-;;;15502:2;15494:5;:10;;;;:::i;:::-;15481:2;:24;;;;:::i;:::-;15468:39;;15451:6;15458;15451:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;15531:2;15522:11;;;;;:::i;:::-;;;15391:154;;;15569:6;15555:21;;;;;14861:723;;;;:::o;13378:98::-;13431:7;13458:10;13451:17;;13378:98;:::o;12411:291::-;12536:14;12542:2;12546:3;12536:5;:14::i;:::-;12568:64;12599:1;12603:2;12624:1;12607:7;:14;;;;:18;;;;:::i;:::-;12627:4;12568:22;:64::i;:::-;12563:131;;12654:40;;;;;;;;;;;;;;12563:131;12411:291;;;:::o;17466:566::-;17547:7;17556:12;17605:2;17585:9;:16;:22;17581:444;;17624:9;17648;17672:7;17748:4;17737:9;17733:20;17727:27;17722:32;;17798:4;17787:9;17783:20;17777:27;17772:32;;17856:4;17845:9;17841:20;17835:27;17832:1;17827:36;17822:41;;17899:25;17910:4;17916:1;17919;17922;17899:10;:25::i;:::-;17892:32;;;;;;;;;17581:444;17973:1;17977:35;17957:56;;;;17466:566;;;;;;:::o;16937:521::-;17015:20;17006:29;;;;;;;;:::i;:::-;;:5;:29;;;;;;;;:::i;:::-;;;17002:449;17052:7;17002:449;17113:29;17104:38;;;;;;;;:::i;:::-;;:5;:38;;;;;;;;:::i;:::-;;;17100:351;;17159:34;;;;;;;;;;:::i;:::-;;;;;;;;17100:351;17224:35;17215:44;;;;;;;;:::i;:::-;;:5;:44;;;;;;;;:::i;:::-;;;17211:240;;17276:41;;;;;;;;;;:::i;:::-;;;;;;;;17211:240;17348:30;17339:39;;;;;;;;:::i;:::-;;:5;:39;;;;;;;;:::i;:::-;;;17335:116;;17395:44;;;;;;;;;;:::i;:::-;;;;;;;;17335:116;16937:521;;:::o;12710:628::-;12796:1;12782:16;;:2;:16;;;12778:48;;12807:19;;;;;;;;;;;;;;12778:48;12848:1;12841:3;:8;12837:39;;12858:18;;;;;;;;;;;;;;12837:39;12889:21;12913:7;:14;;;;12889:38;;13040:9;13035:150;13061:1;13055:3;:7;13051:1;:11;13035:150;;;13088:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13167:1;13151:13;:17;13147:2;13126:43;;13143:1;13126:43;;;;;;;;;;;;13064:3;;;;;;;13035:150;;;;13247:7;13260:2;13247:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13327:1;13321:3;:7;;;;:::i;:::-;13304:13;:25;;;;:::i;:::-;13300:2;13279:51;;13296:1;13279:51;;;;;;;;;;;;12767:571;12710:628;;:::o;18833:596::-;18921:7;18930:12;18974:66;18969:1;18961:10;;:79;18957:163;;;19073:1;19077:30;19057:51;;;;;;18957:163;19217:14;19234:24;19244:4;19250:1;19253;19256;19234:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19217:41;;19291:1;19273:20;;:6;:20;;;19269:103;;19326:1;19330:29;19310:50;;;;;;;19269:103;19392:6;19400:20;19384:37;;;;;18833:596;;;;;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:149;370:7;410:66;403:5;399:78;388:89;;334:149;;;:::o;489:120::-;561:23;578:5;561:23;:::i;:::-;554:5;551:34;541:62;;599:1;596;589:12;541:62;489:120;:::o;615:137::-;660:5;698:6;685:20;676:29;;714:32;740:5;714:32;:::i;:::-;615:137;;;;:::o;758:327::-;816:6;865:2;853:9;844:7;840:23;836:32;833:119;;;871:79;;:::i;:::-;833:119;991:1;1016:52;1060:7;1051:6;1040:9;1036:22;1016:52;:::i;:::-;1006:62;;962:116;758:327;;;;:::o;1091:90::-;1125:7;1168:5;1161:13;1154:21;1143:32;;1091:90;;;:::o;1187:109::-;1268:21;1283:5;1268:21;:::i;:::-;1263:3;1256:34;1187:109;;:::o;1302:210::-;1389:4;1427:2;1416:9;1412:18;1404:26;;1440:65;1502:1;1491:9;1487:17;1478:6;1440:65;:::i;:::-;1302:210;;;;:::o;1518:99::-;1570:6;1604:5;1598:12;1588:22;;1518:99;;;:::o;1623:169::-;1707:11;1741:6;1736:3;1729:19;1781:4;1776:3;1772:14;1757:29;;1623:169;;;;:::o;1798:246::-;1879:1;1889:113;1903:6;1900:1;1897:13;1889:113;;;1988:1;1983:3;1979:11;1973:18;1969:1;1964:3;1960:11;1953:39;1925:2;1922:1;1918:10;1913:15;;1889:113;;;2036:1;2027:6;2022:3;2018:16;2011:27;1860:184;1798:246;;;:::o;2050:102::-;2091:6;2142:2;2138:7;2133:2;2126:5;2122:14;2118:28;2108:38;;2050:102;;;:::o;2158:377::-;2246:3;2274:39;2307:5;2274:39;:::i;:::-;2329:71;2393:6;2388:3;2329:71;:::i;:::-;2322:78;;2409:65;2467:6;2462:3;2455:4;2448:5;2444:16;2409:65;:::i;:::-;2499:29;2521:6;2499:29;:::i;:::-;2494:3;2490:39;2483:46;;2250:285;2158:377;;;;:::o;2541:313::-;2654:4;2692:2;2681:9;2677:18;2669:26;;2741:9;2735:4;2731:20;2727:1;2716:9;2712:17;2705:47;2769:78;2842:4;2833:6;2769:78;:::i;:::-;2761:86;;2541:313;;;;:::o;2860:77::-;2897:7;2926:5;2915:16;;2860:77;;;:::o;2943:122::-;3016:24;3034:5;3016:24;:::i;:::-;3009:5;3006:35;2996:63;;3055:1;3052;3045:12;2996:63;2943:122;:::o;3071:139::-;3117:5;3155:6;3142:20;3133:29;;3171:33;3198:5;3171:33;:::i;:::-;3071:139;;;;:::o;3216:329::-;3275:6;3324:2;3312:9;3303:7;3299:23;3295:32;3292:119;;;3330:79;;:::i;:::-;3292:119;3450:1;3475:53;3520:7;3511:6;3500:9;3496:22;3475:53;:::i;:::-;3465:63;;3421:117;3216:329;;;;:::o;3551:126::-;3588:7;3628:42;3621:5;3617:54;3606:65;;3551:126;;;:::o;3683:96::-;3720:7;3749:24;3767:5;3749:24;:::i;:::-;3738:35;;3683:96;;;:::o;3785:118::-;3872:24;3890:5;3872:24;:::i;:::-;3867:3;3860:37;3785:118;;:::o;3909:222::-;4002:4;4040:2;4029:9;4025:18;4017:26;;4053:71;4121:1;4110:9;4106:17;4097:6;4053:71;:::i;:::-;3909:222;;;;:::o;4137:122::-;4210:24;4228:5;4210:24;:::i;:::-;4203:5;4200:35;4190:63;;4249:1;4246;4239:12;4190:63;4137:122;:::o;4265:139::-;4311:5;4349:6;4336:20;4327:29;;4365:33;4392:5;4365:33;:::i;:::-;4265:139;;;;:::o;4410:474::-;4478:6;4486;4535:2;4523:9;4514:7;4510:23;4506:32;4503:119;;;4541:79;;:::i;:::-;4503:119;4661:1;4686:53;4731:7;4722:6;4711:9;4707:22;4686:53;:::i;:::-;4676:63;;4632:117;4788:2;4814:53;4859:7;4850:6;4839:9;4835:22;4814:53;:::i;:::-;4804:63;;4759:118;4410:474;;;;;:::o;4890:116::-;4960:21;4975:5;4960:21;:::i;:::-;4953:5;4950:32;4940:60;;4996:1;4993;4986:12;4940:60;4890:116;:::o;5012:133::-;5055:5;5093:6;5080:20;5071:29;;5109:30;5133:5;5109:30;:::i;:::-;5012:133;;;;:::o;5151:323::-;5207:6;5256:2;5244:9;5235:7;5231:23;5227:32;5224:119;;;5262:79;;:::i;:::-;5224:119;5382:1;5407:50;5449:7;5440:6;5429:9;5425:22;5407:50;:::i;:::-;5397:60;;5353:114;5151:323;;;;:::o;5480:118::-;5567:24;5585:5;5567:24;:::i;:::-;5562:3;5555:37;5480:118;;:::o;5604:222::-;5697:4;5735:2;5724:9;5720:18;5712:26;;5748:71;5816:1;5805:9;5801:17;5792:6;5748:71;:::i;:::-;5604:222;;;;:::o;5832:619::-;5909:6;5917;5925;5974:2;5962:9;5953:7;5949:23;5945:32;5942:119;;;5980:79;;:::i;:::-;5942:119;6100:1;6125:53;6170:7;6161:6;6150:9;6146:22;6125:53;:::i;:::-;6115:63;;6071:117;6227:2;6253:53;6298:7;6289:6;6278:9;6274:22;6253:53;:::i;:::-;6243:63;;6198:118;6355:2;6381:53;6426:7;6417:6;6406:9;6402:22;6381:53;:::i;:::-;6371:63;;6326:118;5832:619;;;;;:::o;6457:329::-;6516:6;6565:2;6553:9;6544:7;6540:23;6536:32;6533:119;;;6571:79;;:::i;:::-;6533:119;6691:1;6716:53;6761:7;6752:6;6741:9;6737:22;6716:53;:::i;:::-;6706:63;;6662:117;6457:329;;;;:::o;6792:117::-;6901:1;6898;6891:12;6915:117;7024:1;7021;7014:12;7038:117;7147:1;7144;7137:12;7174:552;7231:8;7241:6;7291:3;7284:4;7276:6;7272:17;7268:27;7258:122;;7299:79;;:::i;:::-;7258:122;7412:6;7399:20;7389:30;;7442:18;7434:6;7431:30;7428:117;;;7464:79;;:::i;:::-;7428:117;7578:4;7570:6;7566:17;7554:29;;7632:3;7624:4;7616:6;7612:17;7602:8;7598:32;7595:41;7592:128;;;7639:79;;:::i;:::-;7592:128;7174:552;;;;;:::o;7732:672::-;7811:6;7819;7827;7876:2;7864:9;7855:7;7851:23;7847:32;7844:119;;;7882:79;;:::i;:::-;7844:119;8002:1;8027:53;8072:7;8063:6;8052:9;8048:22;8027:53;:::i;:::-;8017:63;;7973:117;8157:2;8146:9;8142:18;8129:32;8188:18;8180:6;8177:30;8174:117;;;8210:79;;:::i;:::-;8174:117;8323:64;8379:7;8370:6;8359:9;8355:22;8323:64;:::i;:::-;8305:82;;;;8100:297;7732:672;;;;;:::o;8410:117::-;8519:1;8516;8509:12;8533:180;8581:77;8578:1;8571:88;8678:4;8675:1;8668:15;8702:4;8699:1;8692:15;8719:281;8802:27;8824:4;8802:27;:::i;:::-;8794:6;8790:40;8932:6;8920:10;8917:22;8896:18;8884:10;8881:34;8878:62;8875:88;;;8943:18;;:::i;:::-;8875:88;8983:10;8979:2;8972:22;8762:238;8719:281;;:::o;9006:129::-;9040:6;9067:20;;:::i;:::-;9057:30;;9096:33;9124:4;9116:6;9096:33;:::i;:::-;9006:129;;;:::o;9141:308::-;9203:4;9293:18;9285:6;9282:30;9279:56;;;9315:18;;:::i;:::-;9279:56;9353:29;9375:6;9353:29;:::i;:::-;9345:37;;9437:4;9431;9427:15;9419:23;;9141:308;;;:::o;9455:146::-;9552:6;9547:3;9542;9529:30;9593:1;9584:6;9579:3;9575:16;9568:27;9455:146;;;:::o;9607:425::-;9685:5;9710:66;9726:49;9768:6;9726:49;:::i;:::-;9710:66;:::i;:::-;9701:75;;9799:6;9792:5;9785:21;9837:4;9830:5;9826:16;9875:3;9866:6;9861:3;9857:16;9854:25;9851:112;;;9882:79;;:::i;:::-;9851:112;9972:54;10019:6;10014:3;10009;9972:54;:::i;:::-;9691:341;9607:425;;;;;:::o;10052:340::-;10108:5;10157:3;10150:4;10142:6;10138:17;10134:27;10124:122;;10165:79;;:::i;:::-;10124:122;10282:6;10269:20;10307:79;10382:3;10374:6;10367:4;10359:6;10355:17;10307:79;:::i;:::-;10298:88;;10114:278;10052:340;;;;:::o;10398:509::-;10467:6;10516:2;10504:9;10495:7;10491:23;10487:32;10484:119;;;10522:79;;:::i;:::-;10484:119;10670:1;10659:9;10655:17;10642:31;10700:18;10692:6;10689:30;10686:117;;;10722:79;;:::i;:::-;10686:117;10827:63;10882:7;10873:6;10862:9;10858:22;10827:63;:::i;:::-;10817:73;;10613:287;10398:509;;;;:::o;10913:468::-;10978:6;10986;11035:2;11023:9;11014:7;11010:23;11006:32;11003:119;;;11041:79;;:::i;:::-;11003:119;11161:1;11186:53;11231:7;11222:6;11211:9;11207:22;11186:53;:::i;:::-;11176:63;;11132:117;11288:2;11314:50;11356:7;11347:6;11336:9;11332:22;11314:50;:::i;:::-;11304:60;;11259:115;10913:468;;;;;:::o;11387:307::-;11448:4;11538:18;11530:6;11527:30;11524:56;;;11560:18;;:::i;:::-;11524:56;11598:29;11620:6;11598:29;:::i;:::-;11590:37;;11682:4;11676;11672:15;11664:23;;11387:307;;;:::o;11700:423::-;11777:5;11802:65;11818:48;11859:6;11818:48;:::i;:::-;11802:65;:::i;:::-;11793:74;;11890:6;11883:5;11876:21;11928:4;11921:5;11917:16;11966:3;11957:6;11952:3;11948:16;11945:25;11942:112;;;11973:79;;:::i;:::-;11942:112;12063:54;12110:6;12105:3;12100;12063:54;:::i;:::-;11783:340;11700:423;;;;;:::o;12142:338::-;12197:5;12246:3;12239:4;12231:6;12227:17;12223:27;12213:122;;12254:79;;:::i;:::-;12213:122;12371:6;12358:20;12396:78;12470:3;12462:6;12455:4;12447:6;12443:17;12396:78;:::i;:::-;12387:87;;12203:277;12142:338;;;;:::o;12486:943::-;12581:6;12589;12597;12605;12654:3;12642:9;12633:7;12629:23;12625:33;12622:120;;;12661:79;;:::i;:::-;12622:120;12781:1;12806:53;12851:7;12842:6;12831:9;12827:22;12806:53;:::i;:::-;12796:63;;12752:117;12908:2;12934:53;12979:7;12970:6;12959:9;12955:22;12934:53;:::i;:::-;12924:63;;12879:118;13036:2;13062:53;13107:7;13098:6;13087:9;13083:22;13062:53;:::i;:::-;13052:63;;13007:118;13192:2;13181:9;13177:18;13164:32;13223:18;13215:6;13212:30;13209:117;;;13245:79;;:::i;:::-;13209:117;13350:62;13404:7;13395:6;13384:9;13380:22;13350:62;:::i;:::-;13340:72;;13135:287;12486:943;;;;;;;:::o;13435:474::-;13503:6;13511;13560:2;13548:9;13539:7;13535:23;13531:32;13528:119;;;13566:79;;:::i;:::-;13528:119;13686:1;13711:53;13756:7;13747:6;13736:9;13732:22;13711:53;:::i;:::-;13701:63;;13657:117;13813:2;13839:53;13884:7;13875:6;13864:9;13860:22;13839:53;:::i;:::-;13829:63;;13784:118;13435:474;;;;;:::o;13915:180::-;13963:77;13960:1;13953:88;14060:4;14057:1;14050:15;14084:4;14081:1;14074:15;14101:320;14145:6;14182:1;14176:4;14172:12;14162:22;;14229:1;14223:4;14219:12;14250:18;14240:81;;14306:4;14298:6;14294:17;14284:27;;14240:81;14368:2;14360:6;14357:14;14337:18;14334:38;14331:84;;14387:18;;:::i;:::-;14331:84;14152:269;14101:320;;;:::o;14427:173::-;14567:25;14563:1;14555:6;14551:14;14544:49;14427:173;:::o;14606:366::-;14748:3;14769:67;14833:2;14828:3;14769:67;:::i;:::-;14762:74;;14845:93;14934:3;14845:93;:::i;:::-;14963:2;14958:3;14954:12;14947:19;;14606:366;;;:::o;14978:419::-;15144:4;15182:2;15171:9;15167:18;15159:26;;15231:9;15225:4;15221:20;15217:1;15206:9;15202:17;15195:47;15259:131;15385:4;15259:131;:::i;:::-;15251:139;;14978:419;;;:::o;15403:180::-;15451:77;15448:1;15441:88;15548:4;15545:1;15538:15;15572:4;15569:1;15562:15;15589:180;15637:77;15634:1;15627:88;15734:4;15731:1;15724:15;15758:4;15755:1;15748:15;15775:194;15815:4;15835:20;15853:1;15835:20;:::i;:::-;15830:25;;15869:20;15887:1;15869:20;:::i;:::-;15864:25;;15913:1;15910;15906:9;15898:17;;15937:1;15931:4;15928:11;15925:37;;;15942:18;;:::i;:::-;15925:37;15775:194;;;;:::o;15975:191::-;16015:3;16034:20;16052:1;16034:20;:::i;:::-;16029:25;;16068:20;16086:1;16068:20;:::i;:::-;16063:25;;16111:1;16108;16104:9;16097:16;;16132:3;16129:1;16126:10;16123:36;;;16139:18;;:::i;:::-;16123:36;15975:191;;;;:::o;16172:168::-;16312:20;16308:1;16300:6;16296:14;16289:44;16172:168;:::o;16346:366::-;16488:3;16509:67;16573:2;16568:3;16509:67;:::i;:::-;16502:74;;16585:93;16674:3;16585:93;:::i;:::-;16703:2;16698:3;16694:12;16687:19;;16346:366;;;:::o;16718:419::-;16884:4;16922:2;16911:9;16907:18;16899:26;;16971:9;16965:4;16961:20;16957:1;16946:9;16942:17;16935:47;16999:131;17125:4;16999:131;:::i;:::-;16991:139;;16718:419;;;:::o;17143:170::-;17283:22;17279:1;17271:6;17267:14;17260:46;17143:170;:::o;17319:366::-;17461:3;17482:67;17546:2;17541:3;17482:67;:::i;:::-;17475:74;;17558:93;17647:3;17558:93;:::i;:::-;17676:2;17671:3;17667:12;17660:19;;17319:366;;;:::o;17691:419::-;17857:4;17895:2;17884:9;17880:18;17872:26;;17944:9;17938:4;17934:20;17930:1;17919:9;17915:17;17908:47;17972:131;18098:4;17972:131;:::i;:::-;17964:139;;17691:419;;;:::o;18116:410::-;18156:7;18179:20;18197:1;18179:20;:::i;:::-;18174:25;;18213:20;18231:1;18213:20;:::i;:::-;18208:25;;18268:1;18265;18261:9;18290:30;18308:11;18290:30;:::i;:::-;18279:41;;18469:1;18460:7;18456:15;18453:1;18450:22;18430:1;18423:9;18403:83;18380:139;;18499:18;;:::i;:::-;18380:139;18164:362;18116:410;;;;:::o;18532:220::-;18672:34;18668:1;18660:6;18656:14;18649:58;18741:3;18736:2;18728:6;18724:15;18717:28;18532:220;:::o;18758:366::-;18900:3;18921:67;18985:2;18980:3;18921:67;:::i;:::-;18914:74;;18997:93;19086:3;18997:93;:::i;:::-;19115:2;19110:3;19106:12;19099:19;;18758:366;;;:::o;19130:419::-;19296:4;19334:2;19323:9;19319:18;19311:26;;19383:9;19377:4;19373:20;19369:1;19358:9;19354:17;19347:47;19411:131;19537:4;19411:131;:::i;:::-;19403:139;;19130:419;;;:::o;19555:147::-;19656:11;19693:3;19678:18;;19555:147;;;;:::o;19708:114::-;;:::o;19828:398::-;19987:3;20008:83;20089:1;20084:3;20008:83;:::i;:::-;20001:90;;20100:93;20189:3;20100:93;:::i;:::-;20218:1;20213:3;20209:11;20202:18;;19828:398;;;:::o;20232:379::-;20416:3;20438:147;20581:3;20438:147;:::i;:::-;20431:154;;20602:3;20595:10;;20232:379;;;:::o;20617:148::-;20719:11;20756:3;20741:18;;20617:148;;;;:::o;20771:214::-;20911:66;20907:1;20899:6;20895:14;20888:90;20771:214;:::o;20991:402::-;21151:3;21172:85;21254:2;21249:3;21172:85;:::i;:::-;21165:92;;21266:93;21355:3;21266:93;:::i;:::-;21384:2;21379:3;21375:12;21368:19;;20991:402;;;:::o;21399:77::-;21436:7;21465:5;21454:16;;21399:77;;;:::o;21482:79::-;21521:7;21550:5;21539:16;;21482:79;;;:::o;21567:157::-;21672:45;21692:24;21710:5;21692:24;:::i;:::-;21672:45;:::i;:::-;21667:3;21660:58;21567:157;;:::o;21730:522::-;21943:3;21965:148;22109:3;21965:148;:::i;:::-;21958:155;;22123:75;22194:3;22185:6;22123:75;:::i;:::-;22223:2;22218:3;22214:12;22207:19;;22243:3;22236:10;;21730:522;;;;:::o;22258:174::-;22398:26;22394:1;22386:6;22382:14;22375:50;22258:174;:::o;22438:366::-;22580:3;22601:67;22665:2;22660:3;22601:67;:::i;:::-;22594:74;;22677:93;22766:3;22677:93;:::i;:::-;22795:2;22790:3;22786:12;22779:19;;22438:366;;;:::o;22810:419::-;22976:4;23014:2;23003:9;22999:18;22991:26;;23063:9;23057:4;23053:20;23049:1;23038:9;23034:17;23027:47;23091:131;23217:4;23091:131;:::i;:::-;23083:139;;22810:419;;;:::o;23235:141::-;23284:4;23307:3;23299:11;;23330:3;23327:1;23320:14;23364:4;23361:1;23351:18;23343:26;;23235:141;;;:::o;23382:93::-;23419:6;23466:2;23461;23454:5;23450:14;23446:23;23436:33;;23382:93;;;:::o;23481:107::-;23525:8;23575:5;23569:4;23565:16;23544:37;;23481:107;;;;:::o;23594:393::-;23663:6;23713:1;23701:10;23697:18;23736:97;23766:66;23755:9;23736:97;:::i;:::-;23854:39;23884:8;23873:9;23854:39;:::i;:::-;23842:51;;23926:4;23922:9;23915:5;23911:21;23902:30;;23975:4;23965:8;23961:19;23954:5;23951:30;23941:40;;23670:317;;23594:393;;;;;:::o;23993:60::-;24021:3;24042:5;24035:12;;23993:60;;;:::o;24059:142::-;24109:9;24142:53;24160:34;24169:24;24187:5;24169:24;:::i;:::-;24160:34;:::i;:::-;24142:53;:::i;:::-;24129:66;;24059:142;;;:::o;24207:75::-;24250:3;24271:5;24264:12;;24207:75;;;:::o;24288:269::-;24398:39;24429:7;24398:39;:::i;:::-;24459:91;24508:41;24532:16;24508:41;:::i;:::-;24500:6;24493:4;24487:11;24459:91;:::i;:::-;24453:4;24446:105;24364:193;24288:269;;;:::o;24563:73::-;24608:3;24563:73;:::o;24642:189::-;24719:32;;:::i;:::-;24760:65;24818:6;24810;24804:4;24760:65;:::i;:::-;24695:136;24642:189;;:::o;24837:186::-;24897:120;24914:3;24907:5;24904:14;24897:120;;;24968:39;25005:1;24998:5;24968:39;:::i;:::-;24941:1;24934:5;24930:13;24921:22;;24897:120;;;24837:186;;:::o;25029:543::-;25130:2;25125:3;25122:11;25119:446;;;25164:38;25196:5;25164:38;:::i;:::-;25248:29;25266:10;25248:29;:::i;:::-;25238:8;25234:44;25431:2;25419:10;25416:18;25413:49;;;25452:8;25437:23;;25413:49;25475:80;25531:22;25549:3;25531:22;:::i;:::-;25521:8;25517:37;25504:11;25475:80;:::i;:::-;25134:431;;25119:446;25029:543;;;:::o;25578:117::-;25632:8;25682:5;25676:4;25672:16;25651:37;;25578:117;;;;:::o;25701:169::-;25745:6;25778:51;25826:1;25822:6;25814:5;25811:1;25807:13;25778:51;:::i;:::-;25774:56;25859:4;25853;25849:15;25839:25;;25752:118;25701:169;;;;:::o;25875:295::-;25951:4;26097:29;26122:3;26116:4;26097:29;:::i;:::-;26089:37;;26159:3;26156:1;26152:11;26146:4;26143:21;26135:29;;25875:295;;;;:::o;26175:1395::-;26292:37;26325:3;26292:37;:::i;:::-;26394:18;26386:6;26383:30;26380:56;;;26416:18;;:::i;:::-;26380:56;26460:38;26492:4;26486:11;26460:38;:::i;:::-;26545:67;26605:6;26597;26591:4;26545:67;:::i;:::-;26639:1;26663:4;26650:17;;26695:2;26687:6;26684:14;26712:1;26707:618;;;;27369:1;27386:6;27383:77;;;27435:9;27430:3;27426:19;27420:26;27411:35;;27383:77;27486:67;27546:6;27539:5;27486:67;:::i;:::-;27480:4;27473:81;27342:222;26677:887;;26707:618;26759:4;26755:9;26747:6;26743:22;26793:37;26825:4;26793:37;:::i;:::-;26852:1;26866:208;26880:7;26877:1;26874:14;26866:208;;;26959:9;26954:3;26950:19;26944:26;26936:6;26929:42;27010:1;27002:6;26998:14;26988:24;;27057:2;27046:9;27042:18;27029:31;;26903:4;26900:1;26896:12;26891:17;;26866:208;;;27102:6;27093:7;27090:19;27087:179;;;27160:9;27155:3;27151:19;27145:26;27203:48;27245:4;27237:6;27233:17;27222:9;27203:48;:::i;:::-;27195:6;27188:64;27110:156;27087:179;27312:1;27308;27300:6;27296:14;27292:22;27286:4;27279:36;26714:611;;;26677:887;;26267:1303;;;26175:1395;;:::o;27576:234::-;27716:34;27712:1;27704:6;27700:14;27693:58;27785:17;27780:2;27772:6;27768:15;27761:42;27576:234;:::o;27816:366::-;27958:3;27979:67;28043:2;28038:3;27979:67;:::i;:::-;27972:74;;28055:93;28144:3;28055:93;:::i;:::-;28173:2;28168:3;28164:12;28157:19;;27816:366;;;:::o;28188:419::-;28354:4;28392:2;28381:9;28377:18;28369:26;;28441:9;28435:4;28431:20;28427:1;28416:9;28412:17;28405:47;28469:131;28595:4;28469:131;:::i;:::-;28461:139;;28188:419;;;:::o;28637:874::-;28740:3;28777:5;28771:12;28806:36;28832:9;28806:36;:::i;:::-;28858:89;28940:6;28935:3;28858:89;:::i;:::-;28851:96;;28978:1;28967:9;28963:17;28994:1;28989:166;;;;29169:1;29164:341;;;;28956:549;;28989:166;29073:4;29069:9;29058;29054:25;29049:3;29042:38;29135:6;29128:14;29121:22;29113:6;29109:35;29104:3;29100:45;29093:52;;28989:166;;29164:341;29231:38;29263:5;29231:38;:::i;:::-;29291:1;29305:154;29319:6;29316:1;29313:13;29305:154;;;29393:7;29387:14;29383:1;29378:3;29374:11;29367:35;29443:1;29434:7;29430:15;29419:26;;29341:4;29338:1;29334:12;29329:17;;29305:154;;;29488:6;29483:3;29479:16;29472:23;;29171:334;;28956:549;;28744:767;;28637:874;;;;:::o;29517:390::-;29623:3;29651:39;29684:5;29651:39;:::i;:::-;29706:89;29788:6;29783:3;29706:89;:::i;:::-;29699:96;;29804:65;29862:6;29857:3;29850:4;29843:5;29839:16;29804:65;:::i;:::-;29894:6;29889:3;29885:16;29878:23;;29627:280;29517:390;;;;:::o;29913:155::-;30053:7;30049:1;30041:6;30037:14;30030:31;29913:155;:::o;30074:400::-;30234:3;30255:84;30337:1;30332:3;30255:84;:::i;:::-;30248:91;;30348:93;30437:3;30348:93;:::i;:::-;30466:1;30461:3;30457:11;30450:18;;30074:400;;;:::o;30480:695::-;30758:3;30780:92;30868:3;30859:6;30780:92;:::i;:::-;30773:99;;30889:95;30980:3;30971:6;30889:95;:::i;:::-;30882:102;;31001:148;31145:3;31001:148;:::i;:::-;30994:155;;31166:3;31159:10;;30480:695;;;;;:::o;31181:225::-;31321:34;31317:1;31309:6;31305:14;31298:58;31390:8;31385:2;31377:6;31373:15;31366:33;31181:225;:::o;31412:366::-;31554:3;31575:67;31639:2;31634:3;31575:67;:::i;:::-;31568:74;;31651:93;31740:3;31651:93;:::i;:::-;31769:2;31764:3;31760:12;31753:19;;31412:366;;;:::o;31784:419::-;31950:4;31988:2;31977:9;31973:18;31965:26;;32037:9;32031:4;32027:20;32023:1;32012:9;32008:17;32001:47;32065:131;32191:4;32065:131;:::i;:::-;32057:139;;31784:419;;;:::o;32209:182::-;32349:34;32345:1;32337:6;32333:14;32326:58;32209:182;:::o;32397:366::-;32539:3;32560:67;32624:2;32619:3;32560:67;:::i;:::-;32553:74;;32636:93;32725:3;32636:93;:::i;:::-;32754:2;32749:3;32745:12;32738:19;;32397:366;;;:::o;32769:419::-;32935:4;32973:2;32962:9;32958:18;32950:26;;33022:9;33016:4;33012:20;33008:1;32997:9;32993:17;32986:47;33050:131;33176:4;33050:131;:::i;:::-;33042:139;;32769:419;;;:::o;33194:98::-;33245:6;33279:5;33273:12;33263:22;;33194:98;;;:::o;33298:168::-;33381:11;33415:6;33410:3;33403:19;33455:4;33450:3;33446:14;33431:29;;33298:168;;;;:::o;33472:373::-;33558:3;33586:38;33618:5;33586:38;:::i;:::-;33640:70;33703:6;33698:3;33640:70;:::i;:::-;33633:77;;33719:65;33777:6;33772:3;33765:4;33758:5;33754:16;33719:65;:::i;:::-;33809:29;33831:6;33809:29;:::i;:::-;33804:3;33800:39;33793:46;;33562:283;33472:373;;;;:::o;33851:640::-;34046:4;34084:3;34073:9;34069:19;34061:27;;34098:71;34166:1;34155:9;34151:17;34142:6;34098:71;:::i;:::-;34179:72;34247:2;34236:9;34232:18;34223:6;34179:72;:::i;:::-;34261;34329:2;34318:9;34314:18;34305:6;34261:72;:::i;:::-;34380:9;34374:4;34370:20;34365:2;34354:9;34350:18;34343:48;34408:76;34479:4;34470:6;34408:76;:::i;:::-;34400:84;;33851:640;;;;;;;:::o;34497:141::-;34553:5;34584:6;34578:13;34569:22;;34600:32;34626:5;34600:32;:::i;:::-;34497:141;;;;:::o;34644:349::-;34713:6;34762:2;34750:9;34741:7;34737:23;34733:32;34730:119;;;34768:79;;:::i;:::-;34730:119;34888:1;34913:63;34968:7;34959:6;34948:9;34944:22;34913:63;:::i;:::-;34903:73;;34859:127;34644:349;;;;:::o;34999:233::-;35038:3;35061:24;35079:5;35061:24;:::i;:::-;35052:33;;35107:66;35100:5;35097:77;35094:103;;35177:18;;:::i;:::-;35094:103;35224:1;35217:5;35213:13;35206:20;;34999:233;;;:::o;35238:180::-;35286:77;35283:1;35276:88;35383:4;35380:1;35373:15;35407:4;35404:1;35397:15;35424:185;35464:1;35481:20;35499:1;35481:20;:::i;:::-;35476:25;;35515:20;35533:1;35515:20;:::i;:::-;35510:25;;35554:1;35544:35;;35559:18;;:::i;:::-;35544:35;35601:1;35598;35594:9;35589:14;;35424:185;;;;:::o;35615:176::-;35647:1;35664:20;35682:1;35664:20;:::i;:::-;35659:25;;35698:20;35716:1;35698:20;:::i;:::-;35693:25;;35737:1;35727:35;;35742:18;;:::i;:::-;35727:35;35783:1;35780;35776:9;35771:14;;35615:176;;;;:::o;35797:180::-;35845:77;35842:1;35835:88;35942:4;35939:1;35932:15;35966:4;35963:1;35956:15;35983:174;36123:26;36119:1;36111:6;36107:14;36100:50;35983:174;:::o;36163:366::-;36305:3;36326:67;36390:2;36385:3;36326:67;:::i;:::-;36319:74;;36402:93;36491:3;36402:93;:::i;:::-;36520:2;36515:3;36511:12;36504:19;;36163:366;;;:::o;36535:419::-;36701:4;36739:2;36728:9;36724:18;36716:26;;36788:9;36782:4;36778:20;36774:1;36763:9;36759:17;36752:47;36816:131;36942:4;36816:131;:::i;:::-;36808:139;;36535:419;;;:::o;36960:181::-;37100:33;37096:1;37088:6;37084:14;37077:57;36960:181;:::o;37147:366::-;37289:3;37310:67;37374:2;37369:3;37310:67;:::i;:::-;37303:74;;37386:93;37475:3;37386:93;:::i;:::-;37504:2;37499:3;37495:12;37488:19;;37147:366;;;:::o;37519:419::-;37685:4;37723:2;37712:9;37708:18;37700:26;;37772:9;37766:4;37762:20;37758:1;37747:9;37743:17;37736:47;37800:131;37926:4;37800:131;:::i;:::-;37792:139;;37519:419;;;:::o;37944:221::-;38084:34;38080:1;38072:6;38068:14;38061:58;38153:4;38148:2;38140:6;38136:15;38129:29;37944:221;:::o;38171:366::-;38313:3;38334:67;38398:2;38393:3;38334:67;:::i;:::-;38327:74;;38410:93;38499:3;38410:93;:::i;:::-;38528:2;38523:3;38519:12;38512:19;;38171:366;;;:::o;38543:419::-;38709:4;38747:2;38736:9;38732:18;38724:26;;38796:9;38790:4;38786:20;38782:1;38771:9;38767:17;38760:47;38824:131;38950:4;38824:131;:::i;:::-;38816:139;;38543:419;;;:::o;38968:118::-;39055:24;39073:5;39055:24;:::i;:::-;39050:3;39043:37;38968:118;;:::o;39092:86::-;39127:7;39167:4;39160:5;39156:16;39145:27;;39092:86;;;:::o;39184:112::-;39267:22;39283:5;39267:22;:::i;:::-;39262:3;39255:35;39184:112;;:::o;39302:545::-;39475:4;39513:3;39502:9;39498:19;39490:27;;39527:71;39595:1;39584:9;39580:17;39571:6;39527:71;:::i;:::-;39608:68;39672:2;39661:9;39657:18;39648:6;39608:68;:::i;:::-;39686:72;39754:2;39743:9;39739:18;39730:6;39686:72;:::i;:::-;39768;39836:2;39825:9;39821:18;39812:6;39768:72;:::i;:::-;39302:545;;;;;;;:::o

Swarm Source

ipfs://489d32a0ba88a51b6dd80b9691f65af7a7648d54245fcb48682e945d490ac0ef
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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